@prisma-next/sql-relational-core 0.3.0-pr.93.5 → 0.3.0-pr.94.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (160) hide show
  1. package/dist/errors-BwxypN2Q.mjs +3 -0
  2. package/dist/errors-CLx1Ylq0.d.mts +2 -0
  3. package/dist/exports/ast.d.mts +123 -0
  4. package/dist/exports/ast.d.mts.map +1 -0
  5. package/dist/exports/ast.mjs +304 -0
  6. package/dist/exports/ast.mjs.map +1 -0
  7. package/dist/exports/errors.d.mts +2 -0
  8. package/dist/exports/errors.mjs +3 -0
  9. package/dist/exports/guards.d.mts +88 -0
  10. package/dist/exports/guards.d.mts.map +1 -0
  11. package/dist/exports/guards.mjs +3 -0
  12. package/dist/exports/operations-registry.d.mts +5 -0
  13. package/dist/exports/operations-registry.mjs +3 -0
  14. package/dist/exports/param.d.mts +5 -0
  15. package/dist/exports/param.mjs +3 -0
  16. package/dist/exports/plan.d.mts +2 -0
  17. package/dist/exports/plan.mjs +17 -0
  18. package/dist/exports/plan.mjs.map +1 -0
  19. package/dist/exports/query-lane-context.d.mts +2 -0
  20. package/dist/exports/query-lane-context.mjs +1 -0
  21. package/dist/exports/schema.d.mts +5 -0
  22. package/dist/exports/schema.mjs +4 -0
  23. package/dist/exports/types.d.mts +4 -0
  24. package/dist/exports/types.mjs +3 -0
  25. package/dist/guards-4T0IByJo.mjs +132 -0
  26. package/dist/guards-4T0IByJo.mjs.map +1 -0
  27. package/dist/index.d.mts +12 -0
  28. package/dist/index.mjs +12 -0
  29. package/dist/operations-registry-7R5KE2-5.mjs +152 -0
  30. package/dist/operations-registry-7R5KE2-5.mjs.map +1 -0
  31. package/dist/operations-registry-CIcn4f2P.d.mts +9 -0
  32. package/dist/operations-registry-CIcn4f2P.d.mts.map +1 -0
  33. package/dist/param-B4LzVPv2.d.mts +8 -0
  34. package/dist/param-B4LzVPv2.d.mts.map +1 -0
  35. package/dist/param-BFvNAaHR.mjs +14 -0
  36. package/dist/param-BFvNAaHR.mjs.map +1 -0
  37. package/dist/plan-9PvH-Tu3.d.mts +157 -0
  38. package/dist/plan-9PvH-Tu3.d.mts.map +1 -0
  39. package/dist/query-lane-context-wr_XXnB5.d.mts +143 -0
  40. package/dist/query-lane-context-wr_XXnB5.d.mts.map +1 -0
  41. package/dist/schema-BsY2EXAf.mjs +148 -0
  42. package/dist/schema-BsY2EXAf.mjs.map +1 -0
  43. package/dist/schema-Dse48uyP.d.mts +63 -0
  44. package/dist/schema-Dse48uyP.d.mts.map +1 -0
  45. package/dist/types-Bg2kUmUA.d.mts +359 -0
  46. package/dist/types-Bg2kUmUA.d.mts.map +1 -0
  47. package/dist/types-D_FRJvm0.mjs +18 -0
  48. package/dist/types-D_FRJvm0.mjs.map +1 -0
  49. package/package.json +28 -50
  50. package/src/ast/predicate.ts +3 -11
  51. package/src/ast/types.ts +23 -9
  52. package/src/exports/guards.ts +5 -0
  53. package/src/operations-registry.ts +112 -73
  54. package/src/schema.ts +40 -29
  55. package/src/types.ts +102 -52
  56. package/src/utils/guards.ts +88 -18
  57. package/dist/ast/adapter-types.d.ts +0 -28
  58. package/dist/ast/adapter-types.d.ts.map +0 -1
  59. package/dist/ast/codec-types.d.ts +0 -141
  60. package/dist/ast/codec-types.d.ts.map +0 -1
  61. package/dist/ast/common.d.ts +0 -7
  62. package/dist/ast/common.d.ts.map +0 -1
  63. package/dist/ast/delete.d.ts +0 -8
  64. package/dist/ast/delete.d.ts.map +0 -1
  65. package/dist/ast/driver-types.d.ts +0 -20
  66. package/dist/ast/driver-types.d.ts.map +0 -1
  67. package/dist/ast/insert.d.ts +0 -8
  68. package/dist/ast/insert.d.ts.map +0 -1
  69. package/dist/ast/join.d.ts +0 -6
  70. package/dist/ast/join.d.ts.map +0 -1
  71. package/dist/ast/order.d.ts +0 -6
  72. package/dist/ast/order.d.ts.map +0 -1
  73. package/dist/ast/predicate.d.ts +0 -4
  74. package/dist/ast/predicate.d.ts.map +0 -1
  75. package/dist/ast/select.d.ts +0 -18
  76. package/dist/ast/select.d.ts.map +0 -1
  77. package/dist/ast/types.d.ts +0 -118
  78. package/dist/ast/types.d.ts.map +0 -1
  79. package/dist/ast/update.d.ts +0 -9
  80. package/dist/ast/update.d.ts.map +0 -1
  81. package/dist/ast/util.d.ts +0 -2
  82. package/dist/ast/util.d.ts.map +0 -1
  83. package/dist/chunk-2F7DSEOU.js +0 -8
  84. package/dist/chunk-2F7DSEOU.js.map +0 -1
  85. package/dist/chunk-36WJWNHT.js +0 -1
  86. package/dist/chunk-36WJWNHT.js.map +0 -1
  87. package/dist/chunk-5N34PNVZ.js +0 -62
  88. package/dist/chunk-5N34PNVZ.js.map +0 -1
  89. package/dist/chunk-7I3EMQID.js +0 -16
  90. package/dist/chunk-7I3EMQID.js.map +0 -1
  91. package/dist/chunk-D4JLPIWO.js +0 -13
  92. package/dist/chunk-D4JLPIWO.js.map +0 -1
  93. package/dist/chunk-G52ENULI.js +0 -1
  94. package/dist/chunk-G52ENULI.js.map +0 -1
  95. package/dist/chunk-J6O2HVBM.js +0 -320
  96. package/dist/chunk-J6O2HVBM.js.map +0 -1
  97. package/dist/chunk-KYSP7L5C.js +0 -16
  98. package/dist/chunk-KYSP7L5C.js.map +0 -1
  99. package/dist/chunk-M23L3JHG.js +0 -159
  100. package/dist/chunk-M23L3JHG.js.map +0 -1
  101. package/dist/chunk-U7AXAUJA.js +0 -1
  102. package/dist/chunk-U7AXAUJA.js.map +0 -1
  103. package/dist/chunk-U7IAFPVU.js +0 -152
  104. package/dist/chunk-U7IAFPVU.js.map +0 -1
  105. package/dist/errors.d.ts +0 -2
  106. package/dist/errors.d.ts.map +0 -1
  107. package/dist/exports/ast.d.ts +0 -14
  108. package/dist/exports/ast.d.ts.map +0 -1
  109. package/dist/exports/ast.js +0 -46
  110. package/dist/exports/ast.js.map +0 -1
  111. package/dist/exports/errors.d.ts +0 -2
  112. package/dist/exports/errors.d.ts.map +0 -1
  113. package/dist/exports/errors.js +0 -9
  114. package/dist/exports/errors.js.map +0 -1
  115. package/dist/exports/guards.d.ts +0 -2
  116. package/dist/exports/guards.d.ts.map +0 -1
  117. package/dist/exports/guards.js +0 -21
  118. package/dist/exports/guards.js.map +0 -1
  119. package/dist/exports/operations-registry.d.ts +0 -2
  120. package/dist/exports/operations-registry.d.ts.map +0 -1
  121. package/dist/exports/operations-registry.js +0 -9
  122. package/dist/exports/operations-registry.js.map +0 -1
  123. package/dist/exports/param.d.ts +0 -3
  124. package/dist/exports/param.d.ts.map +0 -1
  125. package/dist/exports/param.js +0 -7
  126. package/dist/exports/param.js.map +0 -1
  127. package/dist/exports/plan.d.ts +0 -2
  128. package/dist/exports/plan.d.ts.map +0 -1
  129. package/dist/exports/plan.js +0 -7
  130. package/dist/exports/plan.js.map +0 -1
  131. package/dist/exports/query-lane-context.d.ts +0 -2
  132. package/dist/exports/query-lane-context.d.ts.map +0 -1
  133. package/dist/exports/query-lane-context.js +0 -2
  134. package/dist/exports/query-lane-context.js.map +0 -1
  135. package/dist/exports/schema.d.ts +0 -3
  136. package/dist/exports/schema.d.ts.map +0 -1
  137. package/dist/exports/schema.js +0 -14
  138. package/dist/exports/schema.js.map +0 -1
  139. package/dist/exports/types.d.ts +0 -2
  140. package/dist/exports/types.d.ts.map +0 -1
  141. package/dist/exports/types.js +0 -10
  142. package/dist/exports/types.js.map +0 -1
  143. package/dist/index.d.ts +0 -9
  144. package/dist/index.d.ts.map +0 -1
  145. package/dist/index.js +0 -81
  146. package/dist/index.js.map +0 -1
  147. package/dist/operations-registry.d.ts +0 -5
  148. package/dist/operations-registry.d.ts.map +0 -1
  149. package/dist/param.d.ts +0 -4
  150. package/dist/param.d.ts.map +0 -1
  151. package/dist/plan.d.ts +0 -23
  152. package/dist/plan.d.ts.map +0 -1
  153. package/dist/query-lane-context.d.ts +0 -16
  154. package/dist/query-lane-context.d.ts.map +0 -1
  155. package/dist/schema.d.ts +0 -63
  156. package/dist/schema.d.ts.map +0 -1
  157. package/dist/types.d.ts +0 -332
  158. package/dist/types.d.ts.map +0 -1
  159. package/dist/utils/guards.d.ts +0 -55
  160. package/dist/utils/guards.d.ts.map +0 -1
