valtech-components 2.0.805 → 2.0.806

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.
@@ -20,8 +20,8 @@
20
20
  import { inject, Injector } from '@angular/core';
21
21
  import { toObservable, toSignal } from '@angular/core/rxjs-interop';
22
22
  import { signal } from '@angular/core';
23
- import { of, timer } from 'rxjs';
24
- import { catchError, retry, switchMap, tap } from 'rxjs/operators';
23
+ import { of, race, timer } from 'rxjs';
24
+ import { catchError, retry, switchMap, take, tap } from 'rxjs/operators';
25
25
  import { FirebaseService } from '../firebase/firebase.service';
26
26
  /**
27
27
  * Crea un stream refrescable a partir de una factory de Observable.
@@ -60,14 +60,20 @@ export function createRefreshableStream(factory, options) {
60
60
  const retryCount = options?.retryCount ?? 4;
61
61
  const retryBaseDelayMs = options?.retryBaseDelayMs ?? 500;
62
62
  const gateOnFirebaseAuth = options?.gateOnFirebaseAuth ?? true;
63
+ const authGateTimeoutMs = options?.authGateTimeoutMs ?? 20000;
63
64
  // FirebaseService es opcional — sin él (apps sin Firebase) no se gatea.
64
65
  const firebase = gateOnFirebaseAuth ? injector.get(FirebaseService, null) : null;
65
66
  const _reload = signal(0);
66
67
  const _loading = signal(true);
67
68
  const _error = signal(false);
68
- // Gate compartido de Firebase Auth: el stream no abre la primera
69
- // suscripción hasta que la sesión de Firebase Auth esté confirmada.
70
- const authGate$ = firebase ? firebase.firebaseAuthReady$ : of(true);
69
+ // Gate de Firebase Auth: el stream no abre la primera suscripción hasta que
70
+ // la sesión esté confirmada. `race` con un `timer` de seguridad si la
71
+ // sesión NUNCA se establece (token inválido, signInWithFirebase falló), el
72
+ // gate igual se libera tras `authGateTimeoutMs` y la factory procede: si no
73
+ // hay permiso terminará en estado `error`, jamás en skeleton infinito.
74
+ const authGate$ = firebase
75
+ ? race(firebase.firebaseAuthReady$, timer(authGateTimeoutMs)).pipe(take(1))
76
+ : of(true);
71
77
  const data = toSignal(toObservable(_reload, { injector }).pipe(tap(() => {
72
78
  _loading.set(true);
73
79
  _error.set(false);
@@ -96,4 +102,4 @@ export function createRefreshableStream(factory, options) {
96
102
  reload: () => _reload.update(n => n + 1),
97
103
  };
98
104
  }
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmcmVzaGFibGUtc3RyZWFtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9yZWZyZXNoYWJsZS1zdHJlYW0vcmVmcmVzaGFibGUtc3RyZWFtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQkc7QUFFSCxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFjLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRW5FLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQWtEL0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThCRztBQUNILE1BQU0sVUFBVSx1QkFBdUIsQ0FDckMsT0FBNEIsRUFDNUIsT0FBcUM7SUFFckMsTUFBTSxRQUFRLEdBQUcsT0FBTyxFQUFFLFFBQVEsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdkQsTUFBTSxRQUFRLEdBQUcsQ0FBQyxPQUFPLEVBQUUsUUFBUSxJQUFJLElBQUksQ0FBYSxDQUFDO0lBQ3pELE1BQU0sVUFBVSxHQUFHLE9BQU8sRUFBRSxVQUFVLElBQUksQ0FBQyxDQUFDO0lBQzVDLE1BQU0sZ0JBQWdCLEdBQUcsT0FBTyxFQUFFLGdCQUFnQixJQUFJLEdBQUcsQ0FBQztJQUMxRCxNQUFNLGtCQUFrQixHQUFHLE9BQU8sRUFBRSxrQkFBa0IsSUFBSSxJQUFJLENBQUM7SUFFL0Qsd0VBQXdFO0lBQ3hFLE1BQU0sUUFBUSxHQUFHLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBRWpGLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxQixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUIsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRTdCLGlFQUFpRTtJQUNqRSxvRUFBb0U7SUFDcEUsTUFBTSxTQUFTLEdBQXdCLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFekYsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUNuQixZQUFZLENBQUMsT0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQ3RDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7UUFDUCxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25CLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEIsQ0FBQyxDQUFDO0lBQ0Ysb0VBQW9FO0lBQ3BFLHFFQUFxRTtJQUNyRSxtRUFBbUU7SUFDbkUsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUNiLFNBQVMsQ0FBQyxJQUFJLENBQ1osU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUNiLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FDWixHQUFHLENBQUMsR0FBRyxFQUFFO1FBQ1AsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQixNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BCLENBQUMsQ0FBQztJQUNGLGlFQUFpRTtJQUNqRSx3REFBd0Q7SUFDeEQsS0FBSyxDQUFDO1FBQ0osS0FBSyxFQUFFLFVBQVU7UUFDakIsS0FBSyxFQUFFLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQ3ZCLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGdCQUFnQixHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztLQUMvRCxDQUFDLEVBQ0YsVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUNkLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQixPQUFPLEVBQUUsQ0FBQyxRQUFhLENBQUMsQ0FBQztJQUMzQixDQUFDLENBQUMsQ0FDSCxDQUNGLENBQ0YsQ0FDRixDQUNGLEVBQ0QsRUFBRSxZQUFZLEVBQUUsSUFBZ0IsRUFBRSxRQUFRLEVBQUUsQ0FDN0MsQ0FBQztJQUVGLE9BQU87UUFDTCxJQUFJO1FBQ0osT0FBTyxFQUFFLFFBQVEsQ0FBQyxVQUFVLEVBQUU7UUFDOUIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxVQUFVLEVBQUU7UUFDMUIsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQ3pDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBSZWZyZXNoYWJsZSBTdHJlYW1cbiAqXG4gKiBIZWxwZXIgZXN0w6FuZGFyIHBhcmEgdmlzdGFzIHF1ZSBjb25zdW1lbiBkYXRvcyBkZSBGaXJlc3RvcmUuIFNvcG9ydGEgRE9TXG4gKiBtb2RvcyDigJQgZWwgY2FsbGVyIGRlY2lkZSBjdcOhbCB2w61hIGxhIGBmYWN0b3J5YDpcbiAqXG4gKiAgLSAqKm9uZS1zaG90KiogKHJlY29tZW5kYWRvIHBvciBkZWZlY3RvKTogYCgpID0+IGZyb20oc3ZjLmdldEFsbE9uY2UoKSlgLlxuICogICAgQ2FyZ2EgdW5hIHZleiB5IGNvbXBsZXRhLiBNw6FzIGJhcmF0byDigJQgc2luIGxpc3RlbmVyIHZpdm8uXG4gKiAgLSAqKnJlYWwtdGltZSoqOiBgKCkgPT4gc3ZjLmdldEFsbCgpYC4gTGlzdGVuZXIgRmlyZXN0b3JlIHF1ZSBhdXRvLWFjdHVhbGl6YS5cbiAqICAgIFNvbG8gZG9uZGUgaW1wb3J0YSAoaW5ib3ggZGUgbm90aWZpY2FjaW9uZXMsIGJhZGdlcykuXG4gKlxuICogRW4gYW1ib3MgbW9kb3MgbGEgcHJpbWVyYSBzdXNjcmlwY2nDs24gc2UgZ2F0ZWEgcG9yIGBmaXJlYmFzZUF1dGhSZWFkeWBcbiAqIChzZXNpw7NuIGRlIEZpcmViYXNlIEF1dGggbGlzdGEpIOKAlCBhc8OtIGVsIGxpc3RlbmVyL2xlY3R1cmEgbnVuY2Egc2UgYWRqdW50YVxuICogYW50ZXMgZGUgcXVlIGByZXF1ZXN0LmF1dGhgIGVzdMOpIGRpc3BvbmlibGUgZW4gbGFzIHJlZ2xhcyBkZSBGaXJlc3RvcmUsIGxvXG4gKiBxdWUgY2llcnJhIGxhIHZlbnRhbmEgZGUgYHBlcm1pc3Npb24tZGVuaWVkYCBlbiBjb2xkIHN0YXJ0IGRlIFBXQS5cbiAqXG4gKiBFbCBgcmV0cnlgIGNvbiBiYWNrb2ZmIGNvcnRvIGVzIHNvbG8gcmVkIGRlIHNlZ3VyaWRhZCBwYXJhIHJlY29uZXhpb25lc1xuICogdHJhbnNpdG9yaWFzIChubyBwYXJhIGN1YnJpciBjb2xkIHN0YXJ0IOKAlCBlc28gbG8gY3VicmUgZWwgZ2F0ZSBkZSBhdXRoKS5cbiAqL1xuXG5pbXBvcnQgeyBpbmplY3QsIEluamVjdG9yLCBTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRvT2JzZXJ2YWJsZSwgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCB0aW1lciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgcmV0cnksIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBGaXJlYmFzZVNlcnZpY2UgfSBmcm9tICcuLi9maXJlYmFzZS9maXJlYmFzZS5zZXJ2aWNlJztcblxuLyoqIE9wY2lvbmVzIGRlIGNvbmZpZ3VyYWNpw7NuIHBhcmEgYGNyZWF0ZVJlZnJlc2hhYmxlU3RyZWFtYC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVmcmVzaGFibGVTdHJlYW1PcHRpb25zPFQ+IHtcbiAgLyoqXG4gICAqIFZhbG9yIGVtaXRpZG8gY3VhbmRvIGxhIGZhY3RvcnkgZmFsbGEgdHJhcyBhZ290YXIgbG9zIHJlaW50ZW50b3MuXG4gICAqIERlZmF1bHQ6IGBudWxsYC5cbiAgICovXG4gIGZhbGxiYWNrPzogVDtcbiAgLyoqXG4gICAqIE7Dum1lcm8gbcOheGltbyBkZSByZWludGVudG9zIGFudGUgdW4gZXJyb3IgZGUgbGEgZmFjdG9yeS5cbiAgICogQmFja29mZiBjb3J0byDigJQgTk8gY3VicmUgY29sZCBzdGFydCAoZXNvIGxvIGhhY2UgZWwgZ2F0ZSBkZSBhdXRoKSwgc29sb1xuICAgKiByZWNvbmV4aW9uZXMgdHJhbnNpdG9yaWFzLiBEZWZhdWx0OiA0LlxuICAgKi9cbiAgcmV0cnlDb3VudD86IG51bWJlcjtcbiAgLyoqXG4gICAqIERlbGF5IGJhc2UgZGVsIGJhY2tvZmYgKG1zKS4gRWwgZGVsYXkgZWZlY3Rpdm8gY3JlY2UgZXhwb25lbmNpYWxtZW50ZVxuICAgKiBhY290YWRvOiA1MDBtcyDihpIgMXMg4oaSIDJzIC4uLiBEZWZhdWx0OiA1MDAuXG4gICAqL1xuICByZXRyeUJhc2VEZWxheU1zPzogbnVtYmVyO1xuICAvKipcbiAgICogU2kgYGZhbHNlYCwgTk8gZXNwZXJhIGEgYGZpcmViYXNlQXV0aFJlYWR5YCBhbnRlcyBkZSBsYSBwcmltZXJhXG4gICAqIHN1c2NyaXBjacOzbi4gw5p0aWwgcGFyYSBzdHJlYW1zIHF1ZSBubyBsZWVuIEZpcmVzdG9yZS4gRGVmYXVsdDogYHRydWVgLlxuICAgKi9cbiAgZ2F0ZU9uRmlyZWJhc2VBdXRoPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEluamVjdG9yIGV4cGzDrWNpdG8uIFNvbG8gbmVjZXNhcmlvIHNpIGBjcmVhdGVSZWZyZXNoYWJsZVN0cmVhbWAgc2UgbGxhbWFcbiAgICogZnVlcmEgZGUgdW4gaW5qZWN0aW9uIGNvbnRleHQgKHJhcm8pLiBQb3IgZGVmZWN0byB1c2EgYGluamVjdChJbmplY3RvcilgLlxuICAgKi9cbiAgaW5qZWN0b3I/OiBJbmplY3Rvcjtcbn1cblxuLyoqXG4gKiBSZXN1bHRhZG8gZGUgYGNyZWF0ZVJlZnJlc2hhYmxlU3RyZWFtYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWZyZXNoYWJsZVN0cmVhbTxUPiB7XG4gIC8qKiBEYXRvcyBhY3R1YWxlcy4gYG51bGxgIG1pZW50cmFzIGxhIHByaW1lcmEgZW1pc2nDs24gbm8gaGEgbGxlZ2Fkby4gKi9cbiAgcmVhZG9ubHkgZGF0YTogU2lnbmFsPFQgfCBudWxsPjtcbiAgLyoqIGB0cnVlYCBtaWVudHJhcyBzZSBlc3BlcmEgbGEgcHJpbWVyYSBlbWlzacOzbiBkZSBsYSBzdXNjcmlwY2nDs24gYWN0dWFsLiAqL1xuICByZWFkb25seSBsb2FkaW5nOiBTaWduYWw8Ym9vbGVhbj47XG4gIC8qKiBgdHJ1ZWAgc2kgbGEgZmFjdG9yeSBmYWxsw7MgdHJhcyBhZ290YXIgbG9zIHJlaW50ZW50b3MuICovXG4gIHJlYWRvbmx5IGVycm9yOiBTaWduYWw8Ym9vbGVhbj47XG4gIC8qKlxuICAgKiBSZS1zdXNjcmliZSBsYSBmYWN0b3J5IGRlc2RlIGNlcm8gKG51ZXZvIGxpc3RlbmVyIC8gbnVldmEgbGVjdHVyYSkuXG4gICAqIEVzIGxvIHF1ZSByZWdpc3RyYSBlbCBgUGFnZVJlZnJlc2hTZXJ2aWNlYCBjb21vIGhhbmRsZXIgZGUgcHVsbC10by1yZWZyZXNoLFxuICAgKiB5IHRhbWJpw6luIGVsIFwicmVjb25lY3RhciBtYW51YWxcIiBzaSB1biBsaXN0ZW5lciBtdXJpw7MuXG4gICAqL1xuICByZWxvYWQ6ICgpID0+IHZvaWQ7XG59XG5cbi8qKlxuICogQ3JlYSB1biBzdHJlYW0gcmVmcmVzY2FibGUgYSBwYXJ0aXIgZGUgdW5hIGZhY3RvcnkgZGUgT2JzZXJ2YWJsZS5cbiAqXG4gKiBERUJFIGxsYW1hcnNlIGVuIHVuIGluamVjdGlvbiBjb250ZXh0IChmaWVsZCBpbml0aWFsaXplciBvIGNvbnN0cnVjdG9yKSDigJRcbiAqIHVzYSBgdG9TaWduYWxgL2B0b09ic2VydmFibGVgL2BpbmplY3RgIGludGVybmFtZW50ZS5cbiAqXG4gKiBAcGFyYW0gZmFjdG9yeSAtIEZ1bmNpw7NuIHF1ZSBwcm9kdWNlIGVsIE9ic2VydmFibGUgYSBjb25zdW1pci4gRWwgY2FsbGVyXG4gKiAgIGRlY2lkZSBlbCBtb2RvOiBgKCkgPT4gZnJvbShzdmMuZ2V0QWxsT25jZSgpKWAgKG9uZS1zaG90KSBvXG4gKiAgIGAoKSA9PiBzdmMuZ2V0QWxsKClgIChyZWFsLXRpbWUpLlxuICogQHBhcmFtIG9wdGlvbnMgLSBDb25maWd1cmFjacOzbiBvcGNpb25hbCAoZmFsbGJhY2ssIHJldHJ5LCBnYXRlKS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gb25lLXNob3QgKHJlY29tZW5kYWRvIHBvciBkZWZlY3RvKVxuICogcHJpdmF0ZSByZWFkb25seSBzdHJlYW0gPSBjcmVhdGVSZWZyZXNoYWJsZVN0cmVhbShcbiAqICAgKCkgPT4gZnJvbSh0aGlzLnN2Yy5nZXRBbGxPbmNlKCkpLFxuICogKTtcbiAqXG4gKiAvLyByZWFsLXRpbWUgKGluYm94KVxuICogcHJpdmF0ZSByZWFkb25seSBzdHJlYW0gPSBjcmVhdGVSZWZyZXNoYWJsZVN0cmVhbShcbiAqICAgKCkgPT4gdGhpcy5ub3RpZnMuZ2V0QWxsKDUwKSxcbiAqICk7XG4gKlxuICogcmVhZG9ubHkgaXRlbXMgPSB0aGlzLnN0cmVhbS5kYXRhO1xuICogcmVhZG9ubHkgbG9hZGluZyA9IHRoaXMuc3RyZWFtLmxvYWRpbmc7XG4gKlxuICogaW9uVmlld1dpbGxFbnRlcigpIHtcbiAqICAgdGhpcy5wYWdlUmVmcmVzaC5yZWdpc3RlcigoKSA9PiB0aGlzLnN0cmVhbS5yZWxvYWQoKSk7XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVJlZnJlc2hhYmxlU3RyZWFtPFQ+KFxuICBmYWN0b3J5OiAoKSA9PiBPYnNlcnZhYmxlPFQ+LFxuICBvcHRpb25zPzogUmVmcmVzaGFibGVTdHJlYW1PcHRpb25zPFQ+XG4pOiBSZWZyZXNoYWJsZVN0cmVhbTxUPiB7XG4gIGNvbnN0IGluamVjdG9yID0gb3B0aW9ucz8uaW5qZWN0b3IgPz8gaW5qZWN0KEluamVjdG9yKTtcbiAgY29uc3QgZmFsbGJhY2sgPSAob3B0aW9ucz8uZmFsbGJhY2sgPz8gbnVsbCkgYXMgVCB8IG51bGw7XG4gIGNvbnN0IHJldHJ5Q291bnQgPSBvcHRpb25zPy5yZXRyeUNvdW50ID8/IDQ7XG4gIGNvbnN0IHJldHJ5QmFzZURlbGF5TXMgPSBvcHRpb25zPy5yZXRyeUJhc2VEZWxheU1zID8/IDUwMDtcbiAgY29uc3QgZ2F0ZU9uRmlyZWJhc2VBdXRoID0gb3B0aW9ucz8uZ2F0ZU9uRmlyZWJhc2VBdXRoID8/IHRydWU7XG5cbiAgLy8gRmlyZWJhc2VTZXJ2aWNlIGVzIG9wY2lvbmFsIOKAlCBzaW4gw6lsIChhcHBzIHNpbiBGaXJlYmFzZSkgbm8gc2UgZ2F0ZWEuXG4gIGNvbnN0IGZpcmViYXNlID0gZ2F0ZU9uRmlyZWJhc2VBdXRoID8gaW5qZWN0b3IuZ2V0KEZpcmViYXNlU2VydmljZSwgbnVsbCkgOiBudWxsO1xuXG4gIGNvbnN0IF9yZWxvYWQgPSBzaWduYWwoMCk7XG4gIGNvbnN0IF9sb2FkaW5nID0gc2lnbmFsKHRydWUpO1xuICBjb25zdCBfZXJyb3IgPSBzaWduYWwoZmFsc2UpO1xuXG4gIC8vIEdhdGUgY29tcGFydGlkbyBkZSBGaXJlYmFzZSBBdXRoOiBlbCBzdHJlYW0gbm8gYWJyZSBsYSBwcmltZXJhXG4gIC8vIHN1c2NyaXBjacOzbiBoYXN0YSBxdWUgbGEgc2VzacOzbiBkZSBGaXJlYmFzZSBBdXRoIGVzdMOpIGNvbmZpcm1hZGEuXG4gIGNvbnN0IGF1dGhHYXRlJDogT2JzZXJ2YWJsZTx1bmtub3duPiA9IGZpcmViYXNlID8gZmlyZWJhc2UuZmlyZWJhc2VBdXRoUmVhZHkkIDogb2YodHJ1ZSk7XG5cbiAgY29uc3QgZGF0YSA9IHRvU2lnbmFsKFxuICAgIHRvT2JzZXJ2YWJsZShfcmVsb2FkLCB7IGluamVjdG9yIH0pLnBpcGUoXG4gICAgICB0YXAoKCkgPT4ge1xuICAgICAgICBfbG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgICAgIF9lcnJvci5zZXQoZmFsc2UpO1xuICAgICAgfSksXG4gICAgICAvLyBFc3BlcmFyIGEgRmlyZWJhc2UgQXV0aCBsaXN0byBhbnRlcyBkZSBjYWRhIChyZSlzdXNjcmlwY2nDs24uIENvbW9cbiAgICAgIC8vIGBmaXJlYmFzZUF1dGhSZWFkeSRgIGNvbXBsZXRhIHRyYXMgbGEgcHJpbWVyYSBlbWlzacOzbiwgbGFzIHJlbG9hZHNcbiAgICAgIC8vIHBvc3RlcmlvcmVzIHJlc3VlbHZlbiBlbCBnYXRlIGRlIGlubWVkaWF0byAoYXV0aCB5YSBlc3TDoSBsaXN0bykuXG4gICAgICBzd2l0Y2hNYXAoKCkgPT5cbiAgICAgICAgYXV0aEdhdGUkLnBpcGUoXG4gICAgICAgICAgc3dpdGNoTWFwKCgpID0+XG4gICAgICAgICAgICBmYWN0b3J5KCkucGlwZShcbiAgICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICBfbG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgICAgIF9lcnJvci5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgLy8gQmFja29mZiBjb3J0byBleHBvbmVuY2lhbCBhY290YWRvIOKAlCBzb2xvIHJlZCBkZSBzZWd1cmlkYWQgcGFyYVxuICAgICAgICAgICAgICAvLyByZWNvbmV4aW9uZXMgdHJhbnNpdG9yaWFzLCBOTyBwYXJhIGN1YnJpciBjb2xkIHN0YXJ0LlxuICAgICAgICAgICAgICByZXRyeSh7XG4gICAgICAgICAgICAgICAgY291bnQ6IHJldHJ5Q291bnQsXG4gICAgICAgICAgICAgICAgZGVsYXk6IChfZXJyLCBhdHRlbXB0KSA9PlxuICAgICAgICAgICAgICAgICAgdGltZXIoTWF0aC5taW4ocmV0cnlCYXNlRGVsYXlNcyAqIDIgKiogKGF0dGVtcHQgLSAxKSwgNDAwMCkpLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiB7XG4gICAgICAgICAgICAgICAgX2xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgICAgICAgICBfZXJyb3Iuc2V0KHRydWUpO1xuICAgICAgICAgICAgICAgIHJldHVybiBvZihmYWxsYmFjayBhcyBUKTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIClcbiAgICApLFxuICAgIHsgaW5pdGlhbFZhbHVlOiBudWxsIGFzIFQgfCBudWxsLCBpbmplY3RvciB9XG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICBkYXRhLFxuICAgIGxvYWRpbmc6IF9sb2FkaW5nLmFzUmVhZG9ubHkoKSxcbiAgICBlcnJvcjogX2Vycm9yLmFzUmVhZG9ubHkoKSxcbiAgICByZWxvYWQ6ICgpID0+IF9yZWxvYWQudXBkYXRlKG4gPT4gbiArIDEpLFxuICB9O1xufVxuIl19
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmcmVzaGFibGUtc3RyZWFtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9yZWZyZXNoYWJsZS1zdHJlYW0vcmVmcmVzaGFibGUtc3RyZWFtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQkc7QUFFSCxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFjLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBeUQvRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBOEJHO0FBQ0gsTUFBTSxVQUFVLHVCQUF1QixDQUNyQyxPQUE0QixFQUM1QixPQUFxQztJQUVyQyxNQUFNLFFBQVEsR0FBRyxPQUFPLEVBQUUsUUFBUSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN2RCxNQUFNLFFBQVEsR0FBRyxDQUFDLE9BQU8sRUFBRSxRQUFRLElBQUksSUFBSSxDQUFhLENBQUM7SUFDekQsTUFBTSxVQUFVLEdBQUcsT0FBTyxFQUFFLFVBQVUsSUFBSSxDQUFDLENBQUM7SUFDNUMsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLEVBQUUsZ0JBQWdCLElBQUksR0FBRyxDQUFDO0lBQzFELE1BQU0sa0JBQWtCLEdBQUcsT0FBTyxFQUFFLGtCQUFrQixJQUFJLElBQUksQ0FBQztJQUMvRCxNQUFNLGlCQUFpQixHQUFHLE9BQU8sRUFBRSxpQkFBaUIsSUFBSSxLQUFLLENBQUM7SUFFOUQsd0VBQXdFO0lBQ3hFLE1BQU0sUUFBUSxHQUFHLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBRWpGLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxQixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUIsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRTdCLDRFQUE0RTtJQUM1RSx3RUFBd0U7SUFDeEUsMkVBQTJFO0lBQzNFLDRFQUE0RTtJQUM1RSx1RUFBdUU7SUFDdkUsTUFBTSxTQUFTLEdBQXdCLFFBQVE7UUFDN0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNFLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFYixNQUFNLElBQUksR0FBRyxRQUFRLENBQ25CLFlBQVksQ0FBQyxPQUFPLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDdEMsR0FBRyxDQUFDLEdBQUcsRUFBRTtRQUNQLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQixDQUFDLENBQUM7SUFDRixvRUFBb0U7SUFDcEUscUVBQXFFO0lBQ3JFLG1FQUFtRTtJQUNuRSxTQUFTLENBQUMsR0FBRyxFQUFFLENBQ2IsU0FBUyxDQUFDLElBQUksQ0FDWixTQUFTLENBQUMsR0FBRyxFQUFFLENBQ2IsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUNaLEdBQUcsQ0FBQyxHQUFHLEVBQUU7UUFDUCxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BCLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEIsQ0FBQyxDQUFDO0lBQ0YsaUVBQWlFO0lBQ2pFLHdEQUF3RDtJQUN4RCxLQUFLLENBQUM7UUFDSixLQUFLLEVBQUUsVUFBVTtRQUNqQixLQUFLLEVBQUUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FDdkIsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQy9ELENBQUMsRUFDRixVQUFVLENBQUMsR0FBRyxFQUFFO1FBQ2QsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQixNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pCLE9BQU8sRUFBRSxDQUFDLFFBQWEsQ0FBQyxDQUFDO0lBQzNCLENBQUMsQ0FBQyxDQUNILENBQ0YsQ0FDRixDQUNGLENBQ0YsRUFDRCxFQUFFLFlBQVksRUFBRSxJQUFnQixFQUFFLFFBQVEsRUFBRSxDQUM3QyxDQUFDO0lBRUYsT0FBTztRQUNMLElBQUk7UUFDSixPQUFPLEVBQUUsUUFBUSxDQUFDLFVBQVUsRUFBRTtRQUM5QixLQUFLLEVBQUUsTUFBTSxDQUFDLFVBQVUsRUFBRTtRQUMxQixNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7S0FDekMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFJlZnJlc2hhYmxlIFN0cmVhbVxuICpcbiAqIEhlbHBlciBlc3TDoW5kYXIgcGFyYSB2aXN0YXMgcXVlIGNvbnN1bWVuIGRhdG9zIGRlIEZpcmVzdG9yZS4gU29wb3J0YSBET1NcbiAqIG1vZG9zIOKAlCBlbCBjYWxsZXIgZGVjaWRlIGN1w6FsIHbDrWEgbGEgYGZhY3RvcnlgOlxuICpcbiAqICAtICoqb25lLXNob3QqKiAocmVjb21lbmRhZG8gcG9yIGRlZmVjdG8pOiBgKCkgPT4gZnJvbShzdmMuZ2V0QWxsT25jZSgpKWAuXG4gKiAgICBDYXJnYSB1bmEgdmV6IHkgY29tcGxldGEuIE3DoXMgYmFyYXRvIOKAlCBzaW4gbGlzdGVuZXIgdml2by5cbiAqICAtICoqcmVhbC10aW1lKio6IGAoKSA9PiBzdmMuZ2V0QWxsKClgLiBMaXN0ZW5lciBGaXJlc3RvcmUgcXVlIGF1dG8tYWN0dWFsaXphLlxuICogICAgU29sbyBkb25kZSBpbXBvcnRhIChpbmJveCBkZSBub3RpZmljYWNpb25lcywgYmFkZ2VzKS5cbiAqXG4gKiBFbiBhbWJvcyBtb2RvcyBsYSBwcmltZXJhIHN1c2NyaXBjacOzbiBzZSBnYXRlYSBwb3IgYGZpcmViYXNlQXV0aFJlYWR5YFxuICogKHNlc2nDs24gZGUgRmlyZWJhc2UgQXV0aCBsaXN0YSkg4oCUIGFzw60gZWwgbGlzdGVuZXIvbGVjdHVyYSBudW5jYSBzZSBhZGp1bnRhXG4gKiBhbnRlcyBkZSBxdWUgYHJlcXVlc3QuYXV0aGAgZXN0w6kgZGlzcG9uaWJsZSBlbiBsYXMgcmVnbGFzIGRlIEZpcmVzdG9yZSwgbG9cbiAqIHF1ZSBjaWVycmEgbGEgdmVudGFuYSBkZSBgcGVybWlzc2lvbi1kZW5pZWRgIGVuIGNvbGQgc3RhcnQgZGUgUFdBLlxuICpcbiAqIEVsIGByZXRyeWAgY29uIGJhY2tvZmYgY29ydG8gZXMgc29sbyByZWQgZGUgc2VndXJpZGFkIHBhcmEgcmVjb25leGlvbmVzXG4gKiB0cmFuc2l0b3JpYXMgKG5vIHBhcmEgY3VicmlyIGNvbGQgc3RhcnQg4oCUIGVzbyBsbyBjdWJyZSBlbCBnYXRlIGRlIGF1dGgpLlxuICovXG5cbmltcG9ydCB7IGluamVjdCwgSW5qZWN0b3IsIFNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdG9PYnNlcnZhYmxlLCB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIHJhY2UsIHRpbWVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCByZXRyeSwgc3dpdGNoTWFwLCB0YWtlLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEZpcmViYXNlU2VydmljZSB9IGZyb20gJy4uL2ZpcmViYXNlL2ZpcmViYXNlLnNlcnZpY2UnO1xuXG4vKiogT3BjaW9uZXMgZGUgY29uZmlndXJhY2nDs24gcGFyYSBgY3JlYXRlUmVmcmVzaGFibGVTdHJlYW1gLiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWZyZXNoYWJsZVN0cmVhbU9wdGlvbnM8VD4ge1xuICAvKipcbiAgICogVmFsb3IgZW1pdGlkbyBjdWFuZG8gbGEgZmFjdG9yeSBmYWxsYSB0cmFzIGFnb3RhciBsb3MgcmVpbnRlbnRvcy5cbiAgICogRGVmYXVsdDogYG51bGxgLlxuICAgKi9cbiAgZmFsbGJhY2s/OiBUO1xuICAvKipcbiAgICogTsO6bWVybyBtw6F4aW1vIGRlIHJlaW50ZW50b3MgYW50ZSB1biBlcnJvciBkZSBsYSBmYWN0b3J5LlxuICAgKiBCYWNrb2ZmIGNvcnRvIOKAlCBOTyBjdWJyZSBjb2xkIHN0YXJ0IChlc28gbG8gaGFjZSBlbCBnYXRlIGRlIGF1dGgpLCBzb2xvXG4gICAqIHJlY29uZXhpb25lcyB0cmFuc2l0b3JpYXMuIERlZmF1bHQ6IDQuXG4gICAqL1xuICByZXRyeUNvdW50PzogbnVtYmVyO1xuICAvKipcbiAgICogRGVsYXkgYmFzZSBkZWwgYmFja29mZiAobXMpLiBFbCBkZWxheSBlZmVjdGl2byBjcmVjZSBleHBvbmVuY2lhbG1lbnRlXG4gICAqIGFjb3RhZG86IDUwMG1zIOKGkiAxcyDihpIgMnMgLi4uIERlZmF1bHQ6IDUwMC5cbiAgICovXG4gIHJldHJ5QmFzZURlbGF5TXM/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBTaSBgZmFsc2VgLCBOTyBlc3BlcmEgYSBgZmlyZWJhc2VBdXRoUmVhZHlgIGFudGVzIGRlIGxhIHByaW1lcmFcbiAgICogc3VzY3JpcGNpw7NuLiDDmnRpbCBwYXJhIHN0cmVhbXMgcXVlIG5vIGxlZW4gRmlyZXN0b3JlLiBEZWZhdWx0OiBgdHJ1ZWAuXG4gICAqL1xuICBnYXRlT25GaXJlYmFzZUF1dGg/OiBib29sZWFuO1xuICAvKipcbiAgICogVGltZW91dCAobXMpIGRlbCBnYXRlIGRlIEZpcmViYXNlIEF1dGguIFNpIGxhIHNlc2nDs24gZGUgRmlyZWJhc2UgQXV0aCBub1xuICAgKiBzZSBlc3RhYmxlY2UgZW4gZXN0ZSB0aWVtcG8sIGVsIHN0cmVhbSBwcm9jZWRlIGlndWFsIChsYSBmYWN0b3J5IGNvcnJlcsOhXG4gICAqIHksIHNpIG5vIGhheSBwZXJtaXNvLCB0ZXJtaW5hcsOhIGVuIGVzdGFkbyBgZXJyb3JgIOKAlCBOVU5DQSBlbiBza2VsZXRvblxuICAgKiBpbmZpbml0bykuIE11eSBwb3IgZW5jaW1hIGRlIGN1YWxxdWllciBoYW5kc2hha2UgcmVhbC4gRGVmYXVsdDogMjAwMDAuXG4gICAqL1xuICBhdXRoR2F0ZVRpbWVvdXRNcz86IG51bWJlcjtcbiAgLyoqXG4gICAqIEluamVjdG9yIGV4cGzDrWNpdG8uIFNvbG8gbmVjZXNhcmlvIHNpIGBjcmVhdGVSZWZyZXNoYWJsZVN0cmVhbWAgc2UgbGxhbWFcbiAgICogZnVlcmEgZGUgdW4gaW5qZWN0aW9uIGNvbnRleHQgKHJhcm8pLiBQb3IgZGVmZWN0byB1c2EgYGluamVjdChJbmplY3RvcilgLlxuICAgKi9cbiAgaW5qZWN0b3I/OiBJbmplY3Rvcjtcbn1cblxuLyoqXG4gKiBSZXN1bHRhZG8gZGUgYGNyZWF0ZVJlZnJlc2hhYmxlU3RyZWFtYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWZyZXNoYWJsZVN0cmVhbTxUPiB7XG4gIC8qKiBEYXRvcyBhY3R1YWxlcy4gYG51bGxgIG1pZW50cmFzIGxhIHByaW1lcmEgZW1pc2nDs24gbm8gaGEgbGxlZ2Fkby4gKi9cbiAgcmVhZG9ubHkgZGF0YTogU2lnbmFsPFQgfCBudWxsPjtcbiAgLyoqIGB0cnVlYCBtaWVudHJhcyBzZSBlc3BlcmEgbGEgcHJpbWVyYSBlbWlzacOzbiBkZSBsYSBzdXNjcmlwY2nDs24gYWN0dWFsLiAqL1xuICByZWFkb25seSBsb2FkaW5nOiBTaWduYWw8Ym9vbGVhbj47XG4gIC8qKiBgdHJ1ZWAgc2kgbGEgZmFjdG9yeSBmYWxsw7MgdHJhcyBhZ290YXIgbG9zIHJlaW50ZW50b3MuICovXG4gIHJlYWRvbmx5IGVycm9yOiBTaWduYWw8Ym9vbGVhbj47XG4gIC8qKlxuICAgKiBSZS1zdXNjcmliZSBsYSBmYWN0b3J5IGRlc2RlIGNlcm8gKG51ZXZvIGxpc3RlbmVyIC8gbnVldmEgbGVjdHVyYSkuXG4gICAqIEVzIGxvIHF1ZSByZWdpc3RyYSBlbCBgUGFnZVJlZnJlc2hTZXJ2aWNlYCBjb21vIGhhbmRsZXIgZGUgcHVsbC10by1yZWZyZXNoLFxuICAgKiB5IHRhbWJpw6luIGVsIFwicmVjb25lY3RhciBtYW51YWxcIiBzaSB1biBsaXN0ZW5lciBtdXJpw7MuXG4gICAqL1xuICByZWxvYWQ6ICgpID0+IHZvaWQ7XG59XG5cbi8qKlxuICogQ3JlYSB1biBzdHJlYW0gcmVmcmVzY2FibGUgYSBwYXJ0aXIgZGUgdW5hIGZhY3RvcnkgZGUgT2JzZXJ2YWJsZS5cbiAqXG4gKiBERUJFIGxsYW1hcnNlIGVuIHVuIGluamVjdGlvbiBjb250ZXh0IChmaWVsZCBpbml0aWFsaXplciBvIGNvbnN0cnVjdG9yKSDigJRcbiAqIHVzYSBgdG9TaWduYWxgL2B0b09ic2VydmFibGVgL2BpbmplY3RgIGludGVybmFtZW50ZS5cbiAqXG4gKiBAcGFyYW0gZmFjdG9yeSAtIEZ1bmNpw7NuIHF1ZSBwcm9kdWNlIGVsIE9ic2VydmFibGUgYSBjb25zdW1pci4gRWwgY2FsbGVyXG4gKiAgIGRlY2lkZSBlbCBtb2RvOiBgKCkgPT4gZnJvbShzdmMuZ2V0QWxsT25jZSgpKWAgKG9uZS1zaG90KSBvXG4gKiAgIGAoKSA9PiBzdmMuZ2V0QWxsKClgIChyZWFsLXRpbWUpLlxuICogQHBhcmFtIG9wdGlvbnMgLSBDb25maWd1cmFjacOzbiBvcGNpb25hbCAoZmFsbGJhY2ssIHJldHJ5LCBnYXRlKS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gb25lLXNob3QgKHJlY29tZW5kYWRvIHBvciBkZWZlY3RvKVxuICogcHJpdmF0ZSByZWFkb25seSBzdHJlYW0gPSBjcmVhdGVSZWZyZXNoYWJsZVN0cmVhbShcbiAqICAgKCkgPT4gZnJvbSh0aGlzLnN2Yy5nZXRBbGxPbmNlKCkpLFxuICogKTtcbiAqXG4gKiAvLyByZWFsLXRpbWUgKGluYm94KVxuICogcHJpdmF0ZSByZWFkb25seSBzdHJlYW0gPSBjcmVhdGVSZWZyZXNoYWJsZVN0cmVhbShcbiAqICAgKCkgPT4gdGhpcy5ub3RpZnMuZ2V0QWxsKDUwKSxcbiAqICk7XG4gKlxuICogcmVhZG9ubHkgaXRlbXMgPSB0aGlzLnN0cmVhbS5kYXRhO1xuICogcmVhZG9ubHkgbG9hZGluZyA9IHRoaXMuc3RyZWFtLmxvYWRpbmc7XG4gKlxuICogaW9uVmlld1dpbGxFbnRlcigpIHtcbiAqICAgdGhpcy5wYWdlUmVmcmVzaC5yZWdpc3RlcigoKSA9PiB0aGlzLnN0cmVhbS5yZWxvYWQoKSk7XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVJlZnJlc2hhYmxlU3RyZWFtPFQ+KFxuICBmYWN0b3J5OiAoKSA9PiBPYnNlcnZhYmxlPFQ+LFxuICBvcHRpb25zPzogUmVmcmVzaGFibGVTdHJlYW1PcHRpb25zPFQ+XG4pOiBSZWZyZXNoYWJsZVN0cmVhbTxUPiB7XG4gIGNvbnN0IGluamVjdG9yID0gb3B0aW9ucz8uaW5qZWN0b3IgPz8gaW5qZWN0KEluamVjdG9yKTtcbiAgY29uc3QgZmFsbGJhY2sgPSAob3B0aW9ucz8uZmFsbGJhY2sgPz8gbnVsbCkgYXMgVCB8IG51bGw7XG4gIGNvbnN0IHJldHJ5Q291bnQgPSBvcHRpb25zPy5yZXRyeUNvdW50ID8/IDQ7XG4gIGNvbnN0IHJldHJ5QmFzZURlbGF5TXMgPSBvcHRpb25zPy5yZXRyeUJhc2VEZWxheU1zID8/IDUwMDtcbiAgY29uc3QgZ2F0ZU9uRmlyZWJhc2VBdXRoID0gb3B0aW9ucz8uZ2F0ZU9uRmlyZWJhc2VBdXRoID8/IHRydWU7XG4gIGNvbnN0IGF1dGhHYXRlVGltZW91dE1zID0gb3B0aW9ucz8uYXV0aEdhdGVUaW1lb3V0TXMgPz8gMjAwMDA7XG5cbiAgLy8gRmlyZWJhc2VTZXJ2aWNlIGVzIG9wY2lvbmFsIOKAlCBzaW4gw6lsIChhcHBzIHNpbiBGaXJlYmFzZSkgbm8gc2UgZ2F0ZWEuXG4gIGNvbnN0IGZpcmViYXNlID0gZ2F0ZU9uRmlyZWJhc2VBdXRoID8gaW5qZWN0b3IuZ2V0KEZpcmViYXNlU2VydmljZSwgbnVsbCkgOiBudWxsO1xuXG4gIGNvbnN0IF9yZWxvYWQgPSBzaWduYWwoMCk7XG4gIGNvbnN0IF9sb2FkaW5nID0gc2lnbmFsKHRydWUpO1xuICBjb25zdCBfZXJyb3IgPSBzaWduYWwoZmFsc2UpO1xuXG4gIC8vIEdhdGUgZGUgRmlyZWJhc2UgQXV0aDogZWwgc3RyZWFtIG5vIGFicmUgbGEgcHJpbWVyYSBzdXNjcmlwY2nDs24gaGFzdGEgcXVlXG4gIC8vIGxhIHNlc2nDs24gZXN0w6kgY29uZmlybWFkYS4gYHJhY2VgIGNvbiB1biBgdGltZXJgIGRlIHNlZ3VyaWRhZCDigJQgc2kgbGFcbiAgLy8gc2VzacOzbiBOVU5DQSBzZSBlc3RhYmxlY2UgKHRva2VuIGludsOhbGlkbywgc2lnbkluV2l0aEZpcmViYXNlIGZhbGzDsyksIGVsXG4gIC8vIGdhdGUgaWd1YWwgc2UgbGliZXJhIHRyYXMgYGF1dGhHYXRlVGltZW91dE1zYCB5IGxhIGZhY3RvcnkgcHJvY2VkZTogc2kgbm9cbiAgLy8gaGF5IHBlcm1pc28gdGVybWluYXLDoSBlbiBlc3RhZG8gYGVycm9yYCwgamFtw6FzIGVuIHNrZWxldG9uIGluZmluaXRvLlxuICBjb25zdCBhdXRoR2F0ZSQ6IE9ic2VydmFibGU8dW5rbm93bj4gPSBmaXJlYmFzZVxuICAgID8gcmFjZShmaXJlYmFzZS5maXJlYmFzZUF1dGhSZWFkeSQsIHRpbWVyKGF1dGhHYXRlVGltZW91dE1zKSkucGlwZSh0YWtlKDEpKVxuICAgIDogb2YodHJ1ZSk7XG5cbiAgY29uc3QgZGF0YSA9IHRvU2lnbmFsKFxuICAgIHRvT2JzZXJ2YWJsZShfcmVsb2FkLCB7IGluamVjdG9yIH0pLnBpcGUoXG4gICAgICB0YXAoKCkgPT4ge1xuICAgICAgICBfbG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgICAgIF9lcnJvci5zZXQoZmFsc2UpO1xuICAgICAgfSksXG4gICAgICAvLyBFc3BlcmFyIGEgRmlyZWJhc2UgQXV0aCBsaXN0byBhbnRlcyBkZSBjYWRhIChyZSlzdXNjcmlwY2nDs24uIENvbW9cbiAgICAgIC8vIGBmaXJlYmFzZUF1dGhSZWFkeSRgIGNvbXBsZXRhIHRyYXMgbGEgcHJpbWVyYSBlbWlzacOzbiwgbGFzIHJlbG9hZHNcbiAgICAgIC8vIHBvc3RlcmlvcmVzIHJlc3VlbHZlbiBlbCBnYXRlIGRlIGlubWVkaWF0byAoYXV0aCB5YSBlc3TDoSBsaXN0bykuXG4gICAgICBzd2l0Y2hNYXAoKCkgPT5cbiAgICAgICAgYXV0aEdhdGUkLnBpcGUoXG4gICAgICAgICAgc3dpdGNoTWFwKCgpID0+XG4gICAgICAgICAgICBmYWN0b3J5KCkucGlwZShcbiAgICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICBfbG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgICAgIF9lcnJvci5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgLy8gQmFja29mZiBjb3J0byBleHBvbmVuY2lhbCBhY290YWRvIOKAlCBzb2xvIHJlZCBkZSBzZWd1cmlkYWQgcGFyYVxuICAgICAgICAgICAgICAvLyByZWNvbmV4aW9uZXMgdHJhbnNpdG9yaWFzLCBOTyBwYXJhIGN1YnJpciBjb2xkIHN0YXJ0LlxuICAgICAgICAgICAgICByZXRyeSh7XG4gICAgICAgICAgICAgICAgY291bnQ6IHJldHJ5Q291bnQsXG4gICAgICAgICAgICAgICAgZGVsYXk6IChfZXJyLCBhdHRlbXB0KSA9PlxuICAgICAgICAgICAgICAgICAgdGltZXIoTWF0aC5taW4ocmV0cnlCYXNlRGVsYXlNcyAqIDIgKiogKGF0dGVtcHQgLSAxKSwgNDAwMCkpLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiB7XG4gICAgICAgICAgICAgICAgX2xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgICAgICAgICBfZXJyb3Iuc2V0KHRydWUpO1xuICAgICAgICAgICAgICAgIHJldHVybiBvZihmYWxsYmFjayBhcyBUKTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIClcbiAgICApLFxuICAgIHsgaW5pdGlhbFZhbHVlOiBudWxsIGFzIFQgfCBudWxsLCBpbmplY3RvciB9XG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICBkYXRhLFxuICAgIGxvYWRpbmc6IF9sb2FkaW5nLmFzUmVhZG9ubHkoKSxcbiAgICBlcnJvcjogX2Vycm9yLmFzUmVhZG9ubHkoKSxcbiAgICByZWxvYWQ6ICgpID0+IF9yZWxvYWQudXBkYXRlKG4gPT4gbiArIDEpLFxuICB9O1xufVxuIl19
@@ -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 = '2.0.805';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzIuMC44MDUnO1xuIl19
5
+ export const VERSION = '2.0.806';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzIuMC44MDYnO1xuIl19
@@ -14,7 +14,7 @@ import { DomSanitizer, Meta, Title } from '@angular/platform-browser';
14
14
  import QRCodeStyling from 'qr-code-styling';
15
15
  import * as i1$3 from '@angular/forms';
16
16
  import { ReactiveFormsModule, FormsModule, FormControl, Validators, FormBuilder } from '@angular/forms';
17
- import { BehaviorSubject, map, throwError, Subject, distinctUntilChanged, filter as filter$1, take as take$1, firstValueFrom, of, from, EMPTY, Observable, debounceTime, switchMap as switchMap$1, catchError as catchError$1, takeUntil, isObservable, shareReplay, timer } from 'rxjs';
17
+ import { BehaviorSubject, map, throwError, Subject, distinctUntilChanged, filter as filter$1, take as take$1, firstValueFrom, of, from, EMPTY, Observable, debounceTime, switchMap as switchMap$1, catchError as catchError$1, takeUntil, isObservable, shareReplay, race, timer } from 'rxjs';
18
18
  import * as i1$4 from 'ng-otp-input';
19
19
  import { NgOtpInputComponent, NgOtpInputModule } from 'ng-otp-input';
20
20
  import * as i2 from '@ionic/angular';
@@ -52,7 +52,7 @@ import 'prismjs/components/prism-json';
52
52
  * Current version of valtech-components.
53
53
  * This is automatically updated during the publish process.
54
54
  */
