litedbmodel 2.0.1 → 2.1.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.
Files changed (97) hide show
  1. package/dist/decorators.d.ts.map +1 -1
  2. package/dist/decorators.js +44 -24
  3. package/dist/decorators.js.map +1 -1
  4. package/dist/drivers/mysql.d.ts.map +1 -1
  5. package/dist/drivers/mysql.js +6 -0
  6. package/dist/drivers/mysql.js.map +1 -1
  7. package/dist/drivers/postgres.d.ts.map +1 -1
  8. package/dist/drivers/postgres.js +7 -0
  9. package/dist/drivers/postgres.js.map +1 -1
  10. package/dist/drivers/sqlite.d.ts +2 -0
  11. package/dist/drivers/sqlite.d.ts.map +1 -1
  12. package/dist/drivers/sqlite.js +37 -2
  13. package/dist/drivers/sqlite.js.map +1 -1
  14. package/dist/scp/authoring.d.ts +66 -3
  15. package/dist/scp/authoring.d.ts.map +1 -1
  16. package/dist/scp/authoring.js +194 -5
  17. package/dist/scp/authoring.js.map +1 -1
  18. package/dist/scp/catalog.d.ts +6 -2
  19. package/dist/scp/catalog.d.ts.map +1 -1
  20. package/dist/scp/catalog.js +17 -2
  21. package/dist/scp/catalog.js.map +1 -1
  22. package/dist/scp/codegen.d.ts +132 -26
  23. package/dist/scp/codegen.d.ts.map +1 -1
  24. package/dist/scp/codegen.js +546 -35
  25. package/dist/scp/codegen.js.map +1 -1
  26. package/dist/scp/coltype.d.ts +124 -0
  27. package/dist/scp/coltype.d.ts.map +1 -0
  28. package/dist/scp/coltype.js +408 -0
  29. package/dist/scp/coltype.js.map +1 -0
  30. package/dist/scp/dialect.d.ts +12 -3
  31. package/dist/scp/dialect.d.ts.map +1 -1
  32. package/dist/scp/dialect.js +12 -3
  33. package/dist/scp/dialect.js.map +1 -1
  34. package/dist/scp/fragment/assemble.d.ts.map +1 -1
  35. package/dist/scp/fragment/assemble.js +10 -2
  36. package/dist/scp/fragment/assemble.js.map +1 -1
  37. package/dist/scp/fragment/compile-pg.js +4 -4
  38. package/dist/scp/guard.d.ts +1 -1
  39. package/dist/scp/guard.d.ts.map +1 -1
  40. package/dist/scp/guard.js +6 -0
  41. package/dist/scp/guard.js.map +1 -1
  42. package/dist/scp/index.cjs +10003 -4917
  43. package/dist/scp/index.d.ts +8 -5
  44. package/dist/scp/index.d.ts.map +1 -1
  45. package/dist/scp/index.js +35 -9
  46. package/dist/scp/index.js.map +1 -1
  47. package/dist/scp/index.mjs +1343 -213
  48. package/dist/scp/makesql/authoring-compile.d.ts.map +1 -1
  49. package/dist/scp/makesql/authoring-compile.js +11 -0
  50. package/dist/scp/makesql/authoring-compile.js.map +1 -1
  51. package/dist/scp/makesql/compile-select.d.ts +8 -1
  52. package/dist/scp/makesql/compile-select.d.ts.map +1 -1
  53. package/dist/scp/makesql/compile-select.js +1 -1
  54. package/dist/scp/makesql/compile-select.js.map +1 -1
  55. package/dist/scp/makesql/index.d.ts +2 -3
  56. package/dist/scp/makesql/index.d.ts.map +1 -1
  57. package/dist/scp/makesql/index.js +6 -6
  58. package/dist/scp/makesql/index.js.map +1 -1
  59. package/dist/scp/makesql/json-batch.d.ts.map +1 -1
  60. package/dist/scp/makesql/json-batch.js +6 -1
  61. package/dist/scp/makesql/json-batch.js.map +1 -1
  62. package/dist/scp/makesql/outtype.d.ts +99 -0
  63. package/dist/scp/makesql/outtype.d.ts.map +1 -0
  64. package/dist/scp/makesql/outtype.js +328 -0
  65. package/dist/scp/makesql/outtype.js.map +1 -0
  66. package/dist/scp/makesql/pool-executor.d.ts +70 -0
  67. package/dist/scp/makesql/pool-executor.d.ts.map +1 -1
  68. package/dist/scp/makesql/pool-executor.js +73 -5
  69. package/dist/scp/makesql/pool-executor.js.map +1 -1
  70. package/dist/scp/makesql/static-bundle.d.ts +41 -30
  71. package/dist/scp/makesql/static-bundle.d.ts.map +1 -1
  72. package/dist/scp/makesql/static-bundle.js +351 -131
  73. package/dist/scp/makesql/static-bundle.js.map +1 -1
  74. package/dist/scp/makesql/tx.d.ts +1 -1
  75. package/dist/scp/makesql/tx.d.ts.map +1 -1
  76. package/dist/scp/makesql/tx.js +48 -3
  77. package/dist/scp/makesql/tx.js.map +1 -1
  78. package/dist/scp/makesql/writeouttype.d.ts +65 -0
  79. package/dist/scp/makesql/writeouttype.d.ts.map +1 -0
  80. package/dist/scp/makesql/writeouttype.js +194 -0
  81. package/dist/scp/makesql/writeouttype.js.map +1 -0
  82. package/dist/scp/relation.d.ts +15 -1
  83. package/dist/scp/relation.d.ts.map +1 -1
  84. package/dist/scp/relation.js +61 -2
  85. package/dist/scp/relation.js.map +1 -1
  86. package/dist/scp/runtime.d.ts +17 -5
  87. package/dist/scp/runtime.d.ts.map +1 -1
  88. package/dist/scp/runtime.js +55 -14
  89. package/dist/scp/runtime.js.map +1 -1
  90. package/docs/BENCHMARK.md +58 -56
  91. package/docs/benchmark-chart.svg +166 -166
  92. package/docs/proposal/litedbmodel-v2-scp-architecture.md +51 -0
  93. package/package.json +8 -2
  94. package/dist/scp/makesql/ir.d.ts +0 -42
  95. package/dist/scp/makesql/ir.d.ts.map +0 -1
  96. package/dist/scp/makesql/ir.js +0 -66
  97. package/dist/scp/makesql/ir.js.map +0 -1
