@prisma-next/sql-relational-core 0.13.0-dev.32 → 0.13.0-dev.34

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.
@@ -1,8 +1,8 @@
1
- import { v as RuntimeError } from "./types-CQVke4QO.mjs";
1
+ import { y as RuntimeError } from "./types-QlhwIh5w.mjs";
2
2
 
3
3
  //#region src/errors.d.ts
4
4
  declare function planInvalid(message: string, details?: Record<string, unknown>, hints?: readonly string[], docs?: readonly string[]): RuntimeError;
5
5
  declare function planUnsupported(message: string, details?: Record<string, unknown>, hints?: readonly string[], docs?: readonly string[]): RuntimeError;
6
6
  //#endregion
7
7
  export { planUnsupported as n, planInvalid as t };
8
- //# sourceMappingURL=errors-CPLfzKkw.d.mts.map
8
+ //# sourceMappingURL=errors-iy9khc8z.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors-CPLfzKkw.d.mts","names":[],"sources":["../src/errors.ts"],"mappings":";;;iBAEgB,WAAA,CACd,OAAA,UACA,OAAA,GAAU,MAAA,mBACV,KAAA,sBACA,IAAA,uBACC,YAAY;AAAA,iBAkBC,eAAA,CACd,OAAA,UACA,OAAA,GAAU,MAAA,mBACV,KAAA,sBACA,IAAA,uBACC,YAAY"}
1
+ {"version":3,"file":"errors-iy9khc8z.d.mts","names":[],"sources":["../src/errors.ts"],"mappings":";;;iBAEgB,WAAA,CACd,OAAA,UACA,OAAA,GAAU,MAAA,mBACV,KAAA,sBACA,IAAA,uBACC,YAAY;AAAA,iBAkBC,eAAA,CACd,OAAA,UACA,OAAA,GAAU,MAAA,mBACV,KAAA,sBACA,IAAA,uBACC,YAAY"}
@@ -1,2 +1,2 @@
1
- import { n as planUnsupported, t as planInvalid } from "../errors-CPLfzKkw.mjs";
1
+ import { n as planUnsupported, t as planInvalid } from "../errors-iy9khc8z.mjs";
2
2
  export { planInvalid, planUnsupported };
@@ -1,3 +1,3 @@
1
- import { C as TableMetadata, S as TableKey, _ as RawTemplateOptions, a as ComputeColumnJsType, b as SqlPlan, c as Meta, d as OperationTypeSignature, f as OperationTypes, g as RawTemplateFactory, h as RawFunctionOptions, i as ColumnsOf, l as ModelDef, m as RawFactory, n as BuildParamsMap, o as Expr, p as OperationsForTypeId, r as CodecTypes, s as META, t as BuildOptions, u as ModelMetadata, v as RuntimeError, w as TablesOf, x as TableDef, y as SqlBuilderOptions } from "../types-CQVke4QO.mjs";
1
+ import { C as TableKey, S as TableDef, T as TablesOf, _ as RawTemplateFactory, a as ColumnsOf, b as SqlBuilderOptions, c as META, d as ModelMetadata, f as OperationTypeSignature, g as RawFunctionOptions, h as RawFactory, i as ColumnResolutionContract, l as Meta, m as OperationsForTypeId, n as BuildParamsMap, o as ComputeColumnJsType, p as OperationTypes, r as CodecTypes, s as Expr, t as BuildOptions, u as ModelDef, v as RawTemplateOptions, w as TableMetadata, x as SqlPlan, y as RuntimeError } from "../types-QlhwIh5w.mjs";
2
2
  import { n as SqlOrmPlan, t as RuntimeScope } from "../types-LGikJRYV.mjs";
