@memberjunction/core 5.30.0 → 5.31.0
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/dist/generic/InMemoryLocalStorageProvider.d.ts +12 -6
- package/dist/generic/InMemoryLocalStorageProvider.d.ts.map +1 -1
- package/dist/generic/InMemoryLocalStorageProvider.js +25 -5
- package/dist/generic/InMemoryLocalStorageProvider.js.map +1 -1
- package/dist/generic/QueryCacheManager.js +2 -1
- package/dist/generic/QueryCacheManager.js.map +1 -1
- package/dist/generic/RegisterForStartup.d.ts +26 -0
- package/dist/generic/RegisterForStartup.d.ts.map +1 -1
- package/dist/generic/RegisterForStartup.js +47 -7
- package/dist/generic/RegisterForStartup.js.map +1 -1
- package/dist/generic/authEvaluator.d.ts +115 -11
- package/dist/generic/authEvaluator.d.ts.map +1 -1
- package/dist/generic/authEvaluator.js +151 -24
- package/dist/generic/authEvaluator.js.map +1 -1
- package/dist/generic/baseEngine.d.ts +22 -0
- package/dist/generic/baseEngine.d.ts.map +1 -1
- package/dist/generic/baseEngine.js +30 -2
- package/dist/generic/baseEngine.js.map +1 -1
- package/dist/generic/baseEntity.d.ts +61 -4
- package/dist/generic/baseEntity.d.ts.map +1 -1
- package/dist/generic/baseEntity.js +205 -34
- package/dist/generic/baseEntity.js.map +1 -1
- package/dist/generic/databaseProviderBase.d.ts +8 -0
- package/dist/generic/databaseProviderBase.d.ts.map +1 -1
- package/dist/generic/databaseProviderBase.js +10 -0
- package/dist/generic/databaseProviderBase.js.map +1 -1
- package/dist/generic/entityInfo.d.ts +24 -0
- package/dist/generic/entityInfo.d.ts.map +1 -1
- package/dist/generic/entityInfo.js +29 -3
- package/dist/generic/entityInfo.js.map +1 -1
- package/dist/generic/interfaces.d.ts +59 -5
- package/dist/generic/interfaces.d.ts.map +1 -1
- package/dist/generic/interfaces.js +6 -0
- package/dist/generic/interfaces.js.map +1 -1
- package/dist/generic/localCacheManager.d.ts +38 -3
- package/dist/generic/localCacheManager.d.ts.map +1 -1
- package/dist/generic/localCacheManager.js +156 -46
- package/dist/generic/localCacheManager.js.map +1 -1
- package/dist/generic/metadata.d.ts +2 -1
- package/dist/generic/metadata.d.ts.map +1 -1
- package/dist/generic/metadata.js +45 -42
- package/dist/generic/metadata.js.map +1 -1
- package/dist/generic/metadataUtil.js +1 -1
- package/dist/generic/metadataUtil.js.map +1 -1
- package/dist/generic/permissionInterfaces.d.ts +19 -14
- package/dist/generic/permissionInterfaces.d.ts.map +1 -1
- package/dist/generic/permissionInterfaces.js +3 -3
- package/dist/generic/permissionInterfaces.js.map +1 -1
- package/dist/generic/providerBase.d.ts +26 -39
- package/dist/generic/providerBase.d.ts.map +1 -1
- package/dist/generic/providerBase.js +202 -201
- package/dist/generic/providerBase.js.map +1 -1
- package/dist/generic/queryInfo.js +20 -20
- package/dist/generic/queryInfo.js.map +1 -1
- package/dist/generic/runQuerySQLFilterImplementations.d.ts.map +1 -1
- package/dist/generic/runQuerySQLFilterImplementations.js +30 -9
- package/dist/generic/runQuerySQLFilterImplementations.js.map +1 -1
- package/dist/generic/securityInfo.d.ts +14 -7
- package/dist/generic/securityInfo.d.ts.map +1 -1
- package/dist/generic/securityInfo.js +26 -25
- package/dist/generic/securityInfo.js.map +1 -1
- package/dist/generic/util.d.ts +35 -0
- package/dist/generic/util.d.ts.map +1 -1
- package/dist/generic/util.js +99 -10
- package/dist/generic/util.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/readme.md +50 -6
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
import { ILocalStorageProvider } from './interfaces.js';
|
|
2
2
|
/**
|
|
3
|
-
* In-memory implementation of ILocalStorageProvider.
|
|
3
|
+
* In-memory implementation of {@link ILocalStorageProvider}.
|
|
4
4
|
* Useful for server-side environments (Node.js) where browser storage APIs like
|
|
5
|
-
* localStorage or
|
|
5
|
+
* localStorage or IndexedDB are not available, and as a default fallback wherever
|
|
6
|
+
* a storage provider is required but no persistence is needed.
|
|
6
7
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
8
|
+
* Stores values **by reference** — no serialization. Mirrors the IndexedDB
|
|
9
|
+
* provider's structured-clone semantics (preserves Date, Map, Set, typed arrays,
|
|
10
|
+
* etc.) without the storage round-trip cost.
|
|
11
|
+
*
|
|
12
|
+
* Note: Data is not persisted across process restarts. Suitable for caching
|
|
13
|
+
* scenarios where persistence is not required.
|
|
9
14
|
*/
|
|
10
15
|
export declare class InMemoryLocalStorageProvider implements ILocalStorageProvider {
|
|
11
16
|
private static readonly DEFAULT_CATEGORY;
|
|
@@ -14,8 +19,9 @@ export declare class InMemoryLocalStorageProvider implements ILocalStorageProvid
|
|
|
14
19
|
* Gets or creates a category map
|
|
15
20
|
*/
|
|
16
21
|
private getCategoryMap;
|
|
17
|
-
GetItem(key: string, category?: string): Promise<
|
|
18
|
-
|
|
22
|
+
GetItem<T = unknown>(key: string, category?: string): Promise<T | null>;
|
|
23
|
+
GetItems<T = unknown>(keys: string[], category?: string): Promise<Map<string, T | null>>;
|
|
24
|
+
SetItem<T>(key: string, value: T, category?: string): Promise<void>;
|
|
19
25
|
Remove(key: string, category?: string): Promise<void>;
|
|
20
26
|
ClearCategory(category: string): Promise<void>;
|
|
21
27
|
GetCategoryKeys(category: string): Promise<string[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InMemoryLocalStorageProvider.d.ts","sourceRoot":"","sources":["../../src/generic/InMemoryLocalStorageProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAErD
|
|
1
|
+
{"version":3,"file":"InMemoryLocalStorageProvider.d.ts","sourceRoot":"","sources":["../../src/generic/InMemoryLocalStorageProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAErD;;;;;;;;;;;;GAYG;AACH,qBAAa,4BAA6B,YAAW,qBAAqB;IACtE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAa;IACrD,OAAO,CAAC,QAAQ,CAAgD;IAEhE;;OAEG;IACH,OAAO,CAAC,cAAc;IAUT,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAMvE,QAAQ,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IAcxF,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKnE,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKrD,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK9C,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CAIpE"}
|
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* In-memory implementation of ILocalStorageProvider.
|
|
2
|
+
* In-memory implementation of {@link ILocalStorageProvider}.
|
|
3
3
|
* Useful for server-side environments (Node.js) where browser storage APIs like
|
|
4
|
-
* localStorage or
|
|
4
|
+
* localStorage or IndexedDB are not available, and as a default fallback wherever
|
|
5
|
+
* a storage provider is required but no persistence is needed.
|
|
5
6
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
7
|
+
* Stores values **by reference** — no serialization. Mirrors the IndexedDB
|
|
8
|
+
* provider's structured-clone semantics (preserves Date, Map, Set, typed arrays,
|
|
9
|
+
* etc.) without the storage round-trip cost.
|
|
10
|
+
*
|
|
11
|
+
* Note: Data is not persisted across process restarts. Suitable for caching
|
|
12
|
+
* scenarios where persistence is not required.
|
|
8
13
|
*/
|
|
9
14
|
export class InMemoryLocalStorageProvider {
|
|
10
15
|
constructor() {
|
|
@@ -25,7 +30,22 @@ export class InMemoryLocalStorageProvider {
|
|
|
25
30
|
}
|
|
26
31
|
async GetItem(key, category) {
|
|
27
32
|
const categoryMap = this.getCategoryMap(category || InMemoryLocalStorageProvider.DEFAULT_CATEGORY);
|
|
28
|
-
|
|
33
|
+
const value = categoryMap.get(key);
|
|
34
|
+
return (value === undefined ? null : value);
|
|
35
|
+
}
|
|
36
|
+
async GetItems(keys, category) {
|
|
37
|
+
// In-memory has no batching benefit (Map.get is already O(1)) — just read each key
|
|
38
|
+
// and assemble the result map. Implementing the API for contract uniformity.
|
|
39
|
+
const out = new Map();
|
|
40
|
+
if (keys.length === 0)
|
|
41
|
+
return out;
|
|
42
|
+
const categoryMap = this.getCategoryMap(category || InMemoryLocalStorageProvider.DEFAULT_CATEGORY);
|
|
43
|
+
// Dedupe via Set so duplicate input keys don't produce duplicate map entries
|
|
44
|
+
for (const key of new Set(keys)) {
|
|
45
|
+
const value = categoryMap.get(key);
|
|
46
|
+
out.set(key, value === undefined ? null : value);
|
|
47
|
+
}
|
|
48
|
+
return out;
|
|
29
49
|
}
|
|
30
50
|
async SetItem(key, value, category) {
|
|
31
51
|
const categoryMap = this.getCategoryMap(category || InMemoryLocalStorageProvider.DEFAULT_CATEGORY);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InMemoryLocalStorageProvider.js","sourceRoot":"","sources":["../../src/generic/InMemoryLocalStorageProvider.ts"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"InMemoryLocalStorageProvider.js","sourceRoot":"","sources":["../../src/generic/InMemoryLocalStorageProvider.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,4BAA4B;IAAzC;QAEY,aAAQ,GAAsC,IAAI,GAAG,EAAE,CAAC;IAsDpE,CAAC;aAvD2B,qBAAgB,GAAG,SAAS,AAAZ,CAAa;IAGrD;;OAEG;IACK,cAAc,CAAC,QAAgB;QACnC,MAAM,GAAG,GAAG,QAAQ,IAAI,4BAA4B,CAAC,gBAAgB,CAAC;QACtE,IAAI,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,WAAW,GAAG,IAAI,GAAG,EAAE,CAAC;YACxB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QACxC,CAAC;QACD,OAAO,WAAW,CAAC;IACvB,CAAC;IAEM,KAAK,CAAC,OAAO,CAAc,GAAW,EAAE,QAAiB;QAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,IAAI,4BAA4B,CAAC,gBAAgB,CAAC,CAAC;QACnG,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnC,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAE,KAAW,CAAC,CAAC;IACvD,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAc,IAAc,EAAE,QAAiB;QAChE,mFAAmF;QACnF,6EAA6E;QAC7E,MAAM,GAAG,GAAG,IAAI,GAAG,EAAoB,CAAC;QACxC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,GAAG,CAAC;QAClC,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,IAAI,4BAA4B,CAAC,gBAAgB,CAAC,CAAC;QACnG,6EAA6E;QAC7E,KAAK,MAAM,GAAG,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACnC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAE,KAAW,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAEM,KAAK,CAAC,OAAO,CAAI,GAAW,EAAE,KAAQ,EAAE,QAAiB;QAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,IAAI,4BAA4B,CAAC,gBAAgB,CAAC,CAAC;QACnG,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAChC,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,GAAW,EAAE,QAAiB;QAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,IAAI,4BAA4B,CAAC,gBAAgB,CAAC,CAAC;QACnG,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,QAAgB;QACvC,MAAM,GAAG,GAAG,QAAQ,IAAI,4BAA4B,CAAC,gBAAgB,CAAC;QACtE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAEM,KAAK,CAAC,eAAe,CAAC,QAAgB;QACzC,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,IAAI,4BAA4B,CAAC,gBAAgB,CAAC,CAAC;QACjG,OAAO,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7D,CAAC"}
|
|
@@ -306,7 +306,8 @@ export class QueryCacheManager extends BaseSingleton {
|
|
|
306
306
|
}
|
|
307
307
|
// ── Helpers ─────────────────────────────────────────────────────────────
|
|
308
308
|
FindQueryById(queryId) {
|
|
309
|
-
return Metadata.Provider.Queries.find(
|
|
309
|
+
return Metadata.Provider.Queries.find(// global-provider-ok: QueryCacheManager is a singleton tracking the global query catalog
|
|
310
|
+
(q) => UUIDsEqual(q.ID, queryId));
|
|
310
311
|
}
|
|
311
312
|
computeTTLRemaining(fingerprint, ttlMinutes) {
|
|
312
313
|
const cachedAt = this._cacheTimestamps.get(fingerprint) ?? 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryCacheManager.js","sourceRoot":"","sources":["../../src/generic/QueryCacheManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEnE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,OAAO,iBAAkB,SAAQ,aAAgC;IASnE;QACI,KAAK,EAAE,CAAC;QATJ,sBAAiB,GAAW,EAAE,CAAC;QAEvC,8EAA8E;QACtE,qBAAgB,GAAwB,IAAI,GAAG,EAAE,CAAC;QAE1D,oFAAoF;QAC5E,sBAAiB,GAA6B,IAAI,GAAG,EAAE,CAAC;IAIhE,CAAC;IAED;;OAEG;IACI,MAAM,KAAK,QAAQ;QACtB,OAAO,KAAK,CAAC,WAAW,EAAqB,CAAC;IAClD,CAAC;IAED;;;OAGG;IACI,IAAI,CAAC,gBAAwB;QAChC,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;IAC9C,CAAC;IAED,IAAY,GAAG;QACX,OAAO,iBAAiB,CAAC,QAAQ,CAAC;IACtC,CAAC;IAED,2EAA2E;IAEnE,WAAW,CAAC,OAAe,EAAE,SAAiB,EAAE,MAA+B;QACnF,OAAO,IAAI,CAAC,GAAG,CAAC,2BAA2B,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACpG,CAAC;IAEO,gBAAgB,CACpB,OAAe,EAAE,SAAiB,EAAE,MAA+B,EACnE,QAAgB,EAAE,OAAe;QAEjC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,QAAQ,IAAI,OAAO,EAAE,CAAC;IACzF,CAAC;IAEO,gBAAgB,CAAC,OAAe,EAAE,SAAiB,EAAE,MAA+B;QACxF,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC;IACnE,CAAC;IAEO,gBAAgB,CAAC,GAAW;QAChC,OAAO,aAAa,iBAAiB,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;IACrF,CAAC;IAED,2EAA2E;IAE3E;;;OAGG;IACH,KAAK,CAAC,GAAG,CACL,KAAgB,EAAE,MAA+B;QAEjD,mDAAmD;QACnD,OAAO,IAAI,CAAC;QAEZ;;;;;;;;;UASE;IACN,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CACL,KAAgB,EAAE,MAA+B,EAAE,OAAkB;QAErE,mDAAmD;QACnD,OAAO;QAEP;;;;;;;;;;;;;;UAcE;IACN,CAAC;IAED,2EAA2E;IAE3E;;OAEG;IACH,KAAK,CAAC,QAAQ,CACV,KAAgB,EAAE,MAA+B,EACjD,QAAgB,EAAE,OAAe;QAEjC,mDAAmD;QACnD,OAAO,IAAI,CAAC;QAEZ;;;;;;;;;UASE;IACN,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CACV,KAAgB,EAAE,MAA+B,EACjD,QAAgB,EAAE,OAAe,EAAE,OAAkB;QAErD,mDAAmD;QACnD,OAAO;QAEP;;;;;;;;;;;;;;UAcE;IACN,CAAC;IAED,2EAA2E;IAE3E;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAClB,KAAgB,EAAE,MAA+B;QAEjD,mDAAmD;QACnD,OAAO,IAAI,CAAC;QAEZ;;;;;;;;;UASE;IACN,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAClB,KAAgB,EAAE,MAA+B,EAAE,KAAa;QAEhE,mDAAmD;QACnD,OAAO;QAEP;;;;;;;;;;;;UAYE;IACN,CAAC;IAED,2EAA2E;IAE3E;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,GAAW,EAAE,UAAkB;QAC1C,mDAAmD;QACnD,OAAO,IAAI,CAAC;QAEZ;;;;;;UAME;IACN,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,GAAW,EAAE,UAAkB,EAAE,OAAkB;QAC9D,mDAAmD;QACnD,OAAO;QAEP;;;;;;;;;;;UAWE;IACN,CAAC;IAED,2EAA2E;IAE3E;;OAEG;IACH,KAAK,CAAC,eAAe,CAAC,SAAiB;QACnC,oEAAoE;QACpE,MAAM,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,wBAAwB,CAC1B,KAAgB,EAChB,UAAU,IAAI,GAAG,EAAU;QAE3B,oEAAoE;QACpE,oEAAoE;QACpE,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAAE,OAAO;QAClC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAEtB,MAAM,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEjD,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;QACpC,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtC,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;gBAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACjD,IAAI,QAAQ,EAAE,CAAC;oBACX,MAAM,IAAI,CAAC,wBAAwB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBAC3D,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAED,2EAA2E;IAE3E;;;;;;OAMG;IACH,KAAK,CAAC,kBAAkB,CAAC,UAAkB;QACvC,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACnD,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC5D,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO;QAErD,MAAM,OAAO,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC;QAClC,KAAK,MAAM,EAAE,IAAI,OAAO,EAAE,CAAC;YACvB,MAAM,IAAI,CAAC,GAAG,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC;YAC5C,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACrC,CAAC;QACD,YAAY,CAAC,KAAK,EAAE,CAAC;QAErB,SAAS,CAAC,kCAAkC,OAAO,CAAC,MAAM,8BAA8B,UAAU,GAAG,CAAC,CAAC;IAC3G,CAAC;IAED,2EAA2E;IAEnE,0BAA0B,CAAC,WAAmB,EAAE,KAAgB;QACpE,MAAM,WAAW,GAAG,IAAI,CAAC,+BAA+B,CAAC,KAAK,CAAC,CAAC;QAChE,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC7B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAC7C,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC1C,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;YACtD,CAAC;YACD,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAE,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC7D,CAAC;IACL,CAAC;IAEO,+BAA+B,CACnC,KAAgB,EAAE,UAAU,IAAI,GAAG,EAAU;QAE7C,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAAE,OAAO,EAAE,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAEtB,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,gDAAgD;QAChD,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC;QACrC,IAAI,aAAa,EAAE,CAAC;YAChB,KAAK,MAAM,EAAE,IAAI,aAAa,EAAE,CAAC;gBAC7B,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;oBACZ,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;gBAC7B,CAAC;YACL,CAAC;QACL,CAAC;QAED,+DAA+D;QAC/D,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;QACxC,IAAI,YAAY,EAAE,CAAC;YACf,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;gBAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;gBAC1D,IAAI,QAAQ,EAAE,CAAC;oBACX,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,+BAA+B,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;gBAC9E,CAAC;YACL,CAAC;QACL,CAAC;QAED,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;IAClC,CAAC;IAED,2EAA2E;IAEnE,aAAa,CAAC,OAAe;QACjC,OAAO,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"QueryCacheManager.js","sourceRoot":"","sources":["../../src/generic/QueryCacheManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,6 +23,24 @@ export interface RegisterForStartupOptions {
|
|
|
23
23
|
* Human-readable description for logging/debugging
|
|
24
24
|
*/
|
|
25
25
|
description?: string;
|
|
26
|
+
/**
|
|
27
|
+
* When true, the engine's HandleStartup() is fired during startup but NOT awaited.
|
|
28
|
+
* The shell/app boot sequence proceeds without waiting for the engine to finish loading.
|
|
29
|
+
*
|
|
30
|
+
* Use for engines that aren't required for first paint (e.g., admin-only or
|
|
31
|
+
* feature-specific engines like AIEngineBase, IntegrationEngineBase).
|
|
32
|
+
*
|
|
33
|
+
* **Consumer contract:** code that reads engine state MUST call
|
|
34
|
+
* `await Engine.Instance.EnsureLoaded()` (or `Config(false)`) first. BaseEngine
|
|
35
|
+
* load is idempotent — a concurrent caller waits for the in-flight load promise
|
|
36
|
+
* rather than re-loading, so the cost is just one microtask when the load is
|
|
37
|
+
* already done or already running.
|
|
38
|
+
*
|
|
39
|
+
* Failures during deferred startup are logged according to `severity` but never
|
|
40
|
+
* propagate up — they cannot abort the app boot since boot has already completed.
|
|
41
|
+
* Default: false.
|
|
42
|
+
*/
|
|
43
|
+
deferred?: boolean;
|
|
26
44
|
}
|
|
27
45
|
/**
|
|
28
46
|
* Interface for any singleton class that needs initialization at application startup.
|
|
@@ -205,6 +223,14 @@ export declare class StartupManager extends BaseSingleton<StartupManager> {
|
|
|
205
223
|
* Internal method that performs the actual startup loading work.
|
|
206
224
|
*/
|
|
207
225
|
private ExecuteLoad;
|
|
226
|
+
/**
|
|
227
|
+
* Fires HandleStartup() for each deferred registration in parallel without
|
|
228
|
+
* awaiting. Logs per-engine completion / failure so the dev console shows
|
|
229
|
+
* when background loads finish. Errors are logged at the registration's
|
|
230
|
+
* configured severity but never propagate — the app boot has already
|
|
231
|
+
* returned by the time this runs.
|
|
232
|
+
*/
|
|
233
|
+
private KickOffDeferredEngines;
|
|
208
234
|
/**
|
|
209
235
|
* Resolve the priority from options, defaulting to 100 if not specified.
|
|
210
236
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RegisterForStartup.d.ts","sourceRoot":"","sources":["../../src/generic/RegisterForStartup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"RegisterForStartup.d.ts","sourceRoot":"","sources":["../../src/generic/RegisterForStartup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAIjD;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACtC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;IAEjD;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;;;;;;;;;;;;;OAgBG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IACzB;;;;OAIG;IACH,aAAa,CAAC,WAAW,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtF;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,YAAY,CAAC;AAEzC;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAChC;;OAEG;IACH,WAAW,EAAE,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,YAAY,CAAC;IAEtD;;OAEG;IACH,WAAW,EAAE,MAAM,YAAY,CAAC;IAEhC;;OAEG;IACH,OAAO,EAAE,yBAAyB,CAAC;IAEnC;;OAEG;IACH,QAAQ,CAAC,EAAE,IAAI,CAAC;IAEhB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC;IAEd;;OAEG;IACH,QAAQ,CAAC,EAAE,yBAAyB,CAAC,UAAU,CAAC,CAAC;IAEjD;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC1B;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,OAAO,EAAE,UAAU,EAAE,CAAC;IAEtB;;OAEG;IACH,eAAe,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,UAAU,CAAC,EAAE,KAAK,CAAC;CACtB;AAMD,KAAK,uBAAuB,GAAG,QAAQ,GAAG;IACtC,QAAQ,EAAE,YAAY,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;CAChB,CAAC;AA4BF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,uBAAuB,EAAE,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC;AACzF,wBAAgB,kBAAkB,CAAC,OAAO,CAAC,EAAE,yBAAyB,GAAG,CAAC,CAAC,SAAS,uBAAuB,EAAE,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC;AAuBlI;;;;;;GAMG;AACH,qBAAa,cAAe,SAAQ,aAAa,CAAC,cAAc,CAAC;IAC7D,OAAO,CAAC,cAAc,CAA6B;IACnD,OAAO,CAAC,cAAc,CAAkB;IACxC,OAAO,CAAC,YAAY,CAAuC;IAC3D,OAAO,CAAC,WAAW,CAA8B;IAEjD;;OAEG;;IAKH;;OAEG;IACH,WAAkB,QAAQ,IAAI,cAAc,CAE3C;IAED;;OAEG;IACI,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,mBAAmB,EAAE,UAAU,GAAG,gBAAgB,CAAC,GAAG,IAAI;IAI7F;;OAEG;IACI,gBAAgB,IAAI,mBAAmB,EAAE;IAQhD;;OAEG;IACH,IAAW,aAAa,IAAI,OAAO,CAElC;IAED;;;;;;;;;;;;;;OAcG;IACU,OAAO,CAChB,YAAY,GAAE,OAAe,EAC7B,WAAW,CAAC,EAAE,QAAQ,EACtB,QAAQ,CAAC,EAAE,iBAAiB,GAC7B,OAAO,CAAC,aAAa,CAAC;IA+BzB;;OAEG;YACW,WAAW;IAwGzB;;;;;;OAMG;IACH,OAAO,CAAC,sBAAsB;IA4B9B;;OAEG;IACH,OAAO,CAAC,eAAe;IAIvB;;OAEG;IACH,OAAO,CAAC,eAAe;IAgBvB;;OAEG;IACI,KAAK,IAAI,IAAI;CAMvB;AAMD;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,yBAAyB,CAAC;AAE7D;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,YAAY,CAAC;AAE1C;;GAEG;AACH,eAAO,MAAM,aAAa,2BAAqB,CAAC"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { BaseSingleton } from "@memberjunction/global";
|
|
2
2
|
import { Metadata } from "./metadata.js";
|
|
3
3
|
import { LocalCacheManager } from "./localCacheManager.js";
|
|
4
|
-
import { ProviderBase } from "./providerBase.js";
|
|
5
4
|
/**
|
|
6
5
|
* Internal function that performs the actual registration
|
|
7
6
|
*/
|
|
@@ -133,12 +132,19 @@ export class StartupManager extends BaseSingleton {
|
|
|
133
132
|
// first, init the LocalCacheManager and await its completion
|
|
134
133
|
// Get the storage provider from the metadata provider (uses IndexedDB)
|
|
135
134
|
const cacheStart = Date.now();
|
|
136
|
-
const storageProvider = Metadata.Provider.LocalStorageProvider;
|
|
135
|
+
const storageProvider = (provider ?? Metadata.Provider).LocalStorageProvider;
|
|
137
136
|
await LocalCacheManager.Instance.Initialize(storageProvider);
|
|
138
137
|
console.debug(`LocalCacheManager initialized in ${Date.now() - cacheStart}ms`);
|
|
139
138
|
const startTime = Date.now();
|
|
140
|
-
const
|
|
141
|
-
|
|
139
|
+
const allRegistrations = this.GetRegistrations();
|
|
140
|
+
// Split into synchronous (awaited, gates startup completion) and deferred
|
|
141
|
+
// (fired but not awaited; consumers must call Engine.Instance.EnsureLoaded()
|
|
142
|
+
// before reading state). Deferred engines start AFTER sync engines complete
|
|
143
|
+
// so they don't compete with the shell-render-critical batch for the same
|
|
144
|
+
// GraphQL coalesce window.
|
|
145
|
+
const syncRegistrations = allRegistrations.filter(r => !r.options.deferred);
|
|
146
|
+
const deferredRegistrations = allRegistrations.filter(r => r.options.deferred);
|
|
147
|
+
const groups = this.GroupByPriority(syncRegistrations);
|
|
142
148
|
const results = [];
|
|
143
149
|
for (const group of groups) {
|
|
144
150
|
const groupResults = await Promise.all(group.map(async (reg) => {
|
|
@@ -190,20 +196,54 @@ export class StartupManager extends BaseSingleton {
|
|
|
190
196
|
}
|
|
191
197
|
}
|
|
192
198
|
this._loadCompleted = true;
|
|
193
|
-
// All engines have finished loading — close the fast-start window so
|
|
194
|
-
// subsequent RunViews use normal server-validated caching.
|
|
195
|
-
ProviderBase.ConsumeFastStartupMode();
|
|
196
199
|
// Log per-engine timing summary so slow engines are visible
|
|
197
200
|
const totalMs = Date.now() - startTime;
|
|
198
201
|
const sorted = [...results].sort((a, b) => b.durationMs - a.durationMs);
|
|
199
202
|
const lines = sorted.map(r => ` ${r.success ? '✅' : '❌'} ${r.className}: ${r.durationMs}ms`);
|
|
200
203
|
console.log(`[StartupManager] All engines loaded in ${totalMs}ms:\n${lines.join('\n')}`);
|
|
204
|
+
// Fire deferred engines AFTER sync completes — fire-and-forget, no await.
|
|
205
|
+
// The Promise here is never awaited; consumers reach a deferred engine via
|
|
206
|
+
// its own .EnsureLoaded() call which dedupes against the in-flight load
|
|
207
|
+
// (BaseEngine._loadingSubject handles concurrent callers).
|
|
208
|
+
if (deferredRegistrations.length > 0) {
|
|
209
|
+
this.KickOffDeferredEngines(deferredRegistrations, contextUser, provider);
|
|
210
|
+
}
|
|
201
211
|
return {
|
|
202
212
|
success: results.every(r => r.success || r.severity !== 'fatal'),
|
|
203
213
|
results,
|
|
204
214
|
totalDurationMs: totalMs
|
|
205
215
|
};
|
|
206
216
|
}
|
|
217
|
+
/**
|
|
218
|
+
* Fires HandleStartup() for each deferred registration in parallel without
|
|
219
|
+
* awaiting. Logs per-engine completion / failure so the dev console shows
|
|
220
|
+
* when background loads finish. Errors are logged at the registration's
|
|
221
|
+
* configured severity but never propagate — the app boot has already
|
|
222
|
+
* returned by the time this runs.
|
|
223
|
+
*/
|
|
224
|
+
KickOffDeferredEngines(registrations, contextUser, provider) {
|
|
225
|
+
const names = registrations.map(r => r.constructor.name).join(', ');
|
|
226
|
+
console.log(`[StartupManager] Kicking off ${registrations.length} deferred engine(s) in background: [${names}]`);
|
|
227
|
+
for (const reg of registrations) {
|
|
228
|
+
const loadStart = Date.now();
|
|
229
|
+
// Intentionally no await — consumers will rendezvous via EnsureLoaded()
|
|
230
|
+
reg.getInstance().HandleStartup(contextUser, provider).then(() => {
|
|
231
|
+
reg.loadedAt = new Date();
|
|
232
|
+
reg.loadDurationMs = Date.now() - loadStart;
|
|
233
|
+
console.log(`[StartupManager] ⏱️ Deferred engine loaded: ${reg.constructor.name} (${reg.loadDurationMs}ms)`);
|
|
234
|
+
}).catch((error) => {
|
|
235
|
+
const durationMs = Date.now() - loadStart;
|
|
236
|
+
const severity = reg.options.severity || 'error';
|
|
237
|
+
if (severity === 'error') {
|
|
238
|
+
console.error(`[StartupManager] Deferred engine failed: ${reg.constructor.name} (${durationMs}ms)`, error);
|
|
239
|
+
}
|
|
240
|
+
else if (severity === 'warn') {
|
|
241
|
+
console.warn(`[StartupManager] Deferred engine warning: ${reg.constructor.name} (${durationMs}ms)`, error);
|
|
242
|
+
}
|
|
243
|
+
// 'silent' / 'fatal' — fatal is meaningless for deferred since boot already returned
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
}
|
|
207
247
|
/**
|
|
208
248
|
* Resolve the priority from options, defaulting to 100 if not specified.
|
|
209
249
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RegisterForStartup.js","sourceRoot":"","sources":["../../src/generic/RegisterForStartup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAGvD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"RegisterForStartup.js","sourceRoot":"","sources":["../../src/generic/RegisterForStartup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAGvD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAgKxD;;GAEG;AACH,SAAS,oBAAoB,CACzB,WAAc,EACd,OAAkC;IAElC,+BAA+B;IAC/B,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC7B,WAAW,EAAE,WAAkE;QAC/E,WAAW,EAAE,GAAG,EAAE;YACd,+DAA+D;YAC/D,MAAM,IAAI,GAAG,WAAoD,CAAC;YAClE,IAAI,CAAC,CAAC,UAAU,IAAI,IAAI,CAAC,EAAE,CAAC;gBACxB,MAAM,IAAI,KAAK,CACX,mDAAmD,WAAW,CAAC,IAAI,0CAA0C,CAChH,CAAC;YACN,CAAC;YACD,OAAO,IAAI,CAAC,QAAQ,CAAC;QACzB,CAAC;QACD,OAAO,EAAE,OAAO;KACnB,CAAC,CAAC;IAEH,OAAO,WAAW,CAAC;AACvB,CAAC;AAuCD,MAAM,UAAU,kBAAkB,CAC9B,oBAAoD;IAEpD,4DAA4D;IAC5D,+DAA+D;IAC/D,IAAI,OAAO,oBAAoB,KAAK,UAAU,EAAE,CAAC;QAC7C,8CAA8C;QAC9C,OAAO,oBAAoB,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,oGAAoG;IACpG,4EAA4E;IAC5E,MAAM,OAAO,GAAG,CAAC,oBAAoB,IAAI,EAAE,CAA8B,CAAC;IAC1E,OAAO,UAAS,WAAc;QAC1B,OAAO,oBAAoB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC,CAAC;AACN,CAAC;AAED,+EAA+E;AAC/E,+DAA+D;AAC/D,+EAA+E;AAE/E;;;;;;GAMG;AACH,MAAM,OAAO,cAAe,SAAQ,aAA6B;IAM7D;;OAEG;IACH;QACI,KAAK,EAAE,CAAC;QATJ,mBAAc,GAA0B,EAAE,CAAC;QAC3C,mBAAc,GAAY,KAAK,CAAC;QAChC,iBAAY,GAAkC,IAAI,CAAC;QACnD,gBAAW,GAAyB,IAAI,CAAC;IAOjD,CAAC;IAED;;OAEG;IACI,MAAM,KAAK,QAAQ;QACtB,OAAO,cAAc,CAAC,WAAW,EAAkB,CAAC;IACxD,CAAC;IAED;;OAEG;IACI,QAAQ,CAAC,YAAsE;QAClF,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,YAAmC,CAAC,CAAC;IAClE,CAAC;IAED;;OAEG;IACI,gBAAgB;QACnB,OAAO,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAClD,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAClD,OAAO,SAAS,GAAG,SAAS,CAAC;QACjC,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACH,IAAW,aAAa;QACpB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC/B,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACI,KAAK,CAAC,OAAO,CAChB,eAAwB,KAAK,EAC7B,WAAsB,EACtB,QAA4B;QAE5B,qEAAqE;QACrE,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YAC3D,OAAO,IAAI,CAAC,WAAW,CAAC;QAC5B,CAAC;QAED,8EAA8E;QAC9E,mEAAmE;QACnE,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC,YAAY,CAAC;QAC7B,CAAC;QAED,kCAAkC;QAClC,IAAI,YAAY,EAAE,CAAC;YACf,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAC5B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAC5B,CAAC;QAED,oEAAoE;QACpE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAE5D,IAAI,CAAC;YACD,IAAI,CAAC,WAAW,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC;YAC3C,OAAO,IAAI,CAAC,WAAW,CAAC;QAC5B,CAAC;gBAAS,CAAC;YACP,iFAAiF;YACjF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAC7B,CAAC;IACL,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,WAAW,CAAC,WAAsB,EAAE,QAA4B;QAC1E,6DAA6D;QAC7D,uEAAuE;QACvE,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC9B,MAAM,eAAe,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,oBAAoB,CAAC;QAC7E,MAAM,iBAAiB,CAAC,QAAQ,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;QAC7D,OAAO,CAAC,KAAK,CAAC,oCAAoC,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,IAAI,CAAC,CAAC;QAI/E,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAEjD,0EAA0E;QAC1E,6EAA6E;QAC7E,4EAA4E;QAC5E,0EAA0E;QAC1E,2BAA2B;QAC3B,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC5E,MAAM,qBAAqB,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE/E,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAC;QACvD,MAAM,OAAO,GAAiB,EAAE,CAAC;QAEjC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACzB,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CAClC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAuB,EAAE;gBACzC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAC7B,IAAI,CAAC;oBACD,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;oBACnC,MAAM,QAAQ,CAAC,aAAa,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;oBAEpD,GAAG,CAAC,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC;oBAC1B,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;oBAE5C,OAAO;wBACH,SAAS,EAAE,GAAG,CAAC,WAAW,CAAC,IAAI;wBAC/B,OAAO,EAAE,IAAI;wBACb,UAAU,EAAE,GAAG,CAAC,cAAc;qBACjC,CAAC;gBACN,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACb,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;oBAC1C,OAAO;wBACH,SAAS,EAAE,GAAG,CAAC,WAAW,CAAC,IAAI;wBAC/B,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,KAAc;wBACrB,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO;wBACzC,UAAU;qBACb,CAAC;gBACN,CAAC;YACL,CAAC,CAAC,CACL,CAAC;YAEF,OAAO,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;YAE9B,4CAA4C;YAC5C,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC;YAC3E,IAAI,KAAK,EAAE,CAAC;gBACR,OAAO;oBACH,OAAO,EAAE,KAAK;oBACd,OAAO;oBACP,eAAe,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;oBACvC,UAAU,EAAE,KAAK,CAAC,KAAK;iBAC1B,CAAC;YACN,CAAC;YAED,uBAAuB;YACvB,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;gBAChC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBAClB,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;wBAC9B,OAAO,CAAC,KAAK,CAAC,kCAAkC,MAAM,CAAC,SAAS,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;oBACvF,CAAC;yBAAM,IAAI,MAAM,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;wBACpC,OAAO,CAAC,IAAI,CAAC,oCAAoC,MAAM,CAAC,SAAS,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;oBACxF,CAAC;oBACD,wBAAwB;gBAC5B,CAAC;YACL,CAAC;QACL,CAAC;QAED,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAE3B,4DAA4D;QAC5D,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QACvC,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC;QACxE,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CACzB,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,UAAU,IAAI,CACjE,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,0CAA0C,OAAO,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEzF,0EAA0E;QAC1E,2EAA2E;QAC3E,wEAAwE;QACxE,2DAA2D;QAC3D,IAAI,qBAAqB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,sBAAsB,CAAC,qBAAqB,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;QAC9E,CAAC;QAED,OAAO;YACH,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC;YAChE,OAAO;YACP,eAAe,EAAE,OAAO;SAC3B,CAAC;IACN,CAAC;IAED;;;;;;OAMG;IACK,sBAAsB,CAC1B,aAAoC,EACpC,WAAsB,EACtB,QAA4B;QAE5B,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,gCAAgC,aAAa,CAAC,MAAM,uCAAuC,KAAK,GAAG,CAAC,CAAC;QAEjH,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;YAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC7B,wEAAwE;YACxE,GAAG,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;gBAC7D,GAAG,CAAC,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC;gBAC1B,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;gBAC5C,OAAO,CAAC,GAAG,CAAC,gDAAgD,GAAG,CAAC,WAAW,CAAC,IAAI,KAAK,GAAG,CAAC,cAAc,KAAK,CAAC,CAAC;YAClH,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;gBACxB,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;gBAC1C,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC;gBACjD,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;oBACvB,OAAO,CAAC,KAAK,CAAC,4CAA4C,GAAG,CAAC,WAAW,CAAC,IAAI,KAAK,UAAU,KAAK,EAAE,KAAK,CAAC,CAAC;gBAC/G,CAAC;qBAAM,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;oBAC7B,OAAO,CAAC,IAAI,CAAC,6CAA6C,GAAG,CAAC,WAAW,CAAC,IAAI,KAAK,UAAU,KAAK,EAAE,KAAK,CAAC,CAAC;gBAC/G,CAAC;gBACD,qFAAqF;YACzF,CAAC,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,OAAkC;QACtD,OAAO,OAAO,CAAC,QAAQ,IAAI,GAAG,CAAC;IACnC,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,aAAoC;QACxD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAiC,CAAC;QAExD,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;YAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACnD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACxB,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAC7B,CAAC;YACD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;aAC9B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;aAC3B,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED;;OAEG;IACI,KAAK;QACR,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC5B,CAAC;CACJ;AAgBD;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,kBAAkB,CAAC"}
|
|
@@ -1,25 +1,129 @@
|
|
|
1
|
+
import { IMetadataProvider } from "./interfaces.js";
|
|
1
2
|
import { AuthorizationInfo, UserInfo } from "./securityInfo.js";
|
|
2
3
|
/**
|
|
3
|
-
*
|
|
4
|
+
* Centralised utility for evaluating MemberJunction authorization rules.
|
|
5
|
+
*
|
|
6
|
+
* ## Hierarchy semantics
|
|
7
|
+
* MemberJunction authorizations form a parent → child tree (e.g.
|
|
8
|
+
* "Schema Management" → "Create Entities" → "Create in UDT Schema").
|
|
9
|
+
* Granting a parent authorization to a role implicitly covers every
|
|
10
|
+
* descendant operation — see {@link UserCanExecuteWithAncestors}.
|
|
11
|
+
*
|
|
12
|
+
* ## Usage
|
|
13
|
+
* Prefer {@link UserCanExecuteWithAncestors} for feature-gate checks so that
|
|
14
|
+
* administrators can grant access at whatever granularity fits their policy
|
|
15
|
+
* (root "Schema Management" for all database-designer ops, or a specific leaf
|
|
16
|
+
* for finer control). Use the plain {@link UserCanExecute} only when you
|
|
17
|
+
* explicitly need to verify a direct grant with no hierarchy traversal.
|
|
18
|
+
*
|
|
19
|
+
* ## Multi-provider support
|
|
20
|
+
* Authorizations and CurrentUser are per-provider state, so methods that need
|
|
21
|
+
* the provider accept an optional `provider` parameter that takes precedence
|
|
22
|
+
* over the global `Metadata.Provider`. Pass the provider explicitly when
|
|
23
|
+
* running in multi-provider client setups (parallel server connections);
|
|
24
|
+
* single-provider apps can omit it and rely on the global default.
|
|
4
25
|
*/
|
|
5
26
|
export declare class AuthorizationEvaluator {
|
|
6
27
|
/**
|
|
7
|
-
* Determines if the current user
|
|
8
|
-
*
|
|
9
|
-
*
|
|
28
|
+
* Determines if the **current user** (from `Metadata.CurrentUser`) can
|
|
29
|
+
* execute the given authorization via a direct role match.
|
|
30
|
+
*
|
|
31
|
+
* **Client-side only.** On the server, `Metadata.CurrentUser` is a global
|
|
32
|
+
* singleton — it does not reflect the per-request user context. Use
|
|
33
|
+
* {@link UserCanExecute} with an explicit `user` parameter instead.
|
|
34
|
+
*
|
|
35
|
+
* Throws if no current user is set. Use {@link CurrentUserCanExecuteWithAncestors}
|
|
36
|
+
* for hierarchy-aware checking.
|
|
37
|
+
*
|
|
38
|
+
* @param auth The authorization to check.
|
|
39
|
+
* @param provider Optional metadata provider whose CurrentUser to evaluate against. Falls back to `Metadata.Provider`.
|
|
10
40
|
*/
|
|
11
|
-
CurrentUserCanExecute(auth: AuthorizationInfo): boolean;
|
|
41
|
+
CurrentUserCanExecute(auth: AuthorizationInfo, provider?: IMetadataProvider): boolean;
|
|
12
42
|
/**
|
|
13
|
-
* Determines if
|
|
43
|
+
* Determines if `user` has the given authorization via a **direct role
|
|
44
|
+
* match** only (no parent traversal).
|
|
14
45
|
*
|
|
15
|
-
* @param
|
|
16
|
-
* @param
|
|
17
|
-
* @returns
|
|
46
|
+
* @param auth - The authorization to check.
|
|
47
|
+
* @param user - The user whose roles are examined.
|
|
48
|
+
* @returns `true` if any of the user's roles is directly assigned to `auth`.
|
|
49
|
+
*
|
|
50
|
+
* @see {@link UserCanExecuteWithAncestors} for hierarchy-aware checking.
|
|
18
51
|
*/
|
|
19
52
|
UserCanExecute(auth: AuthorizationInfo, user: UserInfo): boolean;
|
|
20
53
|
/**
|
|
21
|
-
*
|
|
54
|
+
* Determines if the **current user** can execute the given authorization,
|
|
55
|
+
* checking the authorization itself AND every ancestor up the hierarchy.
|
|
56
|
+
*
|
|
57
|
+
* Granting "Schema Management" to a role therefore covers all descendant
|
|
58
|
+
* operations such as "Create in UDT Schema".
|
|
59
|
+
*
|
|
60
|
+
* **Client-side only.** On the server, `Metadata.CurrentUser` is a global
|
|
61
|
+
* singleton — it does not reflect the per-request user context. Use
|
|
62
|
+
* {@link UserCanExecuteWithAncestors} with an explicit `user` parameter instead.
|
|
63
|
+
*
|
|
64
|
+
* Throws if no current user is set.
|
|
65
|
+
*
|
|
66
|
+
* @param auth - The authorization to check (typically a leaf/child node).
|
|
67
|
+
* @param provider Optional metadata provider whose CurrentUser to evaluate against. Falls back to `Metadata.Provider`.
|
|
68
|
+
* @returns `true` if the current user has `auth` or any ancestor auth.
|
|
69
|
+
*/
|
|
70
|
+
CurrentUserCanExecuteWithAncestors(auth: AuthorizationInfo, provider?: IMetadataProvider): boolean;
|
|
71
|
+
/**
|
|
72
|
+
* Determines if `user` can execute `auth` by walking up the parent chain.
|
|
73
|
+
*
|
|
74
|
+
* The check succeeds if the user has a direct role match on `auth`, or on
|
|
75
|
+
* any ancestor (parent, grandparent, …). This respects the MemberJunction
|
|
76
|
+
* convention that "users must have this authorization **or a parent**" to
|
|
77
|
+
* access a feature — granting a broader parent implicitly covers children.
|
|
78
|
+
*
|
|
79
|
+
* A visited-set guards against malformed circular parent references.
|
|
80
|
+
*
|
|
81
|
+
* @param auth - The authorization to check (start of the walk).
|
|
82
|
+
* @param user - The user whose roles are examined.
|
|
83
|
+
* @param allAuthorizations - Optional pre-fetched list; defaults to
|
|
84
|
+
* `Metadata.Authorizations` to avoid repeated
|
|
85
|
+
* singleton lookups in hot paths.
|
|
86
|
+
* @returns `true` if the user passes the check at any level of the hierarchy.
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* ```typescript
|
|
90
|
+
* const evaluator = new AuthorizationEvaluator();
|
|
91
|
+
* const md = new Metadata();
|
|
92
|
+
* const auth = md.Authorizations.find(a => a.Name === 'Create in UDT Schema');
|
|
93
|
+
* // Returns true if user has 'Create in UDT Schema', 'Create Entities',
|
|
94
|
+
* // 'Schema Management', or any other ancestor.
|
|
95
|
+
* const allowed = evaluator.UserCanExecuteWithAncestors(auth, contextUser);
|
|
96
|
+
* ```
|
|
97
|
+
*/
|
|
98
|
+
UserCanExecuteWithAncestors(auth: AuthorizationInfo, user: UserInfo, allAuthorizations?: AuthorizationInfo[]): boolean;
|
|
99
|
+
/**
|
|
100
|
+
* Returns every authorization that `user` can execute via a **direct role
|
|
101
|
+
* match** (no ancestor traversal).
|
|
102
|
+
*
|
|
103
|
+
* @param user The user to evaluate.
|
|
104
|
+
* @param provider Optional metadata provider whose Authorizations list to scan. Falls back to `Metadata.Provider`.
|
|
105
|
+
* @throws if `user` or `user.UserRoles` is not provided.
|
|
106
|
+
*/
|
|
107
|
+
GetUserAuthorizations(user: UserInfo, provider?: IMetadataProvider): AuthorizationInfo[];
|
|
108
|
+
/**
|
|
109
|
+
* Returns every authorization that `user` can execute, including those
|
|
110
|
+
* reachable via ancestor grants.
|
|
111
|
+
*
|
|
112
|
+
* Useful for building a complete "effective permission set" for a user
|
|
113
|
+
* without needing to know the exact hierarchy in advance.
|
|
114
|
+
*
|
|
115
|
+
* @param user The user to evaluate.
|
|
116
|
+
* @param provider Optional metadata provider whose Authorizations list to scan. Falls back to `Metadata.Provider`.
|
|
117
|
+
*/
|
|
118
|
+
GetUserAuthorizationsWithAncestors(user: UserInfo, provider?: IMetadataProvider): AuthorizationInfo[];
|
|
119
|
+
/**
|
|
120
|
+
* Recursive core of the hierarchy walk.
|
|
121
|
+
*
|
|
122
|
+
* @param auth - Current node being evaluated.
|
|
123
|
+
* @param user - The user to check.
|
|
124
|
+
* @param all - Full authorization list (passed to avoid repeat lookups).
|
|
125
|
+
* @param visited - Accumulated set of already-visited IDs (cycle guard).
|
|
22
126
|
*/
|
|
23
|
-
|
|
127
|
+
private static walkAuthHierarchy;
|
|
24
128
|
}
|
|
25
129
|
//# sourceMappingURL=authEvaluator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authEvaluator.d.ts","sourceRoot":"","sources":["../../src/generic/authEvaluator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"authEvaluator.d.ts","sourceRoot":"","sources":["../../src/generic/authEvaluator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,sBAAsB;IAI/B;;;;;;;;;;;;;OAaG;IACI,qBAAqB,CAAC,IAAI,EAAE,iBAAiB,EAAE,QAAQ,CAAC,EAAE,iBAAiB,GAAG,OAAO;IAQ5F;;;;;;;;;OASG;IACI,cAAc,CAAC,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO;IAMvE;;;;;;;;;;;;;;;;OAgBG;IACI,kCAAkC,CAAC,IAAI,EAAE,iBAAiB,EAAE,QAAQ,CAAC,EAAE,iBAAiB,GAAG,OAAO;IAQzG;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACI,2BAA2B,CAC9B,IAAI,EAAE,iBAAiB,EACvB,IAAI,EAAE,QAAQ,EACd,iBAAiB,CAAC,EAAE,iBAAiB,EAAE,GACxC,OAAO;IAOV;;;;;;;OAOG;IACI,qBAAqB,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,iBAAiB,GAAG,iBAAiB,EAAE;IAQ/F;;;;;;;;;OASG;IACI,kCAAkC,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,iBAAiB,GAAG,iBAAiB,EAAE;IAW5G;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;CAmBnC"}
|