@owlmeans/mongo-resource 0.1.18-rc.9 → 0.1.18
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/README.md +232 -71
- package/agent-meta/manifest.json +3 -3
- package/agent-meta/skills/mongo-resource/SKILL.md +89 -44
- package/build/consts.d.ts +8 -4
- package/build/consts.d.ts.map +1 -1
- package/build/consts.js +8 -4
- package/build/consts.js.map +1 -1
- package/build/declarations/types.d.ts +12 -0
- package/build/declarations/types.d.ts.map +1 -0
- package/build/declarations/types.js +2 -0
- package/build/declarations/types.js.map +1 -0
- package/build/declarations.d.ts +4 -9
- package/build/declarations.d.ts.map +1 -1
- package/build/declarations.js +28 -21
- package/build/declarations.js.map +1 -1
- package/build/index.d.ts +4 -0
- package/build/index.d.ts.map +1 -1
- package/build/index.js +1 -0
- package/build/index.js.map +1 -1
- package/build/resource.d.ts +2 -2
- package/build/resource.d.ts.map +1 -1
- package/build/resource.js +100 -130
- package/build/resource.js.map +1 -1
- package/build/types.d.ts +11 -5
- package/build/types.d.ts.map +1 -1
- package/build/types.local.d.ts +4 -0
- package/build/types.local.d.ts.map +1 -0
- package/build/types.local.js +2 -0
- package/build/types.local.js.map +1 -0
- package/build/utils/consts.local.d.ts +25 -0
- package/build/utils/consts.local.d.ts.map +1 -0
- package/build/utils/consts.local.js +31 -0
- package/build/utils/consts.local.js.map +1 -0
- package/build/utils/criteria/types.d.ts +27 -0
- package/build/utils/criteria/types.d.ts.map +1 -0
- package/build/utils/criteria/types.js +2 -0
- package/build/utils/criteria/types.js.map +1 -0
- package/build/utils/criteria.d.ts +9 -0
- package/build/utils/criteria.d.ts.map +1 -0
- package/build/utils/criteria.js +204 -0
- package/build/utils/criteria.js.map +1 -0
- package/build/utils/index.d.ts +1 -0
- package/build/utils/index.d.ts.map +1 -1
- package/build/utils/index.js +1 -0
- package/build/utils/index.js.map +1 -1
- package/build/utils/indexes/types.d.ts +19 -0
- package/build/utils/indexes/types.d.ts.map +1 -0
- package/build/utils/indexes/types.js +2 -0
- package/build/utils/indexes/types.js.map +1 -0
- package/build/utils/indexes.d.ts +3 -4
- package/build/utils/indexes.d.ts.map +1 -1
- package/build/utils/indexes.js +44 -28
- package/build/utils/indexes.js.map +1 -1
- package/build/utils/life-cycle/types.d.ts +36 -0
- package/build/utils/life-cycle/types.d.ts.map +1 -0
- package/build/utils/life-cycle/types.js +2 -0
- package/build/utils/life-cycle/types.js.map +1 -0
- package/build/utils/life-cycle.d.ts +3 -30
- package/build/utils/life-cycle.d.ts.map +1 -1
- package/build/utils/life-cycle.js +96 -112
- package/build/utils/life-cycle.js.map +1 -1
- package/build/utils/migrations.d.ts.map +1 -1
- package/build/utils/migrations.js +1 -2
- package/build/utils/migrations.js.map +1 -1
- package/build/utils/name.d.ts.map +1 -1
- package/build/utils/name.js +1 -5
- package/build/utils/name.js.map +1 -1
- package/build/utils/refs/types.d.ts +78 -0
- package/build/utils/refs/types.d.ts.map +1 -0
- package/build/utils/refs/types.js +2 -0
- package/build/utils/refs/types.js.map +1 -0
- package/build/utils/refs.d.ts +13 -67
- package/build/utils/refs.d.ts.map +1 -1
- package/build/utils/refs.js +115 -158
- package/build/utils/refs.js.map +1 -1
- package/build/utils/schema/types.d.ts +16 -0
- package/build/utils/schema/types.d.ts.map +1 -0
- package/build/utils/schema/types.js +2 -0
- package/build/utils/schema/types.js.map +1 -0
- package/build/utils/schema.d.ts +3 -11
- package/build/utils/schema.d.ts.map +1 -1
- package/build/utils/schema.js +86 -88
- package/build/utils/schema.js.map +1 -1
- package/build/utils/types.local.d.ts +13 -0
- package/build/utils/types.local.d.ts.map +1 -0
- package/build/utils/types.local.js +2 -0
- package/build/utils/types.local.js.map +1 -0
- package/package.json +10 -9
- package/src/consts.ts +8 -4
- package/src/declarations/types.ts +12 -0
- package/src/declarations.ts +32 -28
- package/src/index.ts +4 -0
- package/src/resource.ts +121 -163
- package/src/types.local.ts +5 -0
- package/src/types.ts +13 -7
- package/src/utils/consts.local.ts +35 -0
- package/src/utils/criteria/types.ts +28 -0
- package/src/utils/criteria.ts +235 -0
- package/src/utils/index.ts +1 -0
- package/src/utils/indexes/types.ts +20 -0
- package/src/utils/indexes.ts +48 -28
- package/src/utils/life-cycle/types.ts +39 -0
- package/src/utils/life-cycle.ts +120 -134
- package/src/utils/migrations.ts +3 -17
- package/src/utils/name.ts +1 -6
- package/src/utils/refs/types.ts +79 -0
- package/src/utils/refs.ts +147 -189
- package/src/utils/schema/types.ts +17 -0
- package/src/utils/schema.ts +92 -91
- package/src/utils/types.local.ts +13 -0
- package/tests/context.ts +3 -3
- package/tests/criteria.spec.ts +116 -0
- package/tests/crud.spec.ts +2 -2
- package/tests/indexes.spec.ts +42 -0
- package/tests/refs.spec.ts +5 -3
package/build/consts.d.ts
CHANGED
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
export declare const DEFAULT_DB_ALIAS = "mongo";
|
|
2
|
-
|
|
2
|
+
/**
|
|
3
|
+
* Page size a `list` call gets when it asks for none. Mongo cannot afford an unbounded read
|
|
4
|
+
* of a collection by omission, so paging is the default here — `list(where, { size: 0 })`
|
|
5
|
+
* asks for the whole result set, explicitly and greppably.
|
|
6
|
+
*/
|
|
7
|
+
export declare const DEFAULT_PAGE_SIZE = 100;
|
|
3
8
|
/**
|
|
4
9
|
* Collection that records which code-registered migrations have already been applied.
|
|
5
10
|
*
|
|
6
|
-
* One ledger per database, which is the right boundary:
|
|
7
|
-
*
|
|
8
|
-
* data and dropping the database drops the ledger with it.
|
|
11
|
+
* One ledger per database, which is the right boundary: it sits beside the data its
|
|
12
|
+
* migrations changed, so dropping the database drops the ledger with it.
|
|
9
13
|
*/
|
|
10
14
|
export declare const DEF_MIGRATIONS_COLLECTION = "_owlmeans_migrations";
|
|
11
15
|
/**
|
package/build/consts.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,gBAAgB,UAAU,CAAA;AAEvC,eAAO,MAAM,iBAAiB,
|
|
1
|
+
{"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,gBAAgB,UAAU,CAAA;AAEvC;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,MAAM,CAAA;AAEpC;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,yBAAyB,CAAA;AAE/D;;;GAGG;AACH,eAAO,MAAM,kBAAkB,QAAQ,CAAA;AAEvC,eAAO,MAAM,kBAAkB,MAAM,CAAA;AAErC,yFAAyF;AACzF,eAAO,MAAM,mBAAmB,QAAQ,CAAA"}
|
package/build/consts.js
CHANGED
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
export const DEFAULT_DB_ALIAS = 'mongo';
|
|
2
|
-
|
|
2
|
+
/**
|
|
3
|
+
* Page size a `list` call gets when it asks for none. Mongo cannot afford an unbounded read
|
|
4
|
+
* of a collection by omission, so paging is the default here — `list(where, { size: 0 })`
|
|
5
|
+
* asks for the whole result set, explicitly and greppably.
|
|
6
|
+
*/
|
|
7
|
+
export const DEFAULT_PAGE_SIZE = 100;
|
|
3
8
|
/**
|
|
4
9
|
* Collection that records which code-registered migrations have already been applied.
|
|
5
10
|
*
|
|
6
|
-
* One ledger per database, which is the right boundary:
|
|
7
|
-
*
|
|
8
|
-
* data and dropping the database drops the ledger with it.
|
|
11
|
+
* One ledger per database, which is the right boundary: it sits beside the data its
|
|
12
|
+
* migrations changed, so dropping the database drops the ledger with it.
|
|
9
13
|
*/
|
|
10
14
|
export const DEF_MIGRATIONS_COLLECTION = '_owlmeans_migrations';
|
|
11
15
|
/**
|
package/build/consts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consts.js","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAA;AAEvC,MAAM,CAAC,MAAM,iBAAiB,GAAG,
|
|
1
|
+
{"version":3,"file":"consts.js","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAA;AAEvC;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAA;AAEpC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAAsB,CAAA;AAE/D;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,CAAA;AAEvC,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAA;AAErC,yFAAyF;AACzF,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { MongoDeclaration } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* The per-alias declaration store every mongo resource maker reads and extends — migrations and
|
|
4
|
+
* declared references, keyed by resource alias.
|
|
5
|
+
*/
|
|
6
|
+
export interface MongoDeclarationHelper {
|
|
7
|
+
/** The declaration of an alias, created empty on first use. */
|
|
8
|
+
getDeclaration: (alias: string) => MongoDeclaration;
|
|
9
|
+
/** Testing seam — drops every declaration so a spec can redeclare a resource from scratch. */
|
|
10
|
+
resetDeclarations: (alias?: string) => void;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/declarations/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAEnD;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,+DAA+D;IAC/D,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,gBAAgB,CAAA;IACnD,8FAA8F;IAC9F,iBAAiB,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;CAC5C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/declarations/types.ts"],"names":[],"mappings":""}
|
package/build/declarations.d.ts
CHANGED
|
@@ -1,11 +1,6 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
3
|
-
export
|
|
4
|
-
|
|
5
|
-
/** Declared ObjectId references, keyed by field. Registered via `resource.reference()`. */
|
|
6
|
-
references: Map<string, MongoReference>;
|
|
7
|
-
}
|
|
8
|
-
export declare const getDeclaration: (alias: string) => MongoDeclaration;
|
|
9
|
-
/** Testing seam — drops every declaration so a spec can redeclare a resource from scratch. */
|
|
1
|
+
import type { MongoDeclarationHelper } from './declarations/types.js';
|
|
2
|
+
export declare const createMongoDeclarationHelper: () => MongoDeclarationHelper;
|
|
3
|
+
export declare const mongoDeclarationHelper: MongoDeclarationHelper;
|
|
4
|
+
/** @deprecated compat:factory-refactor — use `mongoDeclarationHelper.resetDeclarations(…)` */
|
|
10
5
|
export declare const resetDeclarations: (alias?: string) => void;
|
|
11
6
|
//# sourceMappingURL=declarations.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"declarations.d.ts","sourceRoot":"","sources":["../src/declarations.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"declarations.d.ts","sourceRoot":"","sources":["../src/declarations.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAiBrE,eAAO,MAAM,4BAA4B,QAAO,sBAqB/C,CAAA;AAED,eAAO,MAAM,sBAAsB,wBAAiC,CAAA;AAEpE,8FAA8F;AAC9F,eAAO,MAAM,iBAAiB,WAAY,MAAM,KAAG,IAAuD,CAAA"}
|
package/build/declarations.js
CHANGED
|
@@ -2,28 +2,35 @@ import { createMigrationRegistry } from '@owlmeans/resource';
|
|
|
2
2
|
/**
|
|
3
3
|
* Per-alias migration store, held at module scope rather than on the resource object.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
5
|
+
* A maker may run more than once for the same alias — a custom maker wrapping the built-in
|
|
6
|
+
* one, a maker called again by an app or a spec. Keying the declarations by alias makes
|
|
7
|
+
* that a no-op: every run reads and extends the same registry, so nothing a caller declared
|
|
8
|
+
* by chaining onto an earlier resource object is lost. Losing a migration is silent — the
|
|
9
|
+
* data transformation simply never runs — which is why the store cannot live on the object.
|
|
10
|
+
*
|
|
11
|
+
* Process-wide for the same reason: it stays outside the factory, so every helper built from it
|
|
12
|
+
* reads the one store.
|
|
11
13
|
*/
|
|
12
14
|
const declarations = new Map();
|
|
13
|
-
export const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
15
|
+
export const createMongoDeclarationHelper = () => {
|
|
16
|
+
const getDeclaration = (alias) => {
|
|
17
|
+
let declaration = declarations.get(alias);
|
|
18
|
+
if (declaration == null) {
|
|
19
|
+
declaration = { migrations: createMigrationRegistry(), references: new Map() };
|
|
20
|
+
declarations.set(alias, declaration);
|
|
21
|
+
}
|
|
22
|
+
return declaration;
|
|
23
|
+
};
|
|
24
|
+
const resetDeclarations = (alias) => {
|
|
25
|
+
if (alias == null) {
|
|
26
|
+
declarations.clear();
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
declarations.delete(alias);
|
|
30
|
+
};
|
|
31
|
+
return { getDeclaration, resetDeclarations };
|
|
28
32
|
};
|
|
33
|
+
export const mongoDeclarationHelper = createMongoDeclarationHelper();
|
|
34
|
+
/** @deprecated compat:factory-refactor — use `mongoDeclarationHelper.resetDeclarations(…)` */
|
|
35
|
+
export const resetDeclarations = (alias) => mongoDeclarationHelper.resetDeclarations(alias);
|
|
29
36
|
//# sourceMappingURL=declarations.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"declarations.js","sourceRoot":"","sources":["../src/declarations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"declarations.js","sourceRoot":"","sources":["../src/declarations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAA;AAK5D;;;;;;;;;;;GAWG;AACH,MAAM,YAAY,GAAkC,IAAI,GAAG,EAAE,CAAA;AAE7D,MAAM,CAAC,MAAM,4BAA4B,GAAG,GAA2B,EAAE;IACvE,MAAM,cAAc,GAAG,CAAC,KAAa,EAAoB,EAAE;QACzD,IAAI,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACzC,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;YACxB,WAAW,GAAG,EAAE,UAAU,EAAE,uBAAuB,EAAW,EAAE,UAAU,EAAE,IAAI,GAAG,EAAE,EAAE,CAAA;YACvF,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,CAAA;QACtC,CAAC;QAED,OAAO,WAAW,CAAA;IACpB,CAAC,CAAA;IAED,MAAM,iBAAiB,GAAG,CAAC,KAAc,EAAQ,EAAE;QACjD,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAClB,YAAY,CAAC,KAAK,EAAE,CAAA;YAEpB,OAAM;QACR,CAAC;QACD,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAC5B,CAAC,CAAA;IAED,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,CAAA;AAC9C,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG,4BAA4B,EAAE,CAAA;AAEpE,8FAA8F;AAC9F,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,KAAc,EAAQ,EAAE,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAA"}
|
package/build/index.d.ts
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
export type * from './types.js';
|
|
2
2
|
export * from './consts.js';
|
|
3
3
|
export * from './declarations.js';
|
|
4
|
+
export type * from './declarations/types.js';
|
|
4
5
|
export * from './utils/migrations.js';
|
|
5
6
|
export * from './utils/refs.js';
|
|
7
|
+
export type * from './utils/refs/types.js';
|
|
8
|
+
export * from './utils/criteria.js';
|
|
9
|
+
export type * from './utils/criteria/types.js';
|
|
6
10
|
export * from './resource.js';
|
|
7
11
|
export * from './helper.js';
|
|
8
12
|
//# sourceMappingURL=index.d.ts.map
|
package/build/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,mBAAmB,YAAY,CAAA;AAC/B,cAAc,aAAa,CAAA;AAC3B,cAAc,mBAAmB,CAAA;AACjC,cAAc,uBAAuB,CAAA;AACrC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,mBAAmB,YAAY,CAAA;AAC/B,cAAc,aAAa,CAAA;AAC3B,cAAc,mBAAmB,CAAA;AACjC,mBAAmB,yBAAyB,CAAA;AAC5C,cAAc,uBAAuB,CAAA;AACrC,cAAc,iBAAiB,CAAA;AAC/B,mBAAmB,uBAAuB,CAAA;AAC1C,cAAc,qBAAqB,CAAA;AACnC,mBAAmB,2BAA2B,CAAA;AAC9C,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA"}
|
package/build/index.js
CHANGED
|
@@ -2,6 +2,7 @@ export * from './consts.js';
|
|
|
2
2
|
export * from './declarations.js';
|
|
3
3
|
export * from './utils/migrations.js';
|
|
4
4
|
export * from './utils/refs.js';
|
|
5
|
+
export * from './utils/criteria.js';
|
|
5
6
|
export * from './resource.js';
|
|
6
7
|
export * from './helper.js';
|
|
7
8
|
//# sourceMappingURL=index.js.map
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,aAAa,CAAA;AAC3B,cAAc,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,aAAa,CAAA;AAC3B,cAAc,mBAAmB,CAAA;AAEjC,cAAc,uBAAuB,CAAA;AACrC,cAAc,iBAAiB,CAAA;AAE/B,cAAc,qBAAqB,CAAA;AAEnC,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA"}
|
package/build/resource.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { type ResourceRecord } from '@owlmeans/resource';
|
|
2
2
|
import type { MongoResource } from './types.js';
|
|
3
|
-
export declare const makeMongoResource: <R extends ResourceRecord, T extends MongoResource<R> = MongoResource<R>>(alias: string, dbAlias?: string, serviceAlias?: string,
|
|
3
|
+
export declare const makeMongoResource: <R extends ResourceRecord, T extends MongoResource<R> = MongoResource<R>>(alias: string, dbAlias?: string, serviceAlias?: string, collectionName?: string) => T;
|
|
4
4
|
//# sourceMappingURL=resource.d.ts.map
|
package/build/resource.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../src/resource.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../src/resource.ts"],"names":[],"mappings":"AAEA,OAAO,EAAuF,KAAK,cAAc,EAAsH,MAAM,oBAAoB,CAAA;AACjQ,OAAO,KAAK,EAAmD,aAAa,EAAW,MAAM,YAAY,CAAA;AAWzG,eAAO,MAAM,iBAAiB,GAC5B,CAAC,SAAS,cAAc,EAAE,CAAC,SAAS,aAAa,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,SAEhE,MAAM,YAAW,MAAM,iBAAmC,MAAM,mBACtD,MAAM,KACtB,CAsRF,CAAA"}
|
package/build/resource.js
CHANGED
|
@@ -1,81 +1,101 @@
|
|
|
1
1
|
import { appendContextual, assertContext } from '@owlmeans/context';
|
|
2
2
|
import { DEFAULT_DB_ALIAS, DEFAULT_PAGE_SIZE } from './consts.js';
|
|
3
|
-
import { MigrationStage } from '@owlmeans/resource';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
3
|
+
import { MigrationStage, MisshapedRecord, RecordExists, UnknownRecordError, UnsupportedArgumentError, RecordUpdateFailed } from '@owlmeans/resource';
|
|
4
|
+
import { makeMongoLifeCycleUtils } from './utils/life-cycle.js';
|
|
5
|
+
import { mongoDeclarationHelper } from './declarations.js';
|
|
6
6
|
import { ObjectId } from 'mongodb';
|
|
7
|
-
import { MisshapedRecord, RecordExists, UnknownRecordError, UnsupportedArgumentError, RecordUpdateFailed, prepareListOptions } from '@owlmeans/resource';
|
|
8
7
|
import { getSchemaSecureFeilds } from './helper.js';
|
|
9
|
-
import {
|
|
10
|
-
|
|
8
|
+
import { mongoCriteriaHelper } from './utils/criteria.js';
|
|
9
|
+
import { makeRefMigration, mongoRefHelper } from './utils/refs.js';
|
|
10
|
+
export const makeMongoResource = (alias, dbAlias = DEFAULT_DB_ALIAS, serviceAlias = DEFAULT_DB_ALIAS, collectionName) => {
|
|
11
11
|
const location = `mongo-resource:${alias}`;
|
|
12
12
|
/**
|
|
13
13
|
* Live view — references may be declared after the resource is built, and the
|
|
14
|
-
* declarations
|
|
14
|
+
* declarations live at module scope keyed by alias, so a second maker run for the
|
|
15
|
+
* same alias sees everything already declared for it.
|
|
15
16
|
*/
|
|
16
|
-
const refs = () => getDeclaration(alias).references;
|
|
17
|
+
const refs = () => mongoDeclarationHelper.getDeclaration(alias).references;
|
|
17
18
|
const demarshal = (record) => {
|
|
18
19
|
record.id = record._id instanceof ObjectId ? record._id.toString() : record._id;
|
|
19
20
|
delete record._id;
|
|
20
|
-
return demarshalRefs(record, refs());
|
|
21
|
+
return mongoRefHelper.demarshalRefs(record, refs());
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* A read addressed either way. An id is matched tolerantly: a string that is not a mongo id
|
|
25
|
+
* finds nothing, where handing it to `ObjectId` would raise a driver error at a call site
|
|
26
|
+
* that only asked whether the record exists.
|
|
27
|
+
*/
|
|
28
|
+
const filterOf = (idOrWhere) => typeof idOrWhere === 'string'
|
|
29
|
+
? mongoRefHelper.identityCriteria('id', idOrWhere, refs())
|
|
30
|
+
: mongoCriteriaHelper.criteriaToFilter(idOrWhere, refs());
|
|
31
|
+
/**
|
|
32
|
+
* The single implementation both overloads of `load` and `get` stand on — an id and a
|
|
33
|
+
* criteria object differ only in how the filter is built.
|
|
34
|
+
*/
|
|
35
|
+
const loadOne = async (idOrWhere, opts) => {
|
|
36
|
+
const sort = mongoCriteriaHelper.sortToMongo(opts?.sort);
|
|
37
|
+
const record = await resource.collection.findOne(filterOf(idOrWhere), sort != null ? { sort } : {});
|
|
38
|
+
return record != null ? demarshal(record) : null;
|
|
21
39
|
};
|
|
22
40
|
const resource = appendContextual(alias, {
|
|
23
|
-
get: async (
|
|
24
|
-
const record = await
|
|
41
|
+
get: (async (idOrWhere, opts) => {
|
|
42
|
+
const record = await loadOne(idOrWhere, opts);
|
|
25
43
|
if (record == null) {
|
|
26
|
-
throw new UnknownRecordError(
|
|
44
|
+
throw new UnknownRecordError(typeof idOrWhere === 'string' ? idOrWhere : JSON.stringify(idOrWhere));
|
|
27
45
|
}
|
|
28
46
|
return record;
|
|
29
|
-
},
|
|
30
|
-
load:
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
47
|
+
}),
|
|
48
|
+
load: loadOne,
|
|
49
|
+
list: async (where, opts) => {
|
|
50
|
+
const filter = mongoCriteriaHelper.criteriaToFilter(where, refs());
|
|
51
|
+
const total = await resource.collection.countDocuments(filter);
|
|
52
|
+
/** `size: 0` is the explicit ask for everything; an omitted size pages by default. */
|
|
53
|
+
const size = opts?.size ?? DEFAULT_PAGE_SIZE;
|
|
54
|
+
const page = opts?.page ?? 0;
|
|
55
|
+
if (size < 1 && page !== 0) {
|
|
56
|
+
/** Nothing to page through — answering page 0 instead would be a silent wrong answer. */
|
|
57
|
+
throw new UnsupportedArgumentError('page-without-size');
|
|
34
58
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
throw new UnsupportedArgumentError('ttl');
|
|
59
|
+
if (total === 0) {
|
|
60
|
+
return size > 0 ? { items: [], total, page, size } : { items: [], total };
|
|
38
61
|
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
62
|
+
let cursor = resource.collection.find(filter);
|
|
63
|
+
const sort = mongoCriteriaHelper.sortToMongo(opts?.sort);
|
|
64
|
+
if (sort != null) {
|
|
65
|
+
cursor = cursor.sort(sort);
|
|
42
66
|
}
|
|
43
|
-
|
|
67
|
+
if (size > 0) {
|
|
68
|
+
cursor = cursor.skip(page * size).limit(size);
|
|
69
|
+
}
|
|
70
|
+
const items = (await cursor.toArray()).map(item => demarshal({ ...item }));
|
|
71
|
+
return size > 0 ? { items, total, page, size } : { items, total };
|
|
44
72
|
},
|
|
73
|
+
count: async (where) => await resource.collection.countDocuments(mongoCriteriaHelper.criteriaToFilter(where, refs())),
|
|
45
74
|
update: async (record, opts) => {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
field = opts;
|
|
49
|
-
}
|
|
50
|
-
else if (typeof opts === 'object') {
|
|
51
|
-
field = opts.field ?? field;
|
|
52
|
-
}
|
|
53
|
-
if (field !== '_id' && record[field] == null) {
|
|
54
|
-
throw new MisshapedRecord('no-field-value');
|
|
75
|
+
if (opts?.ttl != null) {
|
|
76
|
+
throw new UnsupportedArgumentError('ttl');
|
|
55
77
|
}
|
|
56
|
-
const id =
|
|
78
|
+
const id = record.id;
|
|
57
79
|
if (id == null) {
|
|
58
80
|
throw new MisshapedRecord('id');
|
|
59
81
|
}
|
|
60
|
-
|
|
61
|
-
const
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
82
|
+
/** Absence is an error, not a silent no-op — `replaceOne` would just match nothing. */
|
|
83
|
+
const original = await resource.get(id);
|
|
84
|
+
const replace = { ...record };
|
|
85
|
+
/**
|
|
86
|
+
* Documents never store `id`, and a replacement that omits `_id` keeps the one the
|
|
87
|
+
* document already carries — so the whole record is replaced without touching its key.
|
|
88
|
+
*/
|
|
89
|
+
delete replace.id;
|
|
90
|
+
const result = await resource.collection.replaceOne(mongoRefHelper.identityCriteria('id', original.id, refs()), _prepareValues(replace, resource.schema, refs()));
|
|
66
91
|
if (!result.acknowledged) {
|
|
67
|
-
throw new RecordUpdateFailed(
|
|
68
|
-
}
|
|
69
|
-
return resource.get(id, opts);
|
|
70
|
-
},
|
|
71
|
-
save: async (record, opts) => {
|
|
72
|
-
const id = record.id;
|
|
73
|
-
if (id != null || (typeof opts === 'string' && record[opts] != null) || (typeof opts === 'object' && ("field" in opts)
|
|
74
|
-
&& record[opts.field] != null)) {
|
|
75
|
-
return resource.update(record, opts);
|
|
92
|
+
throw new RecordUpdateFailed(`id:${id}`);
|
|
76
93
|
}
|
|
77
|
-
return resource.
|
|
94
|
+
return await resource.get(original.id);
|
|
78
95
|
},
|
|
96
|
+
save: async (record, opts) => record.id != null
|
|
97
|
+
? await resource.update(record, opts)
|
|
98
|
+
: await resource.create(record, opts),
|
|
79
99
|
getDefaults: () => {
|
|
80
100
|
const schema = resource.schema;
|
|
81
101
|
if (schema == null) {
|
|
@@ -95,7 +115,7 @@ export const makeMongoResource = (alias, dbAlias = DEFAULT_DB_ALIAS, serviceAlia
|
|
|
95
115
|
if (record.id != null) {
|
|
96
116
|
throw new RecordExists('id-present');
|
|
97
117
|
}
|
|
98
|
-
if (opts
|
|
118
|
+
if (opts?.ttl != null) {
|
|
99
119
|
throw new UnsupportedArgumentError('ttl');
|
|
100
120
|
}
|
|
101
121
|
const result = await resource.collection.insertOne({
|
|
@@ -105,70 +125,27 @@ export const makeMongoResource = (alias, dbAlias = DEFAULT_DB_ALIAS, serviceAlia
|
|
|
105
125
|
if (!result.acknowledged) {
|
|
106
126
|
throw new RecordUpdateFailed(`creation`);
|
|
107
127
|
}
|
|
108
|
-
|
|
109
|
-
return resource.get(id.toString());
|
|
128
|
+
return await resource.get(result.insertedId.toString());
|
|
110
129
|
},
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
throw new MisshapedRecord('id');
|
|
116
|
-
}
|
|
117
|
-
record = await resource.load(id.id);
|
|
118
|
-
}
|
|
119
|
-
else {
|
|
120
|
-
record = await resource.load(id, opts);
|
|
121
|
-
}
|
|
122
|
-
if (record == null) {
|
|
123
|
-
return null;
|
|
124
|
-
}
|
|
125
|
-
let field = '_id';
|
|
126
|
-
if (typeof opts === 'string') {
|
|
127
|
-
field = opts;
|
|
128
|
-
opts = undefined;
|
|
129
|
-
}
|
|
130
|
-
else if (typeof opts === 'object') {
|
|
131
|
-
field = opts.field ?? field;
|
|
132
|
-
}
|
|
133
|
-
const _id = field == '_id' ? record.id : record[field];
|
|
134
|
-
if (id == null) {
|
|
135
|
-
throw new MisshapedRecord('id');
|
|
136
|
-
}
|
|
137
|
-
const result = await resource.collection.deleteOne(identityCriteria(field, _id, refs()));
|
|
138
|
-
if (!result.acknowledged || result.deletedCount === 0) {
|
|
139
|
-
return null;
|
|
140
|
-
}
|
|
141
|
-
return record;
|
|
130
|
+
/** Atomic: the record is handed back by the very operation that removed it. */
|
|
131
|
+
delete: async (id) => {
|
|
132
|
+
const record = await resource.collection.findOneAndDelete(mongoRefHelper.identityCriteria('id', id, refs()));
|
|
133
|
+
return record != null ? demarshal(record) : null;
|
|
142
134
|
},
|
|
143
|
-
|
|
144
|
-
const record = await resource.delete(id
|
|
135
|
+
take: async (id) => {
|
|
136
|
+
const record = await resource.delete(id);
|
|
145
137
|
if (record == null) {
|
|
146
|
-
throw new UnknownRecordError(
|
|
138
|
+
throw new UnknownRecordError(id);
|
|
147
139
|
}
|
|
148
140
|
return record;
|
|
149
141
|
},
|
|
150
|
-
|
|
151
|
-
const
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
const total = await resource.collection.countDocuments(criteria);
|
|
156
|
-
pager.total = total;
|
|
157
|
-
const skip = (pager.page ?? 0) * size;
|
|
158
|
-
if (total === 0 && skip >= total) {
|
|
159
|
-
return { items: [], pager };
|
|
142
|
+
purge: async (where) => {
|
|
143
|
+
const filter = mongoCriteriaHelper.criteriaToFilter(where, refs());
|
|
144
|
+
if (Object.keys(filter).length < 1) {
|
|
145
|
+
/** An empty filter here would empty the collection. */
|
|
146
|
+
throw new UnsupportedArgumentError('purge:no-criteria');
|
|
160
147
|
}
|
|
161
|
-
|
|
162
|
-
.skip(skip).limit(size);
|
|
163
|
-
if (pager.sort != null) {
|
|
164
|
-
cursor = cursor.sort(typeof pager.sort === 'string'
|
|
165
|
-
? pager.sort
|
|
166
|
-
: pager.sort.reduce((sort, [field, order]) => ({ ...sort, [field]: order ? -1 : 1 }), {}));
|
|
167
|
-
}
|
|
168
|
-
const items = await cursor.toArray();
|
|
169
|
-
return {
|
|
170
|
-
pager, items: items.map(item => demarshal({ ...item }))
|
|
171
|
-
};
|
|
148
|
+
return (await resource.collection.deleteMany(filter)).deletedCount;
|
|
172
149
|
},
|
|
173
150
|
lock: async (record, fields) => {
|
|
174
151
|
fields ??= getSchemaSecureFeilds(resource.schema ?? {});
|
|
@@ -200,23 +177,23 @@ export const makeMongoResource = (alias, dbAlias = DEFAULT_DB_ALIAS, serviceAlia
|
|
|
200
177
|
await mongo.ready();
|
|
201
178
|
return await mongo.client(dbAlias);
|
|
202
179
|
},
|
|
203
|
-
|
|
180
|
+
/**
|
|
181
|
+
* `index`, `migration` and `reference` hand the resource itself back so declarations
|
|
182
|
+
* chain — a return an object literal can't express, hence the member level casts: each
|
|
183
|
+
* implementation returns the closed over `resource`, which is that very object.
|
|
184
|
+
*/
|
|
185
|
+
index: ((name, index, options) => {
|
|
204
186
|
resource.indexes = resource.indexes ?? [];
|
|
205
187
|
resource.indexes.push({ name, index, options });
|
|
206
188
|
return resource;
|
|
207
|
-
},
|
|
208
|
-
/**
|
|
209
|
-
* `migration` and `reference` are `this`-returning in the interface, which an object
|
|
210
|
-
* literal can't express — hence the member level casts: the implementations return
|
|
211
|
-
* the closed over `resource`, which is that very object.
|
|
212
|
-
*/
|
|
189
|
+
}),
|
|
213
190
|
migration: ((name, apply, stage) => {
|
|
214
|
-
getDeclaration(alias).migrations.register(name, apply, stage);
|
|
191
|
+
mongoDeclarationHelper.getDeclaration(alias).migrations.register(name, apply, stage);
|
|
215
192
|
return resource;
|
|
216
193
|
}),
|
|
217
|
-
migrations: () => getDeclaration(alias).migrations,
|
|
194
|
+
migrations: () => mongoDeclarationHelper.getDeclaration(alias).migrations,
|
|
218
195
|
reference: ((field, opts) => {
|
|
219
|
-
const declaration = getDeclaration(alias);
|
|
196
|
+
const declaration = mongoDeclarationHelper.getDeclaration(alias);
|
|
220
197
|
const options = typeof opts === 'string' ? { resource: opts } : opts ?? {};
|
|
221
198
|
declaration.references.set(field, { field, resource: options.resource, noIndex: options.noIndex });
|
|
222
199
|
/**
|
|
@@ -224,14 +201,13 @@ export const makeMongoResource = (alias, dbAlias = DEFAULT_DB_ALIAS, serviceAlia
|
|
|
224
201
|
* here rather than at init so it precedes migrations the app declares after its
|
|
225
202
|
* `reference()` calls — the field's type contract is the foundation those build on.
|
|
226
203
|
*/
|
|
227
|
-
declaration.migrations.register(refMigrationName(field), makeRefMigration(field), MigrationStage.Pre);
|
|
204
|
+
declaration.migrations.register(mongoRefHelper.refMigrationName(field), makeRefMigration(field), MigrationStage.Pre);
|
|
228
205
|
return resource;
|
|
229
206
|
}),
|
|
230
|
-
references: () => [...getDeclaration(alias).references.values()]
|
|
207
|
+
references: () => [...mongoDeclarationHelper.getDeclaration(alias).references.values()]
|
|
231
208
|
});
|
|
232
209
|
// Explicit collection name override (decoupled from the registration alias, which may
|
|
233
|
-
// contain characters that aren't valid in a collection name).
|
|
234
|
-
// because it's threaded back into the recursive makeMongoResource call below.
|
|
210
|
+
// contain characters that aren't valid in a collection name).
|
|
235
211
|
if (collectionName != null) {
|
|
236
212
|
resource.name = collectionName;
|
|
237
213
|
}
|
|
@@ -243,13 +219,7 @@ export const makeMongoResource = (alias, dbAlias = DEFAULT_DB_ALIAS, serviceAlia
|
|
|
243
219
|
await mongo.ready();
|
|
244
220
|
const db = await mongo.db(dbAlias);
|
|
245
221
|
const config = mongo.config(dbAlias);
|
|
246
|
-
resource.collection = await initializeCollection(
|
|
247
|
-
};
|
|
248
|
-
resource.reinitializeContext = (context) => {
|
|
249
|
-
const resource = (makeCustomResource?.(dbAlias, serviceAlias)
|
|
250
|
-
?? makeMongoResource(alias, dbAlias, serviceAlias, makeCustomResource, collectionName));
|
|
251
|
-
resource.ctx = context;
|
|
252
|
-
return resource;
|
|
222
|
+
resource.collection = await makeMongoLifeCycleUtils(db).initializeCollection(config, resource, context);
|
|
253
223
|
};
|
|
254
224
|
return resource;
|
|
255
225
|
};
|
|
@@ -260,7 +230,7 @@ const _prepareValues = (obj, schema, refs) => {
|
|
|
260
230
|
* undo the conversion.
|
|
261
231
|
*/
|
|
262
232
|
if (refs != null && refs.size > 0) {
|
|
263
|
-
obj = Object.fromEntries(Object.entries(obj).map(([key, value]) => refs.has(key) ? [key, marshalReference(key, value)] : [key, value]));
|
|
233
|
+
obj = Object.fromEntries(Object.entries(obj).map(([key, value]) => refs.has(key) ? [key, mongoRefHelper.marshalReference(key, value)] : [key, value]));
|
|
264
234
|
}
|
|
265
235
|
// @TODO Validate keys from additional properties in the root
|
|
266
236
|
return schema != null ? Object.fromEntries(Object.entries(obj).map(([key, value]) => {
|
package/build/resource.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource.js","sourceRoot":"","sources":["../src/resource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEnE,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAInD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAExJ,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AACnD,OAAO,EACL,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,eAAe,EAAE,gBAAgB,EACpF,gBAAgB,EACjB,MAAM,iBAAiB,CAAA;AAKxB,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAG/B,KAAa,EAAE,OAAO,GAAW,gBAAgB,EAAE,YAAY,GAAW,gBAAgB,EAC1F,kBAAwC,EAAE,cAAuB,EAC9D,EAAE;IACL,MAAM,QAAQ,GAAG,kBAAkB,KAAK,EAAE,CAAA;IAE1C;;;OAGG;IACH,MAAM,IAAI,GAAG,GAAgC,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,UAAU,CAAA;IAEhF,MAAM,SAAS,GAAG,CAA8B,MAAgC,EAAQ,EAAE;QACxF,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,GAAG,YAAY,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAa,CAAA;QACzF,OAAO,MAAM,CAAC,GAAG,CAAA;QACjB,OAAO,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;IACtC,CAAC,CAAA;IAED,MAAM,QAAQ,GAAM,gBAAgB,CAAI,KAAK,EAAE;QAC7C,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YAC7B,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;YACnD,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;gBACnB,MAAM,IAAI,kBAAkB,CAAC,EAAE,CAAC,CAAA;YAClC,CAAC;YAED,OAAO,MAAM,CAAA;QACf,CAAC;QAED,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC9B,IAAI,GAAG,KAAK,CAAA;gBACZ,KAAK,GAAG,KAAK,CAAC,KAAK,CAAA;YACrB,CAAC;YACD,KAAK,GAAG,KAAK,IAAI,KAAK,CAAA;YACtB,IAAI,IAAI,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC;gBACtB,MAAM,IAAI,wBAAwB,CAAC,KAAK,CAAC,CAAA;YAC3C,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;YACrF,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;gBACnB,SAAS,CAAC,MAAM,CAAC,CAAA;YACnB,CAAC;YAED,OAAO,MAAM,CAAA;QACf,CAAC;QAED,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;YAC7B,IAAI,KAAK,GAAG,KAAK,CAAA;YACjB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC7B,KAAK,GAAG,IAAI,CAAA;YACd,CAAC;iBAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACpC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,KAAK,CAAA;YAC7B,CAAC;YAED,IAAI,KAAK,KAAK,KAAK,IAAI,MAAM,CAAC,KAA4B,CAAC,IAAI,IAAI,EAAE,CAAC;gBACpE,MAAM,IAAI,eAAe,CAAC,gBAAgB,CAAC,CAAA;YAC7C,CAAC;YAED,MAAM,EAAE,GAAG,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAA4B,CAAW,CAAA;YACtF,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;gBACf,MAAM,IAAI,eAAe,CAAC,IAAI,CAAC,CAAA;YACjC,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;YAE9C,MAAM,OAAO,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAA;YAC7D,IAAI,OAAO,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC;gBACvB,OAAO,OAAO,CAAC,EAAE,CAAA;YACnB,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,UAAU,CACjD,gBAAgB,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EACnC,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,MAA6B,EAAE,IAAI,EAAE,CAAC,CACxE,CAAA;YACD,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;gBACzB,MAAM,IAAI,kBAAkB,CAAC,GAAG,KAAK,IAAI,EAAE,EAAE,CAAC,CAAA;YAChD,CAAC;YAED,OAAO,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;QAC/B,CAAC;QAED,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;YAC3B,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAA;YACpB,IAAI,EAAE,IAAI,IAAI,IAAI,CAChB,OAAO,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAA2B,CAAC,IAAI,IAAI,CACxE,IAAI,CACD,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC;mBAC1C,MAAM,CAAC,IAAI,CAAC,KAA4B,CAAC,IAAI,IAAI,CACrD,EAAE,CAAC;gBACJ,OAAO,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YACtC,CAAC;YAED,OAAO,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;QAC7E,CAAC;QAED,WAAW,EAAE,GAAG,EAAE;YAChB,MAAM,MAAM,GAAwC,QAAQ,CAAC,MAAiC,CAAA;YAC9F,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;gBACnB,OAAO,EAAE,CAAA;YACX,CAAC;YAED,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;gBAC/E,IAAK,KAAiC,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC;oBACvD,OAAO,QAAQ,CAAA;gBACjB,CAAC;gBACD,OAAO,EAAE,GAAG,QAAQ,EAAE,CAAC,GAAG,CAAC,EAAG,KAAiC,CAAC,OAAO,EAAE,CAAA;YAC3E,CAAC,EAAE,EAAE,CAAC,CAAA;QACR,CAAC;QAED,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;YAC7B,IAAI,IAAI,IAAI,MAAM,IAAI,MAAM,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC;gBACxC,OAAO,MAAM,CAAC,EAAE,CAAA;YAClB,CAAC;YACD,IAAI,MAAM,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC;gBACtB,MAAM,IAAI,YAAY,CAAC,YAAY,CAAC,CAAA;YACtC,CAAC;YACD,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;gBACrC,MAAM,IAAI,wBAAwB,CAAC,KAAK,CAAC,CAAA;YAC3C,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC;gBACjD,GAAG,QAAQ,CAAC,WAAW,EAAE;gBACzB,GAAG,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,MAA6B,EAAE,IAAI,EAAE,CAAC;aAC1E,CAAC,CAAA;YAEF,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;gBACzB,MAAM,IAAI,kBAAkB,CAAC,UAAU,CAAC,CAAA;YAC1C,CAAC;YAED,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU,CAAA;YAE5B,OAAO,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAA;QACpC,CAAC;QAED,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE;YACzB,IAAI,MAAM,GAAa,IAAI,CAAA;YAC3B,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;gBAC3B,IAAI,EAAE,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC;oBAClB,MAAM,IAAI,eAAe,CAAC,IAAI,CAAC,CAAA;gBACjC,CAAC;gBACD,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;YACrC,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;YACxC,CAAC;YAED,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;gBACnB,OAAO,IAAI,CAAA;YACb,CAAC;YAED,IAAI,KAAK,GAAG,KAAK,CAAA;YACjB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC7B,KAAK,GAAG,IAAI,CAAA;gBACZ,IAAI,GAAG,SAAS,CAAA;YAClB,CAAC;iBAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACpC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,KAAK,CAAA;YAC7B,CAAC;YAED,MAAM,GAAG,GAAG,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAA4B,CAAW,CAAA;YACvF,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;gBACf,MAAM,IAAI,eAAe,CAAC,IAAI,CAAC,CAAA;YACjC,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,GAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;YAClG,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,YAAY,KAAK,CAAC,EAAE,CAAC;gBACtD,OAAO,IAAI,CAAA;YACb,CAAC;YAED,OAAO,MAAM,CAAA;QACf,CAAC;QAED,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE;YACvB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;YAC9C,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;gBACnB,MAAM,IAAI,kBAAkB,CAAC,OAAO,EAAE,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,SAAS,CAAC,CAAC,CAAA;YACjF,CAAC;YAED,OAAO,MAAM,CAAA;QACf,CAAC;QAED,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE;YAC7B,MAAM,OAAO,GAAG,kBAAkB,CAAC,iBAAiB,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAA;YAErE,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,CAAA;YAC1D,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAA;YAEjC,MAAM,IAAI,GAAG,KAAK,EAAE,IAAI,IAAI,iBAAiB,CAAA;YAC7C,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,cAAc,CAAC,QAAwB,CAAC,CAAA;YAChF,KAAK,CAAC,KAAK,GAAG,KAAK,CAAA;YAEnB,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAA;YACrC,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC;gBACjC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAA;YAC7B,CAAC;YAED,IAAI,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,QAAwB,CAAC;iBAC5D,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;YAEzB,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;gBACvB,MAAM,GAAG,MAAM,CAAC,IAAI,CAClB,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;oBAC5B,CAAC,CAAC,KAAK,CAAC,IAAI;oBACZ,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,CAC3C,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,KAA0B,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAChE,CACJ,CAAA;YACH,CAAC;YAED,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,CAAA;YAEpC,OAAO;gBACL,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,IAAI,EAAkB,CAAC,CAAC;aACxE,CAAA;QACH,CAAC;QAED,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YAC7B,MAAM,KAAK,qBAAqB,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,CAAA;YACvD,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxC,MAAM,IAAI,WAAW,CAAC,sBAAsB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;YACvE,CAAC;YAED,MAAM,OAAO,GAAG,aAAa,CAAkB,QAAQ,CAAC,GAAc,EAAE,QAAQ,CAAC,CAAA;YACjF,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAiB,YAAY,IAAI,OAAO,CAAC,CAAA;YAEtE,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;QAC5C,CAAC;QAED,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YAC/B,MAAM,KAAK,qBAAqB,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,CAAA;YACvD,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxC,MAAM,IAAI,WAAW,CAAC,wBAAwB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;YACzE,CAAC;YAED,MAAM,OAAO,GAAG,aAAa,CAAkB,QAAQ,CAAC,GAAc,EAAE,QAAQ,CAAC,CAAA;YACjF,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAiB,YAAY,IAAI,OAAO,CAAC,CAAA;YAEtE,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;QAC9C,CAAC;QAED,EAAE,EAAE,KAAK,IAAI,EAAE;YACb,MAAM,OAAO,GAAG,aAAa,CAAkB,QAAQ,CAAC,GAAc,EAAE,QAAQ,CAAC,CAAA;YACjF,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAiB,YAAY,IAAI,OAAO,CAAC,CAAA;YACtE,MAAM,KAAK,CAAC,KAAK,EAAE,CAAA;YACnB,OAAO,MAAM,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,CAAA;QAChC,CAAC;QAED,MAAM,EAAE,KAAK,IAAI,EAAE;YACjB,MAAM,OAAO,GAAG,aAAa,CAAkB,QAAQ,CAAC,GAAc,EAAE,QAAQ,CAAC,CAAA;YACjF,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAiB,YAAY,IAAI,OAAO,CAAC,CAAA;YACtE,MAAM,KAAK,CAAC,KAAK,EAAE,CAAA;YACnB,OAAO,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QACpC,CAAC;QAED,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YAC9B,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAA;YACzC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAA;YAC/C,OAAO,QAAQ,CAAA;QACjB,CAAC;QAED;;;;WAIG;QACH,SAAS,EAAE,CAAC,CAAC,IAAY,EAAE,KAAqC,EAAE,KAAsB,EAAE,EAAE;YAC1F,cAAc,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;YAC7D,OAAO,QAAQ,CAAA;QACjB,CAAC,CAAmB;QAEpB,UAAU,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,UAAU;QAElD,SAAS,EAAE,CAAC,CAAC,KAAa,EAAE,IAA+B,EAAE,EAAE;YAC7D,MAAM,WAAW,GAAG,cAAc,CAAC,KAAK,CAAC,CAAA;YACzC,MAAM,OAAO,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAA;YAC1E,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAA;YAClG;;;;eAIG;YACH,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,gBAAgB,CAAC,KAAK,CAAC,EAAE,cAAc,CAAC,GAAG,CAAC,CAAA;YAErG,OAAO,QAAQ,CAAA;QACjB,CAAC,CAAmB;QAEpB,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;KACnD,CAAC,CAAA;IAEhB,sFAAsF;IACtF,2FAA2F;IAC3F,8EAA8E;IAC9E,IAAI,cAAc,IAAI,IAAI,EAAE,CAAC;QAC3B,QAAQ,CAAC,IAAI,GAAG,cAAc,CAAA;IAChC,CAAC;IACD,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAA;IAC1B,QAAQ,CAAC,YAAY,GAAG,YAAY,CAAA;IAEpC,QAAQ,CAAC,IAAI,GAAG,KAAK,IAAI,EAAE;QACzB,MAAM,OAAO,GAAG,aAAa,CAAkB,QAAQ,CAAC,GAAc,EAAE,QAAQ,CAAC,CAAA;QACjF,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAiB,YAAY,IAAI,OAAO,CAAC,CAAA;QACtE,MAAM,KAAK,CAAC,KAAK,EAAE,CAAA;QACnB,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,CAAA;QAClC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QACpC,QAAQ,CAAC,UAAU,GAAG,MAAM,oBAAoB,CAC9C,EAAE,EAAE,MAAM,EAAE,QAAoD,EAAE,OAAO,CAC1E,CAAA;IACH,CAAC,CAAA;IAED,QAAQ,CAAC,mBAAmB,GAAG,CAA0B,OAA6B,EAAE,EAAE;QACxF,MAAM,QAAQ,GAAG,CAAC,kBAAkB,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC;eACxD,iBAAiB,CAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,cAAc,CAAC,CAAoB,CAAA;QAElH,QAAQ,CAAC,GAAG,GAAG,OAAO,CAAA;QAEtB,OAAO,QAAgB,CAAA;IACzB,CAAC,CAAA;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC,CAAA;AAED,MAAM,cAAc,GAAG,CACrB,GAAM,EAAE,MAA0B,EAAE,IAAkC,EACnE,EAAE;IACL;;;;OAIG;IACH,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QAClC,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAChE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,gBAAgB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CACnE,CAAM,CAAA;IACT,CAAC;IACD,6DAA6D;IAC7D,OAAO,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QAClF,IAAI,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,KAAK,YAAY,QAAQ,CAAC,EAAE,CAAC;YAClD,OAAO,CAAC,GAAG,EAAE,IAAI,QAAQ,CAAC,KAAe,CAAC,CAAC,CAAA;QAC7C,CAAC;QACD,IAAI,GAAG,KAAK,KAAK,IAAI,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACpC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QACrB,CAAC;QACD,kFAAkF;QAClF,wEAAwE;QACxE,+EAA+E;QAC/E,yEAAyE;QACzE,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAClB,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QACrB,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAA;QAErC,IAAI,IAAI,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC5B,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;gBAChC,OAAO,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,KAAe,CAAC,CAAC,CAAA;YACzC,CAAC;YAED,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,IAAI,IAAI,CAAC,oBAAoB,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACrF,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;oBACpE,OAAO,CAAC,GAAG,EAAE,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,oBAA2C,CAAC,CAAC,CAAA;gBAC5F,CAAC,CAAC,CAAC,CAAA;gBAEH,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;YACrB,CAAC;YAED,OAAO,CAAC,GAAG,EAAE,cAAc,CAAC,KAAK,EAAE,IAAoC,CAAC,CAAC,CAAA;QAC3E,CAAC;aAAM,IAAI,IAAI,EAAE,IAAI,KAAK,OAAO,EAAE,CAAC;YAClC,OAAO,CAAC,GAAG,EAAG,KAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,KAA4B,CAAC,CAAC,CAAC,CAAA;QAC1G,CAAC;QAED,OAAO,CAAC,GAAG,EAAE,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAA;IAChD,CAAC,CAAC,CAAM,CAAC,CAAC,CAAC,GAAG,CAAA;AAChB,CAAC,CAAA;AAED,MAAM,mBAAmB,GAAG,CAAI,KAAQ,EAAE,MAA0B,EAAE,EAAE;IACtE,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;QAC/C,OAAO,cAAc,CAAC,KAAY,EAAE,MAA6B,CAAC,CAAA;IACpE,CAAC;IACD,IAAI,MAAM,EAAE,IAAI,KAAK,QAAQ,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAC/C,OAAO,GAAG,KAAK,EAAE,CAAA;IACnB,CAAC;IACD,IAAI,MAAM,EAAE,IAAI,KAAK,QAAQ,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAC/C,OAAO,CAAC,KAAK,CAAA;IACf,CAAC;IACD,IAAI,MAAM,EAAE,IAAI,KAAK,SAAS,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAChD,OAAO,CAAC,CAAC,KAAK,CAAA;IAChB,CAAC;IACD,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAClB,OAAO,KAAK,CAAA;IACd,CAAC;IAED,kEAAkE;IAClE,OAAO,GAAG,KAAK,EAAE,CAAA;AACnB,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"resource.js","sourceRoot":"","sources":["../src/resource.ts"],"names":[],"mappings":"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"}
|