@experteam-mx/ngx-services 0.1.1 → 16.0.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.
Files changed (52) hide show
  1. package/README.md +7 -7
  2. package/{esm2020 → esm2022}/experteam-mx-ngx-services.mjs +4 -4
  3. package/esm2022/lib/apis/api-catalog.models.mjs +2 -0
  4. package/esm2022/lib/apis/api-companies.service.mjs +255 -0
  5. package/esm2022/lib/apis/api-security.service.mjs +128 -0
  6. package/esm2022/lib/apis/models/api-companies.interfaces.mjs +2 -0
  7. package/esm2022/lib/apis/models/api-companies.types.mjs +2 -0
  8. package/esm2022/lib/apis/models/api-security.interfaces.mjs +2 -0
  9. package/esm2022/lib/apis/models/api-security.types.mjs +2 -0
  10. package/esm2022/lib/apis/models/api.models.mjs +2 -0
  11. package/esm2022/lib/helpers/http.mjs +66 -0
  12. package/{esm2020 → esm2022}/lib/interceptors/api-headers.interceptor.mjs +34 -34
  13. package/{esm2020 → esm2022}/lib/interceptors/api-token.interceptor.mjs +35 -35
  14. package/esm2022/lib/interceptors/http-caching.interceptor.mjs +38 -0
  15. package/esm2022/lib/ngx-services.models.mjs +2 -0
  16. package/{esm2020 → esm2022}/lib/ngx-services.module.mjs +37 -37
  17. package/esm2022/public-api.mjs +20 -0
  18. package/fesm2022/experteam-mx-ngx-services.mjs +585 -0
  19. package/fesm2022/experteam-mx-ngx-services.mjs.map +1 -0
  20. package/index.d.ts +5 -5
  21. package/lib/apis/api-catalog.models.d.ts +71 -5
  22. package/lib/apis/api-companies.service.d.ts +163 -0
  23. package/lib/apis/api-security.service.d.ts +79 -79
  24. package/lib/apis/models/api-companies.interfaces.d.ts +380 -0
  25. package/lib/apis/models/api-companies.types.d.ts +75 -0
  26. package/lib/apis/{api-security.models.d.ts → models/api-security.interfaces.d.ts} +55 -90
  27. package/lib/apis/models/api-security.types.d.ts +30 -0
  28. package/lib/apis/{api.models.d.ts → models/api.models.d.ts} +23 -31
  29. package/lib/helpers/http.d.ts +38 -31
  30. package/lib/interceptors/api-headers.interceptor.d.ts +16 -16
  31. package/lib/interceptors/api-token.interceptor.d.ts +19 -19
  32. package/lib/interceptors/http-caching.interceptor.d.ts +12 -0
  33. package/lib/ngx-services.models.d.ts +22 -21
  34. package/lib/ngx-services.module.d.ts +17 -17
  35. package/package.json +11 -16
  36. package/public-api.d.ts +12 -6
  37. package/esm2020/experteam-ngx-services.mjs +0 -5
  38. package/esm2020/lib/apis/api-catalog.models.mjs +0 -2
  39. package/esm2020/lib/apis/api-security.models.mjs +0 -2
  40. package/esm2020/lib/apis/api-security.service.mjs +0 -128
  41. package/esm2020/lib/apis/api.models.mjs +0 -2
  42. package/esm2020/lib/helpers/http.mjs +0 -45
  43. package/esm2020/lib/ngx-services.models.mjs +0 -2
  44. package/esm2020/public-api.mjs +0 -13
  45. package/fesm2015/experteam-mx-ngx-services.mjs +0 -283
  46. package/fesm2015/experteam-mx-ngx-services.mjs.map +0 -1
  47. package/fesm2015/experteam-ngx-services.mjs +0 -283
  48. package/fesm2015/experteam-ngx-services.mjs.map +0 -1
  49. package/fesm2020/experteam-mx-ngx-services.mjs +0 -280
  50. package/fesm2020/experteam-mx-ngx-services.mjs.map +0 -1
  51. package/fesm2020/experteam-ngx-services.mjs +0 -280
  52. package/fesm2020/experteam-ngx-services.mjs.map +0 -1