@@ -1,39 +1,98 @@
1
1
  /**
2
2
  * litedbmodel v2 SCP — mode-3 codegen (WS7f, #35; spec §9 exec-mode 3 / §10 / §11; makeSQL flip,
3
- * epic #43/#45 Phase B).
3
+ * epic #43/#45 Phase B; #60 milestone 1 — typed-NATIVE READ codegen, bc#77/#90).
4
4
  *
5
5
  * The static-codegen execution mode ("Codegen・静的(全言語)— IR → 各言語ソース生成 runtime≈0,
6
6
  * 入力は可搬IRのみ, bc#13 共有 generator に SQL catalog を供給" — spec §9). It takes a §8 STATIC
7
7
  * makeSQL {@link SqlBundle} and, per target language, emits:
8
8
  *
9
- * 1. **Behavior module** — bc's SHARED generator (`generateModule`, bc#13) run over the bundle's
10
- * portable IR (a read bundle's surrogate `ComponentGraphIR`, or the `makeSQL` component IR for
11
- * a write), baked as a language-native LITERAL with a `bind(handlers)` accessor delegating to
12
- * `runBehavior`. litedbmodel writes NO execution logic here — codegen is upstream-owned (bc).
9
+ * 1. **Behavior module** — bc's SHARED generator run over the bundle's portable IR through bc's
10
+ * de-interpreted, RUNTIME-FREE emitter. For a READ bundle covered by bc's typed-NATIVE
11
+ * endpoint (`rust-typed-native` / `go-typed-native`, bc#77/#90 — the 1.0 read de-box: fully
12
+ * concrete `HandlerNR<Comp>`/`InNR<Comp>`/`PortsNR<Comp><node>`/`RawRowNR<Comp><node>` structs,
13
+ * ZERO boxed `Value`/`RawValue`, ZERO IR baked into the module), the CODEGEN-ONLY lowering
14
+ * below ({@link lowerReadGraphForTypedNative}) makes the read's shape structurally ELIGIBLE
15
+ * (derives each real Select-node's referenced heads from its statements → individual scalar ref
16
+ * ports + types the component's `inputPorts` from the schema) before handing it to bc. For a WRITE bundle, or a
17
+ * READ shape typed-native does not (yet) cover, codegen uses bc's existing de-interpreted
18
+ * STRAIGHT-LINE endpoint (`<lang>-straightline`, bc#75) — see {@link typedEmitterFor}.
13
19
  * 2. **SQL catalog companion** — the pure-JSON STATIC makeSQL catalog (per-node statement
14
20
  * templates / relations / transaction). A codegen consumer's thin SQL layer reads it to
15
21
  * evaluate skip + value-specs → assemble → render → execute (identically to the mode-2 runtime).
16
22
  *
17
- * ## Byte-identical to the thin-runtime (mode-2), by construction
23
+ * ## #60 milestone 1 scope (CODEGEN-PATH ONLY)
18
24
  *
19
- * The companion IS the bundle, so a codegen runtime that evaluates it drives the IDENTICAL
20
- * static-makeSQL render/execute path {@link executeBundle} uses — SQL text (all dialects) and
21
- * results are identical, not approximately equal. The TS leg PROVES this by executing via the
22
- * artifact and asserting exact equality vs {@link executeBundle} (see {@link codegenExecuteBundleForTest}).
25
+ * This lowering exists SOLELY for the codegen emitter call — it builds a NEW, separate
26
+ * `ComponentGraphIR` from the bundle's `readGraph`; it never mutates `SqlBundle`/`ReadGraph` and
27
+ * never touches the shared `readGraph`/`executeReadGraph` the native exec surface (and the
28
+ * frozen conformance corpus) depend on. Those keep consuming the REAL Select-node
29
+ * `readGraph.ir`, completely unaffected by anything in this file.
30
+ *
31
+ * ## Behavior-identical to the thin-runtime (mode-2), by construction
32
+ *
33
+ * The generated module is observationally equivalent to `runBehavior` (same values, same emitted
34
+ * op sequence, same Failure code/message), and the companion IS the bundle, so a codegen runtime
35
+ * that drives it follows the IDENTICAL static-makeSQL render/execute path {@link executeBundle}
36
+ * uses — SQL text (all dialects) and results are identical, not approximately equal. The TS leg
37
+ * PROVES this by executing via the artifact and asserting exact equality vs {@link executeBundle}
38
+ * (see {@link codegenExecuteBundleForTest}).
39
+ *
40
+ * ## No literal-bake / no boxed fallback
41
+ *
42
+ * typed-native fails CLOSED on an uncovered shape (a `map`/`cond` relation kind it does not cover,
43
+ * or an input head that cannot lower to a native port). Such a shape is NOT silently regenerated on
44
+ * the boxed `-typed`/`-typed-raw` emitter — it THROWS, naming the exact gap, so it can be tracked as
45
+ * a bc coverage gap rather than masked.
46
+ *
47
+ * IN-list / array-bound WHERE heads (the `whereIn` `{__jsonArray:{ref:[head]},dialect}` param) are
48
+ * now COVERED via bc#110 (native array/list port for a componentRef input port): the lowering
49
+ * resolves the IN-list column's element scalar and emits a native ARRAY input port
50
+ * (`{type:'array', elemType}` → `Vec<ElemT>`/`[]ElemT`), so `complexWhere`/`inList` reach the
51
+ * zero-boxing native hot path (no serde_json/encoding-json, no boxed `Value`). They no longer
52
+ * fail closed as a bc#86/coverage gap.
23
53
  */
