@indice/ng-config 0.5.0 → 0.6.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, inject, Injectable, signal, computed, Inject, Injector, makeEnvironmentProviders, APP_INITIALIZER } from '@angular/core';
2
+ import { InjectionToken, inject, Injectable, signal, computed, isDevMode, Inject, Injector, makeEnvironmentProviders, provideAppInitializer } from '@angular/core';
3
3
  import * as i1 from '@angular/common/http';
4
4
  import { HttpClient } from '@angular/common/http';
5
5
  import { of, lastValueFrom } from 'rxjs';
@@ -21,10 +21,10 @@ class SettingsDataService {
21
21
  getAppSettings() {
22
22
  return this.http.get(this.APP_SETTINGS_MANIFEST_URL);
23
23
  }
24
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: SettingsDataService, deps: [{ token: i1.HttpBackend }], target: i0.ɵɵFactoryTarget.Injectable }); }
25
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: SettingsDataService, providedIn: 'root' }); }
24
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SettingsDataService, deps: [{ token: i1.HttpBackend }], target: i0.ɵɵFactoryTarget.Injectable }); }
25
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SettingsDataService, providedIn: 'root' }); }
26
26
  }
27
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: SettingsDataService, decorators: [{
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SettingsDataService, decorators: [{
28
28
  type: Injectable,
29
29
  args: [{
30
30
  providedIn: 'root',
@@ -52,15 +52,21 @@ class SettingsFacadeService {
52
52
  this.appProvidersArray = appProvidersArray;
53
53
  this.#settingsDataService = inject(SettingsDataService);
54
54
  this.#environment = inject(APP_ENVIRONMENT);
55
- this.#state = signal(initialState, ...(ngDevMode ? [{ debugName: "#state" }] : []));
56
- this.settings = computed(() => this.#state().settings, ...(ngDevMode ? [{ debugName: "settings" }] : []));
55
+ this.#state = signal(initialState, /* @ts-ignore */
56
+ ...(ngDevMode ? [{ debugName: "#state" }] : /* istanbul ignore next */ []));
57
+ this.settings = computed(() => this.#state().settings, /* @ts-ignore */
58
+ ...(ngDevMode ? [{ debugName: "settings" }] : /* istanbul ignore next */ []));
57
59
  }
58
60
  getAppDependencies() {
59
61
  return this.appProvidersArray?.dependencies;
60
62
  }
61
63
  loadSettings() {
62
- return this.#settingsDataService.getAppSettings().pipe(tap((settings) => console.log(settings)), map((settings) => {
63
- let runtimeSettings = merge(cloneDeep(this.#environment), settings);
64
+ return this.#settingsDataService.getAppSettings().pipe(tap((settings) => {
65
+ if (isDevMode()) {
66
+ console.log(settings);
67
+ }
68
+ }), map((settings) => {
69
+ const runtimeSettings = merge(cloneDeep(this.#environment), settings);
64
70
  // Assign settings directly to the appSettings object
65
71
  Object.assign(this.tokenAppsettings, runtimeSettings);
66
72
  // Update the state
@@ -72,10 +78,10 @@ class SettingsFacadeService {
72
78
  return of(false); // Return false to indicate failure
73
79
  }));
74
80
  }
75
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: SettingsFacadeService, deps: [{ token: APP_SETTINGS }, { token: APP_PROVIDERS_ARRAY }], target: i0.ɵɵFactoryTarget.Injectable }); }
76
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: SettingsFacadeService, providedIn: 'root' }); }
81
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SettingsFacadeService, deps: [{ token: APP_SETTINGS }, { token: APP_PROVIDERS_ARRAY }], target: i0.ɵɵFactoryTarget.Injectable }); }
82
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SettingsFacadeService, providedIn: 'root' }); }
77
83
  }
