@vibeorm/sql 2.0.0-alpha.6 → 2.0.0-alpha.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/ast.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import type { RlsReadinessQuery } from "./dialects/postgres-rls-readiness.ts";
1
2
  /**
2
3
  * The SQL AST — the small statement language the runtime and migrate packages
3
4
  * build and dialects render.
@@ -6,7 +7,7 @@
6
7
  * grows with the runtime in P2/P3. Every shape added here needs a catalog case
7
8
  * (tests/catalog/cases.ts) in the same change.
8
9
  */
9
- import type { SqlFragmentSpec } from "@vibeorm/schema";
10
+ import type { RlsContextIR, SchemaIR, SqlFragmentSpec } from "@vibeorm/schema";
10
11
  /** A column reference, optionally table-qualified. */
11
12
  export type ColRef = {
12
13
  readonly table?: string;
@@ -85,6 +86,22 @@ export type SqlExpr = {
85
86
  readonly column: ColRef;
86
87
  readonly values: readonly unknown[];
87
88
  readonly negate?: boolean;
89
+ }
90
+ /**
91
+ * ORDERED-TUPLE membership: `("a", "b") IN ((?, ?), (?, ?))`. The composite
92
+ * relation predicate — `"a" IN (…) AND "b" IN (…)` is a Cartesian SUPERSET
93
+ * and is never a substitute. Renders per `SqlDialect.tupleInStrategy`:
94
+ * a native row-value `IN` where the dialect has row constructors, else an OR
95
+ * of COMPLETE conjunctions. Arity 1 is expressed as {@link SqlExpr} `inArray`
96
+ * instead, so single-key relations keep their existing SQL.
97
+ */
98
+ | {
99
+ readonly kind: "tupleIn";
100
+ /** Ordered tuple columns; `rows[i][j]` binds to `columns[j]`. */
101
+ readonly columns: readonly ColRef[];
102
+ /** Candidate tuples — every row carries exactly `columns.length` values. */
103
+ readonly rows: readonly (readonly unknown[])[];
104
+ readonly negate?: boolean;
88
105
  } | {
89
106
  readonly kind: "like";
90
107
  readonly column: ColRef;
@@ -447,6 +464,24 @@ export declare function jsonParamCell(params: {
447
464
  }): JsonParamCell;
448
465
  /** Is this VALUES/SET cell a {@link JsonParamCell}? */
449
466
  export declare function isJsonParamCell(value: unknown): value is JsonParamCell;
467
+ /**
468
+ * Reference to the row PROPOSED for insertion, inside an upsert's update arm:
469
+ * `excluded."col"` on postgres/sqlite, `` `new`.`col` `` on mysql's row-alias
470
+ * form (`SqlDialect.excludedRowRef`). It is a COLUMN REFERENCE, not a
471
+ * parameter — it names the value already bound in this statement's VALUES
472
+ * list, which is what lets ONE batched upsert write each conflicting row's own
473
+ * incoming values without binding them a second time.
474
+ */
475
+ export type ExcludedRef = {
476
+ readonly __excluded: true;
477
+ readonly column: string;
478
+ };
479
+ /** Reference the incoming row's `column` from inside an upsert update arm. */
480
+ export declare function excludedRef(params: {
481
+ column: string;
482
+ }): ExcludedRef;
483
+ /** Is this SET cell an {@link ExcludedRef}? */
484
+ export declare function isExcludedRef(value: unknown): value is ExcludedRef;
450
485
  export type InsertStatement = {
451
486
  readonly kind: "insert";
452
487
  readonly table: TableRef;
@@ -467,6 +502,15 @@ export type OnConflictUpdate = {
467
502
  * Postgres only; replaces the column-list target when present.
468
503
  */
469
504
  readonly constraint?: string;
505
+ /**
506
+ * Partial-index arbiter predicate, RAW SQL: `ON CONFLICT (cols) WHERE pred
507
+ * DO UPDATE …` (postgres/sqlite; requires `columns`). Raw for the same
508
+ * reason {@link OnConflictDoNothing.conflictWhere} is — both engines match
509
+ * the clause against the index's OWN stored predicate structurally, so a
510
+ * bound parameter could never match and the text mirrors the schema
511
+ * declaration byte-for-byte. Mysql's ODKU names no target and refuses it.
512
+ */
513
+ readonly conflictWhere?: string;
470
514
  readonly update: Readonly<Record<string, unknown>>;
471
515
  /**
472
516
  * MySQL only (`upsertForm: "onDuplicateKey"`): append
@@ -512,5 +556,67 @@ export type DeleteStatement = {
512
556
  readonly where?: SqlExpr;
513
557
  readonly returning?: readonly string[];
514
558
  };
515
- export type SqlStatement = SelectStatement | InsertStatement | UpdateStatement | DeleteStatement;
559
+ /** Native RLS DDL, kept distinct from ordinary row-query expressions. */
560
+ export type RlsEnableStatement = {
561
+ readonly kind: "rlsEnable";
562
+ readonly table: string;
563
+ };
564
+ export type RlsForceStatement = {
565
+ readonly kind: "rlsForce";
566
+ readonly table: string;
567
+ };
568
+ /** Disable native row policy enforcement on a physical table. */
569
+ export type RlsDisableStatement = {
570
+ readonly kind: "rlsDisable";
571
+ readonly table: string;
572
+ };
573
+ /** Remove forced owner enforcement on a physical table. */
574
+ export type RlsNoForceStatement = {
575
+ readonly kind: "rlsNoForce";
576
+ readonly table: string;
577
+ };
578
+ /** Drop the managed policy by default, or the supplied policy name. */
579
+ export type RlsDropPolicyStatement = {
580
+ readonly kind: "rlsDropPolicy";
581
+ readonly table: string;
582
+ readonly policyName?: string;
583
+ };
584
+ export type RlsPolicyStatement = {
585
+ readonly kind: "rlsPolicy";
586
+ readonly schema: SchemaIR;
587
+ readonly model: string;
588
+ /** Probe policies use a distinct identity without changing the predicate. */
589
+ readonly policyName?: string;
590
+ /** Only the probe target may be temporary; parent relations always remain public. */
591
+ readonly targetSchema?: "public" | "pg_temp";
592
+ };
593
+ /** Values are validated/serialized by runtime; null is the absent setting sentinel. */
594
+ export type RlsContextStatement = {
595
+ readonly kind: "rlsContext";
596
+ readonly context: RlsContextIR;
597
+ readonly values: Readonly<Record<string, string | null>>;
598
+ };
599
+ /** Trusted pre-existing PGlite execution role; never a request-supplied principal. */
600
+ export type RlsRoleStatement = {
601
+ readonly kind: "rlsRole";
602
+ readonly role: string;
603
+ };
604
+ export type SqlStatement = SelectStatement | InsertStatement | UpdateStatement | DeleteStatement | RlsEnableStatement | RlsForceStatement | RlsDisableStatement | RlsNoForceStatement | RlsDropPolicyStatement | RlsPolicyStatement | RlsContextStatement | RlsRoleStatement;
605
+ /** Readiness statements remain distinct from application queries. */
606
+ export type RlsReadinessStatement = {
607
+ readonly kind: "rlsReadiness";
608
+ readonly query: RlsReadinessQuery;
609
+ readonly searchPath?: string;
610
+ };
611
+ /** Temporary clone lifecycle surrounding a desired-policy probe. */
612
+ export type RlsProbeTableStatement = {
613
+ readonly kind: "rlsProbeTable";
614
+ readonly table: string;
615
+ readonly action: "create" | "drop";
616
+ };
617
+ /** Migration transaction-local policy search-path scope. */
618
+ export type RlsPolicyPathStatement = {
619
+ readonly kind: "rlsPolicyPath";
620
+ readonly stage: "save" | "empty" | "restore";
621
+ };
516
622
  //# sourceMappingURL=ast.d.ts.map
package/dist/ast.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../src/ast.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../src/ast.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,3 @@
1
- /**
2
- * Per-dialect capability tables — the frozen feature contract.
3
- *
4
- * Mirrored verbatim by tests/capabilities.test.ts: changing a value here forces
5
- * a reviewed test change. Runtime fallbacks, migrate DDL, generator output and
6
- * E2E `skipUnlessCapability()` all read these same objects.
7
- */
8
- import type { Dialect, DialectCapabilities } from "@vibeorm/schema";
9
- export declare const POSTGRES_CAPABILITIES: DialectCapabilities;
10
- export declare const SQLITE_CAPABILITIES: DialectCapabilities;
11
- export declare const MYSQL_CAPABILITIES: DialectCapabilities;
12
- export declare const DIALECT_CAPABILITIES: Readonly<Record<Dialect, DialectCapabilities>>;
1
+ /** Same capability objects as schema validation, with no schema → SQL cycle. */
2
+ export { DIALECT_CAPABILITIES, POSTGRES_CAPABILITIES, SQLITE_CAPABILITIES, MYSQL_CAPABILITIES, } from "@vibeorm/schema";
13
3
  //# sourceMappingURL=capabilities.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../src/capabilities.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEpE,eAAO,MAAM,qBAAqB,EAAE,mBAcnC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,mBAcjC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,mBAchC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAI/E,CAAC"}
1
+ {"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../src/capabilities.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,iBAAiB,CAAC"}
package/dist/codecs.d.ts CHANGED
@@ -17,8 +17,8 @@
17
17
  * - EVERY row materialized by the client passes through `decode` — including
18
18
  * every relation-loaded child row (the v1 lesson).
19
19
  *
20
- * Enum fields ride the String codec: enum values are plain strings on the wire
21
- * on all three dialects.
20
+ * Database enums ride the String codec. String-backed enums use the field-bound
21
+ * membership codec below; their wire values are still strings on every dialect.
22
22
  */
23
23
  import type { Dialect, ScalarType } from "@vibeorm/schema";
24
24
  /**
@@ -31,6 +31,13 @@ export type ScalarCodec = {
31
31
  readonly decode: (value: unknown) => unknown;
32
32
  };
33
33
  export type CodecTable = Readonly<Record<ScalarType, ScalarCodec>>;
34
+ /** Field-bound membership for string-backed enums; constructed once per field, not per value. */
35
+ export declare function enumMembershipCodec(params: {
36
+ model: string;
37
+ field: string;
38
+ enum: string;
39
+ members: readonly string[];
40
+ }): ScalarCodec;
34
41
  /**
35
42
  * What a DRIVER actually delivers for NON-LIST **base-table storage** columns
36
43
  * on its result path — declared per adapter (`DatabaseAdapter.wire`), verified
@@ -78,7 +85,13 @@ export type WireFidelity = {
78
85
  * Everything else always decodes: BigInt (string→BigInt is real work on every
79
86
  * driver that can't send int64), Decimal (mysql pads), Boolean (0/1→boolean),
80
87
  * Bytes, and every LIST field (array wire forms differ per driver and are not
81
- * covered by the declaration).
88
+ * covered by the declaration) — with ONE exception the runtime applies (F13):
89
+ * `Json` + `json: "parsed"` extends to list ELEMENTS, because a driver that
90
+ * parses json parses the elements of a json ARRAY too (verified live:
91
+ * node-postgres and PGlite both return `ARRAY['"123"'::jsonb]` as the JS
92
+ * string `"123"`). The same `json` claim is the only one the runtime keeps
93
+ * over a VIEW — it is a promise about the DRIVER's result path, while the
94
+ * `dateTime`/`numbers` claims depend on the expression type a view can hide.
82
95
  */
83
96
  export declare function decodeIsNoop(params: {
84
97
  scalarType: ScalarType;
@@ -1 +1 @@
1
- {"version":3,"file":"codecs.d.ts","sourceRoot":"","sources":["../src/codecs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAI3D;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;IAC7C,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;CAC9C,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC;AAInE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,gGAAgG;IAChG,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IACtC,sFAAsF;IACtF,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IAClC,iFAAiF;IACjF,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;CACtC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE;IAAE,UAAU,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,YAAY,GAAG,SAAS,CAAA;CAAE,GAAG,OAAO,CAOxG;AAiKD,mDAAmD;AACnD,eAAO,MAAM,eAAe,EAAE,UAU7B,CAAC;AAEF,8EAA8E;AAC9E,eAAO,MAAM,aAAa,EAAE,UAU3B,CAAC;AAEF,uEAAuE;AACvE,eAAO,MAAM,YAAY,EAAE,UAU1B,CAAC;AAEF,yCAAyC;AACzC,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,CAIhE,CAAC"}
1
+ {"version":3,"file":"codecs.d.ts","sourceRoot":"","sources":["../src/codecs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAI3D;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;IAC7C,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;CAC9C,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC;AAEnE,iGAAiG;AACjG,wBAAgB,mBAAmB,CAAC,MAAM,EAAE;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5B,GAAG,WAAW,CAiBd;AAID;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,gGAAgG;IAChG,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IACtC,sFAAsF;IACtF,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IAClC,iFAAiF;IACjF,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;CACtC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE;IAAE,UAAU,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,YAAY,GAAG,SAAS,CAAA;CAAE,GAAG,OAAO,CAOxG;AAiKD,mDAAmD;AACnD,eAAO,MAAM,eAAe,EAAE,UAU7B,CAAC;AAEF,8EAA8E;AAC9E,eAAO,MAAM,aAAa,EAAE,UAU3B,CAAC;AAEF,uEAAuE;AACvE,eAAO,MAAM,YAAY,EAAE,UAU1B,CAAC;AAEF,yCAAyC;AACzC,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,CAIhE,CAAC"}
package/dist/dialect.d.ts CHANGED
@@ -5,17 +5,79 @@
5
5
  * explicit strategy fields declared here — so each divergence between dialects
6
6
  * is named, visible and individually testable.
7
7
  */
8
- import type { Dialect, DialectCapabilities } from "@vibeorm/schema";
8
+ import type { Dialect, DialectCapabilities, ScalarType } from "@vibeorm/schema";
9
9
  import type { JsonFilterOp } from "./ast.ts";
10
10
  import type { ParamCollector } from "./params.ts";
11
+ /**
12
+ * What decides that two proposed rows address the SAME stored row.
13
+ *
14
+ * A batched upsert has to know this before it runs: two rows the ORM keeps
15
+ * apart can be one row to the database, and then the batch quietly resolves a
16
+ * collision the caller never chose. Everything here was measured on this
17
+ * project's own containers (postgres 16.14, mysql 8.4.11, sqlite 3.51) and the
18
+ * raw outputs are in `.ai/plans/26.09.06 - safety-follow-up/notes-B.md`.
19
+ */
20
+ export type ConflictKeyEquality = {
21
+ /**
22
+ * Scalar types whose canonical column on this dialect can treat two values
23
+ * as equal that the ORM's encoded JavaScript values keep apart. `Decimal` is
24
+ * the shipped case: `numeric`/`DECIMAL` equality ignores trailing zeros,
25
+ * while the encoded value is the string the caller wrote.
26
+ */
27
+ readonly foldingScalars: readonly ScalarType[];
28
+ /**
29
+ * True when a text column with no declared collation compares BYTES, so
30
+ * JavaScript string equality is the database's equality. Postgres and sqlite
31
+ * qualify (a postgres collation is deterministic unless it was explicitly
32
+ * created otherwise, and sqlite's default collating sequence is BINARY);
33
+ * mysql does not, because its server default `utf8mb4_0900_ai_ci` ignores
34
+ * case and accents.
35
+ */
36
+ readonly textIsBinaryByDefault: boolean;
37
+ /** Character capacity of the default String column, if bounded. Also consumed by migrate. */
38
+ readonly defaultStringMaxLength?: number;
39
+ /**
40
+ * What ONE statement does when the rows it proposes carry the same conflict
41
+ * key twice. `reject` means the engine compares every proposed pair itself,
42
+ * under the column's own collation and type, and refuses the whole statement
43
+ * (postgres: SQLSTATE 21000). `lastWriteWins` means it silently keeps the
44
+ * last row (mysql and sqlite both do).
45
+ */
46
+ readonly duplicatesInOneStatement: "reject" | "lastWriteWins";
47
+ };
11
48
  export type SqlDialect = {
12
49
  readonly name: Dialect;
13
50
  /** Frozen feature table — consumed by runtime, migrate, generator, tests. */
14
51
  readonly capabilities: DialectCapabilities;
15
52
  /** Array membership: `col = ANY($n)` with one array param, or `IN (?, ?, …)` expansion. */
16
53
  readonly inArrayStrategy: "any" | "expand";
54
+ /**
55
+ * ORDERED-TUPLE membership (composite relation links): `rowValue` renders the
56
+ * native row constructor `("a", "b") IN ((?, ?), …)`; `expand` renders an OR
57
+ * of COMPLETE conjunctions for a dialect without row values. Every shipped
58
+ * dialect declares `rowValue` — verified against PostgreSQL, MySQL and
59
+ * SQLite 3.51 row constructors. Both forms bind one parameter per tuple
60
+ * member, so composite membership always chunks against `paramBudget`.
61
+ */
62
+ readonly tupleInStrategy: "rowValue" | "expand";
17
63
  /** Upsert clause form. */
18
64
  readonly upsertForm: "onConflict" | "onDuplicateKey";
65
+ /** Which equality decides a duplicate conflict key here (batched upsert). */
66
+ readonly conflictKeyEquality: ConflictKeyEquality;
67
+ /**
68
+ * How an upsert's update arm names the row PROPOSED for insertion
69
+ * ({@link ExcludedRef} cells). `keyword` is the `excluded` pseudo-relation
70
+ * postgres and sqlite expose; `rowAlias` is mysql's `VALUES (…) AS new`
71
+ * row alias (8.0.19+) — measured on this project's mysql 8.4.11, where the
72
+ * older `VALUES(col)` function answers with deprecation warning 1287.
73
+ */
74
+ readonly excludedRowRef: {
75
+ readonly form: "keyword";
76
+ readonly name: string;
77
+ } | {
78
+ readonly form: "rowAlias";
79
+ readonly alias: string;
80
+ };
19
81
  /**
20
82
  * Skip-conflicting-rows form. `onConflictDoNothing` appends
21
83
  * `ON CONFLICT [(target)] DO NOTHING`; `insertIgnore` turns the statement into
@@ -1 +1 @@
1
- {"version":3,"file":"dialect.d.ts","sourceRoot":"","sources":["../src/dialect.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,6EAA6E;IAC7E,QAAQ,CAAC,YAAY,EAAE,mBAAmB,CAAC;IAG3C,2FAA2F;IAC3F,QAAQ,CAAC,eAAe,EAAE,KAAK,GAAG,QAAQ,CAAC;IAC3C,0BAA0B;IAC1B,QAAQ,CAAC,UAAU,EAAE,YAAY,GAAG,gBAAgB,CAAC;IACrD;;;;;OAKG;IACH,QAAQ,CAAC,aAAa,EAAE,qBAAqB,GAAG,cAAc,CAAC;IAC/D,6EAA6E;IAC7E,QAAQ,CAAC,eAAe,EAAE,OAAO,GAAG,OAAO,CAAC;IAC5C;;;;;;;OAOG;IACH,QAAQ,CAAC,mBAAmB,EAAE,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC3D,gFAAgF;IAChF,QAAQ,CAAC,gBAAgB,EAAE,QAAQ,GAAG,SAAS,CAAC;IAChD,gFAAgF;IAChF,QAAQ,CAAC,mBAAmB,EAAE;QAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACpE,sFAAsF;IACtF,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,EAAE,WAAW,GAAG,eAAe,GAAG,cAAc,CAAC;IACtE;;;;OAIG;IACH,QAAQ,CAAC,gBAAgB,EAAE,SAAS,YAAY,EAAE,CAAC;IACnD;;;;;;;;OAQG;IACH,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B;;;;OAIG;IACH,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC;;;;;OAKG;IACH,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC;;;;OAIG;IACH,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC;IACpC;;;;;;OAMG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAG7B,+DAA+D;IAC/D,UAAU,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,CAAC;IAC7C,wEAAwE;IACxE,WAAW,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,CAAC;IAC/C;;;;;;OAMG;IACH,WAAW,CAAC,MAAM,EAAE;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,cAAc,CAAA;KAAE,GAAG,MAAM,CAAC;CACnF,CAAC"}
1
+ {"version":3,"file":"dialect.d.ts","sourceRoot":"","sources":["../src/dialect.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import type { SqlDialect } from "../dialect.ts";
2
+ import type { RenderedQuery } from "../render.ts";
3
+ import type { SqlStatement } from "../ast.ts";
4
+ import type { PostgresExplainOptions, PostgresWorkloadQuery } from "./postgres-diagnostics.ts";
5
+ /** Fixed, parameterless diagnostics whose text never varies. */
6
+ export type FixedDiagnosticQuery = "postgresJsonWire" | "sqliteTriggers";
7
+ /**
8
+ * Fixed diagnostic queries; execution and result interpretation belong to callers.
9
+ *
10
+ * Three variants, discriminated by `query`:
11
+ * - a fixed transport/catalog probe,
12
+ * - `postgresExplain`, which wraps another statement (EPIC 5),
13
+ * - a read-only PostgreSQL workload/catalog read (EPIC 5).
14
+ */
15
+ export type DiagnosticStatement = {
16
+ readonly kind: "diagnostic";
17
+ readonly query: FixedDiagnosticQuery;
18
+ } | {
19
+ readonly kind: "diagnostic";
20
+ readonly query: "postgresExplain";
21
+ readonly statement: SqlStatement;
22
+ readonly options?: PostgresExplainOptions;
23
+ } | {
24
+ readonly kind: "diagnostic";
25
+ readonly query: PostgresWorkloadQuery;
26
+ readonly schema?: string;
27
+ readonly table?: string;
28
+ readonly limit?: number;
29
+ readonly key?: string;
30
+ readonly value?: string | null;
31
+ };
32
+ /** Render a diagnostic only on the dialect whose transport or catalog it describes. */
33
+ export declare function renderDiagnostic(params: {
34
+ dialect: SqlDialect;
35
+ query: FixedDiagnosticQuery;
36
+ }): RenderedQuery;
37
+ /** True for the two fixed probes; everything else is an EPIC 5 PostgreSQL diagnostic. */
38
+ export declare function isFixedDiagnostic(params: {
39
+ query: DiagnosticStatement["query"];
40
+ }): params is {
41
+ query: FixedDiagnosticQuery;
42
+ };
43
+ //# sourceMappingURL=diagnostics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../src/dialects/diagnostics.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,KAAK,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAE/F,gEAAgE;AAChE,MAAM,MAAM,oBAAoB,GAAG,kBAAkB,GAAG,gBAAgB,CAAC;AAEzE;;;;;;;GAOG;AACH,MAAM,MAAM,mBAAmB,GAC3B;IAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAA;CAAE,GACrE;IACE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,sBAAsB,CAAC;CAC3C,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,qBAAqB,CAAC;IACtC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC,CAAC;AAON,uFAAuF;AACvF,wBAAgB,gBAAgB,CAAC,MAAM,EAAE;IAAE,OAAO,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,oBAAoB,CAAA;CAAE,GAAG,aAAa,CAM5G;AAED,yFAAyF;AACzF,wBAAgB,iBAAiB,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAA;CAAE,GAAG,MAAM,IAAI;IAAE,KAAK,EAAE,oBAAoB,CAAA;CAAE,CAE5H"}
@@ -1 +1 @@
1
- {"version":3,"file":"mysql.d.ts","sourceRoot":"","sources":["../../src/dialects/mysql.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGhD,eAAO,MAAM,YAAY,EAAE,UA+C1B,CAAC"}
1
+ {"version":3,"file":"mysql.d.ts","sourceRoot":"","sources":["../../src/dialects/mysql.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGhD,eAAO,MAAM,YAAY,EAAE,UAsE1B,CAAC"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * PostgreSQL query-diagnostic SQL (EPIC 5).
3
+ *
4
+ * Two kinds of text live here and nowhere else:
5
+ *
6
+ * - the `EXPLAIN` wrapper, which prefixes an already-rendered statement and
7
+ * keeps its placeholders and its parameters intact — a plan is never taken
8
+ * over SQL with values inlined into the text;
9
+ * - read-only catalog and statistics reads used to interpret a plan.
10
+ *
11
+ * What this module deliberately cannot express: `CREATE EXTENSION`,
12
+ * `pg_stat_statements_reset()`, `ALTER SYSTEM`, `SET` outside a caller's own
13
+ * transaction, and `CREATE INDEX`. Diagnostics observe a server; they never
14
+ * change one.
15
+ */
16
+ import type { SqlDialect } from "../dialect.ts";
17
+ import type { RenderedQuery } from "../render.ts";
18
+ /**
19
+ * `EXPLAIN` options. `analyze` EXECUTES the statement — the runtime gates it
20
+ * behind an explicit confirmation, refuses writes and multi-statement text,
21
+ * and warns; the renderer only writes the text it is asked for.
22
+ */
23
+ export type PostgresExplainOptions = {
24
+ /** Run the statement and report observed rows and milliseconds. EXECUTES SQL. */
25
+ readonly analyze?: boolean;
26
+ /** Buffer accounting; only meaningful once the statement actually ran. */
27
+ readonly buffers?: boolean;
28
+ readonly verbose?: boolean;
29
+ readonly settings?: boolean;
30
+ };
31
+ /**
32
+ * Wrap a rendered statement in `EXPLAIN (…)`. Option order is fixed so the
33
+ * text is stable and reviewable; `FORMAT JSON` is always present because the
34
+ * parser reads the structured form, never the human text.
35
+ */
36
+ export declare function renderPostgresExplain(params: {
37
+ dialect: SqlDialect;
38
+ query: RenderedQuery;
39
+ options?: PostgresExplainOptions;
40
+ }): RenderedQuery;
41
+ /** The closed set of read-only diagnostic reads. Every one of them is a SELECT. */
42
+ export type PostgresWorkloadQuery = "planContext" | "statementExtension" | "statementInfo" | "statementSnapshot" | "indexes" | "tableStats" | "sessionBegin" | "sessionReadOnly" | "sessionCommit" | "sessionRollback" | "setContext";
43
+ /** The exact SQL text of every read-only diagnostic read, for statement-level routing in tests. */
44
+ export declare const POSTGRES_DIAGNOSTIC_SQL: Readonly<Record<PostgresWorkloadQuery, string>>;
45
+ /** Bounds on the workload snapshot; an unbounded diagnostic read is not a diagnostic. */
46
+ export declare const POSTGRES_WORKLOAD_LIMITS: {
47
+ readonly minLimit: number;
48
+ readonly maxLimit: number;
49
+ };
50
+ /**
51
+ * Render one read-only diagnostic read. Identifiers (the extension's schema)
52
+ * go through `dialect.quoteIdent`; every value goes through a
53
+ * {@link ParamCollector}, so no caller string is ever concatenated into SQL.
54
+ */
55
+ export declare function renderPostgresWorkload(params: {
56
+ dialect: SqlDialect;
57
+ query: PostgresWorkloadQuery;
58
+ /** Extension schema (statementInfo/statementSnapshot) or table schema (indexes/tableStats). */
59
+ schema?: string;
60
+ table?: string;
61
+ limit?: number;
62
+ /** Fully-qualified setting name for `setContext` (the caller applies the prefix). */
63
+ key?: string;
64
+ /** Setting value for `setContext`; `null` binds the empty string, which reads as absent. */
65
+ value?: string | null;
66
+ }): RenderedQuery;
67
+ //# sourceMappingURL=postgres-diagnostics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres-diagnostics.d.ts","sourceRoot":"","sources":["../../src/dialects/postgres-diagnostics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAKlD;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,iFAAiF;IACjF,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,0EAA0E;IAC1E,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE;IAC5C,OAAO,EAAE,UAAU,CAAC;IACpB,KAAK,EAAE,aAAa,CAAC;IACrB,OAAO,CAAC,EAAE,sBAAsB,CAAC;CAClC,GAAG,aAAa,CAUhB;AAID,mFAAmF;AACnF,MAAM,MAAM,qBAAqB,GAC7B,aAAa,GACb,oBAAoB,GACpB,eAAe,GACf,mBAAmB,GACnB,SAAS,GACT,YAAY,GACZ,cAAc,GACd,iBAAiB,GACjB,eAAe,GACf,iBAAiB,GACjB,YAAY,CAAC;AAEjB,mGAAmG;AACnG,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,qBAAqB,EAAE,MAAM,CAAC,CA6BlF,CAAC;AAEH,yFAAyF;AACzF,eAAO,MAAM,wBAAwB,EAAE;IAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAG3F,CAAC;AAYH;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE;IAC7C,OAAO,EAAE,UAAU,CAAC;IACpB,KAAK,EAAE,qBAAqB,CAAC;IAC7B,+FAA+F;IAC/F,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qFAAqF;IACrF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,4FAA4F;IAC5F,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB,GAAG,aAAa,CA+BhB"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * PostgreSQL migration-operations SQL: migration-owned session settings and
3
+ * the read-only catalog probes a nontransactional migration needs to establish
4
+ * what actually happened before it resumes.
5
+ *
6
+ * Why these live here and not in @vibeorm/migrate: every SQL-text decision
7
+ * belongs to a dialect module (constitution rule 4). The migrate runner
8
+ * decides WHEN to ask; this file decides WHAT is asked.
9
+ *
10
+ * Honesty notes carried by these shapes:
11
+ *
12
+ * - `lock_timeout` bounds how long ONE statement waits for a lock. It does not
13
+ * make an operation online, and it does not bound the lock's HOLD time once
14
+ * acquired. The runner surfaces that as risk output, not as a guarantee.
15
+ * - The index probe reports `indisvalid`/`indisready` AND the full deparsed
16
+ * definition, because `CREATE INDEX CONCURRENTLY` can fail leaving an
17
+ * invalid index behind that `IF NOT EXISTS` would happily accept.
18
+ * - Every probe is scoped to `current_schema()`, the same schema the migrate
19
+ * DDL renderers write into.
20
+ */
21
+ import type { SqlDialect } from "../dialect.ts";
22
+ import type { RenderedQuery } from "../render.ts";
23
+ /** Session settings a migration may scope to its own work. */
24
+ export type MigrationSessionSetting = "lock_timeout" | "statement_timeout";
25
+ /** Read the session's current `lock_timeout` / `statement_timeout`, to restore them later. */
26
+ export declare function renderMigrationSessionRead(params: {
27
+ dialect: SqlDialect;
28
+ }): RenderedQuery;
29
+ /**
30
+ * Scope a setting to the migration's own work. Milliseconds only, and only a
31
+ * non-negative safe integer: 0 means "no limit", which is PostgreSQL's own
32
+ * default and the value a restore falls back to.
33
+ */
34
+ export declare function renderMigrationSessionSet(params: {
35
+ dialect: SqlDialect;
36
+ setting: MigrationSessionSetting;
37
+ milliseconds: number;
38
+ /** `SET LOCAL` — reverted by the enclosing COMMIT/ROLLBACK, so no restore is needed. */
39
+ local?: boolean;
40
+ }): RenderedQuery;
41
+ /**
42
+ * Put a setting back to the value {@link renderMigrationSessionRead} reported.
43
+ * An unrecognized value restores the server default with `RESET` instead of
44
+ * being interpolated — never guess at SQL text read back from a session.
45
+ */
46
+ export declare function renderMigrationSessionRestore(params: {
47
+ dialect: SqlDialect;
48
+ setting: MigrationSessionSetting;
49
+ value: string;
50
+ }): RenderedQuery;
51
+ /**
52
+ * Everything needed to decide whether a `CREATE INDEX CONCURRENTLY` finished:
53
+ * the index's validity, its access method, its uniqueness, its key-column
54
+ * expressions as PostgreSQL itself deparses them (newline-joined so every
55
+ * adapter decodes one plain text column), its partial predicate and the full
56
+ * `pg_get_indexdef` text for the operator to read in an error message.
57
+ *
58
+ * `indisvalid = false` is the state a cancelled/failed concurrent build
59
+ * leaves behind: the index exists, is skipped by the planner, and is still
60
+ * maintained by writes. `IF NOT EXISTS` cannot tell that apart from success.
61
+ */
62
+ export declare function renderIndexStateQuery(params: {
63
+ dialect: SqlDialect;
64
+ index: string;
65
+ }): RenderedQuery;
66
+ /** Whether a named constraint exists on a table, and whether it is validated. */
67
+ export declare function renderConstraintStateQuery(params: {
68
+ dialect: SqlDialect;
69
+ table: string;
70
+ constraint: string;
71
+ }): RenderedQuery;
72
+ /** Whether a relation of that physical name exists in the migration's schema. */
73
+ export declare function renderRelationStateQuery(params: {
74
+ dialect: SqlDialect;
75
+ table: string;
76
+ }): RenderedQuery;
77
+ /** Whether a live (non-dropped, non-system) column of that name exists on a table. */
78
+ export declare function renderColumnStateQuery(params: {
79
+ dialect: SqlDialect;
80
+ table: string;
81
+ column: string;
82
+ }): RenderedQuery;
83
+ //# sourceMappingURL=postgres-migration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres-migration.d.ts","sourceRoot":"","sources":["../../src/dialects/postgres-migration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAKlD,8DAA8D;AAC9D,MAAM,MAAM,uBAAuB,GAAG,cAAc,GAAG,mBAAmB,CAAC;AAgB3E,8FAA8F;AAC9F,wBAAgB,0BAA0B,CAAC,MAAM,EAAE;IAAE,OAAO,EAAE,UAAU,CAAA;CAAE,GAAG,aAAa,CAOzF;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE;IAChD,OAAO,EAAE,UAAU,CAAC;IACpB,OAAO,EAAE,uBAAuB,CAAC;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,wFAAwF;IACxF,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,GAAG,aAAa,CAWhB;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,CAAC,MAAM,EAAE;IACpD,OAAO,EAAE,UAAU,CAAC;IACpB,OAAO,EAAE,uBAAuB,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC;CACf,GAAG,aAAa,CAOhB;AAID;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE;IAAE,OAAO,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,aAAa,CAwBnG;AAED,iFAAiF;AACjF,wBAAgB,0BAA0B,CAAC,MAAM,EAAE;IACjD,OAAO,EAAE,UAAU,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB,GAAG,aAAa,CAkBhB;AAED,iFAAiF;AACjF,wBAAgB,wBAAwB,CAAC,MAAM,EAAE;IAAE,OAAO,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,aAAa,CAYtG;AAED,sFAAsF;AACtF,wBAAgB,sBAAsB,CAAC,MAAM,EAAE;IAC7C,OAAO,EAAE,UAAU,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,aAAa,CAehB"}
@@ -0,0 +1,38 @@
1
+ import type { SqlDialect } from "../dialect.ts";
2
+ import type { RenderedQuery } from "../render.ts";
3
+ /** Throwaway policy identity; never installed on a live table by readiness. */
4
+ export declare const NATIVE_RLS_PROBE_POLICY: "vibeorm_probe";
5
+ /** Read-only catalog SQL; exported for exact statement routing in adapter tests. */
6
+ export declare const RLS_READINESS_SQL: {
7
+ readonly identity: string;
8
+ readonly elevatedRoles: string;
9
+ readonly schemaControl: string;
10
+ readonly tables: string;
11
+ readonly policies: string;
12
+ readonly expressions: string;
13
+ readonly views: string;
14
+ readonly routines: string;
15
+ readonly triggers: string;
16
+ readonly readSearchPath: string;
17
+ readonly setSearchPath: string;
18
+ };
19
+ /** The closed set of catalog queries used by readiness. */
20
+ export type RlsReadinessQuery = keyof typeof RLS_READINESS_SQL;
21
+ /** Parameterized catalog read, or transaction-local search-path setting. */
22
+ export declare function renderRlsReadinessQuery(params: {
23
+ dialect: SqlDialect;
24
+ query: RlsReadinessQuery;
25
+ searchPath?: string;
26
+ }): RenderedQuery;
27
+ /** Clone only physical columns/types, on the same backend and with the same table name. */
28
+ export declare function renderRlsProbeTable(params: {
29
+ dialect: SqlDialect;
30
+ table: string;
31
+ action: "create" | "drop";
32
+ }): RenderedQuery;
33
+ /** Save/empty/restore around migration policy DDL without replacing the operator's path. */
34
+ export declare function renderRlsPolicyPath(params: {
35
+ dialect: SqlDialect;
36
+ stage: "save" | "empty" | "restore";
37
+ }): RenderedQuery;
38
+ //# sourceMappingURL=postgres-rls-readiness.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres-rls-readiness.d.ts","sourceRoot":"","sources":["../../src/dialects/postgres-rls-readiness.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAIlD,+EAA+E;AAC/E,eAAO,MAAM,uBAAuB,EAAE,eAAiC,CAAC;AAExE,oFAAoF;AACpF,eAAO,MAAM,iBAAiB,EAAE;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAoJ/B,CAAC;AAEH,2DAA2D;AAC3D,MAAM,MAAM,iBAAiB,GAAG,MAAM,OAAO,iBAAiB,CAAC;AAQ/D,4EAA4E;AAC5E,wBAAgB,uBAAuB,CAAC,MAAM,EAAE;IAC9C,OAAO,EAAE,UAAU,CAAC;IACpB,KAAK,EAAE,iBAAiB,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,aAAa,CAehB;AAED,2FAA2F;AAC3F,wBAAgB,mBAAmB,CAAC,MAAM,EAAE;IAAE,OAAO,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,QAAQ,GAAG,MAAM,CAAA;CAAE,GAAG,aAAa,CAQ5H;AAED,4FAA4F;AAC5F,wBAAgB,mBAAmB,CAAC,MAAM,EAAE;IAAE,OAAO,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAA;CAAE,GAAG,aAAa,CAQvH"}