litedbmodel 1.2.10 → 2.0.1
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 +1 -1
- package/dist/DBModel.d.ts.map +1 -1
- package/dist/DBModel.js +6 -0
- package/dist/DBModel.js.map +1 -1
- package/dist/scp/authoring-sql.d.ts +134 -0
- package/dist/scp/authoring-sql.d.ts.map +1 -0
- package/dist/scp/authoring-sql.js +191 -0
- package/dist/scp/authoring-sql.js.map +1 -0
- package/dist/scp/authoring.d.ts +155 -0
- package/dist/scp/authoring.d.ts.map +1 -0
- package/dist/scp/authoring.js +162 -0
- package/dist/scp/authoring.js.map +1 -0
- package/dist/scp/catalog.d.ts +91 -0
- package/dist/scp/catalog.d.ts.map +1 -0
- package/dist/scp/catalog.js +230 -0
- package/dist/scp/catalog.js.map +1 -0
- package/dist/scp/codegen.d.ts +95 -0
- package/dist/scp/codegen.d.ts.map +1 -0
- package/dist/scp/codegen.js +94 -0
- package/dist/scp/codegen.js.map +1 -0
- package/dist/scp/dialect.d.ts +141 -0
- package/dist/scp/dialect.d.ts.map +1 -0
- package/dist/scp/dialect.js +194 -0
- package/dist/scp/dialect.js.map +1 -0
- package/dist/scp/errors.d.ts +36 -0
- package/dist/scp/errors.d.ts.map +1 -0
- package/dist/scp/errors.js +72 -0
- package/dist/scp/errors.js.map +1 -0
- package/dist/scp/find-filter-guard.d.ts +68 -0
- package/dist/scp/find-filter-guard.d.ts.map +1 -0
- package/dist/scp/find-filter-guard.js +88 -0
- package/dist/scp/find-filter-guard.js.map +1 -0
- package/dist/scp/fragment/assemble.d.ts +61 -0
- package/dist/scp/fragment/assemble.d.ts.map +1 -0
- package/dist/scp/fragment/assemble.js +148 -0
- package/dist/scp/fragment/assemble.js.map +1 -0
- package/dist/scp/fragment/compile-pg.d.ts +107 -0
- package/dist/scp/fragment/compile-pg.d.ts.map +1 -0
- package/dist/scp/fragment/compile-pg.js +142 -0
- package/dist/scp/fragment/compile-pg.js.map +1 -0
- package/dist/scp/fragment/index.d.ts +16 -0
- package/dist/scp/fragment/index.d.ts.map +1 -0
- package/dist/scp/fragment/index.js +34 -0
- package/dist/scp/fragment/index.js.map +1 -0
- package/dist/scp/fragment/model.d.ts +119 -0
- package/dist/scp/fragment/model.d.ts.map +1 -0
- package/dist/scp/fragment/model.js +66 -0
- package/dist/scp/fragment/model.js.map +1 -0
- package/dist/scp/fragment/pg-array-type.d.ts +13 -0
- package/dist/scp/fragment/pg-array-type.d.ts.map +1 -0
- package/dist/scp/fragment/pg-array-type.js +34 -0
- package/dist/scp/fragment/pg-array-type.js.map +1 -0
- package/dist/scp/guard.d.ts +43 -0
- package/dist/scp/guard.d.ts.map +1 -0
- package/dist/scp/guard.js +134 -0
- package/dist/scp/guard.js.map +1 -0
- package/dist/scp/index.cjs +12202 -0
- package/dist/scp/index.d.ts +64 -0
- package/dist/scp/index.d.ts.map +1 -0
- package/dist/scp/index.js +238 -0
- package/dist/scp/index.js.map +1 -0
- package/dist/scp/index.mjs +4819 -0
- package/dist/scp/makesql/authoring-compile.d.ts +90 -0
- package/dist/scp/makesql/authoring-compile.d.ts.map +1 -0
- package/dist/scp/makesql/authoring-compile.js +494 -0
- package/dist/scp/makesql/authoring-compile.js.map +1 -0
- package/dist/scp/makesql/compile-crud.d.ts +133 -0
- package/dist/scp/makesql/compile-crud.d.ts.map +1 -0
- package/dist/scp/makesql/compile-crud.js +288 -0
- package/dist/scp/makesql/compile-crud.js.map +1 -0
- package/dist/scp/makesql/compile-relation.d.ts +157 -0
- package/dist/scp/makesql/compile-relation.d.ts.map +1 -0
- package/dist/scp/makesql/compile-relation.js +425 -0
- package/dist/scp/makesql/compile-relation.js.map +1 -0
- package/dist/scp/makesql/compile-select.d.ts +45 -0
- package/dist/scp/makesql/compile-select.d.ts.map +1 -0
- package/dist/scp/makesql/compile-select.js +58 -0
- package/dist/scp/makesql/compile-select.js.map +1 -0
- package/dist/scp/makesql/compile.d.ts +63 -0
- package/dist/scp/makesql/compile.d.ts.map +1 -0
- package/dist/scp/makesql/compile.js +99 -0
- package/dist/scp/makesql/compile.js.map +1 -0
- package/dist/scp/makesql/handler.d.ts +58 -0
- package/dist/scp/makesql/handler.d.ts.map +1 -0
- package/dist/scp/makesql/handler.js +113 -0
- package/dist/scp/makesql/handler.js.map +1 -0
- package/dist/scp/makesql/index.d.ts +33 -0
- package/dist/scp/makesql/index.d.ts.map +1 -0
- package/dist/scp/makesql/index.js +114 -0
- package/dist/scp/makesql/index.js.map +1 -0
- package/dist/scp/makesql/ir.d.ts +42 -0
- package/dist/scp/makesql/ir.d.ts.map +1 -0
- package/dist/scp/makesql/ir.js +66 -0
- package/dist/scp/makesql/ir.js.map +1 -0
- package/dist/scp/makesql/json-array.d.ts +84 -0
- package/dist/scp/makesql/json-array.d.ts.map +1 -0
- package/dist/scp/makesql/json-array.js +118 -0
- package/dist/scp/makesql/json-array.js.map +1 -0
- package/dist/scp/makesql/json-batch.d.ts +102 -0
- package/dist/scp/makesql/json-batch.d.ts.map +1 -0
- package/dist/scp/makesql/json-batch.js +269 -0
- package/dist/scp/makesql/json-batch.js.map +1 -0
- package/dist/scp/makesql/makesql.d.ts +99 -0
- package/dist/scp/makesql/makesql.d.ts.map +1 -0
- package/dist/scp/makesql/makesql.js +122 -0
- package/dist/scp/makesql/makesql.js.map +1 -0
- package/dist/scp/makesql/pool-executor.d.ts +47 -0
- package/dist/scp/makesql/pool-executor.d.ts.map +1 -0
- package/dist/scp/makesql/pool-executor.js +50 -0
- package/dist/scp/makesql/pool-executor.js.map +1 -0
- package/dist/scp/makesql/static-bundle.d.ts +185 -0
- package/dist/scp/makesql/static-bundle.d.ts.map +1 -0
- package/dist/scp/makesql/static-bundle.js +1024 -0
- package/dist/scp/makesql/static-bundle.js.map +1 -0
- package/dist/scp/makesql/tx.d.ts +216 -0
- package/dist/scp/makesql/tx.d.ts.map +1 -0
- package/dist/scp/makesql/tx.js +743 -0
- package/dist/scp/makesql/tx.js.map +1 -0
- package/dist/scp/relation.d.ts +148 -0
- package/dist/scp/relation.d.ts.map +1 -0
- package/dist/scp/relation.js +257 -0
- package/dist/scp/relation.js.map +1 -0
- package/dist/scp/runtime.d.ts +231 -0
- package/dist/scp/runtime.d.ts.map +1 -0
- package/dist/scp/runtime.js +381 -0
- package/dist/scp/runtime.js.map +1 -0
- package/dist/scp/typed-object.d.ts +99 -0
- package/dist/scp/typed-object.d.ts.map +1 -0
- package/dist/scp/typed-object.js +184 -0
- package/dist/scp/typed-object.js.map +1 -0
- package/dist/scp/writes.d.ts +251 -0
- package/dist/scp/writes.d.ts.map +1 -0
- package/dist/scp/writes.js +176 -0
- package/dist/scp/writes.js.map +1 -0
- package/docs/proposal/contracts-architecture-feasibility.md +328 -0
- package/docs/proposal/contracts-architecture.md +579 -0
- package/docs/proposal/litedbmodel-v2-scp-architecture.md +382 -0
- package/docs/proposal/sql-dynamic-expansion-spec.md +175 -0
- package/docs/proposal/v0-coverage-matrix.md +157 -0
- package/docs/proposal/v2-completeness-plan.md +90 -0
- package/docs/proposal/v2-sql-parity-checklist.md +162 -0
- package/package.json +27 -5
- package/docs/README_REVIEW.md +0 -23
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tx.js","sourceRoot":"","sources":["../../../src/scp/makesql/tx.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* litedbmodel v2 SCP — Read relations: pre-compiled batch op + staged batch resolution (WS4,
|
|
3
|
+
* #24; makeSQL re-expression, epic #43/#45 Phase B).
|
|
4
|
+
*
|
|
5
|
+
* Relations are NOT SQL JOINs by default (spec §5). They are the staged-batch
|
|
6
|
+
* query-composition + object-assembly shape v1's `LazyRelation` uses: collect the parent key
|
|
7
|
+
* set of a result page, run ONE batched child SELECT keyed by the deduped parent keys, then
|
|
8
|
+
* distribute the child rows back to their parents. One batched query per relation edge, NEVER
|
|
9
|
+
* one-per-parent (no N+1).
|
|
10
|
+
*
|
|
11
|
+
* ## The relation op is a STATIC makeSQL artifact (design #45)
|
|
12
|
+
*
|
|
13
|
+
* A {@link RelationOp} is compiled ONCE from a model {@link RelationDecl} into a STATIC
|
|
14
|
+
* `makeSQL` batch SELECT via the makeSQL relation builders (`./makesql/compile-relation`) —
|
|
15
|
+
* byte-identical to the ORIGINAL `LazyRelation` SQL for PostgreSQL (`= ANY(?::type[])`,
|
|
16
|
+
* `CROSS JOIN LATERAL`, `UNNEST`), and the single-JSON-param server-side form for MySQL/SQLite
|
|
17
|
+
* (`json_each` / `JSON_TABLE`). The deduped key array binds as ONE param with STATIC text (no
|
|
18
|
+
* placeholder-count expansion), so `op.sql` is fixed and value-independent — pure JSON, lands
|
|
19
|
+
* in the bundle, a per-language runtime executes it directly. The REDUCED
|
|
20
|
+
* `CompiledOperation`/`renderOperation`/`IN (?)`-expansion forms are GONE.
|
|
21
|
+
*
|
|
22
|
+
* ## ONE relation op, TWO surfaces (spec §5)
|
|
23
|
+
*
|
|
24
|
+
* Both read surfaces trigger the IDENTICAL compiled op via {@link runRelationOp}:
|
|
25
|
+
* - **Declarative select** (`with: { author: true }`): batch-prefetched over the page.
|
|
26
|
+
* - **Lazy** (`await post.author`): a prototype getter fires the SAME op over the sibling set.
|
|
27
|
+
*/
|
|
28
|
+
import { type Dialect } from './makesql/handler';
|
|
29
|
+
/** A read relation cardinality (v1 parity). `belongsTo`/`hasOne` are single; `hasMany` many. */
|
|
30
|
+
export type RelationKind = 'belongsTo' | 'hasMany' | 'hasOne';
|
|
31
|
+
/**
|
|
32
|
+
* A model's read-relation declaration (the authored/decorated relation metadata, spec §4).
|
|
33
|
+
* Mirrors v1's `@belongsTo`/`@hasMany`/`@hasOne` config (source/target key + optional
|
|
34
|
+
* per-parent order/limit), reduced to the fields the batch SQL needs.
|
|
35
|
+
*/
|
|
36
|
+
export interface RelationDecl {
|
|
37
|
+
/** Relation name (the property attached on the parent object). */
|
|
38
|
+
readonly name: string;
|
|
39
|
+
/** Cardinality. */
|
|
40
|
+
readonly kind: RelationKind;
|
|
41
|
+
/** The child (target) table name. */
|
|
42
|
+
readonly targetTable: string;
|
|
43
|
+
/** Child columns to project (the child typed-object own props). */
|
|
44
|
+
readonly select: readonly string[];
|
|
45
|
+
/** The PARENT column whose value is the batch key (single-key relations). */
|
|
46
|
+
readonly parentKey?: string;
|
|
47
|
+
/** The CHILD column matched against the parent key (single-key relations). */
|
|
48
|
+
readonly targetKey?: string;
|
|
49
|
+
/**
|
|
50
|
+
* COMPOSITE-key relations (#47 item 1): the ORDERED parent columns whose tuple is the batch key.
|
|
51
|
+
* Mutually exclusive with {@link parentKey}. Pairs positionally with {@link targetKeys}.
|
|
52
|
+
*/
|
|
53
|
+
readonly parentKeys?: readonly string[];
|
|
54
|
+
/** COMPOSITE-key relations: the ORDERED child columns matched against the parent-key tuple. */
|
|
55
|
+
readonly targetKeys?: readonly string[];
|
|
56
|
+
/** Optional per-parent ORDER BY body (dialect-neutral text). */
|
|
57
|
+
readonly order?: string;
|
|
58
|
+
/** Optional per-parent row limit (`hasMany` only). */
|
|
59
|
+
readonly limit?: number;
|
|
60
|
+
/** The target SQL dialect the batch SELECT is compiled for (default `'sqlite'`). */
|
|
61
|
+
readonly dialect?: Dialect;
|
|
62
|
+
/**
|
|
63
|
+
* CROSS-DB relations (V0 R1): the NAME of the connection the batch SELECT must execute against —
|
|
64
|
+
* the TARGET model's DB, which may differ from the parent's (v1 `LazyRelation.ts:236` runs a
|
|
65
|
+
* relation on `TargetClass.getDriverType()`'s driver/connection). Absent ⇒ the parent's own
|
|
66
|
+
* connection (the same-DB default). The SQL is v1-identical either way; the tag only ROUTES the
|
|
67
|
+
* statement — a per-language runtime with a connection registry picks the pooled driver by name.
|
|
68
|
+
*/
|
|
69
|
+
readonly connection?: string;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* A pre-compiled relation batch op (spec §8). Pure JSON — it carries the STATIC batch SELECT
|
|
73
|
+
* `sql` (makeSQL text with ONE `?` for the deduped-key array param) plus the grouping metadata
|
|
74
|
+
* the runtime needs to distribute child rows to parents. No functions, no reduced IR.
|
|
75
|
+
*/
|
|
76
|
+
export interface RelationOp {
|
|
77
|
+
readonly name: string;
|
|
78
|
+
readonly kind: RelationKind;
|
|
79
|
+
/** Parent column supplying the batch key values (dedup key) — single-key relations. */
|
|
80
|
+
readonly parentKey?: string;
|
|
81
|
+
/** Child column the batch groups rows by (matches the parent key) — single-key relations. */
|
|
82
|
+
readonly targetKey?: string;
|
|
83
|
+
/**
|
|
84
|
+
* COMPOSITE-key relations (#47 item 1): the ORDERED parent columns whose tuple is the dedup key.
|
|
85
|
+
* Present iff the op is composite (mutually exclusive with {@link parentKey}).
|
|
86
|
+
*/
|
|
87
|
+
readonly parentKeys?: readonly string[];
|
|
88
|
+
/** COMPOSITE-key relations: the ORDERED child columns the batch groups rows by (the key tuple). */
|
|
89
|
+
readonly targetKeys?: readonly string[];
|
|
90
|
+
/** The target SQL dialect the batch SELECT text is compiled for. */
|
|
91
|
+
readonly dialect: Dialect;
|
|
92
|
+
/**
|
|
93
|
+
* CROSS-DB relations (V0 R1): the connection NAME the batch executes against (the target model's
|
|
94
|
+
* DB). Present ONLY when it differs from the parent's connection (a same-DB relation omits it).
|
|
95
|
+
* A per-language runtime routes the statement to the pooled driver of this name; the SQL text and
|
|
96
|
+
* `dialect`-driven placeholder/bind are already correct for the target (v1 `LazyRelation` parity).
|
|
97
|
+
*/
|
|
98
|
+
readonly connection?: string;
|
|
99
|
+
/**
|
|
100
|
+
* The batched child SELECT as STATIC makeSQL text. Single-key: ONE `?` binds the deduped
|
|
101
|
+
* parent-key set (PG `= ANY(?::t[])` / MySQL·SQLite single-JSON). Composite: PG binds ONE array
|
|
102
|
+
* param PER key column (`unnest(?::t1[], ?::t2[])`); MySQL·SQLite bind ONE JSON array-of-tuples
|
|
103
|
+
* param. Value-length-independent either way, so `sql` is fixed.
|
|
104
|
+
*/
|
|
105
|
+
readonly sql: string;
|
|
106
|
+
}
|
|
107
|
+
/** The reserved input head the relation batch query binds its deduped key array to. */
|
|
108
|
+
export declare const RELATION_KEYS_HEAD = "__keys";
|
|
109
|
+
/**
|
|
110
|
+
* Compile ONE {@link RelationDecl} into a STATIC {@link RelationOp} via the makeSQL relation
|
|
111
|
+
* builders. The batch query selects the child rows whose {@link RelationDecl.targetKey} is in
|
|
112
|
+
* the deduped parent-key set. PG stays byte-identical to v1's `LazyRelation`; MySQL/SQLite use
|
|
113
|
+
* the single-JSON-param server-side form. A `hasMany` with `limit` compiles to the per-parent
|
|
114
|
+
* LATERAL (PG) / ROW_NUMBER (MySQL·SQLite) form. The SQL text is FIXED (the array binds as one
|
|
115
|
+
* param regardless of length), so it needs no per-input recompile.
|
|
116
|
+
*/
|
|
117
|
+
export declare function compileRelationOp(decl: RelationDecl): RelationOp;
|
|
118
|
+
/** A minimal read-only driver surface (`prepare(sql).all(...params)`), the SQLite `Database`. */
|
|
119
|
+
export interface RelationDriver {
|
|
120
|
+
prepare(sql: string): {
|
|
121
|
+
all(...params: unknown[]): unknown[];
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
/** The child rows grouped for a batch: parent-key value (stringified) → child rows. */
|
|
125
|
+
export type RelationBatch = Map<string, Record<string, unknown>[]>;
|
|
126
|
+
/**
|
|
127
|
+
* Run ONE {@link RelationOp} for a set of parent rows: dedup the parent-key tuples, render the
|
|
128
|
+
* STATIC batch SELECT once (dialect placeholder form) resolving the deferred PG array cast(s) from
|
|
129
|
+
* the REAL keys, execute it with the keys bound (single array / per-column arrays / JSON tuples),
|
|
130
|
+
* then group the child rows by their target-key identity. The single batch primitive BOTH the
|
|
131
|
+
* declarative-select and the lazy surface invoke, single-key AND composite.
|
|
132
|
+
*
|
|
133
|
+
* Returns `{ sql, keys, batch }` (`keys` = the deduped parent-key tuples). An empty key set issues
|
|
134
|
+
* NO query (the correct empty-set behavior — the membership over no keys selects nothing).
|
|
135
|
+
*/
|
|
136
|
+
export declare function runRelationOp(op: RelationOp, parents: readonly Record<string, unknown>[], db: RelationDriver): {
|
|
137
|
+
sql: string;
|
|
138
|
+
keys: unknown[][];
|
|
139
|
+
batch: RelationBatch;
|
|
140
|
+
};
|
|
141
|
+
/**
|
|
142
|
+
* Distribute a resolved {@link RelationBatch} onto ONE parent per the relation cardinality:
|
|
143
|
+
* `hasMany` → the child list (`[]` when none); `belongsTo`/`hasOne` → the single child (or
|
|
144
|
+
* `null`). Keyed by the parent's key-tuple identity. `null`/`[]` is the declared cardinality's
|
|
145
|
+
* empty representation, not an ad-hoc default.
|
|
146
|
+
*/
|
|
147
|
+
export declare function distributeToParent(op: RelationOp, parent: Record<string, unknown>, batch: RelationBatch): Record<string, unknown>[] | Record<string, unknown> | null;
|
|
148
|
+
//# sourceMappingURL=relation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relation.d.ts","sourceRoot":"","sources":["../../src/scp/relation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* litedbmodel v2 SCP — Read relations: pre-compiled batch op + staged batch resolution (WS4,
|
|
4
|
+
* #24; makeSQL re-expression, epic #43/#45 Phase B).
|
|
5
|
+
*
|
|
6
|
+
* Relations are NOT SQL JOINs by default (spec §5). They are the staged-batch
|
|
7
|
+
* query-composition + object-assembly shape v1's `LazyRelation` uses: collect the parent key
|
|
8
|
+
* set of a result page, run ONE batched child SELECT keyed by the deduped parent keys, then
|
|
9
|
+
* distribute the child rows back to their parents. One batched query per relation edge, NEVER
|
|
10
|
+
* one-per-parent (no N+1).
|
|
11
|
+
*
|
|
12
|
+
* ## The relation op is a STATIC makeSQL artifact (design #45)
|
|
13
|
+
*
|
|
14
|
+
* A {@link RelationOp} is compiled ONCE from a model {@link RelationDecl} into a STATIC
|
|
15
|
+
* `makeSQL` batch SELECT via the makeSQL relation builders (`./makesql/compile-relation`) —
|
|
16
|
+
* byte-identical to the ORIGINAL `LazyRelation` SQL for PostgreSQL (`= ANY(?::type[])`,
|
|
17
|
+
* `CROSS JOIN LATERAL`, `UNNEST`), and the single-JSON-param server-side form for MySQL/SQLite
|
|
18
|
+
* (`json_each` / `JSON_TABLE`). The deduped key array binds as ONE param with STATIC text (no
|
|
19
|
+
* placeholder-count expansion), so `op.sql` is fixed and value-independent — pure JSON, lands
|
|
20
|
+
* in the bundle, a per-language runtime executes it directly. The REDUCED
|
|
21
|
+
* `CompiledOperation`/`renderOperation`/`IN (?)`-expansion forms are GONE.
|
|
22
|
+
*
|
|
23
|
+
* ## ONE relation op, TWO surfaces (spec §5)
|
|
24
|
+
*
|
|
25
|
+
* Both read surfaces trigger the IDENTICAL compiled op via {@link runRelationOp}:
|
|
26
|
+
* - **Declarative select** (`with: { author: true }`): batch-prefetched over the page.
|
|
27
|
+
* - **Lazy** (`await post.author`): a prototype getter fires the SAME op over the sibling set.
|
|
28
|
+
*/
|
|
29
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
|
+
exports.RELATION_KEYS_HEAD = void 0;
|
|
31
|
+
exports.compileRelationOp = compileRelationOp;
|
|
32
|
+
exports.runRelationOp = runRelationOp;
|
|
33
|
+
exports.distributeToParent = distributeToParent;
|
|
34
|
+
const makesql_1 = require("./makesql/makesql");
|
|
35
|
+
const handler_1 = require("./makesql/handler");
|
|
36
|
+
const compile_relation_1 = require("./makesql/compile-relation");
|
|
37
|
+
/** The reserved input head the relation batch query binds its deduped key array to. */
|
|
38
|
+
exports.RELATION_KEYS_HEAD = '__keys';
|
|
39
|
+
/**
|
|
40
|
+
* Compile ONE {@link RelationDecl} into a STATIC {@link RelationOp} via the makeSQL relation
|
|
41
|
+
* builders. The batch query selects the child rows whose {@link RelationDecl.targetKey} is in
|
|
42
|
+
* the deduped parent-key set. PG stays byte-identical to v1's `LazyRelation`; MySQL/SQLite use
|
|
43
|
+
* the single-JSON-param server-side form. A `hasMany` with `limit` compiles to the per-parent
|
|
44
|
+
* LATERAL (PG) / ROW_NUMBER (MySQL·SQLite) form. The SQL text is FIXED (the array binds as one
|
|
45
|
+
* param regardless of length), so it needs no per-input recompile.
|
|
46
|
+
*/
|
|
47
|
+
function compileRelationOp(decl) {
|
|
48
|
+
if (decl.kind !== 'hasMany' && decl.limit !== undefined) {
|
|
49
|
+
throw new Error(`relation '${decl.name}': a per-parent 'limit' is only valid for hasMany (got ${decl.kind})`);
|
|
50
|
+
}
|
|
51
|
+
if (decl.limit !== undefined && (!Number.isInteger(decl.limit) || decl.limit < 0)) {
|
|
52
|
+
throw new Error(`relation '${decl.name}': per-parent limit must be a non-negative integer (got ${String(decl.limit)})`);
|
|
53
|
+
}
|
|
54
|
+
if (decl.limit !== undefined && decl.order === undefined) {
|
|
55
|
+
throw new Error(`relation '${decl.name}': a per-parent 'limit' requires an explicit 'order' (the per-parent window needs a deterministic ordering to decide which ${decl.limit} rows each parent keeps)`);
|
|
56
|
+
}
|
|
57
|
+
const dialect = decl.dialect ?? 'sqlite';
|
|
58
|
+
const composite = isCompositeDecl(decl);
|
|
59
|
+
const sql = compiledBatchSql(decl, dialect);
|
|
60
|
+
// CROSS-DB (V0 R1): carry the target connection tag ONLY when set (a same-DB relation stays
|
|
61
|
+
// untagged, so existing bundles are byte-unchanged — the field is additive/optional).
|
|
62
|
+
const conn = decl.connection !== undefined ? { connection: decl.connection } : {};
|
|
63
|
+
if (composite) {
|
|
64
|
+
return {
|
|
65
|
+
name: decl.name,
|
|
66
|
+
kind: decl.kind,
|
|
67
|
+
parentKeys: [...decl.parentKeys],
|
|
68
|
+
targetKeys: [...decl.targetKeys],
|
|
69
|
+
dialect,
|
|
70
|
+
...conn,
|
|
71
|
+
sql,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
return {
|
|
75
|
+
name: decl.name,
|
|
76
|
+
kind: decl.kind,
|
|
77
|
+
parentKey: decl.parentKey,
|
|
78
|
+
targetKey: decl.targetKey,
|
|
79
|
+
dialect,
|
|
80
|
+
...conn,
|
|
81
|
+
sql,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* A relation decl is COMPOSITE iff it carries `parentKeys`/`targetKeys` arrays. Validates the two
|
|
86
|
+
* are present together, equal-length (paired positionally), and non-empty; and that the single-key
|
|
87
|
+
* `parentKey`/`targetKey` are NOT also set (mutually exclusive). Single-key iff both arrays absent.
|
|
88
|
+
*/
|
|
89
|
+
function isCompositeDecl(decl) {
|
|
90
|
+
const hasArrays = decl.parentKeys !== undefined || decl.targetKeys !== undefined;
|
|
91
|
+
if (!hasArrays) {
|
|
92
|
+
if (decl.parentKey === undefined || decl.targetKey === undefined) {
|
|
93
|
+
throw new Error(`relation '${decl.name}': a single-key relation requires 'parentKey' and 'targetKey'`);
|
|
94
|
+
}
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
97
|
+
if (decl.parentKeys === undefined || decl.targetKeys === undefined) {
|
|
98
|
+
throw new Error(`relation '${decl.name}': a composite-key relation requires BOTH 'parentKeys' and 'targetKeys'`);
|
|
99
|
+
}
|
|
100
|
+
if (decl.parentKeys.length === 0 || decl.parentKeys.length !== decl.targetKeys.length) {
|
|
101
|
+
throw new Error(`relation '${decl.name}': 'parentKeys' and 'targetKeys' must be non-empty and equal-length (got ${decl.parentKeys.length} vs ${decl.targetKeys.length})`);
|
|
102
|
+
}
|
|
103
|
+
if (decl.parentKey !== undefined || decl.targetKey !== undefined) {
|
|
104
|
+
throw new Error(`relation '${decl.name}': cannot mix single-key ('parentKey'/'targetKey') with composite ('parentKeys'/'targetKeys')`);
|
|
105
|
+
}
|
|
106
|
+
return true;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Compile the STATIC batch SELECT text: the makeSQL relation builder emits complete tuned SQL
|
|
110
|
+
* whose deduped-key array is ONE param. We compile against a single placeholder key array so
|
|
111
|
+
* the text is fixed; the runtime re-binds the real deduped keys against the SAME text (the
|
|
112
|
+
* single-JSON / `= ANY` forms are length-independent, so the text is stable).
|
|
113
|
+
*/
|
|
114
|
+
function compiledBatchSql(decl, dialect) {
|
|
115
|
+
// A COMPOSITE decl compiles to the STATIC composite form (PG: one array param per key column;
|
|
116
|
+
// MySQL/SQLite: one JSON array-of-tuples param) — length-independent, so the text is fixed. A
|
|
117
|
+
// per-parent `limit` selects the STATIC composite-LIMITED builder (PG LATERAL / MySQL·SQLite
|
|
118
|
+
// ROW_NUMBER window over the SAME static key-set predicate — #47 last completeness gap).
|
|
119
|
+
if (decl.parentKeys !== undefined) {
|
|
120
|
+
const compositeBase = {
|
|
121
|
+
dialect,
|
|
122
|
+
tableName: decl.targetTable,
|
|
123
|
+
select: decl.select.join(', '),
|
|
124
|
+
order: decl.order,
|
|
125
|
+
targetKeys: [...decl.targetKeys],
|
|
126
|
+
deferPgArrayCast: true,
|
|
127
|
+
};
|
|
128
|
+
const node = decl.limit !== undefined
|
|
129
|
+
? (0, compile_relation_1.compileCompositeKeyStaticLimited)({ ...compositeBase, limit: decl.limit })
|
|
130
|
+
: (0, compile_relation_1.compileCompositeKeyStaticUnlimited)(compositeBase);
|
|
131
|
+
return (0, makesql_1.assembleMakeSQL)(node).sql;
|
|
132
|
+
}
|
|
133
|
+
// A one-element placeholder key set fixes the SQL text (single-JSON-param / `= ANY` forms are
|
|
134
|
+
// value-length-independent). The concrete keys are bound at execute time.
|
|
135
|
+
const placeholderKeys = [null];
|
|
136
|
+
const base = {
|
|
137
|
+
dialect,
|
|
138
|
+
tableName: decl.targetTable,
|
|
139
|
+
select: decl.select.join(', '),
|
|
140
|
+
order: decl.order,
|
|
141
|
+
targetKey: decl.targetKey,
|
|
142
|
+
values: placeholderKeys,
|
|
143
|
+
// The keys are UNKNOWN at symbolic compile (placeholder set), so the PG `= ANY(?::<T>[])`
|
|
144
|
+
// element type is DEFERRED to render (#46) — resolved from the real deduped keys via
|
|
145
|
+
// `inferPgArrayType`, reproducing v1's live-correct cast (`::int[]` for int keys). Baking a
|
|
146
|
+
// compile-time `text[]` here was the #43 regression (`integer = text` on real PG).
|
|
147
|
+
deferPgArrayCast: true,
|
|
148
|
+
};
|
|
149
|
+
const node = decl.limit !== undefined
|
|
150
|
+
? (0, compile_relation_1.compileSingleKeyLimited)({ ...base, limit: decl.limit })
|
|
151
|
+
: (0, compile_relation_1.compileSingleKeyUnlimited)(base);
|
|
152
|
+
// The builder emits the SQL with ONE `?` (the whole key array). Assemble to the flat text.
|
|
153
|
+
return (0, makesql_1.assembleMakeSQL)(node).sql;
|
|
154
|
+
}
|
|
155
|
+
/** The ordered PARENT key columns of an op (single-key → 1-element list; composite → the tuple). */
|
|
156
|
+
function parentKeyCols(op) {
|
|
157
|
+
return op.parentKeys ?? [op.parentKey];
|
|
158
|
+
}
|
|
159
|
+
/** The ordered CHILD key columns of an op (single-key → 1-element list; composite → the tuple). */
|
|
160
|
+
function targetKeyCols(op) {
|
|
161
|
+
return op.targetKeys ?? [op.targetKey];
|
|
162
|
+
}
|
|
163
|
+
/** The stringified key identity for dedupe/grouping. Single scalar → `String(v)`; tuple → joined. */
|
|
164
|
+
function keyIdentity(values) {
|
|
165
|
+
// A NUL separator no scalar `String(v)` contains, so distinct tuples never collide.
|
|
166
|
+
return values.map((v) => String(v)).join('');
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Bind the deduped keys to the batch op's params per dialect + arity. Single-key: PG binds the
|
|
170
|
+
* scalar array verbatim (`= ANY(?::t[])`); MySQL/SQLite bind the JSON-encoded array. Composite: PG
|
|
171
|
+
* binds ONE array param PER key column (transposed tuples → `unnest(?::t1[], ?::t2[])`);
|
|
172
|
+
* MySQL/SQLite bind ONE JSON array-of-tuples string. Returns the positional param list.
|
|
173
|
+
*/
|
|
174
|
+
function bindKeys(op, tuples) {
|
|
175
|
+
const composite = op.parentKeys !== undefined;
|
|
176
|
+
if (op.dialect === 'postgres') {
|
|
177
|
+
if (!composite)
|
|
178
|
+
return [tuples.map((t) => t[0])]; // ONE scalar array param
|
|
179
|
+
// Transpose tuples → per-column arrays: `[[1,a],[2,b]] → [[1,2],[a,b]]` — one array param each.
|
|
180
|
+
return parentKeyCols(op).map((_, col) => tuples.map((t) => t[col]));
|
|
181
|
+
}
|
|
182
|
+
// MySQL/SQLite: single-key → JSON scalar array; composite → JSON array-of-tuples. ONE param.
|
|
183
|
+
const payload = composite ? tuples.map((t) => [...t]) : tuples.map((t) => t[0]);
|
|
184
|
+
return [JSON.stringify(payload)];
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Run ONE {@link RelationOp} for a set of parent rows: dedup the parent-key tuples, render the
|
|
188
|
+
* STATIC batch SELECT once (dialect placeholder form) resolving the deferred PG array cast(s) from
|
|
189
|
+
* the REAL keys, execute it with the keys bound (single array / per-column arrays / JSON tuples),
|
|
190
|
+
* then group the child rows by their target-key identity. The single batch primitive BOTH the
|
|
191
|
+
* declarative-select and the lazy surface invoke, single-key AND composite.
|
|
192
|
+
*
|
|
193
|
+
* Returns `{ sql, keys, batch }` (`keys` = the deduped parent-key tuples). An empty key set issues
|
|
194
|
+
* NO query (the correct empty-set behavior — the membership over no keys selects nothing).
|
|
195
|
+
*/
|
|
196
|
+
function runRelationOp(op, parents, db) {
|
|
197
|
+
const pCols = parentKeyCols(op);
|
|
198
|
+
const keys = dedupeKeys(parents, pCols);
|
|
199
|
+
const batch = new Map();
|
|
200
|
+
// Resolve the deferred PG array cast(s) (#46) from the REAL keys BEFORE the `?`→`$N` render. A
|
|
201
|
+
// single-key op has ONE cast; a composite PG op has ONE cast PER key column — resolve each from
|
|
202
|
+
// its own column's key values, left-to-right (resolvePgArrayCast resolves the first token each
|
|
203
|
+
// call). MySQL/SQLite carry no cast token.
|
|
204
|
+
let cast = op.sql;
|
|
205
|
+
if (op.dialect === 'postgres') {
|
|
206
|
+
for (let col = 0; col < pCols.length; col++)
|
|
207
|
+
cast = (0, compile_relation_1.resolvePgArrayCast)(cast, keys.map((t) => t[col]));
|
|
208
|
+
}
|
|
209
|
+
const sql = (0, handler_1.renderPlaceholders)(cast, op.dialect);
|
|
210
|
+
if (keys.length === 0)
|
|
211
|
+
return { sql, keys, batch };
|
|
212
|
+
const tCols = targetKeyCols(op);
|
|
213
|
+
const rows = db.prepare(sql).all(...bindKeys(op, keys));
|
|
214
|
+
for (const row of rows) {
|
|
215
|
+
const k = keyIdentity(tCols.map((c) => row[c]));
|
|
216
|
+
const list = batch.get(k);
|
|
217
|
+
if (list === undefined)
|
|
218
|
+
batch.set(k, [row]);
|
|
219
|
+
else
|
|
220
|
+
list.push(row);
|
|
221
|
+
}
|
|
222
|
+
return { sql, keys, batch };
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* The deduped, non-null parent-key TUPLES (insertion order preserved — deterministic). A tuple is
|
|
226
|
+
* dropped if ANY of its key columns is null/undefined (no partial keys). Deduped on the stringified
|
|
227
|
+
* tuple identity (so `1` and `"1"` collapse exactly as `String(v)`).
|
|
228
|
+
*/
|
|
229
|
+
function dedupeKeys(parents, keyCols) {
|
|
230
|
+
const seen = new Set();
|
|
231
|
+
const out = [];
|
|
232
|
+
for (const p of parents) {
|
|
233
|
+
const tuple = keyCols.map((c) => p[c]);
|
|
234
|
+
if (tuple.some((v) => v === undefined || v === null))
|
|
235
|
+
continue;
|
|
236
|
+
const s = keyIdentity(tuple);
|
|
237
|
+
if (seen.has(s))
|
|
238
|
+
continue;
|
|
239
|
+
seen.add(s);
|
|
240
|
+
out.push(tuple);
|
|
241
|
+
}
|
|
242
|
+
return out;
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Distribute a resolved {@link RelationBatch} onto ONE parent per the relation cardinality:
|
|
246
|
+
* `hasMany` → the child list (`[]` when none); `belongsTo`/`hasOne` → the single child (or
|
|
247
|
+
* `null`). Keyed by the parent's key-tuple identity. `null`/`[]` is the declared cardinality's
|
|
248
|
+
* empty representation, not an ad-hoc default.
|
|
249
|
+
*/
|
|
250
|
+
function distributeToParent(op, parent, batch) {
|
|
251
|
+
const tuple = parentKeyCols(op).map((c) => parent[c]);
|
|
252
|
+
const rows = tuple.some((v) => v === undefined || v === null) ? undefined : batch.get(keyIdentity(tuple));
|
|
253
|
+
if (op.kind === 'hasMany')
|
|
254
|
+
return rows ?? [];
|
|
255
|
+
return rows !== undefined && rows.length > 0 ? rows[0] : null;
|
|
256
|
+
}
|
|
257
|
+
//# sourceMappingURL=relation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relation.js","sourceRoot":"","sources":["../../src/scp/relation.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;;;AAwGH,8CAsCC;AAmID,sCA2BC;AA2BD,gDASC;AA9UD,+CAAkE;AAClE,+CAAqE;AACrE,iEAMoC;AAmFpC,uFAAuF;AAC1E,QAAA,kBAAkB,GAAG,QAAQ,CAAC;AAE3C;;;;;;;GAOG;AACH,SAAgB,iBAAiB,CAAC,IAAkB;IAClD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CAAC,aAAa,IAAI,CAAC,IAAI,0DAA0D,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;IAChH,CAAC;IACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;QAClF,MAAM,IAAI,KAAK,CAAC,aAAa,IAAI,CAAC,IAAI,2DAA2D,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1H,CAAC;IACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QACzD,MAAM,IAAI,KAAK,CACb,aAAa,IAAI,CAAC,IAAI,8HAA8H,IAAI,CAAC,KAAK,0BAA0B,CACzL,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAY,IAAI,CAAC,OAAO,IAAI,QAAQ,CAAC;IAClD,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5C,4FAA4F;IAC5F,sFAAsF;IACtF,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAClF,IAAI,SAAS,EAAE,CAAC;QACd,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,UAAU,EAAE,CAAC,GAAI,IAAI,CAAC,UAAgC,CAAC;YACvD,UAAU,EAAE,CAAC,GAAI,IAAI,CAAC,UAAgC,CAAC;YACvD,OAAO;YACP,GAAG,IAAI;YACP,GAAG;SACJ,CAAC;IACJ,CAAC;IACD,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,OAAO;QACP,GAAG,IAAI;QACP,GAAG;KACJ,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,eAAe,CAAC,IAAkB;IACzC,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC;IACjF,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACjE,MAAM,IAAI,KAAK,CAAC,aAAa,IAAI,CAAC,IAAI,+DAA+D,CAAC,CAAC;QACzG,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACnE,MAAM,IAAI,KAAK,CAAC,aAAa,IAAI,CAAC,IAAI,yEAAyE,CAAC,CAAC;IACnH,CAAC;IACD,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;QACtF,MAAM,IAAI,KAAK,CAAC,aAAa,IAAI,CAAC,IAAI,4EAA4E,IAAI,CAAC,UAAU,CAAC,MAAM,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;IAC5K,CAAC;IACD,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACjE,MAAM,IAAI,KAAK,CAAC,aAAa,IAAI,CAAC,IAAI,+FAA+F,CAAC,CAAC;IACzI,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,SAAS,gBAAgB,CAAC,IAAkB,EAAE,OAAgB;IAC5D,8FAA8F;IAC9F,8FAA8F;IAC9F,6FAA6F;IAC7F,yFAAyF;IACzF,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QAClC,MAAM,aAAa,GAAG;YACpB,OAAO;YACP,SAAS,EAAE,IAAI,CAAC,WAAW;YAC3B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9B,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,UAAU,EAAE,CAAC,GAAI,IAAI,CAAC,UAAgC,CAAC;YACvD,gBAAgB,EAAE,IAAI;SACvB,CAAC;QACF,MAAM,IAAI,GACR,IAAI,CAAC,KAAK,KAAK,SAAS;YACtB,CAAC,CAAC,IAAA,mDAAgC,EAAC,EAAE,GAAG,aAAa,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;YAC3E,CAAC,CAAC,IAAA,qDAAkC,EAAC,aAAa,CAAC,CAAC;QACxD,OAAO,IAAA,yBAAe,EAAC,IAAI,CAAC,CAAC,GAAG,CAAC;IACnC,CAAC;IACD,8FAA8F;IAC9F,0EAA0E;IAC1E,MAAM,eAAe,GAAc,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG;QACX,OAAO;QACP,SAAS,EAAE,IAAI,CAAC,WAAW;QAC3B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QAC9B,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,SAAS,EAAE,IAAI,CAAC,SAAmB;QACnC,MAAM,EAAE,eAAe;QACvB,0FAA0F;QAC1F,qFAAqF;QACrF,4FAA4F;QAC5F,mFAAmF;QACnF,gBAAgB,EAAE,IAAI;KACvB,CAAC;IACF,MAAM,IAAI,GACR,IAAI,CAAC,KAAK,KAAK,SAAS;QACtB,CAAC,CAAC,IAAA,0CAAuB,EAAC,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QACzD,CAAC,CAAC,IAAA,4CAAyB,EAAC,IAAI,CAAC,CAAC;IACtC,2FAA2F;IAC3F,OAAO,IAAA,yBAAe,EAAC,IAAI,CAAC,CAAC,GAAG,CAAC;AACnC,CAAC;AAYD,oGAAoG;AACpG,SAAS,aAAa,CAAC,EAAc;IACnC,OAAO,EAAE,CAAC,UAAU,IAAI,CAAC,EAAE,CAAC,SAAmB,CAAC,CAAC;AACnD,CAAC;AAED,mGAAmG;AACnG,SAAS,aAAa,CAAC,EAAc;IACnC,OAAO,EAAE,CAAC,UAAU,IAAI,CAAC,EAAE,CAAC,SAAmB,CAAC,CAAC;AACnD,CAAC;AAED,qGAAqG;AACrG,SAAS,WAAW,CAAC,MAA0B;IAC7C,oFAAoF;IACpF,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChD,CAAC;AAED;;;;;GAKG;AACH,SAAS,QAAQ,CAAC,EAAc,EAAE,MAA4B;IAC5D,MAAM,SAAS,GAAG,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC;IAC9C,IAAI,EAAE,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;QAC9B,IAAI,CAAC,SAAS;YAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,yBAAyB;QAC3E,gGAAgG;QAChG,OAAO,aAAa,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACtE,CAAC;IACD,6FAA6F;IAC7F,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChF,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;AACnC,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,aAAa,CAC3B,EAAc,EACd,OAA2C,EAC3C,EAAkB;IAElB,MAAM,KAAK,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC;IAChC,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACxC,MAAM,KAAK,GAAkB,IAAI,GAAG,EAAE,CAAC;IACvC,+FAA+F;IAC/F,gGAAgG;IAChG,+FAA+F;IAC/F,2CAA2C;IAC3C,IAAI,IAAI,GAAG,EAAE,CAAC,GAAG,CAAC;IAClB,IAAI,EAAE,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;QAC9B,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE;YAAE,IAAI,GAAG,IAAA,qCAAkB,EAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACxG,CAAC;IACD,MAAM,GAAG,GAAG,IAAA,4BAAkB,EAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;IACjD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACnD,MAAM,KAAK,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC;IAChC,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,CAA8B,CAAC;IACrF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChD,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,IAAI,KAAK,SAAS;YAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;;YACvC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtB,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAC9B,CAAC;AAED;;;;GAIG;AACH,SAAS,UAAU,CAAC,OAA2C,EAAE,OAA0B;IACzF,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,GAAG,GAAgB,EAAE,CAAC;IAC5B,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,CAAC;YAAE,SAAS;QAC/D,MAAM,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,SAAS;QAC1B,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACZ,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;GAKG;AACH,SAAgB,kBAAkB,CAChC,EAAc,EACd,MAA+B,EAC/B,KAAoB;IAEpB,MAAM,KAAK,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1G,IAAI,EAAE,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,IAAI,IAAI,EAAE,CAAC;IAC7C,OAAO,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAChE,CAAC"}
|