@prisma-next/sql-relational-core 0.12.0-dev.62 → 0.12.0-dev.63

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.
@@ -0,0 +1,114 @@
1
+ import { d as AnyParamRef } from "./types-CnBcZ9NS.mjs";
2
+ import { ColumnDefaultLiteralInputValue } from "@prisma-next/contract/types";
3
+ import { ReferentialAction } from "@prisma-next/sql-contract/types";
4
+
5
+ //#region src/ast/ddl-types.d.ts
6
+ interface DdlColumnDefaultVisitor<R> {
7
+ literal(node: LiteralColumnDefault): R;
8
+ function(node: FunctionColumnDefault): R;
9
+ }
10
+ declare abstract class DdlColumnDefault {
11
+ abstract readonly kind: string;
12
+ abstract accept<R>(visitor: DdlColumnDefaultVisitor<R>): R;
13
+ protected freeze(): void;
14
+ }
15
+ declare class LiteralColumnDefault extends DdlColumnDefault {
16
+ readonly kind: "literal";
17
+ readonly value: ColumnDefaultLiteralInputValue;
18
+ constructor(value: ColumnDefaultLiteralInputValue);
19
+ accept<R>(visitor: DdlColumnDefaultVisitor<R>): R;
20
+ }
21
+ declare class FunctionColumnDefault extends DdlColumnDefault {
22
+ readonly kind: "function";
23
+ readonly expression: string;
24
+ constructor(expression: string);
25
+ accept<R>(visitor: DdlColumnDefaultVisitor<R>): R;
26
+ }
27
+ type AnyDdlColumnDefault = LiteralColumnDefault | FunctionColumnDefault;
28
+ declare class DdlColumn {
29
+ readonly name: string;
30
+ readonly type: string;
31
+ readonly notNull?: boolean | undefined;
32
+ readonly primaryKey?: boolean | undefined;
33
+ readonly default?: AnyDdlColumnDefault | undefined;
34
+ constructor(options: {
35
+ readonly name: string;
36
+ readonly type: string;
37
+ readonly notNull?: boolean;
38
+ readonly primaryKey?: boolean;
39
+ readonly default?: AnyDdlColumnDefault;
40
+ });
41
+ }
42
+ declare abstract class DdlNode {
43
+ abstract readonly kind: string;
44
+ /**
45
+ * Structural brand: every DDL node answers `true`. Lets {@link isDdlNode}
46
+ * recognise any `DdlNode` subclass — including target-contributed kinds —
47
+ * without a central kind registry that subclasses would have to register
48
+ * into.
49
+ */
50
+ isDdlNode(): true;
51
+ protected freeze(): void;
52
+ collectParamRefs(): AnyParamRef[];
53
+ }
54
+ declare function isDdlNode(value: unknown): value is DdlNode;
55
+ /**
56
+ * A composite (or single-column) PRIMARY KEY constraint on a `CreateTable`
57
+ * node. When `name` is set, the adapter renders `CONSTRAINT <name> PRIMARY KEY
58
+ * (…)`; otherwise it renders an anonymous `PRIMARY KEY (…)`.
59
+ *
60
+ * Frozen on construction — immutable after creation.
61
+ */
62
+ declare class PrimaryKeyConstraint {
63
+ readonly kind: "primary-key";
64
+ readonly columns: ReadonlyArray<string>;
65
+ readonly name: string | undefined;
66
+ constructor(options: {
67
+ readonly columns: readonly string[];
68
+ readonly name?: string;
69
+ });
70
+ }
71
+ /**
72
+ * A FOREIGN KEY constraint on a `CreateTable` node. `onDelete` and `onUpdate`
73
+ * use the same `ReferentialAction` vocabulary already used by the migration
74
+ * planner and the contract IR — no parallel string enum.
75
+ *
76
+ * Frozen on construction — immutable after creation.
77
+ */
78
+ declare class ForeignKeyConstraint {
79
+ readonly kind: "foreign-key";
80
+ readonly columns: ReadonlyArray<string>;
81
+ readonly refTable: string;
82
+ readonly refColumns: ReadonlyArray<string>;
83
+ readonly onDelete: ReferentialAction | undefined;
84
+ readonly onUpdate: ReferentialAction | undefined;
85
+ readonly name: string | undefined;
86
+ constructor(options: {
87
+ readonly columns: readonly string[];
88
+ readonly refTable: string;
89
+ readonly refColumns: readonly string[];
90
+ readonly onDelete?: ReferentialAction;
91
+ readonly onUpdate?: ReferentialAction;
92
+ readonly name?: string;
93
+ });
94
+ }
95
+ /**
96
+ * A table-level UNIQUE constraint on a `CreateTable` node. When `name` is
97
+ * set, the adapter renders `CONSTRAINT <name> UNIQUE (…)`; otherwise it
98
+ * renders an anonymous `UNIQUE (…)`.
99
+ *
100
+ * Frozen on construction — immutable after creation.
101
+ */
102
+ declare class UniqueConstraint {
103
+ readonly kind: "unique";
104
+ readonly columns: ReadonlyArray<string>;
105
+ readonly name: string | undefined;
106
+ constructor(options: {
107
+ readonly columns: readonly string[];
108
+ readonly name?: string;
109
+ });
110
+ }
111
+ type DdlTableConstraint = PrimaryKeyConstraint | ForeignKeyConstraint | UniqueConstraint;
112
+ //#endregion
113
+ export { DdlNode as a, FunctionColumnDefault as c, UniqueConstraint as d, isDdlNode as f, DdlColumnDefaultVisitor as i, LiteralColumnDefault as l, DdlColumn as n, DdlTableConstraint as o, DdlColumnDefault as r, ForeignKeyConstraint as s, AnyDdlColumnDefault as t, PrimaryKeyConstraint as u };
114
+ //# sourceMappingURL=ddl-types-BnCk9jAH.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ddl-types-BnCk9jAH.d.mts","names":[],"sources":["../src/ast/ddl-types.ts"],"mappings":";;;;;UAKiB,uBAAA;EACf,OAAA,CAAQ,IAAA,EAAM,oBAAA,GAAuB,CAAA;EACrC,QAAA,CAAS,IAAA,EAAM,qBAAA,GAAwB,CAAA;AAAA;AAAA,uBAGnB,gBAAA;EAAA,kBACF,IAAA;EAAA,SACT,MAAA,IAAU,OAAA,EAAS,uBAAA,CAAwB,CAAA,IAAK,CAAA;EAAA,UAE/C,MAAA;AAAA;AAAA,cAKC,oBAAA,SAA6B,gBAAA;EAAA,SAC/B,IAAA;EAAA,SACA,KAAA,EAAO,8BAAA;cAEJ,KAAA,EAAO,8BAAA;EASV,MAAA,IAAU,OAAA,EAAS,uBAAA,CAAwB,CAAA,IAAK,CAAA;AAAA;AAAA,cAK9C,qBAAA,SAA8B,gBAAA;EAAA,SAChC,IAAA;EAAA,SACA,UAAA;cAEG,UAAA;EAMH,MAAA,IAAU,OAAA,EAAS,uBAAA,CAAwB,CAAA,IAAK,CAAA;AAAA;AAAA,KAK/C,mBAAA,GAAsB,oBAAA,GAAuB,qBAAqB;AAAA,cAEjE,SAAA;EAAA,SACF,IAAA;EAAA,SACA,IAAA;EAAA,SACA,OAAA;EAAA,SACA,UAAA;EAAA,SACA,OAAA,GAAU,mBAAA;cAEP,OAAA;IAAA,SACD,IAAA;IAAA,SACA,IAAA;IAAA,SACA,OAAA;IAAA,SACA,UAAA;IAAA,SACA,OAAA,GAAU,mBAAmB;EAAA;AAAA;AAAA,uBAWpB,OAAA;EAAA,kBACF,IAAA;EAhEF;AAAA;AAKlB;;;;EAmEE,SAAA;EAAA,UAIU,MAAA;EAIV,gBAAA,IAAoB,WAAW;AAAA;AAAA,iBAKjB,SAAA,CAAU,KAAA,YAAiB,KAAA,IAAS,OAAO;;;;;;;;cAoB9C,oBAAA;EAAA,SACF,IAAA;EAAA,SACA,OAAA,EAAS,aAAa;EAAA,SACtB,IAAA;cAEG,OAAA;IAAA,SAAoB,OAAA;IAAA,SAAqC,IAAA;EAAA;AAAA;AA5FX;AAK5D;;;;;;AAL4D,cA0G/C,oBAAA;EAAA,SACF,IAAA;EAAA,SACA,OAAA,EAAS,aAAA;EAAA,SACT,QAAA;EAAA,SACA,UAAA,EAAY,aAAA;EAAA,SACZ,QAAA,EAAU,iBAAA;EAAA,SACV,QAAA,EAAU,iBAAA;EAAA,SACV,IAAA;cAEG,OAAA;IAAA,SACD,OAAA;IAAA,SACA,QAAA;IAAA,SACA,UAAA;IAAA,SACA,QAAA,GAAW,iBAAA;IAAA,SACX,QAAA,GAAW,iBAAA;IAAA,SACX,IAAA;EAAA;AAAA;;;;AArGiE;AAE9E;;;cAsHa,gBAAA;EAAA,SACF,IAAA;EAAA,SACA,OAAA,EAAS,aAAa;EAAA,SACtB,IAAA;cAEG,OAAA;IAAA,SAAoB,OAAA;IAAA,SAAqC,IAAA;EAAA;AAAA;AAAA,KAO3D,kBAAA,GAAqB,oBAAA,GAAuB,oBAAA,GAAuB,gBAAA"}
@@ -0,0 +1,130 @@
1
+ import { isColumnDefaultLiteralInputValue } from "@prisma-next/contract/types";
2
+ //#region src/ast/ddl-types.ts
3
+ var DdlColumnDefault = class {
4
+ freeze() {
5
+ Object.freeze(this);
6
+ }
7
+ };
8
+ var LiteralColumnDefault = class extends DdlColumnDefault {
9
+ kind = "literal";
10
+ value;
11
+ constructor(value) {
12
+ super();
13
+ if (!isColumnDefaultLiteralInputValue(value)) throw new Error("Invalid column default literal value");
14
+ this.value = value;
15
+ this.freeze();
16
+ }
17
+ accept(visitor) {
18
+ return visitor.literal(this);
19
+ }
20
+ };
21
+ var FunctionColumnDefault = class extends DdlColumnDefault {
22
+ kind = "function";
23
+ expression;
24
+ constructor(expression) {
25
+ super();
26
+ this.expression = expression;
27
+ this.freeze();
28
+ }
29
+ accept(visitor) {
30
+ return visitor.function(this);
31
+ }
32
+ };
33
+ var DdlColumn = class {
34
+ name;
35
+ type;
36
+ notNull;
37
+ primaryKey;
38
+ default;
39
+ constructor(options) {
40
+ this.name = options.name;
41
+ this.type = options.type;
42
+ this.notNull = options.notNull;
43
+ this.primaryKey = options.primaryKey;
44
+ this.default = options.default;
45
+ Object.freeze(this);
46
+ }
47
+ };
48
+ var DdlNode = class {
49
+ /**
50
+ * Structural brand: every DDL node answers `true`. Lets {@link isDdlNode}
51
+ * recognise any `DdlNode` subclass — including target-contributed kinds —
52
+ * without a central kind registry that subclasses would have to register
53
+ * into.
54
+ */
55
+ isDdlNode() {
56
+ return true;
57
+ }
58
+ freeze() {
59
+ Object.freeze(this);
60
+ }
61
+ collectParamRefs() {
62
+ return [];
63
+ }
64
+ };
65
+ function isDdlNode(value) {
66
+ return typeof value === "object" && value !== null && "isDdlNode" in value && typeof value.isDdlNode === "function";
67
+ }
68
+ /**
69
+ * A composite (or single-column) PRIMARY KEY constraint on a `CreateTable`
70
+ * node. When `name` is set, the adapter renders `CONSTRAINT <name> PRIMARY KEY
71
+ * (…)`; otherwise it renders an anonymous `PRIMARY KEY (…)`.
72
+ *
73
+ * Frozen on construction — immutable after creation.
74
+ */
75
+ var PrimaryKeyConstraint = class {
76
+ kind = "primary-key";
77
+ columns;
78
+ name;
79
+ constructor(options) {
80
+ this.columns = Object.freeze([...options.columns]);
81
+ this.name = options.name;
82
+ Object.freeze(this);
83
+ }
84
+ };
85
+ /**
86
+ * A FOREIGN KEY constraint on a `CreateTable` node. `onDelete` and `onUpdate`
87
+ * use the same `ReferentialAction` vocabulary already used by the migration
88
+ * planner and the contract IR — no parallel string enum.
89
+ *
90
+ * Frozen on construction — immutable after creation.
91
+ */
92
+ var ForeignKeyConstraint = class {
93
+ kind = "foreign-key";
94
+ columns;
95
+ refTable;
96
+ refColumns;
97
+ onDelete;
98
+ onUpdate;
99
+ name;
100
+ constructor(options) {
101
+ this.columns = Object.freeze([...options.columns]);
102
+ this.refTable = options.refTable;
103
+ this.refColumns = Object.freeze([...options.refColumns]);
104
+ this.onDelete = options.onDelete;
105
+ this.onUpdate = options.onUpdate;
106
+ this.name = options.name;
107
+ Object.freeze(this);
108
+ }
109
+ };
110
+ /**
111
+ * A table-level UNIQUE constraint on a `CreateTable` node. When `name` is
112
+ * set, the adapter renders `CONSTRAINT <name> UNIQUE (…)`; otherwise it
113
+ * renders an anonymous `UNIQUE (…)`.
114
+ *
115
+ * Frozen on construction — immutable after creation.
116
+ */
117
+ var UniqueConstraint = class {
118
+ kind = "unique";
119
+ columns;
120
+ name;
121
+ constructor(options) {
122
+ this.columns = Object.freeze([...options.columns]);
123
+ this.name = options.name;
124
+ Object.freeze(this);
125
+ }
126
+ };
127
+ //#endregion
128
+ export { FunctionColumnDefault as a, UniqueConstraint as c, ForeignKeyConstraint as i, isDdlNode as l, DdlColumnDefault as n, LiteralColumnDefault as o, DdlNode as r, PrimaryKeyConstraint as s, DdlColumn as t };
129
+
130
+ //# sourceMappingURL=ddl-types-CbcP15Lw.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ddl-types-CbcP15Lw.mjs","names":[],"sources":["../src/ast/ddl-types.ts"],"sourcesContent":["import type { ColumnDefaultLiteralInputValue } from '@prisma-next/contract/types';\nimport { isColumnDefaultLiteralInputValue } from '@prisma-next/contract/types';\nimport type { ReferentialAction } from '@prisma-next/sql-contract/types';\nimport type { AnyParamRef } from './types';\n\nexport interface DdlColumnDefaultVisitor<R> {\n literal(node: LiteralColumnDefault): R;\n function(node: FunctionColumnDefault): R;\n}\n\nexport abstract class DdlColumnDefault {\n abstract readonly kind: string;\n abstract accept<R>(visitor: DdlColumnDefaultVisitor<R>): R;\n\n protected freeze(): void {\n Object.freeze(this);\n }\n}\n\nexport class LiteralColumnDefault extends DdlColumnDefault {\n readonly kind = 'literal' as const;\n readonly value: ColumnDefaultLiteralInputValue;\n\n constructor(value: ColumnDefaultLiteralInputValue) {\n super();\n if (!isColumnDefaultLiteralInputValue(value)) {\n throw new Error('Invalid column default literal value');\n }\n this.value = value;\n this.freeze();\n }\n\n override accept<R>(visitor: DdlColumnDefaultVisitor<R>): R {\n return visitor.literal(this);\n }\n}\n\nexport class FunctionColumnDefault extends DdlColumnDefault {\n readonly kind = 'function' as const;\n readonly expression: string;\n\n constructor(expression: string) {\n super();\n this.expression = expression;\n this.freeze();\n }\n\n override accept<R>(visitor: DdlColumnDefaultVisitor<R>): R {\n return visitor.function(this);\n }\n}\n\nexport type AnyDdlColumnDefault = LiteralColumnDefault | FunctionColumnDefault;\n\nexport class DdlColumn {\n readonly name: string;\n readonly type: string;\n readonly notNull?: boolean | undefined;\n readonly primaryKey?: boolean | undefined;\n readonly default?: AnyDdlColumnDefault | undefined;\n\n constructor(options: {\n readonly name: string;\n readonly type: string;\n readonly notNull?: boolean;\n readonly primaryKey?: boolean;\n readonly default?: AnyDdlColumnDefault;\n }) {\n this.name = options.name;\n this.type = options.type;\n this.notNull = options.notNull;\n this.primaryKey = options.primaryKey;\n this.default = options.default;\n Object.freeze(this);\n }\n}\n\nexport abstract class DdlNode {\n abstract readonly kind: string;\n\n /**\n * Structural brand: every DDL node answers `true`. Lets {@link isDdlNode}\n * recognise any `DdlNode` subclass — including target-contributed kinds —\n * without a central kind registry that subclasses would have to register\n * into.\n */\n isDdlNode(): true {\n return true;\n }\n\n protected freeze(): void {\n Object.freeze(this);\n }\n\n collectParamRefs(): AnyParamRef[] {\n return [];\n }\n}\n\nexport function isDdlNode(value: unknown): value is DdlNode {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'isDdlNode' in value &&\n typeof value.isDdlNode === 'function'\n );\n}\n\n// ---------------------------------------------------------------------------\n// Table-level constraint nodes\n// ---------------------------------------------------------------------------\n\n/**\n * A composite (or single-column) PRIMARY KEY constraint on a `CreateTable`\n * node. When `name` is set, the adapter renders `CONSTRAINT <name> PRIMARY KEY\n * (…)`; otherwise it renders an anonymous `PRIMARY KEY (…)`.\n *\n * Frozen on construction — immutable after creation.\n */\nexport class PrimaryKeyConstraint {\n readonly kind = 'primary-key' as const;\n readonly columns: ReadonlyArray<string>;\n readonly name: string | undefined;\n\n constructor(options: { readonly columns: readonly string[]; readonly name?: string }) {\n this.columns = Object.freeze([...options.columns]);\n this.name = options.name;\n Object.freeze(this);\n }\n}\n\n/**\n * A FOREIGN KEY constraint on a `CreateTable` node. `onDelete` and `onUpdate`\n * use the same `ReferentialAction` vocabulary already used by the migration\n * planner and the contract IR — no parallel string enum.\n *\n * Frozen on construction — immutable after creation.\n */\nexport class ForeignKeyConstraint {\n readonly kind = 'foreign-key' as const;\n readonly columns: ReadonlyArray<string>;\n readonly refTable: string;\n readonly refColumns: ReadonlyArray<string>;\n readonly onDelete: ReferentialAction | undefined;\n readonly onUpdate: ReferentialAction | undefined;\n readonly name: string | undefined;\n\n constructor(options: {\n readonly columns: readonly string[];\n readonly refTable: string;\n readonly refColumns: readonly string[];\n readonly onDelete?: ReferentialAction;\n readonly onUpdate?: ReferentialAction;\n readonly name?: string;\n }) {\n this.columns = Object.freeze([...options.columns]);\n this.refTable = options.refTable;\n this.refColumns = Object.freeze([...options.refColumns]);\n this.onDelete = options.onDelete;\n this.onUpdate = options.onUpdate;\n this.name = options.name;\n Object.freeze(this);\n }\n}\n\n/**\n * A table-level UNIQUE constraint on a `CreateTable` node. When `name` is\n * set, the adapter renders `CONSTRAINT <name> UNIQUE (…)`; otherwise it\n * renders an anonymous `UNIQUE (…)`.\n *\n * Frozen on construction — immutable after creation.\n */\nexport class UniqueConstraint {\n readonly kind = 'unique' as const;\n readonly columns: ReadonlyArray<string>;\n readonly name: string | undefined;\n\n constructor(options: { readonly columns: readonly string[]; readonly name?: string }) {\n this.columns = Object.freeze([...options.columns]);\n this.name = options.name;\n Object.freeze(this);\n }\n}\n\nexport type DdlTableConstraint = PrimaryKeyConstraint | ForeignKeyConstraint | UniqueConstraint;\n"],"mappings":";;AAUA,IAAsB,mBAAtB,MAAuC;CAIrC,SAAyB;EACvB,OAAO,OAAO,IAAI;CACpB;AACF;AAEA,IAAa,uBAAb,cAA0C,iBAAiB;CACzD,OAAgB;CAChB;CAEA,YAAY,OAAuC;EACjD,MAAM;EACN,IAAI,CAAC,iCAAiC,KAAK,GACzC,MAAM,IAAI,MAAM,sCAAsC;EAExD,KAAK,QAAQ;EACb,KAAK,OAAO;CACd;CAEA,OAAmB,SAAwC;EACzD,OAAO,QAAQ,QAAQ,IAAI;CAC7B;AACF;AAEA,IAAa,wBAAb,cAA2C,iBAAiB;CAC1D,OAAgB;CAChB;CAEA,YAAY,YAAoB;EAC9B,MAAM;EACN,KAAK,aAAa;EAClB,KAAK,OAAO;CACd;CAEA,OAAmB,SAAwC;EACzD,OAAO,QAAQ,SAAS,IAAI;CAC9B;AACF;AAIA,IAAa,YAAb,MAAuB;CACrB;CACA;CACA;CACA;CACA;CAEA,YAAY,SAMT;EACD,KAAK,OAAO,QAAQ;EACpB,KAAK,OAAO,QAAQ;EACpB,KAAK,UAAU,QAAQ;EACvB,KAAK,aAAa,QAAQ;EAC1B,KAAK,UAAU,QAAQ;EACvB,OAAO,OAAO,IAAI;CACpB;AACF;AAEA,IAAsB,UAAtB,MAA8B;;;;;;;CAS5B,YAAkB;EAChB,OAAO;CACT;CAEA,SAAyB;EACvB,OAAO,OAAO,IAAI;CACpB;CAEA,mBAAkC;EAChC,OAAO,CAAC;CACV;AACF;AAEA,SAAgB,UAAU,OAAkC;CAC1D,OACE,OAAO,UAAU,YACjB,UAAU,QACV,eAAe,SACf,OAAO,MAAM,cAAc;AAE/B;;;;;;;;AAaA,IAAa,uBAAb,MAAkC;CAChC,OAAgB;CAChB;CACA;CAEA,YAAY,SAA0E;EACpF,KAAK,UAAU,OAAO,OAAO,CAAC,GAAG,QAAQ,OAAO,CAAC;EACjD,KAAK,OAAO,QAAQ;EACpB,OAAO,OAAO,IAAI;CACpB;AACF;;;;;;;;AASA,IAAa,uBAAb,MAAkC;CAChC,OAAgB;CAChB;CACA;CACA;CACA;CACA;CACA;CAEA,YAAY,SAOT;EACD,KAAK,UAAU,OAAO,OAAO,CAAC,GAAG,QAAQ,OAAO,CAAC;EACjD,KAAK,WAAW,QAAQ;EACxB,KAAK,aAAa,OAAO,OAAO,CAAC,GAAG,QAAQ,UAAU,CAAC;EACvD,KAAK,WAAW,QAAQ;EACxB,KAAK,WAAW,QAAQ;EACxB,KAAK,OAAO,QAAQ;EACpB,OAAO,OAAO,IAAI;CACpB;AACF;;;;;;;;AASA,IAAa,mBAAb,MAA8B;CAC5B,OAAgB;CAChB;CACA;CAEA,YAAY,SAA0E;EACpF,KAAK,UAAU,OAAO,OAAO,CAAC,GAAG,QAAQ,OAAO,CAAC;EACjD,KAAK,OAAO,QAAQ;EACpB,OAAO,OAAO,IAAI;CACpB;AACF"}
@@ -1,6 +1,6 @@
1
1
  import { a as CodecMeta, c as ContractCodecRegistry, d as DescriptorCodecTraits, f as ExtractCodecTypes, h as SqlColumnRef, i as CodecDescriptor, l as DescriptorCodecId, m as SqlCodecInstanceContext, n as Codec, o as CodecRef, p as SqlCodecCallContext, r as CodecCallContext, s as CodecTrait, t as AnyCodecDescriptor, u as DescriptorCodecInput } from "../codec-types-Df1I_oSx.mjs";
