{"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, HttpEvent, HttpEventType, HttpResponse } from '@angular/common/http';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError, tap } from 'rxjs/operators';\nimport * as iots from 'io-ts';\nimport {\n  OptionsArrayBufferOptions,\n  OptionsArrayBufferEventsOptions,\n  OptionsArrayBufferResponseOptions,\n  OptionsBlobOptions,\n  OptionsBlobEventsOptions,\n  OptionsBlobResponseOptions,\n  OptionsTextOptions,\n  OptionsTextEventsOptions,\n  OptionsTextResponseOptions,\n  OptionsJsonOptions,\n  OptionsJsonEventsOptions,\n  OptionsJsonResponseOptions,\n  OptionsJsonTypedOptions,\n  OptionsJsonEventsTypedOptions,\n  OptionsJsonResponseTypedOptions,\n  HeadArrayBufferOptions,\n  HeadArrayBufferEventsOptions,\n  HeadArrayBufferResponseOptions,\n  HeadBlobOptions,\n  HeadBlobEventsOptions,\n  HeadBlobResponseOptions,\n  HeadTextOptions,\n  HeadTextEventsOptions,\n  HeadTextResponseOptions,\n  HeadJsonOptions,\n  HeadJsonEventsOptions,\n  HeadJsonResponseOptions,\n  HeadJsonTypedOptions,\n  HeadJsonEventsTypedOptions,\n  HeadJsonResponseTypedOptions,\n  GetArrayBufferOptions,\n  GetArrayBufferEventsOptions,\n  GetArrayBufferResponseOptions,\n  GetBlobOptions,\n  GetBlobEventsOptions,\n  GetBlobResponseOptions,\n  GetTextOptions,\n  GetTextEventsOptions,\n  GetTextResponseOptions,\n  GetJsonOptions,\n  GetJsonEventsOptions,\n  GetJsonResponseOptions,\n  GetJsonTypedOptions,\n  GetJsonEventsTypedOptions,\n  GetJsonResponseTypedOptions,\n  DeleteArrayBufferOptions,\n  DeleteArrayBufferEventsOptions,\n  DeleteArrayBufferResponseOptions,\n  DeleteBlobOptions,\n  DeleteBlobEventsOptions,\n  DeleteBlobResponseOptions,\n  DeleteTextOptions,\n  DeleteTextEventsOptions,\n  DeleteTextResponseOptions,\n  DeleteJsonOptions,\n  DeleteJsonEventsOptions,\n  DeleteJsonResponseOptions,\n  DeleteJsonTypedOptions,\n  DeleteJsonEventsTypedOptions,\n  DeleteJsonResponseTypedOptions,\n  PatchArrayBufferOptions,\n  PatchArrayBufferEventsOptions,\n  PatchArrayBufferResponseOptions,\n  PatchBlobOptions,\n  PatchBlobEventsOptions,\n  PatchBlobResponseOptions,\n  PatchTextOptions,\n  PatchTextEventsOptions,\n  PatchTextResponseOptions,\n  PatchJsonOptions,\n  PatchJsonEventsOptions,\n  PatchJsonResponseOptions,\n  PatchJsonTypedOptions,\n  PatchJsonEventsTypedOptions,\n  PatchJsonResponseTypedOptions,\n  PostArrayBufferEventsOptions,\n  PostArrayBufferOptions,\n  PostArrayBufferResponseOptions,\n  PostBlobEventsOptions,\n  PostBlobOptions,\n  PostBlobResponseOptions,\n  PostJsonEventsOptions,\n  PostJsonEventsTypedOptions,\n  PostJsonOptions,\n  PostJsonResponseOptions,\n  PostJsonResponseTypedOptions,\n  PostJsonTypedOptions,\n  PostTextEventsOptions,\n  PostTextOptions,\n  PostTextResponseOptions,\n  PutArrayBufferEventsOptions,\n  PutArrayBufferOptions,\n  PutArrayBufferResponseOptions,\n  PutBlobEventsOptions,\n  PutBlobOptions,\n  PutBlobResponseOptions,\n  PutJsonEventsOptions,\n  PutJsonEventsTypedOptions,\n  PutJsonOptions,\n  PutJsonResponseOptions,\n  PutJsonResponseTypedOptions,\n  PutJsonTypedOptions,\n  PutTextEventsOptions,\n  PutTextOptions,\n  PutTextResponseOptions\n} from './types/http-options.type';\n\nconst IOTS_RESULT_TAG_LEFT = 'Left';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class TypesafeHttpService {\n  /* eslint-disable @typescript-eslint/no-explicit-any */\n  constructor(private http: HttpClient) {}\n\n  public delete    (url: string, options: DeleteArrayBufferOptions): Observable<ArrayBuffer>;\n  public delete    (url: string, options: DeleteArrayBufferEventsOptions): Observable<HttpEvent<ArrayBuffer>>;\n  public delete    (url: string, options: DeleteArrayBufferResponseOptions): Observable<HttpResponse<ArrayBuffer>>;\n  public delete    (url: string, options: DeleteBlobOptions): Observable<Blob>;\n  public delete    (url: string, options: DeleteBlobEventsOptions): Observable<HttpEvent<Blob>>;\n  public delete    (url: string, options: DeleteBlobResponseOptions): Observable<HttpResponse<Blob>>;\n  public delete    (url: string, options: DeleteTextOptions): Observable<string>;\n  public delete    (url: string, options: DeleteTextEventsOptions): Observable<HttpEvent<string>>;\n  public delete    (url: string, options: DeleteTextResponseOptions): Observable<HttpResponse<string>>;\n  public delete    (url: string, options?: DeleteJsonOptions | undefined): Observable<object>;\n  public delete    (url: string, options: DeleteJsonEventsOptions): Observable<HttpEvent<object>>;\n  public delete    (url: string, options: DeleteJsonResponseOptions): Observable<HttpResponse<object>>;\n  public delete<T> (url: string, options?: DeleteJsonTypedOptions<T> | undefined): Observable<T>;\n  public delete<T> (url: string, options: DeleteJsonEventsTypedOptions<T>): Observable<HttpEvent<T>>;\n  public delete<T> (url: string, options: DeleteJsonResponseTypedOptions<T>): Observable<HttpResponse<T>>;\n  public delete<T> (url: string,            options?: any): Observable<ArrayBuffer | object | Blob | string | T > | Observable<HttpEvent<ArrayBuffer | object | Blob | string | T>> | Observable<HttpResponse<ArrayBuffer | object | Blob | string | T>> {\n    return this.http.delete(url, options).pipe(\n      tap(generateHandler<T>(options)),\n      catchError(handleDecodeError)\n    );\n  }\n\n  public get       (url: string, options: GetArrayBufferOptions): Observable<ArrayBuffer>;\n  public get       (url: string, options: GetArrayBufferEventsOptions): Observable<HttpEvent<ArrayBuffer>>;\n  public get       (url: string, options: GetArrayBufferResponseOptions): Observable<HttpResponse<ArrayBuffer>>;\n  public get       (url: string, options: GetBlobOptions): Observable<Blob>;\n  public get       (url: string, options: GetBlobEventsOptions): Observable<HttpEvent<Blob>>;\n  public get       (url: string, options: GetBlobResponseOptions): Observable<HttpResponse<Blob>>;\n  public get       (url: string, options: GetTextOptions): Observable<string>;\n  public get       (url: string, options: GetTextEventsOptions): Observable<HttpEvent<string>>;\n  public get       (url: string, options: GetTextResponseOptions): Observable<HttpResponse<string>>;\n  public get       (url: string, options?: GetJsonOptions | undefined): Observable<object>;\n  public get       (url: string, options: GetJsonEventsOptions): Observable<HttpEvent<object>>;\n  public get       (url: string, options: GetJsonResponseOptions): Observable<HttpResponse<object>>;\n  public get<T>    (url: string, options?: GetJsonTypedOptions<T> | undefined): Observable<T>;\n  public get<T>    (url: string, options: GetJsonEventsTypedOptions<T>): Observable<HttpEvent<T>>;\n  public get<T>    (url: string, options: GetJsonResponseTypedOptions<T>): Observable<HttpResponse<T>>;\n  public get<T>    (url: string,            options?: any): Observable<ArrayBuffer | object | Blob | string | T > | Observable<HttpEvent<ArrayBuffer | object | Blob | string | T>> | Observable<HttpResponse<ArrayBuffer | object | Blob | string | T>> {\n    return this.http.get(url, options).pipe(\n      tap(generateHandler<T>(options)),\n      catchError(handleDecodeError)\n    );\n  }\n\n  public head      (url: string, options: HeadArrayBufferOptions): Observable<ArrayBuffer>;\n  public head      (url: string, options: HeadArrayBufferEventsOptions): Observable<HttpEvent<ArrayBuffer>>;\n  public head      (url: string, options: HeadArrayBufferResponseOptions): Observable<HttpResponse<ArrayBuffer>>;\n  public head      (url: string, options: HeadBlobOptions): Observable<Blob>;\n  public head      (url: string, options: HeadBlobEventsOptions): Observable<HttpEvent<Blob>>;\n  public head      (url: string, options: HeadBlobResponseOptions): Observable<HttpResponse<Blob>>;\n  public head      (url: string, options: HeadTextOptions): Observable<string>;\n  public head      (url: string, options: HeadTextEventsOptions): Observable<HttpEvent<string>>;\n  public head      (url: string, options: HeadTextResponseOptions): Observable<HttpResponse<string>>;\n  public head      (url: string, options?: HeadJsonOptions | undefined): Observable<object>;\n  public head      (url: string, options: HeadJsonEventsOptions): Observable<HttpEvent<object>>;\n  public head      (url: string, options: HeadJsonResponseOptions): Observable<HttpResponse<object>>;\n  public head<T>   (url: string, options?: HeadJsonTypedOptions<T> | undefined): Observable<T>;\n  public head<T>   (url: string, options: HeadJsonEventsTypedOptions<T>): Observable<HttpEvent<T>>;\n  public head<T>   (url: string, options: HeadJsonResponseTypedOptions<T>): Observable<HttpResponse<T>>;\n  public head<T>   (url: string,            options?: any): Observable<ArrayBuffer | object | Blob | string | T > | Observable<HttpEvent<ArrayBuffer | object | Blob | string | T>> | Observable<HttpResponse<ArrayBuffer | object | Blob | string | T>> {\n    return this.http.head(url, options).pipe(\n      tap(generateHandler<T>(options)),\n      catchError(handleDecodeError)\n    );\n  }\n\n  public options   (url: string, options: OptionsArrayBufferOptions): Observable<ArrayBuffer>;\n  public options   (url: string, options: OptionsArrayBufferEventsOptions): Observable<HttpEvent<ArrayBuffer>>;\n  public options   (url: string, options: OptionsArrayBufferResponseOptions): Observable<HttpResponse<ArrayBuffer>>;\n  public options   (url: string, options: OptionsBlobOptions): Observable<Blob>;\n  public options   (url: string, options: OptionsBlobEventsOptions): Observable<HttpEvent<Blob>>;\n  public options   (url: string, options: OptionsBlobResponseOptions): Observable<HttpResponse<Blob>>;\n  public options   (url: string, options: OptionsTextOptions): Observable<string>;\n  public options   (url: string, options: OptionsTextEventsOptions): Observable<HttpEvent<string>>;\n  public options   (url: string, options: OptionsTextResponseOptions): Observable<HttpResponse<string>>;\n  public options   (url: string, options?: OptionsJsonOptions | undefined): Observable<object>;\n  public options   (url: string, options: OptionsJsonEventsOptions): Observable<HttpEvent<object>>;\n  public options   (url: string, options: OptionsJsonResponseOptions): Observable<HttpResponse<object>>;\n  public options<T>(url: string, options?: OptionsJsonTypedOptions<T> | undefined): Observable<T>;\n  public options<T>(url: string, options: OptionsJsonEventsTypedOptions<T>): Observable<HttpEvent<T>>;\n  public options<T>(url: string, options: OptionsJsonResponseTypedOptions<T>): Observable<HttpResponse<T>>;\n  public options<T>(url: string,            options?: any): Observable<ArrayBuffer | object | Blob | string | T > | Observable<HttpEvent<ArrayBuffer | object | Blob | string | T>> | Observable<HttpResponse<ArrayBuffer | object | Blob | string | T>> {\n    return this.http.options(url, options).pipe(\n      tap(generateHandler<T>(options)),\n      catchError(handleDecodeError)\n    );\n  }\n\n  public patch     (url: string, body: unknown, options: PatchArrayBufferOptions): Observable<ArrayBuffer>;\n  public patch     (url: string, body: unknown, options: PatchArrayBufferEventsOptions): Observable<HttpEvent<ArrayBuffer>>;\n  public patch     (url: string, body: unknown, options: PatchArrayBufferResponseOptions): Observable<HttpResponse<ArrayBuffer>>;\n  public patch     (url: string, body: unknown, options: PatchBlobOptions): Observable<Blob>;\n  public patch     (url: string, body: unknown, options: PatchBlobEventsOptions): Observable<HttpEvent<Blob>>;\n  public patch     (url: string, body: unknown, options: PatchBlobResponseOptions): Observable<HttpResponse<Blob>>;\n  public patch     (url: string, body: unknown, options: PatchTextOptions): Observable<string>;\n  public patch     (url: string, body: unknown, options: PatchTextEventsOptions): Observable<HttpEvent<string>>;\n  public patch     (url: string, body: unknown, options: PatchTextResponseOptions): Observable<HttpResponse<string>>;\n  public patch     (url: string, body: unknown, options?: PatchJsonOptions | undefined): Observable<object>;\n  public patch     (url: string, body: unknown, options: PatchJsonEventsOptions): Observable<HttpEvent<object>>;\n  public patch     (url: string, body: unknown, options: PatchJsonResponseOptions): Observable<HttpResponse<object>>;\n  public patch<T>  (url: string, body: unknown, options?: PatchJsonTypedOptions<T> | undefined): Observable<T>;\n  public patch<T>  (url: string, body: unknown, options: PatchJsonEventsTypedOptions<T>): Observable<HttpEvent<T>>;\n  public patch<T>  (url: string, body: unknown, options: PatchJsonResponseTypedOptions<T>): Observable<HttpResponse<T>>;\n  public patch<T>  (url: string, body: unknown, options?: any): Observable<ArrayBuffer | object | Blob | string | T > | Observable<HttpEvent<ArrayBuffer | object | Blob | string | T>> | Observable<HttpResponse<ArrayBuffer | object | Blob | string | T>> {\n    return this.http.patch(url, body, options).pipe(\n      tap(generateHandler<T>(options)),\n      catchError(handleDecodeError)\n    );\n  }\n  public post      (url: string, body: any, options: PostArrayBufferOptions): Observable<ArrayBuffer>;\n  public post      (url: string, body: any, options: PostArrayBufferEventsOptions): Observable<HttpEvent<ArrayBuffer>>;\n  public post      (url: string, body: any, options: PostArrayBufferResponseOptions): Observable<HttpResponse<ArrayBuffer>>;\n  public post      (url: string, body: any, options: PostBlobOptions): Observable<Blob>;\n  public post      (url: string, body: any, options: PostBlobEventsOptions): Observable<HttpEvent<Blob>>;\n  public post      (url: string, body: any, options: PostBlobResponseOptions): Observable<HttpResponse<Blob>>;\n  public post      (url: string, body: any, options: PostTextOptions): Observable<string>;\n  public post      (url: string, body: any, options: PostTextEventsOptions): Observable<HttpEvent<string>>;\n  public post      (url: string, body: any, options: PostTextResponseOptions): Observable<HttpResponse<string>>;\n  public post      (url: string, body: any, options?: PostJsonOptions | undefined): Observable<object>;\n  public post      (url: string, body: any, options: PostJsonEventsOptions): Observable<HttpEvent<object>>;\n  public post      (url: string, body: any, options: PostJsonResponseOptions): Observable<HttpResponse<object>>;\n  public post<T>   (url: string, body: any, options?: PostJsonTypedOptions<T> | undefined): Observable<T>;\n  public post<T>   (url: string, body: any, options: PostJsonEventsTypedOptions<T>): Observable<HttpEvent<T>>;\n  public post<T>   (url: string, body: any, options: PostJsonResponseTypedOptions<T>): Observable<HttpResponse<T>>;\n  public post<T>   (url: string, body: any,  options?: any): Observable<ArrayBuffer | object | Blob | string | T > | Observable<HttpEvent<ArrayBuffer | object | Blob | string | T>> | Observable<HttpResponse<ArrayBuffer | object | Blob | string | T>> {\n    return this.http.post(url, body, options).pipe(\n      tap(generateHandler<T>(options)),\n      catchError(handleDecodeError)\n    );\n  }\n\n  public put       (url: string, body: any, options: PutArrayBufferOptions): Observable<ArrayBuffer>;\n  public put       (url: string, body: any, options: PutArrayBufferEventsOptions): Observable<HttpEvent<ArrayBuffer>>;\n  public put       (url: string, body: any, options: PutArrayBufferResponseOptions): Observable<HttpResponse<ArrayBuffer>>;\n  public put       (url: string, body: any, options: PutBlobOptions): Observable<Blob>;\n  public put       (url: string, body: any, options: PutBlobEventsOptions): Observable<HttpEvent<Blob>>;\n  public put       (url: string, body: any, options: PutBlobResponseOptions): Observable<HttpResponse<Blob>>;\n  public put       (url: string, body: any, options: PutTextOptions): Observable<string>;\n  public put       (url: string, body: any, options: PutTextEventsOptions): Observable<HttpEvent<string>>;\n  public put       (url: string, body: any, options: PutTextResponseOptions): Observable<HttpResponse<string>>;\n  public put       (url: string, body: any, options?: PutJsonOptions | undefined): Observable<object>;\n  public put       (url: string, body: any, options: PutJsonEventsOptions): Observable<HttpEvent<object>>;\n  public put       (url: string, body: any, options: PutJsonResponseOptions): Observable<HttpResponse<object>>;\n  public put<T>    (url: string, body: any, options?: PutJsonTypedOptions<T> | undefined): Observable<T>;\n  public put<T>    (url: string, body: any, options: PutJsonEventsTypedOptions<T>): Observable<HttpEvent<T>>;\n  public put<T>    (url: string, body: any, options: PutJsonResponseTypedOptions<T>): Observable<HttpResponse<T>>; \n  public put<T>    (url: string, body: any,  options?: any): Observable<ArrayBuffer | object | Blob | string | T > | Observable<HttpEvent<ArrayBuffer | object | Blob | string | T>> | Observable<HttpResponse<ArrayBuffer | string | object | Blob | T>> {\n    return this.http.put(url, body, options).pipe(\n      tap(generateHandler<T>(options)),\n      catchError(handleDecodeError)\n    );\n  }\n}\n\nfunction generateHandler<R>(options: any = {}): (response: ArrayBuffer | string | object | R | HttpEvent<ArrayBuffer | string | object | R> | HttpResponse<ArrayBuffer | string | object | R>) => void {\n  const { runtimeType, observe = 'body', responseType = 'json' } = options;\n  return (response: ArrayBuffer | string | object | R | HttpEvent<ArrayBuffer | string | object | R> | HttpResponse<ArrayBuffer | string | object | R>) => {\n    if (responseType === 'json' && runtimeType instanceof iots.Type) {\n      let resultValue: R | null = null;\n      if (observe === 'body') {\n        resultValue = response as R;\n      } else if (observe === 'response') {\n        resultValue = (response as HttpResponse<any>).body as R;\n      } else if (observe === 'events' && (response as HttpEvent<R>).type === HttpEventType.Response) {\n        resultValue = (response as HttpResponse<R>).body! as R;\n      }\n      if (resultValue === null) {\n        return;\n      }\n      const result = runtimeType.decode(resultValue);\n      if (result._tag === IOTS_RESULT_TAG_LEFT) {\n        throw new TypeError(generateCustomTypeErrorMessage(\n          runtimeType.name,\n          response,\n          result.left\n        ));\n      }\n    }\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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"}