@prisma/orm-family-mongo 8.0.0-rc.20-dev.2 → 8.0.0-rc.20-dev.4

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 (123) hide show
  1. package/dist/{authoring-entity-types-UA5sY_Xm-DeYf_cYq.mjs → authoring-entity-types-BEwwEsFI-J0WF36SE.mjs} +8 -6
  2. package/dist/authoring-entity-types-BEwwEsFI-J0WF36SE.mjs.map +1 -0
  3. package/dist/config-types-DYTCUpAs.mjs.map +1 -1
  4. package/dist/contract-builder-d5cf-u9p.mjs +1832 -0
  5. package/dist/contract-builder-d5cf-u9p.mjs.map +1 -0
  6. package/dist/{contract-builder-ClL-xMK2.d.mts → contract-builder-lqaM5w74.d.mts} +489 -94
  7. package/dist/contract-builder-lqaM5w74.d.mts.map +1 -0
  8. package/dist/contract-prisma6__provider.mjs +168 -107
  9. package/dist/contract-prisma6__provider.mjs.map +1 -1
  10. package/dist/contract-psl.d.mts +7 -4
  11. package/dist/contract-psl.d.mts.map +1 -1
  12. package/dist/contract-psl.mjs +1 -1
  13. package/dist/contract-psl__provider.d.mts +5 -1
  14. package/dist/contract-psl__provider.d.mts.map +1 -1
  15. package/dist/contract-psl__provider.mjs +17 -4
  16. package/dist/contract-psl__provider.mjs.map +1 -1
  17. package/dist/contract-ts.d.mts +2 -2
  18. package/dist/contract-ts.mjs +2 -2
  19. package/dist/contract-ts__contract-builder.d.mts +2 -2
  20. package/dist/contract-ts__contract-builder.mjs +2 -2
  21. package/dist/contract.d.mts +3 -3
  22. package/dist/contract.mjs +1 -1
  23. package/dist/contract__data-type.d.mts +2 -15
  24. package/dist/contract__data-type.d.mts.map +1 -1
  25. package/dist/contract__data-type.mjs +2 -2
  26. package/dist/contract__entity-kinds.d.mts +1 -1
  27. package/dist/{control-CvQSMuxa.d.mts → control-B5MQg_2b.d.mts} +5 -5
  28. package/dist/{control-CvQSMuxa.d.mts.map → control-B5MQg_2b.d.mts.map} +1 -1
  29. package/dist/{control-B_pPN58L.mjs → control-Bo6DU4E_.mjs} +71 -13
  30. package/dist/control-Bo6DU4E_.mjs.map +1 -0
  31. package/dist/{control-4pC8N2Rb.d.mts → control-DS-Fx1NE.d.mts} +3 -3
  32. package/dist/{control-4pC8N2Rb.d.mts.map → control-DS-Fx1NE.d.mts.map} +1 -1
  33. package/dist/{control-adapter-Bh_ZraGM--5JDb99k.d.mts → control-adapter-Bh_ZraGM-B4cpVawQ.d.mts} +4 -4
  34. package/dist/{control-adapter-Bh_ZraGM--5JDb99k.d.mts.map → control-adapter-Bh_ZraGM-B4cpVawQ.d.mts.map} +1 -1
  35. package/dist/control-adapter-CbqlnOk6.d.mts +1 -0
  36. package/dist/{dist-B8f-pfcT.mjs → dist-DgMGRQkm.mjs} +7 -7
  37. package/dist/dist-DgMGRQkm.mjs.map +1 -0
  38. package/dist/{dist-gmGbjhmk.mjs → dist-DmE6N0B3.mjs} +2 -2
  39. package/dist/{dist-gmGbjhmk.mjs.map → dist-DmE6N0B3.mjs.map} +1 -1
  40. package/dist/dist-xk_0xOR-.mjs.map +1 -1
  41. package/dist/family.d.mts +10 -10
  42. package/dist/family.mjs +8 -8
  43. package/dist/family__control-adapter.d.mts +2 -2
  44. package/dist/family__control.d.mts +1 -1
  45. package/dist/family__control.mjs +2 -2
  46. package/dist/family__ir.d.mts +2 -2
  47. package/dist/family__ir.mjs +3 -3
  48. package/dist/family__migration.d.mts +1 -1
  49. package/dist/family__migration.mjs +1 -1
  50. package/dist/family__pack.d.mts +1 -1
  51. package/dist/family__pack.mjs +2 -2
  52. package/dist/family__pack.mjs.map +1 -1
  53. package/dist/family__runtime.d.mts +2 -2
  54. package/dist/family__runtime.mjs +1 -1
  55. package/dist/family__schema-verify.d.mts +1 -1
  56. package/dist/family__schema-verify.mjs +1 -1
  57. package/dist/{field-accessor-CmxCw9xP-C6jMngbK.d.mts → field-accessor-CmxCw9xP-C7wBU7aM.d.mts} +3 -3
  58. package/dist/{field-accessor-CmxCw9xP-C6jMngbK.d.mts.map → field-accessor-CmxCw9xP-C7wBU7aM.d.mts.map} +1 -1
  59. package/dist/{index-FeVOOdZ0.d.mts → index-8ml_NVS_.d.mts} +3 -3
  60. package/dist/{index-FeVOOdZ0.d.mts.map → index-8ml_NVS_.d.mts.map} +1 -1
  61. package/dist/{index-BdXzdXGE.d.mts → index-BEE0UxUA.d.mts} +3 -3
  62. package/dist/{index-BdXzdXGE.d.mts.map → index-BEE0UxUA.d.mts.map} +1 -1
  63. package/dist/{index-YY1SU_7o.d.mts → index-CQ1JuHm5.d.mts} +13 -12
  64. package/dist/index-CQ1JuHm5.d.mts.map +1 -0
  65. package/dist/{index-rANtsIZG.d.mts → index-D62lu0tO.d.mts} +3 -3
  66. package/dist/{index-rANtsIZG.d.mts.map → index-D62lu0tO.d.mts.map} +1 -1
  67. package/dist/{index-BhIiYIXu.d.mts → index-Dfilr1Os.d.mts} +6 -6
  68. package/dist/{index-BhIiYIXu.d.mts.map → index-Dfilr1Os.d.mts.map} +1 -1
  69. package/dist/{interpreter-BfHdPd7T-DGqi2_Um.mjs → interpreter-DFYQNoyO--j8HG0mg.mjs} +620 -905
  70. package/dist/interpreter-DFYQNoyO--j8HG0mg.mjs.map +1 -0
  71. package/dist/{ir-DGm0HXbP.mjs → ir-DrSbC_hc.mjs} +2 -2
  72. package/dist/{ir-DGm0HXbP.mjs.map → ir-DrSbC_hc.mjs.map} +1 -1
  73. package/dist/{ir-BLC0t6_x.d.mts → ir-SLc3mVHt.d.mts} +4 -4
  74. package/dist/{ir-BLC0t6_x.d.mts.map → ir-SLc3mVHt.d.mts.map} +1 -1
  75. package/dist/lowering.d.mts +1 -1
  76. package/dist/{migration-YQVmgFU8.d.mts → migration-C9enejJh.d.mts} +5 -5
  77. package/dist/{migration-YQVmgFU8.d.mts.map → migration-C9enejJh.d.mts.map} +1 -1
  78. package/dist/{migration-DnQ7_A_B.mjs → migration-CKa85PF4.mjs} +2 -2
  79. package/dist/{migration-DnQ7_A_B.mjs.map → migration-CKa85PF4.mjs.map} +1 -1
  80. package/dist/{mongo-contract-serializer-Zx1rvil3-BywiKCpn.mjs → mongo-contract-serializer-DAPHJOHU-BjEbQIgp.mjs} +3 -3
  81. package/dist/{mongo-contract-serializer-Zx1rvil3-BywiKCpn.mjs.map → mongo-contract-serializer-DAPHJOHU-BjEbQIgp.mjs.map} +1 -1
  82. package/dist/{mongo-contract-view-AnejqfrQ-Wj_ulq2L.d.mts → mongo-contract-view-AnejqfrQ-DJJ6PwWt.d.mts} +3 -3
  83. package/dist/{mongo-contract-view-AnejqfrQ-Wj_ulq2L.d.mts.map → mongo-contract-view-AnejqfrQ-DJJ6PwWt.d.mts.map} +1 -1
  84. package/dist/{mongo-contract-view-D5yu2LrY-DCAZYJ4q.mjs → mongo-contract-view-x3OCGAk1-DvEhwf_e.mjs} +4 -4
  85. package/dist/{mongo-contract-view-D5yu2LrY-DCAZYJ4q.mjs.map → mongo-contract-view-x3OCGAk1-DvEhwf_e.mjs.map} +1 -1
  86. package/dist/mongo-data-type-Bv8Bd0zu-cnTiyyP0.mjs +33 -0
  87. package/dist/mongo-data-type-Bv8Bd0zu-cnTiyyP0.mjs.map +1 -0
  88. package/dist/{mongo-value-set-DEd7WLCT-B2Ar2GkJ.d.mts → mongo-value-set-BkGaKhbE-86TPJ91m.d.mts} +4 -5
  89. package/dist/mongo-value-set-BkGaKhbE-86TPJ91m.d.mts.map +1 -0
  90. package/dist/orm.d.mts +6 -6
  91. package/dist/orm.d.mts.map +1 -1
  92. package/dist/orm.mjs +2 -2
  93. package/dist/{pack-qw77Jt2G.d.mts → pack-WQox6nGF.d.mts} +4 -2
  94. package/dist/pack-WQox6nGF.d.mts.map +1 -0
  95. package/dist/query-ast.d.mts +2 -2
  96. package/dist/query-ast__control.d.mts +2 -2
  97. package/dist/query-builder.d.mts +2 -2
  98. package/dist/query-builder.mjs +1 -1
  99. package/dist/query-builder__contract-free.d.mts +3 -3
  100. package/dist/{runtime-yZA30qM2.d.mts → runtime-B1uT8PuG.d.mts} +2 -2
  101. package/dist/runtime-B1uT8PuG.d.mts.map +1 -0
  102. package/dist/runtime.d.mts +2 -2
  103. package/dist/schema-ir.d.mts +1 -1
  104. package/dist/{schema-verify-CVOG6EZx.d.mts → schema-verify-BiwnOU7s.d.mts} +4 -4
  105. package/dist/{schema-verify-CVOG6EZx.d.mts.map → schema-verify-BiwnOU7s.d.mts.map} +1 -1
  106. package/dist/{verify-mongo-schema-CeQP5N4k-CNOctppM.mjs → verify-mongo-schema-nsnAhPm8-BgFC6Aop.mjs} +3 -3
  107. package/dist/{verify-mongo-schema-CeQP5N4k-CNOctppM.mjs.map → verify-mongo-schema-nsnAhPm8-BgFC6Aop.mjs.map} +1 -1
  108. package/dist/wire.d.mts +1 -1
  109. package/package.json +20 -20
  110. package/dist/authoring-entity-types-UA5sY_Xm-DeYf_cYq.mjs.map +0 -1
  111. package/dist/contract-builder-BHzQQk70.mjs +0 -965
  112. package/dist/contract-builder-BHzQQk70.mjs.map +0 -1
  113. package/dist/contract-builder-ClL-xMK2.d.mts.map +0 -1
  114. package/dist/control-B_pPN58L.mjs.map +0 -1
  115. package/dist/control-adapter-CndDiTXW.d.mts +0 -1
  116. package/dist/dist-B8f-pfcT.mjs.map +0 -1
  117. package/dist/index-YY1SU_7o.d.mts.map +0 -1
  118. package/dist/interpreter-BfHdPd7T-DGqi2_Um.mjs.map +0 -1
  119. package/dist/mongo-data-type-DzyzU4LF-C1ydFXgE.mjs +0 -53
  120. package/dist/mongo-data-type-DzyzU4LF-C1ydFXgE.mjs.map +0 -1
  121. package/dist/mongo-value-set-DEd7WLCT-B2Ar2GkJ.d.mts.map +0 -1
  122. package/dist/pack-qw77Jt2G.d.mts.map +0 -1
  123. package/dist/runtime-yZA30qM2.d.mts.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract-builder-d5cf-u9p.mjs","names":[],"sources":["../../../../2-mongo-family/2-authoring/contract-ts/dist/contract-builder.mjs"],"sourcesContent":["import { t as contractError } from \"./contract-errors-BCN6RVI5.mjs\";\nimport { buildExecutionSection, computeProfileHash } from \"@internal/contract/hashing\";\nimport { assembleGeneratorFunctions, createGeneratorHelpers } from \"@internal/framework-components/components\";\nimport { MongoCollectionOptions, MongoIndex, applyPolymorphicScopeToMongoIndex, buildMongoStorage, deriveCollectionValidators, mongoContractRefusalsOf, mongoValueSetsOf, unsupportedStoredNameReason } from \"@internal/mongo-contract\";\nimport { ifDefined } from \"@internal/utils/defined\";\nimport { notOk, ok } from \"@internal/utils/result\";\nimport { canonicalStringify } from \"@internal/utils/canonical-stringify\";\nimport { blindCast } from \"@internal/utils/casts\";\nimport { crossRef } from \"@internal/contract/types\";\nimport { bindEnumType, composePackAuthoringNamespace, createEntityHelpersFromNamespace, createFieldHelpersFromNamespace, enumMemberError, enumType, isEnumTypeHandle, member, resolveToOneRelationNullable } from \"@internal/contract-authoring\";\nimport { applyDiscriminatorRule, assembleDataTypeSupport, assertNoCrossRegistryCollisions, assertTypeAliasesValid, encodeEnumMembers, flushAuthoringWarnings, instantiateAuthoringFieldPreset, validateAuthoringHelperArguments } from \"@internal/framework-components/authoring\";\nimport { codecTypeParamsProblem } from \"@internal/mongo-contract/data-type\";\nimport { extractCodecLookup } from \"@internal/framework-components/control\";\nimport { assertDefined } from \"@internal/utils/assertions\";\nimport { structuredError } from \"@internal/utils/structured-error\";\n//#region src/build-refusals.ts\nfunction modelFieldKey(model, field) {\n\treturn {\n\t\tkind: \"field\",\n\t\towner: {\n\t\t\tkind: \"model\",\n\t\t\tname: model\n\t\t},\n\t\tfield\n\t};\n}\nfunction valueObjectFieldKey(valueObject, field) {\n\treturn {\n\t\tkind: \"field\",\n\t\towner: {\n\t\t\tkind: \"valueObject\",\n\t\t\tname: valueObject\n\t\t},\n\t\tfield\n\t};\n}\n/** The key of a validator refusal: the part of the definition its subject names. */\nfunction validatorRefusalKey(refusal) {\n\tswitch (refusal.kind) {\n\t\tcase \"embeddedModelHasVariants\": return {\n\t\t\tkind: \"relation\",\n\t\t\tmodel: refusal.modelName,\n\t\t\trelation: refusal.relationName\n\t\t};\n\t\tcase \"enumBsonType\":\n\t\tcase \"enumNotListable\": return {\n\t\t\tkind: \"enum\",\n\t\t\tenumName: refusal.enumName\n\t\t};\n\t\tcase \"enumMemberNotListable\": return {\n\t\t\tkind: \"enumMember\",\n\t\t\tenumName: refusal.enumName,\n\t\t\tmember: refusal.member\n\t\t};\n\t\tcase \"fieldBsonType\": return {\n\t\t\tkind: \"field\",\n\t\t\towner: refusal.owner,\n\t\t\tfield: refusal.fieldName\n\t\t};\n\t\tcase \"documentId\": return modelFieldKey(refusal.modelName, refusal.fieldName);\n\t}\n}\n//#endregion\n//#region src/build-models.ts\nfunction storedNameOf(field) {\n\treturn field.storedName ?? field.fieldName;\n}\n/** The name documents store `fieldName` under, or `fieldName` itself when the fields do not declare it. */\nfunction storedFieldNameIn(fields, fieldName) {\n\tconst field = fields.find((candidate) => candidate.fieldName === fieldName);\n\treturn field === void 0 ? fieldName : storedNameOf(field);\n}\nfunction buildContractField(field, namespaceId) {\n\tconst valueSet = field.enumName === void 0 ? void 0 : {\n\t\tplane: \"domain\",\n\t\tentityKind: \"enum\",\n\t\tnamespaceId,\n\t\tentityName: field.enumName\n\t};\n\treturn {\n\t\ttype: field.type,\n\t\tnullable: field.nullable,\n\t\tmany: field.many,\n\t\t...ifDefined(\"valueSet\", valueSet)\n\t};\n}\nfunction buildFields(fields, namespaceId) {\n\treturn Object.fromEntries(fields.map((field) => [field.fieldName, buildContractField(field, namespaceId)]));\n}\nfunction buildStorageFields(modelName, fields, refusals) {\n\tconst storageFields = {};\n\tconst fieldsByStoredName = /* @__PURE__ */ new Map();\n\tfor (const field of fields) {\n\t\tconst { fieldName } = field;\n\t\tconst key = modelFieldKey(modelName, fieldName);\n\t\tconst storedName = storedNameOf(field);\n\t\tconst unsupported = unsupportedStoredNameReason(storedName);\n\t\tif (unsupported !== void 0) refusals.push({\n\t\t\tkind: \"storedNameUnsupported\",\n\t\t\tkey,\n\t\t\treason: unsupported\n\t\t});\n\t\tconst firstField = fieldsByStoredName.get(storedName);\n\t\tif (firstField !== void 0) {\n\t\t\trefusals.push({\n\t\t\t\tkind: \"storedNameDuplicate\",\n\t\t\t\tkey,\n\t\t\t\tstoredName,\n\t\t\t\tfirstField\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tfieldsByStoredName.set(storedName, fieldName);\n\t\tstorageFields[fieldName] = { field: storedName };\n\t}\n\treturn storageFields;\n}\nfunction toOneRelationNullable(key, relation, fields, refusals) {\n\tconst ownsForeignKey = relation.cardinality !== \"1:1\";\n\tconst localFields = [];\n\tif (ownsForeignKey) for (const fieldName of relation.on.localFields) {\n\t\tconst localField = fields.find((field) => field.fieldName === fieldName);\n\t\tif (localField === void 0) {\n\t\t\trefusals.push({\n\t\t\t\tkind: \"relationLocalFieldUnknown\",\n\t\t\t\tkey,\n\t\t\t\tfieldName\n\t\t\t});\n\t\t\treturn relation.nullable ?? false;\n\t\t}\n\t\tlocalFields.push(localField);\n\t}\n\tconst { nullable, contradiction } = resolveToOneRelationNullable({\n\t\tdeclaredNullable: relation.nullable,\n\t\tlocalFieldNullability: localFields.map((localField) => localField.nullable === true),\n\t\townsReference: ownsForeignKey\n\t});\n\tif (contradiction !== void 0) refusals.push({\n\t\tkind: \"relationNullability\",\n\t\tkey,\n\t\townsForeignKey,\n\t\tcontradiction\n\t});\n\treturn nullable;\n}\nfunction buildRelation(model, relation, namespaceId, refusals) {\n\tconst to = crossRef(relation.toModel, namespaceId);\n\tif (relation.on === void 0) return {\n\t\tto,\n\t\tcardinality: relation.cardinality\n\t};\n\tif (relation.cardinality === \"1:N\") return {\n\t\tto,\n\t\tcardinality: \"1:N\",\n\t\ton: relation.on\n\t};\n\tconst key = {\n\t\tkind: \"relation\",\n\t\tmodel: model.modelName,\n\t\trelation: relation.relationName\n\t};\n\treturn {\n\t\tto,\n\t\tcardinality: relation.cardinality,\n\t\tnullable: toOneRelationNullable(key, relation, model.fields, refusals),\n\t\ton: relation.on\n\t};\n}\nfunction buildValueObjects(valueObjects, namespaceId, refusals) {\n\tconst builtValueObjects = {};\n\tfor (const valueObject of valueObjects ?? []) {\n\t\tif (valueObject.name in builtValueObjects) {\n\t\t\trefusals.push({\n\t\t\t\tkind: \"duplicateValueObject\",\n\t\t\t\tkey: {\n\t\t\t\t\tkind: \"valueObject\",\n\t\t\t\t\tvalueObject: valueObject.name\n\t\t\t\t}\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tfor (const field of valueObject.fields) if (field.storedName !== void 0) refusals.push({\n\t\t\tkind: \"valueObjectFieldStoredName\",\n\t\t\tkey: valueObjectFieldKey(valueObject.name, field.fieldName)\n\t\t});\n\t\tbuiltValueObjects[valueObject.name] = { fields: buildFields(valueObject.fields, namespaceId) };\n\t}\n\treturn builtValueObjects;\n}\n/**\n* Refuses a variant field stored under a name another field of its base is stored under. A variant's documents hold its base's fields too, so the two would overwrite each other, the discriminator included. A variant that restates a base field under the same name restates that field.\n*/\nfunction restatementDifferences(variantField, baseField) {\n\tconst differences = [];\n\tif (storedNameOf(variantField) !== storedNameOf(baseField)) differences.push(\"storedName\");\n\tif (canonicalStringify([variantField.type, variantField.enumName]) !== canonicalStringify([baseField.type, baseField.enumName])) differences.push(\"type\");\n\tif (variantField.nullable !== baseField.nullable) differences.push(\"nullable\");\n\tif (canonicalStringify(variantField.many) !== canonicalStringify(baseField.many)) differences.push(\"many\");\n\treturn differences;\n}\n/**\n* A variant's documents hold its base's fields too, and its collection's validator is written from the base. A variant field may restate a base field only exactly, and may not take a stored name a different base field uses.\n*/\nfunction checkFieldsAgainstBase(variant, models, refusals) {\n\tif (variant.base === void 0) return;\n\tconst baseName = variant.base.model;\n\tconst base = models.find((model) => model.modelName === baseName);\n\tif (base === void 0) return;\n\tconst baseFieldsByName = new Map(base.fields.map((field) => [field.fieldName, field]));\n\tconst baseFieldsByStoredName = new Map(base.fields.map((field) => [storedNameOf(field), field]));\n\tfor (const field of variant.fields) {\n\t\tconst key = modelFieldKey(variant.modelName, field.fieldName);\n\t\tconst restated = baseFieldsByName.get(field.fieldName);\n\t\tif (restated !== void 0) {\n\t\t\tconst differences = restatementDifferences(field, restated);\n\t\t\tif (differences.length > 0) refusals.push({\n\t\t\t\tkind: \"restatedBaseFieldDiffers\",\n\t\t\t\tkey,\n\t\t\t\tbaseModel: baseName,\n\t\t\t\tdifferences\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tconst storedName = storedNameOf(field);\n\t\tconst baseField = baseFieldsByStoredName.get(storedName);\n\t\tif (baseField === void 0) continue;\n\t\trefusals.push({\n\t\t\tkind: \"storedNameSharedWithBase\",\n\t\t\tkey,\n\t\t\tstoredName,\n\t\t\tbaseModel: baseName,\n\t\t\tbaseField: baseField.fieldName\n\t\t});\n\t}\n}\n/**\n* Each model of the contract. `variantValues` holds each accepted variant's discriminator value as its base's field stores it; a base lists those variants.\n*/\nfunction buildModels(input) {\n\tconst { models, variantValues, namespaceId, refusals } = input;\n\tconst builtModels = {};\n\tfor (const model of models) {\n\t\tconst { modelName } = model;\n\t\tif (modelName in builtModels) {\n\t\t\trefusals.push({\n\t\t\t\tkind: \"duplicateModel\",\n\t\t\t\tkey: {\n\t\t\t\t\tkind: \"model\",\n\t\t\t\t\tmodel: modelName\n\t\t\t\t}\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tcheckFieldsAgainstBase(model, models, refusals);\n\t\tconst storage = {\n\t\t\t...model.collection ? { collection: model.collection } : {},\n\t\t\tfields: buildStorageFields(modelName, model.fields, refusals),\n\t\t\t...model.storageRelations ? { relations: model.storageRelations } : {}\n\t\t};\n\t\tconst variants = model.discriminator === void 0 ? void 0 : models.flatMap((variant) => {\n\t\t\tconst value = variantValues.get(variant.modelName);\n\t\t\treturn variant.base?.model === modelName && value !== void 0 ? [[value, crossRef(variant.modelName, namespaceId)]] : [];\n\t\t});\n\t\tbuiltModels[modelName] = {\n\t\t\tfields: buildFields(model.fields, namespaceId),\n\t\t\trelations: Object.fromEntries((model.relations ?? []).map((relation) => [relation.relationName, buildRelation(model, relation, namespaceId, refusals)])),\n\t\t\tstorage,\n\t\t\t...model.owner ? { owner: model.owner } : {},\n\t\t\t...model.base ? { base: crossRef(model.base.model, namespaceId) } : {},\n\t\t\t...model.discriminator ? { discriminator: { field: model.discriminator.field } } : {},\n\t\t\t...variants === void 0 ? {} : { variants: Object.fromEntries(variants) }\n\t\t};\n\t}\n\treturn builtModels;\n}\nfunction buildRoots(definition, models, namespaceId) {\n\tif (definition.roots !== void 0) return Object.fromEntries(Object.entries(definition.roots).map(([rootName, modelName]) => [rootName, crossRef(modelName, namespaceId)]));\n\tconst roots = {};\n\tfor (const model of models) {\n\t\tif (!model.collection || model.owner || model.base) continue;\n\t\troots[model.collection] = crossRef(model.modelName, namespaceId);\n\t}\n\treturn roots;\n}\n//#endregion\n//#region src/build-collections.ts\n/**\n* A key-sorted signature of a storage index, used only to find duplicate indexes. `canonicalStringify` refuses class instances such as `MongoIndex`, so this reads their enumerable properties instead.\n*/\nfunction stableStringify(value) {\n\tif (Array.isArray(value)) return `[${value.map(stableStringify).join(\",\")}]`;\n\tif (value && typeof value === \"object\") return `{${Object.entries(value).sort(([left], [right]) => left.localeCompare(right)).map(([key, entry]) => `${JSON.stringify(key)}:${stableStringify(entry)}`).join(\",\")}}`;\n\treturn JSON.stringify(value);\n}\nfunction storedIndexKey(fields, key) {\n\tconst scope = key.match(/^(.+)\\.\\$\\*\\*$/)?.[1];\n\tif (scope !== void 0) return `${storedFieldNameIn(fields, scope)}.$**`;\n\treturn key === \"$**\" ? key : storedFieldNameIn(fields, key);\n}\nfunction toStorageIndex(index, fields) {\n\tconst input = { keys: Object.entries(index.fields).map(([field, direction]) => ({\n\t\tfield: storedIndexKey(fields, field),\n\t\tdirection\n\t})) };\n\tif (index.options) {\n\t\tfor (const [key, value] of Object.entries(index.options)) if (value !== void 0) input[key] = value;\n\t}\n\treturn new MongoIndex(blindCast(input));\n}\nfunction toStorageCollectionOptions(opts) {\n\treturn new MongoCollectionOptions({\n\t\t...opts.capped ? { capped: {\n\t\t\tsize: opts.size ?? 0,\n\t\t\t...opts.max != null && { max: opts.max }\n\t\t} } : {},\n\t\t...ifDefined(\"storageEngine\", opts.storageEngine),\n\t\t...ifDefined(\"indexOptionDefaults\", opts.indexOptionDefaults),\n\t\t...ifDefined(\"collation\", opts.collation),\n\t\t...ifDefined(\"timeseries\", opts.timeseries),\n\t\t...opts.clusteredIndex !== void 0 && { clusteredIndex: opts.clusteredIndex.name !== void 0 ? { name: opts.clusteredIndex.name } : {} },\n\t\t...ifDefined(\"expireAfterSeconds\", opts.expireAfterSeconds),\n\t\t...ifDefined(\"changeStreamPreAndPostImages\", opts.changeStreamPreAndPostImages)\n\t});\n}\nfunction findMissingIndexField(index, fields) {\n\tfor (const fieldName of Object.keys(index.fields)) {\n\t\tconst wildcardMatch = fieldName.match(/^(.+)\\.\\$\\*\\*$/);\n\t\tconst lookupName = wildcardMatch ? wildcardMatch[1] : fieldName;\n\t\tif (lookupName === void 0 || lookupName.length === 0) continue;\n\t\tif (lookupName === \"$**\") continue;\n\t\tif (!fields.some((field) => field.fieldName === lookupName)) return lookupName;\n\t}\n}\nfunction isWildcardKey(key) {\n\treturn key === \"$**\" || key.endsWith(\".$**\");\n}\nfunction isTextIndex(index) {\n\treturn Object.values(index.fields).includes(\"text\");\n}\n/** The first shape rule an index breaks, of those MongoDB enforces when it creates the index. */\nfunction indexShapeProblem(index) {\n\tconst keys = Object.entries(index.fields);\n\tconst hasWildcard = keys.some(([key]) => isWildcardKey(key));\n\tconst directions = keys.map(([, direction]) => direction);\n\tconst options = index.options ?? {};\n\tif (hasWildcard && options.unique) return \"unique-wildcard\";\n\tif (hasWildcard && directions.some((direction) => [\n\t\t\"hashed\",\n\t\t\"2d\",\n\t\t\"2dsphere\"\n\t].includes(String(direction)))) return \"wildcard-with-type\";\n\tif (directions.includes(\"hashed\") && keys.length > 1) return \"hashed-several-fields\";\n\tif (hasWildcard && options.expireAfterSeconds !== void 0) return \"ttl-with-wildcard\";\n\tif (!hasWildcard && options.wildcardProjection !== void 0) return \"projection-without-wildcard\";\n\tif (options.collation !== void 0 && !options.collation.locale) return \"collation-without-locale\";\n}\nfunction resolveVariantScope(model, modelsByName, variantValues) {\n\tif (!model.base) return void 0;\n\tconst base = modelsByName.get(model.base.model);\n\tconst discriminatorField = base?.discriminator?.field;\n\tconst discriminatorValue = variantValues.get(model.modelName);\n\tif (base === void 0 || !discriminatorField || discriminatorValue === void 0) return;\n\treturn {\n\t\tdiscriminatorField: storedFieldNameIn(base.fields, discriminatorField),\n\t\tdiscriminatorValue\n\t};\n}\nfunction checkNoCollectionSettings(model, refusals) {\n\tconst key = {\n\t\tkind: \"collectionSettings\",\n\t\tmodel: model.modelName\n\t};\n\tif (model.indexes && model.indexes.length > 0) refusals.push({\n\t\tkind: \"collectionSettingWithoutCollection\",\n\t\tkey,\n\t\tsetting: \"indexes\"\n\t});\n\tif (model.collectionOptions) refusals.push({\n\t\tkind: \"collectionSettingWithoutCollection\",\n\t\tkey,\n\t\tsetting: \"collectionOptions\"\n\t});\n\tif (model.controlPolicy) refusals.push({\n\t\tkind: \"collectionSettingWithoutCollection\",\n\t\tkey,\n\t\tsetting: \"controlPolicy\"\n\t});\n}\n/** Each collection the models are stored in, with its indexes, options and control policy. Validators are added later. */\nfunction buildCollections(input) {\n\tconst { models, variantValues, refusals } = input;\n\tconst intermediate = {};\n\tconst declaredIndexOwners = /* @__PURE__ */ new Map();\n\tconst textIndexCollections = /* @__PURE__ */ new Set();\n\tconst modelsByName = new Map(models.map((model) => [model.modelName, model]));\n\tfor (const model of models) {\n\t\tconst { modelName, collection } = model;\n\t\tif (!collection) {\n\t\t\tcheckNoCollectionSettings(model, refusals);\n\t\t\tcontinue;\n\t\t}\n\t\tconst collectionKey = {\n\t\t\tkind: \"collectionSettings\",\n\t\t\tmodel: modelName\n\t\t};\n\t\tconst existingCollection = intermediate[collection] ?? {};\n\t\tconst existingIndexes = existingCollection.indexes ?? [];\n\t\tif (existingCollection.options && model.collectionOptions) refusals.push({\n\t\t\tkind: \"collectionSettingTwice\",\n\t\t\tkey: collectionKey,\n\t\t\tsetting: \"collectionOptions\",\n\t\t\tcollection\n\t\t});\n\t\tif (existingCollection.control !== void 0 && model.controlPolicy) refusals.push({\n\t\t\tkind: \"collectionSettingTwice\",\n\t\t\tkey: collectionKey,\n\t\t\tsetting: \"controlPolicy\",\n\t\t\tcollection\n\t\t});\n\t\tconst polymorphicScope = resolveVariantScope(model, modelsByName, variantValues);\n\t\tconst storageIndexes = [];\n\t\t(model.indexes ?? []).forEach((written, position) => {\n\t\t\tconst key = {\n\t\t\t\tkind: \"index\",\n\t\t\t\tmodel: modelName,\n\t\t\t\tposition\n\t\t\t};\n\t\t\tconst signature = canonicalStringify(written);\n\t\t\tconst missingField = findMissingIndexField(written, model.fields);\n\t\t\tif (missingField !== void 0) {\n\t\t\t\trefusals.push({\n\t\t\t\t\tkind: \"indexFieldUnknown\",\n\t\t\t\t\tkey,\n\t\t\t\t\tfieldName: missingField,\n\t\t\t\t\tsignature\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst shapeProblem = indexShapeProblem(written);\n\t\t\tif (shapeProblem !== void 0) {\n\t\t\t\trefusals.push({\n\t\t\t\t\tkind: \"indexShape\",\n\t\t\t\t\tkey,\n\t\t\t\t\trule: shapeProblem,\n\t\t\t\t\tsignature\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (isTextIndex(written)) {\n\t\t\t\tif (textIndexCollections.has(collection)) {\n\t\t\t\t\trefusals.push({\n\t\t\t\t\t\tkind: \"indexShape\",\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\trule: \"second-text-index\",\n\t\t\t\t\t\tsignature\n\t\t\t\t\t});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\ttextIndexCollections.add(collection);\n\t\t\t}\n\t\t\tconst storageIndex = toStorageIndex(written, model.fields);\n\t\t\tconst scoped = polymorphicScope === void 0 ? {\n\t\t\t\tkind: \"ok\",\n\t\t\t\tindex: storageIndex\n\t\t\t} : applyPolymorphicScopeToMongoIndex(storageIndex, polymorphicScope);\n\t\t\tif (scoped.kind === \"conflict\") {\n\t\t\t\trefusals.push({\n\t\t\t\t\tkind: \"indexScopeConflict\",\n\t\t\t\t\tkey,\n\t\t\t\t\treason: scoped.reason,\n\t\t\t\t\tsignature\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst collectionIndexKey = `${collection}:${stableStringify(scoped.index)}`;\n\t\t\tconst firstModel = declaredIndexOwners.get(collectionIndexKey);\n\t\t\tif (firstModel !== void 0) {\n\t\t\t\trefusals.push({\n\t\t\t\t\tkind: \"indexDuplicate\",\n\t\t\t\t\tkey,\n\t\t\t\t\tcollection,\n\t\t\t\t\tfirstModel,\n\t\t\t\t\tsignature\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tdeclaredIndexOwners.set(collectionIndexKey, modelName);\n\t\t\tstorageIndexes.push(scoped.index);\n\t\t});\n\t\tconst storageOptions = model.collectionOptions ? toStorageCollectionOptions(model.collectionOptions) : void 0;\n\t\tconst controlPatch = model.controlPolicy !== void 0 ? { control: model.controlPolicy } : {};\n\t\tintermediate[collection] = storageIndexes.length > 0 ? {\n\t\t\t...existingCollection,\n\t\t\tindexes: [...existingIndexes, ...storageIndexes],\n\t\t\t...storageOptions ? { options: storageOptions } : {},\n\t\t\t...controlPatch\n\t\t} : storageOptions ? {\n\t\t\t...existingCollection,\n\t\t\toptions: storageOptions,\n\t\t\t...controlPatch\n\t\t} : Object.keys(controlPatch).length > 0 ? {\n\t\t\t...existingCollection,\n\t\t\t...controlPatch\n\t\t} : existingCollection;\n\t}\n\treturn intermediate;\n}\n//#endregion\n//#region src/build-enums.ts\n/** Each enum with its members as its codec stores them. An enum the builder refuses is left out. */\nfunction buildEnums(definition, codecLookup, refusals) {\n\tconst builtEnums = {};\n\tfor (const [enumName, handle] of Object.entries(definition.enums ?? {})) {\n\t\tconst encoded = encodeEnumMembers(handle, codecLookup);\n\t\tif (!encoded.ok) {\n\t\t\tfor (const problem of encoded.failure) refusals.push({\n\t\t\t\tkind: \"enumMemberProblem\",\n\t\t\t\tkey: \"member\" in problem ? {\n\t\t\t\t\tkind: \"enumMember\",\n\t\t\t\t\tenumName,\n\t\t\t\t\tmember: problem.member\n\t\t\t\t} : {\n\t\t\t\t\tkind: \"enum\",\n\t\t\t\t\tenumName\n\t\t\t\t},\n\t\t\t\tenumName: handle.enumName,\n\t\t\t\tcodecId: handle.codecId,\n\t\t\t\tproblem\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tbuiltEnums[enumName] = {\n\t\t\tcodecId: handle.codecId,\n\t\t\tmembers: encoded.value\n\t\t};\n\t}\n\tfor (const [enumName, handle] of Object.entries(definition.enums ?? {})) if (enumName !== handle.enumName) refusals.push({\n\t\tkind: \"enumKeyMismatch\",\n\t\tkey: {\n\t\t\tkind: \"enum\",\n\t\t\tenumName\n\t\t},\n\t\tenumName: handle.enumName\n\t});\n\treturn builtEnums;\n}\n//#endregion\n//#region src/build-execution-defaults.ts\nconst PHASES = [\"onCreate\", \"onUpdate\"];\nfunction hasExecutionDefaults(field) {\n\tconst phases = field.executionDefaults;\n\tconst calls = field.generatorCalls;\n\tconst values = field.generatedValues;\n\treturn phases?.onCreate !== void 0 || phases?.onUpdate !== void 0 || values?.onCreate !== void 0 || values?.onUpdate !== void 0 || calls?.onCreate !== void 0 || calls?.onUpdate !== void 0;\n}\n/**\n* The phases a field generates: its resolved execution defaults, with the generators its calls resolve to for its codec. Undefined when a call is refused.\n*/\nfunction executionDefaultsOf(field, key, generatorFunctions, refusals) {\n\tconst typeGiven = field.executionDefaults;\n\tlet refused = false;\n\tfor (const phase of PHASES) if (typeGiven?.[phase] !== void 0 && field.generatedValues?.[phase] !== void 0) {\n\t\trefusals.push({\n\t\t\tkind: \"generatorPhaseSetTwice\",\n\t\t\tkey,\n\t\t\tphase\n\t\t});\n\t\trefused = true;\n\t}\n\tconst written = {\n\t\t...typeGiven,\n\t\t...field.generatedValues\n\t};\n\tconst calls = field.generatorCalls;\n\tif (calls === void 0) return refused ? void 0 : written;\n\tconst type = field.type;\n\tconst codecId = type.kind === \"scalar\" ? type.codecId : void 0;\n\tconst phases = written;\n\tfor (const phase of PHASES) {\n\t\tconst call = calls[phase];\n\t\tif (call === void 0) continue;\n\t\tif (written[phase] !== void 0) {\n\t\t\trefusals.push({\n\t\t\t\tkind: \"generatorPhaseSetTwice\",\n\t\t\t\tkey,\n\t\t\t\tphase\n\t\t\t});\n\t\t\trefused = true;\n\t\t\tcontinue;\n\t\t}\n\t\tconst resolution = type.kind === \"scalar\" ? generatorFunctions.resolve(call, {\n\t\t\tcodecId: type.codecId,\n\t\t\ttypeParams: type.typeParams,\n\t\t\tlength: void 0\n\t\t}) : void 0;\n\t\tif (resolution?.ok === true) {\n\t\t\tphases[phase] = resolution.generator;\n\t\t\tcontinue;\n\t\t}\n\t\trefused = true;\n\t\trefusals.push(resolution?.reason === \"unknown-function\" ? {\n\t\t\tkind: \"generatorUnknown\",\n\t\t\tkey,\n\t\t\tphase,\n\t\t\tfunctionName: call.name,\n\t\t\tcodecId\n\t\t} : {\n\t\t\tkind: \"generatorNotApplicable\",\n\t\t\tkey,\n\t\t\tphase,\n\t\t\tfunctionName: call.name,\n\t\t\tcodecId,\n\t\t\tmessage: resolution?.reason === \"refused\" ? resolution.message : void 0\n\t\t});\n\t}\n\treturn refused ? void 0 : phases;\n}\nfunction checkValueObjectExecutionDefaults(valueObjects, refusals) {\n\tfor (const valueObject of valueObjects ?? []) for (const field of valueObject.fields) if (hasExecutionDefaults(field)) refusals.push({\n\t\tkind: \"generatedOnValueObject\",\n\t\tkey: valueObjectFieldKey(valueObject.name, field.fieldName)\n\t});\n}\nfunction buildExecutionDefaults(input) {\n\tconst { models, generatorFunctions, namespaceId, refusals } = input;\n\tconst collectionByModelName = new Map(models.map((model) => [model.modelName, model.collection]));\n\tconst byRef = /* @__PURE__ */ new Map();\n\tconst defaults = [];\n\tfor (const model of models) {\n\t\tconst { modelName } = model;\n\t\tfor (const field of model.fields) {\n\t\t\tif (!hasExecutionDefaults(field)) continue;\n\t\t\tconst { fieldName } = field;\n\t\t\tconst key = modelFieldKey(modelName, fieldName);\n\t\t\tconst phases = executionDefaultsOf(field, key, generatorFunctions, refusals);\n\t\t\tif (phases === void 0) continue;\n\t\t\tif (field.many) {\n\t\t\t\trefusals.push({\n\t\t\t\t\tkind: \"generatedList\",\n\t\t\t\t\tkey\n\t\t\t\t});\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (model.base !== void 0) {\n\t\t\t\trefusals.push({\n\t\t\t\t\tkind: \"generatedOnVariant\",\n\t\t\t\t\tkey,\n\t\t\t\t\tbaseModel: model.base.model,\n\t\t\t\t\tcollection: model.collection ?? collectionByModelName.get(model.base.model)\n\t\t\t\t});\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst entry = model.collection;\n\t\t\tif (entry === void 0) {\n\t\t\t\trefusals.push({\n\t\t\t\t\tkind: \"generatedWithoutCollection\",\n\t\t\t\t\tkey\n\t\t\t\t});\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst storedName = storedNameOf(field);\n\t\t\tconst refKey = JSON.stringify([entry, storedName]);\n\t\t\tconst phasesKey = canonicalStringify(phases);\n\t\t\tconst existing = byRef.get(refKey);\n\t\t\tif (existing !== void 0) {\n\t\t\t\tif (existing.phasesKey !== phasesKey) refusals.push({\n\t\t\t\t\tkind: \"generatedConflict\",\n\t\t\t\t\tkey,\n\t\t\t\t\totherModel: existing.modelName,\n\t\t\t\t\totherField: existing.fieldName,\n\t\t\t\t\tcollection: entry\n\t\t\t\t});\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tbyRef.set(refKey, {\n\t\t\t\tmodelName,\n\t\t\t\tfieldName,\n\t\t\t\tphasesKey\n\t\t\t});\n\t\t\tdefaults.push({\n\t\t\t\tref: {\n\t\t\t\t\tnamespace: namespaceId,\n\t\t\t\t\tentry,\n\t\t\t\t\tfield: storedName\n\t\t\t\t},\n\t\t\t\t...phases\n\t\t\t});\n\t\t}\n\t}\n\treturn defaults;\n}\n//#endregion\n//#region src/build-fields.ts\nfunction generatesNothing(field) {\n\tconst contributed = field.presetContribution?.executionDefaults;\n\tconst calls = field.generatorCalls;\n\tconst values = field.generatedValues;\n\treturn values?.onCreate === void 0 && values?.onUpdate === void 0 && contributed?.onCreate === void 0 && contributed?.onUpdate === void 0 && calls?.onCreate === void 0 && calls?.onUpdate === void 0;\n}\nfunction checkField(field, key, input) {\n\tconst { type } = field;\n\tif (field.enumName !== void 0 && !input.declaredEnums.has(field.enumName)) input.refusals.push({\n\t\tkind: \"enumUnknown\",\n\t\tkey,\n\t\tenumName: field.enumName\n\t});\n\tif (type.kind === \"scalar\" && type.typeParams !== void 0) {\n\t\tconst problem = codecTypeParamsProblem(type.codecId, type.typeParams, input.lookups);\n\t\tif (problem !== void 0) input.refusals.push({\n\t\t\tkind: \"typeParamsInvalid\",\n\t\t\tkey,\n\t\t\tproblem\n\t\t});\n\t}\n\tif (field.presetContribution !== void 0 && type.kind === \"scalar\" && generatesNothing(field)) input.warnings.push({\n\t\tkind: \"presetWithoutEffect\",\n\t\tkey,\n\t\tpreset: field.presetContribution.preset,\n\t\tcodecId: type.codecId\n\t});\n}\n/**\n* Checks each field of the models and value objects on its own: its enum is declared, its data type accepts its type parameters, and a preset that made it generates a value.\n*/\nfunction checkFields(input) {\n\tfor (const model of input.models) for (const field of model.fields) checkField(field, modelFieldKey(model.modelName, field.fieldName), input);\n\tfor (const valueObject of input.valueObjects ?? []) for (const field of valueObject.fields) checkField(field, valueObjectFieldKey(valueObject.name, field.fieldName), input);\n}\n//#endregion\n//#region src/build-polymorphism.ts\n/**\n* The models with each variant stored in its base's collection: a variant that names no collection takes its base's, and one that names another is refused.\n*/\nfunction inheritVariantCollections(models, refusals) {\n\tconst modelsByName = new Map(models.map((model) => [model.modelName, model]));\n\treturn models.map((model) => {\n\t\tif (model.base === void 0) return model;\n\t\tconst baseCollection = modelsByName.get(model.base.model)?.collection;\n\t\tif (baseCollection === void 0) return model;\n\t\tif (model.collection === void 0) return {\n\t\t\t...model,\n\t\t\tcollection: baseCollection\n\t\t};\n\t\tif (model.collection !== baseCollection) refusals.push({\n\t\t\tkind: \"variantCollectionDiffers\",\n\t\t\tkey: {\n\t\t\t\tkind: \"collectionSettings\",\n\t\t\t\tmodel: model.modelName\n\t\t\t},\n\t\t\tcollection: model.collection,\n\t\t\tbaseModel: model.base.model,\n\t\t\tbaseCollection\n\t\t});\n\t\treturn model;\n\t});\n}\nfunction checkVariantShape(model, modelsByName, refusals) {\n\tif (model.base === void 0) return;\n\tconst key = {\n\t\tkind: \"base\",\n\t\tvariant: model.modelName\n\t};\n\tconst baseModel = model.base.model;\n\tif (model.discriminator !== void 0) refusals.push({\n\t\tkind: \"discriminatorAndBase\",\n\t\tkey: {\n\t\t\tkind: \"discriminator\",\n\t\t\tmodel: model.modelName\n\t\t}\n\t});\n\tconst base = modelsByName.get(baseModel);\n\tif (base === void 0) {\n\t\trefusals.push({\n\t\t\tkind: \"baseUnknown\",\n\t\t\tkey,\n\t\t\tbaseModel\n\t\t});\n\t\treturn;\n\t}\n\tif (base.discriminator === void 0) {\n\t\trefusals.push({\n\t\t\tkind: \"baseWithoutDiscriminator\",\n\t\t\tkey,\n\t\t\tbaseModel\n\t\t});\n\t\treturn;\n\t}\n\tif (model.base.value === void 0) refusals.push({\n\t\tkind: \"variantWithoutValue\",\n\t\tkey,\n\t\tbaseModel\n\t});\n}\n/** Each variant of `base` with the value its source wrote, in the order of the models. */\nfunction writtenVariantsOf(base, models) {\n\treturn models.flatMap((model) => model.base?.model === base.modelName && model.base.value !== void 0 ? [{\n\t\tkey: model.modelName,\n\t\twritten: model.base.value\n\t}] : []);\n}\nfunction decideDiscriminator(input) {\n\tconst { base, models, refusals } = input;\n\tconst discriminator = base.discriminator;\n\tif (discriminator === void 0 || base.base !== void 0) return /* @__PURE__ */ new Map();\n\tconst key = {\n\t\tkind: \"discriminator\",\n\t\tmodel: base.modelName\n\t};\n\tconst variantNames = new Set(models.filter((model) => model.base?.model === base.modelName).map((model) => model.modelName));\n\tfor (const listed of discriminator.listedVariants ?? []) if (!variantNames.has(listed)) refusals.push({\n\t\tkind: \"listedVariantMissing\",\n\t\tkey,\n\t\tvariant: listed\n\t});\n\tif (variantNames.size === 0) refusals.push({\n\t\tkind: \"discriminatorWithoutVariants\",\n\t\tkey\n\t});\n\tconst fieldName = discriminator.field;\n\tconst field = base.fields.find((candidate) => candidate.fieldName === fieldName);\n\tif (field === void 0) {\n\t\trefusals.push({\n\t\t\tkind: \"discriminatorFieldUnknown\",\n\t\t\tkey,\n\t\t\tfieldName\n\t\t});\n\t\treturn /* @__PURE__ */ new Map();\n\t}\n\tconst { type } = field;\n\tconst enumMembers = field.enumName === void 0 ? void 0 : input.enums[field.enumName]?.members.map((member) => member.value);\n\tconst decision = applyDiscriminatorRule({\n\t\tfield: {\n\t\t\tref: type.kind === \"scalar\" ? {\n\t\t\t\tcodecId: type.codecId,\n\t\t\t\t...type.typeParams ? { typeParams: blindCast(type.typeParams) } : {}\n\t\t\t} : void 0,\n\t\t\tnullable: field.nullable,\n\t\t\tmany: field.many !== false,\n\t\t\tenumMembers\n\t\t},\n\t\tvariants: writtenVariantsOf(base, models),\n\t\tsubject: `Field \"${base.modelName}.${fieldName}\"`,\n\t\tcodecLookup: input.codecLookup,\n\t\tdataTypes: input.dataTypes\n\t});\n\tfor (const refusal of decision.fieldRefusals) refusals.push({\n\t\tkind: \"discriminatorField\",\n\t\tkey,\n\t\tfieldName,\n\t\trefusal\n\t});\n\tfor (const refusal of decision.variantRefusals) refusals.push({\n\t\tkind: \"discriminatorValue\",\n\t\tkey: {\n\t\t\tkind: \"base\",\n\t\t\tvariant: refusal.key\n\t\t},\n\t\tbaseModel: base.modelName,\n\t\tfieldName,\n\t\tenumName: field.enumName,\n\t\trefusal\n\t});\n\tconst variantsByValue = /* @__PURE__ */ new Map();\n\tfor (const [variant, value] of decision.values) {\n\t\tconst firstVariant = variantsByValue.get(value);\n\t\tif (firstVariant !== void 0) {\n\t\t\trefusals.push({\n\t\t\t\tkind: \"discriminatorValueDuplicate\",\n\t\t\t\tkey: {\n\t\t\t\t\tkind: \"base\",\n\t\t\t\t\tvariant\n\t\t\t\t},\n\t\t\t\tbaseModel: base.modelName,\n\t\t\t\tvalue,\n\t\t\t\tfirstVariant\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tvariantsByValue.set(value, variant);\n\t}\n\treturn decision.values;\n}\n/**\n* Checks each base and variant, and decides each variant's discriminator value with the framework's discriminator rule. Returns each accepted variant's value as its base's discriminator field stores it.\n*/\nfunction decidePolymorphism(input) {\n\tconst { models, refusals } = input;\n\tconst modelsByName = new Map(models.map((model) => [model.modelName, model]));\n\tconst values = /* @__PURE__ */ new Map();\n\tfor (const model of models) {\n\t\tcheckVariantShape(model, modelsByName, refusals);\n\t\tfor (const [variant, value] of decideDiscriminator({\n\t\t\t...input,\n\t\t\tbase: model\n\t\t})) values.set(variant, value);\n\t}\n\treturn values;\n}\n//#endregion\n//#region src/build-contract.ts\n/** Whether a refusal is about listing an enum in a collection validator, which matters only when collections get validators. */\nfunction isAboutEnumListing(refusal) {\n\treturn refusal.kind === \"enumBsonType\" || refusal.kind === \"enumNotListable\" || refusal.kind === \"enumMemberNotListable\";\n}\n/**\n* Builds a MongoDB contract from its plain-data definition, with the stack's codecs and data types. Every MongoDB family rule is checked here, and each refusal comes back as data keyed by the part of the definition it is about, for the source to report in its own terms.\n*/\nfunction buildMongoContractFromDefinition(definition, codecLookup, dataTypes) {\n\tconst refusals = [];\n\tconst warnings = (definition.warnings ?? []).map((warning) => ({\n\t\tkind: \"source\",\n\t\twarning\n\t}));\n\tconst namespaceId = definition.target.defaultNamespaceId;\n\tconst lookups = {\n\t\tcodecLookup,\n\t\tdataTypeLookup: dataTypes.lookup\n\t};\n\tconst generatorFunctions = assembleGeneratorFunctions([definition.target, ...Object.values(definition.extensions ?? {})]);\n\tconst models = inheritVariantCollections(definition.models, refusals);\n\tconst builtEnums = buildEnums(definition, codecLookup, refusals);\n\tconst variantValues = decidePolymorphism({\n\t\tmodels,\n\t\tenums: builtEnums,\n\t\tcodecLookup,\n\t\tdataTypes,\n\t\trefusals\n\t});\n\tconst builtModels = buildModels({\n\t\tmodels,\n\t\tvariantValues,\n\t\tnamespaceId,\n\t\trefusals\n\t});\n\tconst builtValueObjects = buildValueObjects(definition.valueObjects, namespaceId, refusals);\n\tcheckFields({\n\t\tmodels,\n\t\tvalueObjects: definition.valueObjects,\n\t\tdeclaredEnums: new Set(Object.keys(definition.enums ?? {})),\n\t\tlookups,\n\t\trefusals,\n\t\twarnings\n\t});\n\tconst collections = buildCollections({\n\t\tmodels,\n\t\tvariantValues,\n\t\trefusals\n\t});\n\tcheckValueObjectExecutionDefaults(definition.valueObjects, refusals);\n\tconst executionDefaults = buildExecutionDefaults({\n\t\tmodels,\n\t\tgeneratorFunctions,\n\t\tnamespaceId,\n\t\trefusals\n\t});\n\tif (refusals.length > 0) return notOk({\n\t\trefusals,\n\t\twarnings\n\t});\n\tconst controlPolicies = {\n\t\tcollections: Object.fromEntries(Object.entries(collections).map(([name, collection]) => [name, collection.control])),\n\t\tdefaultControlPolicy: definition.defaultControlPolicy\n\t};\n\tconst validatorRefusals = mongoContractRefusalsOf({\n\t\tmodels: builtModels,\n\t\tvalueObjects: builtValueObjects,\n\t\tenums: builtEnums,\n\t\tlookups,\n\t\tcontrolPolicies\n\t}).filter((refusal) => definition.writesCollectionValidators || !isAboutEnumListing(refusal));\n\tif (validatorRefusals.length > 0) return notOk({\n\t\trefusals: validatorRefusals.map((refusal) => ({\n\t\t\tkind: \"validator\",\n\t\t\tkey: validatorRefusalKey(refusal),\n\t\t\trefusal\n\t\t})),\n\t\twarnings\n\t});\n\tconst storageValueSets = mongoValueSetsOf(builtEnums);\n\tconst validators = definition.writesCollectionValidators ? deriveCollectionValidators({\n\t\tmodels: builtModels,\n\t\tlookups,\n\t\tvalueObjects: builtValueObjects,\n\t\tvalueSets: storageValueSets,\n\t\tcontrolPolicies\n\t}) : {};\n\tconst storage = buildMongoStorage({\n\t\tnamespaceId,\n\t\tcollections: Object.fromEntries(Object.entries(collections).map(([name, collection]) => [name, {\n\t\t\t...collection,\n\t\t\t...ifDefined(\"validator\", validators[name])\n\t\t}])),\n\t\tvalueSets: storageValueSets\n\t});\n\tconst capabilities = {};\n\tconst execution = buildExecutionSection({\n\t\ttarget: definition.target.targetId,\n\t\ttargetFamily: definition.target.familyId,\n\t\tdefaults: executionDefaults\n\t});\n\treturn ok({\n\t\tcontract: {\n\t\t\ttarget: definition.target.targetId,\n\t\t\ttargetFamily: definition.target.familyId,\n\t\t\t...ifDefined(\"defaultControlPolicy\", definition.defaultControlPolicy),\n\t\t\troots: buildRoots(definition, models, namespaceId),\n\t\t\tdomain: { namespaces: { [namespaceId]: {\n\t\t\t\tmodels: builtModels,\n\t\t\t\t...Object.keys(builtValueObjects).length > 0 ? { valueObjects: builtValueObjects } : {},\n\t\t\t\t...Object.keys(builtEnums).length > 0 ? { enum: builtEnums } : {}\n\t\t\t} } },\n\t\t\tstorage,\n\t\t\tcapabilities,\n\t\t\textensions: definition.extensions ?? {},\n\t\t\tprofileHash: computeProfileHash({\n\t\t\t\ttarget: definition.target.targetId,\n\t\t\t\ttargetFamily: definition.target.familyId,\n\t\t\t\tcapabilities\n\t\t\t}),\n\t\t\tmeta: {},\n\t\t\t...ifDefined(\"execution\", execution)\n\t\t},\n\t\twarnings\n\t});\n}\n//#endregion\n//#region src/contract-dsl.ts\nfunction resolveModelName(value) {\n\treturn typeof value === \"string\" ? value : value.__name;\n}\n//#endregion\n//#region src/contract-lowering.ts\nfunction validateTargetPackRef(family, target) {\n\tif (family.familyId !== \"mongo\") throw contractError(\"CONTRACT.PACK_FAMILY_MISMATCH\", `defineContract only accepts Mongo family packs. Received family \"${family.familyId}\".`, { meta: {\n\t\tpackId: family.id,\n\t\tpackFamilyId: family.familyId,\n\t\tcontractFamilyId: \"mongo\"\n\t} });\n\tif (target.familyId !== family.familyId) throw contractError(\"CONTRACT.PACK_FAMILY_MISMATCH\", `target pack \"${target.id}\" targets family \"${target.familyId}\" but contract family is \"${family.familyId}\".`, { meta: {\n\t\tpackId: target.id,\n\t\tpackFamilyId: target.familyId,\n\t\tcontractFamilyId: family.familyId\n\t} });\n}\nfunction validateExtensionPackRefs(target, extensions) {\n\tfor (const packRef of Object.values(extensions ?? {})) {\n\t\tif (packRef.kind !== \"extension\") throw contractError(\"CONTRACT.PACK_REF_INVALID\", `defineContract only accepts extension pack refs in extensions. Received kind \"${packRef.kind}\".`, { meta: {\n\t\t\tpackId: packRef.id,\n\t\t\tkind: packRef.kind\n\t\t} });\n\t\tif (packRef.familyId !== target.familyId) throw contractError(\"CONTRACT.PACK_FAMILY_MISMATCH\", `extension pack \"${packRef.id}\" targets family \"${packRef.familyId}\" but contract target family is \"${target.familyId}\".`, { meta: {\n\t\t\tpackId: packRef.id,\n\t\t\tpackFamilyId: packRef.familyId,\n\t\t\tcontractFamilyId: target.familyId\n\t\t} });\n\t\tif (packRef.targetId && packRef.targetId !== target.targetId) throw contractError(\"CONTRACT.PACK_TARGET_MISMATCH\", `extension pack \"${packRef.id}\" targets \"${packRef.targetId}\" but contract target is \"${target.targetId}\".`, { meta: {\n\t\t\tpackId: packRef.id,\n\t\t\tpackTargetId: packRef.targetId,\n\t\t\tcontractTargetId: target.targetId\n\t\t} });\n\t}\n}\nfunction fieldNodes(fields) {\n\treturn Object.entries(fields).map(([fieldName, builder]) => ({\n\t\tfieldName,\n\t\t...ifDefined(\"storedName\", builder.__storedName),\n\t\ttype: builder.__type,\n\t\tnullable: builder.__nullable,\n\t\tmany: builder.__many,\n\t\t...ifDefined(\"enumName\", builder.__enumHandle?.enumName),\n\t\t...ifDefined(\"executionDefaults\", builder.__executionDefaults),\n\t\t...ifDefined(\"generatorCalls\", builder.__generatorCalls),\n\t\t...ifDefined(\"presetContribution\", builder.__presetContribution)\n\t}));\n}\nfunction relationNodes(builder) {\n\treturn Object.entries(builder.__relations).map(([relationName, relation]) => {\n\t\tconst common = {\n\t\t\trelationName,\n\t\t\ttoModel: relation.__to,\n\t\t\tnullable: relation.__nullable\n\t\t};\n\t\treturn relation.__on === void 0 ? {\n\t\t\t...common,\n\t\t\tcardinality: relation.__cardinality\n\t\t} : {\n\t\t\t...common,\n\t\t\tcardinality: relation.__cardinality,\n\t\t\ton: relation.__on\n\t\t};\n\t});\n}\nfunction modelNode(builder, buildersByName) {\n\tconst base = builder.__base;\n\tconst variantValue = base === void 0 ? void 0 : buildersByName.get(base)?.__variants?.[builder.__name]?.value;\n\treturn {\n\t\tmodelName: builder.__name,\n\t\t...ifDefined(\"collection\", builder.__collection),\n\t\t...ifDefined(\"owner\", builder.__owner),\n\t\t...ifDefined(\"storageRelations\", builder.__storageRelations),\n\t\t...ifDefined(\"controlPolicy\", builder.__controlPolicy),\n\t\t...ifDefined(\"collectionOptions\", builder.__collectionOptions),\n\t\t...ifDefined(\"indexes\", builder.__indexes),\n\t\tfields: fieldNodes(builder.__fields),\n\t\trelations: relationNodes(builder),\n\t\t...builder.__discriminator === void 0 ? {} : { discriminator: {\n\t\t\tfield: builder.__discriminator.field,\n\t\t\tlistedVariants: Object.keys(builder.__variants ?? {})\n\t\t} },\n\t\t...base === void 0 ? {} : { base: {\n\t\t\tmodel: base,\n\t\t\tvalue: variantValue === void 0 ? void 0 : {\n\t\t\t\tkind: \"string\",\n\t\t\t\ttext: variantValue\n\t\t\t}\n\t\t} }\n\t};\n}\nfunction valueObjectNode(builder) {\n\treturn {\n\t\tname: builder.__name,\n\t\tfields: fieldNodes(builder.__fields)\n\t};\n}\n/** Turns `defineContract`'s builder objects into the plain-data definition the contract is built from. */\nfunction buildContractDefinition(input) {\n\tconst { target } = input;\n\tvalidateTargetPackRef(input.family, target);\n\tvalidateExtensionPackRefs(target, input.extensions);\n\tconst builders = Object.values(input.models ?? {});\n\tconst buildersByName = /* @__PURE__ */ new Map();\n\tfor (const builder of builders) if (!buildersByName.has(builder.__name)) buildersByName.set(builder.__name, builder);\n\treturn {\n\t\ttarget,\n\t\t...ifDefined(\"extensions\", input.extensions),\n\t\t...ifDefined(\"defaultControlPolicy\", input.defaultControlPolicy),\n\t\tmodels: builders.map((builder) => modelNode(builder, buildersByName)),\n\t\tvalueObjects: Object.values(input.valueObjects ?? {}).map(valueObjectNode),\n\t\t...ifDefined(\"enums\", input.enums),\n\t\t...ifDefined(\"roots\", input.roots === void 0 ? void 0 : Object.fromEntries(Object.entries(input.roots).map(([rootName, model]) => [rootName, resolveModelName(model)]))),\n\t\twritesCollectionValidators: true,\n\t\twarnings: void 0\n\t};\n}\n//#endregion\n//#region src/refusal-errors.ts\nconst LIST_THE_CODEC_PACK = \"List the pack that provides the codec in `extensions` in defineContract.\";\nfunction codecRefusalError(subject, meta, codecId, refusal) {\n\tif (refusal.kind === \"unknownCodec\") return contractError(\"CONTRACT.CODEC_DESCRIPTOR_MISSING\", `${subject} ${refusal.reason}`, {\n\t\tfix: LIST_THE_CODEC_PACK,\n\t\tmeta: {\n\t\t\t...meta,\n\t\t\tcodecId\n\t\t}\n\t});\n\treturn contractError(\"CONTRACT.PACK_CONTRIBUTION_INVALID\", `${subject} ${refusal.reason}`, {\n\t\tfix: \"Use a codec whose data type is a MongoDB data type, declared with mongoDataType.\",\n\t\tmeta: {\n\t\t\t...meta,\n\t\t\tcodecId,\n\t\t\tdataType: refusal.dataType,\n\t\t\treason: \"data-type-not-mongo\"\n\t\t}\n\t});\n}\nfunction validatorRefusalError(refusal) {\n\tswitch (refusal.kind) {\n\t\tcase \"embeddedModelHasVariants\": return contractError(\"CONTRACT.RELATION_INVALID\", `Relation \"${refusal.modelName}.${refusal.relationName}\" ${refusal.reason}`, { meta: {\n\t\t\tmodelName: refusal.modelName,\n\t\t\trelationName: refusal.relationName,\n\t\t\treason: \"embedded-model-has-variants\"\n\t\t} });\n\t\tcase \"enumBsonType\": return codecRefusalError(`enumType(\"${refusal.enumName}\")`, { enumName: refusal.enumName }, refusal.codecId, refusal.refusal);\n\t\tcase \"enumNotListable\": return contractError(\"CONTRACT.ENUM_INVALID\", `enumType(\"${refusal.enumName}\") codec \"${refusal.codecId}\" ${refusal.reason}`, { meta: {\n\t\t\tenumName: refusal.enumName,\n\t\t\tcodecId: refusal.codecId,\n\t\t\treason: \"not-listable-by-validator\"\n\t\t} });\n\t\tcase \"enumMemberNotListable\": return contractError(\"CONTRACT.ENUM_INVALID\", `enumType(\"${refusal.enumName}\") member \"${refusal.member}\" ${refusal.reason}`, { meta: {\n\t\t\tenumName: refusal.enumName,\n\t\t\tmember: refusal.member,\n\t\t\tcodecId: refusal.codecId,\n\t\t\treason: \"member-not-listable-by-validator\"\n\t\t} });\n\t\tcase \"fieldBsonType\": {\n\t\t\tconst { owner } = refusal;\n\t\t\tconst label = owner.kind === \"model\" ? \"Model\" : \"Value object\";\n\t\t\tconst ownerMeta = owner.kind === \"model\" ? { modelName: owner.name } : { valueObjectName: owner.name };\n\t\t\treturn codecRefusalError(`${label} \"${owner.name}\" field \"${refusal.fieldName}\"`, {\n\t\t\t\t...ownerMeta,\n\t\t\t\tfieldName: refusal.fieldName\n\t\t\t}, refusal.codecId, refusal.refusal);\n\t\t}\n\t\tcase \"documentId\": return contractError(\"CONTRACT.COLLECTION_INVALID\", `Model \"${refusal.modelName}\" field \"${refusal.fieldName}\" ${refusal.reason}`, { meta: {\n\t\t\tmodelName: refusal.modelName,\n\t\t\tfieldName: refusal.fieldName,\n\t\t\tcollection: refusal.collection,\n\t\t\tcodecId: refusal.codecId,\n\t\t\tbsonTypes: refusal.forbidden,\n\t\t\treason: \"document-id-bson-type\"\n\t\t} });\n\t}\n}\nfunction defaultError(key, reason, message) {\n\treturn contractError(\"CONTRACT.DEFAULT_INVALID\", `Field \"${`${key.owner.name}.${key.field}`}\" ${message}`, { meta: {\n\t\tmodelName: key.owner.name,\n\t\tfieldName: key.field,\n\t\treason\n\t} });\n}\nfunction ownerMetaOf(key) {\n\treturn key.owner.kind === \"model\" ? {\n\t\tmodelName: key.owner.name,\n\t\tfieldName: key.field\n\t} : {\n\t\tvalueObjectName: key.owner.name,\n\t\tfieldName: key.field\n\t};\n}\nfunction ownerLabelOf(key) {\n\treturn `${key.owner.kind === \"model\" ? \"Model\" : \"Value object\"} \"${key.owner.name}\" field \"${key.field}\"`;\n}\nconst INDEX_SHAPE_MESSAGES = {\n\t\"unique-wildcard\": \"is unique and has a wildcard key; a unique index cannot use a wildcard.\",\n\t\"wildcard-with-type\": \"combines a wildcard key with a hashed, 2d or 2dsphere key, which MongoDB does not allow.\",\n\t\"hashed-several-fields\": \"is hashed on several fields; a hashed index has exactly one field.\",\n\t\"ttl-with-wildcard\": \"sets expireAfterSeconds on a wildcard index, which MongoDB does not allow.\",\n\t\"projection-without-wildcard\": \"sets wildcardProjection but has no wildcard key; a wildcard projection needs a wildcard index.\",\n\t\"collation-without-locale\": \"sets a collation without a locale; a collation needs a locale.\",\n\t\"second-text-index\": \"is a second text index in its collection; MongoDB allows one text index per collection.\"\n};\nfunction discriminatorFieldError(refusal) {\n\tconst field = `Discriminator field \"${refusal.key.model}.${refusal.fieldName}\"`;\n\tconst meta = {\n\t\tmodelName: refusal.key.model,\n\t\tfieldName: refusal.fieldName\n\t};\n\tswitch (refusal.refusal.kind) {\n\t\tcase \"optional\": return contractError(\"CONTRACT.ARGUMENT_INVALID\", `${field} must be required, but it is optional. Remove .optional().`, { meta: {\n\t\t\t...meta,\n\t\t\treason: \"discriminator-optional\"\n\t\t} });\n\t\tcase \"list\": return contractError(\"CONTRACT.ARGUMENT_INVALID\", `${field} must hold one value, but it is a list. Remove .many().`, { meta: {\n\t\t\t...meta,\n\t\t\treason: \"discriminator-list\"\n\t\t} });\n\t\tcase \"not-text\": {\n\t\t\tconst { dataType } = refusal.refusal;\n\t\t\treturn contractError(\"CONTRACT.ARGUMENT_INVALID\", `${field} must be text, such as field.string(), but its data type is ${dataType === void 0 ? \"not a scalar\" : `\"${dataType}\"`}.`, { meta: {\n\t\t\t\t...meta,\n\t\t\t\tdataType,\n\t\t\t\treason: \"discriminator-not-text\"\n\t\t\t} });\n\t\t}\n\t}\n}\n/** The error `defineContract` throws for a refusal of the builder. */\nfunction refusalError(refusal) {\n\tswitch (refusal.kind) {\n\t\tcase \"duplicateModel\": return contractError(\"CONTRACT.NAME_DUPLICATE\", `Duplicate model name \"${refusal.key.model}\" in defineContract().`, { meta: {\n\t\t\tkind: \"model\",\n\t\t\tname: refusal.key.model\n\t\t} });\n\t\tcase \"duplicateValueObject\": return contractError(\"CONTRACT.NAME_DUPLICATE\", `Duplicate value object name \"${refusal.key.valueObject}\" in defineContract().`, { meta: {\n\t\t\tkind: \"valueObject\",\n\t\t\tname: refusal.key.valueObject\n\t\t} });\n\t\tcase \"storedNameUnsupported\": return contractError(\"CONTRACT.ARGUMENT_INVALID\", `Model \"${refusal.key.owner.name}\" field \"${refusal.key.field}\" ${refusal.reason}. Give it another stored name.`, { meta: {\n\t\t\tmodelName: refusal.key.owner.name,\n\t\t\tfieldName: refusal.key.field,\n\t\t\treason: \"stored-name-unsupported\"\n\t\t} });\n\t\tcase \"storedNameDuplicate\": return contractError(\"CONTRACT.NAME_DUPLICATE\", `Model \"${refusal.key.owner.name}\" stores both \"${refusal.firstField}\" and \"${refusal.key.field}\" as \"${refusal.storedName}\".`, { meta: {\n\t\t\tkind: \"field\",\n\t\t\tname: refusal.storedName,\n\t\t\tfirst: refusal.firstField,\n\t\t\tsecond: refusal.key.field\n\t\t} });\n\t\tcase \"restatedBaseFieldDiffers\": return contractError(\"CONTRACT.ARGUMENT_INVALID\", `Variant model \"${refusal.key.owner.name}\" restates field \"${refusal.key.field}\" of its base \"${refusal.baseModel}\" with a different ${refusal.differences.map(differenceWording).join(\" and \")}. A variant's documents are checked against the base's field, so restate it exactly or remove it from the variant.`, { meta: {\n\t\t\tmodelName: refusal.key.owner.name,\n\t\t\tfieldName: refusal.key.field,\n\t\t\tbaseModel: refusal.baseModel,\n\t\t\tdifferences: refusal.differences,\n\t\t\treason: \"restated-base-field-differs\"\n\t\t} });\n\t\tcase \"storedNameSharedWithBase\": return contractError(\"CONTRACT.NAME_DUPLICATE\", `Variant model \"${refusal.key.owner.name}\" field \"${refusal.key.field}\" is stored as \"${refusal.storedName}\", which its base \"${refusal.baseModel}\" stores field \"${refusal.baseField}\" under. A variant's documents hold its base's fields too, so give the field another stored name.`, { meta: {\n\t\t\tkind: \"field\",\n\t\t\tname: refusal.storedName,\n\t\t\tfirst: `${refusal.baseModel}.${refusal.baseField}`,\n\t\t\tsecond: `${refusal.key.owner.name}.${refusal.key.field}`,\n\t\t\treason: \"stored-name-shared-with-base\"\n\t\t} });\n\t\tcase \"valueObjectFieldStoredName\": return contractError(\"CONTRACT.ARGUMENT_INVALID\", `Value object \"${refusal.key.owner.name}\" field \"${refusal.key.field}\" sets .mongo({ field }), but a field of a value object is stored under its own name.`, { meta: {\n\t\t\tvalueObjectName: refusal.key.owner.name,\n\t\t\tfieldName: refusal.key.field,\n\t\t\treason: \"value-object-field-stored-name\"\n\t\t} });\n\t\tcase \"relationLocalFieldUnknown\": {\n\t\t\tconst { model, relation } = refusal.key;\n\t\t\treturn contractError(\"CONTRACT.RELATION_INVALID\", `Relation \"${model}.${relation}\" joins on local field \"${refusal.fieldName}\", which model \"${model}\" does not declare`, { meta: {\n\t\t\t\tmodelName: model,\n\t\t\t\trelationName: relation,\n\t\t\t\tfieldName: refusal.fieldName,\n\t\t\t\treason: \"local-field-unknown\"\n\t\t\t} });\n\t\t}\n\t\tcase \"relationNullability\": {\n\t\t\tconst { model, relation } = refusal.key;\n\t\t\tconst location = `Relation \"${model}.${relation}\"`;\n\t\t\treturn contractError(\"CONTRACT.RELATION_INVALID\", !refusal.ownsForeignKey ? `${location} is required but does not own the foreign key, so nothing in storage guarantees the related document exists` : refusal.contradiction === \"declared-optional\" ? `${location} is optional but every local field it joins on is required` : `${location} is required but a local field it joins on is nullable`, { meta: {\n\t\t\t\tmodelName: model,\n\t\t\t\trelationName: relation,\n\t\t\t\treason: \"to-one-nullability-mismatch\"\n\t\t\t} });\n\t\t}\n\t\tcase \"collectionSettingWithoutCollection\": {\n\t\t\tconst modelName = refusal.key.model;\n\t\t\tconst what = refusal.setting === \"controlPolicy\" ? \"it\" : \"them\";\n\t\t\treturn contractError(\"CONTRACT.COLLECTION_INVALID\", `Model \"${modelName}\" defines ${refusal.setting} but has no collection to attach ${what} to.`, { meta: {\n\t\t\t\tmodelName,\n\t\t\t\treason: `${refusal.setting}-without-collection`\n\t\t\t} });\n\t\t}\n\t\tcase \"collectionSettingTwice\": return contractError(\"CONTRACT.COLLECTION_INVALID\", `Collection \"${refusal.collection}\" has ${refusal.setting} declared by multiple models. Author ${refusal.setting} on a single model per collection.`, { meta: {\n\t\t\tmodelName: refusal.key.model,\n\t\t\tcollection: refusal.collection,\n\t\t\treason: `${refusal.setting}-declared-by-multiple-models`\n\t\t} });\n\t\tcase \"variantCollectionDiffers\": return contractError(\"CONTRACT.COLLECTION_INVALID\", `Variant model \"${refusal.key.model}\" is stored in collection \"${refusal.collection}\", but its base \"${refusal.baseModel}\" is stored in \"${refusal.baseCollection}\". A variant is stored in its base's collection; leave its collection out.`, { meta: {\n\t\t\tmodelName: refusal.key.model,\n\t\t\tcollection: refusal.collection,\n\t\t\tbaseModel: refusal.baseModel,\n\t\t\tbaseCollection: refusal.baseCollection,\n\t\t\treason: \"variant-collection-differs\"\n\t\t} });\n\t\tcase \"indexFieldUnknown\": return contractError(\"CONTRACT.FIELD_UNKNOWN\", `Model \"${refusal.key.model}\" index ${refusal.signature} references unknown field \"${refusal.fieldName}\".`, { meta: {\n\t\t\tmodelName: refusal.key.model,\n\t\t\tfieldName: refusal.fieldName,\n\t\t\tindexSignature: refusal.signature\n\t\t} });\n\t\tcase \"indexShape\": return contractError(\"CONTRACT.INDEX_INVALID\", `Model \"${refusal.key.model}\" index ${refusal.signature} ${INDEX_SHAPE_MESSAGES[refusal.rule]}`, { meta: {\n\t\t\tmodelName: refusal.key.model,\n\t\t\tindexSignature: refusal.signature,\n\t\t\treason: refusal.rule\n\t\t} });\n\t\tcase \"indexScopeConflict\": return contractError(\"CONTRACT.INDEX_INVALID\", `Variant model \"${refusal.key.model}\" index ${refusal.signature} conflicts with discriminator scope: ${refusal.reason}`, { meta: {\n\t\t\tvariantName: refusal.key.model,\n\t\t\tindexLabel: refusal.signature,\n\t\t\treason: refusal.reason\n\t\t} });\n\t\tcase \"indexDuplicate\": return contractError(\"CONTRACT.NAME_DUPLICATE\", `Collection \"${refusal.collection}\" defines duplicate index ${refusal.signature}. First declared on model \"${refusal.firstModel}\" and duplicated on model \"${refusal.key.model}\".`, { meta: {\n\t\t\tkind: \"index\",\n\t\t\tname: refusal.signature,\n\t\t\tcollection: refusal.collection,\n\t\t\tfirst: refusal.firstModel,\n\t\t\tsecond: refusal.key.model\n\t\t} });\n\t\tcase \"generatedOnValueObject\": return defaultError(refusal.key, \"executionDefaults-on-value-object\", \"has executionDefaults, but it belongs to a value object. Generated values are only supported on model fields.\");\n\t\tcase \"generatorUnknown\": {\n\t\t\tconst { owner, field } = refusal.key;\n\t\t\treturn contractError(\"CONTRACT.DEFAULT_INVALID\", `Field \"${owner.name}.${field}\": no pack in the contract declares the generator function \"${refusal.functionName}\".`, { meta: {\n\t\t\t\tmodelName: owner.name,\n\t\t\t\tfieldName: field,\n\t\t\t\tcodecId: refusal.codecId,\n\t\t\t\tfunction: refusal.functionName,\n\t\t\t\treason: \"generator-unknown\"\n\t\t\t} });\n\t\t}\n\t\tcase \"generatorNotApplicable\": {\n\t\t\tconst { owner, field } = refusal.key;\n\t\t\tconst subject = `Field \"${owner.name}.${field}\"`;\n\t\t\treturn contractError(\"CONTRACT.DEFAULT_INVALID\", refusal.message !== void 0 ? `${subject}: ${refusal.message}` : `${subject}: ${refusal.functionName}() does not apply to ${refusal.codecId === void 0 ? \"the field's type\" : `codec \"${refusal.codecId}\"`}.`, { meta: {\n\t\t\t\tmodelName: owner.name,\n\t\t\t\tfieldName: field,\n\t\t\t\tcodecId: refusal.codecId,\n\t\t\t\tfunction: refusal.functionName,\n\t\t\t\treason: \"generator-not-applicable\"\n\t\t\t} });\n\t\t}\n\t\tcase \"generatorPhaseSetTwice\": return contractError(\"CONTRACT.DEFAULT_INVALID\", `.${refusal.phase}() is called on a field that already generates a value ${refusal.phase === \"onCreate\" ? \"on create\" : \"on update\"}. Set each phase once, and do not combine .${refusal.phase}() with a field preset, type alias or alias constant that sets it.`, { meta: {\n\t\t\tmodelName: refusal.key.owner.name,\n\t\t\tfieldName: refusal.key.field,\n\t\t\treason: \"generator-phase-set-twice\",\n\t\t\tphase: refusal.phase\n\t\t} });\n\t\tcase \"generatedList\": return defaultError(refusal.key, \"many-with-executionDefaults\", \"generates a value on write, so it cannot be a list; remove .many().\");\n\t\tcase \"generatedOnVariant\": return defaultError(refusal.key, \"executionDefaults-on-variant\", `has executionDefaults, but \"${refusal.key.owner.name}\" is a variant of \"${refusal.baseModel}\". Execution defaults apply to every document in collection \"${refusal.collection}\", so declare them on the base model.`);\n\t\tcase \"generatedWithoutCollection\": return defaultError(refusal.key, \"executionDefaults-without-collection\", \"has executionDefaults, but its model has no collection. Generated values are only supported on fields of a model stored in a collection.\");\n\t\tcase \"generatedConflict\": return defaultError(refusal.key, \"executionDefaults-conflict\", `has different executionDefaults than \"${refusal.otherModel}.${refusal.otherField}\", which is stored in the same collection \"${refusal.collection}\". Use the same executionDefaults on both models.`);\n\t\tcase \"typeParamsInvalid\": return structuredError(\"CONTRACT.TYPE_PARAMS_INVALID\", refusal.problem.message, { meta: {\n\t\t\tdataType: refusal.problem.dataType,\n\t\t\tparameters: refusal.problem.parameters,\n\t\t\t...ownerMetaOf(refusal.key)\n\t\t} });\n\t\tcase \"enumKeyMismatch\": return contractError(\"CONTRACT.ENUM_INVALID\", `enum declaration key \"${refusal.key.enumName}\" must match enumType name \"${refusal.enumName}\". Aliases are not supported.`, { meta: {\n\t\t\tenumName: refusal.enumName,\n\t\t\tdeclaredKey: refusal.key.enumName,\n\t\t\treason: \"declaration-key-mismatch\"\n\t\t} });\n\t\tcase \"enumMemberProblem\": return enumMemberError({\n\t\t\tenumName: refusal.enumName,\n\t\t\tcodecId: refusal.codecId\n\t\t}, refusal.problem, \"the field\");\n\t\tcase \"enumUnknown\": return contractError(\"CONTRACT.ENUM_UNKNOWN\", `${ownerLabelOf(refusal.key)} references enum \"${refusal.enumName}\" which is not declared in defineContract({ enums: { ... } }).`, { meta: {\n\t\t\t...ownerMetaOf(refusal.key),\n\t\t\tenumName: refusal.enumName\n\t\t} });\n\t\tcase \"discriminatorValueDuplicate\": return contractError(\"CONTRACT.ARGUMENT_INVALID\", `Discriminator value \"${refusal.value}\" is used by both \"${refusal.firstVariant}\" and \"${refusal.key.variant}\" on base model \"${refusal.baseModel}\".`, { meta: {\n\t\t\tmodelName: refusal.baseModel,\n\t\t\tvalue: refusal.value,\n\t\t\tvariants: [refusal.firstVariant, refusal.key.variant],\n\t\t\treason: \"duplicate-discriminator-value\"\n\t\t} });\n\t\tcase \"discriminatorFieldUnknown\": return contractError(\"CONTRACT.FIELD_UNKNOWN\", `Model \"${refusal.key.model}\" names \"${refusal.fieldName}\" as its discriminator, but declares no field \"${refusal.fieldName}\".`, { meta: {\n\t\t\tmodelName: refusal.key.model,\n\t\t\tfieldName: refusal.fieldName,\n\t\t\treason: \"discriminator-field-unknown\"\n\t\t} });\n\t\tcase \"discriminatorField\": return discriminatorFieldError(refusal);\n\t\tcase \"discriminatorValue\": {\n\t\t\tconst variant = refusal.key.variant;\n\t\t\tconst meta = {\n\t\t\t\tmodelName: variant,\n\t\t\t\tbaseModel: refusal.baseModel,\n\t\t\t\tfieldName: refusal.fieldName\n\t\t\t};\n\t\t\tif (refusal.refusal.kind === \"unreadable\") return contractError(\"CONTRACT.ARGUMENT_INVALID\", `Variant model \"${variant}\" has a discriminator value that discriminator field \"${refusal.baseModel}.${refusal.fieldName}\" cannot hold: ${refusal.refusal.refusal.message}`, { meta: {\n\t\t\t\t...meta,\n\t\t\t\treason: \"discriminator-value-unreadable\"\n\t\t\t} });\n\t\t\treturn contractError(\"CONTRACT.ARGUMENT_INVALID\", `Variant model \"${variant}\" has discriminator value ${JSON.stringify(refusal.refusal.stored)}, which is not a member of enum \"${refusal.enumName}\", the type of discriminator field \"${refusal.baseModel}.${refusal.fieldName}\". Use one of: ${refusal.refusal.members.map((member) => JSON.stringify(member)).join(\", \")}.`, { meta: {\n\t\t\t\t...meta,\n\t\t\t\treason: \"discriminator-value-not-a-member\"\n\t\t\t} });\n\t\t}\n\t\tcase \"discriminatorAndBase\": return contractError(\"CONTRACT.ARGUMENT_INVALID\", `Model \"${refusal.key.model}\" has both a discriminator and a base. A model is either a base with variants or a variant of one base.`, { meta: {\n\t\t\tmodelName: refusal.key.model,\n\t\t\treason: \"discriminator-and-base\"\n\t\t} });\n\t\tcase \"discriminatorWithoutVariants\": return contractError(\"CONTRACT.ARGUMENT_INVALID\", `Model \"${refusal.key.model}\" has a discriminator, but no model names it as its base.`, { meta: {\n\t\t\tmodelName: refusal.key.model,\n\t\t\treason: \"discriminator-without-variants\"\n\t\t} });\n\t\tcase \"listedVariantMissing\": return contractError(\"CONTRACT.ARGUMENT_INVALID\", `Model \"${refusal.key.model}\" lists variant \"${refusal.variant}\", but no model \"${refusal.variant}\" names \"${refusal.key.model}\" as its base.`, { meta: {\n\t\t\tmodelName: refusal.key.model,\n\t\t\tvariant: refusal.variant,\n\t\t\treason: \"listed-variant-missing\"\n\t\t} });\n\t\tcase \"baseWithoutDiscriminator\": return contractError(\"CONTRACT.ARGUMENT_INVALID\", `Model \"${refusal.key.variant}\" names \"${refusal.baseModel}\" as its base, but \"${refusal.baseModel}\" has no discriminator.`, { meta: {\n\t\t\tmodelName: refusal.key.variant,\n\t\t\tbaseModel: refusal.baseModel,\n\t\t\treason: \"base-without-discriminator\"\n\t\t} });\n\t\tcase \"baseUnknown\": return contractError(\"CONTRACT.ARGUMENT_INVALID\", `Model \"${refusal.key.variant}\" names \"${refusal.baseModel}\" as its base, but the contract has no model \"${refusal.baseModel}\".`, { meta: {\n\t\t\tmodelName: refusal.key.variant,\n\t\t\tbaseModel: refusal.baseModel,\n\t\t\treason: \"base-unknown\"\n\t\t} });\n\t\tcase \"variantWithoutValue\": return contractError(\"CONTRACT.ARGUMENT_INVALID\", `Model \"${refusal.key.variant}\" names \"${refusal.baseModel}\" as its base, but \"${refusal.baseModel}\" lists no discriminator value for it.`, { meta: {\n\t\t\tmodelName: refusal.key.variant,\n\t\t\tbaseModel: refusal.baseModel,\n\t\t\treason: \"variant-without-value\"\n\t\t} });\n\t\tcase \"validator\": return validatorRefusalError(refusal.refusal);\n\t}\n}\n/** A builder warning as `defineContract` reports it. */\nfunction authoringWarningOf(warning) {\n\tif (warning.kind === \"source\") return warning.warning;\n\tconst item = `field \"${warning.key.owner.name}.${warning.key.field}\"`;\n\treturn {\n\t\tcode: \"PN_PRESET_WITHOUT_EFFECT\",\n\t\tmessage: `Field \"${warning.key.owner.name}.${warning.key.field}\" uses ${warning.preset}(), which generates no value, so the field is stored like any field of codec \"${warning.codecId}\".`,\n\t\titem,\n\t\tsummary: \"fields use a preset that generates no value\"\n\t};\n}\nfunction differenceWording(difference) {\n\tswitch (difference) {\n\t\tcase \"storedName\": return \"stored name\";\n\t\tcase \"type\": return \"type\";\n\t\tcase \"nullable\": return \"nullability\";\n\t\tcase \"many\": return \"list shape\";\n\t}\n}\n//#endregion\n//#region src/contract-builder.ts\nconst MONGO_RESERVED_HELPER_KEYS = [\n\t\"field\",\n\t\"gen\",\n\t\"index\",\n\t\"model\",\n\t\"rel\",\n\t\"valueObject\"\n];\nfunction buildFieldPreset(helperPath, descriptor, args) {\n\tvalidateAuthoringHelperArguments(helperPath, descriptor.args, args);\n\tconst preset = instantiateAuthoringFieldPreset(descriptor, args);\n\tconst unsupported = [\n\t\t...preset.default !== void 0 ? [\"default\"] : [],\n\t\t...preset.id ? [\"id\"] : [],\n\t\t...preset.unique ? [\"unique\"] : []\n\t];\n\tif (unsupported.length > 0) throw contractError(\"CONTRACT.PACK_CONTRIBUTION_INVALID\", `Field preset \"${helperPath}\" contributes ${unsupported.join(\", \")}, which Mongo does not support. Mongo supports presets that set a codec and execution defaults only.`, { meta: {\n\t\thelperPath,\n\t\treason: \"preset-contribution-unsupported\",\n\t\tcontribution: unsupported\n\t} });\n\treturn createFieldBuilder({\n\t\ttype: {\n\t\t\tkind: \"scalar\",\n\t\t\tcodecId: preset.descriptor.codecId,\n\t\t\t...normalizeOptionalTypeParams(preset.descriptor.typeParams)\n\t\t},\n\t\tnullable: preset.nullable,\n\t\tmany: false\n\t}, void 0, preset.executionDefaults, void 0, void 0, {\n\t\tpreset: helperPath,\n\t\texecutionDefaults: preset.executionDefaults\n\t});\n}\nfunction composeMongoFieldHelpers(fieldNamespace) {\n\tconst presetHelpers = createFieldHelpersFromNamespace(fieldNamespace, ({ helperPath, descriptor }) => (...args) => buildFieldPreset(helperPath, descriptor, args));\n\tconst collisions = Object.keys(presetHelpers).filter((name) => Object.hasOwn(field, name));\n\tif (collisions.length > 0) throw contractError(\"CONTRACT.PACK_CONTRIBUTION_INVALID\", `Pack-contributed field preset(s) ${collisions.map((c) => `\"${c}\"`).join(\", \")} collide with the built-in Mongo field helper(s) of the same name.`, { meta: {\n\t\treason: \"core-field-helper-collision\",\n\t\tcontribution: collisions\n\t} });\n\treturn {\n\t\t...field,\n\t\t...presetHelpers\n\t};\n}\nfunction stackLookupsOf(components) {\n\tconst codecLookup = extractCodecLookup(components);\n\tassertTypeAliasesValid(composePackAuthoringNamespace(components, \"type\"), {\n\t\tgeneratorFunctions: assembleGeneratorFunctions(components),\n\t\tparamsSchemaOf: (codecId) => codecLookup.descriptorFor(codecId)?.paramsSchema,\n\t\tfieldLength: () => void 0\n\t});\n\tconst { support } = assembleDataTypeSupport(components, (codecId) => codecLookup.descriptorFor(codecId)?.dataType);\n\treturn {\n\t\tcodecLookup,\n\t\tdataTypes: support\n\t};\n}\nfunction composeMongoAuthoringHelpers(family, target, extensions, lookups) {\n\tconst components = [\n\t\tfamily,\n\t\ttarget,\n\t\t...Object.values(extensions ?? {})\n\t];\n\tconst entityNamespace = composePackAuthoringNamespace(components, \"entityTypes\");\n\tconst fieldNamespace = composePackAuthoringNamespace(components, \"field\");\n\tassertNoCrossRegistryCollisions({}, fieldNamespace, entityNamespace);\n\tconst collisions = Object.keys(entityNamespace).filter((name) => MONGO_RESERVED_HELPER_KEYS.includes(name));\n\tif (collisions.length > 0) throw contractError(\"CONTRACT.PACK_CONTRIBUTION_INVALID\", `Pack-contributed entity type(s) ${collisions.map((c) => `\"${c}\"`).join(\", \")} collide with the reserved built-in helper key(s) on the Mongo composed helpers surface. Reserved keys: ${MONGO_RESERVED_HELPER_KEYS.map((k) => `\"${k}\"`).join(\", \")}.`, { meta: {\n\t\treason: \"reserved-helper-key-collision\",\n\t\tcontribution: collisions\n\t} });\n\treturn blindCast({\n\t\t...createEntityHelpersFromNamespace(entityNamespace, { ctx: {\n\t\t\tfamily: family.familyId,\n\t\t\ttarget: target.targetId,\n\t\t\tcodecLookup: lookups.codecLookup,\n\t\t\tdataTypes: lookups.dataTypes\n\t\t} }),\n\t\tfield: composeMongoFieldHelpers(fieldNamespace),\n\t\tgen: createGeneratorHelpers(components),\n\t\tindex,\n\t\tmodel,\n\t\trel,\n\t\tvalueObject\n\t});\n}\nfunction createFieldBuilder(spec, enumHandle, executionDefaults, storedName, generatorCalls, presetContribution) {\n\tfunction many(options) {\n\t\treturn createFieldBuilder({\n\t\t\ttype: spec.type,\n\t\t\tnullable: spec.nullable,\n\t\t\tmany: { elementNullable: options?.elementsNullable ?? false }\n\t\t}, enumHandle, executionDefaults, storedName, generatorCalls, presetContribution);\n\t}\n\tfunction withGeneratorCall(phase, call) {\n\t\tif (generatorCalls?.[phase] !== void 0 || executionDefaults?.[phase] !== void 0) throw contractError(\"CONTRACT.DEFAULT_INVALID\", `.${phase}() is called on a field that already generates a value ${phase === \"onCreate\" ? \"on create\" : \"on update\"}. Set each phase once, and do not combine .${phase}() with a field preset, type alias or alias constant that sets it.`, { meta: {\n\t\t\treason: \"generator-phase-set-twice\",\n\t\t\tphase\n\t\t} });\n\t\treturn createFieldBuilder(spec, enumHandle, blindCast(executionDefaults), storedName, {\n\t\t\t...generatorCalls,\n\t\t\t[phase]: call\n\t\t}, presetContribution);\n\t}\n\treturn {\n\t\t__kind: \"field\",\n\t\t...ifDefined(\"__executionDefaults\", executionDefaults),\n\t\t...ifDefined(\"__generatorCalls\", generatorCalls),\n\t\t...ifDefined(\"__presetContribution\", presetContribution),\n\t\tonCreate: (call) => withGeneratorCall(\"onCreate\", call),\n\t\tonUpdate: (call) => withGeneratorCall(\"onUpdate\", call),\n\t\t__type: spec.type,\n\t\t__nullable: spec.nullable,\n\t\t__many: spec.many,\n\t\t__enumHandle: blindCast(enumHandle),\n\t\t__storedName: blindCast(storedName),\n\t\toptional: () => createFieldBuilder({\n\t\t\ttype: spec.type,\n\t\t\tnullable: true,\n\t\t\tmany: spec.many\n\t\t}, enumHandle, executionDefaults, storedName, generatorCalls, presetContribution),\n\t\tmany: blindCast(many),\n\t\tmongo: ({ field }) => createFieldBuilder(spec, enumHandle, executionDefaults, field, generatorCalls, presetContribution)\n\t};\n}\nfunction normalizeOptionalTypeParams(typeParams) {\n\tif (!typeParams) return {};\n\treturn { typeParams };\n}\nfunction createScalarFieldBuilder(codecId, options) {\n\treturn createFieldBuilder({\n\t\ttype: blindCast({\n\t\t\tkind: \"scalar\",\n\t\t\tcodecId,\n\t\t\t...normalizeOptionalTypeParams(options?.typeParams)\n\t\t}),\n\t\tnullable: false,\n\t\tmany: false\n\t});\n}\nfunction vectorField(options) {\n\treturn createScalarFieldBuilder(\"mongo/vector@1\", options);\n}\nconst field = {\n\tscalar: createScalarFieldBuilder,\n\tobjectId() {\n\t\treturn createScalarFieldBuilder(\"mongo/objectId@1\");\n\t},\n\tstring() {\n\t\treturn createScalarFieldBuilder(\"mongo/string@1\");\n\t},\n\tdouble() {\n\t\treturn createScalarFieldBuilder(\"mongo/double@1\");\n\t},\n\tint32() {\n\t\treturn createScalarFieldBuilder(\"mongo/int32@1\");\n\t},\n\tbool() {\n\t\treturn createScalarFieldBuilder(\"mongo/bool@1\");\n\t},\n\tdate() {\n\t\treturn createScalarFieldBuilder(\"mongo/date@1\");\n\t},\n\tint64() {\n\t\treturn createScalarFieldBuilder(\"mongo/int64@1\");\n\t},\n\tint64Number() {\n\t\treturn createScalarFieldBuilder(\"mongo/int64Number@1\");\n\t},\n\tdecimal128() {\n\t\treturn createScalarFieldBuilder(\"mongo/decimal128@1\");\n\t},\n\tbinary() {\n\t\treturn createScalarFieldBuilder(\"mongo/binary@1\");\n\t},\n\tjson() {\n\t\treturn createScalarFieldBuilder(\"mongo/json@1\");\n\t},\n\tbson() {\n\t\treturn createScalarFieldBuilder(\"mongo/bson@1\");\n\t},\n\tvector: vectorField,\n\tvalueObject(valueObjectName) {\n\t\treturn createFieldBuilder({\n\t\t\ttype: blindCast({\n\t\t\t\tkind: \"valueObject\",\n\t\t\t\tname: resolveValueObjectName(valueObjectName)\n\t\t\t}),\n\t\t\tnullable: false,\n\t\t\tmany: false\n\t\t});\n\t},\n\tnamedType(handle) {\n\t\treturn createFieldBuilder({\n\t\t\ttype: blindCast({\n\t\t\t\tkind: \"scalar\",\n\t\t\t\tcodecId: handle.codecId\n\t\t\t}),\n\t\t\tnullable: false,\n\t\t\tmany: false\n\t\t}, handle);\n\t}\n};\nfunction index(fields, options) {\n\treturn {\n\t\tfields,\n\t\t...options ? { options } : {}\n\t};\n}\nfunction createFieldReference(modelName, fieldName) {\n\treturn {\n\t\t__kind: \"fieldRef\",\n\t\tmodelName,\n\t\tfieldName\n\t};\n}\nfunction isFieldReference(value) {\n\treturn typeof value === \"object\" && value !== null && \"__kind\" in value && value.__kind === \"fieldRef\";\n}\nfunction resolveValueObjectName(value) {\n\treturn typeof value === \"string\" ? value : value.__name;\n}\nfunction normalizeStringList(value) {\n\treturn typeof value === \"string\" ? [value] : [...value];\n}\nfunction normalizeTargetField(targetModelName, value) {\n\tif (!isFieldReference(value)) return value;\n\tif (value.modelName !== targetModelName) throw contractError(\"CONTRACT.RELATION_INVALID\", `Relation target \"${targetModelName}\" cannot reference field \"${value.modelName}.${value.fieldName}\".`, { meta: {\n\t\tmodelName: targetModelName,\n\t\treason: \"cross-model-field-reference\",\n\t\treferencedModel: value.modelName,\n\t\treferencedField: value.fieldName\n\t} });\n\treturn value.fieldName;\n}\nfunction normalizeTargetFields(targetModelName, value) {\n\tif (typeof value === \"string\") return [value];\n\tif (isFieldReference(value)) return [normalizeTargetField(targetModelName, value)];\n\treturn value.map((entry) => normalizeTargetField(targetModelName, entry));\n}\nfunction createRelationBuilder(spec) {\n\treturn {\n\t\t__kind: \"relation\",\n\t\t__to: spec.to,\n\t\t__cardinality: spec.cardinality,\n\t\t__on: spec.on,\n\t\t__nullable: spec.nullable\n\t};\n}\nfunction createReferenceRelationBuilder(target, cardinality, options, nullable) {\n\tconst targetModelName = resolveModelName(target);\n\treturn createRelationBuilder({\n\t\tto: blindCast(targetModelName),\n\t\tcardinality,\n\t\ton: {\n\t\t\tlocalFields: blindCast(normalizeStringList(options.from)),\n\t\t\ttargetFields: blindCast(normalizeTargetFields(targetModelName, options.to))\n\t\t},\n\t\tnullable\n\t});\n}\nfunction createEmbedRelationBuilder(target, cardinality) {\n\treturn createRelationBuilder({\n\t\tto: blindCast(resolveModelName(target)),\n\t\tcardinality,\n\t\ton: void 0,\n\t\tnullable: void 0\n\t});\n}\nfunction hasOne(target, options) {\n\tif (!options) return createEmbedRelationBuilder(target, \"1:1\");\n\treturn createReferenceRelationBuilder(target, \"1:1\", options, true);\n}\nfunction hasMany(target, options) {\n\tif (!options) return createEmbedRelationBuilder(target, \"1:N\");\n\treturn createReferenceRelationBuilder(target, \"1:N\", options, void 0);\n}\nfunction belongsTo(target, options) {\n\treturn createReferenceRelationBuilder(target, \"N:1\", options, options.optional);\n}\nconst rel = {\n\tbelongsTo,\n\thasMany,\n\thasOne\n};\nfunction valueObject(name, input) {\n\treturn {\n\t\t__kind: \"valueObject\",\n\t\t__name: name,\n\t\t__fields: input.fields\n\t};\n}\nfunction model(name, input) {\n\treturn {\n\t\t__kind: \"model\",\n\t\t__name: name,\n\t\t__fields: input.fields,\n\t\t__relations: blindCast(input.relations ?? {}),\n\t\t__indexes: input.indexes,\n\t\t__collectionOptions: input.collectionOptions,\n\t\t__controlPolicy: input.controlPolicy,\n\t\t__collection: blindCast(input.collection),\n\t\t__owner: blindCast(input.owner ? resolveModelName(input.owner) : void 0),\n\t\t__base: blindCast(input.base ? resolveModelName(input.base) : void 0),\n\t\t__storageRelations: blindCast(input.storageRelations),\n\t\t__discriminator: blindCast(input.discriminator ? { field: input.discriminator.field } : void 0),\n\t\t__variants: blindCast(input.discriminator?.variants),\n\t\tref(fieldName) {\n\t\t\treturn createFieldReference(name, fieldName);\n\t\t}\n\t};\n}\nfunction isContractScaffold(value) {\n\tif (typeof value !== \"object\" || value === null) return false;\n\treturn \"family\" in value && \"target\" in value;\n}\nfunction buildContractFromDsl(input, lookups) {\n\tconst definition = buildContractDefinition(input);\n\tconst { codecLookup, dataTypes } = lookups ?? stackLookupsOf([\n\t\tinput.family,\n\t\tinput.target,\n\t\t...Object.values(input.extensions ?? {})\n\t]);\n\tconst built = buildMongoContractFromDefinition(definition, codecLookup, dataTypes);\n\tflushAuthoringWarnings((built.ok ? built.value.warnings : built.failure.warnings).map(authoringWarningOf));\n\tif (!built.ok) {\n\t\tconst [first] = built.failure.refusals;\n\t\tassertDefined(first, \"a refused build has at least one refusal\");\n\t\tthrow refusalError(first);\n\t}\n\treturn blindCast(built.value.contract);\n}\n/** Implementation. */\nfunction buildBoundContract(family, target, definition, factory) {\n\tconst full = {\n\t\t...definition,\n\t\tfamily,\n\t\ttarget\n\t};\n\tif (factory !== void 0) {\n\t\tconst lookups = stackLookupsOf([\n\t\t\tfamily,\n\t\t\ttarget,\n\t\t\t...Object.values(definition.extensions ?? {})\n\t\t]);\n\t\tconst built = factory(composeMongoAuthoringHelpers(family, target, definition.extensions, lookups));\n\t\treturn buildContractFromDsl({\n\t\t\t...full,\n\t\t\t...ifDefined(\"models\", built.models),\n\t\t\t...ifDefined(\"valueObjects\", built.valueObjects),\n\t\t\t...ifDefined(\"roots\", built.roots)\n\t\t}, lookups);\n\t}\n\treturn buildContractFromDsl(full);\n}\nfunction defineContract(definition, factory) {\n\tif (!isContractScaffold(definition)) throw contractError(\"CONTRACT.ARGUMENT_INVALID\", \"defineContract expects a contract definition object. Define your contract with defineContract({ family, target, models, ... }).\");\n\tif (factory !== void 0) return buildBoundContract(definition.family, definition.target, definition, factory);\n\treturn buildBoundContract(definition.family, definition.target, definition);\n}\n//#endregion\nexport { bindEnumType, buildBoundContract, buildMongoContractFromDefinition, defineContract, enumType, field, index, isEnumTypeHandle, member, model, rel, valueObject };\n\n//# sourceMappingURL=contract-builder.mjs.map"],"mappings":"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"}