2
2
  import { $ as RawSqlExpr, A as InsertAst, B as LiteralExpr, C as EqColJoinOn, D as ExpressionRewriter, E as ExpressionFolder, F as JsonArrayAggExpr, G as OperationExpr, H as LoweredStatement, I as JsonObjectEntry, J as ParamRef, K as OrExpr, L as JsonObjectExpr, M as InsertValue, N as JoinAst, O as ExpressionSource, P as JoinOnExpr, Q as RawExpr, R as LimitOffsetValue, S as DoUpdateSetConflictAction, T as ExprVisitor, U as NotExpr, V as LoweredParam, W as NullCheckExpr, X as ProjectionExpr, Y as PreparedParamRef, Z as ProjectionItem, _ as DefaultValueExpr, a as AndExpr, at as TableSource, b as Direction, c as AnyInsertOnConflictAction, ct as WhereArg, d as AnyParamRef, dt as isQueryAst, et as RawSqlLiteral, f as AnyQueryAst, ft as isWhereExpr, g as ColumnRef, h as BinaryOp, i as AggregateOpFn, it as TableRef, j as InsertOnConflict, k as IdentifierRef, l as AnyInsertValue, lt as WindowFn, m as BinaryExpr, mt as whereExprKinds, n as AggregateExpr, nt as SelectAstOptions, o as AnyExpression, ot as ToWhereExpr, p as AstRewriter, pt as queryAstKinds, q as OrderByItem, r as AggregateFn, rt as SubqueryExpr, s as AnyFromSource, st as UpdateAst, t as AggregateCountFn, tt as SelectAst, u as AnyOperationArg, ut as WindowFuncExpr, v as DeleteAst, w as ExistsExpr, x as DoNothingConflictAction, y as DerivedTableSource, z as ListExpression } from "../types-CnBcZ9NS.mjs";
3
- import { a as DdlNode, c as isDdlNode, i as DdlColumnDefaultVisitor, n as DdlColumn, o as FunctionColumnDefault, r as DdlColumnDefault, s as LiteralColumnDefault, t as AnyDdlColumnDefault } from "../ddl-types-rchYEWpk.mjs";
3
+ import { a as DdlNode, c as FunctionColumnDefault, d as UniqueConstraint, f as isDdlNode, i as DdlColumnDefaultVisitor, l as LiteralColumnDefault, n as DdlColumn, o as DdlTableConstraint, r as DdlColumnDefault, s as ForeignKeyConstraint, t as AnyDdlColumnDefault, u as PrimaryKeyConstraint } from "../ddl-types-BnCk9jAH.mjs";
4
4
  import { ContractMarkerRecord, JsonValue } from "@prisma-next/contract/types";
5
5
  import { CodecCallContext as CodecCallContext$1, CodecDescriptorImpl, CodecImpl, CodecInstanceContext } from "@prisma-next/framework-components/codec";
6
6
  import { StandardSchemaV1 } from "@standard-schema/spec";
@@ -262,5 +262,5 @@ declare function compact<T extends Record<string, unknown>>(o: T): T;
262
262
  */
263
263
  declare function collectOrderedParamRefs(ast: AnyQueryAst): ReadonlyArray<AnyParamRef>;
264
264
  //#endregion
265
- export { Adapter, AdapterProfile, AdapterTarget, AggregateCountFn, AggregateExpr, AggregateFn, AggregateOpFn, AndExpr, AnyCodecDescriptor, AnyDdlColumnDefault, AnyExpression, AnyFromSource, AnyInsertOnConflictAction, AnyInsertValue, AnyOperationArg, AnyParamRef, AnyQueryAst, AstRewriter, BinaryExpr, BinaryOp, Codec, type CodecCallContext, type CodecDescriptor, CodecMeta, type CodecRef, type CodecTrait, ColumnRef, ContractCodecRegistry, DdlColumn, DdlColumnDefault, DdlColumnDefaultVisitor, DdlNode, DefaultValueExpr, DeleteAst, DerivedTableSource, DescriptorCodecId, DescriptorCodecInput, DescriptorCodecTraits, Direction, DoNothingConflictAction, DoUpdateSetConflictAction, EqColJoinOn, ExistsExpr, ExprVisitor, ExpressionFolder, ExpressionRewriter, ExpressionSource, ExtractCodecTypes, FunctionColumnDefault, IdentifierRef, InsertAst, InsertOnConflict, InsertValue, JoinAst, JoinOnExpr, JsonArrayAggExpr, JsonObjectEntry, JsonObjectExpr, LimitOffsetValue, ListExpression, LiteralColumnDefault, LiteralExpr, LoweredParam, LoweredStatement, Lowerer, LowererContext, MarkerReadResult, NotExpr, NullCheckExpr, OperationExpr, OrExpr, OrderByItem, ParamRef, PreparedExecuteRequest, PreparedParamRef, ProjectionExpr, ProjectionItem, RawExpr, RawSqlExpr, RawSqlLiteral, SQL_CHAR_CODEC_ID, SQL_FLOAT_CODEC_ID, SQL_INT_CODEC_ID, SQL_TEXT_CODEC_ID, SQL_TIMESTAMP_CODEC_ID, SQL_VARCHAR_CODEC_ID, SelectAst, SelectAstOptions, SqlCharCodec, SqlCharDescriptor, SqlCodecCallContext, SqlCodecInstanceContext, SqlColumnRef, SqlConnection, SqlDriver, SqlDriverState, SqlExecuteRequest, SqlExplainResult, SqlFloatCodec, SqlFloatDescriptor, SqlIntCodec, SqlIntDescriptor, SqlQueryResult, SqlQueryable, SqlTextCodec, SqlTextDescriptor, SqlTimestampCodec, SqlTimestampDescriptor, SqlTransaction, SqlVarcharCodec, SqlVarcharDescriptor, SubqueryExpr, TableRef, TableSource, ToWhereExpr, UpdateAst, WhereArg, WindowFn, WindowFuncExpr, collectOrderedParamRefs, compact, isDdlNode, isQueryAst, isWhereExpr, queryAstKinds, sqlCharColumn, sqlCharDecode, sqlCharDescriptor, sqlCharEncode, sqlCharRenderOutputType, sqlFloatColumn, sqlFloatDecode, sqlFloatDescriptor, sqlFloatEncode, sqlIntColumn, sqlIntDecode, sqlIntDescriptor, sqlIntEncode, sqlTextColumn, sqlTextDecode, sqlTextDescriptor, sqlTextEncode, sqlTimestampColumn, sqlTimestampDecode, sqlTimestampDecodeJson, sqlTimestampDescriptor, sqlTimestampEncode, sqlTimestampEncodeJson, sqlTimestampRenderOutputType, sqlVarcharColumn, sqlVarcharDecode, sqlVarcharDescriptor, sqlVarcharEncode, sqlVarcharRenderOutputType, whereExprKinds };
265
+ export { Adapter, AdapterProfile, AdapterTarget, AggregateCountFn, AggregateExpr, AggregateFn, AggregateOpFn, AndExpr, AnyCodecDescriptor, AnyDdlColumnDefault, AnyExpression, AnyFromSource, AnyInsertOnConflictAction, AnyInsertValue, AnyOperationArg, AnyParamRef, AnyQueryAst, AstRewriter, BinaryExpr, BinaryOp, Codec, type CodecCallContext, type CodecDescriptor, CodecMeta, type CodecRef, type CodecTrait, ColumnRef, ContractCodecRegistry, DdlColumn, DdlColumnDefault, DdlColumnDefaultVisitor, DdlNode, DdlTableConstraint, DefaultValueExpr, DeleteAst, DerivedTableSource, DescriptorCodecId, DescriptorCodecInput, DescriptorCodecTraits, Direction, DoNothingConflictAction, DoUpdateSetConflictAction, EqColJoinOn, ExistsExpr, ExprVisitor, ExpressionFolder, ExpressionRewriter, ExpressionSource, ExtractCodecTypes, ForeignKeyConstraint, FunctionColumnDefault, IdentifierRef, InsertAst, InsertOnConflict, InsertValue, JoinAst, JoinOnExpr, JsonArrayAggExpr, JsonObjectEntry, JsonObjectExpr, LimitOffsetValue, ListExpression, LiteralColumnDefault, LiteralExpr, LoweredParam, LoweredStatement, Lowerer, LowererContext, MarkerReadResult, NotExpr, NullCheckExpr, OperationExpr, OrExpr, OrderByItem, ParamRef, PreparedExecuteRequest, PreparedParamRef, PrimaryKeyConstraint, ProjectionExpr, ProjectionItem, RawExpr, RawSqlExpr, RawSqlLiteral, SQL_CHAR_CODEC_ID, SQL_FLOAT_CODEC_ID, SQL_INT_CODEC_ID, SQL_TEXT_CODEC_ID, SQL_TIMESTAMP_CODEC_ID, SQL_VARCHAR_CODEC_ID, SelectAst, SelectAstOptions, SqlCharCodec, SqlCharDescriptor, SqlCodecCallContext, SqlCodecInstanceContext, SqlColumnRef, SqlConnection, SqlDriver, SqlDriverState, SqlExecuteRequest, SqlExplainResult, SqlFloatCodec, SqlFloatDescriptor, SqlIntCodec, SqlIntDescriptor, SqlQueryResult, SqlQueryable, SqlTextCodec, SqlTextDescriptor, SqlTimestampCodec, SqlTimestampDescriptor, SqlTransaction, SqlVarcharCodec, SqlVarcharDescriptor, SubqueryExpr, TableRef, TableSource, ToWhereExpr, UniqueConstraint, UpdateAst, WhereArg, WindowFn, WindowFuncExpr, collectOrderedParamRefs, compact, isDdlNode, isQueryAst, isWhereExpr, queryAstKinds, sqlCharColumn, sqlCharDecode, sqlCharDescriptor, sqlCharEncode, sqlCharRenderOutputType, sqlFloatColumn, sqlFloatDecode, sqlFloatDescriptor, sqlFloatEncode, sqlIntColumn, sqlIntDecode, sqlIntDescriptor, sqlIntEncode, sqlTextColumn, sqlTextDecode, sqlTextDescriptor, sqlTextEncode, sqlTimestampColumn, sqlTimestampDecode, sqlTimestampDecodeJson, sqlTimestampDescriptor, sqlTimestampEncode, sqlTimestampEncodeJson, sqlTimestampRenderOutputType, sqlVarcharColumn, sqlVarcharDecode, sqlVarcharDescriptor, sqlVarcharEncode, sqlVarcharRenderOutputType, whereExprKinds };
266
266
  //# sourceMappingURL=ast.d.mts.map