24
- import { type ComponentGraphIR, type GeneratedModule, type Scope, type Value } from 'behavior-contracts';
54
+ import { type GeneratedModule, type Scope, type Value } from 'behavior-contracts';
55
+ import type { ComponentGraphIR } from './authoring';
25
56
  import type { SqlBundle, SqliteDb } from './runtime';
26
57
  import type { DialectName } from './dialect';
27
58
  import type { RelationOp } from './relation';
28
59
  import type { ReadGraph } from './makesql/static-bundle';
29
60
  import type { TransactionPlan } from './makesql/tx';
61
+ import { type ColumnTypeResolver } from './coltype';
30
62
  /**
31
63
  * The languages litedbmodel mode-3 codegen supports — exactly the set bc's shared generator
32
- * registers (bc#13 SP1 typescript/python + SP2 go/rust/php). {@link assertLanguageSupported}
64
+ * registers (bc#13 SP1 typescript/python + SP2 go/rust/php). {@link codegenEmitterFor}
33
65
  * verifies against the LIVE registry so a bc capability drift is caught loudly.
34
66
  */
35
67
  export declare const CODEGEN_LANGUAGES: readonly ["typescript", "python", "go", "rust", "php"];
36
68
  export type CodegenLanguage = (typeof CODEGEN_LANGUAGES)[number];
