valtech-components 4.0.182 → 4.0.183
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/esm2022/lib/services/app-version/app-version.service.mjs +36 -3
- package/esm2022/lib/services/app-version/types.mjs +10 -1
- package/esm2022/lib/version.mjs +2 -2
- package/fesm2022/valtech-components.mjs +45 -3
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/services/app-version/app-version.service.d.ts +9 -0
- package/lib/services/app-version/types.d.ts +14 -0
- package/lib/version.d.ts +1 -1
- package/package.json +1 -1
- package/src/lib/services/firebase/firebase-messaging-sw.js +0 -145
|
@@ -29,7 +29,7 @@ import { SwUpdate } from '@angular/service-worker';
|
|
|
29
29
|
import { filter, interval } from 'rxjs';
|
|
30
30
|
import { AppConfigService } from '../app-config/app-config.service';
|
|
31
31
|
import { APP_VERSION_PLATFORM_PLUGIN, APP_VERSION_REMOTE_PLUGIN, VALTECH_APP_VERSION, } from './config';
|
|
32
|
-
import { DEFAULT_APP_VERSION_SERVICE_CONFIG, } from './types';
|
|
32
|
+
import { DEFAULT_APP_VERSION_SERVICE_CONFIG, DEFAULT_POST_UPDATE_GRACE_MS, POST_UPDATE_TS_KEY, } from './types';
|
|
33
33
|
import * as i0 from "@angular/core";
|
|
34
34
|
/**
|
|
35
35
|
* Máximo que `applyUpdate` espera por el `VERSION_READY` del SW antes de recargar
|
|
@@ -160,6 +160,7 @@ export class AppVersionService {
|
|
|
160
160
|
console.warn('[AppVersionService] activateUpdate failed:', err);
|
|
161
161
|
}
|
|
162
162
|
finally {
|
|
163
|
+
this.markUpdateApplied();
|
|
163
164
|
this.document.defaultView?.location.reload();
|
|
164
165
|
}
|
|
165
166
|
}
|
|
@@ -218,8 +219,11 @@ export class AppVersionService {
|
|
|
218
219
|
if (!this.swUpdate?.isEnabled)
|
|
219
220
|
return;
|
|
220
221
|
// Bundle nuevo descargado y listo.
|
|
222
|
+
// Si la app acaba de actualizarse (dentro del grace period), ignorar la
|
|
223
|
+
// primera detección para evitar el loop de "N banners seguidos" cuando hay
|
|
224
|
+
// varios deploys acumulados mientras el usuario tenía la pestaña abierta.
|
|
221
225
|
this.swUpdate.versionUpdates
|
|
222
|
-
.pipe(filter(evt => evt.type === 'VERSION_READY'), takeUntilDestroyed(this.destroyRef))
|
|
226
|
+
.pipe(filter(evt => evt.type === 'VERSION_READY'), filter(() => !this.isInPostUpdateGrace()), takeUntilDestroyed(this.destroyRef))
|
|
223
227
|
.subscribe(() => this.swUpdateReady.set(true));
|
|
224
228
|
// SW en estado irrecuperable — la caché del service worker se corrompió o
|
|
225
229
|
// fue parcialmente evictada (común en PWAs standalone de iOS tras deploys
|
|
@@ -268,6 +272,35 @@ export class AppVersionService {
|
|
|
268
272
|
console.warn('[AppVersionService] remote config fetch failed:', err);
|
|
269
273
|
}
|
|
270
274
|
}
|
|
275
|
+
/** Persiste el timestamp de la última actualización aplicada en sessionStorage. */
|
|
276
|
+
markUpdateApplied() {
|
|
277
|
+
try {
|
|
278
|
+
this.document.defaultView?.sessionStorage.setItem(POST_UPDATE_TS_KEY, String(Date.now()));
|
|
279
|
+
}
|
|
280
|
+
catch {
|
|
281
|
+
// sessionStorage puede estar bloqueado (private mode con storage lleno).
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Retorna true si el tiempo transcurrido desde la última actualización
|
|
286
|
+
* aplicada es menor al grace period configurado. Silencia el banner durante
|
|
287
|
+
* esa ventana para evitar el loop "actualizar N veces" cuando hay deploys
|
|
288
|
+
* acumulados.
|
|
289
|
+
*/
|
|
290
|
+
isInPostUpdateGrace() {
|
|
291
|
+
const graceMs = this.serviceConfig?.postUpdateGraceMs ?? DEFAULT_POST_UPDATE_GRACE_MS;
|
|
292
|
+
if (!graceMs)
|
|
293
|
+
return false;
|
|
294
|
+
try {
|
|
295
|
+
const raw = this.document.defaultView?.sessionStorage.getItem(POST_UPDATE_TS_KEY);
|
|
296
|
+
if (!raw)
|
|
297
|
+
return false;
|
|
298
|
+
return Date.now() - Number(raw) < graceMs;
|
|
299
|
+
}
|
|
300
|
+
catch {
|
|
301
|
+
return false;
|
|
302
|
+
}
|
|
303
|
+
}
|
|
271
304
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AppVersionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
272
305
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AppVersionService, providedIn: 'root' }); }
|
|
273
306
|
}
|
|
@@ -275,4 +308,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
275
308
|
type: Injectable,
|
|
276
309
|
args: [{ providedIn: 'root' }]
|
|
277
310
|
}], ctorParameters: () => [] });
|
|
278
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXZlcnNpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvYXBwLXZlcnNpb24vYXBwLXZlcnNpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1Qkc7QUFFSCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQVUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXhDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3BFLE9BQU8sRUFDTCwyQkFBMkIsRUFDM0IseUJBQXlCLEVBQ3pCLG1CQUFtQixHQUNwQixNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBS0wsa0NBQWtDLEdBQ25DLE1BQU0sU0FBUyxDQUFDOztBQUVqQjs7Ozs7R0FLRztBQUNILE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDO0FBRWpDOzs7R0FHRztBQUNILFNBQVMsY0FBYyxDQUFDLENBQVMsRUFBRSxDQUFTO0lBQzFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2pELE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMs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QztRQUN2RSxDQUFDO0lBQ0gsQ0FBQzsrR0F4UFUsaUJBQWlCO21IQUFqQixpQkFBaUIsY0FESixNQUFNOzs0RkFDbkIsaUJBQWlCO2tCQUQ3QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQXBwVmVyc2lvblNlcnZpY2VcbiAqXG4gKiBWZXJpZmljYWNpw7NuIGRlIHZlcnNpw7NuIGRlIGxhIGFwcCBwYXJhIFBXQSAvIHdlYiAvIENhcGFjaXRvci5cbiAqXG4gKiBVbmlmaWNhIHRyZXMgc2XDsWFsZXMgcGFyYSBkZXRlY3RhciBhY3R1YWxpemFjaW9uZXM6XG4gKlxuICogMS4gYFN3VXBkYXRlYCAoYEBhbmd1bGFyL3NlcnZpY2Utd29ya2VyYCkg4oCUIGVsIGV2ZW50byBgVkVSU0lPTl9SRUFEWWAgaW5kaWNhXG4gKiAgICBxdWUgdW4gYnVuZGxlIG51ZXZvIGZ1ZSBkZXNjYXJnYWRvIHkgZXN0w6EgbGlzdG8gcGFyYSBhY3RpdmFyc2UuIFNvbG8gZXN0w6FcbiAqICAgIGRpc3BvbmlibGUgY3VhbmRvIGVsIHNlcnZpY2Ugd29ya2VyIGVzdMOhIHJlZ2lzdHJhZG8gKGJ1aWxkIGRlIHByb2R1Y2Npw7NuKS5cbiAqICAgIEFkZW3DoXMgc2UgY2hlcXVlYSBwcm9hY3RpdmFtZW50ZSBjYWRhIGBjaGVja0ludGVydmFsTXNgIHkgY2FkYSB2ZXogcXVlIGxhXG4gKiAgICBhcHAgdnVlbHZlIGEgZm9yZWdyb3VuZCAoYHZpc2liaWxpdHljaGFuZ2VgKS5cbiAqXG4gKiAyLiBgQXBwQ29uZmlnU2VydmljZWAgKGNvbmZpZyByZW1vdG8gZW4gRmlyZXN0b3JlKSDigJQgZXhwb25lIGB2ZXJzaW9uYFxuICogICAgKMO6bHRpbWEgdmVyc2nDs24gcHVibGljYWRhKSB5IGBtaW5WZXJzaW9uYCAodmVyc2nDs24gbcOtbmltYSBzb3BvcnRhZGEpLlxuICogICAgU2UgdXNhIHBhcmEgbGEgcG9sw610aWNhIGRlIGFjdHVhbGl6YWNpw7NuIG9ibGlnYXRvcmlhIChoYXJkIGdhdGUpLlxuICpcbiAqIDMuIGBBcHBWZXJzaW9uUmVtb3RlUGx1Z2luYCAoSFRUUCkg4oCUIGFsdGVybmF0aXZhIGEgQXBwQ29uZmlnU2VydmljZSBwYXJhIGFwcHNcbiAqICAgIHNpbiBGaXJlYmFzZS4gUHJvdmlzdG8gdmlhIGBwcm92aWRlVmFsdGVjaEFwcFZlcnNpb25IdHRwYC4gRXhwb25lIGVsIG1pc21vXG4gKiAgICBjb250cmF0byAoYHZlcnNpb25gIC8gYG1pblZlcnNpb25gKS4gU2UgY2hlcXVlYSBlbiBsb3MgbWlzbW9zIGludGVydmFsb3NcbiAqICAgIHF1ZSBlbCBTVy5cbiAqXG4gKiBMYXMgdHJlcyBkZXBlbmRlbmNpYXMgc2UgaW55ZWN0YW4gY29tbyBvcGNpb25hbGVzLlxuICovXG5cbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IERlc3Ryb3lSZWYsIEluamVjdGFibGUsIFNpZ25hbCwgY29tcHV0ZWQsIGluamVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBTd1VwZGF0ZSB9IGZyb20gJ0Bhbmd1bGFyL3NlcnZpY2Utd29ya2VyJztcbmltcG9ydCB7IGZpbHRlciwgaW50ZXJ2YWwgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQXBwQ29uZmlnU2VydmljZSB9IGZyb20gJy4uL2FwcC1jb25maWcvYXBwLWNvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIEFQUF9WRVJTSU9OX1BMQVRGT1JNX1BMVUdJTixcbiAgQVBQX1ZFUlNJT05fUkVNT1RFX1BMVUdJTixcbiAgVkFMVEVDSF9BUFBfVkVSU0lPTixcbn0gZnJvbSAnLi9jb25maWcnO1xuaW1wb3J0IHtcbiAgQXBwVmVyc2lvblBsYXRmb3JtUGx1Z2luLFxuICBBcHBWZXJzaW9uUmVtb3RlQ29uZmlnLFxuICBBcHBWZXJzaW9uUmVtb3RlUGx1Z2luLFxuICBBcHBWZXJzaW9uU3RhdHVzLFxuICBERUZBVUxUX0FQUF9WRVJTSU9OX1NFUlZJQ0VfQ09ORklHLFxufSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBNw6F4aW1vIHF1ZSBgYXBwbHlVcGRhdGVgIGVzcGVyYSBwb3IgZWwgYFZFUlNJT05fUkVBRFlgIGRlbCBTVyBhbnRlcyBkZSByZWNhcmdhclxuICogaWd1YWwuIEN1YnJlIGVsIGNhc28gZW4gcXVlIGVsIHVwZGF0ZSBsbyBkZXRlY3TDsyBlbCBwYXRoIEhUVFAgYW50ZXMgZGUgcXVlIGVsXG4gKiBTVyBkZXNjYXJnYXJhIGVsIGJ1bmRsZSBudWV2byAoZXZpdGEgZWwgbG9vcCBkZSBiYW5uZXIpLiBTaSBlbCBTVyBudW5jYSBxdWVkYVxuICogbGlzdG8gKEFuZHJvaWQgQ2hyb21lKSwgcmVjYXJnYSBjb21vIMO6bHRpbW8gcmVjdXJzbyBhbCB2ZW5jZXIuXG4gKi9cbmNvbnN0IFNXX1JFQURZX1RJTUVPVVRfTVMgPSA4MDAwO1xuXG4vKipcbiAqIENvbXBhcmEgZG9zIHZlcnNpb25lcyBzZW12ZXIuIFJldG9ybmEgdHJ1ZSBzaSBgYWAgZXMgZXN0cmljdGFtZW50ZSBtZW5vclxuICogcXVlIGBiYC4gVG9sZXJhbnRlIGEgbG9uZ2l0dWRlcyBkaXN0aW50YXMgeSBhIHBhcnRlcyBubyBudW3DqXJpY2FzLlxuICovXG5mdW5jdGlvbiBpc1ZlcnNpb25Mb3dlcihhOiBzdHJpbmcsIGI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBjb25zdCBwYSA9IGEuc3BsaXQoJy4nKS5tYXAobiA9PiBOdW1iZXIobikgfHwgMCk7XG4gIGNvbnN0IHBiID0gYi5zcGxpdCgnLicpLm1hcChuID0+IE51bWJlcihuKSB8fCAwKTtcbiAgY29uc3QgbGVuID0gTWF0aC5tYXgocGEubGVuZ3RoLCBwYi5sZW5ndGgpO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBjb25zdCB4ID0gcGFbaV0gfHwgMDtcbiAgICBjb25zdCB5ID0gcGJbaV0gfHwgMDtcbiAgICBpZiAoeCA8IHkpIHJldHVybiB0cnVlO1xuICAgIGlmICh4ID4geSkgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEFwcFZlcnNpb25TZXJ2aWNlIHtcbiAgLyoqIFN3VXBkYXRlIHNvbG8gZXhpc3RlIHNpIGVsIFNXIGVzdMOhIHJlZ2lzdHJhZG8gKHByb2QgYnVpbGQpLiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHN3VXBkYXRlID0gaW5qZWN0KFN3VXBkYXRlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICAvKiogQXBwQ29uZmlnU2VydmljZSBlcyBvcGNpb25hbDogbGEgYXBwIHB1ZWRlIG5vIHdpcmVhcmxvLiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGFwcENvbmZpZyA9IGluamVjdChBcHBDb25maWdTZXJ2aWNlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICBwcml2YXRlIHJlYWRvbmx5IHNlcnZpY2VDb25maWcgPSBpbmplY3QoVkFMVEVDSF9BUFBfVkVSU0lPTiwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgLyoqIFBsdWdpbiBuYXRpdm8gb3BjaW9uYWw6IHByb3Zpc3RvIHBvciBhcHBzIENhcGFjaXRvciBwYXJhIFBsYXkgU3RvcmUgLyBBcHAgU3RvcmUuICovXG4gIHByaXZhdGUgcmVhZG9ubHkgcGxhdGZvcm1QbHVnaW4gPSBpbmplY3Q8QXBwVmVyc2lvblBsYXRmb3JtUGx1Z2luPihBUFBfVkVSU0lPTl9QTEFURk9STV9QTFVHSU4sIHtcbiAgICBvcHRpb25hbDogdHJ1ZSxcbiAgfSk7XG4gIC8qKiBQbHVnaW4gSFRUUCBvcGNpb25hbDogYWx0ZXJuYXRpdmEgYSBBcHBDb25maWdTZXJ2aWNlIHBhcmEgYXBwcyBzaW4gRmlyZWJhc2UuICovXG4gIHByaXZhdGUgcmVhZG9ubHkgcmVtb3RlUGx1Z2luID0gaW5qZWN0PEFwcFZlcnNpb25SZW1vdGVQbHVnaW4+KEFQUF9WRVJTSU9OX1JFTU9URV9QTFVHSU4sIHtcbiAgICBvcHRpb25hbDogdHJ1ZSxcbiAgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgLyoqIFRydWUgY3VhbmRvIGVsIFNXIHJlcG9ydMOzIHVuIGJ1bmRsZSBudWV2byBsaXN0byAoYFZFUlNJT05fUkVBRFlgKS4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSBzd1VwZGF0ZVJlYWR5ID0gc2lnbmFsKGZhbHNlKTtcblxuICAvKiogQ29uZmlnIHJlbW90YSBjYXJnYWRhIHBvciBlbCBwbHVnaW4gSFRUUC4gTnVsbCBoYXN0YSBxdWUgY2FyZ2EgbyBzaSBubyBoYXkgcGx1Z2luLiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHJlbW90ZUNvbmZpZyA9IHNpZ25hbDxBcHBWZXJzaW9uUmVtb3RlQ29uZmlnIHwgbnVsbD4obnVsbCk7XG5cbiAgLyoqXG4gICAqIFRydWUgY3VhbmRvIGVsIHVzdWFyaW8gZGVzY2FydMOzIGVsIGJhbm5lciBkZSBhY3R1YWxpemFjacOzbiBvcGNpb25hbC5cbiAgICogRWwgYmFubmVyIG9ibGlnYXRvcmlvIChgdXBkYXRlLXJlcXVpcmVkYCkgaWdub3JhIGVzdGUgZmxhZy5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rpc21pc3NlZCA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGRpc21pc3NlZDogU2lnbmFsPGJvb2xlYW4+ID0gdGhpcy5fZGlzbWlzc2VkLmFzUmVhZG9ubHkoKTtcblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gU0lHTkFMUyBQw5pCTElDT1NcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIFZlcnNpw7NuIGxvY2FsIGRlbCBidWlsZCBhY3R1YWwgZGUgbGEgYXBwLlxuICAgKiBQcm92aWVuZSBkZWwgcHJvdmlkZXIgYHByb3ZpZGVWYWx0ZWNoQXBwVmVyc2lvbih7IGN1cnJlbnRWZXJzaW9uIH0pYC5cbiAgICovXG4gIHJlYWRvbmx5IGN1cnJlbnRWZXJzaW9uOiBTaWduYWw8c3RyaW5nPiA9IGNvbXB1dGVkKFxuICAgICgpID0+IHRoaXMuc2VydmljZUNvbmZpZz8uY3VycmVudFZlcnNpb24gPz8gJzAuMC4wJ1xuICApO1xuXG4gIC8qKlxuICAgKiDDmmx0aW1hIHZlcnNpw7NuIHB1YmxpY2FkYSBzZWfDum4gZWwgY29uZmlnIHJlbW90byAoQXBwQ29uZmlnU2VydmljZSBvIHBsdWdpbiBIVFRQKS5cbiAgICogYG51bGxgIHNpIG5pbmd1bmEgZnVlbnRlIGVzdMOhIGRpc3BvbmlibGUgbyBhw7puIG5vIGNhcmfDsy5cbiAgICovXG4gIHJlYWRvbmx5IGxhdGVzdFZlcnNpb246IFNpZ25hbDxzdHJpbmcgfCBudWxsPiA9IGNvbXB1dGVkKFxuICAgICgpID0+IHRoaXMuYXBwQ29uZmlnPy5yZW1vdGVWZXJzaW9uKCkgPz8gdGhpcy5yZW1vdGVDb25maWcoKT8udmVyc2lvbiA/PyBudWxsXG4gICk7XG5cbiAgLyoqXG4gICAqIEVzdGFkbyBkZSBsYSB2ZXJzacOzbjpcbiAgICogLSBgdXBkYXRlLXJlcXVpcmVkYCDigJQgbGEgdmVyc2nDs24gbG9jYWwgcXVlZMOzIHBvciBkZWJham8gZGUgYG1pblZlcnNpb25gLiBIYXJkIGdhdGUuXG4gICAqIC0gYHVwZGF0ZS1hdmFpbGFibGVgIOKAlCBTVyBidW5kbGUgbGlzdG8sIEFwcENvbmZpZ1NlcnZpY2UgbyBwbHVnaW4gSFRUUCBkZXRlY3Rhcm9uIHZlcnNpw7NuIG51ZXZhLlxuICAgKiAtIGB1cC10by1kYXRlYCDigJQgZW4gY3VhbHF1aWVyIG90cm8gY2Fzby5cbiAgICovXG4gIHJlYWRvbmx5IHN0YXR1czogU2lnbmFsPEFwcFZlcnNpb25TdGF0dXM+ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIC8vIDEuIEhhcmQgZ2F0ZSDigJQgbWluVmVyc2lvbiBkZSBBcHBDb25maWdTZXJ2aWNlIG8gZGVsIHBsdWdpbiBIVFRQLlxuICAgIGNvbnN0IG1pblZlcnNpb24gPSB0aGlzLmFwcENvbmZpZz8uYXBwQ29uZmlnKCk/Lm1pblZlcnNpb24gPz8gdGhpcy5yZW1vdGVDb25maWcoKT8ubWluVmVyc2lvbjtcbiAgICBpZiAobWluVmVyc2lvbiAmJiBpc1ZlcnNpb25Mb3dlcih0aGlzLmN1cnJlbnRWZXJzaW9uKCksIG1pblZlcnNpb24pKSB7XG4gICAgICByZXR1cm4gJ3VwZGF0ZS1yZXF1aXJlZCc7XG4gICAgfVxuXG4gICAgLy8gMi4gVXBkYXRlIG9wY2lvbmFsIOKAlCBTVyBidW5kbGUgbGlzdG8sIEFwcENvbmZpZywgbyBwbHVnaW4gSFRUUCBtw6FzIG51ZXZvLlxuICAgIGNvbnN0IHJlbW90ZUxhdGVzdCA9IHRoaXMucmVtb3RlQ29uZmlnKCk/LnZlcnNpb247XG4gICAgY29uc3QgaGFzUmVtb3RlVXBkYXRlID0gcmVtb3RlTGF0ZXN0XG4gICAgICA/IGlzVmVyc2lvbkxvd2VyKHRoaXMuY3VycmVudFZlcnNpb24oKSwgcmVtb3RlTGF0ZXN0KVxuICAgICAgOiBmYWxzZTtcblxuICAgIGlmICh0aGlzLnN3VXBkYXRlUmVhZHkoKSB8fCB0aGlzLmFwcENvbmZpZz8uaGFzVXBkYXRlKCkgfHwgaGFzUmVtb3RlVXBkYXRlKSB7XG4gICAgICByZXR1cm4gJ3VwZGF0ZS1hdmFpbGFibGUnO1xuICAgIH1cblxuICAgIHJldHVybiAndXAtdG8tZGF0ZSc7XG4gIH0pO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMud2lyZVNlcnZpY2VXb3JrZXIoKTtcbiAgICBpZiAodGhpcy5yZW1vdGVQbHVnaW4pIHtcbiAgICAgIHRoaXMud2lyZVJlbW90ZVBsdWdpbigpO1xuICAgIH1cbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBNw4lUT0RPUyBQw5pCTElDT1NcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIEFwbGljYSBsYSBhY3R1YWxpemFjacOzbiBwZW5kaWVudGUuXG4gICAqXG4gICAqIFNpIGhheSB1biBwbHVnaW4gZGUgcGxhdGFmb3JtYSAobmF0aXZvL0NhcGFjaXRvciksIGRlbGVnYSBlbiDDqWwgKGVqLiBQbGF5IFN0b3JlKS5cbiAgICogU2kgbm8sIGFjdGl2YSBsYSB2ZXJzacOzbiBTVyBzaSBlc3TDoSBkaXNwb25pYmxlIHkgcmVjYXJnYSBsYSBww6FnaW5hLlxuICAgKi9cbiAgYXN5bmMgYXBwbHlVcGRhdGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMucGxhdGZvcm1QbHVnaW4pIHtcbiAgICAgIGF3YWl0IHRoaXMucGxhdGZvcm1QbHVnaW4uYXBwbHlVcGRhdGUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgaWYgKHRoaXMuc3dVcGRhdGU/LmlzRW5hYmxlZCkge1xuICAgICAgICAvLyBTaSBsYSBhY3R1YWxpemFjacOzbiBzZSBkZXRlY3TDsyBwb3IgZWwgcGF0aCBIVFRQICgvdmVyc2lvbi5qc29uKSBBTlRFU1xuICAgICAgICAvLyBkZSBxdWUgZWwgU1cgZGVzY2FyZ3VlIGVsIGJ1bmRsZSBudWV2bywgYHN3VXBkYXRlUmVhZHlgIGHDum4gZXMgZmFsc2U6XG4gICAgICAgIC8vIHJlY2FyZ2FyIGFob3JhIHZvbHZlcsOtYSBhIGNhcmdhciBlbCBNSVNNTyBidW5kbGUgdmllam8geSBlbCBiYW5uZXJcbiAgICAgICAgLy8gcmVhcGFyZWNlcsOtYSAobG9vcCBkZSBcImFjdHVhbGl6YXIgTiB2ZWNlc1wiKS4gUGVkaW1vcyBhbCBTVyBxdWUgY2hlcXVlZVxuICAgICAgICAvLyB5IGVzcGVyYW1vcyBhIHF1ZSBlbCBidW5kbGUgcXVlZGUgbGlzdG8gKGNvbiB0aW1lb3V0KSBwYXJhIHF1ZSBlbFxuICAgICAgICAvLyByZWxvYWQgcmVhbG1lbnRlIGNhbWJpZSBkZSB2ZXJzacOzbi5cbiAgICAgICAgaWYgKCF0aGlzLnN3VXBkYXRlUmVhZHkoKSkge1xuICAgICAgICAgIGF3YWl0IHRoaXMuc3dVcGRhdGUuY2hlY2tGb3JVcGRhdGUoKS5jYXRjaCgoKSA9PiB1bmRlZmluZWQpO1xuICAgICAgICAgIGlmICghdGhpcy5zd1VwZGF0ZVJlYWR5KCkpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMud2FpdEZvclN3UmVhZHkoU1dfUkVBRFlfVElNRU9VVF9NUyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnN3VXBkYXRlUmVhZHkoKSkge1xuICAgICAgICAgIGF3YWl0IHRoaXMuc3dVcGRhdGUuYWN0aXZhdGVVcGRhdGUoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc29sZS53YXJuKCdbQXBwVmVyc2lvblNlcnZpY2VdIGFjdGl2YXRlVXBkYXRlIGZhaWxlZDonLCBlcnIpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmRvY3VtZW50LmRlZmF1bHRWaWV3Py5sb2NhdGlvbi5yZWxvYWQoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRXNwZXJhIGEgcXVlIGVsIFNXIHJlcG9ydGUgdW4gYnVuZGxlIG51ZXZvIGxpc3RvIChgVkVSU0lPTl9SRUFEWWApLCBvIGhhc3RhXG4gICAqIGB0aW1lb3V0TXNgLiBFdml0YSBlbCByZWxvYWQgXCJlbiBzZWNvXCIgY3VhbmRvIGVsIHVwZGF0ZSBsbyBkZXRlY3TDsyBlbCBwYXRoXG4gICAqIEhUVFAgYW50ZXMgZGUgcXVlIGVsIFNXIGRlc2NhcmdhcmEgZWwgYnVuZGxlLiBTaSBlbCB0aW1lb3V0IHZlbmNlIChlai5cbiAgICogQW5kcm9pZCBDaHJvbWUgZG9uZGUgVkVSU0lPTl9SRUFEWSBlcyBwb2NvIGNvbmZpYWJsZSksIHJlc3VlbHZlIGlndWFsIHkgZWxcbiAgICogY2FsbGVyIHJlY2FyZ2EgY29tbyDDumx0aW1vIHJlY3Vyc28uXG4gICAqL1xuICBwcml2YXRlIHdhaXRGb3JTd1JlYWR5KHRpbWVvdXRNczogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuc3dVcGRhdGVSZWFkeSgpIHx8ICF0aGlzLnN3VXBkYXRlPy5pc0VuYWJsZWQpIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4ocmVzb2x2ZSA9PiB7XG4gICAgICBsZXQgc2V0dGxlZCA9IGZhbHNlO1xuICAgICAgY29uc3QgZmluaXNoID0gKCkgPT4ge1xuICAgICAgICBpZiAoc2V0dGxlZCkgcmV0dXJuO1xuICAgICAgICBzZXR0bGVkID0gdHJ1ZTtcbiAgICAgICAgc3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lcik7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH07XG4gICAgICBjb25zdCBzdWIgPSB0aGlzLnN3VXBkYXRlIS52ZXJzaW9uVXBkYXRlcy5waXBlKFxuICAgICAgICBmaWx0ZXIoZXZ0ID0+IGV2dC50eXBlID09PSAnVkVSU0lPTl9SRUFEWScpXG4gICAgICApLnN1YnNjcmliZSgoKSA9PiBmaW5pc2goKSk7XG4gICAgICBjb25zdCB0aW1lciA9IHNldFRpbWVvdXQoZmluaXNoLCB0aW1lb3V0TXMpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIERlc2NhcnRhIGVsIGJhbm5lciBkZSBhY3R1YWxpemFjacOzbiBvcGNpb25hbC5cbiAgICogTm8gdGllbmUgZWZlY3RvIHNvYnJlIGVsIGVzdGFkbyBgdXBkYXRlLXJlcXVpcmVkYCAoaGFyZCBnYXRlKS5cbiAgICovXG4gIGRpc21pc3MoKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzbWlzc2VkLnNldCh0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGdWVyemEgdW4gY2hlcXVlbzogU1cgKyBwbHVnaW4gSFRUUCAoc2kgZXhpc3RlKS5cbiAgICovXG4gIGFzeW5jIGNoZWNrTm93KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgIHRoaXMuc3dVcGRhdGU/LmlzRW5hYmxlZFxuICAgICAgICA/IHRoaXMuc3dVcGRhdGVcbiAgICAgICAgICAgIC5jaGVja0ZvclVwZGF0ZSgpXG4gICAgICAgICAgICAuY2F0Y2goZXJyID0+IGNvbnNvbGUud2FybignW0FwcFZlcnNpb25TZXJ2aWNlXSBjaGVja0ZvclVwZGF0ZSBmYWlsZWQ6JywgZXJyKSlcbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICB0aGlzLnJlbW90ZVBsdWdpbiA/IHRoaXMubG9hZFJlbW90ZUNvbmZpZygpIDogdW5kZWZpbmVkLFxuICAgIF0pO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFBSSVZBRE9cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIFN1c2NyaWJlIGB2ZXJzaW9uVXBkYXRlc2AsIHByb2dyYW1hIGNoZXF1ZW9zIHBlcmnDs2RpY29zIHkgcmVhY2Npb25hIGFsXG4gICAqIHZvbHZlciBsYSBhcHAgYSBmb3JlZ3JvdW5kLiBTb2xvIGFjdMO6YSBzaSBlbCBTVyBlc3TDoSBoYWJpbGl0YWRvLlxuICAgKi9cbiAgcHJpdmF0ZSB3aXJlU2VydmljZVdvcmtlcigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc3dVcGRhdGU/LmlzRW5hYmxlZCkgcmV0dXJuO1xuXG4gICAgLy8gQnVuZGxlIG51ZXZvIGRlc2NhcmdhZG8geSBsaXN0by5cbiAgICB0aGlzLnN3VXBkYXRlLnZlcnNpb25VcGRhdGVzXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKGV2dCA9PiBldnQudHlwZSA9PT0gJ1ZFUlNJT05fUkVBRFknKSxcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZilcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5zd1VwZGF0ZVJlYWR5LnNldCh0cnVlKSk7XG5cbiAgICAvLyBTVyBlbiBlc3RhZG8gaXJyZWN1cGVyYWJsZSDigJQgbGEgY2FjaMOpIGRlbCBzZXJ2aWNlIHdvcmtlciBzZSBjb3Jyb21wacOzIG9cbiAgICAvLyBmdWUgcGFyY2lhbG1lbnRlIGV2aWN0YWRhIChjb23Dum4gZW4gUFdBcyBzdGFuZGFsb25lIGRlIGlPUyB0cmFzIGRlcGxveXNcbiAgICAvLyByZXBldGlkb3MpLiBMYSBhcHAgbm8gcHVlZGUgY2FyZ2FyIHN1cyBhc3NldHMg4oaSIHBhbnRhbGxhIGVuIGJsYW5jby5cbiAgICAvLyBSZWN1cGVyYWNpw7NuIHJlY29tZW5kYWRhIHBvciBBbmd1bGFyOiByZWNhcmdhciBwYXJhIHRyYWVyIHRvZG8gZnJlc2NvXG4gICAgLy8gZGVzZGUgbGEgcmVkLlxuICAgIHRoaXMuc3dVcGRhdGUudW5yZWNvdmVyYWJsZS5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgY29uc29sZS5lcnJvcignW0FwcFZlcnNpb25TZXJ2aWNlXSBTVyB1bnJlY292ZXJhYmxlIOKAlCByZWxvYWRpbmc6JywgZXZlbnQucmVhc29uKTtcbiAgICAgIHRoaXMuZG9jdW1lbnQuZGVmYXVsdFZpZXc/LmxvY2F0aW9uLnJlbG9hZCgpO1xuICAgIH0pO1xuXG4gICAgY29uc3QgaW50ZXJ2YWxNcyA9XG4gICAgICB0aGlzLnNlcnZpY2VDb25maWc/LmNoZWNrSW50ZXJ2YWxNcyA/PyBERUZBVUxUX0FQUF9WRVJTSU9OX1NFUlZJQ0VfQ09ORklHLmNoZWNrSW50ZXJ2YWxNcztcblxuICAgIGludGVydmFsKGludGVydmFsTXMpXG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdm9pZCB0aGlzLmNoZWNrTm93KCkpO1xuXG4gICAgY29uc3Qgb25WaXNpYmxlID0gKCk6IHZvaWQgPT4ge1xuICAgICAgaWYgKHRoaXMuZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlID09PSAndmlzaWJsZScpIHZvaWQgdGhpcy5jaGVja05vdygpO1xuICAgIH07XG4gICAgdGhpcy5kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd2aXNpYmlsaXR5Y2hhbmdlJywgb25WaXNpYmxlKTtcbiAgICB0aGlzLmRlc3Ryb3lSZWYub25EZXN0cm95KCgpID0+XG4gICAgICB0aGlzLmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Zpc2liaWxpdHljaGFuZ2UnLCBvblZpc2libGUpXG4gICAgKTtcblxuICAgIHZvaWQgdGhpcy5jaGVja05vdygpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhcmdhIGNvbmZpZyByZW1vdGEgdmlhIHBsdWdpbiBIVFRQIGFsIGluaWNpbywgZW4gZm9yZWdyb3VuZCB5IGVuIGVsIGludGVydmFsbyBwZXJpw7NkaWNvLlxuICAgKiBTb2xvIHNlIGxsYW1hIHNpIGByZW1vdGVQbHVnaW5gIGVzdMOhIHByb3Zpc3RvLlxuICAgKi9cbiAgcHJpdmF0ZSB3aXJlUmVtb3RlUGx1Z2luKCk6IHZvaWQge1xuICAgIHZvaWQgdGhpcy5sb2FkUmVtb3RlQ29uZmlnKCk7XG5cbiAgICBjb25zdCBpbnRlcnZhbE1zID1cbiAgICAgIHRoaXMuc2VydmljZUNvbmZpZz8uY2hlY2tJbnRlcnZhbE1zID8/IERFRkFVTFRfQVBQX1ZFUlNJT05fU0VSVklDRV9DT05GSUcuY2hlY2tJbnRlcnZhbE1zO1xuXG4gICAgaW50ZXJ2YWwoaW50ZXJ2YWxNcylcbiAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB2b2lkIHRoaXMubG9hZFJlbW90ZUNvbmZpZygpKTtcblxuICAgIGNvbnN0IG9uVmlzaWJsZSA9ICgpOiB2b2lkID0+IHtcbiAgICAgIGlmICh0aGlzLmRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSA9PT0gJ3Zpc2libGUnKSB2b2lkIHRoaXMubG9hZFJlbW90ZUNvbmZpZygpO1xuICAgIH07XG4gICAgdGhpcy5kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd2aXNpYmlsaXR5Y2hhbmdlJywgb25WaXNpYmxlKTtcbiAgICB0aGlzLmRlc3Ryb3lSZWYub25EZXN0cm95KCgpID0+XG4gICAgICB0aGlzLmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Zpc2liaWxpdHljaGFuZ2UnLCBvblZpc2libGUpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZFJlbW90ZUNvbmZpZygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgY29uZmlnID0gYXdhaXQgdGhpcy5yZW1vdGVQbHVnaW4hLmdldFJlbW90ZUNvbmZpZygpO1xuICAgICAgdGhpcy5yZW1vdGVDb25maWcuc2V0KGNvbmZpZyk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1tBcHBWZXJzaW9uU2VydmljZV0gcmVtb3RlIGNvbmZpZyBmZXRjaCBmYWlsZWQ6JywgZXJyKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
311
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXZlcnNpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvYXBwLXZlcnNpb24vYXBwLXZlcnNpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1Qkc7QUFFSCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQVUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXhDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3BFLE9BQU8sRUFDTCwyQkFBMkIsRUFDM0IseUJBQXlCLEVBQ3pCLG1CQUFtQixHQUNwQixNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBS0wsa0NBQWtDLEVBQ2xDLDRCQUE0QixFQUM1QixrQkFBa0IsR0FDbkIsTUFBTSxTQUFTLENBQUM7O0FBRWpCOzs7OztHQUtHO0FBQ0gsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUM7QUFFakM7OztHQUdHO0FBQ0gsU0FBUyxjQUFjLENBQUMsQ0FBUyxFQUFFLENBQVM7SUFDMUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDakQsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFD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LEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEFwcFZlcnNpb25TZXJ2aWNlXG4gKlxuICogVmVyaWZpY2FjacOzbiBkZSB2ZXJzacOzbiBkZSBsYSBhcHAgcGFyYSBQV0EgLyB3ZWIgLyBDYXBhY2l0b3IuXG4gKlxuICogVW5pZmljYSB0cmVzIHNlw7FhbGVzIHBhcmEgZGV0ZWN0YXIgYWN0dWFsaXphY2lvbmVzOlxuICpcbiAqIDEuIGBTd1VwZGF0ZWAgKGBAYW5ndWxhci9zZXJ2aWNlLXdvcmtlcmApIOKAlCBlbCBldmVudG8gYFZFUlNJT05fUkVBRFlgIGluZGljYVxuICogICAgcXVlIHVuIGJ1bmRsZSBudWV2byBmdWUgZGVzY2FyZ2FkbyB5IGVzdMOhIGxpc3RvIHBhcmEgYWN0aXZhcnNlLiBTb2xvIGVzdMOhXG4gKiAgICBkaXNwb25pYmxlIGN1YW5kbyBlbCBzZXJ2aWNlIHdvcmtlciBlc3TDoSByZWdpc3RyYWRvIChidWlsZCBkZSBwcm9kdWNjacOzbikuXG4gKiAgICBBZGVtw6FzIHNlIGNoZXF1ZWEgcHJvYWN0aXZhbWVudGUgY2FkYSBgY2hlY2tJbnRlcnZhbE1zYCB5IGNhZGEgdmV6IHF1ZSBsYVxuICogICAgYXBwIHZ1ZWx2ZSBhIGZvcmVncm91bmQgKGB2aXNpYmlsaXR5Y2hhbmdlYCkuXG4gKlxuICogMi4gYEFwcENvbmZpZ1NlcnZpY2VgIChjb25maWcgcmVtb3RvIGVuIEZpcmVzdG9yZSkg4oCUIGV4cG9uZSBgdmVyc2lvbmBcbiAqICAgICjDumx0aW1hIHZlcnNpw7NuIHB1YmxpY2FkYSkgeSBgbWluVmVyc2lvbmAgKHZlcnNpw7NuIG3DrW5pbWEgc29wb3J0YWRhKS5cbiAqICAgIFNlIHVzYSBwYXJhIGxhIHBvbMOtdGljYSBkZSBhY3R1YWxpemFjacOzbiBvYmxpZ2F0b3JpYSAoaGFyZCBnYXRlKS5cbiAqXG4gKiAzLiBgQXBwVmVyc2lvblJlbW90ZVBsdWdpbmAgKEhUVFApIOKAlCBhbHRlcm5hdGl2YSBhIEFwcENvbmZpZ1NlcnZpY2UgcGFyYSBhcHBzXG4gKiAgICBzaW4gRmlyZWJhc2UuIFByb3Zpc3RvIHZpYSBgcHJvdmlkZVZhbHRlY2hBcHBWZXJzaW9uSHR0cGAuIEV4cG9uZSBlbCBtaXNtb1xuICogICAgY29udHJhdG8gKGB2ZXJzaW9uYCAvIGBtaW5WZXJzaW9uYCkuIFNlIGNoZXF1ZWEgZW4gbG9zIG1pc21vcyBpbnRlcnZhbG9zXG4gKiAgICBxdWUgZWwgU1cuXG4gKlxuICogTGFzIHRyZXMgZGVwZW5kZW5jaWFzIHNlIGlueWVjdGFuIGNvbW8gb3BjaW9uYWxlcy5cbiAqL1xuXG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBEZXN0cm95UmVmLCBJbmplY3RhYmxlLCBTaWduYWwsIGNvbXB1dGVkLCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgU3dVcGRhdGUgfSBmcm9tICdAYW5ndWxhci9zZXJ2aWNlLXdvcmtlcic7XG5pbXBvcnQgeyBmaWx0ZXIsIGludGVydmFsIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEFwcENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi9hcHAtY29uZmlnL2FwcC1jb25maWcuc2VydmljZSc7XG5pbXBvcnQge1xuICBBUFBfVkVSU0lPTl9QTEFURk9STV9QTFVHSU4sXG4gIEFQUF9WRVJTSU9OX1JFTU9URV9QTFVHSU4sXG4gIFZBTFRFQ0hfQVBQX1ZFUlNJT04sXG59IGZyb20gJy4vY29uZmlnJztcbmltcG9ydCB7XG4gIEFwcFZlcnNpb25QbGF0Zm9ybVBsdWdpbixcbiAgQXBwVmVyc2lvblJlbW90ZUNvbmZpZyxcbiAgQXBwVmVyc2lvblJlbW90ZVBsdWdpbixcbiAgQXBwVmVyc2lvblN0YXR1cyxcbiAgREVGQVVMVF9BUFBfVkVSU0lPTl9TRVJWSUNFX0NPTkZJRyxcbiAgREVGQVVMVF9QT1NUX1VQREFURV9HUkFDRV9NUyxcbiAgUE9TVF9VUERBVEVfVFNfS0VZLFxufSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBNw6F4aW1vIHF1ZSBgYXBwbHlVcGRhdGVgIGVzcGVyYSBwb3IgZWwgYFZFUlNJT05fUkVBRFlgIGRlbCBTVyBhbnRlcyBkZSByZWNhcmdhclxuICogaWd1YWwuIEN1YnJlIGVsIGNhc28gZW4gcXVlIGVsIHVwZGF0ZSBsbyBkZXRlY3TDsyBlbCBwYXRoIEhUVFAgYW50ZXMgZGUgcXVlIGVsXG4gKiBTVyBkZXNjYXJnYXJhIGVsIGJ1bmRsZSBudWV2byAoZXZpdGEgZWwgbG9vcCBkZSBiYW5uZXIpLiBTaSBlbCBTVyBudW5jYSBxdWVkYVxuICogbGlzdG8gKEFuZHJvaWQgQ2hyb21lKSwgcmVjYXJnYSBjb21vIMO6bHRpbW8gcmVjdXJzbyBhbCB2ZW5jZXIuXG4gKi9cbmNvbnN0IFNXX1JFQURZX1RJTUVPVVRfTVMgPSA4MDAwO1xuXG4vKipcbiAqIENvbXBhcmEgZG9zIHZlcnNpb25lcyBzZW12ZXIuIFJldG9ybmEgdHJ1ZSBzaSBgYWAgZXMgZXN0cmljdGFtZW50ZSBtZW5vclxuICogcXVlIGBiYC4gVG9sZXJhbnRlIGEgbG9uZ2l0dWRlcyBkaXN0aW50YXMgeSBhIHBhcnRlcyBubyBudW3DqXJpY2FzLlxuICovXG5mdW5jdGlvbiBpc1ZlcnNpb25Mb3dlcihhOiBzdHJpbmcsIGI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBjb25zdCBwYSA9IGEuc3BsaXQoJy4nKS5tYXAobiA9PiBOdW1iZXIobikgfHwgMCk7XG4gIGNvbnN0IHBiID0gYi5zcGxpdCgnLicpLm1hcChuID0+IE51bWJlcihuKSB8fCAwKTtcbiAgY29uc3QgbGVuID0gTWF0aC5tYXgocGEubGVuZ3RoLCBwYi5sZW5ndGgpO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBjb25zdCB4ID0gcGFbaV0gfHwgMDtcbiAgICBjb25zdCB5ID0gcGJbaV0gfHwgMDtcbiAgICBpZiAoeCA8IHkpIHJldHVybiB0cnVlO1xuICAgIGlmICh4ID4geSkgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEFwcFZlcnNpb25TZXJ2aWNlIHtcbiAgLyoqIFN3VXBkYXRlIHNvbG8gZXhpc3RlIHNpIGVsIFNXIGVzdMOhIHJlZ2lzdHJhZG8gKHByb2QgYnVpbGQpLiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHN3VXBkYXRlID0gaW5qZWN0KFN3VXBkYXRlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICAvKiogQXBwQ29uZmlnU2VydmljZSBlcyBvcGNpb25hbDogbGEgYXBwIHB1ZWRlIG5vIHdpcmVhcmxvLiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGFwcENvbmZpZyA9IGluamVjdChBcHBDb25maWdTZXJ2aWNlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICBwcml2YXRlIHJlYWRvbmx5IHNlcnZpY2VDb25maWcgPSBpbmplY3QoVkFMVEVDSF9BUFBfVkVSU0lPTiwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgLyoqIFBsdWdpbiBuYXRpdm8gb3BjaW9uYWw6IHByb3Zpc3RvIHBvciBhcHBzIENhcGFjaXRvciBwYXJhIFBsYXkgU3RvcmUgLyBBcHAgU3RvcmUuICovXG4gIHByaXZhdGUgcmVhZG9ubHkgcGxhdGZvcm1QbHVnaW4gPSBpbmplY3Q8QXBwVmVyc2lvblBsYXRmb3JtUGx1Z2luPihBUFBfVkVSU0lPTl9QTEFURk9STV9QTFVHSU4sIHtcbiAgICBvcHRpb25hbDogdHJ1ZSxcbiAgfSk7XG4gIC8qKiBQbHVnaW4gSFRUUCBvcGNpb25hbDogYWx0ZXJuYXRpdmEgYSBBcHBDb25maWdTZXJ2aWNlIHBhcmEgYXBwcyBzaW4gRmlyZWJhc2UuICovXG4gIHByaXZhdGUgcmVhZG9ubHkgcmVtb3RlUGx1Z2luID0gaW5qZWN0PEFwcFZlcnNpb25SZW1vdGVQbHVnaW4+KEFQUF9WRVJTSU9OX1JFTU9URV9QTFVHSU4sIHtcbiAgICBvcHRpb25hbDogdHJ1ZSxcbiAgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgLyoqIFRydWUgY3VhbmRvIGVsIFNXIHJlcG9ydMOzIHVuIGJ1bmRsZSBudWV2byBsaXN0byAoYFZFUlNJT05fUkVBRFlgKS4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSBzd1VwZGF0ZVJlYWR5ID0gc2lnbmFsKGZhbHNlKTtcblxuICAvKiogQ29uZmlnIHJlbW90YSBjYXJnYWRhIHBvciBlbCBwbHVnaW4gSFRUUC4gTnVsbCBoYXN0YSBxdWUgY2FyZ2EgbyBzaSBubyBoYXkgcGx1Z2luLiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHJlbW90ZUNvbmZpZyA9IHNpZ25hbDxBcHBWZXJzaW9uUmVtb3RlQ29uZmlnIHwgbnVsbD4obnVsbCk7XG5cbiAgLyoqXG4gICAqIFRydWUgY3VhbmRvIGVsIHVzdWFyaW8gZGVzY2FydMOzIGVsIGJhbm5lciBkZSBhY3R1YWxpemFjacOzbiBvcGNpb25hbC5cbiAgICogRWwgYmFubmVyIG9ibGlnYXRvcmlvIChgdXBkYXRlLXJlcXVpcmVkYCkgaWdub3JhIGVzdGUgZmxhZy5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rpc21pc3NlZCA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGRpc21pc3NlZDogU2lnbmFsPGJvb2xlYW4+ID0gdGhpcy5fZGlzbWlzc2VkLmFzUmVhZG9ubHkoKTtcblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gU0lHTkFMUyBQw5pCTElDT1NcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIFZlcnNpw7NuIGxvY2FsIGRlbCBidWlsZCBhY3R1YWwgZGUgbGEgYXBwLlxuICAgKiBQcm92aWVuZSBkZWwgcHJvdmlkZXIgYHByb3ZpZGVWYWx0ZWNoQXBwVmVyc2lvbih7IGN1cnJlbnRWZXJzaW9uIH0pYC5cbiAgICovXG4gIHJlYWRvbmx5IGN1cnJlbnRWZXJzaW9uOiBTaWduYWw8c3RyaW5nPiA9IGNvbXB1dGVkKFxuICAgICgpID0+IHRoaXMuc2VydmljZUNvbmZpZz8uY3VycmVudFZlcnNpb24gPz8gJzAuMC4wJ1xuICApO1xuXG4gIC8qKlxuICAgKiDDmmx0aW1hIHZlcnNpw7NuIHB1YmxpY2FkYSBzZWfDum4gZWwgY29uZmlnIHJlbW90byAoQXBwQ29uZmlnU2VydmljZSBvIHBsdWdpbiBIVFRQKS5cbiAgICogYG51bGxgIHNpIG5pbmd1bmEgZnVlbnRlIGVzdMOhIGRpc3BvbmlibGUgbyBhw7puIG5vIGNhcmfDsy5cbiAgICovXG4gIHJlYWRvbmx5IGxhdGVzdFZlcnNpb246IFNpZ25hbDxzdHJpbmcgfCBudWxsPiA9IGNvbXB1dGVkKFxuICAgICgpID0+IHRoaXMuYXBwQ29uZmlnPy5yZW1vdGVWZXJzaW9uKCkgPz8gdGhpcy5yZW1vdGVDb25maWcoKT8udmVyc2lvbiA/PyBudWxsXG4gICk7XG5cbiAgLyoqXG4gICAqIEVzdGFkbyBkZSBsYSB2ZXJzacOzbjpcbiAgICogLSBgdXBkYXRlLXJlcXVpcmVkYCDigJQgbGEgdmVyc2nDs24gbG9jYWwgcXVlZMOzIHBvciBkZWJham8gZGUgYG1pblZlcnNpb25gLiBIYXJkIGdhdGUuXG4gICAqIC0gYHVwZGF0ZS1hdmFpbGFibGVgIOKAlCBTVyBidW5kbGUgbGlzdG8sIEFwcENvbmZpZ1NlcnZpY2UgbyBwbHVnaW4gSFRUUCBkZXRlY3Rhcm9uIHZlcnNpw7NuIG51ZXZhLlxuICAgKiAtIGB1cC10by1kYXRlYCDigJQgZW4gY3VhbHF1aWVyIG90cm8gY2Fzby5cbiAgICovXG4gIHJlYWRvbmx5IHN0YXR1czogU2lnbmFsPEFwcFZlcnNpb25TdGF0dXM+ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIC8vIDEuIEhhcmQgZ2F0ZSDigJQgbWluVmVyc2lvbiBkZSBBcHBDb25maWdTZXJ2aWNlIG8gZGVsIHBsdWdpbiBIVFRQLlxuICAgIGNvbnN0IG1pblZlcnNpb24gPSB0aGlzLmFwcENvbmZpZz8uYXBwQ29uZmlnKCk/Lm1pblZlcnNpb24gPz8gdGhpcy5yZW1vdGVDb25maWcoKT8ubWluVmVyc2lvbjtcbiAgICBpZiAobWluVmVyc2lvbiAmJiBpc1ZlcnNpb25Mb3dlcih0aGlzLmN1cnJlbnRWZXJzaW9uKCksIG1pblZlcnNpb24pKSB7XG4gICAgICByZXR1cm4gJ3VwZGF0ZS1yZXF1aXJlZCc7XG4gICAgfVxuXG4gICAgLy8gMi4gVXBkYXRlIG9wY2lvbmFsIOKAlCBTVyBidW5kbGUgbGlzdG8sIEFwcENvbmZpZywgbyBwbHVnaW4gSFRUUCBtw6FzIG51ZXZvLlxuICAgIGNvbnN0IHJlbW90ZUxhdGVzdCA9IHRoaXMucmVtb3RlQ29uZmlnKCk/LnZlcnNpb247XG4gICAgY29uc3QgaGFzUmVtb3RlVXBkYXRlID0gcmVtb3RlTGF0ZXN0XG4gICAgICA/IGlzVmVyc2lvbkxvd2VyKHRoaXMuY3VycmVudFZlcnNpb24oKSwgcmVtb3RlTGF0ZXN0KVxuICAgICAgOiBmYWxzZTtcblxuICAgIGlmICh0aGlzLnN3VXBkYXRlUmVhZHkoKSB8fCB0aGlzLmFwcENvbmZpZz8uaGFzVXBkYXRlKCkgfHwgaGFzUmVtb3RlVXBkYXRlKSB7XG4gICAgICByZXR1cm4gJ3VwZGF0ZS1hdmFpbGFibGUnO1xuICAgIH1cblxuICAgIHJldHVybiAndXAtdG8tZGF0ZSc7XG4gIH0pO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMud2lyZVNlcnZpY2VXb3JrZXIoKTtcbiAgICBpZiAodGhpcy5yZW1vdGVQbHVnaW4pIHtcbiAgICAgIHRoaXMud2lyZVJlbW90ZVBsdWdpbigpO1xuICAgIH1cbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBNw4lUT0RPUyBQw5pCTElDT1NcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIEFwbGljYSBsYSBhY3R1YWxpemFjacOzbiBwZW5kaWVudGUuXG4gICAqXG4gICAqIFNpIGhheSB1biBwbHVnaW4gZGUgcGxhdGFmb3JtYSAobmF0aXZvL0NhcGFjaXRvciksIGRlbGVnYSBlbiDDqWwgKGVqLiBQbGF5IFN0b3JlKS5cbiAgICogU2kgbm8sIGFjdGl2YSBsYSB2ZXJzacOzbiBTVyBzaSBlc3TDoSBkaXNwb25pYmxlIHkgcmVjYXJnYSBsYSBww6FnaW5hLlxuICAgKi9cbiAgYXN5bmMgYXBwbHlVcGRhdGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMucGxhdGZvcm1QbHVnaW4pIHtcbiAgICAgIGF3YWl0IHRoaXMucGxhdGZvcm1QbHVnaW4uYXBwbHlVcGRhdGUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgaWYgKHRoaXMuc3dVcGRhdGU/LmlzRW5hYmxlZCkge1xuICAgICAgICAvLyBTaSBsYSBhY3R1YWxpemFjacOzbiBzZSBkZXRlY3TDsyBwb3IgZWwgcGF0aCBIVFRQICgvdmVyc2lvbi5qc29uKSBBTlRFU1xuICAgICAgICAvLyBkZSBxdWUgZWwgU1cgZGVzY2FyZ3VlIGVsIGJ1bmRsZSBudWV2bywgYHN3VXBkYXRlUmVhZHlgIGHDum4gZXMgZmFsc2U6XG4gICAgICAgIC8vIHJlY2FyZ2FyIGFob3JhIHZvbHZlcsOtYSBhIGNhcmdhciBlbCBNSVNNTyBidW5kbGUgdmllam8geSBlbCBiYW5uZXJcbiAgICAgICAgLy8gcmVhcGFyZWNlcsOtYSAobG9vcCBkZSBcImFjdHVhbGl6YXIgTiB2ZWNlc1wiKS4gUGVkaW1vcyBhbCBTVyBxdWUgY2hlcXVlZVxuICAgICAgICAvLyB5IGVzcGVyYW1vcyBhIHF1ZSBlbCBidW5kbGUgcXVlZGUgbGlzdG8gKGNvbiB0aW1lb3V0KSBwYXJhIHF1ZSBlbFxuICAgICAgICAvLyByZWxvYWQgcmVhbG1lbnRlIGNhbWJpZSBkZSB2ZXJzacOzbi5cbiAgICAgICAgaWYgKCF0aGlzLnN3VXBkYXRlUmVhZHkoKSkge1xuICAgICAgICAgIGF3YWl0IHRoaXMuc3dVcGRhdGUuY2hlY2tGb3JVcGRhdGUoKS5jYXRjaCgoKSA9PiB1bmRlZmluZWQpO1xuICAgICAgICAgIGlmICghdGhpcy5zd1VwZGF0ZVJlYWR5KCkpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMud2FpdEZvclN3UmVhZHkoU1dfUkVBRFlfVElNRU9VVF9NUyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnN3VXBkYXRlUmVhZHkoKSkge1xuICAgICAgICAgIGF3YWl0IHRoaXMuc3dVcGRhdGUuYWN0aXZhdGVVcGRhdGUoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc29sZS53YXJuKCdbQXBwVmVyc2lvblNlcnZpY2VdIGFjdGl2YXRlVXBkYXRlIGZhaWxlZDonLCBlcnIpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLm1hcmtVcGRhdGVBcHBsaWVkKCk7XG4gICAgICB0aGlzLmRvY3VtZW50LmRlZmF1bHRWaWV3Py5sb2NhdGlvbi5yZWxvYWQoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRXNwZXJhIGEgcXVlIGVsIFNXIHJlcG9ydGUgdW4gYnVuZGxlIG51ZXZvIGxpc3RvIChgVkVSU0lPTl9SRUFEWWApLCBvIGhhc3RhXG4gICAqIGB0aW1lb3V0TXNgLiBFdml0YSBlbCByZWxvYWQgXCJlbiBzZWNvXCIgY3VhbmRvIGVsIHVwZGF0ZSBsbyBkZXRlY3TDsyBlbCBwYXRoXG4gICAqIEhUVFAgYW50ZXMgZGUgcXVlIGVsIFNXIGRlc2NhcmdhcmEgZWwgYnVuZGxlLiBTaSBlbCB0aW1lb3V0IHZlbmNlIChlai5cbiAgICogQW5kcm9pZCBDaHJvbWUgZG9uZGUgVkVSU0lPTl9SRUFEWSBlcyBwb2NvIGNvbmZpYWJsZSksIHJlc3VlbHZlIGlndWFsIHkgZWxcbiAgICogY2FsbGVyIHJlY2FyZ2EgY29tbyDDumx0aW1vIHJlY3Vyc28uXG4gICAqL1xuICBwcml2YXRlIHdhaXRGb3JTd1JlYWR5KHRpbWVvdXRNczogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuc3dVcGRhdGVSZWFkeSgpIHx8ICF0aGlzLnN3VXBkYXRlPy5pc0VuYWJsZWQpIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4ocmVzb2x2ZSA9PiB7XG4gICAgICBsZXQgc2V0dGxlZCA9IGZhbHNlO1xuICAgICAgY29uc3QgZmluaXNoID0gKCkgPT4ge1xuICAgICAgICBpZiAoc2V0dGxlZCkgcmV0dXJuO1xuICAgICAgICBzZXR0bGVkID0gdHJ1ZTtcbiAgICAgICAgc3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lcik7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH07XG4gICAgICBjb25zdCBzdWIgPSB0aGlzLnN3VXBkYXRlIS52ZXJzaW9uVXBkYXRlcy5waXBlKFxuICAgICAgICBmaWx0ZXIoZXZ0ID0+IGV2dC50eXBlID09PSAnVkVSU0lPTl9SRUFEWScpXG4gICAgICApLnN1YnNjcmliZSgoKSA9PiBmaW5pc2goKSk7XG4gICAgICBjb25zdCB0aW1lciA9IHNldFRpbWVvdXQoZmluaXNoLCB0aW1lb3V0TXMpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIERlc2NhcnRhIGVsIGJhbm5lciBkZSBhY3R1YWxpemFjacOzbiBvcGNpb25hbC5cbiAgICogTm8gdGllbmUgZWZlY3RvIHNvYnJlIGVsIGVzdGFkbyBgdXBkYXRlLXJlcXVpcmVkYCAoaGFyZCBnYXRlKS5cbiAgICovXG4gIGRpc21pc3MoKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzbWlzc2VkLnNldCh0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGdWVyemEgdW4gY2hlcXVlbzogU1cgKyBwbHVnaW4gSFRUUCAoc2kgZXhpc3RlKS5cbiAgICovXG4gIGFzeW5jIGNoZWNrTm93KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgIHRoaXMuc3dVcGRhdGU/LmlzRW5hYmxlZFxuICAgICAgICA/IHRoaXMuc3dVcGRhdGVcbiAgICAgICAgICAgIC5jaGVja0ZvclVwZGF0ZSgpXG4gICAgICAgICAgICAuY2F0Y2goZXJyID0+IGNvbnNvbGUud2FybignW0FwcFZlcnNpb25TZXJ2aWNlXSBjaGVja0ZvclVwZGF0ZSBmYWlsZWQ6JywgZXJyKSlcbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICB0aGlzLnJlbW90ZVBsdWdpbiA/IHRoaXMubG9hZFJlbW90ZUNvbmZpZygpIDogdW5kZWZpbmVkLFxuICAgIF0pO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFBSSVZBRE9cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIFN1c2NyaWJlIGB2ZXJzaW9uVXBkYXRlc2AsIHByb2dyYW1hIGNoZXF1ZW9zIHBlcmnDs2RpY29zIHkgcmVhY2Npb25hIGFsXG4gICAqIHZvbHZlciBsYSBhcHAgYSBmb3JlZ3JvdW5kLiBTb2xvIGFjdMO6YSBzaSBlbCBTVyBlc3TDoSBoYWJpbGl0YWRvLlxuICAgKi9cbiAgcHJpdmF0ZSB3aXJlU2VydmljZVdvcmtlcigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc3dVcGRhdGU/LmlzRW5hYmxlZCkgcmV0dXJuO1xuXG4gICAgLy8gQnVuZGxlIG51ZXZvIGRlc2NhcmdhZG8geSBsaXN0by5cbiAgICAvLyBTaSBsYSBhcHAgYWNhYmEgZGUgYWN0dWFsaXphcnNlIChkZW50cm8gZGVsIGdyYWNlIHBlcmlvZCksIGlnbm9yYXIgbGFcbiAgICAvLyBwcmltZXJhIGRldGVjY2nDs24gcGFyYSBldml0YXIgZWwgbG9vcCBkZSBcIk4gYmFubmVycyBzZWd1aWRvc1wiIGN1YW5kbyBoYXlcbiAgICAvLyB2YXJpb3MgZGVwbG95cyBhY3VtdWxhZG9zIG1pZW50cmFzIGVsIHVzdWFyaW8gdGVuw61hIGxhIHBlc3Rhw7FhIGFiaWVydGEuXG4gICAgdGhpcy5zd1VwZGF0ZS52ZXJzaW9uVXBkYXRlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcihldnQgPT4gZXZ0LnR5cGUgPT09ICdWRVJTSU9OX1JFQURZJyksXG4gICAgICAgIGZpbHRlcigoKSA9PiAhdGhpcy5pc0luUG9zdFVwZGF0ZUdyYWNlKCkpLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLnN3VXBkYXRlUmVhZHkuc2V0KHRydWUpKTtcblxuICAgIC8vIFNXIGVuIGVzdGFkbyBpcnJlY3VwZXJhYmxlIOKAlCBsYSBjYWNow6kgZGVsIHNlcnZpY2Ugd29ya2VyIHNlIGNvcnJvbXBpw7Mgb1xuICAgIC8vIGZ1ZSBwYXJjaWFsbWVudGUgZXZpY3RhZGEgKGNvbcO6biBlbiBQV0FzIHN0YW5kYWxvbmUgZGUgaU9TIHRyYXMgZGVwbG95c1xuICAgIC8vIHJlcGV0aWRvcykuIExhIGFwcCBubyBwdWVkZSBjYXJnYXIgc3VzIGFzc2V0cyDihpIgcGFudGFsbGEgZW4gYmxhbmNvLlxuICAgIC8vIFJlY3VwZXJhY2nDs24gcmVjb21lbmRhZGEgcG9yIEFuZ3VsYXI6IHJlY2FyZ2FyIHBhcmEgdHJhZXIgdG9kbyBmcmVzY29cbiAgICAvLyBkZXNkZSBsYSByZWQuXG4gICAgdGhpcy5zd1VwZGF0ZS51bnJlY292ZXJhYmxlLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICBjb25zb2xlLmVycm9yKCdbQXBwVmVyc2lvblNlcnZpY2VdIFNXIHVucmVjb3ZlcmFibGUg4oCUIHJlbG9hZGluZzonLCBldmVudC5yZWFzb24pO1xuICAgICAgdGhpcy5kb2N1bWVudC5kZWZhdWx0Vmlldz8ubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBpbnRlcnZhbE1zID1cbiAgICAgIHRoaXMuc2VydmljZUNvbmZpZz8uY2hlY2tJbnRlcnZhbE1zID8/IERFRkFVTFRfQVBQX1ZFUlNJT05fU0VSVklDRV9DT05GSUcuY2hlY2tJbnRlcnZhbE1zO1xuXG4gICAgaW50ZXJ2YWwoaW50ZXJ2YWxNcylcbiAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB2b2lkIHRoaXMuY2hlY2tOb3coKSk7XG5cbiAgICBjb25zdCBvblZpc2libGUgPSAoKTogdm9pZCA9PiB7XG4gICAgICBpZiAodGhpcy5kb2N1bWVudC52aXNpYmlsaXR5U3RhdGUgPT09ICd2aXNpYmxlJykgdm9pZCB0aGlzLmNoZWNrTm93KCk7XG4gICAgfTtcbiAgICB0aGlzLmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Zpc2liaWxpdHljaGFuZ2UnLCBvblZpc2libGUpO1xuICAgIHRoaXMuZGVzdHJveVJlZi5vbkRlc3Ryb3koKCkgPT5cbiAgICAgIHRoaXMuZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndmlzaWJpbGl0eWNoYW5nZScsIG9uVmlzaWJsZSlcbiAgICApO1xuXG4gICAgdm9pZCB0aGlzLmNoZWNrTm93KCk7XG4gIH1cblxuICAvKipcbiAgICogQ2FyZ2EgY29uZmlnIHJlbW90YSB2aWEgcGx1Z2luIEhUVFAgYWwgaW5pY2lvLCBlbiBmb3JlZ3JvdW5kIHkgZW4gZWwgaW50ZXJ2YWxvIHBlcmnDs2RpY28uXG4gICAqIFNvbG8gc2UgbGxhbWEgc2kgYHJlbW90ZVBsdWdpbmAgZXN0w6EgcHJvdmlzdG8uXG4gICAqL1xuICBwcml2YXRlIHdpcmVSZW1vdGVQbHVnaW4oKTogdm9pZCB7XG4gICAgdm9pZCB0aGlzLmxvYWRSZW1vdGVDb25maWcoKTtcblxuICAgIGNvbnN0IGludGVydmFsTXMgPVxuICAgICAgdGhpcy5zZXJ2aWNlQ29uZmlnPy5jaGVja0ludGVydmFsTXMgPz8gREVGQVVMVF9BUFBfVkVSU0lPTl9TRVJWSUNFX0NPTkZJRy5jaGVja0ludGVydmFsTXM7XG5cbiAgICBpbnRlcnZhbChpbnRlcnZhbE1zKVxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHZvaWQgdGhpcy5sb2FkUmVtb3RlQ29uZmlnKCkpO1xuXG4gICAgY29uc3Qgb25WaXNpYmxlID0gKCk6IHZvaWQgPT4ge1xuICAgICAgaWYgKHRoaXMuZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlID09PSAndmlzaWJsZScpIHZvaWQgdGhpcy5sb2FkUmVtb3RlQ29uZmlnKCk7XG4gICAgfTtcbiAgICB0aGlzLmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Zpc2liaWxpdHljaGFuZ2UnLCBvblZpc2libGUpO1xuICAgIHRoaXMuZGVzdHJveVJlZi5vbkRlc3Ryb3koKCkgPT5cbiAgICAgIHRoaXMuZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndmlzaWJpbGl0eWNoYW5nZScsIG9uVmlzaWJsZSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb2FkUmVtb3RlQ29uZmlnKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBjb25maWcgPSBhd2FpdCB0aGlzLnJlbW90ZVBsdWdpbiEuZ2V0UmVtb3RlQ29uZmlnKCk7XG4gICAgICB0aGlzLnJlbW90ZUNvbmZpZy5zZXQoY29uZmlnKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnNvbGUud2FybignW0FwcFZlcnNpb25TZXJ2aWNlXSByZW1vdGUgY29uZmlnIGZldGNoIGZhaWxlZDonLCBlcnIpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBQZXJzaXN0ZSBlbCB0aW1lc3RhbXAgZGUgbGEgw7psdGltYSBhY3R1YWxpemFjacOzbiBhcGxpY2FkYSBlbiBzZXNzaW9uU3RvcmFnZS4gKi9cbiAgcHJpdmF0ZSBtYXJrVXBkYXRlQXBwbGllZCgpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5kb2N1bWVudC5kZWZhdWx0Vmlldz8uc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShQT1NUX1VQREFURV9UU19LRVksIFN0cmluZyhEYXRlLm5vdygpKSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBzZXNzaW9uU3RvcmFnZSBwdWVkZSBlc3RhciBibG9xdWVhZG8gKHByaXZhdGUgbW9kZSBjb24gc3RvcmFnZSBsbGVubykuXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldG9ybmEgdHJ1ZSBzaSBlbCB0aWVtcG8gdHJhbnNjdXJyaWRvIGRlc2RlIGxhIMO6bHRpbWEgYWN0dWFsaXphY2nDs25cbiAgICogYXBsaWNhZGEgZXMgbWVub3IgYWwgZ3JhY2UgcGVyaW9kIGNvbmZpZ3VyYWRvLiBTaWxlbmNpYSBlbCBiYW5uZXIgZHVyYW50ZVxuICAgKiBlc2EgdmVudGFuYSBwYXJhIGV2aXRhciBlbCBsb29wIFwiYWN0dWFsaXphciBOIHZlY2VzXCIgY3VhbmRvIGhheSBkZXBsb3lzXG4gICAqIGFjdW11bGFkb3MuXG4gICAqL1xuICBwcml2YXRlIGlzSW5Qb3N0VXBkYXRlR3JhY2UoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZ3JhY2VNcyA9IHRoaXMuc2VydmljZUNvbmZpZz8ucG9zdFVwZGF0ZUdyYWNlTXMgPz8gREVGQVVMVF9QT1NUX1VQREFURV9HUkFDRV9NUztcbiAgICBpZiAoIWdyYWNlTXMpIHJldHVybiBmYWxzZTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmF3ID0gdGhpcy5kb2N1bWVudC5kZWZhdWx0Vmlldz8uc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShQT1NUX1VQREFURV9UU19LRVkpO1xuICAgICAgaWYgKCFyYXcpIHJldHVybiBmYWxzZTtcbiAgICAgIHJldHVybiBEYXRlLm5vdygpIC0gTnVtYmVyKHJhdykgPCBncmFjZU1zO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -7,11 +7,20 @@
|
|
|
7
7
|
* Intervalo por defecto de chequeo de actualizaciones: 30 minutos.
|
|
8
8
|
*/
|
|
9
9
|
export const DEFAULT_CHECK_INTERVAL_MS = 30 * 60 * 1000;
|
|
10
|
+
/**
|
|
11
|
+
* Ventana de silencio por defecto tras aplicar una actualización: 60 segundos.
|
|
12
|
+
*/
|
|
13
|
+
export const DEFAULT_POST_UPDATE_GRACE_MS = 60 * 1000;
|
|
14
|
+
/**
|
|
15
|
+
* Clave de sessionStorage para el timestamp de la última actualización aplicada.
|
|
16
|
+
*/
|
|
17
|
+
export const POST_UPDATE_TS_KEY = 'val_update_applied_ts';
|
|
10
18
|
/**
|
|
11
19
|
* Configuración por defecto del servicio.
|
|
12
20
|
*/
|
|
13
21
|
export const DEFAULT_APP_VERSION_SERVICE_CONFIG = {
|
|
14
22
|
currentVersion: '0.0.0',
|
|
15
23
|
checkIntervalMs: DEFAULT_CHECK_INTERVAL_MS,
|
|
24
|
+
postUpdateGraceMs: DEFAULT_POST_UPDATE_GRACE_MS,
|
|
16
25
|
};
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2FwcC12ZXJzaW9uL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFnQ0g7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztBQUV4RDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFFdEQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyx1QkFBdUIsQ0FBQztBQUUxRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGtDQUFrQyxHQUFzQztJQUNuRixjQUFjLEVBQUUsT0FBTztJQUN2QixlQUFlLEVBQUUseUJBQXlCO0lBQzFDLGlCQUFpQixFQUFFLDRCQUE0QjtDQUNoRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBcHBWZXJzaW9uIFR5cGVzXG4gKlxuICogVGlwb3MgcGFyYSBlbCBzZXJ2aWNpbyBkZSB2ZXJpZmljYWNpw7NuIGRlIHZlcnNpw7NuIGRlIGxhIGFwbGljYWNpw7NuLlxuICovXG5cbi8qKlxuICogRXN0YWRvIGRlIGxhIHZlcnNpw7NuIGRlIGxhIGFwbGljYWNpw7NuIHJlc3BlY3RvIGEgbGEgdmVyc2nDs24gcHVibGljYWRhLlxuICpcbiAqIC0gYHVwLXRvLWRhdGVgICAg4oCUIGxhIGFwcCBlc3TDoSBhbCBkw61hLCBubyBoYXkgbmFkYSBxdWUgaGFjZXIuXG4gKiAtIGB1cGRhdGUtYXZhaWxhYmxlYCDigJQgaGF5IHVuYSB2ZXJzacOzbiBudWV2YSAoYnVuZGxlIGRlbCBTVyBsaXN0byBvIGNvbmZpZ1xuICogICByZW1vdG8gbcOhcyBudWV2bykuIEVsIHVzdWFyaW8gcHVlZGUgYWN0dWFsaXphciBwZXJvIE5PIGVzdMOhIG9ibGlnYWRvLlxuICogLSBgdXBkYXRlLXJlcXVpcmVkYCDigJQgbGEgdmVyc2nDs24gbG9jYWwgcXVlZMOzIHBvciBkZWJham8gZGUgYG1pblZlcnNpb25gXG4gKiAgIGRlbCBjb25maWcgcmVtb3RvIChoYXJkIGdhdGUpLiBFbCB1c3VhcmlvIERFQkUgYWN0dWFsaXphciBwYXJhIGNvbnRpbnVhci5cbiAqL1xuZXhwb3J0IHR5cGUgQXBwVmVyc2lvblN0YXR1cyA9ICd1cC10by1kYXRlJyB8ICd1cGRhdGUtYXZhaWxhYmxlJyB8ICd1cGRhdGUtcmVxdWlyZWQnO1xuXG4vKipcbiAqIENvbmZpZ3VyYWNpw7NuIHBhcmEgZWwgcHJvdmVlZG9yIGRlIEFwcFZlcnNpb25TZXJ2aWNlLlxuICpcbiAqIEBwcm9wZXJ0eSBjdXJyZW50VmVyc2lvbiAtIFZlcnNpw7NuIGRlbCBidWlsZCBhY3R1YWwgZGUgbGEgYXBwIChzZW12ZXIgc3RyaW5nKS5cbiAqICAgTm9ybWFsbWVudGUgcHJvdmllbmUgZGVsIGB2ZXJzaW9uYCBkZSBgcGFja2FnZS5qc29uYC5cbiAqIEBwcm9wZXJ0eSBjaGVja0ludGVydmFsTXMgLSBJbnRlcnZhbG8gKG1zKSBlbnRyZSBsbGFtYWRhcyBhXG4gKiAgIGBTd1VwZGF0ZS5jaGVja0ZvclVwZGF0ZSgpYC4gRGVmYXVsdDogMzAgbWludXRvcy5cbiAqIEBwcm9wZXJ0eSBwb3N0VXBkYXRlR3JhY2VNcyAtIFZlbnRhbmEgZGUgc2lsZW5jaW8gKG1zKSB0cmFzIGFwbGljYXIgdW5hXG4gKiAgIGFjdHVhbGl6YWNpw7NuLiBTaSBlbCBTVyBkZXRlY3RhIG90cmEgdmVyc2nDs24gZGVudHJvIGRlIGVzdGUgcGVyw61vZG8gdHJhcyBlbFxuICogICByZWxvYWQsIGVsIGJhbm5lciBOTyBzZSBtdWVzdHJhIOKAlCBldml0YSBlbCBsb29wIGRlIFwiTiBhY3R1YWxpemFjaW9uZXNcbiAqICAgc2VndWlkYXNcIiBjdWFuZG8gaGF5IHZhcmlvcyBkZXBsb3lzIGFjdW11bGFkb3MuIERlZmF1bHQ6IDYwIHNlZ3VuZG9zLlxuICogICBQb25lciBlbiAwIHBhcmEgZGVzaGFiaWxpdGFyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFwcFZlcnNpb25TZXJ2aWNlQ29uZmlnIHtcbiAgY3VycmVudFZlcnNpb246IHN0cmluZztcbiAgY2hlY2tJbnRlcnZhbE1zPzogbnVtYmVyO1xuICBwb3N0VXBkYXRlR3JhY2VNcz86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBJbnRlcnZhbG8gcG9yIGRlZmVjdG8gZGUgY2hlcXVlbyBkZSBhY3R1YWxpemFjaW9uZXM6IDMwIG1pbnV0b3MuXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0NIRUNLX0lOVEVSVkFMX01TID0gMzAgKiA2MCAqIDEwMDA7XG5cbi8qKlxuICogVmVudGFuYSBkZSBzaWxlbmNpbyBwb3IgZGVmZWN0byB0cmFzIGFwbGljYXIgdW5hIGFjdHVhbGl6YWNpw7NuOiA2MCBzZWd1bmRvcy5cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfUE9TVF9VUERBVEVfR1JBQ0VfTVMgPSA2MCAqIDEwMDA7XG5cbi8qKlxuICogQ2xhdmUgZGUgc2Vzc2lvblN0b3JhZ2UgcGFyYSBlbCB0aW1lc3RhbXAgZGUgbGEgw7psdGltYSBhY3R1YWxpemFjacOzbiBhcGxpY2FkYS5cbiAqL1xuZXhwb3J0IGNvbnN0IFBPU1RfVVBEQVRFX1RTX0tFWSA9ICd2YWxfdXBkYXRlX2FwcGxpZWRfdHMnO1xuXG4vKipcbiAqIENvbmZpZ3VyYWNpw7NuIHBvciBkZWZlY3RvIGRlbCBzZXJ2aWNpby5cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfQVBQX1ZFUlNJT05fU0VSVklDRV9DT05GSUc6IFJlcXVpcmVkPEFwcFZlcnNpb25TZXJ2aWNlQ29uZmlnPiA9IHtcbiAgY3VycmVudFZlcnNpb246ICcwLjAuMCcsXG4gIGNoZWNrSW50ZXJ2YWxNczogREVGQVVMVF9DSEVDS19JTlRFUlZBTF9NUyxcbiAgcG9zdFVwZGF0ZUdyYWNlTXM6IERFRkFVTFRfUE9TVF9VUERBVEVfR1JBQ0VfTVMsXG59O1xuXG4vKipcbiAqIFBsdWdpbiBkZSBwbGF0YWZvcm1hIHBhcmEgY29tcG9ydGFtaWVudG8gbmF0aXZvIGRlIGFjdHVhbGl6YWNpb25lcy5cbiAqXG4gKiBJbXBsZW1lbnRhZG8gcG9yIGxhIGFwcCBjb25zdW1pZG9yYSB5IHByb3Zpc3RvIHZpYSBgQVBQX1ZFUlNJT05fUExBVEZPUk1fUExVR0lOYC5cbiAqIFBlcm1pdGUgcmVkaXJpZ2lyIGFsIFBsYXkgU3RvcmUgLyBBcHAgU3RvcmUgZW4gbHVnYXIgZGUgcmVjYXJnYXIgbGEgcMOhZ2luYS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gYW5kcm9pZC11cGRhdGUucGx1Z2luLnRzXG4gKiBASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuICogZXhwb3J0IGNsYXNzIEFuZHJvaWRVcGRhdGVQbHVnaW4gaW1wbGVtZW50cyBBcHBWZXJzaW9uUGxhdGZvcm1QbHVnaW4ge1xuICogICBhc3luYyBhcHBseVVwZGF0ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAqICAgICB3aW5kb3cub3BlbignaHR0cHM6Ly9wbGF5Lmdvb2dsZS5jb20vc3RvcmUvYXBwcy9kZXRhaWxzP2lkPWNvbS5teWFwcCcsICdfc3lzdGVtJyk7XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFwcFZlcnNpb25QbGF0Zm9ybVBsdWdpbiB7XG4gIGFwcGx5VXBkYXRlKCk6IFByb21pc2U8dm9pZD47XG59XG5cbi8qKlxuICogQ29uZmlnIHJlbW90YSBkZSB2ZXJzaW9uZXMgcmV0b3JuYWRhIHBvciBlbCBwbHVnaW4gSFRUUCBvIEFwcENvbmZpZ1NlcnZpY2UuXG4gKlxuICogQ29udHJhdG8gbcOtbmltbyBlc3BlcmFkbyBkZWwgZW5kcG9pbnQ6XG4gKiBgYGBcbiAqIEdFVCAvYXBpL3ZlcnNpb25cbiAqIHsgXCJ2ZXJzaW9uXCI6IFwiMS4yLjNcIiwgXCJtaW5WZXJzaW9uXCI6IFwiMS4wLjBcIiB9XG4gKiBgYGBcbiAqIFNpIGVsIHJlc3BvbnNlIHRpZW5lIG90cmEgZm9ybWEsIHVzYXIgYG1hcFJlc3BvbnNlYCBlbiBgcHJvdmlkZVZhbHRlY2hBcHBWZXJzaW9uSHR0cGAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXBwVmVyc2lvblJlbW90ZUNvbmZpZyB7XG4gIHZlcnNpb246IHN0cmluZztcbiAgbWluVmVyc2lvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQbHVnaW4gZGUgY29uZmlnIHJlbW90YSBwYXJhIGFwcHMgc2luIEZpcmViYXNlL0ZpcmVzdG9yZS5cbiAqXG4gKiBJbXBsZW1lbnRhZG8gcG9yIGxhIGFwcCBjb25zdW1pZG9yYSAobyBnZW5lcmFkbyBjb24gYHByb3ZpZGVWYWx0ZWNoQXBwVmVyc2lvbkh0dHBgKVxuICogeSBwcm92aXN0byB2aWEgYEFQUF9WRVJTSU9OX1JFTU9URV9QTFVHSU5gLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFwcFZlcnNpb25SZW1vdGVQbHVnaW4ge1xuICBnZXRSZW1vdGVDb25maWcoKTogUHJvbWlzZTxBcHBWZXJzaW9uUmVtb3RlQ29uZmlnPjtcbn1cblxuLyoqXG4gKiBDb25maWd1cmFjacOzbiBwYXJhIGBwcm92aWRlVmFsdGVjaEFwcFZlcnNpb25IdHRwYC5cbiAqXG4gKiBAcHJvcGVydHkgdXJsIC0gVVJMIGRlbCBlbmRwb2ludCBkZSB2ZXJzaW9uZXMuXG4gKiBAcHJvcGVydHkgbWFwUmVzcG9uc2UgLSBUcmFuc2Zvcm1hIGVsIHJlc3BvbnNlIGRlIGxhIEFQSSBhbCBjb250cmF0byBlc3TDoW5kYXIuXG4gKiAgIMOadGlsIGN1YW5kbyBlbCBlbmRwb2ludCBleGlzdGVudGUgdGllbmUgb3RyYSBmb3JtYSAoZWouIGB7IGFuZHJvaWQsIHdlYiB9YCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXBwVmVyc2lvbkh0dHBDb25maWcge1xuICB1cmw6IHN0cmluZztcbiAgbWFwUmVzcG9uc2U/OiAoZGF0YTogdW5rbm93bikgPT4gQXBwVmVyc2lvblJlbW90ZUNvbmZpZztcbn1cbiJdfQ==
|
package/esm2022/lib/version.mjs
CHANGED
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
* Current version of valtech-components.
|
|
3
3
|
* This is automatically updated during the publish process.
|
|
4
4
|
*/
|
|
5
|
-
export const VERSION = '4.0.
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
5
|
+
export const VERSION = '4.0.183';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzQuMC4xODMnO1xuIl19
|
|
@@ -56,7 +56,7 @@ import { BrowserMultiFormatReader } from '@zxing/browser';
|
|
|
56
56
|
* Current version of valtech-components.
|
|
57
57
|
* This is automatically updated during the publish process.
|
|
58
58
|
*/
|
|
59
|
-
const VERSION = '4.0.
|
|
59
|
+
const VERSION = '4.0.183';
|
|
60
60
|
|
|
61
61
|
// Control de estado de refresco (singleton a nivel de módulo)
|
|
62
62
|
let isRefreshing = false;
|
|
@@ -27786,12 +27786,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
27786
27786
|
* Intervalo por defecto de chequeo de actualizaciones: 30 minutos.
|
|
27787
27787
|
*/
|
|
27788
27788
|
const DEFAULT_CHECK_INTERVAL_MS = 30 * 60 * 1000;
|
|
27789
|
+
/**
|
|
27790
|
+
* Ventana de silencio por defecto tras aplicar una actualización: 60 segundos.
|
|
27791
|
+
*/
|
|
27792
|
+
const DEFAULT_POST_UPDATE_GRACE_MS = 60 * 1000;
|
|
27793
|
+
/**
|
|
27794
|
+
* Clave de sessionStorage para el timestamp de la última actualización aplicada.
|
|
27795
|
+
*/
|
|
27796
|
+
const POST_UPDATE_TS_KEY = 'val_update_applied_ts';
|
|
27789
27797
|
/**
|
|
27790
27798
|
* Configuración por defecto del servicio.
|
|
27791
27799
|
*/
|
|
27792
27800
|
const DEFAULT_APP_VERSION_SERVICE_CONFIG = {
|
|
27793
27801
|
currentVersion: '0.0.0',
|
|
27794
27802
|
checkIntervalMs: DEFAULT_CHECK_INTERVAL_MS,
|
|
27803
|
+
postUpdateGraceMs: DEFAULT_POST_UPDATE_GRACE_MS,
|
|
27795
27804
|
};
|
|
27796
27805
|
|
|
27797
27806
|
/**
|
|
@@ -28031,6 +28040,7 @@ class AppVersionService {
|
|
|
28031
28040
|
console.warn('[AppVersionService] activateUpdate failed:', err);
|
|
28032
28041
|
}
|
|
28033
28042
|
finally {
|
|
28043
|
+
this.markUpdateApplied();
|
|
28034
28044
|
this.document.defaultView?.location.reload();
|
|
28035
28045
|
}
|
|
28036
28046
|
}
|
|
@@ -28089,8 +28099,11 @@ class AppVersionService {
|
|
|
28089
28099
|
if (!this.swUpdate?.isEnabled)
|
|
28090
28100
|
return;
|
|
28091
28101
|
// Bundle nuevo descargado y listo.
|
|
28102
|
+
// Si la app acaba de actualizarse (dentro del grace period), ignorar la
|
|
28103
|
+
// primera detección para evitar el loop de "N banners seguidos" cuando hay
|
|
28104
|
+
// varios deploys acumulados mientras el usuario tenía la pestaña abierta.
|
|
28092
28105
|
this.swUpdate.versionUpdates
|
|
28093
|
-
.pipe(filter$1(evt => evt.type === 'VERSION_READY'), takeUntilDestroyed(this.destroyRef))
|
|
28106
|
+
.pipe(filter$1(evt => evt.type === 'VERSION_READY'), filter$1(() => !this.isInPostUpdateGrace()), takeUntilDestroyed(this.destroyRef))
|
|
28094
28107
|
.subscribe(() => this.swUpdateReady.set(true));
|
|
28095
28108
|
// SW en estado irrecuperable — la caché del service worker se corrompió o
|
|
28096
28109
|
// fue parcialmente evictada (común en PWAs standalone de iOS tras deploys
|
|
@@ -28139,6 +28152,35 @@ class AppVersionService {
|
|
|
28139
28152
|
console.warn('[AppVersionService] remote config fetch failed:', err);
|
|
28140
28153
|
}
|
|
28141
28154
|
}
|
|
28155
|
+
/** Persiste el timestamp de la última actualización aplicada en sessionStorage. */
|
|
28156
|
+
markUpdateApplied() {
|
|
28157
|
+
try {
|
|
28158
|
+
this.document.defaultView?.sessionStorage.setItem(POST_UPDATE_TS_KEY, String(Date.now()));
|
|
28159
|
+
}
|
|
28160
|
+
catch {
|
|
28161
|
+
// sessionStorage puede estar bloqueado (private mode con storage lleno).
|
|
28162
|
+
}
|
|
28163
|
+
}
|
|
28164
|
+
/**
|
|
28165
|
+
* Retorna true si el tiempo transcurrido desde la última actualización
|
|
28166
|
+
* aplicada es menor al grace period configurado. Silencia el banner durante
|
|
28167
|
+
* esa ventana para evitar el loop "actualizar N veces" cuando hay deploys
|
|
28168
|
+
* acumulados.
|
|
28169
|
+
*/
|
|
28170
|
+
isInPostUpdateGrace() {
|
|
28171
|
+
const graceMs = this.serviceConfig?.postUpdateGraceMs ?? DEFAULT_POST_UPDATE_GRACE_MS;
|
|
28172
|
+
if (!graceMs)
|
|
28173
|
+
return false;
|
|
28174
|
+
try {
|
|
28175
|
+
const raw = this.document.defaultView?.sessionStorage.getItem(POST_UPDATE_TS_KEY);
|
|
28176
|
+
if (!raw)
|
|
28177
|
+
return false;
|
|
28178
|
+
return Date.now() - Number(raw) < graceMs;
|
|
28179
|
+
}
|
|
28180
|
+
catch {
|
|
28181
|
+
return false;
|
|
28182
|
+
}
|
|
28183
|
+
}
|
|
28142
28184
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AppVersionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
28143
28185
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AppVersionService, providedIn: 'root' }); }
|
|
28144
28186
|
}
|
|
@@ -70965,5 +71007,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
70965
71007
|
* Generated bundle index. Do not edit.
|
|
70966
71008
|
*/
|
|
70967
71009
|
|
|
70968
|
-
export { ACTION_CARD_DEFAULTS, AD_SIZE_MAP, API_TABLE_COLUMN_LABELS, APP_VERSION_PLATFORM_PLUGIN, APP_VERSION_REMOTE_PLUGIN, ARTICLE_CARD_DEFAULTS, ARTICLE_SPACING, ARTICLE_STRIP_DEFAULTS, AUTH_CTA_DEFAULTS, AVATAR_UPLOAD_DEFAULTS, AboutViewComponent, AccordionComponent, AccountViewComponent, ActionCardComponent, ActionHeaderComponent, ActionType, AdSlotComponent, AdsLoaderService, AdsService, AlertBoxComponent, AnalyticsErrorHandler, AnalyticsRouterTracker, AnalyticsService, AnimatedTerminalComponent, ApiKeyCreateModalComponent, ApiKeyService, ApiKeysModalComponent, ApiKeysViewComponent, AppConfigService, AppVersionService, ArticleBuilder, ArticleCardComponent, ArticleComponent, ArticleStripComponent, AttachmentUploaderComponent, AuthBackgroundComponent, AuthCtaComponent, AuthService, AuthStateService, AuthStorageService, AuthSyncService, AvatarComponent, AvatarUploadComponent, BOTTOM_NAV_DEFAULTS, BannerComponent, BlogPostBuilder, BottomNavComponent, BoxComponent, BreadcrumbComponent, ButtonComponent, ButtonGroupComponent, CALLOUT_LABELS, CHEV_KEYS, CIRCLE_KEYS, COMMON_COUNTRY_CODES, COMMON_CURRENCIES, CORNER_KEYS, CTA_CARD_DEFAULTS, CURRENCY_INFO, CardComponent, CardSection, CardType, CardsCarouselComponent, ChangeEmailModalComponent, ChangePasswordModalComponent, CheckInputComponent, CheckboxRadioInputComponent, ChipGroupComponent, CodeDisplayComponent, CommandDisplayComponent, CommentComponent, CommentInputComponent, CommentSectionComponent, CompanyFooterComponent, ComponentStates, ConfirmationDialogService, ContainerComponent, ContentLoaderComponent, ContentReactionComponent, ContentService, ContentTransformer, CookieBannerComponent, CookieSettingsComponent, CountdownComponent, CreateOrgModalComponent, CtaCardComponent, CurrencyInputComponent, DEFAULT_ADS_CONFIG, DEFAULT_APP_CONFIG_SERVICE_CONFIG, DEFAULT_APP_VERSION_SERVICE_CONFIG, DEFAULT_AUTH_CONFIG, DEFAULT_BACK_HEADER, DEFAULT_BUTTON_PRESETS, DEFAULT_CANCEL_BUTTON, DEFAULT_CHECK_INTERVAL_MS, DEFAULT_CONFIRM_BUTTON, DEFAULT_COUNTDOWN_LABELS, DEFAULT_COUNTDOWN_LABELS_EN, DEFAULT_DEBUG_CONSOLE_CONFIG, DEFAULT_DONATION_CONFIG, DEFAULT_EMPTY_STATE, DEFAULT_EMULATOR_CONFIG, DEFAULT_FEEDBACK_CONFIG, DEFAULT_FEEDBACK_TYPE_OPTIONS, DEFAULT_HOME_HEADER, DEFAULT_INFINITE_LIST_METADATA, DEFAULT_LOGIN_LOGO, DEFAULT_MODAL_CANCEL_BUTTON, DEFAULT_MODAL_CONFIRM_BUTTON, DEFAULT_PAGE_SIZE_OPTIONS, DEFAULT_PLATFORMS, DEFAULT_PRESETS, DEFAULT_REFRESHER_METADATA, DEFAULT_SKELETON_CONFIG, DEFAULT_SPLASH_SCREEN_CONFIG, DataTableComponent, DateInputComponent, DatePickerComponent, DateRangeInputComponent, DebugConsoleComponent, DeleteAccountModalComponent, DetailSkeletonComponent, DeviceService, DisplayComponent, DividerComponent, DocsApiTableComponent, DocsBreadcrumbComponent, DocsBuilder, DocsCalloutComponent, DocsCodeExampleComponent, DocsLayoutComponent, DocsNavLinksComponent, DocsNavigationService, DocsPageComponent, DocsSearchComponent, DocsSectionComponent, DocsShellComponent, DocsSidebarComponent, DocsTocComponent, DonationService, DownloadService, EditOrgModalComponent, EmptyStateComponent, EntityCardComponent, ExpandableTextComponent, FEATURES_LIST_DEFAULTS, FUN_MODAL_DEFAULTS, FabComponent, FaqComponent, FeaturesListComponent, FeedbackFormComponent, FeedbackService, FieldListComponent, FileInputComponent, FirebaseService, FirestoreCollectionFactory, FirestoreService, FontSizeOption, FontSizeSelectorComponent, FontSizeService, FooterComponent, FooterLinksComponent, FormComponent, FormFieldComponent, FormSkeletonComponent, FunHeaderComponent, FunModalComponent, GlassComponent, GlowCardComponent, GlowComponent, GridSkeletonComponent, HANDOFF_ROUTE_PARAM, HANDOFF_TOKEN_PARAM, HandoffService, HapticsService, HasPermissionDirective, HeaderComponent, HintComponent, HorizontalScrollComponent, HrefComponent, HtmlViewerModalComponent, I18nService, IMAGE_DEFAULTS, INITIAL_AUTH_STATE, INITIAL_MFA_STATE, INVITATION_CARD_DEFAULTS, IONIC_COLORS$5 as IONIC_COLORS, Icon, IconComponent, IconService, ImageComponent, ImageCropComponent, ImageService, InAppBrowserService, InfiniteListComponent, InfoComponent, InputI18nHelper, InputType, InvitationCardComponent, InviteMemberModalComponent, ItemListComponent, LANG_STORAGE_KEY$1 as LANG_STORAGE_KEY, LEGAL_CONTENT_CONFIG, LOGGED_IN_HINT_COOKIE, LOGIN_DEFAULTS, LandingSplitComponent, LandingStepsComponent, LanguageSelectorComponent, LanguageSelectorV2Component, LayeredCardComponent, LegalContentService, LegalLinkService, LinkComponent, LinkProcessorService, LinkedProvidersComponent, LinksAccordionComponent, LinksCakeComponent, ListSkeletonComponent, LoadingDirective, LocalStorageService, LocaleService, LoginAttemptModalComponent, LoginComponent, MEDIA_OBJECT_DEFAULTS, MEMBER_CARD_DEFAULTS, METRIC_CARD_DEFAULTS, MODAL_SIZES, MOTIF_KEYS, MOTION, MaintenancePageComponent, MarkdownArticleParserService, MediaObjectComponent, MemberCardComponent, MemberDetailModalComponent, MemberImportModalComponent, MenuComponent, MessagingService, MetaService, MetricCardComponent, MfaModalComponent, ModalService, ModalShellComponent, MultiSelectSearchComponent, NUM_KEYS, NavigationService, NetworkBannerComponent, NetworkStatusService, NewsBuilder, NoContentComponent, NotesBoxComponent, NotificationActionService, NotificationPreferencesViewComponent, NotificationsService, NotificationsViewComponent, NumberFromToComponent, NumberStepperComponent, OAUTH_PROVIDERS_INFO, OAuthCallbackComponent, OAuthService, OptionCardsComponent, OrgInfoSheetComponent, OrgService, OrgSwitchService, OrganizationViewComponent, PATTERN_MOTIFS, PATTERN_PALETTES, PATTERN_STYLE_CONFIGS, PLATFORM_CONFIGS, PageContentComponent, PageLinksComponent, PageRefreshService, PageTemplateComponent, PageWavesComponent, PageWrapperComponent, PaginationComponent, PaginationService, PasswordInputComponent, PatternComponent, PermissionCatalogService, PermissionSelectorComponent, PermissionsModalComponent, PermissionsViewComponent, PhoneInputComponent, PillComponent, PinInputComponent, PlainCodeBoxComponent, PopoverSelectorComponent, PreferencesService, PreferencesViewComponent, PresetService, PriceTagComponent, ProcessLinksPipe, ProfileSkeletonComponent, ProfileViewComponent, ProgressBarComponent, ProgressRingComponent, ProgressStatusComponent, PrompterComponent, QR_PRESETS, QrCodeComponent, QrGeneratorService, QrScannerComponent, QueryBuilder, QuoteBoxComponent, REQUEST_STATUSES, RadioInputComponent, RangeInputComponent, RatingComponent, RefresherComponent, RequestFirestoreService, RequestFormBuilderService, RequestFormComponent, RequestModalComponent, RequestService, RightsFooterComponent, RotatingTextComponent, SEARCH_HEADER_DEFAULTS, SETTINGS_SECTIONS_CATALOG, SHAPE_KEYS, SHARE_PROFILE_MODAL_DEFAULTS, SKELETON_LAYOUT_DEFAULT_ROWS, SKELETON_PRESETS, SOLID_KEYS, STATS_BAR_DEFAULTS, STROKE_KEYS, SearchHeaderComponent, SearchSelectorComponent, SearchbarComponent, SectionHeaderComponent, SecurityViewComponent, SegmentControlComponent, SelectSearchComponent, SessionListModalComponent, SessionService, SettingsHubComponent, ShareButtonsComponent, ShareProfileModalComponent, SimpleComponent, SkeletonComponent, SkeletonLayoutComponent, SkeletonService, SplashComponent, SplashScreenService, StatsBarComponent, StatsCardComponent, StepperComponent, StorageService, SwipeCarouselComponent, SwitchOrgModalComponent, TRI_KEYS, TabbedContentComponent, TableSkeletonComponent, TabsComponent, Terminal404Component, TestimonialCardComponent, TestimonialCarouselComponent, TextComponent, TextInputComponent, TextareaInputComponent, ThemeOption, ThemeService, TicketCardComponent, TicketCardImageService, TimelineComponent, TitleBlockComponent, TitleComponent, ToastService, ToggleInputComponent, TokenService, ToolbarActionType, ToolbarComponent, TransferOwnershipModalComponent, TranslatePipe, TypedCollection, UPDATE_BANNER_DEFAULT_CONTENT, UPDATE_BANNER_I18N_NAMESPACE, UpdateBannerComponent, UserAvatarComponent, UsernameInputComponent, VALTECH_ADS_CONFIG, VALTECH_APP_CONFIG, VALTECH_APP_VERSION, VALTECH_AUTH_CONFIG, VALTECH_COMPANY_LINKS, VALTECH_CONTENT_CONFIG, VALTECH_DEBUG_CONSOLE, VALTECH_DEFAULT_CONTENT, VALTECH_DONATION_CONFIG, VALTECH_FEEDBACK_CONFIG, VALTECH_FIREBASE_CONFIG, VALTECH_FOOTER_I18N, VALTECH_FOOTER_LOGO, VALTECH_LANGUAGE_SELECTOR, VALTECH_LEGAL_CONFIG, VALTECH_NETWORK_ERROR_KEY, VALTECH_SETTINGS_MENU_LINKS, VALTECH_SITE_PATHS, VALTECH_SOCIAL_LINKS, VALTECH_SPLASH_SCREEN, VALTECH_WEB_BASE_URLS, VALTECH_WHATSAPP_CONFIG, VERSION, ValtechErrorService, VerifyViewComponent, WhatsappFabComponent, WhatsappService, WizardComponent, WizardFooterComponent, applyDefaultValueToControl, authGuard, authInterceptor, authPasswordValidator, beautifyLegalArticle, blogPost, buildCompanyFooterProps, buildFooterLinks, buildLegalLinkResolver, buildPath, buildSettingsCards, button, canSubmitRequestType, collections, connectPageRefresh, createErrorStateProps, createFirebaseConfig, createGlowCardProps, createInitialPaginationState, createNumberFromToField, createPageState, createPermissionLabeler, createRefreshableStream, createTitleProps, docs, errorLoggingInterceptor, extractPathParams, generatePatternTiles, generateRandomTile, getAppInfo, getAppVersion, getCollectionPath, getDocumentId, getTimeOfDayKey, goToTop, groupPermissionsByScope, guestGuard, hasEmulators, iconButton, interpretError, isAtEnd, isCollectionPath, isDocumentPath, isEmulatorMode, isIonicColor, isValidPath, joinPath, maxLength, mulberry32, news, parseMarkdownArticle, permissionGuard, permissionGuardFromRoute, provideLegalContent, provideSplashScreen, provideValtechAboutRoutes, provideValtechAccountRoutes, provideValtechAds, provideValtechApiKeysRoutes, provideValtechAppConfig, provideValtechAppVersion, provideValtechAppVersionHttp, provideValtechAuth, provideValtechAuthInterceptor, provideValtechContent, provideValtechDebugConsole, provideValtechDonations, provideValtechErrorHandling, provideValtechFeedback, provideValtechFirebase, provideValtechI18n, provideValtechLegal, provideValtechNotificationPreferencesRoutes, provideValtechNotificationsRoutes, provideValtechOrganizationRoutes, provideValtechPermissionsRoutes, provideValtechPreferencesRoutes, provideValtechPresets, provideValtechProfileRoutes, provideValtechSecurityRoutes, provideValtechSettingsRoutes, provideValtechSite, provideValtechSkeleton, provideValtechWhatsapp, query, rbacGuard, renderPatternSvgInner, replaceSpecialChars, requestSubmitMode, resolveColor, resolveInputDefaultValue, resolveIonicColor, resolveWebBaseUrl, roleGuard, selectableRequestTypes, storagePaths, superAdminGuard, toArticle };
|
|
71010
|
+
export { ACTION_CARD_DEFAULTS, AD_SIZE_MAP, API_TABLE_COLUMN_LABELS, APP_VERSION_PLATFORM_PLUGIN, APP_VERSION_REMOTE_PLUGIN, ARTICLE_CARD_DEFAULTS, ARTICLE_SPACING, ARTICLE_STRIP_DEFAULTS, AUTH_CTA_DEFAULTS, AVATAR_UPLOAD_DEFAULTS, AboutViewComponent, AccordionComponent, AccountViewComponent, ActionCardComponent, ActionHeaderComponent, ActionType, AdSlotComponent, AdsLoaderService, AdsService, AlertBoxComponent, AnalyticsErrorHandler, AnalyticsRouterTracker, AnalyticsService, AnimatedTerminalComponent, ApiKeyCreateModalComponent, ApiKeyService, ApiKeysModalComponent, ApiKeysViewComponent, AppConfigService, AppVersionService, ArticleBuilder, ArticleCardComponent, ArticleComponent, ArticleStripComponent, AttachmentUploaderComponent, AuthBackgroundComponent, AuthCtaComponent, AuthService, AuthStateService, AuthStorageService, AuthSyncService, AvatarComponent, AvatarUploadComponent, BOTTOM_NAV_DEFAULTS, BannerComponent, BlogPostBuilder, BottomNavComponent, BoxComponent, BreadcrumbComponent, ButtonComponent, ButtonGroupComponent, CALLOUT_LABELS, CHEV_KEYS, CIRCLE_KEYS, COMMON_COUNTRY_CODES, COMMON_CURRENCIES, CORNER_KEYS, CTA_CARD_DEFAULTS, CURRENCY_INFO, CardComponent, CardSection, CardType, CardsCarouselComponent, ChangeEmailModalComponent, ChangePasswordModalComponent, CheckInputComponent, CheckboxRadioInputComponent, ChipGroupComponent, CodeDisplayComponent, CommandDisplayComponent, CommentComponent, CommentInputComponent, CommentSectionComponent, CompanyFooterComponent, ComponentStates, ConfirmationDialogService, ContainerComponent, ContentLoaderComponent, ContentReactionComponent, ContentService, ContentTransformer, CookieBannerComponent, CookieSettingsComponent, CountdownComponent, CreateOrgModalComponent, CtaCardComponent, CurrencyInputComponent, DEFAULT_ADS_CONFIG, DEFAULT_APP_CONFIG_SERVICE_CONFIG, DEFAULT_APP_VERSION_SERVICE_CONFIG, DEFAULT_AUTH_CONFIG, DEFAULT_BACK_HEADER, DEFAULT_BUTTON_PRESETS, DEFAULT_CANCEL_BUTTON, DEFAULT_CHECK_INTERVAL_MS, DEFAULT_CONFIRM_BUTTON, DEFAULT_COUNTDOWN_LABELS, DEFAULT_COUNTDOWN_LABELS_EN, DEFAULT_DEBUG_CONSOLE_CONFIG, DEFAULT_DONATION_CONFIG, DEFAULT_EMPTY_STATE, DEFAULT_EMULATOR_CONFIG, DEFAULT_FEEDBACK_CONFIG, DEFAULT_FEEDBACK_TYPE_OPTIONS, DEFAULT_HOME_HEADER, DEFAULT_INFINITE_LIST_METADATA, DEFAULT_LOGIN_LOGO, DEFAULT_MODAL_CANCEL_BUTTON, DEFAULT_MODAL_CONFIRM_BUTTON, DEFAULT_PAGE_SIZE_OPTIONS, DEFAULT_PLATFORMS, DEFAULT_POST_UPDATE_GRACE_MS, DEFAULT_PRESETS, DEFAULT_REFRESHER_METADATA, DEFAULT_SKELETON_CONFIG, DEFAULT_SPLASH_SCREEN_CONFIG, DataTableComponent, DateInputComponent, DatePickerComponent, DateRangeInputComponent, DebugConsoleComponent, DeleteAccountModalComponent, DetailSkeletonComponent, DeviceService, DisplayComponent, DividerComponent, DocsApiTableComponent, DocsBreadcrumbComponent, DocsBuilder, DocsCalloutComponent, DocsCodeExampleComponent, DocsLayoutComponent, DocsNavLinksComponent, DocsNavigationService, DocsPageComponent, DocsSearchComponent, DocsSectionComponent, DocsShellComponent, DocsSidebarComponent, DocsTocComponent, DonationService, DownloadService, EditOrgModalComponent, EmptyStateComponent, EntityCardComponent, ExpandableTextComponent, FEATURES_LIST_DEFAULTS, FUN_MODAL_DEFAULTS, FabComponent, FaqComponent, FeaturesListComponent, FeedbackFormComponent, FeedbackService, FieldListComponent, FileInputComponent, FirebaseService, FirestoreCollectionFactory, FirestoreService, FontSizeOption, FontSizeSelectorComponent, FontSizeService, FooterComponent, FooterLinksComponent, FormComponent, FormFieldComponent, FormSkeletonComponent, FunHeaderComponent, FunModalComponent, GlassComponent, GlowCardComponent, GlowComponent, GridSkeletonComponent, HANDOFF_ROUTE_PARAM, HANDOFF_TOKEN_PARAM, HandoffService, HapticsService, HasPermissionDirective, HeaderComponent, HintComponent, HorizontalScrollComponent, HrefComponent, HtmlViewerModalComponent, I18nService, IMAGE_DEFAULTS, INITIAL_AUTH_STATE, INITIAL_MFA_STATE, INVITATION_CARD_DEFAULTS, IONIC_COLORS$5 as IONIC_COLORS, Icon, IconComponent, IconService, ImageComponent, ImageCropComponent, ImageService, InAppBrowserService, InfiniteListComponent, InfoComponent, InputI18nHelper, InputType, InvitationCardComponent, InviteMemberModalComponent, ItemListComponent, LANG_STORAGE_KEY$1 as LANG_STORAGE_KEY, LEGAL_CONTENT_CONFIG, LOGGED_IN_HINT_COOKIE, LOGIN_DEFAULTS, LandingSplitComponent, LandingStepsComponent, LanguageSelectorComponent, LanguageSelectorV2Component, LayeredCardComponent, LegalContentService, LegalLinkService, LinkComponent, LinkProcessorService, LinkedProvidersComponent, LinksAccordionComponent, LinksCakeComponent, ListSkeletonComponent, LoadingDirective, LocalStorageService, LocaleService, LoginAttemptModalComponent, LoginComponent, MEDIA_OBJECT_DEFAULTS, MEMBER_CARD_DEFAULTS, METRIC_CARD_DEFAULTS, MODAL_SIZES, MOTIF_KEYS, MOTION, MaintenancePageComponent, MarkdownArticleParserService, MediaObjectComponent, MemberCardComponent, MemberDetailModalComponent, MemberImportModalComponent, MenuComponent, MessagingService, MetaService, MetricCardComponent, MfaModalComponent, ModalService, ModalShellComponent, MultiSelectSearchComponent, NUM_KEYS, NavigationService, NetworkBannerComponent, NetworkStatusService, NewsBuilder, NoContentComponent, NotesBoxComponent, NotificationActionService, NotificationPreferencesViewComponent, NotificationsService, NotificationsViewComponent, NumberFromToComponent, NumberStepperComponent, OAUTH_PROVIDERS_INFO, OAuthCallbackComponent, OAuthService, OptionCardsComponent, OrgInfoSheetComponent, OrgService, OrgSwitchService, OrganizationViewComponent, PATTERN_MOTIFS, PATTERN_PALETTES, PATTERN_STYLE_CONFIGS, PLATFORM_CONFIGS, POST_UPDATE_TS_KEY, PageContentComponent, PageLinksComponent, PageRefreshService, PageTemplateComponent, PageWavesComponent, PageWrapperComponent, PaginationComponent, PaginationService, PasswordInputComponent, PatternComponent, PermissionCatalogService, PermissionSelectorComponent, PermissionsModalComponent, PermissionsViewComponent, PhoneInputComponent, PillComponent, PinInputComponent, PlainCodeBoxComponent, PopoverSelectorComponent, PreferencesService, PreferencesViewComponent, PresetService, PriceTagComponent, ProcessLinksPipe, ProfileSkeletonComponent, ProfileViewComponent, ProgressBarComponent, ProgressRingComponent, ProgressStatusComponent, PrompterComponent, QR_PRESETS, QrCodeComponent, QrGeneratorService, QrScannerComponent, QueryBuilder, QuoteBoxComponent, REQUEST_STATUSES, RadioInputComponent, RangeInputComponent, RatingComponent, RefresherComponent, RequestFirestoreService, RequestFormBuilderService, RequestFormComponent, RequestModalComponent, RequestService, RightsFooterComponent, RotatingTextComponent, SEARCH_HEADER_DEFAULTS, SETTINGS_SECTIONS_CATALOG, SHAPE_KEYS, SHARE_PROFILE_MODAL_DEFAULTS, SKELETON_LAYOUT_DEFAULT_ROWS, SKELETON_PRESETS, SOLID_KEYS, STATS_BAR_DEFAULTS, STROKE_KEYS, SearchHeaderComponent, SearchSelectorComponent, SearchbarComponent, SectionHeaderComponent, SecurityViewComponent, SegmentControlComponent, SelectSearchComponent, SessionListModalComponent, SessionService, SettingsHubComponent, ShareButtonsComponent, ShareProfileModalComponent, SimpleComponent, SkeletonComponent, SkeletonLayoutComponent, SkeletonService, SplashComponent, SplashScreenService, StatsBarComponent, StatsCardComponent, StepperComponent, StorageService, SwipeCarouselComponent, SwitchOrgModalComponent, TRI_KEYS, TabbedContentComponent, TableSkeletonComponent, TabsComponent, Terminal404Component, TestimonialCardComponent, TestimonialCarouselComponent, TextComponent, TextInputComponent, TextareaInputComponent, ThemeOption, ThemeService, TicketCardComponent, TicketCardImageService, TimelineComponent, TitleBlockComponent, TitleComponent, ToastService, ToggleInputComponent, TokenService, ToolbarActionType, ToolbarComponent, TransferOwnershipModalComponent, TranslatePipe, TypedCollection, UPDATE_BANNER_DEFAULT_CONTENT, UPDATE_BANNER_I18N_NAMESPACE, UpdateBannerComponent, UserAvatarComponent, UsernameInputComponent, VALTECH_ADS_CONFIG, VALTECH_APP_CONFIG, VALTECH_APP_VERSION, VALTECH_AUTH_CONFIG, VALTECH_COMPANY_LINKS, VALTECH_CONTENT_CONFIG, VALTECH_DEBUG_CONSOLE, VALTECH_DEFAULT_CONTENT, VALTECH_DONATION_CONFIG, VALTECH_FEEDBACK_CONFIG, VALTECH_FIREBASE_CONFIG, VALTECH_FOOTER_I18N, VALTECH_FOOTER_LOGO, VALTECH_LANGUAGE_SELECTOR, VALTECH_LEGAL_CONFIG, VALTECH_NETWORK_ERROR_KEY, VALTECH_SETTINGS_MENU_LINKS, VALTECH_SITE_PATHS, VALTECH_SOCIAL_LINKS, VALTECH_SPLASH_SCREEN, VALTECH_WEB_BASE_URLS, VALTECH_WHATSAPP_CONFIG, VERSION, ValtechErrorService, VerifyViewComponent, WhatsappFabComponent, WhatsappService, WizardComponent, WizardFooterComponent, applyDefaultValueToControl, authGuard, authInterceptor, authPasswordValidator, beautifyLegalArticle, blogPost, buildCompanyFooterProps, buildFooterLinks, buildLegalLinkResolver, buildPath, buildSettingsCards, button, canSubmitRequestType, collections, connectPageRefresh, createErrorStateProps, createFirebaseConfig, createGlowCardProps, createInitialPaginationState, createNumberFromToField, createPageState, createPermissionLabeler, createRefreshableStream, createTitleProps, docs, errorLoggingInterceptor, extractPathParams, generatePatternTiles, generateRandomTile, getAppInfo, getAppVersion, getCollectionPath, getDocumentId, getTimeOfDayKey, goToTop, groupPermissionsByScope, guestGuard, hasEmulators, iconButton, interpretError, isAtEnd, isCollectionPath, isDocumentPath, isEmulatorMode, isIonicColor, isValidPath, joinPath, maxLength, mulberry32, news, parseMarkdownArticle, permissionGuard, permissionGuardFromRoute, provideLegalContent, provideSplashScreen, provideValtechAboutRoutes, provideValtechAccountRoutes, provideValtechAds, provideValtechApiKeysRoutes, provideValtechAppConfig, provideValtechAppVersion, provideValtechAppVersionHttp, provideValtechAuth, provideValtechAuthInterceptor, provideValtechContent, provideValtechDebugConsole, provideValtechDonations, provideValtechErrorHandling, provideValtechFeedback, provideValtechFirebase, provideValtechI18n, provideValtechLegal, provideValtechNotificationPreferencesRoutes, provideValtechNotificationsRoutes, provideValtechOrganizationRoutes, provideValtechPermissionsRoutes, provideValtechPreferencesRoutes, provideValtechPresets, provideValtechProfileRoutes, provideValtechSecurityRoutes, provideValtechSettingsRoutes, provideValtechSite, provideValtechSkeleton, provideValtechWhatsapp, query, rbacGuard, renderPatternSvgInner, replaceSpecialChars, requestSubmitMode, resolveColor, resolveInputDefaultValue, resolveIonicColor, resolveWebBaseUrl, roleGuard, selectableRequestTypes, storagePaths, superAdminGuard, toArticle };
|
|
70969
71011
|
//# sourceMappingURL=valtech-components.mjs.map
|