@prisma/orm-family-sql 8.0.0-rc.12-dev.5 → 8.0.0-rc.12-dev.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{aggregate-descriptor-registry-DzThdoju.mjs → aggregate-descriptor-registry-BaMSvS82.mjs} +2 -2
- package/dist/{aggregate-descriptor-registry-DzThdoju.mjs.map → aggregate-descriptor-registry-BaMSvS82.mjs.map} +1 -1
- package/dist/{ast-CEGv-zzk.mjs → ast--wLzFkbt.mjs} +2 -2
- package/dist/{ast-CEGv-zzk.mjs.map → ast--wLzFkbt.mjs.map} +1 -1
- package/dist/builder__runtime.mjs +2 -2
- package/dist/contract-prisma7__provider.mjs +1 -1
- package/dist/contract-psl.d.mts +1 -1
- package/dist/contract-psl.d.mts.map +1 -1
- package/dist/contract-psl.mjs +1 -1
- package/dist/contract-psl__attribute-specs.d.mts +1 -1
- package/dist/contract-psl__attribute-specs.d.mts.map +1 -1
- package/dist/contract-psl__attribute-specs.mjs +1 -1
- package/dist/contract-psl__provider.mjs +1 -1
- package/dist/contract-psl__provider.mjs.map +1 -1
- package/dist/{control-3ACchVAO.mjs → control-BjvN-a2_.mjs} +2 -2
- package/dist/{control-3ACchVAO.mjs.map → control-BjvN-a2_.mjs.map} +1 -1
- package/dist/{expression-DqrE3myO.mjs → expression-CrGD_4do.mjs} +2 -2
- package/dist/{expression-DqrE3myO.mjs.map → expression-CrGD_4do.mjs.map} +1 -1
- package/dist/family.mjs +2 -2
- package/dist/family__control.mjs +1 -1
- package/dist/family__pack.mjs +1 -1
- package/dist/family__psl-infer.mjs +1 -1
- package/dist/{interpreter-Cs1cxg-E-N_DDfih-.mjs → interpreter-CYD009gd-DK-SbljF.mjs} +128 -88
- package/dist/interpreter-CYD009gd-DK-SbljF.mjs.map +1 -0
- package/dist/orm-client.mjs +3 -3
- package/dist/{psl-infer-BiExeEgG.mjs → psl-infer-C06FXwvC.mjs} +2 -2
- package/dist/{psl-infer-BiExeEgG.mjs.map → psl-infer-C06FXwvC.mjs.map} +1 -1
- package/dist/relational-core.mjs +3 -3
- package/dist/relational-core__aggregate-descriptor-registry.mjs +1 -1
- package/dist/relational-core__ast.mjs +2 -2
- package/dist/relational-core__contract-free.mjs +1 -1
- package/dist/relational-core__contract-free.mjs.map +1 -1
- package/dist/relational-core__expression.mjs +1 -1
- package/dist/runtime.mjs +2 -2
- package/dist/{sql-attribute-specs-BjCzXYcO-Cj8SS3iE.mjs → sql-attribute-specs-DH3Yxb21-CZV-L28L.mjs} +49 -7
- package/dist/sql-attribute-specs-DH3Yxb21-CZV-L28L.mjs.map +1 -0
- package/dist/{types-ZNKYVjLr-DzjvSHKB.mjs → types-BAhLyUFj-3TARSz8c.mjs} +7 -2
- package/dist/types-BAhLyUFj-3TARSz8c.mjs.map +1 -0
- package/package.json +18 -18
- package/dist/interpreter-Cs1cxg-E-N_DDfih-.mjs.map +0 -1
- package/dist/sql-attribute-specs-BjCzXYcO-Cj8SS3iE.mjs.map +0 -1
- package/dist/types-ZNKYVjLr-DzjvSHKB.mjs.map +0 -1
package/dist/orm-client.mjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { t as resolveStorageTable } from "./resolve-storage-table-DZsfnzeW.mjs";
|
|
2
2
|
import { i as isUniqueConstraintViolation } from "./dist-x6jvtkKM.mjs";
|
|
3
|
-
import { C as LiteralExpr, D as OrExpr, F as SubqueryExpr, I as TableSource, L as UpdateAst, O as OrderByItem, P as SelectAst, R as WindowFuncExpr, S as ListExpression, T as NullCheckExpr, U as isWhereExpr, V as isAggregateFn, _ as InsertAst, b as JsonArrayAggExpr, c as DeleteAst, f as EqColJoinOn, j as ProjectionItem, k as ParamRef, l as DerivedTableSource, n as AndExpr, o as ColumnRef, p as ExistsExpr, r as BinaryExpr, s as DefaultValueExpr, t as AggregateExpr, v as InsertOnConflict, w as NotExpr, x as JsonObjectExpr, y as JoinAst } from "./types-
|
|
3
|
+
import { C as LiteralExpr, D as OrExpr, F as SubqueryExpr, I as TableSource, L as UpdateAst, O as OrderByItem, P as SelectAst, R as WindowFuncExpr, S as ListExpression, T as NullCheckExpr, U as isWhereExpr, V as isAggregateFn, _ as InsertAst, b as JsonArrayAggExpr, c as DeleteAst, f as EqColJoinOn, j as ProjectionItem, k as ParamRef, l as DerivedTableSource, n as AndExpr, o as ColumnRef, p as ExistsExpr, r as BinaryExpr, s as DefaultValueExpr, t as AggregateExpr, v as InsertOnConflict, w as NotExpr, x as JsonObjectExpr, y as JoinAst } from "./types-BAhLyUFj-3TARSz8c.mjs";
|
|
4
4
|
import { t as collectOrderedParamRefs } from "./util-DQQgv2j1-D6INZaRG.mjs";
|
|
5
|
-
import { n as JsonDocumentProjection, r as NativeJsonValueProjection, t as CodecJsonValueProjection } from "./ast
|
|
6
|
-
import { i as isExpression, o as toExpr } from "./expression-
|
|
5
|
+
import { n as JsonDocumentProjection, r as NativeJsonValueProjection, t as CodecJsonValueProjection } from "./ast--wLzFkbt.mjs";
|
|
6
|
+
import { i as isExpression, o as toExpr } from "./expression-CrGD_4do.mjs";
|
|
7
7
|
import { n as codecRefForStorageColumn } from "./codec-descriptor-registry-ECZ4ohtG.mjs";
|
|
8
8
|
import { structuredError } from "@prisma/orm-framework/utils/structured-error";
|
|
9
9
|
import { InternalError } from "@prisma/orm-framework/utils/internal-error";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { n as isBackedByColumnKeys, t as backingIndexColumnKeys } from "./foreign-key-materialization-B3HQzQIA.mjs";
|
|
2
2
|
import { t as defaultTableName } from "./default-table-name-BfFY8qYR-lHNcVmY5.mjs";
|
|
3
|
-
import { w as numeralText, x as escapePslString } from "./ast
|
|
3
|
+
import { w as numeralText, x as escapePslString } from "./ast--wLzFkbt.mjs";
|
|
4
4
|
import { isDataTypeLoweringEntry } from "@prisma/orm-framework/components/authoring";
|
|
5
5
|
import { InternalError } from "@prisma/orm-framework/utils/internal-error";
|
|
6
6
|
import { dataTypeId } from "@prisma/orm-framework/components/codec";
|
|
@@ -471,4 +471,4 @@ function addRelationField(map, tableName, field) {
|
|
|
471
471
|
//#endregion
|
|
472
472
|
export { mapDefault as a, toEnumName as c, inferRelations as i, toFieldName as l, deriveBackRelationFieldName as n, pluralize as o, deriveRelationFieldName as r, toEnumMemberName as s, buildChildRelationField as t, toModelName as u };
|
|
473
473
|
|
|
474
|
-
//# sourceMappingURL=psl-infer-
|
|
474
|
+
//# sourceMappingURL=psl-infer-C06FXwvC.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"psl-infer-BiExeEgG.mjs","names":[],"sources":["../../../../2-sql/9-family/dist/psl-infer.mjs"],"sourcesContent":["import { isDataTypeLoweringEntry } from \"@internal/framework-components/authoring\";\nimport { InternalError } from \"@internal/utils/internal-error\";\nimport { dataTypeId } from \"@internal/framework-components/codec\";\nimport { escapePslString, numeralText } from \"@internal/sql-relational-core/ast\";\nimport { defaultTableName } from \"@internal/sql-contract-psl/default-table-name\";\nimport pluralizeLib from \"pluralize\";\nimport { backingIndexColumnKeys, isBackedByColumnKeys } from \"@internal/sql-contract/foreign-key-materialization\";\n//#region src/core/psl-contract-infer/default-mapping.ts\nconst DEFAULT_FUNCTION_ATTRIBUTES = {\n\t\"autoincrement()\": \"@default(autoincrement())\",\n\t\"now()\": \"@default(now())\"\n};\n/**\n* The attribute a stored default prints as: a named function, a literal the column takes, or any\n* other expression as a raw SQL tagged literal. `undefined` when a literal has no written form.\n*/\nfunction mapDefault(columnDefault, options) {\n\tswitch (columnDefault.kind) {\n\t\tcase \"literal\": {\n\t\t\tconst text = writeDefaultLiteral(columnDefault.value, options);\n\t\t\treturn text === void 0 ? void 0 : { attribute: `@default(${text})` };\n\t\t}\n\t\tcase \"function\": return { attribute: options?.functionAttributes?.[columnDefault.expression] ?? DEFAULT_FUNCTION_ATTRIBUTES[columnDefault.expression] ?? `@default(${sqlLiteralText(columnDefault.expression)})` };\n\t}\n}\n/**\n* A raw SQL default as a `sql` tagged literal. The backtick fence resolves only `` \\` `` and `\\\\`,\n* so a body holding a backtick is written inside the double-quote fence with PSL string escaping.\n*/\nfunction sqlLiteralText(expression) {\n\tif (expression.includes(\"`\")) return `sql\"${escapePslString(expression)}\"`;\n\treturn `sql\\`${expression.replace(/\\\\/g, \"\\\\\\\\\")}\\``;\n}\nfunction writingSurface(entries) {\n\tconst entryOf = /* @__PURE__ */ new Map();\n\tlet classify;\n\tlet plainStringType;\n\tlet plainBooleanType;\n\tconst tagTypes = [];\n\tfor (const [key, entry] of Object.entries(entries)) {\n\t\tif (isDataTypeLoweringEntry(entry)) continue;\n\t\tconst written = entry.written;\n\t\tif (written.kind === \"tag\") {\n\t\t\tentryOf.set(key, entry);\n\t\t\ttagTypes.push(dataTypeId(key));\n\t\t\tcontinue;\n\t\t}\n\t\tif (written.syntax === \"number\") {\n\t\t\tclassify = written.classify;\n\t\t\tfor (const type of written.types) entryOf.set(type, entry);\n\t\t\tcontinue;\n\t\t}\n\t\tentryOf.set(key, entry);\n\t\tif (written.syntax === \"string\") plainStringType = dataTypeId(key);\n\t\telse plainBooleanType = dataTypeId(key);\n\t}\n\treturn {\n\t\tentryOf,\n\t\tclassify,\n\t\tplainStringType,\n\t\tplainBooleanType,\n\t\ttagTypes\n\t};\n}\n/**\n* Every type the stored form could be a value of, in the order a written value would be read: a\n* number or numeral text through the classifier first, then the plain syntax that matches the\n* shape, then each tag, whose canonical form is a whole document.\n*/\nfunction classifications(value, surface) {\n\tconst found = [];\n\tif (typeof value === \"number\") {\n\t\tconst classified = surface.classify?.(numeralText(value));\n\t\treturn classified === void 0 ? [] : [classified];\n\t}\n\tif (typeof value === \"boolean\") return surface.plainBooleanType === void 0 ? [] : [{\n\t\ttype: surface.plainBooleanType,\n\t\tvalue\n\t}];\n\tif (typeof value === \"string\") {\n\t\tconst classified = surface.classify?.(value);\n\t\tif (classified !== void 0) found.push(classified);\n\t\tif (surface.plainStringType !== void 0) found.push({\n\t\t\ttype: surface.plainStringType,\n\t\t\tvalue\n\t\t});\n\t}\n\tfor (const type of surface.tagTypes) found.push({\n\t\ttype,\n\t\tvalue\n\t});\n\treturn found;\n}\n/** The stored form the column takes this value as, or `undefined` when its type takes no such value. */\nfunction admitted(candidate, columnDataType, dataTypes) {\n\tif (candidate.type === columnDataType) return candidate.value;\n\tconst cast = dataTypes.get(columnDataType)?.casts[candidate.type];\n\tif (cast === void 0) return void 0;\n\ttry {\n\t\treturn cast(candidate.value);\n\t} catch {\n\t\treturn;\n\t}\n}\n/** The body of the literal: what the entry prints, before the syntax that fences it. */\nfunction printedBody(entry, value) {\n\ttry {\n\t\treturn entry.print(value);\n\t} catch {\n\t\treturn;\n\t}\n}\n/** What the entry reads the printed body back as, which for a number is the classifier's answer. */\nfunction readBack(entry, type, body) {\n\tconst written = entry.written;\n\ttry {\n\t\treturn written.kind === \"plain\" && written.syntax === \"number\" ? written.classify(body) : {\n\t\t\ttype,\n\t\t\tvalue: written.parse(body)\n\t\t};\n\t} catch {\n\t\treturn;\n\t}\n}\n/**\n* The literal as PSL source. A tag body sits inside a backtick fence, which resolves `` \\` `` and\n* `\\\\` and nothing else, so a `\\n` in the body survives as the two characters the entry wrote.\n*/\nfunction literalText(entry, body) {\n\tconst written = entry.written;\n\tif (written.kind === \"tag\") {\n\t\tconst fenced = body.replace(/\\\\/g, \"\\\\\\\\\").replace(/`/g, \"\\\\`\");\n\t\treturn `${written.tag}\\`${fenced}\\``;\n\t}\n\treturn written.syntax === \"string\" ? `\"${escapePslString(body)}\"` : body;\n}\n/**\n* The value written as the literal of one of its types, proven by reading the text straight back:\n* the same entry, the same cast, and the stored form again.\n*/\nfunction writeScalar(value, columnDataType, dataTypes, surface) {\n\tfor (const candidate of classifications(value, surface)) {\n\t\tconst entry = surface.entryOf.get(candidate.type);\n\t\tif (entry === void 0) continue;\n\t\tconst stored = admitted(candidate, columnDataType, dataTypes);\n\t\tif (stored === void 0 || !sameForm(stored, value)) continue;\n\t\tconst body = printedBody(entry, candidate.value);\n\t\tif (body === void 0) continue;\n\t\tconst reread = readBack(entry, candidate.type, body);\n\t\tif (reread === void 0) continue;\n\t\tconst restored = admitted(reread, columnDataType, dataTypes);\n\t\tif (restored === void 0 || !sameForm(restored, value)) continue;\n\t\treturn literalText(entry, body);\n\t}\n}\n/** One written element of a list, printed as a value of any type, with no column type to admit it. */\nfunction writeElement(value, of, surface) {\n\tfor (const candidate of classifications(value, surface)) {\n\t\tif (!of.includes(candidate.type)) continue;\n\t\tconst entry = surface.entryOf.get(candidate.type);\n\t\tif (entry === void 0) continue;\n\t\tconst body = printedBody(entry, candidate.value);\n\t\tif (body === void 0) continue;\n\t\tconst reread = readBack(entry, candidate.type, body);\n\t\tif (reread === void 0 || !of.includes(reread.type)) continue;\n\t\treturn {\n\t\t\ttext: literalText(entry, body),\n\t\t\tvalue: reread.value\n\t\t};\n\t}\n}\n/**\n* A written list on a scalar column, which the column type's list cast turns into its one value.\n* Each element is classified on its own and must be of a type the cast takes.\n*/\nfunction writeListCast(value, columnDataType, dataTypes, surface) {\n\tconst listCast = dataTypes.get(columnDataType)?.listCast;\n\tif (listCast === void 0) return void 0;\n\tconst parts = [];\n\tconst elements = [];\n\tfor (const element of value) {\n\t\tconst written = writeElement(element, listCast.of, surface);\n\t\tif (written === void 0) return void 0;\n\t\tparts.push(written.text);\n\t\telements.push(written.value);\n\t}\n\ttry {\n\t\tif (!sameForm(listCast.cast(elements), value)) return void 0;\n\t} catch {\n\t\treturn;\n\t}\n\treturn `[${parts.join(\", \")}]`;\n}\nfunction writeDefaultLiteral(value, options) {\n\tif (value instanceof Date) return void 0;\n\tconst { dataTypeEntries, dataTypes, columnDataType } = options ?? {};\n\tif (dataTypeEntries === void 0 || dataTypes === void 0 || columnDataType === void 0) return;\n\tconst surface = writingSurface(dataTypeEntries);\n\tif (options?.list === true) {\n\t\tif (!Array.isArray(value)) return void 0;\n\t\tconst parts = [];\n\t\tfor (const element of value) {\n\t\t\tconst written = writeScalar(element, columnDataType, dataTypes, surface);\n\t\t\tif (written === void 0) return void 0;\n\t\t\tparts.push(written);\n\t\t}\n\t\treturn `[${parts.join(\", \")}]`;\n\t}\n\tconst written = writeScalar(value, columnDataType, dataTypes, surface);\n\tif (written !== void 0) return written;\n\treturn Array.isArray(value) ? writeListCast(value, columnDataType, dataTypes, surface) : void 0;\n}\n/** Whether two canonical forms are the same JSON value, member by member and element by element. */\nfunction sameForm(left, right) {\n\tif (left === right) return true;\n\tif (Array.isArray(left) !== Array.isArray(right)) return false;\n\tif (typeof left !== \"object\" || typeof right !== \"object\" || left === null || right === null) return false;\n\tconst members = Object.entries(left);\n\tconst others = new Map(Object.entries(right));\n\treturn members.length === others.size && members.every(([key, member]) => {\n\t\tconst other = others.get(key);\n\t\treturn other !== void 0 && sameForm(member, other);\n\t});\n}\n//#endregion\n//#region src/core/psl-contract-infer/name-transforms.ts\nconst PSL_RESERVED_WORDS = /* @__PURE__ */ new Set([\n\t\"model\",\n\t\"enum\",\n\t\"types\",\n\t\"type\",\n\t\"generator\",\n\t\"datasource\"\n]);\nconst IDENTIFIER_PART_PATTERN = /[A-Za-z0-9]+/g;\nfunction hasSeparators(input) {\n\treturn /[^A-Za-z0-9]/.test(input);\n}\nfunction extractIdentifierParts(input) {\n\treturn input.match(IDENTIFIER_PART_PATTERN) ?? [];\n}\nfunction createSyntheticIdentifier(input) {\n\tlet hash = 2166136261;\n\tfor (const char of input) {\n\t\thash ^= char.codePointAt(0) ?? 0;\n\t\thash = Math.imul(hash, 16777619);\n\t}\n\treturn `x${(hash >>> 0).toString(16)}`;\n}\nfunction sanitizeIdentifierCharacters(input) {\n\tconst sanitized = input.replace(/[^\\w]/g, \"\");\n\treturn sanitized.length > 0 ? sanitized : createSyntheticIdentifier(input);\n}\nfunction capitalize(word) {\n\treturn word.charAt(0).toUpperCase() + word.slice(1);\n}\nfunction snakeToPascalCase(input) {\n\tconst parts = extractIdentifierParts(input);\n\tif (parts.length === 0) return capitalize(sanitizeIdentifierCharacters(input));\n\treturn parts.map(capitalize).join(\"\");\n}\nfunction snakeToCamelCase(input) {\n\tconst parts = extractIdentifierParts(input);\n\tif (parts.length === 0) return sanitizeIdentifierCharacters(input);\n\tconst [firstPart = input, ...rest] = parts;\n\treturn firstPart.charAt(0).toLowerCase() + firstPart.slice(1) + rest.map(capitalize).join(\"\");\n}\nfunction needsEscaping(name) {\n\treturn PSL_RESERVED_WORDS.has(name.toLowerCase()) || /^\\d/.test(name);\n}\nfunction escapeName(name) {\n\treturn `_${name}`;\n}\nfunction escapeIfNeeded(name) {\n\treturn needsEscaping(name) ? escapeName(name) : name;\n}\nfunction toModelName(tableName) {\n\tlet name;\n\tif (hasSeparators(tableName)) name = snakeToPascalCase(tableName);\n\telse name = tableName.charAt(0).toUpperCase() + tableName.slice(1);\n\tif (needsEscaping(name)) return {\n\t\tname: escapeName(name),\n\t\tmap: tableName\n\t};\n\tif (defaultTableName(name) !== tableName) return {\n\t\tname,\n\t\tmap: tableName\n\t};\n\treturn { name };\n}\nfunction toFieldName(columnName) {\n\tlet name;\n\tif (hasSeparators(columnName)) name = snakeToCamelCase(columnName);\n\telse name = columnName.charAt(0).toLowerCase() + columnName.slice(1);\n\tif (needsEscaping(name)) return {\n\t\tname: escapeName(name),\n\t\tmap: columnName\n\t};\n\tif (name !== columnName) return {\n\t\tname,\n\t\tmap: columnName\n\t};\n\treturn { name };\n}\nfunction toEnumName(pgTypeName) {\n\tlet name;\n\tif (hasSeparators(pgTypeName)) name = snakeToPascalCase(pgTypeName);\n\telse name = pgTypeName.charAt(0).toUpperCase() + pgTypeName.slice(1);\n\tif (needsEscaping(name)) return {\n\t\tname: escapeName(name),\n\t\tmap: pgTypeName\n\t};\n\tif (name !== pgTypeName) return {\n\t\tname,\n\t\tmap: pgTypeName\n\t};\n\treturn { name };\n}\nconst VALID_IDENTIFIER_PATTERN = /^[A-Za-z_]\\w*$/;\n/**\n* PSL member name for a native-enum value. The value itself always prints\n* explicitly (`member = \"value\"`), so the returned name never needs a map:\n* a value that already is a valid, non-reserved identifier is kept verbatim\n* (case included); anything else is camelCased/escaped like a field name.\n*/\nfunction toEnumMemberName(value) {\n\tif (VALID_IDENTIFIER_PATTERN.test(value) && !needsEscaping(value)) return value;\n\treturn escapeIfNeeded(snakeToCamelCase(value));\n}\nfunction pluralize(word) {\n\treturn pluralizeLib.plural(word);\n}\nfunction deriveRelationFieldName(fkColumns, referencedTableName) {\n\tif (fkColumns.length === 1) {\n\t\tconst [col = referencedTableName] = fkColumns;\n\t\tconst stripped = col.replace(/_id$/i, \"\").replace(/Id$/, \"\");\n\t\tif (stripped.length > 0 && stripped !== col) return escapeIfNeeded(snakeToCamelCase(stripped));\n\t\treturn escapeIfNeeded(snakeToCamelCase(referencedTableName));\n\t}\n\treturn escapeIfNeeded(snakeToCamelCase(referencedTableName));\n}\nfunction deriveBackRelationFieldName(childModelName, isOneToOne) {\n\tconst base = childModelName.charAt(0).toLowerCase() + childModelName.slice(1);\n\treturn isOneToOne ? base : pluralize(base);\n}\n//#endregion\n//#region src/core/psl-contract-infer/relation-inference.ts\nconst DEFAULT_ON_DELETE = \"noAction\";\nconst DEFAULT_ON_UPDATE = \"noAction\";\nconst REFERENTIAL_ACTION_PSL = {\n\tnoAction: \"NoAction\",\n\trestrict: \"Restrict\",\n\tcascade: \"Cascade\",\n\tsetNull: \"SetNull\",\n\tsetDefault: \"SetDefault\"\n};\nfunction inferRelations(tables, modelNameMap) {\n\tconst relationsByTable = /* @__PURE__ */ new Map();\n\tconst fkCountByPair = /* @__PURE__ */ new Map();\n\tfor (const table of Object.values(tables)) for (const fk of table.foreignKeys) {\n\t\tconst pairKey = `${table.name}→${fk.referencedTable}`;\n\t\tfkCountByPair.set(pairKey, (fkCountByPair.get(pairKey) ?? 0) + 1);\n\t}\n\tconst usedFieldNames = /* @__PURE__ */ new Map();\n\tfor (const table of Object.values(tables)) {\n\t\tconst names = /* @__PURE__ */ new Set();\n\t\tfor (const col of Object.values(table.columns)) names.add(col.name);\n\t\tusedFieldNames.set(table.name, names);\n\t}\n\tfor (const table of Object.values(tables)) for (const fk of table.foreignKeys) {\n\t\tconst childTableName = table.name;\n\t\tconst parentTableName = fk.referencedTable;\n\t\tconst childUsed = usedFieldNames.get(childTableName);\n\t\tif (childUsed === void 0) throw new InternalError(`Missing inferred field-name set for table \"${childTableName}\"`);\n\t\tconst childModelName = modelNameMap.get(childTableName) ?? childTableName;\n\t\tconst parentModelName = modelNameMap.get(parentTableName) ?? parentTableName;\n\t\tconst pairKey = `${childTableName}→${parentTableName}`;\n\t\tconst isSelfRelation = childTableName === parentTableName;\n\t\tconst needsRelationName = (fkCountByPair.get(pairKey) ?? 0) > 1 || isSelfRelation;\n\t\tconst isOneToOne = detectOneToOne(fk, table);\n\t\tconst childRelFieldName = resolveUniqueFieldName(deriveRelationFieldName(fk.columns, parentTableName), childUsed, parentModelName);\n\t\tconst relationName = needsRelationName ? deriveRelationName(fk, childRelFieldName, parentModelName, isSelfRelation) : void 0;\n\t\taddRelationField(relationsByTable, childTableName, buildChildRelationField(childRelFieldName, parentModelName, fk, fk.columns.some((columnName) => table.columns[columnName]?.nullable ?? false), relationName, table));\n\t\tchildUsed.add(childRelFieldName);\n\t\tconst parentUsed = usedFieldNames.get(parentTableName) ?? /* @__PURE__ */ new Set();\n\t\tusedFieldNames.set(parentTableName, parentUsed);\n\t\tconst backRelFieldName = resolveUniqueFieldName(deriveBackRelationFieldName(childModelName, isOneToOne), parentUsed, childModelName);\n\t\taddRelationField(relationsByTable, parentTableName, {\n\t\t\tfieldName: backRelFieldName,\n\t\t\ttypeName: childModelName,\n\t\t\toptional: isOneToOne,\n\t\t\tlist: !isOneToOne,\n\t\t\trelationName\n\t\t});\n\t\tparentUsed.add(backRelFieldName);\n\t}\n\treturn { relationsByTable };\n}\nfunction detectOneToOne(fk, table) {\n\tconst fkCols = [...fk.columns].sort();\n\tif (table.primaryKey) {\n\t\tconst pkCols = [...table.primaryKey.columns].sort();\n\t\tif (pkCols.length === fkCols.length && pkCols.every((c, i) => c === fkCols[i])) return true;\n\t}\n\tfor (const unique of table.uniques) {\n\t\tconst uniqueCols = [...unique.columns].sort();\n\t\tif (uniqueCols.length === fkCols.length && uniqueCols.every((c, i) => c === fkCols[i])) return true;\n\t}\n\tfor (const index of table.indexes) {\n\t\tif (!index.unique || index.partial || index.columns === void 0) continue;\n\t\tconst indexCols = [...index.columns].sort();\n\t\tif (indexCols.length === fkCols.length && indexCols.every((c, i) => c === fkCols[i])) return true;\n\t}\n\treturn false;\n}\nfunction deriveRelationName(fk, childRelationFieldName, parentModelName, isSelfRelation) {\n\tif (fk.name) return fk.name;\n\tif (isSelfRelation) return `${childRelationFieldName.charAt(0).toUpperCase() + childRelationFieldName.slice(1)}${pluralize(parentModelName)}`;\n\treturn fk.columns.join(\"_\");\n}\n/**\n* Builds the child-side {@link RelationField} for a single foreign key:\n* `typeName` is the parent model name, `fields`/`references` are the FK's raw\n* columns, and `onDelete`/`onUpdate` are normalized to their PSL spelling.\n* Exported so a caller resolving a foreign key against a model outside\n* `tables` (e.g. a cross-space reference into another contract) can reuse the\n* same normalization instead of duplicating it.\n*\n* `hostTable` is the table the FK is declared on (i.e. `table`, not the\n* referenced parent) — its own indexes/uniques/primary key are what a\n* backing index for this FK would be. When none of them exactly match the\n* FK's source columns (in order), `index: false` is stamped so the emitted\n* `@relation` opts out of the framework's default derived backing-index\n* expectation, matching what `db verify` will find live. Passing the table\n* is optional so existing single-FK callers (e.g. cross-space resolution\n* before a host table reference is threaded through) can omit it and keep\n* the framework default.\n*/\nfunction buildChildRelationField(fieldName, parentModelName, fk, optional, relationName, hostTable) {\n\tconst onDelete = fk.onDelete && fk.onDelete !== DEFAULT_ON_DELETE ? fk.onDelete : void 0;\n\tconst onUpdate = fk.onUpdate && fk.onUpdate !== DEFAULT_ON_UPDATE ? fk.onUpdate : void 0;\n\tconst index = hostTable && !isBackedByColumnKeys(fk.columns, backingIndexColumnKeys({\n\t\tindexes: hostTable.indexes.filter((i) => i.where === void 0),\n\t\tuniques: hostTable.uniques,\n\t\tprimaryKey: hostTable.primaryKey\n\t})) ? false : void 0;\n\treturn {\n\t\tfieldName,\n\t\ttypeName: parentModelName,\n\t\treferencedTableName: fk.referencedTable,\n\t\toptional,\n\t\tlist: false,\n\t\trelationName,\n\t\tfkName: fk.name,\n\t\tfields: fk.columns,\n\t\treferences: fk.referencedColumns,\n\t\tonDelete: onDelete ? REFERENTIAL_ACTION_PSL[onDelete] : void 0,\n\t\tonUpdate: onUpdate ? REFERENTIAL_ACTION_PSL[onUpdate] : void 0,\n\t\tindex\n\t};\n}\nfunction resolveUniqueFieldName(desired, usedNames, fallbackSuffix) {\n\tif (!usedNames.has(desired)) return desired;\n\tconst withSuffix = `${desired}${fallbackSuffix}`;\n\tif (!usedNames.has(withSuffix)) return withSuffix;\n\tlet counter = 2;\n\twhile (usedNames.has(`${desired}${counter}`)) counter++;\n\treturn `${desired}${counter}`;\n}\nfunction addRelationField(map, tableName, field) {\n\tconst existing = map.get(tableName);\n\tif (existing) existing.push(field);\n\telse map.set(tableName, [field]);\n}\n//#endregion\nexport { buildChildRelationField, deriveBackRelationFieldName, deriveRelationFieldName, inferRelations, mapDefault, pluralize, toEnumMemberName, toEnumName, toFieldName, toModelName };\n\n//# sourceMappingURL=psl-infer.mjs.map"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"psl-infer-C06FXwvC.mjs","names":[],"sources":["../../../../2-sql/9-family/dist/psl-infer.mjs"],"sourcesContent":["import { isDataTypeLoweringEntry } from \"@internal/framework-components/authoring\";\nimport { InternalError } from \"@internal/utils/internal-error\";\nimport { dataTypeId } from \"@internal/framework-components/codec\";\nimport { escapePslString, numeralText } from \"@internal/sql-relational-core/ast\";\nimport { defaultTableName } from \"@internal/sql-contract-psl/default-table-name\";\nimport pluralizeLib from \"pluralize\";\nimport { backingIndexColumnKeys, isBackedByColumnKeys } from \"@internal/sql-contract/foreign-key-materialization\";\n//#region src/core/psl-contract-infer/default-mapping.ts\nconst DEFAULT_FUNCTION_ATTRIBUTES = {\n\t\"autoincrement()\": \"@default(autoincrement())\",\n\t\"now()\": \"@default(now())\"\n};\n/**\n* The attribute a stored default prints as: a named function, a literal the column takes, or any\n* other expression as a raw SQL tagged literal. `undefined` when a literal has no written form.\n*/\nfunction mapDefault(columnDefault, options) {\n\tswitch (columnDefault.kind) {\n\t\tcase \"literal\": {\n\t\t\tconst text = writeDefaultLiteral(columnDefault.value, options);\n\t\t\treturn text === void 0 ? void 0 : { attribute: `@default(${text})` };\n\t\t}\n\t\tcase \"function\": return { attribute: options?.functionAttributes?.[columnDefault.expression] ?? DEFAULT_FUNCTION_ATTRIBUTES[columnDefault.expression] ?? `@default(${sqlLiteralText(columnDefault.expression)})` };\n\t}\n}\n/**\n* A raw SQL default as a `sql` tagged literal. The backtick fence resolves only `` \\` `` and `\\\\`,\n* so a body holding a backtick is written inside the double-quote fence with PSL string escaping.\n*/\nfunction sqlLiteralText(expression) {\n\tif (expression.includes(\"`\")) return `sql\"${escapePslString(expression)}\"`;\n\treturn `sql\\`${expression.replace(/\\\\/g, \"\\\\\\\\\")}\\``;\n}\nfunction writingSurface(entries) {\n\tconst entryOf = /* @__PURE__ */ new Map();\n\tlet classify;\n\tlet plainStringType;\n\tlet plainBooleanType;\n\tconst tagTypes = [];\n\tfor (const [key, entry] of Object.entries(entries)) {\n\t\tif (isDataTypeLoweringEntry(entry)) continue;\n\t\tconst written = entry.written;\n\t\tif (written.kind === \"tag\") {\n\t\t\tentryOf.set(key, entry);\n\t\t\ttagTypes.push(dataTypeId(key));\n\t\t\tcontinue;\n\t\t}\n\t\tif (written.syntax === \"number\") {\n\t\t\tclassify = written.classify;\n\t\t\tfor (const type of written.types) entryOf.set(type, entry);\n\t\t\tcontinue;\n\t\t}\n\t\tentryOf.set(key, entry);\n\t\tif (written.syntax === \"string\") plainStringType = dataTypeId(key);\n\t\telse plainBooleanType = dataTypeId(key);\n\t}\n\treturn {\n\t\tentryOf,\n\t\tclassify,\n\t\tplainStringType,\n\t\tplainBooleanType,\n\t\ttagTypes\n\t};\n}\n/**\n* Every type the stored form could be a value of, in the order a written value would be read: a\n* number or numeral text through the classifier first, then the plain syntax that matches the\n* shape, then each tag, whose canonical form is a whole document.\n*/\nfunction classifications(value, surface) {\n\tconst found = [];\n\tif (typeof value === \"number\") {\n\t\tconst classified = surface.classify?.(numeralText(value));\n\t\treturn classified === void 0 ? [] : [classified];\n\t}\n\tif (typeof value === \"boolean\") return surface.plainBooleanType === void 0 ? [] : [{\n\t\ttype: surface.plainBooleanType,\n\t\tvalue\n\t}];\n\tif (typeof value === \"string\") {\n\t\tconst classified = surface.classify?.(value);\n\t\tif (classified !== void 0) found.push(classified);\n\t\tif (surface.plainStringType !== void 0) found.push({\n\t\t\ttype: surface.plainStringType,\n\t\t\tvalue\n\t\t});\n\t}\n\tfor (const type of surface.tagTypes) found.push({\n\t\ttype,\n\t\tvalue\n\t});\n\treturn found;\n}\n/** The stored form the column takes this value as, or `undefined` when its type takes no such value. */\nfunction admitted(candidate, columnDataType, dataTypes) {\n\tif (candidate.type === columnDataType) return candidate.value;\n\tconst cast = dataTypes.get(columnDataType)?.casts[candidate.type];\n\tif (cast === void 0) return void 0;\n\ttry {\n\t\treturn cast(candidate.value);\n\t} catch {\n\t\treturn;\n\t}\n}\n/** The body of the literal: what the entry prints, before the syntax that fences it. */\nfunction printedBody(entry, value) {\n\ttry {\n\t\treturn entry.print(value);\n\t} catch {\n\t\treturn;\n\t}\n}\n/** What the entry reads the printed body back as, which for a number is the classifier's answer. */\nfunction readBack(entry, type, body) {\n\tconst written = entry.written;\n\ttry {\n\t\treturn written.kind === \"plain\" && written.syntax === \"number\" ? written.classify(body) : {\n\t\t\ttype,\n\t\t\tvalue: written.parse(body)\n\t\t};\n\t} catch {\n\t\treturn;\n\t}\n}\n/**\n* The literal as PSL source. A tag body sits inside a backtick fence, which resolves `` \\` `` and\n* `\\\\` and nothing else, so a `\\n` in the body survives as the two characters the entry wrote.\n*/\nfunction literalText(entry, body) {\n\tconst written = entry.written;\n\tif (written.kind === \"tag\") {\n\t\tconst fenced = body.replace(/\\\\/g, \"\\\\\\\\\").replace(/`/g, \"\\\\`\");\n\t\treturn `${written.tag}\\`${fenced}\\``;\n\t}\n\treturn written.syntax === \"string\" ? `\"${escapePslString(body)}\"` : body;\n}\n/**\n* The value written as the literal of one of its types, proven by reading the text straight back:\n* the same entry, the same cast, and the stored form again.\n*/\nfunction writeScalar(value, columnDataType, dataTypes, surface) {\n\tfor (const candidate of classifications(value, surface)) {\n\t\tconst entry = surface.entryOf.get(candidate.type);\n\t\tif (entry === void 0) continue;\n\t\tconst stored = admitted(candidate, columnDataType, dataTypes);\n\t\tif (stored === void 0 || !sameForm(stored, value)) continue;\n\t\tconst body = printedBody(entry, candidate.value);\n\t\tif (body === void 0) continue;\n\t\tconst reread = readBack(entry, candidate.type, body);\n\t\tif (reread === void 0) continue;\n\t\tconst restored = admitted(reread, columnDataType, dataTypes);\n\t\tif (restored === void 0 || !sameForm(restored, value)) continue;\n\t\treturn literalText(entry, body);\n\t}\n}\n/** One written element of a list, printed as a value of any type, with no column type to admit it. */\nfunction writeElement(value, of, surface) {\n\tfor (const candidate of classifications(value, surface)) {\n\t\tif (!of.includes(candidate.type)) continue;\n\t\tconst entry = surface.entryOf.get(candidate.type);\n\t\tif (entry === void 0) continue;\n\t\tconst body = printedBody(entry, candidate.value);\n\t\tif (body === void 0) continue;\n\t\tconst reread = readBack(entry, candidate.type, body);\n\t\tif (reread === void 0 || !of.includes(reread.type)) continue;\n\t\treturn {\n\t\t\ttext: literalText(entry, body),\n\t\t\tvalue: reread.value\n\t\t};\n\t}\n}\n/**\n* A written list on a scalar column, which the column type's list cast turns into its one value.\n* Each element is classified on its own and must be of a type the cast takes.\n*/\nfunction writeListCast(value, columnDataType, dataTypes, surface) {\n\tconst listCast = dataTypes.get(columnDataType)?.listCast;\n\tif (listCast === void 0) return void 0;\n\tconst parts = [];\n\tconst elements = [];\n\tfor (const element of value) {\n\t\tconst written = writeElement(element, listCast.of, surface);\n\t\tif (written === void 0) return void 0;\n\t\tparts.push(written.text);\n\t\telements.push(written.value);\n\t}\n\ttry {\n\t\tif (!sameForm(listCast.cast(elements), value)) return void 0;\n\t} catch {\n\t\treturn;\n\t}\n\treturn `[${parts.join(\", \")}]`;\n}\nfunction writeDefaultLiteral(value, options) {\n\tif (value instanceof Date) return void 0;\n\tconst { dataTypeEntries, dataTypes, columnDataType } = options ?? {};\n\tif (dataTypeEntries === void 0 || dataTypes === void 0 || columnDataType === void 0) return;\n\tconst surface = writingSurface(dataTypeEntries);\n\tif (options?.list === true) {\n\t\tif (!Array.isArray(value)) return void 0;\n\t\tconst parts = [];\n\t\tfor (const element of value) {\n\t\t\tconst written = writeScalar(element, columnDataType, dataTypes, surface);\n\t\t\tif (written === void 0) return void 0;\n\t\t\tparts.push(written);\n\t\t}\n\t\treturn `[${parts.join(\", \")}]`;\n\t}\n\tconst written = writeScalar(value, columnDataType, dataTypes, surface);\n\tif (written !== void 0) return written;\n\treturn Array.isArray(value) ? writeListCast(value, columnDataType, dataTypes, surface) : void 0;\n}\n/** Whether two canonical forms are the same JSON value, member by member and element by element. */\nfunction sameForm(left, right) {\n\tif (left === right) return true;\n\tif (Array.isArray(left) !== Array.isArray(right)) return false;\n\tif (typeof left !== \"object\" || typeof right !== \"object\" || left === null || right === null) return false;\n\tconst members = Object.entries(left);\n\tconst others = new Map(Object.entries(right));\n\treturn members.length === others.size && members.every(([key, member]) => {\n\t\tconst other = others.get(key);\n\t\treturn other !== void 0 && sameForm(member, other);\n\t});\n}\n//#endregion\n//#region src/core/psl-contract-infer/name-transforms.ts\nconst PSL_RESERVED_WORDS = /* @__PURE__ */ new Set([\n\t\"model\",\n\t\"enum\",\n\t\"types\",\n\t\"type\",\n\t\"generator\",\n\t\"datasource\"\n]);\nconst IDENTIFIER_PART_PATTERN = /[A-Za-z0-9]+/g;\nfunction hasSeparators(input) {\n\treturn /[^A-Za-z0-9]/.test(input);\n}\nfunction extractIdentifierParts(input) {\n\treturn input.match(IDENTIFIER_PART_PATTERN) ?? [];\n}\nfunction createSyntheticIdentifier(input) {\n\tlet hash = 2166136261;\n\tfor (const char of input) {\n\t\thash ^= char.codePointAt(0) ?? 0;\n\t\thash = Math.imul(hash, 16777619);\n\t}\n\treturn `x${(hash >>> 0).toString(16)}`;\n}\nfunction sanitizeIdentifierCharacters(input) {\n\tconst sanitized = input.replace(/[^\\w]/g, \"\");\n\treturn sanitized.length > 0 ? sanitized : createSyntheticIdentifier(input);\n}\nfunction capitalize(word) {\n\treturn word.charAt(0).toUpperCase() + word.slice(1);\n}\nfunction snakeToPascalCase(input) {\n\tconst parts = extractIdentifierParts(input);\n\tif (parts.length === 0) return capitalize(sanitizeIdentifierCharacters(input));\n\treturn parts.map(capitalize).join(\"\");\n}\nfunction snakeToCamelCase(input) {\n\tconst parts = extractIdentifierParts(input);\n\tif (parts.length === 0) return sanitizeIdentifierCharacters(input);\n\tconst [firstPart = input, ...rest] = parts;\n\treturn firstPart.charAt(0).toLowerCase() + firstPart.slice(1) + rest.map(capitalize).join(\"\");\n}\nfunction needsEscaping(name) {\n\treturn PSL_RESERVED_WORDS.has(name.toLowerCase()) || /^\\d/.test(name);\n}\nfunction escapeName(name) {\n\treturn `_${name}`;\n}\nfunction escapeIfNeeded(name) {\n\treturn needsEscaping(name) ? escapeName(name) : name;\n}\nfunction toModelName(tableName) {\n\tlet name;\n\tif (hasSeparators(tableName)) name = snakeToPascalCase(tableName);\n\telse name = tableName.charAt(0).toUpperCase() + tableName.slice(1);\n\tif (needsEscaping(name)) return {\n\t\tname: escapeName(name),\n\t\tmap: tableName\n\t};\n\tif (defaultTableName(name) !== tableName) return {\n\t\tname,\n\t\tmap: tableName\n\t};\n\treturn { name };\n}\nfunction toFieldName(columnName) {\n\tlet name;\n\tif (hasSeparators(columnName)) name = snakeToCamelCase(columnName);\n\telse name = columnName.charAt(0).toLowerCase() + columnName.slice(1);\n\tif (needsEscaping(name)) return {\n\t\tname: escapeName(name),\n\t\tmap: columnName\n\t};\n\tif (name !== columnName) return {\n\t\tname,\n\t\tmap: columnName\n\t};\n\treturn { name };\n}\nfunction toEnumName(pgTypeName) {\n\tlet name;\n\tif (hasSeparators(pgTypeName)) name = snakeToPascalCase(pgTypeName);\n\telse name = pgTypeName.charAt(0).toUpperCase() + pgTypeName.slice(1);\n\tif (needsEscaping(name)) return {\n\t\tname: escapeName(name),\n\t\tmap: pgTypeName\n\t};\n\tif (name !== pgTypeName) return {\n\t\tname,\n\t\tmap: pgTypeName\n\t};\n\treturn { name };\n}\nconst VALID_IDENTIFIER_PATTERN = /^[A-Za-z_]\\w*$/;\n/**\n* PSL member name for a native-enum value. The value itself always prints\n* explicitly (`member = \"value\"`), so the returned name never needs a map:\n* a value that already is a valid, non-reserved identifier is kept verbatim\n* (case included); anything else is camelCased/escaped like a field name.\n*/\nfunction toEnumMemberName(value) {\n\tif (VALID_IDENTIFIER_PATTERN.test(value) && !needsEscaping(value)) return value;\n\treturn escapeIfNeeded(snakeToCamelCase(value));\n}\nfunction pluralize(word) {\n\treturn pluralizeLib.plural(word);\n}\nfunction deriveRelationFieldName(fkColumns, referencedTableName) {\n\tif (fkColumns.length === 1) {\n\t\tconst [col = referencedTableName] = fkColumns;\n\t\tconst stripped = col.replace(/_id$/i, \"\").replace(/Id$/, \"\");\n\t\tif (stripped.length > 0 && stripped !== col) return escapeIfNeeded(snakeToCamelCase(stripped));\n\t\treturn escapeIfNeeded(snakeToCamelCase(referencedTableName));\n\t}\n\treturn escapeIfNeeded(snakeToCamelCase(referencedTableName));\n}\nfunction deriveBackRelationFieldName(childModelName, isOneToOne) {\n\tconst base = childModelName.charAt(0).toLowerCase() + childModelName.slice(1);\n\treturn isOneToOne ? base : pluralize(base);\n}\n//#endregion\n//#region src/core/psl-contract-infer/relation-inference.ts\nconst DEFAULT_ON_DELETE = \"noAction\";\nconst DEFAULT_ON_UPDATE = \"noAction\";\nconst REFERENTIAL_ACTION_PSL = {\n\tnoAction: \"NoAction\",\n\trestrict: \"Restrict\",\n\tcascade: \"Cascade\",\n\tsetNull: \"SetNull\",\n\tsetDefault: \"SetDefault\"\n};\nfunction inferRelations(tables, modelNameMap) {\n\tconst relationsByTable = /* @__PURE__ */ new Map();\n\tconst fkCountByPair = /* @__PURE__ */ new Map();\n\tfor (const table of Object.values(tables)) for (const fk of table.foreignKeys) {\n\t\tconst pairKey = `${table.name}→${fk.referencedTable}`;\n\t\tfkCountByPair.set(pairKey, (fkCountByPair.get(pairKey) ?? 0) + 1);\n\t}\n\tconst usedFieldNames = /* @__PURE__ */ new Map();\n\tfor (const table of Object.values(tables)) {\n\t\tconst names = /* @__PURE__ */ new Set();\n\t\tfor (const col of Object.values(table.columns)) names.add(col.name);\n\t\tusedFieldNames.set(table.name, names);\n\t}\n\tfor (const table of Object.values(tables)) for (const fk of table.foreignKeys) {\n\t\tconst childTableName = table.name;\n\t\tconst parentTableName = fk.referencedTable;\n\t\tconst childUsed = usedFieldNames.get(childTableName);\n\t\tif (childUsed === void 0) throw new InternalError(`Missing inferred field-name set for table \"${childTableName}\"`);\n\t\tconst childModelName = modelNameMap.get(childTableName) ?? childTableName;\n\t\tconst parentModelName = modelNameMap.get(parentTableName) ?? parentTableName;\n\t\tconst pairKey = `${childTableName}→${parentTableName}`;\n\t\tconst isSelfRelation = childTableName === parentTableName;\n\t\tconst needsRelationName = (fkCountByPair.get(pairKey) ?? 0) > 1 || isSelfRelation;\n\t\tconst isOneToOne = detectOneToOne(fk, table);\n\t\tconst childRelFieldName = resolveUniqueFieldName(deriveRelationFieldName(fk.columns, parentTableName), childUsed, parentModelName);\n\t\tconst relationName = needsRelationName ? deriveRelationName(fk, childRelFieldName, parentModelName, isSelfRelation) : void 0;\n\t\taddRelationField(relationsByTable, childTableName, buildChildRelationField(childRelFieldName, parentModelName, fk, fk.columns.some((columnName) => table.columns[columnName]?.nullable ?? false), relationName, table));\n\t\tchildUsed.add(childRelFieldName);\n\t\tconst parentUsed = usedFieldNames.get(parentTableName) ?? /* @__PURE__ */ new Set();\n\t\tusedFieldNames.set(parentTableName, parentUsed);\n\t\tconst backRelFieldName = resolveUniqueFieldName(deriveBackRelationFieldName(childModelName, isOneToOne), parentUsed, childModelName);\n\t\taddRelationField(relationsByTable, parentTableName, {\n\t\t\tfieldName: backRelFieldName,\n\t\t\ttypeName: childModelName,\n\t\t\toptional: isOneToOne,\n\t\t\tlist: !isOneToOne,\n\t\t\trelationName\n\t\t});\n\t\tparentUsed.add(backRelFieldName);\n\t}\n\treturn { relationsByTable };\n}\nfunction detectOneToOne(fk, table) {\n\tconst fkCols = [...fk.columns].sort();\n\tif (table.primaryKey) {\n\t\tconst pkCols = [...table.primaryKey.columns].sort();\n\t\tif (pkCols.length === fkCols.length && pkCols.every((c, i) => c === fkCols[i])) return true;\n\t}\n\tfor (const unique of table.uniques) {\n\t\tconst uniqueCols = [...unique.columns].sort();\n\t\tif (uniqueCols.length === fkCols.length && uniqueCols.every((c, i) => c === fkCols[i])) return true;\n\t}\n\tfor (const index of table.indexes) {\n\t\tif (!index.unique || index.partial || index.columns === void 0) continue;\n\t\tconst indexCols = [...index.columns].sort();\n\t\tif (indexCols.length === fkCols.length && indexCols.every((c, i) => c === fkCols[i])) return true;\n\t}\n\treturn false;\n}\nfunction deriveRelationName(fk, childRelationFieldName, parentModelName, isSelfRelation) {\n\tif (fk.name) return fk.name;\n\tif (isSelfRelation) return `${childRelationFieldName.charAt(0).toUpperCase() + childRelationFieldName.slice(1)}${pluralize(parentModelName)}`;\n\treturn fk.columns.join(\"_\");\n}\n/**\n* Builds the child-side {@link RelationField} for a single foreign key:\n* `typeName` is the parent model name, `fields`/`references` are the FK's raw\n* columns, and `onDelete`/`onUpdate` are normalized to their PSL spelling.\n* Exported so a caller resolving a foreign key against a model outside\n* `tables` (e.g. a cross-space reference into another contract) can reuse the\n* same normalization instead of duplicating it.\n*\n* `hostTable` is the table the FK is declared on (i.e. `table`, not the\n* referenced parent) — its own indexes/uniques/primary key are what a\n* backing index for this FK would be. When none of them exactly match the\n* FK's source columns (in order), `index: false` is stamped so the emitted\n* `@relation` opts out of the framework's default derived backing-index\n* expectation, matching what `db verify` will find live. Passing the table\n* is optional so existing single-FK callers (e.g. cross-space resolution\n* before a host table reference is threaded through) can omit it and keep\n* the framework default.\n*/\nfunction buildChildRelationField(fieldName, parentModelName, fk, optional, relationName, hostTable) {\n\tconst onDelete = fk.onDelete && fk.onDelete !== DEFAULT_ON_DELETE ? fk.onDelete : void 0;\n\tconst onUpdate = fk.onUpdate && fk.onUpdate !== DEFAULT_ON_UPDATE ? fk.onUpdate : void 0;\n\tconst index = hostTable && !isBackedByColumnKeys(fk.columns, backingIndexColumnKeys({\n\t\tindexes: hostTable.indexes.filter((i) => i.where === void 0),\n\t\tuniques: hostTable.uniques,\n\t\tprimaryKey: hostTable.primaryKey\n\t})) ? false : void 0;\n\treturn {\n\t\tfieldName,\n\t\ttypeName: parentModelName,\n\t\treferencedTableName: fk.referencedTable,\n\t\toptional,\n\t\tlist: false,\n\t\trelationName,\n\t\tfkName: fk.name,\n\t\tfields: fk.columns,\n\t\treferences: fk.referencedColumns,\n\t\tonDelete: onDelete ? REFERENTIAL_ACTION_PSL[onDelete] : void 0,\n\t\tonUpdate: onUpdate ? REFERENTIAL_ACTION_PSL[onUpdate] : void 0,\n\t\tindex\n\t};\n}\nfunction resolveUniqueFieldName(desired, usedNames, fallbackSuffix) {\n\tif (!usedNames.has(desired)) return desired;\n\tconst withSuffix = `${desired}${fallbackSuffix}`;\n\tif (!usedNames.has(withSuffix)) return withSuffix;\n\tlet counter = 2;\n\twhile (usedNames.has(`${desired}${counter}`)) counter++;\n\treturn `${desired}${counter}`;\n}\nfunction addRelationField(map, tableName, field) {\n\tconst existing = map.get(tableName);\n\tif (existing) existing.push(field);\n\telse map.set(tableName, [field]);\n}\n//#endregion\nexport { buildChildRelationField, deriveBackRelationFieldName, deriveRelationFieldName, inferRelations, mapDefault, pluralize, toEnumMemberName, toEnumName, toFieldName, toModelName };\n\n//# sourceMappingURL=psl-infer.mjs.map"],"mappings":"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"}
|
package/dist/relational-core.mjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { A as PreparedParamRef, B as frozenCodecRef, C as LiteralExpr, D as OrExpr, E as OperationExpr, F as SubqueryExpr, G as whereExprKinds, H as isQueryAst, I as TableSource, L as UpdateAst, M as RawExpr, N as RawQueryAst, O as OrderByItem, P as SelectAst, R as WindowFuncExpr, S as ListExpression, T as NullCheckExpr, U as isWhereExpr, V as isAggregateFn, W as queryAstKinds, _ as InsertAst, a as CastExpr, b as JsonArrayAggExpr, c as DeleteAst, d as DoUpdateSetConflictAction, f as EqColJoinOn, g as IdentifierRef, h as FunctionSource, i as CaseExpr, j as ProjectionItem, k as ParamRef, l as DerivedTableSource, m as FunctionCallExpr, n as AndExpr, o as ColumnRef, p as ExistsExpr, r as BinaryExpr, s as DefaultValueExpr, t as AggregateExpr, u as DoNothingConflictAction, v as InsertOnConflict, w as NotExpr, x as JsonObjectExpr, y as JoinAst, z as aggregateFnNames } from "./types-
|
|
1
|
+
import { A as PreparedParamRef, B as frozenCodecRef, C as LiteralExpr, D as OrExpr, E as OperationExpr, F as SubqueryExpr, G as whereExprKinds, H as isQueryAst, I as TableSource, L as UpdateAst, M as RawExpr, N as RawQueryAst, O as OrderByItem, P as SelectAst, R as WindowFuncExpr, S as ListExpression, T as NullCheckExpr, U as isWhereExpr, V as isAggregateFn, W as queryAstKinds, _ as InsertAst, a as CastExpr, b as JsonArrayAggExpr, c as DeleteAst, d as DoUpdateSetConflictAction, f as EqColJoinOn, g as IdentifierRef, h as FunctionSource, i as CaseExpr, j as ProjectionItem, k as ParamRef, l as DerivedTableSource, m as FunctionCallExpr, n as AndExpr, o as ColumnRef, p as ExistsExpr, r as BinaryExpr, s as DefaultValueExpr, t as AggregateExpr, u as DoNothingConflictAction, v as InsertOnConflict, w as NotExpr, x as JsonObjectExpr, y as JoinAst, z as aggregateFnNames } from "./types-BAhLyUFj-3TARSz8c.mjs";
|
|
2
2
|
import { a as ForeignKeyConstraint, c as PrimaryKeyConstraint, i as DdlNode, l as UniqueConstraint, n as DdlColumn, o as FunctionColumnDefault, r as DdlColumnDefault, s as LiteralColumnDefault, t as CheckExpressionConstraint, u as isDdlNode } from "./ddl-types-DOgOmDOh-Cs_MY05h.mjs";
|
|
3
3
|
import { n as compact, t as collectOrderedParamRefs } from "./util-DQQgv2j1-D6INZaRG.mjs";
|
|
4
|
-
import { A as sqlCharDescriptor, B as sqlIntDecode, C as isNumeralText, D as signedRange, E as printJsonBody, F as sqlFloatDecodeJson, G as sqlTextDescriptor, H as sqlIntEncode, I as sqlFloatDescriptor, J as sqlVarcharDecode, K as sqlTextEncode, L as sqlFloatEncode, M as sqlCharRenderOutputType, N as sqlFloatColumn, O as sqlCharColumn, P as sqlFloatDecode, R as sqlFloatEncodeJson, S as isNonFiniteText, T as parseJsonBody, U as sqlTextColumn, V as sqlIntDescriptor, W as sqlTextDecode, X as sqlVarcharEncode, Y as sqlVarcharDescriptor, Z as sqlVarcharRenderOutputType, _ as SqlVarcharCodec, a as SQL_FLOAT_CODEC_ID, b as createNumberClassifier, c as SQL_VARCHAR_CODEC_ID, d as SqlFloatCodec, f as SqlFloatDescriptor, g as SqlTextDescriptor, h as SqlTextCodec, i as SQL_CHAR_CODEC_ID, j as sqlCharEncode, k as sqlCharDecode, l as SqlCharCodec, m as SqlIntDescriptor, n as JsonDocumentProjection, o as SQL_INT_CODEC_ID, p as SqlIntCodec, q as sqlVarcharColumn, r as NativeJsonValueProjection, s as SQL_TEXT_CODEC_ID, t as CodecJsonValueProjection, u as SqlCharDescriptor, v as SqlVarcharDescriptor, w as numeralText, x as escapePslString, y as canonicalNumeralText, z as sqlIntColumn } from "./ast
|
|
4
|
+
import { A as sqlCharDescriptor, B as sqlIntDecode, C as isNumeralText, D as signedRange, E as printJsonBody, F as sqlFloatDecodeJson, G as sqlTextDescriptor, H as sqlIntEncode, I as sqlFloatDescriptor, J as sqlVarcharDecode, K as sqlTextEncode, L as sqlFloatEncode, M as sqlCharRenderOutputType, N as sqlFloatColumn, O as sqlCharColumn, P as sqlFloatDecode, R as sqlFloatEncodeJson, S as isNonFiniteText, T as parseJsonBody, U as sqlTextColumn, V as sqlIntDescriptor, W as sqlTextDecode, X as sqlVarcharEncode, Y as sqlVarcharDescriptor, Z as sqlVarcharRenderOutputType, _ as SqlVarcharCodec, a as SQL_FLOAT_CODEC_ID, b as createNumberClassifier, c as SQL_VARCHAR_CODEC_ID, d as SqlFloatCodec, f as SqlFloatDescriptor, g as SqlTextDescriptor, h as SqlTextCodec, i as SQL_CHAR_CODEC_ID, j as sqlCharEncode, k as sqlCharDecode, l as SqlCharCodec, m as SqlIntDescriptor, n as JsonDocumentProjection, o as SQL_INT_CODEC_ID, p as SqlIntCodec, q as sqlVarcharColumn, r as NativeJsonValueProjection, s as SQL_TEXT_CODEC_ID, t as CodecJsonValueProjection, u as SqlCharDescriptor, v as SqlVarcharDescriptor, w as numeralText, x as escapePslString, y as canonicalNumeralText, z as sqlIntColumn } from "./ast--wLzFkbt.mjs";
|
|
5
5
|
import { t as planFromAst } from "./plan-Dh0LbYIv-Crx5-ThG.mjs";
|
|
6
|
-
import { a as param, i as isExpression, n as codecOf, o as toExpr, r as createRawSql, t as buildOperation } from "./expression-
|
|
6
|
+
import { a as param, i as isExpression, n as codecOf, o as toExpr, r as createRawSql, t as buildOperation } from "./expression-CrGD_4do.mjs";
|
|
7
7
|
import { t as createSqlParamRefMutator } from "./middleware-CMr4CHNz-DHIUdxlm.mjs";
|
|
8
8
|
export { AggregateExpr, AndExpr, BinaryExpr, CaseExpr, CastExpr, CheckExpressionConstraint, CodecJsonValueProjection, ColumnRef, DdlColumn, DdlColumnDefault, DdlNode, DefaultValueExpr, DeleteAst, DerivedTableSource, DoNothingConflictAction, DoUpdateSetConflictAction, EqColJoinOn, ExistsExpr, ForeignKeyConstraint, FunctionCallExpr, FunctionColumnDefault, FunctionSource, IdentifierRef, InsertAst, InsertOnConflict, JoinAst, JsonArrayAggExpr, JsonDocumentProjection, JsonObjectExpr, ListExpression, LiteralColumnDefault, LiteralExpr, NativeJsonValueProjection, NotExpr, NullCheckExpr, OperationExpr, OrExpr, OrderByItem, ParamRef, PreparedParamRef, PrimaryKeyConstraint, ProjectionItem, RawExpr, RawQueryAst, SQL_CHAR_CODEC_ID, SQL_FLOAT_CODEC_ID, SQL_INT_CODEC_ID, SQL_TEXT_CODEC_ID, SQL_VARCHAR_CODEC_ID, SelectAst, SqlCharCodec, SqlCharDescriptor, SqlFloatCodec, SqlFloatDescriptor, SqlIntCodec, SqlIntDescriptor, SqlTextCodec, SqlTextDescriptor, SqlVarcharCodec, SqlVarcharDescriptor, SubqueryExpr, TableSource, UniqueConstraint, UpdateAst, WindowFuncExpr, aggregateFnNames, buildOperation, canonicalNumeralText, codecOf, collectOrderedParamRefs, compact, createNumberClassifier, createRawSql, createSqlParamRefMutator, escapePslString, frozenCodecRef, isAggregateFn, isDdlNode, isExpression, isNonFiniteText, isNumeralText, isQueryAst, isWhereExpr, numeralText, param, parseJsonBody, planFromAst, printJsonBody, queryAstKinds, signedRange, sqlCharColumn, sqlCharDecode, sqlCharDescriptor, sqlCharEncode, sqlCharRenderOutputType, sqlFloatColumn, sqlFloatDecode, sqlFloatDecodeJson, sqlFloatDescriptor, sqlFloatEncode, sqlFloatEncodeJson, sqlIntColumn, sqlIntDecode, sqlIntDescriptor, sqlIntEncode, sqlTextColumn, sqlTextDecode, sqlTextDescriptor, sqlTextEncode, sqlVarcharColumn, sqlVarcharDecode, sqlVarcharDescriptor, sqlVarcharEncode, sqlVarcharRenderOutputType, toExpr, whereExprKinds };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as isSqlAggregateDescriptor, t as buildSqlAggregateDescriptorRegistry } from "./aggregate-descriptor-registry-
|
|
1
|
+
import { n as isSqlAggregateDescriptor, t as buildSqlAggregateDescriptorRegistry } from "./aggregate-descriptor-registry-BaMSvS82.mjs";
|
|
2
2
|
export { buildSqlAggregateDescriptorRegistry, isSqlAggregateDescriptor };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { A as PreparedParamRef, B as frozenCodecRef, C as LiteralExpr, D as OrExpr, E as OperationExpr, F as SubqueryExpr, G as whereExprKinds, H as isQueryAst, I as TableSource, L as UpdateAst, M as RawExpr, N as RawQueryAst, O as OrderByItem, P as SelectAst, R as WindowFuncExpr, S as ListExpression, T as NullCheckExpr, U as isWhereExpr, V as isAggregateFn, W as queryAstKinds, _ as InsertAst, a as CastExpr, b as JsonArrayAggExpr, c as DeleteAst, d as DoUpdateSetConflictAction, f as EqColJoinOn, g as IdentifierRef, h as FunctionSource, i as CaseExpr, j as ProjectionItem, k as ParamRef, l as DerivedTableSource, m as FunctionCallExpr, n as AndExpr, o as ColumnRef, p as ExistsExpr, r as BinaryExpr, s as DefaultValueExpr, t as AggregateExpr, u as DoNothingConflictAction, v as InsertOnConflict, w as NotExpr, x as JsonObjectExpr, y as JoinAst, z as aggregateFnNames } from "./types-
|
|
1
|
+
import { A as PreparedParamRef, B as frozenCodecRef, C as LiteralExpr, D as OrExpr, E as OperationExpr, F as SubqueryExpr, G as whereExprKinds, H as isQueryAst, I as TableSource, L as UpdateAst, M as RawExpr, N as RawQueryAst, O as OrderByItem, P as SelectAst, R as WindowFuncExpr, S as ListExpression, T as NullCheckExpr, U as isWhereExpr, V as isAggregateFn, W as queryAstKinds, _ as InsertAst, a as CastExpr, b as JsonArrayAggExpr, c as DeleteAst, d as DoUpdateSetConflictAction, f as EqColJoinOn, g as IdentifierRef, h as FunctionSource, i as CaseExpr, j as ProjectionItem, k as ParamRef, l as DerivedTableSource, m as FunctionCallExpr, n as AndExpr, o as ColumnRef, p as ExistsExpr, r as BinaryExpr, s as DefaultValueExpr, t as AggregateExpr, u as DoNothingConflictAction, v as InsertOnConflict, w as NotExpr, x as JsonObjectExpr, y as JoinAst, z as aggregateFnNames } from "./types-BAhLyUFj-3TARSz8c.mjs";
|
|
2
2
|
import { a as ForeignKeyConstraint, c as PrimaryKeyConstraint, i as DdlNode, l as UniqueConstraint, n as DdlColumn, o as FunctionColumnDefault, r as DdlColumnDefault, s as LiteralColumnDefault, t as CheckExpressionConstraint, u as isDdlNode } from "./ddl-types-DOgOmDOh-Cs_MY05h.mjs";
|
|
3
3
|
import { n as compact, t as collectOrderedParamRefs } from "./util-DQQgv2j1-D6INZaRG.mjs";
|
|
4
|
-
import { A as sqlCharDescriptor, B as sqlIntDecode, C as isNumeralText, D as signedRange, E as printJsonBody, F as sqlFloatDecodeJson, G as sqlTextDescriptor, H as sqlIntEncode, I as sqlFloatDescriptor, J as sqlVarcharDecode, K as sqlTextEncode, L as sqlFloatEncode, M as sqlCharRenderOutputType, N as sqlFloatColumn, O as sqlCharColumn, P as sqlFloatDecode, R as sqlFloatEncodeJson, S as isNonFiniteText, T as parseJsonBody, U as sqlTextColumn, V as sqlIntDescriptor, W as sqlTextDecode, X as sqlVarcharEncode, Y as sqlVarcharDescriptor, Z as sqlVarcharRenderOutputType, _ as SqlVarcharCodec, a as SQL_FLOAT_CODEC_ID, b as createNumberClassifier, c as SQL_VARCHAR_CODEC_ID, d as SqlFloatCodec, f as SqlFloatDescriptor, g as SqlTextDescriptor, h as SqlTextCodec, i as SQL_CHAR_CODEC_ID, j as sqlCharEncode, k as sqlCharDecode, l as SqlCharCodec, m as SqlIntDescriptor, n as JsonDocumentProjection, o as SQL_INT_CODEC_ID, p as SqlIntCodec, q as sqlVarcharColumn, r as NativeJsonValueProjection, s as SQL_TEXT_CODEC_ID, t as CodecJsonValueProjection, u as SqlCharDescriptor, v as SqlVarcharDescriptor, w as numeralText, x as escapePslString, y as canonicalNumeralText, z as sqlIntColumn } from "./ast
|
|
4
|
+
import { A as sqlCharDescriptor, B as sqlIntDecode, C as isNumeralText, D as signedRange, E as printJsonBody, F as sqlFloatDecodeJson, G as sqlTextDescriptor, H as sqlIntEncode, I as sqlFloatDescriptor, J as sqlVarcharDecode, K as sqlTextEncode, L as sqlFloatEncode, M as sqlCharRenderOutputType, N as sqlFloatColumn, O as sqlCharColumn, P as sqlFloatDecode, R as sqlFloatEncodeJson, S as isNonFiniteText, T as parseJsonBody, U as sqlTextColumn, V as sqlIntDescriptor, W as sqlTextDecode, X as sqlVarcharEncode, Y as sqlVarcharDescriptor, Z as sqlVarcharRenderOutputType, _ as SqlVarcharCodec, a as SQL_FLOAT_CODEC_ID, b as createNumberClassifier, c as SQL_VARCHAR_CODEC_ID, d as SqlFloatCodec, f as SqlFloatDescriptor, g as SqlTextDescriptor, h as SqlTextCodec, i as SQL_CHAR_CODEC_ID, j as sqlCharEncode, k as sqlCharDecode, l as SqlCharCodec, m as SqlIntDescriptor, n as JsonDocumentProjection, o as SQL_INT_CODEC_ID, p as SqlIntCodec, q as sqlVarcharColumn, r as NativeJsonValueProjection, s as SQL_TEXT_CODEC_ID, t as CodecJsonValueProjection, u as SqlCharDescriptor, v as SqlVarcharDescriptor, w as numeralText, x as escapePslString, y as canonicalNumeralText, z as sqlIntColumn } from "./ast--wLzFkbt.mjs";
|
|
5
5
|
export { AggregateExpr, AndExpr, BinaryExpr, CaseExpr, CastExpr, CheckExpressionConstraint, CodecJsonValueProjection, ColumnRef, DdlColumn, DdlColumnDefault, DdlNode, DefaultValueExpr, DeleteAst, DerivedTableSource, DoNothingConflictAction, DoUpdateSetConflictAction, EqColJoinOn, ExistsExpr, ForeignKeyConstraint, FunctionCallExpr, FunctionColumnDefault, FunctionSource, IdentifierRef, InsertAst, InsertOnConflict, JoinAst, JsonArrayAggExpr, JsonDocumentProjection, JsonObjectExpr, ListExpression, LiteralColumnDefault, LiteralExpr, NativeJsonValueProjection, NotExpr, NullCheckExpr, OperationExpr, OrExpr, OrderByItem, ParamRef, PreparedParamRef, PrimaryKeyConstraint, ProjectionItem, RawExpr, RawQueryAst, SQL_CHAR_CODEC_ID, SQL_FLOAT_CODEC_ID, SQL_INT_CODEC_ID, SQL_TEXT_CODEC_ID, SQL_VARCHAR_CODEC_ID, SelectAst, SqlCharCodec, SqlCharDescriptor, SqlFloatCodec, SqlFloatDescriptor, SqlIntCodec, SqlIntDescriptor, SqlTextCodec, SqlTextDescriptor, SqlVarcharCodec, SqlVarcharDescriptor, SubqueryExpr, TableSource, UniqueConstraint, UpdateAst, WindowFuncExpr, aggregateFnNames, canonicalNumeralText, collectOrderedParamRefs, compact, createNumberClassifier, escapePslString, frozenCodecRef, isAggregateFn, isDdlNode, isNonFiniteText, isNumeralText, isQueryAst, isWhereExpr, numeralText, parseJsonBody, printJsonBody, queryAstKinds, signedRange, sqlCharColumn, sqlCharDecode, sqlCharDescriptor, sqlCharEncode, sqlCharRenderOutputType, sqlFloatColumn, sqlFloatDecode, sqlFloatDecodeJson, sqlFloatDescriptor, sqlFloatEncode, sqlFloatEncodeJson, sqlIntColumn, sqlIntDecode, sqlIntDescriptor, sqlIntEncode, sqlTextColumn, sqlTextDecode, sqlTextDescriptor, sqlTextEncode, sqlVarcharColumn, sqlVarcharDecode, sqlVarcharDescriptor, sqlVarcharEncode, sqlVarcharRenderOutputType, whereExprKinds };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { C as LiteralExpr, D as OrExpr, E as OperationExpr, I as TableSource, L as UpdateAst, M as RawExpr, O as OrderByItem, P as SelectAst, T as NullCheckExpr, _ as InsertAst, g as IdentifierRef, j as ProjectionItem, k as ParamRef, n as AndExpr, o as ColumnRef, p as ExistsExpr, r as BinaryExpr, t as AggregateExpr, v as InsertOnConflict, y as JoinAst } from "./types-
|
|
1
|
+
import { C as LiteralExpr, D as OrExpr, E as OperationExpr, I as TableSource, L as UpdateAst, M as RawExpr, O as OrderByItem, P as SelectAst, T as NullCheckExpr, _ as InsertAst, g as IdentifierRef, j as ProjectionItem, k as ParamRef, n as AndExpr, o as ColumnRef, p as ExistsExpr, r as BinaryExpr, t as AggregateExpr, v as InsertOnConflict, y as JoinAst } from "./types-BAhLyUFj-3TARSz8c.mjs";
|
|
2
2
|
import { a as ForeignKeyConstraint, c as PrimaryKeyConstraint, l as UniqueConstraint, n as DdlColumn, o as FunctionColumnDefault, s as LiteralColumnDefault, t as CheckExpressionConstraint } from "./ddl-types-DOgOmDOh-Cs_MY05h.mjs";
|
|
3
3
|
import { structuredError } from "@prisma/orm-framework/utils/structured-error";
|
|
4
4
|
import { blindCast } from "@prisma/orm-framework/utils/casts";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relational-core__contract-free.mjs","names":[],"sources":["../../../../2-sql/4-lanes/relational-core/dist/exports/contract-free.mjs"],"sourcesContent":["import { C as LiteralExpr, D as OrExpr, E as OperationExpr, I as TableSource, L as UpdateAst, M as RawExpr, O as OrderByItem, P as SelectAst, T as NullCheckExpr, _ as InsertAst, g as IdentifierRef, j as ProjectionItem, k as ParamRef, n as AndExpr, o as ColumnRef, p as ExistsExpr, r as BinaryExpr, t as AggregateExpr, v as InsertOnConflict, y as JoinAst } from \"../types-ZNKYVjLr.mjs\";\nimport { a as ForeignKeyConstraint, c as PrimaryKeyConstraint, l as UniqueConstraint, n as DdlColumn, o as FunctionColumnDefault, s as LiteralColumnDefault, t as CheckExpressionConstraint } from \"../ddl-types-DOgOmDOh.mjs\";\nimport { structuredError } from \"@internal/utils/structured-error\";\nimport { blindCast } from \"@internal/utils/casts\";\n//#region src/contract-free/column.ts\nfunction lit(value) {\n\treturn new LiteralColumnDefault(value);\n}\nfunction fn(expression) {\n\treturn new FunctionColumnDefault(expression);\n}\nfunction col(name, type, options) {\n\treturn new DdlColumn({\n\t\tname,\n\t\ttype,\n\t\t...options\n\t});\n}\nfunction primaryKey(columns, options) {\n\treturn new PrimaryKeyConstraint({\n\t\tcolumns,\n\t\t...options\n\t});\n}\nfunction foreignKey(columns, refTable, refColumns, options) {\n\treturn new ForeignKeyConstraint({\n\t\tcolumns,\n\t\trefTable,\n\t\trefColumns,\n\t\t...options\n\t});\n}\nfunction unique(columns, options) {\n\treturn new UniqueConstraint({\n\t\tcolumns,\n\t\t...options\n\t});\n}\nfunction checkExpression(name, expression) {\n\treturn new CheckExpressionConstraint({\n\t\tname,\n\t\texpression\n\t});\n}\n//#endregion\n//#region src/contract-free/table.ts\n/**\n* A composable WHERE / ON expression. Wraps an `AnyExpression` and exposes\n* fluent boolean combinators, mirroring the spirit of `sql-builder`'s\n* `Expression` interface without the contract-bound type machinery.\n*/\nvar CfExpr = class CfExpr {\n\tast;\n\tconstructor(ast) {\n\t\tthis.ast = ast;\n\t}\n\tand(other) {\n\t\treturn new CfExpr(AndExpr.of([this.ast, other.ast]));\n\t}\n\tor(other) {\n\t\treturn new CfExpr(OrExpr.of([this.ast, other.ast]));\n\t}\n\tnot() {\n\t\treturn new CfExpr(this.ast.not());\n\t}\n\tisNull() {\n\t\treturn new CfExpr(NullCheckExpr.isNull(this.ast));\n\t}\n\tisNotNull() {\n\t\treturn new CfExpr(NullCheckExpr.isNotNull(this.ast));\n\t}\n\teqLit(value) {\n\t\treturn new CfExpr(BinaryExpr.eq(this.ast, LiteralExpr.of(value)));\n\t}\n\tgtLit(value) {\n\t\treturn new CfExpr(BinaryExpr.gt(this.ast, LiteralExpr.of(value)));\n\t}\n\teqParam(value, codecId) {\n\t\treturn new CfExpr(BinaryExpr.eq(this.ast, ParamRef.of(value, { codec: { codecId } })));\n\t}\n\teqExpr(other) {\n\t\treturn new CfExpr(BinaryExpr.eq(this.ast, other.ast));\n\t}\n};\nconst cfExpr = {\n\tcountStar() {\n\t\treturn new CfExpr(AggregateExpr.count());\n\t},\n\tlit(value) {\n\t\treturn new CfExpr(LiteralExpr.of(value));\n\t},\n\tidentifierRef(name) {\n\t\treturn new CfExpr(IdentifierRef.of(name));\n\t},\n\tparam(value, codecId) {\n\t\treturn new CfExpr(ParamRef.of(value, { codec: { codecId } }));\n\t},\n\t/**\n\t* Catalog function call lowered via a `'function'`-strategy template\n\t* (e.g. `to_regclass({{self}})`). Owns the `OperationExpr` assembly so\n\t* target packages only supply vocabulary: template, codec'd operands,\n\t* and return spec.\n\t*/\n\tfn(options) {\n\t\treturn new CfExpr(new OperationExpr({\n\t\t\tmethod: options.method,\n\t\t\tself: options.self.ast,\n\t\t\targs: options.args?.map((arg) => arg.ast),\n\t\t\treturns: options.returns,\n\t\t\tlowering: {\n\t\t\t\ttargetFamily: \"sql\",\n\t\t\t\ttemplate: options.template\n\t\t\t}\n\t\t}));\n\t},\n\tcolumnRef(qualifier, name) {\n\t\treturn new CfExpr(ColumnRef.of(qualifier, name));\n\t},\n\tallOf(exprs) {\n\t\treturn new CfExpr(AndExpr.of(exprs.map((expr) => expr.ast)));\n\t},\n\t/**\n\t* Opaque DB-side SQL expression (e.g. `current_schema()`) carried as a\n\t* `RawExpr`. For zero-operand catalog functions where a `'function'`\n\t* lowering template has nothing to substitute.\n\t*/\n\traw(sql, returns) {\n\t\treturn new CfExpr(new RawExpr({\n\t\t\tparts: [sql],\n\t\t\treturns\n\t\t}));\n\t},\n\texists(query) {\n\t\treturn new CfExpr(ExistsExpr.exists(query.build()));\n\t},\n\tnotExists(query) {\n\t\treturn new CfExpr(ExistsExpr.notExists(query.build()));\n\t}\n};\n/** Aliased table source for catalog queries (no namespace coordinate). */\nfunction cfTable(name, alias) {\n\treturn TableSource.named(name, alias);\n}\nvar CfExprSelectQuery = class CfExprSelectQuery {\n\tsrc;\n\tprojectionItems;\n\twhereExpr;\n\tjoinItems;\n\tlimitValue;\n\tconstructor(src, projectionItems, whereExpr, joinItems = [], limitValue = void 0) {\n\t\tthis.src = src;\n\t\tthis.projectionItems = projectionItems;\n\t\tthis.whereExpr = whereExpr;\n\t\tthis.joinItems = joinItems;\n\t\tthis.limitValue = limitValue;\n\t}\n\tfrom(source) {\n\t\treturn new CfExprSelectQuery(source, this.projectionItems, this.whereExpr, this.joinItems, this.limitValue);\n\t}\n\tjoin(source, on) {\n\t\treturn new CfExprSelectQuery(this.src, this.projectionItems, this.whereExpr, [...this.joinItems, JoinAst.inner(source, on.ast)], this.limitValue);\n\t}\n\tleftJoin(source, on) {\n\t\treturn new CfExprSelectQuery(this.src, this.projectionItems, this.whereExpr, [...this.joinItems, JoinAst.left(source, on.ast)], this.limitValue);\n\t}\n\tproject(alias, expr) {\n\t\treturn new CfExprSelectQuery(this.src, [...this.projectionItems, ProjectionItem.of(alias, expr.ast)], this.whereExpr, this.joinItems, this.limitValue);\n\t}\n\twhere(expr) {\n\t\treturn new CfExprSelectQuery(this.src, this.projectionItems, expr, this.joinItems, this.limitValue);\n\t}\n\tlimit(value) {\n\t\treturn new CfExprSelectQuery(this.src, this.projectionItems, this.whereExpr, this.joinItems, value);\n\t}\n\tbuild() {\n\t\tif (this.joinItems.length > 0 && this.src === void 0) throw structuredError(\"ORM.ARGUMENT_INVALID\", \"CfExprSelectQuery: cannot add a JOIN without a FROM clause\");\n\t\tconst base = this.src !== void 0 ? SelectAst.from(this.src).withProjection(this.projectionItems) : SelectAst.noFrom().withProjection(this.projectionItems);\n\t\tconst withJoins = this.joinItems.length > 0 ? base.withJoins(this.joinItems) : base;\n\t\tconst withWhere = this.whereExpr !== void 0 ? withJoins.withWhere(this.whereExpr.ast) : withJoins;\n\t\treturn this.limitValue !== void 0 ? withWhere.withLimit(this.limitValue) : withWhere;\n\t}\n};\nfunction exprSelect() {\n\treturn new CfExprSelectQuery(void 0, [], void 0);\n}\nvar CfInsertQuery = class CfInsertQuery {\n\tsrc;\n\tschema;\n\trowValues;\n\treturningItems;\n\tconstructor(src, schema, rowValues, returningItems = void 0) {\n\t\tthis.src = src;\n\t\tthis.schema = schema;\n\t\tthis.rowValues = rowValues;\n\t\tthis.returningItems = returningItems;\n\t}\n\treturning(...columns) {\n\t\treturn new CfInsertQuery(this.src, this.schema, this.rowValues, columns.map((col) => col.toProjectionItem()));\n\t}\n\tbuild() {\n\t\tconst row = buildInsertRow(this.schema, this.rowValues);\n\t\tconst ast = InsertAst.into(this.src).withRows([row]);\n\t\treturn this.returningItems ? ast.withReturning(this.returningItems) : ast;\n\t}\n};\nvar CfUpsertBuilder = class {\n\tsrc;\n\tschema;\n\trowValues;\n\tconstructor(src, schema, rowValues) {\n\t\tthis.src = src;\n\t\tthis.schema = schema;\n\t\tthis.rowValues = rowValues;\n\t}\n\tonConflict(...columns) {\n\t\treturn new CfConflictClause(this.src, this.schema, this.rowValues, [...columns]);\n\t}\n};\nvar CfConflictClause = class {\n\tsrc;\n\tschema;\n\trowValues;\n\tconflictCols;\n\tconstructor(src, schema, rowValues, conflictCols) {\n\t\tthis.src = src;\n\t\tthis.schema = schema;\n\t\tthis.rowValues = rowValues;\n\t\tthis.conflictCols = conflictCols;\n\t}\n\tdoUpdate(setOrCallback) {\n\t\tconst set = typeof setOrCallback === \"function\" ? setOrCallback(buildExcludedProxy(this.schema)) : setOrCallback;\n\t\treturn new CfUpsertQuery(this.src, this.schema, this.rowValues, this.conflictCols, set);\n\t}\n\tdoNothing() {\n\t\treturn new CfUpsertQuery(this.src, this.schema, this.rowValues, this.conflictCols, void 0);\n\t}\n};\nvar CfUpsertQuery = class {\n\tsrc;\n\tschema;\n\trowValues;\n\tconflictCols;\n\tupdateSet;\n\tconstructor(src, schema, rowValues, conflictCols, updateSet) {\n\t\tthis.src = src;\n\t\tthis.schema = schema;\n\t\tthis.rowValues = rowValues;\n\t\tthis.conflictCols = conflictCols;\n\t\tthis.updateSet = updateSet;\n\t}\n\tbuild() {\n\t\tconst row = buildInsertRow(this.schema, this.rowValues);\n\t\tconst conflictRefs = this.conflictCols.map((col) => col.toRef());\n\t\tconst onConflict = this.updateSet === void 0 ? InsertOnConflict.on(conflictRefs).doNothing() : InsertOnConflict.on(conflictRefs).doUpdateSet(buildSetMap(this.schema, this.updateSet));\n\t\treturn InsertAst.into(this.src).withRows([row]).withOnConflict(onConflict);\n\t}\n};\nvar CfUpdateQuery = class CfUpdateQuery {\n\tsrc;\n\tschema;\n\tsetValues;\n\twhereExpr;\n\treturningItems;\n\tconstructor(src, schema, setValues = void 0, whereExpr = void 0, returningItems = void 0) {\n\t\tthis.src = src;\n\t\tthis.schema = schema;\n\t\tthis.setValues = setValues;\n\t\tthis.whereExpr = whereExpr;\n\t\tthis.returningItems = returningItems;\n\t}\n\tset(values) {\n\t\treturn new CfUpdateQuery(this.src, this.schema, values, this.whereExpr, this.returningItems);\n\t}\n\twhere(expr) {\n\t\treturn new CfUpdateQuery(this.src, this.schema, this.setValues, expr, this.returningItems);\n\t}\n\treturning(...columns) {\n\t\treturn new CfUpdateQuery(this.src, this.schema, this.setValues, this.whereExpr, columns.map((col) => col.toProjectionItem()));\n\t}\n\tbuild() {\n\t\tconst set = buildSetMap(this.schema, this.setValues);\n\t\tconst base = UpdateAst.table(this.src).withSet(set);\n\t\tconst withWhere = this.whereExpr ? base.withWhere(this.whereExpr.ast) : base;\n\t\treturn this.returningItems ? withWhere.withReturning(this.returningItems) : withWhere;\n\t}\n};\nvar CfSelectQuery = class CfSelectQuery {\n\tsrc;\n\tprojectionItems;\n\twhereExpr;\n\torderByItems;\n\tconstructor(src, projectionItems, whereExpr = void 0, orderByItems = []) {\n\t\tthis.src = src;\n\t\tthis.projectionItems = projectionItems;\n\t\tthis.whereExpr = whereExpr;\n\t\tthis.orderByItems = orderByItems;\n\t}\n\twhere(expr) {\n\t\treturn new CfSelectQuery(this.src, this.projectionItems, expr, this.orderByItems);\n\t}\n\torderBy(column, dir = \"asc\") {\n\t\tconst item = dir === \"asc\" ? OrderByItem.asc(column.toRef()) : OrderByItem.desc(column.toRef());\n\t\treturn new CfSelectQuery(this.src, this.projectionItems, this.whereExpr, [...this.orderByItems, item]);\n\t}\n\tbuild() {\n\t\tconst base = SelectAst.from(this.src).withProjection(this.projectionItems);\n\t\tconst withWhere = this.whereExpr ? base.withWhere(this.whereExpr.ast) : base;\n\t\treturn this.orderByItems.length > 0 ? withWhere.withOrderBy(this.orderByItems) : withWhere;\n\t}\n};\n/**\n* Declare a control-plane table once, binding column codecs at declaration time.\n* Returns a `TableHandle` whose column properties compose expressions directly\n* without per-call-site codec or column-name threading.\n*\n* ```ts\n* const marker = pgTable({ name: 'marker', schema: 'prisma_contract' }, {\n* space: text(),\n* core_hash: text(),\n* updated_at: timestamptz(),\n* });\n*\n* const query = marker.update()\n* .set({ core_hash: newHash, updated_at: NOW })\n* .where(marker.space.eq(space).and(marker.core_hash.eq(expectedFrom)))\n* .returning(marker.space)\n* .build();\n* ```\n*/\nfunction table(source, schema) {\n\tconst proxies = {};\n\tfor (const [col, desc] of Object.entries(schema)) proxies[col] = makeColumnProxy(source.alias ?? source.name, col, desc);\n\treturn blindCast({\n\t\t...proxies,\n\t\tsource,\n\t\tinsert: (row) => new CfInsertQuery(source, schema, row),\n\t\tupsert: (row) => new CfUpsertBuilder(source, schema, row),\n\t\tupdate: () => new CfUpdateQuery(source, schema),\n\t\tselect: (...cols) => new CfSelectQuery(source, cols.map((col) => col.toProjectionItem()))\n\t});\n}\nfunction makeColumnProxy(tableName, columnName, desc) {\n\tconst ref = ColumnRef.of(tableName, columnName);\n\treturn {\n\t\tcodecId: desc.codecId,\n\t\tnullable: desc.nullable,\n\t\tcolumnName,\n\t\ttableName,\n\t\teq: (value) => value === null ? new CfExpr(NullCheckExpr.isNull(ref)) : new CfExpr(BinaryExpr.eq(ref, toSetExpression(value, desc))),\n\t\tneq: (value) => value === null ? new CfExpr(NullCheckExpr.isNotNull(ref)) : new CfExpr(BinaryExpr.neq(ref, toSetExpression(value, desc))),\n\t\tisNull: () => new CfExpr(NullCheckExpr.isNull(ref)),\n\t\tisNotNull: () => new CfExpr(NullCheckExpr.isNotNull(ref)),\n\t\ttoRef: () => ref,\n\t\ttoProjectionItem: (alias = columnName) => ProjectionItem.of(alias, ref, { codecId: desc.codecId })\n\t};\n}\nfunction buildExcludedProxy(schema) {\n\treturn blindCast(Object.fromEntries(Object.keys(schema).map((col) => [col, ColumnRef.of(\"excluded\", col)])));\n}\nfunction isExpressionSource(value) {\n\treturn typeof value === \"object\" && value !== null && \"toExpr\" in value && typeof value.toExpr === \"function\";\n}\nfunction toInsertValue(value, desc) {\n\tif (isExpressionSource(value)) {\n\t\tconst expr = value.toExpr();\n\t\tif (expr.kind === \"column-ref\" || expr.kind === \"param-ref\" || expr.kind === \"prepared-param-ref\" || expr.kind === \"raw-expr\") return expr;\n\t}\n\treturn ParamRef.of(value, { codec: { codecId: desc.codecId } });\n}\nfunction toSetExpression(value, desc) {\n\tif (isExpressionSource(value)) return value.toExpr();\n\treturn ParamRef.of(value, { codec: { codecId: desc.codecId } });\n}\nfunction buildInsertRow(schema, values) {\n\tconst row = {};\n\tconst rawValues = blindCast(values);\n\tfor (const [col, desc] of Object.entries(schema)) row[col] = toInsertValue(rawValues[col], desc);\n\treturn row;\n}\nfunction buildSetMap(schema, values) {\n\tif (values === void 0) return {};\n\tconst set = {};\n\tconst rawSchema = blindCast(schema);\n\tconst rawValues = blindCast(values);\n\tfor (const [col, value] of Object.entries(rawValues)) {\n\t\tconst desc = rawSchema[col];\n\t\tif (desc !== void 0) set[col] = toSetExpression(value, desc);\n\t}\n\treturn set;\n}\n//#endregion\nexport { CfConflictClause, CfExpr, CfExprSelectQuery, CfInsertQuery, CfSelectQuery, CfUpdateQuery, CfUpsertBuilder, CfUpsertQuery, cfExpr, cfTable, checkExpression, col, exprSelect, fn, foreignKey, lit, primaryKey, table, unique };\n\n//# sourceMappingURL=contract-free.mjs.map"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"relational-core__contract-free.mjs","names":[],"sources":["../../../../2-sql/4-lanes/relational-core/dist/exports/contract-free.mjs"],"sourcesContent":["import { C as LiteralExpr, D as OrExpr, E as OperationExpr, I as TableSource, L as UpdateAst, M as RawExpr, O as OrderByItem, P as SelectAst, T as NullCheckExpr, _ as InsertAst, g as IdentifierRef, j as ProjectionItem, k as ParamRef, n as AndExpr, o as ColumnRef, p as ExistsExpr, r as BinaryExpr, t as AggregateExpr, v as InsertOnConflict, y as JoinAst } from \"../types-BAhLyUFj.mjs\";\nimport { a as ForeignKeyConstraint, c as PrimaryKeyConstraint, l as UniqueConstraint, n as DdlColumn, o as FunctionColumnDefault, s as LiteralColumnDefault, t as CheckExpressionConstraint } from \"../ddl-types-DOgOmDOh.mjs\";\nimport { structuredError } from \"@internal/utils/structured-error\";\nimport { blindCast } from \"@internal/utils/casts\";\n//#region src/contract-free/column.ts\nfunction lit(value) {\n\treturn new LiteralColumnDefault(value);\n}\nfunction fn(expression) {\n\treturn new FunctionColumnDefault(expression);\n}\nfunction col(name, type, options) {\n\treturn new DdlColumn({\n\t\tname,\n\t\ttype,\n\t\t...options\n\t});\n}\nfunction primaryKey(columns, options) {\n\treturn new PrimaryKeyConstraint({\n\t\tcolumns,\n\t\t...options\n\t});\n}\nfunction foreignKey(columns, refTable, refColumns, options) {\n\treturn new ForeignKeyConstraint({\n\t\tcolumns,\n\t\trefTable,\n\t\trefColumns,\n\t\t...options\n\t});\n}\nfunction unique(columns, options) {\n\treturn new UniqueConstraint({\n\t\tcolumns,\n\t\t...options\n\t});\n}\nfunction checkExpression(name, expression) {\n\treturn new CheckExpressionConstraint({\n\t\tname,\n\t\texpression\n\t});\n}\n//#endregion\n//#region src/contract-free/table.ts\n/**\n* A composable WHERE / ON expression. Wraps an `AnyExpression` and exposes\n* fluent boolean combinators, mirroring the spirit of `sql-builder`'s\n* `Expression` interface without the contract-bound type machinery.\n*/\nvar CfExpr = class CfExpr {\n\tast;\n\tconstructor(ast) {\n\t\tthis.ast = ast;\n\t}\n\tand(other) {\n\t\treturn new CfExpr(AndExpr.of([this.ast, other.ast]));\n\t}\n\tor(other) {\n\t\treturn new CfExpr(OrExpr.of([this.ast, other.ast]));\n\t}\n\tnot() {\n\t\treturn new CfExpr(this.ast.not());\n\t}\n\tisNull() {\n\t\treturn new CfExpr(NullCheckExpr.isNull(this.ast));\n\t}\n\tisNotNull() {\n\t\treturn new CfExpr(NullCheckExpr.isNotNull(this.ast));\n\t}\n\teqLit(value) {\n\t\treturn new CfExpr(BinaryExpr.eq(this.ast, LiteralExpr.of(value)));\n\t}\n\tgtLit(value) {\n\t\treturn new CfExpr(BinaryExpr.gt(this.ast, LiteralExpr.of(value)));\n\t}\n\teqParam(value, codecId) {\n\t\treturn new CfExpr(BinaryExpr.eq(this.ast, ParamRef.of(value, { codec: { codecId } })));\n\t}\n\teqExpr(other) {\n\t\treturn new CfExpr(BinaryExpr.eq(this.ast, other.ast));\n\t}\n};\nconst cfExpr = {\n\tcountStar() {\n\t\treturn new CfExpr(AggregateExpr.count());\n\t},\n\tlit(value) {\n\t\treturn new CfExpr(LiteralExpr.of(value));\n\t},\n\tidentifierRef(name) {\n\t\treturn new CfExpr(IdentifierRef.of(name));\n\t},\n\tparam(value, codecId) {\n\t\treturn new CfExpr(ParamRef.of(value, { codec: { codecId } }));\n\t},\n\t/**\n\t* Catalog function call lowered via a `'function'`-strategy template\n\t* (e.g. `to_regclass({{self}})`). Owns the `OperationExpr` assembly so\n\t* target packages only supply vocabulary: template, codec'd operands,\n\t* and return spec.\n\t*/\n\tfn(options) {\n\t\treturn new CfExpr(new OperationExpr({\n\t\t\tmethod: options.method,\n\t\t\tself: options.self.ast,\n\t\t\targs: options.args?.map((arg) => arg.ast),\n\t\t\treturns: options.returns,\n\t\t\tlowering: {\n\t\t\t\ttargetFamily: \"sql\",\n\t\t\t\ttemplate: options.template\n\t\t\t}\n\t\t}));\n\t},\n\tcolumnRef(qualifier, name) {\n\t\treturn new CfExpr(ColumnRef.of(qualifier, name));\n\t},\n\tallOf(exprs) {\n\t\treturn new CfExpr(AndExpr.of(exprs.map((expr) => expr.ast)));\n\t},\n\t/**\n\t* Opaque DB-side SQL expression (e.g. `current_schema()`) carried as a\n\t* `RawExpr`. For zero-operand catalog functions where a `'function'`\n\t* lowering template has nothing to substitute.\n\t*/\n\traw(sql, returns) {\n\t\treturn new CfExpr(new RawExpr({\n\t\t\tparts: [sql],\n\t\t\treturns\n\t\t}));\n\t},\n\texists(query) {\n\t\treturn new CfExpr(ExistsExpr.exists(query.build()));\n\t},\n\tnotExists(query) {\n\t\treturn new CfExpr(ExistsExpr.notExists(query.build()));\n\t}\n};\n/** Aliased table source for catalog queries (no namespace coordinate). */\nfunction cfTable(name, alias) {\n\treturn TableSource.named(name, alias);\n}\nvar CfExprSelectQuery = class CfExprSelectQuery {\n\tsrc;\n\tprojectionItems;\n\twhereExpr;\n\tjoinItems;\n\tlimitValue;\n\tconstructor(src, projectionItems, whereExpr, joinItems = [], limitValue = void 0) {\n\t\tthis.src = src;\n\t\tthis.projectionItems = projectionItems;\n\t\tthis.whereExpr = whereExpr;\n\t\tthis.joinItems = joinItems;\n\t\tthis.limitValue = limitValue;\n\t}\n\tfrom(source) {\n\t\treturn new CfExprSelectQuery(source, this.projectionItems, this.whereExpr, this.joinItems, this.limitValue);\n\t}\n\tjoin(source, on) {\n\t\treturn new CfExprSelectQuery(this.src, this.projectionItems, this.whereExpr, [...this.joinItems, JoinAst.inner(source, on.ast)], this.limitValue);\n\t}\n\tleftJoin(source, on) {\n\t\treturn new CfExprSelectQuery(this.src, this.projectionItems, this.whereExpr, [...this.joinItems, JoinAst.left(source, on.ast)], this.limitValue);\n\t}\n\tproject(alias, expr) {\n\t\treturn new CfExprSelectQuery(this.src, [...this.projectionItems, ProjectionItem.of(alias, expr.ast)], this.whereExpr, this.joinItems, this.limitValue);\n\t}\n\twhere(expr) {\n\t\treturn new CfExprSelectQuery(this.src, this.projectionItems, expr, this.joinItems, this.limitValue);\n\t}\n\tlimit(value) {\n\t\treturn new CfExprSelectQuery(this.src, this.projectionItems, this.whereExpr, this.joinItems, value);\n\t}\n\tbuild() {\n\t\tif (this.joinItems.length > 0 && this.src === void 0) throw structuredError(\"ORM.ARGUMENT_INVALID\", \"CfExprSelectQuery: cannot add a JOIN without a FROM clause\");\n\t\tconst base = this.src !== void 0 ? SelectAst.from(this.src).withProjection(this.projectionItems) : SelectAst.noFrom().withProjection(this.projectionItems);\n\t\tconst withJoins = this.joinItems.length > 0 ? base.withJoins(this.joinItems) : base;\n\t\tconst withWhere = this.whereExpr !== void 0 ? withJoins.withWhere(this.whereExpr.ast) : withJoins;\n\t\treturn this.limitValue !== void 0 ? withWhere.withLimit(this.limitValue) : withWhere;\n\t}\n};\nfunction exprSelect() {\n\treturn new CfExprSelectQuery(void 0, [], void 0);\n}\nvar CfInsertQuery = class CfInsertQuery {\n\tsrc;\n\tschema;\n\trowValues;\n\treturningItems;\n\tconstructor(src, schema, rowValues, returningItems = void 0) {\n\t\tthis.src = src;\n\t\tthis.schema = schema;\n\t\tthis.rowValues = rowValues;\n\t\tthis.returningItems = returningItems;\n\t}\n\treturning(...columns) {\n\t\treturn new CfInsertQuery(this.src, this.schema, this.rowValues, columns.map((col) => col.toProjectionItem()));\n\t}\n\tbuild() {\n\t\tconst row = buildInsertRow(this.schema, this.rowValues);\n\t\tconst ast = InsertAst.into(this.src).withRows([row]);\n\t\treturn this.returningItems ? ast.withReturning(this.returningItems) : ast;\n\t}\n};\nvar CfUpsertBuilder = class {\n\tsrc;\n\tschema;\n\trowValues;\n\tconstructor(src, schema, rowValues) {\n\t\tthis.src = src;\n\t\tthis.schema = schema;\n\t\tthis.rowValues = rowValues;\n\t}\n\tonConflict(...columns) {\n\t\treturn new CfConflictClause(this.src, this.schema, this.rowValues, [...columns]);\n\t}\n};\nvar CfConflictClause = class {\n\tsrc;\n\tschema;\n\trowValues;\n\tconflictCols;\n\tconstructor(src, schema, rowValues, conflictCols) {\n\t\tthis.src = src;\n\t\tthis.schema = schema;\n\t\tthis.rowValues = rowValues;\n\t\tthis.conflictCols = conflictCols;\n\t}\n\tdoUpdate(setOrCallback) {\n\t\tconst set = typeof setOrCallback === \"function\" ? setOrCallback(buildExcludedProxy(this.schema)) : setOrCallback;\n\t\treturn new CfUpsertQuery(this.src, this.schema, this.rowValues, this.conflictCols, set);\n\t}\n\tdoNothing() {\n\t\treturn new CfUpsertQuery(this.src, this.schema, this.rowValues, this.conflictCols, void 0);\n\t}\n};\nvar CfUpsertQuery = class {\n\tsrc;\n\tschema;\n\trowValues;\n\tconflictCols;\n\tupdateSet;\n\tconstructor(src, schema, rowValues, conflictCols, updateSet) {\n\t\tthis.src = src;\n\t\tthis.schema = schema;\n\t\tthis.rowValues = rowValues;\n\t\tthis.conflictCols = conflictCols;\n\t\tthis.updateSet = updateSet;\n\t}\n\tbuild() {\n\t\tconst row = buildInsertRow(this.schema, this.rowValues);\n\t\tconst conflictRefs = this.conflictCols.map((col) => col.toRef());\n\t\tconst onConflict = this.updateSet === void 0 ? InsertOnConflict.on(conflictRefs).doNothing() : InsertOnConflict.on(conflictRefs).doUpdateSet(buildSetMap(this.schema, this.updateSet));\n\t\treturn InsertAst.into(this.src).withRows([row]).withOnConflict(onConflict);\n\t}\n};\nvar CfUpdateQuery = class CfUpdateQuery {\n\tsrc;\n\tschema;\n\tsetValues;\n\twhereExpr;\n\treturningItems;\n\tconstructor(src, schema, setValues = void 0, whereExpr = void 0, returningItems = void 0) {\n\t\tthis.src = src;\n\t\tthis.schema = schema;\n\t\tthis.setValues = setValues;\n\t\tthis.whereExpr = whereExpr;\n\t\tthis.returningItems = returningItems;\n\t}\n\tset(values) {\n\t\treturn new CfUpdateQuery(this.src, this.schema, values, this.whereExpr, this.returningItems);\n\t}\n\twhere(expr) {\n\t\treturn new CfUpdateQuery(this.src, this.schema, this.setValues, expr, this.returningItems);\n\t}\n\treturning(...columns) {\n\t\treturn new CfUpdateQuery(this.src, this.schema, this.setValues, this.whereExpr, columns.map((col) => col.toProjectionItem()));\n\t}\n\tbuild() {\n\t\tconst set = buildSetMap(this.schema, this.setValues);\n\t\tconst base = UpdateAst.table(this.src).withSet(set);\n\t\tconst withWhere = this.whereExpr ? base.withWhere(this.whereExpr.ast) : base;\n\t\treturn this.returningItems ? withWhere.withReturning(this.returningItems) : withWhere;\n\t}\n};\nvar CfSelectQuery = class CfSelectQuery {\n\tsrc;\n\tprojectionItems;\n\twhereExpr;\n\torderByItems;\n\tconstructor(src, projectionItems, whereExpr = void 0, orderByItems = []) {\n\t\tthis.src = src;\n\t\tthis.projectionItems = projectionItems;\n\t\tthis.whereExpr = whereExpr;\n\t\tthis.orderByItems = orderByItems;\n\t}\n\twhere(expr) {\n\t\treturn new CfSelectQuery(this.src, this.projectionItems, expr, this.orderByItems);\n\t}\n\torderBy(column, dir = \"asc\") {\n\t\tconst item = dir === \"asc\" ? OrderByItem.asc(column.toRef()) : OrderByItem.desc(column.toRef());\n\t\treturn new CfSelectQuery(this.src, this.projectionItems, this.whereExpr, [...this.orderByItems, item]);\n\t}\n\tbuild() {\n\t\tconst base = SelectAst.from(this.src).withProjection(this.projectionItems);\n\t\tconst withWhere = this.whereExpr ? base.withWhere(this.whereExpr.ast) : base;\n\t\treturn this.orderByItems.length > 0 ? withWhere.withOrderBy(this.orderByItems) : withWhere;\n\t}\n};\n/**\n* Declare a control-plane table once, binding column codecs at declaration time.\n* Returns a `TableHandle` whose column properties compose expressions directly\n* without per-call-site codec or column-name threading.\n*\n* ```ts\n* const marker = pgTable({ name: 'marker', schema: 'prisma_contract' }, {\n* space: text(),\n* core_hash: text(),\n* updated_at: timestamptz(),\n* });\n*\n* const query = marker.update()\n* .set({ core_hash: newHash, updated_at: NOW })\n* .where(marker.space.eq(space).and(marker.core_hash.eq(expectedFrom)))\n* .returning(marker.space)\n* .build();\n* ```\n*/\nfunction table(source, schema) {\n\tconst proxies = {};\n\tfor (const [col, desc] of Object.entries(schema)) proxies[col] = makeColumnProxy(source.alias ?? source.name, col, desc);\n\treturn blindCast({\n\t\t...proxies,\n\t\tsource,\n\t\tinsert: (row) => new CfInsertQuery(source, schema, row),\n\t\tupsert: (row) => new CfUpsertBuilder(source, schema, row),\n\t\tupdate: () => new CfUpdateQuery(source, schema),\n\t\tselect: (...cols) => new CfSelectQuery(source, cols.map((col) => col.toProjectionItem()))\n\t});\n}\nfunction makeColumnProxy(tableName, columnName, desc) {\n\tconst ref = ColumnRef.of(tableName, columnName);\n\treturn {\n\t\tcodecId: desc.codecId,\n\t\tnullable: desc.nullable,\n\t\tcolumnName,\n\t\ttableName,\n\t\teq: (value) => value === null ? new CfExpr(NullCheckExpr.isNull(ref)) : new CfExpr(BinaryExpr.eq(ref, toSetExpression(value, desc))),\n\t\tneq: (value) => value === null ? new CfExpr(NullCheckExpr.isNotNull(ref)) : new CfExpr(BinaryExpr.neq(ref, toSetExpression(value, desc))),\n\t\tisNull: () => new CfExpr(NullCheckExpr.isNull(ref)),\n\t\tisNotNull: () => new CfExpr(NullCheckExpr.isNotNull(ref)),\n\t\ttoRef: () => ref,\n\t\ttoProjectionItem: (alias = columnName) => ProjectionItem.of(alias, ref, { codecId: desc.codecId })\n\t};\n}\nfunction buildExcludedProxy(schema) {\n\treturn blindCast(Object.fromEntries(Object.keys(schema).map((col) => [col, ColumnRef.of(\"excluded\", col)])));\n}\nfunction isExpressionSource(value) {\n\treturn typeof value === \"object\" && value !== null && \"toExpr\" in value && typeof value.toExpr === \"function\";\n}\nfunction toInsertValue(value, desc) {\n\tif (isExpressionSource(value)) {\n\t\tconst expr = value.toExpr();\n\t\tif (expr.kind === \"column-ref\" || expr.kind === \"param-ref\" || expr.kind === \"prepared-param-ref\" || expr.kind === \"raw-expr\") return expr;\n\t}\n\treturn ParamRef.of(value, { codec: { codecId: desc.codecId } });\n}\nfunction toSetExpression(value, desc) {\n\tif (isExpressionSource(value)) return value.toExpr();\n\treturn ParamRef.of(value, { codec: { codecId: desc.codecId } });\n}\nfunction buildInsertRow(schema, values) {\n\tconst row = {};\n\tconst rawValues = blindCast(values);\n\tfor (const [col, desc] of Object.entries(schema)) row[col] = toInsertValue(rawValues[col], desc);\n\treturn row;\n}\nfunction buildSetMap(schema, values) {\n\tif (values === void 0) return {};\n\tconst set = {};\n\tconst rawSchema = blindCast(schema);\n\tconst rawValues = blindCast(values);\n\tfor (const [col, value] of Object.entries(rawValues)) {\n\t\tconst desc = rawSchema[col];\n\t\tif (desc !== void 0) set[col] = toSetExpression(value, desc);\n\t}\n\treturn set;\n}\n//#endregion\nexport { CfConflictClause, CfExpr, CfExprSelectQuery, CfInsertQuery, CfSelectQuery, CfUpdateQuery, CfUpsertBuilder, CfUpsertQuery, cfExpr, cfTable, checkExpression, col, exprSelect, fn, foreignKey, lit, primaryKey, table, unique };\n\n//# sourceMappingURL=contract-free.mjs.map"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as param, i as isExpression, n as codecOf, o as toExpr, r as createRawSql, t as buildOperation } from "./expression-
|
|
1
|
+
import { a as param, i as isExpression, n as codecOf, o as toExpr, r as createRawSql, t as buildOperation } from "./expression-CrGD_4do.mjs";
|
|
2
2
|
export { buildOperation, codecOf, createRawSql, isExpression, param, toExpr };
|
package/dist/runtime.mjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { t as createSqlOperationRegistry } from "./dist-C_q1_QR9.mjs";
|
|
2
|
-
import { A as PreparedParamRef, H as isQueryAst } from "./types-
|
|
2
|
+
import { A as PreparedParamRef, H as isQueryAst } from "./types-BAhLyUFj-3TARSz8c.mjs";
|
|
3
3
|
import { t as collectOrderedParamRefs } from "./util-DQQgv2j1-D6INZaRG.mjs";
|
|
4
4
|
import { t as createSqlParamRefMutator } from "./middleware-CMr4CHNz-DHIUdxlm.mjs";
|
|
5
|
-
import { t as buildSqlAggregateDescriptorRegistry } from "./aggregate-descriptor-registry-
|
|
5
|
+
import { t as buildSqlAggregateDescriptorRegistry } from "./aggregate-descriptor-registry-BaMSvS82.mjs";
|
|
6
6
|
import { t as buildCodecDescriptorRegistry } from "./codec-descriptor-registry-ECZ4ohtG.mjs";
|
|
7
7
|
import { i as runPreparedQuery, n as preparedStatementQuery, r as runPreparedExecute, t as preparedStatementExecute } from "./prepared-query-BJr50wPm-ChoqfJbX.mjs";
|
|
8
8
|
import { isStructuredError } from "@prisma/orm-framework/utils/structured-error";
|
package/dist/{sql-attribute-specs-BjCzXYcO-Cj8SS3iE.mjs → sql-attribute-specs-DH3Yxb21-CZV-L28L.mjs}
RENAMED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import { isAuthoringFieldPresetDescriptor } from "@prisma/orm-framework/components/authoring";
|
|
1
2
|
import { blindCast } from "@prisma/orm-framework/utils/casts";
|
|
2
3
|
import { FunctionCallAst } from "@prisma/orm-framework/psl-parser/syntax";
|
|
3
4
|
import { notOk } from "@prisma/orm-framework/utils/result";
|
|
4
|
-
import { bool, diagnosticSource, entityRef, fieldAttribute, fieldRef, funcCall, identifier, interpretAttribute, leafDiagnostic, list, modelAttribute, nodePslSpan, numLiteral, oneOf, optional, record, referencedFieldRef, str, taggedLiteral } from "@prisma/orm-framework/psl-parser";
|
|
5
|
-
//#region ../../../2-sql/2-authoring/contract-psl/dist/sql-attribute-specs-
|
|
5
|
+
import { bool, createBinder, diagnosticSource, entityRef, fieldAttribute, fieldRef, funcCall, identifier, interpretAttribute, leafDiagnostic, list, modelAttribute, nodePslSpan, numLiteral, oneOf, optional, record, referencedFieldRef, str, taggedLiteral } from "@prisma/orm-framework/psl-parser";
|
|
6
|
+
//#region ../../../2-sql/2-authoring/contract-psl/dist/sql-attribute-specs-DH3Yxb21.mjs
|
|
6
7
|
function formatSupportedFunctionList(registry) {
|
|
7
8
|
const signatures = Array.from(registry.entries()).sort(([a], [b]) => a.localeCompare(b)).flatMap(([functionName, entry]) => {
|
|
8
9
|
const usageSignatures = entry.usageSignatures?.filter((signature) => signature.length > 0);
|
|
@@ -47,6 +48,7 @@ function buildModelAttributeCtx(input) {
|
|
|
47
48
|
return {
|
|
48
49
|
sources: input.sources,
|
|
49
50
|
selfModel: input.selfModel,
|
|
51
|
+
binder: input.binder,
|
|
50
52
|
symbols: input.symbols
|
|
51
53
|
};
|
|
52
54
|
}
|
|
@@ -54,16 +56,56 @@ function buildFieldAttributeCtx(input) {
|
|
|
54
56
|
return {
|
|
55
57
|
sources: input.sources,
|
|
56
58
|
selfModel: input.selfModel,
|
|
57
|
-
resolveReferencedModel: input.resolveReferencedModel ?? (() => void 0),
|
|
58
59
|
field: input.field,
|
|
60
|
+
binder: input.binder,
|
|
59
61
|
symbols: input.symbols
|
|
60
62
|
};
|
|
61
63
|
}
|
|
64
|
+
function fieldPresetsAsTypeNames(namespace) {
|
|
65
|
+
if (namespace === void 0) return {};
|
|
66
|
+
const result = {};
|
|
67
|
+
for (const [name, value] of Object.entries(namespace)) result[name] = isAuthoringFieldPresetDescriptor(value) ? {
|
|
68
|
+
kind: "typeConstructor",
|
|
69
|
+
output: { codecId: value.output.codecId }
|
|
70
|
+
} : fieldPresetsAsTypeNames(value);
|
|
71
|
+
return result;
|
|
72
|
+
}
|
|
73
|
+
function modelAttributeSpecsFrom(modelAttributesByName) {
|
|
74
|
+
const result = Object.create(null);
|
|
75
|
+
for (const [name, descriptor] of modelAttributesByName) result[name] = blindCast(descriptor.spec);
|
|
76
|
+
return result;
|
|
77
|
+
}
|
|
78
|
+
function createSqlBinder(input) {
|
|
79
|
+
const scalars = {};
|
|
80
|
+
for (const [name, descriptor] of input.scalarColumnDescriptors ?? []) scalars[name] = {
|
|
81
|
+
kind: "typeConstructor",
|
|
82
|
+
output: { codecId: descriptor.codecId }
|
|
83
|
+
};
|
|
84
|
+
return createBinder({
|
|
85
|
+
sources: input.sources,
|
|
86
|
+
symbolTable: input.symbolTable,
|
|
87
|
+
typeConstructors: {
|
|
88
|
+
...scalars,
|
|
89
|
+
...fieldPresetsAsTypeNames(input.authoringContributions?.field),
|
|
90
|
+
...input.authoringContributions?.type ?? {}
|
|
91
|
+
},
|
|
92
|
+
attributeSpecs: {
|
|
93
|
+
model: Object.assign(Object.create(null), sqlAttributeSpecs.model, input.contributedModelAttributeSpecs),
|
|
94
|
+
field: sqlAttributeSpecs.field
|
|
95
|
+
},
|
|
96
|
+
controlMutationDefaults: input.controlMutationDefaults ?? {
|
|
97
|
+
defaultFunctionRegistry: /* @__PURE__ */ new Map(),
|
|
98
|
+
dataTypeEntries: {}
|
|
99
|
+
},
|
|
100
|
+
describeUnsupportedAttribute: input.describeUnsupportedAttribute
|
|
101
|
+
});
|
|
102
|
+
}
|
|
62
103
|
function interpretModelAttribute(input) {
|
|
63
104
|
const result = interpretAttribute(input.node, input.spec, buildModelAttributeCtx({
|
|
64
105
|
symbols: input.symbols,
|
|
65
106
|
selfModel: input.model,
|
|
66
|
-
sources: input.sources
|
|
107
|
+
sources: input.sources,
|
|
108
|
+
binder: input.binder
|
|
67
109
|
}));
|
|
68
110
|
if (!result.ok) {
|
|
69
111
|
input.diagnostics.push(...result.failure);
|
|
@@ -77,7 +119,7 @@ function interpretFieldAttribute(input) {
|
|
|
77
119
|
selfModel: input.model,
|
|
78
120
|
field: input.field,
|
|
79
121
|
sources: input.sources,
|
|
80
|
-
|
|
122
|
+
binder: input.binder
|
|
81
123
|
}));
|
|
82
124
|
if (!result.ok) {
|
|
83
125
|
input.diagnostics.push(...result.failure);
|
|
@@ -444,6 +486,6 @@ const sqlAttributeSpecs = {
|
|
|
444
486
|
}
|
|
445
487
|
};
|
|
446
488
|
//#endregion
|
|
447
|
-
export {
|
|
489
|
+
export { findModelAttributeNode as a, lowerDefaultFunctionWithRegistry as c, findFieldAttributeNode as i, modelAttributeSpecsFrom as l, createSqlBinder as n, interpretFieldAttribute as o, fieldSpecContext as r, interpretModelAttribute as s, PSL_CHECK_ON_STI_VARIANT as t, sqlAttributeSpecs as u };
|
|
448
490
|
|
|
449
|
-
//# sourceMappingURL=sql-attribute-specs-
|
|
491
|
+
//# sourceMappingURL=sql-attribute-specs-DH3Yxb21-CZV-L28L.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sql-attribute-specs-DH3Yxb21-CZV-L28L.mjs","names":[],"sources":["../../../../2-sql/2-authoring/contract-psl/dist/sql-attribute-specs-DH3Yxb21.mjs"],"sourcesContent":["import { isAuthoringFieldPresetDescriptor } from \"@internal/framework-components/authoring\";\nimport { bool, createBinder, diagnosticSource, entityRef, fieldAttribute, fieldRef, funcCall, identifier, interpretAttribute, leafDiagnostic, list, modelAttribute, nodePslSpan, numLiteral, oneOf, optional, record, referencedFieldRef, str, taggedLiteral } from \"@internal/psl-parser\";\nimport { FunctionCallAst } from \"@internal/psl-parser/syntax\";\nimport { blindCast } from \"@internal/utils/casts\";\nimport { notOk } from \"@internal/utils/result\";\n//#region src/default-function-registry.ts\nfunction formatSupportedFunctionList(registry) {\n\tconst signatures = Array.from(registry.entries()).sort(([a], [b]) => a.localeCompare(b)).flatMap(([functionName, entry]) => {\n\t\tconst usageSignatures = entry.usageSignatures?.filter((signature) => signature.length > 0);\n\t\treturn usageSignatures && usageSignatures.length > 0 ? usageSignatures : [`${functionName}()`];\n\t});\n\treturn signatures.length > 0 ? signatures.join(\", \") : \"none\";\n}\n/** The diagnostic message for a `dbgenerated(...)` call, which raw SQL tagged literals replaced. */\nfunction removedDbgeneratedMessage(registry) {\n\treturn `Default function \"dbgenerated\" was removed. Write the SQL as a tagged literal: @default(sql\\`<expression>\\`). Supported functions: ${formatSupportedFunctionList(registry)}.`;\n}\nfunction lowerDefaultFunctionWithRegistry(input) {\n\tconst entry = input.registry.get(input.call.fn);\n\tif (entry) {\n\t\tconst result = entry.lower({\n\t\t\tcall: input.call,\n\t\t\tcontext: input.context\n\t\t});\n\t\treturn result.ok ? result : {\n\t\t\t...result,\n\t\t\tkind: \"external\"\n\t\t};\n\t}\n\tconst supportedFunctionList = formatSupportedFunctionList(input.registry);\n\treturn {\n\t\tok: false,\n\t\tkind: \"owned\",\n\t\tdiagnostic: {\n\t\t\tcode: \"PSL_UNKNOWN_DEFAULT_FUNCTION\",\n\t\t\tmessage: `Default function \"${input.call.fn}\" is not supported in SQL PSL provider v1. Supported functions: ${supportedFunctionList}.`,\n\t\t\t...input.source.at(input.call.span)\n\t\t}\n\t};\n}\n//#endregion\n//#region src/sql-attribute-specs.ts\nfunction findModelAttributeNode(model, name) {\n\tfor (const attribute of model.node.attributes()) if (attribute.name()?.isSimpleName(name) === true) return attribute;\n}\nfunction findFieldAttributeNode(field, name) {\n\tfor (const attribute of field.node.attributes()) if (attribute.name()?.isSimpleName(name) === true) return attribute;\n}\nfunction buildModelAttributeCtx(input) {\n\treturn {\n\t\tsources: input.sources,\n\t\tselfModel: input.selfModel,\n\t\tbinder: input.binder,\n\t\tsymbols: input.symbols\n\t};\n}\nfunction buildFieldAttributeCtx(input) {\n\treturn {\n\t\tsources: input.sources,\n\t\tselfModel: input.selfModel,\n\t\tfield: input.field,\n\t\tbinder: input.binder,\n\t\tsymbols: input.symbols\n\t};\n}\nfunction fieldPresetsAsTypeNames(namespace) {\n\tif (namespace === void 0) return {};\n\tconst result = {};\n\tfor (const [name, value] of Object.entries(namespace)) result[name] = isAuthoringFieldPresetDescriptor(value) ? {\n\t\tkind: \"typeConstructor\",\n\t\toutput: { codecId: value.output.codecId }\n\t} : fieldPresetsAsTypeNames(value);\n\treturn result;\n}\nfunction modelAttributeSpecsFrom(modelAttributesByName) {\n\tconst result = Object.create(null);\n\tfor (const [name, descriptor] of modelAttributesByName) result[name] = blindCast(descriptor.spec);\n\treturn result;\n}\nfunction createSqlBinder(input) {\n\tconst scalars = {};\n\tfor (const [name, descriptor] of input.scalarColumnDescriptors ?? []) scalars[name] = {\n\t\tkind: \"typeConstructor\",\n\t\toutput: { codecId: descriptor.codecId }\n\t};\n\treturn createBinder({\n\t\tsources: input.sources,\n\t\tsymbolTable: input.symbolTable,\n\t\ttypeConstructors: {\n\t\t\t...scalars,\n\t\t\t...fieldPresetsAsTypeNames(input.authoringContributions?.field),\n\t\t\t...input.authoringContributions?.type ?? {}\n\t\t},\n\t\tattributeSpecs: {\n\t\t\tmodel: Object.assign(Object.create(null), sqlAttributeSpecs.model, input.contributedModelAttributeSpecs),\n\t\t\tfield: sqlAttributeSpecs.field\n\t\t},\n\t\tcontrolMutationDefaults: input.controlMutationDefaults ?? {\n\t\t\tdefaultFunctionRegistry: /* @__PURE__ */ new Map(),\n\t\t\tdataTypeEntries: {}\n\t\t},\n\t\tdescribeUnsupportedAttribute: input.describeUnsupportedAttribute\n\t});\n}\nfunction interpretModelAttribute(input) {\n\tconst result = interpretAttribute(input.node, input.spec, buildModelAttributeCtx({\n\t\tsymbols: input.symbols,\n\t\tselfModel: input.model,\n\t\tsources: input.sources,\n\t\tbinder: input.binder\n\t}));\n\tif (!result.ok) {\n\t\tinput.diagnostics.push(...result.failure);\n\t\treturn;\n\t}\n\treturn result.value;\n}\nfunction interpretFieldAttribute(input) {\n\tconst result = interpretAttribute(input.node, input.spec, buildFieldAttributeCtx({\n\t\tsymbols: input.symbols,\n\t\tselfModel: input.model,\n\t\tfield: input.field,\n\t\tsources: input.sources,\n\t\tbinder: input.binder\n\t}));\n\tif (!result.ok) {\n\t\tinput.diagnostics.push(...result.failure);\n\t\treturn;\n\t}\n\treturn result.value;\n}\nfunction validateMappedName(value, ctx, attributeNode) {\n\treturn value.name === \"\" ? [leafDiagnostic(ctx, attributeNode, \"Mapped name must not be empty\")] : [];\n}\nconst mapModelSpec = modelAttribute(\"map\", {\n\tdocumentation: \"Maps this model to a database table name.\",\n\tpositional: [{\n\t\tkey: \"name\",\n\t\ttype: str(),\n\t\tdocumentation: \"The nonempty database table name.\"\n\t}],\n\trefine: validateMappedName\n});\nconst mapFieldSpec = fieldAttribute(\"map\", {\n\tdocumentation: \"Maps this field to a database column name.\",\n\tpositional: [{\n\t\tkey: \"name\",\n\t\ttype: str(),\n\t\tdocumentation: \"The nonempty database column name.\"\n\t}],\n\trefine: validateMappedName\n});\nfunction scalarDefaultArms(isList, registries) {\n\tconst tagsByDocumentation = /* @__PURE__ */ new Map();\n\tfor (const entry of Object.values(registries.dataTypeEntries)) {\n\t\tif (entry.written.kind !== \"tag\") continue;\n\t\tconst tags = tagsByDocumentation.get(entry.documentation);\n\t\tif (tags === void 0) tagsByDocumentation.set(entry.documentation, [entry.written.tag]);\n\t\telse tags.push(entry.written.tag);\n\t}\n\tconst tagArms = () => [...tagsByDocumentation].map(([documentation, tags]) => taggedLiteral(tags, { documentation }));\n\tconst literal = () => oneOf(str(), numLiteral(), bool(), ...tagArms());\n\tconst listArm = () => list(literal(), { label: `list of (${literal().label})` });\n\tconst funcArms = [...registries.defaultFunctionRegistry.entries()].map(([name, entry]) => funcCall(name, blindCast(entry.signature)));\n\treturn isList ? [\n\t\tlistArm(),\n\t\t...funcArms,\n\t\t...tagArms()\n\t] : [\n\t\tstr(),\n\t\tnumLiteral(),\n\t\tbool(),\n\t\t...funcArms,\n\t\t...tagArms(),\n\t\tlistArm()\n\t];\n}\n/**\n* The `@default` value arms, with a `dbgenerated(...)` call reported as removed before the arms\n* are tried, so the author is told what replaced it instead of being shown the list of arms.\n*/\nfunction defaultValueArm(arms, registry) {\n\tconst value = oneOf(...arms);\n\treturn {\n\t\t...value,\n\t\tparse: (arg, ctx) => FunctionCallAst.cast(arg.syntax)?.path().join(\".\") === \"dbgenerated\" ? notOk([leafDiagnostic(ctx, arg, removedDbgeneratedMessage(registry), \"PSL_UNKNOWN_DEFAULT_FUNCTION\")]) : value.parse(arg, ctx)\n\t};\n}\nfunction noEnumMember() {\n\treturn {\n\t\tkind: \"rejecting\",\n\t\tlabel: \"enum member\",\n\t\tmessage: \"Enum declares no members\",\n\t\tparse: (arg, ctx) => notOk([leafDiagnostic(ctx, arg, \"Enum declares no members\")])\n\t};\n}\nfunction enumMemberNames(ctx) {\n\tconst block = (ctx.field.typeNamespaceId === void 0 ? ctx.symbols.topLevel : ctx.symbols.topLevel.namespaces[ctx.field.typeNamespaceId])?.blocks[ctx.field.typeName];\n\tif (block === void 0 || block.keyword !== \"enum\") return void 0;\n\treturn Object.keys(block.block.parameters);\n}\nfunction enumDefaultArms(members, enumName) {\n\tconst [first, ...rest] = members;\n\tif (first === void 0) return [noEnumMember()];\n\tconst member = (name) => identifier(name, { documentation: `The \\`${name}\\` member of enum \\`${enumName}\\`.` });\n\treturn [member(first), ...rest.map(member)];\n}\nfunction defaultFieldSpec(ctx) {\n\tconst members = enumMemberNames(ctx);\n\treturn fieldAttribute(\"default\", {\n\t\tdocumentation: \"Supplies a default value when this field is omitted from a mutation.\",\n\t\tpositional: [{\n\t\t\tkey: \"value\",\n\t\t\ttype: defaultValueArm(members === void 0 ? scalarDefaultArms(ctx.field.list, ctx.controlMutationDefaults) : enumDefaultArms(members, ctx.field.typeName), ctx.controlMutationDefaults.defaultFunctionRegistry),\n\t\t\tdocumentation: \"A literal, enum member, or registered default function compatible with this field.\"\n\t\t}]\n\t});\n}\nconst idFieldSpec = fieldAttribute(\"id\", {\n\tdocumentation: \"Makes this field the primary key of the table.\",\n\tnamed: { map: {\n\t\ttype: optional(str()),\n\t\tdocumentation: \"The database primary-key constraint name.\"\n\t} }\n});\nconst uniqueFieldSpec = fieldAttribute(\"unique\", {\n\tdocumentation: \"Requires values in this field to be unique.\",\n\tnamed: { map: {\n\t\ttype: optional(str()),\n\t\tdocumentation: \"The database unique-constraint name.\"\n\t} }\n});\nconst noCheckKindArgument = () => oneOf(identifier(\"membership\", { documentation: \"Waives the generated check that values belong to the declared domain enum.\" }), identifier(\"elementNotNull\", { documentation: \"Waives the generated check that scalar-list elements are non-null.\" }));\n/**\n* `@noCheck` waives generated CHECK constraints on one column: bare for every\n* kind the column's shape derives, or naming concrete kinds. Two optional\n* positional slots cover the whole kind vocabulary; a third argument is\n* necessarily a duplicate and fails as excess arity.\n*/\nconst noCheckFieldSpec = fieldAttribute(\"noCheck\", {\n\tdocumentation: \"Waives generated CHECK constraints for this column. With no arguments, waives every generated kind.\",\n\tpositional: [{\n\t\tkey: \"first\",\n\t\ttype: optional(noCheckKindArgument()),\n\t\tdocumentation: \"The first generated check kind to waive: `membership` or `elementNotNull`.\"\n\t}, {\n\t\tkey: \"second\",\n\t\ttype: optional(noCheckKindArgument()),\n\t\tdocumentation: \"A second, distinct generated check kind to waive.\"\n\t}],\n\trefine: (value, ctx, attributeNode) => {\n\t\tif (value.first !== void 0 && value.first === value.second) return [leafDiagnostic(ctx, attributeNode, \"`@noCheck` names the same kind twice\")];\n\t\treturn [];\n\t}\n});\nconst idModelSpec = modelAttribute(\"id\", {\n\tdocumentation: \"Declares a compound primary key for this table.\",\n\tpositional: [{\n\t\tkey: \"fields\",\n\t\ttype: list(fieldRef(), {\n\t\t\tallowEmpty: false,\n\t\t\tunique: true\n\t\t}),\n\t\tdocumentation: \"The ordered, nonempty list of distinct primary-key fields.\"\n\t}],\n\tnamed: { map: {\n\t\ttype: optional(str()),\n\t\tdocumentation: \"The database primary-key constraint name.\"\n\t} }\n});\nconst uniqueModelSpec = modelAttribute(\"unique\", {\n\tdocumentation: \"Requires the combination of these fields to be unique.\",\n\tpositional: [{\n\t\tkey: \"fields\",\n\t\ttype: list(fieldRef(), {\n\t\t\tallowEmpty: false,\n\t\t\tunique: true\n\t\t}),\n\t\tdocumentation: \"The ordered, nonempty list of distinct fields in the unique constraint.\"\n\t}],\n\tnamed: { map: {\n\t\ttype: optional(str()),\n\t\tdocumentation: \"The database unique-constraint name.\"\n\t} }\n});\nconst PSL_INDEX_FIELDS_XOR_EXPRESSION = \"PSL_INDEX_FIELDS_XOR_EXPRESSION\";\nconst PSL_INDEX_EXPRESSION_REQUIRES_NAME = \"PSL_INDEX_EXPRESSION_REQUIRES_NAME\";\nconst PSL_INDEX_NAME_XOR_MAP = \"PSL_INDEX_NAME_XOR_MAP\";\nconst indexModelSpec = modelAttribute(\"index\", {\n\tdocumentation: \"Declares a database index over fields or a SQL expression, optionally restricted by a predicate.\",\n\tpositional: [{\n\t\tkey: \"fields\",\n\t\ttype: optional(list(fieldRef(), {\n\t\t\tallowEmpty: false,\n\t\t\tunique: true\n\t\t})),\n\t\tdocumentation: \"The ordered list of distinct indexed fields. Mutually exclusive with `expression`.\"\n\t}],\n\tnamed: {\n\t\texpression: {\n\t\t\ttype: optional(str()),\n\t\t\tdocumentation: \"The SQL index expression. Requires `name` or `map` and cannot be combined with a fields list.\"\n\t\t},\n\t\twhere: {\n\t\t\ttype: optional(str()),\n\t\t\tdocumentation: \"The SQL predicate restricting rows included in a partial index.\"\n\t\t},\n\t\tunique: {\n\t\t\ttype: optional(bool()),\n\t\t\tdocumentation: \"Whether the index enforces uniqueness.\"\n\t\t},\n\t\tname: {\n\t\t\ttype: optional(str()),\n\t\t\tdocumentation: \"The index name. Mutually exclusive with `map`.\"\n\t\t},\n\t\tmap: {\n\t\t\ttype: optional(str()),\n\t\t\tdocumentation: \"The database index name. Mutually exclusive with `name`.\"\n\t\t},\n\t\ttype: {\n\t\t\ttype: optional(str()),\n\t\t\tdocumentation: \"The target-specific index access method.\"\n\t\t},\n\t\toptions: {\n\t\t\ttype: optional(record(str())),\n\t\t\tdocumentation: \"Target-specific index options. Requires an explicit `type`.\"\n\t\t}\n\t},\n\trefine: (value, ctx, attributeNode) => {\n\t\tconst diagnostics = [];\n\t\tif (value.fields === void 0 === (value.expression === void 0)) diagnostics.push(leafDiagnostic(ctx, attributeNode, \"`@@index` requires exactly one of a fields list or an `expression` argument\", PSL_INDEX_FIELDS_XOR_EXPRESSION));\n\t\tif (value.expression !== void 0 && value.name === void 0 && value.map === void 0) diagnostics.push(leafDiagnostic(ctx, attributeNode, \"`@@index` with an `expression` argument requires a `name` or `map` argument (a default name cannot be derived from an expression)\", PSL_INDEX_EXPRESSION_REQUIRES_NAME));\n\t\tif (value.name !== void 0 && value.map !== void 0) diagnostics.push(leafDiagnostic(ctx, attributeNode, \"`@@index` takes at most one of `name` and `map`\", PSL_INDEX_NAME_XOR_MAP));\n\t\tif (value.options !== void 0 && value.type === void 0) diagnostics.push(leafDiagnostic(ctx, attributeNode, \"`@@index` options argument requires a type argument\"));\n\t\treturn diagnostics;\n\t}\n});\nconst PSL_CHECK_REQUIRES_NAME_OR_MAP = \"PSL_CHECK_REQUIRES_NAME_OR_MAP\";\nconst PSL_CHECK_NAME_XOR_MAP = \"PSL_CHECK_NAME_XOR_MAP\";\nconst PSL_CHECK_EXPRESSION_EMPTY = \"PSL_CHECK_EXPRESSION_EMPTY\";\n/**\n* A single-table-inheritance variant (`@@base` with no own `@@map`) shares\n* its base model's storage table and has no table of its own to declare a\n* check on — raised from {@link interpretPslDocumentToSqlContract}, not from\n* this spec's own `refine`, because the rule needs the model's `@@base`\n* declaration, which a single attribute's `refine` cannot see.\n*/\nconst PSL_CHECK_ON_STI_VARIANT = \"PSL_CHECK_ON_STI_VARIANT\";\nconst checkModelSpec = modelAttribute(\"check\", {\n\tdocumentation: \"Declares a named database CHECK constraint on this table.\",\n\tnamed: {\n\t\texpression: {\n\t\t\ttype: str(),\n\t\t\tdocumentation: \"The nonempty SQL predicate checked for each row.\"\n\t\t},\n\t\tname: {\n\t\t\ttype: optional(str()),\n\t\t\tdocumentation: \"The constraint name. Exactly one of `name` and `map` is required.\"\n\t\t},\n\t\tmap: {\n\t\t\ttype: optional(str()),\n\t\t\tdocumentation: \"The database constraint name. Exactly one of `name` and `map` is required.\"\n\t\t}\n\t},\n\trefine: (value, ctx, attributeNode) => {\n\t\tconst diagnostics = [];\n\t\tif (value.expression.trim().length === 0) diagnostics.push(leafDiagnostic(ctx, attributeNode, \"`@@check` expression must not be empty — an empty predicate is not a constraint\", PSL_CHECK_EXPRESSION_EMPTY));\n\t\tif (value.name === void 0 && value.map === void 0) diagnostics.push(leafDiagnostic(ctx, attributeNode, \"`@@check` requires a `name` or `map` argument (a default name cannot be derived — a check has no column tuple to name itself after)\", PSL_CHECK_REQUIRES_NAME_OR_MAP));\n\t\tif (value.name !== void 0 && value.map !== void 0) diagnostics.push(leafDiagnostic(ctx, attributeNode, \"`@@check` takes at most one of `name` and `map`\", PSL_CHECK_NAME_XOR_MAP));\n\t\treturn diagnostics;\n\t}\n});\nconst controlModelSpec = modelAttribute(\"control\", {\n\tdocumentation: \"Sets how schema management treats this model’s storage.\",\n\tpositional: [{\n\t\tkey: \"policy\",\n\t\tdocumentation: \"The storage control policy: `managed`, `tolerated`, `external`, or `observed`.\",\n\t\ttype: oneOf(identifier(\"managed\", { documentation: \"Verifies the declared shape strictly and allows migrations to create, alter, or drop the storage object.\" }), identifier(\"tolerated\", { documentation: \"Verifies declared columns while allowing extra columns. Migrations may create missing storage, but never alter or drop existing storage.\" }), identifier(\"external\", { documentation: \"Verifies declared storage without creating, altering, or dropping it.\" }), identifier(\"observed\", { documentation: \"Reports storage differences as warnings rather than verification failures and never emits migration operations.\" }))\n\t}]\n});\nconst discriminatorModelSpec = modelAttribute(\"discriminator\", {\n\tdocumentation: \"Selects the field that identifies inheritance variants of this model.\",\n\tpositional: [{\n\t\tkey: \"field\",\n\t\ttype: fieldRef(),\n\t\tdocumentation: \"The discriminator field on this model.\"\n\t}]\n});\nfunction baseModelSpec() {\n\treturn modelAttribute(\"base\", {\n\t\tdocumentation: \"Declares this model as a variant of a base model.\",\n\t\tpositional: [{\n\t\t\tkey: \"base\",\n\t\t\ttype: entityRef({ kind: \"model\" }),\n\t\t\tdocumentation: \"The base model to inherit from.\"\n\t\t}, {\n\t\t\tkey: \"value\",\n\t\t\ttype: str(),\n\t\t\tdocumentation: \"The discriminator value identifying this variant.\"\n\t\t}]\n\t});\n}\nfunction relationAttributeSpan(ctx) {\n\tconst node = findFieldAttributeNode(ctx.field, \"relation\");\n\tif (node !== void 0) return nodePslSpan(node.syntax, ctx.sources);\n\treturn ctx.field.span;\n}\nfunction relationInvariants(parsed, ctx) {\n\tif (parsed.fields !== void 0 !== (parsed.references !== void 0)) return [{\n\t\tcode: \"PSL_INVALID_ATTRIBUTE_SYNTAX\",\n\t\tmessage: `Relation field \"${ctx.selfModel.name}.${ctx.field.name}\" requires fields and references arguments`,\n\t\t...diagnosticSource(ctx.sources, ctx.field.node.syntax).at(relationAttributeSpan(ctx))\n\t}];\n\treturn [];\n}\nconst referentialActionArgument = () => oneOf(identifier(\"NoAction\", { documentation: \"Rejects a change that would violate the foreign key when the constraint is checked; checking may be deferred when supported and configured.\" }), identifier(\"Restrict\", { documentation: \"Rejects deleting or updating a referenced row while referencing rows remain, without deferring the check.\" }), identifier(\"Cascade\", { documentation: \"Propagates deletion or key updates of a referenced row to its referencing rows.\" }), identifier(\"SetNull\", { documentation: \"Sets referencing foreign-key fields to null when the referenced row is deleted or its key changes. The fields must allow null.\" }), identifier(\"SetDefault\", { documentation: \"Sets referencing foreign-key fields to their defaults when the referenced row is deleted or its key changes. The resulting values must satisfy the foreign key.\" }));\nconst relationFieldSpec = fieldAttribute(\"relation\", {\n\tdocumentation: \"Defines the relation name, foreign-key fields, and referential actions for this relation.\",\n\tpositional: [{\n\t\tkey: \"name\",\n\t\ttype: optional(str()),\n\t\tdocumentation: \"The relation name used to pair both sides. May also be supplied by name.\"\n\t}],\n\tnamed: {\n\t\tname: {\n\t\t\ttype: optional(str()),\n\t\t\tdocumentation: \"The relation name used to pair both sides. Cannot also be supplied positionally.\"\n\t\t},\n\t\tfields: {\n\t\t\ttype: optional(list(fieldRef(), {\n\t\t\t\tallowEmpty: false,\n\t\t\t\tunique: true\n\t\t\t})),\n\t\t\tdocumentation: \"The ordered local foreign-key fields. Must be supplied together with `references`.\"\n\t\t},\n\t\treferences: {\n\t\t\ttype: optional(list(referencedFieldRef(), {\n\t\t\t\tallowEmpty: false,\n\t\t\t\tunique: true\n\t\t\t})),\n\t\t\tdocumentation: \"The corresponding fields on the referenced model. Must be supplied together with `fields`.\"\n\t\t},\n\t\tmap: {\n\t\t\ttype: optional(str()),\n\t\t\tdocumentation: \"The database foreign-key constraint name.\"\n\t\t},\n\t\tonDelete: {\n\t\t\ttype: optional(referentialActionArgument()),\n\t\t\tdocumentation: \"The referential action when a referenced row is deleted.\"\n\t\t},\n\t\tonUpdate: {\n\t\t\ttype: optional(referentialActionArgument()),\n\t\t\tdocumentation: \"The referential action when a referenced key is updated.\"\n\t\t},\n\t\tindex: {\n\t\t\ttype: optional(bool()),\n\t\t\tdocumentation: \"Whether to create an index for the relation’s foreign-key fields.\"\n\t\t}\n\t},\n\trefine: relationInvariants\n});\nfunction fieldSpecContext(input) {\n\treturn {\n\t\tsymbols: input.symbols,\n\t\tmodel: input.model,\n\t\tfield: input.field,\n\t\tcontrolMutationDefaults: input.controlMutationDefaults\n\t};\n}\nconst sqlAttributeSpecs = {\n\tmodel: {\n\t\tmap: () => mapModelSpec,\n\t\tid: () => idModelSpec,\n\t\tunique: () => uniqueModelSpec,\n\t\tindex: () => indexModelSpec,\n\t\tcheck: () => checkModelSpec,\n\t\tcontrol: () => controlModelSpec,\n\t\tdiscriminator: () => discriminatorModelSpec,\n\t\tbase: baseModelSpec\n\t},\n\tfield: {\n\t\tmap: () => mapFieldSpec,\n\t\tid: () => idFieldSpec,\n\t\tunique: () => uniqueFieldSpec,\n\t\tnoCheck: () => noCheckFieldSpec,\n\t\trelation: () => relationFieldSpec,\n\t\tdefault: defaultFieldSpec\n\t}\n};\n//#endregion\nexport { findModelAttributeNode as a, modelAttributeSpecsFrom as c, findFieldAttributeNode as i, sqlAttributeSpecs as l, createSqlBinder as n, interpretFieldAttribute as o, fieldSpecContext as r, interpretModelAttribute as s, PSL_CHECK_ON_STI_VARIANT as t, lowerDefaultFunctionWithRegistry as u };\n\n//# sourceMappingURL=sql-attribute-specs-DH3Yxb21.mjs.map"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { structuredError } from "@prisma/orm-framework/utils/structured-error";
|
|
2
2
|
import { InternalError } from "@prisma/orm-framework/utils/internal-error";
|
|
3
3
|
import { ifDefined } from "@prisma/orm-framework/utils/defined";
|
|
4
|
-
//#region ../../../2-sql/4-lanes/relational-core/dist/types-
|
|
4
|
+
//#region ../../../2-sql/4-lanes/relational-core/dist/types-BAhLyUFj.mjs
|
|
5
5
|
function isJsonArray(value) {
|
|
6
6
|
return Array.isArray(value);
|
|
7
7
|
}
|
|
@@ -1012,6 +1012,9 @@ var ProjectionItem = class ProjectionItem extends AstNode {
|
|
|
1012
1012
|
return new ProjectionItem(this.alias, this.expr, codec);
|
|
1013
1013
|
}
|
|
1014
1014
|
};
|
|
1015
|
+
function checkLimitOffset(argument, value) {
|
|
1016
|
+
if (typeof value === "number" && !(Number.isSafeInteger(value) && value >= 0)) throw structuredError("ORM.ARGUMENT_INVALID", `${argument} must be an integer from 0 to ${Number.MAX_SAFE_INTEGER}, got ${String(value)}`, { meta: { argument } });
|
|
1017
|
+
}
|
|
1015
1018
|
var SelectAst = class SelectAst extends QueryAst {
|
|
1016
1019
|
kind = "select";
|
|
1017
1020
|
from;
|
|
@@ -1028,6 +1031,8 @@ var SelectAst = class SelectAst extends QueryAst {
|
|
|
1028
1031
|
selectAllIntent;
|
|
1029
1032
|
constructor(options) {
|
|
1030
1033
|
super();
|
|
1034
|
+
checkLimitOffset("limit", options.limit);
|
|
1035
|
+
checkLimitOffset("offset", options.offset);
|
|
1031
1036
|
this.from = options.from;
|
|
1032
1037
|
this.joins = options.joins && options.joins.length > 0 ? frozenArrayCopy(options.joins) : void 0;
|
|
1033
1038
|
this.projection = frozenArrayCopy(options.projection);
|
|
@@ -1505,4 +1510,4 @@ function isWhereExpr(value) {
|
|
|
1505
1510
|
//#endregion
|
|
1506
1511
|
export { PreparedParamRef as A, frozenCodecRef as B, LiteralExpr as C, OrExpr as D, OperationExpr as E, SubqueryExpr as F, whereExprKinds as G, isQueryAst as H, TableSource as I, UpdateAst as L, RawExpr as M, RawQueryAst as N, OrderByItem as O, SelectAst as P, WindowFuncExpr as R, ListExpression as S, NullCheckExpr as T, isWhereExpr as U, isAggregateFn as V, queryAstKinds as W, InsertAst as _, CastExpr as a, JsonArrayAggExpr as b, DeleteAst as c, DoUpdateSetConflictAction as d, EqColJoinOn as f, IdentifierRef as g, FunctionSource as h, CaseExpr as i, ProjectionItem as j, ParamRef as k, DerivedTableSource as l, FunctionCallExpr as m, AndExpr as n, ColumnRef as o, ExistsExpr as p, BinaryExpr as r, DefaultValueExpr as s, AggregateExpr as t, DoNothingConflictAction as u, InsertOnConflict as v, NotExpr as w, JsonObjectExpr as x, JoinAst as y, aggregateFnNames as z };
|
|
1507
1512
|
|
|
1508
|
-
//# sourceMappingURL=types-
|
|
1513
|
+
//# sourceMappingURL=types-BAhLyUFj-3TARSz8c.mjs.map
|