libey-ng-component-library 0.0.40 → 0.0.42

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,4 +20,6 @@ export { SignaturePadModule, SignaturePad };
20
20
  export { NgSelectModule } from '@ng-select/ng-select';
21
21
  export { NgbModule } from '@ng-bootstrap/ng-bootstrap';
22
22
  export * from '@popperjs/core';
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2xpYmV5LW5nLWNvbXBvbmVudC1saWJyYXJ5L3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLGlFQUFpRSxDQUFDO0FBQ2hGLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLHNEQUFzRCxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLENBQUM7QUFDNUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RCxjQUFjLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIGxpYmV5LW5nLWNvbXBvbmVudC1saWJyYXJ5XHJcbiAqL1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbGliZXktbmctY29tcG9uZW50LWxpYnJhcnkuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2xpYmV5LW5nLWNvbXBvbmVudC1saWJyYXJ5LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2xpYmV5LW5nLWNvbXBvbmVudC1saWJyYXJ5Lm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYmxlL2xpYmV5LW5nLXRhYmxlLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYmxlL2xpYmV5LW5nLXRhYmxlLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYmxlL2RpcmVjdGl2ZXMvbGliZXktY29sdW1uLmRpcmVjdGl2ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NpZ25hdHVyZS9saWJleS1uZy1zaWduYXR1cmUubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2lnbmF0dXJlL2xpYmV5LW5nLXNpZ25hdHVyZS9saWJleS1uZy1zaWduYXR1cmUuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi91dGlscy9TaWdXZWIvU2lnV2ViJztcclxuZXhwb3J0ICogZnJvbSAnLi91dGlscy9DcG1JbmRpY2F0b3IvY3BtLWluZGljYXRvci10eXBlcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ljb25zL2ljb25zLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ljb25zL2xpYmV5LW5nLWljb25zL2xpYmV5LW5nLWljb25zLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NwbS1pbmRpY2F0b3IvbGliZXktbmctY3BtLWluZGljYXRvci5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jcG0taW5kaWNhdG9yL2xpYmV5LW5nLWNwbS1pbmRpY2F0b3IuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2lnbmF0dXJlUGFkTW9kdWxlLCBTaWduYXR1cmVQYWQgfSBmcm9tICdhbmd1bGFyMi1zaWduYXR1cmVwYWQnO1xyXG5leHBvcnQgeyBTaWduYXR1cmVQYWRNb2R1bGUsIFNpZ25hdHVyZVBhZCB9O1xyXG5leHBvcnQgeyBOZ1NlbGVjdE1vZHVsZSB9IGZyb20gJ0BuZy1zZWxlY3Qvbmctc2VsZWN0JztcclxuZXhwb3J0IHsgTmdiTW9kdWxlIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5leHBvcnQgKiBmcm9tICdAcG9wcGVyanMvY29yZSc7XHJcbiJdfQ==
23
+ export * from './utils/Cache/cache';
24
+ export * from './utils/NavigationState/navigation-state';
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2xpYmV5LW5nLWNvbXBvbmVudC1saWJyYXJ5L3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLGlFQUFpRSxDQUFDO0FBQ2hGLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLHNEQUFzRCxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLENBQUM7QUFDNUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RCxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYywwQ0FBMEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBsaWJleS1uZy1jb21wb25lbnQtbGlicmFyeVxyXG4gKi9cclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2xpYmV5LW5nLWNvbXBvbmVudC1saWJyYXJ5LnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9saWJleS1uZy1jb21wb25lbnQtbGlicmFyeS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9saWJleS1uZy1jb21wb25lbnQtbGlicmFyeS5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWJsZS9saWJleS1uZy10YWJsZS5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWJsZS9saWJleS1uZy10YWJsZS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWJsZS9kaXJlY3RpdmVzL2xpYmV5LWNvbHVtbi5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaWduYXR1cmUvbGliZXktbmctc2lnbmF0dXJlLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NpZ25hdHVyZS9saWJleS1uZy1zaWduYXR1cmUvbGliZXktbmctc2lnbmF0dXJlLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMvU2lnV2ViL1NpZ1dlYic7XHJcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMvQ3BtSW5kaWNhdG9yL2NwbS1pbmRpY2F0b3ItdHlwZXMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9pY29ucy9pY29ucy5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9pY29ucy9saWJleS1uZy1pY29ucy9saWJleS1uZy1pY29ucy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jcG0taW5kaWNhdG9yL2xpYmV5LW5nLWNwbS1pbmRpY2F0b3IubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY3BtLWluZGljYXRvci9saWJleS1uZy1jcG0taW5kaWNhdG9yLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNpZ25hdHVyZVBhZE1vZHVsZSwgU2lnbmF0dXJlUGFkIH0gZnJvbSAnYW5ndWxhcjItc2lnbmF0dXJlcGFkJztcclxuZXhwb3J0IHsgU2lnbmF0dXJlUGFkTW9kdWxlLCBTaWduYXR1cmVQYWQgfTtcclxuZXhwb3J0IHsgTmdTZWxlY3RNb2R1bGUgfSBmcm9tICdAbmctc2VsZWN0L25nLXNlbGVjdCc7XHJcbmV4cG9ydCB7IE5nYk1vZHVsZSB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuZXhwb3J0ICogZnJvbSAnQHBvcHBlcmpzL2NvcmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL3V0aWxzL0NhY2hlL2NhY2hlJztcclxuZXhwb3J0ICogZnJvbSAnLi91dGlscy9OYXZpZ2F0aW9uU3RhdGUvbmF2aWdhdGlvbi1zdGF0ZSc7XHJcbiJdfQ==
@@ -0,0 +1,13 @@
1
+ import { getOrFetch } from './cache-helpers';
2
+ const DEFAULT_TTL_MS = 8 * 60 * 60 * 1000; // 8 horas - red de seguridad para maestros
3
+ export function Cacheable(key, ttlMs = DEFAULT_TTL_MS) {
4
+ return function (target, propertyKey, descriptor) {
5
+ const originalMethod = descriptor.value;
6
+ descriptor.value = function (...args) {
7
+ const resolvedKey = typeof key === 'function' ? key(...args) : key;
8
+ return getOrFetch(resolvedKey, () => originalMethod.apply(this, args), ttlMs);
9
+ };
10
+ return descriptor;
11
+ };
12
+ }
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUtZGVjb3JhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbGliZXktbmctY29tcG9uZW50LWxpYnJhcnkvc3JjL3V0aWxzL0NhY2hlL2NhY2hlLWRlY29yYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFN0MsTUFBTSxjQUFjLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsMkNBQTJDO0FBSXRGLE1BQU0sVUFBVSxTQUFTLENBQUMsR0FBeUIsRUFBRSxRQUFnQixjQUFjO0lBQ2pGLE9BQU8sVUFBVSxNQUFXLEVBQUUsV0FBbUIsRUFBRSxVQUE4QjtRQUMvRSxNQUFNLGNBQWMsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDO1FBRXhDLFVBQVUsQ0FBQyxLQUFLLEdBQUcsVUFBVSxHQUFHLElBQVc7WUFDekMsTUFBTSxXQUFXLEdBQUcsT0FBTyxHQUFHLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQ25FLE9BQU8sVUFBVSxDQUFDLFdBQVcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNoRixDQUFDLENBQUM7UUFFRixPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBnZXRPckZldGNoIH0gZnJvbSAnLi9jYWNoZS1oZWxwZXJzJztcclxuXHJcbmNvbnN0IERFRkFVTFRfVFRMX01TID0gOCAqIDYwICogNjAgKiAxMDAwOyAvLyA4IGhvcmFzIC0gcmVkIGRlIHNlZ3VyaWRhZCBwYXJhIG1hZXN0cm9zXHJcblxyXG50eXBlIEtleVJlc29sdmVyID0gKC4uLmFyZ3M6IGFueVtdKSA9PiBzdHJpbmc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gQ2FjaGVhYmxlKGtleTogc3RyaW5nIHwgS2V5UmVzb2x2ZXIsIHR0bE1zOiBudW1iZXIgPSBERUZBVUxUX1RUTF9NUykge1xyXG4gIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBhbnksIHByb3BlcnR5S2V5OiBzdHJpbmcsIGRlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvcikge1xyXG4gICAgY29uc3Qgb3JpZ2luYWxNZXRob2QgPSBkZXNjcmlwdG9yLnZhbHVlO1xyXG5cclxuICAgIGRlc2NyaXB0b3IudmFsdWUgPSBmdW5jdGlvbiAoLi4uYXJnczogYW55W10pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICBjb25zdCByZXNvbHZlZEtleSA9IHR5cGVvZiBrZXkgPT09ICdmdW5jdGlvbicgPyBrZXkoLi4uYXJncykgOiBrZXk7XHJcbiAgICAgIHJldHVybiBnZXRPckZldGNoKHJlc29sdmVkS2V5LCAoKSA9PiBvcmlnaW5hbE1ldGhvZC5hcHBseSh0aGlzLCBhcmdzKSwgdHRsTXMpO1xyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gZGVzY3JpcHRvcjtcclxuICB9O1xyXG59XHJcbiJdfQ==
@@ -0,0 +1,11 @@
1
+ import { of } from 'rxjs';
2
+ import { tap } from 'rxjs/operators';
3
+ import { getItem, setItem } from './cache-storage';
4
+ const DEFAULT_TTL_MS = 8 * 60 * 60 * 1000; // 8 horas - red de seguridad para maestros
5
+ export function getOrFetch(key, fetchFn, ttlMs = DEFAULT_TTL_MS) {
6
+ const cached = getItem(key);
7
+ if (cached)
8
+ return of(cached);
9
+ return fetchFn().pipe(tap(data => setItem(key, data, ttlMs)));
10
+ }
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUtaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpYmV5LW5nLWNvbXBvbmVudC1saWJyYXJ5L3NyYy91dGlscy9DYWNoZS9jYWNoZS1oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFbkQsTUFBTSxjQUFjLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsMkNBQTJDO0FBRXRGLE1BQU0sVUFBVSxVQUFVLENBQ3hCLEdBQVcsRUFDWCxPQUE0QixFQUM1QixRQUFnQixjQUFjO0lBRTlCLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBSSxHQUFHLENBQUMsQ0FBQztJQUMvQixJQUFJLE1BQU07UUFBRSxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUU5QixPQUFPLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FDbkIsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FDdkMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IGdldEl0ZW0sIHNldEl0ZW0gfSBmcm9tICcuL2NhY2hlLXN0b3JhZ2UnO1xyXG5cclxuY29uc3QgREVGQVVMVF9UVExfTVMgPSA4ICogNjAgKiA2MCAqIDEwMDA7IC8vIDggaG9yYXMgLSByZWQgZGUgc2VndXJpZGFkIHBhcmEgbWFlc3Ryb3NcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRPckZldGNoPFQ+KFxyXG4gIGtleTogc3RyaW5nLFxyXG4gIGZldGNoRm46ICgpID0+IE9ic2VydmFibGU8VD4sXHJcbiAgdHRsTXM6IG51bWJlciA9IERFRkFVTFRfVFRMX01TXHJcbik6IE9ic2VydmFibGU8VD4ge1xyXG4gIGNvbnN0IGNhY2hlZCA9IGdldEl0ZW08VD4oa2V5KTtcclxuICBpZiAoY2FjaGVkKSByZXR1cm4gb2YoY2FjaGVkKTtcclxuXHJcbiAgcmV0dXJuIGZldGNoRm4oKS5waXBlKFxyXG4gICAgdGFwKGRhdGEgPT4gc2V0SXRlbShrZXksIGRhdGEsIHR0bE1zKSlcclxuICApO1xyXG59XHJcbiJdfQ==
@@ -0,0 +1,32 @@
1
+ const CACHE_VERSION = 1;
2
+ export function setItem(key, value, ttlMs) {
3
+ const entry = {
4
+ version: CACHE_VERSION,
5
+ data: value,
6
+ expiresAt: Date.now() + ttlMs,
7
+ };
8
+ localStorage.setItem(key, JSON.stringify(entry));
9
+ }
10
+ export function getItem(key) {
11
+ const raw = localStorage.getItem(key);
12
+ if (!raw)
13
+ return null;
14
+ try {
15
+ const entry = JSON.parse(raw);
16
+ const isOldVersion = entry.version !== CACHE_VERSION;
17
+ const isExpired = Date.now() > entry.expiresAt;
18
+ if (isOldVersion || isExpired) {
19
+ localStorage.removeItem(key);
20
+ return null;
21
+ }
22
+ return entry.data;
23
+ }
24
+ catch (_a) {
25
+ localStorage.removeItem(key);
26
+ return null;
27
+ }
28
+ }
29
+ export function removeItem(key) {
30
+ localStorage.removeItem(key);
31
+ }
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUtc3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpYmV5LW5nLWNvbXBvbmVudC1saWJyYXJ5L3NyYy91dGlscy9DYWNoZS9jYWNoZS1zdG9yYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sYUFBYSxHQUFHLENBQUMsQ0FBQztBQUV4QixNQUFNLFVBQVUsT0FBTyxDQUFJLEdBQVcsRUFBRSxLQUFRLEVBQUUsS0FBYTtJQUM3RCxNQUFNLEtBQUssR0FBa0I7UUFDM0IsT0FBTyxFQUFFLGFBQWE7UUFDdEIsSUFBSSxFQUFFLEtBQUs7UUFDWCxTQUFTLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEtBQUs7S0FDOUIsQ0FBQztJQUNGLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNuRCxDQUFDO0FBRUQsTUFBTSxVQUFVLE9BQU8sQ0FBSSxHQUFXO0lBQ3BDLE1BQU0sR0FBRyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEMsSUFBSSxDQUFDLEdBQUc7UUFBRSxPQUFPLElBQUksQ0FBQztJQUV0QixJQUFJO1FBQ0YsTUFBTSxLQUFLLEdBQWtCLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFN0MsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLE9BQU8sS0FBSyxhQUFhLENBQUM7UUFDckQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7UUFFL0MsSUFBSSxZQUFZLElBQUksU0FBUyxFQUFFO1lBQzdCLFlBQVksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDN0IsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQztLQUNuQjtJQUFDLFdBQU07UUFDTixZQUFZLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdCLE9BQU8sSUFBSSxDQUFDO0tBQ2I7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLFVBQVUsQ0FBQyxHQUFXO0lBQ3BDLFlBQVksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDL0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENhY2hlRW50cnkgfSBmcm9tICcuL2NhY2hlLXR5cGVzJztcclxuXHJcbmNvbnN0IENBQ0hFX1ZFUlNJT04gPSAxO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHNldEl0ZW08VD4oa2V5OiBzdHJpbmcsIHZhbHVlOiBULCB0dGxNczogbnVtYmVyKTogdm9pZCB7XHJcbiAgY29uc3QgZW50cnk6IENhY2hlRW50cnk8VD4gPSB7XHJcbiAgICB2ZXJzaW9uOiBDQUNIRV9WRVJTSU9OLFxyXG4gICAgZGF0YTogdmFsdWUsXHJcbiAgICBleHBpcmVzQXQ6IERhdGUubm93KCkgKyB0dGxNcyxcclxuICB9O1xyXG4gIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGtleSwgSlNPTi5zdHJpbmdpZnkoZW50cnkpKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldEl0ZW08VD4oa2V5OiBzdHJpbmcpOiBUIHwgbnVsbCB7XHJcbiAgY29uc3QgcmF3ID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KTtcclxuICBpZiAoIXJhdykgcmV0dXJuIG51bGw7XHJcblxyXG4gIHRyeSB7XHJcbiAgICBjb25zdCBlbnRyeTogQ2FjaGVFbnRyeTxUPiA9IEpTT04ucGFyc2UocmF3KTtcclxuXHJcbiAgICBjb25zdCBpc09sZFZlcnNpb24gPSBlbnRyeS52ZXJzaW9uICE9PSBDQUNIRV9WRVJTSU9OO1xyXG4gICAgY29uc3QgaXNFeHBpcmVkID0gRGF0ZS5ub3coKSA+IGVudHJ5LmV4cGlyZXNBdDtcclxuXHJcbiAgICBpZiAoaXNPbGRWZXJzaW9uIHx8IGlzRXhwaXJlZCkge1xyXG4gICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShrZXkpO1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZW50cnkuZGF0YTtcclxuICB9IGNhdGNoIHtcclxuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGtleSk7XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVJdGVtKGtleTogc3RyaW5nKTogdm9pZCB7XHJcbiAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KTtcclxufVxyXG4iXX0=
@@ -0,0 +1,19 @@
1
+ const CHANNEL_NAME = 'libey-cache-sync';
2
+ let channel = null;
3
+ function getChannel() {
4
+ if (!channel) {
5
+ channel = new BroadcastChannel(CHANNEL_NAME);
6
+ }
7
+ return channel;
8
+ }
9
+ export function broadcastInvalidate(key) {
10
+ getChannel().postMessage({ type: 'invalidate', key });
11
+ }
12
+ export function onExternalInvalidate(callback) {
13
+ getChannel().onmessage = (event) => {
14
+ if (event.data.type === 'invalidate') {
15
+ callback(event.data.key);
16
+ }
17
+ };
18
+ }
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUtc3luYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpYmV5LW5nLWNvbXBvbmVudC1saWJyYXJ5L3NyYy91dGlscy9DYWNoZS9jYWNoZS1zeW5jLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sWUFBWSxHQUFHLGtCQUFrQixDQUFDO0FBQ3hDLElBQUksT0FBTyxHQUE0QixJQUFJLENBQUM7QUFFNUMsU0FBUyxVQUFVO0lBQ2pCLElBQUksQ0FBQyxPQUFPLEVBQUU7UUFDWixPQUFPLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztLQUM5QztJQUNELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUM7QUFFRCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsR0FBVztJQUM3QyxVQUFVLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBaUIsQ0FBQyxDQUFDO0FBQ3ZFLENBQUM7QUFFRCxNQUFNLFVBQVUsb0JBQW9CLENBQUMsUUFBK0I7SUFDbEUsVUFBVSxFQUFFLENBQUMsU0FBUyxHQUFHLENBQUMsS0FBZ0MsRUFBRSxFQUFFO1FBQzVELElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssWUFBWSxFQUFFO1lBQ3BDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQzFCO0lBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbInR5cGUgU3luY01lc3NhZ2UgPSB7IHR5cGU6ICdpbnZhbGlkYXRlJzsga2V5OiBzdHJpbmcgfTtcclxuXHJcbmNvbnN0IENIQU5ORUxfTkFNRSA9ICdsaWJleS1jYWNoZS1zeW5jJztcclxubGV0IGNoYW5uZWw6IEJyb2FkY2FzdENoYW5uZWwgfCBudWxsID0gbnVsbDtcclxuXHJcbmZ1bmN0aW9uIGdldENoYW5uZWwoKTogQnJvYWRjYXN0Q2hhbm5lbCB7XHJcbiAgaWYgKCFjaGFubmVsKSB7XHJcbiAgICBjaGFubmVsID0gbmV3IEJyb2FkY2FzdENoYW5uZWwoQ0hBTk5FTF9OQU1FKTtcclxuICB9XHJcbiAgcmV0dXJuIGNoYW5uZWw7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBicm9hZGNhc3RJbnZhbGlkYXRlKGtleTogc3RyaW5nKTogdm9pZCB7XHJcbiAgZ2V0Q2hhbm5lbCgpLnBvc3RNZXNzYWdlKHsgdHlwZTogJ2ludmFsaWRhdGUnLCBrZXkgfSBhcyBTeW5jTWVzc2FnZSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBvbkV4dGVybmFsSW52YWxpZGF0ZShjYWxsYmFjazogKGtleTogc3RyaW5nKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgZ2V0Q2hhbm5lbCgpLm9ubWVzc2FnZSA9IChldmVudDogTWVzc2FnZUV2ZW50PFN5bmNNZXNzYWdlPikgPT4ge1xyXG4gICAgaWYgKGV2ZW50LmRhdGEudHlwZSA9PT0gJ2ludmFsaWRhdGUnKSB7XHJcbiAgICAgIGNhbGxiYWNrKGV2ZW50LmRhdGEua2V5KTtcclxuICAgIH1cclxuICB9O1xyXG59XHJcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUtdHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saWJleS1uZy1jb21wb25lbnQtbGlicmFyeS9zcmMvdXRpbHMvQ2FjaGUvY2FjaGUtdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgQ2FjaGVFbnRyeTxUPiB7XHJcbiAgdmVyc2lvbjogbnVtYmVyO1xyXG4gIGRhdGE6IFQ7XHJcbiAgZXhwaXJlc0F0OiBudW1iZXI7XHJcbn1cclxuIl19
@@ -0,0 +1,17 @@
1
+ import { setItem, getItem, removeItem } from './cache-storage';
2
+ import { broadcastInvalidate, onExternalInvalidate } from './cache-sync';
3
+ import { getOrFetch } from './cache-helpers';
4
+ function invalidate(key) {
5
+ removeItem(key);
6
+ broadcastInvalidate(key);
7
+ }
8
+ onExternalInvalidate((key) => removeItem(key));
9
+ export const cache = {
10
+ get: getItem,
11
+ set: setItem,
12
+ invalidate,
13
+ getOrFetch,
14
+ };
15
+ export * from './cache-types';
16
+ export * from './cache-decorator'; // exporta el decorador @Cacheable
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saWJleS1uZy1jb21wb25lbnQtbGlicmFyeS9zcmMvdXRpbHMvQ2FjaGUvY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU3QyxTQUFTLFVBQVUsQ0FBQyxHQUFXO0lBQzdCLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoQixtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMzQixDQUFDO0FBRUQsb0JBQW9CLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBRS9DLE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRztJQUNuQixHQUFHLEVBQUUsT0FBTztJQUNaLEdBQUcsRUFBRSxPQUFPO0lBQ1osVUFBVTtJQUNWLFVBQVU7Q0FDWCxDQUFDO0FBRUYsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxtQkFBbUIsQ0FBQyxDQUFDLGtDQUFrQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNldEl0ZW0sIGdldEl0ZW0sIHJlbW92ZUl0ZW0gfSBmcm9tICcuL2NhY2hlLXN0b3JhZ2UnO1xyXG5pbXBvcnQgeyBicm9hZGNhc3RJbnZhbGlkYXRlLCBvbkV4dGVybmFsSW52YWxpZGF0ZSB9IGZyb20gJy4vY2FjaGUtc3luYyc7XHJcbmltcG9ydCB7IGdldE9yRmV0Y2ggfSBmcm9tICcuL2NhY2hlLWhlbHBlcnMnO1xyXG5cclxuZnVuY3Rpb24gaW52YWxpZGF0ZShrZXk6IHN0cmluZyk6IHZvaWQge1xyXG4gIHJlbW92ZUl0ZW0oa2V5KTtcclxuICBicm9hZGNhc3RJbnZhbGlkYXRlKGtleSk7XHJcbn1cclxuXHJcbm9uRXh0ZXJuYWxJbnZhbGlkYXRlKChrZXkpID0+IHJlbW92ZUl0ZW0oa2V5KSk7XHJcblxyXG5leHBvcnQgY29uc3QgY2FjaGUgPSB7XHJcbiAgZ2V0OiBnZXRJdGVtLFxyXG4gIHNldDogc2V0SXRlbSxcclxuICBpbnZhbGlkYXRlLFxyXG4gIGdldE9yRmV0Y2gsXHJcbn07XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2NhY2hlLXR5cGVzJztcclxuZXhwb3J0ICogZnJvbSAnLi9jYWNoZS1kZWNvcmF0b3InOyAvLyBleHBvcnRhIGVsIGRlY29yYWRvciBAQ2FjaGVhYmxlXHJcbiJdfQ==
@@ -0,0 +1,75 @@
1
+ const NAVIGATION_STATE_VERSION = 1;
2
+ const KEY_PREFIX = 'libey:nav:';
3
+ const DEFAULT_TTL_MS = 60 * 1000;
4
+ function buildKey(name) {
5
+ if (!name)
6
+ throw new Error('navigationState: el nombre no puede estar vacio');
7
+ return KEY_PREFIX + name;
8
+ }
9
+ function read(key) {
10
+ let raw;
11
+ try {
12
+ raw = sessionStorage.getItem(key);
13
+ }
14
+ catch (_a) {
15
+ return null;
16
+ }
17
+ if (!raw)
18
+ return null;
19
+ try {
20
+ const entry = JSON.parse(raw);
21
+ const isOldVersion = entry.version !== NAVIGATION_STATE_VERSION;
22
+ const isExpired = Date.now() > entry.expiresAt;
23
+ if (isOldVersion || isExpired) {
24
+ sessionStorage.removeItem(key);
25
+ return null;
26
+ }
27
+ return entry.data;
28
+ }
29
+ catch (_b) {
30
+ sessionStorage.removeItem(key);
31
+ return null;
32
+ }
33
+ }
34
+ function set(name, data, ttlMs = DEFAULT_TTL_MS) {
35
+ const entry = {
36
+ version: NAVIGATION_STATE_VERSION,
37
+ data,
38
+ expiresAt: Date.now() + ttlMs,
39
+ };
40
+ try {
41
+ sessionStorage.setItem(buildKey(name), JSON.stringify(entry));
42
+ }
43
+ catch (error) {
44
+ console.error(`navigationState: no se pudo guardar "${name}":`, error);
45
+ }
46
+ }
47
+ function consume(name) {
48
+ const key = buildKey(name);
49
+ const data = read(key);
50
+ try {
51
+ sessionStorage.removeItem(key);
52
+ }
53
+ catch (_a) {
54
+ // sessionStorage no disponible - no hay nada que borrar
55
+ }
56
+ return data;
57
+ }
58
+ function peek(name) {
59
+ return read(buildKey(name));
60
+ }
61
+ function remove(name) {
62
+ try {
63
+ sessionStorage.removeItem(buildKey(name));
64
+ }
65
+ catch (_a) {
66
+ // sessionStorage no disponible - no hay nada que borrar
67
+ }
68
+ }
69
+ export const navigationState = {
70
+ set,
71
+ consume,
72
+ peek,
73
+ remove,
74
+ };
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi1zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpYmV5LW5nLWNvbXBvbmVudC1saWJyYXJ5L3NyYy91dGlscy9OYXZpZ2F0aW9uU3RhdGUvbmF2aWdhdGlvbi1zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxNQUFNLHdCQUF3QixHQUFHLENBQUMsQ0FBQztBQUNuQyxNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUM7QUFDaEMsTUFBTSxjQUFjLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztBQUVqQyxTQUFTLFFBQVEsQ0FBQyxJQUFZO0lBQzVCLElBQUksQ0FBQyxJQUFJO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxpREFBaUQsQ0FBQyxDQUFDO0lBQzlFLE9BQU8sVUFBVSxHQUFHLElBQUksQ0FBQztBQUMzQixDQUFDO0FBRUQsU0FBUyxJQUFJLENBQUksR0FBVztJQUMxQixJQUFJLEdBQWtCLENBQUM7SUFDdkIsSUFBSTtRQUNGLEdBQUcsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQ25DO0lBQUMsV0FBTTtRQUNOLE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFDRCxJQUFJLENBQUMsR0FBRztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBRXRCLElBQUk7UUFDRixNQUFNLEtBQUssR0FBNEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUV2RCxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsT0FBTyxLQUFLLHdCQUF3QixDQUFDO1FBQ2hFLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDO1FBRS9DLElBQUksWUFBWSxJQUFJLFNBQVMsRUFBRTtZQUM3QixjQUFjLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQy9CLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUM7S0FDbkI7SUFBQyxXQUFNO1FBQ04sY0FBYyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMvQixPQUFPLElBQUksQ0FBQztLQUNiO0FBQ0gsQ0FBQztBQUVELFNBQVMsR0FBRyxDQUFJLElBQVksRUFBRSxJQUFPLEVBQUUsUUFBZ0IsY0FBYztJQUNuRSxNQUFNLEtBQUssR0FBNEI7UUFDckMsT0FBTyxFQUFFLHdCQUF3QjtRQUNqQyxJQUFJO1FBQ0osU0FBUyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxLQUFLO0tBQzlCLENBQUM7SUFDRixJQUFJO1FBQ0YsY0FBYyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0tBQy9EO0lBQUMsT0FBTyxLQUFLLEVBQUU7UUFDZCxPQUFPLENBQUMsS0FBSyxDQUFDLHdDQUF3QyxJQUFJLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztLQUN4RTtBQUNILENBQUM7QUFFRCxTQUFTLE9BQU8sQ0FBSSxJQUFZO0lBQzlCLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUksR0FBRyxDQUFDLENBQUM7SUFDMUIsSUFBSTtRQUNGLGNBQWMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7S0FDaEM7SUFBQyxXQUFNO1FBQ04sd0RBQXdEO0tBQ3pEO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQsU0FBUyxJQUFJLENBQUksSUFBWTtJQUMzQixPQUFPLElBQUksQ0FBSSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNqQyxDQUFDO0FBRUQsU0FBUyxNQUFNLENBQUMsSUFBWTtJQUMxQixJQUFJO1FBQ0YsY0FBYyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztLQUMzQztJQUFDLFdBQU07UUFDTix3REFBd0Q7S0FDekQ7QUFDSCxDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHO0lBQzdCLEdBQUc7SUFDSCxPQUFPO0lBQ1AsSUFBSTtJQUNKLE1BQU07Q0FDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsidHlwZSBOYXZpZ2F0aW9uU3RhdGVFbnRyeTxUPiA9IHtcbiAgdmVyc2lvbjogbnVtYmVyO1xuICBkYXRhOiBUO1xuICBleHBpcmVzQXQ6IG51bWJlcjtcbn07XG5cbmNvbnN0IE5BVklHQVRJT05fU1RBVEVfVkVSU0lPTiA9IDE7XG5jb25zdCBLRVlfUFJFRklYID0gJ2xpYmV5Om5hdjonO1xuY29uc3QgREVGQVVMVF9UVExfTVMgPSA2MCAqIDEwMDA7XG5cbmZ1bmN0aW9uIGJ1aWxkS2V5KG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmICghbmFtZSkgdGhyb3cgbmV3IEVycm9yKCduYXZpZ2F0aW9uU3RhdGU6IGVsIG5vbWJyZSBubyBwdWVkZSBlc3RhciB2YWNpbycpO1xuICByZXR1cm4gS0VZX1BSRUZJWCArIG5hbWU7XG59XG5cbmZ1bmN0aW9uIHJlYWQ8VD4oa2V5OiBzdHJpbmcpOiBUIHwgbnVsbCB7XG4gIGxldCByYXc6IHN0cmluZyB8IG51bGw7XG4gIHRyeSB7XG4gICAgcmF3ID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShrZXkpO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBpZiAoIXJhdykgcmV0dXJuIG51bGw7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBlbnRyeTogTmF2aWdhdGlvblN0YXRlRW50cnk8VD4gPSBKU09OLnBhcnNlKHJhdyk7XG5cbiAgICBjb25zdCBpc09sZFZlcnNpb24gPSBlbnRyeS52ZXJzaW9uICE9PSBOQVZJR0FUSU9OX1NUQVRFX1ZFUlNJT047XG4gICAgY29uc3QgaXNFeHBpcmVkID0gRGF0ZS5ub3coKSA+IGVudHJ5LmV4cGlyZXNBdDtcblxuICAgIGlmIChpc09sZFZlcnNpb24gfHwgaXNFeHBpcmVkKSB7XG4gICAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKGtleSk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gZW50cnkuZGF0YTtcbiAgfSBjYXRjaCB7XG4gICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbShrZXkpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmZ1bmN0aW9uIHNldDxUPihuYW1lOiBzdHJpbmcsIGRhdGE6IFQsIHR0bE1zOiBudW1iZXIgPSBERUZBVUxUX1RUTF9NUyk6IHZvaWQge1xuICBjb25zdCBlbnRyeTogTmF2aWdhdGlvblN0YXRlRW50cnk8VD4gPSB7XG4gICAgdmVyc2lvbjogTkFWSUdBVElPTl9TVEFURV9WRVJTSU9OLFxuICAgIGRhdGEsXG4gICAgZXhwaXJlc0F0OiBEYXRlLm5vdygpICsgdHRsTXMsXG4gIH07XG4gIHRyeSB7XG4gICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShidWlsZEtleShuYW1lKSwgSlNPTi5zdHJpbmdpZnkoZW50cnkpKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zb2xlLmVycm9yKGBuYXZpZ2F0aW9uU3RhdGU6IG5vIHNlIHB1ZG8gZ3VhcmRhciBcIiR7bmFtZX1cIjpgLCBlcnJvcik7XG4gIH1cbn1cblxuZnVuY3Rpb24gY29uc3VtZTxUPihuYW1lOiBzdHJpbmcpOiBUIHwgbnVsbCB7XG4gIGNvbnN0IGtleSA9IGJ1aWxkS2V5KG5hbWUpO1xuICBjb25zdCBkYXRhID0gcmVhZDxUPihrZXkpO1xuICB0cnkge1xuICAgIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KTtcbiAgfSBjYXRjaCB7XG4gICAgLy8gc2Vzc2lvblN0b3JhZ2Ugbm8gZGlzcG9uaWJsZSAtIG5vIGhheSBuYWRhIHF1ZSBib3JyYXJcbiAgfVxuICByZXR1cm4gZGF0YTtcbn1cblxuZnVuY3Rpb24gcGVlazxUPihuYW1lOiBzdHJpbmcpOiBUIHwgbnVsbCB7XG4gIHJldHVybiByZWFkPFQ+KGJ1aWxkS2V5KG5hbWUpKTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlKG5hbWU6IHN0cmluZyk6IHZvaWQge1xuICB0cnkge1xuICAgIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oYnVpbGRLZXkobmFtZSkpO1xuICB9IGNhdGNoIHtcbiAgICAvLyBzZXNzaW9uU3RvcmFnZSBubyBkaXNwb25pYmxlIC0gbm8gaGF5IG5hZGEgcXVlIGJvcnJhclxuICB9XG59XG5cbmV4cG9ydCBjb25zdCBuYXZpZ2F0aW9uU3RhdGUgPSB7XG4gIHNldCxcbiAgY29uc3VtZSxcbiAgcGVlayxcbiAgcmVtb3ZlLFxufTtcbiJdfQ==
@@ -4,7 +4,7 @@ import * as i1 from '@angular/common';
4
4
  import { CommonModule, DatePipe } from '@angular/common';
