{"version":3,"file":"ngx-config-json.mjs","sources":["../../../projects/config/src/lib/config.service.ts","../../../projects/config/src/lib/config.module.ts","../../../projects/config/src/public-api.ts","../../../projects/config/src/ngx-config-json.ts"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject, filter, firstValueFrom, map, tap } from 'rxjs';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ConfigService<T> {\n\n  public get config(): T { return this.internalConfigService.config$.value as T; }\n  public configLoaded(): Promise<T> {\n    return firstValueFrom(this.internalConfigService.config$.pipe(filter(c => !!c), map(c => c as T)))\n  }\n\n  constructor(private readonly internalConfigService: InternalConfigService<T>) { }\n\n}\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class InternalConfigService<T> {\n  public config$ = new BehaviorSubject<T | undefined>(undefined);\n\n  constructor(private readonly httpClient: HttpClient) { }\n\n  public loadConfig(pathToConfig: string) {\n    return firstValueFrom(this.httpClient.get<T>(pathToConfig).pipe(tap({\n      next: res => this.config$.next(res),\n      error: e => this.config$.error(e),\n    })));\n  }\n}\n","import { HttpClientModule, provideHttpClient } from '@angular/common/http';\nimport { APP_INITIALIZER, EnvironmentProviders, ModuleWithProviders, NgModule, makeEnvironmentProviders } from '@angular/core';\nimport { ConfigService, InternalConfigService } from './config.service';\nimport { ConfigModuleOptions } from './models/config-module-options.model';\n\n\nconst initializeApp = <T>(pathToConfig: string) => {\n  return (config: InternalConfigService<T>) => () => config.loadConfig(pathToConfig);\n};\n\n@NgModule({\n  declarations: [],\n  imports: [HttpClientModule],\n  exports: [],\n})\nexport class ConfigModule {\n  static forRoot<T = unknown>({\n    configType: type,\n    pathToConfig = 'assets/config.json',\n  }: ConfigModuleOptions<T>): ModuleWithProviders<ConfigModule> {\n    return {\n      ngModule: ConfigModule,\n      providers: [\n        {\n          provide: APP_INITIALIZER,\n          multi: true,\n          deps: [InternalConfigService],\n          useFactory: initializeApp<T>(pathToConfig),\n        },\n        {\n          provide: type,\n          deps: [ConfigService],\n          useFactory: (config: ConfigService<T>) => config.config,\n        },\n      ],\n    };\n  }\n}\n\nexport const provideConfig = <T = unknown>({\n  configType: type,\n  pathToConfig = 'assets/config.json',\n}: ConfigModuleOptions<T>): EnvironmentProviders => {\n  return makeEnvironmentProviders([\n    provideHttpClient(),\n    {\n      provide: APP_INITIALIZER,\n      multi: true,\n      deps: [InternalConfigService],\n      useFactory: initializeApp<T>(pathToConfig),\n    },\n    {\n      provide: type,\n      deps: [ConfigService],\n      useFactory: (config: ConfigService<T>) => config.config,\n    },\n  ]);\n};\n","/*\n * Public API Surface of config\n */\n\nexport { ConfigModule, provideConfig } from './lib/config.module';\nexport { ConfigService } from './lib/config.service';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}