@acontplus/ng-config 1.0.6 → 1.1.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.
package/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # @acontplus/ng-config
2
2
 
3
- Angular configuration library for AcontPlus applications, providing environment
4
- configuration, authentication constants, and app configuration services.
3
+ Angular configuration library providing dependency injection tokens, repository
4
+ interfaces, and configuration constants for AcontPlus applications.
5
5
 
6
6
  ## Installation
7
7
 
@@ -11,24 +11,36 @@ npm install @acontplus/ng-config
11
11
 
12
12
  ## Features
13
13
 
14
- - **Environment Token**: Type-safe environment injection token
15
- - **App Configuration Service**: Centralized application configuration
16
- management
17
- - **Authentication Constants**: Predefined API endpoint constants
18
- - **Angular Integration**: Seamless dependency injection integration
19
- - **TypeScript Support**: Full type safety with comprehensive definitions
14
+ - **Injection Tokens**: Type-safe DI tokens for environment, core config, and
15
+ authentication
16
+ - **Repository Interfaces**: Base repository patterns and auth token repository
17
+ contracts
18
+ - **Configuration Constants**: Authentication and application configuration
19
+ constants
20
+ - **Base Repository**: Abstract base repository with common CRUD operations
21
+ - **TypeScript Support**: Full type safety with comprehensive interfaces
20
22
 
21
23
  ## Quick Start
22
24
 
23
25
  ### 1. Provide Environment Configuration
24
26
 
25
27
  ```typescript
26
- // main.ts or app.config.ts
27
- import { bootstrapApplication } from '@angular/platform-browser';
28
+ // app.config.ts
29
+ import { ApplicationConfig } from '@angular/core';
28
30
  import { ENVIRONMENT } from '@acontplus/ng-config';
29
31
  import { Environment } from '@acontplus/core';
32
+ import { environment } from './environments/environment';
33
+
34
+ export const appConfig: ApplicationConfig = {
35
+ providers: [{ provide: ENVIRONMENT, useValue: environment }],
36
+ };
37
+ ```
30
38
 
