{"version":3,"file":"briebug-ngrx-auto-entity-service.mjs","sources":["../../../projects/ngrx-auto-entity-service/src/lib/entity.service.utils.ts","../../../projects/ngrx-auto-entity-service/src/lib/config.ts","../../../projects/ngrx-auto-entity-service/src/lib/entity.service.ts","../../../projects/ngrx-auto-entity-service/src/lib/ngrx-auto-entity-service.module.ts","../../../projects/ngrx-auto-entity-service/src/public-api.ts","../../../projects/ngrx-auto-entity-service/src/briebug-ngrx-auto-entity-service.ts"],"sourcesContent":["import { IEntityInfo } from '@briebug/ngrx-auto-entity';\nimport { Observable, retry } from 'rxjs';\nimport { EntityCriteria, RetryCriteria } from './critera.model';\n\nexport const EmptyKey = null;\n\nexport const buildParentPaths = (criteria: EntityCriteria): string =>\n  Object.keys((criteria && criteria.parents) || {})\n    .map(parent => `/${parent}${criteria.parents[parent] === EmptyKey ? '' : `/${criteria.parents[parent]}`}`)\n    .reduce((path, parent) => path + parent, '');\n\nexport const buildEntityPath = (info: IEntityInfo, key?: any, criteria?: EntityCriteria): string =>\n  `/${info.uriName || info.pluralName || info.modelName.toLowerCase()}${\n    key ? `/${key}` : criteria && criteria.param ? `/${criteria.param}` : ''\n  }`;\n\nexport const buildSimpleQueryParam = (criteria: EntityCriteria, param: string) => `${param}=${criteria.query[param]}`;\n\nexport const renderJoinedArrayQueryParams = (values: any[], param: string) => values.map(value => `${param}=${value}`).join('&');\n\nexport const buildJoinedArrayQueryParamSet = (criteria: EntityCriteria, param: string) =>\n  Array.isArray(criteria.query[param])\n    ? renderJoinedArrayQueryParams(criteria.query[param] as any[], param.substring(1))\n    : typeof criteria.query[param] === 'string'\n      ? renderJoinedArrayQueryParams((criteria.query[param] as string).split(','), param.substring(1))\n      : buildSimpleQueryParam(criteria, param.substring(1));\n\nexport const buildQueryString = (criteria: EntityCriteria): string =>\n  criteria && criteria.query\n    ? Object.keys(criteria.query)\n      .map(param => (param.startsWith('&') ? buildJoinedArrayQueryParamSet(criteria, param) : buildSimpleQueryParam(criteria, param)))\n      .join('&')\n    : '';\n\nexport const buildUrl = (host: string, info: IEntityInfo, criteria?: EntityCriteria, key: any = null): string => {\n  const parentPaths = buildParentPaths(criteria);\n  const entityPath = buildEntityPath(info, key, criteria);\n  const query = buildQueryString(criteria);\n  const version = criteria?.version ? `/v${criteria.version}` : '';\n\n  const url = `${host}${version}${parentPaths}${entityPath}${query ? `?${query}` : ''}`;\n\n  return url;\n};\n\nexport const resolveRetryCriteria = <T>(obs: Observable<T>, retryCriteria: boolean | RetryCriteria, defaultCriteria?: RetryCriteria) =>\n  retryCriteria\n    ? typeof retryCriteria === 'boolean'\n      ? obs.pipe(retry({count: defaultCriteria?.maxRetries || 3, delay: defaultCriteria?.delay || 1000}))\n      : obs.pipe(\n        retry({\n          count: retryCriteria.maxRetries || defaultCriteria?.maxRetries || 3,\n          delay: retryCriteria.delay || defaultCriteria?.delay || 1000,\n        }),\n      )\n    : obs;\n","import { InjectionToken } from '@angular/core';\nimport { EntityCriteria, RetryCriteria } from './critera.model';\nimport { IEntityInfo } from '@briebug/ngrx-auto-entity';\nimport { Observable } from 'rxjs';\n\nexport type DynamicAutoEntityServiceConfig = (...deps: any[]) => AutoEntityServiceConfig;\n\nexport type APIPrefixResolver = (operation: string, info: IEntityInfo, criteria: EntityCriteria) => string | Promise<string> | Observable<string>\n\nexport interface AutoEntityServiceConfig {\n  /** API Host Endpoint. Entity url paths will be appended to the provided host.\n   *\n   * ## Example\n   *\n   * ```ts\n   *\n   *  // Import and set config\n   *  NgrxAutoEntityServiceModule.forRoot({ host: 'http://localhost:3000/api' })\n   *\n   *  // Entity Declaration\n   *  @Entity({ modelName: 'User', uriName: 'users' })\n   *  export class User {\n   *    @Key: id: string;\n   *  }\n   *\n   *  // Build State\n   *  export const {\n   *    actions: { loadAll: loadAllUsers, load: loadUser }\n   *  } = buildState(User)\n   *\n   *  // Applicaiton\n   *  someEffect$ = createEffect(() => this.actions$.pipe(\n   *    ofType(someAction),\n   *    map(() => loadAllUsers()) // Will trigger HTTP GET 'http://localhost:3000/api/users'\n   *  ))\n   *\n   *  someOtherEffect$ = createEffect(() => this.actions$.pipe(\n   *    ofType(someAction),\n   *    map(({ id }}) => loadUser({ keys: id })) // Will trigger HTTP GET 'http://localhost:3000/api/users/id'\n   *  ))\n   *\n   *\n   * ```\n   */\n  urlPrefix: string | APIPrefixResolver;\n  // Default retry to use when setting `retry: true` in action criteria.\n  // Defaults to { count: 3, delay: 1000 }\n  defaultRetry?: RetryCriteria;\n}\n\n\nexport const AUTO_ENTITY_CONFIG = new InjectionToken<AutoEntityServiceConfig>('auto-entity-config')\n","import { HttpClient } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { EntityIdentity, getKeyFromModel, IAutoEntityService, IEntityInfo } from '@briebug/ngrx-auto-entity';\nimport { first, from, Observable, of, switchMap } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { buildUrl, resolveRetryCriteria } from './entity.service.utils';\nimport { AUTO_ENTITY_CONFIG, AutoEntityServiceConfig } from './config';\nimport { EntityCriteria } from './critera.model';\n\n@Injectable()\nexport class EntityService implements IAutoEntityService<any> {\n  constructor(\n    private readonly http: HttpClient,\n    @Inject(AUTO_ENTITY_CONFIG)\n    private readonly config: AutoEntityServiceConfig\n  ) {}\n\n  protected getUrlPrefix(operation: string, info: IEntityInfo, criteria?: EntityCriteria): Observable<string> {\n    return typeof this.config.urlPrefix === 'string' ? of(this.config.urlPrefix) : from(this.config.urlPrefix(operation, info, criteria));\n  }\n\n  protected buildUrl(operation: string, info: IEntityInfo, criteria?: EntityCriteria, key?: string | number) {\n    return this.getUrlPrefix('load', info, criteria).pipe(\n      first(),\n      map(prefix => buildUrl(prefix, info, criteria, key))\n    );\n  }\n\n  load(entityInfo: IEntityInfo, key: any, criteria?: EntityCriteria): Observable<any> {\n    return this.buildUrl('load', entityInfo, criteria, key).pipe(\n      switchMap(url => resolveRetryCriteria(this.http.get<any>(url), criteria?.retry, this.config.defaultRetry))\n    );\n  }\n\n  loadMany(entityInfo: IEntityInfo, criteria?: EntityCriteria): Observable<any[]> {\n    return this.buildUrl('loadMany', entityInfo, criteria).pipe(\n      switchMap(url => resolveRetryCriteria(this.http.get<any[]>(url), criteria?.retry, this.config.defaultRetry))\n    );\n  }\n\n  loadAll(entityInfo: IEntityInfo, criteria?: EntityCriteria): Observable<any[]> {\n    return this.buildUrl('loadAll', entityInfo, criteria).pipe(\n      switchMap(url => resolveRetryCriteria(this.http.get<any[]>(url), criteria?.retry, this.config.defaultRetry))\n    );\n  }\n\n  create(entityInfo: IEntityInfo, entity: any, criteria?: EntityCriteria, originalEntity?: any): Observable<any> {\n    return this.buildUrl('create', entityInfo, criteria).pipe(switchMap(url => this.http.post<any>(url, entity)));\n  }\n\n  update(entityInfo: IEntityInfo, entity: any, criteria?: EntityCriteria, originalEntity?: any): Observable<any> {\n    return this.buildUrl('update', entityInfo, criteria, getKeyFromModel(entityInfo.modelType, entity)).pipe(\n      switchMap(url => this.http.patch<any>(url, entity))\n    );\n  }\n\n  replace(entityInfo: IEntityInfo, entity: any, criteria?: EntityCriteria, originalEntity?: any): Observable<any> {\n    return this.buildUrl('replace', entityInfo, criteria, getKeyFromModel(entityInfo.modelType, entity)).pipe(\n      switchMap(url => this.http.put<any>(url, entity))\n    );\n  }\n\n  delete(entityInfo: IEntityInfo, entity: any, criteria?: EntityCriteria, originalEntity?: any): Observable<any> {\n    return this.buildUrl('delete', entityInfo, criteria, getKeyFromModel(entityInfo.modelType, entity)).pipe(\n      switchMap(url => this.http.delete<any>(url, entity).pipe(map(() => entity)))\n    );\n  }\n\n  deleteByKey(entityInfo: IEntityInfo, key: EntityIdentity, criteria?: EntityCriteria): Observable<EntityIdentity> {\n    return this.buildUrl('deleteByKey', entityInfo, criteria, key).pipe(switchMap(url => this.http.delete<any>(url).pipe(map(() => key))));\n  }\n}\n","import { ModuleWithProviders, NgModule, Provider } from '@angular/core';\nimport { HttpClientModule } from '@angular/common/http';\nimport { EntityService } from './entity.service';\nimport {\n  AUTO_ENTITY_CONFIG,\n  AutoEntityServiceConfig,\n  DynamicAutoEntityServiceConfig,\n} from './config';\n\nconst createConfigProvider = (config: AutoEntityServiceConfig | DynamicAutoEntityServiceConfig, deps?: any[]): Provider =>\n  typeof config === 'function'\n    ? {\n      provide: AUTO_ENTITY_CONFIG,\n      useFactory: config,\n      deps,\n    }\n    : {provide: AUTO_ENTITY_CONFIG, useValue: config};\n\n@NgModule({\n  imports: [HttpClientModule],\n  providers: [EntityService],\n})\nexport class NgrxAutoEntityServiceModule {\n  static forRoot(config: DynamicAutoEntityServiceConfig, deps?: any[]): ModuleWithProviders<NgrxAutoEntityServiceModule>;\n  static forRoot(config: AutoEntityServiceConfig): ModuleWithProviders<NgrxAutoEntityServiceModule>;\n  static forRoot(\n    config: AutoEntityServiceConfig | DynamicAutoEntityServiceConfig,\n    deps?: any[],\n  ): ModuleWithProviders<NgrxAutoEntityServiceModule> {\n    return {\n      ngModule: NgrxAutoEntityServiceModule,\n      providers: [createConfigProvider(config, deps)],\n    };\n  }\n}\n","/*\n * Public API Surface of NGRX Auto Entity Service\n */\n\nexport { NgrxAutoEntityServiceModule } from './lib/ngrx-auto-entity-service.module';\nexport { EntityService } from './lib/entity.service';\nexport type { AutoEntityServiceConfig, DynamicAutoEntityServiceConfig, APIPrefixResolver } from './lib/config';\nexport type { EntityCriteria, RetryCriteria, QueryCriteria } from './lib/critera.model';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}