@prisma/orm-family-sql 8.0.0-rc.17-dev.19 → 8.0.0-rc.17-dev.21

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/contract.mjs CHANGED
@@ -5,7 +5,7 @@ import { t as sqlContractCanonicalizationHooks } from "./canonicalization-hooks-
5
5
  import { n as buildSqlSchemaQualifiedView, r as buildSqlSingleNamespaceView, t as SQL_BUILTIN_KINDS } from "./contract-view-BMR5IWk4.mjs";
6
6
  import { t as numeralText } from "./numeral-text-Cqu87pVe-DJCqBaSC.mjs";
7
7
  import { a as renderSqlTypeName, c as sqlDataType, d as unquotedSqlBaseNameOfCodec, f as validateSqlTypeParams, i as renderSqlCatalogText, l as sqlDataTypeOfCodec, n as findSqlDataTypeCollision, o as resolveReportedSqlType, r as isSqlDataType, s as sqlBaseName, t as dataTypeParams, u as unquotedSqlBaseName } from "./data-type-C_PI_Jsa.mjs";
8
- import { a as integerTextCanonicalForm, c as printJsonText, i as escapePslString, l as signedRange, n as canonicalNumeralText, o as isNumeralText, r as createNumberClassifier, s as parseJsonText, t as canonicalDateTime } from "./data-type-support-Bu-VpT7z.mjs";
8
+ import { a as integerTextCanonicalForm, c as printJsonText, i as escapePslString, l as signedRange, n as canonicalNumeralText, o as isNumeralText, r as createNumberClassifier, s as parseJsonText, t as canonicalDateTime } from "./data-type-support-CfhpAKLX.mjs";
9
9
  import { n as providesPslEntityPlacement, t as providesEntityHandleLowering } from "./entity-handle-lowering-hook-B3atrRKX.mjs";
10
10
  import { a as PrimaryKey, c as StorageTable, i as Index, l as UniqueConstraint, n as ForeignKey, o as SqlNode, r as ForeignKeyReference, s as StorageColumn, t as CheckConstraint } from "./storage-table-B7OSPl3G-p1j6AjMS.mjs";
11
11
  import { i as isStorageValueSet, n as checkConstraintInputFromSerialized, r as indexInputFromSerialized, t as StorageValueSet } from "./serialized-index-C26m_DWu-BjU519sW.mjs";
@@ -1,2 +1,2 @@
1
- import { a as integerTextCanonicalForm, c as printJsonText, i as escapePslString, l as signedRange, n as canonicalNumeralText, o as isNumeralText, r as createNumberClassifier, s as parseJsonText, t as canonicalDateTime } from "./data-type-support-Bu-VpT7z.mjs";
1
+ import { a as integerTextCanonicalForm, c as printJsonText, i as escapePslString, l as signedRange, n as canonicalNumeralText, o as isNumeralText, r as createNumberClassifier, s as parseJsonText, t as canonicalDateTime } from "./data-type-support-CfhpAKLX.mjs";
2
2
  export { canonicalDateTime, canonicalNumeralText, createNumberClassifier, escapePslString, integerTextCanonicalForm, isNumeralText, parseJsonText, printJsonText, signedRange };
@@ -4,11 +4,12 @@ import { isNonFiniteText } from "@prisma/orm-framework/components/codec";
4
4
  import { InternalError } from "@prisma/orm-framework/utils/internal-error";
5
5
  //#region ../../../2-sql/1-core/contract/dist/data-type-support.mjs
6
6
  const INTEGER_TEXT = /^-?\d+$/;
7
- const DECIMAL_TEXT = /^-?\d+\.\d+$/;
8
- const DECIMAL_NUMERAL = /^(-?)0*(\d+)(\.\d+)?$/;
7
+ const WRITTEN_INTEGER_TEXT = /^[+-]?\d+$/;
8
+ const WRITTEN_DECIMAL_TEXT = /^[+-]?\d+\.\d+$/;
9
+ const DECIMAL_NUMERAL = /^([+-]?)0*(\d+)(\.\d+)?$/;
9
10
  /** Whether `text` is a whole number or a decimal as a contract source writes one. */
10
11
  function isNumeralText(text) {
11
- return INTEGER_TEXT.test(text) || DECIMAL_TEXT.test(text);
12
+ return WRITTEN_INTEGER_TEXT.test(text) || WRITTEN_DECIMAL_TEXT.test(text);
12
13
  }