31
- const environment: Environment = {
39
+ ```typescript
40
+ // environments/environment.ts
41
+ import { Environment } from '@acontplus/core';
42
+
43
+ export const environment: Environment = {
32
44
  isProduction: false,
33
45
  apiBaseUrl: 'http://localhost:3000/api/',
34
46
  tokenKey: 'access_token',
@@ -36,30 +48,25 @@ const environment: Environment = {
36
48
  clientId: 'my-app',
37
49
  loginRoute: 'login',
38
50
  };
39
-
40
- bootstrapApplication(AppComponent, {
41
- providers: [
42
- { provide: ENVIRONMENT, useValue: environment },
43
- // other providers
44
- ],
45
- });
46
51
  ```
47
52
 
48
- ### 2. Use App Configuration Service
53
+ ### 2. Inject and Use Environment
49
54
 
50
55
  ```typescript
51
- import { AppConfigService } from '@acontplus/ng-config';
52
-
53
- @Component({
54
- selector: 'app-dashboard',
55
- template: `
56
- <div>API URL: {{ config.apiUrl }}</div>
57
- <div>Production: {{ config.production }}</div>
58
- <div>Logging: {{ config.enableLogging }}</div>
59
- `,
60
- })
61
- export class DashboardComponent {
62
- config = inject(AppConfigService);
56
+ import { inject, Injectable } from '@angular/core';
57
+ import { ENVIRONMENT } from '@acontplus/ng-config';
58
+
59
+ @Injectable({ providedIn: 'root' })
60
+ export class ApiService {
61
+ private environment = inject(ENVIRONMENT);
62
+
63
+ getApiUrl(): string {
64
+ return this.environment.apiBaseUrl;
65
+ }
66
+
67
+ isProduction(): boolean {
68
+ return this.environment.isProduction;
69
+ }
63
70
  }
64
71
  ```
65
72
 
@@ -67,171 +74,221 @@ export class DashboardComponent {
67
74
 
68
75
  ### ENVIRONMENT Token
69
76
 
70
- Injection token for environment configuration:
77
+ Injection token for environment configuration with default factory.
78
+
79
+ **Type:** `InjectionToken<Environment>`
80
+
81
+ **Default Value:**
71
82
 
72
83
  ```typescript
84
+ {
85
+ isProduction: false,
86
+ apiBaseUrl: 'http://localhost:4200/api/',
87
+ tokenKey: 'access_token',
88
+ refreshTokenKey: 'refresh_token',
89
+ clientId: 'angular-app',
90
+ loginRoute: 'auth',
91
+ }
92
+ ```
93
+
94
+ **Environment Interface:**
95
+
96
+ ```typescript
97
+ interface Environment {
98
+ apiBaseUrl: string; // Base URL for API requests
99
+ isProduction: boolean; // Production mode flag
100
+ tokenKey: string; // Storage key for access token
101
+ refreshTokenKey: string; // Storage key for refresh token
102
+ clientId: string; // Application client identifier
103
+ loginRoute: string; // Route path for login page
104
+ }
105
+ ```
106
+
107
+ **Usage:**
108
+
109
+ ```typescript
110
+ import { inject } from '@angular/core';
73
111
  import { ENVIRONMENT } from '@acontplus/ng-config';
74
- import { Environment } from '@acontplus/core';
75
112
 
76
- @Injectable()
77
- export class ApiService {
78
- private environment = inject(ENVIRONMENT);
113
+ @Injectable({ providedIn: 'root' })
114
+ export class AuthService {
115
+ private env = inject(ENVIRONMENT);
79
116
 
80
- getApiUrl(): string {
81
- return this.environment.apiBaseUrl;
117
+ getTokenKey(): string {
118
+ return this.env.tokenKey;
82
119
  }
83
120
 
84
- isProduction(): boolean {
85
- return this.environment.isProduction;
121
+ getLoginRoute(): string {
122
+ return this.env.loginRoute;
86
123
  }
87
124
  }
88
125
  ```
89
126
 
90
- ### AppConfigService
127
+ ### CORE_CONFIG Token
128
+
129
+ Injection token for core application configuration.
91
130
 
92
- Centralized configuration service:
131
+ **Type:** `InjectionToken<CoreConfig>`
132
+
133
+ **Usage:**
93
134
 
94
135
  ```typescript
95
- interface IAppConfig {
96
- apiUrl: string;
97
- apiTimeout: number;
98
- enableLogging: boolean;
99
- production: boolean;
100
- }
136
+ import { inject } from '@angular/core';
137
+ import { CORE_CONFIG } from '@acontplus/ng-config';
101
138
 
102
139
  @Injectable({ providedIn: 'root' })
103
- export class AppConfigService implements IAppConfig {
104
- get apiUrl(): string;
105
- get apiTimeout(): number;
106
- get enableLogging(): boolean;
107
- get production(): boolean;
140
+ export class ConfigService {
141
+ private config = inject(CORE_CONFIG);
142
+
143
+ getApiTimeout(): number {
144
+ return this.config.apiTimeout;
145
+ }
108
146
  }
109
147
  ```
110
148
 
111
- **Usage Examples:**
149
+ ### AUTH_TOKEN Token
150
+
151
+ Injection token for authentication token configuration.
152
+
153
+ **Type:** `InjectionToken<string>`
154
+
155
+ **Usage:**
112
156
 
113
157
  ```typescript
114
- // HTTP Service Configuration
115
- @Injectable()
116
- export class HttpService {
117
- private config = inject(AppConfigService);
118
-
119
- private httpOptions = {
120
- timeout: this.config.apiTimeout,
121
- baseURL: this.config.apiUrl
122
- };
123
- }
158
+ import { inject } from '@angular/core';
159
+ import { AUTH_TOKEN } from '@acontplus/ng-config';
124
160
 
125
- // Conditional Logging
126
- @Injectable()
127
- export class LoggerService {
128
- private config = inject(AppConfigService);
161
+ @Injectable({ providedIn: 'root' })
162
+ export class TokenService {
163
+ private tokenKey = inject(AUTH_TOKEN);
129
164
 
130
- log(message: string): void {
131
- if (this.config.enableLogging) {
132
- console.log(message);
133
- }
165
+ getStorageKey(): string {
166
+ return this.tokenKey;
134
167
  }
135
168
  }
169
+ ```
136
170
 
137
- // Environment-based Features
138
- @Component({...})
139
- export class DebugPanelComponent {
140
- private config = inject(AppConfigService);
171
+ ## Repository Interfaces
141
172
 
142
- showDebugInfo = !this.config.production;
173
+ ### AuthTokenRepository
174
+
175
+ Interface for authentication token storage and retrieval.
176
+
177
+ ```typescript
178
+ export interface AuthTokenRepository {
179
+ getToken(): string | null;
180
+ setToken(token: string): void;
181
+ removeToken(): void;
182
+ getRefreshToken(): string | null;
183
+ setRefreshToken(token: string): void;
184
+ removeRefreshToken(): void;
143
185
  }
144
186
  ```
145
187
 
146
- ### AUTH_API Constants
147
-
148
- Predefined authentication API endpoints:
188
+ **Usage:**
149
189
 
150
190
  ```typescript
151
- import { AUTH_API } from '@acontplus/ng-config';
191
+ import { AuthTokenRepository } from '@acontplus/ng-config';
152
192
 
153
- @Injectable()
154
- export class AuthService {
155
- private baseUrl = inject(AppConfigService).apiUrl;
193
+ @Injectable({ providedIn: 'root' })
194
+ export class LocalStorageTokenRepository implements AuthTokenRepository {
195
+ getToken(): string | null {
196
+ return localStorage.getItem('access_token');
197
+ }
198
+
199
+ setToken(token: string): void {
200
+ localStorage.setItem('access_token', token);
201
+ }
156
202
 
157
- login(credentials: LoginCredentials): Observable<AuthResponse> {
158
- return this.http.post<AuthResponse>(
159
- `${this.baseUrl}${AUTH_API.AUTH}login`,
160
- credentials,
161
- );
203
+ removeToken(): void {
204
+ localStorage.removeItem('access_token');
162
205
  }
163
206
 
164
- logout(): Observable<void> {
165
- return this.http.post<void>(`${this.baseUrl}${AUTH_API.AUTH}logout`, {});
207
+ getRefreshToken(): string | null {
208
+ return localStorage.getItem('refresh_token');
209
+ }
210
+
211
+ setRefreshToken(token: string): void {
212
+ localStorage.setItem('refresh_token', token);
213
+ }
214
+
215
+ removeRefreshToken(): void {
216
+ localStorage.removeItem('refresh_token');
166
217
  }
167
218
  }
168
219
  ```
169
220
 
170
- ## Configuration Patterns
221
+ ### BaseRepository
171
222
 
172
- ### Multi-Environment Setup
223
+ Abstract base repository with common CRUD operations.
173
224
 
174
225
  ```typescript
175
- // environments/environment.ts
176
- export const environment: Environment = {
177
- isProduction: false,
178
- apiBaseUrl: 'http://localhost:3000/api/',
179
- tokenKey: 'dev_token',
180
- refreshTokenKey: 'dev_refresh_token',
181
- clientId: 'dev-app',
182
- loginRoute: 'auth',
183
- };
184
-
185
- // environments/environment.prod.ts
186
- export const environment: Environment = {
187
- isProduction: true,
188
- apiBaseUrl: 'https://api.myapp.com/',
189
- tokenKey: 'prod_token',
190
- refreshTokenKey: 'prod_refresh_token',
191
- clientId: 'prod-app',
192
- loginRoute: 'login',
193
- };
226
+ export abstract class BaseRepository<T, ID> {
227
+ abstract findById(id: ID): Promise<T | null>;
228
+ abstract findAll(): Promise<T[]>;
229
+ abstract create(entity: Omit<T, 'id'>): Promise<T>;
230
+ abstract update(id: ID, entity: Partial<T>): Promise<T>;
231
+ abstract delete(id: ID): Promise<void>;
232
+ }
194
233
  ```
195
234
 
196
- ### Runtime Configuration
235
+ **Usage:**
197
236
 
198
237
  ```typescript
199
- // app.config.ts
200
- export function createAppConfig(): ApplicationConfig {
201
- return {
202
- providers: [
203
- {
204
- provide: ENVIRONMENT,
205
- useFactory: () => {
206
- // Load from external config or detect environment
207
- const isDev = window.location.hostname === 'localhost';
208
- return isDev ? devEnvironment : prodEnvironment;
209
- },
210
- },
211
- ],
212
- };
238
+ import { BaseRepository } from '@acontplus/ng-config';
239
+ import { Injectable } from '@angular/core';
240
+ import { HttpClient } from '@angular/common/http';
241
+
242
+ interface User {
243
+ id: number;
244
+ name: string;
245
+ email: string;
213
246
  }
214
- ```
215
247
 
216
- ### Feature Flags Integration
248
+ @Injectable({ providedIn: 'root' })
249
+ export class UserRepository extends BaseRepository<User, number> {
250
+ constructor(private http: HttpClient) {
251
+ super();
252
+ }
253
+
254
+ async findById(id: number): Promise<User | null> {
255
+ return this.http.get<User>(`/api/users/${id}`).toPromise() || null;
256
+ }
257
+
258
+ async findAll(): Promise<User[]> {
259
+ return this.http.get<User[]>('/api/users').toPromise() || [];
260
+ }
217
261
 
218
- ```typescript
219
- @Injectable()
220
- export class FeatureService {
221
- private config = inject(AppConfigService);
262
+ async create(user: Omit<User, 'id'>): Promise<User> {
263
+ return this.http
264
+ .post<User>('/api/users', user)
265
+ .toPromise() as Promise<User>;
266
+ }
222
267
 
223
- isFeatureEnabled(feature: string): boolean {
224
- // Use configuration to enable/disable features
225
- return !this.config.production || this.isFeatureInProd(feature);
268
+ async update(id: number, user: Partial<User>): Promise<User> {
269
+ return this.http
270
+ .put<User>(`/api/users/${id}`, user)
271
+ .toPromise() as Promise<User>;
226
272
  }
227
273
 
228
- private isFeatureInProd(feature: string): boolean {
229
- // Production feature logic
230
- return ['core-features', 'stable-features'].includes(feature);
274
+ async delete(id: number): Promise<void> {
275
+ await this.http.delete(`/api/users/${id}`).toPromise();
231
276
  }
232
277
  }
233
278
  ```
234
279
 
235
- ## Running unit tests
280
+ ## Configuration Constants
281
+
282
+ ### Authentication Constants
283
+
284
+ ```typescript
285
+ import { AUTH_CONSTANTS, CONFIG_CONSTANTS } from '@acontplus/ng-config';
286
+
287
+ // Authentication configuration
288
+ const tokenExpiry = AUTH_CONSTANTS.TOKEN_EXPIRY_TIME;
289
+ const refreshThreshold = AUTH_CONSTANTS.REFRESH_THRESHOLD;
236
290
 
237
- Run `nx test ng-config` to execute the unit tests.
291
+ // Application configuration
292
+ const apiTimeout = CONFIG_CONSTANTS.DEFAULT_API_TIMEOUT;
293
+ const retryAttempts = CONFIG_CONSTANTS.MAX_RETRY_ATTEMPTS;
294
+ ```
@@ -1,13 +1,38 @@
1
- import * as i0 from '@angular/core';
2
- import { InjectionToken, inject, Injectable } from '@angular/core';
1
+ import { InjectionToken } from '@angular/core';
3
2
 
4
- // src/lib/constants/auth.constants.ts
3
+ // src/lib/constants/auth.app.constants.ts
5
4
  const AUTH_API = {
6
5
  AUTH: 'auth/',
7
6
  };
8
7
 
8
+ const DEFAULT_CONFIG = {
9
+ apiBaseUrl: '',
10
+ apiTimeout: 30000,
11
+ retryAttempts: 2,
12
+ retryDelay: 1000,
13
+ enableCorrelationTracking: true,
14
+ enableRequestLogging: false,
15
+ enableErrorLogging: true,
16
+ enableToastNotifications: true,
17
+ includeAuthToken: true,
18
+ authTokenHeader: 'Authorization',
19
+ enableMultiTenancy: true,
20
+ tenantIdHeader: 'Tenant-Id',
21
+ logLevel: 'info',
22
+ enableConsoleLogging: true,
23
+ customHeaders: {},
24
+ excludeUrls: [],
25
+ excludeMethods: [],
26
+ };
27
+
9
28
  // src/lib/constants/index.ts
10
29
 
30
+ const AUTH_TOKEN = new InjectionToken('AUTH_TOKEN_PROVIDER');
31
+
32
+ const CORE_CONFIG = new InjectionToken('CORE_CONFIG', {
33
+ factory: () => DEFAULT_CONFIG,
34
+ });
35
+
11
36
  /**
12
37
  * @const ENVIRONMENT
13
38
  * Injection token for the environment interface to be provided by the applications.
@@ -23,32 +48,9 @@ const ENVIRONMENT = new InjectionToken('ENVIRONMENT', {
23
48
  }),
24
49
  });
25
50
 
26
- class AppConfigService {
27
- environment = inject(ENVIRONMENT);
28
- defaultTimeout = 30000; // Default timeout
29
- get apiUrl() {
30
- return this.environment.apiBaseUrl;
31
- }
32
- get apiTimeout() {
33
- return this.defaultTimeout;
34
- }
35
- get enableLogging() {
36
- return !this.environment.isProduction;
37
- }
38
- get production() {
39
- return this.environment.isProduction;
40
- }
41
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: AppConfigService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
42
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: AppConfigService, providedIn: 'root' });
43
- }
44
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: AppConfigService, decorators: [{
45
- type: Injectable,
46
- args: [{ providedIn: 'root' }]
47
- }] });
48
-
49
51
  /**
50
52
  * Generated bundle index. Do not edit.
51
53
  */
52
54
 
53
- export { AUTH_API, AppConfigService, ENVIRONMENT };
55
+ export { AUTH_API, AUTH_TOKEN, CORE_CONFIG, DEFAULT_CONFIG, ENVIRONMENT };
54
56
  //# sourceMappingURL=acontplus-ng-config.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"acontplus-ng-config.mjs","sources":["../tmp-esm2022/lib/constants/auth.constants.js","../tmp-esm2022/lib/constants/index.js","../tmp-esm2022/lib/environment.token.js","../tmp-esm2022/lib/services/app-config.service.js","../tmp-esm2022/acontplus-ng-config.js"],"sourcesContent":["// src/lib/constants/auth.constants.ts\nexport const AUTH_API = {\n AUTH: 'auth/',\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5jb25zdGFudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1jb25maWcvc3JjL2xpYi9jb25zdGFudHMvYXV0aC5jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsc0NBQXNDO0FBQ3RDLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRztJQUN0QixJQUFJLEVBQUUsT0FBTztDQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzcmMvbGliL2NvbnN0YW50cy9hdXRoLmNvbnN0YW50cy50c1xuZXhwb3J0IGNvbnN0IEFVVEhfQVBJID0ge1xuICBBVVRIOiAnYXV0aC8nLFxufSBhcyBjb25zdDtcbiJdfQ==","// src/lib/constants/index.ts\nexport * from './auth.constants';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1jb25maWcvc3JjL2xpYi9jb25zdGFudHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNkJBQTZCO0FBQzdCLGNBQWMsa0JBQWtCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzcmMvbGliL2NvbnN0YW50cy9pbmRleC50c1xuZXhwb3J0ICogZnJvbSAnLi9hdXRoLmNvbnN0YW50cyc7XG4iXX0=","import { InjectionToken } from '@angular/core';\n/**\n * @const ENVIRONMENT\n * Injection token for the environment interface to be provided by the applications.\n */\nexport const ENVIRONMENT = new InjectionToken('ENVIRONMENT', {\n factory: () => ({\n isProduction: false,\n apiBaseUrl: 'http://localhost:4200/api/',\n tokenKey: 'access_token',\n refreshTokenKey: 'refresh_token',\n clientId: 'angular-app',\n loginRoute: 'auth',\n }),\n});\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQudG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1jb25maWcvc3JjL2xpYi9lbnZpcm9ubWVudC50b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRy9DOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxJQUFJLGNBQWMsQ0FBYyxhQUFhLEVBQUU7SUFDeEUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDZCxZQUFZLEVBQUUsS0FBSztRQUNuQixVQUFVLEVBQUUsNEJBQTRCO1FBQ3hDLFFBQVEsRUFBRSxjQUFjO1FBQ3hCLGVBQWUsRUFBRSxlQUFlO1FBQ2hDLFFBQVEsRUFBRSxhQUFhO1FBQ3ZCLFVBQVUsRUFBRSxNQUFNO0tBQ25CLENBQUM7Q0FDSCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRW52aXJvbm1lbnQgfSBmcm9tICdAYWNvbnRwbHVzL2NvcmUnO1xuXG4vKipcbiAqIEBjb25zdCBFTlZJUk9OTUVOVFxuICogSW5qZWN0aW9uIHRva2VuIGZvciB0aGUgZW52aXJvbm1lbnQgaW50ZXJmYWNlIHRvIGJlIHByb3ZpZGVkIGJ5IHRoZSBhcHBsaWNhdGlvbnMuXG4gKi9cbmV4cG9ydCBjb25zdCBFTlZJUk9OTUVOVCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxFbnZpcm9ubWVudD4oJ0VOVklST05NRU5UJywge1xuICBmYWN0b3J5OiAoKSA9PiAoe1xuICAgIGlzUHJvZHVjdGlvbjogZmFsc2UsXG4gICAgYXBpQmFzZVVybDogJ2h0dHA6Ly9sb2NhbGhvc3Q6NDIwMC9hcGkvJyxcbiAgICB0b2tlbktleTogJ2FjY2Vzc190b2tlbicsXG4gICAgcmVmcmVzaFRva2VuS2V5OiAncmVmcmVzaF90b2tlbicsXG4gICAgY2xpZW50SWQ6ICdhbmd1bGFyLWFwcCcsXG4gICAgbG9naW5Sb3V0ZTogJ2F1dGgnLFxuICB9KSxcbn0pO1xuIl19","import { Injectable, inject } from '@angular/core';\nimport { ENVIRONMENT } from '../environment.token';\nimport * as i0 from \"@angular/core\";\nexport class AppConfigService {\n environment = inject(ENVIRONMENT);\n defaultTimeout = 30000; // Default timeout\n get apiUrl() {\n return this.environment.apiBaseUrl;\n }\n get apiTimeout() {\n return this.defaultTimeout;\n }\n get enableLogging() {\n return !this.environment.isProduction;\n }\n get production() {\n return this.environment.isProduction;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: AppConfigService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: AppConfigService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: AppConfigService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWNvbmZpZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctY29uZmlnL3NyYy9saWIvc2VydmljZXMvYXBwLWNvbmZpZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUFVbkQsTUFBTSxPQUFPLGdCQUFnQjtJQUNuQixXQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3pCLGNBQWMsR0FBRyxLQUFLLENBQUMsQ0FBQyxrQkFBa0I7SUFFM0QsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUM7SUFDeEMsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUM7SUFDdkMsQ0FBQzt1R0FsQlUsZ0JBQWdCOzJHQUFoQixnQkFBZ0IsY0FESCxNQUFNOzsyRkFDbkIsZ0JBQWdCO2tCQUQ1QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRU5WSVJPTk1FTlQgfSBmcm9tICcuLi9lbnZpcm9ubWVudC50b2tlbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUFwcENvbmZpZyB7XG4gIGFwaVVybDogc3RyaW5nO1xuICBhcGlUaW1lb3V0OiBudW1iZXI7XG4gIGVuYWJsZUxvZ2dpbmc6IGJvb2xlYW47XG4gIHByb2R1Y3Rpb246IGJvb2xlYW47XG59XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQXBwQ29uZmlnU2VydmljZSBpbXBsZW1lbnRzIElBcHBDb25maWcge1xuICBwcml2YXRlIGVudmlyb25tZW50ID0gaW5qZWN0KEVOVklST05NRU5UKTtcbiAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0VGltZW91dCA9IDMwMDAwOyAvLyBEZWZhdWx0IHRpbWVvdXRcblxuICBnZXQgYXBpVXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZW52aXJvbm1lbnQuYXBpQmFzZVVybDtcbiAgfVxuXG4gIGdldCBhcGlUaW1lb3V0KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZGVmYXVsdFRpbWVvdXQ7XG4gIH1cblxuICBnZXQgZW5hYmxlTG9nZ2luZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuZW52aXJvbm1lbnQuaXNQcm9kdWN0aW9uO1xuICB9XG5cbiAgZ2V0IHByb2R1Y3Rpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZW52aXJvbm1lbnQuaXNQcm9kdWN0aW9uO1xuICB9XG59XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvbnRwbHVzLW5nLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWNvbmZpZy9zcmMvYWNvbnRwbHVzLW5nLWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":";;;AAAA;AACY,MAAC,QAAQ,GAAG;AACxB,IAAI,IAAI,EAAE,OAAO;AACjB;;ACHA;;ACCA;AACA;AACA;AACA;AACY,MAAC,WAAW,GAAG,IAAI,cAAc,CAAC,aAAa,EAAE;AAC7D,IAAI,OAAO,EAAE,OAAO;AACpB,QAAQ,YAAY,EAAE,KAAK;AAC3B,QAAQ,UAAU,EAAE,4BAA4B;AAChD,QAAQ,QAAQ,EAAE,cAAc;AAChC,QAAQ,eAAe,EAAE,eAAe;AACxC,QAAQ,QAAQ,EAAE,aAAa;AAC/B,QAAQ,UAAU,EAAE,MAAM;AAC1B,KAAK,CAAC;AACN,CAAC;;ACXM,MAAM,gBAAgB,CAAC;AAC9B,IAAI,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACrC,IAAI,cAAc,GAAG,KAAK,CAAC;AAC3B,IAAI,IAAI,MAAM,GAAG;AACjB,QAAQ,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU;AAC1C,IAAI;AACJ,IAAI,IAAI,UAAU,GAAG;AACrB,QAAQ,OAAO,IAAI,CAAC,cAAc;AAClC,IAAI;AACJ,IAAI,IAAI,aAAa,GAAG;AACxB,QAAQ,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY;AAC7C,IAAI;AACJ,IAAI,IAAI,UAAU,GAAG;AACrB,QAAQ,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY;AAC5C,IAAI;AACJ,IAAI,OAAO,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC;AAC3K,IAAI,OAAO,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;AAClJ;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,UAAU,EAAE,CAAC;AAC1H,YAAY,IAAI,EAAE,UAAU;AAC5B,YAAY,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE;AACzC,SAAS,CAAC,EAAE,CAAC;;ACxBb;AACA;AACA;;;;"}
1
+ {"version":3,"file":"acontplus-ng-config.mjs","sources":["../tmp-esm2022/lib/constants/auth.constants.js","../tmp-esm2022/lib/constants/config.constants.js","../tmp-esm2022/lib/constants/index.js","../tmp-esm2022/lib/tokens/auth-token.js","../tmp-esm2022/lib/tokens/core-config-token.js","../tmp-esm2022/lib/tokens/environment-token.js","../tmp-esm2022/acontplus-ng-config.js"],"sourcesContent":["// src/lib/constants/auth.app.constants.ts\nexport const AUTH_API = {\n AUTH: 'auth/',\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5jb25zdGFudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1jb25maWcvc3JjL2xpYi9jb25zdGFudHMvYXV0aC5jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMENBQTBDO0FBQzFDLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRztJQUN0QixJQUFJLEVBQUUsT0FBTztDQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzcmMvbGliL2NvbnN0YW50cy9hdXRoLmFwcC5jb25zdGFudHMudHNcbmV4cG9ydCBjb25zdCBBVVRIX0FQSSA9IHtcbiAgQVVUSDogJ2F1dGgvJyxcbn0gYXMgY29uc3Q7XG4iXX0=","export const DEFAULT_CONFIG = {\n apiBaseUrl: '',\n apiTimeout: 30000,\n retryAttempts: 2,\n retryDelay: 1000,\n enableCorrelationTracking: true,\n enableRequestLogging: false,\n enableErrorLogging: true,\n enableToastNotifications: true,\n includeAuthToken: true,\n authTokenHeader: 'Authorization',\n enableMultiTenancy: true,\n tenantIdHeader: 'Tenant-Id',\n logLevel: 'info',\n enableConsoleLogging: true,\n customHeaders: {},\n excludeUrls: [],\n excludeMethods: [],\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmNvbnN0YW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWNvbmZpZy9zcmMvbGliL2NvbnN0YW50cy9jb25maWcuY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBeUI7SUFDbEQsVUFBVSxFQUFFLEVBQUU7SUFDZCxVQUFVLEVBQUUsS0FBSztJQUNqQixhQUFhLEVBQUUsQ0FBQztJQUNoQixVQUFVLEVBQUUsSUFBSTtJQUNoQix5QkFBeUIsRUFBRSxJQUFJO0lBQy9CLG9CQUFvQixFQUFFLEtBQUs7SUFDM0Isa0JBQWtCLEVBQUUsSUFBSTtJQUN4Qix3QkFBd0IsRUFBRSxJQUFJO0lBQzlCLGdCQUFnQixFQUFFLElBQUk7SUFDdEIsZUFBZSxFQUFFLGVBQWU7SUFDaEMsa0JBQWtCLEVBQUUsSUFBSTtJQUN4QixjQUFjLEVBQUUsV0FBVztJQUMzQixRQUFRLEVBQUUsTUFBTTtJQUNoQixvQkFBb0IsRUFBRSxJQUFJO0lBQzFCLGFBQWEsRUFBRSxFQUFFO0lBQ2pCLFdBQVcsRUFBRSxFQUFFO0lBQ2YsY0FBYyxFQUFFLEVBQUU7Q0FDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvcmVDb25maWcgfSBmcm9tICdAYWNvbnRwbHVzL2NvcmUnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9DT05GSUc6IFJlcXVpcmVkPENvcmVDb25maWc+ID0ge1xuICBhcGlCYXNlVXJsOiAnJyxcbiAgYXBpVGltZW91dDogMzAwMDAsXG4gIHJldHJ5QXR0ZW1wdHM6IDIsXG4gIHJldHJ5RGVsYXk6IDEwMDAsXG4gIGVuYWJsZUNvcnJlbGF0aW9uVHJhY2tpbmc6IHRydWUsXG4gIGVuYWJsZVJlcXVlc3RMb2dnaW5nOiBmYWxzZSxcbiAgZW5hYmxlRXJyb3JMb2dnaW5nOiB0cnVlLFxuICBlbmFibGVUb2FzdE5vdGlmaWNhdGlvbnM6IHRydWUsXG4gIGluY2x1ZGVBdXRoVG9rZW46IHRydWUsXG4gIGF1dGhUb2tlbkhlYWRlcjogJ0F1dGhvcml6YXRpb24nLFxuICBlbmFibGVNdWx0aVRlbmFuY3k6IHRydWUsXG4gIHRlbmFudElkSGVhZGVyOiAnVGVuYW50LUlkJyxcbiAgbG9nTGV2ZWw6ICdpbmZvJyxcbiAgZW5hYmxlQ29uc29sZUxvZ2dpbmc6IHRydWUsXG4gIGN1c3RvbUhlYWRlcnM6IHt9LFxuICBleGNsdWRlVXJsczogW10sXG4gIGV4Y2x1ZGVNZXRob2RzOiBbXSxcbn07XG4iXX0=","// src/lib/constants/index.ts\nexport * from './auth.constants';\nexport * from './config.constants';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1jb25maWcvc3JjL2xpYi9jb25zdGFudHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNkJBQTZCO0FBQzdCLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHNyYy9saWIvY29uc3RhbnRzL2luZGV4LnRzXG5leHBvcnQgKiBmcm9tICcuL2F1dGguY29uc3RhbnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uZmlnLmNvbnN0YW50cyc7XG4iXX0=","import { InjectionToken } from '@angular/core';\nexport const AUTH_TOKEN = new InjectionToken('AUTH_TOKEN_PROVIDER');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC10b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWNvbmZpZy9zcmMvbGliL3Rva2Vucy9hdXRoLXRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0MsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLElBQUksY0FBYyxDQUFzQixxQkFBcUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEF1dGhUb2tlblJlcG9zaXRvcnkgfSBmcm9tICcuLi9yZXBvc2l0b3JpZXMnO1xuXG5leHBvcnQgY29uc3QgQVVUSF9UT0tFTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxBdXRoVG9rZW5SZXBvc2l0b3J5PignQVVUSF9UT0tFTl9QUk9WSURFUicpO1xuIl19","import { InjectionToken } from '@angular/core';\nimport { DEFAULT_CONFIG } from '../constants';\nexport const CORE_CONFIG = new InjectionToken('CORE_CONFIG', {\n factory: () => DEFAULT_CONFIG,\n});\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1jb25maWctdG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1jb25maWcvc3JjL2xpYi90b2tlbnMvY29yZS1jb25maWctdG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTlDLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxJQUFJLGNBQWMsQ0FBYSxhQUFhLEVBQUU7SUFDdkUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLGNBQWM7Q0FDOUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvcmVDb25maWcgfSBmcm9tICdAYWNvbnRwbHVzL2NvcmUnO1xuaW1wb3J0IHsgREVGQVVMVF9DT05GSUcgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuXG5leHBvcnQgY29uc3QgQ09SRV9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48Q29yZUNvbmZpZz4oJ0NPUkVfQ09ORklHJywge1xuICBmYWN0b3J5OiAoKSA9PiBERUZBVUxUX0NPTkZJRyxcbn0pO1xuIl19","import { InjectionToken } from '@angular/core';\n/**\n * @const ENVIRONMENT\n * Injection token for the environment interface to be provided by the applications.\n */\nexport const ENVIRONMENT = new InjectionToken('ENVIRONMENT', {\n factory: () => ({\n isProduction: false,\n apiBaseUrl: 'http://localhost:4200/api/',\n tokenKey: 'access_token',\n refreshTokenKey: 'refresh_token',\n clientId: 'angular-app',\n loginRoute: 'auth',\n }),\n});\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQtdG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1jb25maWcvc3JjL2xpYi90b2tlbnMvZW52aXJvbm1lbnQtdG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcvQzs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsSUFBSSxjQUFjLENBQWMsYUFBYSxFQUFFO0lBQ3hFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ2QsWUFBWSxFQUFFLEtBQUs7UUFDbkIsVUFBVSxFQUFFLDRCQUE0QjtRQUN4QyxRQUFRLEVBQUUsY0FBYztRQUN4QixlQUFlLEVBQUUsZUFBZTtRQUNoQyxRQUFRLEVBQUUsYUFBYTtRQUN2QixVQUFVLEVBQUUsTUFBTTtLQUNuQixDQUFDO0NBQ0gsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEVudmlyb25tZW50IH0gZnJvbSAnQGFjb250cGx1cy9jb3JlJztcblxuLyoqXG4gKiBAY29uc3QgRU5WSVJPTk1FTlRcbiAqIEluamVjdGlvbiB0b2tlbiBmb3IgdGhlIGVudmlyb25tZW50IGludGVyZmFjZSB0byBiZSBwcm92aWRlZCBieSB0aGUgYXBwbGljYXRpb25zLlxuICovXG5leHBvcnQgY29uc3QgRU5WSVJPTk1FTlQgPSBuZXcgSW5qZWN0aW9uVG9rZW48RW52aXJvbm1lbnQ+KCdFTlZJUk9OTUVOVCcsIHtcbiAgZmFjdG9yeTogKCkgPT4gKHtcbiAgICBpc1Byb2R1Y3Rpb246IGZhbHNlLFxuICAgIGFwaUJhc2VVcmw6ICdodHRwOi8vbG9jYWxob3N0OjQyMDAvYXBpLycsXG4gICAgdG9rZW5LZXk6ICdhY2Nlc3NfdG9rZW4nLFxuICAgIHJlZnJlc2hUb2tlbktleTogJ3JlZnJlc2hfdG9rZW4nLFxuICAgIGNsaWVudElkOiAnYW5ndWxhci1hcHAnLFxuICAgIGxvZ2luUm91dGU6ICdhdXRoJyxcbiAgfSksXG59KTtcbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvbnRwbHVzLW5nLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWNvbmZpZy9zcmMvYWNvbnRwbHVzLW5nLWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":";;AAAA;AACY,MAAC,QAAQ,GAAG;AACxB,IAAI,IAAI,EAAE,OAAO;AACjB;;ACHY,MAAC,cAAc,GAAG;AAC9B,IAAI,UAAU,EAAE,EAAE;AAClB,IAAI,UAAU,EAAE,KAAK;AACrB,IAAI,aAAa,EAAE,CAAC;AACpB,IAAI,UAAU,EAAE,IAAI;AACpB,IAAI,yBAAyB,EAAE,IAAI;AACnC,IAAI,oBAAoB,EAAE,KAAK;AAC/B,IAAI,kBAAkB,EAAE,IAAI;AAC5B,IAAI,wBAAwB,EAAE,IAAI;AAClC,IAAI,gBAAgB,EAAE,IAAI;AAC1B,IAAI,eAAe,EAAE,eAAe;AACpC,IAAI,kBAAkB,EAAE,IAAI;AAC5B,IAAI,cAAc,EAAE,WAAW;AAC/B,IAAI,QAAQ,EAAE,MAAM;AACpB,IAAI,oBAAoB,EAAE,IAAI;AAC9B,IAAI,aAAa,EAAE,EAAE;AACrB,IAAI,WAAW,EAAE,EAAE;AACnB,IAAI,cAAc,EAAE,EAAE;AACtB;;AClBA;;ACCY,MAAC,UAAU,GAAG,IAAI,cAAc,CAAC,qBAAqB;;ACCtD,MAAC,WAAW,GAAG,IAAI,cAAc,CAAC,aAAa,EAAE;AAC7D,IAAI,OAAO,EAAE,MAAM,cAAc;AACjC,CAAC;;ACHD;AACA;AACA;AACA;AACY,MAAC,WAAW,GAAG,IAAI,cAAc,CAAC,aAAa,EAAE;AAC7D,IAAI,OAAO,EAAE,OAAO;AACpB,QAAQ,YAAY,EAAE,KAAK;AAC3B,QAAQ,UAAU,EAAE,4BAA4B;AAChD,QAAQ,QAAQ,EAAE,cAAc;AAChC,QAAQ,eAAe,EAAE,eAAe;AACxC,QAAQ,QAAQ,EAAE,aAAa;AAC/B,QAAQ,UAAU,EAAE,MAAM;AAC1B,KAAK,CAAC;AACN,CAAC;;ACdD;AACA;AACA;;;;"}
package/index.d.ts CHANGED
@@ -1,33 +1,40 @@
1
- import * as i0 from '@angular/core';
1
+ import { CoreConfig, UserData, PaginationParams, PagedResult, Environment } from '@acontplus/core';
2
+ import { Observable } from 'rxjs';
2
3
  import { InjectionToken } from '@angular/core';
3
- import { Environment } from '@acontplus/core';
4
4
 
5
5
  declare const AUTH_API: {
6
6
  readonly AUTH: "auth/";
7
7
  };
8
8
 
9
+ declare const DEFAULT_CONFIG: Required<CoreConfig>;
10
+
11
+ interface AuthTokenRepository {
12
+ getToken(): string | null;
13
+ isAuthenticated(): boolean;
14
+ getRefreshToken?(): string | null;
15
+ getUserData(): UserData | null;
16
+ }
17
+
18
+ interface BaseRepository<TEntity = any, TId = number> {
19
+ getById?(id: TId): Observable<TEntity>;
20
+ getAll?(pagination?: PaginationParams): Observable<PagedResult<TEntity>>;
21
+ create?(entity: Partial<TEntity>): Observable<TEntity>;
22
+ update?(id: TId, entity: Partial<TEntity>): Observable<TEntity>;
23
+ remove?(id: TId): Observable<void>;
24
+ }
25
+ interface SearchableRepository<TEntity = any, TId = number> extends BaseRepository<TEntity, TId> {
26
+ search?(query: string, pagination: PaginationParams): Observable<PagedResult<TEntity>>;
27
+ }
28
+
29
+ declare const AUTH_TOKEN: InjectionToken<AuthTokenRepository>;
30
+
31
+ declare const CORE_CONFIG: InjectionToken<CoreConfig>;
32
+
9
33
  /**
10
34
  * @const ENVIRONMENT
11
35
  * Injection token for the environment interface to be provided by the applications.
12
36
  */
13
37
  declare const ENVIRONMENT: InjectionToken<Environment>;
14
38
 
15
- interface IAppConfig {
16
- apiUrl: string;
17
- apiTimeout: number;
18
- enableLogging: boolean;
19
- production: boolean;
20
- }
21
- declare class AppConfigService implements IAppConfig {
22
- private environment;
23
- private readonly defaultTimeout;
24
- get apiUrl(): string;
25
- get apiTimeout(): number;
26
- get enableLogging(): boolean;
27
- get production(): boolean;
28
- static ɵfac: i0.ɵɵFactoryDeclaration<AppConfigService, never>;
29
- static ɵprov: i0.ɵɵInjectableDeclaration<AppConfigService>;
30
- }
31
-
32
- export { AUTH_API, AppConfigService, ENVIRONMENT };
33
- export type { IAppConfig };
39
+ export { AUTH_API, AUTH_TOKEN, CORE_CONFIG, DEFAULT_CONFIG, ENVIRONMENT };
40
+ export type { AuthTokenRepository, BaseRepository, SearchableRepository };
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@acontplus/ng-config",
3
- "version": "1.0.6",
3
+ "version": "1.1.0",
4
4
  "description": "Angular configuration management library providing environment tokens, application settings, dependency injection patterns, and runtime configuration services for enterprise applications.",
5
5
  "peerDependencies": {
6
- "@acontplus/core": "^1.0.17",
6
+ "@acontplus/core": "^1.1.0",
7
7
  "@angular/common": "^20.3.2",
8
8
  "@angular/core": "^20.3.2"
9
9
  },
@@ -28,14 +28,17 @@
28
28
  "acontplus",
29
29
  "angular",
30
30
  "configuration",
31
- "environment",
31
+ "environment-tokens",
32
32
  "app-config",
33
- "settings",
34
- "tokens",
33
+ "runtime-configuration",
34
+ "settings-management",
35
+ "injection-tokens",
35
36
  "dependency-injection",
37
+ "config-services",
38
+ "environment-management",
36
39
  "typescript",
37
- "frontend",
38
- "library"
40
+ "enterprise",
41
+ "frontend"
39
42
  ],
40
43
  "author": "Ivan Paz <ifer343@gmail.com>",
41
44
  "license": "MIT",