@@ -1,4 +1,4 @@
1
- import { a as LiteralColumnDefault, i as FunctionColumnDefault, n as DdlColumnDefault, o as isDdlNode, r as DdlNode, t as DdlColumn } from "../ddl-types-BRstgyZv.mjs";
1
+ import { a as FunctionColumnDefault, c as UniqueConstraint, i as ForeignKeyConstraint, l as isDdlNode, n as DdlColumnDefault, o as LiteralColumnDefault, r as DdlNode, s as PrimaryKeyConstraint, t as DdlColumn } from "../ddl-types-CbcP15Lw.mjs";
2
2
  import { A as SelectAst, C as OrExpr, D as ProjectionItem, E as PreparedParamRef, F as isQueryAst, I as isWhereExpr, L as queryAstKinds, M as TableSource, N as UpdateAst, O as RawExpr, P as WindowFuncExpr, R as whereExprKinds, S as OperationExpr, T as ParamRef, _ as JsonObjectExpr, a as DefaultValueExpr, b as NotExpr, c as DoNothingConflictAction, d as ExistsExpr, f as IdentifierRef, g as JsonArrayAggExpr, h as JoinAst, i as ColumnRef, j as SubqueryExpr, k as RawSqlExpr, l as DoUpdateSetConflictAction, m as InsertOnConflict, n as AndExpr, o as DeleteAst, p as InsertAst, r as BinaryExpr, s as DerivedTableSource, t as AggregateExpr, u as EqColJoinOn, v as ListExpression, w as OrderByItem, x as NullCheckExpr, y as LiteralExpr } from "../types-D72v8s92.mjs";
3
3
  import { n as compact, t as collectOrderedParamRefs } from "../util-DQQgv2j1.mjs";
4
4
  import { CodecDescriptorImpl, CodecImpl, column, voidParamsSchema } from "@prisma-next/framework-components/codec";
