ng-easycommerce-v18 0.3.20-beta.1 → 0.3.20

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 (50) hide show
  1. package/README.md +1 -12
  2. package/esm2022/lib/constants/api.constants.service.mjs +15 -19
  3. package/esm2022/lib/constants/core.constants.service.mjs +5 -5
  4. package/esm2022/lib/ec-components/abstractions-components/menu-ec.component.mjs +1 -17
  5. package/esm2022/lib/ec-components/auth-ec/login-form-ec/login-form-ec.component.mjs +16 -26
  6. package/esm2022/lib/ec-components/auth-ec/password-reset-ec/password-reset-ec.component.mjs +21 -25
  7. package/esm2022/lib/ec-components/blocks-ec/block-products-ec/block-products-ec.component.mjs +16 -4
  8. package/esm2022/lib/ec-components/filters-ec/filters-ec.component.mjs +6 -31
  9. package/esm2022/lib/ec-components/header-ec/header-ec.component.mjs +21 -29
  10. package/esm2022/lib/ec-components/product-detail-ec/product-detail-ec.component.mjs +7 -12
  11. package/esm2022/lib/ec-components/stores-ec/stores-ec.component.mjs +9 -18
  12. package/esm2022/lib/ec-components/widgets-ec/decidir-ec/decidir-ec.component.mjs +6 -12
  13. package/esm2022/lib/ec-components/widgets-ec/magnizoom-ec/magnizoom-ec.component.mjs +4 -6
  14. package/esm2022/lib/ec-services/analytics/google-analytics.service.mjs +4 -4
  15. package/esm2022/lib/ec-services/analytics/gtm.service.mjs +6 -10
  16. package/esm2022/lib/ec-services/analytics/metricool-pixel.service.mjs +18 -17
  17. package/esm2022/lib/ec-services/checkout.service.mjs +2 -4
  18. package/esm2022/lib/ec-services/index.mjs +1 -3
  19. package/esm2022/lib/interceptors/index.mjs +1 -2
  20. package/esm2022/lib/interfaces/environment.mjs +1 -1
  21. package/esm2022/lib/interfaces/filter.mjs +1 -1
  22. package/esm2022/lib/interfaces/index.mjs +1 -2
  23. package/esm2022/lib/interfaces/options.mjs +1 -1
  24. package/esm2022/lib/providers/index.mjs +1 -2
  25. package/fesm2022/ng-easycommerce-v18.mjs +208 -694
  26. package/fesm2022/ng-easycommerce-v18.mjs.map +1 -1
  27. package/lib/constants/api.constants.service.d.ts +0 -1
  28. package/lib/ec-components/abstractions-components/menu-ec.component.d.ts +0 -12
  29. package/lib/ec-components/auth-ec/login-form-ec/login-form-ec.component.d.ts +0 -2
  30. package/lib/ec-components/filters-ec/filters-ec.component.d.ts +4 -12
  31. package/lib/ec-services/analytics/google-analytics.service.d.ts +1 -1
  32. package/lib/ec-services/analytics/gtm.service.d.ts +2 -2
  33. package/lib/ec-services/index.d.ts +0 -2
  34. package/lib/interceptors/index.d.ts +0 -1
  35. package/lib/interfaces/environment.d.ts +0 -1
  36. package/lib/interfaces/filter.d.ts +0 -1
  37. package/lib/interfaces/index.d.ts +0 -1
  38. package/lib/interfaces/options.d.ts +0 -2
  39. package/lib/providers/index.d.ts +0 -1
  40. package/package.json +1 -1
  41. package/esm2022/lib/ec-services/base-api.service.mjs +0 -148
  42. package/esm2022/lib/ec-services/runtime-config.service.mjs +0 -190
  43. package/esm2022/lib/interceptors/runtime-config.interceptor.mjs +0 -41
  44. package/esm2022/lib/interfaces/runtime-config.mjs +0 -2
  45. package/esm2022/lib/providers/provideRuntimeConfig.mjs +0 -42
  46. package/lib/ec-services/base-api.service.d.ts +0 -64
  47. package/lib/ec-services/runtime-config.service.d.ts +0 -63
  48. package/lib/interceptors/runtime-config.interceptor.d.ts +0 -7
  49. package/lib/interfaces/runtime-config.d.ts +0 -22
  50. package/lib/providers/provideRuntimeConfig.d.ts +0 -13