@@ -0,0 +1,143 @@
1
+ import { OperationRegistry } from "@prisma-next/operations";
2
+ import { O } from "ts-toolbelt";
3
+ import { SqlContract, SqlStorage } from "@prisma-next/sql-contract/types";
4
+
5
+ //#region src/ast/codec-types.d.ts
6
+ /**
7
+ * Codec metadata for database-specific type information.
8
+ * Used for schema introspection and verification.
9
+ */
10
+ interface CodecMeta {
11
+ readonly db?: {
12
+ readonly sql?: {
13
+ readonly postgres?: {
14
+ readonly nativeType: string;
15
+ };
16
+ };
17
+ };
18
+ }
19
+ /**
20
+ * Codec interface for encoding/decoding values between wire format and JavaScript types.
21
+ *
22
+ * Codecs are pure, synchronous functions with no side effects or IO.
23
+ * They provide deterministic conversion between database wire types and JS values.
24
+ */
25
+ interface Codec<Id$1 extends string = string, TWire = unknown, TJs = unknown> {
26
+ /**
27
+ * Namespaced codec identifier in format 'namespace/name@version'
28
+ * Examples: 'pg/text@1', 'pg/uuid@1', 'pg/timestamptz@1'
29
+ */
30
+ readonly id: Id$1;
31
+ /**
32
+ * Contract scalar type IDs that this codec can handle.
33
+ * Examples: ['text'], ['int4', 'float8'], ['timestamp', 'timestamptz']
34
+ */
35
+ readonly targetTypes: readonly string[];
36
+ /**
37
+ * Optional metadata for database-specific type information.
38
+ * Used for schema introspection and verification.
39
+ */
40
+ readonly meta?: CodecMeta;
41
+ /**
42
+ * Decode a wire value (from database) to JavaScript type.
43
+ * Must be synchronous and pure (no side effects).
44
+ */
45
+ decode(wire: TWire): TJs;
46
+ /**
47
+ * Encode a JavaScript value to wire format (for database).
48
+ * Optional - if not provided, values pass through unchanged.
49
+ * Must be synchronous and pure (no side effects).
50
+ */
51
+ encode?(value: TJs): TWire;
52
+ }
53
+ /**
54
+ * Registry interface for codecs organized by ID and by contract scalar type.
55
+ *
56
+ * The registry allows looking up codecs by their namespaced ID or by the
57
+ * contract scalar types they handle. Multiple codecs may handle the same
58
+ * scalar type; ordering in byScalar reflects preference (adapter first,
59
+ * then packs, then app overrides).
60
+ */
61
+ interface CodecRegistry {
62
+ get(id: string): Codec<string> | undefined;
63
+ has(id: string): boolean;
64
+ getByScalar(scalar: string): readonly Codec<string>[];
65
+ getDefaultCodec(scalar: string): Codec<string> | undefined;
66
+ register(codec: Codec<string>): void;
67
+ [Symbol.iterator](): Iterator<Codec<string>>;
68
+ values(): IterableIterator<Codec<string>>;
69
+ }
70
+ /**
71
+ * Codec factory - creates a codec with typeId and encode/decode functions.
72
+ */
73
+ declare function codec<Id$1 extends string, TWire, TJs>(config: {
74
+ typeId: Id$1;
75
+ targetTypes: readonly string[];
76
+ encode: (value: TJs) => TWire;
77
+ decode: (wire: TWire) => TJs;
78
+ meta?: CodecMeta;
79
+ }): Codec<Id$1, TWire, TJs>;
80
+ /**
81
+ * Type helpers to extract codec types.
82
+ */
83
+ type CodecId<T> = T extends Codec<infer Id, unknown, unknown> ? Id : T extends {
84
+ readonly id: infer Id;
85
+ } ? Id : never;
86
+ type CodecInput<T> = T extends Codec<string, unknown, infer JsT> ? JsT : never;
87
+ type CodecOutput<T> = T extends Codec<string, unknown, infer JsT> ? JsT : never;
88
+ /**
89
+ * Type helper to extract codec types from builder instance.
90
+ */
91
+ type ExtractCodecTypes$1<ScalarNames extends { readonly [K in keyof ScalarNames]: Codec<string> } = Record<never, never>> = { readonly [K in keyof ScalarNames as ScalarNames[K] extends Codec<infer Id, unknown, unknown> ? Id : never]: {
92
+ readonly input: CodecInput<ScalarNames[K]>;
93
+ readonly output: CodecOutput<ScalarNames[K]>;
94
+ } };
95
+ /**
96
+ * Type helper to extract data type IDs from builder instance.
97
+ * Uses ExtractCodecTypes which preserves literal types as keys.
98
+ * Since ExtractCodecTypes<Record<K, ScalarNames[K]>> has exactly one key (the Id),
99
+ * we extract it by creating a mapped type that uses the Id as both key and value,
100
+ * then extract the value type. This preserves literal types.
101
+ */
102
+ type ExtractDataTypes<ScalarNames extends { readonly [K in keyof ScalarNames]: Codec<string> }> = { readonly [K in keyof ScalarNames]: { readonly [Id in keyof ExtractCodecTypes$1<Record<K, ScalarNames[K]>>]: Id }[keyof ExtractCodecTypes$1<Record<K, ScalarNames[K]>>] };
103
+ /**
104
+ * Builder interface for declaring codecs.
105
+ */
106
+ interface CodecDefBuilder<ScalarNames extends { readonly [K in keyof ScalarNames]: Codec<string> } = Record<never, never>> {
107
+ readonly CodecTypes: ExtractCodecTypes$1<ScalarNames>;
108
+ add<ScalarName extends string, CodecImpl extends Codec<string>>(scalarName: ScalarName, codecImpl: CodecImpl): CodecDefBuilder<O.Overwrite<ScalarNames, Record<ScalarName, CodecImpl>> & Record<ScalarName, CodecImpl>>;
109
+ readonly codecDefinitions: { readonly [K in keyof ScalarNames]: {
110
+ readonly typeId: ScalarNames[K] extends Codec<infer Id extends string, unknown, unknown> ? Id : never;
111
+ readonly scalar: K;
112
+ readonly codec: ScalarNames[K];
113
+ readonly input: CodecInput<ScalarNames[K]>;
114
+ readonly output: CodecOutput<ScalarNames[K]>;
115
+ readonly jsType: CodecOutput<ScalarNames[K]>;
116
+ } };
117
+ readonly dataTypes: { readonly [K in keyof ScalarNames]: { readonly [Id in keyof ExtractCodecTypes$1<Record<K, ScalarNames[K]>>]: Id }[keyof ExtractCodecTypes$1<Record<K, ScalarNames[K]>>] };
118
+ }
119
+ /**
120
+ * Create a new codec registry.
121
+ */
122
+ declare function createCodecRegistry(): CodecRegistry;
123
+ /**
124
+ * Create a new codec definition builder.
125
+ */
126
+ declare function defineCodecs(): CodecDefBuilder<Record<never, never>>;
127
+ //#endregion
128
+ //#region src/query-lane-context.d.ts
129
+ /**
130
+ * Minimal context interface for SQL query lanes.
131
+ *
132
+ * Lanes only need contract, operations, and codecs to build typed ASTs and attach
133
+ * operation builders. This interface explicitly excludes runtime concerns like
134
+ * adapters, connection management, and transaction state.
135
+ */
136
+ interface QueryLaneContext<TContract extends SqlContract<SqlStorage> = SqlContract<SqlStorage>> {
137
+ readonly contract: TContract;
138
+ readonly operations: OperationRegistry;
139
+ readonly codecs: CodecRegistry;
140
+ }
141
+ //#endregion
142
+ export { CodecInput as a, CodecRegistry as c, codec as d, createCodecRegistry as f, CodecId as i, ExtractCodecTypes$1 as l, Codec as n, CodecMeta as o, defineCodecs as p, CodecDefBuilder as r, CodecOutput as s, QueryLaneContext as t, ExtractDataTypes as u };
143
+ //# sourceMappingURL=query-lane-context-wr_XXnB5.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-lane-context-wr_XXnB5.d.mts","names":[],"sources":["../src/ast/codec-types.ts","../src/query-lane-context.ts"],"sourcesContent":[],"mappings":"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"}
@@ -0,0 +1,148 @@
1
+ import { t as attachOperationsToColumnBuilder } from "./operations-registry-7R5KE2-5.mjs";
2
+ import { planInvalid } from "@prisma-next/plan";
3
+
4
+ //#region src/schema.ts
5
+ var ColumnBuilderImpl = class {
6
+ kind = "column";
7
+ constructor(table, column, storageColumn) {
8
+ this.table = table;
9
+ this.column = column;
10
+ this.storageColumn = storageColumn;
11
+ }
12
+ get columnMeta() {
13
+ return this.storageColumn;
14
+ }
15
+ get __jsType() {}
16
+ /**
17
+ * Converts this column builder to a ColumnRef expression.
18
+ * This is the canonical way to get an AST node from a builder.
19
+ */
20
+ toExpr() {
21
+ return Object.freeze({
22
+ kind: "col",
23
+ table: this.table,
24
+ column: this.column
25
+ });
26
+ }
27
+ createBinaryBuilder(op, value) {
28
+ if (value == null) throw planInvalid("Parameter placeholder or expression source required for column comparison");
29
+ if ("toExpr" in value && typeof value.toExpr === "function") return Object.freeze({
30
+ kind: "binary",
31
+ op,
32
+ left: this.toExpr(),
33
+ right: value
34
+ });
35
+ if ("kind" in value && value.kind === "param-placeholder") return Object.freeze({
36
+ kind: "binary",
37
+ op,
38
+ left: this.toExpr(),
39
+ right: value
40
+ });
41
+ throw planInvalid("Parameter placeholder or expression source required for column comparison");
42
+ }
43
+ eq(value) {
44
+ return this.createBinaryBuilder("eq", value);
45
+ }
46
+ neq(value) {
47
+ return this.createBinaryBuilder("neq", value);
48
+ }
49
+ gt(value) {
50
+ return this.createBinaryBuilder("gt", value);
51
+ }
52
+ lt(value) {
53
+ return this.createBinaryBuilder("lt", value);
54
+ }
55
+ gte(value) {
56
+ return this.createBinaryBuilder("gte", value);
57
+ }
58
+ lte(value) {
59
+ return this.createBinaryBuilder("lte", value);
60
+ }
61
+ asc() {
62
+ return Object.freeze({
63
+ kind: "order",
64
+ expr: this.toExpr(),
65
+ dir: "asc"
66
+ });
67
+ }
68
+ desc() {
69
+ return Object.freeze({
70
+ kind: "order",
71
+ expr: this.toExpr(),
72
+ dir: "desc"
73
+ });
74
+ }
75
+ };
76
+ var TableBuilderImpl = class {
77
+ kind = "table";
78
+ columns;
79
+ _name;
80
+ constructor(name, columns) {
81
+ this._name = name;
82
+ this.columns = columns;
83
+ }
84
+ get name() {
85
+ return this._name;
86
+ }
87
+ };
88
+ function buildColumns(tableName, storage, _contract, operationRegistry, contractCapabilities) {
89
+ const table = storage.tables[tableName];
90
+ if (!table) throw planInvalid(`Unknown table ${tableName}`);
91
+ const tableColumns = table.columns;
92
+ const result = {};
93
+ const assignColumn = (columnName, columnDef) => {
94
+ result[columnName] = attachOperationsToColumnBuilder(new ColumnBuilderImpl(tableName, columnName, columnDef), columnDef, operationRegistry, contractCapabilities);
95
+ };
96
+ for (const columnName of Object.keys(tableColumns)) {
97
+ const columnDef = tableColumns[columnName];
98
+ if (!columnDef) continue;
99
+ assignColumn(columnName, columnDef);
100
+ }
101
+ return result;
102
+ }
103
+ /**
104
+ * Creates a Proxy that enables accessing table columns directly on the table object,
105
+ * in addition to the standard `table.columns.columnName` syntax.
106
+ *
107
+ * This allows both access patterns:
108
+ * - `tables.user.columns.id` (standard access)
109
+ * - `tables.user.id` (convenience access via proxy)
110
+ *
111
+ * The proxy intercepts property access and routes column name lookups to
112
+ * `table.columns[prop]`, while preserving direct access to table properties
113
+ * like `name`, `kind`, and `columns`.
114
+ */
115
+ function createTableProxy(table) {
116
+ return new Proxy(table, { get(target, prop) {
117
+ if (prop === "name" || prop === "kind" || prop === "columns") return Reflect.get(target, prop);
118
+ if (typeof prop === "string" && prop in target.columns) return target.columns[prop];
119
+ } });
120
+ }
121
+ /**
122
+ * Creates a schema handle for building SQL queries.
123
+ *
124
+ * @param context - Query lane context containing contract, codec and operation registries
125
+ * @returns A schema handle with typed table builders
126
+ *
127
+ * @example
128
+ * ```typescript
129
+ * const schemaHandle = schema<Contract>(context);
130
+ * const userTable = schemaHandle.tables.user;
131
+ * ```
132
+ */
133
+ function schema(context) {
134
+ const contract = context.contract;
135
+ const storage = contract.storage;
136
+ const tables = {};
137
+ const contractCapabilities = contract.capabilities;
138
+ const operationRegistry = context.operations;
139
+ for (const tableName of Object.keys(storage.tables)) {
140
+ const proxiedTable = createTableProxy(new TableBuilderImpl(tableName, buildColumns(tableName, storage, contract, operationRegistry, contractCapabilities)));
141
+ tables[tableName] = Object.freeze(proxiedTable);
142
+ }
143
+ return Object.freeze({ tables });
144
+ }
145
+
146
+ //#endregion
147
+ export { TableBuilderImpl as n, schema as r, ColumnBuilderImpl as t };
148
+ //# sourceMappingURL=schema-BsY2EXAf.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-BsY2EXAf.mjs","names":["table: string","column: ColumnName","storageColumn: ColumnMeta"],"sources":["../src/schema.ts"],"sourcesContent":["import type { OperationRegistry } from '@prisma-next/operations';\nimport { planInvalid } from '@prisma-next/plan';\nimport type {\n ExtractCodecTypes,\n ExtractOperationTypes,\n SqlContract,\n SqlStorage,\n StorageColumn,\n} from '@prisma-next/sql-contract/types';\nimport type { BinaryOp, ColumnRef, ExpressionSource, TableRef } from './ast/types';\nimport { attachOperationsToColumnBuilder } from './operations-registry';\nimport type { QueryLaneContext } from './query-lane-context';\nimport type {\n BinaryBuilder,\n CodecTypes as CodecTypesType,\n ColumnBuilder,\n ComputeColumnJsType,\n OperationTypeSignature,\n OperationTypes,\n OrderBuilder,\n ParamPlaceholder,\n} from './types';\n\ntype TableColumns<Table extends { columns: Record<string, StorageColumn> }> = Table['columns'];\n\ntype ColumnBuilders<\n Contract extends SqlContract<SqlStorage>,\n TableName extends string,\n Columns extends Record<string, StorageColumn>,\n CodecTypes extends CodecTypesType,\n Operations extends OperationTypes,\n> = {\n readonly [K in keyof Columns]: ColumnBuilder<\n K & string,\n Columns[K],\n ComputeColumnJsType<Contract, TableName, K & string, Columns[K], CodecTypes>,\n Operations\n >;\n};\n\nexport class ColumnBuilderImpl<\n ColumnName extends string,\n ColumnMeta extends StorageColumn,\n JsType = unknown,\n> implements ExpressionSource\n{\n readonly kind = 'column' as const;\n\n constructor(\n readonly table: string,\n readonly column: ColumnName,\n private readonly storageColumn: ColumnMeta,\n ) {}\n\n get columnMeta(): ColumnMeta {\n return this.storageColumn;\n }\n\n // Type-level helper property (not used at runtime)\n get __jsType(): JsType {\n return undefined as unknown as JsType;\n }\n\n /**\n * Converts this column builder to a ColumnRef expression.\n * This is the canonical way to get an AST node from a builder.\n */\n toExpr(): ColumnRef {\n return Object.freeze({\n kind: 'col' as const,\n table: this.table,\n column: this.column,\n });\n }\n\n private createBinaryBuilder(\n op: BinaryOp,\n value: ParamPlaceholder | ExpressionSource,\n ): BinaryBuilder<ColumnName, ColumnMeta, JsType> {\n if (value == null) {\n throw planInvalid(\n 'Parameter placeholder or expression source required for column comparison',\n );\n }\n // Check for ExpressionSource first (has toExpr method)\n if ('toExpr' in value && typeof value.toExpr === 'function') {\n return Object.freeze({\n kind: 'binary' as const,\n op,\n left: this.toExpr(),\n right: value,\n }) as BinaryBuilder<ColumnName, ColumnMeta, JsType>;\n }\n // Must be a ParamPlaceholder\n if ('kind' in value && value.kind === 'param-placeholder') {\n return Object.freeze({\n kind: 'binary' as const,\n op,\n left: this.toExpr(),\n right: value,\n }) as BinaryBuilder<ColumnName, ColumnMeta, JsType>;\n }\n throw planInvalid('Parameter placeholder or expression source required for column comparison');\n }\n\n eq(value: ParamPlaceholder | ExpressionSource): BinaryBuilder<ColumnName, ColumnMeta, JsType> {\n return this.createBinaryBuilder('eq', value);\n }\n\n neq(value: ParamPlaceholder | ExpressionSource): BinaryBuilder<ColumnName, ColumnMeta, JsType> {\n return this.createBinaryBuilder('neq', value);\n }\n\n gt(value: ParamPlaceholder | ExpressionSource): BinaryBuilder<ColumnName, ColumnMeta, JsType> {\n return this.createBinaryBuilder('gt', value);\n }\n\n lt(value: ParamPlaceholder | ExpressionSource): BinaryBuilder<ColumnName, ColumnMeta, JsType> {\n return this.createBinaryBuilder('lt', value);\n }\n\n gte(value: ParamPlaceholder | ExpressionSource): BinaryBuilder<ColumnName, ColumnMeta, JsType> {\n return this.createBinaryBuilder('gte', value);\n }\n\n lte(value: ParamPlaceholder | ExpressionSource): BinaryBuilder<ColumnName, ColumnMeta, JsType> {\n return this.createBinaryBuilder('lte', value);\n }\n\n asc(): OrderBuilder<ColumnName, ColumnMeta, JsType> {\n return Object.freeze({\n kind: 'order' as const,\n expr: this.toExpr(),\n dir: 'asc' as const,\n }) as OrderBuilder<ColumnName, ColumnMeta, JsType>;\n }\n\n desc(): OrderBuilder<ColumnName, ColumnMeta, JsType> {\n return Object.freeze({\n kind: 'order' as const,\n expr: this.toExpr(),\n dir: 'desc' as const,\n }) as OrderBuilder<ColumnName, ColumnMeta, JsType>;\n }\n}\n\nexport class TableBuilderImpl<\n Contract extends SqlContract<SqlStorage>,\n TableName extends string,\n Columns extends Record<string, StorageColumn>,\n CodecTypes extends CodecTypesType,\n Operations extends OperationTypes,\n> implements TableRef\n{\n readonly kind = 'table' as const;\n readonly columns: ColumnBuilders<Contract, TableName, Columns, CodecTypes, Operations>;\n private readonly _name: TableName;\n\n constructor(\n name: TableName,\n columns: ColumnBuilders<Contract, TableName, Columns, CodecTypes, Operations>,\n ) {\n this._name = name;\n this.columns = columns;\n }\n\n get name(): string {\n return this._name;\n }\n}\n\nfunction buildColumns<\n Contract extends SqlContract<SqlStorage>,\n TableName extends keyof Contract['storage']['tables'] & string,\n CodecTypes extends CodecTypesType,\n Operations extends OperationTypes,\n>(\n tableName: TableName,\n storage: SqlStorage,\n _contract: Contract,\n operationRegistry?: OperationRegistry,\n contractCapabilities?: Record<string, Record<string, boolean>>,\n): ColumnBuilders<\n Contract,\n TableName,\n Contract['storage']['tables'][TableName]['columns'],\n CodecTypes,\n Operations\n> {\n const table = storage.tables[tableName];\n\n if (!table) {\n throw planInvalid(`Unknown table ${tableName}`);\n }\n\n type Columns = Contract['storage']['tables'][TableName]['columns'];\n const tableColumns = table.columns as Columns;\n\n const result = {} as {\n [K in keyof Columns]: ColumnBuilder<\n K & string,\n Columns[K],\n ComputeColumnJsType<Contract, TableName, K & string, Columns[K], CodecTypes>,\n Operations\n >;\n };\n\n const assignColumn = <ColumnKey extends keyof Columns & string>(\n columnName: ColumnKey,\n columnDef: Columns[ColumnKey],\n ) => {\n type JsType = ComputeColumnJsType<\n Contract,\n TableName,\n ColumnKey,\n Columns[ColumnKey],\n CodecTypes\n >;\n\n const columnBuilder = new ColumnBuilderImpl<ColumnKey, Columns[ColumnKey], JsType>(\n tableName,\n columnName,\n columnDef,\n );\n\n const builderWithOps = attachOperationsToColumnBuilder<\n ColumnKey,\n Columns[ColumnKey],\n JsType,\n Operations\n >(\n columnBuilder as unknown as ColumnBuilder<\n ColumnKey,\n Columns[ColumnKey],\n JsType,\n Record<string, never>\n >,\n columnDef,\n operationRegistry,\n contractCapabilities,\n );\n\n (result as Record<string, unknown>)[columnName] = builderWithOps;\n };\n\n for (const columnName of Object.keys(tableColumns) as Array<keyof Columns & string>) {\n const columnDef = tableColumns[columnName];\n if (!columnDef) continue;\n assignColumn(columnName, columnDef);\n }\n\n return result as ColumnBuilders<Contract, TableName, Columns, CodecTypes, Operations>;\n}\n\n/**\n * Creates a Proxy that enables accessing table columns directly on the table object,\n * in addition to the standard `table.columns.columnName` syntax.\n *\n * This allows both access patterns:\n * - `tables.user.columns.id` (standard access)\n * - `tables.user.id` (convenience access via proxy)\n *\n * The proxy intercepts property access and routes column name lookups to\n * `table.columns[prop]`, while preserving direct access to table properties\n * like `name`, `kind`, and `columns`.\n */\nfunction createTableProxy<\n Contract extends SqlContract<SqlStorage>,\n TableName extends string,\n Columns extends Record<string, StorageColumn>,\n CodecTypes extends CodecTypesType,\n Operations extends OperationTypes,\n>(\n table: TableBuilderImpl<Contract, TableName, Columns, CodecTypes, Operations>,\n): TableBuilderImpl<Contract, TableName, Columns, CodecTypes, Operations> {\n return new Proxy(table, {\n get(target, prop) {\n if (prop === 'name' || prop === 'kind' || prop === 'columns') {\n return Reflect.get(target, prop);\n }\n if (typeof prop === 'string' && prop in target.columns) {\n return target.columns[prop as keyof typeof target.columns];\n }\n return undefined;\n },\n });\n}\n\ntype ExtractSchemaTables<\n Contract extends SqlContract<SqlStorage>,\n CodecTypes extends CodecTypesType,\n Operations extends OperationTypes,\n> = {\n readonly [TableName in keyof Contract['storage']['tables']]: TableBuilderImpl<\n Contract,\n TableName & string,\n TableColumns<Contract['storage']['tables'][TableName]>,\n CodecTypes,\n Operations\n > &\n TableRef;\n};\n\nexport type SchemaHandle<\n Contract extends SqlContract<SqlStorage> = SqlContract<SqlStorage>,\n CodecTypes extends CodecTypesType = CodecTypesType,\n Operations extends OperationTypes = Record<string, never>,\n> = {\n readonly tables: ExtractSchemaTables<Contract, CodecTypes, Operations>;\n};\n\ntype SchemaReturnType<Contract extends SqlContract<SqlStorage>> = SchemaHandle<\n Contract,\n ExtractCodecTypes<Contract>,\n ToOperationTypes<ExtractOperationTypes<Contract>>\n>;\n\ntype NormalizeOperationTypes<T> = {\n [TypeId in keyof T]: {\n [Method in keyof T[TypeId]]: T[TypeId][Method] extends OperationTypeSignature\n ? T[TypeId][Method]\n : OperationTypeSignature;\n };\n};\n\ntype ToOperationTypes<T> = T extends OperationTypes ? T : NormalizeOperationTypes<T>;\n\n/**\n * Creates a schema handle for building SQL queries.\n *\n * @param context - Query lane context containing contract, codec and operation registries\n * @returns A schema handle with typed table builders\n *\n * @example\n * ```typescript\n * const schemaHandle = schema<Contract>(context);\n * const userTable = schemaHandle.tables.user;\n * ```\n */\nexport function schema<Contract extends SqlContract<SqlStorage>>(\n context: QueryLaneContext<Contract>,\n): SchemaReturnType<Contract> {\n const contract = context.contract;\n const storage = contract.storage;\n type CodecTypes = ExtractCodecTypes<Contract>;\n type Operations = ToOperationTypes<ExtractOperationTypes<Contract>>;\n const tables = {} as ExtractSchemaTables<Contract, CodecTypes, Operations>;\n const contractCapabilities = contract.capabilities;\n\n const operationRegistry = context.operations;\n\n for (const tableName of Object.keys(storage.tables) as Array<\n keyof Contract['storage']['tables'] & string\n >) {\n const columns = buildColumns<Contract, typeof tableName, CodecTypes, Operations>(\n tableName,\n storage,\n contract,\n operationRegistry,\n contractCapabilities,\n );\n const table = new TableBuilderImpl<\n Contract,\n typeof tableName & string,\n Contract['storage']['tables'][typeof tableName]['columns'],\n CodecTypes,\n Operations\n >(tableName, columns);\n const proxiedTable = createTableProxy<\n Contract,\n typeof tableName & string,\n Contract['storage']['tables'][typeof tableName]['columns'],\n CodecTypes,\n Operations\n >(table);\n (tables as Record<string, unknown>)[tableName] = Object.freeze(\n proxiedTable,\n ) as ExtractSchemaTables<Contract, CodecTypes, Operations>[typeof tableName];\n }\n\n return Object.freeze({ tables }) as SchemaReturnType<Contract>;\n}\n\nexport type { ColumnBuilderImpl as Column, TableBuilderImpl as Table };\n"],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ import { t as QueryLaneContext } from "./query-lane-context-wr_XXnB5.mjs";
2
+ import { S as TableRef, a as ColumnRef, u as ExpressionSource } from "./plan-9PvH-Tu3.mjs";
3
+ import { A as ParamPlaceholder, D as OperationTypes, E as OperationTypeSignature, f as ComputeColumnJsType, k as OrderBuilder, l as CodecTypes, o as BinaryBuilder, u as ColumnBuilder } from "./types-Bg2kUmUA.mjs";
4
+ import { ExtractCodecTypes, ExtractOperationTypes, SqlContract, SqlStorage, StorageColumn } from "@prisma-next/sql-contract/types";
5
+
6
+ //#region src/schema.d.ts
7
+ type TableColumns<Table extends {
8
+ columns: Record<string, StorageColumn>;
9
+ }> = Table['columns'];
10
+ type ColumnBuilders<Contract extends SqlContract<SqlStorage>, TableName$1 extends string, Columns extends Record<string, StorageColumn>, CodecTypes$1 extends CodecTypes, Operations extends OperationTypes> = { readonly [K in keyof Columns]: ColumnBuilder<K & string, Columns[K], ComputeColumnJsType<Contract, TableName$1, K & string, Columns[K], CodecTypes$1>, Operations> };
11
+ declare class ColumnBuilderImpl<ColumnName extends string, ColumnMeta extends StorageColumn, JsType = unknown> implements ExpressionSource {
12
+ readonly table: string;
13
+ readonly column: ColumnName;
14
+ private readonly storageColumn;
15
+ readonly kind: "column";
16
+ constructor(table: string, column: ColumnName, storageColumn: ColumnMeta);
17
+ get columnMeta(): ColumnMeta;
18
+ get __jsType(): JsType;
19
+ /**
20
+ * Converts this column builder to a ColumnRef expression.
21
+ * This is the canonical way to get an AST node from a builder.
22
+ */
23
+ toExpr(): ColumnRef;
24
+ private createBinaryBuilder;
25
+ eq(value: ParamPlaceholder | ExpressionSource): BinaryBuilder<ColumnName, ColumnMeta, JsType>;
26
+ neq(value: ParamPlaceholder | ExpressionSource): BinaryBuilder<ColumnName, ColumnMeta, JsType>;
27
+ gt(value: ParamPlaceholder | ExpressionSource): BinaryBuilder<ColumnName, ColumnMeta, JsType>;
28
+ lt(value: ParamPlaceholder | ExpressionSource): BinaryBuilder<ColumnName, ColumnMeta, JsType>;
29
+ gte(value: ParamPlaceholder | ExpressionSource): BinaryBuilder<ColumnName, ColumnMeta, JsType>;
30
+ lte(value: ParamPlaceholder | ExpressionSource): BinaryBuilder<ColumnName, ColumnMeta, JsType>;
31
+ asc(): OrderBuilder<ColumnName, ColumnMeta, JsType>;
32
+ desc(): OrderBuilder<ColumnName, ColumnMeta, JsType>;
33
+ }
34
+ declare class TableBuilderImpl<Contract extends SqlContract<SqlStorage>, TableName$1 extends string, Columns extends Record<string, StorageColumn>, CodecTypes$1 extends CodecTypes, Operations extends OperationTypes> implements TableRef {
35
+ readonly kind: "table";
36
+ readonly columns: ColumnBuilders<Contract, TableName$1, Columns, CodecTypes$1, Operations>;
37
+ private readonly _name;
38
+ constructor(name: TableName$1, columns: ColumnBuilders<Contract, TableName$1, Columns, CodecTypes$1, Operations>);
39
+ get name(): string;
40
+ }
41
+ type ExtractSchemaTables<Contract extends SqlContract<SqlStorage>, CodecTypes$1 extends CodecTypes, Operations extends OperationTypes> = { readonly [TableName in keyof Contract['storage']['tables']]: TableBuilderImpl<Contract, TableName & string, TableColumns<Contract['storage']['tables'][TableName]>, CodecTypes$1, Operations> & TableRef };
42
+ type SchemaHandle<Contract extends SqlContract<SqlStorage> = SqlContract<SqlStorage>, CodecTypes$1 extends CodecTypes = CodecTypes, Operations extends OperationTypes = Record<string, never>> = {
43
+ readonly tables: ExtractSchemaTables<Contract, CodecTypes$1, Operations>;
44
+ };
45
+ type SchemaReturnType<Contract extends SqlContract<SqlStorage>> = SchemaHandle<Contract, ExtractCodecTypes<Contract>, ToOperationTypes<ExtractOperationTypes<Contract>>>;
46
+ type NormalizeOperationTypes<T> = { [TypeId in keyof T]: { [Method in keyof T[TypeId]]: T[TypeId][Method] extends OperationTypeSignature ? T[TypeId][Method] : OperationTypeSignature } };
47
+ type ToOperationTypes<T> = T extends OperationTypes ? T : NormalizeOperationTypes<T>;
48
+ /**
49
+ * Creates a schema handle for building SQL queries.
50
+ *
51
+ * @param context - Query lane context containing contract, codec and operation registries
52
+ * @returns A schema handle with typed table builders
53
+ *
54
+ * @example
55
+ * ```typescript
56
+ * const schemaHandle = schema<Contract>(context);
57
+ * const userTable = schemaHandle.tables.user;
58
+ * ```
59
+ */
60
+ declare function schema<Contract extends SqlContract<SqlStorage>>(context: QueryLaneContext<Contract>): SchemaReturnType<Contract>;
61
+ //#endregion
62
+ export { schema as i, SchemaHandle as n, TableBuilderImpl as r, ColumnBuilderImpl as t };
63
+ //# sourceMappingURL=schema-Dse48uyP.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-Dse48uyP.d.mts","names":[],"sources":["../src/schema.ts"],"sourcesContent":[],"mappings":"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"}