69
+ /**
70
+ * The bc READ emitter litedbmodel drives for each codegen target (#60 milestone 1): the
71
+ * **de-interpreted, RUNTIME-FREE typed-NATIVE** endpoint (bc#77/#90) for go/rust — ZERO boxed
72
+ * `Value`/`RawValue`, ZERO IR baked into the module, concrete `HandlerNR`/`InNR`/`PortsNR`/
73
+ * `RawRowNR` structs. There is **NO literal / straight-line / boxed-typed fallback** for a read: an
74
+ * unspec'd fallback is INVALID (it silently swallows the "this shape can't be natively codegen'd"
75
+ * signal) — a read shape typed-native does not cover MUST fail loudly at generation, naming the gap
76
+ * (report it as a bc#86 coverage gap), never silently regenerate on `-typed`/`-typed-raw`.
77
+ *
78
+ * `-typed-raw` (bc#76, the boxed-wire intermediate) and `-typed` (the boxed-Value intermediate) are
79
+ * RETIRED from litedbmodel's codegen surface entirely (#60 milestone 1) — typed-native supersedes
80
+ * both for every read shape it covers (bc#77/#90: single-componentRef reads AND the `map`
81
+ * relationKind:single|connection shape, bc#86 part 2).
82
+ *
83
+ * - ts: **no typed-native endpoint registered yet** (bc has not shipped `typescript-typed-native`).
84
+ * TS stays on its existing `typescript-typed` (boxed) endpoint until bc adds one — a DECLARED,
85
+ * reported gap (not silently mirrored to go/rust's retirement), tracked as a bc#77 TS follow-up.
86
+ * - **python/php: NOT present.** bc registers no de-boxed typed endpoint for them (capability limit).
87
+ * litedbmodel does NOT substitute the literal (≈ir) emitter — that would be an unspec'd fallback.
88
+ * Codegen for py/php is a bc capability gap that ERRORS (ESCALATE to bc), never a silent literal.
89
+ *
90
+ * WRITES (batchInsert / gate-first tx) are NOT reads — they are NOT routed through this table at
91
+ * all (#60 milestone 1): a write bundle stays on the existing write/tx execution path
92
+ * (`executeTransactionBundle` / the native adapter's hand-written tx mirror), never a codegen
93
+ * module, boxed or typed-raw. {@link generateCodegenArtifact} throws if asked to codegen a write.
94
+ */
95
+ export declare const CODEGEN_EMITTER: Partial<Record<CodegenLanguage, string>>;
37
96
  /**
38
97
  * The SQL catalog companion (spec §9): the STATIC makeSQL bundle fields the codegen consumer's
39
98
  * thin SQL layer reads to evaluate + render + execute. Pure JSON — round-trips losslessly.
@@ -55,39 +114,86 @@ export interface SqlCatalogCompanion {
55
114
  readonly relations: Record<string, RelationOp>;
56
115
  /** Derived gate-first write-time-relations transaction plan (spec §6/§8), for a Command bundle. */
57
116
  readonly transaction?: TransactionPlan;
117
+ /**
118
+ * WRITE bundles: the codegen typed-de-box `outputType` (the TransactionResult typed shape). Rides
119
+ * the companion so a codegen consumer that reassembles the bundle from the artifact round-trips it
120
+ * losslessly (the read de-box carries its outType/outputType inside `readGraph.ir` instead).
121
+ */
122
+ readonly outputType?: unknown;
58
123
  }
59
124
  /** The full codegen artifact for one bundle × one language. */
60
125
  export interface CodegenArtifact {
61
126
  /** The target language. */
62
127
  readonly language: CodegenLanguage;
63
- /** The generated behavior module (bc's shared generator output — IR baked as a native literal). */
128
+ /** The generated behavior module (bc's SHARED STRAIGHT-LINE generator output — real static code). */
64
129
  readonly module: GeneratedModule;
65
130
  /** The SQL catalog companion sidecar (the STATIC makeSQL execution catalog). */
66
131
  readonly companion: SqlCatalogCompanion;
67
- /** The portable IR baked into {@link module}. */
68
- readonly ir: ComponentGraphIR;
69
132
  /** The originating bundle (so the equivalence leg re-executes the SAME static bundle). */
70
133
  readonly bundle: SqlBundle;
71
134
  }