@@ -7,7 +7,6 @@ import * as i0 from "@angular/core";
7
7
  export declare class ApiConstantsService {
8
8
  private _localStorage;
9
9
  private _translate;
10
- private _runtimeConfig;
11
10
  /**
12
11
  * Contiene los datos provisto por el frontend en el archivo environment.ts
13
12
  */
@@ -75,18 +75,6 @@ export declare class MenuEcComponent {
75
75
  * @returns true si la categoría es visible, false en caso contrario
76
76
  */
77
77
  hasVisibleProperty(category: Category): boolean;
78
- private filterVisibleTree;
79
- categoriesVisible$: Observable<Category[]>;
80
- sectionsVisible$: Observable<Section[]>;
81
- attributesVisible$: Observable<Attribute[]>;
82
- getVisibleChildren<T extends {
83
- isVisible?: boolean;
84
- children?: T[];
85
- }>(node?: T): T[];
86
- hasVisibleChildren<T extends {
87
- isVisible?: boolean;
88
- children?: T[];
89
- }>(node?: T): boolean;
90
78
  static ɵfac: i0.ɵɵFactoryDeclaration<MenuEcComponent, never>;
91
79
  static ɵcmp: i0.ɵɵComponentDeclaration<MenuEcComponent, "lib-footer-ec", never, {}, {}, never, never, true, never>;
92
80
  }
@@ -2,12 +2,10 @@ import { EventEmitter } from '@angular/core';
2
2
  import { UserRoleType } from '../../../interfaces';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class LoginFormEcComponent {
5
- private platformId;
6
5
  private _authService;
7
6
  private _formBuilder;
8
7
  private _toastService;
9
8
  private _router;
10
- constructor(platformId: Object);
11
9
  showPassword: boolean;
12
10
  /**
13
11
  * Parametro para indicar si tras loguear
@@ -44,19 +44,11 @@ export declare class FiltersEcComponent {
44
44
  scrollUp: () => boolean;
45
45
  hasAppliedFilters(): boolean;
46
46
  /**
47
- * Verifica si una categoría tiene la propiedad isVisible y está marcada como visible
48
- * @param category - La categoría a verificar
49
- * @returns true si la categoría es visible, false en caso contrario
50
- */
47
+ * Verifica si una categoría tiene la propiedad isVisible y está marcada como visible
48
+ * @param category - La categoría a verificar
49
+ * @returns true si la categoría es visible, false en caso contrario
50
+ */
51
51
  hasVisibleProperty(category: FilterElement): boolean;
52
- /** Lista visible (filtra recursivo por isVisible) */
53
- getVisibleData(filter: Filter | null): FilterElement[];
54
- /** Children visibles de un nodo */
55
- getVisibleChildren(node?: FilterElement): FilterElement[];
56
- /** Tiene hijos visibles? */
57
- hasVisibleChildren(node?: FilterElement): boolean;
58
- /** Utilidad recursiva */
59
- private filterVisibleTree;
60
52
  static ɵfac: i0.ɵɵFactoryDeclaration<FiltersEcComponent, never>;
61
53
  static ɵcmp: i0.ɵɵComponentDeclaration<FiltersEcComponent, "lib-filters-ec", never, { "setSelect": { "alias": "setSelect"; "required": false; }; }, {}, never, never, true, never>;
62
54
  }
@@ -44,7 +44,7 @@ export declare class GoogleAnalyticsService {
44
44
  * @param event_name
45
45
  * @returns
46
46
  */
47
- translateEventName(event_name: AnalyticEventKey): "view_item" | "purchase" | "add_payment_info" | "remove_from_cart" | "view_item_list" | "sign_up" | "add_to_cart" | "begin_checkout" | "add_shipping_info" | null;
47
+ translateEventName(event_name: AnalyticEventKey): "view_item" | "view_item_list" | "begin_checkout" | "add_shipping_info" | "add_payment_info" | "purchase" | "add_to_cart" | "remove_from_cart" | "sign_up" | null;
48
48
  /**
49
49
  * Evalua el evento y devuelve los datos de las funciones relacionadas.
50
50
  * @param event_name Nombre del evento
@@ -23,7 +23,6 @@ export declare class GTMService {
23
23
  private window?;
24
24
  private rendererFactory;
25
25
  private document;
26
- private platformId;
27
26
  /**
28
27
  * Servicio de ruteo de angular.
29
28
  */
@@ -32,6 +31,7 @@ export declare class GTMService {
32
31
  * Configuración de Google Tag Manager.
33
32
  */
34
33
  private config;
34
+ private platformId;
35
35
  constructor();
36
36
  /**
37
37
  * Obtiene el dataLayer del objecto window
@@ -67,7 +67,7 @@ export declare class GTMService {
67
67
  * @param event_name
68
68
  * @returns
69
69
  */
70
- translateEventName(event_name: AnalyticEventKey): "view_item" | "purchase" | "add_payment_info" | "remove_from_cart" | "view_item_list" | "sign_up" | "add_to_cart" | "select_promotion" | "select_item" | "begin_checkout" | "add_shipping_info" | null;
70
+ translateEventName(event_name: AnalyticEventKey): "view_item" | "view_item_list" | "begin_checkout" | "add_shipping_info" | "add_payment_info" | "purchase" | "add_to_cart" | "remove_from_cart" | "sign_up" | "select_promotion" | "select_item" | null;
71
71
  /**
72
72
  * Evalua el evento y devuelve los datos de las funciones relacionadas.
73
73
  * @param event_name Nombre del evento
@@ -24,5 +24,3 @@ export * from './order-utility.service';
24
24
  export * from './payment.service';
25
25
  export * from './test.service';
26
26
  export * from './orders.service';
27
- export * from './runtime-config.service';
28
- export * from './base-api.service';
@@ -1,2 +1 @@
1
1
  export * from './auth.interceptor';
2
- export * from './runtime-config.interceptor';
@@ -4,5 +4,4 @@ export interface Environment {
4
4
  frontendUrl?: string;
5
5
  locale: string;
6
6
  channel: string;
7
- appEnv?: string;
8
7
  }
@@ -20,7 +20,6 @@ export interface FilterElement {
20
20
  title: string;
21
21
  type: ElementType;
22
22
  code: string;
23
- isVisible?: boolean;
24
23
  multi?: boolean;
25
24
  children?: FilterElement[];
26
25
  shape?: FilterShape;
@@ -16,4 +16,3 @@ export * from './coupon';
16
16
  export * from './step';
17
17
  export * from './checkout';
18
18
  export * from './faqs';
19
- export * from './runtime-config';
@@ -4,7 +4,6 @@ export interface Category {
4
4
  slug: string;
5
5
  position: number;
6
6
  path: string;
7
- isVisible?: boolean;
8
7
  children?: Category[];
9
8
  images?: any[];
10
9
  }
@@ -24,5 +23,4 @@ export interface Attribute {
24
23
  slug: string;
25
24
  useToFilter: boolean;
26
25
  styles?: any[];
27
- isVisible?: boolean;
28
26
  }
@@ -1,2 +1 @@
1
1
  export * from './provideEnvironment';
2
- export * from './provideRuntimeConfig';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ng-easycommerce-v18",
3
- "version": "0.3.20-beta.1",
3
+ "version": "0.3.20",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^18.2.0",
6
6
  "@angular/core": "^18.2.0"
@@ -1,148 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { HttpHeaders } from '@angular/common/http';
3
- import { switchMap } from 'rxjs';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/common/http";
6
- import * as i2 from "./runtime-config.service";
7
- /**
8
- * Servicio base para realizar peticiones HTTP usando configuración dinámica
9
- * Todos los servicios de la aplicación deben extender este servicio o usar sus métodos
10
- */
11
- export class BaseApiService {
12
- http;
13
- runtimeConfigService;
14
- constructor(http, runtimeConfigService) {
15
- this.http = http;
16
- this.runtimeConfigService = runtimeConfigService;
17
- }
18
- /**
19
- * Construye una URL completa usando la API_URL del runtime
20
- */
21
- buildApiUrl(endpoint) {
22
- return this.runtimeConfigService.buildApiUrl(endpoint);
23
- }
24
- /**
25
- * Obtiene headers comunes que incluyen información del runtime
26
- */
27
- getCommonHeaders() {
28
- const config = this.runtimeConfigService.getConfig();
29
- let headers = new HttpHeaders({
30
- 'Content-Type': 'application/json'
31
- });
32
- if (config) {
33
- headers = headers
34
- .set('X-Channel', config.channel)
35
- .set('X-Locale', config.locale)
36
- .set('X-Environment', config.appEnv);
37
- }
38
- return headers;
39
- }
40
- /**
41
- * Método GET genérico
42
- */
43
- get(endpoint, options = {}) {
44
- const url = this.buildApiUrl(endpoint);
45
- const headers = this.mergeHeaders(options.headers);
46
- return this.http.get(url, {
47
- ...options,
48
- headers
49
- });
50
- }
51
- /**
52
- * Método POST genérico
53
- */
54
- post(endpoint, data, options = {}) {
55
- const url = this.buildApiUrl(endpoint);
56
- const headers = this.mergeHeaders(options.headers);
57
- return this.http.post(url, data, {
58
- ...options,
59
- headers
60
- });
61
- }
62
- /**
63
- * Método PUT genérico
64
- */
65
- put(endpoint, data, options = {}) {
66
- const url = this.buildApiUrl(endpoint);
67
- const headers = this.mergeHeaders(options.headers);
68
- return this.http.put(url, data, {
69
- ...options,
70
- headers
71
- });
72
- }
73
- /**
74
- * Método PATCH genérico
75
- */
76
- patch(endpoint, data, options = {}) {
77
- const url = this.buildApiUrl(endpoint);
78
- const headers = this.mergeHeaders(options.headers);
79
- return this.http.patch(url, data, {
80
- ...options,
81
- headers
82
- });
83
- }
84
- /**
85
- * Método DELETE genérico
86
- */
87
- delete(endpoint, options = {}) {
88
- const url = this.buildApiUrl(endpoint);
89
- const headers = this.mergeHeaders(options.headers);
90
- return this.http.delete(url, {
91
- ...options,
92
- headers
93
- });
94
- }
95
- /**
96
- * Método para peticiones que necesitan esperar a que la config esté cargada
97
- */
98
- getWithConfig(endpoint, options = {}) {
99
- return this.runtimeConfigService.config$.pipe(switchMap(config => {
100
- if (!config) {
101
- throw new Error('Runtime config not loaded');
102
- }
103
- return this.get(endpoint, options);
104
- }));
105
- }
106
- /**
107
- * Método para POST que necesitan esperar a que la config esté cargada
108
- */
109
- postWithConfig(endpoint, data, options = {}) {
110
- return this.runtimeConfigService.config$.pipe(switchMap(config => {
111
- if (!config) {
112
- throw new Error('Runtime config not loaded');
113
- }
114
- return this.post(endpoint, data, options);
115
- }));
116
- }
117
- /**
118
- * Combina headers personalizados con los headers comunes
119
- */
120
- mergeHeaders(customHeaders) {
121
- let headers = this.getCommonHeaders();
122
- if (customHeaders) {
123
- if (customHeaders instanceof HttpHeaders) {
124
- customHeaders.keys().forEach(key => {
125
- const values = customHeaders.getAll(key);
126
- if (values) {
127
- headers = headers.set(key, values);
128
- }
129
- });
130
- }
131
- else {
132
- Object.keys(customHeaders).forEach(key => {
133
- headers = headers.set(key, customHeaders[key]);
134
- });
135
- }
136
- }
137
- return headers;
138
- }
139
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BaseApiService, deps: [{ token: i1.HttpClient }, { token: i2.RuntimeConfigService }], target: i0.ɵɵFactoryTarget.Injectable });
140
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BaseApiService, providedIn: 'root' });
141
- }
142
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BaseApiService, decorators: [{
143
- type: Injectable,
144
- args: [{
145
- providedIn: 'root'
146
- }]
147
- }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.RuntimeConfigService }] });
148
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1hcGkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1zZXJ2aWNlcy9iYXNlLWFwaS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFjLFdBQVcsRUFBYyxNQUFNLHNCQUFzQixDQUFDO0FBQzNFLE9BQU8sRUFBYyxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7QUFTN0M7OztHQUdHO0FBSUgsTUFBTSxPQUFPLGNBQWM7SUFHYjtJQUNBO0lBRlosWUFDWSxJQUFnQixFQUNoQixvQkFBMEM7UUFEMUMsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO0lBQ25ELENBQUM7SUFFSjs7T0FFRztJQUNPLFdBQVcsQ0FBQyxRQUFnQjtRQUNwQyxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVEOztPQUVHO0lBQ08sZ0JBQWdCO1FBQ3hCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNyRCxJQUFJLE9BQU8sR0FBRyxJQUFJLFdBQVcsQ0FBQztZQUM1QixjQUFjLEVBQUUsa0JBQWtCO1NBQ25DLENBQUMsQ0FBQztRQUVILElBQUksTUFBTSxFQUFFLENBQUM7WUFDWCxPQUFPLEdBQUcsT0FBTztpQkFDZCxHQUFHLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUM7aUJBQ2hDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQztpQkFDOUIsR0FBRyxDQUFDLGVBQWUsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekMs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SlUsY0FBYzs0R0FBZCxjQUFjLGNBRmIsTUFBTTs7NEZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycywgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUnVudGltZUNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuL3J1bnRpbWUtY29uZmlnLnNlcnZpY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFwaVJlcXVlc3RPcHRpb25zIHtcbiAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwgeyBbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXSB9O1xuICBwYXJhbXM/OiBIdHRwUGFyYW1zIHwgeyBbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdIH07XG4gIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogU2VydmljaW8gYmFzZSBwYXJhIHJlYWxpemFyIHBldGljaW9uZXMgSFRUUCB1c2FuZG8gY29uZmlndXJhY2nDs24gZGluw6FtaWNhXG4gKiBUb2RvcyBsb3Mgc2VydmljaW9zIGRlIGxhIGFwbGljYWNpw7NuIGRlYmVuIGV4dGVuZGVyIGVzdGUgc2VydmljaW8gbyB1c2FyIHN1cyBtw6l0b2Rvc1xuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBCYXNlQXBpU2VydmljZSB7XG4gIFxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgaHR0cDogSHR0cENsaWVudCxcbiAgICBwcm90ZWN0ZWQgcnVudGltZUNvbmZpZ1NlcnZpY2U6IFJ1bnRpbWVDb25maWdTZXJ2aWNlXG4gICkge31cblxuICAvKipcbiAgICogQ29uc3RydXllIHVuYSBVUkwgY29tcGxldGEgdXNhbmRvIGxhIEFQSV9VUkwgZGVsIHJ1bnRpbWVcbiAgICovXG4gIHByb3RlY3RlZCBidWlsZEFwaVVybChlbmRwb2ludDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ydW50aW1lQ29uZmlnU2VydmljZS5idWlsZEFwaVVybChlbmRwb2ludCk7XG4gIH1cblxuICAvKipcbiAgICogT2J0aWVuZSBoZWFkZXJzIGNvbXVuZXMgcXVlIGluY2x1eWVuIGluZm9ybWFjacOzbiBkZWwgcnVudGltZVxuICAgKi9cbiAgcHJvdGVjdGVkIGdldENvbW1vbkhlYWRlcnMoKTogSHR0cEhlYWRlcnMge1xuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMucnVudGltZUNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCk7XG4gICAgbGV0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgIH0pO1xuXG4gICAgaWYgKGNvbmZpZykge1xuICAgICAgaGVhZGVycyA9IGhlYWRlcnNcbiAgICAgICAgLnNldCgnWC1DaGFubmVsJywgY29uZmlnLmNoYW5uZWwpXG4gICAgICAgIC5zZXQoJ1gtTG9jYWxlJywgY29uZmlnLmxvY2FsZSlcbiAgICAgICAgLnNldCgnWC1FbnZpcm9ubWVudCcsIGNvbmZpZy5hcHBFbnYpO1xuICAgIH1cblxuICAgIHJldHVybiBoZWFkZXJzO1xuICB9XG5cbiAgLyoqXG4gICAqIE3DqXRvZG8gR0VUIGdlbsOpcmljb1xuICAgKi9cbiAgZ2V0PFQ+KGVuZHBvaW50OiBzdHJpbmcsIG9wdGlvbnM6IEFwaVJlcXVlc3RPcHRpb25zID0ge30pOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkQXBpVXJsKGVuZHBvaW50KTtcbiAgICBjb25zdCBoZWFkZXJzID0gdGhpcy5tZXJnZUhlYWRlcnMob3B0aW9ucy5oZWFkZXJzKTtcbiAgICBcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxUPih1cmwsIHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBoZWFkZXJzXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogTcOpdG9kbyBQT1NUIGdlbsOpcmljb1xuICAgKi9cbiAgcG9zdDxUPihlbmRwb2ludDogc3RyaW5nLCBkYXRhOiBhbnksIG9wdGlvbnM6IEFwaVJlcXVlc3RPcHRpb25zID0ge30pOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkQXBpVXJsKGVuZHBvaW50KTtcbiAgICBjb25zdCBoZWFkZXJzID0gdGhpcy5tZXJnZUhlYWRlcnMob3B0aW9ucy5oZWFkZXJzKTtcblxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxUPih1cmwsIGRhdGEsIHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBoZWFkZXJzXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogTcOpdG9kbyBQVVQgZ2Vuw6lyaWNvXG4gICAqL1xuICBwdXQ8VD4oZW5kcG9pbnQ6IHN0cmluZywgZGF0YTogYW55LCBvcHRpb25zOiBBcGlSZXF1ZXN0T3B0aW9ucyA9IHt9KTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5idWlsZEFwaVVybChlbmRwb2ludCk7XG4gICAgY29uc3QgaGVhZGVycyA9IHRoaXMubWVyZ2VIZWFkZXJzKG9wdGlvbnMuaGVhZGVycyk7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dDxUPih1cmwsIGRhdGEsIHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBoZWFkZXJzXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogTcOpdG9kbyBQQVRDSCBnZW7DqXJpY29cbiAgICovXG4gIHBhdGNoPFQ+KGVuZHBvaW50OiBzdHJpbmcsIGRhdGE6IGFueSwgb3B0aW9uczogQXBpUmVxdWVzdE9wdGlvbnMgPSB7fSk6IE9ic2VydmFibGU8VD4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRBcGlVcmwoZW5kcG9pbnQpO1xuICAgIGNvbnN0IGhlYWRlcnMgPSB0aGlzLm1lcmdlSGVhZGVycyhvcHRpb25zLmhlYWRlcnMpO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wYXRjaDxUPih1cmwsIGRhdGEsIHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBoZWFkZXJzXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogTcOpdG9kbyBERUxFVEUgZ2Vuw6lyaWNvXG4gICAqL1xuICBkZWxldGU8VD4oZW5kcG9pbnQ6IHN0cmluZywgb3B0aW9uczogQXBpUmVxdWVzdE9wdGlvbnMgPSB7fSk6IE9ic2VydmFibGU8VD4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRBcGlVcmwoZW5kcG9pbnQpO1xuICAgIGNvbnN0IGhlYWRlcnMgPSB0aGlzLm1lcmdlSGVhZGVycyhvcHRpb25zLmhlYWRlcnMpO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGU8VD4odXJsLCB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgaGVhZGVyc1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE3DqXRvZG8gcGFyYSBwZXRpY2lvbmVzIHF1ZSBuZWNlc2l0YW4gZXNwZXJhciBhIHF1ZSBsYSBjb25maWcgZXN0w6kgY2FyZ2FkYVxuICAgKi9cbiAgZ2V0V2l0aENvbmZpZzxUPihlbmRwb2ludDogc3RyaW5nLCBvcHRpb25zOiBBcGlSZXF1ZXN0T3B0aW9ucyA9IHt9KTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMucnVudGltZUNvbmZpZ1NlcnZpY2UuY29uZmlnJC5waXBlKFxuICAgICAgc3dpdGNoTWFwKGNvbmZpZyA9PiB7XG4gICAgICAgIGlmICghY29uZmlnKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSdW50aW1lIGNvbmZpZyBub3QgbG9hZGVkJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0PFQ+KGVuZHBvaW50LCBvcHRpb25zKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNw6l0b2RvIHBhcmEgUE9TVCBxdWUgbmVjZXNpdGFuIGVzcGVyYXIgYSBxdWUgbGEgY29uZmlnIGVzdMOpIGNhcmdhZGFcbiAgICovXG4gIHBvc3RXaXRoQ29uZmlnPFQ+KGVuZHBvaW50OiBzdHJpbmcsIGRhdGE6IGFueSwgb3B0aW9uczogQXBpUmVxdWVzdE9wdGlvbnMgPSB7fSk6IE9ic2VydmFibGU8VD4ge1xuICAgIHJldHVybiB0aGlzLnJ1bnRpbWVDb25maWdTZXJ2aWNlLmNvbmZpZyQucGlwZShcbiAgICAgIHN3aXRjaE1hcChjb25maWcgPT4ge1xuICAgICAgICBpZiAoIWNvbmZpZykge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUnVudGltZSBjb25maWcgbm90IGxvYWRlZCcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnBvc3Q8VD4oZW5kcG9pbnQsIGRhdGEsIG9wdGlvbnMpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbWJpbmEgaGVhZGVycyBwZXJzb25hbGl6YWRvcyBjb24gbG9zIGhlYWRlcnMgY29tdW5lc1xuICAgKi9cbiAgcHJpdmF0ZSBtZXJnZUhlYWRlcnMoY3VzdG9tSGVhZGVycz86IEh0dHBIZWFkZXJzIHwgeyBbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXSB9KTogSHR0cEhlYWRlcnMge1xuICAgIGxldCBoZWFkZXJzID0gdGhpcy5nZXRDb21tb25IZWFkZXJzKCk7XG5cbiAgICBpZiAoY3VzdG9tSGVhZGVycykge1xuICAgICAgaWYgKGN1c3RvbUhlYWRlcnMgaW5zdGFuY2VvZiBIdHRwSGVhZGVycykge1xuICAgICAgICBjdXN0b21IZWFkZXJzLmtleXMoKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgY29uc3QgdmFsdWVzID0gY3VzdG9tSGVhZGVycy5nZXRBbGwoa2V5KTtcbiAgICAgICAgICBpZiAodmFsdWVzKSB7XG4gICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoa2V5LCB2YWx1ZXMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBPYmplY3Qua2V5cyhjdXN0b21IZWFkZXJzKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KGtleSwgY3VzdG9tSGVhZGVyc1trZXldKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGhlYWRlcnM7XG4gIH1cbn0iXX0=
@@ -1,190 +0,0 @@
1
- import { Injectable, Inject, PLATFORM_ID } from '@angular/core';
2
- import { isPlatformBrowser } from '@angular/common';
3
- import { of, BehaviorSubject } from 'rxjs';
4
- import { catchError, tap, shareReplay } from 'rxjs/operators';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/common/http";
7
- export class RuntimeConfigService {
8
- platformId;
9
- http;
10
- configSubject = new BehaviorSubject(null);
11
- config$ = this.configSubject.asObservable();
12
- _config = null;
13
- _loadPromise = null;
14
- _isLoaded = false;
15
- constructor(platformId, http) {
16
- this.platformId = platformId;
17
- this.http = http;
18
- // En SSR o browser, intentar cargar inmediatamente desde window si está disponible
19
- if (typeof window !== 'undefined' && window.__RUNTIME_CONFIG__ && !this._isLoaded) {
20
- this._config = window.__RUNTIME_CONFIG__;
21
- this._isLoaded = true;
22
- this.configSubject.next(this._config);
23
- }
24
- }
25
- /**
26
- * Inicialización única - llamada por APP_INITIALIZER
27
- * Garantiza que la configuración se carga solo una vez al inicio
28
- */
29
- initialize() {
30
- if (this._isLoaded && this._config) {
31
- return Promise.resolve(this._config);
32
- }
33
- return new Promise((resolve, reject) => {
34
- this.loadConfig().subscribe({
35
- next: (config) => {
36
- this._isLoaded = true;
37
- resolve(config);
38
- },
39
- error: (error) => {
40
- reject(error);
41
- }
42
- });
43
- });
44
- }
45
- /**
46
- * Carga la configuración en runtime (optimizada para una sola carga)
47
- * - En SSR: Lee desde el objeto window inyectado por el servidor
48
- * - En Browser: Hace petición HTTP a /runtime-config.json (solo si no está en window)
49
- */
50
- loadConfig() {
51
- // Si ya tenemos la config cargada, la devolvemos inmediatamente
52
- if (this._isLoaded && this._config) {
53
- return of(this._config);
54
- }
55
- // Si ya hay una carga en progreso, reutilizamos esa petición
56
- if (this._loadPromise) {
57
- return this._loadPromise;
58
- }
59
- if (isPlatformBrowser(this.platformId)) {
60
- // En el navegador, primero intentamos obtener la config desde window
61
- if (typeof window !== 'undefined' && window.__RUNTIME_CONFIG__ && !this._isLoaded) {
62
- this._config = window.__RUNTIME_CONFIG__;
63
- this._isLoaded = true;
64
- this.configSubject.next(this._config);
65
- return of(this._config);
66
- }
67
- // Si no está en window, hacemos petición HTTP (solo una vez)
68
- this._loadPromise = this.http.get('/runtime-config.json').pipe(tap(config => {
69
- this._config = config;
70
- this._isLoaded = true;
71
- this.configSubject.next(config);
72
- // Guardamos en window para siguientes accesos
73
- if (typeof window !== 'undefined') {
74
- window.__RUNTIME_CONFIG__ = config;
75
- }
76
- }), shareReplay(1), // Cache la respuesta para múltiples suscripciones
77
- catchError(error => {
78
- console.error('Error loading runtime config:', error);
79
- // Fallback config si falla la carga
80
- const fallbackConfig = {
81
- apiUrl: 'https://elden-preprod.backend.easycommerce.com.ar/',
82
- appEnv: 'preprod',
83
- production: false,
84
- locale: 'es_AR',
85
- channel: 'minorista'
86
- };
87
- this._config = fallbackConfig;
88
- this._isLoaded = true;
89
- this.configSubject.next(fallbackConfig);
90
- return of(fallbackConfig);
91
- }));
92
- return this._loadPromise;
93
- }
94
- else {
95
- // En SSR, leemos desde window que fue inyectado por el servidor
96
- if (typeof window !== 'undefined' && window.__RUNTIME_CONFIG__ && !this._isLoaded) {
97
- this._config = window.__RUNTIME_CONFIG__;
98
- this._isLoaded = true;
99
- this.configSubject.next(this._config);
100
- return of(this._config);
101
- }
102
- // Fallback para SSR si no hay config inyectada
103
- // En el servidor, las variables de entorno se configuran desde el server.ts
104
- const fallbackConfig = {
105
- apiUrl: 'https://elden-preprod.backend.easycommerce.com.ar/',
106
- appEnv: 'preprod',
107
- production: false,
108
- locale: 'es_AR',
109
- channel: 'minorista'
110
- };
111
- this._config = fallbackConfig;
112
- this._isLoaded = true;
113
- this.configSubject.next(fallbackConfig);
114
- return of(fallbackConfig);
115
- }
116
- }
117
- /**
118
- * Obtiene la configuración actual (síncrono)
119
- */
120
- getConfig() {
121
- return this._config;
122
- }
123
- /**
124
- * Obtiene la API URL actual
125
- */
126
- getApiUrl() {
127
- return this._config?.apiUrl || 'https://elden-preprod.backend.easycommerce.com.ar/';
128
- }
129
- /**
130
- * Obtiene la Frontend URL actual
131
- */
132
- getFrontendUrl() {
133
- return this._config?.frontendUrl;
134
- }
135
- /**
136
- * Obtiene el entorno actual
137
- */
138
- getAppEnv() {
139
- return this._config?.appEnv || 'development';
140
- }
141
- /**
142
- * Verifica si estamos en producción
143
- */
144
- isProduction() {
145
- return this._config?.production || false;
146
- }
147
- /**
148
- * Obtiene el locale actual
149
- */
150
- getLocale() {
151
- return this._config?.locale || 'es_AR';
152
- }
153
- /**
154
- * Obtiene el canal actual
155
- */
156
- getChannel() {
157
- return this._config?.channel || 'minorista';
158
- }
159
- /**
160
- * Método helper para construir URLs de API
161
- */
162
- buildApiUrl(endpoint) {
163
- const apiUrl = this.getApiUrl();
164
- const cleanEndpoint = endpoint.startsWith('/') ? endpoint.slice(1) : endpoint;
165
- return `${apiUrl}${cleanEndpoint}`;
166
- }
167
- /**
168
- * Método helper para construir URLs del frontend
169
- */
170
- buildFrontendUrl(path) {
171
- const frontendUrl = this.getFrontendUrl();
172
- if (!frontendUrl) {
173
- return path;
174
- }
175
- const cleanPath = path.startsWith('/') ? path.slice(1) : path;
176
- return `${frontendUrl}${cleanPath}`;
177
- }
178
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RuntimeConfigService, deps: [{ token: PLATFORM_ID }, { token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
179
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RuntimeConfigService, providedIn: 'root' });
180
- }
181
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RuntimeConfigService, decorators: [{
182
- type: Injectable,
183
- args: [{
184
- providedIn: 'root'
185
- }]
186
- }], ctorParameters: () => [{ type: Object, decorators: [{
187
- type: Inject,
188
- args: [PLATFORM_ID]
189
- }] }, { type: i1.HttpClient }] });
190
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS1jb25maWcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1zZXJ2aWNlcy9ydW50aW1lLWNvbmZpZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVwRCxPQUFPLEVBQWMsRUFBRSxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2RCxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBUTlELE1BQU0sT0FBTyxvQkFBb0I7SUFTQTtJQUNyQjtJQVRGLGFBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBdUIsSUFBSSxDQUFDLENBQUM7SUFDakUsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFM0MsT0FBTyxHQUF5QixJQUFJLENBQUM7SUFDckMsWUFBWSxHQUFxQyxJQUFJLENBQUM7SUFDdEQsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUUxQixZQUMrQixVQUFrQixFQUN2QyxJQUFnQjtRQURLLGVBQVUsR0FBVixVQUFVLENBQVE7UUFDdkMsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUV4QixtRkFBbUY7UUFDbkYsSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXLElBQUksTUFBTSxDQUFDLGtCQUFrQixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2xGLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDO1lBQ3pDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3RCLElBQUks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Q0FBQztZQUNqQixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFDRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDOUQsT0FBTyxHQUFHLFdBQVcsR0FBRyxTQUFTLEVBQUUsQ0FBQztJQUN0QyxDQUFDO3dHQS9MVSxvQkFBb0Isa0JBU3JCLFdBQVc7NEdBVFYsb0JBQW9CLGNBRm5CLE1BQU07OzRGQUVQLG9CQUFvQjtrQkFIaEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQVVJLE1BQU07MkJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCwgUExBVEZPUk1fSUQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCB0YXAsIHNoYXJlUmVwbGF5IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUnVudGltZUNvbmZpZyB9IGZyb20gJy4uL2ludGVyZmFjZXMvcnVudGltZS1jb25maWcnO1xuXG5kZWNsYXJlIGNvbnN0IHdpbmRvdzogYW55O1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBSdW50aW1lQ29uZmlnU2VydmljZSB7XG4gIHByaXZhdGUgY29uZmlnU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UnVudGltZUNvbmZpZyB8IG51bGw+KG51bGwpO1xuICBwdWJsaWMgY29uZmlnJCA9IHRoaXMuY29uZmlnU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgXG4gIHByaXZhdGUgX2NvbmZpZzogUnVudGltZUNvbmZpZyB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9sb2FkUHJvbWlzZTogT2JzZXJ2YWJsZTxSdW50aW1lQ29uZmlnPiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9pc0xvYWRlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogT2JqZWN0LFxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudFxuICApIHtcbiAgICAvLyBFbiBTU1IgbyBicm93c2VyLCBpbnRlbnRhciBjYXJnYXIgaW5tZWRpYXRhbWVudGUgZGVzZGUgd2luZG93IHNpIGVzdMOhIGRpc3BvbmlibGVcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93Ll9fUlVOVElNRV9DT05GSUdfXyAmJiAhdGhpcy5faXNMb2FkZWQpIHtcbiAgICAgIHRoaXMuX2NvbmZpZyA9IHdpbmRvdy5fX1JVTlRJTUVfQ09ORklHX187XG4gICAgICB0aGlzLl9pc0xvYWRlZCA9IHRydWU7XG4gICAgICB0aGlzLmNvbmZpZ1N1YmplY3QubmV4dCh0aGlzLl9jb25maWcpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJbmljaWFsaXphY2nDs24gw7puaWNhIC0gbGxhbWFkYSBwb3IgQVBQX0lOSVRJQUxJWkVSXG4gICAqIEdhcmFudGl6YSBxdWUgbGEgY29uZmlndXJhY2nDs24gc2UgY2FyZ2Egc29sbyB1bmEgdmV6IGFsIGluaWNpb1xuICAgKi9cbiAgaW5pdGlhbGl6ZSgpOiBQcm9taXNlPFJ1bnRpbWVDb25maWc+IHtcbiAgICBpZiAodGhpcy5faXNMb2FkZWQgJiYgdGhpcy5fY29uZmlnKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuX2NvbmZpZyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMubG9hZENvbmZpZygpLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChjb25maWc6IFJ1bnRpbWVDb25maWcpID0+IHtcbiAgICAgICAgICB0aGlzLl9pc0xvYWRlZCA9IHRydWU7XG4gICAgICAgICAgcmVzb2x2ZShjb25maWcpO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XG4gICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2FyZ2EgbGEgY29uZmlndXJhY2nDs24gZW4gcnVudGltZSAob3B0aW1pemFkYSBwYXJhIHVuYSBzb2xhIGNhcmdhKVxuICAgKiAtIEVuIFNTUjogTGVlIGRlc2RlIGVsIG9iamV0byB3aW5kb3cgaW55ZWN0YWRvIHBvciBlbCBzZXJ2aWRvclxuICAgKiAtIEVuIEJyb3dzZXI6IEhhY2UgcGV0aWNpw7NuIEhUVFAgYSAvcnVudGltZS1jb25maWcuanNvbiAoc29sbyBzaSBubyBlc3TDoSBlbiB3aW5kb3cpXG4gICAqL1xuICBsb2FkQ29uZmlnKCk6IE9ic2VydmFibGU8UnVudGltZUNvbmZpZz4ge1xuICAgIC8vIFNpIHlhIHRlbmVtb3MgbGEgY29uZmlnIGNhcmdhZGEsIGxhIGRldm9sdmVtb3MgaW5tZWRpYXRhbWVudGVcbiAgICBpZiAodGhpcy5faXNMb2FkZWQgJiYgdGhpcy5fY29uZmlnKSB7XG4gICAgICByZXR1cm4gb2YodGhpcy5fY29uZmlnIGFzIFJ1bnRpbWVDb25maWcpO1xuICAgIH1cblxuICAgIC8vIFNpIHlhIGhheSB1bmEgY2FyZ2EgZW4gcHJvZ3Jlc28sIHJldXRpbGl6YW1vcyBlc2EgcGV0aWNpw7NuXG4gICAgaWYgKHRoaXMuX2xvYWRQcm9taXNlKSB7XG4gICAgICByZXR1cm4gdGhpcy5fbG9hZFByb21pc2U7XG4gICAgfVxuXG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgIC8vIEVuIGVsIG5hdmVnYWRvciwgcHJpbWVybyBpbnRlbnRhbW9zIG9idGVuZXIgbGEgY29uZmlnIGRlc2RlIHdpbmRvd1xuICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5fX1JVTlRJTUVfQ09ORklHX18gJiYgIXRoaXMuX2lzTG9hZGVkKSB7XG4gICAgICAgIHRoaXMuX2NvbmZpZyA9IHdpbmRvdy5fX1JVTlRJTUVfQ09ORklHX187XG4gICAgICAgIHRoaXMuX2lzTG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5jb25maWdTdWJqZWN0Lm5leHQodGhpcy5fY29uZmlnKTtcbiAgICAgICAgcmV0dXJuIG9mKHRoaXMuX2NvbmZpZyBhcyBSdW50aW1lQ29uZmlnKTtcbiAgICAgIH1cblxuICAgICAgLy8gU2kgbm8gZXN0w6EgZW4gd2luZG93LCBoYWNlbW9zIHBldGljacOzbiBIVFRQIChzb2xvIHVuYSB2ZXopXG4gICAgICB0aGlzLl9sb2FkUHJvbWlzZSA9IHRoaXMuaHR0cC5nZXQ8UnVudGltZUNvbmZpZz4oJy9ydW50aW1lLWNvbmZpZy5qc29uJykucGlwZShcbiAgICAgICAgdGFwKGNvbmZpZyA9PiB7XG4gICAgICAgICAgdGhpcy5fY29uZmlnID0gY29uZmlnO1xuICAgICAgICAgIHRoaXMuX2lzTG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmNvbmZpZ1N1YmplY3QubmV4dChjb25maWcpO1xuICAgICAgICAgIC8vIEd1YXJkYW1vcyBlbiB3aW5kb3cgcGFyYSBzaWd1aWVudGVzIGFjY2Vzb3NcbiAgICAgICAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHdpbmRvdy5fX1JVTlRJTUVfQ09ORklHX18gPSBjb25maWc7XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgc2hhcmVSZXBsYXkoMSksIC8vIENhY2hlIGxhIHJlc3B1ZXN0YSBwYXJhIG3Dumx0aXBsZXMgc3VzY3JpcGNpb25lc1xuICAgICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBsb2FkaW5nIHJ1bnRpbWUgY29uZmlnOicsIGVycm9yKTtcbiAgICAgICAgICAvLyBGYWxsYmFjayBjb25maWcgc2kgZmFsbGEgbGEgY2FyZ2FcbiAgICAgICAgICBjb25zdCBmYWxsYmFja0NvbmZpZzogUnVudGltZUNvbmZpZyA9IHtcbiAgICAgICAgICAgIGFwaVVybDogJ2h0dHBzOi8vZWxkZW4tcHJlcHJvZC5iYWNrZW5kLmVhc3ljb21tZXJjZS5jb20uYXIvJyxcbiAgICAgICAgICAgIGFwcEVudjogJ3ByZXByb2QnLFxuICAgICAgICAgICAgcHJvZHVjdGlvbjogZmFsc2UsXG4gICAgICAgICAgICBsb2NhbGU6ICdlc19BUicsXG4gICAgICAgICAgICBjaGFubmVsOiAnbWlub3Jpc3RhJ1xuICAgICAgICAgIH07XG4gICAgICAgICAgdGhpcy5fY29uZmlnID0gZmFsbGJhY2tDb25maWc7XG4gICAgICAgICAgdGhpcy5faXNMb2FkZWQgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuY29uZmlnU3ViamVjdC5uZXh0KGZhbGxiYWNrQ29uZmlnKTtcbiAgICAgICAgICByZXR1cm4gb2YoZmFsbGJhY2tDb25maWcpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICAgIFxuICAgICAgcmV0dXJuIHRoaXMuX2xvYWRQcm9taXNlO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBFbiBTU1IsIGxlZW1vcyBkZXNkZSB3aW5kb3cgcXVlIGZ1ZSBpbnllY3RhZG8gcG9yIGVsIHNlcnZpZG9yXG4gICAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93Ll9fUlVOVElNRV9DT05GSUdfXyAmJiAhdGhpcy5faXNMb2FkZWQpIHtcbiAgICAgICAgdGhpcy5fY29uZmlnID0gd2luZG93Ll9fUlVOVElNRV9DT05GSUdfXztcbiAgICAgICAgdGhpcy5faXNMb2FkZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLmNvbmZpZ1N1YmplY3QubmV4dCh0aGlzLl9jb25maWcpO1xuICAgICAgICByZXR1cm4gb2YodGhpcy5fY29uZmlnIGFzIFJ1bnRpbWVDb25maWcpO1xuICAgICAgfVxuXG4gICAgICAvLyBGYWxsYmFjayBwYXJhIFNTUiBzaSBubyBoYXkgY29uZmlnIGlueWVjdGFkYVxuICAgICAgLy8gRW4gZWwgc2Vydmlkb3IsIGxhcyB2YXJpYWJsZXMgZGUgZW50b3JubyBzZSBjb25maWd1cmFuIGRlc2RlIGVsIHNlcnZlci50c1xuICAgICAgY29uc3QgZmFsbGJhY2tDb25maWc6IFJ1bnRpbWVDb25maWcgPSB7XG4gICAgICAgIGFwaVVybDogJ2h0dHBzOi8vZWxkZW4tcHJlcHJvZC5iYWNrZW5kLmVhc3ljb21tZXJjZS5jb20uYXIvJyxcbiAgICAgICAgYXBwRW52OiAncHJlcHJvZCcsXG4gICAgICAgIHByb2R1Y3Rpb246IGZhbHNlLFxuICAgICAgICBsb2NhbGU6ICdlc19BUicsXG4gICAgICAgIGNoYW5uZWw6ICdtaW5vcmlzdGEnXG4gICAgICB9O1xuICAgICAgXG4gICAgICB0aGlzLl9jb25maWcgPSBmYWxsYmFja0NvbmZpZztcbiAgICAgIHRoaXMuX2lzTG9hZGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuY29uZmlnU3ViamVjdC5uZXh0KGZhbGxiYWNrQ29uZmlnKTtcbiAgICAgIHJldHVybiBvZihmYWxsYmFja0NvbmZpZyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE9idGllbmUgbGEgY29uZmlndXJhY2nDs24gYWN0dWFsIChzw61uY3Jvbm8pXG4gICAqL1xuICBnZXRDb25maWcoKTogUnVudGltZUNvbmZpZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9jb25maWc7XG4gIH1cblxuICAvKipcbiAgICogT2J0aWVuZSBsYSBBUEkgVVJMIGFjdHVhbFxuICAgKi9cbiAgZ2V0QXBpVXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbmZpZz8uYXBpVXJsIHx8ICdodHRwczovL2VsZGVuLXByZXByb2QuYmFja2VuZC5lYXN5Y29tbWVyY2UuY29tLmFyLyc7XG4gIH1cblxuICAvKipcbiAgICogT2J0aWVuZSBsYSBGcm9udGVuZCBVUkwgYWN0dWFsXG4gICAqL1xuICBnZXRGcm9udGVuZFVybCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9jb25maWc/LmZyb250ZW5kVXJsO1xuICB9XG5cbiAgLyoqXG4gICAqIE9idGllbmUgZWwgZW50b3JubyBhY3R1YWxcbiAgICovXG4gIGdldEFwcEVudigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9jb25maWc/LmFwcEVudiB8fCAnZGV2ZWxvcG1lbnQnO1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWNhIHNpIGVzdGFtb3MgZW4gcHJvZHVjY2nDs25cbiAgICovXG4gIGlzUHJvZHVjdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fY29uZmlnPy5wcm9kdWN0aW9uIHx8IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIE9idGllbmUgZWwgbG9jYWxlIGFjdHVhbFxuICAgKi9cbiAgZ2V0TG9jYWxlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbmZpZz8ubG9jYWxlIHx8ICdlc19BUic7XG4gIH1cblxuICAvKipcbiAgICogT2J0aWVuZSBlbCBjYW5hbCBhY3R1YWxcbiAgICovXG4gIGdldENoYW5uZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fY29uZmlnPy5jaGFubmVsIHx8ICdtaW5vcmlzdGEnO1xuICB9XG5cbiAgLyoqXG4gICAqIE3DqXRvZG8gaGVscGVyIHBhcmEgY29uc3RydWlyIFVSTHMgZGUgQVBJXG4gICAqL1xuICBidWlsZEFwaVVybChlbmRwb2ludDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBhcGlVcmwgPSB0aGlzLmdldEFwaVVybCgpO1xuICAgIGNvbnN0IGNsZWFuRW5kcG9pbnQgPSBlbmRwb2ludC5zdGFydHNXaXRoKCcvJykgPyBlbmRwb2ludC5zbGljZSgxKSA6IGVuZHBvaW50O1xuICAgIHJldHVybiBgJHthcGlVcmx9JHtjbGVhbkVuZHBvaW50fWA7XG4gIH1cblxuICAvKipcbiAgICogTcOpdG9kbyBoZWxwZXIgcGFyYSBjb25zdHJ1aXIgVVJMcyBkZWwgZnJvbnRlbmRcbiAgICovXG4gIGJ1aWxkRnJvbnRlbmRVcmwocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBmcm9udGVuZFVybCA9IHRoaXMuZ2V0RnJvbnRlbmRVcmwoKTtcbiAgICBpZiAoIWZyb250ZW5kVXJsKSB7XG4gICAgICByZXR1cm4gcGF0aDtcbiAgICB9XG4gICAgY29uc3QgY2xlYW5QYXRoID0gcGF0aC5zdGFydHNXaXRoKCcvJykgPyBwYXRoLnNsaWNlKDEpIDogcGF0aDtcbiAgICByZXR1cm4gYCR7ZnJvbnRlbmRVcmx9JHtjbGVhblBhdGh9YDtcbiAgfVxufSJdfQ==
@@ -1,41 +0,0 @@
1
- import { inject } from '@angular/core';
2
- import { RuntimeConfigService } from '../ec-services/runtime-config.service';
3
- import { switchMap, take, filter } from 'rxjs/operators';
4
- /**
5
- * Interceptor que garantiza que las peticiones HTTP no se hagan hasta que
6
- * el runtime config esté completamente cargado
7
- * Evita que se hagan peticiones con URLs incorrectas
8
- */
9
- export const runtimeConfigInterceptor = (req, next) => {
10
- const runtimeConfigService = inject(RuntimeConfigService);
11
- // Si la petición es para obtener el runtime config, la dejamos pasar inmediatamente
12
- if (req.url.includes('/runtime-config.json')) {
13
- return next(req);
14
- }
15
- // Si la petición es para assets estáticos, la dejamos pasar
16
- if (req.url.includes('/assets/') || req.url.includes('.json') || req.url.includes('.css') || req.url.includes('.js')) {
17
- return next(req);
18
- }
19
- // Para las demás peticiones, esperamos a que el config esté listo
20
- return runtimeConfigService.config$.pipe(filter(config => config !== null), // Esperamos hasta que haya config
21
- take(1), // Solo tomamos el primer valor válido
22
- switchMap(config => {
23
- // Si la URL ya es completa (empieza con http), la dejamos como está
24
- if (req.url.startsWith('http')) {
25
- return next(req);
26
- }
27
- // Si es una URL relativa que debería ir al API, la completamos
28
- if (req.url.startsWith('/api/') || req.url.startsWith('api/')) {
29
- const apiUrl = config.apiUrl;
30
- const cleanUrl = req.url.startsWith('/') ? req.url.substring(1) : req.url;
31
- const fullUrl = `${apiUrl}${cleanUrl}`;
32
- const modifiedReq = req.clone({
33
- url: fullUrl
34
- });
35
- return next(modifiedReq);
36
- }
37
- // Para otras URLs, las dejamos pasar sin modificar
38
- return next(req);
39
- }));
40
- };
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS1jb25maWcuaW50ZXJjZXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvaW50ZXJjZXB0b3JzL3J1bnRpbWUtY29uZmlnLmludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDN0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekQ7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFzQixDQUFDLEdBQXlCLEVBQUUsSUFBbUIsRUFBRSxFQUFFO0lBQzVHLE1BQU0sb0JBQW9CLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFFMUQsb0ZBQW9GO0lBQ3BGLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsc0JBQXNCLENBQUMsRUFBRSxDQUFDO1FBQzdDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFFRCw0REFBNEQ7SUFDNUQsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3JILE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFFRCxrRUFBa0U7SUFDbEUsT0FBTyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUN0QyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLEVBQUUsa0NBQWtDO0lBQ3JFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxzQ0FBc0M7SUFDL0MsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1FBQ2pCLG9FQUFvRTtRQUNwRSxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDL0IsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbkIsQ0FBQztRQUVELCtEQUErRDtRQUMvRCxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDOUQsTUFBTSxNQUFNLEdBQUcsTUFBTyxDQUFDLE1BQU0sQ0FBQztZQUM5QixNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7WUFDMUUsTUFBTSxPQUFPLEdBQUcsR0FBRyxNQUFNLEdBQUcsUUFBUSxFQUFFLENBQUM7WUFFdkMsTUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQztnQkFDNUIsR0FBRyxFQUFFLE9BQU87YUFDYixDQUFDLENBQUM7WUFFSCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMzQixDQUFDO1FBRUQsbURBQW1EO1FBQ25ELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLENBQUMsQ0FBQyxDQUNILENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwSW50ZXJjZXB0b3JGbiwgSHR0cFJlcXVlc3QsIEh0dHBIYW5kbGVyRm4gfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJ1bnRpbWVDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vZWMtc2VydmljZXMvcnVudGltZS1jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAsIHRha2UsIGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuLyoqXG4gKiBJbnRlcmNlcHRvciBxdWUgZ2FyYW50aXphIHF1ZSBsYXMgcGV0aWNpb25lcyBIVFRQIG5vIHNlIGhhZ2FuIGhhc3RhIHF1ZSBcbiAqIGVsIHJ1bnRpbWUgY29uZmlnIGVzdMOpIGNvbXBsZXRhbWVudGUgY2FyZ2Fkb1xuICogRXZpdGEgcXVlIHNlIGhhZ2FuIHBldGljaW9uZXMgY29uIFVSTHMgaW5jb3JyZWN0YXNcbiAqL1xuZXhwb3J0IGNvbnN0IHJ1bnRpbWVDb25maWdJbnRlcmNlcHRvcjogSHR0cEludGVyY2VwdG9yRm4gPSAocmVxOiBIdHRwUmVxdWVzdDx1bmtub3duPiwgbmV4dDogSHR0cEhhbmRsZXJGbikgPT4ge1xuICBjb25zdCBydW50aW1lQ29uZmlnU2VydmljZSA9IGluamVjdChSdW50aW1lQ29uZmlnU2VydmljZSk7XG4gIFxuICAvLyBTaSBsYSBwZXRpY2nDs24gZXMgcGFyYSBvYnRlbmVyIGVsIHJ1bnRpbWUgY29uZmlnLCBsYSBkZWphbW9zIHBhc2FyIGlubWVkaWF0YW1lbnRlXG4gIGlmIChyZXEudXJsLmluY2x1ZGVzKCcvcnVudGltZS1jb25maWcuanNvbicpKSB7XG4gICAgcmV0dXJuIG5leHQocmVxKTtcbiAgfVxuICBcbiAgLy8gU2kgbGEgcGV0aWNpw7NuIGVzIHBhcmEgYXNzZXRzIGVzdMOhdGljb3MsIGxhIGRlamFtb3MgcGFzYXJcbiAgaWYgKHJlcS51cmwuaW5jbHVkZXMoJy9hc3NldHMvJykgfHwgcmVxLnVybC5pbmNsdWRlcygnLmpzb24nKSB8fCByZXEudXJsLmluY2x1ZGVzKCcuY3NzJykgfHwgcmVxLnVybC5pbmNsdWRlcygnLmpzJykpIHtcbiAgICByZXR1cm4gbmV4dChyZXEpO1xuICB9XG5cbiAgLy8gUGFyYSBsYXMgZGVtw6FzIHBldGljaW9uZXMsIGVzcGVyYW1vcyBhIHF1ZSBlbCBjb25maWcgZXN0w6kgbGlzdG9cbiAgcmV0dXJuIHJ1bnRpbWVDb25maWdTZXJ2aWNlLmNvbmZpZyQucGlwZShcbiAgICBmaWx0ZXIoY29uZmlnID0+IGNvbmZpZyAhPT0gbnVsbCksIC8vIEVzcGVyYW1vcyBoYXN0YSBxdWUgaGF5YSBjb25maWdcbiAgICB0YWtlKDEpLCAvLyBTb2xvIHRvbWFtb3MgZWwgcHJpbWVyIHZhbG9yIHbDoWxpZG9cbiAgICBzd2l0Y2hNYXAoY29uZmlnID0+IHtcbiAgICAgIC8vIFNpIGxhIFVSTCB5YSBlcyBjb21wbGV0YSAoZW1waWV6YSBjb24gaHR0cCksIGxhIGRlamFtb3MgY29tbyBlc3TDoVxuICAgICAgaWYgKHJlcS51cmwuc3RhcnRzV2l0aCgnaHR0cCcpKSB7XG4gICAgICAgIHJldHVybiBuZXh0KHJlcSk7XG4gICAgICB9XG4gICAgICBcbiAgICAgIC8vIFNpIGVzIHVuYSBVUkwgcmVsYXRpdmEgcXVlIGRlYmVyw61hIGlyIGFsIEFQSSwgbGEgY29tcGxldGFtb3NcbiAgICAgIGlmIChyZXEudXJsLnN0YXJ0c1dpdGgoJy9hcGkvJykgfHwgcmVxLnVybC5zdGFydHNXaXRoKCdhcGkvJykpIHtcbiAgICAgICAgY29uc3QgYXBpVXJsID0gY29uZmlnIS5hcGlVcmw7XG4gICAgICAgIGNvbnN0IGNsZWFuVXJsID0gcmVxLnVybC5zdGFydHNXaXRoKCcvJykgPyByZXEudXJsLnN1YnN0cmluZygxKSA6IHJlcS51cmw7XG4gICAgICAgIGNvbnN0IGZ1bGxVcmwgPSBgJHthcGlVcmx9JHtjbGVhblVybH1gO1xuICAgICAgICBcbiAgICAgICAgY29uc3QgbW9kaWZpZWRSZXEgPSByZXEuY2xvbmUoe1xuICAgICAgICAgIHVybDogZnVsbFVybFxuICAgICAgICB9KTtcbiAgICAgICAgXG4gICAgICAgIHJldHVybiBuZXh0KG1vZGlmaWVkUmVxKTtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgLy8gUGFyYSBvdHJhcyBVUkxzLCBsYXMgZGVqYW1vcyBwYXNhciBzaW4gbW9kaWZpY2FyXG4gICAgICByZXR1cm4gbmV4dChyZXEpO1xuICAgIH0pXG4gICk7XG59OyJdfQ==
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvaW50ZXJmYWNlcy9ydW50aW1lLWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBSdW50aW1lQ29uZmlnIHtcbiAgYXBpVXJsOiBzdHJpbmc7XG4gIGZyb250ZW5kVXJsPzogc3RyaW5nO1xuICAvKiogQW1iaWVudGUgZGUgbGEgYXBsaWNhY2nDs24uIFZhbG9yZXMgdsOhbGlkb3M6ICdwcm9kJywgJ3ByZXByb2QnLCAndGVzdCcgKi9cbiAgYXBwRW52OiAncHJvZCcgfCAncHJlcHJvZCcgfCAndGVzdCc7XG4gIHByb2R1Y3Rpb246IGJvb2xlYW47XG4gIGxvY2FsZTogc3RyaW5nO1xuICBjaGFubmVsOiBzdHJpbmc7XG4gIHBvcnQ/OiBudW1iZXI7XG4gIGhvc3Q/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmVyRW52aXJvbm1lbnRWYXJpYWJsZXMge1xuICBBUElfVVJMPzogc3RyaW5nO1xuICBGUk9OVEVORF9VUkw/OiBzdHJpbmc7XG4gIC8qKiBBbWJpZW50ZSBkZSBsYSBhcGxpY2FjacOzbi4gVmFsb3JlcyB2w6FsaWRvczogJ3Byb2QnLCAncHJlcHJvZCcsICd0ZXN0JyAqL1xuICBBUFBfRU5WPzogJ3Byb2QnIHwgJ3ByZXByb2QnIHwgJ3Rlc3QnO1xuICBQT1JUPzogc3RyaW5nO1xuICBIT1NUPzogc3RyaW5nO1xuICBOT0RFX0VOVj86ICdkZXZlbG9wbWVudCcgfCAncHJvZHVjdGlvbic7XG4gIExPQ0FMRT86IHN0cmluZztcbiAgQ0hBTk5FTD86IHN0cmluZztcbn0iXX0=