13
14
  /**
14
15
  * A written numeral as the contract stores it. Leading zeros and the sign of zero never change a
@@ -19,7 +20,7 @@ function canonicalNumeralText(text) {
19
20
  if (numeral === null) return text;
20
21
  const [, sign = "", whole = "", fraction = ""] = numeral;
21
22
  const digits = `${whole}${fraction}`;
22
- return /^[0.]+$/.test(digits) ? digits : `${sign}${digits}`;
23
+ return sign !== "-" || /^[0.]+$/.test(digits) ? digits : `-${digits}`;
23
24
  }
24
25
  /**
25
26
  * The canonical form of a 64-bit integer type: digit text. A database reads an integer default back as a number when it is a safe integer, so a safe integer reads as its digit text too; any other number may already have lost digits and is refused.
@@ -56,11 +57,11 @@ function createNumberClassifier(spec) {
56
57
  };
57
58
  return (text) => {
58
59
  if (isNonFiniteText(text)) return as(spec.words, spec.words?.form === "number" ? Number(text) : text);
59
- if (DECIMAL_TEXT.test(text)) {
60
+ if (WRITTEN_DECIMAL_TEXT.test(text)) {
60
61
  const canonical = canonicalNumeralText(text);
61
62
  return as(spec.fraction, spec.fraction?.form === "number" ? Number(canonical) : canonical);
62
63
  }
63
- if (!INTEGER_TEXT.test(text)) return void 0;
64
+ if (!WRITTEN_INTEGER_TEXT.test(text)) return void 0;
64
65
  const digits = BigInt(text);
65
66
  const classification = spec.integers.find(({ min, max }) => digits >= min && digits <= max) ?? spec.largerWhole;
66
67
  return as(classification, classification?.form === "number" ? Number(digits) : digits.toString());
@@ -373,4 +374,4 @@ function canonicalDateTime(text, options, written = text) {
373
374
  //#endregion
374
375
  export { integerTextCanonicalForm as a, printJsonText as c, escapePslString as i, signedRange as l, canonicalNumeralText as n, isNumeralText as o, createNumberClassifier as r, parseJsonText as s, canonicalDateTime as t };
375
376
 
376
- //# sourceMappingURL=data-type-support-Bu-VpT7z.mjs.map
377
+ //# sourceMappingURL=data-type-support-CfhpAKLX.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-type-support-CfhpAKLX.mjs","names":[],"sources":["../../../../2-sql/1-core/contract/dist/data-type-support.mjs"],"sourcesContent":["import { t as numeralText } from \"./numeral-text-Cqu87pVe.mjs\";\nimport { structuredError } from \"@internal/utils/structured-error\";\nimport { isNonFiniteText } from \"@internal/framework-components/codec\";\nimport { InternalError } from \"@internal/utils/internal-error\";\n//#region src/data-type-support.ts\nconst INTEGER_TEXT = /^-?\\d+$/;\nconst WRITTEN_INTEGER_TEXT = /^[+-]?\\d+$/;\nconst WRITTEN_DECIMAL_TEXT = /^[+-]?\\d+\\.\\d+$/;\nconst DECIMAL_NUMERAL = /^([+-]?)0*(\\d+)(\\.\\d+)?$/;\n/** Whether `text` is a whole number or a decimal as a contract source writes one. */\nfunction isNumeralText(text) {\n\treturn WRITTEN_INTEGER_TEXT.test(text) || WRITTEN_DECIMAL_TEXT.test(text);\n}\n/**\n* A written numeral as the contract stores it. Leading zeros and the sign of zero never change a\n* number, so they go; trailing zeros stay, because a type without a scale keeps them.\n*/\nfunction canonicalNumeralText(text) {\n\tconst numeral = DECIMAL_NUMERAL.exec(text);\n\tif (numeral === null) return text;\n\tconst [, sign = \"\", whole = \"\", fraction = \"\"] = numeral;\n\tconst digits = `${whole}${fraction}`;\n\treturn sign !== \"-\" || /^[0.]+$/.test(digits) ? digits : `-${digits}`;\n}\n/**\n* The canonical form of a 64-bit integer type: digit text. A database reads an integer default back as a number when it is a safe integer, so a safe integer reads as its digit text too; any other number may already have lost digits and is refused.\n*/\nconst integerTextCanonicalForm = (value) => {\n\tif (typeof value === \"number\" && Number.isSafeInteger(value)) return numeralText(value);\n\tif (typeof value === \"string\" && INTEGER_TEXT.test(value)) return BigInt(value).toString();\n\tthrow structuredError(\"CONTRACT.CAST_REFUSED\", `Expected digit text or a safe integer, got ${JSON.stringify(value)}.`, {\n\t\twhy: \"A 64-bit integer type stores its value as digit text, and a number past the safe integer range may already have lost digits.\",\n\t\tfix: \"Write the value as digit text.\"\n\t});\n};\n/** A string as a contract source writes it, with the escapes its string reader resolves. */\nfunction escapePslString(value) {\n\treturn value.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, \"\\\\\\\"\").replace(/\\n/g, \"\\\\n\").replace(/\\r/g, \"\\\\r\");\n}\n/** The range of a signed integer of `bits` bits. */\nfunction signedRange(bits) {\n\tconst half = 2n ** (BigInt(bits) - 1n);\n\treturn {\n\t\tmin: -half,\n\t\tmax: half - 1n\n\t};\n}\n/**\n* The classifier one target's plain-number authoring entry carries: it reads the digits and says\n* which of the target's types the value is, in that type's canonical form. `undefined` means no\n* type of this target holds the number.\n*/\nfunction createNumberClassifier(spec) {\n\tconst as = (classification, value) => classification === void 0 ? void 0 : {\n\t\ttype: classification.type,\n\t\tvalue\n\t};\n\treturn (text) => {\n\t\tif (isNonFiniteText(text)) return as(spec.words, spec.words?.form === \"number\" ? Number(text) : text);\n\t\tif (WRITTEN_DECIMAL_TEXT.test(text)) {\n\t\t\tconst canonical = canonicalNumeralText(text);\n\t\t\treturn as(spec.fraction, spec.fraction?.form === \"number\" ? Number(canonical) : canonical);\n\t\t}\n\t\tif (!WRITTEN_INTEGER_TEXT.test(text)) return void 0;\n\t\tconst digits = BigInt(text);\n\t\tconst classification = spec.integers.find(({ min, max }) => digits >= min && digits <= max) ?? spec.largerWhole;\n\t\treturn as(classification, classification?.form === \"number\" ? Number(digits) : digits.toString());\n\t};\n}\n/**\n* Read JSON text into the document it holds.\n*\n* `JSON.parse` reads a numeral too large for a double as `Infinity`, and `JSON.stringify` writes\n* that back as `null`, so a document holding one would not be the document stored; it is refused\n* here instead, naming where the number is.\n*/\nfunction parseJsonText(text) {\n\tlet value;\n\ttry {\n\t\tvalue = JSON.parse(text);\n\t} catch (error) {\n\t\tthrow structuredError(\"CONTRACT.INVALID_JSON_LITERAL\", error instanceof Error ? error.message : String(error), {\n\t\t\twhy: \"The text is not a JSON document.\",\n\t\t\tfix: \"Write a JSON document.\"\n\t\t});\n\t}\n\tconst overflowed = nonFiniteNumberIn(value, \"\");\n\tif (overflowed !== void 0) throw structuredError(\"CONTRACT.INVALID_JSON_LITERAL\", `${overflowed.path} is ${overflowed.value}, which JSON cannot write back: the number in the text is outside the range a JSON number holds.`, {\n\t\twhy: \"JSON.parse reads a numeral too large for a double as Infinity, which JSON.stringify writes back as null.\",\n\t\tfix: \"Write a number JSON can hold, or write it as text.\"\n\t});\n\treturn value;\n}\n/** Write a document as the text of a JSON literal. */\nfunction printJsonText(value) {\n\treturn JSON.stringify(value);\n}\nfunction nonFiniteNumberIn(value, path) {\n\tif (typeof value === \"number\") return Number.isFinite(value) ? void 0 : {\n\t\tpath: path === \"\" ? \"The value\" : path,\n\t\tvalue\n\t};\n\tif (Array.isArray(value)) {\n\t\tfor (const [index, element] of value.entries()) {\n\t\t\tconst found = nonFiniteNumberIn(element, `${path}[${index}]`);\n\t\t\tif (found !== void 0) return found;\n\t\t}\n\t\treturn;\n\t}\n\tif (typeof value === \"object\" && value !== null) for (const [key, member] of Object.entries(value)) {\n\t\tconst found = nonFiniteNumberIn(member, path === \"\" ? key : `${path}.${key}`);\n\t\tif (found !== void 0) return found;\n\t}\n}\n//#endregion\n//#region src/date-time-canonical-form.ts\n/**\n* The reader the SQL targets build the canonical form of each date and time type with; ADR 254\n* states the forms and the text it reads.\n*/\nconst SHAPES = {\n\tdate: {\n\t\tdescription: \"a date\",\n\t\tplural: \"dates\",\n\t\texample: \"2024-01-01\",\n\t\tdate: true,\n\t\ttime: false,\n\t\toffset: false\n\t},\n\ttime: {\n\t\tdescription: \"a time of day\",\n\t\tplural: \"times of day\",\n\t\texample: \"12:34:56\",\n\t\tdate: false,\n\t\ttime: true,\n\t\toffset: false\n\t},\n\ttimeWithOffset: {\n\t\tdescription: \"a time of day with a UTC offset\",\n\t\tplural: \"times of day with a UTC offset\",\n\t\texample: \"12:34:56+02:00\",\n\t\tdate: false,\n\t\ttime: true,\n\t\toffset: true\n\t},\n\tdateTime: {\n\t\tdescription: \"a date and time\",\n\t\tplural: \"dates and times\",\n\t\texample: \"2024-01-01T12:34:56\",\n\t\tdate: true,\n\t\ttime: true,\n\t\toffset: false\n\t},\n\tinstant: {\n\t\tdescription: \"a date and time with a UTC offset\",\n\t\tplural: \"instants\",\n\t\texample: \"2024-01-01T12:34:56Z\",\n\t\tdate: true,\n\t\ttime: true,\n\t\toffset: true\n\t}\n};\nconst DATE_PREFIX = /^([+-]\\d{6}|\\d{4})-(\\d{2})-(\\d{2})/;\nconst TIME_PREFIX = /^(\\d{2}):(\\d{2})(?::(\\d{2})(?:\\.(\\d+))?)?/;\nconst OFFSET = /^([+-])(\\d{2})(?::(\\d{2})(?::(\\d{2}))?)?$/;\nconst MAX_FRACTION_DIGITS = 6;\nconst FRACTION_UNITS = {\n\t3: \"milliseconds\",\n\t6: \"microseconds\"\n};\nconst SECONDS_PER_DAY = 86400;\nconst MIDNIGHT = {\n\thour: 0,\n\tminute: 0,\n\tsecond: 0,\n\tfraction: \"\"\n};\nfunction refused(message) {\n\tthrow structuredError(\"CONTRACT.CAST_REFUSED\", message, {\n\t\twhy: \"A date or time type stores one canonical form for each value (ADR 254).\",\n\t\tfix: \"Write text the type holds, as the message shows.\"\n\t});\n}\nfunction isLeapYear(year) {\n\treturn year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n}\nfunction daysInMonth(year, month) {\n\tif (month === 2) return isLeapYear(year) ? 29 : 28;\n\treturn [\n\t\t4,\n\t\t6,\n\t\t9,\n\t\t11\n\t].includes(month) ? 30 : 31;\n}\n/** Days from 1970-01-01 to a date of the proleptic Gregorian calendar, with year 0 as 1 BC. */\nfunction daysFromCivil({ year, month, day }) {\n\tconst shifted = month <= 2 ? year - 1 : year;\n\tconst era = Math.floor(shifted / 400);\n\tconst yearOfEra = shifted - era * 400;\n\tconst dayOfYear = Math.floor((153 * (month + (month > 2 ? -3 : 9)) + 2) / 5) + day - 1;\n\tconst dayOfEra = yearOfEra * 365 + Math.floor(yearOfEra / 4) - Math.floor(yearOfEra / 100) + dayOfYear;\n\treturn era * 146097 + dayOfEra - 719468;\n}\nfunction civilFromDays(days) {\n\tconst shifted = days + 719468;\n\tconst era = Math.floor(shifted / 146097);\n\tconst dayOfEra = shifted - era * 146097;\n\tconst yearOfEra = Math.floor((dayOfEra - Math.floor(dayOfEra / 1460) + Math.floor(dayOfEra / 36524) - Math.floor(dayOfEra / 146096)) / 365);\n\tconst dayOfYear = dayOfEra - (365 * yearOfEra + Math.floor(yearOfEra / 4) - Math.floor(yearOfEra / 100));\n\tconst monthIndex = Math.floor((5 * dayOfYear + 2) / 153);\n\tconst day = dayOfYear - Math.floor((153 * monthIndex + 2) / 5) + 1;\n\tconst month = monthIndex < 10 ? monthIndex + 3 : monthIndex - 9;\n\treturn {\n\t\tyear: yearOfEra + era * 400 + (month <= 2 ? 1 : 0),\n\t\tmonth,\n\t\tday\n\t};\n}\nfunction pad(value, width = 2) {\n\treturn String(value).padStart(width, \"0\");\n}\nfunction yearText(year) {\n\tif (year >= 0 && year <= 9999) return pad(year, 4);\n\treturn `${year < 0 ? \"-\" : \"+\"}${pad(Math.abs(year), 6)}`;\n}\nfunction dateText(date) {\n\treturn `${yearText(date.year)}-${pad(date.month)}-${pad(date.day)}`;\n}\nfunction timeText(time) {\n\tconst fraction = time.fraction.replace(/0+$/, \"\");\n\treturn `${pad(time.hour)}:${pad(time.minute)}:${pad(time.second)}${fraction === \"\" ? \"\" : `.${fraction}`}`;\n}\nfunction offsetText(seconds) {\n\tif (seconds === 0) return \"Z\";\n\tconst magnitude = Math.abs(seconds);\n\tconst rest = magnitude % 60;\n\treturn `${seconds < 0 ? \"-\" : \"+\"}${pad(Math.floor(magnitude / 3600))}:${pad(Math.floor(magnitude / 60) % 60)}${rest === 0 ? \"\" : `:${pad(rest)}`}`;\n}\n/**\n* The fields of an ISO 8601 date, time, or date and time, or `undefined` when the text is not one.\n* Ranges are checked by the caller, which words the refusal.\n*/\nfunction readWritten(text) {\n\tlet rest = text;\n\tlet date;\n\tlet timeFollows = true;\n\tconst dateMatch = DATE_PREFIX.exec(rest);\n\tif (dateMatch !== null) {\n\t\tconst [whole, yearDigits = \"\", month = \"\", day = \"\"] = dateMatch;\n\t\tif (yearDigits === \"-000000\") return void 0;\n\t\tdate = {\n\t\t\tyear: Number(yearDigits),\n\t\t\tmonth: Number(month),\n\t\t\tday: Number(day)\n\t\t};\n\t\trest = rest.slice(whole.length);\n\t\ttimeFollows = /^[Tt ]/.test(rest);\n\t\tif (timeFollows) rest = rest.slice(1);\n\t}\n\tlet time;\n\tlet fractionDigits = 0;\n\tif (timeFollows) {\n\t\tconst timeMatch = TIME_PREFIX.exec(rest);\n\t\tif (timeMatch === null) return void 0;\n\t\tconst [whole, hour = \"\", minute = \"\", second = \"00\", fraction = \"\"] = timeMatch;\n\t\ttime = {\n\t\t\thour: Number(hour),\n\t\t\tminute: Number(minute),\n\t\t\tsecond: Number(second),\n\t\t\tfraction\n\t\t};\n\t\tfractionDigits = fraction.length;\n\t\trest = rest.slice(whole.length);\n\t}\n\tlet offsetSeconds;\n\tif (rest === \"Z\" || rest === \"z\") offsetSeconds = 0;\n\telse if (rest !== \"\") {\n\t\tconst offset = OFFSET.exec(rest);\n\t\tif (offset === null) return void 0;\n\t\tconst [, sign, hours = \"\", minutes = \"00\", seconds = \"00\"] = offset;\n\t\tif (Number(minutes) > 59 || Number(seconds) > 59) return void 0;\n\t\tconst magnitude = Number(hours) * 3600 + Number(minutes) * 60 + Number(seconds);\n\t\toffsetSeconds = sign === \"-\" ? -magnitude : magnitude;\n\t}\n\treturn {\n\t\tdate,\n\t\ttime,\n\t\toffsetSeconds,\n\t\tfractionDigits\n\t};\n}\nfunction withFraction(example, digits) {\n\treturn example.replace(/(\\d{2}:\\d{2}:\\d{2})/, `$1.${\"123456\".slice(0, digits)}`);\n}\n/** The value with an instant moved to UTC. */\nfunction normalized(written, shape) {\n\tconst clock = written.time ?? MIDNIGHT;\n\tconst offsetSeconds = written.offsetSeconds ?? 0;\n\tif (written.date === void 0 || shape !== \"instant\") return {\n\t\tdate: written.date,\n\t\ttime: clock,\n\t\toffsetSeconds\n\t};\n\tconst utc = daysFromCivil(written.date) * SECONDS_PER_DAY + clock.hour * 3600 + clock.minute * 60 + clock.second - offsetSeconds;\n\tconst days = Math.floor(utc / SECONDS_PER_DAY);\n\tconst secondOfDay = utc - days * SECONDS_PER_DAY;\n\treturn {\n\t\tdate: civilFromDays(days),\n\t\ttime: {\n\t\t\thour: Math.floor(secondOfDay / 3600),\n\t\t\tminute: Math.floor(secondOfDay / 60) % 60,\n\t\t\tsecond: secondOfDay % 60,\n\t\t\tfraction: clock.fraction\n\t\t},\n\t\toffsetSeconds: 0\n\t};\n}\nfunction position(value) {\n\tconst { time } = value;\n\treturn [\n\t\tvalue.date === void 0 ? 0 : daysFromCivil(value.date),\n\t\ttime.hour * 3600 + time.minute * 60 + time.second,\n\t\ttime.fraction.padEnd(MAX_FRACTION_DIGITS, \"0\")\n\t];\n}\nfunction isBefore(left, right) {\n\tif (left[0] !== right[0]) return left[0] < right[0];\n\tif (left[1] !== right[1]) return left[1] < right[1];\n\treturn left[2] < right[2];\n}\nfunction printed(value, shape) {\n\tconst { date, time, offsetSeconds } = value;\n\tif (date === void 0) return shape === \"timeWithOffset\" ? `${timeText(time)}${offsetText(offsetSeconds)}` : timeText(time);\n\tif (shape === \"date\") return dateText(date);\n\tif (shape === \"dateTime\") return `${dateText(date)}T${timeText(time)}`;\n\treturn `${dateText(date)}T${timeText(time)}Z`;\n}\n/** The position of a range bound, which the data type declares in canonical form. */\nfunction boundPosition(text, shape) {\n\tconst written = readWritten(text);\n\tif (written === void 0) throw new InternalError(`The range bound \"${text}\" is not in canonical form.`);\n\treturn position(normalized(written, shape));\n}\n/**\n* The canonical form of written date or time text, or a refusal with a message that says what is\n* wrong and shows text the type holds. `written` is the text as its author wrote it, which the\n* message shows, when a target rewrote it into ISO 8601 before calling this.\n*/\nfunction canonicalDateTime(text, options, written = text) {\n\tconst shape = SHAPES[options.shape];\n\tconst { ownerId: id } = options;\n\tconst parts = readWritten(text);\n\tif (parts === void 0) refused(`${id} cannot read \"${written}\". Write ${shape.description}, as in \"${shape.example}\".`);\n\tif (parts.date !== void 0 && !shape.date) refused(`${id} holds a time of day without a date, but \"${written}\" has a date. Write the time alone, as in \"${shape.example}\".`);\n\tif (parts.date === void 0 && shape.date) refused(shape.time ? `${id} holds ${shape.description}, but \"${written}\" has no date. Write the date too, as in \"${shape.example}\".` : `${id} holds a date, and \"${written}\" is a time of day. Write a date, as in \"${shape.example}\".`);\n\tif (parts.time !== void 0 && !shape.time) refused(`${id} holds a date without a time of day, but \"${written}\" has a time. Write the date alone, as in \"${shape.example}\".`);\n\tif (parts.time === void 0 && shape.offset) refused(`${id} holds ${shape.description}, but \"${written}\" has no time of day. Write the time too, as in \"${shape.example}\".`);\n\tif (parts.offsetSeconds !== void 0 && !shape.offset) refused(`${id} holds no UTC offset, but \"${written}\" has one. Leave it out, as in \"${shape.example}\".`);\n\tif (parts.offsetSeconds === void 0 && shape.offset) refused(`${id} needs a UTC offset, but \"${written}\" has none. Add Z for UTC or an offset such as +02:00, as in \"${shape.example}\".`);\n\tconst maxFractionDigits = options.maxFractionDigits ?? MAX_FRACTION_DIGITS;\n\tif (parts.fractionDigits > maxFractionDigits) refused(`\"${written}\" has ${parts.fractionDigits} digits after the decimal point, but ${id} holds ${FRACTION_UNITS[maxFractionDigits]}, so at most ${maxFractionDigits}. Round it, as in \"${withFraction(shape.example, maxFractionDigits)}\".`);\n\tconst { date, time } = parts;\n\tif (date !== void 0 && (date.month < 1 || date.month > 12 || date.day < 1 || date.day > daysInMonth(date.year, date.month))) refused(`\"${written}\" is not a date that exists. Write a real date, as in \"${shape.example}\".`);\n\tif (time !== void 0 && (time.hour > 23 || time.minute > 59 || time.second > 59)) refused(`\"${written}\" is not a time of day that exists: hours run from 00 to 23, and minutes and seconds from 00 to 59. Write one, as in \"${shape.example}\".`);\n\tconst offsetLimit = options.maxOffsetHours ?? 23;\n\tif (parts.offsetSeconds !== void 0 && Math.abs(parts.offsetSeconds) >= (offsetLimit + 1) * 3600) refused(`\"${written}\" has a UTC offset outside -${pad(offsetLimit)}:59 to +${pad(offsetLimit)}:59, which ${id} does not hold. Write a smaller offset, as in \"${shape.example}\".`);\n\tconst value = normalized(parts, options.shape);\n\tconst { range } = options;\n\tif (range !== void 0) {\n\t\tconst at = position(value);\n\t\tif (isBefore(at, boundPosition(range.earliest, options.shape)) || isBefore(boundPosition(range.latest, options.shape), at)) refused(`${id} holds ${shape.plural} from ${range.earliest} to ${range.latest}, and \"${written}\" is outside them.`);\n\t}\n\treturn printed(value, options.shape);\n}\n//#endregion\nexport { canonicalDateTime, canonicalNumeralText, createNumberClassifier, escapePslString, integerTextCanonicalForm, isNumeralText, parseJsonText, printJsonText, signedRange };\n\n//# sourceMappingURL=data-type-support.mjs.map"],"mappings":"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"}
package/dist/family.mjs CHANGED
@@ -8,7 +8,7 @@ import { t as arraysEqual } from "./diff-B16bL_IR.mjs";
8
8
  import { t as SqlSchemaVerifierBase } from "./ir-I-xciGUH.mjs";
