{"version":3,"file":"rxap-data-source-http.mjs","sources":["../../../../../packages/angular/data-source/http/src/lib/error.ts","../../../../../packages/angular/data-source/http/src/lib/base-http.data-source.ts","../../../../../packages/angular/data-source/http/src/lib/http.data-source.ts","../../../../../packages/angular/data-source/http/src/lib/http-data-source.loader.ts","../../../../../packages/angular/data-source/http/src/index.ts","../../../../../packages/angular/data-source/http/src/rxap-data-source-http.ts"],"sourcesContent":["import { RxapDataSourceError } from '@rxap/data-source';\n\nexport class RxapHttpDataSourceError extends RxapDataSourceError {\n\n  constructor(message: string, code: string, className?: string) {\n    super(message, code, className);\n    this.addSubPackageName('http');\n  }\n\n}\n","import {\n  BaseDataSource,\n  RXAP_DATA_SOURCE_METADATA,\n  RXAP_DATA_SOURCE_REFRESH,\n  RxapDataSourceError,\n} from '@rxap/data-source';\nimport {\n  EMPTY,\n  firstValueFrom,\n  Observable,\n  of,\n  ReplaySubject,\n  Subject,\n  Subscription,\n} from 'rxjs';\nimport { HttpClient, HttpRequest } from '@angular/common/http';\nimport {\n  deepMerge,\n  hasIndexSignature,\n  joinPath,\n} from '@rxap/utilities';\nimport {\n  Inject,\n  Injectable,\n  Optional,\n} from '@angular/core';\nimport {\n  finalize,\n  skip,\n  switchMap,\n  tap,\n} from 'rxjs/operators';\nimport { HttpDataSourceMetadata } from './http.data-source.metadata';\nimport { HttpDataSourceViewer } from './http.data-source.viewer';\nimport { HttpDataSourceOptions } from './http.data-source.options';\nimport { RxapHttpDataSourceError } from './error';\nimport { RequestInProgressSubject } from '@rxap/rxjs';\n\n@Injectable()\nexport abstract class BaseHttpDataSource<Data = any, PathParams = any, Body = any> extends BaseDataSource<\n  Data,\n  HttpDataSourceMetadata<PathParams, Body>,\n  HttpDataSourceViewer<PathParams, Body>> {\n\n  public readonly requestsInProgress$ = new RequestInProgressSubject();\n  public readonly refresh$: Subject<HttpDataSourceOptions<PathParams, Body>> = new Subject<HttpDataSourceOptions<PathParams, Body>>();\n  public readonly refreshed$ = new Subject<void>();\n\n  public timeout = 60 * 1000;\n\n  protected _options!: HttpDataSourceOptions<PathParams, Body>;\n\n  protected _refreshSubscription: Subscription | null = null;\n  protected override _data$!: ReplaySubject<Data>;\n\n  constructor(\n    @Inject(HttpClient)\n    public readonly http: HttpClient,\n    @Optional()\n    @Inject(RXAP_DATA_SOURCE_METADATA)\n      metadata: HttpDataSourceMetadata<PathParams, Body> | null = null,\n    @Optional()\n    @Inject(RXAP_DATA_SOURCE_REFRESH)\n      refresh$: Subject<HttpDataSourceOptions<PathParams, Body>> | null = null,\n  ) {\n    super(metadata);\n    this.timeout = this.metadata.timeout ?? this.timeout;\n    this.loading$ = this.requestsInProgress$.loading$();\n    if (http === undefined) {\n      throw new RxapDataSourceError(\n        'HttpClient is undefined. Ensure that the HttpClient is added to the deps property!',\n        '',\n        this.constructor.name,\n      );\n    }\n    if (refresh$) {\n      this.refresh$ = refresh$;\n    }\n  }\n\n  public abstract override derive(\n    id: string,\n    metadata: Partial<HttpDataSourceMetadata<PathParams, Body>>,\n  ): BaseHttpDataSource<Data>;\n\n  public request$(options: HttpDataSourceOptions<PathParams, Body> = this._options, merge = false): Promise<Data> {\n    this.init();\n    if (merge) {\n      // TODO : add deep merge\n      options = { ...this._options, ...options };\n    }\n    // test if options is defined. Can be undefined if the init method is not yet been called\n    if (!options) {\n      options = this._options;\n    }\n    return firstValueFrom(this.buildRequest(options));\n  }\n\n  public override reset(): any {\n    this._data = undefined;\n    if (this._refreshSubscription) {\n      this._refreshSubscription.unsubscribe();\n    }\n    super.reset();\n    this._initialised = false;\n    this.init();\n  }\n\n  public override refresh(\n    options: HttpDataSourceOptions<PathParams, Body> = this._options,\n    merge = false,\n    force = false,\n  ) {\n    this.init();\n    if (force || this._connectedViewer.size !== 0) {\n      if (merge) {\n        // TODO : add deep merge\n        options = { ...this._options, ...options };\n      }\n      // test if options is defined. Can be undefined if the init method is not yet been called\n      if (!options) {\n        options = this._options;\n      }\n      this.refresh$.next(options);\n      this.refreshed$.next();\n    }\n  }\n\n  public override init(): void {\n    if (this._initialised) {\n      return;\n    }\n    super.init();\n\n    if (this._refreshSubscription) {\n      throw new RxapHttpDataSourceError('The refresh subscription is already initialised', '');\n    }\n\n    this._options = {\n      params: this.metadata.params,\n      pathParams: this.metadata.pathParams,\n      body: this.metadata.body,\n      headers: this.metadata.headers,\n    };\n\n    this._data$ = new ReplaySubject<Data>(this.metadata.bufferSize ?? 1);\n\n    this._refreshSubscription = this.refresh$.pipe(\n      tap(options => this._options = options),\n      tap(() => this.requestsInProgress$.increase()),\n      switchMap(options => this.buildRequest(options).pipe(\n        finalize(() => this.requestsInProgress$.decrease()),\n      )),\n    ).subscribe(this._data$);\n\n  }\n\n  protected isEqualToLastOptions(options: HttpDataSourceOptions<PathParams, Body>): boolean {\n    const keys: Array<keyof HttpDataSourceOptions<PathParams, Body>> = [\n      'url',\n      'pathParams',\n      'body',\n      'params',\n      'headers',\n    ];\n    return !!this._options && keys.every(key => this._options[key] === options[key]);\n  }\n\n  protected override _connect(viewer: HttpDataSourceViewer<PathParams, Body>): [ Observable<Data>, Subscription ] {\n    this.init();\n\n    if (viewer.url === this.metadata.url) {\n      delete viewer.url;\n    }\n\n    if (viewer.viewChange ===\n      EMPTY &&\n      (!viewer.lazy || this._data === undefined || !this.isEqualToLastOptions(viewer))) {\n      viewer.realtime = this._data !== undefined;\n      viewer.viewChange = of(viewer);\n    }\n\n    return [\n      viewer.realtime ? this._data$.pipe(skip(this.metadata.bufferSize ?? 1)) : this._data$,\n      viewer.viewChange!.pipe(\n        tap(options => this.refresh(options, true, true)),\n      ).subscribe(),\n    ];\n  }\n\n  protected getRequestUrl(): string {\n    if (typeof this.metadata.url === 'function') {\n      return this.metadata.url();\n    }\n    return this.metadata.url;\n  }\n\n  protected buildHttpRequest(options: HttpDataSourceOptions<PathParams, Body>): HttpRequest<Body> {\n    return new HttpRequest(\n      this.metadata.method ?? 'GET',\n      this.buildUrlWithParams(\n        joinPath(this.getRequestUrl(), options.url ?? null),\n        deepMerge(this.metadata.pathParams ?? {}, options.pathParams ?? {}),\n      ),\n      options.body ?? this.metadata.body ?? null,\n      {\n        params: options.params ?? this.metadata.params,\n        headers: options.headers ?? this.metadata.headers,\n        reportProgress: true,\n        responseType: this.metadata.responseType ?? 'json',\n        withCredentials: this.metadata.withCredentials,\n      },\n    );\n  }\n\n  protected buildUrlWithParams(url: string, pathParams: Record<string, string>): string {\n    const matches = url.match(/\\{[^}]+\\}/g);\n\n    if (matches) {\n\n      if (!hasIndexSignature(pathParams)) {\n        throw new RxapDataSourceError(\n          `Path params for connection '${ this.id }' has not an index signature`,\n          '',\n          this.constructor.name,\n        );\n      }\n\n      for (const match of matches) {\n        const param = match.substr(1, match.length - 2);\n        let replace: string | null = null;\n        // eslint-disable-next-line no-prototype-builtins\n        if (pathParams.hasOwnProperty(param)) {\n          replace = encodeURIComponent(pathParams[param]);\n        }\n        if (replace === null) {\n          throw new RxapDataSourceError(\n            `Path params for connection '${ this.id }' has not a defined value for '${ param }'`,\n            '',\n            this.constructor.name,\n          );\n        }\n        url = url.replace(match, replace);\n      }\n    }\n\n    return url;\n  }\n\n  protected abstract buildRequest(options: HttpDataSourceOptions<PathParams, Body>): Observable<Data>;\n\n}\n","import { HttpErrorResponse, HttpEvent, HttpEventType, HttpHeaderResponse, HttpProgressEvent, HttpResponse, HttpSentEvent } from '@angular/common/http';\nimport {\n  Constructor,\n  deepMerge,\n} from '@rxap/utilities';\nimport {\n  Observable,\n  Subject,\n  throwError,\n} from 'rxjs';\nimport {\n  catchError,\n  filter,\n  map,\n  retry,\n  take,\n  tap,\n  timeout,\n} from 'rxjs/operators';\nimport { Injectable } from '@angular/core';\nimport { HttpDataSourceOptions } from './http.data-source.options';\nimport { RxapDataSource } from '@rxap/data-source';\nimport { HttpDataSourceMetadata } from './http.data-source.metadata';\nimport { BaseHttpDataSource } from './base-http.data-source';\n\n@Injectable()\nexport class HttpDataSource<Data = any, PathParams = any, Body = any>\n  extends BaseHttpDataSource<Data, PathParams, Body> {\n\n  public readonly onSentEvent$ = new Subject<HttpSentEvent>();\n  public readonly onResponse$ = new Subject<HttpResponse<Data>>();\n  public readonly onDownloadProgress$ = new Subject<HttpProgressEvent>();\n  public readonly onUploadProgress$ = new Subject<HttpProgressEvent>();\n  public readonly onResponseHeader$ = new Subject<HttpHeaderResponse>();\n\n  public derive<D = Data>(\n    id: string,\n    metadata: Partial<HttpDataSourceMetadata<PathParams, Body>> = this.metadata,\n    isolated = false,\n  ): HttpDataSource<D, PathParams, Body> {\n    return new HttpDataSource<D, PathParams, Body>(\n      this.http,\n      {\n        ...deepMerge(this.metadata, metadata),\n        id,\n      },\n      isolated ? null : this.refresh$,\n    );\n  }\n\n  public transform(data: any): Data {\n    return data;\n  }\n\n  protected handelHttpEvent(event: HttpEvent<Data>) {\n    switch (event.type) {\n\n      case HttpEventType.Sent:\n        this.onSentEvent$.next(event);\n        break;\n\n      case HttpEventType.Response:\n        this.onResponse$.next(event);\n        break;\n\n      case HttpEventType.DownloadProgress:\n        this.onDownloadProgress$.next(event);\n        break;\n\n      case HttpEventType.UploadProgress:\n        this.onUploadProgress$.next(event);\n        break;\n\n      case HttpEventType.ResponseHeader:\n        this.onResponseHeader$.next(event);\n        break;\n\n    }\n  }\n\n  protected buildRequest(options: HttpDataSourceOptions<PathParams, Body>): Observable<Data> {\n    return this.http.request<Data>(this.buildHttpRequest(options)).pipe(\n      retry(this.metadata.retry ?? 0),\n      tap(event => this.handelHttpEvent(event)),\n      filter((event: any) => event instanceof HttpResponse),\n      tap((response: HttpResponse<Data>) => {\n        this.interceptors?.forEach(interceptor => interceptor\n          .next({\n            response,\n            options,\n          }),\n        );\n      }),\n      catchError((response: HttpErrorResponse) => {\n        this.interceptors?.forEach(interceptor => interceptor\n          .next({\n            response,\n            options,\n          }),\n        );\n        return throwError(response);\n      }),\n      map((event: HttpResponse<Data>) => event.body),\n      map(data => this.transform(data)),\n      take(1),\n      timeout(this.timeout),\n    );\n  }\n\n}\n\nexport function RxapHttpDataSource<Data, PathParams = any, Body = any>(\n  metadata: HttpDataSourceMetadata<PathParams, Body>,\n  className = 'HttpDataSource',\n  packageName = '@rxap/data-source/http',\n) {\n  return function (target: Constructor<HttpDataSource<Data, PathParams, Body>>) {\n    RxapDataSource(metadata, className, packageName)(target);\n  };\n}\n","import {\n  Inject,\n  Injectable,\n  InjectFlags,\n  Injector,\n} from '@angular/core';\nimport { HttpDataSource } from './http.data-source';\nimport { HttpDataSourceOptions } from './http.data-source.options';\nimport { HttpDataSourceMetadata } from './http.data-source.metadata';\nimport {\n  DataSourceLoader,\n  RxapDataSourceError,\n} from '@rxap/data-source';\nimport { IdOrInstanceOrToken } from '@rxap/definition';\n\n@Injectable({ providedIn: 'root' })\nexport class HttpDataSourceLoader {\n\n  // Instead of extanding the DataSourceLoader class the DataSourceLoader instance\n  // will be injected, else there could be multiple instance of DataSourceLoader's.\n  constructor(@Inject(DataSourceLoader) private readonly dataSourceLoader: DataSourceLoader) {\n  }\n\n  public request$<Data>(\n    dataSourceIdOrInstanceOrToken: IdOrInstanceOrToken<HttpDataSource<Data>>,\n    options?: HttpDataSourceOptions,\n    merge = false,\n    metadata?: Partial<HttpDataSourceMetadata>,\n    injector?: Injector,\n    notFoundValue?: HttpDataSource<Data>,\n    flags?: InjectFlags,\n  ): Promise<Data> {\n    const dataSource = this\n      .dataSourceLoader\n      .load<HttpDataSource<Data>>(\n        dataSourceIdOrInstanceOrToken,\n        metadata,\n        injector,\n        notFoundValue,\n        flags,\n      );\n\n    if (!(dataSource instanceof HttpDataSource)) {\n      throw new RxapDataSourceError(`The data source is not a HttpDataSource`, '', 'HttpDataSourceLoader');\n    }\n\n    return dataSource.request$(options, merge);\n  }\n\n}\n","// region \nexport * from './lib/base-http.data-source';\nexport * from './lib/error';\nexport * from './lib/http-data-source.loader';\nexport * from './lib/http.data-source.metadata';\nexport * from './lib/http.data-source.options';\nexport * from './lib/http.data-source';\nexport * from './lib/http.data-source.viewer';\n// endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}