@prisma/orm-framework 8.0.0-rc.12-dev.14 → 8.0.0-rc.12-dev.15

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 (89) hide show
  1. package/dist/ast-helpers-2XRnkQEO-BxG5qx3Q.mjs +386 -0
  2. package/dist/ast-helpers-2XRnkQEO-BxG5qx3Q.mjs.map +1 -0
  3. package/dist/authoring-BffMNBO5.d.mts +43 -0
  4. package/dist/authoring-BffMNBO5.d.mts.map +1 -0
  5. package/dist/authoring-DbG78eh2.mjs +88 -0
  6. package/dist/authoring-DbG78eh2.mjs.map +1 -0
  7. package/dist/{utils-DMAM0unR.mjs → canonicalize-json-ZPawceQR-Dua1VNEB.mjs} +2 -2
  8. package/dist/canonicalize-json-ZPawceQR-Dua1VNEB.mjs.map +1 -0
  9. package/dist/components.d.mts +5 -5
  10. package/dist/components.mjs +5 -5
  11. package/dist/components__authoring.d.mts +2 -2
  12. package/dist/components__authoring.mjs +2 -2
  13. package/dist/components__control.d.mts +2 -2
  14. package/dist/components__control.mjs +2 -2
  15. package/dist/components__psl-ast.d.mts +3 -3
  16. package/dist/components__psl-ast.mjs +2 -2
  17. package/dist/components__utils.mjs +1 -1
  18. package/dist/{config-types-DgoEWkgA.d.mts → config-types-CWeyMWBV.d.mts} +17 -14
  19. package/dist/config-types-CWeyMWBV.d.mts.map +1 -0
  20. package/dist/{config-types-BZjCZ4qx.mjs → config-types-D0mYyP62.mjs} +25 -2
  21. package/dist/config-types-D0mYyP62.mjs.map +1 -0
  22. package/dist/config.d.mts +2 -2
  23. package/dist/config.mjs +2 -2
  24. package/dist/config__config-types.d.mts +2 -2
  25. package/dist/config__config-types.mjs +2 -2
  26. package/dist/contract-authoring.d.mts +1 -1
  27. package/dist/{control-Bc_dos9-.d.mts → control-BTo8rNKi.d.mts} +23 -3
  28. package/dist/{control-Bc_dos9-.d.mts.map → control-BTo8rNKi.d.mts.map} +1 -1
  29. package/dist/{control-BjK3Jrmp.mjs → control-CS45l6kB.mjs} +5 -2
  30. package/dist/control-CS45l6kB.mjs.map +1 -0
  31. package/dist/{declarations-D79GooqC-CcAbqTsq.mjs → declarations-43E1JFHg-DGBa0YH_.mjs} +8 -388
  32. package/dist/declarations-43E1JFHg-DGBa0YH_.mjs.map +1 -0
  33. package/dist/errors.d.mts +1 -1
  34. package/dist/errors__execution.d.mts +1 -1
  35. package/dist/{execution-oqC6O8ES.d.mts → execution-BsiK0DjS.d.mts} +2 -2
  36. package/dist/{execution-oqC6O8ES.d.mts.map → execution-BsiK0DjS.d.mts.map} +1 -1
  37. package/dist/{parse-SHpUIBnv-BvPsKLqw.d.mts → parse-DZRO_CK2-D8YAg23m.d.mts} +10 -18
  38. package/dist/{parse-SHpUIBnv-BvPsKLqw.d.mts.map → parse-DZRO_CK2-D8YAg23m.d.mts.map} +1 -1
  39. package/dist/{parse-DN-F4ASD-ClJdPlzj.mjs → parse-Km2Ne67K-CakfHP9f.mjs} +26 -29
  40. package/dist/parse-Km2Ne67K-CakfHP9f.mjs.map +1 -0
  41. package/dist/{psl-ast-BKF2fYgk-D6YxdCnP.d.mts → psl-ast-BePuKena-AYNqFKCE.d.mts} +8 -3
  42. package/dist/{psl-ast-BKF2fYgk-D6YxdCnP.d.mts.map → psl-ast-BePuKena-AYNqFKCE.d.mts.map} +1 -1
  43. package/dist/{psl-ast-Bu85Lu-k.d.mts → psl-ast-Cec7KbOn.d.mts} +2 -2
  44. package/dist/{psl-ast-Bu85Lu-k.d.mts.map → psl-ast-Cec7KbOn.d.mts.map} +1 -1
  45. package/dist/{psl-ast-DUCvVXbB.mjs → psl-ast-DYtFdynZ.mjs} +7 -2
  46. package/dist/psl-ast-DYtFdynZ.mjs.map +1 -0
  47. package/dist/psl-parser.d.mts +14 -7
  48. package/dist/psl-parser.d.mts.map +1 -1
  49. package/dist/psl-parser.mjs +10 -65
  50. package/dist/psl-parser.mjs.map +1 -1
  51. package/dist/psl-parser__format.mjs +23 -30
  52. package/dist/psl-parser__format.mjs.map +1 -1
  53. package/dist/psl-parser__interpret.d.mts +15 -7
  54. package/dist/psl-parser__interpret.d.mts.map +1 -1
  55. package/dist/psl-parser__interpret.mjs +24 -3
  56. package/dist/psl-parser__interpret.mjs.map +1 -1
  57. package/dist/psl-parser__syntax.d.mts +3 -3
  58. package/dist/psl-parser__syntax.mjs +3 -2
  59. package/dist/psl-parser__syntax.mjs.map +1 -1
  60. package/dist/psl-parser__tokenizer.d.mts +1 -1
  61. package/dist/psl-parser__tokenizer.mjs +1 -1
  62. package/dist/psl-printer.d.mts +8 -3
  63. package/dist/psl-printer.d.mts.map +1 -1
  64. package/dist/psl-printer.mjs +16 -9
  65. package/dist/psl-printer.mjs.map +1 -1
  66. package/dist/resolve-D_lZ54qh-DqOQkoMT.mjs +145 -0
  67. package/dist/resolve-D_lZ54qh-DqOQkoMT.mjs.map +1 -0
  68. package/dist/{symbol-table-DVPEY1fq-C5mC1wdG.d.mts → symbol-table-CRtoii4t-DubuO_5j.d.mts} +5 -5
  69. package/dist/{symbol-table-DVPEY1fq-C5mC1wdG.d.mts.map → symbol-table-CRtoii4t-DubuO_5j.d.mts.map} +1 -1
  70. package/dist/{tokenizer-CFsbtfFw-BnfUBepb.mjs → tokenizer-BMz7z2KR-J0yZ4im3.mjs} +11 -3
  71. package/dist/tokenizer-BMz7z2KR-J0yZ4im3.mjs.map +1 -0
  72. package/dist/{tokenizer-DcYI0Xrq-C-nNE9mE.d.mts → tokenizer-DW30uwhx-BHsWTwYk.d.mts} +8 -3
  73. package/dist/tokenizer-DW30uwhx-BHsWTwYk.d.mts.map +1 -0
  74. package/package.json +16 -15
  75. package/dist/authoring-D_Czkofy.mjs +0 -35
  76. package/dist/authoring-D_Czkofy.mjs.map +0 -1
  77. package/dist/authoring-DjeaZGzp.d.mts +0 -27
  78. package/dist/authoring-DjeaZGzp.d.mts.map +0 -1
  79. package/dist/config-types-BZjCZ4qx.mjs.map +0 -1
  80. package/dist/config-types-DgoEWkgA.d.mts.map +0 -1
  81. package/dist/control-BjK3Jrmp.mjs.map +0 -1
  82. package/dist/declarations-D79GooqC-CcAbqTsq.mjs.map +0 -1
  83. package/dist/diagnostic-Esyl8Qw1-Cd6SnWPN.mjs +0 -83
  84. package/dist/diagnostic-Esyl8Qw1-Cd6SnWPN.mjs.map +0 -1
  85. package/dist/parse-DN-F4ASD-ClJdPlzj.mjs.map +0 -1
  86. package/dist/psl-ast-DUCvVXbB.mjs.map +0 -1
  87. package/dist/tokenizer-CFsbtfFw-BnfUBepb.mjs.map +0 -1
  88. package/dist/tokenizer-DcYI0Xrq-C-nNE9mE.d.mts.map +0 -1
  89. package/dist/utils-DMAM0unR.mjs.map +0 -1