78
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: SettingsFacadeService, decorators: [{
84
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SettingsFacadeService, decorators: [{
79
85
  type: Injectable,
80
86
  args: [{
81
87
  providedIn: 'root',
@@ -121,12 +127,10 @@ function provideAppSettings(config = {}) {
121
127
  provide: APP_ENVIRONMENT,
122
128
  useValue: {}
123
129
  },
124
- {
125
- provide: APP_INITIALIZER,
126
- useFactory: initializeAppSettings,
127
- deps: [SettingsFacadeService], // Add Injector to deps
128
- multi: true,
129
- },
130
+ provideAppInitializer(() => {
131
+ const appSettingsFacade = inject(SettingsFacadeService);
132
+ return initializeAppSettings(appSettingsFacade)();
133
+ }),
130
134
  {
131
135
  provide: IAUTH_SETTINGS,
132
136
  useFactory: (runtimeSettings) => runtimeSettings.auth_settings,
@@ -1 +1 @@
1
- {"version":3,"file":"indice-ng-config.mjs","sources":["../../../projects/ng-config/src/lib/tokens.ts","../../../projects/ng-config/src/lib/settings.service.ts","../../../projects/ng-config/src/lib/settings-facade.service.ts","../../../projects/ng-config/src/lib/settings-initializer.ts","../../../projects/ng-config/src/public-api.ts","../../../projects/ng-config/src/indice-ng-config.ts"],"sourcesContent":["import { InjectionToken } from \"@angular/core\";\nimport { IAppSettings, AppProvidersArray, IAuthSettings } from \"./types\";\n\nexport const APP_SETTINGS = new InjectionToken<IAppSettings>('APP_SETTINGS');\nexport const IAUTH_SETTINGS = new InjectionToken<IAuthSettings>('IAUTH_SETTINGS');\nexport const APP_ENVIRONMENT = new InjectionToken<any>('APP_ENVIRONMENT');\nexport const APP_PROVIDERS_ARRAY = new InjectionToken<AppProvidersArray>('APP_PROVIDERS_ARRAY');\nexport const APP_SETTINGS_MANIFEST_URL = new InjectionToken<string>('APP_SETTINGS_MANIFEST_URL');","import { Injectable, inject } from '@angular/core';\nimport { HttpBackend, HttpClient } from '@angular/common/http';\nimport { APP_SETTINGS_MANIFEST_URL } from './tokens';\nimport { IAppSettings } from './types';\n@Injectable({\n providedIn: 'root',\n})\nexport class SettingsDataService {\n private http: HttpClient;\n private APP_SETTINGS_MANIFEST_URL = inject(APP_SETTINGS_MANIFEST_URL);\n constructor(handler: HttpBackend) {\n this.http = new HttpClient(handler);\n }\n\n getAppSettings() {\n return this.http.get<IAppSettings>(this.APP_SETTINGS_MANIFEST_URL);\n }\n}\n\nexport type AppSettingsState = {\n settings: IAppSettings | null;\n};\n","import {\n computed,\n Inject,\n inject,\n Injectable,\n signal\n} from '@angular/core';\nimport cloneDeep from 'lodash/cloneDeep';\nimport merge from 'lodash/merge';\nimport { Observable, of } from 'rxjs';\nimport { catchError, map, tap } from 'rxjs/operators';\nimport { AppSettingsState, SettingsDataService } from './settings.service';\nimport { IAppSettings, IAuthSettings, AppProvidersArray } from './types';\nimport { APP_ENVIRONMENT, APP_SETTINGS, APP_PROVIDERS_ARRAY, IAUTH_SETTINGS } from './tokens';\n\nconst initialState: Readonly<AppSettingsState> = {\n settings: {\n isServed: false,\n api_url: '',\n api_docs: '',\n auth_settings: {} as IAuthSettings,\n culture: '',\n isTemplate: false,\n production: false,\n version: ''\n },\n};\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SettingsFacadeService {\n readonly #settingsDataService = inject(SettingsDataService);\n readonly #environment = inject(APP_ENVIRONMENT);\n\n readonly #state = signal(initialState);\n readonly settings = computed(() => this.#state().settings);\n\n constructor(\n @Inject(APP_SETTINGS) private tokenAppsettings: IAppSettings,\n @Inject(APP_PROVIDERS_ARRAY) private appProvidersArray: AppProvidersArray) { }\n\n getAppDependencies() {\n return this.appProvidersArray?.dependencies;\n }\n\n\n loadSettings(): Observable<boolean> {\n return this.#settingsDataService.getAppSettings().pipe(\n tap((settings) => console.log(settings)),\n map((settings) => {\n let runtimeSettings = merge(cloneDeep(this.#environment), settings);\n // Assign settings directly to the appSettings object\n Object.assign(this.tokenAppsettings, runtimeSettings);\n\n // Update the state\n this.#state.set({ settings: this.tokenAppsettings });\n\n return true; // Indicate successful loading\n }),\n catchError((error) => {\n // Log the error and provide fallback behavior\n console.error('Failed to load settings:', error);\n\n return of(false); // Return false to indicate failure\n })\n );\n }\n}\n","import {\n APP_INITIALIZER,\n EnvironmentProviders,\n Injector,\n makeEnvironmentProviders\n} from '@angular/core';\nimport { lastValueFrom } from 'rxjs';\nimport { SettingsFacadeService } from './settings-facade.service';\nimport { APP_ENVIRONMENT, APP_PROVIDERS_ARRAY, APP_SETTINGS, APP_SETTINGS_MANIFEST_URL, IAUTH_SETTINGS } from './tokens';\nimport { AppProvidersArray, IAppSettings } from './types';\n\nexport function initializeAppSettings(\n appSettingsFacade: SettingsFacadeService,\n) {\n return async () => {\n // Wait for settings to load\n const success = await lastValueFrom(appSettingsFacade.loadSettings());\n\n if (success) {\n const dependencies = appSettingsFacade.getAppDependencies() as any[];\n // Create a child injector with the dependencies\n Injector.create({ providers: dependencies });\n } else {\n console.error('Failed to initialize app settings.');\n throw new Error('App settings could not be loaded.');\n }\n };\n}\n\nexport function provideAppSettings(config: AppProvidersArray = {}): EnvironmentProviders {\n return makeEnvironmentProviders([\n {\n provide: APP_SETTINGS_MANIFEST_URL,\n useValue: '/app-settings.manifest.json'\n },\n {\n provide: APP_PROVIDERS_ARRAY,\n useValue: config.dependencies || []\n },\n {\n provide: APP_SETTINGS, \n useValue: {} // Provide an empty object initially\n },\n {\n provide: APP_ENVIRONMENT,\n useValue: {}\n },\n {\n provide: APP_INITIALIZER,\n useFactory: initializeAppSettings,\n deps: [SettingsFacadeService], // Add Injector to deps\n multi: true,\n },\n {\n provide: IAUTH_SETTINGS,\n useFactory: (runtimeSettings: IAppSettings) => runtimeSettings.auth_settings,\n deps: [APP_SETTINGS],\n }\n ]);\n}","/*\n * Public API Surface of ng-conf\n */\n\nexport * from './lib/types';\nexport * from './lib/tokens';\nexport * from './lib/settings.service';\nexport * from './lib/settings-initializer';\nexport * from './lib/settings-facade.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"indice-ng-config.mjs","sources":["../../../projects/ng-config/src/lib/tokens.ts","../../../projects/ng-config/src/lib/settings.service.ts","../../../projects/ng-config/src/lib/settings-facade.service.ts","../../../projects/ng-config/src/lib/settings-initializer.ts","../../../projects/ng-config/src/public-api.ts","../../../projects/ng-config/src/indice-ng-config.ts"],"sourcesContent":["import { InjectionToken } from \"@angular/core\";\nimport { IAppSettings, AppProvidersArray, IAuthSettings } from \"./types\";\n\nexport const APP_SETTINGS = new InjectionToken<IAppSettings>('APP_SETTINGS');\nexport const IAUTH_SETTINGS = new InjectionToken<IAuthSettings>('IAUTH_SETTINGS');\nexport const APP_ENVIRONMENT = new InjectionToken<any>('APP_ENVIRONMENT');\nexport const APP_PROVIDERS_ARRAY = new InjectionToken<AppProvidersArray>('APP_PROVIDERS_ARRAY');\nexport const APP_SETTINGS_MANIFEST_URL = new InjectionToken<string>('APP_SETTINGS_MANIFEST_URL');","import { Injectable, inject } from '@angular/core';\nimport { HttpBackend, HttpClient } from '@angular/common/http';\nimport { APP_SETTINGS_MANIFEST_URL } from './tokens';\nimport { IAppSettings } from './types';\n@Injectable({\n providedIn: 'root',\n})\nexport class SettingsDataService {\n private http: HttpClient;\n private APP_SETTINGS_MANIFEST_URL = inject(APP_SETTINGS_MANIFEST_URL);\n constructor(handler: HttpBackend) {\n this.http = new HttpClient(handler);\n }\n\n getAppSettings() {\n return this.http.get<IAppSettings>(this.APP_SETTINGS_MANIFEST_URL);\n }\n}\n\nexport interface AppSettingsState {\n settings: IAppSettings | null;\n}\n","import {\n computed,\n Inject,\n inject,\n Injectable,\n isDevMode,\n signal\n} from '@angular/core';\nimport cloneDeep from 'lodash/cloneDeep';\nimport merge from 'lodash/merge';\nimport { Observable, of } from 'rxjs';\nimport { catchError, map, tap } from 'rxjs/operators';\nimport { AppSettingsState, SettingsDataService } from './settings.service';\nimport { IAppSettings, IAuthSettings, AppProvidersArray } from './types';\nimport { APP_ENVIRONMENT, APP_SETTINGS, APP_PROVIDERS_ARRAY, IAUTH_SETTINGS } from './tokens';\n\nconst initialState: Readonly<AppSettingsState> = {\n settings: {\n isServed: false,\n api_url: '',\n api_docs: '',\n auth_settings: {} as IAuthSettings,\n culture: '',\n isTemplate: false,\n production: false,\n version: ''\n },\n};\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SettingsFacadeService {\n readonly #settingsDataService = inject(SettingsDataService);\n readonly #environment = inject(APP_ENVIRONMENT);\n\n readonly #state = signal(initialState);\n readonly settings = computed(() => this.#state().settings);\n\n constructor(\n @Inject(APP_SETTINGS) private tokenAppsettings: IAppSettings,\n @Inject(APP_PROVIDERS_ARRAY) private appProvidersArray: AppProvidersArray) { }\n\n getAppDependencies() {\n return this.appProvidersArray?.dependencies;\n }\n\n\n loadSettings(): Observable<boolean> {\n return this.#settingsDataService.getAppSettings().pipe(\n tap((settings) => {\n if (isDevMode()) {\n console.log(settings);\n }\n }),\n map((settings) => {\n const runtimeSettings = merge(cloneDeep(this.#environment), settings);\n // Assign settings directly to the appSettings object\n Object.assign(this.tokenAppsettings, runtimeSettings);\n\n // Update the state\n this.#state.set({ settings: this.tokenAppsettings });\n\n return true; // Indicate successful loading\n }),\n catchError((error) => {\n // Log the error and provide fallback behavior\n console.error('Failed to load settings:', error);\n return of(false); // Return false to indicate failure\n })\n );\n }\n}\n","import {\n EnvironmentProviders,\n Injector,\n inject,\n makeEnvironmentProviders,\n provideAppInitializer\n} from '@angular/core';\nimport { lastValueFrom } from 'rxjs';\nimport { SettingsFacadeService } from './settings-facade.service';\nimport { APP_ENVIRONMENT, APP_PROVIDERS_ARRAY, APP_SETTINGS, APP_SETTINGS_MANIFEST_URL, IAUTH_SETTINGS } from './tokens';\nimport { AppProvidersArray, IAppSettings } from './types';\n\nexport function initializeAppSettings(\n appSettingsFacade: SettingsFacadeService,\n) {\n return async () => {\n // Wait for settings to load\n const success = await lastValueFrom(appSettingsFacade.loadSettings());\n\n if (success) {\n const dependencies = appSettingsFacade.getAppDependencies() as any[];\n // Create a child injector with the dependencies\n Injector.create({ providers: dependencies });\n } else {\n console.error('Failed to initialize app settings.');\n throw new Error('App settings could not be loaded.');\n }\n };\n}\n\nexport function provideAppSettings(config: AppProvidersArray = {}): EnvironmentProviders {\n return makeEnvironmentProviders([\n {\n provide: APP_SETTINGS_MANIFEST_URL,\n useValue: '/app-settings.manifest.json'\n },\n {\n provide: APP_PROVIDERS_ARRAY,\n useValue: config.dependencies || []\n },\n {\n provide: APP_SETTINGS, \n useValue: {} // Provide an empty object initially\n },\n {\n provide: APP_ENVIRONMENT,\n useValue: {}\n },\n provideAppInitializer(() => {\n const appSettingsFacade = inject(SettingsFacadeService);\n return initializeAppSettings(appSettingsFacade)();\n }),\n {\n provide: IAUTH_SETTINGS,\n useFactory: (runtimeSettings: IAppSettings) => runtimeSettings.auth_settings,\n deps: [APP_SETTINGS],\n }\n ]);\n}","/*\n * Public API Surface of ng-conf\n */\n\nexport * from './lib/types';\nexport * from './lib/tokens';\nexport * from './lib/settings.service';\nexport * from './lib/settings-initializer';\nexport * from './lib/settings-facade.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@indice/ng-config",
3
- "version": "0.5.0",
3
+ "version": "0.6.0-beta.0",
4
4
  "description": "Indice dynamic runtime configuration provider for applications",
5
5
  "repository": {
6
6
  "type": "git",
@@ -21,19 +21,20 @@
21
21
  "tslib": "^2.3.0"
22
22
  },
23
23
  "peerDependencies": {
24
- "@angular/common": ">=20.0.0",
25
- "@angular/core": ">=20.0.0"
24
+ "@angular/common": ">=22.0.0",
25
+ "@angular/core": ">=22.0.0"
26
26
  },
27
27
  "sideEffects": false,
28
28
  "module": "fesm2022/indice-ng-config.mjs",
29
- "typings": "index.d.ts",
29
+ "typings": "types/indice-ng-config.d.ts",
30
30
  "exports": {
31
31
  "./package.json": {
32
32
  "default": "./package.json"
33
33
  },
34
34
  ".": {
35
- "types": "./index.d.ts",
35
+ "types": "./types/indice-ng-config.d.ts",
36
36
  "default": "./fesm2022/indice-ng-config.mjs"
37
37
  }
38
- }
38
+ },
39
+ "type": "module"
39
40
  }
@@ -50,9 +50,9 @@ declare class SettingsDataService {
50
50
  static ɵfac: i0.ɵɵFactoryDeclaration<SettingsDataService, never>;
51
51
  static ɵprov: i0.ɵɵInjectableDeclaration<SettingsDataService>;
52
52
  }
53
- type AppSettingsState = {
53
+ interface AppSettingsState {
54
54
  settings: IAppSettings | null;
55
- };
55
+ }
56
56
 
57
57
  declare class SettingsFacadeService {
58
58
  #private;