9
9
  import { t as SqlMigration } from "./migration-Dy_4Wmiy.mjs";
10
10
  import { s as toEnumMemberName } from "./psl-names-C3cwe0rg-CsuHOV7E.mjs";
11
- import { t as mapDefault } from "./psl-build-CdvX8qg4.mjs";
11
+ import { t as mapDefault } from "./psl-build-C3WT2pWV.mjs";
12
12
  import { a as pluralize, c as toModelName, i as inferRelations, n as deriveBackRelationFieldName, o as toEnumName, r as deriveRelationFieldName, s as toFieldName, t as buildChildRelationField } from "./psl-infer-DHO72J_m.mjs";
13
13
  import { i as timestampNowRuntimeGenerator, n as resolveDomainModel, t as UNBOUND_DOMAIN_NAMESPACE_ID } from "./runtime-Z3nD7ix1.mjs";
14
14
  export { COLUMN_RENAME_UNMATCHED_CODE, INIT_ADDITIVE_POLICY, SqlMigration as Migration, SqlContractSerializer, SqlContractSerializerBase, SqlSchemaVerifierBase, TABLE_NAME_CASE_CHANGED_CODE, UNBOUND_DOMAIN_NAMESPACE_ID, arraysEqual, assembleAuthoringContributions, buildChildRelationField, checkSqlDefaultText, classifyDiffSubjectGranularity, classifySqlDiffIssue, computeSqlDiffVerdict, computeStorageTypeVerdict, contractNamespaceToSchemaIR, contractToSchemaIR, controlPolicyForCall, createMigrationPlan, createSqlTextSources, deriveBackRelationFieldName, deriveRelationFieldName, detectDestructiveChanges, detectTableNameCaseChanges, extractCodecControlHooks, fieldEventStorage, fieldRenameStorageEffect, inferRelations, mapDefault, modelRenameStorageEffect, parseContractMarkerRow, partitionCallsByControlPolicy, partitionIssuesByControlPolicy, planFieldEventCalls, planFieldEventOperations, planStatements, plannerFailure, plannerSuccess, pluralize, resolveColumnRenameAgainst, resolveDomainModel, resolveStorageTable, resolveTableRenameAgainst, runnerFailure, runnerSuccess, sqlTypeLookupsOf, storageNameOfOperation, subjectsOfCalls, temporalCodecPresetWithPrecision, temporalStringAuthoringPresets, timestampNowRuntimeGenerator, toEnumMemberName, toEnumName, toFieldName, toModelName, unknownCallNames, unmatchedColumnRename, unmatchedTableRename, verifySqlSchemaByDiff };