72
135
  /**
73
- * The portable {@link ComponentGraphIR} view of a §8 bundle: a read bundle's surrogate IR (each
74
- * SQL node → a `makeSQL` node), or the single `makeSQL` component IR for a write. Baking THIS is
75
- * what makes the generated module a genuine bc artifact; the static SQL catalog rides the companion.
136
+ * The portable {@link ComponentGraphIR} view of a §8 READ bundle: `compileBehaviors`' real-node
137
+ * read-graph IR (the de-surrogated `Select`/`Count`/map nodes; #12) — the SAME IR the native exec
138
+ * surface (`executeReadGraph`) walks (via `bundle.readGraph.ir` directly). litedbmodel constructs NO
139
+ * `ComponentGraphIR` literal here; it returns the compiler's own output. {@link generateCodegenArtifact}
140
+ * does NOT use this for a typed-native READ target (that uses the codegen-only lowered form,
141
+ * {@link lowerReadGraphForTypedNative}); this is the portable IR for a boxed READ endpoint / fingerprint.
142
+ *
143
+ * WRITE bundles have NO portable component-graph IR (they carry a single compiled `statement`, not a
144
+ * component graph — and are NOT codegen-module cases: {@link generateCodegenArtifact} rejects them).
145
+ * There is therefore no hand-built `makeSQL` write surrogate anymore (#12) — a write bundle throws.
76
146
  */
77
147
  export declare function bundleToPortableIR(bundle: SqlBundle): ComponentGraphIR;
148
+ /** A head could not be typed for typed-native codegen — the read is NOT typed-native-coverable. */
149
+ export declare class TypedNativeCoverageError extends Error {
150
+ readonly component: string;
151
+ readonly reasons: readonly string[];
152
+ constructor(component: string, reasons: readonly string[]);
153
+ }
78
154
  /**
79
- * Assert the requested language is one bc's shared generator can emit — checked against the LIVE
80
- * registry, not just the {@link CODEGEN_LANGUAGES} constant, so a bc capability drift fails LOUDLY.
155
+ * Lower a read bundle's REAL Select-node `ComponentGraphIR` into a NEW, CODEGEN-ONLY IR eligible
156
+ * for bc's typed-native endpoint (#60 milestone 1): derive each node's referenced heads from its
157
+ * `statementsById` fragments and emit individual native-scalar `{ref:[head]}` ports, typing the
158
+ * component's `inputPorts` from the schema (via {@link deriveHeadTypesFromStatements}). Throws
159
+ * {@link TypedNativeCoverageError} if any referenced head cannot be natively typed (e.g. an IN-list's
160
+ * array head) — NO silent `unknown` port, NO fallback. Does NOT mutate `bundle`/`bundle.readGraph`
161
+ * (a fresh IR object is returned); the native `executeReadGraph` keeps consuming the real `readGraph.ir`.
162
+ *
163
+ * Scope: bc's typed-native predicate itself still governs `map`/`cond`/relationKind/policy
164
+ * coverage (this lowering does not special-case those — `generateModule` fails closed on them with
165
+ * its own detailed diagnostic, which this function does not need to duplicate).
81
166
  */