5
5
  import * as i3 from '@angular/forms';
6
6
  import { FormsModule, ReactiveFormsModule } from '@angular/forms';
7
- import { Subject } from 'rxjs';
7
+ import { Subject, of } from 'rxjs';
8
8
  import * as i2 from 'angular2-signaturepad';
9
9
  import { SignaturePad, SignaturePadModule } from 'angular2-signaturepad';
10
10
  export { SignaturePad, SignaturePadModule } from 'angular2-signaturepad';
@@ -14,6 +14,7 @@ export { NgSelectModule } from '@ng-select/ng-select';
14
14
  import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
15
15
  export { NgbModule } from '@ng-bootstrap/ng-bootstrap';
16
16
  export * from '@popperjs/core';
17
+ import { tap } from 'rxjs/operators';
17
18
 
18
19
  class LibeyNgComponentLibraryService {
19
20
  constructor() { }
@@ -2404,6 +2405,164 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
2404
2405
  }]
2405
2406
  }] });
2406
2407
 
2408
+ const CACHE_VERSION = 1;
2409
+ function setItem(key, value, ttlMs) {
2410
+ const entry = {
2411
+ version: CACHE_VERSION,
2412
+ data: value,
2413
+ expiresAt: Date.now() + ttlMs,
2414
+ };
2415
+ localStorage.setItem(key, JSON.stringify(entry));
2416
+ }
2417
+ function getItem(key) {
2418
+ const raw = localStorage.getItem(key);
2419
+ if (!raw)
2420
+ return null;
2421
+ try {
2422
+ const entry = JSON.parse(raw);
2423
+ const isOldVersion = entry.version !== CACHE_VERSION;
2424
+ const isExpired = Date.now() > entry.expiresAt;
2425
+ if (isOldVersion || isExpired) {
2426
+ localStorage.removeItem(key);
2427
+ return null;
2428
+ }
2429
+ return entry.data;
2430
+ }
2431
+ catch (_a) {
2432
+ localStorage.removeItem(key);
2433
+ return null;
2434
+ }
2435
+ }
2436
+ function removeItem(key) {
2437
+ localStorage.removeItem(key);
2438
+ }
2439
+
2440
+ const CHANNEL_NAME = 'libey-cache-sync';
2441
+ let channel = null;
2442
+ function getChannel() {
2443
+ if (!channel) {
2444
+ channel = new BroadcastChannel(CHANNEL_NAME);
2445
+ }
2446
+ return channel;
2447
+ }
2448
+ function broadcastInvalidate(key) {
2449
+ getChannel().postMessage({ type: 'invalidate', key });
2450
+ }
2451
+ function onExternalInvalidate(callback) {
2452
+ getChannel().onmessage = (event) => {
2453
+ if (event.data.type === 'invalidate') {
2454
+ callback(event.data.key);
2455
+ }
2456
+ };
2457
+ }
2458
+
2459
+ const DEFAULT_TTL_MS$2 = 8 * 60 * 60 * 1000; // 8 horas - red de seguridad para maestros
2460
+ function getOrFetch(key, fetchFn, ttlMs = DEFAULT_TTL_MS$2) {
2461
+ const cached = getItem(key);
2462
+ if (cached)
2463
+ return of(cached);
2464
+ return fetchFn().pipe(tap(data => setItem(key, data, ttlMs)));
2465
+ }
2466
+
2467
+ const DEFAULT_TTL_MS$1 = 8 * 60 * 60 * 1000; // 8 horas - red de seguridad para maestros
2468
+ function Cacheable(key, ttlMs = DEFAULT_TTL_MS$1) {
2469
+ return function (target, propertyKey, descriptor) {
2470
+ const originalMethod = descriptor.value;
2471
+ descriptor.value = function (...args) {
2472
+ const resolvedKey = typeof key === 'function' ? key(...args) : key;
2473
+ return getOrFetch(resolvedKey, () => originalMethod.apply(this, args), ttlMs);
2474
+ };
2475
+ return descriptor;
2476
+ };
2477
+ }
2478
+
2479
+ function invalidate(key) {
2480
+ removeItem(key);
2481
+ broadcastInvalidate(key);
2482
+ }
2483
+ onExternalInvalidate((key) => removeItem(key));
2484
+ const cache = {
2485
+ get: getItem,
2486
+ set: setItem,
2487
+ invalidate,
2488
+ getOrFetch,
2489
+ };
2490
+
2491
+ const NAVIGATION_STATE_VERSION = 1;
2492
+ const KEY_PREFIX = 'libey:nav:';
2493
+ const DEFAULT_TTL_MS = 60 * 1000;
2494
+ function buildKey(name) {
2495
+ if (!name)
2496
+ throw new Error('navigationState: el nombre no puede estar vacio');
2497
+ return KEY_PREFIX + name;
2498
+ }
2499
+ function read(key) {
2500
+ let raw;
2501
+ try {
2502
+ raw = sessionStorage.getItem(key);
2503
+ }
2504
+ catch (_a) {
2505
+ return null;
2506
+ }
2507
+ if (!raw)
2508
+ return null;
2509
+ try {
2510
+ const entry = JSON.parse(raw);
2511
+ const isOldVersion = entry.version !== NAVIGATION_STATE_VERSION;
2512
+ const isExpired = Date.now() > entry.expiresAt;
2513
+ if (isOldVersion || isExpired) {
2514
+ sessionStorage.removeItem(key);
2515
+ return null;
2516
+ }
2517
+ return entry.data;
2518
+ }
2519
+ catch (_b) {
2520
+ sessionStorage.removeItem(key);
2521
+ return null;
2522
+ }
2523
+ }
2524
+ function set(name, data, ttlMs = DEFAULT_TTL_MS) {
2525
+ const entry = {
2526
+ version: NAVIGATION_STATE_VERSION,
2527
+ data,
2528
+ expiresAt: Date.now() + ttlMs,
2529
+ };
2530
+ try {
2531
+ sessionStorage.setItem(buildKey(name), JSON.stringify(entry));
2532
+ }
2533
+ catch (error) {
2534
+ console.error(`navigationState: no se pudo guardar "${name}":`, error);
2535
+ }
2536
+ }
2537
+ function consume(name) {
2538
+ const key = buildKey(name);
2539
+ const data = read(key);
2540
+ try {
2541
+ sessionStorage.removeItem(key);
2542
+ }
2543
+ catch (_a) {
2544
+ // sessionStorage no disponible - no hay nada que borrar
2545
+ }
2546
+ return data;
2547
+ }
2548
+ function peek(name) {
2549
+ return read(buildKey(name));
2550
+ }
2551
+ function remove(name) {
2552
+ try {
2553
+ sessionStorage.removeItem(buildKey(name));
2554
+ }
2555
+ catch (_a) {
2556
+ // sessionStorage no disponible - no hay nada que borrar
2557
+ }
2558
+ }
2559
+ const navigationState = {
2560
+ set,
2561
+ consume,
2562
+ peek,
2563
+ remove,
2564
+ };
2565
+
2407
2566
  /*
2408
2567
  * Public API Surface of libey-ng-component-library
2409
2568
  */