3
- export { BuildOptions, BuildParamsMap, CodecTypes, ColumnsOf, ComputeColumnJsType, Expr, META, Meta, ModelDef, ModelMetadata, OperationTypeSignature, OperationTypes, OperationsForTypeId, RawFactory, RawFunctionOptions, RawTemplateFactory, RawTemplateOptions, RuntimeError, type RuntimeScope, SqlBuilderOptions, type SqlOrmPlan, SqlPlan, TableDef, TableKey, TableMetadata, TablesOf };
3
+ export { BuildOptions, BuildParamsMap, CodecTypes, ColumnResolutionContract, ColumnsOf, ComputeColumnJsType, Expr, META, Meta, ModelDef, ModelMetadata, OperationTypeSignature, OperationTypes, OperationsForTypeId, RawFactory, RawFunctionOptions, RawTemplateFactory, RawTemplateOptions, RuntimeError, type RuntimeScope, SqlBuilderOptions, type SqlOrmPlan, SqlPlan, TableDef, TableKey, TableMetadata, TablesOf };
package/dist/index.d.mts CHANGED
@@ -4,10 +4,10 @@ import { a as DdlColumnRenderContext, c as ForeignKeyConstraint, d as PrimaryKey
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-CY0-e8Qo.mjs";
6
6
  import { t as SqlExecutionPlan } from "./sql-execution-plan-JwVeAzXt.mjs";
7
- import { C as TableMetadata, S as TableKey, _ as RawTemplateOptions, a as ComputeColumnJsType, b as SqlPlan, c as Meta, d as OperationTypeSignature, f as OperationTypes, g as RawTemplateFactory, h as RawFunctionOptions, i as ColumnsOf, l as ModelDef, m as RawFactory, n as BuildParamsMap, o as Expr, p as OperationsForTypeId, r as CodecTypes, s as META, t as BuildOptions, u as ModelMetadata, v as RuntimeError, w as TablesOf, x as TableDef, y as SqlBuilderOptions } from "./types-CQVke4QO.mjs";
8
- import { n as planUnsupported, t as planInvalid } from "./errors-CPLfzKkw.mjs";
7
+ import { C as TableKey, S as TableDef, T as TablesOf, _ as RawTemplateFactory, a as ColumnsOf, b as SqlBuilderOptions, c as META, d as ModelMetadata, f as OperationTypeSignature, g as RawFunctionOptions, h as RawFactory, i as ColumnResolutionContract, l as Meta, m as OperationsForTypeId, n as BuildParamsMap, o as ComputeColumnJsType, p as OperationTypes, r as CodecTypes, s as Expr, t as BuildOptions, u as ModelDef, v as RawTemplateOptions, w as TableMetadata, x as SqlPlan, y as RuntimeError } from "./types-QlhwIh5w.mjs";
8
+ import { n as planUnsupported, t as planInvalid } from "./errors-iy9khc8z.mjs";
9
9
  import { BuildOperationSpec, CodecExpression, CodecTypesBase, CodecValue, Expression, RawCodecInferer, RawSqlBuilder, RawSqlTag, ScopeField, TraitExpression, buildOperation, codecOf, createRawSql, param, toExpr } from "./exports/expression.mjs";
10
10
  import { a as SqlParamRefMutatorInternal, i as SqlParamRefMutator, n as ParamRefEntryUnion, o as createSqlParamRefMutator, r as ParamRefHandle, t as ParamRefEntry } from "./middleware-BXSFukKU.mjs";
11
11
  import { n as planFromAst, t as SqlQueryPlan } from "./plan-DObuWSWi.mjs";
12
12
  import { n as SqlOrmPlan, t as RuntimeScope } from "./types-LGikJRYV.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, DdlColumnRenderContext, 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 };
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, ColumnResolutionContract, ColumnsOf, ComputeColumnJsType, ContractCodecRegistry, DdlColumn, DdlColumnDefault, DdlColumnDefaultVisitor, DdlColumnRenderContext, 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 };
@@ -0,0 +1,233 @@
1
+ import { J as ParamRef, g as ColumnRef } from "./types-BbGUx5Bi.mjs";
2
+ import { r as ExecutionContext } from "./query-lane-context-CY0-e8Qo.mjs";
3
+ import { t as SqlExecutionPlan } from "./sql-execution-plan-JwVeAzXt.mjs";
4
+ import { Contract } from "@prisma-next/contract/types";
5
+ import { ExtractFieldOutputTypes, SqlStorage, StorageColumn } from "@prisma-next/sql-contract/types";
6
+ import { ParamSpec } from "@prisma-next/operations";
7
+ import { SqlLoweringSpec } from "@prisma-next/sql-operations";
8
+
9
+ //#region src/types.d.ts
10
+ type Expr = ColumnRef | ParamRef;
11
+ /**
12
+ * The minimal contract shape the per-namespace column resolver needs: the
13
+ * application-domain models and the storage tables, both keyed by namespace
14
+ * coordinate, plus (via the optional TypeMaps phantom key, read structurally by
15
+ * {@link ExtractFieldOutputTypes}) the refined field-output map. Every emitted
16
+ * `Contract<SqlStorage>` satisfies it, as does `sql-builder`'s `TableProxyContract`
17
+ * — so the resolver indexes the coordinate directly without forcing callers to
18
+ * carry the full `Contract`.
19
+ */
20
+ type ColumnResolutionContract = {
21
+ readonly domain: {
22
+ readonly namespaces: Readonly<Record<string, {
23
+ readonly models: Readonly<Record<string, unknown>>;
24
+ }>>;
25
+ };
26
+ readonly storage: {
27
+ readonly namespaces: Readonly<Record<string, {
28
+ readonly entries: Readonly<Record<string, Readonly<Record<string, unknown>>>>;
29
+ }>>;
30
+ };
31
+ };
32
+ type NamespaceModels<TContract extends ColumnResolutionContract, NsId extends string> = TContract['domain']['namespaces'][NsId] extends {
33
+ readonly models: infer Models extends Record<string, unknown>;
34
+ } ? Models : never;
35
+ type ExtractTableToModel<TContract extends ColumnResolutionContract, NsId extends string, TableName extends string> = NamespaceModels<TContract, NsId> extends infer Models extends Record<string, unknown> ? { [M in keyof Models & string]: Models[M] extends {
36
+ readonly storage: {
37
+ readonly table: TableName;
38
+ };
39
+ } ? M : never }[keyof Models & string] : never;
40
+ type ExtractColumnToField<TContract extends ColumnResolutionContract, NsId extends string, TableName extends string, ColumnName extends string> = ExtractTableToModel<TContract, NsId, TableName> extends infer ModelName extends string ? NamespaceModels<TContract, NsId> extends infer Models extends Record<string, unknown> ? ModelName & keyof Models extends infer MKey extends string ? Models[MKey] extends {
41
+ readonly storage: {
42
+ readonly fields: infer Fields extends Record<string, unknown>;
43
+ };
44
+ } ? { [F in keyof Fields & string]: Fields[F] extends {
45
+ readonly column: ColumnName;
46
+ } ? F : never }[keyof Fields & string] : never : never : never : never;
47
+ /** Resolves to `never` when the table or column is absent in the namespace. */
48
+ type NamespaceStorageColumn<TContract extends ColumnResolutionContract, NsId extends string, TableName extends string, ColumnName extends string> = TContract['storage']['namespaces'][NsId] extends {
49
+ readonly entries: {
50
+ readonly table: infer Tables extends Record<string, unknown>;
51
+ };
52
+ } ? TableName extends keyof Tables ? Tables[TableName] extends {
53
+ readonly columns: infer Columns extends Record<string, unknown>;
54
+ } ? ColumnName extends keyof Columns ? Columns[ColumnName] extends StorageColumn ? Columns[ColumnName] : never : never : never : never : never;
55
+ type FallbackCodecLookup<ColumnMeta extends StorageColumn, CodecTypes extends Record<string, {
56
+ readonly output: unknown;
57
+ }>> = ColumnMeta extends {
58
+ codecId: infer CodecId extends string;
59
+ } ? CodecId extends keyof CodecTypes ? CodecTypes[CodecId] extends {
60
+ readonly output: infer O;
61
+ } ? ColumnMeta extends {
62
+ nullable: true;
63
+ } ? O | null : O : unknown : unknown : unknown;
64
+ /**
65
+ * The refined (typeParam-applied) JS output type for a field within a namespace
66
+ * coordinate, read from the emitter's namespace-nested `FieldOutputTypes` map at
67
+ * `FieldOutputTypes[NsId][Model][Field]`. This preserves parameterized codec
68
+ * refinements (e.g. `Vector<N>`, `Char<N>`) that a bare codec-output lookup
69
+ * would drop. Resolves to `never` when the coordinate is absent from the map.
70
+ */
71
+ type NamespaceFieldOutput<TContract extends ColumnResolutionContract, NsId extends string, ModelName extends string, FieldName extends string> = ExtractFieldOutputTypes<TContract> extends infer Outputs ? NsId extends keyof Outputs ? Outputs[NsId] extends infer NamespaceOutputs ? ModelName extends keyof NamespaceOutputs ? NamespaceOutputs[ModelName] extends infer ModelOutputs ? FieldName extends keyof ModelOutputs ? ModelOutputs[FieldName] : never : never : never : never : never : never;
72
+ /**
73
+ * The secondary resolution path, taken for a storage column not backed by a
74
+ * domain model field in the namespace (e.g. a column with no corresponding
75
+ * field); refined model fields resolve via {@link NamespaceFieldOutput}.
76
+ */
77
+ type ColumnCodecFallback<TContract extends ColumnResolutionContract, NsId extends string, TableName extends string, ColumnName extends string, CodecTypes extends Record<string, {
78
+ readonly output: unknown;
79
+ }>> = NamespaceStorageColumn<TContract, NsId, TableName, ColumnName> extends infer ColumnMeta ? [ColumnMeta] extends [never] ? never : ColumnMeta extends StorageColumn ? FallbackCodecLookup<ColumnMeta, CodecTypes> : never : never;
80
+ /**
81
+ * Type-level operation signature.
82
+ * Represents an operation at the type level for use in contract type maps.
83
+ */
84
+ type OperationTypeSignature = {
85
+ readonly args: ReadonlyArray<ParamSpec>;
86
+ readonly returns: ParamSpec;
87
+ readonly lowering: SqlLoweringSpec;
88
+ readonly capabilities?: ReadonlyArray<string>;
89
+ };
90
+ /**
91
+ * Type-level operation registry.
92
+ * Maps typeId → operations, where operations is a record of method name → operation signature.
93
+ *
94
+ * Example:
95
+ * ```typescript
96
+ * type MyOperations: OperationTypes = {
97
+ * 'pg/vector@1': {
98
+ * cosineDistance: {
99
+ * args: [{ codecId: 'pg/vector@1'; nullable: false }];
100
+ * returns: { codecId: 'core/float8'; nullable: false };
101
+ * lowering: { targetFamily: 'sql'; strategy: 'function'; template: '...' };
102
+ * };
103
+ * };
104
+ * };
105
+ * ```
106
+ */
107
+ type OperationTypes = Record<string, Record<string, OperationTypeSignature>>;
108
+ /**
109
+ * CodecTypes represents a map of typeId to codec definitions.
110
+ * Each codec definition must have an `output` property indicating the JavaScript type.
111
+ *
112
+ * Example:
113
+ * ```typescript
114
+ * type MyCodecTypes: CodecTypes = {
115
+ * 'pg/int4@1': { output: number };
116
+ * 'pg/text@1': { output: string };
117
+ * };
118
+ * ```
119
+ */
120
+ type CodecTypes = Record<string, {
121
+ readonly output: unknown;
122
+ }>;
123
+ /**
124
+ * Extracts operations for a given typeId from the operation registry.
125
+ * Returns an empty record if the typeId is not found.
126
+ *
127
+ * @example
128
+ * ```typescript
129
+ * type Ops = OperationsForTypeId<'pg/vector@1', MyOperations>;
130
+ * // Ops = { cosineDistance: { ... }, l2Distance: { ... } }
131
+ * ```
132
+ */
133
+ type OperationsForTypeId<TypeId extends string, Operations extends OperationTypes> = Operations extends Record<string, never> ? Record<string, never> : TypeId extends keyof Operations ? Operations[TypeId] : Record<string, never>;
134
+ /**
135
+ * Resolves the JavaScript output type of a column addressed by an explicit
136
+ * namespace coordinate.
137
+ *
138
+ * The table→model and column→field mapping is resolved per-namespace from
139
+ * `domain.namespaces[NsId]['models']`, and the refined output type from the
140
+ * emitter's namespace-nested `FieldOutputTypes[NsId][Model][Field]` — so a bare
141
+ * table name shared across namespaces resolves to each namespace's own field,
142
+ * and parameterized codec refinements (e.g. `Vector<N>`) are preserved. A
143
+ * storage column not backed by a model field in the namespace falls back to a
144
+ * codec-output lookup; a column absent in the namespace resolves to `never`.
145
+ */
146
+ type ComputeColumnJsType<TContract extends ColumnResolutionContract, NsId extends string, TableName extends string, ColumnName extends string, CodecTypes extends Record<string, {
147
+ readonly output: unknown;
148
+ }>> = ExtractTableToModel<TContract, NsId, TableName> extends infer ModelName ? [ModelName] extends [never] ? ColumnCodecFallback<TContract, NsId, TableName, ColumnName, CodecTypes> : ModelName extends string ? ExtractColumnToField<TContract, NsId, TableName, ColumnName> extends infer FieldName ? [FieldName] extends [never] ? ColumnCodecFallback<TContract, NsId, TableName, ColumnName, CodecTypes> : FieldName extends string ? NamespaceFieldOutput<TContract, NsId, ModelName, FieldName> extends infer Out ? [Out] extends [never] ? ColumnCodecFallback<TContract, NsId, TableName, ColumnName, CodecTypes> : Out : never : never : never : never : never;
149
+ /**
150
+ * Alias for the SQL-domain executable plan, exposed under the legacy
151
+ * `SqlPlan` name for compatibility with SQL builder/utility call sites.
152
+ * The canonical name is `SqlExecutionPlan` (`./sql-execution-plan`).
153
+ */
154
+ type SqlPlan<Row = unknown> = SqlExecutionPlan<Row>;
155
+ /**
156
+ * Helper types for extracting contract structure.
157
+ */
158
+ type TablesOf<TContract> = TContract extends {
159
+ storage: {
160
+ tables: infer U;
161
+ };
162
+ } ? U : never;
163
+ type TableKey<TContract> = Extract<keyof TablesOf<TContract>, string>;
164
+ /**
165
+ * Unique symbol for metadata property to avoid collisions with user-defined properties
166
+ */
167
+ declare const META: unique symbol;
168
+ /**
169
+ * Extracts metadata from a type that has a META property
170
+ */
171
+ type Meta<T extends {
172
+ [META]: unknown;
173
+ }> = T[typeof META];
174
+ /**
175
+ * Metadata interface for table definitions
176
+ */
177
+ interface TableMetadata<Name extends string> {
178
+ name: Name;
179
+ }
180
+ /**
181
+ * Metadata interface for model definitions
182
+ */
183
+ interface ModelMetadata<Name extends string> {
184
+ name: Name;
185
+ }
186
+ /**
187
+ * Base interface for table definitions with metadata
188
+ * Used in contract.d.ts to define storage-level table types
189
+ */
190
+ interface TableDef<Name extends string> {
191
+ readonly [META]: TableMetadata<Name>;
192
+ }
193
+ /**
194
+ * Base interface for model definitions with metadata
195
+ * Used in contract.d.ts to define application-level model types
196
+ */
197
+ interface ModelDef<Name extends string> {
198
+ readonly [META]: ModelMetadata<Name>;
199
+ }
200
+ type ColumnsOf<TContract, K extends TableKey<TContract>> = K extends keyof TablesOf<TContract> ? TablesOf<TContract>[K] extends {
201
+ columns: infer C;
202
+ } ? C : never : never;
203
+ interface RawTemplateOptions {
204
+ readonly annotations?: Record<string, unknown>;
205
+ }
206
+ interface RawFunctionOptions extends RawTemplateOptions {
207
+ readonly params: ReadonlyArray<unknown>;
208
+ }
209
+ type RawTemplateFactory = (strings: TemplateStringsArray, ...values: readonly unknown[]) => SqlExecutionPlan;
210
+ interface RawFactory extends RawTemplateFactory {
211
+ (text: string, options: RawFunctionOptions): SqlExecutionPlan;
212
+ with(options: RawTemplateOptions): RawTemplateFactory;
213
+ }
214
+ interface RuntimeError extends Error {
215
+ readonly code: string;
216
+ readonly category: 'PLAN';
217
+ readonly severity: 'error';
218
+ readonly details?: Record<string, unknown>;
219
+ readonly hints?: readonly string[];
220
+ readonly docs?: readonly string[];
221
+ }
222
+ interface BuildParamsMap {
223
+ readonly [name: string]: unknown;
224
+ }
225
+ interface BuildOptions {
226
+ readonly params?: BuildParamsMap;
227
+ }
228
+ interface SqlBuilderOptions<TContract extends Contract<SqlStorage> = Contract<SqlStorage>> {
229
+ readonly context: ExecutionContext<TContract>;
230
+ }
231
+ //#endregion
232
+ export { TableKey as C, TableDef as S, TablesOf as T, RawTemplateFactory as _, ColumnsOf as a, SqlBuilderOptions as b, META as c, ModelMetadata as d, OperationTypeSignature as f, RawFunctionOptions as g, RawFactory as h, ColumnResolutionContract as i, Meta as l, OperationsForTypeId as m, BuildParamsMap as n, ComputeColumnJsType as o, OperationTypes as p, CodecTypes as r, Expr as s, BuildOptions as t, ModelDef as u, RawTemplateOptions as v, TableMetadata as w, SqlPlan as x, RuntimeError as y };
233
+ //# sourceMappingURL=types-QlhwIh5w.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types-QlhwIh5w.d.mts","names":[],"sources":["../src/types.ts"],"mappings":"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"}
package/package.json CHANGED
@@ -1,26 +1,26 @@
1
1
  {
2
2
  "name": "@prisma-next/sql-relational-core",
3
- "version": "0.13.0-dev.32",
3
+ "version": "0.13.0-dev.34",
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.13.0-dev.32",
10
- "@prisma-next/framework-components": "0.13.0-dev.32",
11
- "@prisma-next/operations": "0.13.0-dev.32",
12
- "@prisma-next/sql-contract": "0.13.0-dev.32",
13
- "@prisma-next/sql-operations": "0.13.0-dev.32",
14
- "@prisma-next/utils": "0.13.0-dev.32",
9
+ "@prisma-next/contract": "0.13.0-dev.34",
10
+ "@prisma-next/framework-components": "0.13.0-dev.34",
11
+ "@prisma-next/operations": "0.13.0-dev.34",
12
+ "@prisma-next/sql-contract": "0.13.0-dev.34",
13
+ "@prisma-next/sql-operations": "0.13.0-dev.34",
14
+ "@prisma-next/utils": "0.13.0-dev.34",
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.13.0-dev.32",
21
- "@prisma-next/test-utils": "0.13.0-dev.32",
22
- "@prisma-next/tsconfig": "0.13.0-dev.32",
23
- "@prisma-next/tsdown": "0.13.0-dev.32",
20
+ "@prisma-next/sql-contract-ts": "0.13.0-dev.34",
21
+ "@prisma-next/test-utils": "0.13.0-dev.34",
22
+ "@prisma-next/tsconfig": "0.13.0-dev.34",
23
+ "@prisma-next/tsdown": "0.13.0-dev.34",
24
24
  "tsdown": "0.22.1",
25
25
  "typescript": "5.9.3",
26
26
  "vitest": "4.1.8"
package/src/types.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { Contract, ContractModelDefinitions } from '@prisma-next/contract/types';
1
+ import type { Contract } from '@prisma-next/contract/types';
2
2
  import type { ParamSpec } from '@prisma-next/operations';
3
3
  import type {
4
4
  ExtractFieldOutputTypes,
@@ -13,11 +13,45 @@ import type { SqlExecutionPlan } from './sql-execution-plan';
13
13
  export type Expr = ColumnRef | ParamRef;
14
14
 
15
15
  /**
16
- * Extracts the model name for a given table by iterating models to find the one
17
- * whose `storage.table` matches.
16
+ * The minimal contract shape the per-namespace column resolver needs: the
17
+ * application-domain models and the storage tables, both keyed by namespace
18
+ * coordinate, plus (via the optional TypeMaps phantom key, read structurally by
19
+ * {@link ExtractFieldOutputTypes}) the refined field-output map. Every emitted
20
+ * `Contract<SqlStorage>` satisfies it, as does `sql-builder`'s `TableProxyContract`
21
+ * — so the resolver indexes the coordinate directly without forcing callers to
22
+ * carry the full `Contract`.
18
23
  */
19
- type ExtractTableToModel<TContract extends Contract<SqlStorage>, TableName extends string> =
20
- ContractModelDefinitions<TContract> extends infer Models extends Record<string, unknown>
24
+ export type ColumnResolutionContract = {
25
+ readonly domain: {
26
+ readonly namespaces: Readonly<
27
+ Record<string, { readonly models: Readonly<Record<string, unknown>> }>
28
+ >;
29
+ };
30
+ readonly storage: {
31
+ readonly namespaces: Readonly<
32
+ Record<
33
+ string,
34
+ { readonly entries: Readonly<Record<string, Readonly<Record<string, unknown>>>> }
35
+ >
36
+ >;
37
+ };
38
+ };
39
+
40
+ type NamespaceModels<
41
+ TContract extends ColumnResolutionContract,
42
+ NsId extends string,
43
+ > = TContract['domain']['namespaces'][NsId] extends {
44
+ readonly models: infer Models extends Record<string, unknown>;
45
+ }
46
+ ? Models
47
+ : never;
48
+
49
+ type ExtractTableToModel<
50
+ TContract extends ColumnResolutionContract,
51
+ NsId extends string,
52
+ TableName extends string,
53
+ > =
54
+ NamespaceModels<TContract, NsId> extends infer Models extends Record<string, unknown>
21
55
  ? {
22
56
  [M in keyof Models & string]: Models[M] extends {
23
57
  readonly storage: { readonly table: TableName };
@@ -27,17 +61,14 @@ type ExtractTableToModel<TContract extends Contract<SqlStorage>, TableName exten
27
61
  }[keyof Models & string]
28
62
  : never;
29
63
 
30
- /**
31
- * Extracts the field name for a given column by finding the field in
32
- * `model.storage.fields` whose `column` matches.
33
- */
34
64
  type ExtractColumnToField<
35
- TContract extends Contract<SqlStorage>,
65
+ TContract extends ColumnResolutionContract,
66
+ NsId extends string,
36
67
  TableName extends string,
37
68
  ColumnName extends string,
38
69
  > =
39
- ExtractTableToModel<TContract, TableName> extends infer ModelName extends string
40
- ? ContractModelDefinitions<TContract> extends infer Models extends Record<string, unknown>
70
+ ExtractTableToModel<TContract, NsId, TableName> extends infer ModelName extends string
71
+ ? NamespaceModels<TContract, NsId> extends infer Models extends Record<string, unknown>
41
72
  ? ModelName & keyof Models extends infer MKey extends string
42
73
  ? Models[MKey] extends {
43
74
  readonly storage: { readonly fields: infer Fields extends Record<string, unknown> };
@@ -52,6 +83,28 @@ type ExtractColumnToField<
52
83
  : never
53
84
  : never;
54
85
 
86
+ /** Resolves to `never` when the table or column is absent in the namespace. */
87
+ type NamespaceStorageColumn<
88
+ TContract extends ColumnResolutionContract,
89
+ NsId extends string,
90
+ TableName extends string,
91
+ ColumnName extends string,
92
+ > = TContract['storage']['namespaces'][NsId] extends {
93
+ readonly entries: { readonly table: infer Tables extends Record<string, unknown> };
94
+ }
95
+ ? TableName extends keyof Tables
96
+ ? Tables[TableName] extends {
97
+ readonly columns: infer Columns extends Record<string, unknown>;
98
+ }
99
+ ? ColumnName extends keyof Columns
100
+ ? Columns[ColumnName] extends StorageColumn
101
+ ? Columns[ColumnName]
102
+ : never
103
+ : never
104
+ : never
105
+ : never
106
+ : never;
107
+
55
108
  type FallbackCodecLookup<
56
109
  ColumnMeta extends StorageColumn,
57
110
  CodecTypes extends Record<string, { readonly output: unknown }>,
@@ -65,6 +118,53 @@ type FallbackCodecLookup<
65
118
  : unknown
66
119
  : unknown;
67
120
 
121
+ /**
122
+ * The refined (typeParam-applied) JS output type for a field within a namespace
123
+ * coordinate, read from the emitter's namespace-nested `FieldOutputTypes` map at
124
+ * `FieldOutputTypes[NsId][Model][Field]`. This preserves parameterized codec
125
+ * refinements (e.g. `Vector<N>`, `Char<N>`) that a bare codec-output lookup
126
+ * would drop. Resolves to `never` when the coordinate is absent from the map.
127
+ */
128
+ type NamespaceFieldOutput<
129
+ TContract extends ColumnResolutionContract,
130
+ NsId extends string,
131
+ ModelName extends string,
132
+ FieldName extends string,
133
+ > =
134
+ ExtractFieldOutputTypes<TContract> extends infer Outputs
135
+ ? NsId extends keyof Outputs
136
+ ? Outputs[NsId] extends infer NamespaceOutputs
137
+ ? ModelName extends keyof NamespaceOutputs
138
+ ? NamespaceOutputs[ModelName] extends infer ModelOutputs
139
+ ? FieldName extends keyof ModelOutputs
140
+ ? ModelOutputs[FieldName]
141
+ : never
142
+ : never
143
+ : never
144
+ : never
145
+ : never
146
+ : never;
147
+
148
+ /**
149
+ * The secondary resolution path, taken for a storage column not backed by a
150
+ * domain model field in the namespace (e.g. a column with no corresponding
151
+ * field); refined model fields resolve via {@link NamespaceFieldOutput}.
152
+ */
153
+ type ColumnCodecFallback<
154
+ TContract extends ColumnResolutionContract,
155
+ NsId extends string,
156
+ TableName extends string,
157
+ ColumnName extends string,
158
+ CodecTypes extends Record<string, { readonly output: unknown }>,
159
+ > =
160
+ NamespaceStorageColumn<TContract, NsId, TableName, ColumnName> extends infer ColumnMeta
161
+ ? [ColumnMeta] extends [never]
162
+ ? never
163
+ : ColumnMeta extends StorageColumn
164
+ ? FallbackCodecLookup<ColumnMeta, CodecTypes>
165
+ : never
166
+ : never;
167
+
68
168
  /**
69
169
  * Type-level operation signature.
70
170
  * Represents an operation at the type level for use in contract type maps.
@@ -126,25 +226,37 @@ export type OperationsForTypeId<TypeId extends string, Operations extends Operat
126
226
  ? Operations[TypeId]
127
227
  : Record<string, never>;
128
228
 
229
+ /**
230
+ * Resolves the JavaScript output type of a column addressed by an explicit
231
+ * namespace coordinate.
232
+ *
233
+ * The table→model and column→field mapping is resolved per-namespace from
234
+ * `domain.namespaces[NsId]['models']`, and the refined output type from the
235
+ * emitter's namespace-nested `FieldOutputTypes[NsId][Model][Field]` — so a bare
236
+ * table name shared across namespaces resolves to each namespace's own field,
237
+ * and parameterized codec refinements (e.g. `Vector<N>`) are preserved. A
238
+ * storage column not backed by a model field in the namespace falls back to a
239
+ * codec-output lookup; a column absent in the namespace resolves to `never`.
240
+ */
129
241
  export type ComputeColumnJsType<
130
- TContract extends Contract<SqlStorage>,
242
+ TContract extends ColumnResolutionContract,
243
+ NsId extends string,
131
244
  TableName extends string,
132
245
  ColumnName extends string,
133
- ColumnMeta extends StorageColumn,
134
246
  CodecTypes extends Record<string, { readonly output: unknown }>,
135
247
  > =
136
- ExtractTableToModel<TContract, TableName> extends infer ModelName
248
+ ExtractTableToModel<TContract, NsId, TableName> extends infer ModelName
137
249
  ? [ModelName] extends [never]
138
- ? FallbackCodecLookup<ColumnMeta, CodecTypes>
250
+ ? ColumnCodecFallback<TContract, NsId, TableName, ColumnName, CodecTypes>
139
251
  : ModelName extends string
140
- ? ExtractColumnToField<TContract, TableName, ColumnName> extends infer FieldName
252
+ ? ExtractColumnToField<TContract, NsId, TableName, ColumnName> extends infer FieldName
141
253
  ? [FieldName] extends [never]
142
- ? FallbackCodecLookup<ColumnMeta, CodecTypes>
254
+ ? ColumnCodecFallback<TContract, NsId, TableName, ColumnName, CodecTypes>
143
255
  : FieldName extends string
144
- ? ModelName extends keyof ExtractFieldOutputTypes<TContract>
145
- ? FieldName extends keyof ExtractFieldOutputTypes<TContract>[ModelName]
146
- ? ExtractFieldOutputTypes<TContract>[ModelName][FieldName]
147
- : never
256
+ ? NamespaceFieldOutput<TContract, NsId, ModelName, FieldName> extends infer Out
257
+ ? [Out] extends [never]
258
+ ? ColumnCodecFallback<TContract, NsId, TableName, ColumnName, CodecTypes>
259
+ : Out
148
260
  : never
149
261
  : never
150
262
  : never
@@ -1,181 +0,0 @@
1
- import { J as ParamRef, g as ColumnRef } from "./types-BbGUx5Bi.mjs";
2
- import { r as ExecutionContext } from "./query-lane-context-CY0-e8Qo.mjs";
3
- import { t as SqlExecutionPlan } from "./sql-execution-plan-JwVeAzXt.mjs";
4
- import { Contract, ContractModelDefinitions } from "@prisma-next/contract/types";
5
- import { ExtractFieldOutputTypes, SqlStorage, StorageColumn } from "@prisma-next/sql-contract/types";
6
- import { ParamSpec } from "@prisma-next/operations";
7
- import { SqlLoweringSpec } from "@prisma-next/sql-operations";
8
-
9
- //#region src/types.d.ts
10
- type Expr = ColumnRef | ParamRef;
11
- /**
12
- * Extracts the model name for a given table by iterating models to find the one
13
- * whose `storage.table` matches.
14
- */
15
- type ExtractTableToModel<TContract extends Contract<SqlStorage>, TableName extends string> = ContractModelDefinitions<TContract> extends infer Models extends Record<string, unknown> ? { [M in keyof Models & string]: Models[M] extends {
16
- readonly storage: {
17
- readonly table: TableName;
18
- };
19
- } ? M : never }[keyof Models & string] : never;
20
- /**
21
- * Extracts the field name for a given column by finding the field in
22
- * `model.storage.fields` whose `column` matches.
23
- */
24
- type ExtractColumnToField<TContract extends Contract<SqlStorage>, TableName extends string, ColumnName extends string> = ExtractTableToModel<TContract, TableName> extends infer ModelName extends string ? ContractModelDefinitions<TContract> extends infer Models extends Record<string, unknown> ? ModelName & keyof Models extends infer MKey extends string ? Models[MKey] extends {
25
- readonly storage: {
26
- readonly fields: infer Fields extends Record<string, unknown>;
27
- };
28
- } ? { [F in keyof Fields & string]: Fields[F] extends {
29
- readonly column: ColumnName;
30
- } ? F : never }[keyof Fields & string] : never : never : never : never;
31
- type FallbackCodecLookup<ColumnMeta extends StorageColumn, CodecTypes extends Record<string, {
32
- readonly output: unknown;
33
- }>> = ColumnMeta extends {
34
- codecId: infer CodecId extends string;
35
- } ? CodecId extends keyof CodecTypes ? CodecTypes[CodecId] extends {
36
- readonly output: infer O;
37
- } ? ColumnMeta extends {
38
- nullable: true;
39
- } ? O | null : O : unknown : unknown : unknown;
40
- /**
41
- * Type-level operation signature.
42
- * Represents an operation at the type level for use in contract type maps.
43
- */
44
- type OperationTypeSignature = {
45
- readonly args: ReadonlyArray<ParamSpec>;
46
- readonly returns: ParamSpec;
47
- readonly lowering: SqlLoweringSpec;
48
- readonly capabilities?: ReadonlyArray<string>;
49
- };
50
- /**
51
- * Type-level operation registry.
52
- * Maps typeId → operations, where operations is a record of method name → operation signature.
53
- *
54
- * Example:
55
- * ```typescript
56
- * type MyOperations: OperationTypes = {
57
- * 'pg/vector@1': {
58
- * cosineDistance: {
59
- * args: [{ codecId: 'pg/vector@1'; nullable: false }];
60
- * returns: { codecId: 'core/float8'; nullable: false };
61
- * lowering: { targetFamily: 'sql'; strategy: 'function'; template: '...' };
62
- * };
63
- * };
64
- * };
65
- * ```
66
- */
67
- type OperationTypes = Record<string, Record<string, OperationTypeSignature>>;
68
- /**
69
- * CodecTypes represents a map of typeId to codec definitions.
70
- * Each codec definition must have an `output` property indicating the JavaScript type.
71
- *
72
- * Example:
73
- * ```typescript
74
- * type MyCodecTypes: CodecTypes = {
75
- * 'pg/int4@1': { output: number };
76
- * 'pg/text@1': { output: string };
77
- * };
78
- * ```
79
- */
80
- type CodecTypes = Record<string, {
81
- readonly output: unknown;
82
- }>;
83
- /**
84
- * Extracts operations for a given typeId from the operation registry.
85
- * Returns an empty record if the typeId is not found.
86
- *
87
- * @example
88
- * ```typescript
89
- * type Ops = OperationsForTypeId<'pg/vector@1', MyOperations>;
90
- * // Ops = { cosineDistance: { ... }, l2Distance: { ... } }
91
- * ```
92
- */
93
- type OperationsForTypeId<TypeId extends string, Operations extends OperationTypes> = Operations extends Record<string, never> ? Record<string, never> : TypeId extends keyof Operations ? Operations[TypeId] : Record<string, never>;
94
- type ComputeColumnJsType<TContract extends Contract<SqlStorage>, TableName extends string, ColumnName extends string, ColumnMeta extends StorageColumn, CodecTypes extends Record<string, {
95
- readonly output: unknown;
96
- }>> = ExtractTableToModel<TContract, TableName> extends infer ModelName ? [ModelName] extends [never] ? FallbackCodecLookup<ColumnMeta, CodecTypes> : ModelName extends string ? ExtractColumnToField<TContract, TableName, ColumnName> extends infer FieldName ? [FieldName] extends [never] ? FallbackCodecLookup<ColumnMeta, CodecTypes> : FieldName extends string ? ModelName extends keyof ExtractFieldOutputTypes<TContract> ? FieldName extends keyof ExtractFieldOutputTypes<TContract>[ModelName] ? ExtractFieldOutputTypes<TContract>[ModelName][FieldName] : never : never : never : never : never : never;
97
- /**
98
- * Alias for the SQL-domain executable plan, exposed under the legacy
99
- * `SqlPlan` name for compatibility with SQL builder/utility call sites.
100
- * The canonical name is `SqlExecutionPlan` (`./sql-execution-plan`).
101
- */
102
- type SqlPlan<Row = unknown> = SqlExecutionPlan<Row>;
103
- /**
104
- * Helper types for extracting contract structure.
105
- */
106
- type TablesOf<TContract> = TContract extends {
107
- storage: {
108
- tables: infer U;
109
- };
110
- } ? U : never;
111
- type TableKey<TContract> = Extract<keyof TablesOf<TContract>, string>;
112
- /**
113
- * Unique symbol for metadata property to avoid collisions with user-defined properties
114
- */
115
- declare const META: unique symbol;
116
- /**
117
- * Extracts metadata from a type that has a META property
118
- */
119
- type Meta<T extends {
120
- [META]: unknown;
121
- }> = T[typeof META];
122
- /**
123
- * Metadata interface for table definitions
124
- */
125
- interface TableMetadata<Name extends string> {
126
- name: Name;
127
- }
128
- /**
129
- * Metadata interface for model definitions
130
- */
131
- interface ModelMetadata<Name extends string> {
132
- name: Name;
133
- }
134
- /**
135
- * Base interface for table definitions with metadata
136
- * Used in contract.d.ts to define storage-level table types
137
- */
138
- interface TableDef<Name extends string> {
139
- readonly [META]: TableMetadata<Name>;
140
- }
141
- /**
142
- * Base interface for model definitions with metadata
143
- * Used in contract.d.ts to define application-level model types
144
- */
145
- interface ModelDef<Name extends string> {
146
- readonly [META]: ModelMetadata<Name>;
147
- }
148
- type ColumnsOf<TContract, K extends TableKey<TContract>> = K extends keyof TablesOf<TContract> ? TablesOf<TContract>[K] extends {
149
- columns: infer C;
150
- } ? C : never : never;
151
- interface RawTemplateOptions {
152
- readonly annotations?: Record<string, unknown>;
153
- }
154
- interface RawFunctionOptions extends RawTemplateOptions {
155
- readonly params: ReadonlyArray<unknown>;
156
- }
157
- type RawTemplateFactory = (strings: TemplateStringsArray, ...values: readonly unknown[]) => SqlExecutionPlan;
158
- interface RawFactory extends RawTemplateFactory {
159
- (text: string, options: RawFunctionOptions): SqlExecutionPlan;
160
- with(options: RawTemplateOptions): RawTemplateFactory;
161
- }
162
- interface RuntimeError extends Error {
163
- readonly code: string;
164
- readonly category: 'PLAN';
165
- readonly severity: 'error';
166
- readonly details?: Record<string, unknown>;
167
- readonly hints?: readonly string[];
168
- readonly docs?: readonly string[];
169
- }
170
- interface BuildParamsMap {
171
- readonly [name: string]: unknown;
172
- }
173
- interface BuildOptions {
174
- readonly params?: BuildParamsMap;
175
- }
176
- interface SqlBuilderOptions<TContract extends Contract<SqlStorage> = Contract<SqlStorage>> {
177
- readonly context: ExecutionContext<TContract>;
178
- }
179
- //#endregion
180
- export { TableMetadata as C, TableKey as S, RawTemplateOptions as _, ComputeColumnJsType as a, SqlPlan as b, Meta as c, OperationTypeSignature as d, OperationTypes as f, RawTemplateFactory as g, RawFunctionOptions as h, ColumnsOf as i, ModelDef as l, RawFactory as m, BuildParamsMap as n, Expr as o, OperationsForTypeId as p, CodecTypes as r, META as s, BuildOptions as t, ModelMetadata as u, RuntimeError as v, TablesOf as w, TableDef as x, SqlBuilderOptions as y };
181
- //# sourceMappingURL=types-CQVke4QO.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types-CQVke4QO.d.mts","names":[],"sources":["../src/types.ts"],"mappings":"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"}