@@ -231,6 +231,6 @@ var SqlTimestampDescriptor = class extends CodecDescriptorImpl {
231
231
  const sqlTimestampDescriptor = new SqlTimestampDescriptor();
232
232
  const sqlTimestampColumn = (params = {}) => column(sqlTimestampDescriptor.factory(params), sqlTimestampDescriptor.codecId, params, "timestamp");
233
233
  //#endregion
234
- export { AggregateExpr, AndExpr, BinaryExpr, ColumnRef, DdlColumn, DdlColumnDefault, DdlNode, DefaultValueExpr, DeleteAst, DerivedTableSource, DoNothingConflictAction, DoUpdateSetConflictAction, EqColJoinOn, ExistsExpr, FunctionColumnDefault, IdentifierRef, InsertAst, InsertOnConflict, JoinAst, JsonArrayAggExpr, JsonObjectExpr, ListExpression, LiteralColumnDefault, LiteralExpr, NotExpr, NullCheckExpr, OperationExpr, OrExpr, OrderByItem, ParamRef, PreparedParamRef, ProjectionItem, RawExpr, RawSqlExpr, SQL_CHAR_CODEC_ID, SQL_FLOAT_CODEC_ID, SQL_INT_CODEC_ID, SQL_TEXT_CODEC_ID, SQL_TIMESTAMP_CODEC_ID, SQL_VARCHAR_CODEC_ID, SelectAst, SqlCharCodec, SqlCharDescriptor, SqlFloatCodec, SqlFloatDescriptor, SqlIntCodec, SqlIntDescriptor, SqlTextCodec, SqlTextDescriptor, SqlTimestampCodec, SqlTimestampDescriptor, SqlVarcharCodec, SqlVarcharDescriptor, SubqueryExpr, TableSource, UpdateAst, WindowFuncExpr, collectOrderedParamRefs, compact, isDdlNode, isQueryAst, isWhereExpr, queryAstKinds, sqlCharColumn, sqlCharDecode, sqlCharDescriptor, sqlCharEncode, sqlCharRenderOutputType, sqlFloatColumn, sqlFloatDecode, sqlFloatDescriptor, sqlFloatEncode, sqlIntColumn, sqlIntDecode, sqlIntDescriptor, sqlIntEncode, sqlTextColumn, sqlTextDecode, sqlTextDescriptor, sqlTextEncode, sqlTimestampColumn, sqlTimestampDecode, sqlTimestampDecodeJson, sqlTimestampDescriptor, sqlTimestampEncode, sqlTimestampEncodeJson, sqlTimestampRenderOutputType, sqlVarcharColumn, sqlVarcharDecode, sqlVarcharDescriptor, sqlVarcharEncode, sqlVarcharRenderOutputType, whereExprKinds };
234
+ export { AggregateExpr, AndExpr, BinaryExpr, ColumnRef, DdlColumn, DdlColumnDefault, DdlNode, DefaultValueExpr, DeleteAst, DerivedTableSource, DoNothingConflictAction, DoUpdateSetConflictAction, EqColJoinOn, ExistsExpr, ForeignKeyConstraint, FunctionColumnDefault, IdentifierRef, InsertAst, InsertOnConflict, JoinAst, JsonArrayAggExpr, JsonObjectExpr, ListExpression, LiteralColumnDefault, LiteralExpr, NotExpr, NullCheckExpr, OperationExpr, OrExpr, OrderByItem, ParamRef, PreparedParamRef, PrimaryKeyConstraint, ProjectionItem, RawExpr, RawSqlExpr, SQL_CHAR_CODEC_ID, SQL_FLOAT_CODEC_ID, SQL_INT_CODEC_ID, SQL_TEXT_CODEC_ID, SQL_TIMESTAMP_CODEC_ID, SQL_VARCHAR_CODEC_ID, SelectAst, SqlCharCodec, SqlCharDescriptor, SqlFloatCodec, SqlFloatDescriptor, SqlIntCodec, SqlIntDescriptor, SqlTextCodec, SqlTextDescriptor, SqlTimestampCodec, SqlTimestampDescriptor, SqlVarcharCodec, SqlVarcharDescriptor, SubqueryExpr, TableSource, UniqueConstraint, UpdateAst, WindowFuncExpr, collectOrderedParamRefs, compact, isDdlNode, isQueryAst, isWhereExpr, queryAstKinds, sqlCharColumn, sqlCharDecode, sqlCharDescriptor, sqlCharEncode, sqlCharRenderOutputType, sqlFloatColumn, sqlFloatDecode, sqlFloatDescriptor, sqlFloatEncode, sqlIntColumn, sqlIntDecode, sqlIntDescriptor, sqlIntEncode, sqlTextColumn, sqlTextDecode, sqlTextDescriptor, sqlTextEncode, sqlTimestampColumn, sqlTimestampDecode, sqlTimestampDecodeJson, sqlTimestampDescriptor, sqlTimestampEncode, sqlTimestampEncodeJson, sqlTimestampRenderOutputType, sqlVarcharColumn, sqlVarcharDecode, sqlVarcharDescriptor, sqlVarcharEncode, sqlVarcharRenderOutputType, whereExprKinds };
235
235
 
236
236
  //# sourceMappingURL=ast.mjs.map
@@ -1,16 +1,28 @@
1
1
  import { A as InsertAst, Z as ProjectionItem, at as TableSource, g as ColumnRef, o as AnyExpression, q as OrderByItem, st as UpdateAst, tt as SelectAst } from "../types-CnBcZ9NS.mjs";
2
- import { n as DdlColumn, o as FunctionColumnDefault, r as DdlColumnDefault, s as LiteralColumnDefault } from "../ddl-types-rchYEWpk.mjs";
2
+ import { c as FunctionColumnDefault, d as UniqueConstraint, l as LiteralColumnDefault, n as DdlColumn, s as ForeignKeyConstraint, t as AnyDdlColumnDefault, u as PrimaryKeyConstraint } from "../ddl-types-BnCk9jAH.mjs";
3
3
  import { ColumnDefaultLiteralInputValue } from "@prisma-next/contract/types";
4
+ import { ReferentialAction } from "@prisma-next/sql-contract/types";
4
5
 
5
6
  //#region src/contract-free/column.d.ts
6
7
  interface DdlColumnOptions {
7
8
  readonly notNull?: boolean;
8
9
  readonly primaryKey?: boolean;
9
- readonly default?: DdlColumnDefault;
10
+ readonly default?: AnyDdlColumnDefault;
10
11
  }
11
12
  declare function lit(value: ColumnDefaultLiteralInputValue): LiteralColumnDefault;
12
13
  declare function fn(expression: string): FunctionColumnDefault;
13
14
  declare function col(name: string, type: string, options?: DdlColumnOptions): DdlColumn;
15
+ declare function primaryKey(columns: readonly string[], options?: {
16
+ readonly name?: string;
17
+ }): PrimaryKeyConstraint;
18
+ declare function foreignKey(columns: readonly string[], refTable: string, refColumns: readonly string[], options?: {
19
+ readonly name?: string;
20
+ readonly onDelete?: ReferentialAction;
21
+ readonly onUpdate?: ReferentialAction;
22
+ }): ForeignKeyConstraint;
23
+ declare function unique(columns: readonly string[], options?: {
24
+ readonly name?: string;
25
+ }): UniqueConstraint;
14
26
  //#endregion
15
27
  //#region src/contract-free/table.d.ts
16
28
  interface ColumnDescriptor {
@@ -145,5 +157,5 @@ declare class CfSelectQuery {
145
157
  */
146
158
  declare function table<Schema extends ColumnSchema>(source: TableSource, schema: Schema): TableHandle<Schema>;
147
159
  //#endregion
148
- export { CfConflictClause, CfExpr, CfInsertQuery, CfSelectQuery, CfUpdateQuery, CfUpsertBuilder, CfUpsertQuery, type ColumnDescriptor, type ColumnProxy, type ColumnSchema, type DdlColumnOptions, type ExcludedProxy, type TableHandle, type TableInsertRow, type TableSetValues, col, fn, lit, table };
160
+ export { CfConflictClause, CfExpr, CfInsertQuery, CfSelectQuery, CfUpdateQuery, CfUpsertBuilder, CfUpsertQuery, type ColumnDescriptor, type ColumnProxy, type ColumnSchema, type DdlColumnOptions, type ExcludedProxy, type TableHandle, type TableInsertRow, type TableSetValues, col, fn, foreignKey, lit, primaryKey, table, unique };
149
161
  //# sourceMappingURL=contract-free.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"contract-free.d.mts","names":[],"sources":["../../src/contract-free/column.ts","../../src/contract-free/table.ts"],"mappings":"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"}
1
+ {"version":3,"file":"contract-free.d.mts","names":[],"sources":["../../src/contract-free/column.ts","../../src/contract-free/table.ts"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { a as LiteralColumnDefault, i as FunctionColumnDefault, t as DdlColumn } from "../ddl-types-BRstgyZv.mjs";
1
+ import { a as FunctionColumnDefault, c as UniqueConstraint, i as ForeignKeyConstraint, o as LiteralColumnDefault, s as PrimaryKeyConstraint, t as DdlColumn } from "../ddl-types-CbcP15Lw.mjs";
2
2
  import { A as SelectAst, C as OrExpr, D as ProjectionItem, N as UpdateAst, T as ParamRef, i as ColumnRef, m as InsertOnConflict, n as AndExpr, p as InsertAst, r as BinaryExpr, w as OrderByItem, x as NullCheckExpr } from "../types-D72v8s92.mjs";
3
3
  import { blindCast } from "@prisma-next/utils/casts";
4
4
  //#region src/contract-free/column.ts
@@ -15,6 +15,26 @@ function col(name, type, options) {
15
15
  ...options
16
16
  });
17
17
  }
18
+ function primaryKey(columns, options) {
19
+ return new PrimaryKeyConstraint({
20
+ columns,
21
+ ...options
22
+ });
23
+ }
24
+ function foreignKey(columns, refTable, refColumns, options) {
25
+ return new ForeignKeyConstraint({
26
+ columns,
27
+ refTable,
28
+ refColumns,
29
+ ...options
30
+ });
31
+ }
32
+ function unique(columns, options) {
33
+ return new UniqueConstraint({
34
+ columns,
35
+ ...options
36
+ });
37
+ }
18
38
  //#endregion
19
39
  //#region src/contract-free/table.ts
20
40
  /**
@@ -243,6 +263,6 @@ function buildSetMap(schema, values) {
243
263
  return set;
244
264
  }
245
265
  //#endregion
246
- export { CfConflictClause, CfExpr, CfInsertQuery, CfSelectQuery, CfUpdateQuery, CfUpsertBuilder, CfUpsertQuery, col, fn, lit, table };
266
+ export { CfConflictClause, CfExpr, CfInsertQuery, CfSelectQuery, CfUpdateQuery, CfUpsertBuilder, CfUpsertQuery, col, fn, foreignKey, lit, primaryKey, table, unique };
247
267
 
248
268
  //# sourceMappingURL=contract-free.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"contract-free.mjs","names":[],"sources":["../../src/contract-free/column.ts","../../src/contract-free/table.ts"],"sourcesContent":["import type { ColumnDefaultLiteralInputValue } from '@prisma-next/contract/types';\nimport type { DdlColumnDefault } from '../ast/ddl-types';\nimport { DdlColumn, FunctionColumnDefault, LiteralColumnDefault } from '../ast/ddl-types';\n\nexport interface DdlColumnOptions {\n readonly notNull?: boolean;\n readonly primaryKey?: boolean;\n readonly default?: DdlColumnDefault;\n}\n\nexport function lit(value: ColumnDefaultLiteralInputValue): LiteralColumnDefault {\n return new LiteralColumnDefault(value);\n}\n\nexport function fn(expression: string): FunctionColumnDefault {\n return new FunctionColumnDefault(expression);\n}\n\nexport function col(name: string, type: string, options?: DdlColumnOptions): DdlColumn {\n return new DdlColumn({ name, type, ...options });\n}\n","import { blindCast } from '@prisma-next/utils/casts';\nimport {\n AndExpr,\n type AnyExpression,\n BinaryExpr,\n ColumnRef,\n InsertAst,\n InsertOnConflict,\n type InsertValue,\n NullCheckExpr,\n OrderByItem,\n OrExpr,\n ParamRef,\n ProjectionItem,\n SelectAst,\n type TableSource,\n UpdateAst,\n} from '../ast/types';\n\nexport interface ColumnDescriptor {\n readonly codecId: string;\n readonly nullable: boolean;\n}\n\nexport type ColumnSchema = Record<string, ColumnDescriptor>;\n\n/**\n * A composable WHERE / ON expression. Wraps an `AnyExpression` and exposes\n * fluent boolean combinators, mirroring the spirit of `sql-builder`'s\n * `Expression` interface without the contract-bound type machinery.\n */\nexport class CfExpr {\n constructor(readonly ast: AnyExpression) {}\n\n and(other: CfExpr): CfExpr {\n return new CfExpr(AndExpr.of([this.ast, other.ast]));\n }\n\n or(other: CfExpr): CfExpr {\n return new CfExpr(OrExpr.of([this.ast, other.ast]));\n }\n\n not(): CfExpr {\n return new CfExpr(this.ast.not());\n }\n}\n\n/**\n * Per-column authoring handle exposed as a keyed property on a {@link TableHandle}.\n * Carries codec metadata baked at declaration time so no codec ID, table name, or\n * column name needs to be repeated at the call site.\n */\nexport interface ColumnProxy {\n readonly codecId: string;\n readonly nullable: boolean;\n readonly columnName: string;\n readonly tableName: string;\n eq(value: unknown): CfExpr;\n neq(value: unknown): CfExpr;\n isNull(): CfExpr;\n isNotNull(): CfExpr;\n toRef(): ColumnRef;\n toProjectionItem(alias?: string): ProjectionItem;\n}\n\n/**\n * Object passed to the {@link CfConflictClause.doUpdate} callback. Each key\n * resolves to a `ColumnRef` for the corresponding `excluded.<column>`, so the\n * upsert conflict-update branch can copy proposed values without re-binding\n * parameters.\n */\nexport type ExcludedProxy<Schema extends ColumnSchema> = {\n readonly [K in keyof Schema]: ColumnRef;\n};\n\nexport type TableInsertRow<Schema extends ColumnSchema> = {\n readonly [K in keyof Schema]: unknown;\n};\n\nexport type TableSetValues<Schema extends ColumnSchema> = {\n readonly [K in keyof Schema]?: unknown;\n};\n\n/**\n * Fluent authoring handle for a fixed control-plane table. Column proxies are\n * exposed as keyed properties so `handle.columnName.eq(value)` composes without\n * threading codec IDs, table names, or column refs at the call site.\n */\nexport type TableHandle<Schema extends ColumnSchema> = {\n readonly source: TableSource;\n insert(row: TableInsertRow<Schema>): CfInsertQuery<Schema>;\n upsert(row: TableInsertRow<Schema>): CfUpsertBuilder<Schema>;\n update(): CfUpdateQuery<Schema>;\n select(...columns: ReadonlyArray<ColumnProxy>): CfSelectQuery;\n} & {\n readonly [K in keyof Schema]: ColumnProxy;\n};\n\nexport class CfInsertQuery<Schema extends ColumnSchema> {\n constructor(\n private readonly src: TableSource,\n private readonly schema: Schema,\n private readonly rowValues: TableInsertRow<Schema>,\n private readonly returningItems: ReadonlyArray<ProjectionItem> | undefined = undefined,\n ) {}\n\n returning(...columns: ReadonlyArray<ColumnProxy>): CfInsertQuery<Schema> {\n return new CfInsertQuery(\n this.src,\n this.schema,\n this.rowValues,\n columns.map((col) => col.toProjectionItem()),\n );\n }\n\n build(): InsertAst {\n const row = buildInsertRow(this.schema, this.rowValues);\n const ast = InsertAst.into(this.src).withRows([row]);\n return this.returningItems ? ast.withReturning(this.returningItems) : ast;\n }\n}\n\nexport class CfUpsertBuilder<Schema extends ColumnSchema> {\n constructor(\n private readonly src: TableSource,\n private readonly schema: Schema,\n private readonly rowValues: TableInsertRow<Schema>,\n ) {}\n\n onConflict(...columns: ReadonlyArray<ColumnProxy>): CfConflictClause<Schema> {\n return new CfConflictClause(this.src, this.schema, this.rowValues, [...columns]);\n }\n}\n\nexport class CfConflictClause<Schema extends ColumnSchema> {\n constructor(\n private readonly src: TableSource,\n private readonly schema: Schema,\n private readonly rowValues: TableInsertRow<Schema>,\n private readonly conflictCols: ReadonlyArray<ColumnProxy>,\n ) {}\n\n doUpdate(\n setOrCallback:\n | TableSetValues<Schema>\n | ((excluded: ExcludedProxy<Schema>) => TableSetValues<Schema>),\n ): CfUpsertQuery<Schema> {\n const set =\n typeof setOrCallback === 'function'\n ? setOrCallback(buildExcludedProxy(this.schema))\n : setOrCallback;\n return new CfUpsertQuery(this.src, this.schema, this.rowValues, this.conflictCols, set);\n }\n\n doNothing(): CfUpsertQuery<Schema> {\n return new CfUpsertQuery(this.src, this.schema, this.rowValues, this.conflictCols, undefined);\n }\n}\n\nexport class CfUpsertQuery<Schema extends ColumnSchema> {\n constructor(\n private readonly src: TableSource,\n private readonly schema: Schema,\n private readonly rowValues: TableInsertRow<Schema>,\n private readonly conflictCols: ReadonlyArray<ColumnProxy>,\n private readonly updateSet: TableSetValues<Schema> | undefined,\n ) {}\n\n build(): InsertAst {\n const row = buildInsertRow(this.schema, this.rowValues);\n const conflictRefs = this.conflictCols.map((col) => col.toRef());\n const onConflict =\n this.updateSet === undefined\n ? InsertOnConflict.on(conflictRefs).doNothing()\n : InsertOnConflict.on(conflictRefs).doUpdateSet(buildSetMap(this.schema, this.updateSet));\n return InsertAst.into(this.src).withRows([row]).withOnConflict(onConflict);\n }\n}\n\nexport class CfUpdateQuery<Schema extends ColumnSchema> {\n constructor(\n private readonly src: TableSource,\n private readonly schema: Schema,\n private readonly setValues: TableSetValues<Schema> | undefined = undefined,\n private readonly whereExpr: CfExpr | undefined = undefined,\n private readonly returningItems: ReadonlyArray<ProjectionItem> | undefined = undefined,\n ) {}\n\n set(values: TableSetValues<Schema>): CfUpdateQuery<Schema> {\n return new CfUpdateQuery(this.src, this.schema, values, this.whereExpr, this.returningItems);\n }\n\n where(expr: CfExpr): CfUpdateQuery<Schema> {\n return new CfUpdateQuery(this.src, this.schema, this.setValues, expr, this.returningItems);\n }\n\n returning(...columns: ReadonlyArray<ColumnProxy>): CfUpdateQuery<Schema> {\n return new CfUpdateQuery(\n this.src,\n this.schema,\n this.setValues,\n this.whereExpr,\n columns.map((col) => col.toProjectionItem()),\n );\n }\n\n build(): UpdateAst {\n const set = buildSetMap(this.schema, this.setValues);\n const base = UpdateAst.table(this.src).withSet(set);\n const withWhere = this.whereExpr ? base.withWhere(this.whereExpr.ast) : base;\n return this.returningItems ? withWhere.withReturning(this.returningItems) : withWhere;\n }\n}\n\nexport class CfSelectQuery {\n constructor(\n private readonly src: TableSource,\n private readonly projectionItems: ReadonlyArray<ProjectionItem>,\n private readonly whereExpr: CfExpr | undefined = undefined,\n private readonly orderByItems: ReadonlyArray<OrderByItem> = [],\n ) {}\n\n where(expr: CfExpr): CfSelectQuery {\n return new CfSelectQuery(this.src, this.projectionItems, expr, this.orderByItems);\n }\n\n orderBy(column: ColumnProxy, dir: 'asc' | 'desc' = 'asc'): CfSelectQuery {\n const item = dir === 'asc' ? OrderByItem.asc(column.toRef()) : OrderByItem.desc(column.toRef());\n return new CfSelectQuery(this.src, this.projectionItems, this.whereExpr, [\n ...this.orderByItems,\n item,\n ]);\n }\n\n build(): SelectAst {\n const base = SelectAst.from(this.src).withProjection(this.projectionItems);\n const withWhere = this.whereExpr ? base.withWhere(this.whereExpr.ast) : base;\n return this.orderByItems.length > 0 ? withWhere.withOrderBy(this.orderByItems) : withWhere;\n }\n}\n\n/**\n * Declare a control-plane table once, binding column codecs at declaration time.\n * Returns a `TableHandle` whose column properties compose expressions directly\n * without per-call-site codec or column-name threading.\n *\n * ```ts\n * const marker = pgTable({ name: 'marker', schema: 'prisma_contract' }, {\n * space: text(),\n * core_hash: text(),\n * updated_at: timestamptz(),\n * });\n *\n * const query = marker.update()\n * .set({ core_hash: newHash, updated_at: NOW })\n * .where(marker.space.eq(space).and(marker.core_hash.eq(expectedFrom)))\n * .returning(marker.space)\n * .build();\n * ```\n */\nexport function table<Schema extends ColumnSchema>(\n source: TableSource,\n schema: Schema,\n): TableHandle<Schema> {\n const proxies: Record<string, ColumnProxy> = {};\n for (const [col, desc] of Object.entries(schema)) {\n proxies[col] = makeColumnProxy(source.alias ?? source.name, col, desc);\n }\n\n const handle = {\n ...proxies,\n source,\n insert: (row: TableInsertRow<Schema>) => new CfInsertQuery(source, schema, row),\n upsert: (row: TableInsertRow<Schema>) => new CfUpsertBuilder(source, schema, row),\n update: () => new CfUpdateQuery(source, schema),\n select: (...cols: ReadonlyArray<ColumnProxy>) =>\n new CfSelectQuery(\n source,\n cols.map((col) => col.toProjectionItem()),\n ),\n };\n\n return blindCast<\n TableHandle<Schema>,\n 'Column proxies are dynamically built from Schema keys — TypeScript cannot verify the per-key ColumnProxy constraint at the spread call site. Construction is correct by construction: every key maps to makeColumnProxy(source.name, key, schema[key]).'\n >(handle);\n}\n\nfunction makeColumnProxy(\n tableName: string,\n columnName: string,\n desc: ColumnDescriptor,\n): ColumnProxy {\n const ref = ColumnRef.of(tableName, columnName);\n return {\n codecId: desc.codecId,\n nullable: desc.nullable,\n columnName,\n tableName,\n eq: (value) =>\n value === null\n ? new CfExpr(NullCheckExpr.isNull(ref))\n : new CfExpr(BinaryExpr.eq(ref, toSetExpression(value, desc))),\n neq: (value) =>\n value === null\n ? new CfExpr(NullCheckExpr.isNotNull(ref))\n : new CfExpr(BinaryExpr.neq(ref, toSetExpression(value, desc))),\n isNull: () => new CfExpr(NullCheckExpr.isNull(ref)),\n isNotNull: () => new CfExpr(NullCheckExpr.isNotNull(ref)),\n toRef: () => ref,\n toProjectionItem: (alias = columnName) =>\n ProjectionItem.of(alias, ref, { codecId: desc.codecId }),\n };\n}\n\nfunction buildExcludedProxy<Schema extends ColumnSchema>(schema: Schema): ExcludedProxy<Schema> {\n return blindCast<\n ExcludedProxy<Schema>,\n 'Object.fromEntries cannot preserve per-key ColumnRef types — correct by construction: every key maps to ColumnRef.of(\"excluded\", key).'\n >(Object.fromEntries(Object.keys(schema).map((col) => [col, ColumnRef.of('excluded', col)])));\n}\n\nfunction isExpressionSource(value: unknown): value is { toExpr(): AnyExpression } {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'toExpr' in value &&\n typeof value.toExpr === 'function'\n );\n}\n\nfunction toInsertValue(value: unknown, desc: ColumnDescriptor): InsertValue {\n if (isExpressionSource(value)) {\n const expr = value.toExpr();\n if (\n expr.kind === 'column-ref' ||\n expr.kind === 'param-ref' ||\n expr.kind === 'prepared-param-ref' ||\n expr.kind === 'raw-expr'\n ) {\n return expr;\n }\n }\n return ParamRef.of(value, { codec: { codecId: desc.codecId } });\n}\n\nfunction toSetExpression(value: unknown, desc: ColumnDescriptor): AnyExpression {\n if (isExpressionSource(value)) {\n return value.toExpr();\n }\n return ParamRef.of(value, { codec: { codecId: desc.codecId } });\n}\n\nfunction buildInsertRow<Schema extends ColumnSchema>(\n schema: Schema,\n values: TableInsertRow<Schema>,\n): Record<string, InsertValue> {\n const row: Record<string, InsertValue> = {};\n const rawValues = blindCast<\n Record<string, unknown>,\n 'TableInsertRow<Schema> maps Schema keys to unknown; indexing by the same string keys is correct by construction'\n >(values);\n for (const [col, desc] of Object.entries(schema)) {\n row[col] = toInsertValue(rawValues[col], desc);\n }\n return row;\n}\n\nfunction buildSetMap<Schema extends ColumnSchema>(\n schema: Schema,\n values: TableSetValues<Schema> | undefined,\n): Record<string, AnyExpression> {\n if (values === undefined) return {};\n const set: Record<string, AnyExpression> = {};\n const rawSchema = blindCast<\n Record<string, ColumnDescriptor>,\n 'Schema extends ColumnSchema = Record<string, ColumnDescriptor>; runtime key access is correct by construction'\n >(schema);\n const rawValues = blindCast<\n Record<string, unknown>,\n 'TableSetValues<Schema> maps Schema keys to unknown; iterating with Object.entries is correct by construction'\n >(values);\n for (const [col, value] of Object.entries(rawValues)) {\n const desc = rawSchema[col];\n if (desc !== undefined) {\n set[col] = toSetExpression(value, desc);\n }\n }\n return set;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"contract-free.mjs","names":[],"sources":["../../src/contract-free/column.ts","../../src/contract-free/table.ts"],"sourcesContent":["import type { ColumnDefaultLiteralInputValue } from '@prisma-next/contract/types';\nimport type { ReferentialAction } from '@prisma-next/sql-contract/types';\nimport type { AnyDdlColumnDefault } from '../ast/ddl-types';\nimport {\n DdlColumn,\n ForeignKeyConstraint,\n FunctionColumnDefault,\n LiteralColumnDefault,\n PrimaryKeyConstraint,\n UniqueConstraint,\n} from '../ast/ddl-types';\n\nexport interface DdlColumnOptions {\n readonly notNull?: boolean;\n readonly primaryKey?: boolean;\n readonly default?: AnyDdlColumnDefault;\n}\n\nexport function lit(value: ColumnDefaultLiteralInputValue): LiteralColumnDefault {\n return new LiteralColumnDefault(value);\n}\n\nexport function fn(expression: string): FunctionColumnDefault {\n return new FunctionColumnDefault(expression);\n}\n\nexport function col(name: string, type: string, options?: DdlColumnOptions): DdlColumn {\n return new DdlColumn({ name, type, ...options });\n}\n\nexport function primaryKey(\n columns: readonly string[],\n options?: { readonly name?: string },\n): PrimaryKeyConstraint {\n return new PrimaryKeyConstraint({ columns, ...options });\n}\n\nexport function foreignKey(\n columns: readonly string[],\n refTable: string,\n refColumns: readonly string[],\n options?: {\n readonly name?: string;\n readonly onDelete?: ReferentialAction;\n readonly onUpdate?: ReferentialAction;\n },\n): ForeignKeyConstraint {\n return new ForeignKeyConstraint({ columns, refTable, refColumns, ...options });\n}\n\nexport function unique(\n columns: readonly string[],\n options?: { readonly name?: string },\n): UniqueConstraint {\n return new UniqueConstraint({ columns, ...options });\n}\n","import { blindCast } from '@prisma-next/utils/casts';\nimport {\n AndExpr,\n type AnyExpression,\n BinaryExpr,\n ColumnRef,\n InsertAst,\n InsertOnConflict,\n type InsertValue,\n NullCheckExpr,\n OrderByItem,\n OrExpr,\n ParamRef,\n ProjectionItem,\n SelectAst,\n type TableSource,\n UpdateAst,\n} from '../ast/types';\n\nexport interface ColumnDescriptor {\n readonly codecId: string;\n readonly nullable: boolean;\n}\n\nexport type ColumnSchema = Record<string, ColumnDescriptor>;\n\n/**\n * A composable WHERE / ON expression. Wraps an `AnyExpression` and exposes\n * fluent boolean combinators, mirroring the spirit of `sql-builder`'s\n * `Expression` interface without the contract-bound type machinery.\n */\nexport class CfExpr {\n constructor(readonly ast: AnyExpression) {}\n\n and(other: CfExpr): CfExpr {\n return new CfExpr(AndExpr.of([this.ast, other.ast]));\n }\n\n or(other: CfExpr): CfExpr {\n return new CfExpr(OrExpr.of([this.ast, other.ast]));\n }\n\n not(): CfExpr {\n return new CfExpr(this.ast.not());\n }\n}\n\n/**\n * Per-column authoring handle exposed as a keyed property on a {@link TableHandle}.\n * Carries codec metadata baked at declaration time so no codec ID, table name, or\n * column name needs to be repeated at the call site.\n */\nexport interface ColumnProxy {\n readonly codecId: string;\n readonly nullable: boolean;\n readonly columnName: string;\n readonly tableName: string;\n eq(value: unknown): CfExpr;\n neq(value: unknown): CfExpr;\n isNull(): CfExpr;\n isNotNull(): CfExpr;\n toRef(): ColumnRef;\n toProjectionItem(alias?: string): ProjectionItem;\n}\n\n/**\n * Object passed to the {@link CfConflictClause.doUpdate} callback. Each key\n * resolves to a `ColumnRef` for the corresponding `excluded.<column>`, so the\n * upsert conflict-update branch can copy proposed values without re-binding\n * parameters.\n */\nexport type ExcludedProxy<Schema extends ColumnSchema> = {\n readonly [K in keyof Schema]: ColumnRef;\n};\n\nexport type TableInsertRow<Schema extends ColumnSchema> = {\n readonly [K in keyof Schema]: unknown;\n};\n\nexport type TableSetValues<Schema extends ColumnSchema> = {\n readonly [K in keyof Schema]?: unknown;\n};\n\n/**\n * Fluent authoring handle for a fixed control-plane table. Column proxies are\n * exposed as keyed properties so `handle.columnName.eq(value)` composes without\n * threading codec IDs, table names, or column refs at the call site.\n */\nexport type TableHandle<Schema extends ColumnSchema> = {\n readonly source: TableSource;\n insert(row: TableInsertRow<Schema>): CfInsertQuery<Schema>;\n upsert(row: TableInsertRow<Schema>): CfUpsertBuilder<Schema>;\n update(): CfUpdateQuery<Schema>;\n select(...columns: ReadonlyArray<ColumnProxy>): CfSelectQuery;\n} & {\n readonly [K in keyof Schema]: ColumnProxy;\n};\n\nexport class CfInsertQuery<Schema extends ColumnSchema> {\n constructor(\n private readonly src: TableSource,\n private readonly schema: Schema,\n private readonly rowValues: TableInsertRow<Schema>,\n private readonly returningItems: ReadonlyArray<ProjectionItem> | undefined = undefined,\n ) {}\n\n returning(...columns: ReadonlyArray<ColumnProxy>): CfInsertQuery<Schema> {\n return new CfInsertQuery(\n this.src,\n this.schema,\n this.rowValues,\n columns.map((col) => col.toProjectionItem()),\n );\n }\n\n build(): InsertAst {\n const row = buildInsertRow(this.schema, this.rowValues);\n const ast = InsertAst.into(this.src).withRows([row]);\n return this.returningItems ? ast.withReturning(this.returningItems) : ast;\n }\n}\n\nexport class CfUpsertBuilder<Schema extends ColumnSchema> {\n constructor(\n private readonly src: TableSource,\n private readonly schema: Schema,\n private readonly rowValues: TableInsertRow<Schema>,\n ) {}\n\n onConflict(...columns: ReadonlyArray<ColumnProxy>): CfConflictClause<Schema> {\n return new CfConflictClause(this.src, this.schema, this.rowValues, [...columns]);\n }\n}\n\nexport class CfConflictClause<Schema extends ColumnSchema> {\n constructor(\n private readonly src: TableSource,\n private readonly schema: Schema,\n private readonly rowValues: TableInsertRow<Schema>,\n private readonly conflictCols: ReadonlyArray<ColumnProxy>,\n ) {}\n\n doUpdate(\n setOrCallback:\n | TableSetValues<Schema>\n | ((excluded: ExcludedProxy<Schema>) => TableSetValues<Schema>),\n ): CfUpsertQuery<Schema> {\n const set =\n typeof setOrCallback === 'function'\n ? setOrCallback(buildExcludedProxy(this.schema))\n : setOrCallback;\n return new CfUpsertQuery(this.src, this.schema, this.rowValues, this.conflictCols, set);\n }\n\n doNothing(): CfUpsertQuery<Schema> {\n return new CfUpsertQuery(this.src, this.schema, this.rowValues, this.conflictCols, undefined);\n }\n}\n\nexport class CfUpsertQuery<Schema extends ColumnSchema> {\n constructor(\n private readonly src: TableSource,\n private readonly schema: Schema,\n private readonly rowValues: TableInsertRow<Schema>,\n private readonly conflictCols: ReadonlyArray<ColumnProxy>,\n private readonly updateSet: TableSetValues<Schema> | undefined,\n ) {}\n\n build(): InsertAst {\n const row = buildInsertRow(this.schema, this.rowValues);\n const conflictRefs = this.conflictCols.map((col) => col.toRef());\n const onConflict =\n this.updateSet === undefined\n ? InsertOnConflict.on(conflictRefs).doNothing()\n : InsertOnConflict.on(conflictRefs).doUpdateSet(buildSetMap(this.schema, this.updateSet));\n return InsertAst.into(this.src).withRows([row]).withOnConflict(onConflict);\n }\n}\n\nexport class CfUpdateQuery<Schema extends ColumnSchema> {\n constructor(\n private readonly src: TableSource,\n private readonly schema: Schema,\n private readonly setValues: TableSetValues<Schema> | undefined = undefined,\n private readonly whereExpr: CfExpr | undefined = undefined,\n private readonly returningItems: ReadonlyArray<ProjectionItem> | undefined = undefined,\n ) {}\n\n set(values: TableSetValues<Schema>): CfUpdateQuery<Schema> {\n return new CfUpdateQuery(this.src, this.schema, values, this.whereExpr, this.returningItems);\n }\n\n where(expr: CfExpr): CfUpdateQuery<Schema> {\n return new CfUpdateQuery(this.src, this.schema, this.setValues, expr, this.returningItems);\n }\n\n returning(...columns: ReadonlyArray<ColumnProxy>): CfUpdateQuery<Schema> {\n return new CfUpdateQuery(\n this.src,\n this.schema,\n this.setValues,\n this.whereExpr,\n columns.map((col) => col.toProjectionItem()),\n );\n }\n\n build(): UpdateAst {\n const set = buildSetMap(this.schema, this.setValues);\n const base = UpdateAst.table(this.src).withSet(set);\n const withWhere = this.whereExpr ? base.withWhere(this.whereExpr.ast) : base;\n return this.returningItems ? withWhere.withReturning(this.returningItems) : withWhere;\n }\n}\n\nexport class CfSelectQuery {\n constructor(\n private readonly src: TableSource,\n private readonly projectionItems: ReadonlyArray<ProjectionItem>,\n private readonly whereExpr: CfExpr | undefined = undefined,\n private readonly orderByItems: ReadonlyArray<OrderByItem> = [],\n ) {}\n\n where(expr: CfExpr): CfSelectQuery {\n return new CfSelectQuery(this.src, this.projectionItems, expr, this.orderByItems);\n }\n\n orderBy(column: ColumnProxy, dir: 'asc' | 'desc' = 'asc'): CfSelectQuery {\n const item = dir === 'asc' ? OrderByItem.asc(column.toRef()) : OrderByItem.desc(column.toRef());\n return new CfSelectQuery(this.src, this.projectionItems, this.whereExpr, [\n ...this.orderByItems,\n item,\n ]);\n }\n\n build(): SelectAst {\n const base = SelectAst.from(this.src).withProjection(this.projectionItems);\n const withWhere = this.whereExpr ? base.withWhere(this.whereExpr.ast) : base;\n return this.orderByItems.length > 0 ? withWhere.withOrderBy(this.orderByItems) : withWhere;\n }\n}\n\n/**\n * Declare a control-plane table once, binding column codecs at declaration time.\n * Returns a `TableHandle` whose column properties compose expressions directly\n * without per-call-site codec or column-name threading.\n *\n * ```ts\n * const marker = pgTable({ name: 'marker', schema: 'prisma_contract' }, {\n * space: text(),\n * core_hash: text(),\n * updated_at: timestamptz(),\n * });\n *\n * const query = marker.update()\n * .set({ core_hash: newHash, updated_at: NOW })\n * .where(marker.space.eq(space).and(marker.core_hash.eq(expectedFrom)))\n * .returning(marker.space)\n * .build();\n * ```\n */\nexport function table<Schema extends ColumnSchema>(\n source: TableSource,\n schema: Schema,\n): TableHandle<Schema> {\n const proxies: Record<string, ColumnProxy> = {};\n for (const [col, desc] of Object.entries(schema)) {\n proxies[col] = makeColumnProxy(source.alias ?? source.name, col, desc);\n }\n\n const handle = {\n ...proxies,\n source,\n insert: (row: TableInsertRow<Schema>) => new CfInsertQuery(source, schema, row),\n upsert: (row: TableInsertRow<Schema>) => new CfUpsertBuilder(source, schema, row),\n update: () => new CfUpdateQuery(source, schema),\n select: (...cols: ReadonlyArray<ColumnProxy>) =>\n new CfSelectQuery(\n source,\n cols.map((col) => col.toProjectionItem()),\n ),\n };\n\n return blindCast<\n TableHandle<Schema>,\n 'Column proxies are dynamically built from Schema keys — TypeScript cannot verify the per-key ColumnProxy constraint at the spread call site. Construction is correct by construction: every key maps to makeColumnProxy(source.name, key, schema[key]).'\n >(handle);\n}\n\nfunction makeColumnProxy(\n tableName: string,\n columnName: string,\n desc: ColumnDescriptor,\n): ColumnProxy {\n const ref = ColumnRef.of(tableName, columnName);\n return {\n codecId: desc.codecId,\n nullable: desc.nullable,\n columnName,\n tableName,\n eq: (value) =>\n value === null\n ? new CfExpr(NullCheckExpr.isNull(ref))\n : new CfExpr(BinaryExpr.eq(ref, toSetExpression(value, desc))),\n neq: (value) =>\n value === null\n ? new CfExpr(NullCheckExpr.isNotNull(ref))\n : new CfExpr(BinaryExpr.neq(ref, toSetExpression(value, desc))),\n isNull: () => new CfExpr(NullCheckExpr.isNull(ref)),\n isNotNull: () => new CfExpr(NullCheckExpr.isNotNull(ref)),\n toRef: () => ref,\n toProjectionItem: (alias = columnName) =>\n ProjectionItem.of(alias, ref, { codecId: desc.codecId }),\n };\n}\n\nfunction buildExcludedProxy<Schema extends ColumnSchema>(schema: Schema): ExcludedProxy<Schema> {\n return blindCast<\n ExcludedProxy<Schema>,\n 'Object.fromEntries cannot preserve per-key ColumnRef types — correct by construction: every key maps to ColumnRef.of(\"excluded\", key).'\n >(Object.fromEntries(Object.keys(schema).map((col) => [col, ColumnRef.of('excluded', col)])));\n}\n\nfunction isExpressionSource(value: unknown): value is { toExpr(): AnyExpression } {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'toExpr' in value &&\n typeof value.toExpr === 'function'\n );\n}\n\nfunction toInsertValue(value: unknown, desc: ColumnDescriptor): InsertValue {\n if (isExpressionSource(value)) {\n const expr = value.toExpr();\n if (\n expr.kind === 'column-ref' ||\n expr.kind === 'param-ref' ||\n expr.kind === 'prepared-param-ref' ||\n expr.kind === 'raw-expr'\n ) {\n return expr;\n }\n }\n return ParamRef.of(value, { codec: { codecId: desc.codecId } });\n}\n\nfunction toSetExpression(value: unknown, desc: ColumnDescriptor): AnyExpression {\n if (isExpressionSource(value)) {\n return value.toExpr();\n }\n return ParamRef.of(value, { codec: { codecId: desc.codecId } });\n}\n\nfunction buildInsertRow<Schema extends ColumnSchema>(\n schema: Schema,\n values: TableInsertRow<Schema>,\n): Record<string, InsertValue> {\n const row: Record<string, InsertValue> = {};\n const rawValues = blindCast<\n Record<string, unknown>,\n 'TableInsertRow<Schema> maps Schema keys to unknown; indexing by the same string keys is correct by construction'\n >(values);\n for (const [col, desc] of Object.entries(schema)) {\n row[col] = toInsertValue(rawValues[col], desc);\n }\n return row;\n}\n\nfunction buildSetMap<Schema extends ColumnSchema>(\n schema: Schema,\n values: TableSetValues<Schema> | undefined,\n): Record<string, AnyExpression> {\n if (values === undefined) return {};\n const set: Record<string, AnyExpression> = {};\n const rawSchema = blindCast<\n Record<string, ColumnDescriptor>,\n 'Schema extends ColumnSchema = Record<string, ColumnDescriptor>; runtime key access is correct by construction'\n >(schema);\n const rawValues = blindCast<\n Record<string, unknown>,\n 'TableSetValues<Schema> maps Schema keys to unknown; iterating with Object.entries is correct by construction'\n >(values);\n for (const [col, value] of Object.entries(rawValues)) {\n const desc = rawSchema[col];\n if (desc !== undefined) {\n set[col] = toSetExpression(value, desc);\n }\n }\n return set;\n}\n"],"mappings":"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"}
package/dist/index.d.mts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { a as CodecMeta, c as ContractCodecRegistry, d as DescriptorCodecTraits, f as ExtractCodecTypes, h as SqlColumnRef, i as CodecDescriptor, l as DescriptorCodecId, m as SqlCodecInstanceContext, n as Codec, o as CodecRef, p as SqlCodecCallContext, r as CodecCallContext, s as CodecTrait, t as AnyCodecDescriptor, u as DescriptorCodecInput } from "./codec-types-Df1I_oSx.mjs";
2
2
  import { $ as RawSqlExpr, A as InsertAst, B as LiteralExpr, C as EqColJoinOn, D as ExpressionRewriter, E as ExpressionFolder, F as JsonArrayAggExpr, G as OperationExpr, H as LoweredStatement, I as JsonObjectEntry, J as ParamRef, K as OrExpr, L as JsonObjectExpr, M as InsertValue, N as JoinAst, O as ExpressionSource, P as JoinOnExpr, Q as RawExpr, R as LimitOffsetValue, S as DoUpdateSetConflictAction, T as ExprVisitor, U as NotExpr, V as LoweredParam, W as NullCheckExpr, X as ProjectionExpr, Y as PreparedParamRef, Z as ProjectionItem, _ as DefaultValueExpr, a as AndExpr, at as TableSource, b as Direction, c as AnyInsertOnConflictAction, ct as WhereArg, d as AnyParamRef, dt as isQueryAst, et as RawSqlLiteral, f as AnyQueryAst, ft as isWhereExpr, g as ColumnRef, h as BinaryOp, i as AggregateOpFn, it as TableRef, j as InsertOnConflict, k as IdentifierRef, l as AnyInsertValue, lt as WindowFn, m as BinaryExpr, mt as whereExprKinds, n as AggregateExpr, nt as SelectAstOptions, o as AnyExpression, ot as ToWhereExpr, p as AstRewriter, pt as queryAstKinds, q as OrderByItem, r as AggregateFn, rt as SubqueryExpr, s as AnyFromSource, st as UpdateAst, t as AggregateCountFn, tt as SelectAst, u as AnyOperationArg, ut as WindowFuncExpr, v as DeleteAst, w as ExistsExpr, x as DoNothingConflictAction, y as DerivedTableSource, z as ListExpression } from "./types-CnBcZ9NS.mjs";
3
- import { a as DdlNode, c as isDdlNode, i as DdlColumnDefaultVisitor, n as DdlColumn, o as FunctionColumnDefault, r as DdlColumnDefault, s as LiteralColumnDefault, t as AnyDdlColumnDefault } from "./ddl-types-rchYEWpk.mjs";
3
+ import { a as DdlNode, c as FunctionColumnDefault, d as UniqueConstraint, f as isDdlNode, i as DdlColumnDefaultVisitor, l as LiteralColumnDefault, n as DdlColumn, o as DdlTableConstraint, r as DdlColumnDefault, s as ForeignKeyConstraint, t as AnyDdlColumnDefault, u as PrimaryKeyConstraint } from "./ddl-types-BnCk9jAH.mjs";
4
4
  import { Adapter, AdapterProfile, AdapterTarget, Lowerer, LowererContext, MarkerReadResult, PreparedExecuteRequest, SQL_CHAR_CODEC_ID, SQL_FLOAT_CODEC_ID, SQL_INT_CODEC_ID, SQL_TEXT_CODEC_ID, SQL_TIMESTAMP_CODEC_ID, SQL_VARCHAR_CODEC_ID, SqlCharCodec, SqlCharDescriptor, SqlConnection, SqlDriver, SqlDriverState, SqlExecuteRequest, SqlExplainResult, SqlFloatCodec, SqlFloatDescriptor, SqlIntCodec, SqlIntDescriptor, SqlQueryResult, SqlQueryable, SqlTextCodec, SqlTextDescriptor, SqlTimestampCodec, SqlTimestampDescriptor, SqlTransaction, SqlVarcharCodec, SqlVarcharDescriptor, collectOrderedParamRefs, compact, sqlCharColumn, sqlCharDecode, sqlCharDescriptor, sqlCharEncode, sqlCharRenderOutputType, sqlFloatColumn, sqlFloatDecode, sqlFloatDescriptor, sqlFloatEncode, sqlIntColumn, sqlIntDecode, sqlIntDescriptor, sqlIntEncode, sqlTextColumn, sqlTextDecode, sqlTextDescriptor, sqlTextEncode, sqlTimestampColumn, sqlTimestampDecode, sqlTimestampDecodeJson, sqlTimestampDescriptor, sqlTimestampEncode, sqlTimestampEncodeJson, sqlTimestampRenderOutputType, sqlVarcharColumn, sqlVarcharDecode, sqlVarcharDescriptor, sqlVarcharEncode, sqlVarcharRenderOutputType } from "./exports/ast.mjs";
5
5
  import { a as MutationDefaultsOptions, i as MutationDefaultsOp, n as CodecDescriptorRegistry, o as TypeHelperRegistry, r as ExecutionContext, t as AppliedMutationDefault } from "./query-lane-context-Dax7DapC.mjs";
6
6
  import { t as SqlExecutionPlan } from "./sql-execution-plan-BngECpWj.mjs";
@@ -10,4 +10,4 @@ import { BuildOperationSpec, CodecExpression, CodecTypesBase, CodecValue, Expres
10
10
  import { a as SqlParamRefMutatorInternal, i as SqlParamRefMutator, n as ParamRefEntryUnion, o as createSqlParamRefMutator, r as ParamRefHandle, t as ParamRefEntry } from "./middleware-H5EG_C4e.mjs";
11
11
  import { n as planFromAst, t as SqlQueryPlan } from "./plan-Dd-t9rIQ.mjs";
12
12
  import { n as SqlOrmPlan, t as RuntimeScope } from "./types-jaK2vi4A.mjs";
13
- export { Adapter, AdapterProfile, AdapterTarget, AggregateCountFn, AggregateExpr, AggregateFn, AggregateOpFn, AndExpr, AnyCodecDescriptor, AnyDdlColumnDefault, AnyExpression, AnyFromSource, AnyInsertOnConflictAction, AnyInsertValue, AnyOperationArg, AnyParamRef, AnyQueryAst, AppliedMutationDefault, AstRewriter, BinaryExpr, BinaryOp, BuildOperationSpec, BuildOptions, BuildParamsMap, Codec, type CodecCallContext, type CodecDescriptor, CodecDescriptorRegistry, CodecExpression, CodecMeta, type CodecRef, type CodecTrait, CodecTypes, CodecTypesBase, CodecValue, ColumnRef, ColumnsOf, ComputeColumnJsType, ContractCodecRegistry, DdlColumn, DdlColumnDefault, DdlColumnDefaultVisitor, DdlNode, DefaultValueExpr, DeleteAst, DerivedTableSource, DescriptorCodecId, DescriptorCodecInput, DescriptorCodecTraits, Direction, DoNothingConflictAction, DoUpdateSetConflictAction, EqColJoinOn, ExecutionContext, ExistsExpr, Expr, ExprVisitor, Expression, ExpressionFolder, ExpressionRewriter, ExpressionSource, ExtractCodecTypes, FunctionColumnDefault, IdentifierRef, InsertAst, InsertOnConflict, InsertValue, JoinAst, JoinOnExpr, JsonArrayAggExpr, JsonObjectEntry, JsonObjectExpr, LimitOffsetValue, ListExpression, LiteralColumnDefault, LiteralExpr, LoweredParam, LoweredStatement, Lowerer, LowererContext, META, MarkerReadResult, Meta, ModelDef, ModelMetadata, MutationDefaultsOp, MutationDefaultsOptions, NotExpr, NullCheckExpr, OperationExpr, OperationTypeSignature, OperationTypes, OperationsForTypeId, OrExpr, OrderByItem, ParamRef, type ParamRefEntry, type ParamRefEntryUnion, type ParamRefHandle, PreparedExecuteRequest, PreparedParamRef, ProjectionExpr, ProjectionItem, RawCodecInferer, RawExpr, RawFactory, RawFunctionOptions, RawSqlBuilder, RawSqlExpr, RawSqlLiteral, RawSqlTag, RawTemplateFactory, RawTemplateOptions, RuntimeError, type RuntimeScope, SQL_CHAR_CODEC_ID, SQL_FLOAT_CODEC_ID, SQL_INT_CODEC_ID, SQL_TEXT_CODEC_ID, SQL_TIMESTAMP_CODEC_ID, SQL_VARCHAR_CODEC_ID, ScopeField, SelectAst, SelectAstOptions, SqlBuilderOptions, SqlCharCodec, SqlCharDescriptor, SqlCodecCallContext, SqlCodecInstanceContext, SqlColumnRef, SqlConnection, SqlDriver, SqlDriverState, SqlExecuteRequest, type SqlExecutionPlan, SqlExplainResult, SqlFloatCodec, SqlFloatDescriptor, SqlIntCodec, SqlIntDescriptor, type SqlOrmPlan, type SqlParamRefMutator, type SqlParamRefMutatorInternal, SqlPlan, SqlQueryPlan, SqlQueryResult, SqlQueryable, SqlTextCodec, SqlTextDescriptor, SqlTimestampCodec, SqlTimestampDescriptor, SqlTransaction, SqlVarcharCodec, SqlVarcharDescriptor, SubqueryExpr, TableDef, TableKey, TableMetadata, TableRef, TableSource, TablesOf, ToWhereExpr, TraitExpression, TypeHelperRegistry, UpdateAst, WhereArg, WindowFn, WindowFuncExpr, buildOperation, codecOf, collectOrderedParamRefs, compact, createRawSql, createSqlParamRefMutator, isDdlNode, isQueryAst, isWhereExpr, param, planFromAst, planInvalid, planUnsupported, queryAstKinds, sqlCharColumn, sqlCharDecode, sqlCharDescriptor, sqlCharEncode, sqlCharRenderOutputType, sqlFloatColumn, sqlFloatDecode, sqlFloatDescriptor, sqlFloatEncode, sqlIntColumn, sqlIntDecode, sqlIntDescriptor, sqlIntEncode, sqlTextColumn, sqlTextDecode, sqlTextDescriptor, sqlTextEncode, sqlTimestampColumn, sqlTimestampDecode, sqlTimestampDecodeJson, sqlTimestampDescriptor, sqlTimestampEncode, sqlTimestampEncodeJson, sqlTimestampRenderOutputType, sqlVarcharColumn, sqlVarcharDecode, sqlVarcharDescriptor, sqlVarcharEncode, sqlVarcharRenderOutputType, toExpr, whereExprKinds };
13
+ export { Adapter, AdapterProfile, AdapterTarget, AggregateCountFn, AggregateExpr, AggregateFn, AggregateOpFn, AndExpr, AnyCodecDescriptor, AnyDdlColumnDefault, AnyExpression, AnyFromSource, AnyInsertOnConflictAction, AnyInsertValue, AnyOperationArg, AnyParamRef, AnyQueryAst, AppliedMutationDefault, AstRewriter, BinaryExpr, BinaryOp, BuildOperationSpec, BuildOptions, BuildParamsMap, Codec, type CodecCallContext, type CodecDescriptor, CodecDescriptorRegistry, CodecExpression, CodecMeta, type CodecRef, type CodecTrait, CodecTypes, CodecTypesBase, CodecValue, ColumnRef, ColumnsOf, ComputeColumnJsType, ContractCodecRegistry, DdlColumn, DdlColumnDefault, DdlColumnDefaultVisitor, DdlNode, DdlTableConstraint, DefaultValueExpr, DeleteAst, DerivedTableSource, DescriptorCodecId, DescriptorCodecInput, DescriptorCodecTraits, Direction, DoNothingConflictAction, DoUpdateSetConflictAction, EqColJoinOn, ExecutionContext, ExistsExpr, Expr, ExprVisitor, Expression, ExpressionFolder, ExpressionRewriter, ExpressionSource, ExtractCodecTypes, ForeignKeyConstraint, FunctionColumnDefault, IdentifierRef, InsertAst, InsertOnConflict, InsertValue, JoinAst, JoinOnExpr, JsonArrayAggExpr, JsonObjectEntry, JsonObjectExpr, LimitOffsetValue, ListExpression, LiteralColumnDefault, LiteralExpr, LoweredParam, LoweredStatement, Lowerer, LowererContext, META, MarkerReadResult, Meta, ModelDef, ModelMetadata, MutationDefaultsOp, MutationDefaultsOptions, NotExpr, NullCheckExpr, OperationExpr, OperationTypeSignature, OperationTypes, OperationsForTypeId, OrExpr, OrderByItem, ParamRef, type ParamRefEntry, type ParamRefEntryUnion, type ParamRefHandle, PreparedExecuteRequest, PreparedParamRef, PrimaryKeyConstraint, ProjectionExpr, ProjectionItem, RawCodecInferer, RawExpr, RawFactory, RawFunctionOptions, RawSqlBuilder, RawSqlExpr, RawSqlLiteral, RawSqlTag, RawTemplateFactory, RawTemplateOptions, RuntimeError, type RuntimeScope, SQL_CHAR_CODEC_ID, SQL_FLOAT_CODEC_ID, SQL_INT_CODEC_ID, SQL_TEXT_CODEC_ID, SQL_TIMESTAMP_CODEC_ID, SQL_VARCHAR_CODEC_ID, ScopeField, SelectAst, SelectAstOptions, SqlBuilderOptions, SqlCharCodec, SqlCharDescriptor, SqlCodecCallContext, SqlCodecInstanceContext, SqlColumnRef, SqlConnection, SqlDriver, SqlDriverState, SqlExecuteRequest, type SqlExecutionPlan, SqlExplainResult, SqlFloatCodec, SqlFloatDescriptor, SqlIntCodec, SqlIntDescriptor, type SqlOrmPlan, type SqlParamRefMutator, type SqlParamRefMutatorInternal, SqlPlan, SqlQueryPlan, SqlQueryResult, SqlQueryable, SqlTextCodec, SqlTextDescriptor, SqlTimestampCodec, SqlTimestampDescriptor, SqlTransaction, SqlVarcharCodec, SqlVarcharDescriptor, SubqueryExpr, TableDef, TableKey, TableMetadata, TableRef, TableSource, TablesOf, ToWhereExpr, TraitExpression, TypeHelperRegistry, UniqueConstraint, UpdateAst, WhereArg, WindowFn, WindowFuncExpr, buildOperation, codecOf, collectOrderedParamRefs, compact, createRawSql, createSqlParamRefMutator, isDdlNode, isQueryAst, isWhereExpr, param, planFromAst, planInvalid, planUnsupported, queryAstKinds, sqlCharColumn, sqlCharDecode, sqlCharDescriptor, sqlCharEncode, sqlCharRenderOutputType, sqlFloatColumn, sqlFloatDecode, sqlFloatDescriptor, sqlFloatEncode, sqlIntColumn, sqlIntDecode, sqlIntDescriptor, sqlIntEncode, sqlTextColumn, sqlTextDecode, sqlTextDescriptor, sqlTextEncode, sqlTimestampColumn, sqlTimestampDecode, sqlTimestampDecodeJson, sqlTimestampDescriptor, sqlTimestampEncode, sqlTimestampEncodeJson, sqlTimestampRenderOutputType, sqlVarcharColumn, sqlVarcharDecode, sqlVarcharDescriptor, sqlVarcharEncode, sqlVarcharRenderOutputType, toExpr, whereExprKinds };
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { a as LiteralColumnDefault, i as FunctionColumnDefault, n as DdlColumnDefault, o as isDdlNode, r as DdlNode, t as DdlColumn } from "./ddl-types-BRstgyZv.mjs";
1
+ import { a as FunctionColumnDefault, c as UniqueConstraint, i as ForeignKeyConstraint, l as isDdlNode, n as DdlColumnDefault, o as LiteralColumnDefault, r as DdlNode, s as PrimaryKeyConstraint, t as DdlColumn } from "./ddl-types-CbcP15Lw.mjs";
2
2
  import { A as SelectAst, C as OrExpr, D as ProjectionItem, E as PreparedParamRef, F as isQueryAst, I as isWhereExpr, L as queryAstKinds, M as TableSource, N as UpdateAst, O as RawExpr, P as WindowFuncExpr, R as whereExprKinds, S as OperationExpr, T as ParamRef, _ as JsonObjectExpr, a as DefaultValueExpr, b as NotExpr, c as DoNothingConflictAction, d as ExistsExpr, f as IdentifierRef, g as JsonArrayAggExpr, h as JoinAst, i as ColumnRef, j as SubqueryExpr, k as RawSqlExpr, l as DoUpdateSetConflictAction, m as InsertOnConflict, n as AndExpr, o as DeleteAst, p as InsertAst, r as BinaryExpr, s as DerivedTableSource, t as AggregateExpr, u as EqColJoinOn, v as ListExpression, w as OrderByItem, x as NullCheckExpr, y as LiteralExpr } from "./types-D72v8s92.mjs";
3
3
  import { n as compact, t as collectOrderedParamRefs } from "./util-DQQgv2j1.mjs";
4
4
  import { SQL_CHAR_CODEC_ID, SQL_FLOAT_CODEC_ID, SQL_INT_CODEC_ID, SQL_TEXT_CODEC_ID, SQL_TIMESTAMP_CODEC_ID, SQL_VARCHAR_CODEC_ID, SqlCharCodec, SqlCharDescriptor, SqlFloatCodec, SqlFloatDescriptor, SqlIntCodec, SqlIntDescriptor, SqlTextCodec, SqlTextDescriptor, SqlTimestampCodec, SqlTimestampDescriptor, SqlVarcharCodec, SqlVarcharDescriptor, sqlCharColumn, sqlCharDecode, sqlCharDescriptor, sqlCharEncode, sqlCharRenderOutputType, sqlFloatColumn, sqlFloatDecode, sqlFloatDescriptor, sqlFloatEncode, sqlIntColumn, sqlIntDecode, sqlIntDescriptor, sqlIntEncode, sqlTextColumn, sqlTextDecode, sqlTextDescriptor, sqlTextEncode, sqlTimestampColumn, sqlTimestampDecode, sqlTimestampDecodeJson, sqlTimestampDescriptor, sqlTimestampEncode, sqlTimestampEncodeJson, sqlTimestampRenderOutputType, sqlVarcharColumn, sqlVarcharDecode, sqlVarcharDescriptor, sqlVarcharEncode, sqlVarcharRenderOutputType } from "./exports/ast.mjs";
@@ -8,4 +8,4 @@ import { t as createSqlParamRefMutator } from "./middleware-CMr4CHNz.mjs";
8
8
  import { planFromAst } from "./exports/plan.mjs";
9
9
  import "./exports/query-lane-context.mjs";
10
10
  import "./exports/types.mjs";
11
- export { AggregateExpr, AndExpr, BinaryExpr, ColumnRef, DdlColumn, DdlColumnDefault, DdlNode, DefaultValueExpr, DeleteAst, DerivedTableSource, DoNothingConflictAction, DoUpdateSetConflictAction, EqColJoinOn, ExistsExpr, FunctionColumnDefault, IdentifierRef, InsertAst, InsertOnConflict, JoinAst, JsonArrayAggExpr, JsonObjectExpr, ListExpression, LiteralColumnDefault, LiteralExpr, NotExpr, NullCheckExpr, OperationExpr, OrExpr, OrderByItem, ParamRef, PreparedParamRef, ProjectionItem, RawExpr, RawSqlExpr, SQL_CHAR_CODEC_ID, SQL_FLOAT_CODEC_ID, SQL_INT_CODEC_ID, SQL_TEXT_CODEC_ID, SQL_TIMESTAMP_CODEC_ID, SQL_VARCHAR_CODEC_ID, SelectAst, SqlCharCodec, SqlCharDescriptor, SqlFloatCodec, SqlFloatDescriptor, SqlIntCodec, SqlIntDescriptor, SqlTextCodec, SqlTextDescriptor, SqlTimestampCodec, SqlTimestampDescriptor, SqlVarcharCodec, SqlVarcharDescriptor, SubqueryExpr, TableSource, UpdateAst, WindowFuncExpr, buildOperation, codecOf, collectOrderedParamRefs, compact, createRawSql, createSqlParamRefMutator, isDdlNode, isQueryAst, isWhereExpr, param, planFromAst, planInvalid, planUnsupported, queryAstKinds, sqlCharColumn, sqlCharDecode, sqlCharDescriptor, sqlCharEncode, sqlCharRenderOutputType, sqlFloatColumn, sqlFloatDecode, sqlFloatDescriptor, sqlFloatEncode, sqlIntColumn, sqlIntDecode, sqlIntDescriptor, sqlIntEncode, sqlTextColumn, sqlTextDecode, sqlTextDescriptor, sqlTextEncode, sqlTimestampColumn, sqlTimestampDecode, sqlTimestampDecodeJson, sqlTimestampDescriptor, sqlTimestampEncode, sqlTimestampEncodeJson, sqlTimestampRenderOutputType, sqlVarcharColumn, sqlVarcharDecode, sqlVarcharDescriptor, sqlVarcharEncode, sqlVarcharRenderOutputType, toExpr, whereExprKinds };
11
+ export { AggregateExpr, AndExpr, BinaryExpr, ColumnRef, DdlColumn, DdlColumnDefault, DdlNode, DefaultValueExpr, DeleteAst, DerivedTableSource, DoNothingConflictAction, DoUpdateSetConflictAction, EqColJoinOn, ExistsExpr, ForeignKeyConstraint, FunctionColumnDefault, IdentifierRef, InsertAst, InsertOnConflict, JoinAst, JsonArrayAggExpr, JsonObjectExpr, ListExpression, LiteralColumnDefault, LiteralExpr, NotExpr, NullCheckExpr, OperationExpr, OrExpr, OrderByItem, ParamRef, PreparedParamRef, PrimaryKeyConstraint, ProjectionItem, RawExpr, RawSqlExpr, SQL_CHAR_CODEC_ID, SQL_FLOAT_CODEC_ID, SQL_INT_CODEC_ID, SQL_TEXT_CODEC_ID, SQL_TIMESTAMP_CODEC_ID, SQL_VARCHAR_CODEC_ID, SelectAst, SqlCharCodec, SqlCharDescriptor, SqlFloatCodec, SqlFloatDescriptor, SqlIntCodec, SqlIntDescriptor, SqlTextCodec, SqlTextDescriptor, SqlTimestampCodec, SqlTimestampDescriptor, SqlVarcharCodec, SqlVarcharDescriptor, SubqueryExpr, TableSource, UniqueConstraint, UpdateAst, WindowFuncExpr, buildOperation, codecOf, collectOrderedParamRefs, compact, createRawSql, createSqlParamRefMutator, isDdlNode, isQueryAst, isWhereExpr, param, planFromAst, planInvalid, planUnsupported, queryAstKinds, sqlCharColumn, sqlCharDecode, sqlCharDescriptor, sqlCharEncode, sqlCharRenderOutputType, sqlFloatColumn, sqlFloatDecode, sqlFloatDescriptor, sqlFloatEncode, sqlIntColumn, sqlIntDecode, sqlIntDescriptor, sqlIntEncode, sqlTextColumn, sqlTextDecode, sqlTextDescriptor, sqlTextEncode, sqlTimestampColumn, sqlTimestampDecode, sqlTimestampDecodeJson, sqlTimestampDescriptor, sqlTimestampEncode, sqlTimestampEncodeJson, sqlTimestampRenderOutputType, sqlVarcharColumn, sqlVarcharDecode, sqlVarcharDescriptor, sqlVarcharEncode, sqlVarcharRenderOutputType, toExpr, whereExprKinds };
package/package.json CHANGED
@@ -1,26 +1,26 @@
1
1
  {
2
2
  "name": "@prisma-next/sql-relational-core",
3
- "version": "0.12.0-dev.62",
3
+ "version": "0.12.0-dev.63",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "sideEffects": false,
7
7
  "description": "AST types, query lane context, and type utilities for Prisma Next SQL lanes",
8
8
  "dependencies": {
9
- "@prisma-next/contract": "0.12.0-dev.62",
10
- "@prisma-next/framework-components": "0.12.0-dev.62",
11
- "@prisma-next/operations": "0.12.0-dev.62",
12
- "@prisma-next/sql-contract": "0.12.0-dev.62",
13
- "@prisma-next/sql-operations": "0.12.0-dev.62",
14
- "@prisma-next/utils": "0.12.0-dev.62",
9
+ "@prisma-next/contract": "0.12.0-dev.63",
10
+ "@prisma-next/framework-components": "0.12.0-dev.63",
11
+ "@prisma-next/operations": "0.12.0-dev.63",
12
+ "@prisma-next/sql-contract": "0.12.0-dev.63",
13
+ "@prisma-next/sql-operations": "0.12.0-dev.63",
14
+ "@prisma-next/utils": "0.12.0-dev.63",
15
15
  "@standard-schema/spec": "^1.1.0",
16
16
  "arktype": "^2.2.0",
17
17
  "ts-toolbelt": "^9.6.0"
18
18
  },
19
19
  "devDependencies": {
20
- "@prisma-next/sql-contract-ts": "0.12.0-dev.62",
21
- "@prisma-next/test-utils": "0.12.0-dev.62",
22
- "@prisma-next/tsconfig": "0.12.0-dev.62",
23
- "@prisma-next/tsdown": "0.12.0-dev.62",
20
+ "@prisma-next/sql-contract-ts": "0.12.0-dev.63",
21
+ "@prisma-next/test-utils": "0.12.0-dev.63",
22
+ "@prisma-next/tsconfig": "0.12.0-dev.63",
23
+ "@prisma-next/tsdown": "0.12.0-dev.63",
24
24
  "tsdown": "0.22.1",
25
25
  "typescript": "5.9.3",
26
26
  "vitest": "4.1.7"
@@ -1,5 +1,6 @@
1
1
  import type { ColumnDefaultLiteralInputValue } from '@prisma-next/contract/types';
2
2
  import { isColumnDefaultLiteralInputValue } from '@prisma-next/contract/types';
3
+ import type { ReferentialAction } from '@prisma-next/sql-contract/types';
3
4
  import type { AnyParamRef } from './types';
4
5
 
5
6
  export interface DdlColumnDefaultVisitor<R> {
@@ -56,14 +57,14 @@ export class DdlColumn {
56
57
  readonly type: string;
57
58
  readonly notNull?: boolean | undefined;
58
59
  readonly primaryKey?: boolean | undefined;
59
- readonly default?: DdlColumnDefault | undefined;
60
+ readonly default?: AnyDdlColumnDefault | undefined;
60
61
 
61
62
  constructor(options: {
62
63
  readonly name: string;
63
64
  readonly type: string;
64
65
  readonly notNull?: boolean;
65
66
  readonly primaryKey?: boolean;
66
- readonly default?: DdlColumnDefault;
67
+ readonly default?: AnyDdlColumnDefault;
67
68
  }) {
68
69
  this.name = options.name;
69
70
  this.type = options.type;
@@ -104,3 +105,81 @@ export function isDdlNode(value: unknown): value is DdlNode {
104
105
  typeof value.isDdlNode === 'function'
105
106
  );
106
107
  }
108
+
109
+ // ---------------------------------------------------------------------------
110
+ // Table-level constraint nodes
111
+ // ---------------------------------------------------------------------------
112
+
113
+ /**
114
+ * A composite (or single-column) PRIMARY KEY constraint on a `CreateTable`
115
+ * node. When `name` is set, the adapter renders `CONSTRAINT <name> PRIMARY KEY
116
+ * (…)`; otherwise it renders an anonymous `PRIMARY KEY (…)`.
117
+ *
118
+ * Frozen on construction — immutable after creation.
119
+ */
120
+ export class PrimaryKeyConstraint {
121
+ readonly kind = 'primary-key' as const;
122
+ readonly columns: ReadonlyArray<string>;
123
+ readonly name: string | undefined;
124
+
125
+ constructor(options: { readonly columns: readonly string[]; readonly name?: string }) {
126
+ this.columns = Object.freeze([...options.columns]);
127
+ this.name = options.name;
128
+ Object.freeze(this);
129
+ }
130
+ }
131
+
132
+ /**
133
+ * A FOREIGN KEY constraint on a `CreateTable` node. `onDelete` and `onUpdate`
134
+ * use the same `ReferentialAction` vocabulary already used by the migration
135
+ * planner and the contract IR — no parallel string enum.
136
+ *
137
+ * Frozen on construction — immutable after creation.
138
+ */
139
+ export class ForeignKeyConstraint {
140
+ readonly kind = 'foreign-key' as const;
141
+ readonly columns: ReadonlyArray<string>;
142
+ readonly refTable: string;
143
+ readonly refColumns: ReadonlyArray<string>;
144
+ readonly onDelete: ReferentialAction | undefined;
145
+ readonly onUpdate: ReferentialAction | undefined;
146
+ readonly name: string | undefined;
147
+
148
+ constructor(options: {
149
+ readonly columns: readonly string[];
150
+ readonly refTable: string;
151
+ readonly refColumns: readonly string[];
152
+ readonly onDelete?: ReferentialAction;
153
+ readonly onUpdate?: ReferentialAction;
154
+ readonly name?: string;
155
+ }) {
156
+ this.columns = Object.freeze([...options.columns]);
157
+ this.refTable = options.refTable;
158
+ this.refColumns = Object.freeze([...options.refColumns]);
159
+ this.onDelete = options.onDelete;
160
+ this.onUpdate = options.onUpdate;
161
+ this.name = options.name;
162
+ Object.freeze(this);
163
+ }
164
+ }
165
+
166
+ /**
167
+ * A table-level UNIQUE constraint on a `CreateTable` node. When `name` is
168
+ * set, the adapter renders `CONSTRAINT <name> UNIQUE (…)`; otherwise it
169
+ * renders an anonymous `UNIQUE (…)`.
170
+ *
171
+ * Frozen on construction — immutable after creation.
172
+ */
173
+ export class UniqueConstraint {
174
+ readonly kind = 'unique' as const;
175
+ readonly columns: ReadonlyArray<string>;
176
+ readonly name: string | undefined;
177
+
178
+ constructor(options: { readonly columns: readonly string[]; readonly name?: string }) {
179
+ this.columns = Object.freeze([...options.columns]);
180
+ this.name = options.name;
181
+ Object.freeze(this);
182
+ }
183
+ }
184
+
185
+ export type DdlTableConstraint = PrimaryKeyConstraint | ForeignKeyConstraint | UniqueConstraint;
@@ -1,11 +1,19 @@
1
1
  import type { ColumnDefaultLiteralInputValue } from '@prisma-next/contract/types';
2
- import type { DdlColumnDefault } from '../ast/ddl-types';
3
- import { DdlColumn, FunctionColumnDefault, LiteralColumnDefault } from '../ast/ddl-types';
2
+ import type { ReferentialAction } from '@prisma-next/sql-contract/types';
3
+ import type { AnyDdlColumnDefault } from '../ast/ddl-types';
4
+ import {
5
+ DdlColumn,
6
+ ForeignKeyConstraint,
7
+ FunctionColumnDefault,
8
+ LiteralColumnDefault,
9
+ PrimaryKeyConstraint,
10
+ UniqueConstraint,
11
+ } from '../ast/ddl-types';
4
12
 
5
13
  export interface DdlColumnOptions {
6
14
  readonly notNull?: boolean;
7
15
  readonly primaryKey?: boolean;
8
- readonly default?: DdlColumnDefault;
16
+ readonly default?: AnyDdlColumnDefault;
9
17
  }
10
18
 
11
19
  export function lit(value: ColumnDefaultLiteralInputValue): LiteralColumnDefault {
@@ -19,3 +27,30 @@ export function fn(expression: string): FunctionColumnDefault {
19
27
  export function col(name: string, type: string, options?: DdlColumnOptions): DdlColumn {
20
28
  return new DdlColumn({ name, type, ...options });
21
29
  }
30
+
31
+ export function primaryKey(
32
+ columns: readonly string[],
33
+ options?: { readonly name?: string },
34
+ ): PrimaryKeyConstraint {
35
+ return new PrimaryKeyConstraint({ columns, ...options });
36
+ }
37
+
38
+ export function foreignKey(
39
+ columns: readonly string[],
40
+ refTable: string,
41
+ refColumns: readonly string[],
42
+ options?: {
43
+ readonly name?: string;
44
+ readonly onDelete?: ReferentialAction;
45
+ readonly onUpdate?: ReferentialAction;
46
+ },
47
+ ): ForeignKeyConstraint {
48
+ return new ForeignKeyConstraint({ columns, refTable, refColumns, ...options });
49
+ }
50
+
51
+ export function unique(
52
+ columns: readonly string[],
53
+ options?: { readonly name?: string },
54
+ ): UniqueConstraint {
55
+ return new UniqueConstraint({ columns, ...options });
56
+ }
@@ -1,4 +1,12 @@
1
- export { col, type DdlColumnOptions, fn, lit } from '../contract-free/column';
1
+ export {
2
+ col,
3
+ type DdlColumnOptions,
4
+ fn,
5
+ foreignKey,
6
+ lit,
7
+ primaryKey,
8
+ unique,
9
+ } from '../contract-free/column';
2
10
  export {
3
11
  CfConflictClause,
4
12
  CfExpr,
@@ -1,71 +0,0 @@
1
- import { isColumnDefaultLiteralInputValue } from "@prisma-next/contract/types";
2
- //#region src/ast/ddl-types.ts
3
- var DdlColumnDefault = class {
4
- freeze() {
5
- Object.freeze(this);
6
- }
7
- };
8
- var LiteralColumnDefault = class extends DdlColumnDefault {
9
- kind = "literal";
10
- value;
11
- constructor(value) {
12
- super();
13
- if (!isColumnDefaultLiteralInputValue(value)) throw new Error("Invalid column default literal value");
14
- this.value = value;
15
- this.freeze();
16
- }
17
- accept(visitor) {
18
- return visitor.literal(this);
19
- }
20
- };
21
- var FunctionColumnDefault = class extends DdlColumnDefault {
22
- kind = "function";
23
- expression;
24
- constructor(expression) {
25
- super();
26
- this.expression = expression;
27
- this.freeze();
28
- }
29
- accept(visitor) {
30
- return visitor.function(this);
31
- }
32
- };
33
- var DdlColumn = class {
34
- name;
35
- type;
36
- notNull;
37
- primaryKey;
38
- default;
39
- constructor(options) {
40
- this.name = options.name;
41
- this.type = options.type;
42
- this.notNull = options.notNull;
43
- this.primaryKey = options.primaryKey;
44
- this.default = options.default;
45
- Object.freeze(this);
46
- }
47
- };
48
- var DdlNode = class {
49
- /**
50
- * Structural brand: every DDL node answers `true`. Lets {@link isDdlNode}
51
- * recognise any `DdlNode` subclass — including target-contributed kinds —
52
- * without a central kind registry that subclasses would have to register
53
- * into.
54
- */
55
- isDdlNode() {
56
- return true;
57
- }
58
- freeze() {
59
- Object.freeze(this);
60
- }
61
- collectParamRefs() {
62
- return [];
63
- }
64
- };
65
- function isDdlNode(value) {
66
- return typeof value === "object" && value !== null && "isDdlNode" in value && typeof value.isDdlNode === "function";
67
- }
68
- //#endregion
69
- export { LiteralColumnDefault as a, FunctionColumnDefault as i, DdlColumnDefault as n, isDdlNode as o, DdlNode as r, DdlColumn as t };
70
-
71
- //# sourceMappingURL=ddl-types-BRstgyZv.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ddl-types-BRstgyZv.mjs","names":[],"sources":["../src/ast/ddl-types.ts"],"sourcesContent":["import type { ColumnDefaultLiteralInputValue } from '@prisma-next/contract/types';\nimport { isColumnDefaultLiteralInputValue } from '@prisma-next/contract/types';\nimport type { AnyParamRef } from './types';\n\nexport interface DdlColumnDefaultVisitor<R> {\n literal(node: LiteralColumnDefault): R;\n function(node: FunctionColumnDefault): R;\n}\n\nexport abstract class DdlColumnDefault {\n abstract readonly kind: string;\n abstract accept<R>(visitor: DdlColumnDefaultVisitor<R>): R;\n\n protected freeze(): void {\n Object.freeze(this);\n }\n}\n\nexport class LiteralColumnDefault extends DdlColumnDefault {\n readonly kind = 'literal' as const;\n readonly value: ColumnDefaultLiteralInputValue;\n\n constructor(value: ColumnDefaultLiteralInputValue) {\n super();\n if (!isColumnDefaultLiteralInputValue(value)) {\n throw new Error('Invalid column default literal value');\n }\n this.value = value;\n this.freeze();\n }\n\n override accept<R>(visitor: DdlColumnDefaultVisitor<R>): R {\n return visitor.literal(this);\n }\n}\n\nexport class FunctionColumnDefault extends DdlColumnDefault {\n readonly kind = 'function' as const;\n readonly expression: string;\n\n constructor(expression: string) {\n super();\n this.expression = expression;\n this.freeze();\n }\n\n override accept<R>(visitor: DdlColumnDefaultVisitor<R>): R {\n return visitor.function(this);\n }\n}\n\nexport type AnyDdlColumnDefault = LiteralColumnDefault | FunctionColumnDefault;\n\nexport class DdlColumn {\n readonly name: string;\n readonly type: string;\n readonly notNull?: boolean | undefined;\n readonly primaryKey?: boolean | undefined;\n readonly default?: DdlColumnDefault | undefined;\n\n constructor(options: {\n readonly name: string;\n readonly type: string;\n readonly notNull?: boolean;\n readonly primaryKey?: boolean;\n readonly default?: DdlColumnDefault;\n }) {\n this.name = options.name;\n this.type = options.type;\n this.notNull = options.notNull;\n this.primaryKey = options.primaryKey;\n this.default = options.default;\n Object.freeze(this);\n }\n}\n\nexport abstract class DdlNode {\n abstract readonly kind: string;\n\n /**\n * Structural brand: every DDL node answers `true`. Lets {@link isDdlNode}\n * recognise any `DdlNode` subclass — including target-contributed kinds —\n * without a central kind registry that subclasses would have to register\n * into.\n */\n isDdlNode(): true {\n return true;\n }\n\n protected freeze(): void {\n Object.freeze(this);\n }\n\n collectParamRefs(): AnyParamRef[] {\n return [];\n }\n}\n\nexport function isDdlNode(value: unknown): value is DdlNode {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'isDdlNode' in value &&\n typeof value.isDdlNode === 'function'\n );\n}\n"],"mappings":";;AASA,IAAsB,mBAAtB,MAAuC;CAIrC,SAAyB;EACvB,OAAO,OAAO,IAAI;CACpB;AACF;AAEA,IAAa,uBAAb,cAA0C,iBAAiB;CACzD,OAAgB;CAChB;CAEA,YAAY,OAAuC;EACjD,MAAM;EACN,IAAI,CAAC,iCAAiC,KAAK,GACzC,MAAM,IAAI,MAAM,sCAAsC;EAExD,KAAK,QAAQ;EACb,KAAK,OAAO;CACd;CAEA,OAAmB,SAAwC;EACzD,OAAO,QAAQ,QAAQ,IAAI;CAC7B;AACF;AAEA,IAAa,wBAAb,cAA2C,iBAAiB;CAC1D,OAAgB;CAChB;CAEA,YAAY,YAAoB;EAC9B,MAAM;EACN,KAAK,aAAa;EAClB,KAAK,OAAO;CACd;CAEA,OAAmB,SAAwC;EACzD,OAAO,QAAQ,SAAS,IAAI;CAC9B;AACF;AAIA,IAAa,YAAb,MAAuB;CACrB;CACA;CACA;CACA;CACA;CAEA,YAAY,SAMT;EACD,KAAK,OAAO,QAAQ;EACpB,KAAK,OAAO,QAAQ;EACpB,KAAK,UAAU,QAAQ;EACvB,KAAK,aAAa,QAAQ;EAC1B,KAAK,UAAU,QAAQ;EACvB,OAAO,OAAO,IAAI;CACpB;AACF;AAEA,IAAsB,UAAtB,MAA8B;;;;;;;CAS5B,YAAkB;EAChB,OAAO;CACT;CAEA,SAAyB;EACvB,OAAO,OAAO,IAAI;CACpB;CAEA,mBAAkC;EAChC,OAAO,CAAC;CACV;AACF;AAEA,SAAgB,UAAU,OAAkC;CAC1D,OACE,OAAO,UAAU,YACjB,UAAU,QACV,eAAe,SACf,OAAO,MAAM,cAAc;AAE/B"}
@@ -1,56 +0,0 @@
1
- import { d as AnyParamRef } from "./types-CnBcZ9NS.mjs";
2
- import { ColumnDefaultLiteralInputValue } from "@prisma-next/contract/types";
3
-
4
- //#region src/ast/ddl-types.d.ts
5
- interface DdlColumnDefaultVisitor<R> {
6
- literal(node: LiteralColumnDefault): R;
7
- function(node: FunctionColumnDefault): R;
8
- }
9
- declare abstract class DdlColumnDefault {
10
- abstract readonly kind: string;
11
- abstract accept<R>(visitor: DdlColumnDefaultVisitor<R>): R;
12
- protected freeze(): void;
13
- }
14
- declare class LiteralColumnDefault extends DdlColumnDefault {
15
- readonly kind: "literal";
16
- readonly value: ColumnDefaultLiteralInputValue;
17
- constructor(value: ColumnDefaultLiteralInputValue);
18
- accept<R>(visitor: DdlColumnDefaultVisitor<R>): R;
19
- }
20
- declare class FunctionColumnDefault extends DdlColumnDefault {
21
- readonly kind: "function";
22
- readonly expression: string;
23
- constructor(expression: string);
24
- accept<R>(visitor: DdlColumnDefaultVisitor<R>): R;
25
- }
26
- type AnyDdlColumnDefault = LiteralColumnDefault | FunctionColumnDefault;
27
- declare class DdlColumn {
28
- readonly name: string;
29
- readonly type: string;
30
- readonly notNull?: boolean | undefined;
31
- readonly primaryKey?: boolean | undefined;
32
- readonly default?: DdlColumnDefault | undefined;
33
- constructor(options: {
34
- readonly name: string;
35
- readonly type: string;
36
- readonly notNull?: boolean;
37
- readonly primaryKey?: boolean;
38
- readonly default?: DdlColumnDefault;
39
- });
40
- }
41
- declare abstract class DdlNode {
42
- abstract readonly kind: string;
43
- /**
44
- * Structural brand: every DDL node answers `true`. Lets {@link isDdlNode}
45
- * recognise any `DdlNode` subclass — including target-contributed kinds —
46
- * without a central kind registry that subclasses would have to register
47
- * into.
48
- */
49
- isDdlNode(): true;
50
- protected freeze(): void;
51
- collectParamRefs(): AnyParamRef[];
52
- }
53
- declare function isDdlNode(value: unknown): value is DdlNode;
54
- //#endregion
55
- export { DdlNode as a, isDdlNode as c, DdlColumnDefaultVisitor as i, DdlColumn as n, FunctionColumnDefault as o, DdlColumnDefault as r, LiteralColumnDefault as s, AnyDdlColumnDefault as t };
56
- //# sourceMappingURL=ddl-types-rchYEWpk.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ddl-types-rchYEWpk.d.mts","names":[],"sources":["../src/ast/ddl-types.ts"],"mappings":";;;;UAIiB,uBAAA;EACf,OAAA,CAAQ,IAAA,EAAM,oBAAA,GAAuB,CAAA;EACrC,QAAA,CAAS,IAAA,EAAM,qBAAA,GAAwB,CAAA;AAAA;AAAA,uBAGnB,gBAAA;EAAA,kBACF,IAAA;EAAA,SACT,MAAA,IAAU,OAAA,EAAS,uBAAA,CAAwB,CAAA,IAAK,CAAA;EAAA,UAE/C,MAAA;AAAA;AAAA,cAKC,oBAAA,SAA6B,gBAAA;EAAA,SAC/B,IAAA;EAAA,SACA,KAAA,EAAO,8BAAA;cAEJ,KAAA,EAAO,8BAAA;EASV,MAAA,IAAU,OAAA,EAAS,uBAAA,CAAwB,CAAA,IAAK,CAAA;AAAA;AAAA,cAK9C,qBAAA,SAA8B,gBAAA;EAAA,SAChC,IAAA;EAAA,SACA,UAAA;cAEG,UAAA;EAMH,MAAA,IAAU,OAAA,EAAS,uBAAA,CAAwB,CAAA,IAAK,CAAA;AAAA;AAAA,KAK/C,mBAAA,GAAsB,oBAAA,GAAuB,qBAAqB;AAAA,cAEjE,SAAA;EAAA,SACF,IAAA;EAAA,SACA,IAAA;EAAA,SACA,OAAA;EAAA,SACA,UAAA;EAAA,SACA,OAAA,GAAU,gBAAA;cAEP,OAAA;IAAA,SACD,IAAA;IAAA,SACA,IAAA;IAAA,SACA,OAAA;IAAA,SACA,UAAA;IAAA,SACA,OAAA,GAAU,gBAAgB;EAAA;AAAA;AAAA,uBAWjB,OAAA;EAAA,kBACF,IAAA;EAhEF;AAAA;AAKlB;;;;EAmEE,SAAA;EAAA,UAIU,MAAA;EAIV,gBAAA,IAAoB,WAAW;AAAA;AAAA,iBAKjB,SAAA,CAAU,KAAA,YAAiB,KAAA,IAAS,OAAO"}