@@ -1,27 +0,0 @@
1
- import { a as AuthoringContributions, m as AuthoringFieldPresetDescriptor } from "./framework-authoring-C9VTqnML-BXtBl2dJ.mjs";
2
- import "./temporal-presets-L05Tl534-jgcrZX_O.mjs";
3
- //#region ../../../1-framework/1-core/framework-components/dist/authoring.d.mts
4
- //#region src/shared/field-preset-resolution.d.ts
5
- /**
6
- * Walks `authoringContributions.field` segment by segment and returns the field-preset descriptor at the path, or `undefined` when none is registered there.
7
- */
8
- declare function getAuthoringFieldPreset(contributions: AuthoringContributions | undefined, path: readonly string[]): AuthoringFieldPresetDescriptor | undefined;
9
- /**
10
- * Returns the namespace prefix of `attributeName` when it names an extension namespace that is not composed, otherwise `undefined`. A namespace is recognized when it is:
11
- *
12
- * - `db` (native-type spec, always allowed),
13
- * - the active family id,
14
- * - the active target id,
15
- * - a registered field-preset namespace (e.g. `temporal`),
16
- * - present in `composedExtensions`.
17
- *
18
- * Family, target, and field-preset namespaces are exempt so an attribute that does not exist under them surfaces as an unsupported attribute rather than as an uncomposed extension namespace.
19
- */
20
- declare function checkUncomposedNamespace(attributeName: string, composedExtensions: ReadonlySet<string>, context?: {
21
- readonly familyId?: string;
22
- readonly targetId?: string;
23
- readonly authoringContributions?: AuthoringContributions | undefined;
24
- }): string | undefined;
25
- //#endregion
26
- export { getAuthoringFieldPreset as n, checkUncomposedNamespace as t };
27
- //# sourceMappingURL=authoring-DjeaZGzp.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"authoring-DjeaZGzp.d.mts","names":[],"sources":["../../../../1-framework/1-core/framework-components/dist/authoring.d.mts"],"mappings":";;;;;;;iBAMiB,wBAAwB,eAAe,oCAAoC,0BAA0B;;;;;;;;;;;;iBAYrG,yBAAyB,uBAAuB,oBAAoB,qBAAqB;WAC/F;WACA;WACA,yBAAyB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"config-types-BZjCZ4qx.mjs","names":[],"sources":["../../../../1-framework/1-core/config/dist/config-types.mjs"],"sourcesContent":["//#region src/config-types.ts\n/**\n* Default *source* directory for the contract file the user authors at `init`\n* time. Output artefacts colocate with source per the same rule path-bearing\n* providers apply.\n*/\nconst DEFAULT_CONTRACT_SOURCE_DIR = \"src/prisma\";\nfunction normalizeContractConfig(contract) {\n\tconst inMemoryFallbackOutput = `${DEFAULT_CONTRACT_SOURCE_DIR}/contract.json`;\n\treturn {\n\t\tsource: contract.source,\n\t\toutput: contract.output ?? inMemoryFallbackOutput\n\t};\n}\n/**\n* Builds the ORM section of `prisma.config.ts`. The result nests under the\n* `orm` key of the engine's `definePrismaConfig` — the marker lives on the envelope,\n* not here. Structural validation happens in the config loader, which reports\n* per-section diagnostics instead of failing the whole load.\n*\n* Normalization:\n* - contract.output defaults to a path colocated with DEFAULT_CONTRACT_SOURCE_DIR\n* when missing (in-memory-only providers)\n*\n* @param config - Raw config input from user\n* @returns Normalized config IR with defaults applied\n*/\nfunction defineConfig(config) {\n\tif (config.contract) return {\n\t\t...config,\n\t\tcontract: normalizeContractConfig(config.contract)\n\t};\n\treturn config;\n}\n//#endregion\nexport { DEFAULT_CONTRACT_SOURCE_DIR, defineConfig, normalizeContractConfig };\n\n//# sourceMappingURL=config-types.mjs.map"],"mappings":";;;;;;AAMA,MAAM,8BAA8B;AACpC,SAAS,wBAAwB,UAAU;CAC1C,MAAM,yBAAyB,GAAG,4BAA4B;CAC9D,OAAO;EACN,QAAQ,SAAS;EACjB,QAAQ,SAAS,UAAU;CAC5B;AACD;;;;;;;;;;;;;;AAcA,SAAS,aAAa,QAAQ;CAC7B,IAAI,OAAO,UAAU,OAAO;EAC3B,GAAG;EACH,UAAU,wBAAwB,OAAO,QAAQ;CAClD;CACA,OAAO;AACR"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"config-types-DgoEWkgA.d.mts","names":[],"sources":["../../../../1-framework/1-core/config/dist/config-types.d.mts"],"mappings":";;;;;;;;;;UAMU;WACC;WACA;WACA;;UAED;WACC,OAAO;WACP,KAAK;;UAEN;WACC;WACA;WACA;WACA,OAAO;;WAEP;;;;;;WAMA,OAAO,SAAS;;UAEjB;WACC;WACA,sBAAsB;WACtB,OAAO;;UAER;WACC;;WAEA,4BAA4B,oBAAoB;WAChD,wBAAwB;WACxB,aAAa;;WAEb,gBAAgB;WAChB,yBAAyB;;;;;;;WAOzB;WACA,cAAc;;;;WAId,iBAAiB,YAAY;;;KAGnC;UACK;;;;;;WAMC;WACA,OAAO,SAAS,0BAA0B,QAAQ,OAAO,UAAU;;UAEpE,kCAAkC;WACjC;;UAED,yCAAyC;WACxC;;;;;;;;UAQD,qCAAqC;WACpC;;KAEN,yBAAyB,4BAA4B,mCAAmC;;;;;;UAMnF;;;;;WAKC,QAAQ;;;;;;;WAOR;;UAED;WACC;WACA;;;;;;;cAOG;iBACG,wBAAwB,UAAU,iBAAiB;WACzD;;;;;;;;;;UAUD,iBAAiB,mCAAmC,mCAAmC;WACtF,QAAQ,wBAAwB;WAChC,QAAQ,wBAAwB,WAAW;WAC3C,SAAS,yBAAyB,WAAW;WAC7C,sBAAsB,2BAA2B,WAAW;;;;;;;WAO5D,SAAS,wBAAwB,WAAW,WAAW,sBAAsB,WAAW,YAAY;;;;;WAKpG;;;;;;aAME,aAAa;;;;;;WAMf,WAAW;;;;WAIX;;aAEE;;WAEF,YAAY;;;;;;;WAOZ;;;;;;;;;;;;;;;iBAeM,aAAa,mCAAmC,mCAAmC,QAAQ,iBAAiB,WAAW,aAAa,iBAAiB,WAAW"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"control-BjK3Jrmp.mjs","names":[],"sources":["../../../../1-framework/1-core/framework-components/dist/control.mjs"],"sourcesContent":["import { n as runtimeError } from \"./runtime-error-BA9d7XjZ.mjs\";\nimport { a as createDataTypeLookup, n as materializeCodec, r as resolveCodecDescriptorOrThrow, t as CONTRACT_CODEC_DESCRIPTOR_MISSING } from \"./resolve-codec-DWEkC3ya.mjs\";\nimport { n as aggregateDescriptorKey, r as isAggregateDescriptor, t as mergeCapabilityMatrices } from \"./capabilities-ByvrTdNS.mjs\";\nimport { D as mergeAuthoringAttributeSpecs, O as mergeAuthoringNamespaces, T as isLoweringEntryKey, c as assertNoCrossRegistryCollisions, d as collectContributedDescriptorPaths, f as collectScalarTypeConstructors, l as assertResolvableTypeConstructorTemplates, s as timestampNowControlDescriptor } from \"./temporal-presets-DABMpaxB.mjs\";\nimport { blindCast } from \"@internal/utils/casts\";\nimport { InternalError } from \"@internal/utils/internal-error\";\n//#region src/control/contract-snapshot-layout.ts\nconst CONTRACT_SNAPSHOTS_DIRNAME = \"snapshots\";\nconst STORAGE_HASH_PATTERN = /^[0-9a-f]{64}$/;\n/** Validate a storage hash for use as a directory name. */\nfunction storageHashHex(storageHash) {\n\tif (!STORAGE_HASH_PATTERN.test(storageHash)) throw new InternalError(`Invalid storage hash \"${storageHash}\": expected 64 lowercase hex characters`);\n\treturn storageHash;\n}\n/** Module specifier for the store's `contract.json`, POSIX separators. */\nfunction contractSnapshotJsonSpecifier(snapshotsImportPath, storageHash) {\n\treturn `${snapshotsImportPath}/${storageHashHex(storageHash)}/contract.json`;\n}\n/** Type-only module specifier for the store's `contract.d.ts` (no extension). */\nfunction contractSnapshotTypesSpecifier(snapshotsImportPath, storageHash) {\n\treturn `${snapshotsImportPath}/${storageHashHex(storageHash)}/contract`;\n}\n//#endregion\n//#region src/control/control-capabilities.ts\nfunction hasMigrations(target) {\n\treturn \"migrations\" in target && !!target[\"migrations\"];\n}\nfunction hasSchemaView(instance) {\n\treturn \"toSchemaView\" in instance && typeof instance[\"toSchemaView\"] === \"function\";\n}\nfunction hasPslContractInfer(instance) {\n\treturn \"inferPslContract\" in instance && typeof instance[\"inferPslContract\"] === \"function\";\n}\nfunction hasOperationPreview(instance) {\n\treturn \"toOperationPreview\" in instance && typeof instance[\"toOperationPreview\"] === \"function\";\n}\nfunction hasSchemaSubjectClassifier(instance) {\n\treturn \"classifySubjectGranularity\" in instance && typeof instance[\"classifySubjectGranularity\"] === \"function\" && \"classifyEntityKind\" in instance && typeof instance[\"classifyEntityKind\"] === \"function\";\n}\n//#endregion\n//#region src/control/control-operation-results.ts\nconst VERIFY_CODE_MARKER_MISSING = \"CONTRACT.MARKER_MISSING\";\nconst VERIFY_CODE_HASH_MISMATCH = \"CONTRACT.MARKER_MISMATCH\";\nconst VERIFY_CODE_TARGET_MISMATCH = \"CONTRACT.TARGET_MISMATCH\";\nconst VERIFY_CODE_SCHEMA_FAILURE = \"CONTRACT.SCHEMA_VERIFICATION_FAILED\";\n//#endregion\n//#region src/control/control-schema-view.ts\nvar SchemaTreeNode = class {\n\tkind;\n\tid;\n\tlabel;\n\tmeta;\n\tchildren;\n\tconstructor(options) {\n\t\tthis.kind = options.kind;\n\t\tthis.id = options.id;\n\t\tthis.label = options.label;\n\t\tif (options.meta !== void 0) this.meta = options.meta;\n\t\tif (options.children !== void 0) this.children = options.children;\n\t\tObject.freeze(this);\n\t}\n\taccept(visitor) {\n\t\treturn visitor.visit(this);\n\t}\n};\n//#endregion\n//#region src/control/control-spaces.ts\n/**\n* Canonical control-plane identifiers for contract spaces.\n*\n* A contract space is the disjoint `(contract.json, migration-graph)` unit\n* the per-space planner / runner / verifier (project: extension contract\n* spaces, TML-2397) operates on. The application owns one well-known\n* space — the value below — and each loaded extension that contributes\n* schema owns a uniquely-named space.\n*\n* Lives in `framework-components/control` so every layer that has to\n* reason about space identity (the migration tooling, the SQL runtime's\n* marker reader, target-side statement builders, target-side adapters)\n* can import a single value rather than duplicating the literal. Raw\n* `'app'` string literals in framework / target / runtime / adapter\n* source code are forbidden and policed by\n* `scripts/lint-app-space-id.mjs` (wired into `pnpm lint:deps`).\n*\n* @see specs/framework-mechanism.spec.md § 3 — Layout convention (γ).\n*/\nconst APP_SPACE_ID = \"app\";\n//#endregion\n//#region src/control/control-stack.ts\nfunction addUniqueId(ids, seen, id) {\n\tif (!seen.has(id)) {\n\t\tids.push(id);\n\t\tseen.add(id);\n\t}\n}\nfunction assertUniqueCodecOwner(options) {\n\tconst existingOwner = options.owners.get(options.codecId);\n\tif (existingOwner !== void 0) throw new InternalError(`Duplicate ${options.entityLabel} for codecId \"${options.codecId}\". Descriptor \"${options.descriptorId}\" conflicts with \"${existingOwner}\". Each codecId can only have one ${options.entityOwnershipLabel}.`);\n}\nfunction extractCodecTypeImports(descriptors) {\n\tconst imports = [];\n\tfor (const descriptor of descriptors) {\n\t\tconst codecTypes = descriptor.types?.codecTypes;\n\t\tif (codecTypes?.import) imports.push(codecTypes.import);\n\t\tif (codecTypes?.typeImports) imports.push(...codecTypes.typeImports);\n\t}\n\treturn imports;\n}\nfunction extractQueryOperationTypeImports(descriptors) {\n\tconst imports = [];\n\tfor (const descriptor of descriptors) {\n\t\tconst queryOperationTypes = descriptor.types?.queryOperationTypes;\n\t\tif (queryOperationTypes?.import) imports.push(queryOperationTypes.import);\n\t}\n\treturn imports;\n}\nfunction extractComponentIds(family, target, adapter, extensions) {\n\tconst ids = [];\n\tconst seen = /* @__PURE__ */ new Set();\n\taddUniqueId(ids, seen, family.id);\n\taddUniqueId(ids, seen, target.id);\n\tif (adapter) addUniqueId(ids, seen, adapter.id);\n\tfor (const ext of extensions) addUniqueId(ids, seen, ext.id);\n\treturn ids;\n}\nfunction assembleAuthoringContributions(descriptors) {\n\tconst field = {};\n\tconst type = {};\n\tconst entityTypes = {};\n\tconst pslBlockDescriptors = {};\n\tconst modelAttributes = {};\n\tconst attributeSpecs = {\n\t\tmodel: {},\n\t\tfield: {}\n\t};\n\tconst attributeSpecOwners = /* @__PURE__ */ new Map();\n\tconst pathOwners = /* @__PURE__ */ new Map();\n\tconst claimContributedPaths = (namespace, descriptorKind, label, descriptorId) => {\n\t\tfor (const path of collectContributedDescriptorPaths(namespace, descriptorKind)) {\n\t\t\tconst key = `${label}:${path}`;\n\t\t\tconst existingOwner = pathOwners.get(key);\n\t\t\tif (existingOwner !== void 0) throw new InternalError(`Duplicate authoring ${label} helper \"${path}\". Descriptor \"${descriptorId}\" conflicts with \"${existingOwner}\".`);\n\t\t\tpathOwners.set(key, descriptorId);\n\t\t}\n\t};\n\tlet valueObjectStorageDeclaration;\n\tfor (const descriptor of descriptors) {\n\t\tconst descriptorId = descriptor.id ?? \"<unknown>\";\n\t\tconst declaredValueObjectStorageType = descriptor.authoring?.valueObjectStorageType;\n\t\tif (declaredValueObjectStorageType !== void 0) {\n\t\t\tif (valueObjectStorageDeclaration !== void 0) throw new InternalError(`Duplicate authoring valueObjectStorageType declaration. Descriptor \"${descriptorId}\" conflicts with \"${valueObjectStorageDeclaration.ownerId}\". Exactly one composed component may declare the value-object storage type.`);\n\t\t\tvalueObjectStorageDeclaration = {\n\t\t\t\tname: declaredValueObjectStorageType,\n\t\t\t\townerId: descriptorId\n\t\t\t};\n\t\t}\n\t\tif (descriptor.authoring?.field) {\n\t\t\tclaimContributedPaths(descriptor.authoring.field, \"fieldPreset\", \"field\", descriptorId);\n\t\t\tmergeAuthoringNamespaces(field, descriptor.authoring.field, [], \"fieldPreset\", \"field\");\n\t\t}\n\t\tif (descriptor.authoring?.type) {\n\t\t\tclaimContributedPaths(descriptor.authoring.type, \"typeConstructor\", \"type\", descriptorId);\n\t\t\tassertResolvableTypeConstructorTemplates(descriptor.authoring.type, descriptorId);\n\t\t\tmergeAuthoringNamespaces(type, descriptor.authoring.type, [], \"typeConstructor\", \"type\");\n\t\t}\n\t\tif (descriptor.authoring?.entityTypes) {\n\t\t\tclaimContributedPaths(descriptor.authoring.entityTypes, \"entity\", \"entity\", descriptorId);\n\t\t\tmergeAuthoringNamespaces(entityTypes, descriptor.authoring.entityTypes, [], \"entity\", \"entity\");\n\t\t}\n\t\tif (descriptor.authoring?.pslBlockDescriptors) {\n\t\t\tclaimContributedPaths(descriptor.authoring.pslBlockDescriptors, \"pslBlock\", \"pslBlock\", descriptorId);\n\t\t\tmergeAuthoringNamespaces(pslBlockDescriptors, descriptor.authoring.pslBlockDescriptors, [], \"pslBlock\", \"pslBlock\");\n\t\t}\n\t\tif (descriptor.authoring?.modelAttributes) mergeAuthoringNamespaces(modelAttributes, descriptor.authoring.modelAttributes, [], \"modelAttribute\", \"modelAttribute\");\n\t\tif (descriptor.authoring?.attributeSpecs) mergeAuthoringAttributeSpecs(attributeSpecs, descriptor.authoring.attributeSpecs, descriptorId, attributeSpecOwners);\n\t}\n\tconst fieldNamespace = field;\n\tconst typeNamespace = type;\n\tconst entityTypeNamespace = entityTypes;\n\tconst pslBlockDescriptorNamespace = blindCast(pslBlockDescriptors);\n\tconst modelAttributeNamespace = blindCast(modelAttributes);\n\tassertNoCrossRegistryCollisions(typeNamespace, fieldNamespace, entityTypeNamespace, pslBlockDescriptorNamespace, modelAttributeNamespace);\n\tif (valueObjectStorageDeclaration !== void 0 && !collectScalarTypeConstructors(typeNamespace).has(valueObjectStorageDeclaration.name)) throw new InternalError(`Invalid authoring valueObjectStorageType \"${valueObjectStorageDeclaration.name}\" declared by descriptor \"${valueObjectStorageDeclaration.ownerId}\". The name must be a top-level bare-eligible type constructor in the assembled authoring namespace.`);\n\treturn {\n\t\tdataTypes: assembleAuthoringDataTypes(descriptors),\n\t\tfield: fieldNamespace,\n\t\ttype: typeNamespace,\n\t\tentityTypes: entityTypeNamespace,\n\t\tpslBlockDescriptors: pslBlockDescriptorNamespace,\n\t\tmodelAttributes: modelAttributeNamespace,\n\t\tattributeSpecs,\n\t\t...valueObjectStorageDeclaration !== void 0 ? { valueObjectStorageType: valueObjectStorageDeclaration.name } : {}\n\t};\n}\n/** Collect every data type the composed components register, refusing two declarations of one id. */\nfunction assembleDataTypes(descriptors) {\n\tconst declared = [];\n\tconst owners = /* @__PURE__ */ new Map();\n\tfor (const descriptor of descriptors) {\n\t\tconst contributedBy = descriptor.id ?? \"<unknown>\";\n\t\tfor (const type of descriptor.dataTypes ?? []) {\n\t\t\tconst existingOwner = owners.get(type.id);\n\t\t\tif (existingOwner !== void 0) throw runtimeError(\"CONTRACT.DATA_TYPE_DUPLICATE\", `Duplicate data type \"${type.id}\". Component \"${contributedBy}\" conflicts with \"${existingOwner}\". Each data type has exactly one owner across the composed stack.`, {\n\t\t\t\tdataType: type.id,\n\t\t\t\tcontributedBy,\n\t\t\t\towner: existingOwner\n\t\t\t});\n\t\t\towners.set(type.id, contributedBy);\n\t\t\tdeclared.push({\n\t\t\t\ttype,\n\t\t\t\tcontributedBy\n\t\t\t});\n\t\t}\n\t}\n\treturn {\n\t\tlookup: createDataTypeLookup(declared.map((entry) => entry.type)),\n\t\tdeclared\n\t};\n}\n/** Merge every component's PSL support for its data types, refusing two claims on one key. */\nfunction assembleAuthoringDataTypes(descriptors) {\n\tconst merged = {};\n\tconst owners = /* @__PURE__ */ new Map();\n\tfor (const descriptor of descriptors) {\n\t\tconst contributedBy = descriptor.id ?? \"<unknown>\";\n\t\tfor (const [key, entry] of Object.entries(descriptor.authoring?.dataTypes ?? {})) {\n\t\t\tconst existingOwner = owners.get(key);\n\t\t\tif (existingOwner !== void 0) throw runtimeError(\"CONTRACT.DATA_TYPE_ENTRY_DUPLICATE\", `Duplicate authoring entry for \"${key}\". Component \"${contributedBy}\" conflicts with \"${existingOwner}\".`, {\n\t\t\t\tkey,\n\t\t\t\tcontributedBy,\n\t\t\t\towner: existingOwner\n\t\t\t});\n\t\t\towners.set(key, contributedBy);\n\t\t\tmerged[key] = entry;\n\t\t}\n\t}\n\treturn merged;\n}\n/**\n* The four things assembly checks across packs, each naming the component and the id at fault:\n*\n* 1. every codec names a registered data type;\n* 2. every authoring entry, and every type a cast takes values of, names a registered data type;\n* 3. no two entries claim one tag or one plain form;\n* 4. every type a cast takes values of can be written, because a cast from a type nobody can write\n* is never exercised.\n*/\nfunction enforceDataTypeInvariants(input) {\n\tconst unregistered = (contributedBy, id, what) => {\n\t\tthrow runtimeError(\"CONTRACT.DATA_TYPE_UNREGISTERED\", `${what} names data type \"${id}\", which no component registers. Contributed by \"${contributedBy}\".`, {\n\t\t\tdataType: id,\n\t\t\tcontributedBy\n\t\t});\n\t};\n\tfor (const codec of input.codecs) if (!input.lookup.has(codec.dataType)) unregistered(codec.contributedBy, codec.dataType, `Codec \"${codec.codecId}\"`);\n\tfor (const { key, entry, contributedBy } of input.authoringEntries) {\n\t\tif (isLoweringEntryKey(key)) continue;\n\t\tif (!input.lookup.has(key)) unregistered(contributedBy, key, \"Authoring entry\");\n\t\tif (entry.written.kind === \"plain\" && entry.written.syntax === \"number\") {\n\t\t\tfor (const classified of entry.written.types) if (!input.lookup.has(classified)) unregistered(contributedBy, classified, `The classifier of authoring entry \"${key}\"`);\n\t\t}\n\t}\n\tconst writable = new Set(input.authoringEntries.flatMap(({ key, entry }) => isLoweringEntryKey(key) ? [] : [key, ...entry.written.kind === \"plain\" && entry.written.syntax === \"number\" ? entry.written.types : []]));\n\tfor (const { type, contributedBy } of input.declaredTypes) {\n\t\tconst sources = [...Object.keys(type.casts), ...type.listCast?.of ?? []];\n\t\tfor (const source of sources) {\n\t\t\tif (!input.lookup.has(source)) unregistered(contributedBy, source, `The casts of data type \"${type.id}\"`);\n\t\t\tif (!writable.has(source)) throw runtimeError(\"CONTRACT.DATA_TYPE_NOT_WRITABLE\", `Data type \"${type.id}\" casts from \"${source}\", which no contract source can write, so the cast is never exercised. Contributed by \"${contributedBy}\".`, {\n\t\t\t\tdataType: type.id,\n\t\t\t\tsource,\n\t\t\t\tcontributedBy\n\t\t\t});\n\t\t}\n\t}\n\tconst claimants = /* @__PURE__ */ new Map();\n\tfor (const { key, entry, contributedBy } of input.authoringEntries) {\n\t\tconst written = entry.written;\n\t\tconst claim = written.kind === \"tag\" ? `tag \"${written.tag}\"` : `plain ${written.syntax}`;\n\t\tconst existing = claimants.get(claim);\n\t\tif (existing !== void 0) throw runtimeError(\"CONTRACT.DATA_TYPE_WRITTEN_FORM_DUPLICATE\", `Two authoring entries claim the ${claim}: \"${key}\" from \"${contributedBy}\" conflicts with \"${existing.key}\" from \"${existing.contributedBy}\".`, {\n\t\t\tclaim,\n\t\t\tkey,\n\t\t\tcontributedBy,\n\t\t\towner: existing.key,\n\t\t\townerContributedBy: existing.contributedBy\n\t\t});\n\t\tclaimants.set(claim, {\n\t\t\tkey,\n\t\t\tcontributedBy\n\t\t});\n\t}\n}\nfunction assembleControlMutationDefaults(descriptors) {\n\tconst defaultFunctionRegistry = /* @__PURE__ */ new Map();\n\tconst functionOwners = /* @__PURE__ */ new Map();\n\tconst generatorMap = /* @__PURE__ */ new Map();\n\tconst generatorOwners = /* @__PURE__ */ new Map();\n\tfor (const descriptor of descriptors) {\n\t\tconst contributions = descriptor.controlMutationDefaults;\n\t\tif (!contributions) continue;\n\t\tconst descriptorId = descriptor.id ?? \"<unknown>\";\n\t\tfor (const generatorDescriptor of contributions.generatorDescriptors) {\n\t\t\tconst existingOwner = generatorOwners.get(generatorDescriptor.id);\n\t\t\tif (existingOwner !== void 0) throw new InternalError(`Duplicate mutation default generator id \"${generatorDescriptor.id}\". Descriptor \"${descriptorId}\" conflicts with \"${existingOwner}\".`);\n\t\t\tgeneratorMap.set(generatorDescriptor.id, generatorDescriptor);\n\t\t\tgeneratorOwners.set(generatorDescriptor.id, descriptorId);\n\t\t}\n\t\tfor (const [functionName, handler] of contributions.defaultFunctionRegistry) {\n\t\t\tconst existingOwner = functionOwners.get(functionName);\n\t\t\tif (existingOwner !== void 0) throw new InternalError(`Duplicate mutation default function \"${functionName}\". Descriptor \"${descriptorId}\" conflicts with \"${existingOwner}\".`);\n\t\t\tdefaultFunctionRegistry.set(functionName, handler);\n\t\t\tfunctionOwners.set(functionName, descriptorId);\n\t\t}\n\t}\n\treturn {\n\t\tdefaultFunctionRegistry,\n\t\tgeneratorDescriptors: Array.from(generatorMap.values())\n\t};\n}\n/**\n* Collect every contributed {@link AggregateDescriptor} across the composed components, rejecting malformed shapes and second claims on one `(operation, input)` overload.\n*\n* Both planes read the same contribution slot: emission derives result types from these descriptors, and family runtimes build their resolution registry from them. Rejections are user-facing — an extension author's bad contribution surfaces here first, during `contract emit` — so a malformed shape raises `CONTRACT.AGGREGATE_DESCRIPTOR_INVALID` and a second claim raises `CONTRACT.AGGREGATE_DESCRIPTOR_DUPLICATE`, each naming the contributing component.\n*/\nfunction collectAggregateDescriptors(descriptors) {\n\tconst collected = [];\n\tconst owners = /* @__PURE__ */ new Map();\n\tfor (const descriptor of descriptors) {\n\t\tconst descriptorId = descriptor.id ?? \"<unknown>\";\n\t\tfor (const contributed of descriptor.types?.aggregateDescriptors ?? []) {\n\t\t\tif (!isAggregateDescriptor(contributed)) throw runtimeError(\"CONTRACT.AGGREGATE_DESCRIPTOR_INVALID\", `Malformed aggregate descriptor contributed by \"${descriptorId}\". A descriptor declares a non-empty \\`operation\\`, an \\`input\\` match of kind \\`none\\`/\\`any\\`/\\`codec\\`/\\`trait\\`, an \\`output\\` of kind \\`self\\`/\\`codec\\`, and a boolean \\`nullable\\` — plus \\`emptyResultJson\\`, in the result codec's canonical JSON, where \\`nullable\\` is false; a \\`self\\` output needs an input to reuse.`, {\n\t\t\t\tcontributedBy: descriptorId,\n\t\t\t\tdescriptor: contributed\n\t\t\t});\n\t\t\tconst key = aggregateDescriptorKey(contributed);\n\t\t\tconst existingOwner = owners.get(key);\n\t\t\tif (existingOwner !== void 0) throw runtimeError(\"CONTRACT.AGGREGATE_DESCRIPTOR_DUPLICATE\", `Duplicate aggregate descriptor for \"${key}\". Descriptor \"${descriptorId}\" conflicts with \"${existingOwner}\". Each operation/input pair can only have one provider.`, {\n\t\t\t\tkey,\n\t\t\t\tcontributedBy: descriptorId,\n\t\t\t\towner: existingOwner\n\t\t\t});\n\t\t\towners.set(key, descriptorId);\n\t\t\tcollected.push(contributed);\n\t\t}\n\t}\n\treturn collected;\n}\n/**\n* Flatten the codec descriptors the composed components contribute.\n*\n* A component may know a codec and still withhold it — an adapter that cannot name a codec's emitted type contributes the rest without it — so the contributed set is not always the set some component's own registry holds. Consumers whose output must agree with what the runtime resolves read this list rather than any one component's registry.\n*/\nfunction collectCodecDescriptors(descriptors) {\n\treturn descriptors.flatMap((descriptor) => descriptor.types?.codecTypes?.codecDescriptors ?? []);\n}\nfunction extractCodecLookup(descriptors) {\n\tconst byId = /* @__PURE__ */ new Map();\n\tconst descriptorsById = /* @__PURE__ */ new Map();\n\tconst targetTypesById = /* @__PURE__ */ new Map();\n\tconst renderersById = /* @__PURE__ */ new Map();\n\tconst inputRenderersById = /* @__PURE__ */ new Map();\n\tconst valueLiteralRenderersById = /* @__PURE__ */ new Map();\n\tconst owners = /* @__PURE__ */ new Map();\n\tfor (const descriptor of descriptors) {\n\t\tconst codecTypes = descriptor.types?.codecTypes;\n\t\tconst descriptorId = descriptor.id;\n\t\tfor (const codecDescriptor of codecTypes?.codecDescriptors ?? []) {\n\t\t\tassertUniqueCodecOwner({\n\t\t\t\tcodecId: codecDescriptor.codecId,\n\t\t\t\towners,\n\t\t\t\tdescriptorId,\n\t\t\t\tentityLabel: \"codec descriptor\",\n\t\t\t\tentityOwnershipLabel: \"codec descriptor provider\"\n\t\t\t});\n\t\t\towners.set(codecDescriptor.codecId, descriptorId);\n\t\t\tdescriptorsById.set(codecDescriptor.codecId, codecDescriptor);\n\t\t\tif (Array.isArray(codecDescriptor.targetTypes)) targetTypesById.set(codecDescriptor.codecId, codecDescriptor.targetTypes);\n\t\t\tif (typeof codecDescriptor.renderOutputType === \"function\") renderersById.set(codecDescriptor.codecId, codecDescriptor.renderOutputType);\n\t\t\tif (typeof codecDescriptor.renderInputType === \"function\") inputRenderersById.set(codecDescriptor.codecId, codecDescriptor.renderInputType);\n\t\t\tif (typeof codecDescriptor.renderValueLiteral === \"function\") valueLiteralRenderersById.set(codecDescriptor.codecId, codecDescriptor.renderValueLiteral);\n\t\t\tif (!byId.has(codecDescriptor.codecId)) if (codecDescriptor.isParameterized) try {\n\t\t\t\tconst representative = codecDescriptor.factory({})({ name: `<lookup:${codecDescriptor.codecId}>` });\n\t\t\t\tbyId.set(codecDescriptor.codecId, representative);\n\t\t\t} catch {}\n\t\t\telse {\n\t\t\t\tconst representative = codecDescriptor.factory(void 0)({ name: `<lookup:${codecDescriptor.codecId}>` });\n\t\t\t\tbyId.set(codecDescriptor.codecId, representative);\n\t\t\t}\n\t\t}\n\t}\n\treturn {\n\t\tget: (id) => byId.get(id),\n\t\tforCodecRef(ref) {\n\t\t\treturn materializeCodec(resolveCodecDescriptorOrThrow((id) => descriptorsById.get(id), ref, CONTRACT_CODEC_DESCRIPTOR_MISSING), ref, { name: `<ref:${ref.codecId}>` });\n\t\t},\n\t\tforColumn: () => void 0,\n\t\ttargetTypesFor: (id) => targetTypesById.get(id),\n\t\trenderOutputTypeFor: (id, params) => renderersById.get(id)?.(params),\n\t\trenderInputTypeFor: (id, params) => inputRenderersById.get(id)?.(params),\n\t\trenderValueLiteralFor: (id, value, side) => valueLiteralRenderersById.get(id)?.(value, side),\n\t\tdescriptorFor: (id) => descriptorsById.get(id)\n\t};\n}\nfunction assembleExtensionContracts(extensions) {\n\tconst result = /* @__PURE__ */ new Map();\n\tfor (const ext of extensions) {\n\t\tif (ext.contractSpace === void 0) continue;\n\t\tresult.set(ext.id, ext.contractSpace.contractJson);\n\t}\n\treturn result;\n}\nfunction readDeclaredDependencyIds(descriptor) {\n\tconst packs = descriptor.contractSpace?.contractJson?.extensions;\n\tif (packs === null || typeof packs !== \"object\") return [];\n\treturn Object.keys(packs);\n}\n/**\n* Builds a dependency-respecting load order for the given extension descriptors\n* using Kahn's topological sort algorithm. Dependencies (packs declared in\n* `contractSpace.contractJson.extensions`) are placed before the extensions\n* that depend on them.\n*\n* Throws if the dependency graph contains a cycle, with an error message that\n* names every extension involved in the cycle.\n*\n* Throws if any extension declares a dependency on a pack ID that is not present\n* in the provided list — add the missing pack to the `extensions` list to\n* resolve the error.\n*/\nfunction buildExtensionLoadOrder(extensions) {\n\tif (extensions.length === 0) return [];\n\tconst idSet = new Set(extensions.map((e) => e.id));\n\tconst inDegree = /* @__PURE__ */ new Map();\n\tconst dependents = /* @__PURE__ */ new Map();\n\tfor (const ext of extensions) {\n\t\tif (!inDegree.has(ext.id)) inDegree.set(ext.id, 0);\n\t\tif (!dependents.has(ext.id)) dependents.set(ext.id, []);\n\t}\n\tfor (const ext of extensions) for (const depId of readDeclaredDependencyIds(ext)) {\n\t\tif (!idSet.has(depId)) throw new InternalError(`Extension \"${ext.id}\" declares a dependency on \"${depId}\", but \"${depId}\" is not in the provided extension set. Add the missing space to extensions.`);\n\t\tinDegree.set(ext.id, (inDegree.get(ext.id) ?? 0) + 1);\n\t\tconst list = dependents.get(depId);\n\t\tif (list !== void 0) list.push(ext.id);\n\t}\n\tconst queue = [];\n\tfor (const [id, deg] of inDegree) if (deg === 0) queue.push(id);\n\tqueue.sort();\n\tconst result = [];\n\twhile (queue.length > 0) {\n\t\tconst id = queue.shift();\n\t\tif (id === void 0) break;\n\t\tresult.push(id);\n\t\tconst children = dependents.get(id) ?? [];\n\t\tchildren.sort();\n\t\tfor (const childId of children) {\n\t\t\tconst newDeg = (inDegree.get(childId) ?? 1) - 1;\n\t\t\tinDegree.set(childId, newDeg);\n\t\t\tif (newDeg === 0) queue.push(childId);\n\t\t}\n\t}\n\tif (result.length < extensions.length) throw new InternalError(`Extension dependency cycle detected. Cycle members: ${extensions.map((e) => e.id).filter((id) => !result.includes(id)).sort().map((id) => `\"${id}\"`).join(\", \")}.`);\n\treturn result;\n}\nfunction createControlStack(input) {\n\tconst { family, target, adapter, driver, extensions = [] } = input;\n\tconst orderedIds = buildExtensionLoadOrder(extensions);\n\tconst extensionById = new Map(extensions.map((ext) => [ext.id, ext]));\n\tconst orderedExtensions = orderedIds.map((id) => extensionById.get(id)).filter((ext) => ext !== void 0);\n\tconst allDescriptors = [\n\t\tfamily,\n\t\ttarget,\n\t\t...adapter ? [adapter] : [],\n\t\t...orderedExtensions\n\t];\n\tconst codecLookup = extractCodecLookup(allDescriptors);\n\tconst authoringContributions = assembleAuthoringContributions(allDescriptors);\n\tconst codecDescriptors = collectCodecDescriptors(allDescriptors);\n\tconst dataTypes = assembleDataTypes(allDescriptors);\n\tenforceDataTypeInvariants({\n\t\tlookup: dataTypes.lookup,\n\t\tdeclaredTypes: dataTypes.declared,\n\t\tcodecs: allDescriptors.flatMap((descriptor) => (descriptor.types?.codecTypes?.codecDescriptors ?? []).map((codecDescriptor) => ({\n\t\t\tcodecId: codecDescriptor.codecId,\n\t\t\tdataType: codecDescriptor.dataType,\n\t\t\tcontributedBy: descriptor.id\n\t\t}))),\n\t\tauthoringEntries: allDescriptors.flatMap((descriptor) => Object.entries(descriptor.authoring?.dataTypes ?? {}).map(([key, entry]) => ({\n\t\t\tkey,\n\t\t\tentry,\n\t\t\tcontributedBy: descriptor.id\n\t\t})))\n\t});\n\treturn {\n\t\tfamily,\n\t\ttarget,\n\t\tadapter,\n\t\tdriver,\n\t\textensions: orderedExtensions,\n\t\textensionContracts: assembleExtensionContracts(orderedExtensions),\n\t\tcodecTypeImports: extractCodecTypeImports(allDescriptors),\n\t\tqueryOperationTypeImports: extractQueryOperationTypeImports(allDescriptors),\n\t\textensionIds: extractComponentIds(family, target, adapter, orderedExtensions),\n\t\tcodecLookup,\n\t\tcodecDescriptors,\n\t\tdataTypeLookup: dataTypes.lookup,\n\t\taggregateDescriptors: collectAggregateDescriptors(allDescriptors),\n\t\tauthoringContributions,\n\t\tscalarTypes: [...collectScalarTypeConstructors(authoringContributions.type).keys()],\n\t\tcontrolMutationDefaults: assembleControlMutationDefaults(allDescriptors),\n\t\tcapabilities: mergeCapabilityMatrices({}, [\n\t\t\ttarget,\n\t\t\t...adapter ? [adapter] : [],\n\t\t\t...orderedExtensions\n\t\t])\n\t};\n}\n//#endregion\n//#region src/control/order-issues-by-dependencies.ts\nconst PATH_DELIMITER = \" \";\nfunction pathKey(path) {\n\treturn path.join(PATH_DELIMITER);\n}\n/**\n* Whether an issue's op builds its subject up (create or alter) rather than\n* only tearing it down. The differ sets `expected` on every create (`not-found`)\n* and alter (`not-equal`) issue and leaves it absent on a pure drop\n* (`not-expected`). This is the single signal the ordering law reads for edge\n* direction — never `reason`.\n*/\nfunction buildsUp(issue) {\n\treturn issue.expected !== void 0;\n}\n/**\n* The nearest strict-ancestor bucket of `path` — the surviving parent entity a\n* child is contained by. Walks the path's proper prefixes from longest to\n* shortest and returns the first prefix that maps to a bucket; a gap (a prefix\n* with no bucket) is skipped so containment always attaches to the closest real\n* parent.\n*\n* Returns a list because a path prefix can be shared by two siblings of\n* different `nodeKind` (a role and a namespace named alike); linking the child\n* to every candidate over-constrains safely (the extra edge points at a same-\n* direction op and never forms a cycle, since a parent never depends on its\n* child) rather than risk picking the wrong one.\n*/\nfunction nearestAncestors(path, byPath) {\n\tfor (let end = path.length - 1; end >= 1; end -= 1) {\n\t\tconst bucket = byPath.get(pathKey(path.slice(0, end)));\n\t\tif (bucket !== void 0) return bucket;\n\t}\n\treturn [];\n}\n/**\n* Orders schema-diff issues so that every dependency's op precedes its\n* dependent on the way up and follows it on the way down, breaking ties\n* deterministically by path.\n*\n* Edges come from two sources:\n* - **`dependsOn` cross-links** — the resolved issue-to-issue paths the differ\n* mirrors onto each issue (a node's declared structural prerequisites). A\n* path that resolves to no issue in this list is skipped (the dependency is\n* satisfied by reality); a path shared by two same-id/different-kind siblings\n* links to every match, over-constraining safely.\n* - **containment** — every issue depends on its nearest strict-ancestor issue\n* (a child entity on the parent entity that owns it). Subtree coalescing has\n* already removed the descendants of a whole create/drop, so this only links\n* the parent/child pairs that legitimately survive together.\n*\n* The ordering law reads each dependent's presence for direction: an issue that\n* builds up (`expected` present — a create or alter) needs its dependency\n* first; a pure drop needs its dependent removed first, so the edge reverses.\n* The graph is a DAG by construction (dependencies point from dependents to\n* their prerequisites, and prerequisites never point back), so a cycle is a\n* derivation or authoring bug: the topological sort asserts acyclicity and\n* throws, naming the issues it could not place.\n*/\nfunction orderIssuesByDependencies(issues) {\n\tif (issues.length <= 1) return issues;\n\tconst nodes = issues.map((issue) => ({\n\t\tissue,\n\t\tkey: pathKey(issue.path),\n\t\tbuildsUp: buildsUp(issue),\n\t\toutgoing: /* @__PURE__ */ new Set(),\n\t\tinDegree: 0\n\t}));\n\tconst nodesByPath = /* @__PURE__ */ new Map();\n\tfor (const node of nodes) {\n\t\tconst bucket = nodesByPath.get(node.key);\n\t\tif (bucket === void 0) nodesByPath.set(node.key, [node]);\n\t\telse bucket.push(node);\n\t}\n\tconst addEdge = (before, after) => {\n\t\tif (before.outgoing.has(after)) return;\n\t\tbefore.outgoing.add(after);\n\t\tafter.inDegree += 1;\n\t};\n\tconst addDependency = (dependent, dependency) => {\n\t\tif (dependent === dependency) return;\n\t\tif (dependent.buildsUp) addEdge(dependency, dependent);\n\t\telse addEdge(dependent, dependency);\n\t};\n\tfor (const node of nodes) {\n\t\tfor (const targetPath of node.issue.dependsOn ?? []) for (const target of nodesByPath.get(pathKey(targetPath)) ?? []) addDependency(node, target);\n\t\tfor (const ancestor of nearestAncestors(node.issue.path, nodesByPath)) addDependency(node, ancestor);\n\t}\n\tconst ready = nodes.filter((node) => node.inDegree === 0);\n\tconst order = [];\n\twhile (ready.length > 0) {\n\t\tlet best;\n\t\tfor (const candidate of ready) if (best === void 0 || candidate.key < best.key) best = candidate;\n\t\tif (best === void 0) break;\n\t\tready.splice(ready.indexOf(best), 1);\n\t\torder.push(best);\n\t\tfor (const next of best.outgoing) {\n\t\t\tnext.inDegree -= 1;\n\t\t\tif (next.inDegree === 0) ready.push(next);\n\t\t}\n\t}\n\tif (order.length !== nodes.length) {\n\t\tconst placed = new Set(order);\n\t\tthrow new InternalError(`orderIssuesByDependencies: dependency cycle among schema-diff issues (unresolved: ${nodes.filter((node) => !placed.has(node)).map((node) => node.issue.path.join(\"/\")).join(\", \")})`);\n\t}\n\treturn order.map((node) => node.issue);\n}\n//#endregion\n//#region src/control/schema-diff.ts\n/**\n* The outcome an issue represents, discriminated by presence rather than any\n* stored field — the single source of truth every consumer reads. An issue\n* always carries at least one side by construction; neither is a malformed\n* issue and throws.\n*/\nfunction issueOutcome(issue) {\n\tconst hasExpected = issue.expected !== void 0;\n\tconst hasActual = issue.actual !== void 0;\n\tif (hasExpected && hasActual) return \"not-equal\";\n\tif (hasExpected) return \"not-found\";\n\tif (hasActual) return \"not-expected\";\n\tthrow new InternalError(`issueOutcome: issue at \"${issue.path.join(\"/\")}\" carries neither an expected nor an actual node`);\n}\nfunction siblingKey(node) {\n\treturn JSON.stringify([node.nodeKind, node.id]);\n}\nfunction insertNode(map, node) {\n\tconst key = siblingKey(node);\n\tif (map.has(key)) throw new InternalError(`diffSchemas: duplicate id among siblings: ${node.nodeKind}/${node.id}`);\n\tmap.set(key, node);\n}\nfunction emitMissingSubtree(node, parentPath) {\n\tconst path = [...parentPath, node.id];\n\treturn [{\n\t\tpath,\n\t\texpected: node\n\t}, ...node.children().flatMap((c) => emitMissingSubtree(c, path))];\n}\nfunction emitExtraSubtree(node, parentPath) {\n\tconst path = [...parentPath, node.id];\n\treturn [{\n\t\tpath,\n\t\tactual: node\n\t}, ...node.children().flatMap((c) => emitExtraSubtree(c, path))];\n}\n/**\n* Diff two schema trees starting from their roots.\n*\n* The differ is **total**: every node-level difference is reported. An unmatched\n* non-leaf node emits its own issue and descends, emitting an issue for every\n* node in the missing/extra subtree. Coalescing a parent change over its\n* children is the planner's responsibility. Ownership filtering (dropping `extra`\n* issues in namespaces a contract doesn't own) is the caller's responsibility.\n*/\nfunction diffSchemas(expected, actual) {\n\treturn mirrorDependsOnOntoIssues(diffPair(expected, actual, []));\n}\nfunction schemaNodeRefKey(ref) {\n\treturn JSON.stringify(ref.map((step) => step.id));\n}\nfunction issuePathKey(path) {\n\treturn JSON.stringify(path);\n}\nfunction terminalNodeKind(issue) {\n\treturn (issue.expected ?? issue.actual)?.nodeKind;\n}\n/**\n* Copies each issue's node's `dependsOn` refs onto the issue itself, as\n* issue-to-issue path references. A ref is kept only when some emitted issue\n* sits at that exact path AND that issue's node `nodeKind` matches the ref's\n* last step — otherwise the ref is dropped (its target either didn't\n* change, or was never part of either tree; either way the dependency is\n* satisfied by reality, not by an operation this diff will produce).\n*\n* The path index is a multimap: two siblings may share an `id` under\n* different `nodeKind`s (a role and a namespace named alike), so an id-path\n* alone is ambiguous. The ref's terminal `nodeKind` disambiguates — the ref\n* resolves only against a same-path issue whose own node carries that kind.\n*/\nfunction mirrorDependsOnOntoIssues(issues) {\n\tconst issuesByPath = /* @__PURE__ */ new Map();\n\tfor (const issue of issues) {\n\t\tconst key = issuePathKey(issue.path);\n\t\tconst bucket = issuesByPath.get(key);\n\t\tif (bucket === void 0) issuesByPath.set(key, [issue]);\n\t\telse bucket.push(issue);\n\t}\n\treturn issues.map((issue) => {\n\t\tconst refs = (issue.expected ?? issue.actual)?.dependsOn;\n\t\tif (refs === void 0 || refs.length === 0) return issue;\n\t\tconst dependsOn = refs.flatMap((ref) => {\n\t\t\tconst lastStep = ref[ref.length - 1];\n\t\t\tif (lastStep === void 0) return [];\n\t\t\tif (!(issuesByPath.get(schemaNodeRefKey(ref)) ?? []).some((c) => terminalNodeKind(c) === lastStep.nodeKind)) return [];\n\t\t\treturn [ref.map((step) => step.id)];\n\t\t});\n\t\tif (dependsOn.length === 0) return issue;\n\t\treturn {\n\t\t\t...issue,\n\t\t\tdependsOn\n\t\t};\n\t});\n}\nfunction diffPair(expected, actual, parentPath) {\n\tconst path = [...parentPath, expected.id];\n\tconst issues = [];\n\tif (!expected.isEqualTo(actual)) issues.push({\n\t\tpath,\n\t\texpected,\n\t\tactual\n\t});\n\tissues.push(...diffChildren(expected.children(), actual.children(), path));\n\treturn issues;\n}\n/**\n* Align one level of nodes by `(nodeKind, id)`; emit issues in input order\n* and recurse.\n*\n* A missing node emits one issue for itself and one for every node in its\n* subtree (total descent). Same for extra nodes. A matched pair recurses via\n* `diffPair`.\n*/\nfunction diffChildren(expected, actual, parentPath) {\n\tconst expectedMap = /* @__PURE__ */ new Map();\n\tfor (const node of expected) insertNode(expectedMap, node);\n\tconst actualMap = /* @__PURE__ */ new Map();\n\tfor (const node of actual) insertNode(actualMap, node);\n\tconst issues = [];\n\tfor (const [key, expectedNode] of expectedMap) {\n\t\tconst actualNode = actualMap.get(key);\n\t\tif (actualNode === void 0) issues.push(...emitMissingSubtree(expectedNode, parentPath));\n\t\telse issues.push(...diffPair(expectedNode, actualNode, parentPath));\n\t}\n\tfor (const [key, actualNode] of actualMap) if (!expectedMap.has(key)) issues.push(...emitExtraSubtree(actualNode, parentPath));\n\treturn issues;\n}\n/**\n* The result of diffing a contract's expected schema against the introspected\n* actual schema: one node-typed issue list. Carries no verdict, verification\n* tree, or counts — those are the verifier's own presentation, built from the\n* same underlying comparison.\n*\n* `TNode` is the concrete schema-IR node the issues carry; it defaults to\n* `DiffableNode`, so this is purely additive — a caller that wants the\n* concrete node opts in (the Postgres planner uses the concrete node type),\n* everyone else keeps the default unchanged.\n*/\nvar SchemaDiff = class SchemaDiff {\n\tissues;\n\tconstructor(issues) {\n\t\tthis.issues = issues;\n\t}\n\t/** Returns a new `SchemaDiff` narrowed to the issues `keep` returns true for. */\n\tfilter(keep) {\n\t\treturn new SchemaDiff(this.issues.filter(keep));\n\t}\n};\n//#endregion\n//#region src/control/verifier-disposition.ts\n/**\n* Grades a target-neutral issue category against a control policy.\n*\n* - `observed` warns on everything.\n* - `tolerated` suppresses only an extra nested element (everything else fails).\n* - `external` suppresses every extra category and value drift (existence and\n* declared-shape divergences still fail).\n* - `managed` (and any other) fails.\n*/\nfunction dispositionForCategory(controlPolicy, category) {\n\tif (controlPolicy === \"observed\") return \"warn\";\n\tif (controlPolicy === \"tolerated\" && category === \"extraNestedElement\") return \"suppress\";\n\tif (controlPolicy === \"external\") {\n\t\tif (category === \"extraNestedElement\" || category === \"extraAuxiliary\" || category === \"extraTopLevelObject\" || category === \"valueDrift\") return \"suppress\";\n\t}\n\treturn \"fail\";\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 text of a tagged literal into its canonical body:\n* newlines become `\\n`, a blank first and last line are dropped, common leading\n* whitespace is removed, internal blank lines become empty, and no trailing\n* newline is added. Fails on a NUL character or when the result is larger than\n* 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\tif (lines.length > 0 && BLANK_LINE.test(lines[0]?.text ?? \"\")) lines.shift();\n\tif (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\tbody: 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-text offset of the first character that pushes the body 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}\n//#endregion\nexport { APP_SPACE_ID, CONTRACT_SNAPSHOTS_DIRNAME, SchemaDiff, SchemaTreeNode, TAGGED_LITERAL_MAX_BYTES, VERIFY_CODE_HASH_MISMATCH, VERIFY_CODE_MARKER_MISSING, VERIFY_CODE_SCHEMA_FAILURE, VERIFY_CODE_TARGET_MISMATCH, assembleAuthoringContributions, assembleAuthoringDataTypes, assembleControlMutationDefaults, assembleDataTypes, assertUniqueCodecOwner, buildExtensionLoadOrder, canonicalizeTaggedLiteralBody, contractSnapshotJsonSpecifier, contractSnapshotTypesSpecifier, createControlStack, describeTaggedLiteralFailure, diffSchemas, dispositionForCategory, enforceDataTypeInvariants, extractCodecLookup, extractCodecTypeImports, extractComponentIds, extractQueryOperationTypeImports, hasMigrations, hasOperationPreview, hasPslContractInfer, hasSchemaSubjectClassifier, hasSchemaView, issueOutcome, orderIssuesByDependencies, resolvePslBacktickEscapes, resolveTemplateTagEscapes, storageHashHex, timestampNowControlDescriptor };\n\n//# sourceMappingURL=control.mjs.map"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"declarations-D79GooqC-CcAbqTsq.mjs","names":["#state","#childSlots","#childOffsets","#slots","#childOffset","#segmentBefore","#segmentAfter","#separatorCount"],"sources":["../../../../1-framework/2-authoring/psl-parser/dist/declarations-D79GooqC.mjs"],"sourcesContent":["import { n as isTerminatedStringLiteral } from \"./tokenizer-CFsbtfFw.mjs\";\nimport { canonicalizeTaggedLiteralBody, resolvePslBacktickEscapes } from \"@internal/framework-components/control\";\n//#region src/syntax/red.ts\n/**\n* A token in the red tree. Unlike the green-layer {@link Token} (kind + text\n* only), a red token also carries its absolute `offset` within the source and a\n* link back to its `parent` {@link SyntaxNode}, so a cursor anchored on a token\n* can walk outward (parent, previous/next token, siblings) without re-scanning\n* from the document root.\n*/\nvar SyntaxToken = class {\n\tgreen;\n\tkind;\n\ttext;\n\toffset;\n\tparent;\n\t/** Position within the parent's children, enabling O(1) sibling navigation without rescanning the green layer. */\n\tindex;\n\tconstructor(green, offset, parent, index) {\n\t\tthis.green = green;\n\t\tthis.kind = green.kind;\n\t\tthis.text = green.text;\n\t\tthis.offset = offset;\n\t\tthis.parent = parent;\n\t\tthis.index = index;\n\t}\n\tget textLength() {\n\t\treturn this.text.length;\n\t}\n\tget endOffset() {\n\t\treturn this.offset + this.textLength;\n\t}\n\t/** Whether `offset` falls within this token, inclusive of both ends. */\n\tisInside(offset) {\n\t\treturn offset >= this.offset && offset <= this.endOffset;\n\t}\n\tisOutside(offset) {\n\t\treturn !this.isInside(offset);\n\t}\n\t/** The sibling element immediately after this token within its parent. */\n\tget nextSiblingOrToken() {\n\t\treturn this.parent.childAt(this.index + 1);\n\t}\n\t/** The sibling element immediately before this token within its parent. */\n\tget prevSiblingOrToken() {\n\t\treturn this.parent.childAt(this.index - 1);\n\t}\n\t/** The next token in document order, crossing node boundaries. */\n\tget nextToken() {\n\t\tfor (let el = climbingNext(this); el !== void 0; el = climbingNext(el)) {\n\t\t\tconst token = firstToken(el);\n\t\t\tif (token !== void 0) return token;\n\t\t}\n\t}\n\t/** The previous token in document order, crossing node boundaries. */\n\tget prevToken() {\n\t\tfor (let el = climbingPrev(this); el !== void 0; el = climbingPrev(el)) {\n\t\t\tconst token = lastToken(el);\n\t\t\tif (token !== void 0) return token;\n\t\t}\n\t}\n};\nvar TokenAtOffset = class TokenAtOffset {\n\t#state;\n\tconstructor(state) {\n\t\tthis.#state = state;\n\t}\n\tstatic none() {\n\t\treturn new TokenAtOffset({ kind: \"none\" });\n\t}\n\tstatic single(token) {\n\t\treturn new TokenAtOffset({\n\t\t\tkind: \"single\",\n\t\t\ttoken\n\t\t});\n\t}\n\tstatic between(left, right) {\n\t\treturn new TokenAtOffset({\n\t\t\tkind: \"between\",\n\t\t\tleft,\n\t\t\tright\n\t\t});\n\t}\n\tget isEmpty() {\n\t\treturn this.#state.kind === \"none\";\n\t}\n\tget isBetween() {\n\t\treturn this.#state.kind === \"between\";\n\t}\n\tleftBiased() {\n\t\tswitch (this.#state.kind) {\n\t\t\tcase \"none\": return;\n\t\t\tcase \"single\": return this.#state.token;\n\t\t\tcase \"between\": return this.#state.left;\n\t\t}\n\t}\n\trightBiased() {\n\t\tswitch (this.#state.kind) {\n\t\t\tcase \"none\": return;\n\t\t\tcase \"single\": return this.#state.token;\n\t\t\tcase \"between\": return this.#state.right;\n\t\t}\n\t}\n};\nvar SyntaxNode = class SyntaxNode {\n\tgreen;\n\toffset;\n\tparent;\n\t/** Position within the parent's children, enabling O(1) sibling navigation without rescanning the green layer. */\n\tindex;\n\t#childSlots;\n\t#childOffsets;\n\tconstructor(green, offset, parent, index) {\n\t\tthis.green = green;\n\t\tthis.offset = offset;\n\t\tthis.parent = parent;\n\t\tthis.index = index;\n\t}\n\t#slots() {\n\t\tlet slots = this.#childSlots;\n\t\tif (slots === void 0) {\n\t\t\tslots = new Array(this.green.children.length).fill(void 0);\n\t\t\tthis.#childSlots = slots;\n\t\t}\n\t\treturn slots;\n\t}\n\t#childOffset(index) {\n\t\tlet offsets = this.#childOffsets;\n\t\tif (offsets === void 0) {\n\t\t\toffsets = [];\n\t\t\tthis.#childOffsets = offsets;\n\t\t}\n\t\tfor (let known = offsets.length; known <= index; known++) {\n\t\t\tconst previousOffset = offsets[known - 1];\n\t\t\tconst previousChild = this.green.children[known - 1];\n\t\t\toffsets.push(previousOffset === void 0 || previousChild === void 0 ? this.offset : previousOffset + elementTextLength(previousChild));\n\t\t}\n\t\treturn offsets[index] ?? this.offset;\n\t}\n\tchildAt(index) {\n\t\tconst green = this.green.children[index];\n\t\tif (green === void 0) return void 0;\n\t\tconst slots = this.#slots();\n\t\tconst cached = slots[index];\n\t\tif (cached !== void 0) return cached;\n\t\tconst created = wrapElement(green, this.#childOffset(index), this, index);\n\t\tslots[index] = created;\n\t\treturn created;\n\t}\n\tget kind() {\n\t\treturn this.green.kind;\n\t}\n\tget textLength() {\n\t\treturn this.green.textLength;\n\t}\n\tget endOffset() {\n\t\treturn this.offset + this.textLength;\n\t}\n\t/** Whether `offset` falls within this node, inclusive of both ends. */\n\tisInside(offset) {\n\t\treturn offset >= this.offset && offset <= this.endOffset;\n\t}\n\tisOutside(offset) {\n\t\treturn !this.isInside(offset);\n\t}\n\tget firstChild() {\n\t\treturn this.childAt(0);\n\t}\n\tget lastChild() {\n\t\treturn this.childAt(this.green.children.length - 1);\n\t}\n\tget nextSibling() {\n\t\treturn this.parent?.childAt(this.index + 1);\n\t}\n\tget prevSibling() {\n\t\treturn this.parent?.childAt(this.index - 1);\n\t}\n\t/** The sibling element immediately after this node within its parent. */\n\tget nextSiblingOrToken() {\n\t\treturn this.nextSibling;\n\t}\n\t/** The sibling element immediately before this node within its parent. */\n\tget prevSiblingOrToken() {\n\t\treturn this.prevSibling;\n\t}\n\t/** The first token in this subtree (depth-first), or `undefined` if empty. */\n\tget firstToken() {\n\t\treturn firstToken(this);\n\t}\n\t/** The last token in this subtree (depth-first), or `undefined` if empty. */\n\tget lastToken() {\n\t\treturn lastToken(this);\n\t}\n\t*children() {\n\t\tconst count = this.green.children.length;\n\t\tfor (let index = 0; index < count; index++) {\n\t\t\tconst child = this.childAt(index);\n\t\t\tif (child !== void 0) yield child;\n\t\t}\n\t}\n\t*childNodes() {\n\t\tfor (const child of this.children()) if (child instanceof SyntaxNode) yield child;\n\t}\n\troot() {\n\t\tlet current = this;\n\t\tfor (const parent of this.ancestors()) current = parent;\n\t\treturn current;\n\t}\n\t*ancestors() {\n\t\tlet current = this.parent;\n\t\twhile (current) {\n\t\t\tyield current;\n\t\t\tcurrent = current.parent;\n\t\t}\n\t}\n\t/** The nearest match, testing this node itself before walking its ancestors. */\n\tfindAncestor(cast) {\n\t\tconst self = cast(this);\n\t\tif (self !== void 0) return self;\n\t\tfor (const ancestor of this.ancestors()) {\n\t\t\tconst result = cast(ancestor);\n\t\t\tif (result !== void 0) return result;\n\t\t}\n\t}\n\t*descendants() {\n\t\tconst stack = [this];\n\t\tfor (let el = stack.pop(); el !== void 0; el = stack.pop()) {\n\t\t\tyield el;\n\t\t\tif (el instanceof SyntaxNode) {\n\t\t\t\tconst children = Array.from(el.children());\n\t\t\t\tfor (let i = children.length - 1; i >= 0; i--) {\n\t\t\t\t\tconst child = children[i];\n\t\t\t\t\tif (child !== void 0) stack.push(child);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t*tokens() {\n\t\tfor (const el of this.descendants()) if (el instanceof SyntaxToken) yield el;\n\t}\n\t/**\n\t* The token(s) at `offset`. The between-two-tokens case (offset exactly on a\n\t* token seam) is represented explicitly so callers can left/right bias.\n\t*/\n\ttokenAtOffset(offset) {\n\t\treturn tokenAtOffsetOf(this, offset);\n\t}\n\t/**\n\t* The smallest element fully containing the range `[start, end]`. At a seam\n\t* (and for empty ranges) the left-hand element is preferred, matching\n\t* {@link containsOffset}'s inclusive span.\n\t*/\n\tcoveringElement(start, end) {\n\t\tlet result = this;\n\t\tfor (;;) {\n\t\t\tif (result instanceof SyntaxToken) return result;\n\t\t\tlet next;\n\t\t\tfor (const child of result.children()) if (containsRange(child, start, end)) {\n\t\t\t\tnext = child;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (next === void 0) return result;\n\t\t\tresult = next;\n\t\t}\n\t}\n};\nfunction elementTextLength(el) {\n\treturn el.type === \"token\" ? el.text.length : el.textLength;\n}\nfunction elementLength(el) {\n\treturn el instanceof SyntaxToken ? el.text.length : el.textLength;\n}\n/**\n* Whether `el` contains `offset`. The span is inclusive on both ends so a seam\n* offset touches both neighbours.\n*/\nfunction containsOffset(el, offset) {\n\tconst start = el.offset;\n\tconst len = elementLength(el);\n\treturn offset >= start && offset <= start + len;\n}\nfunction containsRange(el, start, end) {\n\tconst elStart = el.offset;\n\tconst len = elementLength(el);\n\treturn elStart <= start && end <= elStart + len;\n}\nfunction tokenAtOffsetOf(el, offset) {\n\tif (el instanceof SyntaxToken) return TokenAtOffset.single(el);\n\tlet left;\n\tlet right;\n\tfor (const child of el.children()) {\n\t\tif (!containsOffset(child, offset)) continue;\n\t\tif (left === void 0) left = child;\n\t\telse {\n\t\t\tright = child;\n\t\t\tbreak;\n\t\t}\n\t}\n\tif (left === void 0) return TokenAtOffset.none();\n\tif (right === void 0) return tokenAtOffsetOf(left, offset);\n\tconst leftToken = tokenAtOffsetOf(left, offset).rightBiased();\n\tconst rightToken = tokenAtOffsetOf(right, offset).leftBiased();\n\tif (leftToken !== void 0 && rightToken !== void 0) return TokenAtOffset.between(leftToken, rightToken);\n\tif (leftToken !== void 0) return TokenAtOffset.single(leftToken);\n\tif (rightToken !== void 0) return TokenAtOffset.single(rightToken);\n\treturn TokenAtOffset.none();\n}\nfunction firstToken(el) {\n\tif (el instanceof SyntaxToken) return el;\n\tfor (const child of el.children()) {\n\t\tconst token = firstToken(child);\n\t\tif (token !== void 0) return token;\n\t}\n}\nfunction lastToken(el) {\n\tif (el instanceof SyntaxToken) return el;\n\tconst children = Array.from(el.children());\n\tfor (let i = children.length - 1; i >= 0; i--) {\n\t\tconst child = children[i];\n\t\tif (child !== void 0) {\n\t\t\tconst token = lastToken(child);\n\t\t\tif (token !== void 0) return token;\n\t\t}\n\t}\n}\nfunction climbingNext(el) {\n\tlet current = el;\n\tfor (;;) {\n\t\tconst parent = current.parent;\n\t\tif (parent === void 0) return void 0;\n\t\tconst sibling = parent.childAt(current.index + 1);\n\t\tif (sibling !== void 0) return sibling;\n\t\tcurrent = parent;\n\t}\n}\nfunction climbingPrev(el) {\n\tlet current = el;\n\tfor (;;) {\n\t\tconst parent = current.parent;\n\t\tif (parent === void 0) return void 0;\n\t\tconst sibling = parent.childAt(current.index - 1);\n\t\tif (sibling !== void 0) return sibling;\n\t\tcurrent = parent;\n\t}\n}\nfunction wrapElement(green, offset, parent, index) {\n\tif (green.type === \"token\") return new SyntaxToken(green, offset, parent, index);\n\treturn new SyntaxNode(green, offset, parent, index);\n}\nfunction createSyntaxTree(green) {\n\treturn new SyntaxNode(green, 0, void 0, 0);\n}\n//#endregion\n//#region src/syntax/ast-helpers.ts\nfunction findChildToken(node, kind) {\n\tfor (const child of node.children()) if (!(child instanceof SyntaxNode) && child.kind === kind) return child;\n}\nfunction findFirstChild(node, cast) {\n\tfor (const child of node.childNodes()) {\n\t\tconst result = cast(child);\n\t\tif (result !== void 0) return result;\n\t}\n}\nfunction* filterChildren(node, cast) {\n\tfor (const child of node.childNodes()) {\n\t\tconst result = cast(child);\n\t\tif (result !== void 0) yield result;\n\t}\n}\nfunction any(...casts) {\n\treturn (node) => {\n\t\tfor (const cast of casts) {\n\t\t\tconst result = cast(node);\n\t\t\tif (result !== void 0) return result;\n\t\t}\n\t};\n}\n/**\n* Raw source text of a CST node, verbatim (quotes and brackets preserved). For\n* the decoded value of a string literal, decode it instead.\n*/\nfunction printSyntax(node) {\n\tlet text = \"\";\n\tfor (const token of node.tokens()) text += token.text;\n\treturn text;\n}\n//#endregion\n//#region src/syntax/ast/identifier.ts\nvar IdentifierAst = class IdentifierAst {\n\tsyntax;\n\tconstructor(syntax) {\n\t\tthis.syntax = syntax;\n\t}\n\ttoken() {\n\t\treturn findChildToken(this.syntax, \"Ident\");\n\t}\n\tname() {\n\t\treturn this.token()?.text;\n\t}\n\tstatic cast(node) {\n\t\treturn node.kind === \"Identifier\" ? new IdentifierAst(node) : void 0;\n\t}\n};\n//#endregion\n//#region src/syntax/ast/qualified-name.ts\n/** A namespace-qualified name, e.g. `pgvector.Vector` or `supabase:auth.User`. */\nvar QualifiedNameAst = class QualifiedNameAst {\n\tsyntax;\n\tconstructor(syntax) {\n\t\tthis.syntax = syntax;\n\t}\n\t#segmentBefore(boundary) {\n\t\tlet found;\n\t\tfor (const segment of filterChildren(this.syntax, IdentifierAst.cast)) {\n\t\t\tif (segment.syntax.offset >= boundary) break;\n\t\t\tfound = segment;\n\t\t}\n\t\treturn found;\n\t}\n\t#segmentAfter(boundary) {\n\t\tfor (const segment of filterChildren(this.syntax, IdentifierAst.cast)) if (segment.syntax.offset > boundary) return segment;\n\t}\n\t#separatorCount(kind) {\n\t\tlet count = 0;\n\t\tfor (const child of this.syntax.children()) if (!(child instanceof SyntaxNode) && child.kind === kind) count++;\n\t\treturn count;\n\t}\n\tcolon() {\n\t\treturn findChildToken(this.syntax, \"Colon\");\n\t}\n\tdot() {\n\t\treturn findChildToken(this.syntax, \"Dot\");\n\t}\n\tspace() {\n\t\tconst colon = this.colon();\n\t\tif (!colon) return void 0;\n\t\treturn this.#segmentBefore(colon.offset);\n\t}\n\tnamespace() {\n\t\tconst dot = this.dot();\n\t\tif (!dot) return void 0;\n\t\treturn this.#segmentBefore(dot.offset);\n\t}\n\tidentifier() {\n\t\tconst dot = this.dot();\n\t\tif (dot) return this.#segmentAfter(dot.offset);\n\t\tconst colon = this.colon();\n\t\tif (colon) return this.#segmentAfter(colon.offset);\n\t\treturn findFirstChild(this.syntax, IdentifierAst.cast);\n\t}\n\t/**\n\t* Every identifier segment, in source order. A bare `Vector` yields\n\t* `['Vector']`; a qualified `pgvector.Vector` yields `['pgvector', 'Vector']`.\n\t*/\n\tpath() {\n\t\tconst segments = [];\n\t\tfor (const segment of filterChildren(this.syntax, IdentifierAst.cast)) {\n\t\t\tconst text = segment.token()?.text;\n\t\t\tif (text !== void 0) segments.push(text);\n\t\t}\n\t\treturn segments;\n\t}\n\t/** True iff this is a single unqualified identifier whose text equals `name`. */\n\tisSimpleName(name) {\n\t\tif (this.dot() !== void 0 || this.colon() !== void 0) return false;\n\t\treturn this.identifier()?.token()?.text === name;\n\t}\n\t/**\n\t* Flags a malformed name with more qualifier segments than allowed (a second\n\t* `:`-space or a second `.`-namespace).\n\t*/\n\tisOverQualified() {\n\t\treturn this.#separatorCount(\"Dot\") > 1 || this.#separatorCount(\"Colon\") > 1;\n\t}\n\tstatic cast(node) {\n\t\treturn node.kind === \"QualifiedName\" ? new QualifiedNameAst(node) : void 0;\n\t}\n};\n//#endregion\n//#region src/syntax/ast/expressions.ts\nvar FunctionCallAst = class FunctionCallAst {\n\tsyntax;\n\tconstructor(syntax) {\n\t\tthis.syntax = syntax;\n\t}\n\t/** The qualified-name callee, or `undefined` when identifier segments sit directly under the node. */\n\tname() {\n\t\treturn findFirstChild(this.syntax, QualifiedNameAst.cast);\n\t}\n\t/**\n\t* The dotted call path, in source order. A bare `Vector(…)` yields\n\t* `['Vector']`; a namespace-qualified `pgvector.Vector(…)` yields\n\t* `['pgvector', 'Vector']`. Empty when the call carries no identifier.\n\t*/\n\tpath() {\n\t\tconst qualified = this.name();\n\t\tconst segments = [];\n\t\tfor (const segment of filterChildren(qualified?.syntax ?? this.syntax, IdentifierAst.cast)) {\n\t\t\tconst text = segment.token()?.text;\n\t\t\tif (text !== void 0) segments.push(text);\n\t\t}\n\t\treturn segments;\n\t}\n\tlparen() {\n\t\treturn findChildToken(this.syntax, \"LParen\");\n\t}\n\trparen() {\n\t\treturn findChildToken(this.syntax, \"RParen\");\n\t}\n\t*args() {\n\t\tyield* filterChildren(this.syntax, AttributeArgAst.cast);\n\t}\n\tstatic cast(node) {\n\t\treturn node.kind === \"FunctionCall\" ? new FunctionCallAst(node) : void 0;\n\t}\n};\nvar ArrayLiteralAst = class ArrayLiteralAst {\n\tsyntax;\n\tconstructor(syntax) {\n\t\tthis.syntax = syntax;\n\t}\n\tlbracket() {\n\t\treturn findChildToken(this.syntax, \"LBracket\");\n\t}\n\trbracket() {\n\t\treturn findChildToken(this.syntax, \"RBracket\");\n\t}\n\t*elements() {\n\t\tyield* filterChildren(this.syntax, castExpression);\n\t}\n\tstatic cast(node) {\n\t\treturn node.kind === \"ArrayLiteral\" ? new ArrayLiteralAst(node) : void 0;\n\t}\n};\nconst HEX = /^[0-9a-fA-F]+$/;\nfunction decodeFixedHex(raw, start, width) {\n\tif (start + width > raw.length) return void 0;\n\tconst hex = raw.slice(start, start + width);\n\tif (!HEX.test(hex)) return void 0;\n\treturn String.fromCharCode(Number.parseInt(hex, 16));\n}\nfunction decodeStringLiteral(raw) {\n\tlet out = \"\";\n\tlet i = 0;\n\twhile (i < raw.length) {\n\t\tconst ch = raw.charAt(i);\n\t\tif (ch !== \"\\\\\" || i + 1 >= raw.length) {\n\t\t\tout += ch;\n\t\t\ti++;\n\t\t\tcontinue;\n\t\t}\n\t\tconst next = raw.charAt(i + 1);\n\t\tswitch (next) {\n\t\t\tcase \"n\":\n\t\t\t\tout += \"\\n\";\n\t\t\t\ti += 2;\n\t\t\t\tcontinue;\n\t\t\tcase \"r\":\n\t\t\t\tout += \"\\r\";\n\t\t\t\ti += 2;\n\t\t\t\tcontinue;\n\t\t\tcase \"t\":\n\t\t\t\tout += \"\t\";\n\t\t\t\ti += 2;\n\t\t\t\tcontinue;\n\t\t\tcase \"\\\"\":\n\t\t\t\tout += \"\\\"\";\n\t\t\t\ti += 2;\n\t\t\t\tcontinue;\n\t\t\tcase \"'\":\n\t\t\t\tout += \"'\";\n\t\t\t\ti += 2;\n\t\t\t\tcontinue;\n\t\t\tcase \"\\\\\":\n\t\t\t\tout += \"\\\\\";\n\t\t\t\ti += 2;\n\t\t\t\tcontinue;\n\t\t\tcase \"x\": {\n\t\t\t\tconst decoded = decodeFixedHex(raw, i + 2, 2);\n\t\t\t\tif (decoded === void 0) {\n\t\t\t\t\tout += \"\\\\x\";\n\t\t\t\t\ti += 2;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tout += decoded;\n\t\t\t\ti += 4;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tcase \"u\": {\n\t\t\t\tconst decoded = decodeFixedHex(raw, i + 2, 4);\n\t\t\t\tif (decoded === void 0) {\n\t\t\t\t\tout += \"\\\\u\";\n\t\t\t\t\ti += 2;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tout += decoded;\n\t\t\t\ti += 6;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tdefault:\n\t\t\t\tout += `\\\\${next}`;\n\t\t\t\ti += 2;\n\t\t\t\tcontinue;\n\t\t}\n\t}\n\treturn out;\n}\nvar StringLiteralExprAst = class StringLiteralExprAst {\n\tsyntax;\n\tconstructor(syntax) {\n\t\tthis.syntax = syntax;\n\t}\n\ttoken() {\n\t\treturn findChildToken(this.syntax, \"StringLiteral\");\n\t}\n\tquote() {\n\t\tconst quote = this.token()?.text.charAt(0);\n\t\treturn quote === \"\\\"\" || quote === \"'\" || quote === \"`\" ? quote : void 0;\n\t}\n\t/**\n\t* The decoded string. A `\"` or `'` string resolves the usual escapes; a backtick string resolves\n\t* only `` \\` `` and `\\\\`, keeping every other backslash sequence as written.\n\t*/\n\tvalue() {\n\t\tconst tok = this.token();\n\t\tif (!tok) return void 0;\n\t\tconst raw = isTerminatedStringLiteral(tok.text) ? tok.text.slice(1, -1) : tok.text.slice(1);\n\t\treturn this.quote() === \"`\" ? resolvePslBacktickEscapes(raw) : decodeStringLiteral(raw);\n\t}\n\tstatic cast(node) {\n\t\treturn node.kind === \"StringLiteralExpr\" ? new StringLiteralExprAst(node) : void 0;\n\t}\n};\n/** `` tag`body` ``, `tag\"body\"`, or `tag'body'`: a qualified-name tag followed by a string literal. */\nvar TaggedLiteralExprAst = class TaggedLiteralExprAst {\n\tsyntax;\n\tconstructor(syntax) {\n\t\tthis.syntax = syntax;\n\t}\n\ttag() {\n\t\treturn findFirstChild(this.syntax, QualifiedNameAst.cast);\n\t}\n\t/** The tag without trivia, e.g. `pg.sql`. */\n\ttagName() {\n\t\tconst tag = this.tag();\n\t\tconst space = tag?.space()?.name();\n\t\tconst namespace = tag?.namespace()?.name();\n\t\treturn (space === void 0 ? \"\" : `${space}:`) + (namespace === void 0 ? \"\" : `${namespace}.`) + (tag?.identifier()?.name() ?? \"\");\n\t}\n\tliteral() {\n\t\treturn findFirstChild(this.syntax, StringLiteralExprAst.cast);\n\t}\n\tcanonicalization() {\n\t\treturn canonicalizeTaggedLiteralBody(this.literal()?.value() ?? \"\");\n\t}\n\t/** The canonical body shared with the TypeScript `sql` tag, or `undefined` when canonicalization fails. */\n\tbody() {\n\t\tconst result = this.canonicalization();\n\t\treturn result.ok ? result.body : void 0;\n\t}\n\tstatic cast(node) {\n\t\treturn node.kind === \"TaggedLiteral\" ? new TaggedLiteralExprAst(node) : void 0;\n\t}\n};\nvar NumberLiteralExprAst = class NumberLiteralExprAst {\n\tsyntax;\n\tconstructor(syntax) {\n\t\tthis.syntax = syntax;\n\t}\n\ttoken() {\n\t\treturn findChildToken(this.syntax, \"NumberLiteral\");\n\t}\n\tvalue() {\n\t\tconst tok = this.token();\n\t\tif (!tok) return void 0;\n\t\treturn Number(tok.text);\n\t}\n\tstatic cast(node) {\n\t\treturn node.kind === \"NumberLiteralExpr\" ? new NumberLiteralExprAst(node) : void 0;\n\t}\n};\nvar BooleanLiteralExprAst = class BooleanLiteralExprAst {\n\tsyntax;\n\tconstructor(syntax) {\n\t\tthis.syntax = syntax;\n\t}\n\ttoken() {\n\t\treturn findChildToken(this.syntax, \"Ident\");\n\t}\n\tvalue() {\n\t\tconst tok = this.token();\n\t\tif (!tok) return void 0;\n\t\tif (tok.text === \"true\") return true;\n\t\tif (tok.text === \"false\") return false;\n\t}\n\tstatic cast(node) {\n\t\treturn node.kind === \"BooleanLiteralExpr\" ? new BooleanLiteralExprAst(node) : void 0;\n\t}\n};\nvar ObjectLiteralExprAst = class ObjectLiteralExprAst {\n\tsyntax;\n\tconstructor(syntax) {\n\t\tthis.syntax = syntax;\n\t}\n\tlbrace() {\n\t\treturn findChildToken(this.syntax, \"LBrace\");\n\t}\n\trbrace() {\n\t\treturn findChildToken(this.syntax, \"RBrace\");\n\t}\n\t*fields() {\n\t\tyield* filterChildren(this.syntax, ObjectFieldAst.cast);\n\t}\n\tstatic cast(node) {\n\t\treturn node.kind === \"ObjectLiteralExpr\" ? new ObjectLiteralExprAst(node) : void 0;\n\t}\n};\nvar ObjectFieldAst = class ObjectFieldAst {\n\tsyntax;\n\tconstructor(syntax) {\n\t\tthis.syntax = syntax;\n\t}\n\tkey() {\n\t\tfor (const child of this.syntax.children()) {\n\t\t\tif (!(child instanceof SyntaxNode)) {\n\t\t\t\tif (child.kind === \"Colon\") break;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\treturn IdentifierAst.cast(child);\n\t\t}\n\t}\n\t/**\n\t* The field's logical key name, unquoted. An identifier key (`length:`) yields\n\t* its text; a string-literal key (`\"length\":`) yields the decoded string.\n\t* `undefined` when the field carries no key node.\n\t*/\n\tkeyName() {\n\t\tfor (const child of this.syntax.children()) {\n\t\t\tif (!(child instanceof SyntaxNode)) {\n\t\t\t\tif (child.kind === \"Colon\") break;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst identifier = IdentifierAst.cast(child);\n\t\t\tif (identifier) return identifier.token()?.text;\n\t\t\tconst stringKey = StringLiteralExprAst.cast(child);\n\t\t\tif (stringKey) return stringKey.value();\n\t\t\treturn;\n\t\t}\n\t}\n\tcolon() {\n\t\treturn findChildToken(this.syntax, \"Colon\");\n\t}\n\tvalue() {\n\t\tif (this.colon()) {\n\t\t\tlet pastColon = false;\n\t\t\tfor (const child of this.syntax.children()) {\n\t\t\t\tif (!(child instanceof SyntaxNode)) {\n\t\t\t\t\tif (child.kind === \"Colon\") pastColon = true;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (pastColon) {\n\t\t\t\t\tconst expr = castExpression(child);\n\t\t\t\t\tif (expr) return expr;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\treturn findFirstChild(this.syntax, castExpression);\n\t}\n\tstatic cast(node) {\n\t\treturn node.kind === \"ObjectField\" ? new ObjectFieldAst(node) : void 0;\n\t}\n};\nfunction castExpression(node) {\n\treturn FunctionCallAst.cast(node) ?? ArrayLiteralAst.cast(node) ?? StringLiteralExprAst.cast(node) ?? TaggedLiteralExprAst.cast(node) ?? NumberLiteralExprAst.cast(node) ?? BooleanLiteralExprAst.cast(node) ?? ObjectLiteralExprAst.cast(node) ?? IdentifierAst.cast(node);\n}\nvar AttributeArgAst = class AttributeArgAst {\n\tsyntax;\n\tconstructor(syntax) {\n\t\tthis.syntax = syntax;\n\t}\n\tname() {\n\t\tif (!this.colon()) return void 0;\n\t\treturn findFirstChild(this.syntax, IdentifierAst.cast);\n\t}\n\tcolon() {\n\t\treturn findChildToken(this.syntax, \"Colon\");\n\t}\n\tvalue() {\n\t\tif (this.colon()) {\n\t\t\tlet pastColon = false;\n\t\t\tfor (const child of this.syntax.children()) {\n\t\t\t\tif (!(child instanceof SyntaxNode)) {\n\t\t\t\t\tif (child.kind === \"Colon\") pastColon = true;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (pastColon) {\n\t\t\t\t\tconst expr = castExpression(child);\n\t\t\t\t\tif (expr) return expr;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\treturn findFirstChild(this.syntax, castExpression);\n\t}\n\tstatic cast(node) {\n\t\treturn node.kind === \"AttributeArg\" ? new AttributeArgAst(node) : void 0;\n\t}\n};\n//#endregion\n//#region src/syntax/ast/attributes.ts\nvar AttributeArgListAst = class AttributeArgListAst {\n\tsyntax;\n\tconstructor(syntax) {\n\t\tthis.syntax = syntax;\n\t}\n\tlparen() {\n\t\treturn findChildToken(this.syntax, \"LParen\");\n\t}\n\trparen() {\n\t\treturn findChildToken(this.syntax, \"RParen\");\n\t}\n\t*args() {\n\t\tyield* filterChildren(this.syntax, AttributeArgAst.cast);\n\t}\n\tstatic cast(node) {\n\t\treturn node.kind === \"AttributeArgList\" ? new AttributeArgListAst(node) : void 0;\n\t}\n};\nvar FieldAttributeAst = class FieldAttributeAst {\n\tsyntax;\n\tconstructor(syntax) {\n\t\tthis.syntax = syntax;\n\t}\n\tat() {\n\t\treturn findChildToken(this.syntax, \"At\");\n\t}\n\tname() {\n\t\treturn findFirstChild(this.syntax, QualifiedNameAst.cast);\n\t}\n\targList() {\n\t\treturn findFirstChild(this.syntax, AttributeArgListAst.cast);\n\t}\n\tstatic cast(node) {\n\t\treturn node.kind === \"FieldAttribute\" ? new FieldAttributeAst(node) : void 0;\n\t}\n};\nvar ModelAttributeAst = class ModelAttributeAst {\n\tsyntax;\n\tconstructor(syntax) {\n\t\tthis.syntax = syntax;\n\t}\n\tdoubleAt() {\n\t\treturn findChildToken(this.syntax, \"DoubleAt\");\n\t}\n\tname() {\n\t\treturn findFirstChild(this.syntax, QualifiedNameAst.cast);\n\t}\n\targList() {\n\t\treturn findFirstChild(this.syntax, AttributeArgListAst.cast);\n\t}\n\tstatic cast(node) {\n\t\treturn node.kind === \"ModelAttribute\" ? new ModelAttributeAst(node) : void 0;\n\t}\n};\n//#endregion\n//#region src/syntax/ast/type-annotation.ts\nvar TypeAnnotationAst = class TypeAnnotationAst {\n\tsyntax;\n\tconstructor(syntax) {\n\t\tthis.syntax = syntax;\n\t}\n\t/** The annotation's reference, doubling as the constructor callee when an {@link argList} follows. */\n\tname() {\n\t\treturn findFirstChild(this.syntax, QualifiedNameAst.cast);\n\t}\n\t/** Present when the annotation is a constructor (`Vector(1536)`) rather than a plain reference. */\n\targList() {\n\t\treturn findFirstChild(this.syntax, AttributeArgListAst.cast);\n\t}\n\tisConstructor() {\n\t\treturn this.argList() !== void 0;\n\t}\n\tlbracket() {\n\t\treturn findChildToken(this.syntax, \"LBracket\");\n\t}\n\trbracket() {\n\t\treturn findChildToken(this.syntax, \"RBracket\");\n\t}\n\tquestionMark() {\n\t\treturn findChildToken(this.syntax, \"Question\");\n\t}\n\tisList() {\n\t\treturn this.lbracket() !== void 0;\n\t}\n\tisOptional() {\n\t\treturn this.questionMark() !== void 0;\n\t}\n\tstatic cast(node) {\n\t\treturn node.kind === \"TypeAnnotation\" ? new TypeAnnotationAst(node) : void 0;\n\t}\n};\n//#endregion\n//#region src/syntax/ast/declarations.ts\nfunction castNamespaceMember(node) {\n\treturn ModelDeclarationAst.cast(node) ?? CompositeTypeDeclarationAst.cast(node) ?? GenericBlockDeclarationAst.cast(node);\n}\nvar DocumentAst = class DocumentAst {\n\tsyntax;\n\tconstructor(syntax) {\n\t\tthis.syntax = syntax;\n\t}\n\t*declarations() {\n\t\tyield* filterChildren(this.syntax, (node) => castNamespaceMember(node) ?? TypesBlockAst.cast(node) ?? NamespaceDeclarationAst.cast(node));\n\t}\n\tstatic cast(node) {\n\t\treturn node.kind === \"Document\" ? new DocumentAst(node) : void 0;\n\t}\n};\nvar ModelDeclarationAst = class ModelDeclarationAst {\n\tsyntax;\n\tconstructor(syntax) {\n\t\tthis.syntax = syntax;\n\t}\n\tkeyword() {\n\t\treturn findChildToken(this.syntax, \"Ident\");\n\t}\n\tname() {\n\t\treturn findFirstChild(this.syntax, IdentifierAst.cast);\n\t}\n\tlbrace() {\n\t\treturn findChildToken(this.syntax, \"LBrace\");\n\t}\n\trbrace() {\n\t\treturn findChildToken(this.syntax, \"RBrace\");\n\t}\n\t*fields() {\n\t\tyield* filterChildren(this.syntax, FieldDeclarationAst.cast);\n\t}\n\t*attributes() {\n\t\tyield* filterChildren(this.syntax, ModelAttributeAst.cast);\n\t}\n\t*members() {\n\t\tyield* filterChildren(this.syntax, (node) => FieldDeclarationAst.cast(node) ?? ModelAttributeAst.cast(node));\n\t}\n\tstatic cast(node) {\n\t\treturn node.kind === \"ModelDeclaration\" ? new ModelDeclarationAst(node) : void 0;\n\t}\n};\nvar CompositeTypeDeclarationAst = class CompositeTypeDeclarationAst {\n\tsyntax;\n\tconstructor(syntax) {\n\t\tthis.syntax = syntax;\n\t}\n\tkeyword() {\n\t\treturn findChildToken(this.syntax, \"Ident\");\n\t}\n\tname() {\n\t\treturn findFirstChild(this.syntax, IdentifierAst.cast);\n\t}\n\tlbrace() {\n\t\treturn findChildToken(this.syntax, \"LBrace\");\n\t}\n\trbrace() {\n\t\treturn findChildToken(this.syntax, \"RBrace\");\n\t}\n\t*fields() {\n\t\tyield* filterChildren(this.syntax, FieldDeclarationAst.cast);\n\t}\n\t*attributes() {\n\t\tyield* filterChildren(this.syntax, ModelAttributeAst.cast);\n\t}\n\t*members() {\n\t\tyield* filterChildren(this.syntax, (node) => FieldDeclarationAst.cast(node) ?? ModelAttributeAst.cast(node));\n\t}\n\tstatic cast(node) {\n\t\treturn node.kind === \"CompositeTypeDeclaration\" ? new CompositeTypeDeclarationAst(node) : void 0;\n\t}\n};\nvar NamespaceDeclarationAst = class NamespaceDeclarationAst {\n\tsyntax;\n\tconstructor(syntax) {\n\t\tthis.syntax = syntax;\n\t}\n\tkeyword() {\n\t\treturn findChildToken(this.syntax, \"Ident\");\n\t}\n\tname() {\n\t\treturn findFirstChild(this.syntax, IdentifierAst.cast);\n\t}\n\tlbrace() {\n\t\treturn findChildToken(this.syntax, \"LBrace\");\n\t}\n\trbrace() {\n\t\treturn findChildToken(this.syntax, \"RBrace\");\n\t}\n\t*declarations() {\n\t\tyield* filterChildren(this.syntax, castNamespaceMember);\n\t}\n\tstatic cast(node) {\n\t\treturn node.kind === \"Namespace\" ? new NamespaceDeclarationAst(node) : void 0;\n\t}\n};\nvar TypesBlockAst = class TypesBlockAst {\n\tsyntax;\n\tconstructor(syntax) {\n\t\tthis.syntax = syntax;\n\t}\n\tkeyword() {\n\t\treturn findChildToken(this.syntax, \"Ident\");\n\t}\n\tlbrace() {\n\t\treturn findChildToken(this.syntax, \"LBrace\");\n\t}\n\trbrace() {\n\t\treturn findChildToken(this.syntax, \"RBrace\");\n\t}\n\t*declarations() {\n\t\tyield* filterChildren(this.syntax, NamedTypeDeclarationAst.cast);\n\t}\n\tstatic cast(node) {\n\t\treturn node.kind === \"TypesBlock\" ? new TypesBlockAst(node) : void 0;\n\t}\n};\nvar GenericBlockDeclarationAst = class GenericBlockDeclarationAst {\n\tsyntax;\n\tconstructor(syntax) {\n\t\tthis.syntax = syntax;\n\t}\n\tkeyword() {\n\t\treturn findChildToken(this.syntax, \"Ident\");\n\t}\n\tname() {\n\t\treturn findFirstChild(this.syntax, IdentifierAst.cast);\n\t}\n\tlbrace() {\n\t\treturn findChildToken(this.syntax, \"LBrace\");\n\t}\n\trbrace() {\n\t\treturn findChildToken(this.syntax, \"RBrace\");\n\t}\n\t*entries() {\n\t\tyield* filterChildren(this.syntax, KeyValuePairAst.cast);\n\t}\n\t/** Field lines of a block parsed with the model-member grammar (a Prisma 7 `view`). Empty for every other generic block. */\n\t*fields() {\n\t\tyield* filterChildren(this.syntax, FieldDeclarationAst.cast);\n\t}\n\t*attributes() {\n\t\tyield* filterChildren(this.syntax, ModelAttributeAst.cast);\n\t}\n\t*members() {\n\t\tyield* filterChildren(this.syntax, (node) => KeyValuePairAst.cast(node) ?? ModelAttributeAst.cast(node));\n\t}\n\tstatic cast(node) {\n\t\treturn node.kind === \"GenericBlockDeclaration\" ? new GenericBlockDeclarationAst(node) : void 0;\n\t}\n};\nvar KeyValuePairAst = class KeyValuePairAst {\n\tsyntax;\n\tconstructor(syntax) {\n\t\tthis.syntax = syntax;\n\t}\n\tkey() {\n\t\treturn findFirstChild(this.syntax, IdentifierAst.cast);\n\t}\n\tequals() {\n\t\treturn findChildToken(this.syntax, \"Equals\");\n\t}\n\tvalue() {\n\t\tlet pastEquals = false;\n\t\tfor (const child of this.syntax.children()) {\n\t\t\tif (!(child instanceof SyntaxNode)) {\n\t\t\t\tif (child.kind === \"Equals\") pastEquals = true;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (pastEquals) {\n\t\t\t\tconst expr = castExpression(child);\n\t\t\t\tif (expr) return expr;\n\t\t\t}\n\t\t}\n\t}\n\t/** `@` attributes after the key or value (a Prisma 7 enum member's `@map`). */\n\t*attributes() {\n\t\tyield* filterChildren(this.syntax, FieldAttributeAst.cast);\n\t}\n\tstatic cast(node) {\n\t\treturn node.kind === \"KeyValuePair\" ? new KeyValuePairAst(node) : void 0;\n\t}\n};\nvar FieldDeclarationAst = class FieldDeclarationAst {\n\tsyntax;\n\tconstructor(syntax) {\n\t\tthis.syntax = syntax;\n\t}\n\tname() {\n\t\treturn findFirstChild(this.syntax, IdentifierAst.cast);\n\t}\n\ttypeAnnotation() {\n\t\treturn findFirstChild(this.syntax, TypeAnnotationAst.cast);\n\t}\n\t*attributes() {\n\t\tyield* filterChildren(this.syntax, FieldAttributeAst.cast);\n\t}\n\tstatic cast(node) {\n\t\treturn node.kind === \"FieldDeclaration\" ? new FieldDeclarationAst(node) : void 0;\n\t}\n};\nvar NamedTypeDeclarationAst = class NamedTypeDeclarationAst {\n\tsyntax;\n\tconstructor(syntax) {\n\t\tthis.syntax = syntax;\n\t}\n\tname() {\n\t\treturn findFirstChild(this.syntax, IdentifierAst.cast);\n\t}\n\tequals() {\n\t\treturn findChildToken(this.syntax, \"Equals\");\n\t}\n\ttypeAnnotation() {\n\t\treturn findFirstChild(this.syntax, TypeAnnotationAst.cast);\n\t}\n\t*attributes() {\n\t\tyield* filterChildren(this.syntax, FieldAttributeAst.cast);\n\t}\n\tstatic cast(node) {\n\t\treturn node.kind === \"NamedTypeDeclaration\" ? new NamedTypeDeclarationAst(node) : void 0;\n\t}\n};\n//#endregion\nexport { printSyntax as A, castExpression as C, filterChildren as D, any as E, SyntaxToken as M, TokenAtOffset as N, findChildToken as O, createSyntaxTree as P, TaggedLiteralExprAst as S, IdentifierAst as T, FunctionCallAst as _, KeyValuePairAst as a, ObjectLiteralExprAst as b, NamespaceDeclarationAst as c, AttributeArgListAst as d, FieldAttributeAst as f, BooleanLiteralExprAst as g, AttributeArgAst as h, GenericBlockDeclarationAst as i, SyntaxNode as j, findFirstChild as k, TypesBlockAst as l, ArrayLiteralAst as m, DocumentAst as n, ModelDeclarationAst as o, ModelAttributeAst as p, FieldDeclarationAst as r, NamedTypeDeclarationAst as s, CompositeTypeDeclarationAst as t, TypeAnnotationAst as u, NumberLiteralExprAst as v, QualifiedNameAst as w, StringLiteralExprAst as x, ObjectFieldAst as y };\n\n//# sourceMappingURL=declarations-D79GooqC.mjs.map"],"mappings":"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"}
@@ -1,83 +0,0 @@
1
- import { t as InternalError } from "./internal-error-ChGYPVpq-DhUD05u0.mjs";
2
- //#region ../../../1-framework/2-authoring/psl-parser/dist/diagnostic-Esyl8Qw1.mjs
3
- function diagnosticSource(sources, node) {
4
- return {
5
- sources,
6
- node,
7
- at(span) {
8
- const sourceFile = sources.sourceFileFor(node);
9
- const range = span === void 0 ? {
10
- start: sourceFile.positionAt(node.offset),
11
- end: sourceFile.positionAt(node.endOffset)
12
- } : sourceFile.pslSpanToRange(span);
13
- return {
14
- filename: sourceFile.filename,
15
- range
16
- };
17
- }
18
- };
19
- }
20
- function diagnosticFromSpan(diagnostic, source) {
21
- if (diagnostic.span === void 0) throw new InternalError("Owned PSL diagnostic has no span");
22
- return {
23
- code: diagnostic.code,
24
- message: diagnostic.message,
25
- ...source.at(diagnostic.span),
26
- ...diagnostic.data === void 0 ? {} : { data: diagnostic.data }
27
- };
28
- }
29
- function mapPslDiagnostics(diagnostics, sources) {
30
- return diagnostics.map(({ filename, code, message, range, data }) => ({
31
- code,
32
- message,
33
- sourceId: filename,
34
- span: sources.sourceFileNamed(filename).rangeToPslSpan(range),
35
- ...data === void 0 ? {} : { data }
36
- }));
37
- }
38
- function createPslDiagnosticCollector(sources) {
39
- const entries = [];
40
- return {
41
- get length() {
42
- return entries.length;
43
- },
44
- push(...diagnostics) {
45
- for (const diagnostic of diagnostics) entries.push({
46
- kind: "psl",
47
- diagnostic
48
- });
49
- },
50
- pushUnlocated(...diagnostics) {
51
- for (const diagnostic of diagnostics) entries.push({
52
- kind: "psl",
53
- diagnostic,
54
- omitSpan: true
55
- });
56
- },
57
- pushExternal(...diagnostics) {
58
- for (const diagnostic of diagnostics) entries.push({
59
- kind: "external",
60
- diagnostic
61
- });
62
- },
63
- toExternal() {
64
- return entries.flatMap((entry) => {
65
- if (entry.kind === "external") return [entry.diagnostic];
66
- if (entry.omitSpan) {
67
- const { code, message, filename, data } = entry.diagnostic;
68
- return [{
69
- code,
70
- message,
71
- sourceId: filename,
72
- ...data === void 0 ? {} : { data }
73
- }];
74
- }
75
- return mapPslDiagnostics([entry.diagnostic], sources);
76
- });
77
- }
78
- };
79
- }
80
- //#endregion
81
- export { mapPslDiagnostics as i, diagnosticFromSpan as n, diagnosticSource as r, createPslDiagnosticCollector as t };
82
-
83
- //# sourceMappingURL=diagnostic-Esyl8Qw1-Cd6SnWPN.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"diagnostic-Esyl8Qw1-Cd6SnWPN.mjs","names":[],"sources":["../../../../1-framework/2-authoring/psl-parser/dist/diagnostic-Esyl8Qw1.mjs"],"sourcesContent":["import { InternalError } from \"@internal/utils/internal-error\";\n//#region src/diagnostic.ts\nfunction diagnosticSource(sources, node) {\n\treturn {\n\t\tsources,\n\t\tnode,\n\t\tat(span) {\n\t\t\tconst sourceFile = sources.sourceFileFor(node);\n\t\t\tconst range = span === void 0 ? {\n\t\t\t\tstart: sourceFile.positionAt(node.offset),\n\t\t\t\tend: sourceFile.positionAt(node.endOffset)\n\t\t\t} : sourceFile.pslSpanToRange(span);\n\t\t\treturn {\n\t\t\t\tfilename: sourceFile.filename,\n\t\t\t\trange\n\t\t\t};\n\t\t}\n\t};\n}\nfunction diagnosticFromSpan(diagnostic, source) {\n\tif (diagnostic.span === void 0) throw new InternalError(\"Owned PSL diagnostic has no span\");\n\treturn {\n\t\tcode: diagnostic.code,\n\t\tmessage: diagnostic.message,\n\t\t...source.at(diagnostic.span),\n\t\t...diagnostic.data === void 0 ? {} : { data: diagnostic.data }\n\t};\n}\nfunction mapPslDiagnostics(diagnostics, sources) {\n\treturn diagnostics.map(({ filename, code, message, range, data }) => ({\n\t\tcode,\n\t\tmessage,\n\t\tsourceId: filename,\n\t\tspan: sources.sourceFileNamed(filename).rangeToPslSpan(range),\n\t\t...data === void 0 ? {} : { data }\n\t}));\n}\nfunction createPslDiagnosticCollector(sources) {\n\tconst entries = [];\n\treturn {\n\t\tget length() {\n\t\t\treturn entries.length;\n\t\t},\n\t\tpush(...diagnostics) {\n\t\t\tfor (const diagnostic of diagnostics) entries.push({\n\t\t\t\tkind: \"psl\",\n\t\t\t\tdiagnostic\n\t\t\t});\n\t\t},\n\t\tpushUnlocated(...diagnostics) {\n\t\t\tfor (const diagnostic of diagnostics) entries.push({\n\t\t\t\tkind: \"psl\",\n\t\t\t\tdiagnostic,\n\t\t\t\tomitSpan: true\n\t\t\t});\n\t\t},\n\t\tpushExternal(...diagnostics) {\n\t\t\tfor (const diagnostic of diagnostics) entries.push({\n\t\t\t\tkind: \"external\",\n\t\t\t\tdiagnostic\n\t\t\t});\n\t\t},\n\t\ttoExternal() {\n\t\t\treturn entries.flatMap((entry) => {\n\t\t\t\tif (entry.kind === \"external\") return [entry.diagnostic];\n\t\t\t\tif (entry.omitSpan) {\n\t\t\t\t\tconst { code, message, filename, data } = entry.diagnostic;\n\t\t\t\t\treturn [{\n\t\t\t\t\t\tcode,\n\t\t\t\t\t\tmessage,\n\t\t\t\t\t\tsourceId: filename,\n\t\t\t\t\t\t...data === void 0 ? {} : { data }\n\t\t\t\t\t}];\n\t\t\t\t}\n\t\t\t\treturn mapPslDiagnostics([entry.diagnostic], sources);\n\t\t\t});\n\t\t}\n\t};\n}\n//#endregion\nexport { mapPslDiagnostics as i, diagnosticFromSpan as n, diagnosticSource as r, createPslDiagnosticCollector as t };\n\n//# sourceMappingURL=diagnostic-Esyl8Qw1.mjs.map"],"mappings":";;AAEA,SAAS,iBAAiB,SAAS,MAAM;CACxC,OAAO;EACN;EACA;EACA,GAAG,MAAM;GACR,MAAM,aAAa,QAAQ,cAAc,IAAI;GAC7C,MAAM,QAAQ,SAAS,KAAK,IAAI;IAC/B,OAAO,WAAW,WAAW,KAAK,MAAM;IACxC,KAAK,WAAW,WAAW,KAAK,SAAS;GAC1C,IAAI,WAAW,eAAe,IAAI;GAClC,OAAO;IACN,UAAU,WAAW;IACrB;GACD;EACD;CACD;AACD;AACA,SAAS,mBAAmB,YAAY,QAAQ;CAC/C,IAAI,WAAW,SAAS,KAAK,GAAG,MAAM,IAAI,cAAc,kCAAkC;CAC1F,OAAO;EACN,MAAM,WAAW;EACjB,SAAS,WAAW;EACpB,GAAG,OAAO,GAAG,WAAW,IAAI;EAC5B,GAAG,WAAW,SAAS,KAAK,IAAI,CAAC,IAAI,EAAE,MAAM,WAAW,KAAK;CAC9D;AACD;AACA,SAAS,kBAAkB,aAAa,SAAS;CAChD,OAAO,YAAY,KAAK,EAAE,UAAU,MAAM,SAAS,OAAO,YAAY;EACrE;EACA;EACA,UAAU;EACV,MAAM,QAAQ,gBAAgB,QAAQ,CAAC,CAAC,eAAe,KAAK;EAC5D,GAAG,SAAS,KAAK,IAAI,CAAC,IAAI,EAAE,KAAK;CAClC,EAAE;AACH;AACA,SAAS,6BAA6B,SAAS;CAC9C,MAAM,UAAU,CAAC;CACjB,OAAO;EACN,IAAI,SAAS;GACZ,OAAO,QAAQ;EAChB;EACA,KAAK,GAAG,aAAa;GACpB,KAAK,MAAM,cAAc,aAAa,QAAQ,KAAK;IAClD,MAAM;IACN;GACD,CAAC;EACF;EACA,cAAc,GAAG,aAAa;GAC7B,KAAK,MAAM,cAAc,aAAa,QAAQ,KAAK;IAClD,MAAM;IACN;IACA,UAAU;GACX,CAAC;EACF;EACA,aAAa,GAAG,aAAa;GAC5B,KAAK,MAAM,cAAc,aAAa,QAAQ,KAAK;IAClD,MAAM;IACN;GACD,CAAC;EACF;EACA,aAAa;GACZ,OAAO,QAAQ,SAAS,UAAU;IACjC,IAAI,MAAM,SAAS,YAAY,OAAO,CAAC,MAAM,UAAU;IACvD,IAAI,MAAM,UAAU;KACnB,MAAM,EAAE,MAAM,SAAS,UAAU,SAAS,MAAM;KAChD,OAAO,CAAC;MACP;MACA;MACA,UAAU;MACV,GAAG,SAAS,KAAK,IAAI,CAAC,IAAI,EAAE,KAAK;KAClC,CAAC;IACF;IACA,OAAO,kBAAkB,CAAC,MAAM,UAAU,GAAG,OAAO;GACrD,CAAC;EACF;CACD;AACD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"parse-DN-F4ASD-ClJdPlzj.mjs","names":["#filename","#text","#lineStarts","#lineIndexAt","#lineStartAt","#lineEndAt","#sourcesByRoot","#stack","#tokenizer","#sourceFile","#diagnostics","#offset","#depth","#builder","#advance"],"sources":["../../../../1-framework/2-authoring/psl-parser/dist/parse-DN-F4ASD.mjs"],"sourcesContent":["import { n as isTerminatedStringLiteral, t as Tokenizer } from \"./tokenizer-CFsbtfFw.mjs\";\nimport { P as createSyntaxTree, n as DocumentAst } from \"./declarations-D79GooqC.mjs\";\nimport { UNSPECIFIED_PSL_NAMESPACE_ID } from \"@internal/framework-components/psl-ast\";\nimport { InternalError } from \"@internal/utils/internal-error\";\n//#region src/source-file.ts\nconst CARRIAGE_RETURN = 13;\nconst LINE_FEED = 10;\nvar SourceFile = class {\n\t#filename;\n\t#text;\n\t#lineStarts;\n\tconstructor(filename, text) {\n\t\tthis.#filename = filename;\n\t\tthis.#text = text;\n\t\tconst lineStarts = [0];\n\t\tfor (let offset = 0; offset < text.length; offset++) if (text.charCodeAt(offset) === LINE_FEED) lineStarts.push(offset + 1);\n\t\tthis.#lineStarts = lineStarts;\n\t}\n\tget filename() {\n\t\treturn this.#filename;\n\t}\n\tget text() {\n\t\treturn this.#text;\n\t}\n\tget length() {\n\t\treturn this.#text.length;\n\t}\n\tget lineCount() {\n\t\treturn this.#lineStarts.length;\n\t}\n\tlineStartOffsets() {\n\t\treturn this.#lineStarts;\n\t}\n\tlineStartOffset(line) {\n\t\tif (line <= 0) return 0;\n\t\treturn this.#lineStarts[line] ?? this.#text.length;\n\t}\n\tlineEndOffset(line) {\n\t\tif (line < 0) return 0;\n\t\tconst nextLineStart = this.#lineStarts[line + 1];\n\t\tif (nextLineStart === void 0) return this.#text.length;\n\t\tconst lineFeedOffset = nextLineStart - 1;\n\t\tconst carriageReturnOffset = lineFeedOffset - 1;\n\t\treturn this.#text.charCodeAt(carriageReturnOffset) === CARRIAGE_RETURN ? carriageReturnOffset : lineFeedOffset;\n\t}\n\tpositionAt(offset) {\n\t\tconst clamped = clamp(offset, 0, this.#text.length);\n\t\tconst line = this.#lineIndexAt(clamped);\n\t\treturn {\n\t\t\tline,\n\t\t\tcharacter: clamped - this.#lineStartAt(line)\n\t\t};\n\t}\n\toffsetAt(position) {\n\t\tconst line = clamp(position.line, 0, this.#lineStarts.length - 1);\n\t\tconst lineStart = this.#lineStartAt(line);\n\t\tconst lineEnd = this.#lineEndAt(line);\n\t\treturn clamp(lineStart + position.character, lineStart, lineEnd);\n\t}\n\toffsetToPslPosition(offset) {\n\t\tconst position = this.positionAt(offset);\n\t\treturn {\n\t\t\toffset,\n\t\t\tline: position.line + 1,\n\t\t\tcolumn: position.character + 1\n\t\t};\n\t}\n\trangeToPslSpan(range) {\n\t\treturn {\n\t\t\tstart: this.offsetToPslPosition(this.offsetAt(range.start)),\n\t\t\tend: this.offsetToPslPosition(this.offsetAt(range.end))\n\t\t};\n\t}\n\tpslSpanToRange(span) {\n\t\treturn {\n\t\t\tstart: this.positionAt(span.start.offset),\n\t\t\tend: this.positionAt(span.end.offset)\n\t\t};\n\t}\n\t#lineStartAt(line) {\n\t\treturn this.#lineStarts[line] ?? 0;\n\t}\n\t#lineEndAt(line) {\n\t\treturn line + 1 < this.#lineStarts.length ? this.#lineStartAt(line + 1) - 1 : this.#text.length;\n\t}\n\t#lineIndexAt(offset) {\n\t\tconst lineStarts = this.#lineStarts;\n\t\tlet low = 0;\n\t\tlet high = lineStarts.length - 1;\n\t\twhile (low < high) {\n\t\t\tconst mid = low + high + 1 >>> 1;\n\t\t\tif ((lineStarts[mid] ?? 0) <= offset) low = mid;\n\t\t\telse high = mid - 1;\n\t\t}\n\t\treturn low;\n\t}\n};\nvar PslSources = class PslSources {\n\t#sourcesByRoot = /* @__PURE__ */ new Map();\n\tconstructor(entries) {\n\t\tfor (const [root, sourceFile] of entries) this.#sourcesByRoot.set(root, sourceFile);\n\t}\n\t/**\n\t* A new registry uniting this one with `others` — e.g. the per-document\n\t* `PslSources` registries `parse()` returns for each member of a\n\t* multi-file schema, united into the one registry `buildSymbolTable` and\n\t* the interpreters expect.\n\t*/\n\tmerge(...others) {\n\t\treturn new PslSources([...this.#sourcesByRoot, ...others.flatMap((other) => [...other.#sourcesByRoot])]);\n\t}\n\tsourceFileNamed(filename) {\n\t\tlet match;\n\t\tfor (const sourceFile of this.#sourcesByRoot.values()) {\n\t\t\tif (sourceFile.filename !== filename) continue;\n\t\t\tif (match !== void 0 && match.text !== sourceFile.text) throw new InternalError(`Ambiguous PSL diagnostic filename \"${filename}\": registered sources have different text`);\n\t\t\tmatch = sourceFile;\n\t\t}\n\t\tif (match === void 0) throw new InternalError(`No SourceFile registered for PSL diagnostic filename \"${filename}\"`);\n\t\treturn match;\n\t}\n\tsourceFileFor(node) {\n\t\tconst root = node.root();\n\t\tconst sourceFile = this.#sourcesByRoot.get(root);\n\t\tif (sourceFile === void 0) throw new InternalError(\"No SourceFile registered for PSL syntax root\");\n\t\treturn sourceFile;\n\t}\n};\nfunction clamp(value, min, max) {\n\tif (value < min) return min;\n\tif (value > max) return max;\n\treturn value;\n}\n//#endregion\n//#region src/syntax/green.ts\nfunction greenToken(kind, text) {\n\treturn {\n\t\ttype: \"token\",\n\t\tkind,\n\t\ttext\n\t};\n}\nfunction greenNode(kind, children) {\n\tlet textLength = 0;\n\tfor (const child of children) textLength += child.type === \"token\" ? child.text.length : child.textLength;\n\treturn {\n\t\ttype: \"node\",\n\t\tkind,\n\t\tchildren,\n\t\ttextLength\n\t};\n}\n//#endregion\n//#region src/syntax/green-builder.ts\nvar GreenNodeBuilder = class {\n\t#stack = [];\n\tstartNode(kind) {\n\t\tthis.#stack.push({\n\t\t\tkind,\n\t\t\tchildren: []\n\t\t});\n\t}\n\ttoken(kind, text) {\n\t\tconst current = this.#stack.at(-1);\n\t\tif (!current) throw new InternalError(\"GreenNodeBuilder: token() called with no open node\");\n\t\tcurrent.children.push(greenToken(kind, text));\n\t}\n\tfinishNode() {\n\t\tconst completed = this.#stack.pop();\n\t\tif (!completed) throw new InternalError(\"GreenNodeBuilder: finishNode() called with no open node\");\n\t\tconst node = greenNode(completed.kind, completed.children);\n\t\tconst parent = this.#stack.at(-1);\n\t\tif (parent) parent.children.push(node);\n\t\treturn node;\n\t}\n};\n//#endregion\n//#region src/parse.ts\nconst TRIVIA_KINDS = /* @__PURE__ */ new Set([\n\t\"Whitespace\",\n\t\"Newline\",\n\t\"Comment\"\n]);\n/**\n* The fault-tolerant parser substrate the grammars drive. Trivia is flushed\n* into the enclosing open node, so every child node spans exactly its first\n* through last significant token.\n*/\nvar Cursor = class {\n\t#tokenizer;\n\t#sourceFile;\n\t#builder = new GreenNodeBuilder();\n\t#diagnostics = [];\n\t#offset = 0;\n\t#depth = 0;\n\tconstructor(filename, source) {\n\t\tthis.#tokenizer = new Tokenizer(source);\n\t\tthis.#sourceFile = new SourceFile(filename, source);\n\t}\n\tget diagnostics() {\n\t\treturn this.#diagnostics;\n\t}\n\tget sourceFile() {\n\t\treturn this.#sourceFile;\n\t}\n\tpeekKind(ahead = 0) {\n\t\treturn this.peekToken(ahead).kind;\n\t}\n\tpeekToken(ahead = 0) {\n\t\tlet rawIndex = 0;\n\t\tlet remaining = ahead;\n\t\tfor (;;) {\n\t\t\tconst token = this.#tokenizer.peek(rawIndex);\n\t\t\tif (token.kind === \"Eof\") return token;\n\t\t\tif (TRIVIA_KINDS.has(token.kind)) {\n\t\t\t\trawIndex++;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (remaining === 0) return token;\n\t\t\tremaining--;\n\t\t\trawIndex++;\n\t\t}\n\t}\n\t/** Span of the significant token `lookahead` positions ahead (`mark(0)` = the next). */\n\tmark(lookahead = 0) {\n\t\tlet rawIndex = 0;\n\t\tlet offset = this.#offset;\n\t\tlet remaining = lookahead;\n\t\tfor (;;) {\n\t\t\tconst token = this.#tokenizer.peek(rawIndex);\n\t\t\tif (token.kind === \"Eof\") return {\n\t\t\t\toffset,\n\t\t\t\tlength: token.text.length\n\t\t\t};\n\t\t\tif (!TRIVIA_KINDS.has(token.kind) && remaining === 0) return {\n\t\t\t\toffset,\n\t\t\t\tlength: token.text.length\n\t\t\t};\n\t\t\tif (!TRIVIA_KINDS.has(token.kind)) remaining--;\n\t\t\toffset += token.text.length;\n\t\t\trawIndex++;\n\t\t}\n\t}\n\t/**\n\t* Zero-width mark just past the last consumed significant token — anchors an\n\t* \"expected here\" diagnostic, e.g. the `{` missing after a declaration's name.\n\t*/\n\tmarkAfterLastToken() {\n\t\treturn {\n\t\t\toffset: this.#offset,\n\t\t\tlength: 0\n\t\t};\n\t}\n\tstartNode(kind) {\n\t\tif (this.#depth > 0) this.flushTrivia();\n\t\tthis.#builder.startNode(kind);\n\t\tthis.#depth++;\n\t}\n\tfinishNode() {\n\t\tthis.#depth--;\n\t\treturn this.#builder.finishNode();\n\t}\n\tbump() {\n\t\tthis.flushTrivia();\n\t\tconst token = this.#tokenizer.peek();\n\t\tif (token.kind === \"Eof\") return token;\n\t\tthis.#builder.token(token.kind, token.text);\n\t\tthis.#advance();\n\t\treturn token;\n\t}\n\trecoverToSyncPoint() {\n\t\tfor (;;) {\n\t\t\tconst token = this.#tokenizer.peek();\n\t\t\tif (token.kind === \"Eof\" || token.kind === \"Newline\" || token.kind === \"RBrace\") return;\n\t\t\tthis.#builder.token(token.kind, token.text);\n\t\t\tthis.#advance();\n\t\t}\n\t}\n\tflushTrivia() {\n\t\tfor (;;) {\n\t\t\tconst token = this.#tokenizer.peek();\n\t\t\tif (!TRIVIA_KINDS.has(token.kind)) return;\n\t\t\tthis.#builder.token(token.kind, token.text);\n\t\t\tthis.#advance();\n\t\t}\n\t}\n\tdiagnostic(code, message, mark) {\n\t\tconst start = mark.offset;\n\t\tconst end = start + mark.length;\n\t\tthis.#diagnostics.push({\n\t\t\tfilename: this.#sourceFile.filename,\n\t\t\tcode,\n\t\t\tmessage,\n\t\t\trange: {\n\t\t\t\tstart: this.#sourceFile.positionAt(start),\n\t\t\t\tend: this.#sourceFile.positionAt(end)\n\t\t\t}\n\t\t});\n\t}\n\t#advance() {\n\t\tthis.#offset += this.#tokenizer.next().text.length;\n\t}\n};\nfunction parseIdentifier(cursor) {\n\tcursor.startNode(\"Identifier\");\n\tcursor.bump();\n\tcursor.finishNode();\n}\n/**\n* Returns `undefined` when the next significant token does not start a\n* recognised expression, leaving recovery to the caller.\n*/\nfunction parseExpression(cursor) {\n\treturn parseStringLiteralExpr(cursor) ?? parseNumberLiteralExpr(cursor) ?? parseArrayLiteral(cursor) ?? parseObjectLiteralExpr(cursor) ?? parseTaggedLiteral(cursor) ?? parseFunctionCall(cursor) ?? parseBooleanLiteralExpr(cursor) ?? parseIdentifierExpr(cursor);\n}\n/** A string literal outside a tagged literal, where a backtick string is refused. */\nfunction parseStringLiteralExpr(cursor) {\n\tif (cursor.peekKind() !== \"StringLiteral\") return void 0;\n\tif (cursor.peekToken().text.startsWith(\"`\")) cursor.diagnostic(\"PSL_BACKTICK_STRING_REQUIRES_TAG\", \"A backtick string must follow a tag, as in tag`...`.\", cursor.mark());\n\treturn parseStringLiteral(cursor);\n}\nfunction parseStringLiteral(cursor) {\n\tconst stringMark = cursor.mark();\n\tconst text = cursor.peekToken().text;\n\tcursor.startNode(\"StringLiteralExpr\");\n\tcursor.bump();\n\tif (!isTerminatedStringLiteral(text)) cursor.diagnostic(\"PSL_UNTERMINATED_STRING\", \"Unterminated string literal\", stringMark);\n\treturn cursor.finishNode();\n}\nfunction parseNumberLiteralExpr(cursor) {\n\tif (cursor.peekKind() !== \"NumberLiteral\") return void 0;\n\tcursor.startNode(\"NumberLiteralExpr\");\n\tcursor.bump();\n\treturn cursor.finishNode();\n}\n/**\n* Parses a namespace-qualified name `[space ':']? Ident ('.' Ident)*`. The\n* caller guarantees a leading `Ident`.\n*\n* Parsing the whole chain up front lets a position decide\n* constructor-vs-reference by peeking exactly one token for `(`, with no scan of\n* the dotted chain's length.\n*/\nfunction parseQualifiedName(cursor) {\n\tcursor.startNode(\"QualifiedName\");\n\tparseIdentifier(cursor);\n\tparseQualifiedSegments(cursor, \"Colon\");\n\tparseQualifiedSegments(cursor, \"Dot\");\n\tcursor.finishNode();\n}\n/**\n* A well-formed name carries at most one colon space and one dot namespace, so\n* each separator past the first of its kind reports `PSL_INVALID_QUALIFIED_NAME`.\n* The separator is consumed regardless, keeping the lossless round-trip intact.\n*/\nfunction parseQualifiedSegments(cursor, separator) {\n\tlet seen = 0;\n\twhile (cursor.peekKind() === separator) {\n\t\tseen++;\n\t\tconst separatorMark = cursor.mark();\n\t\tcursor.bump();\n\t\tif (seen > 1) cursor.diagnostic(\"PSL_INVALID_QUALIFIED_NAME\", \"Qualified name has too many segments\", separatorMark);\n\t\tif (cursor.peekKind() === \"Ident\") parseIdentifier(cursor);\n\t\telse cursor.diagnostic(\"PSL_INVALID_QUALIFIED_NAME\", \"Qualified name is missing a name after the separator\", cursor.mark());\n\t}\n}\n/**\n* Whether the next tokens open a tagged literal: a bare `Ident` or a\n* namespace-qualified `Ident.Ident`, then a string. Trivia may sit anywhere\n* between them. Bounded like {@link isCallAhead}.\n*/\nfunction isTaggedLiteralAhead(cursor) {\n\tif (cursor.peekKind() !== \"Ident\") return false;\n\tif (cursor.peekKind(1) === \"StringLiteral\") return true;\n\treturn cursor.peekKind(1) === \"Dot\" && cursor.peekKind(2) === \"Ident\" && cursor.peekKind(3) === \"StringLiteral\";\n}\n/** Parses `` tag`body` ``, `tag\"body\"`, or `tag'body'`: a qualified name, then a string literal. */\nfunction parseTaggedLiteral(cursor) {\n\tif (!isTaggedLiteralAhead(cursor)) return void 0;\n\tcursor.startNode(\"TaggedLiteral\");\n\tparseQualifiedName(cursor);\n\tparseStringLiteral(cursor);\n\treturn cursor.finishNode();\n}\nfunction parseBooleanLiteralExpr(cursor) {\n\tif (cursor.peekKind() !== \"Ident\") return void 0;\n\tconst text = cursor.peekToken().text;\n\tif (text !== \"true\" && text !== \"false\") return void 0;\n\tcursor.startNode(\"BooleanLiteralExpr\");\n\tcursor.bump();\n\treturn cursor.finishNode();\n}\nfunction parseIdentifierExpr(cursor) {\n\tif (cursor.peekKind() !== \"Ident\") return void 0;\n\tcursor.startNode(\"Identifier\");\n\tcursor.bump();\n\treturn cursor.finishNode();\n}\nfunction parseArrayLiteral(cursor) {\n\tif (cursor.peekKind() !== \"LBracket\") return void 0;\n\tcursor.startNode(\"ArrayLiteral\");\n\tcursor.bump();\n\twhile (cursor.peekKind() !== \"RBracket\" && cursor.peekKind() !== \"Eof\") {\n\t\tif (!parseExpression(cursor)) break;\n\t\tif (cursor.peekKind() === \"Comma\") cursor.bump();\n\t\telse break;\n\t}\n\tif (cursor.peekKind() === \"RBracket\") cursor.bump();\n\treturn cursor.finishNode();\n}\nfunction parseObjectLiteralExpr(cursor) {\n\tif (cursor.peekKind() !== \"LBrace\") return void 0;\n\tconst braceMark = cursor.mark();\n\tcursor.startNode(\"ObjectLiteralExpr\");\n\tcursor.bump();\n\twhile (cursor.peekKind() !== \"RBrace\" && cursor.peekKind() !== \"Eof\") {\n\t\tparseObjectField(cursor);\n\t\tif (cursor.peekKind() === \"Comma\") cursor.bump();\n\t\telse if (cursor.peekKind() === \"Ident\") cursor.diagnostic(\"PSL_INVALID_OBJECT_LITERAL\", \"Expected \\\",\\\" between object-literal fields\", cursor.markAfterLastToken());\n\t\telse break;\n\t}\n\tif (cursor.peekKind() === \"RBrace\") cursor.bump();\n\telse cursor.diagnostic(\"PSL_INVALID_OBJECT_LITERAL\", \"Unterminated object literal\", braceMark);\n\treturn cursor.finishNode();\n}\nfunction parseObjectField(cursor) {\n\tcursor.startNode(\"ObjectField\");\n\tconst keyMark = cursor.mark();\n\tconst keyText = cursor.peekToken().text;\n\tif (cursor.peekKind() === \"Ident\") parseIdentifier(cursor);\n\telse if (cursor.peekKind() === \"StringLiteral\") parseStringLiteralExpr(cursor);\n\tif (cursor.peekKind() === \"Colon\") {\n\t\tcursor.bump();\n\t\tif (!parseExpression(cursor)) cursor.diagnostic(\"PSL_INVALID_OBJECT_LITERAL\", \"Expected a value after \\\":\\\"\", cursor.mark());\n\t} else {\n\t\tcursor.diagnostic(\"PSL_INVALID_OBJECT_LITERAL\", `Expected \":\" after \"${keyText}\"`, keyMark);\n\t\tif (!(cursor.peekKind() === \"Ident\" && cursor.peekKind(1) === \"Colon\")) parseExpression(cursor);\n\t}\n\treturn cursor.finishNode();\n}\n/**\n* Whether the next tokens open a call: a bare `Ident(` or a namespace-qualified\n* `Ident.Ident(`. The lookahead is deliberately bounded so a bare dotted\n* reference like `a.b` is not mistaken for a call, rather than scanning an\n* unbounded dotted chain ahead to find the paren.\n*/\nfunction isCallAhead(cursor) {\n\tif (cursor.peekKind() !== \"Ident\") return false;\n\tif (cursor.peekKind(1) === \"LParen\") return true;\n\treturn cursor.peekKind(1) === \"Dot\" && cursor.peekKind(2) === \"Ident\" && cursor.peekKind(3) === \"LParen\";\n}\n/**\n* Parses a function/constructor call — bare `autoincrement()` or qualified\n* `temporal.updatedAt()`. Returns `undefined` unless {@link isCallAhead}\n* confirms a trailing `(`, so the `parseExpression` chain falls through to the\n* boolean and bare-identifier forms.\n*/\nfunction parseFunctionCall(cursor) {\n\tif (!isCallAhead(cursor)) return void 0;\n\tcursor.startNode(\"FunctionCall\");\n\tparseQualifiedName(cursor);\n\tif (cursor.peekKind() === \"LParen\") parseParenArgs(cursor);\n\treturn cursor.finishNode();\n}\n/** Parses a parenthesised, comma-separated `AttributeArg` list into the currently open node. */\nfunction parseParenArgs(cursor) {\n\tcursor.bump();\n\twhile (cursor.peekKind() !== \"RParen\" && cursor.peekKind() !== \"Eof\") {\n\t\tparseAttributeArg(cursor);\n\t\tif (cursor.peekKind() === \"Comma\") cursor.bump();\n\t\telse break;\n\t}\n\tif (cursor.peekKind() === \"RParen\") cursor.bump();\n}\nfunction parseAttributeArg(cursor) {\n\tconst kind = cursor.peekKind();\n\tif (kind !== \"Ident\" && kind !== \"StringLiteral\" && kind !== \"NumberLiteral\" && kind !== \"LBracket\" && kind !== \"LBrace\") return;\n\tcursor.startNode(\"AttributeArg\");\n\tif (cursor.peekKind() === \"Ident\" && cursor.peekKind(1) === \"Colon\") {\n\t\tparseIdentifier(cursor);\n\t\tcursor.bump();\n\t}\n\tparseArgValue(cursor);\n\tcursor.finishNode();\n}\nfunction parseArgValue(cursor) {\n\tparseExpression(cursor);\n}\nfunction parseAttributeArgList(cursor) {\n\tcursor.startNode(\"AttributeArgList\");\n\tparseParenArgs(cursor);\n\treturn cursor.finishNode();\n}\nfunction parseAttribute(cursor) {\n\tconst isBlockAttribute = cursor.peekKind() === \"DoubleAt\";\n\tconst attributeMark = cursor.mark();\n\tcursor.startNode(isBlockAttribute ? \"ModelAttribute\" : \"FieldAttribute\");\n\tcursor.bump();\n\tif (cursor.peekKind() === \"Ident\") parseQualifiedName(cursor);\n\telse cursor.diagnostic(\"PSL_INVALID_ATTRIBUTE_SYNTAX\", \"Attribute name expected\", attributeMark);\n\tif (cursor.peekKind() === \"LParen\") parseAttributeArgList(cursor);\n\treturn cursor.finishNode();\n}\n/**\n* A type annotation: `QualifiedName (argList)? ([])? (?)?`, e.g.\n* `pgvector.Vector(1536)[]?`. When the field has no type, no node is emitted —\n* a missing type is the absence of a `TypeAnnotation`, not a zero-width one.\n*/\nfunction parseTypeAnnotation(cursor) {\n\tconst kind = cursor.peekKind();\n\tif (kind !== \"Ident\" && kind !== \"LBracket\" && kind !== \"Question\") return;\n\tcursor.startNode(\"TypeAnnotation\");\n\tif (cursor.peekKind() === \"Ident\") {\n\t\tparseQualifiedName(cursor);\n\t\tif (cursor.peekKind() === \"LParen\") parseAttributeArgList(cursor);\n\t}\n\tif (cursor.peekKind() === \"LBracket\") {\n\t\tcursor.bump();\n\t\tif (cursor.peekKind() === \"RBracket\") cursor.bump();\n\t}\n\tif (cursor.peekKind() === \"Question\") cursor.bump();\n\tcursor.finishNode();\n}\n/**\n* Parses a full PSL document. Never throws — malformed input yields diagnostics\n* and a recovered tree, not an exception.\n*/\nfunction parse(source, filename, options = {}) {\n\tconst cursor = new Cursor(filename, source);\n\tconst root = createSyntaxTree(parseDocument(cursor, options.grammar ?? \"psl\"));\n\tconst document = DocumentAst.cast(root) ?? new DocumentAst(root);\n\tconst sources = new PslSources([[document.syntax, cursor.sourceFile]]);\n\treturn {\n\t\tdocument,\n\t\tdiagnostics: cursor.diagnostics,\n\t\tsources\n\t};\n}\nfunction parseDocument(cursor, grammar) {\n\tcursor.startNode(\"Document\");\n\twhile (cursor.peekKind() !== \"Eof\") parseDeclaration(cursor, false, grammar);\n\tcursor.flushTrivia();\n\treturn cursor.finishNode();\n}\nconst RESERVED_BLOCK_KEYWORDS = /* @__PURE__ */ new Set([\n\t\"model\",\n\t\"namespace\",\n\t\"type\",\n\t\"types\"\n]);\nfunction keywordIs(cursor, keyword) {\n\treturn cursor.peekKind() === \"Ident\" && cursor.peekToken().text === keyword;\n}\n/**\n* Each alternative is a no-op on non-match, consuming nothing, so the\n* forward-only cursor is never left half-consumed by a rejected alternative.\n* Recovery runs via the `if (!node)` tail rather than as a `??` arm, because it\n* appends raw tokens to the open parent instead of returning a child node.\n*/\nfunction parseDeclaration(cursor, insideNamespace, grammar) {\n\tconst name = cursor.peekKind(1) === \"Ident\" ? cursor.peekToken(1).text : \"\";\n\tif (insideNamespace && keywordIs(cursor, \"namespace\")) cursor.diagnostic(\"PSL_INVALID_NAMESPACE_BLOCK\", `Recursive \"namespace ${name}\" block is not allowed; namespace blocks may not nest`, cursor.mark());\n\telse if (insideNamespace && keywordIs(cursor, \"types\")) cursor.diagnostic(\"PSL_INVALID_NAMESPACE_BLOCK\", \"`types` blocks must be declared at the document top level, not inside a namespace block\", cursor.mark());\n\telse if (keywordIs(cursor, \"namespace\") && name === UNSPECIFIED_PSL_NAMESPACE_ID) cursor.diagnostic(\"PSL_INVALID_NAMESPACE_BLOCK\", `Namespace name \"${UNSPECIFIED_PSL_NAMESPACE_ID}\" is reserved for the parser-synthesised bucket for top-level declarations`, cursor.mark(1));\n\tif (!(parseModel(cursor) ?? parseNamespace(cursor, grammar) ?? parseCompositeType(cursor) ?? parseTypesBlock(cursor) ?? parseGenericBlock(cursor, grammar))) parseUnsupportedTopLevel(cursor);\n}\n/**\n* Reports only the first missing piece — a missing name suppresses the\n* missing-brace diagnostic. `nameRequired` is false only for the `types` block.\n*/\nfunction parseBlock(cursor, kind, nameRequired, parseMember) {\n\tconst keyword = cursor.peekToken().text;\n\tconst keywordMark = cursor.mark();\n\tcursor.startNode(kind);\n\tcursor.bump();\n\tconst hasName = nameRequired && cursor.peekKind() === \"Ident\";\n\tif (hasName) parseIdentifier(cursor);\n\tif (nameRequired && !hasName) cursor.diagnostic(\"PSL_INVALID_DECLARATION\", `Expected a name after \"${keyword}\"`, keywordMark);\n\telse if (cursor.peekKind() !== \"LBrace\") cursor.diagnostic(\"PSL_INVALID_DECLARATION\", `Expected \"{\" to open the \"${keyword}\" block`, cursor.markAfterLastToken());\n\tif (cursor.peekKind() === \"LBrace\") parseBlockBody(cursor, parseMember);\n\telse cursor.recoverToSyncPoint();\n\treturn cursor.finishNode();\n}\nfunction parseModel(cursor) {\n\tif (!keywordIs(cursor, \"model\")) return void 0;\n\treturn parseBlock(cursor, \"ModelDeclaration\", true, parseModelMember);\n}\n/**\n* Excluding the reserved keywords keeps a malformed reserved block (e.g. `model\n* {` with no name) routed to its dedicated parser. The generic keyword set is\n* open, so a bare identifier with no brace (e.g. `oops`) is read as an unfinished\n* custom declaration rather than unsupported content.\n*\n* With the `prisma7` grammar, a `view` block stays a generic block (so interpreters keep rejecting\n* the keyword), but its body is read like a model body, so the field lines parse as\n* `FieldDeclaration` nodes with spans instead of mangled entries.\n*/\nfunction parseGenericBlock(cursor, grammar = \"psl\") {\n\tif (cursor.peekKind() !== \"Ident\") return void 0;\n\tconst keyword = cursor.peekToken().text;\n\tif (RESERVED_BLOCK_KEYWORDS.has(keyword)) return void 0;\n\tconst hasName = cursor.peekKind(1) === \"Ident\" && cursor.peekKind(2) === \"LBrace\";\n\tcursor.startNode(\"GenericBlockDeclaration\");\n\tcursor.bump();\n\tif (hasName) parseIdentifier(cursor);\n\tif (cursor.peekKind() === \"LBrace\") parseBlockBody(cursor, genericBlockMemberParser(keyword, grammar));\n\telse {\n\t\tcursor.diagnostic(\"PSL_INVALID_DECLARATION\", `Expected \"{\" to open the \"${keyword}\" block`, cursor.markAfterLastToken());\n\t\tcursor.recoverToSyncPoint();\n\t}\n\treturn cursor.finishNode();\n}\nfunction parseNamespace(cursor, grammar = \"psl\") {\n\tif (!keywordIs(cursor, \"namespace\")) return void 0;\n\treturn parseBlock(cursor, \"Namespace\", true, (inner) => parseDeclaration(inner, true, grammar));\n}\nfunction parseCompositeType(cursor) {\n\tif (!keywordIs(cursor, \"type\")) return void 0;\n\treturn parseBlock(cursor, \"CompositeTypeDeclaration\", true, parseModelMember);\n}\n/** `types` (plural) is the no-name types block; the singular `type` is the composite type above. */\nfunction parseTypesBlock(cursor) {\n\tif (!keywordIs(cursor, \"types\")) return void 0;\n\treturn parseBlock(cursor, \"TypesBlock\", false, parseNamedTypeMember);\n}\n/** Every `parseMember` consumes at least one significant token, so the loop always terminates. */\nfunction parseBlockBody(cursor, parseMember) {\n\tconst braceMark = cursor.mark();\n\tcursor.bump();\n\tfor (;;) {\n\t\tconst kind = cursor.peekKind();\n\t\tif (kind === \"RBrace\" || kind === \"Eof\") break;\n\t\tparseMember(cursor);\n\t}\n\tif (cursor.peekKind() === \"RBrace\") cursor.bump();\n\telse cursor.diagnostic(\"PSL_UNTERMINATED_BLOCK\", \"Unterminated block declaration\", braceMark);\n}\nfunction parseUnsupportedTopLevel(cursor) {\n\tconst offending = cursor.peekToken().text;\n\tconst message = cursor.peekKind(1) === \"LBrace\" ? `Unsupported top-level block \"${offending}\"` : `Unsupported top-level declaration \"${offending}\"`;\n\tcursor.diagnostic(\"PSL_UNSUPPORTED_TOP_LEVEL_BLOCK\", message, cursor.mark());\n\tcursor.bump();\n\tcursor.recoverToSyncPoint();\n}\n/**\n* Matches a leading `@@` block attribute, a no-op otherwise. Single-`@`\n* attributes belong to fields and are parsed inside `parseField`.\n*/\nfunction parseBlockAttribute(cursor) {\n\tif (cursor.peekKind() !== \"DoubleAt\") return void 0;\n\treturn parseAttribute(cursor);\n}\nfunction parseModelMember(cursor) {\n\tif (!(parseBlockAttribute(cursor) ?? parseField(cursor))) invalidMember(cursor, \"PSL_INVALID_MODEL_MEMBER\", `Invalid model member declaration \"${cursor.peekToken().text}\"`);\n}\nfunction parseNamedTypeMember(cursor) {\n\tif (!parseNamedType(cursor)) invalidMember(cursor, \"PSL_INVALID_TYPES_MEMBER\", `Invalid types declaration \"${cursor.peekToken().text}\"`);\n}\n/**\n* With the `prisma7` grammar, a `view` body is read like a model body and an `enum` member may\n* carry `@` attributes (`USER @map(\"user\")`). Every other generic block, and every generic block\n* with the `psl` grammar, reads plain `key = value` entries.\n*/\nfunction genericBlockMemberParser(keyword, grammar) {\n\tif (grammar === \"prisma7\" && keyword === \"view\") return parseModelMember;\n\tif (grammar === \"prisma7\" && keyword === \"enum\") return parseEnumMember;\n\treturn parseKeyValueMember;\n}\n/**\n* A generic-block member is either a `@@`-block attribute or a `key = value`\n* entry. The block-attribute alternative is purely syntactic — it does not judge\n* whether the attribute is valid for the block's kind.\n*/\nfunction parseKeyValueMember(cursor) {\n\tif (!(parseBlockAttribute(cursor) ?? parseKeyValue(cursor))) invalidMember(cursor, \"PSL_INVALID_EXTENSION_BLOCK_MEMBER\", \"Invalid block entry\");\n}\nfunction parseEnumMember(cursor) {\n\tif (!(parseBlockAttribute(cursor) ?? parseKeyValue(cursor, { memberAttributes: true }))) invalidMember(cursor, \"PSL_INVALID_EXTENSION_BLOCK_MEMBER\", \"Invalid block entry\");\n}\nfunction invalidMember(cursor, code, message) {\n\tcursor.diagnostic(code, message, cursor.mark());\n\tcursor.bump();\n\tcursor.recoverToSyncPoint();\n}\nfunction parseField(cursor) {\n\tif (cursor.peekKind() !== \"Ident\") return void 0;\n\tcursor.startNode(\"FieldDeclaration\");\n\tconst nameMark = cursor.mark();\n\tconst nameText = cursor.peekToken().text;\n\tparseIdentifier(cursor);\n\tif (cursor.peekKind() !== \"Ident\") cursor.diagnostic(\"PSL_INVALID_MODEL_MEMBER\", `Expected a type after field \"${nameText}\"`, nameMark);\n\tparseTypeAnnotation(cursor);\n\twhile (cursor.peekKind() === \"At\") parseAttribute(cursor);\n\treturn cursor.finishNode();\n}\nfunction parseNamedType(cursor) {\n\tif (cursor.peekKind() !== \"Ident\") return void 0;\n\tcursor.startNode(\"NamedTypeDeclaration\");\n\tconst nameMark = cursor.mark();\n\tconst nameText = cursor.peekToken().text;\n\tparseIdentifier(cursor);\n\tif (cursor.peekKind() === \"Equals\") cursor.bump();\n\telse cursor.diagnostic(\"PSL_INVALID_TYPES_MEMBER\", `Expected \"=\" after \"${nameText}\"`, nameMark);\n\tparseTypeAnnotation(cursor);\n\twhile (cursor.peekKind() === \"At\") parseAttribute(cursor);\n\treturn cursor.finishNode();\n}\n/**\n* A generic-block entry is either `key = value` or a bare `key` (committing a\n* `KeyValuePair` carrying only the key). With `memberAttributes` (enum blocks parsed with the\n* `prisma7` grammar) any number of `@` attributes may follow, as in `USER @map(\"user\")`. A\n* `key =` with no following expression is flagged.\n*/\nfunction parseKeyValue(cursor, options = { memberAttributes: false }) {\n\tif (cursor.peekKind() !== \"Ident\") return void 0;\n\tcursor.startNode(\"KeyValuePair\");\n\tparseIdentifier(cursor);\n\tif (cursor.peekKind() === \"Equals\") {\n\t\tcursor.bump();\n\t\tif (!parseExpression(cursor)) cursor.diagnostic(\"PSL_INVALID_EXTENSION_BLOCK_MEMBER\", \"Expected a value after \\\"=\\\"\", cursor.mark());\n\t}\n\twhile (options.memberAttributes && cursor.peekKind() === \"At\") parseAttribute(cursor);\n\treturn cursor.finishNode();\n}\n//#endregion\nexport { PslSources as a, greenToken as i, GreenNodeBuilder as n, SourceFile as o, greenNode as r, parse as t };\n\n//# sourceMappingURL=parse-DN-F4ASD.mjs.map"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"psl-ast-DUCvVXbB.mjs","names":[],"sources":["../../../../1-framework/1-core/framework-components/dist/psl-ast.mjs"],"sourcesContent":["import { blindCast } from \"@internal/utils/casts\";\n//#region src/control/psl-ast.ts\n/**\n* Name of the synthesised namespace bucket the framework parser uses for\n* top-level declarations that appear outside any `namespace { … }` block.\n* The double-underscore decoration signals that the identifier is parser-\n* synthesised and never appears in user-authored PSL source — writing\n* `namespace __unspecified__ { … }` is a parse error.\n*\n* Distinct from the IR sentinel `__unbound__`: the PSL bucket describes\n* syntactic absence at the parser layer; the IR sentinel describes a late-\n* bound storage slot at the IR layer. Per-target interpreters decide how\n* (or whether) to map the PSL bucket to the IR sentinel.\n*/\nconst UNSPECIFIED_PSL_NAMESPACE_ID = \"__unspecified__\";\n/**\n* Stores `entries`; exposes `models`/`enums`/`compositeTypes` as getters over\n* it. The getters are prototype members (non-enumerable), so spreading or\n* `JSON.stringify`-ing a namespace copies only `entries`, never a duplicate view.\n*/\nvar PslNamespaceNode = class {\n\tkind = \"namespace\";\n\tname;\n\tentries;\n\tspan;\n\tconstructor(init) {\n\t\tthis.name = init.name;\n\t\tthis.entries = init.entries;\n\t\tthis.span = init.span;\n\t\tObject.freeze(this);\n\t}\n\tget models() {\n\t\treturn blindCast(Object.values(this.entries[\"model\"] ?? {}));\n\t}\n\tget compositeTypes() {\n\t\treturn blindCast(Object.values(this.entries[\"compositeType\"] ?? {}));\n\t}\n};\n/** Constructs a {@link PslNamespace}. Use this, never a namespace literal — the accessors must derive from `entries`. */\nfunction makePslNamespace(init) {\n\treturn new PslNamespaceNode(init);\n}\n/**\n* Builds the frozen `entries[kind][name]` container from per-kind arrays.\n* Built-ins key on their PSL keyword; extension blocks key on their `kind`\n* discriminator. Call this rather than hand-building the literal.\n*/\nfunction makePslNamespaceEntries(models, compositeTypes, extensionBlocks) {\n\tconst container = {};\n\tif (models.length > 0) {\n\t\tconst map = {};\n\t\tfor (const m of models) map[m.name] = m;\n\t\tcontainer[\"model\"] = Object.freeze(map);\n\t}\n\tif (compositeTypes.length > 0) {\n\t\tconst map = {};\n\t\tfor (const ct of compositeTypes) map[ct.name] = ct;\n\t\tcontainer[\"compositeType\"] = Object.freeze(map);\n\t}\n\tfor (const block of extensionBlocks) {\n\t\tconst existing = container[block.kind];\n\t\tconst newMap = existing ? blindCast({ ...existing }) : {};\n\t\tnewMap[block.name] = block;\n\t\tcontainer[block.kind] = Object.freeze(newMap);\n\t}\n\treturn Object.freeze(container);\n}\n/**\n* Returns all models from every namespace in document order. Convenience\n* for consumers that don't (yet) need namespace-awareness.\n*/\nfunction flatPslModels(ast) {\n\treturn ast.namespaces.flatMap((ns) => blindCast(Object.values(ns.entries[\"model\"] ?? {})));\n}\n/**\n* Returns all composite types from every namespace in document order.\n*/\nfunction flatPslCompositeTypes(ast) {\n\treturn ast.namespaces.flatMap((ns) => blindCast(Object.values(ns.entries[\"compositeType\"] ?? {})));\n}\n/**\n* The set of `entries` kind keys that the framework parser reserves for\n* built-in PSL entity kinds. Any own-enumerable key on `PslNamespace.entries`\n* that is **not** in this set was contributed by an extension-block descriptor.\n*\n* Built-in keys match the PSL keyword used on each block type:\n* `'model'`, `'compositeType'`. The `'enum'` keyword is claimed by the\n* extension-block grammar via a registered descriptor, so `entries['enum']`\n* holds `PslExtensionBlock` nodes and is returned by `namespacePslExtensionBlocks`.\n*/\nconst BUILTIN_PSL_KIND_KEYS = /* @__PURE__ */ new Set([\"model\", \"compositeType\"]);\n/**\n* Returns all extension-contributed blocks in the given namespace, in\n* insertion order (the order the parser encountered them in the source).\n*\n* Reads from `namespace.entries`, skipping the built-in kind keys\n* (`'model'`, `'compositeType'`). All remaining kind maps contain\n* only `PslExtensionBlock` nodes by construction (see `makePslNamespaceEntries`).\n*/\nfunction namespacePslExtensionBlocks(ns) {\n\tconst result = [];\n\tfor (const [kindKey, kindMap] of Object.entries(ns.entries)) {\n\t\tif (BUILTIN_PSL_KIND_KEYS.has(kindKey)) continue;\n\t\tfor (const entry of Object.values(kindMap)) result.push(blindCast(entry));\n\t}\n\treturn result;\n}\n//#endregion\n//#region src/control/psl-extension-block-validator.ts\n/**\n* Validate a single parsed extension block against its descriptor.\n*\n* Returns an array of {@link PslDiagnostic} objects (possibly empty). The\n* caller is responsible for threading `sourceId` into each returned diagnostic\n* — the returned objects already have `sourceId` set from the `sourceId`\n* parameter.\n*\n* @param node - The parsed block node produced by the generic framework parser.\n* @param descriptor - The descriptor that claims this block's keyword.\n* @param sourceId - The PSL source file identifier (threaded into diagnostics).\n* @param codecLookup - Used to validate `value`-kind parameter literals via\n* `codecLookup.get(codecId)?.decodeJson(JSON.parse(raw))`.\n* @param refCtx - Namespace context for `ref`-kind scope resolution. Required\n* when any descriptor parameter is `kind: 'ref'`; may be omitted if none are.\n*/\nfunction validateExtensionBlock(node, descriptor, sourceId, codecLookup, refCtx) {\n\tconst diagnostics = [];\n\tconst descriptorKeys = new Set(Object.keys(descriptor.parameters));\n\tconst nodeKeys = new Set(Object.keys(node.parameters));\n\tif (!descriptor.variadicParameters) {\n\t\tfor (const key of nodeKeys) if (!descriptorKeys.has(key)) {\n\t\t\tconst captured = node.parameters[key];\n\t\t\tdiagnostics.push({\n\t\t\t\tcode: \"PSL_EXTENSION_UNKNOWN_PARAMETER\",\n\t\t\t\tmessage: `Unknown parameter \"${key}\" in \"${descriptor.keyword}\" block \"${node.name}\". The descriptor does not declare this parameter.`,\n\t\t\t\tsourceId,\n\t\t\t\tspan: captured?.span ?? node.span\n\t\t\t});\n\t\t}\n\t}\n\tfor (const [key, param] of Object.entries(descriptor.parameters)) if (param.required === true && !nodeKeys.has(key)) diagnostics.push({\n\t\tcode: \"PSL_EXTENSION_MISSING_REQUIRED_PARAMETER\",\n\t\tmessage: `Required parameter \"${key}\" is missing from \"${descriptor.keyword}\" block \"${node.name}\".`,\n\t\tsourceId,\n\t\tspan: node.span\n\t});\n\tfor (const [key, param] of Object.entries(descriptor.parameters)) {\n\t\tconst captured = node.parameters[key];\n\t\tif (captured === void 0) continue;\n\t\tvalidateParam(node, descriptor, key, param, captured, sourceId, codecLookup, refCtx, diagnostics);\n\t}\n\treturn diagnostics;\n}\nfunction validateParam(node, descriptor, key, param, captured, sourceId, codecLookup, refCtx, diagnostics) {\n\tswitch (param.kind) {\n\t\tcase \"option\":\n\t\t\tif (captured.kind !== \"option\") return;\n\t\t\tif (!param.values.includes(captured.token)) diagnostics.push({\n\t\t\t\tcode: \"PSL_EXTENSION_OPTION_OUT_OF_SET\",\n\t\t\t\tmessage: `Parameter \"${key}\" in \"${descriptor.keyword}\" block \"${node.name}\" has value \"${captured.token}\" which is not one of the allowed values: ${param.values.map((v) => `\"${v}\"`).join(\", \")}.`,\n\t\t\t\tsourceId,\n\t\t\t\tspan: captured.span\n\t\t\t});\n\t\t\treturn;\n\t\tcase \"value\": {\n\t\t\tif (captured.kind !== \"value\") return;\n\t\t\tconst codec = codecLookup.get(param.codecId);\n\t\t\tif (codec === void 0) {\n\t\t\t\tdiagnostics.push({\n\t\t\t\t\tcode: \"PSL_EXTENSION_INVALID_VALUE\",\n\t\t\t\t\tmessage: `Parameter \"${key}\" in \"${descriptor.keyword}\" block \"${node.name}\" references unknown codec \"${param.codecId}\".`,\n\t\t\t\t\tsourceId,\n\t\t\t\t\tspan: captured.span\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tlet jsonValue;\n\t\t\ttry {\n\t\t\t\tjsonValue = JSON.parse(captured.raw);\n\t\t\t} catch {\n\t\t\t\tdiagnostics.push({\n\t\t\t\t\tcode: \"PSL_EXTENSION_INVALID_VALUE\",\n\t\t\t\t\tmessage: `Parameter \"${key}\" in \"${descriptor.keyword}\" block \"${node.name}\" is not a valid JSON literal (expected a JSON string, number, boolean, or null): ${captured.raw}`,\n\t\t\t\t\tsourceId,\n\t\t\t\t\tspan: captured.span\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tcodec.decodeJson(blindCast(jsonValue));\n\t\t\t} catch (err) {\n\t\t\t\tconst reason = err instanceof Error ? err.message : String(err);\n\t\t\t\tdiagnostics.push({\n\t\t\t\t\tcode: \"PSL_EXTENSION_INVALID_VALUE\",\n\t\t\t\t\tmessage: `Parameter \"${key}\" in \"${descriptor.keyword}\" block \"${node.name}\" was rejected by codec \"${param.codecId}\": ${reason}`,\n\t\t\t\t\tsourceId,\n\t\t\t\t\tspan: captured.span\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tcase \"ref\":\n\t\t\tif (captured.kind !== \"ref\") return;\n\t\t\tvalidateRef(node, descriptor, key, param, captured.identifier, captured.span, sourceId, refCtx, diagnostics);\n\t\t\treturn;\n\t\tcase \"list\":\n\t\t\tif (captured.kind !== \"list\") return;\n\t\t\tfor (const item of captured.items) validateParam(node, descriptor, key, param.of, item, sourceId, codecLookup, refCtx, diagnostics);\n\t\t\treturn;\n\t}\n}\nfunction validateRef(node, descriptor, key, param, identifier, span, sourceId, refCtx, diagnostics) {\n\tif (param.scope === \"cross-space\") return;\n\tif (refCtx === void 0) return;\n\tconst namespacesToSearch = param.scope === \"same-namespace\" ? [refCtx.ownerNamespace] : refCtx.allNamespaces;\n\tif (!resolveEntityInNamespaces(identifier, param.refKind, namespacesToSearch)) {\n\t\tconst scopeLabel = param.scope === \"same-namespace\" ? \"the same namespace\" : \"any namespace in the schema\";\n\t\tdiagnostics.push({\n\t\t\tcode: \"PSL_EXTENSION_UNRESOLVED_REF\",\n\t\t\tmessage: `Parameter \"${key}\" in \"${descriptor.keyword}\" block \"${node.name}\" refers to \"${identifier}\" (expected ${param.refKind}), but no entity with that name and kind was found in ${scopeLabel}.`,\n\t\t\tsourceId,\n\t\t\tspan\n\t\t});\n\t}\n}\n/**\n* True if an entity named `name` of kind `refKind` exists in any of the given\n* namespaces. Built-in and extension kinds resolve the same way, through\n* `entries[refKind]`.\n*/\nfunction resolveEntityInNamespaces(name, refKind, namespaces) {\n\tfor (const ns of namespaces) {\n\t\tconst kindMap = ns.entries[refKind];\n\t\tif (kindMap !== void 0 && Object.hasOwn(kindMap, name)) return true;\n\t}\n\treturn false;\n}\n//#endregion\nexport { BUILTIN_PSL_KIND_KEYS, UNSPECIFIED_PSL_NAMESPACE_ID, flatPslCompositeTypes, flatPslModels, makePslNamespace, makePslNamespaceEntries, namespacePslExtensionBlocks, validateExtensionBlock };\n\n//# sourceMappingURL=psl-ast.mjs.map"],"mappings":";;;;;;;;;;;;;;AAcA,MAAM,+BAA+B;;;;;;AAMrC,IAAI,mBAAmB,MAAM;CAC5B,OAAO;CACP;CACA;CACA;CACA,YAAY,MAAM;EACjB,KAAK,OAAO,KAAK;EACjB,KAAK,UAAU,KAAK;EACpB,KAAK,OAAO,KAAK;EACjB,OAAO,OAAO,IAAI;CACnB;CACA,IAAI,SAAS;EACZ,OAAO,UAAU,OAAO,OAAO,KAAK,QAAQ,YAAY,CAAC,CAAC,CAAC;CAC5D;CACA,IAAI,iBAAiB;EACpB,OAAO,UAAU,OAAO,OAAO,KAAK,QAAQ,oBAAoB,CAAC,CAAC,CAAC;CACpE;AACD;;AAEA,SAAS,iBAAiB,MAAM;CAC/B,OAAO,IAAI,iBAAiB,IAAI;AACjC;;;;;;AAMA,SAAS,wBAAwB,QAAQ,gBAAgB,iBAAiB;CACzE,MAAM,YAAY,CAAC;CACnB,IAAI,OAAO,SAAS,GAAG;EACtB,MAAM,MAAM,CAAC;EACb,KAAK,MAAM,KAAK,QAAQ,IAAI,EAAE,QAAQ;EACtC,UAAU,WAAW,OAAO,OAAO,GAAG;CACvC;CACA,IAAI,eAAe,SAAS,GAAG;EAC9B,MAAM,MAAM,CAAC;EACb,KAAK,MAAM,MAAM,gBAAgB,IAAI,GAAG,QAAQ;EAChD,UAAU,mBAAmB,OAAO,OAAO,GAAG;CAC/C;CACA,KAAK,MAAM,SAAS,iBAAiB;EACpC,MAAM,WAAW,UAAU,MAAM;EACjC,MAAM,SAAS,WAAW,UAAU,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC;EACxD,OAAO,MAAM,QAAQ;EACrB,UAAU,MAAM,QAAQ,OAAO,OAAO,MAAM;CAC7C;CACA,OAAO,OAAO,OAAO,SAAS;AAC/B;;;;;AAKA,SAAS,cAAc,KAAK;CAC3B,OAAO,IAAI,WAAW,SAAS,OAAO,UAAU,OAAO,OAAO,GAAG,QAAQ,YAAY,CAAC,CAAC,CAAC,CAAC;AAC1F;;;;AAIA,SAAS,sBAAsB,KAAK;CACnC,OAAO,IAAI,WAAW,SAAS,OAAO,UAAU,OAAO,OAAO,GAAG,QAAQ,oBAAoB,CAAC,CAAC,CAAC,CAAC;AAClG;;;;;;;;;;;AAWA,MAAM,wCAAwC,IAAI,IAAI,CAAC,SAAS,eAAe,CAAC;;;;;;;;;AAShF,SAAS,4BAA4B,IAAI;CACxC,MAAM,SAAS,CAAC;CAChB,KAAK,MAAM,CAAC,SAAS,YAAY,OAAO,QAAQ,GAAG,OAAO,GAAG;EAC5D,IAAI,sBAAsB,IAAI,OAAO,GAAG;EACxC,KAAK,MAAM,SAAS,OAAO,OAAO,OAAO,GAAG,OAAO,KAAK,UAAU,KAAK,CAAC;CACzE;CACA,OAAO;AACR;;;;;;;;;;;;;;;;;AAmBA,SAAS,uBAAuB,MAAM,YAAY,UAAU,aAAa,QAAQ;CAChF,MAAM,cAAc,CAAC;CACrB,MAAM,iBAAiB,IAAI,IAAI,OAAO,KAAK,WAAW,UAAU,CAAC;CACjE,MAAM,WAAW,IAAI,IAAI,OAAO,KAAK,KAAK,UAAU,CAAC;CACrD,IAAI,CAAC,WAAW,oBACV;OAAA,MAAM,OAAO,UAAU,IAAI,CAAC,eAAe,IAAI,GAAG,GAAG;GACzD,MAAM,WAAW,KAAK,WAAW;GACjC,YAAY,KAAK;IAChB,MAAM;IACN,SAAS,sBAAsB,IAAI,QAAQ,WAAW,QAAQ,WAAW,KAAK,KAAK;IACnF;IACA,MAAM,UAAU,QAAQ,KAAK;GAC9B,CAAC;EACF;;CAED,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,WAAW,UAAU,GAAG,IAAI,MAAM,aAAa,QAAQ,CAAC,SAAS,IAAI,GAAG,GAAG,YAAY,KAAK;EACrI,MAAM;EACN,SAAS,uBAAuB,IAAI,qBAAqB,WAAW,QAAQ,WAAW,KAAK,KAAK;EACjG;EACA,MAAM,KAAK;CACZ,CAAC;CACD,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,WAAW,UAAU,GAAG;EACjE,MAAM,WAAW,KAAK,WAAW;EACjC,IAAI,aAAa,KAAK,GAAG;EACzB,cAAc,MAAM,YAAY,KAAK,OAAO,UAAU,UAAU,aAAa,QAAQ,WAAW;CACjG;CACA,OAAO;AACR;AACA,SAAS,cAAc,MAAM,YAAY,KAAK,OAAO,UAAU,UAAU,aAAa,QAAQ,aAAa;CAC1G,QAAQ,MAAM,MAAd;EACC,KAAK;GACJ,IAAI,SAAS,SAAS,UAAU;GAChC,IAAI,CAAC,MAAM,OAAO,SAAS,SAAS,KAAK,GAAG,YAAY,KAAK;IAC5D,MAAM;IACN,SAAS,cAAc,IAAI,QAAQ,WAAW,QAAQ,WAAW,KAAK,KAAK,eAAe,SAAS,MAAM,4CAA4C,MAAM,OAAO,KAAK,MAAM,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE;IAClM;IACA,MAAM,SAAS;GAChB,CAAC;GACD;EACD,KAAK,SAAS;GACb,IAAI,SAAS,SAAS,SAAS;GAC/B,MAAM,QAAQ,YAAY,IAAI,MAAM,OAAO;GAC3C,IAAI,UAAU,KAAK,GAAG;IACrB,YAAY,KAAK;KAChB,MAAM;KACN,SAAS,cAAc,IAAI,QAAQ,WAAW,QAAQ,WAAW,KAAK,KAAK,8BAA8B,MAAM,QAAQ;KACvH;KACA,MAAM,SAAS;IAChB,CAAC;IACD;GACD;GACA,IAAI;GACJ,IAAI;IACH,YAAY,KAAK,MAAM,SAAS,GAAG;GACpC,QAAQ;IACP,YAAY,KAAK;KAChB,MAAM;KACN,SAAS,cAAc,IAAI,QAAQ,WAAW,QAAQ,WAAW,KAAK,KAAK,oFAAoF,SAAS;KACxK;KACA,MAAM,SAAS;IAChB,CAAC;IACD;GACD;GACA,IAAI;IACH,MAAM,WAAW,UAAU,SAAS,CAAC;GACtC,SAAS,KAAK;IACb,MAAM,SAAS,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;IAC9D,YAAY,KAAK;KAChB,MAAM;KACN,SAAS,cAAc,IAAI,QAAQ,WAAW,QAAQ,WAAW,KAAK,KAAK,2BAA2B,MAAM,QAAQ,KAAK;KACzH;KACA,MAAM,SAAS;IAChB,CAAC;GACF;GACA;EACD;EACA,KAAK;GACJ,IAAI,SAAS,SAAS,OAAO;GAC7B,YAAY,MAAM,YAAY,KAAK,OAAO,SAAS,YAAY,SAAS,MAAM,UAAU,QAAQ,WAAW;GAC3G;EACD,KAAK;GACJ,IAAI,SAAS,SAAS,QAAQ;GAC9B,KAAK,MAAM,QAAQ,SAAS,OAAO,cAAc,MAAM,YAAY,KAAK,MAAM,IAAI,MAAM,UAAU,aAAa,QAAQ,WAAW;GAClI;CACF;AACD;AACA,SAAS,YAAY,MAAM,YAAY,KAAK,OAAO,YAAY,MAAM,UAAU,QAAQ,aAAa;CACnG,IAAI,MAAM,UAAU,eAAe;CACnC,IAAI,WAAW,KAAK,GAAG;CACvB,MAAM,qBAAqB,MAAM,UAAU,mBAAmB,CAAC,OAAO,cAAc,IAAI,OAAO;CAC/F,IAAI,CAAC,0BAA0B,YAAY,MAAM,SAAS,kBAAkB,GAAG;EAC9E,MAAM,aAAa,MAAM,UAAU,mBAAmB,uBAAuB;EAC7E,YAAY,KAAK;GAChB,MAAM;GACN,SAAS,cAAc,IAAI,QAAQ,WAAW,QAAQ,WAAW,KAAK,KAAK,eAAe,WAAW,cAAc,MAAM,QAAQ,wDAAwD,WAAW;GACpM;GACA;EACD,CAAC;CACF;AACD;;;;;;AAMA,SAAS,0BAA0B,MAAM,SAAS,YAAY;CAC7D,KAAK,MAAM,MAAM,YAAY;EAC5B,MAAM,UAAU,GAAG,QAAQ;EAC3B,IAAI,YAAY,KAAK,KAAK,OAAO,OAAO,SAAS,IAAI,GAAG,OAAO;CAChE;CACA,OAAO;AACR"}