@prisma-next/sql-relational-core 0.3.0-dev.10 → 0.3.0-dev.113

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 (188) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +18 -1
  3. package/dist/errors-BNiBIGfC.d.mts +2 -0
  4. package/dist/errors-DXSQwbhk.mjs +3 -0
  5. package/dist/exports/ast.d.mts +126 -0
  6. package/dist/exports/ast.d.mts.map +1 -0
  7. package/dist/exports/ast.mjs +253 -0
  8. package/dist/exports/ast.mjs.map +1 -0
  9. package/dist/exports/errors.d.mts +2 -0
  10. package/dist/exports/errors.mjs +3 -0
  11. package/dist/exports/guards.d.mts +5 -0
  12. package/dist/exports/guards.mjs +3 -0
  13. package/dist/exports/operations-registry.d.mts +5 -0
  14. package/dist/exports/operations-registry.mjs +3 -0
  15. package/dist/exports/param.d.mts +5 -0
  16. package/dist/exports/param.mjs +3 -0
  17. package/dist/exports/plan.d.mts +2 -0
  18. package/dist/exports/plan.mjs +17 -0
  19. package/dist/exports/plan.mjs.map +1 -0
  20. package/dist/exports/query-lane-context.d.mts +2 -0
  21. package/dist/exports/query-lane-context.mjs +1 -0
  22. package/dist/exports/query-operations.d.mts +2 -0
  23. package/dist/exports/query-operations.mjs +18 -0
  24. package/dist/exports/query-operations.mjs.map +1 -0
  25. package/dist/exports/schema.d.mts +5 -0
  26. package/dist/exports/schema.mjs +4 -0
  27. package/dist/exports/types.d.mts +4 -0
  28. package/dist/exports/types.mjs +3 -0
  29. package/dist/exports/utils/guards.d.mts +5 -0
  30. package/dist/exports/utils/guards.mjs +3 -0
  31. package/dist/guards-D1ax7TKN.mjs +57 -0
  32. package/dist/guards-D1ax7TKN.mjs.map +1 -0
  33. package/dist/guards-DC2Ll67p.d.mts +31 -0
  34. package/dist/guards-DC2Ll67p.d.mts.map +1 -0
  35. package/dist/index.d.mts +12 -0
  36. package/dist/index.mjs +13 -0
  37. package/dist/operations-registry-CBmGut8O.d.mts +9 -0
  38. package/dist/operations-registry-CBmGut8O.d.mts.map +1 -0
  39. package/dist/operations-registry-D8INFH9J.mjs +145 -0
  40. package/dist/operations-registry-D8INFH9J.mjs.map +1 -0
  41. package/dist/param-CFyhvphn.mjs +14 -0
  42. package/dist/param-CFyhvphn.mjs.map +1 -0
  43. package/dist/param-Cmdv_exJ.d.mts +8 -0
  44. package/dist/param-Cmdv_exJ.d.mts.map +1 -0
  45. package/dist/plan-BrZtMUA9.d.mts +517 -0
  46. package/dist/plan-BrZtMUA9.d.mts.map +1 -0
  47. package/dist/query-lane-context-BTtg0xm8.d.mts +278 -0
  48. package/dist/query-lane-context-BTtg0xm8.d.mts.map +1 -0
  49. package/dist/query-operation-registry-B6bClJs8.d.mts +27 -0
  50. package/dist/query-operation-registry-B6bClJs8.d.mts.map +1 -0
  51. package/dist/schema-XcyJSq4j.mjs +174 -0
  52. package/dist/schema-XcyJSq4j.mjs.map +1 -0
  53. package/dist/schema-j3Srik3R.d.mts +88 -0
  54. package/dist/schema-j3Srik3R.d.mts.map +1 -0
  55. package/dist/types-BZKzxgOb.mjs +18 -0
  56. package/dist/types-BZKzxgOb.mjs.map +1 -0
  57. package/dist/types-CMyotK6U.d.mts +443 -0
  58. package/dist/types-CMyotK6U.d.mts.map +1 -0
  59. package/dist/types-I6Hsg-GU.mjs +1102 -0
  60. package/dist/types-I6Hsg-GU.mjs.map +1 -0
  61. package/package.json +40 -56
  62. package/src/ast/codec-types.ts +123 -22
  63. package/src/ast/driver-types.ts +20 -3
  64. package/src/ast/join.ts +3 -23
  65. package/src/ast/sql-codecs.ts +81 -0
  66. package/src/ast/types.ts +1704 -74
  67. package/src/exports/ast.ts +1 -7
  68. package/src/exports/guards.ts +3 -4
  69. package/src/exports/query-operations.ts +1 -0
  70. package/src/exports/utils/guards.ts +1 -0
  71. package/src/operations-registry.ts +115 -89
  72. package/src/plan.ts +4 -4
  73. package/src/query-lane-context.ts +79 -1
  74. package/src/query-operation-registry.ts +35 -0
  75. package/src/schema.ts +104 -43
  76. package/src/types.ts +333 -84
  77. package/src/utils/guards.ts +44 -80
  78. package/dist/ast/adapter-types.d.ts +0 -28
  79. package/dist/ast/adapter-types.d.ts.map +0 -1
  80. package/dist/ast/codec-types.d.ts +0 -141
  81. package/dist/ast/codec-types.d.ts.map +0 -1
  82. package/dist/ast/common.d.ts +0 -7
  83. package/dist/ast/common.d.ts.map +0 -1
  84. package/dist/ast/delete.d.ts +0 -8
  85. package/dist/ast/delete.d.ts.map +0 -1
  86. package/dist/ast/driver-types.d.ts +0 -20
  87. package/dist/ast/driver-types.d.ts.map +0 -1
  88. package/dist/ast/insert.d.ts +0 -8
  89. package/dist/ast/insert.d.ts.map +0 -1
  90. package/dist/ast/join.d.ts +0 -6
  91. package/dist/ast/join.d.ts.map +0 -1
  92. package/dist/ast/order.d.ts +0 -6
  93. package/dist/ast/order.d.ts.map +0 -1
  94. package/dist/ast/predicate.d.ts +0 -4
  95. package/dist/ast/predicate.d.ts.map +0 -1
  96. package/dist/ast/select.d.ts +0 -18
  97. package/dist/ast/select.d.ts.map +0 -1
  98. package/dist/ast/types.d.ts +0 -118
  99. package/dist/ast/types.d.ts.map +0 -1
  100. package/dist/ast/update.d.ts +0 -9
  101. package/dist/ast/update.d.ts.map +0 -1
  102. package/dist/ast/util.d.ts +0 -2
  103. package/dist/ast/util.d.ts.map +0 -1
  104. package/dist/chunk-2F7DSEOU.js +0 -8
  105. package/dist/chunk-2F7DSEOU.js.map +0 -1
  106. package/dist/chunk-36WJWNHT.js +0 -1
  107. package/dist/chunk-36WJWNHT.js.map +0 -1
  108. package/dist/chunk-5N34PNVZ.js +0 -62
  109. package/dist/chunk-5N34PNVZ.js.map +0 -1
  110. package/dist/chunk-7I3EMQID.js +0 -16
  111. package/dist/chunk-7I3EMQID.js.map +0 -1
  112. package/dist/chunk-CBTYMOX2.js +0 -152
  113. package/dist/chunk-CBTYMOX2.js.map +0 -1
  114. package/dist/chunk-G52ENULI.js +0 -1
  115. package/dist/chunk-G52ENULI.js.map +0 -1
  116. package/dist/chunk-KYSP7L5C.js +0 -16
  117. package/dist/chunk-KYSP7L5C.js.map +0 -1
  118. package/dist/chunk-M23L3JHG.js +0 -159
  119. package/dist/chunk-M23L3JHG.js.map +0 -1
  120. package/dist/chunk-MM74SVJ4.js +0 -13
  121. package/dist/chunk-MM74SVJ4.js.map +0 -1
  122. package/dist/chunk-U7AXAUJA.js +0 -1
  123. package/dist/chunk-U7AXAUJA.js.map +0 -1
  124. package/dist/chunk-WZBPVEZI.js +0 -320
  125. package/dist/chunk-WZBPVEZI.js.map +0 -1
  126. package/dist/errors.d.ts +0 -2
  127. package/dist/errors.d.ts.map +0 -1
  128. package/dist/exports/ast.d.ts +0 -14
  129. package/dist/exports/ast.d.ts.map +0 -1
  130. package/dist/exports/ast.js +0 -46
  131. package/dist/exports/ast.js.map +0 -1
  132. package/dist/exports/errors.d.ts +0 -2
  133. package/dist/exports/errors.d.ts.map +0 -1
  134. package/dist/exports/errors.js +0 -9
  135. package/dist/exports/errors.js.map +0 -1
  136. package/dist/exports/guards.d.ts +0 -2
  137. package/dist/exports/guards.d.ts.map +0 -1
  138. package/dist/exports/guards.js +0 -21
  139. package/dist/exports/guards.js.map +0 -1
  140. package/dist/exports/operations-registry.d.ts +0 -2
  141. package/dist/exports/operations-registry.d.ts.map +0 -1
  142. package/dist/exports/operations-registry.js +0 -9
  143. package/dist/exports/operations-registry.js.map +0 -1
  144. package/dist/exports/param.d.ts +0 -3
  145. package/dist/exports/param.d.ts.map +0 -1
  146. package/dist/exports/param.js +0 -7
  147. package/dist/exports/param.js.map +0 -1
  148. package/dist/exports/plan.d.ts +0 -2
  149. package/dist/exports/plan.d.ts.map +0 -1
  150. package/dist/exports/plan.js +0 -7
  151. package/dist/exports/plan.js.map +0 -1
  152. package/dist/exports/query-lane-context.d.ts +0 -2
  153. package/dist/exports/query-lane-context.d.ts.map +0 -1
  154. package/dist/exports/query-lane-context.js +0 -2
  155. package/dist/exports/query-lane-context.js.map +0 -1
  156. package/dist/exports/schema.d.ts +0 -3
  157. package/dist/exports/schema.d.ts.map +0 -1
  158. package/dist/exports/schema.js +0 -14
  159. package/dist/exports/schema.js.map +0 -1
  160. package/dist/exports/types.d.ts +0 -2
  161. package/dist/exports/types.d.ts.map +0 -1
  162. package/dist/exports/types.js +0 -10
  163. package/dist/exports/types.js.map +0 -1
  164. package/dist/index.d.ts +0 -9
  165. package/dist/index.d.ts.map +0 -1
  166. package/dist/index.js +0 -81
  167. package/dist/index.js.map +0 -1
  168. package/dist/operations-registry.d.ts +0 -5
  169. package/dist/operations-registry.d.ts.map +0 -1
  170. package/dist/param.d.ts +0 -4
  171. package/dist/param.d.ts.map +0 -1
  172. package/dist/plan.d.ts +0 -23
  173. package/dist/plan.d.ts.map +0 -1
  174. package/dist/query-lane-context.d.ts +0 -16
  175. package/dist/query-lane-context.d.ts.map +0 -1
  176. package/dist/schema.d.ts +0 -63
  177. package/dist/schema.d.ts.map +0 -1
  178. package/dist/types.d.ts +0 -332
  179. package/dist/types.d.ts.map +0 -1
  180. package/dist/utils/guards.d.ts +0 -55
  181. package/dist/utils/guards.d.ts.map +0 -1
  182. package/src/ast/common.ts +0 -36
  183. package/src/ast/delete.ts +0 -17
  184. package/src/ast/insert.ts +0 -17
  185. package/src/ast/order.ts +0 -11
  186. package/src/ast/predicate.ts +0 -30
  187. package/src/ast/select.ts +0 -39
  188. package/src/ast/update.ts +0 -19
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast.mjs","names":["codec","codecs","codecTypes: Record<\n string,\n { readonly input: unknown; readonly output: unknown; readonly traits: unknown }\n >","result: Record<\n string,\n {\n typeId: string;\n scalar: string;\n codec: Codec;\n input: unknown;\n output: unknown;\n jsType: unknown;\n }\n >","arktype","out: Record<string, unknown>"],"sources":["../../src/ast/codec-types.ts","../../src/ast/join.ts","../../src/ast/sql-codecs.ts","../../src/ast/util.ts"],"sourcesContent":["import { ifDefined } from '@prisma-next/utils/defined';\nimport type { Type } from 'arktype';\nimport type { O } from 'ts-toolbelt';\n\n/**\n * Semantic traits a codec declares.\n * Used by DSL surfaces to gate which operators and functions are available.\n */\nexport type CodecTrait = 'equality' | 'order' | 'boolean' | 'numeric' | 'textual';\n\n/**\n * Descriptor for parameterized codecs that require type parameter validation.\n * Shared between adapter (compile-time) and runtime layers to avoid duplication.\n *\n * @template TParams - The shape of the type parameters (e.g., `{ length: number }`)\n * @template THelper - The type returned by the optional `init` hook\n */\nexport interface CodecParamsDescriptor<TParams = Record<string, unknown>, THelper = unknown> {\n /** The codec ID this descriptor applies to (e.g., 'pg/vector@1') */\n readonly codecId: string;\n\n /**\n * Arktype schema for validating typeParams.\n * Used to validate both storage.types entries and inline column typeParams.\n */\n readonly paramsSchema: Type<TParams>;\n\n /**\n * Optional init hook called during runtime context creation.\n * Receives validated params and returns a helper object to be stored in context.types.\n * If not provided, the validated params are stored directly.\n */\n readonly init?: (params: TParams) => THelper;\n}\n\n/**\n * Codec metadata for database-specific type information.\n * Used for schema introspection and verification.\n */\nexport interface CodecMeta {\n readonly db?: {\n readonly sql?: {\n readonly postgres?: {\n readonly nativeType: string; // e.g. 'integer', 'text', 'vector', 'timestamp with time zone'\n };\n };\n };\n}\n\n/**\n * Codec interface for encoding/decoding values between wire format and JavaScript types.\n *\n * Codecs are pure, synchronous functions with no side effects or IO.\n * They provide deterministic conversion between database wire types and JS values.\n */\nexport interface Codec<\n Id extends string = string,\n TTraits extends readonly CodecTrait[] = readonly CodecTrait[],\n TWire = unknown,\n TJs = unknown,\n TParams = Record<string, unknown>,\n THelper = unknown,\n> {\n /**\n * Namespaced codec identifier in format 'namespace/name@version'\n * Examples: 'pg/text@1', 'pg/uuid@1', 'pg/timestamptz@1'\n */\n readonly id: Id;\n\n /**\n * Contract scalar type IDs that this codec can handle.\n * Examples: ['text'], ['int4', 'float8'], ['timestamp', 'timestamptz']\n */\n readonly targetTypes: readonly string[];\n\n /**\n * Optional metadata for database-specific type information.\n * Used for schema introspection and verification.\n */\n readonly meta?: CodecMeta;\n\n /**\n * Optional params schema for parameterized codecs.\n * If provided, typeParams are validated against this schema.\n */\n readonly paramsSchema?: Type<TParams>;\n\n /**\n * Optional init hook for building runtime helper state from validated params.\n *\n * Useful when parameterized types need derived data at runtime, for example:\n * - normalize typeParams into a stable helper shape consumed by lanes/adapters\n * - precompute reusable values once during context creation\n * - avoid repeating typeParams parsing logic during query execution\n *\n * Example:\n * { length: 255 } -> { kind: 'variable', maxLength: 255 }\n *\n * **Convention for JSON/JSONB codecs**: When the helper includes a `validate`\n * property of type `JsonSchemaValidateFn`, the runtime will use it to enforce\n * JSON Schema conformance during encoding and decoding. The property is\n * discovered via duck typing (`helper?.validate`) for flexibility across\n * different codec types.\n */\n readonly init?: (params: TParams) => THelper;\n\n /**\n * Decode a wire value (from database) to JavaScript type.\n * Must be synchronous and pure (no side effects).\n */\n decode(wire: TWire): TJs;\n\n /**\n * Encode a JavaScript value to wire format (for database).\n * Optional - if not provided, values pass through unchanged.\n * Must be synchronous and pure (no side effects).\n */\n encode?(value: TJs): TWire;\n\n /**\n * Semantic traits this codec's type supports.\n * Used by DSL surfaces to gate which operators and functions are available.\n * When omitted, the codec is treated as having no traits.\n */\n readonly traits?: TTraits;\n}\n\n/**\n * Registry interface for codecs organized by ID and by contract scalar type.\n *\n * The registry allows looking up codecs by their namespaced ID or by the\n * contract scalar types they handle. Multiple codecs may handle the same\n * scalar type; ordering in byScalar reflects preference (adapter first,\n * then packs, then app overrides).\n */\nexport interface CodecRegistry {\n get(id: string): Codec<string> | undefined;\n has(id: string): boolean;\n getByScalar(scalar: string): readonly Codec<string>[];\n getDefaultCodec(scalar: string): Codec<string> | undefined;\n register(codec: Codec<string>): void;\n /** Returns true if the codec with this ID has the given trait. */\n hasTrait(codecId: string, trait: CodecTrait): boolean;\n /** Returns all traits for a codec, or an empty array if not found. */\n traitsOf(codecId: string): readonly CodecTrait[];\n [Symbol.iterator](): Iterator<Codec<string>>;\n values(): IterableIterator<Codec<string>>;\n}\n\n/**\n * Implementation of CodecRegistry.\n */\nclass CodecRegistryImpl implements CodecRegistry {\n private readonly _byId = new Map<string, Codec<string>>();\n private readonly _byScalar = new Map<string, Codec<string>[]>();\n\n /**\n * Map-like interface for codec lookup by ID.\n * Example: registry.get('pg/text@1')\n */\n get(id: string): Codec<string> | undefined {\n return this._byId.get(id);\n }\n\n /**\n * Check if a codec with the given ID is registered.\n */\n has(id: string): boolean {\n return this._byId.has(id);\n }\n\n /**\n * Get all codecs that handle a given scalar type.\n * Returns an empty frozen array if no codecs are found.\n * Example: registry.getByScalar('text') → [codec1, codec2, ...]\n */\n getByScalar(scalar: string): readonly Codec<string>[] {\n return this._byScalar.get(scalar) ?? Object.freeze([]);\n }\n\n /**\n * Get the default codec for a scalar type (first registered codec).\n * Returns undefined if no codec handles this scalar type.\n */\n getDefaultCodec(scalar: string): Codec<string> | undefined {\n const _codecs = this._byScalar.get(scalar);\n return _codecs?.[0];\n }\n\n /**\n * Register a codec in the registry.\n * Throws an error if a codec with the same ID is already registered.\n *\n * @param codec - The codec to register\n * @throws Error if a codec with the same ID already exists\n */\n register(codec: Codec<string>): void {\n if (this._byId.has(codec.id)) {\n throw new Error(`Codec with ID '${codec.id}' is already registered`);\n }\n\n this._byId.set(codec.id, codec);\n\n // Update byScalar mapping\n for (const scalarType of codec.targetTypes) {\n const existing = this._byScalar.get(scalarType);\n if (existing) {\n existing.push(codec);\n } else {\n this._byScalar.set(scalarType, [codec]);\n }\n }\n }\n\n hasTrait(codecId: string, trait: CodecTrait): boolean {\n const codec = this._byId.get(codecId);\n return codec?.traits?.includes(trait) ?? false;\n }\n\n traitsOf(codecId: string): readonly CodecTrait[] {\n return this._byId.get(codecId)?.traits ?? [];\n }\n\n /**\n * Returns an iterator over all registered codecs.\n * Useful for iterating through codecs from another registry.\n */\n *[Symbol.iterator](): Iterator<Codec<string>> {\n for (const codec of this._byId.values()) {\n yield codec;\n }\n }\n\n /**\n * Returns an iterable of all registered codecs.\n */\n values(): IterableIterator<Codec<string>> {\n return this._byId.values();\n }\n}\n\n/**\n * Codec factory - creates a codec with typeId and encode/decode functions.\n */\nexport function codec<\n Id extends string,\n const TTraits extends readonly CodecTrait[],\n TWire,\n TJs,\n TParams = Record<string, unknown>,\n THelper = unknown,\n>(config: {\n typeId: Id;\n targetTypes: readonly string[];\n encode: (value: TJs) => TWire;\n decode: (wire: TWire) => TJs;\n meta?: CodecMeta;\n paramsSchema?: Type<TParams>;\n init?: (params: TParams) => THelper;\n traits?: TTraits;\n}): Codec<Id, TTraits, TWire, TJs, TParams, THelper> {\n return {\n id: config.typeId,\n targetTypes: config.targetTypes,\n ...ifDefined('meta', config.meta),\n ...ifDefined('paramsSchema', config.paramsSchema),\n ...ifDefined('init', config.init),\n ...ifDefined(\n 'traits',\n config.traits ? (Object.freeze([...config.traits]) as TTraits) : undefined,\n ),\n encode: config.encode,\n decode: config.decode,\n };\n}\n\n/**\n * Type helpers to extract codec types.\n */\nexport type CodecId<T> =\n T extends Codec<infer Id> ? Id : T extends { readonly id: infer Id } ? Id : never;\nexport type CodecInput<T> =\n T extends Codec<string, readonly CodecTrait[], unknown, infer JsT> ? JsT : never;\nexport type CodecOutput<T> =\n T extends Codec<string, readonly CodecTrait[], unknown, infer JsT> ? JsT : never;\nexport type CodecTraits<T> =\n T extends Codec<string, infer TTraits> ? TTraits[number] & CodecTrait : never;\n\n/**\n * Type helper to extract codec types from builder instance.\n */\nexport type ExtractCodecTypes<\n ScalarNames extends { readonly [K in keyof ScalarNames]: Codec<string> } = Record<never, never>,\n> = {\n readonly [K in keyof ScalarNames as ScalarNames[K] extends Codec<infer Id> ? Id : never]: {\n readonly input: CodecInput<ScalarNames[K]>;\n readonly output: CodecOutput<ScalarNames[K]>;\n readonly traits: CodecTraits<ScalarNames[K]>;\n };\n};\n\n/**\n * Type helper to extract data type IDs from builder instance.\n * Uses ExtractCodecTypes which preserves literal types as keys.\n * Since ExtractCodecTypes<Record<K, ScalarNames[K]>> has exactly one key (the Id),\n * we extract it by creating a mapped type that uses the Id as both key and value,\n * then extract the value type. This preserves literal types.\n */\nexport type ExtractDataTypes<\n ScalarNames extends { readonly [K in keyof ScalarNames]: Codec<string> },\n> = {\n readonly [K in keyof ScalarNames]: {\n readonly [Id in keyof ExtractCodecTypes<Record<K, ScalarNames[K]>>]: Id;\n }[keyof ExtractCodecTypes<Record<K, ScalarNames[K]>>];\n};\n\n/**\n * Builder interface for declaring codecs.\n */\nexport interface CodecDefBuilder<\n ScalarNames extends { readonly [K in keyof ScalarNames]: Codec<string> } = Record<never, never>,\n> {\n readonly CodecTypes: ExtractCodecTypes<ScalarNames>;\n\n add<ScalarName extends string, CodecImpl extends Codec<string>>(\n scalarName: ScalarName,\n codecImpl: CodecImpl,\n ): CodecDefBuilder<\n O.Overwrite<ScalarNames, Record<ScalarName, CodecImpl>> & Record<ScalarName, CodecImpl>\n >;\n\n readonly codecDefinitions: {\n readonly [K in keyof ScalarNames]: {\n readonly typeId: ScalarNames[K] extends Codec<infer Id extends string> ? Id : never;\n readonly scalar: K;\n readonly codec: ScalarNames[K];\n readonly input: CodecInput<ScalarNames[K]>;\n readonly output: CodecOutput<ScalarNames[K]>;\n readonly jsType: CodecOutput<ScalarNames[K]>;\n };\n };\n\n readonly dataTypes: {\n readonly [K in keyof ScalarNames]: {\n readonly [Id in keyof ExtractCodecTypes<Record<K, ScalarNames[K]>>]: Id;\n }[keyof ExtractCodecTypes<Record<K, ScalarNames[K]>>];\n };\n}\n\n/**\n * Implementation of CodecDefBuilder.\n */\nclass CodecDefBuilderImpl<\n ScalarNames extends { readonly [K in keyof ScalarNames]: Codec<string> } = Record<never, never>,\n> implements CodecDefBuilder<ScalarNames>\n{\n private readonly _codecs: ScalarNames;\n\n public readonly CodecTypes: ExtractCodecTypes<ScalarNames>;\n public readonly dataTypes: {\n readonly [K in keyof ScalarNames]: {\n readonly [Id in keyof ExtractCodecTypes<Record<K, ScalarNames[K]>>]: Id;\n }[keyof ExtractCodecTypes<Record<K, ScalarNames[K]>>];\n };\n\n constructor(codecs: ScalarNames) {\n this._codecs = codecs;\n\n // Populate CodecTypes from codecs\n const codecTypes: Record<\n string,\n { readonly input: unknown; readonly output: unknown; readonly traits: unknown }\n > = {};\n for (const [, codecImpl] of Object.entries(this._codecs)) {\n const codecImplTyped = codecImpl as Codec<string>;\n codecTypes[codecImplTyped.id] = {\n input: undefined as unknown as CodecInput<typeof codecImplTyped>,\n output: undefined as unknown as CodecOutput<typeof codecImplTyped>,\n traits: undefined as unknown as CodecTraits<typeof codecImplTyped>,\n };\n }\n this.CodecTypes = codecTypes as ExtractCodecTypes<ScalarNames>;\n\n // Populate dataTypes from codecs - extract id property from each codec\n // Build object preserving keys from ScalarNames\n // Type assertion is safe because we know ScalarNames structure matches the return type\n // biome-ignore lint/suspicious/noExplicitAny: dynamic codec mapping requires any\n const dataTypes = {} as any;\n for (const key in this._codecs) {\n if (Object.hasOwn(this._codecs, key)) {\n const codec = this._codecs[key] as Codec<string>;\n dataTypes[key] = codec.id;\n }\n }\n this.dataTypes = dataTypes as {\n readonly [K in keyof ScalarNames]: {\n readonly [Id in keyof ExtractCodecTypes<Record<K, ScalarNames[K]>>]: Id;\n }[keyof ExtractCodecTypes<Record<K, ScalarNames[K]>>];\n };\n }\n\n add<ScalarName extends string, CodecImpl extends Codec<string>>(\n scalarName: ScalarName,\n codecImpl: CodecImpl,\n ): CodecDefBuilder<\n O.Overwrite<ScalarNames, Record<ScalarName, CodecImpl>> & Record<ScalarName, CodecImpl>\n > {\n return new CodecDefBuilderImpl({\n ...this._codecs,\n [scalarName]: codecImpl,\n } as O.Overwrite<ScalarNames, Record<ScalarName, CodecImpl>> & Record<ScalarName, CodecImpl>);\n }\n\n /**\n * Derive codecDefinitions structure.\n */\n get codecDefinitions(): {\n readonly [K in keyof ScalarNames]: {\n readonly typeId: ScalarNames[K] extends Codec<infer Id> ? Id : never;\n readonly scalar: K;\n readonly codec: ScalarNames[K];\n readonly input: CodecInput<ScalarNames[K]>;\n readonly output: CodecOutput<ScalarNames[K]>;\n readonly jsType: CodecOutput<ScalarNames[K]>;\n };\n } {\n const result: Record<\n string,\n {\n typeId: string;\n scalar: string;\n codec: Codec;\n input: unknown;\n output: unknown;\n jsType: unknown;\n }\n > = {};\n\n for (const [scalarName, codecImpl] of Object.entries(this._codecs)) {\n const codec = codecImpl as Codec<string>;\n result[scalarName] = {\n typeId: codec.id,\n scalar: scalarName,\n codec: codec,\n input: undefined as unknown as CodecInput<typeof codec>,\n output: undefined as unknown as CodecOutput<typeof codec>,\n jsType: undefined as unknown as CodecOutput<typeof codec>,\n };\n }\n\n return result as {\n readonly [K in keyof ScalarNames]: {\n readonly typeId: ScalarNames[K] extends Codec<infer Id extends string> ? Id : never;\n readonly scalar: K;\n readonly codec: ScalarNames[K];\n readonly input: CodecInput<ScalarNames[K]>;\n readonly output: CodecOutput<ScalarNames[K]>;\n readonly jsType: CodecOutput<ScalarNames[K]>;\n };\n };\n }\n}\n\n/**\n * Create a new codec registry.\n */\nexport function createCodecRegistry(): CodecRegistry {\n return new CodecRegistryImpl();\n}\n\n/**\n * Create a new codec definition builder.\n */\nexport function defineCodecs(): CodecDefBuilder<Record<never, never>> {\n return new CodecDefBuilderImpl({});\n}\n","import { planInvalid } from '@prisma-next/plan';\nimport type { AnyColumnBuilder, JoinOnBuilder, JoinOnPredicate } from '../types';\nimport { isColumnBuilder } from '../types';\nimport { EqColJoinOn, JoinAst } from './types';\n\nclass JoinOnBuilderImpl implements JoinOnBuilder {\n eqCol(left: AnyColumnBuilder, right: AnyColumnBuilder): JoinOnPredicate {\n if (!left || !isColumnBuilder(left)) {\n throw planInvalid('Join ON left operand must be a column');\n }\n\n if (!right || !isColumnBuilder(right)) {\n throw planInvalid('Join ON right operand must be a column');\n }\n\n const leftCol = left as unknown as { table: string; column: string };\n const rightCol = right as unknown as { table: string; column: string };\n if (leftCol.table === rightCol.table) {\n throw planInvalid('Self-joins are not supported in MVP');\n }\n\n return {\n kind: 'join-on',\n left: left as AnyColumnBuilder,\n right: right as AnyColumnBuilder,\n };\n }\n}\n\nexport { EqColJoinOn, JoinAst };\n\nexport function createJoinOnBuilder(): JoinOnBuilder {\n return new JoinOnBuilderImpl();\n}\n","import { type as arktype } from 'arktype';\nimport { codec, defineCodecs } from './codec-types';\n\nexport const SQL_CHAR_CODEC_ID = 'sql/char@1' as const;\nexport const SQL_VARCHAR_CODEC_ID = 'sql/varchar@1' as const;\nexport const SQL_INT_CODEC_ID = 'sql/int@1' as const;\nexport const SQL_FLOAT_CODEC_ID = 'sql/float@1' as const;\n\nconst lengthParamsSchema = arktype({\n length: 'number.integer > 0',\n});\n\ntype LengthTypeHelper = {\n readonly kind: 'fixed' | 'variable';\n readonly maxLength: number;\n};\n\nfunction createLengthTypeHelper(\n kind: LengthTypeHelper['kind'],\n): (params: Record<string, unknown>) => LengthTypeHelper {\n return (params) => ({\n kind,\n maxLength: params['length'] as number,\n });\n}\n\nconst sqlCharCodec = codec<\n typeof SQL_CHAR_CODEC_ID,\n readonly ['equality', 'order', 'textual'],\n string,\n string\n>({\n typeId: SQL_CHAR_CODEC_ID,\n targetTypes: ['char'],\n traits: ['equality', 'order', 'textual'],\n encode: (value: string): string => value,\n decode: (wire: string): string => wire.trimEnd(),\n paramsSchema: lengthParamsSchema,\n init: createLengthTypeHelper('fixed'),\n});\n\nconst sqlVarcharCodec = codec<\n typeof SQL_VARCHAR_CODEC_ID,\n readonly ['equality', 'order', 'textual'],\n string,\n string\n>({\n typeId: SQL_VARCHAR_CODEC_ID,\n targetTypes: ['varchar'],\n traits: ['equality', 'order', 'textual'],\n encode: (value: string): string => value,\n decode: (wire: string): string => wire,\n paramsSchema: lengthParamsSchema,\n init: createLengthTypeHelper('variable'),\n});\n\nconst sqlIntCodec = codec({\n typeId: SQL_INT_CODEC_ID,\n targetTypes: ['int'],\n traits: ['equality', 'order', 'numeric'],\n encode: (value: number): number => value,\n decode: (wire: number): number => wire,\n});\n\nconst sqlFloatCodec = codec({\n typeId: SQL_FLOAT_CODEC_ID,\n targetTypes: ['float'],\n traits: ['equality', 'order', 'numeric'],\n encode: (value: number): number => value,\n decode: (wire: number): number => wire,\n});\n\nconst codecs = defineCodecs()\n .add('char', sqlCharCodec)\n .add('varchar', sqlVarcharCodec)\n .add('int', sqlIntCodec)\n .add('float', sqlFloatCodec);\n\nexport const sqlCodecDefinitions = codecs.codecDefinitions;\nexport const sqlDataTypes = codecs.dataTypes;\nexport type SqlCodecTypes = typeof codecs.CodecTypes;\n","export function compact<T extends Record<string, unknown>>(o: T): T {\n const out: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(o)) {\n if (v === undefined || v === null) continue;\n if (Array.isArray(v) && v.length === 0) continue;\n out[k] = v;\n }\n return out as T;\n}\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { n as planUnsupported, t as planInvalid } from "../errors-BNiBIGfC.mjs";
2
+ export { planInvalid, planUnsupported };
@@ -0,0 +1,3 @@
1
+ import { n as planUnsupported, t as planInvalid } from "../errors-DXSQwbhk.mjs";
2
+
3
+ export { planInvalid, planUnsupported };
@@ -0,0 +1,5 @@
1
+ import "../query-lane-context-BTtg0xm8.mjs";
2
+ import "../plan-BrZtMUA9.mjs";
3
+ import "../types-CMyotK6U.mjs";
4
+ import { a as isExpressionSource, i as isExpressionBuilder, n as getColumnMeta, o as isParamPlaceholder, r as isColumnBuilder, s as isValueSource, t as getColumnInfo } from "../guards-DC2Ll67p.mjs";
5
+ export { getColumnInfo, getColumnMeta, isColumnBuilder, isExpressionBuilder, isExpressionSource, isParamPlaceholder, isValueSource };
@@ -0,0 +1,3 @@
1
+ import { a as isExpressionSource, i as isExpressionBuilder, n as getColumnMeta, o as isParamPlaceholder, r as isColumnBuilder, s as isValueSource, t as getColumnInfo } from "../guards-D1ax7TKN.mjs";
2
+
3
+ export { getColumnInfo, getColumnMeta, isColumnBuilder, isExpressionBuilder, isExpressionSource, isParamPlaceholder, isValueSource };
@@ -0,0 +1,5 @@
1
+ import "../query-lane-context-BTtg0xm8.mjs";
2
+ import "../plan-BrZtMUA9.mjs";
3
+ import "../types-CMyotK6U.mjs";
4
+ import { t as attachOperationsToColumnBuilder } from "../operations-registry-CBmGut8O.mjs";
5
+ export { attachOperationsToColumnBuilder };
@@ -0,0 +1,3 @@
1
+ import { t as attachOperationsToColumnBuilder } from "../operations-registry-D8INFH9J.mjs";
2
+
3
+ export { attachOperationsToColumnBuilder };
@@ -0,0 +1,5 @@
1
+ import "../query-lane-context-BTtg0xm8.mjs";
2
+ import "../plan-BrZtMUA9.mjs";
3
+ import "../types-CMyotK6U.mjs";
4
+ import { n as param, t as Parameter } from "../param-Cmdv_exJ.mjs";
5
+ export { Parameter, param };
@@ -0,0 +1,3 @@
1
+ import { t as param } from "../param-CFyhvphn.mjs";
2
+
3
+ export { param };
@@ -0,0 +1,2 @@
1
+ import { n as augmentDescriptorWithColumnMeta, t as SqlQueryPlan } from "../plan-BrZtMUA9.mjs";
2
+ export { SqlQueryPlan, augmentDescriptorWithColumnMeta };
@@ -0,0 +1,17 @@
1
+ //#region src/plan.ts
2
+ /**
3
+ * Augments the last ParamDescriptor in the array with codecId and nativeType from columnMeta.
4
+ * This is used when building WHERE expressions to ensure param descriptors have type information.
5
+ */
6
+ function augmentDescriptorWithColumnMeta(descriptors, columnMeta) {
7
+ const descriptor = descriptors[descriptors.length - 1];
8
+ if (descriptor && columnMeta) descriptors[descriptors.length - 1] = {
9
+ ...descriptor,
10
+ codecId: columnMeta.codecId,
11
+ nativeType: columnMeta.nativeType
12
+ };
13
+ }
14
+
15
+ //#endregion
16
+ export { augmentDescriptorWithColumnMeta };
17
+ //# sourceMappingURL=plan.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan.mjs","names":[],"sources":["../../src/plan.ts"],"sourcesContent":["import type { ExecutionPlan, ParamDescriptor } from '@prisma-next/contract/types';\nimport type { StorageColumn } from '@prisma-next/sql-contract/types';\nimport type { AnyQueryAst } from './ast/types';\n\n/**\n * SQL query plan produced by lanes before lowering.\n *\n * Lanes build ASTs and metadata but do not perform SQL lowering.\n * The `sql` field is absent - lowering happens in the runtime executor.\n *\n * Structurally aligns with ExecutionPlan<Row, AnyQueryAst> (without sql field) to maintain\n * compatibility with ExecutionPlan/Plan-based utilities.\n * The generic parameter `_Row` is preserved for type extraction via ResultType.\n */\nexport interface SqlQueryPlan<_Row = unknown>\n extends Pick<ExecutionPlan<_Row, AnyQueryAst>, 'params' | 'meta'> {\n readonly ast: AnyQueryAst;\n // Phantom property to preserve generic parameter for type extraction\n // This allows ResultType to extract _Row for SqlQueryPlan values.\n readonly _Row?: _Row;\n}\n\n/**\n * Augments the last ParamDescriptor in the array with codecId and nativeType from columnMeta.\n * This is used when building WHERE expressions to ensure param descriptors have type information.\n */\nexport function augmentDescriptorWithColumnMeta(\n descriptors: ParamDescriptor[],\n columnMeta: StorageColumn | undefined,\n): void {\n const descriptor = descriptors[descriptors.length - 1];\n if (descriptor && columnMeta) {\n descriptors[descriptors.length - 1] = {\n ...descriptor,\n codecId: columnMeta.codecId,\n nativeType: columnMeta.nativeType,\n };\n }\n}\n"],"mappings":";;;;;AA0BA,SAAgB,gCACd,aACA,YACM;CACN,MAAM,aAAa,YAAY,YAAY,SAAS;AACpD,KAAI,cAAc,WAChB,aAAY,YAAY,SAAS,KAAK;EACpC,GAAG;EACH,SAAS,WAAW;EACpB,YAAY,WAAW;EACxB"}
@@ -0,0 +1,2 @@
1
+ import { a as JsonSchemaValidationResult, c as MutationDefaultsOptions, i as JsonSchemaValidationError, l as TypeHelperRegistry, n as ExecutionContext, o as JsonSchemaValidatorRegistry, r as JsonSchemaValidateFn, s as MutationDefaultsOp, t as AppliedMutationDefault } from "../query-lane-context-BTtg0xm8.mjs";
2
+ export { AppliedMutationDefault, ExecutionContext, JsonSchemaValidateFn, JsonSchemaValidationError, JsonSchemaValidationResult, JsonSchemaValidatorRegistry, MutationDefaultsOp, MutationDefaultsOptions, TypeHelperRegistry };
@@ -0,0 +1 @@
1
+ export { };
@@ -0,0 +1,2 @@
1
+ import { i as createQueryOperationRegistry, n as QueryOperationEntry, r as QueryOperationRegistry, t as QueryOperationDescriptor } from "../query-operation-registry-B6bClJs8.mjs";
2
+ export { QueryOperationDescriptor, QueryOperationEntry, QueryOperationRegistry, createQueryOperationRegistry };
@@ -0,0 +1,18 @@
1
+ //#region src/query-operation-registry.ts
2
+ function createQueryOperationRegistry() {
3
+ const map = /* @__PURE__ */ new Map();
4
+ return {
5
+ register(descriptor) {
6
+ if (map.has(descriptor.method)) throw new Error(`Query operation "${descriptor.method}" is already registered`);
7
+ const { method: _, ...entry } = descriptor;
8
+ map.set(descriptor.method, entry);
9
+ },
10
+ entries() {
11
+ return Object.freeze(Object.fromEntries(map));
12
+ }
13
+ };
14
+ }
15
+
16
+ //#endregion
17
+ export { createQueryOperationRegistry };
18
+ //# sourceMappingURL=query-operations.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-operations.mjs","names":[],"sources":["../../src/query-operation-registry.ts"],"sourcesContent":["export interface QueryOperationEntry {\n readonly args: readonly { readonly codecId: string; readonly nullable: boolean }[];\n readonly returns: { readonly codecId: string; readonly nullable: boolean };\n readonly lowering: {\n readonly targetFamily: 'sql';\n readonly strategy: 'infix' | 'function';\n readonly template: string;\n };\n}\n\nexport interface QueryOperationDescriptor extends QueryOperationEntry {\n readonly method: string;\n}\n\nexport interface QueryOperationRegistry {\n register(descriptor: QueryOperationDescriptor): void;\n entries(): Readonly<Record<string, QueryOperationEntry>>;\n}\n\nexport function createQueryOperationRegistry(): QueryOperationRegistry {\n const map = new Map<string, QueryOperationEntry>();\n\n return {\n register(descriptor) {\n if (map.has(descriptor.method)) {\n throw new Error(`Query operation \"${descriptor.method}\" is already registered`);\n }\n const { method: _, ...entry } = descriptor;\n map.set(descriptor.method, entry);\n },\n entries() {\n return Object.freeze(Object.fromEntries(map));\n },\n };\n}\n"],"mappings":";AAmBA,SAAgB,+BAAuD;CACrE,MAAM,sBAAM,IAAI,KAAkC;AAElD,QAAO;EACL,SAAS,YAAY;AACnB,OAAI,IAAI,IAAI,WAAW,OAAO,CAC5B,OAAM,IAAI,MAAM,oBAAoB,WAAW,OAAO,yBAAyB;GAEjF,MAAM,EAAE,QAAQ,GAAG,GAAG,UAAU;AAChC,OAAI,IAAI,WAAW,QAAQ,MAAM;;EAEnC,UAAU;AACR,UAAO,OAAO,OAAO,OAAO,YAAY,IAAI,CAAC;;EAEhD"}
@@ -0,0 +1,5 @@
1
+ import "../query-lane-context-BTtg0xm8.mjs";
2
+ import "../plan-BrZtMUA9.mjs";
3
+ import "../types-CMyotK6U.mjs";
4
+ import { i as schema, n as SchemaHandle, r as TableBuilderImpl, t as ColumnBuilderImpl } from "../schema-j3Srik3R.mjs";
5
+ export { ColumnBuilderImpl as Column, ColumnBuilderImpl, SchemaHandle, TableBuilderImpl as Table, TableBuilderImpl, schema };
@@ -0,0 +1,4 @@
1
+ import "../operations-registry-D8INFH9J.mjs";
2
+ import { n as TableBuilderImpl, r as schema, t as ColumnBuilderImpl } from "../schema-XcyJSq4j.mjs";
3
+
4
+ export { ColumnBuilderImpl, TableBuilderImpl, schema };
@@ -0,0 +1,4 @@
1
+ import "../query-lane-context-BTtg0xm8.mjs";
2
+ import "../plan-BrZtMUA9.mjs";
3
+ import { A as OperationTypes, B as SqlBuilderOptions, C as Meta, D as NullCheckBuilder, E as NestedProjection, F as RawFunctionOptions, G as TablesOf, H as TableDef, I as RawTemplateFactory, J as createOrderBuilder, K as UnaryBuilder, L as RawTemplateOptions, M as OrderBuilder, N as ParamPlaceholder, O as NullableMethods, P as RawFactory, R as ResultType, S as META, T as ModelMetadata, U as TableKey, V as SqlPlan, W as TableMetadata, Y as isColumnBuilder, _ as InferNestedProjectionRow, a as AnyOrderBuilder, b as JoinOnBuilder, c as BuildOptions, d as ColumnBuilder, f as ColumnsOf, g as HasIncludeManyCapabilities, h as ExpressionBuilder, i as AnyExpressionSource, j as OperationsForTypeId, k as OperationTypeSignature, l as BuildParamsMap, m as Expr, n as AnyColumnBuilder, o as AnyUnaryBuilder, p as ComputeColumnJsType, q as ValueSource, r as AnyColumnBuilderBase, s as BinaryBuilder, t as AnyBinaryBuilder, u as CodecTypes, v as InferProjectionRow, w as ModelDef, x as JoinOnPredicate, y as InferReturningRow, z as RuntimeError } from "../types-CMyotK6U.mjs";
4
+ export { AnyBinaryBuilder, AnyColumnBuilder, AnyColumnBuilderBase, AnyExpressionSource, AnyOrderBuilder, AnyUnaryBuilder, BinaryBuilder, BuildOptions, BuildParamsMap, CodecTypes, ColumnBuilder, ColumnsOf, ComputeColumnJsType, Expr, ExpressionBuilder, HasIncludeManyCapabilities, InferNestedProjectionRow, InferProjectionRow, InferReturningRow, JoinOnBuilder, JoinOnPredicate, META, Meta, ModelDef, ModelMetadata, NestedProjection, NullCheckBuilder, NullableMethods, OperationTypeSignature, OperationTypes, OperationsForTypeId, OrderBuilder, ParamPlaceholder, RawFactory, RawFunctionOptions, RawTemplateFactory, RawTemplateOptions, ResultType, RuntimeError, SqlBuilderOptions, SqlPlan, TableDef, TableKey, TableMetadata, TablesOf, UnaryBuilder, ValueSource, createOrderBuilder, isColumnBuilder };
@@ -0,0 +1,3 @@
1
+ import { n as isColumnBuilder, t as createOrderBuilder } from "../types-BZKzxgOb.mjs";
2
+
3
+ export { createOrderBuilder, isColumnBuilder };
@@ -0,0 +1,5 @@
1
+ import "../../query-lane-context-BTtg0xm8.mjs";
2
+ import "../../plan-BrZtMUA9.mjs";
3
+ import "../../types-CMyotK6U.mjs";
4
+ import { a as isExpressionSource, i as isExpressionBuilder, n as getColumnMeta, o as isParamPlaceholder, r as isColumnBuilder, s as isValueSource, t as getColumnInfo } from "../../guards-DC2Ll67p.mjs";
5
+ export { getColumnInfo, getColumnMeta, isColumnBuilder, isExpressionBuilder, isExpressionSource, isParamPlaceholder, isValueSource };
@@ -0,0 +1,3 @@
1
+ import { a as isExpressionSource, i as isExpressionBuilder, n as getColumnMeta, o as isParamPlaceholder, r as isColumnBuilder, s as isValueSource, t as getColumnInfo } from "../../guards-D1ax7TKN.mjs";
2
+
3
+ export { getColumnInfo, getColumnMeta, isColumnBuilder, isExpressionBuilder, isExpressionSource, isParamPlaceholder, isValueSource };
@@ -0,0 +1,57 @@
1
+ //#region src/utils/guards.ts
2
+ function getColumnMeta(expr) {
3
+ if ("columnMeta" in expr) return expr.columnMeta;
4
+ }
5
+ function isParamPlaceholder(value) {
6
+ return typeof value === "object" && value !== null && "kind" in value && value.kind === "param-placeholder" && "name" in value && typeof value.name === "string";
7
+ }
8
+ function getColumnInfo(expr) {
9
+ if (expr.kind === "operation") {
10
+ const baseCol = expr.baseColumnRef();
11
+ return {
12
+ table: baseCol.table,
13
+ column: baseCol.column
14
+ };
15
+ }
16
+ if (isExpressionBuilder(expr)) {
17
+ const baseCol = expr.expr.baseColumnRef();
18
+ return {
19
+ table: baseCol.table,
20
+ column: baseCol.column
21
+ };
22
+ }
23
+ const colBuilder = expr;
24
+ return {
25
+ table: colBuilder.table,
26
+ column: colBuilder.column
27
+ };
28
+ }
29
+ /**
30
+ * Type predicate to check if a value is a ColumnBuilder.
31
+ */
32
+ function isColumnBuilder(value) {
33
+ return typeof value === "object" && value !== null && "kind" in value && value.kind === "column";
34
+ }
35
+ /**
36
+ * Type predicate to check if a value is an ExpressionBuilder.
37
+ */
38
+ function isExpressionBuilder(value) {
39
+ return typeof value === "object" && value !== null && "kind" in value && value.kind === "expression";
40
+ }
41
+ /**
42
+ * Type predicate to check if a value is an ExpressionSource (has toExpr method).
43
+ */
44
+ function isExpressionSource(value) {
45
+ return typeof value === "object" && value !== null && "toExpr" in value && typeof value.toExpr === "function";
46
+ }
47
+ /**
48
+ * Type predicate to check if a value is a ValueSource.
49
+ * ValueSource is either a ParamPlaceholder or an ExpressionSource.
50
+ */
51
+ function isValueSource(value) {
52
+ return isParamPlaceholder(value) || isExpressionSource(value);
53
+ }
54
+
55
+ //#endregion
56
+ export { isExpressionSource as a, isExpressionBuilder as i, getColumnMeta as n, isParamPlaceholder as o, isColumnBuilder as r, isValueSource as s, getColumnInfo as t };
57
+ //# sourceMappingURL=guards-D1ax7TKN.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guards-D1ax7TKN.mjs","names":[],"sources":["../src/utils/guards.ts"],"sourcesContent":["import type { StorageColumn } from '@prisma-next/sql-contract/types';\nimport type { ExpressionSource, OperationExpr } from '../ast/types';\nimport type {\n AnyColumnBuilder,\n AnyExpressionSource,\n ExpressionBuilder,\n ParamPlaceholder,\n ValueSource,\n} from '../types';\n\nexport function getColumnMeta(expr: AnyExpressionSource): StorageColumn | undefined {\n if ('columnMeta' in expr) {\n return expr.columnMeta;\n }\n return undefined;\n}\n\nexport function isParamPlaceholder(value: unknown): value is ParamPlaceholder {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'kind' in value &&\n (value as { kind: unknown }).kind === 'param-placeholder' &&\n 'name' in value &&\n typeof (value as { name: unknown }).name === 'string'\n );\n}\n\nexport function getColumnInfo(expr: AnyExpressionSource | OperationExpr): {\n table: string;\n column: string;\n} {\n if (expr.kind === 'operation') {\n const baseCol = expr.baseColumnRef();\n return { table: baseCol.table, column: baseCol.column };\n }\n if (isExpressionBuilder(expr)) {\n const baseCol = expr.expr.baseColumnRef();\n return { table: baseCol.table, column: baseCol.column };\n }\n const colBuilder = expr as unknown as { table: string; column: string };\n return { table: colBuilder.table, column: colBuilder.column };\n}\n\n/**\n * Type predicate to check if a value is a ColumnBuilder.\n */\nexport function isColumnBuilder(value: unknown): value is AnyColumnBuilder {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'kind' in value &&\n (value as { kind: unknown }).kind === 'column'\n );\n}\n\n/**\n * Type predicate to check if a value is an ExpressionBuilder.\n */\nexport function isExpressionBuilder(value: unknown): value is ExpressionBuilder {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'kind' in value &&\n (value as { kind: unknown }).kind === 'expression'\n );\n}\n\n/**\n * Type predicate to check if a value is an ExpressionSource (has toExpr method).\n */\nexport function isExpressionSource(value: unknown): value is ExpressionSource {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'toExpr' in value &&\n typeof (value as ExpressionSource).toExpr === 'function'\n );\n}\n\n/**\n * Type predicate to check if a value is a ValueSource.\n * ValueSource is either a ParamPlaceholder or an ExpressionSource.\n */\nexport function isValueSource(value: unknown): value is ValueSource {\n return isParamPlaceholder(value) || isExpressionSource(value);\n}\n"],"mappings":";AAUA,SAAgB,cAAc,MAAsD;AAClF,KAAI,gBAAgB,KAClB,QAAO,KAAK;;AAKhB,SAAgB,mBAAmB,OAA2C;AAC5E,QACE,OAAO,UAAU,YACjB,UAAU,QACV,UAAU,SACT,MAA4B,SAAS,uBACtC,UAAU,SACV,OAAQ,MAA4B,SAAS;;AAIjD,SAAgB,cAAc,MAG5B;AACA,KAAI,KAAK,SAAS,aAAa;EAC7B,MAAM,UAAU,KAAK,eAAe;AACpC,SAAO;GAAE,OAAO,QAAQ;GAAO,QAAQ,QAAQ;GAAQ;;AAEzD,KAAI,oBAAoB,KAAK,EAAE;EAC7B,MAAM,UAAU,KAAK,KAAK,eAAe;AACzC,SAAO;GAAE,OAAO,QAAQ;GAAO,QAAQ,QAAQ;GAAQ;;CAEzD,MAAM,aAAa;AACnB,QAAO;EAAE,OAAO,WAAW;EAAO,QAAQ,WAAW;EAAQ;;;;;AAM/D,SAAgB,gBAAgB,OAA2C;AACzE,QACE,OAAO,UAAU,YACjB,UAAU,QACV,UAAU,SACT,MAA4B,SAAS;;;;;AAO1C,SAAgB,oBAAoB,OAA4C;AAC9E,QACE,OAAO,UAAU,YACjB,UAAU,QACV,UAAU,SACT,MAA4B,SAAS;;;;;AAO1C,SAAgB,mBAAmB,OAA2C;AAC5E,QACE,OAAO,UAAU,YACjB,UAAU,QACV,YAAY,SACZ,OAAQ,MAA2B,WAAW;;;;;;AAQlD,SAAgB,cAAc,OAAsC;AAClE,QAAO,mBAAmB,MAAM,IAAI,mBAAmB,MAAM"}
@@ -0,0 +1,31 @@
1
+ import { W as OperationExpr, k as ExpressionSource } from "./plan-BrZtMUA9.mjs";
2
+ import { N as ParamPlaceholder, h as ExpressionBuilder, i as AnyExpressionSource, n as AnyColumnBuilder, q as ValueSource } from "./types-CMyotK6U.mjs";
3
+ import { StorageColumn } from "@prisma-next/sql-contract/types";
4
+
5
+ //#region src/utils/guards.d.ts
6
+ declare function getColumnMeta(expr: AnyExpressionSource): StorageColumn | undefined;
7
+ declare function isParamPlaceholder(value: unknown): value is ParamPlaceholder;
8
+ declare function getColumnInfo(expr: AnyExpressionSource | OperationExpr): {
9
+ table: string;
10
+ column: string;
11
+ };
12
+ /**
13
+ * Type predicate to check if a value is a ColumnBuilder.
14
+ */
15
+ declare function isColumnBuilder(value: unknown): value is AnyColumnBuilder;
16
+ /**
17
+ * Type predicate to check if a value is an ExpressionBuilder.
18
+ */
19
+ declare function isExpressionBuilder(value: unknown): value is ExpressionBuilder;
20
+ /**
21
+ * Type predicate to check if a value is an ExpressionSource (has toExpr method).
22
+ */
23
+ declare function isExpressionSource(value: unknown): value is ExpressionSource;
24
+ /**
25
+ * Type predicate to check if a value is a ValueSource.
26
+ * ValueSource is either a ParamPlaceholder or an ExpressionSource.
27
+ */
28
+ declare function isValueSource(value: unknown): value is ValueSource;
29
+ //#endregion
30
+ export { isExpressionSource as a, isExpressionBuilder as i, getColumnMeta as n, isParamPlaceholder as o, isColumnBuilder as r, isValueSource as s, getColumnInfo as t };
31
+ //# sourceMappingURL=guards-DC2Ll67p.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guards-DC2Ll67p.d.mts","names":[],"sources":["../src/utils/guards.ts"],"sourcesContent":[],"mappings":";;;;;iBAUgB,aAAA,OAAoB,sBAAsB;iBAO1C,kBAAA,2BAA6C;AAP7C,iBAkBA,aAAA,CAlBoB,IAAA,EAkBA,mBAlBsB,GAkBA,aAlBa,CAAA,EAAA;EAOvD,KAAA,EAAA,MAAA;EAWA,MAAA,EAAA,MAAA;AAmBhB,CAAA;AAYA;AAYA;AAaA;iBArCgB,eAAA,2BAA0C;;;;iBAY1C,mBAAA,2BAA8C;;;;iBAY9C,kBAAA,2BAA6C;;;;;iBAa7C,aAAA,2BAAwC"}
@@ -0,0 +1,12 @@
1
+ import { C as createCodecRegistry, S as codec, _ as CodecRegistry, a as JsonSchemaValidationResult, b as ExtractCodecTypes, c as MutationDefaultsOptions, d as CodecDefBuilder, f as CodecId, g as CodecParamsDescriptor, h as CodecOutput, i as JsonSchemaValidationError, l as TypeHelperRegistry, m as CodecMeta, n as ExecutionContext, o as JsonSchemaValidatorRegistry, p as CodecInput, r as JsonSchemaValidateFn, s as MutationDefaultsOp, t as AppliedMutationDefault, u as Codec, v as CodecTrait, w as defineCodecs, x as ExtractDataTypes, y as CodecTraits } from "./query-lane-context-BTtg0xm8.mjs";
2
+ import { $ as TableRef, A as IdentifierRef, B as LiteralExpr, C as DoUpdateSetConflictAction, D as ExpressionFolder, E as ExprVisitor, F as JoinOnExpr, G as OrExpr, H as NotExpr, I as JsonArrayAggExpr, J as ProjectionExpr, K as OrderByItem, L as JsonObjectEntry, M as InsertOnConflict, N as InsertValue, O as ExpressionRewriter, P as JoinAst, Q as SubqueryExpr, R as JsonObjectExpr, S as DoNothingConflictAction, T as ExistsExpr, U as NullCheckExpr, V as LoweredStatement, W as OperationExpr, X as SelectAst, Y as ProjectionItem, Z as SelectAstOptions, _ as ColumnRef, a as AggregateFn, at as isWhereExpr, b as DerivedTableSource, c as AnyExpression, d as AnyInsertValue, et as TableSource, f as AnyOperationArg, g as BinaryOp, h as BinaryExpr, i as AggregateExpr, it as isQueryAst, j as InsertAst, k as ExpressionSource, l as AnyFromSource, m as AstRewriter, n as augmentDescriptorWithColumnMeta, nt as UpdateAst, o as AggregateOpFn, ot as queryAstKinds, p as AnyQueryAst, q as ParamRef, r as AggregateCountFn, rt as WhereArg, s as AndExpr, st as whereExprKinds, t as SqlQueryPlan, tt as ToWhereExpr, u as AnyInsertOnConflictAction, v as DefaultValueExpr, w as EqColJoinOn, x as Direction, y as DeleteAst, z as ListExpression } from "./plan-BrZtMUA9.mjs";
3
+ import { A as OperationTypes, B as SqlBuilderOptions, C as Meta, D as NullCheckBuilder, E as NestedProjection, F as RawFunctionOptions, G as TablesOf, H as TableDef, I as RawTemplateFactory, J as createOrderBuilder, K as UnaryBuilder, L as RawTemplateOptions, M as OrderBuilder, N as ParamPlaceholder, O as NullableMethods, P as RawFactory, R as ResultType, S as META, T as ModelMetadata, U as TableKey, V as SqlPlan, W as TableMetadata, Y as isColumnBuilder, _ as InferNestedProjectionRow, a as AnyOrderBuilder, b as JoinOnBuilder, c as BuildOptions, d as ColumnBuilder, f as ColumnsOf, g as HasIncludeManyCapabilities, h as ExpressionBuilder, i as AnyExpressionSource, j as OperationsForTypeId, k as OperationTypeSignature, l as BuildParamsMap, m as Expr, n as AnyColumnBuilder, o as AnyUnaryBuilder, p as ComputeColumnJsType, q as ValueSource, r as AnyColumnBuilderBase, s as BinaryBuilder, t as AnyBinaryBuilder, u as CodecTypes, v as InferProjectionRow, w as ModelDef, x as JoinOnPredicate, y as InferReturningRow, z as RuntimeError } from "./types-CMyotK6U.mjs";
4
+ import { Adapter, AdapterProfile, AdapterTarget, LoweredPayload, Lowerer, LowererContext, SQL_CHAR_CODEC_ID, SQL_FLOAT_CODEC_ID, SQL_INT_CODEC_ID, SQL_VARCHAR_CODEC_ID, SqlCodecTypes, SqlConnection, SqlDriver, SqlDriverState, SqlExecuteRequest, SqlExplainResult, SqlQueryResult, SqlQueryable, SqlTransaction, compact, createJoinOnBuilder, sqlCodecDefinitions, sqlDataTypes } from "./exports/ast.mjs";
5
+ import { n as planUnsupported, t as planInvalid } from "./errors-BNiBIGfC.mjs";
6
+ import { t as attachOperationsToColumnBuilder } from "./operations-registry-CBmGut8O.mjs";
7
+ import { n as param, t as Parameter } from "./param-Cmdv_exJ.mjs";
8
+ import "./exports/plan.mjs";
9
+ import "./exports/query-lane-context.mjs";
10
+ import { i as schema, n as SchemaHandle, r as TableBuilderImpl, t as ColumnBuilderImpl } from "./schema-j3Srik3R.mjs";
11
+ import "./exports/types.mjs";
12
+ export { Adapter, AdapterProfile, AdapterTarget, AggregateCountFn, AggregateExpr, AggregateFn, AggregateOpFn, AndExpr, AnyBinaryBuilder, AnyColumnBuilder, AnyColumnBuilderBase, AnyExpression, AnyExpressionSource, AnyFromSource, AnyInsertOnConflictAction, AnyInsertValue, AnyOperationArg, AnyOrderBuilder, AnyQueryAst, AnyUnaryBuilder, AppliedMutationDefault, AstRewriter, BinaryBuilder, BinaryExpr, BinaryOp, BuildOptions, BuildParamsMap, Codec, CodecDefBuilder, CodecId, CodecInput, CodecMeta, CodecOutput, CodecParamsDescriptor, CodecRegistry, CodecTrait, CodecTraits, CodecTypes, ColumnBuilderImpl as Column, ColumnBuilderImpl, ColumnBuilder, ColumnRef, ColumnsOf, ComputeColumnJsType, DefaultValueExpr, DeleteAst, DerivedTableSource, Direction, DoNothingConflictAction, DoUpdateSetConflictAction, EqColJoinOn, ExecutionContext, ExistsExpr, Expr, ExprVisitor, ExpressionBuilder, ExpressionFolder, ExpressionRewriter, ExpressionSource, ExtractCodecTypes, ExtractDataTypes, HasIncludeManyCapabilities, IdentifierRef, InferNestedProjectionRow, InferProjectionRow, InferReturningRow, InsertAst, InsertOnConflict, InsertValue, JoinAst, JoinOnBuilder, JoinOnExpr, JoinOnPredicate, JsonArrayAggExpr, JsonObjectEntry, JsonObjectExpr, JsonSchemaValidateFn, JsonSchemaValidationError, JsonSchemaValidationResult, JsonSchemaValidatorRegistry, ListExpression, LiteralExpr, LoweredPayload, LoweredStatement, Lowerer, LowererContext, META, Meta, ModelDef, ModelMetadata, MutationDefaultsOp, MutationDefaultsOptions, NestedProjection, NotExpr, NullCheckBuilder, NullCheckExpr, NullableMethods, OperationExpr, OperationTypeSignature, OperationTypes, OperationsForTypeId, OrExpr, OrderBuilder, OrderByItem, ParamPlaceholder, ParamRef, Parameter, ProjectionExpr, ProjectionItem, RawFactory, RawFunctionOptions, RawTemplateFactory, RawTemplateOptions, ResultType, RuntimeError, SQL_CHAR_CODEC_ID, SQL_FLOAT_CODEC_ID, SQL_INT_CODEC_ID, SQL_VARCHAR_CODEC_ID, SchemaHandle, SelectAst, SelectAstOptions, SqlBuilderOptions, SqlCodecTypes, SqlConnection, SqlDriver, SqlDriverState, SqlExecuteRequest, SqlExplainResult, SqlPlan, SqlQueryPlan, SqlQueryResult, SqlQueryable, SqlTransaction, SubqueryExpr, TableBuilderImpl as Table, TableBuilderImpl, TableDef, TableKey, TableMetadata, TableRef, TableSource, TablesOf, ToWhereExpr, TypeHelperRegistry, UnaryBuilder, UpdateAst, ValueSource, WhereArg, attachOperationsToColumnBuilder, augmentDescriptorWithColumnMeta, codec, compact, createCodecRegistry, createJoinOnBuilder, createOrderBuilder, defineCodecs, isColumnBuilder, isQueryAst, isWhereExpr, param, planInvalid, planUnsupported, queryAstKinds, schema, sqlCodecDefinitions, sqlDataTypes, whereExprKinds };
package/dist/index.mjs ADDED
@@ -0,0 +1,13 @@
1
+ import { n as isColumnBuilder, t as createOrderBuilder } from "./types-BZKzxgOb.mjs";
2
+ import { A as UpdateAst, C as OrExpr, D as SelectAst, E as ProjectionItem, M as isWhereExpr, N as queryAstKinds, O as SubqueryExpr, P 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 isQueryAst, k as TableSource, 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-I6Hsg-GU.mjs";
3
+ import { SQL_CHAR_CODEC_ID, SQL_FLOAT_CODEC_ID, SQL_INT_CODEC_ID, SQL_VARCHAR_CODEC_ID, codec, compact, createCodecRegistry, createJoinOnBuilder, defineCodecs, sqlCodecDefinitions, sqlDataTypes } from "./exports/ast.mjs";
4
+ import { n as planUnsupported, t as planInvalid } from "./errors-DXSQwbhk.mjs";
5
+ import { t as attachOperationsToColumnBuilder } from "./operations-registry-D8INFH9J.mjs";
6
+ import "./exports/operations-registry.mjs";
7
+ import { t as param } from "./param-CFyhvphn.mjs";
8
+ import { augmentDescriptorWithColumnMeta } from "./exports/plan.mjs";
9
+ import "./exports/query-lane-context.mjs";
10
+ import { n as TableBuilderImpl, r as schema, t as ColumnBuilderImpl } from "./schema-XcyJSq4j.mjs";
11
+ import "./exports/types.mjs";
12
+
13
+ export { AggregateExpr, AndExpr, BinaryExpr, ColumnBuilderImpl, ColumnRef, DefaultValueExpr, DeleteAst, DerivedTableSource, DoNothingConflictAction, DoUpdateSetConflictAction, EqColJoinOn, ExistsExpr, IdentifierRef, InsertAst, InsertOnConflict, JoinAst, JsonArrayAggExpr, JsonObjectExpr, ListExpression, LiteralExpr, NotExpr, NullCheckExpr, OperationExpr, OrExpr, OrderByItem, ParamRef, ProjectionItem, SQL_CHAR_CODEC_ID, SQL_FLOAT_CODEC_ID, SQL_INT_CODEC_ID, SQL_VARCHAR_CODEC_ID, SelectAst, SubqueryExpr, TableBuilderImpl, TableSource, UpdateAst, attachOperationsToColumnBuilder, augmentDescriptorWithColumnMeta, codec, compact, createCodecRegistry, createJoinOnBuilder, createOrderBuilder, defineCodecs, isColumnBuilder, isQueryAst, isWhereExpr, param, planInvalid, planUnsupported, queryAstKinds, schema, sqlCodecDefinitions, sqlDataTypes, whereExprKinds };
@@ -0,0 +1,9 @@
1
+ import { A as OperationTypes, d as ColumnBuilder } from "./types-CMyotK6U.mjs";
2
+ import { OperationRegistry } from "@prisma-next/operations";
3
+ import { StorageColumn } from "@prisma-next/sql-contract/types";
4
+
5
+ //#region src/operations-registry.d.ts
6
+ declare function attachOperationsToColumnBuilder<ColumnName extends string, ColumnMeta extends StorageColumn, JsType = unknown, Operations extends OperationTypes = Record<string, never>>(columnBuilder: ColumnBuilder<ColumnName, ColumnMeta, JsType, Record<string, never>>, columnMeta: ColumnMeta, registry: OperationRegistry | undefined, contractCapabilities?: Record<string, Record<string, boolean>>): ColumnBuilder<ColumnName, ColumnMeta, JsType, Operations>;
7
+ //#endregion
8
+ export { attachOperationsToColumnBuilder as t };
9
+ //# sourceMappingURL=operations-registry-CBmGut8O.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operations-registry-CBmGut8O.d.mts","names":[],"sources":["../src/operations-registry.ts"],"sourcesContent":[],"mappings":";;;;;iBAgNgB,8EAEK,oDAEA,iBAAiB,sCAErB,cAAc,YAAY,YAAY,QAAQ,oCACjD,sBACF,sDACa,eAAe,2BACrC,cAAc,YAAY,YAAY,QAAQ"}
@@ -0,0 +1,145 @@
1
+ import { S as OperationExpr, T as ParamRef, y as LiteralExpr } from "./types-I6Hsg-GU.mjs";
2
+ import { planInvalid } from "@prisma-next/plan";
3
+ import { hasAllCapabilities } from "@prisma-next/operations";
4
+
5
+ //#region src/operations-registry.ts
6
+ /**
7
+ * Type guard to check if a value is an ExpressionSource (has toExpr method).
8
+ */
9
+ function isExpressionSource(value) {
10
+ return typeof value === "object" && value !== null && "toExpr" in value && typeof value.toExpr === "function";
11
+ }
12
+ /**
13
+ * Executes an operation and returns an ExpressionBuilder.
14
+ * This is the canonical entrypoint for operation invocation, enabling
15
+ * future enhancements like telemetry, caching, or tracing.
16
+ *
17
+ * The returned ExpressionBuilder:
18
+ * - Has `kind: 'expression'` to distinguish it from ColumnBuilder
19
+ * - Contains the operation expression in `expr`
20
+ * - Provides `toExpr()` method to get the Expression
21
+ * - Provides comparison and ordering methods for chaining
22
+ *
23
+ * @param signature - The operation signature from the registry
24
+ * @param selfBuilder - The expression source that the operation is called on
25
+ * @param args - The arguments passed to the operation
26
+ * @param columnMeta - The metadata of the column the operation is called on
27
+ * @returns An ExpressionBuilder containing the operation expression
28
+ */
29
+ function executeOperation(signature, selfBuilder, args, columnMeta, operationRegistry, contractCapabilities) {
30
+ if (args.length !== signature.args.length) throw planInvalid(`Operation ${signature.method} expects ${signature.args.length} arguments, got ${args.length}`);
31
+ const selfExpr = selfBuilder.toExpr();
32
+ const operationArgs = [];
33
+ for (let i = 0; i < args.length; i++) {
34
+ const arg = args[i];
35
+ const argSpec = signature.args[i];
36
+ if (!argSpec) throw planInvalid(`Missing argument spec for argument ${i}`);
37
+ if (argSpec.kind === "param") operationArgs.push(ParamRef.of(arg, {
38
+ name: `arg_${i}`,
39
+ codecId: columnMeta.codecId
40
+ }));
41
+ else if (argSpec.kind === "typeId") {
42
+ if (!isExpressionSource(arg)) throw planInvalid(`Argument ${i} must be an ExpressionSource (ColumnBuilder or ExpressionBuilder)`);
43
+ operationArgs.push(arg.toExpr());
44
+ } else if (argSpec.kind === "literal") operationArgs.push(new LiteralExpr(arg));
45
+ }
46
+ const operationExpr = new OperationExpr({
47
+ method: signature.method,
48
+ forTypeId: signature.forTypeId,
49
+ self: selfExpr,
50
+ args: operationArgs,
51
+ returns: signature.returns,
52
+ lowering: signature.lowering
53
+ });
54
+ const returnTypeId = signature.returns.kind === "typeId" ? signature.returns.type : void 0;
55
+ const returnColumnMeta = returnTypeId ? {
56
+ ...columnMeta,
57
+ codecId: returnTypeId
58
+ } : columnMeta;
59
+ const createComparisonMethod = (op) => (value) => Object.freeze({
60
+ kind: "binary",
61
+ op,
62
+ left: operationExpr,
63
+ right: value
64
+ });
65
+ const baseResult = {
66
+ kind: "expression",
67
+ expr: operationExpr,
68
+ get columnMeta() {
69
+ return returnColumnMeta;
70
+ },
71
+ eq: createComparisonMethod("eq"),
72
+ neq: createComparisonMethod("neq"),
73
+ gt: createComparisonMethod("gt"),
74
+ lt: createComparisonMethod("lt"),
75
+ gte: createComparisonMethod("gte"),
76
+ lte: createComparisonMethod("lte"),
77
+ asc() {
78
+ return Object.freeze({
79
+ kind: "order",
80
+ expr: operationExpr,
81
+ dir: "asc"
82
+ });
83
+ },
84
+ desc() {
85
+ return Object.freeze({
86
+ kind: "order",
87
+ expr: operationExpr,
88
+ dir: "desc"
89
+ });
90
+ },
91
+ toExpr() {
92
+ return operationExpr;
93
+ },
94
+ get __jsType() {}
95
+ };
96
+ if (returnTypeId && operationRegistry) {
97
+ const resultWithOps = attachOperationsToExpressionBuilder(baseResult, returnColumnMeta, operationRegistry, contractCapabilities);
98
+ return Object.freeze(resultWithOps);
99
+ }
100
+ return Object.freeze(baseResult);
101
+ }
102
+ /**
103
+ * Attaches operation methods to an ExpressionBuilder for chained operations.
104
+ * When an operation returns a typeId, the result ExpressionBuilder needs
105
+ * operation methods for that type.
106
+ */
107
+ function attachOperationsToExpressionBuilder(expressionBuilder, columnMeta, registry, contractCapabilities) {
108
+ const codecId = columnMeta.codecId;
109
+ if (!codecId) return expressionBuilder;
110
+ const operations = registry.byType(codecId);
111
+ if (operations.length === 0) return expressionBuilder;
112
+ const builderWithOps = expressionBuilder;
113
+ for (const operation of operations) {
114
+ if (operation.capabilities && operation.capabilities.length > 0) {
115
+ if (!contractCapabilities) continue;
116
+ if (!hasAllCapabilities(operation.capabilities, contractCapabilities)) continue;
117
+ }
118
+ builderWithOps[operation.method] = function(...args) {
119
+ return executeOperation(operation, this, args, columnMeta, registry, contractCapabilities);
120
+ };
121
+ }
122
+ return builderWithOps;
123
+ }
124
+ function attachOperationsToColumnBuilder(columnBuilder, columnMeta, registry, contractCapabilities) {
125
+ if (!registry) return columnBuilder;
126
+ const codecId = columnMeta.codecId;
127
+ if (!codecId) return columnBuilder;
128
+ const operations = registry.byType(codecId);
129
+ if (operations.length === 0) return columnBuilder;
130
+ const builderWithOps = columnBuilder;
131
+ for (const operation of operations) {
132
+ if (operation.capabilities && operation.capabilities.length > 0) {
133
+ if (!contractCapabilities) continue;
134
+ if (!hasAllCapabilities(operation.capabilities, contractCapabilities)) continue;
135
+ }
136
+ builderWithOps[operation.method] = function(...args) {
137
+ return executeOperation(operation, this, args, columnMeta, registry, contractCapabilities);
138
+ };
139
+ }
140
+ return builderWithOps;
141
+ }
142
+
143
+ //#endregion
144
+ export { attachOperationsToColumnBuilder as t };
145
+ //# sourceMappingURL=operations-registry-D8INFH9J.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operations-registry-D8INFH9J.mjs","names":["operationArgs: AnyOperationArg[]","returnColumnMeta: StorageColumn","baseResult: ExpressionBuilder"],"sources":["../src/operations-registry.ts"],"sourcesContent":["import type { OperationRegistry } from '@prisma-next/operations';\nimport { hasAllCapabilities } from '@prisma-next/operations';\nimport { planInvalid } from '@prisma-next/plan';\nimport type { StorageColumn } from '@prisma-next/sql-contract/types';\nimport type { SqlOperationSignature } from '@prisma-next/sql-operations';\nimport {\n type AnyOperationArg,\n type BinaryOp,\n type ExpressionSource,\n LiteralExpr,\n OperationExpr,\n ParamRef,\n} from './ast/types';\nimport type {\n AnyBinaryBuilder,\n AnyOrderBuilder,\n ColumnBuilder,\n ExpressionBuilder,\n OperationTypes,\n ValueSource,\n} from './types';\n\n/**\n * Type guard to check if a value is an ExpressionSource (has toExpr method).\n */\nfunction isExpressionSource(value: unknown): value is ExpressionSource {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'toExpr' in value &&\n typeof (value as ExpressionSource).toExpr === 'function'\n );\n}\n\n/**\n * Executes an operation and returns an ExpressionBuilder.\n * This is the canonical entrypoint for operation invocation, enabling\n * future enhancements like telemetry, caching, or tracing.\n *\n * The returned ExpressionBuilder:\n * - Has `kind: 'expression'` to distinguish it from ColumnBuilder\n * - Contains the operation expression in `expr`\n * - Provides `toExpr()` method to get the Expression\n * - Provides comparison and ordering methods for chaining\n *\n * @param signature - The operation signature from the registry\n * @param selfBuilder - The expression source that the operation is called on\n * @param args - The arguments passed to the operation\n * @param columnMeta - The metadata of the column the operation is called on\n * @returns An ExpressionBuilder containing the operation expression\n */\nfunction executeOperation(\n signature: SqlOperationSignature,\n selfBuilder: ExpressionSource,\n args: unknown[],\n columnMeta: StorageColumn,\n operationRegistry?: OperationRegistry,\n contractCapabilities?: Record<string, Record<string, boolean>>,\n): ExpressionBuilder {\n if (args.length !== signature.args.length) {\n throw planInvalid(\n `Operation ${signature.method} expects ${signature.args.length} arguments, got ${args.length}`,\n );\n }\n\n const selfExpr = selfBuilder.toExpr();\n\n const operationArgs: AnyOperationArg[] = [];\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n const argSpec = signature.args[i];\n if (!argSpec) {\n throw planInvalid(`Missing argument spec for argument ${i}`);\n }\n\n if (argSpec.kind === 'param') {\n operationArgs.push(ParamRef.of(arg, { name: `arg_${i}`, codecId: columnMeta.codecId }));\n } else if (argSpec.kind === 'typeId') {\n // Accept ExpressionSource (ColumnBuilder or ExpressionBuilder)\n if (!isExpressionSource(arg)) {\n throw planInvalid(\n `Argument ${i} must be an ExpressionSource (ColumnBuilder or ExpressionBuilder)`,\n );\n }\n // Use toExpr() to get the Expression\n operationArgs.push(arg.toExpr());\n } else if (argSpec.kind === 'literal') {\n operationArgs.push(new LiteralExpr(arg));\n }\n }\n\n const operationExpr = new OperationExpr({\n method: signature.method,\n forTypeId: signature.forTypeId,\n self: selfExpr,\n args: operationArgs,\n returns: signature.returns,\n lowering: signature.lowering,\n });\n\n const returnTypeId = signature.returns.kind === 'typeId' ? signature.returns.type : undefined;\n const returnColumnMeta: StorageColumn = returnTypeId\n ? {\n ...columnMeta,\n codecId: returnTypeId,\n }\n : columnMeta;\n\n const createComparisonMethod =\n (op: BinaryOp) =>\n (value: ValueSource): AnyBinaryBuilder =>\n Object.freeze({\n kind: 'binary' as const,\n op,\n left: operationExpr,\n right: value,\n }) as AnyBinaryBuilder;\n\n const baseResult: ExpressionBuilder = {\n kind: 'expression' as const,\n expr: operationExpr,\n get columnMeta() {\n return returnColumnMeta;\n },\n eq: createComparisonMethod('eq'),\n neq: createComparisonMethod('neq'),\n gt: createComparisonMethod('gt'),\n lt: createComparisonMethod('lt'),\n gte: createComparisonMethod('gte'),\n lte: createComparisonMethod('lte'),\n asc(): AnyOrderBuilder {\n return Object.freeze({\n kind: 'order' as const,\n expr: operationExpr,\n dir: 'asc' as const,\n });\n },\n desc(): AnyOrderBuilder {\n return Object.freeze({\n kind: 'order' as const,\n expr: operationExpr,\n dir: 'desc' as const,\n });\n },\n toExpr(): OperationExpr {\n return operationExpr;\n },\n get __jsType(): unknown {\n return undefined;\n },\n };\n\n // If the return type is a typeId, attach operations for that type\n if (returnTypeId && operationRegistry) {\n const resultWithOps = attachOperationsToExpressionBuilder(\n baseResult,\n returnColumnMeta,\n operationRegistry,\n contractCapabilities,\n );\n return Object.freeze(resultWithOps);\n }\n\n return Object.freeze(baseResult);\n}\n\n/**\n * Attaches operation methods to an ExpressionBuilder for chained operations.\n * When an operation returns a typeId, the result ExpressionBuilder needs\n * operation methods for that type.\n */\nfunction attachOperationsToExpressionBuilder(\n expressionBuilder: ExpressionBuilder,\n columnMeta: StorageColumn,\n registry: OperationRegistry,\n contractCapabilities?: Record<string, Record<string, boolean>>,\n): ExpressionBuilder {\n const codecId = columnMeta.codecId;\n if (!codecId) {\n return expressionBuilder;\n }\n\n const operations = registry.byType(codecId) as SqlOperationSignature[];\n if (operations.length === 0) {\n return expressionBuilder;\n }\n\n const builderWithOps = expressionBuilder as ExpressionBuilder & Record<string, unknown>;\n\n for (const operation of operations) {\n if (operation.capabilities && operation.capabilities.length > 0) {\n if (!contractCapabilities) {\n continue;\n }\n\n if (!hasAllCapabilities(operation.capabilities, contractCapabilities)) {\n continue;\n }\n }\n // Method sugar: attach operation as a method on the expression builder\n builderWithOps[operation.method] = function (this: ExpressionBuilder, ...args: unknown[]) {\n return executeOperation(operation, this, args, columnMeta, registry, contractCapabilities);\n };\n }\n\n return builderWithOps;\n}\n\nexport function attachOperationsToColumnBuilder<\n ColumnName extends string,\n ColumnMeta extends StorageColumn,\n JsType = unknown,\n Operations extends OperationTypes = Record<string, never>,\n>(\n columnBuilder: ColumnBuilder<ColumnName, ColumnMeta, JsType, Record<string, never>>,\n columnMeta: ColumnMeta,\n registry: OperationRegistry | undefined,\n contractCapabilities?: Record<string, Record<string, boolean>>,\n): ColumnBuilder<ColumnName, ColumnMeta, JsType, Operations> {\n if (!registry) {\n return columnBuilder as ColumnBuilder<ColumnName, ColumnMeta, JsType, Operations>;\n }\n\n // Use codecId to look up operations registered for this column's type\n const codecId = columnMeta.codecId;\n if (!codecId) {\n return columnBuilder as ColumnBuilder<ColumnName, ColumnMeta, JsType, Operations>;\n }\n\n const operations = registry.byType(codecId) as SqlOperationSignature[];\n if (operations.length === 0) {\n return columnBuilder as ColumnBuilder<ColumnName, ColumnMeta, JsType, Operations>;\n }\n\n const builderWithOps = columnBuilder as unknown as ColumnBuilder<\n ColumnName,\n ColumnMeta,\n JsType,\n Operations\n >;\n\n for (const operation of operations) {\n if (operation.capabilities && operation.capabilities.length > 0) {\n if (!contractCapabilities) {\n continue;\n }\n\n if (!hasAllCapabilities(operation.capabilities, contractCapabilities)) {\n continue;\n }\n }\n // Method sugar: attach operation as a method on the column builder\n // Operations return ExpressionBuilder, not ColumnBuilder\n (builderWithOps as Record<string, unknown>)[operation.method] = function (\n this: ColumnBuilder<ColumnName, ColumnMeta, JsType, Record<string, never>>,\n ...args: unknown[]\n ) {\n return executeOperation(operation, this, args, columnMeta, registry, contractCapabilities);\n };\n }\n\n return builderWithOps;\n}\n"],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { planInvalid } from "@prisma-next/plan";
2
+
3
+ //#region src/param.ts
4
+ function param(name) {
5
+ if (typeof name !== "string" || name.length === 0) throw planInvalid("Parameter name must be a non-empty string");
6
+ return Object.freeze({
7
+ kind: "param-placeholder",
8
+ name
9
+ });
10
+ }
11
+
12
+ //#endregion
13
+ export { param as t };
14
+ //# sourceMappingURL=param-CFyhvphn.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"param-CFyhvphn.mjs","names":[],"sources":["../src/param.ts"],"sourcesContent":["import { planInvalid } from '@prisma-next/plan';\nimport type { ParamPlaceholder } from './types';\n\nexport type Parameter = ParamPlaceholder;\n\nexport function param(name: string): Parameter {\n if (typeof name !== 'string' || name.length === 0) {\n throw planInvalid('Parameter name must be a non-empty string');\n }\n\n return Object.freeze({\n kind: 'param-placeholder' as const,\n name,\n }) satisfies Parameter;\n}\n"],"mappings":";;;AAKA,SAAgB,MAAM,MAAyB;AAC7C,KAAI,OAAO,SAAS,YAAY,KAAK,WAAW,EAC9C,OAAM,YAAY,4CAA4C;AAGhE,QAAO,OAAO,OAAO;EACnB,MAAM;EACN;EACD,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { N as ParamPlaceholder } from "./types-CMyotK6U.mjs";
2
+
3
+ //#region src/param.d.ts
4
+ type Parameter = ParamPlaceholder;
5
+ declare function param(name: string): Parameter;
6
+ //#endregion
7
+ export { param as n, Parameter as t };
8
+ //# sourceMappingURL=param-Cmdv_exJ.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"param-Cmdv_exJ.d.mts","names":[],"sources":["../src/param.ts"],"sourcesContent":[],"mappings":";;;KAGY,SAAA,GAAY;iBAER,KAAA,gBAAqB"}