@@ -1,283 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { NgModule, Injectable, Inject } from '@angular/core';
3
- import * as i1 from '@angular/common/http';
4
- import { HttpClientModule, HttpHeaders } from '@angular/common/http';
5
- import { map, tap } from 'rxjs';
6
- import * as i2 from 'ngx-cookie-service';
7
-
8
- class NgxServicesModule {
9
- /**
10
- * Returns a module with providers for the NgxServicesModule.
11
- *
12
- * @param {Environment} environment - The environment configuration object.
13
- *
14
- * @return {ModuleWithProviders<NgxServicesModule>} The module with providers for the NgxServicesModule.
15
- */
16
- static forRoot(environment) {
17
- return {
18
- ngModule: NgxServicesModule,
19
- providers: [
20
- {
21
- provide: 'env',
22
- useValue: environment
23
- }
24
- ]
25
- };
26
- }
27
- }
28
- NgxServicesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: NgxServicesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
29
- NgxServicesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: NgxServicesModule, imports: [HttpClientModule] });
30
- NgxServicesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: NgxServicesModule, imports: [HttpClientModule] });
31
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: NgxServicesModule, decorators: [{
32
- type: NgModule,
33
- args: [{
34
- declarations: [],
35
- imports: [
36
- HttpClientModule
37
- ],
38
- exports: []
39
- }]
40
- }] });
41
-
42
- class ApiSecurityService {
43
- constructor(environments, httpClient, cookie) {
44
- this.environments = environments;
45
- this.httpClient = httpClient;
46
- this.cookie = cookie;
47
- }
48
- /**
49
- * Retrieves the API security URL.
50
- *
51
- * @returns {string} The API security URL.
52
- */
53
- get url() {
54
- return this.environments.apiSecurityUrl;
55
- }
56
- /**
57
- * Logs in the user using the provided login credentials.
58
- *
59
- * @param {object} loginParams - The login parameters.
60
- * @param {string} loginParams.username - The username of the user.
61
- * @param {string} loginParams.password - The password of the user.
62
- * @param {string} loginParams.role - The role of the user.
63
- *
64
- * @returns {Observable<LoginOut>} - An observable that emits the logged-in user's information.
65
- */
66
- login({ username, password, role, }) {
67
- return this.httpClient.post(`${this.url}/auth/login`, {
68
- system_name: 'CRA',
69
- username,
70
- password,
71
- role,
72
- }).pipe(map(({ data }) => data), tap(({ access_token }) => this.cookie.set('tokenCRA', access_token, { path: '/' })));
73
- }
74
- /**
75
- * Logs out the user from the application.
76
- *
77
- * @return {Observable<{}>} An observable that emits an empty object upon successful logout.
78
- */
79
- logout() {
80
- return this.httpClient.post(`${this.url}/auth/logout`, null)
81
- .pipe(map(({ data }) => data), tap(() => this.cookie.deleteAll('/')));
82
- }
83
- /**
84
- * Creates a session with the given parameters.
85
- *
86
- * @param {CreateSessionIn} options - The input parameters for session creation.
87
- * @param {string} options.modelType - The session model type.
88
- * @param {string} options.modelId - The session model ID.
89
- * @param {string} options.token - The authorization token. Optional.
90
- *
91
- * @return {Observable<CreateSessionOut>} - An Observable that emits the result of the session creation.
92
- */
93
- createSession({ modelType, modelId, token, }) {
94
- let headers = new HttpHeaders({});
95
- if (token)
96
- headers = headers.set('Authorization', `Bearer ${token}`);
97
- return this.httpClient.post(`${this.url}/sessions`, {
98
- model_type: modelType,
99
- model_id: modelId,
100
- }, {
101
- headers
102
- }).pipe(map(({ data }) => data));
103
- }
104
- /**
105
- * Retrieves user information.
106
- *
107
- * @returns {Observable<MeOut>} Observable of user information.
108
- */
109
- me() {
110
- return this.httpClient.get(`${this.url}/auth/me`)
111
- .pipe(map(({ data }) => data));
112
- }
113
- /**
114
- * Retrieves user information from the API.
115
- *
116
- * @param {GetUserIn} user - The user object containing the user ID.
117
- *
118
- * @returns {Observable<GetUserOut>} - An observable that emits the retrieved user data.
119
- */
120
- user({ userId }) {
121
- return this.httpClient.get(`${this.url}/users/${userId}`)
122
- .pipe(map(({ data }) => data));
123
- }
124
- /**
125
- * Get user information
126
- *
127
- * @param {string} token - The user's authentication token
128
- *
129
- * @return {Observable<MeOut>} - An observable that emits the user's information
130
- */
131
- userInfo({ token }) {
132
- return this.httpClient.get(`${this.url}/auth/me`, {
133
- headers: {
134
- Authorization: `Bearer ${token}`
135
- }
136
- }).pipe(map(({ data }) => data));
137
- }
138
- /**
139
- * Changes the language of the authenticated user.
140
- *
141
- * @param {Object} params - The parameters for changing the language.
142
- * @param {string} params.languageId - The ID of the language to change to.
143
- *
144
- * @returns {Observable<Object>} - An observable that emits the updated user data.
145
- */
146
- changeLanguage({ languageId }) {
147
- return this.httpClient.put(`${this.url}/auth/me`, {
148
- language_id: languageId
149
- }).pipe(map(({ data }) => data));
150
- }
151
- }
152
- ApiSecurityService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ApiSecurityService, deps: [{ token: 'env' }, { token: i1.HttpClient }, { token: i2.CookieService }], target: i0.ɵɵFactoryTarget.Injectable });
153
- ApiSecurityService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ApiSecurityService, providedIn: 'root' });
154
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ApiSecurityService, decorators: [{
155
- type: Injectable,
156
- args: [{
157
- providedIn: 'root'
158
- }]
159
- }], ctorParameters: function () {
160
- return [{ type: undefined, decorators: [{
161
- type: Inject,
162
- args: ['env']
163
- }] }, { type: i1.HttpClient }, { type: i2.CookieService }];
164
- } });
165
-
166
- class ApiTokenInterceptor {
167
- constructor(cookie) {
168
- this.cookie = cookie;
169
- }
170
- /**
171
- * Intercepts the HTTP request and adds the Authorization header.
172
- *
173
- * @param {HttpRequest<unknown>} request - The HTTP request to intercept.
174
- * @param {HttpHandler} next - The next HTTP handler in the chain.
175
- *
176
- * @returns {Observable<HttpEvent<unknown>>} - An observable containing the HTTP event.
177
- */
178
- intercept(request, next) {
179
- if (request.headers.has('Authorization'))
180
- return next.handle(request);
181
- const token = this.cookie.get('tokenCRA');
182
- if (!token)
183
- return next.handle(request);
184
- request = request.clone({
185
- setHeaders: {
186
- Authorization: `Bearer ${token}`
187
- }
188
- });
189
- return next.handle(request);
190
- }
191
- }
192
- ApiTokenInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ApiTokenInterceptor, deps: [{ token: i2.CookieService }], target: i0.ɵɵFactoryTarget.Injectable });
193
- ApiTokenInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ApiTokenInterceptor });
194
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ApiTokenInterceptor, decorators: [{
195
- type: Injectable
196
- }], ctorParameters: function () { return [{ type: i2.CookieService }]; } });
197
-
198
- class ApiHeadersInterceptor {
199
- /**
200
- * Intercepts HTTP requests and adds common headers.
201
- *
202
- * @param {HttpRequest<unknown>} request - The HTTP request intercepted.
203
- * @param {HttpHandler} next - The next handler in the chain.
204
- *
205
- * @returns {Observable<HttpEvent<unknown>>} - Observable of the HTTP event after interception.
206
- */
207
- intercept(request, next) {
208
- var _a;
209
- let headers = new HttpHeaders({
210
- 'cache-control': 'max-age=0, no-cache, no-store, must-revalidate',
211
- 'expires': '0',
212
- 'pragma': 'no-cache'
213
- });
214
- if (!request.headers.has('Content-Type'))
215
- headers = headers.set('Content-Type', 'application/json');
216
- if (!request.headers.has('Accept'))
217
- headers = headers.set('Accept', 'application/json');
218
- if (!request.headers.has('Accept-Language'))
219
- headers = headers.set('Accept-Language', (_a = localStorage.getItem('lang')) !== null && _a !== void 0 ? _a : 'en');
220
- request = request.clone({ headers });
221
- return next.handle(request);
222
- }
223
- }
224
- ApiHeadersInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ApiHeadersInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
225
- ApiHeadersInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ApiHeadersInterceptor });
226
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ApiHeadersInterceptor, decorators: [{
227
- type: Injectable
228
- }] });
229
-
230
- /**
231
- * Convert an object of key-value pairs into a URL query string.
232
- *
233
- * @param {Object} params - The key-value pairs to converted into a query string.
234
- *
235
- * @return {string} - The generated query string.
236
- */
237
- const queryString = (params) => {
238
- const query = Object.keys(params)
239
- .map((k) => `${encodeURIComponent(k)}=${encodeURIComponent(params[k])}`)
240
- .join('&');
241
- return query.length ? `?${query}` : '';
242
- };
243
- /**
244
- * Returns the headers for generating PDF files.
245
- *
246
- * @param {string} format - The format of the headers, 'object' or 'http_header'.
247
- *
248
- * @returns {HttpHeaders | { [header: string]: string | string[] }} - The headers for generating PDF files.
249
- */
250
- const pdfHeaders = (format = 'object') => {
251
- const headers = {
252
- 'Accept': 'application/pdf'
253
- };
254
- return format === 'object'
255
- ? headers
256
- : new HttpHeaders(headers);
257
- };
258
- /**
259
- * Returns the headers for generating XML files.
260
- *
261
- * @param {string} format - The format of the headers, 'object' or 'http_header'.
262
- *
263
- * @returns {HttpHeaders | { [header: string]: string | string[] }} - The headers for generating XML files.
264
- */
265
- const xmlHeaders = (format = 'object') => {
266
- const headers = {
267
- 'Accept': 'application/xml',
268
- };
269
- return format === 'object'
270
- ? headers
271
- : new HttpHeaders(headers);
272
- };
273
-
274
- /*
275
- * Public API Surface of ngx-services
276
- */
277
-
278
- /**
279
- * Generated bundle index. Do not edit.
280
- */
281
-
282
- export { ApiHeadersInterceptor, ApiSecurityService, ApiTokenInterceptor, NgxServicesModule, pdfHeaders, queryString, xmlHeaders };
283
- //# sourceMappingURL=experteam-mx-ngx-services.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"experteam-mx-ngx-services.mjs","sources":["../../../../projects/experteam/ngx-services/src/lib/ngx-services.module.ts","../../../../projects/experteam/ngx-services/src/lib/apis/api-security.service.ts","../../../../projects/experteam/ngx-services/src/lib/interceptors/api-token.interceptor.ts","../../../../projects/experteam/ngx-services/src/lib/interceptors/api-headers.interceptor.ts","../../../../projects/experteam/ngx-services/src/lib/helpers/http.ts","../../../../projects/experteam/ngx-services/src/public-api.ts","../../../../projects/experteam/ngx-services/src/experteam-mx-ngx-services.ts"],"sourcesContent":["import { ModuleWithProviders, NgModule } from '@angular/core'\r\nimport { Environment } from './ngx-services.models'\r\nimport { HttpClientModule } from '@angular/common/http'\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n HttpClientModule\r\n ],\r\n exports: []\r\n})\r\nexport class NgxServicesModule {\r\n /**\r\n * Returns a module with providers for the NgxServicesModule.\r\n *\r\n * @param {Environment} environment - The environment configuration object.\r\n *\r\n * @return {ModuleWithProviders<NgxServicesModule>} The module with providers for the NgxServicesModule.\r\n */\r\n public static forRoot (environment: Environment): ModuleWithProviders<NgxServicesModule> {\r\n return {\r\n ngModule: NgxServicesModule,\r\n providers: [\r\n {\r\n provide: 'env',\r\n useValue: environment\r\n }\r\n ]\r\n }\r\n }\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\nimport { ApiSuccess } from './api.models'\r\nimport {\r\n ChangeLanguageIn,\r\n CreateSessionIn,\r\n CreateSessionOut,\r\n GetUserIn,\r\n GetUserInfoIn,\r\n GetUserOut,\r\n LoginIn,\r\n LoginOut,\r\n MeOut\r\n} from './api-security.models'\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http'\r\nimport { Environment } from '../ngx-services.models'\r\nimport { map, Observable, tap } from 'rxjs'\r\nimport { CookieService } from 'ngx-cookie-service'\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ApiSecurityService {\r\n constructor (\r\n @Inject('env') private environments: Environment,\r\n private httpClient: HttpClient,\r\n private cookie: CookieService,\r\n ) {}\r\n\r\n /**\r\n * Retrieves the API security URL.\r\n *\r\n * @returns {string} The API security URL.\r\n */\r\n get url (): string {\r\n return this.environments.apiSecurityUrl\r\n }\r\n\r\n /**\r\n * Logs in the user using the provided login credentials.\r\n *\r\n * @param {object} loginParams - The login parameters.\r\n * @param {string} loginParams.username - The username of the user.\r\n * @param {string} loginParams.password - The password of the user.\r\n * @param {string} loginParams.role - The role of the user.\r\n *\r\n * @returns {Observable<LoginOut>} - An observable that emits the logged-in user's information.\r\n */\r\n login ({\r\n username,\r\n password,\r\n role,\r\n }: LoginIn): Observable<LoginOut> {\r\n return this.httpClient.post<ApiSuccess<LoginOut>>(`${this.url}/auth/login`, {\r\n system_name: 'CRA',\r\n username,\r\n password,\r\n role,\r\n }).pipe(\r\n map(({ data }) => data),\r\n tap(({ access_token }) => this.cookie.set('tokenCRA', access_token, { path: '/' }))\r\n )\r\n }\r\n\r\n /**\r\n * Logs out the user from the application.\r\n *\r\n * @return {Observable<{}>} An observable that emits an empty object upon successful logout.\r\n */\r\n logout (): Observable<{}> {\r\n return this.httpClient.post<ApiSuccess<{}>>(`${this.url}/auth/logout`, null)\r\n .pipe(\r\n map(({ data }) => data),\r\n tap(() => this.cookie.deleteAll('/'))\r\n )\r\n }\r\n\r\n /**\r\n * Creates a session with the given parameters.\r\n *\r\n * @param {CreateSessionIn} options - The input parameters for session creation.\r\n * @param {string} options.modelType - The session model type.\r\n * @param {string} options.modelId - The session model ID.\r\n * @param {string} options.token - The authorization token. Optional.\r\n *\r\n * @return {Observable<CreateSessionOut>} - An Observable that emits the result of the session creation.\r\n */\r\n createSession ({\r\n modelType,\r\n modelId,\r\n token,\r\n }: CreateSessionIn): Observable<CreateSessionOut> {\r\n let headers = new HttpHeaders({})\r\n\r\n if (token)\r\n headers = headers.set('Authorization', `Bearer ${token}`)\r\n\r\n return this.httpClient.post<ApiSuccess<CreateSessionOut>>(\r\n `${this.url}/sessions`, {\r\n model_type: modelType,\r\n model_id: modelId,\r\n }, {\r\n headers\r\n }).pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Retrieves user information.\r\n *\r\n * @returns {Observable<MeOut>} Observable of user information.\r\n */\r\n me (): Observable<MeOut> {\r\n return this.httpClient.get<ApiSuccess<MeOut>>(`${this.url}/auth/me`)\r\n .pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Retrieves user information from the API.\r\n *\r\n * @param {GetUserIn} user - The user object containing the user ID.\r\n *\r\n * @returns {Observable<GetUserOut>} - An observable that emits the retrieved user data.\r\n */\r\n user ({\r\n userId\r\n }: GetUserIn): Observable<GetUserOut> {\r\n return this.httpClient.get<ApiSuccess<GetUserOut>>(`${this.url}/users/${userId}`)\r\n .pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Get user information\r\n *\r\n * @param {string} token - The user's authentication token\r\n *\r\n * @return {Observable<MeOut>} - An observable that emits the user's information\r\n */\r\n userInfo ({\r\n token\r\n }: GetUserInfoIn): Observable<MeOut> {\r\n return this.httpClient.get<ApiSuccess<MeOut>>(`${this.url}/auth/me`, {\r\n headers: {\r\n Authorization: `Bearer ${token}`\r\n }\r\n }).pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Changes the language of the authenticated user.\r\n *\r\n * @param {Object} params - The parameters for changing the language.\r\n * @param {string} params.languageId - The ID of the language to change to.\r\n *\r\n * @returns {Observable<Object>} - An observable that emits the updated user data.\r\n */\r\n changeLanguage ({\r\n languageId\r\n }: ChangeLanguageIn) {\r\n return this.httpClient.put<ApiSuccess<MeOut>>(`${this.url}/auth/me`, {\r\n language_id: languageId\r\n }).pipe(map(({ data }) => data))\r\n }\r\n}\r\n","import { Injectable } from '@angular/core'\r\nimport { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http'\r\nimport { Observable } from 'rxjs'\r\nimport { CookieService } from 'ngx-cookie-service'\r\n\r\n@Injectable()\r\nexport class ApiTokenInterceptor implements HttpInterceptor {\r\n constructor (private cookie: CookieService) {}\r\n\r\n /**\r\n * Intercepts the HTTP request and adds the Authorization header.\r\n *\r\n * @param {HttpRequest<unknown>} request - The HTTP request to intercept.\r\n * @param {HttpHandler} next - The next HTTP handler in the chain.\r\n *\r\n * @returns {Observable<HttpEvent<unknown>>} - An observable containing the HTTP event.\r\n */\r\n intercept (request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\r\n if (request.headers.has('Authorization'))\r\n return next.handle(request)\r\n\r\n const token = this.cookie.get('tokenCRA')\r\n\r\n if (!token)\r\n return next.handle(request)\r\n\r\n request = request.clone({\r\n setHeaders: {\r\n Authorization: `Bearer ${token}`\r\n }\r\n })\r\n\r\n return next.handle(request)\r\n }\r\n}\r\n","import { Injectable } from '@angular/core'\r\nimport { HttpEvent, HttpHandler, HttpHeaders, HttpInterceptor, HttpRequest } from '@angular/common/http'\r\nimport { Observable } from 'rxjs'\r\n\r\n@Injectable()\r\nexport class ApiHeadersInterceptor implements HttpInterceptor {\r\n /**\r\n * Intercepts HTTP requests and adds common headers.\r\n *\r\n * @param {HttpRequest<unknown>} request - The HTTP request intercepted.\r\n * @param {HttpHandler} next - The next handler in the chain.\r\n *\r\n * @returns {Observable<HttpEvent<unknown>>} - Observable of the HTTP event after interception.\r\n */\r\n intercept (request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\r\n let headers = new HttpHeaders({\r\n 'cache-control': 'max-age=0, no-cache, no-store, must-revalidate',\r\n 'expires': '0',\r\n 'pragma': 'no-cache'\r\n })\r\n\r\n if (!request.headers.has('Content-Type'))\r\n headers = headers.set('Content-Type', 'application/json')\r\n\r\n if (!request.headers.has('Accept'))\r\n headers = headers.set('Accept', 'application/json')\r\n\r\n if (!request.headers.has('Accept-Language'))\r\n headers = headers.set('Accept-Language', localStorage.getItem('lang') ?? 'en')\r\n\r\n request = request.clone({ headers })\r\n\r\n return next.handle(request)\r\n }\r\n}\r\n","import { HttpHeaders } from '@angular/common/http'\r\n\r\n/**\r\n * Convert an object of key-value pairs into a URL query string.\r\n *\r\n * @param {Object} params - The key-value pairs to converted into a query string.\r\n *\r\n * @return {string} - The generated query string.\r\n */\r\nexport const queryString = (params: { [key: string]: string | number | boolean }): string => {\r\n const query = Object.keys(params)\r\n .map((k) => `${encodeURIComponent(k)}=${encodeURIComponent(params[k])}`)\r\n .join('&')\r\n\r\n return query.length ? `?${query}` : ''\r\n}\r\n\r\n/**\r\n * Returns the headers for generating PDF files.\r\n *\r\n * @param {string} format - The format of the headers, 'object' or 'http_header'.\r\n *\r\n * @returns {HttpHeaders | { [header: string]: string | string[] }} - The headers for generating PDF files.\r\n */\r\nexport const pdfHeaders = (format: 'object' | 'http_header' = 'object'): HttpHeaders | { [header: string]: string | string[] } => {\r\n const headers = {\r\n 'Accept': 'application/pdf'\r\n }\r\n\r\n return format === 'object'\r\n ? headers\r\n : new HttpHeaders(headers)\r\n}\r\n\r\n/**\r\n * Returns the headers for generating XML files.\r\n *\r\n * @param {string} format - The format of the headers, 'object' or 'http_header'.\r\n *\r\n * @returns {HttpHeaders | { [header: string]: string | string[] }} - The headers for generating XML files.\r\n */\r\nexport const xmlHeaders = (format: 'object' | 'http_header' = 'object'): HttpHeaders | { [header: string]: string | string[] } => {\r\n const headers = {\r\n 'Accept': 'application/xml',\r\n }\r\n\r\n return format === 'object'\r\n ? headers\r\n : new HttpHeaders(headers)\r\n}\r\n","/*\r\n * Public API Surface of ngx-services\r\n */\r\nexport * from './lib/ngx-services.module'\r\n\r\n// api services\r\nexport * from './lib/apis/api-security.service'\r\nexport * from './lib/apis/api-security.models'\r\n\r\n// interceptors\r\nexport * from './lib/interceptors/api-token.interceptor'\r\nexport * from './lib/interceptors/api-headers.interceptor'\r\n\r\n// helpers\r\nexport * from './lib/helpers/http'\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
@@ -1,283 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { NgModule, Injectable, Inject } from '@angular/core';
3
- import * as i1 from '@angular/common/http';
4
- import { HttpClientModule, HttpHeaders } from '@angular/common/http';
5
- import { map, tap } from 'rxjs';
6
- import * as i2 from 'ngx-cookie-service';
7
-
8
- class NgxServicesModule {
9
- /**
10
- * Returns a module with providers for the NgxServicesModule.
11
- *
12
- * @param {Environment} environment - The environment configuration object.
13
- *
14
- * @return {ModuleWithProviders<NgxServicesModule>} The module with providers for the NgxServicesModule.
15
- */
16
- static forRoot(environment) {
17
- return {
18
- ngModule: NgxServicesModule,
19
- providers: [
20
- {
21
- provide: 'env',
22
- useValue: environment
23
- }
24
- ]
25
- };
26
- }
27
- }
28
- NgxServicesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: NgxServicesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
29
- NgxServicesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: NgxServicesModule, imports: [HttpClientModule] });
30
- NgxServicesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: NgxServicesModule, imports: [HttpClientModule] });
31
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: NgxServicesModule, decorators: [{
32
- type: NgModule,
33
- args: [{
34
- declarations: [],
35
- imports: [
36
- HttpClientModule
37
- ],
38
- exports: []
39
- }]
40
- }] });
41
-
42
- class ApiSecurityService {
43
- constructor(environments, httpClient, cookie) {
44
- this.environments = environments;
45
- this.httpClient = httpClient;
46
- this.cookie = cookie;
47
- }
48
- /**
49
- * Retrieves the API security URL.
50
- *
51
- * @returns {string} The API security URL.
52
- */
53
- get url() {
54
- return this.environments.apiSecurityUrl;
55
- }
56
- /**
57
- * Logs in the user using the provided login credentials.
58
- *
59
- * @param {object} loginParams - The login parameters.
60
- * @param {string} loginParams.username - The username of the user.
61
- * @param {string} loginParams.password - The password of the user.
62
- * @param {string} loginParams.role - The role of the user.
63
- *
64
- * @returns {Observable<LoginOut>} - An observable that emits the logged-in user's information.
65
- */
66
- login({ username, password, role, }) {
67
- return this.httpClient.post(`${this.url}/auth/login`, {
68
- system_name: 'CRA',
69
- username,
70
- password,
71
- role,
72
- }).pipe(map(({ data }) => data), tap(({ access_token }) => this.cookie.set('tokenCRA', access_token, { path: '/' })));
73
- }
74
- /**
75
- * Logs out the user from the application.
76
- *
77
- * @return {Observable<{}>} An observable that emits an empty object upon successful logout.
78
- */
79
- logout() {
80
- return this.httpClient.post(`${this.url}/auth/logout`, null)
81
- .pipe(map(({ data }) => data), tap(() => this.cookie.deleteAll('/')));
82
- }
83
- /**
84
- * Creates a session with the given parameters.
85
- *
86
- * @param {CreateSessionIn} options - The input parameters for session creation.
87
- * @param {string} options.modelType - The session model type.
88
- * @param {string} options.modelId - The session model ID.
89
- * @param {string} options.token - The authorization token. Optional.
90
- *
91
- * @return {Observable<CreateSessionOut>} - An Observable that emits the result of the session creation.
92
- */
93
- createSession({ modelType, modelId, token, }) {
94
- let headers = new HttpHeaders({});
95
- if (token)
96
- headers = headers.set('Authorization', `Bearer ${token}`);
97
- return this.httpClient.post(`${this.url}/sessions`, {
98
- model_type: modelType,
99
- model_id: modelId,
100
- }, {
101
- headers
102
- }).pipe(map(({ data }) => data));
103
- }
104
- /**
105
- * Retrieves user information.
106
- *
107
- * @returns {Observable<MeOut>} Observable of user information.
108
- */
109
- me() {
110
- return this.httpClient.get(`${this.url}/auth/me`)
111
- .pipe(map(({ data }) => data));
112
- }
113
- /**
114
- * Retrieves user information from the API.
115
- *
116
- * @param {GetUserIn} user - The user object containing the user ID.
117
- *
118
- * @returns {Observable<GetUserOut>} - An observable that emits the retrieved user data.
119
- */
120
- user({ userId }) {
121
- return this.httpClient.get(`${this.url}/users/${userId}`)
122
- .pipe(map(({ data }) => data));
123
- }
124
- /**
125
- * Get user information
126
- *
127
- * @param {string} token - The user's authentication token
128
- *
129
- * @return {Observable<MeOut>} - An observable that emits the user's information
130
- */
131
- userInfo({ token }) {
132
- return this.httpClient.get(`${this.url}/auth/me`, {
133
- headers: {
134
- Authorization: `Bearer ${token}`
135
- }
136
- }).pipe(map(({ data }) => data));
137
- }
138
- /**
139
- * Changes the language of the authenticated user.
140
- *
141
- * @param {Object} params - The parameters for changing the language.
142
- * @param {string} params.languageId - The ID of the language to change to.
143
- *
144
- * @returns {Observable<Object>} - An observable that emits the updated user data.
145
- */
146
- changeLanguage({ languageId }) {
147
- return this.httpClient.put(`${this.url}/auth/me`, {
148
- language_id: languageId
149
- }).pipe(map(({ data }) => data));
150
- }
151
- }
152
- ApiSecurityService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ApiSecurityService, deps: [{ token: 'env' }, { token: i1.HttpClient }, { token: i2.CookieService }], target: i0.ɵɵFactoryTarget.Injectable });
153
- ApiSecurityService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ApiSecurityService, providedIn: 'root' });
154
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ApiSecurityService, decorators: [{
155
- type: Injectable,
156
- args: [{
157
- providedIn: 'root'
158
- }]
159
- }], ctorParameters: function () {
160
- return [{ type: undefined, decorators: [{
161
- type: Inject,
162
- args: ['env']
163
- }] }, { type: i1.HttpClient }, { type: i2.CookieService }];
164
- } });
165
-
166
- class ApiTokenInterceptor {
167
- constructor(cookie) {
168
- this.cookie = cookie;
169
- }
170
- /**
171
- * Intercepts the HTTP request and adds the Authorization header.
172
- *
173
- * @param {HttpRequest<unknown>} request - The HTTP request to intercept.
174
- * @param {HttpHandler} next - The next HTTP handler in the chain.
175
- *
176
- * @returns {Observable<HttpEvent<unknown>>} - An observable containing the HTTP event.
177
- */
178
- intercept(request, next) {
179
- if (request.headers.has('Authorization'))
180
- return next.handle(request);
181
- const token = this.cookie.get('tokenCRA');
182
- if (!token)
183
- return next.handle(request);
184
- request = request.clone({
185
- setHeaders: {
186
- Authorization: `Bearer ${token}`
187
- }
188
- });
189
- return next.handle(request);
190
- }
191
- }
192
- ApiTokenInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ApiTokenInterceptor, deps: [{ token: i2.CookieService }], target: i0.ɵɵFactoryTarget.Injectable });
193
- ApiTokenInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ApiTokenInterceptor });
194
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ApiTokenInterceptor, decorators: [{
195
- type: Injectable
196
- }], ctorParameters: function () { return [{ type: i2.CookieService }]; } });
197
-
198
- class ApiHeadersInterceptor {
199
- /**
200
- * Intercepts HTTP requests and adds common headers.
201
- *
202
- * @param {HttpRequest<unknown>} request - The HTTP request intercepted.
203
- * @param {HttpHandler} next - The next handler in the chain.
204
- *
205
- * @returns {Observable<HttpEvent<unknown>>} - Observable of the HTTP event after interception.
206
- */
207
- intercept(request, next) {
208
- var _a;
209
- let headers = new HttpHeaders({
210
- 'cache-control': 'max-age=0, no-cache, no-store, must-revalidate',
211
- 'expires': '0',
212
- 'pragma': 'no-cache'
213
- });
214
- if (!request.headers.has('Content-Type'))
215
- headers = headers.set('Content-Type', 'application/json');
216
- if (!request.headers.has('Accept'))
217
- headers = headers.set('Accept', 'application/json');
218
- if (!request.headers.has('Accept-Language'))
219
- headers = headers.set('Accept-Language', (_a = localStorage.getItem('lang')) !== null && _a !== void 0 ? _a : 'en');
220
- request = request.clone({ headers });
221
- return next.handle(request);
222
- }
223
- }
224
- ApiHeadersInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ApiHeadersInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
225
- ApiHeadersInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ApiHeadersInterceptor });
226
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ApiHeadersInterceptor, decorators: [{
227
- type: Injectable
228
- }] });
229
-
230
- /**
231
- * Convert an object of key-value pairs into a URL query string.
232
- *
233
- * @param {Object} params - The key-value pairs to converted into a query string.
234
- *
235
- * @return {string} - The generated query string.
236
- */
237
- const queryString = (params) => {
238
- const query = Object.keys(params)
239
- .map((k) => `${encodeURIComponent(k)}=${encodeURIComponent(params[k])}`)
240
- .join('&');
241
- return query.length ? `?${query}` : '';
242
- };
243
- /**
244
- * Returns the headers for generating PDF files.
245
- *
246
- * @param {string} format - The format of the headers, 'object' or 'http_header'.
247
- *
248
- * @returns {HttpHeaders | { [header: string]: string | string[] }} - The headers for generating PDF files.
249
- */
250
- const pdfHeaders = (format = 'object') => {
251
- const headers = {
252
- 'Accept': 'application/pdf'
253
- };
254
- return format === 'object'
255
- ? headers
256
- : new HttpHeaders(headers);
257
- };
258
- /**
259
- * Returns the headers for generating XML files.
260
- *
261
- * @param {string} format - The format of the headers, 'object' or 'http_header'.
262
- *
263
- * @returns {HttpHeaders | { [header: string]: string | string[] }} - The headers for generating XML files.
264
- */
265
- const xmlHeaders = (format = 'object') => {
266
- const headers = {
267
- 'Accept': 'application/xml',
268
- };
269
- return format === 'object'
270
- ? headers
271
- : new HttpHeaders(headers);
272
- };
273
-
274
- /*
275
- * Public API Surface of ngx-services
276
- */
277
-
278
- /**
279
- * Generated bundle index. Do not edit.
280
- */
281
-
282
- export { ApiHeadersInterceptor, ApiSecurityService, ApiTokenInterceptor, NgxServicesModule, pdfHeaders, queryString, xmlHeaders };
283
- //# sourceMappingURL=experteam-ngx-services.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"experteam-ngx-services.mjs","sources":["../../../../projects/experteam/ngx-services/src/lib/ngx-services.module.ts","../../../../projects/experteam/ngx-services/src/lib/apis/api-security.service.ts","../../../../projects/experteam/ngx-services/src/lib/interceptors/api-token.interceptor.ts","../../../../projects/experteam/ngx-services/src/lib/interceptors/api-headers.interceptor.ts","../../../../projects/experteam/ngx-services/src/lib/helpers/http.ts","../../../../projects/experteam/ngx-services/src/public-api.ts","../../../../projects/experteam/ngx-services/src/experteam-ngx-services.ts"],"sourcesContent":["import { ModuleWithProviders, NgModule } from '@angular/core'\r\nimport { Environment } from './ngx-services.models'\r\nimport { HttpClientModule } from '@angular/common/http'\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n HttpClientModule\r\n ],\r\n exports: []\r\n})\r\nexport class NgxServicesModule {\r\n /**\r\n * Returns a module with providers for the NgxServicesModule.\r\n *\r\n * @param {Environment} environment - The environment configuration object.\r\n *\r\n * @return {ModuleWithProviders<NgxServicesModule>} The module with providers for the NgxServicesModule.\r\n */\r\n public static forRoot (environment: Environment): ModuleWithProviders<NgxServicesModule> {\r\n return {\r\n ngModule: NgxServicesModule,\r\n providers: [\r\n {\r\n provide: 'env',\r\n useValue: environment\r\n }\r\n ]\r\n }\r\n }\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\nimport { ApiSuccess } from './api.models'\r\nimport {\r\n ChangeLanguageIn,\r\n CreateSessionIn,\r\n CreateSessionOut,\r\n GetUserIn,\r\n GetUserInfoIn,\r\n GetUserOut,\r\n LoginIn,\r\n LoginOut,\r\n MeOut\r\n} from './api-security.models'\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http'\r\nimport { Environment } from '../ngx-services.models'\r\nimport { map, Observable, tap } from 'rxjs'\r\nimport { CookieService } from 'ngx-cookie-service'\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ApiSecurityService {\r\n constructor (\r\n @Inject('env') private environments: Environment,\r\n private httpClient: HttpClient,\r\n private cookie: CookieService,\r\n ) {}\r\n\r\n /**\r\n * Retrieves the API security URL.\r\n *\r\n * @returns {string} The API security URL.\r\n */\r\n get url (): string {\r\n return this.environments.apiSecurityUrl\r\n }\r\n\r\n /**\r\n * Logs in the user using the provided login credentials.\r\n *\r\n * @param {object} loginParams - The login parameters.\r\n * @param {string} loginParams.username - The username of the user.\r\n * @param {string} loginParams.password - The password of the user.\r\n * @param {string} loginParams.role - The role of the user.\r\n *\r\n * @returns {Observable<LoginOut>} - An observable that emits the logged-in user's information.\r\n */\r\n login ({\r\n username,\r\n password,\r\n role,\r\n }: LoginIn): Observable<LoginOut> {\r\n return this.httpClient.post<ApiSuccess<LoginOut>>(`${this.url}/auth/login`, {\r\n system_name: 'CRA',\r\n username,\r\n password,\r\n role,\r\n }).pipe(\r\n map(({ data }) => data),\r\n tap(({ access_token }) => this.cookie.set('tokenCRA', access_token, { path: '/' }))\r\n )\r\n }\r\n\r\n /**\r\n * Logs out the user from the application.\r\n *\r\n * @return {Observable<{}>} An observable that emits an empty object upon successful logout.\r\n */\r\n logout (): Observable<{}> {\r\n return this.httpClient.post<ApiSuccess<{}>>(`${this.url}/auth/logout`, null)\r\n .pipe(\r\n map(({ data }) => data),\r\n tap(() => this.cookie.deleteAll('/'))\r\n )\r\n }\r\n\r\n /**\r\n * Creates a session with the given parameters.\r\n *\r\n * @param {CreateSessionIn} options - The input parameters for session creation.\r\n * @param {string} options.modelType - The session model type.\r\n * @param {string} options.modelId - The session model ID.\r\n * @param {string} options.token - The authorization token. Optional.\r\n *\r\n * @return {Observable<CreateSessionOut>} - An Observable that emits the result of the session creation.\r\n */\r\n createSession ({\r\n modelType,\r\n modelId,\r\n token,\r\n }: CreateSessionIn): Observable<CreateSessionOut> {\r\n let headers = new HttpHeaders({})\r\n\r\n if (token)\r\n headers = headers.set('Authorization', `Bearer ${token}`)\r\n\r\n return this.httpClient.post<ApiSuccess<CreateSessionOut>>(\r\n `${this.url}/sessions`, {\r\n model_type: modelType,\r\n model_id: modelId,\r\n }, {\r\n headers\r\n }).pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Retrieves user information.\r\n *\r\n * @returns {Observable<MeOut>} Observable of user information.\r\n */\r\n me (): Observable<MeOut> {\r\n return this.httpClient.get<ApiSuccess<MeOut>>(`${this.url}/auth/me`)\r\n .pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Retrieves user information from the API.\r\n *\r\n * @param {GetUserIn} user - The user object containing the user ID.\r\n *\r\n * @returns {Observable<GetUserOut>} - An observable that emits the retrieved user data.\r\n */\r\n user ({\r\n userId\r\n }: GetUserIn): Observable<GetUserOut> {\r\n return this.httpClient.get<ApiSuccess<GetUserOut>>(`${this.url}/users/${userId}`)\r\n .pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Get user information\r\n *\r\n * @param {string} token - The user's authentication token\r\n *\r\n * @return {Observable<MeOut>} - An observable that emits the user's information\r\n */\r\n userInfo ({\r\n token\r\n }: GetUserInfoIn): Observable<MeOut> {\r\n return this.httpClient.get<ApiSuccess<MeOut>>(`${this.url}/auth/me`, {\r\n headers: {\r\n Authorization: `Bearer ${token}`\r\n }\r\n }).pipe(map(({ data }) => data))\r\n }\r\n\r\n /**\r\n * Changes the language of the authenticated user.\r\n *\r\n * @param {Object} params - The parameters for changing the language.\r\n * @param {string} params.languageId - The ID of the language to change to.\r\n *\r\n * @returns {Observable<Object>} - An observable that emits the updated user data.\r\n */\r\n changeLanguage ({\r\n languageId\r\n }: ChangeLanguageIn) {\r\n return this.httpClient.put<ApiSuccess<MeOut>>(`${this.url}/auth/me`, {\r\n language_id: languageId\r\n }).pipe(map(({ data }) => data))\r\n }\r\n}\r\n","import { Injectable } from '@angular/core'\r\nimport { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http'\r\nimport { Observable } from 'rxjs'\r\nimport { CookieService } from 'ngx-cookie-service'\r\n\r\n@Injectable()\r\nexport class ApiTokenInterceptor implements HttpInterceptor {\r\n constructor (private cookie: CookieService) {}\r\n\r\n /**\r\n * Intercepts the HTTP request and adds the Authorization header.\r\n *\r\n * @param {HttpRequest<unknown>} request - The HTTP request to intercept.\r\n * @param {HttpHandler} next - The next HTTP handler in the chain.\r\n *\r\n * @returns {Observable<HttpEvent<unknown>>} - An observable containing the HTTP event.\r\n */\r\n intercept (request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\r\n if (request.headers.has('Authorization'))\r\n return next.handle(request)\r\n\r\n const token = this.cookie.get('tokenCRA')\r\n\r\n if (!token)\r\n return next.handle(request)\r\n\r\n request = request.clone({\r\n setHeaders: {\r\n Authorization: `Bearer ${token}`\r\n }\r\n })\r\n\r\n return next.handle(request)\r\n }\r\n}\r\n","import { Injectable } from '@angular/core'\r\nimport { HttpEvent, HttpHandler, HttpHeaders, HttpInterceptor, HttpRequest } from '@angular/common/http'\r\nimport { Observable } from 'rxjs'\r\n\r\n@Injectable()\r\nexport class ApiHeadersInterceptor implements HttpInterceptor {\r\n /**\r\n * Intercepts HTTP requests and adds common headers.\r\n *\r\n * @param {HttpRequest<unknown>} request - The HTTP request intercepted.\r\n * @param {HttpHandler} next - The next handler in the chain.\r\n *\r\n * @returns {Observable<HttpEvent<unknown>>} - Observable of the HTTP event after interception.\r\n */\r\n intercept (request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\r\n let headers = new HttpHeaders({\r\n 'cache-control': 'max-age=0, no-cache, no-store, must-revalidate',\r\n 'expires': '0',\r\n 'pragma': 'no-cache'\r\n })\r\n\r\n if (!request.headers.has('Content-Type'))\r\n headers = headers.set('Content-Type', 'application/json')\r\n\r\n if (!request.headers.has('Accept'))\r\n headers = headers.set('Accept', 'application/json')\r\n\r\n if (!request.headers.has('Accept-Language'))\r\n headers = headers.set('Accept-Language', localStorage.getItem('lang') ?? 'en')\r\n\r\n request = request.clone({ headers })\r\n\r\n return next.handle(request)\r\n }\r\n}\r\n","import { HttpHeaders } from '@angular/common/http'\r\n\r\n/**\r\n * Convert an object of key-value pairs into a URL query string.\r\n *\r\n * @param {Object} params - The key-value pairs to converted into a query string.\r\n *\r\n * @return {string} - The generated query string.\r\n */\r\nexport const queryString = (params: { [key: string]: string | number | boolean }): string => {\r\n const query = Object.keys(params)\r\n .map((k) => `${encodeURIComponent(k)}=${encodeURIComponent(params[k])}`)\r\n .join('&')\r\n\r\n return query.length ? `?${query}` : ''\r\n}\r\n\r\n/**\r\n * Returns the headers for generating PDF files.\r\n *\r\n * @param {string} format - The format of the headers, 'object' or 'http_header'.\r\n *\r\n * @returns {HttpHeaders | { [header: string]: string | string[] }} - The headers for generating PDF files.\r\n */\r\nexport const pdfHeaders = (format: 'object' | 'http_header' = 'object'): HttpHeaders | { [header: string]: string | string[] } => {\r\n const headers = {\r\n 'Accept': 'application/pdf'\r\n }\r\n\r\n return format === 'object'\r\n ? headers\r\n : new HttpHeaders(headers)\r\n}\r\n\r\n/**\r\n * Returns the headers for generating XML files.\r\n *\r\n * @param {string} format - The format of the headers, 'object' or 'http_header'.\r\n *\r\n * @returns {HttpHeaders | { [header: string]: string | string[] }} - The headers for generating XML files.\r\n */\r\nexport const xmlHeaders = (format: 'object' | 'http_header' = 'object'): HttpHeaders | { [header: string]: string | string[] } => {\r\n const headers = {\r\n 'Accept': 'application/xml',\r\n }\r\n\r\n return format === 'object'\r\n ? headers\r\n : new HttpHeaders(headers)\r\n}\r\n","/*\r\n * Public API Surface of ngx-services\r\n */\r\nexport * from './lib/ngx-services.module'\r\n\r\n// api services\r\nexport * from './lib/apis/api-security.service'\r\nexport * from './lib/apis/api-security.models'\r\n\r\n// interceptors\r\nexport * from './lib/interceptors/api-token.interceptor'\r\nexport * from './lib/interceptors/api-headers.interceptor'\r\n\r\n// helpers\r\nexport * from './lib/helpers/http'\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}