{"version":3,"file":"peppierre-typesafe-http-iots.mjs","sources":["../../../projects/typesafe-http-iots/src/lib/typesafe-http.service.ts","../../../projects/typesafe-http-iots/src/lib/provide.util.ts","../../../projects/typesafe-http-iots/src/public-api.ts","../../../projects/typesafe-http-iots/src/peppierre-typesafe-http-iots.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { throwError } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport * as iots from 'io-ts';\nimport {\n  WrappedDelete,\n  WrappedGet,\n  WrappedHead,\n  WrappedOptions,\n  WrappedPatch,\n  WrappedPost,\n  WrappedPut,\n} from './types/wrap-method-types.type';\n\nconst IOTS_RESULT_TAG_LEFT = 'Left';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class TypesafeHttpService {\n  constructor(private http: HttpClient) {}\n\n  public get: WrappedGet = (<R>(\n    runtimeType: iots.Type<R, unknown, unknown>,\n    ...args: any[] // eslint-disable-line @typescript-eslint/no-explicit-any\n  ) => {\n    const [url, options, ..._unsupportedParams] = [...args]; // eslint-disable-line @typescript-eslint/no-unused-vars\n    return this.http.get<R>(url, options).pipe(\n      map(generateHandler(runtimeType)),\n      catchError(handleDecodeError)\n    );\n  }) as WrappedGet;\n\n  public post: WrappedPost = (<R>(\n    runtimeType: iots.Type<R, unknown, unknown>,\n    ...args: any[] // eslint-disable-line @typescript-eslint/no-explicit-any\n  ) => {\n    const [url, body, options, ..._unsupportedParams] = [...args]; // eslint-disable-line @typescript-eslint/no-unused-vars\n    return this.http.post<R>(url, body, options).pipe(\n      map(generateHandler(runtimeType)),\n      catchError(handleDecodeError)\n    );\n  }) as WrappedPost;\n\n  public put: WrappedPut = (<R>(\n    runtimeType: iots.Type<R, unknown, unknown>,\n    ...args: any[] // eslint-disable-line @typescript-eslint/no-explicit-any\n  ) => {\n    const [url, body, options, ..._unsupportedParams] = [...args]; // eslint-disable-line @typescript-eslint/no-unused-vars\n    return this.http.put<R>(url, body, options).pipe(\n      map(generateHandler(runtimeType)),\n      catchError(handleDecodeError)\n    );\n  }) as WrappedPut;\n\n  public patch: WrappedPatch = (<R>(\n    runtimeType: iots.Type<R, unknown, unknown>,\n    ...args: any[] // eslint-disable-line @typescript-eslint/no-explicit-any\n  ) => {\n    const [url, body, options, ..._unsupportedParams] = [...args]; // eslint-disable-line @typescript-eslint/no-unused-vars\n    return this.http.patch<R>(url, body, options).pipe(\n      map(generateHandler(runtimeType)),\n      catchError(handleDecodeError)\n    );\n  }) as WrappedPatch;\n\n  public delete: WrappedDelete = (<R>(\n    runtimeType: iots.Type<R, unknown, unknown>,\n    ...args: any[] // eslint-disable-line @typescript-eslint/no-explicit-any\n  ) => {\n    const [url, options, ..._unsupportedParams] = [...args]; // eslint-disable-line @typescript-eslint/no-unused-vars\n    return this.http.delete<R>(url, options).pipe(\n      map(generateHandler(runtimeType)),\n      catchError(handleDecodeError)\n    );\n  }) as WrappedDelete;\n\n  public head: WrappedHead = (<R>(\n    runtimeType: iots.Type<R, unknown, unknown>,\n    ...args: any[] // eslint-disable-line @typescript-eslint/no-explicit-any\n  ) => {\n    const [url, options, ..._unsupportedParams] = [...args]; // eslint-disable-line @typescript-eslint/no-unused-vars\n    return this.http.head<R>(url, options).pipe(\n      map(generateHandler(runtimeType)),\n      catchError(handleDecodeError)\n    );\n  }) as WrappedHead;\n\n  public options: WrappedOptions = (<R>(\n    runtimeType: iots.Type<R, unknown, unknown>,\n    ...args: any[] // eslint-disable-line @typescript-eslint/no-explicit-any\n  ) => {\n    const [url, options, ..._unsupportedParams] = [...args]; // eslint-disable-line @typescript-eslint/no-unused-vars\n    return this.http.options<R>(url, options).pipe(\n      map(generateHandler(runtimeType)),\n      catchError(handleDecodeError)\n    );\n  }) as WrappedOptions;\n\n}\n\nfunction generateHandler<R>(\n  runtimeType: iots.Type<R, unknown, unknown>\n) {\n  return (response: unknown) => {\n    const result = runtimeType.decode(response);\n    if (result._tag === IOTS_RESULT_TAG_LEFT) {\n      throw new TypeError(generateCustomTypeErrorMessage(\n        runtimeType.name,\n        response,\n        result.left\n      ));\n    }\n    return result.right;\n  };\n}\n\nfunction generateCustomTypeErrorMessage(runtimeTypeName:  string, response: unknown, errors: iots.Errors) {\n  return `Type '${ runtimeTypeName }' decode mismatch.\\n` +\n          '\\tUnable to decode following value:\\n' +\n          `\\t${ JSON.stringify(response) }\\n\\n` +\n          '\\tFollowing errors were found:\\n' +\n          `${ errors.map(\n            (error) => `${\n              error.context\n                .filter((context) => context.key !== '')\n                .map((context) => `\\t\\t${ context.key }: ${ context.type.name } -> ${ context.actual }`)\n                .join('\\n')\n              }`\n          ).join('\\n') }`;\n}\n\nfunction handleDecodeError(error: TypeError) {\n  return throwError(() => error);\n}\n","import { Provider } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { TypesafeHttpService } from './typesafe-http.service';\n\nexport function provideTypesafeHttp(): Provider {\n  return {\n    provide: TypesafeHttpService,\n    useClass: TypesafeHttpService,\n    deps: [HttpClient],\n  };\n}\n","/*\n * Public API Surface of typesafe-http-iots\n */\n\nexport * from './lib/typesafe-http.service';\nexport * from './lib/provide.util';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}