@prisma/orm-framework 8.0.0-rc.17-dev.17 → 8.0.0-rc.17-dev.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/dist/{authoring-Bk5x6Kvi.mjs → authoring-Bv-ExMUC.mjs} +2 -2
  2. package/dist/authoring-Bv-ExMUC.mjs.map +1 -0
  3. package/dist/{authoring-CiZ755jw.d.mts → authoring-Cdm02TLT.d.mts} +2 -2
  4. package/dist/{authoring-CiZ755jw.d.mts.map → authoring-Cdm02TLT.d.mts.map} +1 -1
  5. package/dist/{binder-C7GnHWyT-_H6i-B7e.d.mts → binder-C7GnHWyT-D-CMg2qt.d.mts} +6 -6
  6. package/dist/{binder-C7GnHWyT-_H6i-B7e.d.mts.map → binder-C7GnHWyT-D-CMg2qt.d.mts.map} +1 -1
  7. package/dist/{codec-p8FrxU53.mjs → codec-B-7ArtWI.mjs} +2 -2
  8. package/dist/{codec-p8FrxU53.mjs.map → codec-B-7ArtWI.mjs.map} +1 -1
  9. package/dist/components.d.mts +5 -5
  10. package/dist/components.mjs +5 -5
  11. package/dist/components__authoring.d.mts +3 -3
  12. package/dist/components__authoring.mjs +3 -3
  13. package/dist/components__codec.mjs +1 -1
  14. package/dist/components__control.d.mts +3 -3
  15. package/dist/components__control.mjs +2 -2
  16. package/dist/{config-types-B0n_v8BF.d.mts → config-types-DDmOiupw.d.mts} +4 -4
  17. package/dist/{config-types-B0n_v8BF.d.mts.map → config-types-DDmOiupw.d.mts.map} +1 -1
  18. package/dist/config.d.mts +1 -1
  19. package/dist/config__config-types.d.mts +1 -1
  20. package/dist/contract-authoring.d.mts +1 -1
  21. package/dist/contract-authoring.mjs +2 -2
  22. package/dist/{control-C4Q85sT5-CIjVNitX.mjs → control-C4Q85sT5-Dv75I30R.mjs} +2 -2
  23. package/dist/{control-C4Q85sT5-CIjVNitX.mjs.map → control-C4Q85sT5-Dv75I30R.mjs.map} +1 -1
  24. package/dist/{control-DhWsAbYJ-D9eWSlYE.d.mts → control-DhWsAbYJ-CrtxR4UW.d.mts} +2 -2
  25. package/dist/{control-DhWsAbYJ-D9eWSlYE.d.mts.map → control-DhWsAbYJ-CrtxR4UW.d.mts.map} +1 -1
  26. package/dist/{control-Bh3RtVrv.d.mts → control-DsRyU-u2.d.mts} +3 -3
  27. package/dist/{control-Bh3RtVrv.d.mts.map → control-DsRyU-u2.d.mts.map} +1 -1
  28. package/dist/control-JlpGbz6x.d.mts +1 -0
  29. package/dist/{control-COaCVAZw.mjs → control-c9xjy4Jm.mjs} +2 -2
  30. package/dist/{control-COaCVAZw.mjs.map → control-c9xjy4Jm.mjs.map} +1 -1
  31. package/dist/{declarations-DosoNVo9-Bnoie4Sr.mjs → declarations-DosoNVo9-qtyHBZ2H.mjs} +2 -2
  32. package/dist/{declarations-DosoNVo9-Bnoie4Sr.mjs.map → declarations-DosoNVo9-qtyHBZ2H.mjs.map} +1 -1
  33. package/dist/{dist-DtT9I2iL.mjs → dist-BHoPlvHD.mjs} +7 -3
  34. package/dist/dist-BHoPlvHD.mjs.map +1 -0
  35. package/dist/errors.d.mts +4 -4
  36. package/dist/errors.mjs +3 -3
  37. package/dist/errors__control.d.mts +2 -2
  38. package/dist/errors__control.mjs +1 -1
  39. package/dist/errors__execution.d.mts +1 -1
  40. package/dist/errors__execution.mjs +1 -1
  41. package/dist/errors__migration.d.mts +1 -1
  42. package/dist/errors__migration.mjs +1 -1
  43. package/dist/{execution-B6GZC7hD.mjs → execution-C19mSmeN.mjs} +2 -2
  44. package/dist/{execution-B6GZC7hD.mjs.map → execution-C19mSmeN.mjs.map} +1 -1
  45. package/dist/{execution-B82y8eTq.d.mts → execution-CodDd-o0.d.mts} +3 -3
  46. package/dist/{execution-B82y8eTq.d.mts.map → execution-CodDd-o0.d.mts.map} +1 -1
  47. package/dist/{index-DeSumOoq.d.mts → index-wEX7G1Bv.d.mts} +4 -2
  48. package/dist/{index-DeSumOoq.d.mts.map → index-wEX7G1Bv.d.mts.map} +1 -1
  49. package/dist/{migration-BMYBXx-x.mjs → migration-BBoKodRM.mjs} +2 -2
  50. package/dist/{migration-BMYBXx-x.mjs.map → migration-BBoKodRM.mjs.map} +1 -1
  51. package/dist/{migration-BRSTbjHJ.d.mts → migration-IPciO0V7.d.mts} +2 -2
  52. package/dist/{migration-BRSTbjHJ.d.mts.map → migration-IPciO0V7.d.mts.map} +1 -1
  53. package/dist/{parse-CKPyOsa_-k7l8eoV7.mjs → parse-CKPyOsa_-D_c5ZPeY.mjs} +2 -2
  54. package/dist/{parse-CKPyOsa_-k7l8eoV7.mjs.map → parse-CKPyOsa_-D_c5ZPeY.mjs.map} +1 -1
  55. package/dist/{parse-Dz0FUoAQ-CflUTYu0.d.mts → parse-Dz0FUoAQ-CKj_IY0g.d.mts} +4 -4
  56. package/dist/{parse-Dz0FUoAQ-CflUTYu0.d.mts.map → parse-Dz0FUoAQ-CKj_IY0g.d.mts.map} +1 -1
  57. package/dist/psl-parser.d.mts +5 -5
  58. package/dist/psl-parser.mjs +3 -3
  59. package/dist/psl-parser__format.d.mts +1 -1
  60. package/dist/psl-parser__format.mjs +2 -2
  61. package/dist/psl-parser__interpret.d.mts +4 -4
  62. package/dist/psl-parser__interpret.mjs +1 -1
  63. package/dist/psl-parser__syntax.d.mts +1 -1
  64. package/dist/psl-parser__syntax.mjs +2 -2
  65. package/dist/psl-printer.d.mts +1 -1
  66. package/dist/psl-printer.mjs +1 -1
  67. package/dist/{temporal-presets-CjxLjyl8-DhMFaNE2.mjs → temporal-presets-DEyPX8qQ-Bz4DdZ8v.mjs} +43 -3
  68. package/dist/temporal-presets-DEyPX8qQ-Bz4DdZ8v.mjs.map +1 -0
  69. package/dist/ts-render.d.mts +2 -2
  70. package/dist/ts-render.mjs +2 -2
  71. package/dist/{written-value-DdEQAH_R-yhLbzRP4.d.mts → written-value--KnOpj99-DByhg5hX.d.mts} +14 -3
  72. package/dist/written-value--KnOpj99-DByhg5hX.d.mts.map +1 -0
  73. package/package.json +15 -15
  74. package/dist/authoring-Bk5x6Kvi.mjs.map +0 -1
  75. package/dist/control-CXCnsj07.d.mts +0 -1
  76. package/dist/dist-DtT9I2iL.mjs.map +0 -1
  77. package/dist/temporal-presets-CjxLjyl8-DhMFaNE2.mjs.map +0 -1
  78. package/dist/written-value-DdEQAH_R-yhLbzRP4.d.mts.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"temporal-presets-DEyPX8qQ-Bz4DdZ8v.mjs","names":[],"sources":["../../../../1-framework/1-core/framework-components/dist/temporal-presets-DEyPX8qQ.mjs"],"sourcesContent":["import { n as runtimeError } from \"./runtime-error-BA9d7XjZ.mjs\";\nimport { blindCast } from \"@internal/utils/casts\";\nimport { ifDefined } from \"@internal/utils/defined\";\nimport { tsQuotedTextSource, tsTemplateText } from \"@internal/ts-render\";\nimport { isColumnDefaultLiteralInputValue, isExecutionMutationDefaultValue } from \"@internal/contract/types\";\nimport { invariant } from \"@internal/utils/assertions\";\nimport { InternalError } from \"@internal/utils/internal-error\";\n//#region src/shared/framework-authoring.ts\nconst AUTHORING_WARNING_BATCH_THRESHOLD = 5;\n/**\n* Emits collected authoring warnings once per build, grouped by `code`:\n* a group at or below the threshold itemizes every `message`; above it,\n* one summary — `\"<count> <summary>\"` followed by the `item` lines — so\n* a build with many hits of one kind does not wall-of-text, and warnings\n* of different codes never batch into each other's summary.\n*/\nfunction flushAuthoringWarnings(warnings) {\n\tconst groups = /* @__PURE__ */ new Map();\n\tfor (const warning of warnings) {\n\t\tconst key = JSON.stringify([warning.code, warning.summary]);\n\t\tconst group = groups.get(key) ?? [];\n\t\tgroup.push(warning);\n\t\tgroups.set(key, group);\n\t}\n\tfor (const group of groups.values()) {\n\t\tconst first = group[0];\n\t\tif (first === void 0) continue;\n\t\tif (group.length <= AUTHORING_WARNING_BATCH_THRESHOLD) {\n\t\t\tfor (const warning of group) process.emitWarning(warning.message, { code: warning.code });\n\t\t\tcontinue;\n\t\t}\n\t\tprocess.emitWarning(`${group.length} ${first.summary}\\n${group.map((w) => ` - ${w.item}`).join(\"\\n\")}`, { code: first.code });\n\t}\n}\nfunction classifyEnumMemberType(values) {\n\tlet sawText = false;\n\tlet sawInt = false;\n\tfor (const key of Object.keys(values)) {\n\t\tconst value = values[key];\n\t\tif (value === void 0 || typeof value === \"string\") sawText = true;\n\t\telse if (typeof value === \"number\" && Number.isInteger(value)) sawInt = true;\n\t\telse return null;\n\t}\n\tif (sawText && sawInt) return null;\n\tif (sawText) return \"text\";\n\tif (sawInt) return \"int\";\n\treturn null;\n}\n/**\n* Resolves the codec id for an `enum` block. When `@@type` is absent, the codec\n* is inferred from the members via {@link classifyEnumMemberType}; otherwise the\n* explicit `@@type(\"codec\")` argument is parsed. Pushes the appropriate\n* diagnostic and returns `undefined` when neither yields a codec. `codecSpan` is\n* the span downstream codec-validation diagnostics should anchor to. Shared by\n* every family's enum factory so inference and the explicit path stay identical.\n*/\nfunction resolveEnumCodecId(block, ctx) {\n\tconst sourceId = ctx.sourceId ?? \"unknown\";\n\tconst typeAttr = block.attributes[\"type\"];\n\tif (typeAttr === void 0) {\n\t\tconst inferredKind = classifyEnumMemberType(block.values);\n\t\tif (inferredKind === null || ctx.enumInferenceCodecs === void 0) {\n\t\t\tctx.diagnostics?.push({\n\t\t\t\tcode: \"PSL_ENUM_CANNOT_INFER_TYPE\",\n\t\t\t\tmessage: `cannot infer @@type for enum \"${block.name}\"; add an explicit @@type(...)`,\n\t\t\t\tsourceId,\n\t\t\t\tspan: block.span\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\treturn {\n\t\t\tcodecId: ctx.enumInferenceCodecs[inferredKind],\n\t\t\tcodecSpan: block.span\n\t\t};\n\t}\n\tconst codecId = typeAttr.args[\"codecId\"];\n\tinvariant(typeof codecId === \"string\", \"@@type on an enum block parses one string argument\");\n\treturn {\n\t\tcodecId,\n\t\tcodecSpan: typeAttr.argSpans?.[\"codecId\"] ?? typeAttr.span\n\t};\n}\nconst TAG_ENTRY_PREFIX = \"tag:\";\n/**\n* The key an entry sits under when its tag yields a type whose own key is taken by the entry for\n* another syntax: SQLite's `json` tag yields `sqlite/text`, whose entry reads a plain string. A data\n* type id is `owner/name`, so this key never collides with one.\n*/\nfunction tagEntryKey(tag) {\n\treturn `${TAG_ENTRY_PREFIX}${tag}`;\n}\nfunction isTagEntryKey(key) {\n\treturn key.startsWith(TAG_ENTRY_PREFIX);\n}\n/** The data type a value entry reads its written form as: its tag's `type`, or else its key. */\nfunction authoringEntryType(key, entry) {\n\treturn entry.written.kind === \"tag\" && entry.written.type !== void 0 ? entry.written.type : key;\n}\nfunction isAuthoringArgRef(value) {\n\tif (typeof value !== \"object\" || value === null || value.kind !== \"arg\") return false;\n\tconst { index, path } = value;\n\tif (typeof index !== \"number\" || !Number.isInteger(index) || index < 0) return false;\n\tif (path !== void 0 && (!Array.isArray(path) || path.some((s) => typeof s !== \"string\"))) return false;\n\treturn true;\n}\nfunction isAuthoringSelectRef(value) {\n\tif (!isAuthoringTemplateRecord(value) || value[\"kind\"] !== \"select\") return false;\n\tconst index = value[\"index\"];\n\tconst path = value[\"path\"];\n\tconst cases = value[\"cases\"];\n\tif (typeof index !== \"number\" || !Number.isInteger(index) || index < 0) return false;\n\tif (path !== void 0 && (!Array.isArray(path) || path.some((s) => typeof s !== \"string\"))) return false;\n\treturn typeof cases === \"object\" && cases !== null && !Array.isArray(cases);\n}\nfunction isAuthoringTemplateRecord(value) {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction readTemplateArgumentValue(args, index, path) {\n\tlet value = args[index];\n\tfor (const segment of path ?? []) {\n\t\tif (!isAuthoringTemplateRecord(value) || !Object.hasOwn(value, segment)) return;\n\t\tvalue = value[segment];\n\t}\n\treturn value;\n}\nfunction isAuthoringTypeConstructorDescriptor(value) {\n\treturn \"kind\" in value && value.kind === \"typeConstructor\";\n}\n/** The type constructor at `path` in the contributions' type namespace, or `undefined` when none is there. */\nfunction getAuthoringTypeConstructor(contributions, path) {\n\tlet current = contributions?.type;\n\tfor (const segment of path) {\n\t\tif (typeof current !== \"object\" || current === null || \"kind\" in current) return;\n\t\tcurrent = current[segment];\n\t}\n\treturn current !== void 0 && isAuthoringTypeConstructorDescriptor(current) ? current : void 0;\n}\nfunction isAuthoringFieldPresetDescriptor(value) {\n\treturn \"kind\" in value && value.kind === \"fieldPreset\";\n}\nfunction isAuthoringEntityTypeDescriptor(value) {\n\treturn \"kind\" in value && value.kind === \"entity\";\n}\nfunction isAuthoringPslBlockDescriptor(value) {\n\treturn \"kind\" in value && value.kind === \"pslBlock\";\n}\nfunction isAuthoringModelAttributeDescriptor(value) {\n\treturn \"kind\" in value && value.kind === \"modelAttribute\";\n}\nfunction isCopyableNamespaceObject(value) {\n\tif (typeof value !== \"object\" || value === null || Array.isArray(value)) return false;\n\tconst proto = Object.getPrototypeOf(value);\n\treturn proto === Object.prototype || proto === null;\n}\n/**\n* Deep structural check run only at the composition boundary (the merge and\n* collect walkers) to classify a raw namespace-tree node as a leaf descriptor.\n* A node counts as a leaf iff its `kind` matches `descriptorKind` AND it\n* carries that kind's required fields.\n*\n* This is boundary validation over `unknown`, NOT a type-predicate: the four\n* exported `isAuthoring*Descriptor` predicates deliberately narrow on `kind`\n* alone and trust the static types. The walkers, by contrast, also receive\n* type-bypassing packs (`as unknown as never` in tests, untyped JS at runtime)\n* whose descriptor-shaped-but-incomplete nodes must be rejected rather than\n* silently treated as sub-namespaces — so the well-formedness check lives here.\n*/\nfunction isWellFormedDescriptor(value, descriptorKind) {\n\tif (typeof value !== \"object\" || value === null) return false;\n\tif (!(\"kind\" in value) || value.kind !== descriptorKind) return false;\n\tswitch (descriptorKind) {\n\t\tcase \"typeConstructor\":\n\t\tcase \"fieldPreset\": {\n\t\t\tif (!(\"output\" in value)) return false;\n\t\t\tconst output = value.output;\n\t\t\treturn typeof output === \"object\" && output !== null;\n\t\t}\n\t\tcase \"entity\": {\n\t\t\tif (!(\"discriminator\" in value) || typeof value.discriminator !== \"string\") return false;\n\t\t\tif (value.discriminator.length === 0) return false;\n\t\t\tif (!(\"output\" in value)) return false;\n\t\t\tconst output = value.output;\n\t\t\tif (typeof output !== \"object\" || output === null) return false;\n\t\t\tconst factory = \"factory\" in output ? output.factory : void 0;\n\t\t\tconst template = \"template\" in output ? output.template : void 0;\n\t\t\treturn typeof factory === \"function\" || template !== void 0;\n\t\t}\n\t\tcase \"pslBlock\": {\n\t\t\tif (!(\"keyword\" in value) || typeof value.keyword !== \"string\" || value.keyword.length === 0) return false;\n\t\t\tif (!(\"discriminator\" in value) || typeof value.discriminator !== \"string\" || value.discriminator.length === 0) return false;\n\t\t\tif (!(\"name\" in value)) return false;\n\t\t\tconst name = value.name;\n\t\t\tif (typeof name !== \"object\" || name === null) return false;\n\t\t\tif (!(\"required\" in name) || typeof name.required !== \"boolean\") return false;\n\t\t\tif (!(\"spec\" in value) || typeof value.spec !== \"function\") return false;\n\t\t\tif (!(\"attributes\" in value) || value.attributes === void 0) return true;\n\t\t\tconst attributes = value.attributes;\n\t\t\tif (typeof attributes !== \"object\" || attributes === null || Array.isArray(attributes)) return false;\n\t\t\treturn Object.values(attributes).every((factory) => typeof factory === \"function\");\n\t\t}\n\t\tcase \"modelAttribute\":\n\t\t\tif (!(\"attribute\" in value) || typeof value.attribute !== \"string\" || value.attribute.length === 0) return false;\n\t\t\tif (!(\"spec\" in value)) return false;\n\t\t\treturn \"lower\" in value && typeof value.lower === \"function\";\n\t\tdefault: return false;\n\t}\n}\nfunction deepCopyNamespace(source, descriptorKind) {\n\tconst copy = {};\n\tfor (const [key, value] of Object.entries(source)) copy[key] = isCopyableNamespaceObject(value) && !isWellFormedDescriptor(value, descriptorKind) ? deepCopyNamespace(value, descriptorKind) : value;\n\treturn copy;\n}\n/**\n* Merges `source` into `target` recursively at the descriptor-namespace\n* level. `descriptorKind` is the `kind` value ('typeConstructor',\n* 'fieldPreset', 'entity', or 'pslBlock') that identifies a descriptor\n* (terminal merge point; same-path registrations across components are\n* reported as duplicates) as opposed to a sub-namespace (recursion target).\n*\n* Path segments are validated against prototype-pollution names\n* (`__proto__`, `constructor`, `prototype`). A value that is neither a\n* recognized leaf nor a plain object — e.g. a malformed descriptor\n* where the canonical leaf guard rejected it for missing `output` —\n* is reported as an invalid contribution rather than recursed into,\n* which would either silently mangle state or infinite-loop on\n* primitive properties.\n*\n* Within-registry duplicate detection is this walker's job;\n* cross-registry detection runs separately via\n* `assertNoCrossRegistryCollisions` after merging completes.\n*/\nfunction mergeAuthoringNamespaces(target, source, path, descriptorKind, label) {\n\tconst assertSafePath = (currentPath) => {\n\t\tconst blockedSegment = currentPath.find((segment) => segment === \"__proto__\" || segment === \"constructor\" || segment === \"prototype\");\n\t\tif (blockedSegment) throw runtimeError(\"CONTRACT.PACK_CONTRIBUTION_INVALID\", `Invalid authoring ${label} helper \"${currentPath.join(\".\")}\". Helper path segments must not use \"${blockedSegment}\".`);\n\t};\n\tfor (const [key, sourceValue] of Object.entries(source)) {\n\t\tconst currentPath = [...path, key];\n\t\tassertSafePath(currentPath);\n\t\tconst hasExistingValue = Object.hasOwn(target, key);\n\t\tconst existingValue = hasExistingValue ? target[key] : void 0;\n\t\tif (!hasExistingValue) {\n\t\t\ttarget[key] = isCopyableNamespaceObject(sourceValue) && !isWellFormedDescriptor(sourceValue, descriptorKind) ? deepCopyNamespace(sourceValue, descriptorKind) : sourceValue;\n\t\t\tcontinue;\n\t\t}\n\t\tconst existingIsLeaf = isWellFormedDescriptor(existingValue, descriptorKind);\n\t\tconst sourceIsLeaf = isWellFormedDescriptor(sourceValue, descriptorKind);\n\t\tif (existingIsLeaf || sourceIsLeaf) throw runtimeError(\"CONTRACT.PACK_CONTRIBUTION_INVALID\", `Duplicate authoring ${label} helper \"${currentPath.join(\".\")}\". Helper names must be unique across composed packs.`);\n\t\tif (!isCopyableNamespaceObject(existingValue) || !isCopyableNamespaceObject(sourceValue)) throw runtimeError(\"CONTRACT.PACK_CONTRIBUTION_INVALID\", `Invalid authoring ${label} helper \"${currentPath.join(\".\")}\". Expected a sub-namespace object or a recognized descriptor; received a malformed value.`);\n\t\tmergeAuthoringNamespaces(existingValue, sourceValue, currentPath, descriptorKind, label);\n\t}\n}\nconst ATTRIBUTE_SPEC_LEVELS = [\"model\", \"field\"];\nfunction mergeAuthoringAttributeSpecs(target, source, contributedBy, owners) {\n\tconst invalidContribution = (detail) => runtimeError(\"CONTRACT.PACK_CONTRIBUTION_INVALID\", `Invalid authoring attributeSpecs contribution from descriptor \"${contributedBy}\". ${detail}`);\n\tif (!isCopyableNamespaceObject(source)) throw invalidContribution(\"Expected a record carrying a \\\"model\\\" and a \\\"field\\\" level.\");\n\tfor (const level of ATTRIBUTE_SPEC_LEVELS) {\n\t\tconst contributed = source[level];\n\t\tif (!isCopyableNamespaceObject(contributed)) throw invalidContribution(`The \"${level}\" level must be a record of spec factories keyed by attribute name.`);\n\t\tfor (const [attribute, factory] of Object.entries(contributed)) {\n\t\t\tconst entryPath = `${level}.${attribute}`;\n\t\t\tconst invalidEntry = (detail) => runtimeError(\"CONTRACT.PACK_CONTRIBUTION_INVALID\", `Invalid authoring attributeSpecs entry \"${entryPath}\" contributed by descriptor \"${contributedBy}\". ${detail}`);\n\t\t\tif (attribute === \"__proto__\" || attribute === \"constructor\" || attribute === \"prototype\") throw invalidEntry(`Attribute names must not use \"${attribute}\".`);\n\t\t\tif (typeof factory !== \"function\") throw invalidEntry(\"Each entry must be a spec factory function.\");\n\t\t\tconst existingOwner = owners.get(entryPath);\n\t\t\tif (existingOwner !== void 0) throw runtimeError(\"CONTRACT.PACK_CONTRIBUTION_INVALID\", `Duplicate authoring attributeSpecs entry \"${entryPath}\". Descriptor \"${contributedBy}\" conflicts with \"${existingOwner}\". Each attribute name may be claimed once per level.`);\n\t\t\towners.set(entryPath, contributedBy);\n\t\t\ttarget[level][attribute] = factory;\n\t\t}\n\t}\n}\n/**\n* Collects the full dotted paths of every well-formed descriptor of\n* `descriptorKind` in a raw contribution tree, using the same boundary\n* classification as {@link mergeAuthoringNamespaces}. Lets assembly-level\n* callers attribute each contributed path to its contributing component\n* before merging, so a same-path collision can be reported naming both\n* contributors.\n*/\nfunction collectContributedDescriptorPaths(namespace, descriptorKind, path = []) {\n\tconst paths = [];\n\tfor (const [key, value] of Object.entries(namespace)) {\n\t\tconst currentPath = [...path, key];\n\t\tif (isWellFormedDescriptor(value, descriptorKind)) {\n\t\t\tpaths.push(currentPath.join(\".\"));\n\t\t\tcontinue;\n\t\t}\n\t\tif (isCopyableNamespaceObject(value)) paths.push(...collectContributedDescriptorPaths(value, descriptorKind, currentPath));\n\t}\n\treturn paths;\n}\n/**\n* Derives the scalar view of an assembled authoring type namespace: every\n* **top-level** type constructor that is instantiable with an empty argument\n* list — all declared args optional and no entity-ref argument. A bare type\n* name `T` in a schema is semantically the zero-arg instantiation `T()`, so\n* each entry is exactly what that call produces (defaulted template values\n* applied, absent optional-arg typeParams keys omitted). Constructors\n* registered under a namespace segment, constructors with required args, and\n* entity-ref constructors are not scalars and are excluded.\n*\n* Eligibility needs no template inspection: templates that cannot resolve\n* for their legal call shapes are rejected at the composition boundary by\n* {@link assertResolvableTypeConstructorTemplates}, so the zero-arg\n* instantiation below cannot fail for an eligible constructor.\n*/\nfunction collectScalarTypeConstructors(namespace) {\n\tconst result = /* @__PURE__ */ new Map();\n\tfor (const [name, value] of Object.entries(namespace)) {\n\t\tif (!isAuthoringTypeConstructorDescriptor(value)) continue;\n\t\tif (value.entityRefArg !== void 0) continue;\n\t\tif (value.args?.some((arg) => arg.optional !== true)) continue;\n\t\tresult.set(name, instantiateAuthoringTypeConstructor(value, []));\n\t}\n\treturn result;\n}\nfunction visitTemplateArgRefs(template, visit) {\n\tif (template === void 0) return;\n\tif (isAuthoringArgRef(template)) {\n\t\tvisit(template);\n\t\tvisitTemplateArgRefs(template.default, visit);\n\t\treturn;\n\t}\n\tif (Array.isArray(template)) {\n\t\tfor (const value of template) visitTemplateArgRefs(value, visit);\n\t\treturn;\n\t}\n\tif (typeof template === \"object\" && template !== null) for (const value of Object.values(template)) visitTemplateArgRefs(value, visit);\n}\n/**\n* Boundary validation for a contributed authoring type namespace, called\n* per contributing component at assembly (which supplies `contributedBy`\n* for attribution). Rejects what the types cannot express — entity-ref\n* constructors are skipped (their output derives from the referenced\n* entity): every `typeParams` arg-ref (including refs inside arg-ref\n* defaults) must point at a declared argument index.\n*/\nfunction assertResolvableTypeConstructorTemplates(namespace, contributedBy, path = []) {\n\tfor (const [name, value] of Object.entries(namespace)) {\n\t\tconst currentPath = [...path, name];\n\t\tif (!isAuthoringTypeConstructorDescriptor(value)) {\n\t\t\tassertResolvableTypeConstructorTemplates(value, contributedBy, currentPath);\n\t\t\tcontinue;\n\t\t}\n\t\tif (value.entityRefArg !== void 0) continue;\n\t\tconst args = value.args ?? [];\n\t\tconst invalid = (detail) => /* @__PURE__ */ new Error(`Invalid authoring type constructor \"${currentPath.join(\".\")}\" contributed by descriptor \"${contributedBy}\". ${detail}`);\n\t\tfor (const [key, template] of Object.entries(value.output.typeParams ?? {})) visitTemplateArgRefs(template, (ref) => {\n\t\t\tif (args[ref.index] === void 0) throw invalid(`output.typeParams.${key} references argument ${ref.index}, but the constructor declares ${args.length} argument(s). Declare the argument or correct the reference index.`);\n\t\t});\n\t}\n}\nfunction collectDescriptorPaths(namespace, isLeaf, path = []) {\n\tconst paths = [];\n\tfor (const [key, value] of Object.entries(namespace)) {\n\t\tconst currentPath = [...path, key];\n\t\tif (isLeaf(value)) {\n\t\t\tpaths.push(currentPath.join(\".\"));\n\t\t\tcontinue;\n\t\t}\n\t\tif (typeof value === \"object\" && value !== null && !Array.isArray(value)) paths.push(...collectDescriptorPaths(value, isLeaf, currentPath));\n\t}\n\treturn paths;\n}\nfunction collectDescriptorEntries(namespace, isLeaf, descriptorKind, label, path = []) {\n\tconst entries = [];\n\tfor (const [key, value] of Object.entries(namespace)) {\n\t\tconst currentPath = [...path, key];\n\t\tif (isLeaf(value)) {\n\t\t\tif (!isWellFormedDescriptor(value, descriptorKind)) throw runtimeError(\"CONTRACT.PACK_CONTRIBUTION_INVALID\", `Malformed authoring ${label} contribution at \"${currentPath.join(\".\")}\". The value carries descriptor keys (kind/keyword/discriminator) but does not satisfy the ${label} descriptor shape. Fix the contribution so it is a complete descriptor, or remove the stray keys if it was meant to be a sub-namespace.`);\n\t\t\tif (value.discriminator.length > 0) entries.push({\n\t\t\t\tpath: currentPath.join(\".\"),\n\t\t\t\tdiscriminator: value.discriminator\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tif (typeof value === \"object\" && value !== null && !Array.isArray(value)) {\n\t\t\tconst record = blindCast(value);\n\t\t\tif ((record[\"kind\"] !== void 0 || record[\"keyword\"] !== void 0 || record[\"discriminator\"] !== void 0) && !isLeaf(value)) {\n\t\t\t\tconst hasKind = record[\"kind\"] === \"pslBlock\";\n\t\t\t\tconst hasKeyword = typeof record[\"keyword\"] === \"string\";\n\t\t\t\tconst hasDiscriminator = typeof record[\"discriminator\"] === \"string\";\n\t\t\t\tif (hasKind || hasKeyword && hasDiscriminator) throw runtimeError(\"CONTRACT.PACK_CONTRIBUTION_INVALID\", `Malformed authoring ${label} contribution at \"${currentPath.join(\".\")}\". The value carries descriptor keys (kind/keyword/discriminator) but does not satisfy the ${label} descriptor shape. Fix the contribution so it is a complete descriptor, or remove the stray keys if it was meant to be a sub-namespace.`);\n\t\t\t}\n\t\t\tentries.push(...collectDescriptorEntries(value, isLeaf, descriptorKind, label, currentPath));\n\t\t}\n\t}\n\treturn entries;\n}\n/**\n* Throws when two or more entries in the same namespace share a key. A\n* duplicate key makes dispatch ambiguous — the caller's lookup dispatches by\n* this key, so one entry would silently shadow the other. Catch duplicates\n* before building any dispatch map.\n*\n* `label` (e.g. `'pslBlock'`, `'entityType'`) names which namespace the\n* duplicate was found in and is carried in the structured error metadata;\n* the key itself is always called `key` in both the message and the\n* metadata, since what it semantically represents (a discriminator for\n* `entityType`, the parser's dispatch keyword for `pslBlock`) is the\n* caller's concern, not this function's.\n*/\nfunction assertUniqueDiscriminators(entries, label) {\n\tconst seen = /* @__PURE__ */ new Map();\n\tfor (const { path, discriminator: key } of entries) {\n\t\tconst existing = seen.get(key);\n\t\tif (existing !== void 0) throw runtimeError(\"RUNTIME.DUPLICATE_AUTHORING_DISCRIMINATOR\", `Duplicate ${label} key \"${key}\" registered at both \"${existing}\" and \"${path}\". Each ${label} contribution must use a unique key.`, {\n\t\t\tlabel,\n\t\t\tkey,\n\t\t\texistingPath: existing,\n\t\t\tpath\n\t\t});\n\t\tseen.set(key, path);\n\t}\n}\nfunction collectPslBlockDescriptorEntries(namespace, path = []) {\n\tconst entries = [];\n\tfor (const [key, value] of Object.entries(namespace)) {\n\t\tconst currentPath = [...path, key];\n\t\tif (isAuthoringPslBlockDescriptor(value)) {\n\t\t\tif (!isWellFormedDescriptor(value, \"pslBlock\")) throw runtimeError(\"CONTRACT.PACK_CONTRIBUTION_INVALID\", `Malformed authoring pslBlock contribution at \"${currentPath.join(\".\")}\". The value carries descriptor keys (kind/keyword/discriminator) but does not satisfy the pslBlock descriptor shape. Fix the contribution so it is a complete descriptor, or remove the stray keys if it was meant to be a sub-namespace.`);\n\t\t\tentries.push({\n\t\t\t\tpath: currentPath.join(\".\"),\n\t\t\t\tdiscriminator: value.discriminator,\n\t\t\t\tkeyword: value.keyword\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tif (typeof value === \"object\" && value !== null && !Array.isArray(value)) {\n\t\t\tconst record = blindCast(value);\n\t\t\tconst hasKind = record[\"kind\"] === \"pslBlock\";\n\t\t\tconst hasKeyword = typeof record[\"keyword\"] === \"string\";\n\t\t\tconst hasDiscriminator = typeof record[\"discriminator\"] === \"string\";\n\t\t\tif (hasKind || hasKeyword && hasDiscriminator) throw runtimeError(\"CONTRACT.PACK_CONTRIBUTION_INVALID\", `Malformed authoring pslBlock contribution at \"${currentPath.join(\".\")}\". The value carries descriptor keys (kind/keyword/discriminator) but does not satisfy the pslBlock descriptor shape. Fix the contribution so it is a complete descriptor, or remove the stray keys if it was meant to be a sub-namespace.`);\n\t\t\tentries.push(...collectPslBlockDescriptorEntries(value, currentPath));\n\t\t}\n\t}\n\treturn entries;\n}\n/**\n* Every `pslBlockDescriptors` entry requires a matching `entityTypes` factory\n* with the same discriminator. An `entityTypes` factory may stand alone (e.g.\n* `enum`, reachable from the TypeScript builder without any PSL block).\n*\n* Uniqueness for pslBlock entries is keyed on **keyword**, not discriminator:\n* several keywords (e.g. `policy_select`/`policy_insert`) may legitimately\n* share one discriminator, routing to the same `entityTypes` factory and the\n* same `entries[discriminator]` slot — that N:1 shape is exactly what lets\n* one entity kind be authored through several PSL keywords. What must stay\n* unique is the keyword itself, since that's what the parser dispatches on.\n*/\nfunction assertPslBlocksHaveFactories(entityTypeNamespace, pslBlockNamespace) {\n\tconst blockEntries = collectPslBlockDescriptorEntries(pslBlockNamespace);\n\tconst entityEntries = collectDescriptorEntries(entityTypeNamespace, isAuthoringEntityTypeDescriptor, \"entity\", \"entityType\");\n\tassertUniqueDiscriminators(blockEntries.map((entry) => ({\n\t\tpath: entry.path,\n\t\tdiscriminator: entry.keyword\n\t})), \"pslBlock\");\n\tassertUniqueDiscriminators(entityEntries, \"entityType\");\n\tconst entityDiscriminators = new Set(entityEntries.map((entry) => entry.discriminator));\n\tfor (const block of blockEntries) if (!entityDiscriminators.has(block.discriminator)) throw runtimeError(\"CONTRACT.PACK_CONTRIBUTION_INVALID\", `Incomplete extension contribution: pslBlock helper \"${block.path}\" registers discriminator \"${block.discriminator}\" but no entityType contribution shares that discriminator. An extension-contributed PSL block requires a matching entityType factory so the parsed AST node can lower to an IR class instance; add an entityType helper with discriminator \"${block.discriminator}\".`);\n}\nfunction collectModelAttributeEntries(namespace, path = []) {\n\tconst entries = [];\n\tfor (const [key, value] of Object.entries(namespace)) {\n\t\tconst currentPath = [...path, key];\n\t\tif (isAuthoringModelAttributeDescriptor(value)) {\n\t\t\tif (!isWellFormedDescriptor(value, \"modelAttribute\")) throw runtimeError(\"CONTRACT.PACK_CONTRIBUTION_INVALID\", `Malformed authoring modelAttribute contribution at \"${currentPath.join(\".\")}\". The value carries descriptor keys (kind/attribute) but does not satisfy the modelAttribute descriptor shape. Fix the contribution so it is a complete descriptor, or remove the stray keys if it was meant to be a sub-namespace.`);\n\t\t\tentries.push({\n\t\t\t\tpath: currentPath.join(\".\"),\n\t\t\t\tdiscriminator: value.attribute\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tif (typeof value === \"object\" && value !== null && !Array.isArray(value)) {\n\t\t\tconst record = blindCast(value);\n\t\t\tif (typeof record[\"attribute\"] === \"string\" && \"spec\" in record) throw runtimeError(\"CONTRACT.PACK_CONTRIBUTION_INVALID\", `Malformed authoring modelAttribute contribution at \"${currentPath.join(\".\")}\". The value carries descriptor keys (kind/attribute) but does not satisfy the modelAttribute descriptor shape. Fix the contribution so it is a complete descriptor, or remove the stray keys if it was meant to be a sub-namespace.`);\n\t\t\tentries.push(...collectModelAttributeEntries(value, currentPath));\n\t\t}\n\t}\n\treturn entries;\n}\n/**\n* Throws when two modelAttribute contributions — at any paths, even\n* different ones — claim the same bare `@@` attribute name. The family\n* interpreter dispatches by attribute name, not by registration path, so\n* two descriptors claiming the same name would have one silently shadow\n* the other.\n*/\nfunction assertUniqueModelAttributeNames(entries) {\n\tconst seen = /* @__PURE__ */ new Map();\n\tfor (const { path, discriminator: attribute } of entries) {\n\t\tconst existing = seen.get(attribute);\n\t\tif (existing !== void 0) throw runtimeError(\"CONTRACT.PACK_CONTRIBUTION_INVALID\", `Duplicate modelAttribute \"${attribute}\" registered at both \"${existing}\" and \"${path}\". Each modelAttribute contribution must claim a unique attribute name.`);\n\t\tseen.set(attribute, path);\n\t}\n}\nfunction assertNoCrossRegistryCollisions(typeNamespace, fieldNamespace, entityTypeNamespace = {}, pslBlockNamespace = {}, modelAttributeNamespace = {}) {\n\tconst typePaths = new Set(collectDescriptorPaths(typeNamespace, isAuthoringTypeConstructorDescriptor));\n\tconst fieldPaths = new Set(collectDescriptorPaths(fieldNamespace, isAuthoringFieldPresetDescriptor));\n\tconst entityPaths = new Set(collectDescriptorPaths(entityTypeNamespace, isAuthoringEntityTypeDescriptor));\n\tconst ambiguityHint = \"Register each path in only one of authoringContributions.field / authoringContributions.type / authoringContributions.entityTypes.\";\n\tfor (const fieldPath of fieldPaths) if (typePaths.has(fieldPath)) throw runtimeError(\"CONTRACT.PACK_CONTRIBUTION_INVALID\", `Ambiguous authoring registry path \"${fieldPath}\". The same path is registered as both a type constructor and a field preset; PSL resolution would be ambiguous. ${ambiguityHint}`);\n\tfor (const entityPath of entityPaths) if (typePaths.has(entityPath) || fieldPaths.has(entityPath)) throw runtimeError(\"CONTRACT.PACK_CONTRIBUTION_INVALID\", `Ambiguous authoring registry path \"${entityPath}\". The same path is registered as an entity contribution AND as a type constructor or field preset; PSL resolution would be ambiguous. ${ambiguityHint}`);\n\tassertPslBlocksHaveFactories(entityTypeNamespace, pslBlockNamespace);\n\tassertUniqueModelAttributeNames(collectModelAttributeEntries(modelAttributeNamespace));\n\tassertSelectTemplatesMatchOptionArgs(typeNamespace, fieldNamespace, entityTypeNamespace);\n}\nfunction collectDescriptorNodes(namespace, isLeaf, path = []) {\n\tconst nodes = [];\n\tfor (const [key, value] of Object.entries(namespace)) {\n\t\tconst currentPath = [...path, key];\n\t\tif (isLeaf(value)) {\n\t\t\tnodes.push([currentPath.join(\".\"), value]);\n\t\t\tcontinue;\n\t\t}\n\t\tif (typeof value === \"object\" && value !== null && !Array.isArray(value)) nodes.push(...collectDescriptorNodes(value, isLeaf, currentPath));\n\t}\n\treturn nodes;\n}\nfunction collectSelectRefs(value, found) {\n\tif (typeof value !== \"object\" || value === null) return;\n\tif (isAuthoringSelectRef(value)) {\n\t\tfound.push(value);\n\t\tfor (const caseTemplate of Object.values(value.cases)) collectSelectRefs(caseTemplate, found);\n\t\treturn;\n\t}\n\tif (isAuthoringArgRef(value)) {\n\t\tcollectSelectRefs(value.default, found);\n\t\treturn;\n\t}\n\tif (Array.isArray(value)) {\n\t\tfor (const entry of value) collectSelectRefs(entry, found);\n\t\treturn;\n\t}\n\tfor (const entry of Object.values(value)) collectSelectRefs(entry, found);\n}\nfunction validateSelectRefsAgainstArgs(label, helperPath, args, templateRoot) {\n\tconst selects = [];\n\tcollectSelectRefs(templateRoot, selects);\n\tfor (const select of selects) {\n\t\tconst position = `#${select.index + 1}`;\n\t\tlet descriptor = args?.[select.index];\n\t\tif (descriptor === void 0) throw runtimeError(\"CONTRACT.PACK_CONTRIBUTION_INVALID\", `Authoring ${label} helper \"${helperPath}\" select template references argument ${position}, but the helper declares no argument at that position.`);\n\t\tfor (const segment of select.path ?? []) {\n\t\t\tdescriptor = descriptor.kind === \"object\" ? descriptor.properties[segment] : void 0;\n\t\t\tif (descriptor === void 0) throw runtimeError(\"CONTRACT.PACK_CONTRIBUTION_INVALID\", `Authoring ${label} helper \"${helperPath}\" select template references argument ${position} at path \"${(select.path ?? []).join(\".\")}\", which does not resolve to a declared argument property.`);\n\t\t}\n\t\tif (descriptor.kind !== \"option\") throw runtimeError(\"CONTRACT.PACK_CONTRIBUTION_INVALID\", `Authoring ${label} helper \"${helperPath}\" select template references argument ${position}, which is kind \"${descriptor.kind}\"; select requires an option argument.`);\n\t\tconst argumentLabel = descriptor.name !== void 0 ? `\"${descriptor.name}\"` : position;\n\t\tconst missing = descriptor.values.filter((value) => !Object.hasOwn(select.cases, value));\n\t\tif (missing.length > 0) throw runtimeError(\"CONTRACT.PACK_CONTRIBUTION_INVALID\", `Authoring ${label} helper \"${helperPath}\" option argument ${argumentLabel} allows [${descriptor.values.join(\", \")}] but the select template has no case for: ${missing.join(\", \")}.`);\n\t\tconst values = descriptor.values;\n\t\tconst unreachable = Object.keys(select.cases).filter((key) => !values.includes(key));\n\t\tif (unreachable.length > 0) throw runtimeError(\"CONTRACT.PACK_CONTRIBUTION_INVALID\", `Authoring ${label} helper \"${helperPath}\" select template has case(s) not allowed by option argument ${argumentLabel}: ${unreachable.join(\", \")}. Allowed values: [${values.join(\", \")}].`);\n\t}\n}\n/**\n* Every `select` template node must target an option argument whose `values`\n* exactly cover the node's `cases` — a legal token with no case and a case no\n* token can reach are both declaration bugs, caught here at pack-registration\n* time rather than at first resolution.\n*/\nfunction assertSelectTemplatesMatchOptionArgs(typeNamespace, fieldNamespace, entityTypeNamespace) {\n\tfor (const [helperPath, descriptor] of collectDescriptorNodes(fieldNamespace, isAuthoringFieldPresetDescriptor)) validateSelectRefsAgainstArgs(\"field\", helperPath, descriptor.args, descriptor.output);\n\tfor (const [helperPath, descriptor] of collectDescriptorNodes(typeNamespace, isAuthoringTypeConstructorDescriptor)) validateSelectRefsAgainstArgs(\"type\", helperPath, descriptor.args, descriptor.output);\n\tfor (const [helperPath, descriptor] of collectDescriptorNodes(entityTypeNamespace, isAuthoringEntityTypeDescriptor)) if (\"template\" in descriptor.output) validateSelectRefsAgainstArgs(\"entityType\", helperPath, descriptor.args, descriptor.output.template);\n}\nfunction resolveAuthoringTemplateValue(template, args) {\n\tif (template === void 0) return;\n\tif (isAuthoringArgRef(template)) {\n\t\tconst value = readTemplateArgumentValue(args, template.index, template.path);\n\t\tif (value === void 0 && template.default !== void 0) return resolveAuthoringTemplateValue(template.default, args);\n\t\treturn value;\n\t}\n\tif (isAuthoringSelectRef(template)) {\n\t\tconst value = readTemplateArgumentValue(args, template.index, template.path);\n\t\tif (value === void 0) return;\n\t\tif (typeof value !== \"string\" || !Object.hasOwn(template.cases, value)) throw new InternalError(`Authoring template select has no case for value \"${String(value)}\"`);\n\t\treturn resolveAuthoringTemplateValue(template.cases[value], args);\n\t}\n\tif (Array.isArray(template)) return template.map((value) => resolveAuthoringTemplateValue(value, args));\n\tif (typeof template === \"object\" && template !== null) {\n\t\tconst resolved = {};\n\t\tfor (const [key, value] of Object.entries(template)) {\n\t\t\tconst resolvedValue = resolveAuthoringTemplateValue(value, args);\n\t\t\tif (resolvedValue !== void 0) resolved[key] = resolvedValue;\n\t\t}\n\t\treturn resolved;\n\t}\n\treturn template;\n}\nfunction validateAuthoringArgument(descriptor, value, path) {\n\tif (value === void 0) {\n\t\tif (descriptor.optional) return;\n\t\tthrow runtimeError(\"CONTRACT.ARGUMENT_INVALID\", `${path} is missing`);\n\t}\n\tif (descriptor.kind === \"string\") {\n\t\tif (typeof value !== \"string\") throw runtimeError(\"CONTRACT.ARGUMENT_INVALID\", `${path} must be a string`);\n\t\treturn;\n\t}\n\tif (descriptor.kind === \"boolean\") {\n\t\tif (typeof value !== \"boolean\") throw runtimeError(\"CONTRACT.ARGUMENT_INVALID\", `${path} must be a boolean`);\n\t\treturn;\n\t}\n\tif (descriptor.kind === \"stringArray\") {\n\t\tif (!Array.isArray(value)) throw runtimeError(\"CONTRACT.ARGUMENT_INVALID\", `${path} must be an array of strings`);\n\t\tfor (const entry of value) if (typeof entry !== \"string\") throw runtimeError(\"CONTRACT.ARGUMENT_INVALID\", `${path} must be an array of strings`);\n\t\treturn;\n\t}\n\tif (descriptor.kind === \"object\") {\n\t\tif (typeof value !== \"object\" || value === null || Array.isArray(value)) throw runtimeError(\"CONTRACT.ARGUMENT_INVALID\", `${path} must be an object`);\n\t\tconst input = value;\n\t\tconst expectedKeys = new Set(Object.keys(descriptor.properties));\n\t\tfor (const key of Object.keys(input)) if (!expectedKeys.has(key)) throw runtimeError(\"CONTRACT.ARGUMENT_INVALID\", `${path} contains unknown property \"${key}\"`);\n\t\tfor (const [key, propertyDescriptor] of Object.entries(descriptor.properties)) validateAuthoringArgument(propertyDescriptor, input[key], `${path}.${key}`);\n\t\treturn;\n\t}\n\tif (descriptor.kind === \"option\") {\n\t\tif (typeof value !== \"string\" || !descriptor.values.includes(value)) {\n\t\t\tconst quoted = descriptor.values.map((option) => JSON.stringify(option));\n\t\t\tthrow runtimeError(\"CONTRACT.ARGUMENT_INVALID\", `${path} ${quoted.length === 0 ? \"takes no value\" : `must be ${quoted.length === 1 ? quoted.join(\"\") : `one of ${quoted.join(\", \")}`}`}; received ${describeReceivedArgument(value)}`);\n\t\t}\n\t\treturn;\n\t}\n\tif (typeof value !== \"number\" || Number.isNaN(value)) throw runtimeError(\"CONTRACT.ARGUMENT_INVALID\", `${path} must be a number`);\n\tif (descriptor.integer && !Number.isInteger(value)) throw runtimeError(\"CONTRACT.ARGUMENT_INVALID\", `${path} must be an integer`);\n\tif (descriptor.minimum !== void 0 && value < descriptor.minimum) throw runtimeError(\"CONTRACT.ARGUMENT_INVALID\", `${path} must be >= ${descriptor.minimum}, received ${value}`);\n\tif (descriptor.maximum !== void 0 && value > descriptor.maximum) throw runtimeError(\"CONTRACT.ARGUMENT_INVALID\", `${path} must be <= ${descriptor.maximum}, received ${value}`);\n}\nfunction validateAuthoringHelperArguments(helperPath, descriptors, args) {\n\tconst expected = descriptors ?? [];\n\tconst minimumArgs = expected.reduce((count, descriptor, index) => descriptor.optional ? count : index + 1, 0);\n\tif (args.length < minimumArgs || args.length > expected.length) throw runtimeError(\"CONTRACT.ARGUMENT_INVALID\", `${helperPath} expects ${minimumArgs === expected.length ? expected.length : `${minimumArgs}-${expected.length}`} argument(s), received ${args.length}`);\n\texpected.forEach((descriptor, index) => {\n\t\tvalidateAuthoringArgument(descriptor, args[index], argumentLabel(helperPath, descriptor, index));\n\t});\n}\nfunction argumentLabel(helperPath, descriptor, index) {\n\treturn descriptor.name === void 0 ? `Authoring helper argument at ${helperPath}[${index}]` : `Argument \"${descriptor.name}\" of ${helperPath}`;\n}\nfunction describeReceivedArgument(value) {\n\treturn typeof value === \"string\" ? JSON.stringify(value) : String(value);\n}\nfunction argumentIndexOf(template) {\n\tlet index;\n\tvisitTemplateArgRefs(template, (ref) => {\n\t\tindex ??= ref.index;\n\t});\n\treturn index;\n}\nfunction issueKey(issue) {\n\tconst [first] = issue.path ?? [];\n\tconst key = typeof first === \"object\" && first !== null ? first.key : first;\n\treturn typeof key === \"string\" ? key : void 0;\n}\n/**\n* Checks the type parameters a constructor or preset produced against its codec's parameter schema, which is where the bounds of a data type's parameters are written. A failure names the argument the failing parameter came from.\n*/\nfunction validateAuthoringTypeParams(helperPath, template, typeParams, paramsSchema) {\n\tif (template.typeParams === void 0 || paramsSchema === void 0) return;\n\tconst result = paramsSchema[\"~standard\"].validate(typeParams ?? {});\n\tif (result instanceof Promise) throw new InternalError(`The parameter schema of codec \"${template.codecId}\" is asynchronous; authoring requires a synchronous schema.`);\n\tconst [issue] = result.issues ?? [];\n\tif (issue === void 0) return;\n\tconst key = issueKey(issue);\n\tconst argumentIndex = key === void 0 ? void 0 : argumentIndexOf(template.typeParams[key]);\n\tthrow runtimeError(\"CONTRACT.ARGUMENT_INVALID\", argumentIndex === void 0 ? `The type parameters of ${helperPath} are invalid: ${issue.message}` : `Authoring helper argument at ${helperPath}[${argumentIndex}] is invalid: ${issue.message}`, {\n\t\thelperPath,\n\t\t...ifDefined(\"argumentIndex\", argumentIndex)\n\t});\n}\nfunction resolveAuthoringStorageTypeTemplate(template, args) {\n\tconst typeParams = template.typeParams === void 0 ? void 0 : resolveAuthoringTemplateValue(template.typeParams, args);\n\tif (typeParams !== void 0 && !isAuthoringTemplateRecord(typeParams)) throw runtimeError(\"CONTRACT.PACK_CONTRIBUTION_INVALID\", `Resolved authoring typeParams must be an object for codec \"${template.codecId}\", received ${String(typeParams)}`);\n\tconst normalizedTypeParams = typeParams !== void 0 && Object.keys(typeParams).length === 0 ? void 0 : typeParams;\n\treturn {\n\t\tcodecId: template.codecId,\n\t\t...ifDefined(\"typeParams\", normalizedTypeParams)\n\t};\n}\nfunction resolveAuthoringColumnDefaultTemplate(template, args) {\n\tif (template.kind === \"literal\") {\n\t\tconst value = resolveAuthoringTemplateValue(template.value, args);\n\t\tif (value === void 0) throw runtimeError(\"CONTRACT.PACK_CONTRIBUTION_INVALID\", \"Resolved authoring literal default must not be undefined\");\n\t\tif (!isColumnDefaultLiteralInputValue(value)) throw runtimeError(\"CONTRACT.PACK_CONTRIBUTION_INVALID\", `Resolved authoring literal default must be a JSON-serializable value or Date, received ${String(value)}`);\n\t\treturn {\n\t\t\tkind: \"literal\",\n\t\t\tvalue\n\t\t};\n\t}\n\tconst expression = resolveAuthoringTemplateValue(template.expression, args);\n\tif (expression === void 0 || typeof expression === \"object\" && expression !== null) throw runtimeError(\"CONTRACT.PACK_CONTRIBUTION_INVALID\", `Resolved authoring function default expression must resolve to a primitive, received ${String(expression)}`);\n\treturn {\n\t\tkind: \"function\",\n\t\texpression: String(expression)\n\t};\n}\nfunction resolveExecutionMutationDefaultPhase(phase, template, args) {\n\tconst value = resolveAuthoringTemplateValue(template, args);\n\tif (value === void 0) return;\n\tif (!isExecutionMutationDefaultValue(value)) throw runtimeError(\"CONTRACT.PACK_CONTRIBUTION_INVALID\", `Authoring preset executionDefaults.${phase} did not resolve to a valid generator descriptor (kind: 'generator', id: string).`);\n\treturn value;\n}\nfunction resolveAuthoringExecutionDefaultsTemplate(template, args) {\n\tconst phases = {\n\t\t...ifDefined(\"onCreate\", template.onCreate !== void 0 ? resolveExecutionMutationDefaultPhase(\"onCreate\", template.onCreate, args) : void 0),\n\t\t...ifDefined(\"onUpdate\", template.onUpdate !== void 0 ? resolveExecutionMutationDefaultPhase(\"onUpdate\", template.onUpdate, args) : void 0)\n\t};\n\treturn Object.keys(phases).length === 0 ? void 0 : phases;\n}\nfunction instantiateAuthoringTypeConstructor(descriptor, args) {\n\treturn resolveAuthoringStorageTypeTemplate(descriptor.output, args);\n}\nfunction instantiateAuthoringEntityType(helperPath, descriptor, args, ctx) {\n\tif (\"factory\" in descriptor.output) {\n\t\tconst input = args[0];\n\t\treturn blindCast(descriptor.output.factory)(input, ctx);\n\t}\n\tvalidateAuthoringHelperArguments(helperPath, descriptor.args, args);\n\treturn blindCast(resolveAuthoringTemplateValue(descriptor.output.template, args));\n}\nfunction instantiateAuthoringFieldPreset(descriptor, args) {\n\treturn {\n\t\tdescriptor: resolveAuthoringStorageTypeTemplate(descriptor.output, args),\n\t\tnullable: descriptor.output.nullable ?? false,\n\t\t...ifDefined(\"default\", descriptor.output.default !== void 0 ? resolveAuthoringColumnDefaultTemplate(descriptor.output.default, args) : void 0),\n\t\t...ifDefined(\"executionDefaults\", descriptor.output.executionDefaults !== void 0 ? resolveAuthoringExecutionDefaultsTemplate(descriptor.output.executionDefaults, args) : void 0),\n\t\tid: descriptor.output.id ?? false,\n\t\tunique: descriptor.output.unique ?? false\n\t};\n}\n//#endregion\n//#region src/shared/tagged-literal.ts\nconst TAGGED_LITERAL_MAX_BYTES = 65536;\n/** The message a tagged literal's canonicalization failure is reported with, in PSL and in TypeScript. */\nfunction describeTaggedLiteralFailure(reason) {\n\tswitch (reason) {\n\t\tcase \"nul\": return \"Tagged literals must not contain NUL characters.\";\n\t\tcase \"too-large\": return `Tagged literal exceeds ${TAGGED_LITERAL_MAX_BYTES} bytes.`;\n\t}\n}\nconst PSL_BACKTICK_ESCAPES = /* @__PURE__ */ new Set([\"`\", \"\\\\\"]);\nconst TEMPLATE_TAG_ESCAPES = /* @__PURE__ */ new Set([\n\t\"`\",\n\t\"\\\\\",\n\t\"$\"\n]);\n/** The escapes a PSL backtick string resolves: `` \\` `` and `\\\\`. PSL has no interpolation, so `${` is ordinary text. */\nfunction resolvePslBacktickEscapes(raw) {\n\treturn resolveEscapes(raw, PSL_BACKTICK_ESCAPES);\n}\n/** The escapes a TypeScript template tag resolves: the PSL two plus `\\$`, the only way to write `${` in a template literal. */\nfunction resolveTemplateTagEscapes(raw) {\n\treturn resolveEscapes(raw, TEMPLATE_TAG_ESCAPES);\n}\n/** Every other backslash sequence is kept as written, both characters, so a SQL body may contain `E'\\n'` unchanged. */\nfunction resolveEscapes(raw, escapes) {\n\tlet out = \"\";\n\tlet i = 0;\n\twhile (i < raw.length) {\n\t\tconst ch = raw.charAt(i);\n\t\tconst next = raw.charAt(i + 1);\n\t\tif (ch === \"\\\\\" && escapes.has(next)) {\n\t\t\tout += next;\n\t\t\ti += 2;\n\t\t\tcontinue;\n\t\t}\n\t\tout += ch;\n\t\ti++;\n\t}\n\treturn out;\n}\nconst BLANK_LINE = /^[ \\t]*$/;\nconst LEADING_INDENT = /^[ \\t]*/;\nconst LINE_BREAK = /\\r\\n|\\r|\\n/g;\n/**\n* Turns the escape-resolved body of a tagged literal into its canonical text:\n* newlines become `\\n`, every blank line before the first non-blank line and\n* after the last one is dropped, common leading whitespace is removed, internal\n* blank lines become empty, and no trailing newline is added. The result is its\n* own canonical text. Fails on a NUL character or when the result is larger\n* than 65536 UTF-8 bytes.\n*/\nfunction canonicalizeTaggedLiteralBody(resolved) {\n\tconst nul = resolved.indexOf(\"\\0\");\n\tif (nul !== -1) return {\n\t\tok: false,\n\t\treason: \"nul\",\n\t\toffset: nul\n\t};\n\tconst lines = splitLines(resolved);\n\twhile (lines.length > 0 && BLANK_LINE.test(lines[0]?.text ?? \"\")) lines.shift();\n\twhile (lines.length > 0 && BLANK_LINE.test(lines.at(-1)?.text ?? \"\")) lines.pop();\n\tconst indent = commonIndent(lines);\n\tconst bodyLines = lines.map((line) => BLANK_LINE.test(line.text) ? {\n\t\ttext: \"\",\n\t\tstart: line.start\n\t} : {\n\t\ttext: line.text.slice(indent),\n\t\tstart: line.start + indent\n\t});\n\tconst excess = offsetWhereBytesExceed(bodyLines, TAGGED_LITERAL_MAX_BYTES);\n\tif (excess !== void 0) return {\n\t\tok: false,\n\t\treason: \"too-large\",\n\t\toffset: excess\n\t};\n\treturn {\n\t\tok: true,\n\t\ttext: bodyLines.map((line) => line.text).join(\"\\n\")\n\t};\n}\nfunction splitLines(text) {\n\tconst lines = [];\n\tlet start = 0;\n\tfor (const match of text.matchAll(LINE_BREAK)) {\n\t\tlines.push({\n\t\t\ttext: text.slice(start, match.index),\n\t\t\tstart\n\t\t});\n\t\tstart = match.index + match[0].length;\n\t}\n\tlines.push({\n\t\ttext: text.slice(start),\n\t\tstart\n\t});\n\treturn lines;\n}\nfunction commonIndent(lines) {\n\tlet indent = Number.POSITIVE_INFINITY;\n\tfor (const line of lines) {\n\t\tif (BLANK_LINE.test(line.text)) continue;\n\t\tindent = Math.min(indent, LEADING_INDENT.exec(line.text)?.[0].length ?? 0);\n\t}\n\treturn Number.isFinite(indent) ? indent : 0;\n}\n/** The resolved-body offset of the first character that pushes the text past `limit` bytes. */\nfunction offsetWhereBytesExceed(lines, limit) {\n\tlet bytes = 0;\n\tfor (const [index, line] of lines.entries()) {\n\t\tif (index > 0) {\n\t\t\tbytes += 1;\n\t\t\tif (bytes > limit) return line.start;\n\t\t}\n\t\tlet offsetInLine = 0;\n\t\tfor (const char of line.text) {\n\t\t\tbytes += utf8Length(char.codePointAt(0) ?? 0);\n\t\t\tif (bytes > limit) return line.start + offsetInLine;\n\t\t\toffsetInLine += char.length;\n\t\t}\n\t}\n}\nfunction utf8Length(codePoint) {\n\tif (codePoint < 128) return 1;\n\tif (codePoint < 2048) return 2;\n\tif (codePoint < 65536) return 3;\n\treturn 4;\n}\nfunction escapeQuotedText(text) {\n\treturn text.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, \"\\\\\\\"\").replace(/\\n/g, \"\\\\n\").replace(/\\r/g, \"\\\\r\");\n}\n/**\n* The PSL text of a tagged literal holding `text`: the backtick form, or the double-quote form when the text holds a\n* backtick, which reads better than escaping each backtick. A multi-line text starts on the line after the opening\n* backtick, so indentation a printer adds to an enclosing block is common to every line and the canonicalization\n* removes it. The literal's canonical text is `text` again only when {@link printedTaggedLiteralReadsBack} holds; text\n* with leading indentation or a carriage return, for example, does not read back. ADR 129.\n*/\nfunction printTaggedLiteral(tag, text) {\n\tif (text.includes(\"`\")) return `${tag}\"${escapeQuotedText(text)}\"`;\n\tconst fenced = text.replace(/\\\\/g, \"\\\\\\\\\");\n\treturn isPrintedOnOwnLines(text) ? `${tag}\\`\\n${fenced}\\n\\`` : `${tag}\\`${fenced}\\``;\n}\nfunction isPrintedOnOwnLines(text) {\n\treturn !text.includes(\"`\") && text.includes(\"\\n\");\n}\n/** Whether the literal {@link printTaggedLiteral} prints for `text` has `text` as its canonical text. */\nfunction printedTaggedLiteralReadsBack(text) {\n\tconst canonical = canonicalizeTaggedLiteralBody(isPrintedOnOwnLines(text) ? `\\n${text}\\n` : text);\n\treturn canonical.ok && canonical.text === text;\n}\n/**\n* TypeScript source for `text` in generated code: a template literal with `tag`, or `tsQuotedTextSource(text)`. It\n* writes a template only when the tag's TypeScript function canonicalizes its text as `canonicalizeTaggedLiteralBody`\n* does and that leaves `text` unchanged, which holds for `sql`. It also falls back when a line ends in a space or a\n* tab, which editors strip on save, and when `text` holds a character a template would carry unescaped and invisible.\n* A multi-line template's lines sit one level deeper than the line it opens on.\n*/\nfunction tsTaggedTemplateSource(tag, text) {\n\tif (!templateHoldsUnchanged(text)) return {\n\t\tsource: tsQuotedTextSource(text),\n\t\tusesTag: false\n\t};\n\tconst escaped = tsTemplateText(text);\n\tif (!text.includes(\"\\n\")) return {\n\t\tsource: `${tag}\\`${escaped}\\``,\n\t\tusesTag: true\n\t};\n\treturn {\n\t\tsource: `${tag}\\`\\n${escaped.split(\"\\n\").map((line) => line.length === 0 ? line : ` ${line}`).join(\"\\n\")}\\n\\``,\n\t\tusesTag: true\n\t};\n}\nconst WHITESPACE_ONLY_LINE = /^\\s+$/;\nconst TRAILING_SPACE_OR_TAB = /[ \\t]$/;\nfunction templateHoldsUnchanged(text) {\n\tconst canonical = canonicalizeTaggedLiteralBody(text);\n\tif (!canonical.ok || canonical.text !== text) return false;\n\tconst lines = text.split(\"\\n\");\n\tconst indentTreatsAsBlank = (line) => WHITESPACE_ONLY_LINE.test(line) && !BLANK_LINE.test(line);\n\tif (lines.some((line) => indentTreatsAsBlank(line) || TRAILING_SPACE_OR_TAB.test(line))) return false;\n\treturn !holdsCharacterThatNeedsAnEscape(text);\n}\nfunction holdsCharacterThatNeedsAnEscape(text) {\n\tfor (const char of text) {\n\t\tconst code = char.codePointAt(0) ?? 0;\n\t\tif (code < 32 && char !== \"\\n\" && char !== \"\t\" || code === 127 || code === 8232 || code === 8233 || code >= 55296 && code <= 57343) return true;\n\t}\n\treturn false;\n}\n//#endregion\n//#region src/shared/temporal-presets.ts\n/**\n* Canonical id for the wall-clock-now mutation default generator. It flows to the control-plane descriptor and the temporal field presets below, to each family's runtime generator, and to the authoring surfaces (PSL `temporal.updatedAt()`, TS `field.temporal.updatedAt()`) through the descriptor.\n*/\nconst TIMESTAMP_NOW_GENERATOR_ID = \"timestampNow\";\n/**\n* Builds the control-plane descriptor for the wall-clock-now mutation default generator. Its `id` and `buildPhases` are target-agnostic, so PSL `temporal.updatedAt()` and TS `field.temporal.updatedAt()` lower to byte-identical contracts.\n*\n* `applicableCodecIds` is omitted: `timestampNow` is reachable only through a preset, which co-registers the codec itself, so a compatibility list would be tautological.\n*/\nfunction timestampNowControlDescriptor() {\n\treturn {\n\t\tid: TIMESTAMP_NOW_GENERATOR_ID,\n\t\tbuildPhases: () => ({\n\t\t\tonCreate: {\n\t\t\t\tkind: \"generator\",\n\t\t\t\tid: TIMESTAMP_NOW_GENERATOR_ID\n\t\t\t},\n\t\t\tonUpdate: {\n\t\t\t\tkind: \"generator\",\n\t\t\t\tid: TIMESTAMP_NOW_GENERATOR_ID\n\t\t\t}\n\t\t})\n\t};\n}\n/**\n* Builds the `temporal.{createdAt,updatedAt}` field-preset pair. `createdAt` lowers to an execution generator on `onCreate`; `updatedAt` lowers to the same generator on both `onCreate` and `onUpdate`. The target supplies the storage template of its timestamp codec, which the presets carry through unchanged; everything else is shared, so PSL and TS authoring lower to byte-identical contracts across targets.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction temporalAuthoringPresets(input) {\n\tconst { generatorId: requestedGeneratorId, ...storage } = input;\n\tconst generatorId = requestedGeneratorId ?? \"timestampNow\";\n\treturn {\n\t\tcreatedAt: {\n\t\t\tkind: \"fieldPreset\",\n\t\t\toutput: {\n\t\t\t\t...storage,\n\t\t\t\texecutionDefaults: { onCreate: {\n\t\t\t\t\tkind: \"generator\",\n\t\t\t\t\tid: generatorId\n\t\t\t\t} }\n\t\t\t}\n\t\t},\n\t\tupdatedAt: {\n\t\t\tkind: \"fieldPreset\",\n\t\t\toutput: {\n\t\t\t\t...storage,\n\t\t\t\texecutionDefaults: {\n\t\t\t\t\tonCreate: {\n\t\t\t\t\t\tkind: \"generator\",\n\t\t\t\t\t\tid: generatorId\n\t\t\t\t\t},\n\t\t\t\t\tonUpdate: {\n\t\t\t\t\t\tkind: \"generator\",\n\t\t\t\t\t\tid: generatorId\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\nconst TEMPORAL_ON_CREATE_ARG = {\n\tname: \"onCreate\",\n\tkind: \"option\",\n\tvalues: [\"now\"],\n\toptional: true\n};\nconst TEMPORAL_ON_UPDATE_ARG = {\n\tname: \"onUpdate\",\n\tkind: \"option\",\n\tvalues: [\"now\"],\n\toptional: true\n};\n/**\n* Selects a generator descriptor for the preset's `now` token. The token is preset vocabulary; the generator id never appears in a user's spelling (ADR 169 — these generators are preset-only).\n*/\nfunction temporalPhaseTemplate(index, generatorId) {\n\treturn {\n\t\tkind: \"select\",\n\t\tindex,\n\t\tcases: { now: {\n\t\t\tkind: \"generator\",\n\t\t\tid: generatorId\n\t\t} }\n\t};\n}\n/**\n* Builds a `temporal.<codec>` field preset for a codec with no type parameters, carrying the codec's storage template through unchanged. Both phase arguments are optional, and omitting one omits that phase.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction temporalCodecPreset(storage) {\n\treturn {\n\t\tkind: \"fieldPreset\",\n\t\targs: [TEMPORAL_ON_CREATE_ARG, TEMPORAL_ON_UPDATE_ARG],\n\t\toutput: {\n\t\t\t...storage,\n\t\t\texecutionDefaults: {\n\t\t\t\tonCreate: temporalPhaseTemplate(0, TIMESTAMP_NOW_GENERATOR_ID),\n\t\t\t\tonUpdate: temporalPhaseTemplate(1, TIMESTAMP_NOW_GENERATOR_ID)\n\t\t\t}\n\t\t}\n\t};\n}\n//#endregion\nexport { isAuthoringModelAttributeDescriptor as A, validateAuthoringTypeParams as B, getAuthoringTypeConstructor as C, isAuthoringArgRef as D, instantiateAuthoringTypeConstructor as E, mergeAuthoringNamespaces as F, resolveAuthoringTemplateValue as I, resolveEnumCodecId as L, isAuthoringTypeConstructorDescriptor as M, isTagEntryKey as N, isAuthoringEntityTypeDescriptor as O, mergeAuthoringAttributeSpecs as P, tagEntryKey as R, flushAuthoringWarnings as S, instantiateAuthoringFieldPreset as T, assertResolvableTypeConstructorTemplates as _, temporalCodecPreset as a, collectContributedDescriptorPaths as b, TAGGED_LITERAL_MAX_BYTES as c, printTaggedLiteral as d, printedTaggedLiteralReadsBack as f, assertNoCrossRegistryCollisions as g, tsTaggedTemplateSource as h, temporalAuthoringPresets as i, isAuthoringPslBlockDescriptor as j, isAuthoringFieldPresetDescriptor as k, canonicalizeTaggedLiteralBody as l, resolveTemplateTagEscapes as m, TEMPORAL_ON_UPDATE_ARG as n, temporalPhaseTemplate as o, resolvePslBacktickEscapes as p, TIMESTAMP_NOW_GENERATOR_ID as r, timestampNowControlDescriptor as s, TEMPORAL_ON_CREATE_ARG as t, describeTaggedLiteralFailure as u, authoringEntryType as v, instantiateAuthoringEntityType as w, collectScalarTypeConstructors as x, classifyEnumMemberType as y, validateAuthoringHelperArguments as z };\n\n//# sourceMappingURL=temporal-presets-DEyPX8qQ.mjs.map"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import { a as jsonToTsSource, c as tsObjectSource, i as TsExpression, l as tsQuotedTextSource, n as JsonObject, o as renderImports, r as JsonValue, s as tsArraySource, t as ImportRequirement, u as tsStringLiteral } from "./index-DeSumOoq.mjs";
2
- export { type ImportRequirement, type JsonObject, type JsonValue, TsExpression, jsonToTsSource, renderImports, tsArraySource, tsObjectSource, tsQuotedTextSource, tsStringLiteral };
1
+ import { a as jsonToTsSource, c as tsObjectSource, d as tsTemplateText, i as TsExpression, l as tsQuotedTextSource, n as JsonObject, o as renderImports, r as JsonValue, s as tsArraySource, t as ImportRequirement, u as tsStringLiteral } from "./index-wEX7G1Bv.mjs";
2
+ export { type ImportRequirement, type JsonObject, type JsonValue, TsExpression, jsonToTsSource, renderImports, tsArraySource, tsObjectSource, tsQuotedTextSource, tsStringLiteral, tsTemplateText };
@@ -1,2 +1,2 @@
1
- import { a as tsObjectSource, i as tsArraySource, n as jsonToTsSource, o as tsQuotedTextSource, r as renderImports, s as tsStringLiteral, t as TsExpression } from "./dist-DtT9I2iL.mjs";
2
- export { TsExpression, jsonToTsSource, renderImports, tsArraySource, tsObjectSource, tsQuotedTextSource, tsStringLiteral };
1
+ import { a as tsObjectSource, c as tsTemplateText, i as tsArraySource, n as jsonToTsSource, o as tsQuotedTextSource, r as renderImports, s as tsStringLiteral, t as TsExpression } from "./dist-BHoPlvHD.mjs";
2
+ export { TsExpression, jsonToTsSource, renderImports, tsArraySource, tsObjectSource, tsQuotedTextSource, tsStringLiteral, tsTemplateText };
@@ -3,7 +3,7 @@ import { b as DataTypeLookup, y as DataTypeId } from "./codec-types-CQNZE70G-DZI
3
3
  import { N as DataTypeAuthoringEntry, T as AuthoringStorageTypeTemplate, W as ScalarTypeConstructorOutput } from "./framework-authoring-BaBmrcxi-9J-ebDLU.mjs";
4
4
  import { s as MutationDefaultGeneratorDescriptor } from "./mutation-default-types-DCgdIlXt-C6Sc9h16.mjs";
5
5
  import { r as Result } from "./result-BYCOANWy.mjs";
6
- //#region ../../../1-framework/1-core/framework-components/dist/written-value-DdEQAH_R.d.mts
6
+ //#region ../../../1-framework/1-core/framework-components/dist/written-value--KnOpj99.d.mts
7
7
  //#region src/shared/tagged-literal.d.ts
8
8
  /**
9
9
  * `text` is the canonical value of the literal. Every failure `offset` is an
@@ -44,6 +44,17 @@ declare function canonicalizeTaggedLiteralBody(resolved: string): TaggedLiteralC
44
44
  declare function printTaggedLiteral(tag: string, text: string): string;
45
45
  /** Whether the literal {@link printTaggedLiteral} prints for `text` has `text` as its canonical text. */
46
46
  declare function printedTaggedLiteralReadsBack(text: string): boolean;
47
+ /**
48
+ * TypeScript source for `text` in generated code: a template literal with `tag`, or `tsQuotedTextSource(text)`. It
49
+ * writes a template only when the tag's TypeScript function canonicalizes its text as `canonicalizeTaggedLiteralBody`
50
+ * does and that leaves `text` unchanged, which holds for `sql`. It also falls back when a line ends in a space or a
51
+ * tab, which editors strip on save, and when `text` holds a character a template would carry unescaped and invisible.
52
+ * A multi-line template's lines sit one level deeper than the line it opens on.
53
+ */
54
+ declare function tsTaggedTemplateSource(tag: string, text: string): {
55
+ readonly source: string;
56
+ readonly usesTag: boolean;
57
+ };
47
58
  //#endregion
48
59
  //#region src/shared/temporal-presets.d.ts
49
60
  /**
@@ -277,5 +288,5 @@ declare function admittedForms(support: DataTypeSupport, receivingTypes: readonl
277
288
  /** How a position of `dataType` can be written, for a diagnostic: ``sql`...` ``, `true or false`. */
278
289
  declare function describeAdmittedForms(support: DataTypeSupport, dataType: DataTypeId): string;
279
290
  //#endregion
280
- export { printedTaggedLiteralReadsBack as A, describeRefusedValueType as C, exactRewrite as D, entryForTag as E, temporalAuthoringPresets as F, temporalCodecPreset as I, temporalPhaseTemplate as L, resolvePslBacktickEscapes as M, resolveTemplateTagEscapes as N, knownTags as O, tagForm as P, timestampNowControlDescriptor as R, describeRefusal as S, entryForPlain as T, admittedTags as _, RefusalDescription as a, describeAdmittedForms as b, TEMPORAL_ON_CREATE_ARG as c, TaggedLiteralCanonicalization as d, TypedValue as f, admittedForms as g, WrittenValue as h, ReadRefusal as i, readWrittenValue as j, printTaggedLiteral as k, TEMPORAL_ON_UPDATE_ARG as l, WrittenScalar as m, DataTypeSupport as n, RefusalGuidance as o, WrittenForm as p, PresetStorageTemplate as r, TAGGED_LITERAL_MAX_BYTES as s, CastRefusal as t, TIMESTAMP_NOW_GENERATOR_ID as u, canonicalizeTaggedLiteralBody as v, describeTaggedLiteralFailure as w, describeExpected as x, castTypedValue as y };
281
- //# sourceMappingURL=written-value-DdEQAH_R-yhLbzRP4.d.mts.map
291
+ export { printedTaggedLiteralReadsBack as A, describeRefusedValueType as C, exactRewrite as D, entryForTag as E, temporalAuthoringPresets as F, temporalCodecPreset as I, temporalPhaseTemplate as L, resolvePslBacktickEscapes as M, resolveTemplateTagEscapes as N, knownTags as O, tagForm as P, timestampNowControlDescriptor as R, describeRefusal as S, entryForPlain as T, admittedTags as _, RefusalDescription as a, describeAdmittedForms as b, TEMPORAL_ON_CREATE_ARG as c, TaggedLiteralCanonicalization as d, TypedValue as f, admittedForms as g, WrittenValue as h, ReadRefusal as i, readWrittenValue as j, printTaggedLiteral as k, TEMPORAL_ON_UPDATE_ARG as l, WrittenScalar as m, DataTypeSupport as n, RefusalGuidance as o, WrittenForm as p, PresetStorageTemplate as r, TAGGED_LITERAL_MAX_BYTES as s, CastRefusal as t, TIMESTAMP_NOW_GENERATOR_ID as u, canonicalizeTaggedLiteralBody as v, describeTaggedLiteralFailure as w, describeExpected as x, castTypedValue as y, tsTaggedTemplateSource as z };
292
+ //# sourceMappingURL=written-value--KnOpj99-DByhg5hX.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"written-value--KnOpj99-DByhg5hX.d.mts","names":[],"sources":["../../../../1-framework/1-core/framework-components/dist/written-value--KnOpj99.d.mts"],"mappings":";;;;;;;;;;;;KAWK;WACM;WACA;;WAEA;WACA;WACA;;cAEG;;iBAEG,6BAA6B;;iBAE7B,0BAA0B;;iBAE1B,0BAA0B;;;;;;;;;iBAS1B,8BAA8B,mBAAmB;;;;;;;;iBAQjD,mBAAmB,aAAa;;iBAEhC,8BAA8B;;;;;;;;iBAQ9B,uBAAuB,aAAa;WAC1C;WACA;;;;;;;KAON,wBAAwB,8BAA8B;;;;cAI7C;;;;;;iBAMG,iCAAiC;;;;iBAIjC,+BAA+B,gBAAgB,6BAA6B,oCAAoC,4BAA4B,OAAO;WACzJ,cAAc;;WAEd;aACE;aACA,QAAQ,KAAK;eACX,cAAc;;eAEd;iBACE;mBACE;mBACA,qBAAqB;;;;;WAK7B;aACE;aACA,QAAQ,KAAK;eACX,cAAc;;eAEd;iBACE;mBACE;mBACA,qBAAqB;;iBAEvB;mBACE;mBACA,qBAAqB;;;;;;cAM1B;WACH;WACA;WACA;WACA;;cAEG;WACH;WACA;WACA;WACA;;;;;iBAKM,4BAA4B,4BAA4B,4BAA4B,OAAO,OAAO,aAAa;WACrH;WACA,OAAO;WACP;aACE;eACE;eACA,IAAI;;;;;;;iBAOF,0BAA0B,gBAAgB,uBAAuB,SAAS;WAChF;WACA;aACE;aACA;aACA;aACA;;aAEA;aACA;aACA;aACA;;WAEF,QAAQ;aACN;eACE;iBACE;iBACA;iBACA;mBACE;qBACE;qBACA;;;;eAIN;iBACE;iBACA;iBACA;mBACE;qBACE;qBACA;;;;;;;;;;KAUhB;WACM;WACA;WACA;;WAEA;WACA;;WAEA;WACA;;WAEA;WACA;;WAEA;WACA,mBAAmB;;KAEzB,gBAAgB,QAAQ;WAClB;;;UAGD;WACC,SAAS,SAAS,eAAe;WACjC,QAAQ;;;UAGT;WACC,MAAM;WACN,OAAO;;KAEb;WACM;WACA;;WAEA;WACA;WACA;;WAEA;WACA;;KAEN;WACM;WACA,eAAe;WACf,WAAW;WACX;;WAEA;WACA;;;UAGD;WACC;WACA;;;KAGN;WACM;WACA;WACA;;WAEA;WACA;;;UAGD;;WAEC,gBAAgB;;WAEhB;;;;;iBAKM,gBAAgB,SAAS,cAAc,aAAa,SAAS,iBAAiB,UAAU,kBAAkB;;iBAE1G,iBAAiB,gBAAgB;;;;iBAIjC,yBAAyB;WAC/B,eAAe;WACf,WAAW;GACnB,SAAS,iBAAiB,UAAU;;;;iBAItB,aAAa,SAAS,iBAAiB,eAAe,YAAY,SAAS;UAClF;WACC;WACA,OAAO;;;iBAGD,YAAY,SAAS,iBAAiB,cAAc;;iBAEpD,cAAc,SAAS,iBAAiB,0CAA0C;;iBAElF,UAAU,SAAS;;iBAEnB,iBAAiB,SAAS,iBAAiB,SAAS,gBAAgB,OAAO,YAAY;;iBAEvF,eAAe,SAAS,iBAAiB,eAAe,YAAY,OAAO,aAAa,OAAO,YAAY;;iBAE3G,aAAa,SAAS,iBAAiB,UAAU;;iBAEjD,QAAQ,cAAc;;iBAEtB,cAAc,SAAS,iBAAiB,yBAAyB,wBAAwB;;iBAEzF,sBAAsB,SAAS,iBAAiB,UAAU"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prisma/orm-framework",
3
- "version": "8.0.0-rc.17-dev.17",
3
+ "version": "8.0.0-rc.17-dev.19",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -16,20 +16,20 @@
16
16
  "uniku": "^0.5.0"
17
17
  },