@@ -1,3 +1,3 @@
1
1
  import { s as toEnumMemberName } from "./psl-names-C3cwe0rg-CsuHOV7E.mjs";
2
- import { t as mapDefault } from "./psl-build-CdvX8qg4.mjs";
2
+ import { t as mapDefault } from "./psl-build-C3WT2pWV.mjs";
3
3
  export { mapDefault, toEnumMemberName };
@@ -1,5 +1,5 @@
1
1
  import { t as numeralText } from "./numeral-text-Cqu87pVe-DJCqBaSC.mjs";
2
- import { i as escapePslString } from "./data-type-support-Bu-VpT7z.mjs";
2
+ import { i as escapePslString } from "./data-type-support-CfhpAKLX.mjs";
3
3
  import { m as defaultInCanonicalForm } from "./types-D0GFxty0-CP8b4dR3.mjs";
4
4
  import "./sql-expression-DSRILiU2.mjs";
5
5
  import { authoringEntryType, printTaggedLiteral } from "@prisma/orm-framework/components/authoring";
@@ -216,4 +216,4 @@ function sameForm(left, right) {
216
216
  //#endregion
217
217
  export { mapDefault as t };
218
218
 
219
- //# sourceMappingURL=psl-build-CdvX8qg4.mjs.map
219
+ //# sourceMappingURL=psl-build-C3WT2pWV.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"psl-build-CdvX8qg4.mjs","names":[],"sources":["../../../../2-sql/9-family/dist/psl-build.mjs"],"sourcesContent":["import { s as toEnumMemberName } from \"./psl-names-C3cwe0rg.mjs\";\nimport { SQL_EXPRESSION_TAG } from \"@internal/sql-contract/sql-expression\";\nimport { authoringEntryType, printTaggedLiteral } from \"@internal/framework-components/authoring\";\nimport { canonicalFormOf, dataTypeId } from \"@internal/framework-components/codec\";\nimport { numeralText } from \"@internal/sql-contract/data-type\";\nimport { defaultInCanonicalForm } from \"@internal/sql-schema-ir/types\";\nimport { escapePslString } from \"@internal/sql-contract/data-type-support\";\n//#region src/core/psl-build/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 `sql` literal. `undefined` when a literal has no written form. An expression\n* prints even when the literal would read back as different text: default expressions are compared\n* with case and whitespace ignored (`resolvedDefaultsEqual`), and canonicalization changes only\n* whitespace (ADR 129).\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(${printTaggedLiteral(SQL_EXPRESSION_TAG, columnDefault.expression)})` };\n\t}\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\tconst written = entry.written;\n\t\tif (written.kind === \"tag\") {\n\t\t\tconst type = dataTypeId(authoringEntryType(key, entry));\n\t\t\tif (!entryOf.has(type)) entryOf.set(type, entry);\n\t\t\ttagTypes.push(type);\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, lookup) {\n\tif (candidate.type === columnDataType) return candidate.value;\n\tconst cast = lookup.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 text of the literal: what the entry prints, before the syntax that fences it. */\nfunction printedText(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 text back as, which for a number is the classifier's answer. */\nfunction readBack(entry, type, text) {\n\tconst written = entry.written;\n\ttry {\n\t\treturn written.kind === \"plain\" && written.syntax === \"number\" ? written.classify(text) : {\n\t\t\ttype,\n\t\t\tvalue: written.parse(text)\n\t\t};\n\t} catch {\n\t\treturn;\n\t}\n}\nfunction literalText(entry, text) {\n\tconst written = entry.written;\n\tif (written.kind === \"tag\") return printTaggedLiteral(written.tag, text);\n\treturn written.syntax === \"string\" ? `\"${escapePslString(text)}\"` : text;\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, lookup, 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, lookup);\n\t\tif (stored === void 0 || !sameForm(stored, value)) continue;\n\t\tconst text = printedText(entry, candidate.value);\n\t\tif (text === void 0) continue;\n\t\tconst reread = readBack(entry, candidate.type, text);\n\t\tif (reread === void 0) continue;\n\t\tconst restored = admitted(reread, columnDataType, lookup);\n\t\tif (restored === void 0 || !sameForm(restored, value)) continue;\n\t\treturn literalText(entry, text);\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 text = printedText(entry, candidate.value);\n\t\tif (text === void 0) continue;\n\t\tconst reread = readBack(entry, candidate.type, text);\n\t\tif (reread === void 0 || !of.includes(reread.type)) continue;\n\t\treturn {\n\t\t\ttext: literalText(entry, text),\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, lookup, surface) {\n\tconst listCast = lookup.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(stored, options) {\n\tif (stored instanceof Date) return void 0;\n\tconst { dataTypes, columnCodec } = options ?? {};\n\tif (dataTypes === void 0 || columnCodec === void 0) return void 0;\n\tconst { entries, lookup } = dataTypes;\n\tconst columnDataType = columnCodec.dataType;\n\tconst { value } = defaultInCanonicalForm(stored, canonicalFormOf(columnCodec, lookup), options?.list === true);\n\tif (value instanceof Date) return void 0;\n\tconst surface = writingSurface(entries);\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, lookup, 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, lookup, surface);\n\tif (written !== void 0) return written;\n\treturn Array.isArray(value) ? writeListCast(value, columnDataType, lookup, 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\nexport { mapDefault, toEnumMemberName };\n\n//# sourceMappingURL=psl-build.mjs.map"],"mappings":"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"}
1
+ {"version":3,"file":"psl-build-C3WT2pWV.mjs","names":[],"sources":["../../../../2-sql/9-family/dist/psl-build.mjs"],"sourcesContent":["import { s as toEnumMemberName } from \"./psl-names-C3cwe0rg.mjs\";\nimport { SQL_EXPRESSION_TAG } from \"@internal/sql-contract/sql-expression\";\nimport { authoringEntryType, printTaggedLiteral } from \"@internal/framework-components/authoring\";\nimport { canonicalFormOf, dataTypeId } from \"@internal/framework-components/codec\";\nimport { numeralText } from \"@internal/sql-contract/data-type\";\nimport { defaultInCanonicalForm } from \"@internal/sql-schema-ir/types\";\nimport { escapePslString } from \"@internal/sql-contract/data-type-support\";\n//#region src/core/psl-build/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 `sql` literal. `undefined` when a literal has no written form. An expression\n* prints even when the literal would read back as different text: default expressions are compared\n* with case and whitespace ignored (`resolvedDefaultsEqual`), and canonicalization changes only\n* whitespace (ADR 129).\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(${printTaggedLiteral(SQL_EXPRESSION_TAG, columnDefault.expression)})` };\n\t}\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\tconst written = entry.written;\n\t\tif (written.kind === \"tag\") {\n\t\t\tconst type = dataTypeId(authoringEntryType(key, entry));\n\t\t\tif (!entryOf.has(type)) entryOf.set(type, entry);\n\t\t\ttagTypes.push(type);\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, lookup) {\n\tif (candidate.type === columnDataType) return candidate.value;\n\tconst cast = lookup.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 text of the literal: what the entry prints, before the syntax that fences it. */\nfunction printedText(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 text back as, which for a number is the classifier's answer. */\nfunction readBack(entry, type, text) {\n\tconst written = entry.written;\n\ttry {\n\t\treturn written.kind === \"plain\" && written.syntax === \"number\" ? written.classify(text) : {\n\t\t\ttype,\n\t\t\tvalue: written.parse(text)\n\t\t};\n\t} catch {\n\t\treturn;\n\t}\n}\nfunction literalText(entry, text) {\n\tconst written = entry.written;\n\tif (written.kind === \"tag\") return printTaggedLiteral(written.tag, text);\n\treturn written.syntax === \"string\" ? `\"${escapePslString(text)}\"` : text;\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, lookup, 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, lookup);\n\t\tif (stored === void 0 || !sameForm(stored, value)) continue;\n\t\tconst text = printedText(entry, candidate.value);\n\t\tif (text === void 0) continue;\n\t\tconst reread = readBack(entry, candidate.type, text);\n\t\tif (reread === void 0) continue;\n\t\tconst restored = admitted(reread, columnDataType, lookup);\n\t\tif (restored === void 0 || !sameForm(restored, value)) continue;\n\t\treturn literalText(entry, text);\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 text = printedText(entry, candidate.value);\n\t\tif (text === void 0) continue;\n\t\tconst reread = readBack(entry, candidate.type, text);\n\t\tif (reread === void 0 || !of.includes(reread.type)) continue;\n\t\treturn {\n\t\t\ttext: literalText(entry, text),\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, lookup, surface) {\n\tconst listCast = lookup.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(stored, options) {\n\tif (stored instanceof Date) return void 0;\n\tconst { dataTypes, columnCodec } = options ?? {};\n\tif (dataTypes === void 0 || columnCodec === void 0) return void 0;\n\tconst { entries, lookup } = dataTypes;\n\tconst columnDataType = columnCodec.dataType;\n\tconst { value } = defaultInCanonicalForm(stored, canonicalFormOf(columnCodec, lookup), options?.list === true);\n\tif (value instanceof Date) return void 0;\n\tconst surface = writingSurface(entries);\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, lookup, 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, lookup, surface);\n\tif (written !== void 0) return written;\n\treturn Array.isArray(value) ? writeListCast(value, columnDataType, lookup, 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\nexport { mapDefault, toEnumMemberName };\n\n//# sourceMappingURL=psl-build.mjs.map"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prisma/orm-family-sql",
3
- "version": "8.0.0-rc.17-dev.19",
3
+ "version": "8.0.0-rc.17-dev.21",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -9,8 +9,8 @@
9
9
  "dist"
10
10
  ],
11
11
  "dependencies": {
12
- "@prisma/orm-framework": "8.0.0-rc.17-dev.19",
13
- "@prisma/orm-toolchain": "8.0.0-rc.17-dev.19",
12
+ "@prisma/orm-framework": "8.0.0-rc.17-dev.21",
13
+ "@prisma/orm-toolchain": "8.0.0-rc.17-dev.21",
14
14
  "@standard-schema/spec": "^1.1.0",
15
15
  "arktype": "^2.2.2",
16
16
  "pathe": "^2.0.3",
@@ -19,21 +19,21 @@
19
19
  "ts-toolbelt": "^9.6.0"
20
20
  },
21
21
  "devDependencies": {
22
- "@internal/family-sql": "8.0.0-rc.17-dev.19",
23
- "@internal/sql-builder": "8.0.0-rc.17-dev.19",
24
- "@internal/sql-contract": "8.0.0-rc.17-dev.19",
25
- "@internal/sql-contract-emitter": "8.0.0-rc.17-dev.19",
26
- "@internal/sql-contract-prisma7": "8.0.0-rc.17-dev.19",
27
- "@internal/sql-contract-psl": "8.0.0-rc.17-dev.19",
28
- "@internal/sql-contract-ts": "8.0.0-rc.17-dev.19",
29
- "@internal/sql-errors": "8.0.0-rc.17-dev.19",
30
- "@internal/sql-operations": "8.0.0-rc.17-dev.19",
31
- "@internal/sql-orm-client": "8.0.0-rc.17-dev.19",
32
- "@internal/sql-relational-core": "8.0.0-rc.17-dev.19",
33
- "@internal/sql-runtime": "8.0.0-rc.17-dev.19",
34
- "@internal/sql-schema-ir": "8.0.0-rc.17-dev.19",
35
- "@repo/tsconfig": "8.0.0-rc.17-dev.19",
36
- "@repo/tsdown": "8.0.0-rc.17-dev.19",
22
+ "@internal/family-sql": "8.0.0-rc.17-dev.21",
23
+ "@internal/sql-builder": "8.0.0-rc.17-dev.21",
24
+ "@internal/sql-contract": "8.0.0-rc.17-dev.21",
25
+ "@internal/sql-contract-emitter": "8.0.0-rc.17-dev.21",
26
+ "@internal/sql-contract-prisma7": "8.0.0-rc.17-dev.21",
27
+ "@internal/sql-contract-psl": "8.0.0-rc.17-dev.21",
28
+ "@internal/sql-contract-ts": "8.0.0-rc.17-dev.21",
29
+ "@internal/sql-errors": "8.0.0-rc.17-dev.21",
30
+ "@internal/sql-operations": "8.0.0-rc.17-dev.21",
31
+ "@internal/sql-orm-client": "8.0.0-rc.17-dev.21",
32
+ "@internal/sql-relational-core": "8.0.0-rc.17-dev.21",
33
+ "@internal/sql-runtime": "8.0.0-rc.17-dev.21",
34
+ "@internal/sql-schema-ir": "8.0.0-rc.17-dev.21",
35
+ "@repo/tsconfig": "8.0.0-rc.17-dev.21",
36
+ "@repo/tsdown": "8.0.0-rc.17-dev.21",
37
37
  "tsdown": "0.22.14",
38
38
  "typescript": "5.9.3"
39
39
  },
@@ -1 +0,0 @@
1
- {"version":3,"file":"data-type-support-Bu-VpT7z.mjs","names":[],"sources":["../../../../2-sql/1-core/contract/dist/data-type-support.mjs"],"sourcesContent":["import { t as numeralText } from \"./numeral-text-Cqu87pVe.mjs\";\nimport { structuredError } from \"@internal/utils/structured-error\";\nimport { isNonFiniteText } from \"@internal/framework-components/codec\";\nimport { InternalError } from \"@internal/utils/internal-error\";\n//#region src/data-type-support.ts\nconst INTEGER_TEXT = /^-?\\d+$/;\nconst DECIMAL_TEXT = /^-?\\d+\\.\\d+$/;\nconst DECIMAL_NUMERAL = /^(-?)0*(\\d+)(\\.\\d+)?$/;\n/** Whether `text` is a whole number or a decimal as a contract source writes one. */\nfunction isNumeralText(text) {\n\treturn INTEGER_TEXT.test(text) || DECIMAL_TEXT.test(text);\n}\n/**\n* A written numeral as the contract stores it. Leading zeros and the sign of zero never change a\n* number, so they go; trailing zeros stay, because a type without a scale keeps them.\n*/\nfunction canonicalNumeralText(text) {\n\tconst numeral = DECIMAL_NUMERAL.exec(text);\n\tif (numeral === null) return text;\n\tconst [, sign = \"\", whole = \"\", fraction = \"\"] = numeral;\n\tconst digits = `${whole}${fraction}`;\n\treturn /^[0.]+$/.test(digits) ? digits : `${sign}${digits}`;\n}\n/**\n* The canonical form of a 64-bit integer type: digit text. A database reads an integer default back as a number when it is a safe integer, so a safe integer reads as its digit text too; any other number may already have lost digits and is refused.\n*/\nconst integerTextCanonicalForm = (value) => {\n\tif (typeof value === \"number\" && Number.isSafeInteger(value)) return numeralText(value);\n\tif (typeof value === \"string\" && INTEGER_TEXT.test(value)) return BigInt(value).toString();\n\tthrow structuredError(\"CONTRACT.CAST_REFUSED\", `Expected digit text or a safe integer, got ${JSON.stringify(value)}.`, {\n\t\twhy: \"A 64-bit integer type stores its value as digit text, and a number past the safe integer range may already have lost digits.\",\n\t\tfix: \"Write the value as digit text.\"\n\t});\n};\n/** A string as a contract source writes it, with the escapes its string reader resolves. */\nfunction escapePslString(value) {\n\treturn value.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, \"\\\\\\\"\").replace(/\\n/g, \"\\\\n\").replace(/\\r/g, \"\\\\r\");\n}\n/** The range of a signed integer of `bits` bits. */\nfunction signedRange(bits) {\n\tconst half = 2n ** (BigInt(bits) - 1n);\n\treturn {\n\t\tmin: -half,\n\t\tmax: half - 1n\n\t};\n}\n/**\n* The classifier one target's plain-number authoring entry carries: it reads the digits and says\n* which of the target's types the value is, in that type's canonical form. `undefined` means no\n* type of this target holds the number.\n*/\nfunction createNumberClassifier(spec) {\n\tconst as = (classification, value) => classification === void 0 ? void 0 : {\n\t\ttype: classification.type,\n\t\tvalue\n\t};\n\treturn (text) => {\n\t\tif (isNonFiniteText(text)) return as(spec.words, spec.words?.form === \"number\" ? Number(text) : text);\n\t\tif (DECIMAL_TEXT.test(text)) {\n\t\t\tconst canonical = canonicalNumeralText(text);\n\t\t\treturn as(spec.fraction, spec.fraction?.form === \"number\" ? Number(canonical) : canonical);\n\t\t}\n\t\tif (!INTEGER_TEXT.test(text)) return void 0;\n\t\tconst digits = BigInt(text);\n\t\tconst classification = spec.integers.find(({ min, max }) => digits >= min && digits <= max) ?? spec.largerWhole;\n\t\treturn as(classification, classification?.form === \"number\" ? Number(digits) : digits.toString());\n\t};\n}\n/**\n* Read JSON text into the document it holds.\n*\n* `JSON.parse` reads a numeral too large for a double as `Infinity`, and `JSON.stringify` writes\n* that back as `null`, so a document holding one would not be the document stored; it is refused\n* here instead, naming where the number is.\n*/\nfunction parseJsonText(text) {\n\tlet value;\n\ttry {\n\t\tvalue = JSON.parse(text);\n\t} catch (error) {\n\t\tthrow structuredError(\"CONTRACT.INVALID_JSON_LITERAL\", error instanceof Error ? error.message : String(error), {\n\t\t\twhy: \"The text is not a JSON document.\",\n\t\t\tfix: \"Write a JSON document.\"\n\t\t});\n\t}\n\tconst overflowed = nonFiniteNumberIn(value, \"\");\n\tif (overflowed !== void 0) throw structuredError(\"CONTRACT.INVALID_JSON_LITERAL\", `${overflowed.path} is ${overflowed.value}, which JSON cannot write back: the number in the text is outside the range a JSON number holds.`, {\n\t\twhy: \"JSON.parse reads a numeral too large for a double as Infinity, which JSON.stringify writes back as null.\",\n\t\tfix: \"Write a number JSON can hold, or write it as text.\"\n\t});\n\treturn value;\n}\n/** Write a document as the text of a JSON literal. */\nfunction printJsonText(value) {\n\treturn JSON.stringify(value);\n}\nfunction nonFiniteNumberIn(value, path) {\n\tif (typeof value === \"number\") return Number.isFinite(value) ? void 0 : {\n\t\tpath: path === \"\" ? \"The value\" : path,\n\t\tvalue\n\t};\n\tif (Array.isArray(value)) {\n\t\tfor (const [index, element] of value.entries()) {\n\t\t\tconst found = nonFiniteNumberIn(element, `${path}[${index}]`);\n\t\t\tif (found !== void 0) return found;\n\t\t}\n\t\treturn;\n\t}\n\tif (typeof value === \"object\" && value !== null) for (const [key, member] of Object.entries(value)) {\n\t\tconst found = nonFiniteNumberIn(member, path === \"\" ? key : `${path}.${key}`);\n\t\tif (found !== void 0) return found;\n\t}\n}\n//#endregion\n//#region src/date-time-canonical-form.ts\n/**\n* The reader the SQL targets build the canonical form of each date and time type with; ADR 254\n* states the forms and the text it reads.\n*/\nconst SHAPES = {\n\tdate: {\n\t\tdescription: \"a date\",\n\t\tplural: \"dates\",\n\t\texample: \"2024-01-01\",\n\t\tdate: true,\n\t\ttime: false,\n\t\toffset: false\n\t},\n\ttime: {\n\t\tdescription: \"a time of day\",\n\t\tplural: \"times of day\",\n\t\texample: \"12:34:56\",\n\t\tdate: false,\n\t\ttime: true,\n\t\toffset: false\n\t},\n\ttimeWithOffset: {\n\t\tdescription: \"a time of day with a UTC offset\",\n\t\tplural: \"times of day with a UTC offset\",\n\t\texample: \"12:34:56+02:00\",\n\t\tdate: false,\n\t\ttime: true,\n\t\toffset: true\n\t},\n\tdateTime: {\n\t\tdescription: \"a date and time\",\n\t\tplural: \"dates and times\",\n\t\texample: \"2024-01-01T12:34:56\",\n\t\tdate: true,\n\t\ttime: true,\n\t\toffset: false\n\t},\n\tinstant: {\n\t\tdescription: \"a date and time with a UTC offset\",\n\t\tplural: \"instants\",\n\t\texample: \"2024-01-01T12:34:56Z\",\n\t\tdate: true,\n\t\ttime: true,\n\t\toffset: true\n\t}\n};\nconst DATE_PREFIX = /^([+-]\\d{6}|\\d{4})-(\\d{2})-(\\d{2})/;\nconst TIME_PREFIX = /^(\\d{2}):(\\d{2})(?::(\\d{2})(?:\\.(\\d+))?)?/;\nconst OFFSET = /^([+-])(\\d{2})(?::(\\d{2})(?::(\\d{2}))?)?$/;\nconst MAX_FRACTION_DIGITS = 6;\nconst FRACTION_UNITS = {\n\t3: \"milliseconds\",\n\t6: \"microseconds\"\n};\nconst SECONDS_PER_DAY = 86400;\nconst MIDNIGHT = {\n\thour: 0,\n\tminute: 0,\n\tsecond: 0,\n\tfraction: \"\"\n};\nfunction refused(message) {\n\tthrow structuredError(\"CONTRACT.CAST_REFUSED\", message, {\n\t\twhy: \"A date or time type stores one canonical form for each value (ADR 254).\",\n\t\tfix: \"Write text the type holds, as the message shows.\"\n\t});\n}\nfunction isLeapYear(year) {\n\treturn year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n}\nfunction daysInMonth(year, month) {\n\tif (month === 2) return isLeapYear(year) ? 29 : 28;\n\treturn [\n\t\t4,\n\t\t6,\n\t\t9,\n\t\t11\n\t].includes(month) ? 30 : 31;\n}\n/** Days from 1970-01-01 to a date of the proleptic Gregorian calendar, with year 0 as 1 BC. */\nfunction daysFromCivil({ year, month, day }) {\n\tconst shifted = month <= 2 ? year - 1 : year;\n\tconst era = Math.floor(shifted / 400);\n\tconst yearOfEra = shifted - era * 400;\n\tconst dayOfYear = Math.floor((153 * (month + (month > 2 ? -3 : 9)) + 2) / 5) + day - 1;\n\tconst dayOfEra = yearOfEra * 365 + Math.floor(yearOfEra / 4) - Math.floor(yearOfEra / 100) + dayOfYear;\n\treturn era * 146097 + dayOfEra - 719468;\n}\nfunction civilFromDays(days) {\n\tconst shifted = days + 719468;\n\tconst era = Math.floor(shifted / 146097);\n\tconst dayOfEra = shifted - era * 146097;\n\tconst yearOfEra = Math.floor((dayOfEra - Math.floor(dayOfEra / 1460) + Math.floor(dayOfEra / 36524) - Math.floor(dayOfEra / 146096)) / 365);\n\tconst dayOfYear = dayOfEra - (365 * yearOfEra + Math.floor(yearOfEra / 4) - Math.floor(yearOfEra / 100));\n\tconst monthIndex = Math.floor((5 * dayOfYear + 2) / 153);\n\tconst day = dayOfYear - Math.floor((153 * monthIndex + 2) / 5) + 1;\n\tconst month = monthIndex < 10 ? monthIndex + 3 : monthIndex - 9;\n\treturn {\n\t\tyear: yearOfEra + era * 400 + (month <= 2 ? 1 : 0),\n\t\tmonth,\n\t\tday\n\t};\n}\nfunction pad(value, width = 2) {\n\treturn String(value).padStart(width, \"0\");\n}\nfunction yearText(year) {\n\tif (year >= 0 && year <= 9999) return pad(year, 4);\n\treturn `${year < 0 ? \"-\" : \"+\"}${pad(Math.abs(year), 6)}`;\n}\nfunction dateText(date) {\n\treturn `${yearText(date.year)}-${pad(date.month)}-${pad(date.day)}`;\n}\nfunction timeText(time) {\n\tconst fraction = time.fraction.replace(/0+$/, \"\");\n\treturn `${pad(time.hour)}:${pad(time.minute)}:${pad(time.second)}${fraction === \"\" ? \"\" : `.${fraction}`}`;\n}\nfunction offsetText(seconds) {\n\tif (seconds === 0) return \"Z\";\n\tconst magnitude = Math.abs(seconds);\n\tconst rest = magnitude % 60;\n\treturn `${seconds < 0 ? \"-\" : \"+\"}${pad(Math.floor(magnitude / 3600))}:${pad(Math.floor(magnitude / 60) % 60)}${rest === 0 ? \"\" : `:${pad(rest)}`}`;\n}\n/**\n* The fields of an ISO 8601 date, time, or date and time, or `undefined` when the text is not one.\n* Ranges are checked by the caller, which words the refusal.\n*/\nfunction readWritten(text) {\n\tlet rest = text;\n\tlet date;\n\tlet timeFollows = true;\n\tconst dateMatch = DATE_PREFIX.exec(rest);\n\tif (dateMatch !== null) {\n\t\tconst [whole, yearDigits = \"\", month = \"\", day = \"\"] = dateMatch;\n\t\tif (yearDigits === \"-000000\") return void 0;\n\t\tdate = {\n\t\t\tyear: Number(yearDigits),\n\t\t\tmonth: Number(month),\n\t\t\tday: Number(day)\n\t\t};\n\t\trest = rest.slice(whole.length);\n\t\ttimeFollows = /^[Tt ]/.test(rest);\n\t\tif (timeFollows) rest = rest.slice(1);\n\t}\n\tlet time;\n\tlet fractionDigits = 0;\n\tif (timeFollows) {\n\t\tconst timeMatch = TIME_PREFIX.exec(rest);\n\t\tif (timeMatch === null) return void 0;\n\t\tconst [whole, hour = \"\", minute = \"\", second = \"00\", fraction = \"\"] = timeMatch;\n\t\ttime = {\n\t\t\thour: Number(hour),\n\t\t\tminute: Number(minute),\n\t\t\tsecond: Number(second),\n\t\t\tfraction\n\t\t};\n\t\tfractionDigits = fraction.length;\n\t\trest = rest.slice(whole.length);\n\t}\n\tlet offsetSeconds;\n\tif (rest === \"Z\" || rest === \"z\") offsetSeconds = 0;\n\telse if (rest !== \"\") {\n\t\tconst offset = OFFSET.exec(rest);\n\t\tif (offset === null) return void 0;\n\t\tconst [, sign, hours = \"\", minutes = \"00\", seconds = \"00\"] = offset;\n\t\tif (Number(minutes) > 59 || Number(seconds) > 59) return void 0;\n\t\tconst magnitude = Number(hours) * 3600 + Number(minutes) * 60 + Number(seconds);\n\t\toffsetSeconds = sign === \"-\" ? -magnitude : magnitude;\n\t}\n\treturn {\n\t\tdate,\n\t\ttime,\n\t\toffsetSeconds,\n\t\tfractionDigits\n\t};\n}\nfunction withFraction(example, digits) {\n\treturn example.replace(/(\\d{2}:\\d{2}:\\d{2})/, `$1.${\"123456\".slice(0, digits)}`);\n}\n/** The value with an instant moved to UTC. */\nfunction normalized(written, shape) {\n\tconst clock = written.time ?? MIDNIGHT;\n\tconst offsetSeconds = written.offsetSeconds ?? 0;\n\tif (written.date === void 0 || shape !== \"instant\") return {\n\t\tdate: written.date,\n\t\ttime: clock,\n\t\toffsetSeconds\n\t};\n\tconst utc = daysFromCivil(written.date) * SECONDS_PER_DAY + clock.hour * 3600 + clock.minute * 60 + clock.second - offsetSeconds;\n\tconst days = Math.floor(utc / SECONDS_PER_DAY);\n\tconst secondOfDay = utc - days * SECONDS_PER_DAY;\n\treturn {\n\t\tdate: civilFromDays(days),\n\t\ttime: {\n\t\t\thour: Math.floor(secondOfDay / 3600),\n\t\t\tminute: Math.floor(secondOfDay / 60) % 60,\n\t\t\tsecond: secondOfDay % 60,\n\t\t\tfraction: clock.fraction\n\t\t},\n\t\toffsetSeconds: 0\n\t};\n}\nfunction position(value) {\n\tconst { time } = value;\n\treturn [\n\t\tvalue.date === void 0 ? 0 : daysFromCivil(value.date),\n\t\ttime.hour * 3600 + time.minute * 60 + time.second,\n\t\ttime.fraction.padEnd(MAX_FRACTION_DIGITS, \"0\")\n\t];\n}\nfunction isBefore(left, right) {\n\tif (left[0] !== right[0]) return left[0] < right[0];\n\tif (left[1] !== right[1]) return left[1] < right[1];\n\treturn left[2] < right[2];\n}\nfunction printed(value, shape) {\n\tconst { date, time, offsetSeconds } = value;\n\tif (date === void 0) return shape === \"timeWithOffset\" ? `${timeText(time)}${offsetText(offsetSeconds)}` : timeText(time);\n\tif (shape === \"date\") return dateText(date);\n\tif (shape === \"dateTime\") return `${dateText(date)}T${timeText(time)}`;\n\treturn `${dateText(date)}T${timeText(time)}Z`;\n}\n/** The position of a range bound, which the data type declares in canonical form. */\nfunction boundPosition(text, shape) {\n\tconst written = readWritten(text);\n\tif (written === void 0) throw new InternalError(`The range bound \"${text}\" is not in canonical form.`);\n\treturn position(normalized(written, shape));\n}\n/**\n* The canonical form of written date or time text, or a refusal with a message that says what is\n* wrong and shows text the type holds. `written` is the text as its author wrote it, which the\n* message shows, when a target rewrote it into ISO 8601 before calling this.\n*/\nfunction canonicalDateTime(text, options, written = text) {\n\tconst shape = SHAPES[options.shape];\n\tconst { ownerId: id } = options;\n\tconst parts = readWritten(text);\n\tif (parts === void 0) refused(`${id} cannot read \"${written}\". Write ${shape.description}, as in \"${shape.example}\".`);\n\tif (parts.date !== void 0 && !shape.date) refused(`${id} holds a time of day without a date, but \"${written}\" has a date. Write the time alone, as in \"${shape.example}\".`);\n\tif (parts.date === void 0 && shape.date) refused(shape.time ? `${id} holds ${shape.description}, but \"${written}\" has no date. Write the date too, as in \"${shape.example}\".` : `${id} holds a date, and \"${written}\" is a time of day. Write a date, as in \"${shape.example}\".`);\n\tif (parts.time !== void 0 && !shape.time) refused(`${id} holds a date without a time of day, but \"${written}\" has a time. Write the date alone, as in \"${shape.example}\".`);\n\tif (parts.time === void 0 && shape.offset) refused(`${id} holds ${shape.description}, but \"${written}\" has no time of day. Write the time too, as in \"${shape.example}\".`);\n\tif (parts.offsetSeconds !== void 0 && !shape.offset) refused(`${id} holds no UTC offset, but \"${written}\" has one. Leave it out, as in \"${shape.example}\".`);\n\tif (parts.offsetSeconds === void 0 && shape.offset) refused(`${id} needs a UTC offset, but \"${written}\" has none. Add Z for UTC or an offset such as +02:00, as in \"${shape.example}\".`);\n\tconst maxFractionDigits = options.maxFractionDigits ?? MAX_FRACTION_DIGITS;\n\tif (parts.fractionDigits > maxFractionDigits) refused(`\"${written}\" has ${parts.fractionDigits} digits after the decimal point, but ${id} holds ${FRACTION_UNITS[maxFractionDigits]}, so at most ${maxFractionDigits}. Round it, as in \"${withFraction(shape.example, maxFractionDigits)}\".`);\n\tconst { date, time } = parts;\n\tif (date !== void 0 && (date.month < 1 || date.month > 12 || date.day < 1 || date.day > daysInMonth(date.year, date.month))) refused(`\"${written}\" is not a date that exists. Write a real date, as in \"${shape.example}\".`);\n\tif (time !== void 0 && (time.hour > 23 || time.minute > 59 || time.second > 59)) refused(`\"${written}\" is not a time of day that exists: hours run from 00 to 23, and minutes and seconds from 00 to 59. Write one, as in \"${shape.example}\".`);\n\tconst offsetLimit = options.maxOffsetHours ?? 23;\n\tif (parts.offsetSeconds !== void 0 && Math.abs(parts.offsetSeconds) >= (offsetLimit + 1) * 3600) refused(`\"${written}\" has a UTC offset outside -${pad(offsetLimit)}:59 to +${pad(offsetLimit)}:59, which ${id} does not hold. Write a smaller offset, as in \"${shape.example}\".`);\n\tconst value = normalized(parts, options.shape);\n\tconst { range } = options;\n\tif (range !== void 0) {\n\t\tconst at = position(value);\n\t\tif (isBefore(at, boundPosition(range.earliest, options.shape)) || isBefore(boundPosition(range.latest, options.shape), at)) refused(`${id} holds ${shape.plural} from ${range.earliest} to ${range.latest}, and \"${written}\" is outside them.`);\n\t}\n\treturn printed(value, options.shape);\n}\n//#endregion\nexport { canonicalDateTime, canonicalNumeralText, createNumberClassifier, escapePslString, integerTextCanonicalForm, isNumeralText, parseJsonText, printJsonText, signedRange };\n\n//# sourceMappingURL=data-type-support.mjs.map"],"mappings":"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"}