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.
- package/bundles/libey-ng-component-library.umd.js +681 -4
- package/bundles/libey-ng-component-library.umd.js.map +1 -1
- package/esm2015/public-api.js +3 -1
- package/esm2015/utils/Cache/cache-decorator.js +13 -0
- package/esm2015/utils/Cache/cache-helpers.js +11 -0
- package/esm2015/utils/Cache/cache-storage.js +32 -0
- package/esm2015/utils/Cache/cache-sync.js +19 -0
- package/esm2015/utils/Cache/cache-types.js +2 -0
- package/esm2015/utils/Cache/cache.js +17 -0
- package/esm2015/utils/NavigationState/navigation-state.js +75 -0
- package/fesm2015/libey-ng-component-library.js +161 -2
- package/fesm2015/libey-ng-component-library.js.map +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +2 -0
- package/utils/Cache/cache-decorator.d.ts +3 -0
- package/utils/Cache/cache-helpers.d.ts +2 -0
- package/utils/Cache/cache-storage.d.ts +3 -0
- package/utils/Cache/cache-sync.d.ts +2 -0
- package/utils/Cache/cache-types.d.ts +5 -0
- package/utils/Cache/cache.d.ts +11 -0
- package/utils/NavigationState/navigation-state.d.ts +11 -0
package/esm2015/public-api.js
CHANGED
|
@@ -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
|
-
|
|
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
|