55
- const VERSION = '2.0.805';
55
+ const VERSION = '2.0.806';
56
56
 
57
57
  /**
58
58
  * Servicio para gestionar presets de componentes.
@@ -37765,14 +37765,20 @@ function createRefreshableStream(factory, options) {
37765
37765
  const retryCount = options?.retryCount ?? 4;
37766
37766
  const retryBaseDelayMs = options?.retryBaseDelayMs ?? 500;
37767
37767
  const gateOnFirebaseAuth = options?.gateOnFirebaseAuth ?? true;
37768
+ const authGateTimeoutMs = options?.authGateTimeoutMs ?? 20000;
37768
37769
  // FirebaseService es opcional — sin él (apps sin Firebase) no se gatea.
37769
37770
  const firebase = gateOnFirebaseAuth ? injector.get(FirebaseService, null) : null;
37770
37771
  const _reload = signal(0);
37771
37772
  const _loading = signal(true);
37772
37773
  const _error = signal(false);
37773
- // Gate compartido de Firebase Auth: el stream no abre la primera
37774
- // suscripción hasta que la sesión de Firebase Auth esté confirmada.
37775
- const authGate$ = firebase ? firebase.firebaseAuthReady$ : of(true);
37774
+ // Gate de Firebase Auth: el stream no abre la primera suscripción hasta que
37775
+ // la sesión esté confirmada. `race` con un `timer` de seguridad si la
37776
+ // sesión NUNCA se establece (token inválido, signInWithFirebase falló), el
37777
+ // gate igual se libera tras `authGateTimeoutMs` y la factory procede: si no
37778
+ // hay permiso terminará en estado `error`, jamás en skeleton infinito.
37779
+ const authGate$ = firebase
37780
+ ? race(firebase.firebaseAuthReady$, timer(authGateTimeoutMs)).pipe(take(1))
37781
+ : of(true);
37776
37782
  const data = toSignal(toObservable(_reload, { injector }).pipe(tap(() => {
37777
37783
  _loading.set(true);
37778
37784
  _error.set(false);