82
- export declare function assertLanguageSupported(language: string, registered: readonly string[]): asserts language is CodegenLanguage;
167
+ export declare function lowerReadGraphForTypedNative(readGraph: ReadGraph, resolveColumnType: ColumnTypeResolver): ComponentGraphIR;
83
168
  /**
84
- * Generate the mode-3 codegen artifact for ONE §8 bundle in ONE target language: bc's SHARED
85
- * generator bakes the IR literal + emits `bind(handlers)`, and we attach the STATIC SQL catalog
86
- * companion. litedbmodel supplies the input (IR + catalog); bc owns the emitter.
169
+ * Resolve the READ codegen emitter for a target language, or throw. No fallback: a language
170
+ * without a registered endpoint is a bc capability gap that fails LOUDLY (never a silent
171
+ * substitution of the literal/interpreter/boxed emitter — an unspec'd fallback is invalid).
172
+ */
173
+ export declare function typedEmitterFor(language: string, registered: readonly string[]): string;
174
+ /**
175
+ * Shape-INDEPENDENT emitter resolution — identical to {@link typedEmitterFor} now that there is
176
+ * exactly one READ endpoint per language (kept as a distinct export for callers that historically
177
+ * used the shape-independent form; both resolve the SAME table).
178
+ */
179
+ export declare function codegenEmitterFor(language: string, registered: readonly string[]): string;
180
+ /**
181
+ * Generate the mode-3 READ codegen artifact for ONE §8 READ bundle in ONE target language. Lowers
182
+ * the bundle's real Select-node read graph into the native-scalar-port IR
183
+ * ({@link lowerReadGraphForTypedNative}) FIRST — for go/rust's typed-NATIVE endpoint (bc#77/#90,
184
+ * RUNTIME-FREE) AND for TS's boxed `typescript-typed` endpoint alike. Both consume the SAME
185
+ * genuine-bound-head shape: the lowering derives each node's ports from its compiled
186
+ * `statementsById` fragments, so a WHERE COLUMN-NAME MARKER head (`whereGe($.created_at, $.since)`
187
+ * — `$.created_at` names the column, is never bound) is EXCLUDED from the emitted ports/input
188
+ * struct, exactly as go/rust already handled it (#12 regression: TS previously fed the raw IR and
189
+ * emitted a stray `created_at` binding → `unknown binding: created_at` at execution).
190
+ *
191
+ * WRITE bundles are OUT OF SCOPE (#60 milestone 1: writes stay on the existing write/tx execution
192
+ * path, never a codegen module) — throws if `bundle.readGraph` is absent.
87
193
  */
88
- export declare function generateCodegenArtifact(bundle: SqlBundle, language: string, registeredLanguages: readonly string[], runtimeImport?: string): CodegenArtifact;
194
+ export declare function generateCodegenArtifact(bundle: SqlBundle, language: string, registeredLanguages: readonly string[], resolveColumnType: ColumnTypeResolver, runtimeImport?: string): CodegenArtifact;
89
195
  /**
90
- * The TS codegen EXECUTION path used to PROVE byte-identity: a codegen runtime reads the SQL
196
+ * The TS codegen EXECUTION path used to PROVE behavior-identity: a codegen runtime reads the SQL
91
197
  * catalog companion (the STATIC makeSQL bundle) and evaluates skip + value-specs → assemble →
92
198
  * render → execute — which is EXACTLY {@link executeBundle} over the SAME bundle.
93
199
  */
@@ -1 +1 @@
1
- {"version":3,"file":"codegen.d.ts","sourceRoot":"","sources":["../../src/scp/codegen.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAkB,KAAK,gBAAgB,EAAE,KAAK,eAAe,EAAE,KAAK,KAAK,EAAE,KAAK,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACzH,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAGrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,wDAAyD,CAAC;AACxF,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEjE;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,4FAA4F;IAC5F,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,0FAA0F;IAC1F,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IAC/B,uEAAuE;IACvE,QAAQ,CAAC,SAAS,CAAC,EAAE;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,OAAO,EAAE,CAAC;QAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IAC5G,wFAAwF;IACxF,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,wFAAwF;IACxF,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC/C,mGAAmG;IACnG,QAAQ,CAAC,WAAW,CAAC,EAAE,eAAe,CAAC;CACxC;AAED,+DAA+D;AAC/D,MAAM,WAAW,eAAe;IAC9B,2BAA2B;IAC3B,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,mGAAmG;IACnG,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,gFAAgF;IAChF,QAAQ,CAAC,SAAS,EAAE,mBAAmB,CAAC;IACxC,iDAAiD;IACjD,QAAQ,CAAC,EAAE,EAAE,gBAAgB,CAAC;IAC9B,0FAA0F;IAC1F,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;CAC5B;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,gBAAgB,CAGtE;AAcD;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,QAAQ,IAAI,eAAe,CAa5H;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,MAAM,EAChB,mBAAmB,EAAE,SAAS,MAAM,EAAE,EACtC,aAAa,CAAC,EAAE,MAAM,GACrB,eAAe,CAKjB;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,eAAe,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,GAAG,KAAK,CAExG"}
1
+ {"version":3,"file":"codegen.d.ts","sourceRoot":"","sources":["../../src/scp/codegen.ts"],"names":[],"mappings":"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"}