ng-easycommerce-v18 0.3.17-beta.1 → 0.3.17-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -0
- package/esm2022/lib/classes/filters/filter.mjs +27 -2
- package/esm2022/lib/constants/api.constants.service.mjs +41 -44
- package/esm2022/lib/ec-components/abstractions-components/menu-ec.component.mjs +17 -1
- package/esm2022/lib/ec-components/blocks-ec/block-products-ec/block-products-ec.component.mjs +5 -3
- package/esm2022/lib/ec-components/header-ec/header-ec.component.mjs +33 -24
- package/esm2022/lib/ec-components/related-products-ec/related-products-ec.component.mjs +6 -4
- package/esm2022/lib/ec-components/widgets-ec/magnizoom-ec/magnizoom-ec.component.mjs +4 -2
- package/esm2022/lib/ec-services/analytics/facebook-pixel.service.mjs +4 -2
- package/esm2022/lib/ec-services/analytics/google-analytics.service.mjs +4 -2
- package/esm2022/lib/ec-services/options.service.mjs +27 -3
- package/esm2022/lib/interfaces/options.mjs +1 -1
- package/fesm2022/ng-easycommerce-v18.mjs +154 -74
- package/fesm2022/ng-easycommerce-v18.mjs.map +1 -1
- package/lib/constants/api.constants.service.d.ts +13 -24
- package/lib/ec-components/abstractions-components/menu-ec.component.d.ts +12 -0
- package/lib/ec-components/header-ec/header-ec.component.d.ts +1 -1
- package/lib/ec-services/options.service.d.ts +4 -0
- package/lib/interfaces/options.d.ts +2 -1
- package/package.json +1 -1
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { inject, Injectable } from '@angular/core';
|
|
1
|
+
import { inject, Injectable, PLATFORM_ID } from '@angular/core';
|
|
2
|
+
import { isPlatformBrowser } from '@angular/common';
|
|
2
3
|
import { ConnectionService } from '../api';
|
|
3
4
|
import { BehaviorSubject, catchError, map, of, shareReplay } from 'rxjs';
|
|
4
5
|
import { ApiConstantsService, CoreConstantsService } from '../constants';
|
|
@@ -12,6 +13,10 @@ export class OptionsService {
|
|
|
12
13
|
* Maneja las peticiones a la API
|
|
13
14
|
*/
|
|
14
15
|
connection = inject(ConnectionService);
|
|
16
|
+
/**
|
|
17
|
+
* Platform ID para verificar si estamos en el navegador
|
|
18
|
+
*/
|
|
19
|
+
platformId = inject(PLATFORM_ID);
|
|
15
20
|
/**
|
|
16
21
|
* Constantes del core
|
|
17
22
|
*/
|
|
@@ -122,7 +127,26 @@ export class OptionsService {
|
|
|
122
127
|
* @returns
|
|
123
128
|
*/
|
|
124
129
|
removeAccents(str) {
|
|
125
|
-
|
|
130
|
+
if (isPlatformBrowser(this.platformId) && typeof String.prototype.normalize === 'function') {
|
|
131
|
+
return str.normalize("NFD").replace(/[\u0300-\u036f]/g, "");
|
|
132
|
+
}
|
|
133
|
+
// Fallback para SSR - remover acentos manualmente
|
|
134
|
+
return str.replace(/[àáâãäå]/g, 'a')
|
|
135
|
+
.replace(/[èéêë]/g, 'e')
|
|
136
|
+
.replace(/[ìíîï]/g, 'i')
|
|
137
|
+
.replace(/[òóôõö]/g, 'o')
|
|
138
|
+
.replace(/[ùúûü]/g, 'u')
|
|
139
|
+
.replace(/[ýÿ]/g, 'y')
|
|
140
|
+
.replace(/[ñ]/g, 'n')
|
|
141
|
+
.replace(/[ç]/g, 'c')
|
|
142
|
+
.replace(/[ÀÁÂÃÄÅ]/g, 'A')
|
|
143
|
+
.replace(/[ÈÉÊË]/g, 'E')
|
|
144
|
+
.replace(/[ÌÍÎÏ]/g, 'I')
|
|
145
|
+
.replace(/[ÒÓÔÕÖ]/g, 'O')
|
|
146
|
+
.replace(/[ÙÚÛÜ]/g, 'U')
|
|
147
|
+
.replace(/[ÝŸ]/g, 'Y')
|
|
148
|
+
.replace(/[Ñ]/g, 'N')
|
|
149
|
+
.replace(/[Ç]/g, 'C');
|
|
126
150
|
}
|
|
127
151
|
/**
|
|
128
152
|
* Realiza un mapeo de los datos para darle un formato mas entendible a la
|
|
@@ -302,4 +326,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
302
326
|
providedIn: 'root'
|
|
303
327
|
}]
|
|
304
328
|
}], ctorParameters: () => [] });
|
|
305
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLXNlcnZpY2VzL29wdGlvbnMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFjLEVBQUUsRUFBRSxXQUFXLEVBQVEsTUFBTSxNQUFNLENBQUM7QUFDM0YsT0FBTyxFQUFFLG1CQUFtQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sY0FBYyxDQUFDOztBQUd6RTs7O0dBR0c7QUFJSCxNQUFNLE9BQU8sY0FBYztJQUMxQjs7T0FFRztJQUNLLFVBQVUsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUMvQzs7T0FFRztJQUNLLFNBQVMsR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUNqRDs7T0FFRztJQUNLLFlBQVksR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUNuRDs7T0FFRztJQUNLLGlCQUFpQixHQUFHLElBQUksZUFBZSxDQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQ3hELFdBQVcsR0FBMkIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3BGOztPQUVHO0lBQ0ssZUFBZSxHQUFHLElBQUksZUFBZSxDQUFZLEVBQUUsQ0FBQyxDQUFDO0lBQ3JELFNBQVMsR0FBMEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMvRTs7T0FFRztJQUNLLGlCQUFpQixHQUFHLElBQUksZUFBZSxDQUFjLEVBQUUsQ0FBQyxDQUFDO0lBQ3pELFdBQVcsR0FBNEIs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QUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRTtxQkFDakksQ0FBQyxDQUFDO2lCQUNILENBQUM7Z0JBQ0YsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNuQixDQUFDLENBQUMsQ0FBQTtZQUNGLE9BQU8sTUFBTSxDQUFDO1FBQ2YsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7d0dBNVNXLGNBQWM7NEdBQWQsY0FBYyxjQUZkLE1BQU07OzRGQUVOLGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1gsVUFBVSxFQUFFLE1BQU07aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb25uZWN0aW9uU2VydmljZSB9IGZyb20gJy4uL2FwaSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNhdGNoRXJyb3IsIG1hcCwgT2JzZXJ2YWJsZSwgb2YsIHNoYXJlUmVwbGF5LCB0YWtlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBcGlDb25zdGFudHNTZXJ2aWNlLCBDb3JlQ29uc3RhbnRzU2VydmljZSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBBdHRyaWJ1dGUsIENhdGVnb3J5LCBGQVEsIFNlY3Rpb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEZpbHRlciB9IGZyb20gJy4uL2NsYXNzZXMnO1xuLyoqXG4gKiBFc3RlIHNlcnZpY2lvIHBlcm1pdGUgbWFuZWphIGxhcyBDYXRlZ29yaWFzLCBTZWNjaW9uZXMgeSBBdHJpYnV0b3MgY29tbyBtZW51ZXMgXG4gKiBwYXJhIGxhIGFwbGljYWNpw7NuLiBcbiAqL1xuQEluamVjdGFibGUoe1xuXHRwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgT3B0aW9uc1NlcnZpY2Uge1xuXHQvKipcblx0ICogTWFuZWphIGxhcyBwZXRpY2lvbmVzIGEgbGEgQVBJXG5cdCAqL1xuXHRwcml2YXRlIGNvbm5lY3Rpb24gPSBpbmplY3QoQ29ubmVjdGlvblNlcnZpY2UpO1xuXHQvKipcblx0ICogQ29uc3RhbnRlcyBkZWwgY29yZVxuXHQgKi9cblx0cHJpdmF0ZSBjb25zdGFudHMgPSBpbmplY3QoQ29yZUNvbnN0YW50c1NlcnZpY2UpO1xuXHQvKipcblx0ICogQ29uc3RhbnRlcyBkZSBsYSBBUElcblx0ICovXG5cdHByaXZhdGUgYXBpQ29uc3RhbnRzID0gaW5qZWN0KEFwaUNvbnN0YW50c1NlcnZpY2UpO1xuXHQvKipcblx0ICogTWFuZWphIGxvcyBjYW1iaW9zIGVuIGxhcyBjYXRlZ29yaWFzXG5cdCAqL1xuXHRwcml2YXRlIGNhdGVnb3JpZXNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDYXRlZ29yeVtdPihbXSk7XG5cdHByaXZhdGUgY2F0ZWdvcmllcyQ6IE9ic2VydmFibGU8Q2F0ZWdvcnlbXT4gPSB0aGlzLmNhdGVnb3JpZXNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXHQvKipcblx0ICogTWFuZWphIGxvcyBjYW1iaW9zIGVuIGxhcyBzZWNjaW9uZXNcblx0ICovXG5cdHByaXZhdGUgc2VjdGlvbnNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTZWN0aW9uW10+KFtdKTtcblx0cHJpdmF0ZSBzZWN0aW9ucyQ6IE9ic2VydmFibGU8U2VjdGlvbltdPiA9IHRoaXMuc2VjdGlvbnNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXHQvKipcblx0ICogTWFuZWphIGxvcyBjYW1iaW9zIGVuIGxvcyBhdHJpYnV0b3Ncblx0ICovXG5cdHByaXZhdGUgYXR0cmlidXRlc1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEF0dHJpYnV0ZVtdPihbXSk7XG5cdHByaXZhdGUgYXR0cmlidXRlcyQ6IE9ic2VydmFibGU8QXR0cmlidXRlW10+ID0gdGhpcy5hdHRyaWJ1dGVzU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuXHQvL0FQSSBVUkxTXG5cdHByaXZhdGUgcmVhZG9ubHkgU0hPUF9DSEFOTkVMX0FQSSA9IGAke3RoaXMuYXBpQ29uc3RhbnRzLlNIT1BfQVBJX1VSTH0ke3RoaXMuYXBpQ29uc3RhbnRzLkNIQU5ORUx9L2A7XG5cdHByaXZhdGUgcmVhZG9ubHkgQ01TX0NIQU5ORUxfQVBJID0gYCR7dGhpcy5hcGlDb25zdGFudHMuQ01TX1VSTH0ke3RoaXMuYXBpQ29uc3RhbnRzLkNIQU5ORUx9L2A7XG5cdC8qKlxuXHQgKiBEZXZ1ZWx2ZSBsYSBVUkwgcGFyYSBvYnRlbmVyIGxhcyBjYXRlZ29yaWFzLlxuXHQgKiBAcmV0dXJucyBcblx0ICovXG5cdHByaXZhdGUgdGF4b25zQXBpKCkgeyByZXR1cm4gYCR7dGhpcy5TSE9QX0NIQU5ORUxfQVBJfXRheG9ucy8/bG9jYWxlPSR7dGhpcy5hcGlDb25zdGFudHMuTE9DQUxFfWAgfTtcblx0LyoqXG5cdCAqIERldnVlbHZlIGxhIFVSTCBwYXJhIG9idGVuZXIgbGFzIHNlY2Npb25lc1xuXHQgKiBAcmV0dXJucyBcblx0ICovXG5cdHByaXZhdGUgc2VjdGlvbnNBcGkoKSB7IHJldHVybiBgJHt0aGlzLkNNU19DSEFOTkVMX0FQSX1zZWN0aW9ucy8/bG9jYWxlPSR7dGhpcy5hcGlDb25zdGFudHMuTE9DQUxFfWAgfTtcblx0LyoqXG5cdCAqIERldnVlbHZlIGxhIFVSTCBwYXJhIG9idGVuZXIgbG9zIGF0cmlidXRvcy4gU2UgbGUgcHVlZGUgYXBsaWNhciBmbGl0cm9zLlxuXHQgKiBAcGFyYW0gZmlsdGVyIFxuXHQgKiBAcmV0dXJucyBcblx0ICovXG5cdHByaXZhdGUgYXR0cmlidXRlc0FwaShmaWx0ZXIgPSAnJykgeyByZXR1cm4gYCR7dGhpcy5TSE9QX0NIQU5ORUxfQVBJfXByb2R1Y3Qtc2VhcmNoL2F0dHJpYnV0ZXMvP2xvY2FsZT0ke3RoaXMuYXBpQ29uc3RhbnRzLkxPQ0FMRX0mbGltaXQ9MSZwYWdlPTEke2ZpbHRlcn1gIH07XG5cdHByaXZhdGUgZmFxc0FwaSgpIHsgcmV0dXJuICdjbXMvJyArIHRoaXMuYXBpQ29uc3RhbnRzLkNIQU5ORUwgKyAnL2ZhcScgfTtcbiAgICBwcml2YXRlIHBhZ2VDb250ZW50QnlDb2RlQXBpID0gKGNvZGU6IHN0cmluZykgPT4gdGhpcy5jbXNCYXNlKCkgKyAnLycgKyB0aGlzLmNvbnN0YW50cy5nZXRDaGFubmVsKCkgKyAnL3BhZ2UvJyArIGNvZGU7XG5cdHByaXZhdGUgY21zQmFzZSA9ICgpID0+ICdjbXMvJyArIHRoaXMuYXBpQ29uc3RhbnRzLkxPQ0FMRTtcblx0Y29uc3RydWN0b3IoKSB7IH1cblx0LyoqXG5cdCAqIE9idGllbmUgbGFzIGNhdGVnb3JpYXMgZGVsIGJhY2tlbmQuIFkgbG9zIG1hcGVhIHBhcmEgcXVlIHNlYSBtYXMgYW1pZ2FibGUgZWwgbWFuZWpvIGNvbW8gbWVuw7ouXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0cHVibGljIGdldENhdGVnb3JpZXMoKTogT2JzZXJ2YWJsZTxDYXRlZ29yeVtdPiB7XG5cdFx0aWYgKHRoaXMuY2F0ZWdvcmllc1N1YmplY3QuZ2V0VmFsdWUoKS5sZW5ndGggPT09IDApIHtcblx0XHRcdHRoaXMuY29ubmVjdGlvbi5nZXQodGhpcy50YXhvbnNBcGkoKSkucGlwZShcblx0XHRcdFx0c2hhcmVSZXBsYXkoMSksXG5cdFx0XHRcdG1hcCgocmVzcG9uc2U6IENhdGVnb3J5W10pID0+IHtcblx0XHRcdFx0XHRjb25zdCBjYXRlZ29yaWVzID0gdGhpcy5hcHBlbmRQYXRocyh0cnVlLCByZXNwb25zZSlcblx0XHRcdFx0XHR0aGlzLmNhdGVnb3JpZXNTdWJqZWN0Lm5leHQoY2F0ZWdvcmllcylcblx0XHRcdFx0XHRyZXR1cm4gY2F0ZWdvcmllc1xuXHRcdFx0XHR9KSxcblx0XHRcdFx0Y2F0Y2hFcnJvcigoZXJyb3I6IGFueSkgPT4ge1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKGBFcnJvcjogJHtlcnJvcn1gKVxuXHRcdFx0XHRcdHRoaXMuY2F0ZWdvcmllc1N1YmplY3QubmV4dChbXSlcblx0XHRcdFx0XHRyZXR1cm4gb2YoW10pXG5cdFx0XHRcdH0pXG5cdFx0XHQpLnN1YnNjcmliZSgpO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5jYXRlZ29yaWVzJDtcblx0fVxuXHQvKipcblx0ICogT2J0aWVuZSBsYXMgc2VjY2lvbmVzIGRlbCBiYWNrZW5kLiBZIGxvcyBtYXBlYSBwYXJhIHF1ZSBzZWEgbWFzIGFtaWdhYmxlIGVsIG1hbmVqbyBjb21vIG1lbsO6LlxuXHQgKiBAcmV0dXJucyBcblx0ICovXG5cdHB1YmxpYyBnZXRTZWN0aW9ucygpOiBPYnNlcnZhYmxlPFNlY3Rpb25bXT4ge1xuXHRcdGlmICh0aGlzLnNlY3Rpb25zU3ViamVjdC5nZXRWYWx1ZSgpLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0dGhpcy5jb25uZWN0aW9uLmdldCh0aGlzLnNlY3Rpb25zQXBpKCkpLnBpcGUoXG5cdFx0XHRcdHNoYXJlUmVwbGF5KDEpLFxuXHRcdFx0XHRtYXAoKHJlc3BvbnNlOiBTZWN0aW9uW10pID0+IHtcblx0XHRcdFx0XHRsZXQgc2VjdGlvbnMgPSByZXNwb25zZS5maWx0ZXIoKHNlY3Rpb246IFNlY3Rpb24pID0+IHNlY3Rpb24uY29kZSAhPSAnaG9tZScpXG5cdFx0XHRcdFx0c2VjdGlvbnMgPSBzZWN0aW9ucy5tYXAoKHNlY3Rpb246IFNlY3Rpb24pID0+IHRoaXMuYXBwZW5kU2VjdGlvbihzZWN0aW9uKSlcblx0XHRcdFx0XHR0aGlzLnNlY3Rpb25zU3ViamVjdC5uZXh0KHNlY3Rpb25zKVxuXHRcdFx0XHRcdHJldHVybiBzZWN0aW9uc1xuXHRcdFx0XHR9KSkuc3Vic2NyaWJlKClcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuc2VjdGlvbnMkO1xuXHR9XG5cdC8qKlxuXHQgKiBPYnRpZW5lIGxvcyBhdHJpYnV0b3MgZGVsIGJhY2tlbmQuIFkgbG9zIG1hcGVhIHBhcmEgcXVlIHNlYSBtYXMgYW1pZ2FibGUgZWwgbWFuZWpvIGNvbW8gbWVuw7ouXG5cdCAqIEBwYXJhbSBwYXJhbXMgXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0cHVibGljIGdldEF0dHJpYnV0ZXMocGFyYW1zPzogYW55KTogT2JzZXJ2YWJsZTxBdHRyaWJ1dGVbXT4ge1xuXHRcdGlmICh0aGlzLmF0dHJpYnV0ZXNTdWJqZWN0LmdldFZhbHVlKCkubGVuZ3RoID09PSAwKSB7XG5cdFx0XHR0aGlzLmNvbm5lY3Rpb24uZ2V0KHRoaXMuYXR0cmlidXRlc0FwaShwYXJhbXMpKS5waXBlKFxuXHRcdFx0XHRzaGFyZVJlcGxheSgxKSxcblx0XHRcdFx0bWFwKChyZXNwb25zZTogYW55IHwgQXR0cmlidXRlKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgYXR0cmlidXRlcyA9IHRoaXMuYXBwZW5kUGF0aHMoZmFsc2UsIChyZXNwb25zZS5hdHRyaWJ1dGVzWzBdIHx8IHJlc3BvbnNlKSlcblx0XHRcdFx0XHR0aGlzLmF0dHJpYnV0ZXNTdWJqZWN0Lm5leHQoYXR0cmlidXRlcylcblx0XHRcdFx0XHRyZXR1cm4gYXR0cmlidXRlc1xuXHRcdFx0XHR9XG5cdFx0XHRcdCkpLnN1YnNjcmliZSgpXG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLmF0dHJpYnV0ZXMkO1xuXHR9XG5cblxuXHQvLyBIRUxQRVJTXG5cdHNsdWdpZnkodmFsdWU6IGFueSk6IHN0cmluZyB7XG5cdFx0aWYgKCF2YWx1ZSB8fCB0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG5cdFx0XHRyZXR1cm4gJyc7IC8vIG8gZGV2b2x2ZXIgdW4gc2x1ZyBwb3IgZGVmZWN0byBzaSBwcmVmZXLDrXNcblx0XHR9XG5cdFx0cmV0dXJuIHZhbHVlLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXFxzKy9nLCAnLScpLnJlcGxhY2UoL1teXFx3XFwtXSsvZywgJycpO1xuXHR9XHQvKipcblx0ICogRWxpbWluYSBsb3MgYWNlbnRvc1xuXHQgKiBAcGFyYW0gc3RyIFxuXHQgKiBAcmV0dXJucyBcblx0ICovXG5cdHByaXZhdGUgcmVtb3ZlQWNjZW50cyhzdHI6IHN0cmluZykge1xuXHRcdHJldHVybiBzdHIubm9ybWFsaXplKFwiTkZEXCIpLnJlcGxhY2UoL1tcXHUwMzAwLVxcdTAzNmZdL2csIFwiXCIpO1xuXHR9XG5cdC8qKlxuXHQgKiBSZWFsaXphIHVuIG1hcGVvIGRlIGxvcyBkYXRvcyBwYXJhIGRhcmxlIHVuIGZvcm1hdG8gbWFzIGVudGVuZGlibGUgYSBsYVxuXHQgKiBob3JhIGRlIHVzYXIgY29tbyB1biBtZW7Dui5cblx0ICogQHBhcmFtIGlzQ2F0ZWdvcnkgVXRpbGl6YWRvIHBhcmEgZGlmZXJlbmNpYXIgc2kgZXMgY2F0ZWdvcsOtYSBvIGF0cmlidXRvLlxuXHQgKiBAcGFyYW0gcmVzcG9uc2UgUmVzcHVlc3RhIHF1ZSBvYnRpZW5lIGRlbCBiYWNrZW5kIGNvbiBsb3MgZGF0b3MgYSBtYXBlYXIuXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0cHVibGljIGFwcGVuZFBhdGhzKGlzQ2F0ZWdvcnk6IGJvb2xlYW4sIHJlc3BvbnNlOiBhbnkpIHtcblx0XHRjb25zdCBub3JtYWxpemVkUmVzcG9uc2UgPSBBcnJheS5pc0FycmF5KHJlc3BvbnNlKSA/IHJlc3BvbnNlIDogW3Jlc3BvbnNlXTtcblxuXHRcdGNvbnN0IHJlc3VsdCA9IG5vcm1hbGl6ZWRSZXNwb25zZS5tYXAoKHN1YmVsZW1lbnQ6IGFueSkgPT4ge1xuXHRcdFx0aWYgKCFzdWJlbGVtZW50LmNoaWxkcmVuIHx8IHN1YmVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoID09IDApIHtcblx0XHRcdFx0c3ViZWxlbWVudC5jaGlsZHJlbiA9IFtdO1xuXHRcdFx0XHRzdWJlbGVtZW50LnBhdGggPSBpc0NhdGVnb3J5XG5cdFx0XHRcdFx0PyB0aGlzLmNvbnN0YW50cy5QUk9EVUNUX0xJU1RfUk9VVEUgKyAnY2F0ZWdvcmllcy8nICsgdGhpcy5zbHVnaWZ5KHN1YmVsZW1lbnQuc2x1ZyA/PyBzdWJlbGVtZW50Lm5hbWUpXG5cdFx0XHRcdFx0OiB0aGlzLmNvbnN0YW50cy5QUk9EVUNUX0xJU1RfUk9VVEUgKyAnYXR0cmlidXRlcy8nICsgdGhpcy5zbHVnaWZ5KHN1YmVsZW1lbnQuc2x1ZyA/PyBzdWJlbGVtZW50Lm5hbWUpO1xuXHRcdFx0fSBlbHNlIGlmIChzdWJlbGVtZW50LmNoaWxkcmVuKSB7XG5cdFx0XHRcdHN1YmVsZW1lbnQuc2x1ZyA9IHN1YmVsZW1lbnQuc2x1ZyB8fCB0aGlzLnNsdWdpZnkoc3ViZWxlbWVudC5uYW1lKTtcblx0XHRcdFx0c3ViZWxlbWVudC5jaGlsZHJlbiA9IHRoaXMuYXBwZW5kUGF0aHMoaXNDYXRlZ29yeSwgc3ViZWxlbWVudC5jaGlsZHJlbik7XG5cdFx0XHR9XG5cblx0XHRcdHN1YmVsZW1lbnQucGF0aCA9IGlzQ2F0ZWdvcnlcblx0XHRcdFx0PyB0aGlzLmNvbnN0YW50cy5QUk9EVUNUX0xJU1RfUk9VVEUgKyAnY2F0ZWdvcmllcy8nICsgdGhpcy5zbHVnaWZ5KHN1YmVsZW1lbnQuc2x1ZyA/PyBzdWJlbGVtZW50Lm5hbWUpXG5cdFx0XHRcdDogdGhpcy5jb25zdGFudHMuUFJPRFVDVF9MSVNUX1JPVVRFICsgJ2F0dHJpYnV0ZXMvJyArIHRoaXMuc2x1Z2lmeShzdWJlbGVtZW50LnNsdWcgPz8gc3ViZWxlbWVudC5uYW1lKTtcblxuXHRcdFx0cmV0dXJuIHN1YmVsZW1lbnQ7XG5cdFx0fSk7XG5cblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9XG5cdC8qKlxuXHQgKiBHZW5lcmEgdW4gbWFwZW8gZGUgc2VjY2lvbmVzIHBhcmEgcXVlIHF1ZWRlbiBtYXMgYW1pZ2FibGVzIGEgbGEgaG9yYSBkZSBtYW5lamFyIGNvbW8gbWVuw7ouXG5cdCAqIEBwYXJhbSBzZWN0aW9uIFxuXHQgKiBAcmV0dXJucyBcblx0ICovXG5cdHByaXZhdGUgYXBwZW5kU2VjdGlvbihzZWN0aW9uOiBhbnkpIHtcblx0XHRsZXQgZGF0YTogYW55ID0ge307XG5cdFx0aWYgKHNlY3Rpb24ucGFnZXM/Lmxlbmd0aCkge1xuXHRcdFx0ZGF0YS50eXBlID0gJ3N1Yic7XG5cdFx0XHRkYXRhLmNoaWxkcmVuID0gc2VjdGlvbi5wYWdlcy5tYXAoKHBhZ2U6IGFueSkgPT4ge1xuXHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdGNvZGU6IHBhZ2UuY29kZSxcblx0XHRcdFx0XHRuYW1lOiBwYWdlLm5hbWUsXG5cdFx0XHRcdFx0dHlwZTogJ2xpbmsnLFxuXHRcdFx0XHRcdHBhdGg6IHRoaXMuY29uc3RhbnRzLlNFQ1RJT05TX1JPVVRFICsgKHBhZ2Uuc2x1ZyA/IHBhZ2Uuc2x1ZyA6IHBhZ2UuY29kZSksXG5cdFx0XHRcdFx0Ly8gcGF0aDogdGhpcy5jb25zdGFudHMuU0VDVElPTlNfUk9VVEUgKyBwYWdlLnNsdWcsXG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdFx0Ly9kYXRhLnRpdGxlID0gc2VjdGlvbi5uYW1lO1xuXHRcdFx0ZGF0YS5uYW1lID0gc2VjdGlvbi5uYW1lO1xuXHRcdFx0ZGF0YS5wYXRoID0gdGhpcy5jb25zdGFudHMuU0VDVElPTlNfUk9VVEUgKyAoc2VjdGlvbi5zbHVnID8gc2VjdGlvbi5zbHVnIDogc2VjdGlvbi5jb2RlKTtcblx0XHRcdGRhdGEuY29kZSA9IHNlY3Rpb24uY29kZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0ZGF0YS5jb2RlID0gc2VjdGlvbi5jb2RlO1xuXHRcdFx0Ly9kYXRhLnRpdGxlID0gc2VjdGlvbi5uYW1lO1xuXHRcdFx0ZGF0YS5uYW1lID0gc2VjdGlvbi5uYW1lO1xuXHRcdFx0ZGF0YS50eXBlID0gJ2xpbmsnO1xuXHRcdFx0ZGF0YS5jaGlsZHJlbiA9IFtdO1xuXHRcdFx0ZGF0YS5wYXRoID0gdGhpcy5jb25zdGFudHMuU0VDVElPTlNfUk9VVEUgKyAoc2VjdGlvbi5zbHVnID8gc2VjdGlvbi5zbHVnIDogc2VjdGlvbi5jb2RlKTtcblx0XHR9XG5cdFx0cmV0dXJuIGRhdGE7XG5cdH1cblx0LyoqXG5cdCAqIE1hcGVhIGxvcyBlbGVtZW50b3MgcGFyYSBkYXJsZSB1biBmb3JtYXRvIG1hcyBhbWlnYWJsZSBwYXJhIGxvcyBtZW7DumVzIHkgZmlsdHJvcy5cblx0ICogQHBhcmFtIGVsZW1lbnRzIGNhdGVnb3JpYXMgfCBhdHJpYnV0b3MgXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0cHVibGljIGdlbmVyYXRlTWVudSA9IChlbGVtZW50czogYW55KSA9PiB7XG5cdFx0cmV0dXJuIGVsZW1lbnRzLm1hcCgoZWxlbWVudDogYW55KSA9PiB7XG5cdFx0XHRpZiAoZWxlbWVudC5jaGlsZHJlbiAmJiBlbGVtZW50LmNoaWxkcmVuLmxlbmd0aCA9PSAwKSB7XG5cdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0Li4uZWxlbWVudCxcblx0XHRcdFx0XHR0aXRsZTogZWxlbWVudC5uYW1lLFxuXHRcdFx0XHRcdHBhdGg6IGVsZW1lbnQucGF0aCxcblx0XHRcdFx0XHR0eXBlOiAnbGluaycsXG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0Li4uZWxlbWVudCxcblx0XHRcdFx0XHR0aXRsZTogZWxlbWVudC5uYW1lLFxuXHRcdFx0XHRcdHR5cGU6ICdzdWInLFxuXHRcdFx0XHRcdHBhdGg6IGVsZW1lbnQucGF0aCxcblx0XHRcdFx0XHRjaGlsZHJlbjogKGVsZW1lbnQuY2hpbGRyZW4gPyB0aGlzLmdlbmVyYXRlTWVudShlbGVtZW50LmNoaWxkcmVuKSA6IFtdKVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSlcblx0fVxuXHQvKipcblx0ICogRGV2dWVsdmUgbG9zIGVsZW1lbnRvcyBkZWwgYnJlYWRjcnVtYi5cblx0ICogQHBhcmFtIGNvZGUgXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0Z2V0QnJlYWRjcnVtYiA9IChjb2RlOiBhbnkpID0+IHtcblx0XHRpZiAoIWNvZGUpIHJldHVybiBudWxsO1xuXHRcdGxldCBicmVhZGNydW1iID0gdGhpcy5nZW5lcmF0ZUJyZWFkY3J1bWIoY29kZSwgdGhpcy5nZW5lcmF0ZU1lbnUodGhpcy5jYXRlZ29yaWVzU3ViamVjdC52YWx1ZSksIFtdKTtcblx0XHRpZiAoIWJyZWFkY3J1bWIgfHwgIWJyZWFkY3J1bWIubGVuZ3RoKSBicmVhZGNydW1iID0gdGhpcy5nZW5lcmF0ZUJyZWFkY3J1bWIoY29kZSwgdGhpcy5nZW5lcmF0ZU1lbnUodGhpcy5hdHRyaWJ1dGVzU3ViamVjdC52YWx1ZSksIFtdKTtcblx0XHRyZXR1cm4gKGJyZWFkY3J1bWIgJiYgYnJlYWRjcnVtYi5sZW5ndGgpICYmIGJyZWFkY3J1bWIucmV2ZXJzZSgpO1xuXHR9XG5cdC8qKlxuXHQgKiBHZW5lcmEgbG9zIGJyZWFkY3J1bWJzIGVuIGJhc2UgYSBsb3MgZmlsdHJvcyBhcGxpY2Fkb3MuXG5cdCAqIEBwYXJhbSBmaWx0ZXJzIFxuXHQgKiBAcmV0dXJucyBcblx0ICovXG5cdGdldEJyZWFkY3J1bWJCeUZpbHRlcnMgPSAoZmlsdGVyczogRmlsdGVyW10pID0+IHtcblx0XHRsZXQgZmluYWxfcmVzdWx0OiBhbnlbXSA9IFtdO1xuXHRcdGZpbHRlcnMuZm9yRWFjaChmaWx0ZXIgPT4ge1xuXHRcdFx0bGV0IHJlc3VsdCA9IGZpbHRlci5nZXRTZWxlY3RlZExpc3QoKTtcblx0XHRcdGlmICghcmVzdWx0IHx8ICFyZXN1bHQubGVuZ3RoKSByZXR1cm47XG5cblx0XHRcdGlmIChmaWx0ZXIudHlwZSgpID09ICdjYXRlZ29yaWVzJykgZmluYWxfcmVzdWx0LnVuc2hpZnQoLi4udGhpcy5nZW5lcmF0ZUJyZWFkY3J1bWIocmVzdWx0WzBdLCBmaWx0ZXIuZGF0YSwgW10pLnJldmVyc2UoKSk7XG5cdFx0XHRlbHNlIHJlc3VsdC5mb3JFYWNoKFxuXHRcdFx0XHQoY29kZTogYW55KSA9PiB7XG5cdFx0XHRcdFx0bGV0IGJyZWFkY3J1bWIgPSB0aGlzLmdlbmVyYXRlQnJlYWRjcnVtYihjb2RlLCBmaWx0ZXIuZGF0YSwgW10pXG5cdFx0XHRcdFx0YnJlYWRjcnVtYi5sZW5ndGggJiYgZmluYWxfcmVzdWx0LnB1c2goYnJlYWRjcnVtYlswXSk7XG5cdFx0XHRcdH1cblx0XHRcdCk7XG5cdFx0fSk7XG5cblx0XHRyZXR1cm4gZmluYWxfcmVzdWx0O1xuXHR9XG5cdC8qKlxuXHQgKiBHZW5lcmEgZWwgbGlzdGFkbyBkZSBicmVhZGNydW1iLlxuXHQgKiBAcGFyYW0gY29kZSBcblx0ICogQHBhcmFtIGVsZW1lbnRzIGZpbHRyb3MgYWN0dWFsZXMgZW4gZWwgZnJvbnRlbmRcblx0ICogQHBhcmFtIHJlc3VsdCBkYXRvcyBhIGFjdHVhbGl6YXIgY29uIGVsIG51ZXZvIGxpc3RhZG8gZGUgYnJlYWRjcnVtYlxuXHQgKiBAcmV0dXJucyBcblx0ICovXG5cdHByaXZhdGUgZ2VuZXJhdGVCcmVhZGNydW1iID0gKGNvZGU6IHN0cmluZywgZWxlbWVudHM6IGFueSwgcmVzdWx0OiBhbnkpID0+IHtcblx0XHRsZXQgZWxlbWVudCA9IGVsZW1lbnRzLmZpbmQoKGVsZW06IGFueSkgPT4gZWxlbS5jb2RlID09IGNvZGUpO1xuXHRcdGlmIChlbGVtZW50KSB7XG5cdFx0XHRyZXN1bHQucHVzaChlbGVtZW50KTtcblx0XHR9XG5cdFx0ZWxzZSB7XG5cdFx0XHRlbGVtZW50cy5zb21lKChlbGVtOiBhbnkpID0+IHtcblx0XHRcdFx0aWYgKGVsZW0uY2hpbGRyZW4gJiYgZWxlbS5jaGlsZHJlbi5sZW5ndGgpIHtcblx0XHRcdFx0XHRjb25zdCBsZW5ndGggPSByZXN1bHQubGVuZ3RoO1xuXHRcdFx0XHRcdGxldCBuZXdfcmVzdWx0ID0gdGhpcy5nZW5lcmF0ZUJyZWFkY3J1bWIoY29kZSwgZWxlbS5jaGlsZHJlbiwgcmVzdWx0KTtcblx0XHRcdFx0XHRpZiAobmV3X3Jlc3VsdC5sZW5ndGggPiBsZW5ndGgpIHtcblx0XHRcdFx0XHRcdHJlc3VsdCA9IG5ld19yZXN1bHQ7XG5cdFx0XHRcdFx0XHRyZXN1bHQucHVzaChlbGVtKTtcblx0XHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9KVxuXHRcdH1cblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9XG5cdHB1YmxpYyBnZXRTZWN0aW9uQ29udGVudEJ5TGluayA9IChsaW5rOiBhbnkpID0+XG5cdFx0dGhpcy5jb25uZWN0aW9uLmdldEhUTUwodGhpcy5wYWdlQ29udGVudEJ5Q29kZUFwaShsaW5rKSkucGlwZShcblx0XHRcdG1hcChodG1sID0+IGh0bWwuc3BsaXQoJzwvaGVhZD4nKVtodG1sLnNwbGl0KCc8L2hlYWQ+JykubGVuZ3RoIC0gMV0pLFxuXHRcdFx0Y2F0Y2hFcnJvcihlID0+IG9mKGZhbHNlKSlcblx0XHQpO1xuXG5cdFx0XG5cblx0Z2V0RkFRKCkge1xuXHRcdHJldHVybiB0aGlzLmNvbm5lY3Rpb24uZ2V0KHRoaXMuZmFxc0FwaSgpKS5waXBlKG1hcChyZXNwb25zZSA9PiB7XG5cdFx0XHRsZXQgcmVzdWx0OiBGQVFbXSA9IFtdO1xuXHRcdFx0cmVzcG9uc2UuZm9yRWFjaCgocmVzcG9uc2VfZmFxOiBhbnkpID0+IHtcblx0XHRcdFx0bGV0IGZhcXM6IEZBUSA9IHtcblx0XHRcdFx0XHRjb2RlOiByZXNwb25zZV9mYXEuY29kZSxcblx0XHRcdFx0XHRwb3NpdGlvbjogcmVzcG9uc2VfZmFxLnBvc2l0aW9uLFxuXHRcdFx0XHRcdHRpdGxlOiByZXNwb25zZV9mYXEudHJhbnNsYXRpb25zW3RoaXMuYXBpQ29uc3RhbnRzLkxPQ0FMRV0udG9waWMsXG5cdFx0XHRcdFx0cXVlc3Rpb25zOiByZXNwb25zZV9mYXEuZnJlcXVlbnRseUFza2VkUXVlc3Rpb25zLm1hcCgoYXNrZWRfcXVlc3Rpb246IGFueSkgPT4gKHtcblx0XHRcdFx0XHRcdGNvZGU6IGFza2VkX3F1ZXN0aW9uLmNvZGUsXG5cdFx0XHRcdFx0XHRwb3NpdGlvbjogYXNrZWRfcXVlc3Rpb24ucG9zaXRpb24sXG5cdFx0XHRcdFx0XHRxdWVzdGlvbjogYXNrZWRfcXVlc3Rpb24udHJhbnNsYXRpb25zW3RoaXMuYXBpQ29uc3RhbnRzLkxPQ0FMRV0gPyBhc2tlZF9xdWVzdGlvbi50cmFuc2xhdGlvbnNbdGhpcy5hcGlDb25zdGFudHMuTE9DQUxFXS5xdWVzdGlvbiA6ICcnLFxuXHRcdFx0XHRcdFx0YW5zd2VyOiBhc2tlZF9xdWVzdGlvbi50cmFuc2xhdGlvbnNbdGhpcy5hcGlDb25zdGFudHMuTE9DQUxFXSA/IGFza2VkX3F1ZXN0aW9uLnRyYW5zbGF0aW9uc1t0aGlzLmFwaUNvbnN0YW50cy5MT0NBTEVdLmFuc3dlciA6ICcnLFxuXHRcdFx0XHRcdH0pKVxuXHRcdFx0XHR9O1xuXHRcdFx0XHRyZXN1bHQucHVzaChmYXFzKTtcblx0XHRcdH0pXG5cdFx0XHRyZXR1cm4gcmVzdWx0O1xuXHRcdH0pKTtcblx0fVxufSBcbiJdfQ==
|
|
329
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLXNlcnZpY2VzL29wdGlvbnMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsV0FBVyxFQUFRLE1BQU0sTUFBTSxDQUFDO0FBQzNGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFHekU7OztHQUdHO0FBSUgsTUFBTSxPQUFPLGNBQWM7SUFDMUI7O09BRUc7SUFDSyxVQUFVLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDL0M7O09BRUc7SUFDSyxVQUFVLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3pDOztPQUVHO0lBQ0ssU0FBUyxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ2pEOztPQUVHO0lBQ0ssWUFBWSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ25EOztPQUVHO0lBQ0ssaUJBQWlCLEdBQUcsSUFBSSxlQUFlLENBQWEsRUFBRSxDQUFDLENBQUM7SUFDeEQsV0FBVyxHQUEyQixJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDcEY7O09BRUc7SUFDSyxlQUFlLEdBQUcsSUFBSSxlQUFlLENBQVksRUFBRSxDQUFDLENBQUM7SUFDckQsU0FBUyxHQUEwQixJQUFJ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Q0FBQztnQkFDRixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ25CLENBQUMsQ0FBQyxDQUFBO1lBQ0YsT0FBTyxNQUFNLENBQUM7UUFDZixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzt3R0FuVVcsY0FBYzs0R0FBZCxjQUFjLGNBRmQsTUFBTTs7NEZBRU4sY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDWCxVQUFVLEVBQUUsTUFBTTtpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUsIFBMQVRGT1JNX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb25uZWN0aW9uU2VydmljZSB9IGZyb20gJy4uL2FwaSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNhdGNoRXJyb3IsIG1hcCwgT2JzZXJ2YWJsZSwgb2YsIHNoYXJlUmVwbGF5LCB0YWtlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBcGlDb25zdGFudHNTZXJ2aWNlLCBDb3JlQ29uc3RhbnRzU2VydmljZSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBBdHRyaWJ1dGUsIENhdGVnb3J5LCBGQVEsIFNlY3Rpb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEZpbHRlciB9IGZyb20gJy4uL2NsYXNzZXMnO1xuLyoqXG4gKiBFc3RlIHNlcnZpY2lvIHBlcm1pdGUgbWFuZWphIGxhcyBDYXRlZ29yaWFzLCBTZWNjaW9uZXMgeSBBdHJpYnV0b3MgY29tbyBtZW51ZXMgXG4gKiBwYXJhIGxhIGFwbGljYWNpw7NuLiBcbiAqL1xuQEluamVjdGFibGUoe1xuXHRwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgT3B0aW9uc1NlcnZpY2Uge1xuXHQvKipcblx0ICogTWFuZWphIGxhcyBwZXRpY2lvbmVzIGEgbGEgQVBJXG5cdCAqL1xuXHRwcml2YXRlIGNvbm5lY3Rpb24gPSBpbmplY3QoQ29ubmVjdGlvblNlcnZpY2UpO1xuXHQvKipcblx0ICogUGxhdGZvcm0gSUQgcGFyYSB2ZXJpZmljYXIgc2kgZXN0YW1vcyBlbiBlbCBuYXZlZ2Fkb3Jcblx0ICovXG5cdHByaXZhdGUgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XG5cdC8qKlxuXHQgKiBDb25zdGFudGVzIGRlbCBjb3JlXG5cdCAqL1xuXHRwcml2YXRlIGNvbnN0YW50cyA9IGluamVjdChDb3JlQ29uc3RhbnRzU2VydmljZSk7XG5cdC8qKlxuXHQgKiBDb25zdGFudGVzIGRlIGxhIEFQSVxuXHQgKi9cblx0cHJpdmF0ZSBhcGlDb25zdGFudHMgPSBpbmplY3QoQXBpQ29uc3RhbnRzU2VydmljZSk7XG5cdC8qKlxuXHQgKiBNYW5lamEgbG9zIGNhbWJpb3MgZW4gbGFzIGNhdGVnb3JpYXNcblx0ICovXG5cdHByaXZhdGUgY2F0ZWdvcmllc1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENhdGVnb3J5W10+KFtdKTtcblx0cHJpdmF0ZSBjYXRlZ29yaWVzJDogT2JzZXJ2YWJsZTxDYXRlZ29yeVtdPiA9IHRoaXMuY2F0ZWdvcmllc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cdC8qKlxuXHQgKiBNYW5lamEgbG9zIGNhbWJpb3MgZW4gbGFzIHNlY2Npb25lc1xuXHQgKi9cblx0cHJpdmF0ZSBzZWN0aW9uc1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNlY3Rpb25bXT4oW10pO1xuXHRwcml2YXRlIHNlY3Rpb25zJDogT2JzZXJ2YWJsZTxTZWN0aW9uW10+ID0gdGhpcy5zZWN0aW9uc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cdC8qKlxuXHQgKiBNYW5lamEgbG9zIGNhbWJpb3MgZW4gbG9zIGF0cmlidXRvc1xuXHQgKi9cblx0cHJpdmF0ZSBhdHRyaWJ1dGVzU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXR0cmlidXRlW10+KFtdKTtcblx0cHJpdmF0ZSBhdHRyaWJ1dGVzJDogT2JzZXJ2YWJsZTxBdHRyaWJ1dGVbXT4gPSB0aGlzLmF0dHJpYnV0ZXNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG5cdC8vQVBJIFVSTFNcblx0cHJpdmF0ZSByZWFkb25seSBTSE9QX0NIQU5ORUxfQVBJID0gYCR7dGhpcy5hcGlDb25zdGFudHMuU0hPUF9BUElfVVJMfSR7dGhpcy5hcGlDb25zdGFudHMuQ0hBTk5FTH0vYDtcblx0cHJpdmF0ZSByZWFkb25seSBDTVNfQ0hBTk5FTF9BUEkgPSBgJHt0aGlzLmFwaUNvbnN0YW50cy5DTVNfVVJMfSR7dGhpcy5hcGlDb25zdGFudHMuQ0hBTk5FTH0vYDtcblx0LyoqXG5cdCAqIERldnVlbHZlIGxhIFVSTCBwYXJhIG9idGVuZXIgbGFzIGNhdGVnb3JpYXMuXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0cHJpdmF0ZSB0YXhvbnNBcGkoKSB7IHJldHVybiBgJHt0aGlzLlNIT1BfQ0hBTk5FTF9BUEl9dGF4b25zLz9sb2NhbGU9JHt0aGlzLmFwaUNvbnN0YW50cy5MT0NBTEV9YCB9O1xuXHQvKipcblx0ICogRGV2dWVsdmUgbGEgVVJMIHBhcmEgb2J0ZW5lciBsYXMgc2VjY2lvbmVzXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0cHJpdmF0ZSBzZWN0aW9uc0FwaSgpIHsgcmV0dXJuIGAke3RoaXMuQ01TX0NIQU5ORUxfQVBJfXNlY3Rpb25zLz9sb2NhbGU9JHt0aGlzLmFwaUNvbnN0YW50cy5MT0NBTEV9YCB9O1xuXHQvKipcblx0ICogRGV2dWVsdmUgbGEgVVJMIHBhcmEgb2J0ZW5lciBsb3MgYXRyaWJ1dG9zLiBTZSBsZSBwdWVkZSBhcGxpY2FyIGZsaXRyb3MuXG5cdCAqIEBwYXJhbSBmaWx0ZXIgXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0cHJpdmF0ZSBhdHRyaWJ1dGVzQXBpKGZpbHRlciA9ICcnKSB7IHJldHVybiBgJHt0aGlzLlNIT1BfQ0hBTk5FTF9BUEl9cHJvZHVjdC1zZWFyY2gvYXR0cmlidXRlcy8/bG9jYWxlPSR7dGhpcy5hcGlDb25zdGFudHMuTE9DQUxFfSZsaW1pdD0xJnBhZ2U9MSR7ZmlsdGVyfWAgfTtcblx0cHJpdmF0ZSBmYXFzQXBpKCkgeyByZXR1cm4gJ2Ntcy8nICsgdGhpcy5hcGlDb25zdGFudHMuQ0hBTk5FTCArICcvZmFxJyB9O1xuICAgIHByaXZhdGUgcGFnZUNvbnRlbnRCeUNvZGVBcGkgPSAoY29kZTogc3RyaW5nKSA9PiB0aGlzLmNtc0Jhc2UoKSArICcvJyArIHRoaXMuY29uc3RhbnRzLmdldENoYW5uZWwoKSArICcvcGFnZS8nICsgY29kZTtcblx0cHJpdmF0ZSBjbXNCYXNlID0gKCkgPT4gJ2Ntcy8nICsgdGhpcy5hcGlDb25zdGFudHMuTE9DQUxFO1xuXHRjb25zdHJ1Y3RvcigpIHsgfVxuXHQvKipcblx0ICogT2J0aWVuZSBsYXMgY2F0ZWdvcmlhcyBkZWwgYmFja2VuZC4gWSBsb3MgbWFwZWEgcGFyYSBxdWUgc2VhIG1hcyBhbWlnYWJsZSBlbCBtYW5lam8gY29tbyBtZW7Dui5cblx0ICogQHJldHVybnMgXG5cdCAqL1xuXHRwdWJsaWMgZ2V0Q2F0ZWdvcmllcygpOiBPYnNlcnZhYmxlPENhdGVnb3J5W10+IHtcblx0XHRpZiAodGhpcy5jYXRlZ29yaWVzU3ViamVjdC5nZXRWYWx1ZSgpLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0dGhpcy5jb25uZWN0aW9uLmdldCh0aGlzLnRheG9uc0FwaSgpKS5waXBlKFxuXHRcdFx0XHRzaGFyZVJlcGxheSgxKSxcblx0XHRcdFx0bWFwKChyZXNwb25zZTogQ2F0ZWdvcnlbXSkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IGNhdGVnb3JpZXMgPSB0aGlzLmFwcGVuZFBhdGhzKHRydWUsIHJlc3BvbnNlKVxuXHRcdFx0XHRcdHRoaXMuY2F0ZWdvcmllc1N1YmplY3QubmV4dChjYXRlZ29yaWVzKVxuXHRcdFx0XHRcdHJldHVybiBjYXRlZ29yaWVzXG5cdFx0XHRcdH0pLFxuXHRcdFx0XHRjYXRjaEVycm9yKChlcnJvcjogYW55KSA9PiB7XG5cdFx0XHRcdFx0Y29uc29sZS5sb2coYEVycm9yOiAke2Vycm9yfWApXG5cdFx0XHRcdFx0dGhpcy5jYXRlZ29yaWVzU3ViamVjdC5uZXh0KFtdKVxuXHRcdFx0XHRcdHJldHVybiBvZihbXSlcblx0XHRcdFx0fSlcblx0XHRcdCkuc3Vic2NyaWJlKCk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLmNhdGVnb3JpZXMkO1xuXHR9XG5cdC8qKlxuXHQgKiBPYnRpZW5lIGxhcyBzZWNjaW9uZXMgZGVsIGJhY2tlbmQuIFkgbG9zIG1hcGVhIHBhcmEgcXVlIHNlYSBtYXMgYW1pZ2FibGUgZWwgbWFuZWpvIGNvbW8gbWVuw7ouXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0cHVibGljIGdldFNlY3Rpb25zKCk6IE9ic2VydmFibGU8U2VjdGlvbltdPiB7XG5cdFx0aWYgKHRoaXMuc2VjdGlvbnNTdWJqZWN0LmdldFZhbHVlKCkubGVuZ3RoID09PSAwKSB7XG5cdFx0XHR0aGlzLmNvbm5lY3Rpb24uZ2V0KHRoaXMuc2VjdGlvbnNBcGkoKSkucGlwZShcblx0XHRcdFx0c2hhcmVSZXBsYXkoMSksXG5cdFx0XHRcdG1hcCgocmVzcG9uc2U6IFNlY3Rpb25bXSkgPT4ge1xuXHRcdFx0XHRcdGxldCBzZWN0aW9ucyA9IHJlc3BvbnNlLmZpbHRlcigoc2VjdGlvbjogU2VjdGlvbikgPT4gc2VjdGlvbi5jb2RlICE9ICdob21lJylcblx0XHRcdFx0XHRzZWN0aW9ucyA9IHNlY3Rpb25zLm1hcCgoc2VjdGlvbjogU2VjdGlvbikgPT4gdGhpcy5hcHBlbmRTZWN0aW9uKHNlY3Rpb24pKVxuXHRcdFx0XHRcdHRoaXMuc2VjdGlvbnNTdWJqZWN0Lm5leHQoc2VjdGlvbnMpXG5cdFx0XHRcdFx0cmV0dXJuIHNlY3Rpb25zXG5cdFx0XHRcdH0pKS5zdWJzY3JpYmUoKVxuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5zZWN0aW9ucyQ7XG5cdH1cblx0LyoqXG5cdCAqIE9idGllbmUgbG9zIGF0cmlidXRvcyBkZWwgYmFja2VuZC4gWSBsb3MgbWFwZWEgcGFyYSBxdWUgc2VhIG1hcyBhbWlnYWJsZSBlbCBtYW5lam8gY29tbyBtZW7Dui5cblx0ICogQHBhcmFtIHBhcmFtcyBcblx0ICogQHJldHVybnMgXG5cdCAqL1xuXHRwdWJsaWMgZ2V0QXR0cmlidXRlcyhwYXJhbXM/OiBhbnkpOiBPYnNlcnZhYmxlPEF0dHJpYnV0ZVtdPiB7XG5cdFx0aWYgKHRoaXMuYXR0cmlidXRlc1N1YmplY3QuZ2V0VmFsdWUoKS5sZW5ndGggPT09IDApIHtcblx0XHRcdHRoaXMuY29ubmVjdGlvbi5nZXQodGhpcy5hdHRyaWJ1dGVzQXBpKHBhcmFtcykpLnBpcGUoXG5cdFx0XHRcdHNoYXJlUmVwbGF5KDEpLFxuXHRcdFx0XHRtYXAoKHJlc3BvbnNlOiBhbnkgfCBBdHRyaWJ1dGUpID0+IHtcblx0XHRcdFx0XHRjb25zdCBhdHRyaWJ1dGVzID0gdGhpcy5hcHBlbmRQYXRocyhmYWxzZSwgKHJlc3BvbnNlLmF0dHJpYnV0ZXNbMF0gfHwgcmVzcG9uc2UpKVxuXHRcdFx0XHRcdHRoaXMuYXR0cmlidXRlc1N1YmplY3QubmV4dChhdHRyaWJ1dGVzKVxuXHRcdFx0XHRcdHJldHVybiBhdHRyaWJ1dGVzXG5cdFx0XHRcdH1cblx0XHRcdFx0KSkuc3Vic2NyaWJlKClcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuYXR0cmlidXRlcyQ7XG5cdH1cblxuXG5cdC8vIEhFTFBFUlNcblx0c2x1Z2lmeSh2YWx1ZTogYW55KTogc3RyaW5nIHtcblx0XHRpZiAoIXZhbHVlIHx8IHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHtcblx0XHRcdHJldHVybiAnJzsgLy8gbyBkZXZvbHZlciB1biBzbHVnIHBvciBkZWZlY3RvIHNpIHByZWZlcsOtc1xuXHRcdH1cblx0XHRyZXR1cm4gdmFsdWUudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9cXHMrL2csICctJykucmVwbGFjZSgvW15cXHdcXC1dKy9nLCAnJyk7XG5cdH1cdC8qKlxuXHQgKiBFbGltaW5hIGxvcyBhY2VudG9zXG5cdCAqIEBwYXJhbSBzdHIgXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0cHJpdmF0ZSByZW1vdmVBY2NlbnRzKHN0cjogc3RyaW5nKSB7XG5cdFx0aWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkgJiYgdHlwZW9mIFN0cmluZy5wcm90b3R5cGUubm9ybWFsaXplID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRyZXR1cm4gc3RyLm5vcm1hbGl6ZShcIk5GRFwiKS5yZXBsYWNlKC9bXFx1MDMwMC1cXHUwMzZmXS9nLCBcIlwiKTtcblx0XHR9XG5cdFx0Ly8gRmFsbGJhY2sgcGFyYSBTU1IgLSByZW1vdmVyIGFjZW50b3MgbWFudWFsbWVudGVcblx0XHRyZXR1cm4gc3RyLnJlcGxhY2UoL1vDoMOhw6LDo8Okw6VdL2csICdhJylcblx0XHRcdC5yZXBsYWNlKC9bw6jDqcOqw6tdL2csICdlJylcblx0XHRcdC5yZXBsYWNlKC9bw6zDrcOuw69dL2csICdpJylcblx0XHRcdC5yZXBsYWNlKC9bw7LDs8O0w7XDtl0vZywgJ28nKVxuXHRcdFx0LnJlcGxhY2UoL1vDucO6w7vDvF0vZywgJ3UnKVxuXHRcdFx0LnJlcGxhY2UoL1vDvcO/XS9nLCAneScpXG5cdFx0XHQucmVwbGFjZSgvW8OxXS9nLCAnbicpXG5cdFx0XHQucmVwbGFjZSgvW8OnXS9nLCAnYycpXG5cdFx0XHQucmVwbGFjZSgvW8OAw4HDgsODw4TDhV0vZywgJ0EnKVxuXHRcdFx0LnJlcGxhY2UoL1vDiMOJw4rDi10vZywgJ0UnKVxuXHRcdFx0LnJlcGxhY2UoL1vDjMONw47Dj10vZywgJ0knKVxuXHRcdFx0LnJlcGxhY2UoL1vDksOTw5TDlcOWXS9nLCAnTycpXG5cdFx0XHQucmVwbGFjZSgvW8OZw5rDm8OcXS9nLCAnVScpXG5cdFx0XHQucmVwbGFjZSgvW8OdxbhdL2csICdZJylcblx0XHRcdC5yZXBsYWNlKC9bw5FdL2csICdOJylcblx0XHRcdC5yZXBsYWNlKC9bw4ddL2csICdDJyk7XG5cdH1cblx0LyoqXG5cdCAqIFJlYWxpemEgdW4gbWFwZW8gZGUgbG9zIGRhdG9zIHBhcmEgZGFybGUgdW4gZm9ybWF0byBtYXMgZW50ZW5kaWJsZSBhIGxhXG5cdCAqIGhvcmEgZGUgdXNhciBjb21vIHVuIG1lbsO6LlxuXHQgKiBAcGFyYW0gaXNDYXRlZ29yeSBVdGlsaXphZG8gcGFyYSBkaWZlcmVuY2lhciBzaSBlcyBjYXRlZ29yw61hIG8gYXRyaWJ1dG8uXG5cdCAqIEBwYXJhbSByZXNwb25zZSBSZXNwdWVzdGEgcXVlIG9idGllbmUgZGVsIGJhY2tlbmQgY29uIGxvcyBkYXRvcyBhIG1hcGVhci5cblx0ICogQHJldHVybnMgXG5cdCAqL1xuXHRwdWJsaWMgYXBwZW5kUGF0aHMoaXNDYXRlZ29yeTogYm9vbGVhbiwgcmVzcG9uc2U6IGFueSkge1xuXHRcdGNvbnN0IG5vcm1hbGl6ZWRSZXNwb25zZSA9IEFycmF5LmlzQXJyYXkocmVzcG9uc2UpID8gcmVzcG9uc2UgOiBbcmVzcG9uc2VdO1xuXG5cdFx0Y29uc3QgcmVzdWx0ID0gbm9ybWFsaXplZFJlc3BvbnNlLm1hcCgoc3ViZWxlbWVudDogYW55KSA9PiB7XG5cdFx0XHRpZiAoIXN1YmVsZW1lbnQuY2hpbGRyZW4gfHwgc3ViZWxlbWVudC5jaGlsZHJlbi5sZW5ndGggPT0gMCkge1xuXHRcdFx0XHRzdWJlbGVtZW50LmNoaWxkcmVuID0gW107XG5cdFx0XHRcdHN1YmVsZW1lbnQucGF0aCA9IGlzQ2F0ZWdvcnlcblx0XHRcdFx0XHQ/IHRoaXMuY29uc3RhbnRzLlBST0RVQ1RfTElTVF9ST1VURSArICdjYXRlZ29yaWVzLycgKyB0aGlzLnNsdWdpZnkoc3ViZWxlbWVudC5zbHVnID8/IHN1YmVsZW1lbnQubmFtZSlcblx0XHRcdFx0XHQ6IHRoaXMuY29uc3RhbnRzLlBST0RVQ1RfTElTVF9ST1VURSArICdhdHRyaWJ1dGVzLycgKyB0aGlzLnNsdWdpZnkoc3ViZWxlbWVudC5zbHVnID8/IHN1YmVsZW1lbnQubmFtZSk7XG5cdFx0XHR9IGVsc2UgaWYgKHN1YmVsZW1lbnQuY2hpbGRyZW4pIHtcblx0XHRcdFx0c3ViZWxlbWVudC5zbHVnID0gc3ViZWxlbWVudC5zbHVnIHx8IHRoaXMuc2x1Z2lmeShzdWJlbGVtZW50Lm5hbWUpO1xuXHRcdFx0XHRzdWJlbGVtZW50LmNoaWxkcmVuID0gdGhpcy5hcHBlbmRQYXRocyhpc0NhdGVnb3J5LCBzdWJlbGVtZW50LmNoaWxkcmVuKTtcblx0XHRcdH1cblxuXHRcdFx0c3ViZWxlbWVudC5wYXRoID0gaXNDYXRlZ29yeVxuXHRcdFx0XHQ/IHRoaXMuY29uc3RhbnRzLlBST0RVQ1RfTElTVF9ST1VURSArICdjYXRlZ29yaWVzLycgKyB0aGlzLnNsdWdpZnkoc3ViZWxlbWVudC5zbHVnID8/IHN1YmVsZW1lbnQubmFtZSlcblx0XHRcdFx0OiB0aGlzLmNvbnN0YW50cy5QUk9EVUNUX0xJU1RfUk9VVEUgKyAnYXR0cmlidXRlcy8nICsgdGhpcy5zbHVnaWZ5KHN1YmVsZW1lbnQuc2x1ZyA/PyBzdWJlbGVtZW50Lm5hbWUpO1xuXG5cdFx0XHRyZXR1cm4gc3ViZWxlbWVudDtcblx0XHR9KTtcblxuXHRcdHJldHVybiByZXN1bHQ7XG5cdH1cblx0LyoqXG5cdCAqIEdlbmVyYSB1biBtYXBlbyBkZSBzZWNjaW9uZXMgcGFyYSBxdWUgcXVlZGVuIG1hcyBhbWlnYWJsZXMgYSBsYSBob3JhIGRlIG1hbmVqYXIgY29tbyBtZW7Dui5cblx0ICogQHBhcmFtIHNlY3Rpb24gXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0cHJpdmF0ZSBhcHBlbmRTZWN0aW9uKHNlY3Rpb246IGFueSkge1xuXHRcdGxldCBkYXRhOiBhbnkgPSB7fTtcblx0XHRpZiAoc2VjdGlvbi5wYWdlcz8ubGVuZ3RoKSB7XG5cdFx0XHRkYXRhLnR5cGUgPSAnc3ViJztcblx0XHRcdGRhdGEuY2hpbGRyZW4gPSBzZWN0aW9uLnBhZ2VzLm1hcCgocGFnZTogYW55KSA9PiB7XG5cdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0Y29kZTogcGFnZS5jb2RlLFxuXHRcdFx0XHRcdG5hbWU6IHBhZ2UubmFtZSxcblx0XHRcdFx0XHR0eXBlOiAnbGluaycsXG5cdFx0XHRcdFx0cGF0aDogdGhpcy5jb25zdGFudHMuU0VDVElPTlNfUk9VVEUgKyAocGFnZS5zbHVnID8gcGFnZS5zbHVnIDogcGFnZS5jb2RlKSxcblx0XHRcdFx0XHQvLyBwYXRoOiB0aGlzLmNvbnN0YW50cy5TRUNUSU9OU19ST1VURSArIHBhZ2Uuc2x1Zyxcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0XHQvL2RhdGEudGl0bGUgPSBzZWN0aW9uLm5hbWU7XG5cdFx0XHRkYXRhLm5hbWUgPSBzZWN0aW9uLm5hbWU7XG5cdFx0XHRkYXRhLnBhdGggPSB0aGlzLmNvbnN0YW50cy5TRUNUSU9OU19ST1VURSArIChzZWN0aW9uLnNsdWcgPyBzZWN0aW9uLnNsdWcgOiBzZWN0aW9uLmNvZGUpO1xuXHRcdFx0ZGF0YS5jb2RlID0gc2VjdGlvbi5jb2RlO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRkYXRhLmNvZGUgPSBzZWN0aW9uLmNvZGU7XG5cdFx0XHQvL2RhdGEudGl0bGUgPSBzZWN0aW9uLm5hbWU7XG5cdFx0XHRkYXRhLm5hbWUgPSBzZWN0aW9uLm5hbWU7XG5cdFx0XHRkYXRhLnR5cGUgPSAnbGluayc7XG5cdFx0XHRkYXRhLmNoaWxkcmVuID0gW107XG5cdFx0XHRkYXRhLnBhdGggPSB0aGlzLmNvbnN0YW50cy5TRUNUSU9OU19ST1VURSArIChzZWN0aW9uLnNsdWcgPyBzZWN0aW9uLnNsdWcgOiBzZWN0aW9uLmNvZGUpO1xuXHRcdH1cblx0XHRyZXR1cm4gZGF0YTtcblx0fVxuXHQvKipcblx0ICogTWFwZWEgbG9zIGVsZW1lbnRvcyBwYXJhIGRhcmxlIHVuIGZvcm1hdG8gbWFzIGFtaWdhYmxlIHBhcmEgbG9zIG1lbsO6ZXMgeSBmaWx0cm9zLlxuXHQgKiBAcGFyYW0gZWxlbWVudHMgY2F0ZWdvcmlhcyB8IGF0cmlidXRvcyBcblx0ICogQHJldHVybnMgXG5cdCAqL1xuXHRwdWJsaWMgZ2VuZXJhdGVNZW51ID0gKGVsZW1lbnRzOiBhbnkpID0+IHtcblx0XHRyZXR1cm4gZWxlbWVudHMubWFwKChlbGVtZW50OiBhbnkpID0+IHtcblx0XHRcdGlmIChlbGVtZW50LmNoaWxkcmVuICYmIGVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoID09IDApIHtcblx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHQuLi5lbGVtZW50LFxuXHRcdFx0XHRcdHRpdGxlOiBlbGVtZW50Lm5hbWUsXG5cdFx0XHRcdFx0cGF0aDogZWxlbWVudC5wYXRoLFxuXHRcdFx0XHRcdHR5cGU6ICdsaW5rJyxcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHQuLi5lbGVtZW50LFxuXHRcdFx0XHRcdHRpdGxlOiBlbGVtZW50Lm5hbWUsXG5cdFx0XHRcdFx0dHlwZTogJ3N1YicsXG5cdFx0XHRcdFx0cGF0aDogZWxlbWVudC5wYXRoLFxuXHRcdFx0XHRcdGNoaWxkcmVuOiAoZWxlbWVudC5jaGlsZHJlbiA/IHRoaXMuZ2VuZXJhdGVNZW51KGVsZW1lbnQuY2hpbGRyZW4pIDogW10pXG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9KVxuXHR9XG5cdC8qKlxuXHQgKiBEZXZ1ZWx2ZSBsb3MgZWxlbWVudG9zIGRlbCBicmVhZGNydW1iLlxuXHQgKiBAcGFyYW0gY29kZSBcblx0ICogQHJldHVybnMgXG5cdCAqL1xuXHRnZXRCcmVhZGNydW1iID0gKGNvZGU6IGFueSkgPT4ge1xuXHRcdGlmICghY29kZSkgcmV0dXJuIG51bGw7XG5cdFx0bGV0IGJyZWFkY3J1bWIgPSB0aGlzLmdlbmVyYXRlQnJlYWRjcnVtYihjb2RlLCB0aGlzLmdlbmVyYXRlTWVudSh0aGlzLmNhdGVnb3JpZXNTdWJqZWN0LnZhbHVlKSwgW10pO1xuXHRcdGlmICghYnJlYWRjcnVtYiB8fCAhYnJlYWRjcnVtYi5sZW5ndGgpIGJyZWFkY3J1bWIgPSB0aGlzLmdlbmVyYXRlQnJlYWRjcnVtYihjb2RlLCB0aGlzLmdlbmVyYXRlTWVudSh0aGlzLmF0dHJpYnV0ZXNTdWJqZWN0LnZhbHVlKSwgW10pO1xuXHRcdHJldHVybiAoYnJlYWRjcnVtYiAmJiBicmVhZGNydW1iLmxlbmd0aCkgJiYgYnJlYWRjcnVtYi5yZXZlcnNlKCk7XG5cdH1cblx0LyoqXG5cdCAqIEdlbmVyYSBsb3MgYnJlYWRjcnVtYnMgZW4gYmFzZSBhIGxvcyBmaWx0cm9zIGFwbGljYWRvcy5cblx0ICogQHBhcmFtIGZpbHRlcnMgXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0Z2V0QnJlYWRjcnVtYkJ5RmlsdGVycyA9IChmaWx0ZXJzOiBGaWx0ZXJbXSkgPT4ge1xuXHRcdGxldCBmaW5hbF9yZXN1bHQ6IGFueVtdID0gW107XG5cdFx0ZmlsdGVycy5mb3JFYWNoKGZpbHRlciA9PiB7XG5cdFx0XHRsZXQgcmVzdWx0ID0gZmlsdGVyLmdldFNlbGVjdGVkTGlzdCgpO1xuXHRcdFx0aWYgKCFyZXN1bHQgfHwgIXJlc3VsdC5sZW5ndGgpIHJldHVybjtcblxuXHRcdFx0aWYgKGZpbHRlci50eXBlKCkgPT0gJ2NhdGVnb3JpZXMnKSBmaW5hbF9yZXN1bHQudW5zaGlmdCguLi50aGlzLmdlbmVyYXRlQnJlYWRjcnVtYihyZXN1bHRbMF0sIGZpbHRlci5kYXRhLCBbXSkucmV2ZXJzZSgpKTtcblx0XHRcdGVsc2UgcmVzdWx0LmZvckVhY2goXG5cdFx0XHRcdChjb2RlOiBhbnkpID0+IHtcblx0XHRcdFx0XHRsZXQgYnJlYWRjcnVtYiA9IHRoaXMuZ2VuZXJhdGVCcmVhZGNydW1iKGNvZGUsIGZpbHRlci5kYXRhLCBbXSlcblx0XHRcdFx0XHRicmVhZGNydW1iLmxlbmd0aCAmJiBmaW5hbF9yZXN1bHQucHVzaChicmVhZGNydW1iWzBdKTtcblx0XHRcdFx0fVxuXHRcdFx0KTtcblx0XHR9KTtcblxuXHRcdHJldHVybiBmaW5hbF9yZXN1bHQ7XG5cdH1cblx0LyoqXG5cdCAqIEdlbmVyYSBlbCBsaXN0YWRvIGRlIGJyZWFkY3J1bWIuXG5cdCAqIEBwYXJhbSBjb2RlIFxuXHQgKiBAcGFyYW0gZWxlbWVudHMgZmlsdHJvcyBhY3R1YWxlcyBlbiBlbCBmcm9udGVuZFxuXHQgKiBAcGFyYW0gcmVzdWx0IGRhdG9zIGEgYWN0dWFsaXphciBjb24gZWwgbnVldm8gbGlzdGFkbyBkZSBicmVhZGNydW1iXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0cHJpdmF0ZSBnZW5lcmF0ZUJyZWFkY3J1bWIgPSAoY29kZTogc3RyaW5nLCBlbGVtZW50czogYW55LCByZXN1bHQ6IGFueSkgPT4ge1xuXHRcdGxldCBlbGVtZW50ID0gZWxlbWVudHMuZmluZCgoZWxlbTogYW55KSA9PiBlbGVtLmNvZGUgPT0gY29kZSk7XG5cdFx0aWYgKGVsZW1lbnQpIHtcblx0XHRcdHJlc3VsdC5wdXNoKGVsZW1lbnQpO1xuXHRcdH1cblx0XHRlbHNlIHtcblx0XHRcdGVsZW1lbnRzLnNvbWUoKGVsZW06IGFueSkgPT4ge1xuXHRcdFx0XHRpZiAoZWxlbS5jaGlsZHJlbiAmJiBlbGVtLmNoaWxkcmVuLmxlbmd0aCkge1xuXHRcdFx0XHRcdGNvbnN0IGxlbmd0aCA9IHJlc3VsdC5sZW5ndGg7XG5cdFx0XHRcdFx0bGV0IG5ld19yZXN1bHQgPSB0aGlzLmdlbmVyYXRlQnJlYWRjcnVtYihjb2RlLCBlbGVtLmNoaWxkcmVuLCByZXN1bHQpO1xuXHRcdFx0XHRcdGlmIChuZXdfcmVzdWx0Lmxlbmd0aCA+IGxlbmd0aCkge1xuXHRcdFx0XHRcdFx0cmVzdWx0ID0gbmV3X3Jlc3VsdDtcblx0XHRcdFx0XHRcdHJlc3VsdC5wdXNoKGVsZW0pO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH0pXG5cdFx0fVxuXHRcdHJldHVybiByZXN1bHQ7XG5cdH1cblx0cHVibGljIGdldFNlY3Rpb25Db250ZW50QnlMaW5rID0gKGxpbms6IGFueSkgPT5cblx0XHR0aGlzLmNvbm5lY3Rpb24uZ2V0SFRNTCh0aGlzLnBhZ2VDb250ZW50QnlDb2RlQXBpKGxpbmspKS5waXBlKFxuXHRcdFx0bWFwKGh0bWwgPT4gaHRtbC5zcGxpdCgnPC9oZWFkPicpW2h0bWwuc3BsaXQoJzwvaGVhZD4nKS5sZW5ndGggLSAxXSksXG5cdFx0XHRjYXRjaEVycm9yKGUgPT4gb2YoZmFsc2UpKVxuXHRcdCk7XG5cblx0XHRcblxuXHRnZXRGQVEoKSB7XG5cdFx0cmV0dXJuIHRoaXMuY29ubmVjdGlvbi5nZXQodGhpcy5mYXFzQXBpKCkpLnBpcGUobWFwKHJlc3BvbnNlID0+IHtcblx0XHRcdGxldCByZXN1bHQ6IEZBUVtdID0gW107XG5cdFx0XHRyZXNwb25zZS5mb3JFYWNoKChyZXNwb25zZV9mYXE6IGFueSkgPT4ge1xuXHRcdFx0XHRsZXQgZmFxczogRkFRID0ge1xuXHRcdFx0XHRcdGNvZGU6IHJlc3BvbnNlX2ZhcS5jb2RlLFxuXHRcdFx0XHRcdHBvc2l0aW9uOiByZXNwb25zZV9mYXEucG9zaXRpb24sXG5cdFx0XHRcdFx0dGl0bGU6IHJlc3BvbnNlX2ZhcS50cmFuc2xhdGlvbnNbdGhpcy5hcGlDb25zdGFudHMuTE9DQUxFXS50b3BpYyxcblx0XHRcdFx0XHRxdWVzdGlvbnM6IHJlc3BvbnNlX2ZhcS5mcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMubWFwKChhc2tlZF9xdWVzdGlvbjogYW55KSA9PiAoe1xuXHRcdFx0XHRcdFx0Y29kZTogYXNrZWRfcXVlc3Rpb24uY29kZSxcblx0XHRcdFx0XHRcdHBvc2l0aW9uOiBhc2tlZF9xdWVzdGlvbi5wb3NpdGlvbixcblx0XHRcdFx0XHRcdHF1ZXN0aW9uOiBhc2tlZF9xdWVzdGlvbi50cmFuc2xhdGlvbnNbdGhpcy5hcGlDb25zdGFudHMuTE9DQUxFXSA/IGFza2VkX3F1ZXN0aW9uLnRyYW5zbGF0aW9uc1t0aGlzLmFwaUNvbnN0YW50cy5MT0NBTEVdLnF1ZXN0aW9uIDogJycsXG5cdFx0XHRcdFx0XHRhbnN3ZXI6IGFza2VkX3F1ZXN0aW9uLnRyYW5zbGF0aW9uc1t0aGlzLmFwaUNvbnN0YW50cy5MT0NBTEVdID8gYXNrZWRfcXVlc3Rpb24udHJhbnNsYXRpb25zW3RoaXMuYXBpQ29uc3RhbnRzLkxPQ0FMRV0uYW5zd2VyIDogJycsXG5cdFx0XHRcdFx0fSkpXG5cdFx0XHRcdH07XG5cdFx0XHRcdHJlc3VsdC5wdXNoKGZhcXMpO1xuXHRcdFx0fSlcblx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0fSkpO1xuXHR9XG59IFxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9pbnRlcmZhY2VzL29wdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgQ2F0ZWdvcnl7XG4gICAgY29kZTogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBzbHVnOiBzdHJpbmc7XG4gICAgcG9zaXRpb246IG51bWJlcjtcbiAgICBwYXRoOiBzdHJpbmc7IFxuICAgIGlzVmlzaWJsZT86IGJvb2xlYW47XG4gICAgY2hpbGRyZW4/OiBDYXRlZ29yeVtdO1xuICAgIGltYWdlcz86YW55W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VjdGlvbntcbiAgICBjb2RlOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHBhZ2VzPzphbnlbXTtcbiAgICBwYXRoPzpzdHJpbmc7XG4gICAgY2hpbGRyZW4/OlNlY3Rpb25bXTtcbiAgICB0eXBlPzpzdHJpbmc7XG4gICAgYmxvY2tzPzphbnlbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBdHRyaWJ1dGV7XG4gICAgY29kZTogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBwYXRoOiBzdHJpbmc7XG4gICAgc2x1Zzogc3RyaW5nO1xuICAgIHVzZVRvRmlsdGVyOiBib29sZWFuO1xuICAgIHN0eWxlcz86YW55W107XG4gICAgaXNWaXNpYmxlPzogYm9vbGVhbjtcbn0iXX0=
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, makeEnvironmentProviders, inject, Injectable,
|
|
2
|
+
import { InjectionToken, makeEnvironmentProviders, inject, PLATFORM_ID, Injectable, Inject, RendererFactory2, afterNextRender, signal, EnvironmentInjector, runInInjectionContext, Component, ChangeDetectorRef, HostListener, CUSTOM_ELEMENTS_SCHEMA, Input, Pipe, Injector, EventEmitter, Output, forwardRef, afterRender, ViewChild, computed, Renderer2, ChangeDetectionStrategy, Directive } from '@angular/core';
|
|
3
3
|
import * as i1 from '@angular/common';
|
|
4
|
-
import { DOCUMENT, isPlatformBrowser, AsyncPipe, CommonModule, TitleCasePipe, JsonPipe, UpperCasePipe, Location } from '@angular/common';
|
|
4
|
+
import { isPlatformServer, DOCUMENT, isPlatformBrowser, AsyncPipe, CommonModule, TitleCasePipe, JsonPipe, UpperCasePipe, Location } from '@angular/common';
|
|
5
5
|
import { take, BehaviorSubject, shareReplay, map, catchError, of, filter, ReplaySubject, firstValueFrom, concatMap, throwError, switchMap, combineLatest } from 'rxjs';
|
|
6
6
|
import { HttpClient, HttpHeaders } from '@angular/common/http';
|
|
7
7
|
import * as i1$1 from '@ngx-translate/core';
|
|
@@ -44,89 +44,82 @@ const provideEnvironment = (environment) => {
|
|
|
44
44
|
};
|
|
45
45
|
|
|
46
46
|
/**
|
|
47
|
-
* Servicio que provee de datos
|
|
48
|
-
* @export
|
|
49
|
-
* @class ApiConstantsService
|
|
47
|
+
* Servicio que provee de datos relacionados con las peticiones a la API
|
|
50
48
|
*/
|
|
51
49
|
class ApiConstantsService {
|
|
50
|
+
ssrApiUrl;
|
|
52
51
|
_localStorage = inject(LocalStorageService);
|
|
53
52
|
_translate = inject(TranslateService);
|
|
54
|
-
/**
|
|
55
|
-
* Contiene los datos provisto por el frontend en el archivo environment.ts
|
|
56
|
-
*/
|
|
57
53
|
environment = inject(ENVIRONMENT_TOKEN);
|
|
54
|
+
platformId = inject(PLATFORM_ID);
|
|
55
|
+
_channel;
|
|
56
|
+
LOCALE;
|
|
57
|
+
SHOP_API_URL = 'shop-api/';
|
|
58
|
+
CMS_URL = 'cms/';
|
|
59
|
+
constructor(ssrApiUrl) {
|
|
60
|
+
this.ssrApiUrl = ssrApiUrl;
|
|
61
|
+
this._channel = this.environment.channel;
|
|
62
|
+
this.LOCALE = this.environment.locale;
|
|
63
|
+
}
|
|
58
64
|
/**
|
|
59
65
|
* Canal actual del frontend
|
|
60
66
|
*/
|
|
61
67
|
get CHANNEL() {
|
|
62
|
-
// Verificar si estamos en el navegador (no en SSR)
|
|
63
68
|
if (typeof window !== 'undefined') {
|
|
64
|
-
// Primero intenta leer de window.__env (configurado por Docker)
|
|
65
69
|
const windowEnv = window.__env;
|
|
66
|
-
if (windowEnv?.channel)
|
|
70
|
+
if (windowEnv?.channel)
|
|
67
71
|
return windowEnv.channel;
|
|
68
|
-
}
|
|
69
72
|
}
|
|
70
|
-
// Fallback al environment
|
|
71
73
|
return this._channel;
|
|
72
74
|
}
|
|
73
75
|
set CHANNEL(value) {
|
|
74
76
|
this._channel = value;
|
|
75
77
|
}
|
|
76
|
-
_channel;
|
|
77
|
-
/**
|
|
78
|
-
* Locale actual del frontend
|
|
79
|
-
*/
|
|
80
|
-
LOCALE;
|
|
81
|
-
/**
|
|
82
|
-
* URL para las peticiones a shop-api
|
|
83
|
-
*/
|
|
84
|
-
SHOP_API_URL = 'shop-api/';
|
|
85
|
-
/**
|
|
86
|
-
* URL para las peticiones a cms
|
|
87
|
-
*/
|
|
88
|
-
CMS_URL = 'cms/';
|
|
89
|
-
constructor() {
|
|
90
|
-
this._channel = this.environment.channel;
|
|
91
|
-
this.LOCALE = this.environment.locale;
|
|
92
|
-
}
|
|
93
78
|
/**
|
|
94
79
|
* URL del backend para realizar las peticiones
|
|
95
80
|
*/
|
|
96
81
|
get API_URL() {
|
|
97
|
-
//
|
|
82
|
+
// Browser runtime-config
|
|
98
83
|
if (typeof window !== 'undefined') {
|
|
99
|
-
// Primero intenta leer de window.__env (configurado por Docker)
|
|
100
84
|
const windowEnv = window.__env;
|
|
101
|
-
if (windowEnv?.
|
|
102
|
-
return windowEnv.
|
|
103
|
-
|
|
85
|
+
if (windowEnv?.apiBaseUrl)
|
|
86
|
+
return windowEnv.apiBaseUrl;
|
|
87
|
+
}
|
|
88
|
+
// SSR
|
|
89
|
+
if (isPlatformServer(this.platformId)) {
|
|
90
|
+
return this.ssrApiUrl;
|
|
104
91
|
}
|
|
105
|
-
// Fallback
|
|
92
|
+
// Fallback environment
|
|
106
93
|
return this.environment.apiUrl ?? '';
|
|
107
94
|
}
|
|
108
95
|
/**
|
|
109
|
-
*
|
|
110
|
-
|
|
96
|
+
* URL base completa para shop-api con channel y locale
|
|
97
|
+
*/
|
|
98
|
+
getShopApiBase() {
|
|
99
|
+
const channel = this.CHANNEL || 'undefined';
|
|
100
|
+
const locale = this.LOCALE || 'undefined';
|
|
101
|
+
return `${this.API_URL}/${this.SHOP_API_URL}${channel}/?locale=${locale}`;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Retorna la url base general (sin shop-api)
|
|
111
105
|
*/
|
|
112
106
|
getUrlBase() {
|
|
113
107
|
return this.API_URL;
|
|
114
108
|
}
|
|
115
109
|
/**
|
|
116
110
|
* Cambia el canal actual
|
|
117
|
-
* @param code
|
|
118
|
-
* @returns
|
|
119
111
|
*/
|
|
120
|
-
setChannel(code) {
|
|
112
|
+
setChannel(code) {
|
|
113
|
+
this.CHANNEL = code;
|
|
114
|
+
}
|
|
121
115
|
setLocale(locale) {
|
|
122
116
|
this._localStorage.setItem(this.LOCALE_KEY, locale);
|
|
123
117
|
this._translate.use(locale.split('_')[0]);
|
|
124
118
|
this.LOCALE = locale;
|
|
125
119
|
}
|
|
126
|
-
//Storage key
|
|
127
120
|
LOCALE_KEY = 'LOCALE';
|
|
128
121
|
CHANNEL_KEY = 'CHANNEL';
|
|
129
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ApiConstantsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
122
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ApiConstantsService, deps: [{ token: 'API_URL' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
130
123
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ApiConstantsService, providedIn: 'root' });
|
|
131
124
|
}
|
|
132
125
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ApiConstantsService, decorators: [{
|
|
@@ -134,7 +127,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
134
127
|
args: [{
|
|
135
128
|
providedIn: 'root'
|
|
136
129
|
}]
|
|
137
|
-
}], ctorParameters: () => [
|
|
130
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
131
|
+
type: Inject,
|
|
132
|
+
args: ['API_URL']
|
|
133
|
+
}] }] });
|
|
138
134
|
|
|
139
135
|
/**
|
|
140
136
|
* Servicio que funciona como abstracción para manejar la conexión con la API
|
|
@@ -533,6 +529,10 @@ class OptionsService {
|
|
|
533
529
|
* Maneja las peticiones a la API
|
|
534
530
|
*/
|
|
535
531
|
connection = inject(ConnectionService);
|
|
532
|
+
/**
|
|
533
|
+
* Platform ID para verificar si estamos en el navegador
|
|
534
|
+
*/
|
|
535
|
+
platformId = inject(PLATFORM_ID);
|
|
536
536
|
/**
|
|
537
537
|
* Constantes del core
|
|
538
538
|
*/
|
|
@@ -643,7 +643,26 @@ class OptionsService {
|
|
|
643
643
|
* @returns
|
|
644
644
|
*/
|
|
645
645
|
removeAccents(str) {
|
|
646
|
-
|
|
646
|
+
if (isPlatformBrowser(this.platformId) && typeof String.prototype.normalize === 'function') {
|
|
647
|
+
return str.normalize("NFD").replace(/[\u0300-\u036f]/g, "");
|
|
648
|
+
}
|
|
649
|
+
// Fallback para SSR - remover acentos manualmente
|
|
650
|
+
return str.replace(/[àáâãäå]/g, 'a')
|
|
651
|
+
.replace(/[èéêë]/g, 'e')
|
|
652
|
+
.replace(/[ìíîï]/g, 'i')
|
|
653
|
+
.replace(/[òóôõö]/g, 'o')
|
|
654
|
+
.replace(/[ùúûü]/g, 'u')
|
|
655
|
+
.replace(/[ýÿ]/g, 'y')
|
|
656
|
+
.replace(/[ñ]/g, 'n')
|
|
657
|
+
.replace(/[ç]/g, 'c')
|
|
658
|
+
.replace(/[ÀÁÂÃÄÅ]/g, 'A')
|
|
659
|
+
.replace(/[ÈÉÊË]/g, 'E')
|
|
660
|
+
.replace(/[ÌÍÎÏ]/g, 'I')
|
|
661
|
+
.replace(/[ÒÓÔÕÖ]/g, 'O')
|
|
662
|
+
.replace(/[ÙÚÛÜ]/g, 'U')
|
|
663
|
+
.replace(/[ÝŸ]/g, 'Y')
|
|
664
|
+
.replace(/[Ñ]/g, 'N')
|
|
665
|
+
.replace(/[Ç]/g, 'C');
|
|
647
666
|
}
|
|
648
667
|
/**
|
|
649
668
|
* Realiza un mapeo de los datos para darle un formato mas entendible a la
|
|
@@ -1026,7 +1045,9 @@ class FacebookPixelService {
|
|
|
1026
1045
|
this.renderer.appendChild(this.document?.body, new_analityc_script);
|
|
1027
1046
|
this.enabled = true;
|
|
1028
1047
|
}
|
|
1029
|
-
|
|
1048
|
+
if (isPlatformBrowser(this.platformId)) {
|
|
1049
|
+
setTimeout(() => this.callEvent('initialize'), 1000);
|
|
1050
|
+
}
|
|
1030
1051
|
}
|
|
1031
1052
|
/**
|
|
1032
1053
|
* Ejecuta el evento pasado por parametro.
|
|
@@ -1243,7 +1264,9 @@ class GoogleAnalyticsService {
|
|
|
1243
1264
|
this.renderer.appendChild(this.document?.head, declaration);
|
|
1244
1265
|
this.enabled = true;
|
|
1245
1266
|
}
|
|
1246
|
-
|
|
1267
|
+
if (isPlatformBrowser(this.platformId)) {
|
|
1268
|
+
setTimeout(() => this.startListeningPageViews(gtm_id), 1000);
|
|
1269
|
+
}
|
|
1247
1270
|
}
|
|
1248
1271
|
/**
|
|
1249
1272
|
*
|
|
@@ -2644,6 +2667,31 @@ class User {
|
|
|
2644
2667
|
}
|
|
2645
2668
|
}
|
|
2646
2669
|
|
|
2670
|
+
/**
|
|
2671
|
+
* Función auxiliar para remover acentos de forma segura para SSR
|
|
2672
|
+
*/
|
|
2673
|
+
function safeRemoveAccents(str) {
|
|
2674
|
+
if (typeof window !== 'undefined' && typeof String.prototype.normalize === 'function') {
|
|
2675
|
+
return str.normalize("NFD").replace(/[\u0300-\u036f]/g, "");
|
|
2676
|
+
}
|
|
2677
|
+
// Fallback para SSR - remover acentos manualmente
|
|
2678
|
+
return str.replace(/[àáâãäå]/g, 'a')
|
|
2679
|
+
.replace(/[èéêë]/g, 'e')
|
|
2680
|
+
.replace(/[ìíîï]/g, 'i')
|
|
2681
|
+
.replace(/[òóôõö]/g, 'o')
|
|
2682
|
+
.replace(/[ùúûü]/g, 'u')
|
|
2683
|
+
.replace(/[ýÿ]/g, 'y')
|
|
2684
|
+
.replace(/[ñ]/g, 'n')
|
|
2685
|
+
.replace(/[ç]/g, 'c')
|
|
2686
|
+
.replace(/[ÀÁÂÃÄÅ]/g, 'A')
|
|
2687
|
+
.replace(/[ÈÉÊË]/g, 'E')
|
|
2688
|
+
.replace(/[ÌÍÎÏ]/g, 'I')
|
|
2689
|
+
.replace(/[ÒÓÔÕÖ]/g, 'O')
|
|
2690
|
+
.replace(/[ÙÚÛÜ]/g, 'U')
|
|
2691
|
+
.replace(/[ÝŸ]/g, 'Y')
|
|
2692
|
+
.replace(/[Ñ]/g, 'N')
|
|
2693
|
+
.replace(/[Ç]/g, 'C');
|
|
2694
|
+
}
|
|
2647
2695
|
class Filter {
|
|
2648
2696
|
data = [];
|
|
2649
2697
|
multi = false;
|
|
@@ -2663,7 +2711,7 @@ class Filter {
|
|
|
2663
2711
|
throw new Error("Method not implemented.");
|
|
2664
2712
|
}
|
|
2665
2713
|
removeAccents = (str) => {
|
|
2666
|
-
return str
|
|
2714
|
+
return safeRemoveAccents(str);
|
|
2667
2715
|
};
|
|
2668
2716
|
setSelected(element, value) {
|
|
2669
2717
|
//console.log(element, value);
|
|
@@ -6008,6 +6056,22 @@ class MenuEcComponent {
|
|
|
6008
6056
|
hasVisibleProperty(category) {
|
|
6009
6057
|
return category.isVisible === true;
|
|
6010
6058
|
}
|
|
6059
|
+
filterVisibleTree(list) {
|
|
6060
|
+
return (list ?? [])
|
|
6061
|
+
.filter((n) => n?.isVisible === true)
|
|
6062
|
+
.map(n => ({ ...n, children: this.filterVisibleTree(n.children) }));
|
|
6063
|
+
}
|
|
6064
|
+
// Exponé streams ya filtrados
|
|
6065
|
+
categoriesVisible$ = this.categories$.pipe(map((list) => this.filterVisibleTree(list)));
|
|
6066
|
+
sectionsVisible$ = this.sections$.pipe(map((list) => this.filterVisibleTree(list)));
|
|
6067
|
+
attributesVisible$ = this.attributes$.pipe(map((list) => this.filterVisibleTree(list)));
|
|
6068
|
+
// Helpers de conveniencia opcionales
|
|
6069
|
+
getVisibleChildren(node) {
|
|
6070
|
+
return this.filterVisibleTree(node?.children);
|
|
6071
|
+
}
|
|
6072
|
+
hasVisibleChildren(node) {
|
|
6073
|
+
return this.getVisibleChildren(node).length > 0;
|
|
6074
|
+
}
|
|
6011
6075
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MenuEcComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6012
6076
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MenuEcComponent, isStandalone: true, selector: "lib-footer-ec", ngImport: i0, template: '<p>Menu and Footer Helper Component</p>', isInline: true });
|
|
6013
6077
|
}
|
|
@@ -6156,7 +6220,6 @@ class HeaderEcComponent extends MenuEcComponent {
|
|
|
6156
6220
|
_channelService = inject(ChannelService);
|
|
6157
6221
|
changeDetector = inject(ChangeDetectorRef);
|
|
6158
6222
|
appRouter = inject(Router);
|
|
6159
|
-
platformId = inject(PLATFORM_ID);
|
|
6160
6223
|
// Observable del estado de autenticación
|
|
6161
6224
|
logged$;
|
|
6162
6225
|
isAuthenticated$ = this.__authService.isAuthenticated();
|
|
@@ -6172,6 +6235,7 @@ class HeaderEcComponent extends MenuEcComponent {
|
|
|
6172
6235
|
coreConstantsService = inject(CoreConstantsService);
|
|
6173
6236
|
router = inject(Router);
|
|
6174
6237
|
cdr = inject(ChangeDetectorRef); // Inyectamos ChangeDetectorRef para forzar la actualización
|
|
6238
|
+
platformId = inject(PLATFORM_ID);
|
|
6175
6239
|
ngOnInit() {
|
|
6176
6240
|
this.channel = this.coreConstantsService.getChannel();
|
|
6177
6241
|
this.onWindowScroll();
|
|
@@ -6210,17 +6274,21 @@ class HeaderEcComponent extends MenuEcComponent {
|
|
|
6210
6274
|
});
|
|
6211
6275
|
}
|
|
6212
6276
|
onWindowScroll() {
|
|
6213
|
-
|
|
6214
|
-
|
|
6277
|
+
if (isPlatformBrowser(this.platformId)) {
|
|
6278
|
+
const scrollTop = window.scrollY;
|
|
6279
|
+
this.isScrolled = scrollTop > 80;
|
|
6280
|
+
}
|
|
6215
6281
|
}
|
|
6216
6282
|
isHomeFunction() {
|
|
6217
|
-
|
|
6218
|
-
|
|
6219
|
-
if (
|
|
6220
|
-
|
|
6221
|
-
|
|
6222
|
-
|
|
6223
|
-
|
|
6283
|
+
if (isPlatformBrowser(this.platformId)) {
|
|
6284
|
+
const headerElement = document.querySelector('header');
|
|
6285
|
+
if (headerElement) {
|
|
6286
|
+
if (this.router.url !== '/home') {
|
|
6287
|
+
headerElement.classList.add('show-menu');
|
|
6288
|
+
}
|
|
6289
|
+
else {
|
|
6290
|
+
headerElement.classList.remove('show-menu');
|
|
6291
|
+
}
|
|
6224
6292
|
}
|
|
6225
6293
|
}
|
|
6226
6294
|
}
|
|
@@ -6244,26 +6312,30 @@ class HeaderEcComponent extends MenuEcComponent {
|
|
|
6244
6312
|
}
|
|
6245
6313
|
};
|
|
6246
6314
|
borrarInput(inputId) {
|
|
6247
|
-
if (
|
|
6248
|
-
|
|
6249
|
-
|
|
6250
|
-
input.value = '';
|
|
6251
|
-
}
|
|
6252
|
-
}
|
|
6253
|
-
else {
|
|
6254
|
-
const inputs = ['searchInput1'];
|
|
6255
|
-
inputs.forEach((id) => {
|
|
6256
|
-
const input = document.getElementById(id);
|
|
6315
|
+
if (isPlatformBrowser(this.platformId)) {
|
|
6316
|
+
if (inputId) {
|
|
6317
|
+
const input = document.getElementById(inputId);
|
|
6257
6318
|
if (input) {
|
|
6258
6319
|
input.value = '';
|
|
6259
6320
|
}
|
|
6260
|
-
}
|
|
6321
|
+
}
|
|
6322
|
+
else {
|
|
6323
|
+
const inputs = ['searchInput1'];
|
|
6324
|
+
inputs.forEach((id) => {
|
|
6325
|
+
const input = document.getElementById(id);
|
|
6326
|
+
if (input) {
|
|
6327
|
+
input.value = '';
|
|
6328
|
+
}
|
|
6329
|
+
});
|
|
6330
|
+
}
|
|
6261
6331
|
}
|
|
6262
6332
|
this.searchValue = '';
|
|
6263
6333
|
this.coreConstantsService.searchValue = '';
|
|
6264
6334
|
this.getCollectionSearch();
|
|
6265
6335
|
}
|
|
6266
6336
|
setupMobileMenu() {
|
|
6337
|
+
if (!isPlatformBrowser(this.platformId))
|
|
6338
|
+
return;
|
|
6267
6339
|
// console.log('setupMobileMenu called');
|
|
6268
6340
|
const menuMobile = document.querySelector('.menuMobile');
|
|
6269
6341
|
if (!(menuMobile instanceof HTMLElement))
|
|
@@ -6299,6 +6371,8 @@ class HeaderEcComponent extends MenuEcComponent {
|
|
|
6299
6371
|
});
|
|
6300
6372
|
}
|
|
6301
6373
|
setupSearchInputs() {
|
|
6374
|
+
if (!isPlatformBrowser(this.platformId))
|
|
6375
|
+
return;
|
|
6302
6376
|
const inputs = ['searchInput1', 'searchInput2'];
|
|
6303
6377
|
inputs.forEach(id => {
|
|
6304
6378
|
const input = document.getElementById(id);
|
|
@@ -7134,7 +7208,7 @@ class BlockProductsEcComponent extends BlockEcComponent {
|
|
|
7134
7208
|
* Permite personalización de las imágenes de las flechas mediante @Input.
|
|
7135
7209
|
*/
|
|
7136
7210
|
setupSwiperNavigation() {
|
|
7137
|
-
if (this.meta?.styles?.carrousel !== false) {
|
|
7211
|
+
if (this.meta?.styles?.carrousel !== false && isPlatformBrowser(this.platformId)) {
|
|
7138
7212
|
// Usar setTimeout para asegurar que el swiper esté inicializado
|
|
7139
7213
|
setTimeout(() => {
|
|
7140
7214
|
this.initializeSwiperWithCustomNavigation();
|
|
@@ -7146,6 +7220,8 @@ class BlockProductsEcComponent extends BlockEcComponent {
|
|
|
7146
7220
|
* Esta función puede ser movida al componente base para reutilización.
|
|
7147
7221
|
*/
|
|
7148
7222
|
initializeSwiperWithCustomNavigation() {
|
|
7223
|
+
if (!isPlatformBrowser(this.platformId))
|
|
7224
|
+
return;
|
|
7149
7225
|
const prevButton = document.getElementById(`${this.meta?.code}-prev`);
|
|
7150
7226
|
const nextButton = document.getElementById(`${this.meta?.code}-next`);
|
|
7151
7227
|
const swiperElement = document.getElementById(this.meta?.code);
|
|
@@ -7505,7 +7581,9 @@ class MagnizoomEcComponent {
|
|
|
7505
7581
|
this.image = this.document.createElement('img');
|
|
7506
7582
|
this.image.onload = () => {
|
|
7507
7583
|
this.lensSize = { width: this.image.width / 2, height: this.image.height / 2 };
|
|
7508
|
-
|
|
7584
|
+
if (isPlatformBrowser(this.platformId)) {
|
|
7585
|
+
setTimeout(() => this.render());
|
|
7586
|
+
}
|
|
7509
7587
|
};
|
|
7510
7588
|
this.image.src = src;
|
|
7511
7589
|
}
|
|
@@ -10837,9 +10915,11 @@ class RelatedProductsEcComponent extends BlockEcComponent {
|
|
|
10837
10915
|
this._relatedProductsSubject.next(relatedProducts);
|
|
10838
10916
|
res.map((products) => this._analyticsService.callEvent('view_item_list', { products: products.items, item_list_name: products.title || 'Related Products', item_list_id: products.id || 'related-products' }));
|
|
10839
10917
|
// Inicializar swiper después de que los datos estén disponibles
|
|
10840
|
-
|
|
10841
|
-
|
|
10842
|
-
|
|
10918
|
+
if (isPlatformBrowser(this.platformId)) {
|
|
10919
|
+
setTimeout(() => {
|
|
10920
|
+
this.initSwiper();
|
|
10921
|
+
}, 100);
|
|
10922
|
+
}
|
|
10843
10923
|
});
|
|
10844
10924
|
}
|
|
10845
10925
|
initSwiper() {
|