18
18
  "devDependencies": {
19
- "@internal/config": "8.0.0-rc.17-dev.17",
20
- "@internal/contract": "8.0.0-rc.17-dev.17",
21
- "@internal/contract-authoring": "8.0.0-rc.17-dev.17",
22
- "@internal/errors": "8.0.0-rc.17-dev.17",
23
- "@internal/framework-components": "8.0.0-rc.17-dev.17",
24
- "@internal/ids": "8.0.0-rc.17-dev.17",
25
- "@internal/operations": "8.0.0-rc.17-dev.17",
26
- "@internal/psl-parser": "8.0.0-rc.17-dev.17",
27
- "@internal/psl-printer": "8.0.0-rc.17-dev.17",
28
- "@internal/ts-render": "8.0.0-rc.17-dev.17",
29
- "@repo/tsconfig": "8.0.0-rc.17-dev.17",
30
- "@internal/publish-surface": "8.0.0-rc.17-dev.17",
31
- "@repo/tsdown": "8.0.0-rc.17-dev.17",
32
- "@internal/utils": "8.0.0-rc.17-dev.17",
19
+ "@internal/config": "8.0.0-rc.17-dev.19",
20
+ "@internal/contract": "8.0.0-rc.17-dev.19",
21
+ "@internal/contract-authoring": "8.0.0-rc.17-dev.19",
22
+ "@internal/errors": "8.0.0-rc.17-dev.19",
23
+ "@internal/framework-components": "8.0.0-rc.17-dev.19",
24
+ "@internal/ids": "8.0.0-rc.17-dev.19",
25
+ "@internal/operations": "8.0.0-rc.17-dev.19",
26
+ "@internal/psl-parser": "8.0.0-rc.17-dev.19",
27
+ "@internal/psl-printer": "8.0.0-rc.17-dev.19",
28
+ "@internal/ts-render": "8.0.0-rc.17-dev.19",
29
+ "@repo/tsconfig": "8.0.0-rc.17-dev.19",
30
+ "@internal/publish-surface": "8.0.0-rc.17-dev.19",
31
+ "@repo/tsdown": "8.0.0-rc.17-dev.19",
32
+ "@internal/utils": "8.0.0-rc.17-dev.19",
33
33
  "tsdown": "0.22.14",
34
34
  "typescript": "5.9.3",
35
35
  "vitest": "5.0.0-rc.2"
@@ -1 +0,0 @@
1
- {"version":3,"file":"authoring-Bk5x6Kvi.mjs","names":[],"sources":["../../../../1-framework/1-core/framework-components/dist/authoring.mjs"],"sourcesContent":["import { a as dataTypeId } from \"./data-type-4xQlxYB5.mjs\";\nimport { t as canonicalizeJson } from \"./canonicalize-json-ZPawceQR.mjs\";\nimport { A as isAuthoringPslBlockDescriptor, C as instantiateAuthoringEntityType, D as isAuthoringEntityTypeDescriptor, E as isAuthoringArgRef, F as resolveAuthoringTemplateValue, I as resolveEnumCodecId, L as tagEntryKey, M as isTagEntryKey, O as isAuthoringFieldPresetDescriptor, P as mergeAuthoringNamespaces, R as validateAuthoringHelperArguments, S as getAuthoringTypeConstructor, T as instantiateAuthoringTypeConstructor, _ as authoringEntryType, a as temporalCodecPreset, b as collectScalarTypeConstructors, d as printTaggedLiteral, f as printedTaggedLiteralReadsBack, g as assertResolvableTypeConstructorTemplates, h as assertNoCrossRegistryCollisions, i as temporalAuthoringPresets, j as isAuthoringTypeConstructorDescriptor, k as isAuthoringModelAttributeDescriptor, l as canonicalizeTaggedLiteralBody, m as resolveTemplateTagEscapes, n as TEMPORAL_ON_UPDATE_ARG, o as temporalPhaseTemplate, r as TIMESTAMP_NOW_GENERATOR_ID, t as TEMPORAL_ON_CREATE_ARG, u as describeTaggedLiteralFailure, v as classifyEnumMemberType, w as instantiateAuthoringFieldPreset, x as flushAuthoringWarnings, z as validateAuthoringTypeParams } from \"./temporal-presets-CjxLjyl8.mjs\";\nimport { isInternalError } from \"@internal/utils/internal-error\";\nimport { canonicalStringify } from \"@internal/utils/canonical-stringify\";\nimport { notOk, ok } from \"@internal/utils/result\";\n//#region src/shared/authoring-type-constructor-call.ts\nfunction* typeConstructors(namespace, path = []) {\n\tfor (const [name, value] of Object.entries(namespace)) if (isAuthoringTypeConstructorDescriptor(value)) yield {\n\t\tpath: [...path, name],\n\t\tdescriptor: value\n\t};\n\telse yield* typeConstructors(value, [...path, name]);\n}\nfunction produces(produced, wanted) {\n\tconst wantedFields = {\n\t\t...wanted,\n\t\ttypeParams: wanted.typeParams ?? {}\n\t};\n\treturn Object.entries({\n\t\t...produced,\n\t\ttypeParams: produced.typeParams ?? {}\n\t}).every(([key, value]) => canonicalizeJson(value) === canonicalizeJson(wantedFields[key]));\n}\n/**\n* The arguments that make `descriptor` produce exactly `output`, when each of its type parameters\n* comes straight from one argument; `undefined` when it cannot produce `output`, including when\n* `output` has no value for an argument the constructor requires.\n*/\nfunction argumentsFor(descriptor, output) {\n\tif (descriptor.entityRefArg !== void 0 || descriptor.output.codecId !== output.codecId) return;\n\tconst args = [];\n\tfor (const [key, template] of Object.entries(descriptor.output.typeParams ?? {})) {\n\t\tconst value = output.typeParams?.[key];\n\t\tif (value !== void 0 && isAuthoringArgRef(template) && template.path === void 0) args[template.index] = value;\n\t}\n\tconst requiredArgs = (descriptor.args ?? []).filter((arg) => arg.optional !== true).length;\n\tif (args.length < requiredArgs || Array.from(args).includes(void 0)) return void 0;\n\ttry {\n\t\treturn produces(instantiateAuthoringTypeConstructor(descriptor, args), output) ? args : void 0;\n\t} catch {\n\t\treturn;\n\t}\n}\n/**\n* The first call, in namespace order, to a type constructor in `namespace` that produces exactly\n* `output`. The inverse of {@link instantiateAuthoringTypeConstructor} for constructors whose type\n* parameters each come straight from one argument. A constructor whose argument names another\n* entity is never chosen. `undefined` when no call produces `output`.\n*/\nfunction findAuthoringTypeConstructorCall(namespace, output) {\n\tfor (const { path, descriptor } of typeConstructors(namespace)) {\n\t\tconst args = argumentsFor(descriptor, output);\n\t\tif (args !== void 0) return {\n\t\t\tpath,\n\t\t\targs\n\t\t};\n\t}\n}\n//#endregion\n//#region src/shared/enum-stored-members.ts\n/**\n* Each enum member whose stored form equals an earlier member's, paired with the first such member. Stored forms are compared as `contract.json` holds them, so negative zero is zero, and by `canonicalStringify`, so two objects with the same entries in a different order are equal. Every enum authoring surface refuses the members this returns.\n*/\nfunction duplicateStoredMembers(members) {\n\tconst memberByStoredForm = /* @__PURE__ */ new Map();\n\tconst duplicates = [];\n\tfor (const { name, stored } of members) {\n\t\tconst key = canonicalStringify(JSON.parse(JSON.stringify(stored)));\n\t\tconst earlier = memberByStoredForm.get(key);\n\t\tif (earlier === void 0) memberByStoredForm.set(key, name);\n\t\telse duplicates.push({\n\t\t\tearlier,\n\t\t\tlater: name,\n\t\t\tstored\n\t\t});\n\t}\n\treturn duplicates;\n}\n//#endregion\n//#region src/shared/enum-block-members.ts\n/**\n* Reads the members of an `enum` block through its codec. A member written as a number literal is read from its source text as a column default is read, when the family gives a reader for it (`ctx.readWrittenNumber`), so no digit is lost; when that reader refuses the number, the codec's `decodeJson` reads it, and only if the codec refuses it too is the reader's reason reported. Every other member goes to the codec's `decodeJson`, and a bare member is read from its own name.\n* Pushes a diagnostic and returns `undefined` when the codec refuses a member, when two members\n* store the same value, or when the block has no members. Shared by every family's enum factory.\n*/\nfunction readEnumBlockMembers(block, codecId, codec, ctx) {\n\tconst sourceId = ctx.sourceId ?? \"unknown\";\n\tconst diagnostics = ctx.diagnostics;\n\tconst members = [];\n\tconst storedMembers = [];\n\tlet memberError = false;\n\tfor (const [memberName, memberValue] of Object.entries(block.values)) {\n\t\tconst span = block.parameterSpans[memberName] ?? block.span;\n\t\tconst reading = typeof memberValue === \"number\" ? ctx.readWrittenNumber?.({\n\t\t\ttext: block.numberTexts?.[memberName] ?? String(memberValue),\n\t\t\tcodecId,\n\t\t\tsubject: `enum \"${block.name}\" member \"${memberName}\"`\n\t\t}) : void 0;\n\t\tconst written = reading?.ok ? reading.value : memberValue === void 0 ? memberName : memberValue;\n\t\tlet read;\n\t\ttry {\n\t\t\tread = codec.decodeJson(written);\n\t\t} catch (err) {\n\t\t\tif (isInternalError(err)) throw err;\n\t\t\tdiagnostics?.push(reading !== void 0 && !reading.ok ? {\n\t\t\t\tcode: \"PSL_EXTENSION_INVALID_VALUE\",\n\t\t\t\tmessage: reading.message,\n\t\t\t\tsourceId,\n\t\t\t\tspan\n\t\t\t} : memberValue === void 0 ? {\n\t\t\t\tcode: \"PSL_ENUM_BARE_MEMBER_NON_STRING_CODEC\",\n\t\t\t\tmessage: `enum \"${block.name}\" member \"${memberName}\" has no value and codec \"${codecId}\" does not accept a bare name as input`,\n\t\t\t\tsourceId,\n\t\t\t\tspan\n\t\t\t} : {\n\t\t\t\tcode: \"PSL_EXTENSION_INVALID_VALUE\",\n\t\t\t\tmessage: `enum \"${block.name}\" member \"${memberName}\" was rejected by codec \"${codecId}\": ${err instanceof Error ? err.message : String(err)}`,\n\t\t\t\tsourceId,\n\t\t\t\tspan\n\t\t\t});\n\t\t\tmemberError = true;\n\t\t\tcontinue;\n\t\t}\n\t\tmembers.push({\n\t\t\tname: memberName,\n\t\t\tvalue: read\n\t\t});\n\t\tstoredMembers.push({\n\t\t\tname: memberName,\n\t\t\tstored: codec.encodeJson(read)\n\t\t});\n\t}\n\tfor (const { earlier, later, stored } of duplicateStoredMembers(storedMembers)) {\n\t\tdiagnostics?.push({\n\t\t\tcode: \"PSL_ENUM_DUPLICATE_MEMBER_VALUE\",\n\t\t\tmessage: `enum \"${block.name}\": members \"${earlier}\" and \"${later}\" both store ${JSON.stringify(stored)}`,\n\t\t\tsourceId,\n\t\t\tspan: block.parameterSpans[later] ?? block.span\n\t\t});\n\t\tmemberError = true;\n\t}\n\tif (memberError) return void 0;\n\tif (members.length === 0) {\n\t\tdiagnostics?.push({\n\t\t\tcode: \"PSL_ENUM_MISSING_TYPE\",\n\t\t\tmessage: `enum \"${block.name}\" must have at least one member`,\n\t\t\tsourceId,\n\t\t\tspan: block.span\n\t\t});\n\t\treturn;\n\t}\n\treturn members;\n}\n//#endregion\n//#region src/shared/field-preset-resolution.ts\nfunction presetSpellingsUnder(members, prefix) {\n\treturn Object.entries(members).flatMap(([name, member]) => isAuthoringFieldPresetDescriptor(member) ? [`${prefix}.${name}(${(member.args ?? []).map((arg, index) => arg.name ?? `argument${index + 1}`).join(\", \")})`] : presetSpellingsUnder(member, `${prefix}.${name}`));\n}\n/**\n* How each field preset registered under `namespace`, at any depth, is written, with the names of its arguments: `temporal.timestamp(onCreate, onUpdate)`.\n*/\nfunction fieldPresetSpellings(contributions, namespace) {\n\tconst members = contributions?.field?.[namespace];\n\tif (members === void 0 || isAuthoringFieldPresetDescriptor(members)) return [];\n\treturn presetSpellingsUnder(members, namespace);\n}\n/**\n* Walks `authoringContributions.field` segment by segment and returns the field-preset descriptor at the path, or `undefined` when none is registered there.\n*/\nfunction getAuthoringFieldPreset(contributions, path) {\n\tlet current = contributions?.field;\n\tfor (const segment of path) {\n\t\tif (typeof current !== \"object\" || current === null || \"kind\" in current) return;\n\t\tcurrent = current[segment];\n\t}\n\treturn current !== void 0 && isAuthoringFieldPresetDescriptor(current) ? current : void 0;\n}\n//#endregion\n//#region src/shared/written-value.ts\n/**\n* Words a refusal of the cast rule. The message leads with what to write; the types are named only when the value has a form the position admits and its type is still refused, such as a number too large for the receiving type.\n*/\nfunction describeRefusal(refusal, support, guidance) {\n\tswitch (refusal.kind) {\n\t\tcase \"unknown-tag\": return {\n\t\t\tcode: \"PSL_UNKNOWN_LITERAL_TAG\",\n\t\t\tmessage: `Unknown literal tag \"${refusal.tag}\". Known tags: ${refusal.known.join(\", \")}.`\n\t\t};\n\t\tcase \"unwritable\": return {\n\t\t\tcode: \"PSL_VALUE_TYPE_INCOMPATIBLE\",\n\t\t\tmessage: `${describeExpected(guidance.forms)}; this target has no data type for a ${refusal.syntax} value`\n\t\t};\n\t\tcase \"unreadable\": return {\n\t\t\tcode: \"PSL_INVALID_LITERAL\",\n\t\t\tmessage: refusal.message\n\t\t};\n\t\tcase \"no-cast\": return {\n\t\t\tcode: \"PSL_VALUE_TYPE_INCOMPATIBLE\",\n\t\t\tmessage: describeRefusedValueType(refusal, support, guidance)\n\t\t};\n\t}\n}\n/** `Expected <forms>`, the forms joined with `or`: the start of every refusal that says what to write. */\nfunction describeExpected(forms) {\n\treturn `Expected ${joinForms(forms)}`;\n}\n/**\n* Words a value of type `valueType` that `receivingType` refuses, where `guidance.forms` may be written. The types are named only when the value has one of those forms.\n*/\nfunction describeRefusedValueType(refused, support, guidance) {\n\tconst expected = describeExpected(guidance.forms);\n\tconst valueForm = writtenForm(support, refused.valueType);\n\tif (valueForm !== void 0 && guidance.forms.some((form) => isSameForm(form, valueForm))) return `${expected} that ${refused.receivingType} can hold; got ${refused.valueType}`;\n\treturn guidance.rewrite === void 0 ? expected : `${expected}; write ${guidance.rewrite}`;\n}\nfunction isSameForm(a, b) {\n\treturn a.kind === \"tag\" && b.kind === \"tag\" ? a.tag === b.tag : a.kind === b.kind;\n}\n/**\n* The literal to write in place of a quoted string that `receivingType` refuses: the string as a literal of the first tag the type admits. `undefined` when the value is not a quoted string, the type admits no tag, the literal would not read back as the same text, or the type would refuse the literal too.\n*/\nfunction exactRewrite(support, receivingType, written) {\n\tconst [tag] = admittedTags(support, receivingType);\n\tif (written.kind !== \"string\" || tag === void 0) return void 0;\n\tif (!printedTaggedLiteralReadsBack(written.text)) return void 0;\n\tconst read = readWrittenValue(support, {\n\t\tkind: \"tag\",\n\t\ttag,\n\t\ttext: written.text\n\t});\n\tif (!read.ok || !castTypedValue(support, receivingType, read.value).ok) return void 0;\n\treturn printTaggedLiteral(tag, written.text);\n}\nfunction findEntry(support, matches) {\n\tfor (const [key, entry] of Object.entries(support.entries)) if (matches(entry)) return {\n\t\tkey,\n\t\tentry\n\t};\n}\n/** The entry a tag names, or `undefined` when no pack registered that tag. */\nfunction entryForTag(support, tag) {\n\treturn findEntry(support, ({ written }) => written.kind === \"tag\" && written.tag === tag);\n}\n/** The entry that reads a plain string, boolean or number, or `undefined` when none does. */\nfunction entryForPlain(support, syntax) {\n\treturn findEntry(support, ({ written }) => written.kind === \"plain\" && written.syntax === syntax);\n}\n/** Every tag a stack registers, in the order the entries were merged. */\nfunction knownTags(support) {\n\treturn Object.values(support.entries).flatMap((entry) => entry.written.kind === \"tag\" ? [entry.written.tag] : []);\n}\nfunction textOf(written) {\n\treturn written.kind === \"boolean\" ? String(written.value) : written.text;\n}\nfunction messageOf(error) {\n\treturn error instanceof Error ? error.message : String(error);\n}\n/** Read one written value through the authoring entry for its syntax. */\nfunction readWrittenValue(support, written) {\n\tconst found = written.kind === \"tag\" ? entryForTag(support, written.tag) : entryForPlain(support, written.kind);\n\tif (found === void 0) return written.kind === \"tag\" ? notOk({\n\t\tkind: \"unknown-tag\",\n\t\ttag: written.tag,\n\t\tknown: knownTags(support)\n\t}) : notOk({\n\t\tkind: \"unwritable\",\n\t\tsyntax: written.kind\n\t});\n\tconst text = textOf(written);\n\tconst form = found.entry.written;\n\tif (form.kind === \"plain\" && form.syntax === \"number\") {\n\t\tconst classified = form.classify(text);\n\t\treturn classified === void 0 ? notOk({\n\t\t\tkind: \"unreadable\",\n\t\t\tmessage: `no data type of this target holds the number ${text}`\n\t\t}) : ok(classified);\n\t}\n\ttry {\n\t\treturn ok({\n\t\t\ttype: dataTypeId(authoringEntryType(found.key, found.entry)),\n\t\t\tvalue: form.parse(text)\n\t\t});\n\t} catch (error) {\n\t\tif (isInternalError(error)) throw error;\n\t\treturn notOk({\n\t\t\tkind: \"unreadable\",\n\t\t\tmessage: messageOf(error)\n\t\t});\n\t}\n}\n/** Take a typed value into the receiving type, directly or through the cast that type declares. */\nfunction castTypedValue(support, receivingType, typed) {\n\tif (typed.type === receivingType) return ok({\n\t\ttype: receivingType,\n\t\tvalue: typed.value\n\t});\n\tconst declaration = support.lookup.get(receivingType);\n\tconst cast = declaration?.casts[typed.type];\n\tif (cast === void 0) return notOk({\n\t\tkind: \"no-cast\",\n\t\treceivingType,\n\t\tvalueType: typed.type,\n\t\tcasts: Object.keys(declaration?.casts ?? {})\n\t});\n\ttry {\n\t\treturn ok({\n\t\t\ttype: receivingType,\n\t\t\tvalue: cast(typed.value)\n\t\t});\n\t} catch (error) {\n\t\tif (isInternalError(error)) throw error;\n\t\treturn notOk({\n\t\t\tkind: \"unreadable\",\n\t\t\tmessage: messageOf(error)\n\t\t});\n\t}\n}\n/** The type itself, then each type it casts from, in key order. */\nfunction admittedTypes(support, dataType) {\n\treturn [dataType, ...Object.keys(support.lookup.get(dataType)?.casts ?? {})];\n}\n/** The tags a position of `dataType` admits: its own tag, then the tags of the types it casts from. */\nfunction admittedTags(support, dataType) {\n\tconst tags = admittedTypes(support, dataType).flatMap((type) => {\n\t\tconst written = support.entries[type]?.written;\n\t\treturn written?.kind === \"tag\" ? [written.tag] : [];\n\t});\n\treturn [...new Set(tags)];\n}\n/** The form a value of a tagged literal's type is written in. */\nfunction tagForm(tag) {\n\treturn {\n\t\tkind: \"tag\",\n\t\ttag,\n\t\tphrase: `${tag}\\`...\\``\n\t};\n}\nconst PLAIN_PHRASES = {\n\tstring: \"a quoted string\",\n\tboolean: \"true or false\",\n\tnumber: \"a number\"\n};\nfunction writtenForm(support, type) {\n\tconst written = support.entries[type]?.written;\n\tif (written?.kind === \"tag\") return tagForm(written.tag);\n\tif (written?.kind === \"plain\" && written.syntax !== \"number\") return {\n\t\tkind: written.syntax,\n\t\tphrase: PLAIN_PHRASES[written.syntax]\n\t};\n\treturn Object.entries(support.entries).some(([key, entry]) => entry.written.kind === \"plain\" && entry.written.syntax === \"number\" && (key === type || entry.written.types.some((listed) => listed === type))) ? {\n\t\tkind: \"number\",\n\t\tphrase: PLAIN_PHRASES.number\n\t} : void 0;\n}\n/** What {@link describeAdmittedForms} returns for a type that nothing writes. */\nconst NO_WRITTEN_FORM = \"no written form\";\n/** Each form a position receiving every one of `receivingTypes` admits, once, in order: ``sql`...` ``, `true or false`. */\nfunction admittedForms(support, receivingTypes) {\n\tconst forms = [];\n\tfor (const type of receivingTypes.flatMap((receiving) => admittedTypes(support, receiving))) {\n\t\tconst form = writtenForm(support, type);\n\t\tif (form !== void 0 && !forms.some((listed) => isSameForm(listed, form))) forms.push(form);\n\t}\n\treturn forms;\n}\nfunction joinForms(forms) {\n\treturn forms.length === 0 ? NO_WRITTEN_FORM : forms.map((form) => form.phrase).join(\" or \");\n}\n/** How a position of `dataType` can be written, for a diagnostic: ``sql`...` ``, `true or false`. */\nfunction describeAdmittedForms(support, dataType) {\n\treturn joinForms(admittedForms(support, [dataType]));\n}\n//#endregion\nexport { TEMPORAL_ON_CREATE_ARG, TEMPORAL_ON_UPDATE_ARG, TIMESTAMP_NOW_GENERATOR_ID, admittedForms, admittedTags, assertNoCrossRegistryCollisions, assertResolvableTypeConstructorTemplates, authoringEntryType, canonicalizeTaggedLiteralBody, castTypedValue, classifyEnumMemberType, collectScalarTypeConstructors, describeAdmittedForms, describeExpected, describeRefusal, describeRefusedValueType, describeTaggedLiteralFailure, duplicateStoredMembers, entryForPlain, entryForTag, exactRewrite, fieldPresetSpellings, findAuthoringTypeConstructorCall, flushAuthoringWarnings, getAuthoringFieldPreset, getAuthoringTypeConstructor, instantiateAuthoringEntityType, instantiateAuthoringFieldPreset, instantiateAuthoringTypeConstructor, isAuthoringArgRef, isAuthoringEntityTypeDescriptor, isAuthoringFieldPresetDescriptor, isAuthoringModelAttributeDescriptor, isAuthoringPslBlockDescriptor, isAuthoringTypeConstructorDescriptor, isTagEntryKey, knownTags, mergeAuthoringNamespaces, printTaggedLiteral, printedTaggedLiteralReadsBack, readEnumBlockMembers, readWrittenValue, resolveAuthoringTemplateValue, resolveEnumCodecId, resolveTemplateTagEscapes, tagEntryKey, tagForm, temporalAuthoringPresets, temporalCodecPreset, temporalPhaseTemplate, validateAuthoringHelperArguments, validateAuthoringTypeParams };\n\n//# sourceMappingURL=authoring.mjs.map"],"mappings":"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"}
@@ -1 +0,0 @@
1
- import "./control-DhWsAbYJ-D9eWSlYE.mjs";
@@ -1 +0,0 @@
1
- {"version":3,"file":"dist-DtT9I2iL.mjs","names":[],"sources":["../../../../1-framework/1-core/ts-render/dist/index.mjs"],"sourcesContent":["import { InternalError } from \"@internal/utils/internal-error\";\nimport { structuredError } from \"@internal/utils/structured-error\";\n//#region src/ts-string-literal.ts\n/**\n* Renders a string as a TypeScript source-text literal.\n*\n* `JSON.stringify` already escapes quotes, backslashes, and control characters\n* exactly as TypeScript needs; it leaves U+2028/U+2029 unescaped, which legacy\n* parsers treat as line terminators, and DEL (U+007F), which is invisible, so\n* those are escaped explicitly.\n*\n* Used for both value literals (`jsonToTsSource`) and type-level literals /\n* property keys (the contract emitter), so a physical name that a store admits\n* as a quoted identifier but TypeScript does not admit bare renders the same\n* way everywhere.\n*/\nfunction tsStringLiteral(value) {\n\treturn JSON.stringify(value).replace(/\\u2028/g, \"\\\\u2028\").replace(/\\u2029/g, \"\\\\u2029\").replace(/\\u007f/g, \"\\\\x7f\");\n}\n/**\n* TypeScript source for a string: an untagged template literal when the text holds both quote kinds, so neither quote\n* is escaped; otherwise `tsStringLiteral(text)`. Text holding a control character (below U+0020, or U+007F), U+2028,\n* U+2029 or a lone surrogate is always `tsStringLiteral(text)`.\n*/\nfunction tsQuotedTextSource(text) {\n\tif (!(text.includes(\"'\") && text.includes(\"\\\"\")) || needsEscapeSequence(text)) return tsStringLiteral(text);\n\treturn `\\`${text.replace(/\\\\/g, \"\\\\\\\\\").replace(/`/g, \"\\\\`\").replace(/\\$\\{/g, \"\\\\${\")}\\``;\n}\nfunction needsEscapeSequence(text) {\n\tfor (const char of text) {\n\t\tconst code = char.codePointAt(0) ?? 0;\n\t\tif (code < 32 || code === 127 || code === 8232 || code === 8233 || code >= 55296 && code <= 57343) return true;\n\t}\n\treturn false;\n}\n//#endregion\n//#region src/json-to-ts-source.ts\n/**\n* Pure JSON-to-TypeScript-source printer.\n*\n* This module is the second stage of the codec → TS pipeline:\n*\n* jsValue → codec.encodeJson → JsonValue → jsonToTsSource → TS source text\n*\n* Stage 1 (`codec.encodeJson`) is a codec responsibility — date serialization,\n* opaque domain types (vector, bigint, uuid), JSON canonicalization. Stage 2\n* (this module) is a pure JSON-to-TS printer that must never grow type-specific\n* branches.\n*\n* To render a non-JSON JS value (Date, Vector, BigInt, Buffer, …), encode it\n* through the relevant codec's `encodeJson` first. Adding special cases to\n* this file is not the answer — that's what codecs are for.\n*\n* The file also exports `tsObjectSource` and `tsArraySource`, the object and\n* array layouts `jsonToTsSource` uses, for callers that render some values\n* themselves.\n*/\n/**\n* Render a JSON-compatible value as a TypeScript source-text literal.\n*\n* Accepts `unknown` for ergonomics with structural types (e.g. `ColumnSpec`,\n* `ForeignKeySpec`) whose fields are all JSON-compatible but whose interfaces\n* lack the index signature TypeScript requires for `JsonObject` assignability.\n* Non-JSON values (Date, Symbol, Function, etc.) throw at runtime.\n*/\nfunction jsonToTsSource(value) {\n\tif (value === void 0) return \"undefined\";\n\tif (value === null) return \"null\";\n\tif (typeof value === \"string\") return tsStringLiteral(value);\n\tif (typeof value === \"number\" || typeof value === \"boolean\") return String(value);\n\tif (Array.isArray(value)) return tsArraySource(value.map((v) => jsonToTsSource(v)));\n\tif (typeof value === \"object\") return tsObjectSource(Object.entries(value).filter(([, v]) => v !== void 0).map(([k, v]) => [k, jsonToTsSource(v)]));\n\tthrow new InternalError(`jsonToTsSource: unsupported value type \"${typeof value}\"`);\n}\n/** An object literal from entries whose values are already TypeScript source, laid out as `jsonToTsSource` lays out objects. */\nfunction tsObjectSource(entries) {\n\tif (entries.length === 0) return \"{}\";\n\tconst items = entries.map(([key, source]) => `${renderKey(key)}: ${source}`);\n\tconst singleLine = `{ ${items.join(\", \")} }`;\n\tif (singleLine.length <= 80 && !singleLine.includes(\"\\n\")) return singleLine;\n\treturn `{\\n${items.map((i) => ` ${i}`).join(\",\\n\")},\\n}`;\n}\n/** An array literal from items that are already TypeScript source, laid out as `jsonToTsSource` lays out arrays. */\nfunction tsArraySource(items) {\n\tif (items.length === 0) return \"[]\";\n\tconst singleLine = `[${items.join(\", \")}]`;\n\tif (singleLine.length <= 80 && !singleLine.includes(\"\\n\")) return singleLine;\n\treturn `[\\n${items.map((i) => ` ${i}`).join(\",\\n\")},\\n]`;\n}\nfunction renderKey(key) {\n\tif (key === \"__proto__\") return tsStringLiteral(key);\n\treturn /^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(key) ? key : tsStringLiteral(key);\n}\n//#endregion\n//#region src/contract-errors.ts\nfunction contractError(code, message, options) {\n\treturn structuredError(code, message, options);\n}\n//#endregion\n//#region src/render-imports.ts\n/**\n* Render an aggregated `import` block from a flat list of\n* `ImportRequirement`s. Each target's migration renderer collects\n* requirements polymorphically from its call nodes and pipes them here.\n*\n* The emitter invariants:\n*\n* - **Usually one line per module specifier.** Named imports are aggregated\n* and emitted sorted; a single default symbol is combined onto the same\n* line when attributes agree (`import def, { a, b } from \"m\";`). Aliased\n* symbols render `symbol as alias`. When every symbol for a module is\n* `typeOnly`, the statement collapses to `import type { … }`; a module\n* mixing value and type symbols prefixes the type-only ones\n* (`import { type T, v }`). Exceptions that split into multiple lines: a\n* fully type-only statement with both a default and one or more named\n* bindings (`import type D from \"m\";` then `import type { N } from \"m\";`,\n* because TypeScript rejects `import type D, { N } from \"m\"` — TS1363),\n* and multiple distinct default symbols (see below).\n* - **Multiple distinct default symbols per module are allowed.** JS permits\n* re-importing the same specifier under different default-binding names\n* (`import a from 'm'; import b from 'm';`), so each distinct default\n* symbol renders its own `import` line, sorted alphabetically; a repeated\n* requirement for the same symbol still collapses into one binding,\n* merging `typeOnly` by AND.\n* - **Attribute unanimity per module.** All requirements for the same\n* module specifier must carry the same (or no) `attributes` map.\n* Divergent attribute maps throw — they can't collapse to one line\n* and there's no user-resolvable recovery at this layer.\n* - **Distinct (symbol, alias) pairs are distinct bindings.** TypeScript\n* permits importing the same export under multiple local names, so\n* `{ A }` + `{ A as B }` renders as `import { A, A as B } from \"m\"` and\n* `{ A as B }` + `{ A as C }` renders as `import { A as B, A as C } from \"m\"`.\n* Truly identical `(symbol, alias)` pairs still collapse to one binding,\n* merging `typeOnly` by AND.\n* - **Deterministic ordering.** Modules are emitted sorted by specifier;\n* within a module, named bindings are emitted sorted by `(symbol, alias)`\n* using JavaScript code-unit comparison, with the un-aliased form (no\n* alias) treated as alias `\"\"` so it sorts before any aliased form of the\n* same symbol.\n*\n* Returns a string containing one or more import lines per module (see the\n* splitting exceptions above), joined by `\\n` (no trailing newline). An\n* empty requirement list returns `\"\"`.\n*/\nfunction renderImports(requirements) {\n\treturn [...aggregateByModule(requirements).entries()].sort(([a], [b]) => a.localeCompare(b)).map(([moduleSpecifier, group]) => renderModuleImport(moduleSpecifier, group)).join(\"\\n\");\n}\nfunction aggregateByModule(requirements) {\n\tconst byModule = /* @__PURE__ */ new Map();\n\tfor (const req of requirements) {\n\t\tlet group = byModule.get(req.moduleSpecifier);\n\t\tif (!group) {\n\t\t\tgroup = {\n\t\t\t\tnamed: /* @__PURE__ */ new Map(),\n\t\t\t\tdefaults: /* @__PURE__ */ new Map(),\n\t\t\t\tattributes: null,\n\t\t\t\tattributesSet: false\n\t\t\t};\n\t\t\tbyModule.set(req.moduleSpecifier, group);\n\t\t}\n\t\tmergeRequirementIntoGroup(req, group);\n\t}\n\treturn byModule;\n}\nfunction mergeRequirementIntoGroup(req, group) {\n\tconst kind = req.kind ?? \"named\";\n\tconst typeOnly = req.typeOnly === true;\n\tif (kind === \"default\") {\n\t\tconst existingTypeOnly = group.defaults.get(req.symbol);\n\t\tgroup.defaults.set(req.symbol, existingTypeOnly === void 0 ? typeOnly : existingTypeOnly && typeOnly);\n\t} else {\n\t\tconst alias = req.alias && req.alias !== req.symbol ? req.alias : null;\n\t\tconst key = namedBindingKey(req.symbol, alias);\n\t\tconst existing = group.named.get(key);\n\t\tif (existing) existing.typeOnly = existing.typeOnly && typeOnly;\n\t\telse group.named.set(key, {\n\t\t\tsymbol: req.symbol,\n\t\t\talias,\n\t\t\ttypeOnly\n\t\t});\n\t}\n\tmergeAttributes(req, group);\n}\nfunction mergeAttributes(req, group) {\n\tconst incoming = req.attributes ?? null;\n\tif (!group.attributesSet) {\n\t\tgroup.attributes = incoming;\n\t\tgroup.attributesSet = true;\n\t\treturn;\n\t}\n\tif (!attributesEqual(group.attributes, incoming)) throw contractError(\"CONTRACT.PACK_CONTRIBUTION_INVALID\", `Conflicting import attributes for module \"${req.moduleSpecifier}\": ${stringifyAttributes(group.attributes)} vs ${stringifyAttributes(incoming)}.`, { meta: { moduleSpecifier: req.moduleSpecifier } });\n}\nfunction attributesEqual(a, b) {\n\tif (a === b) return true;\n\tif (a === null || b === null) return false;\n\tconst aKeys = Object.keys(a).sort();\n\tconst bKeys = Object.keys(b).sort();\n\tif (aKeys.length !== bKeys.length) return false;\n\tfor (let i = 0; i < aKeys.length; i++) {\n\t\tconst key = aKeys[i];\n\t\tif (key !== bKeys[i]) return false;\n\t\tif (a[key] !== b[key]) return false;\n\t}\n\treturn true;\n}\nfunction stringifyAttributes(attrs) {\n\tif (attrs === null) return \"(none)\";\n\treturn `{ ${Object.entries(attrs).sort(([a], [b]) => a.localeCompare(b)).map(([k, v]) => `${k}: ${JSON.stringify(v)}`).join(\", \")} }`;\n}\nfunction renderModuleImport(moduleSpecifier, group) {\n\tconst attrs = buildAttributesClause(group.attributes);\n\tconst defaultEntries = [...group.defaults.entries()].sort(([a], [b]) => a.localeCompare(b));\n\tconst hasNamed = group.named.size > 0;\n\tif (defaultEntries.length > 1) {\n\t\tconst defaultLines = defaultEntries.map(([symbol, typeOnly]) => `import ${typeOnly ? \"type \" : \"\"}${symbol} from '${moduleSpecifier}'${attrs};`);\n\t\tif (!hasNamed) return defaultLines.join(\"\\n\");\n\t\treturn [...defaultLines, renderNamedOnlyStatement(moduleSpecifier, group, attrs)].join(\"\\n\");\n\t}\n\tconst defaultEntry = defaultEntries[0];\n\tconst hasDefault = defaultEntry !== void 0;\n\tconst [defaultSymbol, defaultTypeOnly] = defaultEntry ?? [null, true];\n\tconst typeOnlyStatement = isStatementTypeOnly(hasDefault, defaultTypeOnly, group);\n\tif (typeOnlyStatement && hasDefault && hasNamed) return `${`import type ${defaultSymbol} from '${moduleSpecifier}'${attrs};`}\\n${`import type { ${renderNamedBindingsList(group, true)} } from '${moduleSpecifier}'${attrs};`}`;\n\treturn `${typeOnlyStatement ? \"import type\" : \"import\"} ${buildImportClause(defaultSymbol, group, typeOnlyStatement)} from '${moduleSpecifier}'${attrs};`;\n}\nfunction renderNamedOnlyStatement(moduleSpecifier, group, attrs) {\n\tconst typeOnlyStatement = [...group.named.values()].every((binding) => binding.typeOnly);\n\treturn `${typeOnlyStatement ? \"import type\" : \"import\"} { ${renderNamedBindingsList(group, typeOnlyStatement)} } from '${moduleSpecifier}'${attrs};`;\n}\nfunction isStatementTypeOnly(hasDefault, defaultTypeOnly, group) {\n\tconst hasNamed = group.named.size > 0;\n\tif (!hasDefault && !hasNamed) return false;\n\tif (hasDefault && !defaultTypeOnly) return false;\n\tfor (const binding of group.named.values()) if (!binding.typeOnly) return false;\n\treturn true;\n}\nfunction buildImportClause(defaultSymbol, group, statementTypeOnly) {\n\tconst hasNamed = group.named.size > 0;\n\tconst hasDefault = defaultSymbol !== null;\n\tconst namedClause = hasNamed ? renderNamedBindingsList(group, statementTypeOnly) : \"\";\n\tif (hasDefault && hasNamed) return `${defaultSymbol}, { ${namedClause} }`;\n\tif (hasDefault) return defaultSymbol;\n\treturn `{ ${namedClause} }`;\n}\nfunction renderNamedBindingsList(group, statementTypeOnly) {\n\treturn [...group.named.values()].sort(compareNamedBindings).map((binding) => renderNamedBinding(binding, statementTypeOnly)).join(\", \");\n}\nfunction compareNamedBindings(a, b) {\n\tif (a.symbol !== b.symbol) return a.symbol < b.symbol ? -1 : 1;\n\tconst aAlias = a.alias ?? \"\";\n\tconst bAlias = b.alias ?? \"\";\n\tif (aAlias === bAlias) return 0;\n\treturn aAlias < bAlias ? -1 : 1;\n}\nfunction namedBindingKey(symbol, alias) {\n\treturn `${symbol}\\x00${alias ?? \"\"}`;\n}\nfunction renderNamedBinding(binding, statementTypeOnly) {\n\tconst prefix = !statementTypeOnly && binding.typeOnly ? \"type \" : \"\";\n\tconst aliasClause = binding.alias !== null ? ` as ${binding.alias}` : \"\";\n\treturn `${prefix}${binding.symbol}${aliasClause}`;\n}\nfunction buildAttributesClause(attrs) {\n\tif (attrs === null) return \"\";\n\tconst entries = Object.entries(attrs).sort(([a], [b]) => a.localeCompare(b)).map(([k, v]) => `${k}: ${JSON.stringify(v)}`);\n\tif (entries.length === 0) return \"\";\n\treturn ` with { ${entries.join(\", \")} }`;\n}\n//#endregion\n//#region src/ts-expression.ts\n/**\n* Abstract base class for any IR node that can be emitted as a TypeScript\n* expression and declare its own import requirements.\n*\n* A top-level renderer walks an array of these polymorphically, concatenates\n* `renderTypeScript()` results, and aggregates `importRequirements()` into a\n* deduplicated import block.\n*/\nvar TsExpression = class {};\n//#endregion\nexport { TsExpression, jsonToTsSource, renderImports, tsArraySource, tsObjectSource, tsQuotedTextSource, tsStringLiteral };\n\n//# sourceMappingURL=index.mjs.map"],"mappings":"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"}