@@ -2412,5 +2571,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
2412
2571
  * Generated bundle index. Do not edit.
2413
2572
  */
2414
2573
 
2415
- export { CpmIndicatorMode, CpmItemType, DEFAULT_THRESHOLDS, IconsModule, LibeyColumnDirective, LibeyNgComponentLibraryComponent, LibeyNgComponentLibraryModule, LibeyNgComponentLibraryService, LibeyNgCpmIndicatorComponent, LibeyNgCpmIndicatorModule, LibeyNgIconsComponent, LibeyNgSignatureComponent, LibeyNgSignatureModule, LibeyNgTableComponent, LibeyNgTableModule, SigWebTablet, ZONE_COLORS };
2574
+ export { Cacheable, CpmIndicatorMode, CpmItemType, DEFAULT_THRESHOLDS, IconsModule, LibeyColumnDirective, LibeyNgComponentLibraryComponent, LibeyNgComponentLibraryModule, LibeyNgComponentLibraryService, LibeyNgCpmIndicatorComponent, LibeyNgCpmIndicatorModule, LibeyNgIconsComponent, LibeyNgSignatureComponent, LibeyNgSignatureModule, LibeyNgTableComponent, LibeyNgTableModule, SigWebTablet, ZONE_COLORS, cache, navigationState };
2416
2575
  //# sourceMappingURL=libey-ng-component-library.js.map