@prisma/orm-family-mongo 8.0.0-rc.14-dev.7 → 8.0.0-rc.14-dev.8

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.
@@ -3,14 +3,13 @@ import "@prisma/orm-framework/contract/types";
3
3
  import "@prisma/orm-framework/contract/hashing";
4
4
  import "@prisma/orm-framework/errors/control";
5
5
  import "@prisma/orm-framework/utils/casts";
6
- import { isInternalError } from "@prisma/orm-framework/utils/internal-error";
7
6
  import { enumType } from "@prisma/orm-framework/contract-authoring";
8
- import { resolveEnumCodecId } from "@prisma/orm-framework/components/authoring";
7
+ import { readEnumBlockMembers, resolveEnumCodecId } from "@prisma/orm-framework/components/authoring";
9
8
  import { blockAttribute, jsonValue, mapBlock, str } from "@prisma/orm-framework/psl-parser";
10
9
  import "@prisma/orm-framework/utils/defined";
11
10
  import "@prisma/orm-framework/components/control";
12
11
  import "@prisma/orm-framework/utils/canonical-stringify";
13
- //#region ../../../2-mongo-family/9-family/dist/authoring-entity-types-tg0iEIGv.mjs
12
+ //#region ../../../2-mongo-family/9-family/dist/authoring-entity-types-D1gQKIyI.mjs
14
13
  function mongoFamilyEnumSpec() {
15
14
  return mapBlock({
16
15
  value: {
@@ -59,73 +58,12 @@ const mongoFamilyEntityTypes = { enum: {
59
58
  });
60
59
  return;
61
60
  }
62
- const seenValues = /* @__PURE__ */ new Set();
63
- const members = [];
64
- let memberError = false;
65
- for (const [memberName, memberValue] of Object.entries(block.values)) {
66
- const span = block.parameterSpans[memberName] ?? block.span;
67
- let value;
68
- if (memberValue === void 0) try {
69
- value = codec.decodeJson(memberName);
70
- } catch (error) {
71
- if (isInternalError(error)) throw error;
72
- diagnostics?.push({
73
- code: "PSL_ENUM_BARE_MEMBER_NON_STRING_CODEC",
74
- message: `enum "${block.name}" member "${memberName}" has no value and codec "${codecId}" does not accept a bare name as input`,
75
- sourceId,
76
- span
77
- });
78
- memberError = true;
79
- continue;
80
- }
81
- else try {
82
- value = codec.decodeJson(memberValue);
83
- } catch (err) {
84
- if (isInternalError(err)) throw err;
85
- const reason = err instanceof Error ? err.message : String(err);
86
- diagnostics?.push({
87
- code: "PSL_EXTENSION_INVALID_VALUE",
88
- message: `enum "${block.name}" member "${memberName}" was rejected by codec "${codecId}": ${reason}`,
89
- sourceId,
90
- span
91
- });
92
- memberError = true;
93
- continue;
94
- }
95
- const valueKey = String(value);
96
- if (seenValues.has(valueKey)) {
97
- diagnostics?.push({
98
- code: "PSL_ENUM_DUPLICATE_MEMBER_VALUE",
99
- message: `enum "${block.name}": duplicate member value "${valueKey}"`,
100
- sourceId,
101
- span
102
- });
103
- memberError = true;
104
- continue;
105
- }
106
- seenValues.add(valueKey);
107
- members.push({
108
- name: memberName,
109
- value
110
- });
111
- }
112
- if (memberError) return void 0;
113
- if (members.length === 0) {
114
- diagnostics?.push({
115
- code: "PSL_ENUM_MISSING_TYPE",
116
- message: `enum "${block.name}" must have at least one member`,
117
- sourceId,
118
- span: block.span
119
- });
120
- return;
121
- }
61
+ const members = readEnumBlockMembers(block, codecId, codec, ctx);
62
+ if (members === void 0) return void 0;
122
63
  return enumType(block.name, {
123
64
  codecId,
124
65
  nativeType: bsonType
125
- }, ...members.map((m) => ({
126
- name: m.name,
127
- value: m.value
128
- })));
66
+ }, ...members);
129
67
  } }
130
68
  } };
131
69
  const enumTypeBlockAttribute = blockAttribute("type", {
@@ -148,4 +86,4 @@ const mongoFamilyPslBlockDescriptors = { enum: {
148
86
  //#endregion
149
87
  export { mongoFamilyPslBlockDescriptors as n, mongoFamilyEntityTypes as t };
150
88
 
151
- //# sourceMappingURL=authoring-entity-types-tg0iEIGv-BsmTWyHs.mjs.map
89
+ //# sourceMappingURL=authoring-entity-types-D1gQKIyI-DKDypFsk.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authoring-entity-types-D1gQKIyI-DKDypFsk.mjs","names":[],"sources":["../../../../2-mongo-family/9-family/dist/authoring-entity-types-D1gQKIyI.mjs"],"sourcesContent":["import \"@internal/utils/defined\";\nimport { readEnumBlockMembers, resolveEnumCodecId } from \"@internal/framework-components/authoring\";\nimport \"@internal/contract/hashing\";\nimport \"@internal/contract/types\";\nimport { enumType } from \"@internal/contract-authoring\";\nimport \"@internal/errors/control\";\nimport \"@internal/framework-components/control\";\nimport \"@internal/framework-components/ir\";\nimport \"@internal/mongo-contract\";\nimport \"@internal/mongo-contract/canonicalization-hooks\";\nimport \"@internal/utils/canonical-stringify\";\nimport \"@internal/utils/casts\";\nimport { blockAttribute, jsonValue, mapBlock, str } from \"@internal/psl-parser\";\n//#region src/core/authoring-entity-types.ts\nfunction mongoFamilyEnumSpec() {\n\treturn mapBlock({\n\t\tvalue: {\n\t\t\ttype: jsonValue(),\n\t\t\tdocumentation: \"The stored member value; a bare member stores its own name.\"\n\t\t},\n\t\tallowBare: true\n\t});\n}\nconst mongoFamilyEntityTypes = { enum: {\n\tkind: \"entity\",\n\tdiscriminator: \"enum\",\n\toutput: { factory: (block, ctx) => {\n\t\tconst sourceId = ctx.sourceId ?? \"unknown\";\n\t\tconst diagnostics = ctx.diagnostics;\n\t\tconst resolved = resolveEnumCodecId(block, ctx);\n\t\tif (resolved === void 0) return;\n\t\tconst { codecId, codecSpan } = resolved;\n\t\tconst bsonTypes = ctx.codecLookup?.targetTypesFor(codecId);\n\t\tif (bsonTypes === void 0) {\n\t\t\tdiagnostics?.push({\n\t\t\t\tcode: \"PSL_EXTENSION_INVALID_VALUE\",\n\t\t\t\tmessage: `enum \"${block.name}\" @@type references unknown codec \"${codecId}\"`,\n\t\t\t\tsourceId,\n\t\t\t\tspan: codecSpan\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tconst [bsonType, ...otherBsonTypes] = bsonTypes;\n\t\tif (bsonType === void 0 || otherBsonTypes.length > 0) {\n\t\t\tdiagnostics?.push({\n\t\t\t\tcode: \"PSL_EXTENSION_INVALID_VALUE\",\n\t\t\t\tmessage: `enum \"${block.name}\" @@type codec \"${codecId}\" declares ${bsonTypes.length} BSON types; an enum needs exactly one. Use a codec with one BSON type, such as mongo/string@1.`,\n\t\t\t\tsourceId,\n\t\t\t\tspan: codecSpan\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tconst codec = ctx.codecLookup?.get(codecId);\n\t\tif (codec === void 0) {\n\t\t\tdiagnostics?.push({\n\t\t\t\tcode: \"PSL_EXTENSION_INVALID_VALUE\",\n\t\t\t\tmessage: `enum \"${block.name}\" @@type codec \"${codecId}\" resolves in targetTypesFor but is absent from codecLookup.get`,\n\t\t\t\tsourceId,\n\t\t\t\tspan: codecSpan\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tconst members = readEnumBlockMembers(block, codecId, codec, ctx);\n\t\tif (members === void 0) return void 0;\n\t\treturn enumType(block.name, {\n\t\t\tcodecId,\n\t\t\tnativeType: bsonType\n\t\t}, ...members);\n\t} }\n} };\nconst enumTypeBlockAttribute = blockAttribute(\"type\", {\n\tdocumentation: \"Selects the storage codec for this enum.\",\n\tpositional: [{\n\t\tkey: \"codecId\",\n\t\ttype: str(),\n\t\tdocumentation: \"The fully qualified codec identifier used to store enum values.\"\n\t}]\n});\nconst mongoFamilyPslBlockDescriptors = { enum: {\n\tkind: \"pslBlock\",\n\tkeyword: \"enum\",\n\tdocumentation: \"Defines an enum with named values and an inferred or explicitly selected storage codec.\",\n\tdiscriminator: \"enum\",\n\tname: { required: true },\n\tspec: mongoFamilyEnumSpec,\n\tattributes: { type: () => enumTypeBlockAttribute }\n} };\n//#endregion\nexport { mongoFamilyPslBlockDescriptors as n, mongoFamilyEntityTypes as t };\n\n//# sourceMappingURL=authoring-entity-types-D1gQKIyI.mjs.map"],"mappings":";;;;;;;;;;;;AAcA,SAAS,sBAAsB;CAC9B,OAAO,SAAS;EACf,OAAO;GACN,MAAM,UAAU;GAChB,eAAe;EAChB;EACA,WAAW;CACZ,CAAC;AACF;AACA,MAAM,yBAAyB,EAAE,MAAM;CACtC,MAAM;CACN,eAAe;CACf,QAAQ,EAAE,UAAU,OAAO,QAAQ;EAClC,MAAM,WAAW,IAAI,YAAY;EACjC,MAAM,cAAc,IAAI;EACxB,MAAM,WAAW,mBAAmB,OAAO,GAAG;EAC9C,IAAI,aAAa,KAAK,GAAG;EACzB,MAAM,EAAE,SAAS,cAAc;EAC/B,MAAM,YAAY,IAAI,aAAa,eAAe,OAAO;EACzD,IAAI,cAAc,KAAK,GAAG;GACzB,aAAa,KAAK;IACjB,MAAM;IACN,SAAS,SAAS,MAAM,KAAK,qCAAqC,QAAQ;IAC1E;IACA,MAAM;GACP,CAAC;GACD;EACD;EACA,MAAM,CAAC,UAAU,GAAG,kBAAkB;EACtC,IAAI,aAAa,KAAK,KAAK,eAAe,SAAS,GAAG;GACrD,aAAa,KAAK;IACjB,MAAM;IACN,SAAS,SAAS,MAAM,KAAK,kBAAkB,QAAQ,aAAa,UAAU,OAAO;IACrF;IACA,MAAM;GACP,CAAC;GACD;EACD;EACA,MAAM,QAAQ,IAAI,aAAa,IAAI,OAAO;EAC1C,IAAI,UAAU,KAAK,GAAG;GACrB,aAAa,KAAK;IACjB,MAAM;IACN,SAAS,SAAS,MAAM,KAAK,kBAAkB,QAAQ;IACvD;IACA,MAAM;GACP,CAAC;GACD;EACD;EACA,MAAM,UAAU,qBAAqB,OAAO,SAAS,OAAO,GAAG;EAC/D,IAAI,YAAY,KAAK,GAAG,OAAO,KAAK;EACpC,OAAO,SAAS,MAAM,MAAM;GAC3B;GACA,YAAY;EACb,GAAG,GAAG,OAAO;CACd,EAAE;AACH,EAAE;AACF,MAAM,yBAAyB,eAAe,QAAQ;CACrD,eAAe;CACf,YAAY,CAAC;EACZ,KAAK;EACL,MAAM,IAAI;EACV,eAAe;CAChB,CAAC;AACF,CAAC;AACD,MAAM,iCAAiC,EAAE,MAAM;CAC9C,MAAM;CACN,SAAS;CACT,eAAe;CACf,eAAe;CACf,MAAM,EAAE,UAAU,KAAK;CACvB,MAAM;CACN,YAAY,EAAE,YAAY,uBAAuB;AAClD,EAAE"}
@@ -2,7 +2,7 @@ import { t as mongoContractCanonicalizationHooks } from "./canonicalization-hook
2
2
  import { i as mongoAttributeSpecs } from "./interpreter-Da0fGDSM-DGCJEzeI.mjs";
3
3
  import { t as mongoEmission } from "./exports-BSUZo1ZX.mjs";
4
4
  import { i as verifyMongoSchema } from "./verify-mongo-schema-B0bMHQW0-BuK0Jv5S.mjs";
5
- import { n as mongoFamilyPslBlockDescriptors, t as mongoFamilyEntityTypes } from "./authoring-entity-types-tg0iEIGv-BsmTWyHs.mjs";
5
+ import { n as mongoFamilyPslBlockDescriptors, t as mongoFamilyEntityTypes } from "./authoring-entity-types-D1gQKIyI-DKDypFsk.mjs";
6
6
  import { t as MongoContractSerializer } from "./mongo-contract-serializer-DC_DM9_Y-BCyJeFBM.mjs";
7
7
  import { structuredError } from "@prisma/orm-framework/utils/structured-error";
8
8
  import { blindCast } from "@prisma/orm-framework/utils/casts";
@@ -402,4 +402,4 @@ const mongoFamilyDescriptor = new MongoFamilyDescriptor();
402
402
  //#endregion
403
403
  export { mongoOperationsToPreview as i, formatMongoOperations as n, mongoFamilyDescriptor as r, createMongoFamilyInstance as t };
404
404
 
405
- //# sourceMappingURL=control-D9OASt_0.mjs.map
405
+ //# sourceMappingURL=control-Bp1lwO-G.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"control-D9OASt_0.mjs","names":[],"sources":["../../../../2-mongo-family/9-family/dist/control.mjs"],"sourcesContent":["import { i as contractToMongoSchemaIR, n as canonicalizeSchemasForVerification, r as diffMongoSchemas, t as verifyMongoSchema } from \"./verify-mongo-schema-B0bMHQW0.mjs\";\nimport { n as mongoFamilyPslBlockDescriptors, t as mongoFamilyEntityTypes } from \"./authoring-entity-types-tg0iEIGv.mjs\";\nimport { t as MongoContractSerializer } from \"./mongo-contract-serializer-DC_DM9_Y.mjs\";\nimport { ifDefined } from \"@internal/utils/defined\";\nimport { mongoAttributeSpecs } from \"@internal/mongo-contract-psl\";\nimport { mongoEmission } from \"@internal/mongo-emitter\";\nimport { structuredError } from \"@internal/utils/structured-error\";\nimport { APP_SPACE_ID, SchemaTreeNode, VERIFY_CODE_HASH_MISMATCH, VERIFY_CODE_MARKER_MISSING, VERIFY_CODE_TARGET_MISMATCH } from \"@internal/framework-components/control\";\nimport { mongoContractCanonicalizationHooks } from \"@internal/mongo-contract/canonicalization-hooks\";\nimport { blindCast } from \"@internal/utils/casts\";\nimport { InternalError } from \"@internal/utils/internal-error\";\nimport { assertDescriptorSelfConsistency } from \"@internal/migration-tools/spaces\";\n//#region src/core/operation-preview.ts\nfunction formatKeySpec(keys) {\n\treturn `{ ${keys.map((k) => `${JSON.stringify(k.field)}: ${JSON.stringify(k.direction)}`).join(\", \")} }`;\n}\nconst COMMAND_META_KEYS = /* @__PURE__ */ new Set([\n\t\"kind\",\n\t\"collection\",\n\t\"keys\"\n]);\nfunction formatOptionEntries(cmd) {\n\tconst parts = Object.entries(cmd).filter(([key, value]) => !COMMAND_META_KEYS.has(key) && value !== void 0).map(([key, value]) => `${key}: ${JSON.stringify(value)}`);\n\tif (parts.length === 0) return void 0;\n\treturn `{ ${parts.join(\", \")} }`;\n}\nfunction formatOptions(cmd) {\n\treturn formatOptionEntries(cmd);\n}\nfunction formatCreateCollectionOptions(cmd) {\n\treturn formatOptionEntries(cmd);\n}\nvar MongoDdlCommandFormatter = class {\n\tcreateIndex(cmd) {\n\t\tconst keySpec = formatKeySpec(cmd.keys);\n\t\tconst opts = formatOptions(cmd);\n\t\treturn opts ? `db.${cmd.collection}.createIndex(${keySpec}, ${opts})` : `db.${cmd.collection}.createIndex(${keySpec})`;\n\t}\n\tdropIndex(cmd) {\n\t\treturn `db.${cmd.collection}.dropIndex(${JSON.stringify(cmd.name)})`;\n\t}\n\tcreateCollection(cmd) {\n\t\tconst opts = formatCreateCollectionOptions(cmd);\n\t\treturn opts ? `db.createCollection(${JSON.stringify(cmd.collection)}, ${opts})` : `db.createCollection(${JSON.stringify(cmd.collection)})`;\n\t}\n\tdropCollection(cmd) {\n\t\treturn `db.${cmd.collection}.drop()`;\n\t}\n\tcollMod(cmd) {\n\t\tconst parts = [`collMod: ${JSON.stringify(cmd.collection)}`];\n\t\tfor (const [key, value] of Object.entries(cmd)) if (!COMMAND_META_KEYS.has(key) && value !== void 0) parts.push(`${key}: ${JSON.stringify(value)}`);\n\t\treturn `db.runCommand({ ${parts.join(\", \")} })`;\n\t}\n};\nconst formatter = new MongoDdlCommandFormatter();\nfunction formatMongoOperations(operations) {\n\tconst statements = [];\n\tfor (const operation of operations) {\n\t\tconst candidate = operation;\n\t\tif (!(\"execute\" in candidate) || !Array.isArray(candidate[\"execute\"])) continue;\n\t\tfor (const step of candidate[\"execute\"]) if (step.command && typeof step.command.accept === \"function\") statements.push(step.command.accept(formatter));\n\t}\n\treturn statements;\n}\n/**\n* Wraps `formatMongoOperations` into the family-agnostic\n* `OperationPreview` shape. Each statement carries\n* `language: 'mongodb-shell'`. Mirrors `sqlOperationsToPreview`.\n*/\nfunction mongoOperationsToPreview(operations) {\n\treturn { statements: formatMongoOperations(operations).map((text) => ({\n\t\ttext,\n\t\tlanguage: \"mongodb-shell\"\n\t})) };\n}\n//#endregion\n//#region src/core/schema-to-view.ts\nfunction mongoSchemaToView(schema) {\n\tconst collectionNodes = schema.collections.map((collection) => collectionToSchemaNode(collection.name, collection));\n\treturn { root: new SchemaTreeNode({\n\t\tkind: \"root\",\n\t\tid: \"mongo-schema\",\n\t\tlabel: \"database\",\n\t\t...ifDefined(\"children\", collectionNodes.length > 0 ? collectionNodes : void 0)\n\t}) };\n}\nfunction collectionToSchemaNode(name, collection) {\n\tconst children = [];\n\tfor (const index of collection.indexes) {\n\t\tconst keysSummary = index.keys.map((k) => {\n\t\t\tif (k.direction === 1) return k.field;\n\t\t\tif (k.direction === -1) return `${k.field} desc`;\n\t\t\treturn `${k.field} ${k.direction}`;\n\t\t}).join(\", \");\n\t\tconst prefix = index.unique ? \"unique index\" : \"index\";\n\t\tconst options = [];\n\t\tif (index.sparse) options.push(\"sparse\");\n\t\tif (index.expireAfterSeconds != null) options.push(`ttl: ${index.expireAfterSeconds}s`);\n\t\tif (index.partialFilterExpression) options.push(\"partial\");\n\t\tconst optsSuffix = options.length > 0 ? ` (${options.join(\", \")})` : \"\";\n\t\tchildren.push(new SchemaTreeNode({\n\t\t\tkind: \"index\",\n\t\t\tid: `index-${name}-${index.keys.map((k) => `${k.field}_${k.direction}`).join(\"_\")}`,\n\t\t\tlabel: `${prefix} (${keysSummary})${optsSuffix}`,\n\t\t\tmeta: {\n\t\t\t\tkeys: index.keys,\n\t\t\t\tunique: index.unique,\n\t\t\t\t...ifDefined(\"sparse\", index.sparse || void 0),\n\t\t\t\t...ifDefined(\"expireAfterSeconds\", index.expireAfterSeconds ?? void 0),\n\t\t\t\t...ifDefined(\"partialFilterExpression\", index.partialFilterExpression ?? void 0)\n\t\t\t}\n\t\t}));\n\t}\n\tif (collection.validator) {\n\t\tconst validatorChildren = [];\n\t\tconst jsonSchema = blindCast(collection.validator.jsonSchema);\n\t\tconst properties = jsonSchema.properties;\n\t\tconst required = new Set(jsonSchema.required ?? []);\n\t\tif (properties) for (const [propName, propDef] of Object.entries(properties)) {\n\t\t\tconst bsonType = propDef.bsonType === void 0 ? \"any\" : String(propDef.bsonType);\n\t\t\tconst suffix = required.has(propName) ? \" (required)\" : \"\";\n\t\t\tvalidatorChildren.push(new SchemaTreeNode({\n\t\t\t\tkind: \"field\",\n\t\t\t\tid: `field-${name}-${propName}`,\n\t\t\t\tlabel: `${propName}: ${bsonType}${suffix}`\n\t\t\t}));\n\t\t}\n\t\tchildren.push(new SchemaTreeNode({\n\t\t\tkind: \"field\",\n\t\t\tid: `validator-${name}`,\n\t\t\tlabel: `validator (level: ${collection.validator.validationLevel}, action: ${collection.validator.validationAction})`,\n\t\t\tmeta: {\n\t\t\t\tvalidationLevel: collection.validator.validationLevel,\n\t\t\t\tvalidationAction: collection.validator.validationAction,\n\t\t\t\tjsonSchema: collection.validator.jsonSchema\n\t\t\t},\n\t\t\t...ifDefined(\"children\", validatorChildren.length > 0 ? validatorChildren : void 0)\n\t\t}));\n\t}\n\tif (collection.options) {\n\t\tconst opts = collection.options;\n\t\tconst optLabels = [];\n\t\tif (opts.capped) optLabels.push(\"capped\");\n\t\tif (opts.timeseries) optLabels.push(\"timeseries\");\n\t\tif (opts.collation) optLabels.push(\"collation\");\n\t\tif (opts.changeStreamPreAndPostImages) optLabels.push(\"changeStreamPreAndPostImages\");\n\t\tif (opts.clusteredIndex) optLabels.push(\"clusteredIndex\");\n\t\tif (optLabels.length > 0) children.push(new SchemaTreeNode({\n\t\t\tkind: \"field\",\n\t\t\tid: `options-${name}`,\n\t\t\tlabel: `options (${optLabels.join(\", \")})`,\n\t\t\tmeta: {\n\t\t\t\t...ifDefined(\"capped\", opts.capped ?? void 0),\n\t\t\t\t...ifDefined(\"timeseries\", opts.timeseries ?? void 0),\n\t\t\t\t...ifDefined(\"collation\", opts.collation ?? void 0),\n\t\t\t\t...ifDefined(\"changeStreamPreAndPostImages\", opts.changeStreamPreAndPostImages ?? void 0),\n\t\t\t\t...ifDefined(\"clusteredIndex\", opts.clusteredIndex ?? void 0)\n\t\t\t}\n\t\t}));\n\t}\n\treturn new SchemaTreeNode({\n\t\tkind: \"collection\",\n\t\tid: `collection-${name}`,\n\t\tlabel: `collection ${name}`,\n\t\t...ifDefined(\"children\", children.length > 0 ? children : void 0)\n\t});\n}\n//#endregion\n//#region src/core/control-instance.ts\nfunction deserializeMongoContract(contractJson) {\n\treturn new MongoContractSerializer().deserializeContract(contractJson);\n}\n/**\n* Family-method contract input. By the time control-plane methods\n* (`verify`, `verifySchema`, `sign`, …) are invoked through the CLI\n* control client (`client.ts`), the input has already been threaded\n* through `familyInstance.deserializeContract`. The value is therefore a\n* class-form `MongoTargetContract` (or a structurally-equivalent\n* envelope post-deserialization) and must NOT be re-fed through\n* structural validation (arktype rejects extra keys like `namespaces`).\n*\n* The parameter type on the framework SPI is `unknown` for variance\n* reasons (so the family can express its own contract type without\n* leaking it to the framework). This helper recovers the validated\n* shape with a single narrow cast.\n*/\nfunction asValidatedMongoContract(contract) {\n\treturn blindCast(contract);\n}\nfunction buildVerifyResult(opts) {\n\treturn {\n\t\tok: opts.ok,\n\t\t...ifDefined(\"code\", opts.code),\n\t\tsummary: opts.summary,\n\t\tcontract: {\n\t\t\tstorageHash: opts.contractStorageHash,\n\t\t\t...ifDefined(\"profileHash\", opts.contractProfileHash)\n\t\t},\n\t\t...ifDefined(\"marker\", opts.marker ? {\n\t\t\tstorageHash: opts.marker.storageHash,\n\t\t\tprofileHash: opts.marker.profileHash\n\t\t} : void 0),\n\t\ttarget: {\n\t\t\texpected: opts.expectedTargetId,\n\t\t\t...ifDefined(\"actual\", opts.actualTargetId)\n\t\t},\n\t\tmeta: {\n\t\t\tcontractPath: opts.contractPath,\n\t\t\t...ifDefined(\"configPath\", opts.configPath)\n\t\t},\n\t\ttimings: { total: opts.totalTime }\n\t};\n}\nfunction createMongoFamilyInstance(controlStack) {\n\tconst extensions = blindCast(controlStack.extensions ?? []);\n\tfor (const extension of extensions) if (extension.contractSpace) {\n\t\tconst { contractJson, headRef } = extension.contractSpace;\n\t\tassertDescriptorSelfConsistency({\n\t\t\textensionId: extension.id,\n\t\t\ttarget: contractJson.target,\n\t\t\ttargetFamily: contractJson.targetFamily,\n\t\t\tstorage: contractJson.storage,\n\t\t\theadRefHash: headRef.hash,\n\t\t\t...mongoContractCanonicalizationHooks\n\t\t});\n\t}\n\tconst adapter = blindCast(controlStack.adapter);\n\tconst getControlAdapter = () => {\n\t\tif (!adapter) throw new InternalError(\"Mongo family requires an adapter descriptor in ControlStack\");\n\t\treturn adapter.create(blindCast(controlStack));\n\t};\n\tfunction isMongoTargetDriver(driver) {\n\t\treturn driver.targetId === \"mongo\";\n\t}\n\tfunction asMongoDriver(driver) {\n\t\tif (!isMongoTargetDriver(driver)) throw structuredError(\"CONTRACT.TARGET_MISMATCH\", `Expected Mongo control driver with targetId 'mongo', got '${driver.targetId}'`);\n\t\treturn driver;\n\t}\n\treturn {\n\t\tfamilyId: \"mongo\",\n\t\tdeserializeContract(contractJson) {\n\t\t\treturn blindCast(deserializeMongoContract(contractJson));\n\t\t},\n\t\tasync verify(options) {\n\t\t\tconst { driver, contract: rawContract, expectedTargetId, contractPath, configPath } = options;\n\t\t\tconst startTime = Date.now();\n\t\t\tconst contract = asValidatedMongoContract(rawContract);\n\t\t\tconst contractStorageHash = contract.storage.storageHash;\n\t\t\tconst contractProfileHash = contract.profileHash;\n\t\t\tconst contractTarget = contract.target;\n\t\t\tconst baseOpts = {\n\t\t\t\tcontractStorageHash,\n\t\t\t\tcontractProfileHash,\n\t\t\t\texpectedTargetId,\n\t\t\t\tcontractPath,\n\t\t\t\t...ifDefined(\"configPath\", configPath)\n\t\t\t};\n\t\t\tif (contractTarget !== expectedTargetId) return buildVerifyResult({\n\t\t\t\t...baseOpts,\n\t\t\t\tok: false,\n\t\t\t\tcode: VERIFY_CODE_TARGET_MISMATCH,\n\t\t\t\tsummary: \"Target mismatch\",\n\t\t\t\tactualTargetId: contractTarget,\n\t\t\t\ttotalTime: Date.now() - startTime\n\t\t\t});\n\t\t\tconst marker = await getControlAdapter().readMarker(asMongoDriver(driver), APP_SPACE_ID);\n\t\t\tif (!marker) return buildVerifyResult({\n\t\t\t\t...baseOpts,\n\t\t\t\tok: false,\n\t\t\t\tcode: VERIFY_CODE_MARKER_MISSING,\n\t\t\t\tsummary: \"Marker missing\",\n\t\t\t\ttotalTime: Date.now() - startTime\n\t\t\t});\n\t\t\tif (marker.storageHash !== contractStorageHash) return buildVerifyResult({\n\t\t\t\t...baseOpts,\n\t\t\t\tok: false,\n\t\t\t\tcode: VERIFY_CODE_HASH_MISMATCH,\n\t\t\t\tsummary: \"Hash mismatch\",\n\t\t\t\tmarker,\n\t\t\t\ttotalTime: Date.now() - startTime\n\t\t\t});\n\t\t\tif (contractProfileHash && marker.profileHash !== contractProfileHash) return buildVerifyResult({\n\t\t\t\t...baseOpts,\n\t\t\t\tok: false,\n\t\t\t\tcode: VERIFY_CODE_HASH_MISMATCH,\n\t\t\t\tsummary: \"Hash mismatch\",\n\t\t\t\tmarker,\n\t\t\t\ttotalTime: Date.now() - startTime\n\t\t\t});\n\t\t\treturn buildVerifyResult({\n\t\t\t\t...baseOpts,\n\t\t\t\tok: true,\n\t\t\t\tsummary: \"Database matches contract\",\n\t\t\t\tmarker,\n\t\t\t\ttotalTime: Date.now() - startTime\n\t\t\t});\n\t\t},\n\t\tverifySchema(options) {\n\t\t\treturn verifyMongoSchema({\n\t\t\t\tcontract: asValidatedMongoContract(options.contract),\n\t\t\t\tschema: options.schema,\n\t\t\t\tstrict: options.strict,\n\t\t\t\tframeworkComponents: options.frameworkComponents\n\t\t\t});\n\t\t},\n\t\tasync sign(options) {\n\t\t\tconst { driver, contract: rawContract, contractPath, configPath } = options;\n\t\t\tconst startTime = Date.now();\n\t\t\tconst contract = asValidatedMongoContract(rawContract);\n\t\t\tconst contractStorageHash = contract.storage.storageHash;\n\t\t\tconst contractProfileHash = contract.profileHash;\n\t\t\tconst controlAdapter = getControlAdapter();\n\t\t\tconst mongoDriver = asMongoDriver(driver);\n\t\t\tconst existingMarker = await controlAdapter.readMarker(mongoDriver, APP_SPACE_ID);\n\t\t\tlet markerCreated = false;\n\t\t\tlet markerUpdated = false;\n\t\t\tlet previousHashes;\n\t\t\tif (!existingMarker) {\n\t\t\t\tawait controlAdapter.initMarker(mongoDriver, APP_SPACE_ID, {\n\t\t\t\t\tstorageHash: contractStorageHash,\n\t\t\t\t\tprofileHash: contractProfileHash\n\t\t\t\t});\n\t\t\t\tmarkerCreated = true;\n\t\t\t} else {\n\t\t\t\tconst storageHashMatches = existingMarker.storageHash === contractStorageHash;\n\t\t\t\tconst profileHashMatches = existingMarker.profileHash === contractProfileHash;\n\t\t\t\tif (!storageHashMatches || !profileHashMatches) {\n\t\t\t\t\tpreviousHashes = {\n\t\t\t\t\t\tstorageHash: existingMarker.storageHash,\n\t\t\t\t\t\tprofileHash: existingMarker.profileHash\n\t\t\t\t\t};\n\t\t\t\t\tif (!await controlAdapter.updateMarker(mongoDriver, APP_SPACE_ID, existingMarker.storageHash, {\n\t\t\t\t\t\tstorageHash: contractStorageHash,\n\t\t\t\t\t\tprofileHash: contractProfileHash\n\t\t\t\t\t})) throw structuredError(\"MIGRATION.MARKER_CAS_FAILURE\", \"CAS conflict: marker was modified by another process during sign\");\n\t\t\t\t\tmarkerUpdated = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tlet summary;\n\t\t\tif (markerCreated) summary = \"Database signed (marker created)\";\n\t\t\telse if (markerUpdated) summary = `Database signed (marker updated from ${previousHashes?.storageHash ?? \"unknown\"})`;\n\t\t\telse summary = \"Database already signed with this contract\";\n\t\t\treturn {\n\t\t\t\tok: true,\n\t\t\t\tsummary,\n\t\t\t\tcontract: {\n\t\t\t\t\tstorageHash: contractStorageHash,\n\t\t\t\t\tprofileHash: contractProfileHash\n\t\t\t\t},\n\t\t\t\ttarget: {\n\t\t\t\t\texpected: contract.target,\n\t\t\t\t\tactual: contract.target\n\t\t\t\t},\n\t\t\t\tmarker: {\n\t\t\t\t\tcreated: markerCreated,\n\t\t\t\t\tupdated: markerUpdated,\n\t\t\t\t\t...ifDefined(\"previous\", previousHashes)\n\t\t\t\t},\n\t\t\t\tmeta: {\n\t\t\t\t\tcontractPath,\n\t\t\t\t\t...ifDefined(\"configPath\", configPath)\n\t\t\t\t},\n\t\t\t\ttimings: { total: Date.now() - startTime }\n\t\t\t};\n\t\t},\n\t\tasync readMarker(options) {\n\t\t\treturn getControlAdapter().readMarker(asMongoDriver(options.driver), options.space);\n\t\t},\n\t\tasync readAllMarkers(options) {\n\t\t\treturn getControlAdapter().readAllMarkers(asMongoDriver(options.driver));\n\t\t},\n\t\tasync readLedger(options) {\n\t\t\treturn getControlAdapter().readLedger(asMongoDriver(options.driver), options.space);\n\t\t},\n\t\tasync introspect(options) {\n\t\t\treturn getControlAdapter().introspectSchema(asMongoDriver(options.driver));\n\t\t},\n\t\tcreateRunnerDependencies(options) {\n\t\t\treturn getControlAdapter().createRunnerDependencies(asMongoDriver(options.driver));\n\t\t},\n\t\ttoSchemaView(schema) {\n\t\t\treturn mongoSchemaToView(schema);\n\t\t},\n\t\ttoOperationPreview(operations) {\n\t\t\treturn mongoOperationsToPreview(operations);\n\t\t}\n\t};\n}\n//#endregion\n//#region src/core/control-descriptor.ts\nconst mongoFamilyAttributeSpecs = mongoAttributeSpecs;\nvar MongoFamilyDescriptor = class {\n\tkind = \"family\";\n\tid = \"mongo\";\n\tfamilyId = \"mongo\";\n\tversion = \"0.0.1\";\n\temission = mongoEmission;\n\tauthoring = {\n\t\tentityTypes: mongoFamilyEntityTypes,\n\t\tpslBlockDescriptors: mongoFamilyPslBlockDescriptors,\n\t\tattributeSpecs: mongoFamilyAttributeSpecs\n\t};\n\tcreate(stack) {\n\t\treturn createMongoFamilyInstance(stack);\n\t}\n};\nconst mongoFamilyDescriptor = new MongoFamilyDescriptor();\n//#endregion\nexport { canonicalizeSchemasForVerification, contractToMongoSchemaIR, createMongoFamilyInstance, diffMongoSchemas, formatMongoOperations, mongoFamilyDescriptor, mongoOperationsToPreview };\n\n//# sourceMappingURL=control.mjs.map"],"mappings":"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"}
1
+ {"version":3,"file":"control-Bp1lwO-G.mjs","names":[],"sources":["../../../../2-mongo-family/9-family/dist/control.mjs"],"sourcesContent":["import { i as contractToMongoSchemaIR, n as canonicalizeSchemasForVerification, r as diffMongoSchemas, t as verifyMongoSchema } from \"./verify-mongo-schema-B0bMHQW0.mjs\";\nimport { n as mongoFamilyPslBlockDescriptors, t as mongoFamilyEntityTypes } from \"./authoring-entity-types-D1gQKIyI.mjs\";\nimport { t as MongoContractSerializer } from \"./mongo-contract-serializer-DC_DM9_Y.mjs\";\nimport { ifDefined } from \"@internal/utils/defined\";\nimport { mongoAttributeSpecs } from \"@internal/mongo-contract-psl\";\nimport { mongoEmission } from \"@internal/mongo-emitter\";\nimport { structuredError } from \"@internal/utils/structured-error\";\nimport { APP_SPACE_ID, SchemaTreeNode, VERIFY_CODE_HASH_MISMATCH, VERIFY_CODE_MARKER_MISSING, VERIFY_CODE_TARGET_MISMATCH } from \"@internal/framework-components/control\";\nimport { mongoContractCanonicalizationHooks } from \"@internal/mongo-contract/canonicalization-hooks\";\nimport { blindCast } from \"@internal/utils/casts\";\nimport { assertDescriptorSelfConsistency } from \"@internal/migration-tools/spaces\";\nimport { InternalError } from \"@internal/utils/internal-error\";\n//#region src/core/operation-preview.ts\nfunction formatKeySpec(keys) {\n\treturn `{ ${keys.map((k) => `${JSON.stringify(k.field)}: ${JSON.stringify(k.direction)}`).join(\", \")} }`;\n}\nconst COMMAND_META_KEYS = /* @__PURE__ */ new Set([\n\t\"kind\",\n\t\"collection\",\n\t\"keys\"\n]);\nfunction formatOptionEntries(cmd) {\n\tconst parts = Object.entries(cmd).filter(([key, value]) => !COMMAND_META_KEYS.has(key) && value !== void 0).map(([key, value]) => `${key}: ${JSON.stringify(value)}`);\n\tif (parts.length === 0) return void 0;\n\treturn `{ ${parts.join(\", \")} }`;\n}\nfunction formatOptions(cmd) {\n\treturn formatOptionEntries(cmd);\n}\nfunction formatCreateCollectionOptions(cmd) {\n\treturn formatOptionEntries(cmd);\n}\nvar MongoDdlCommandFormatter = class {\n\tcreateIndex(cmd) {\n\t\tconst keySpec = formatKeySpec(cmd.keys);\n\t\tconst opts = formatOptions(cmd);\n\t\treturn opts ? `db.${cmd.collection}.createIndex(${keySpec}, ${opts})` : `db.${cmd.collection}.createIndex(${keySpec})`;\n\t}\n\tdropIndex(cmd) {\n\t\treturn `db.${cmd.collection}.dropIndex(${JSON.stringify(cmd.name)})`;\n\t}\n\tcreateCollection(cmd) {\n\t\tconst opts = formatCreateCollectionOptions(cmd);\n\t\treturn opts ? `db.createCollection(${JSON.stringify(cmd.collection)}, ${opts})` : `db.createCollection(${JSON.stringify(cmd.collection)})`;\n\t}\n\tdropCollection(cmd) {\n\t\treturn `db.${cmd.collection}.drop()`;\n\t}\n\tcollMod(cmd) {\n\t\tconst parts = [`collMod: ${JSON.stringify(cmd.collection)}`];\n\t\tfor (const [key, value] of Object.entries(cmd)) if (!COMMAND_META_KEYS.has(key) && value !== void 0) parts.push(`${key}: ${JSON.stringify(value)}`);\n\t\treturn `db.runCommand({ ${parts.join(\", \")} })`;\n\t}\n};\nconst formatter = new MongoDdlCommandFormatter();\nfunction formatMongoOperations(operations) {\n\tconst statements = [];\n\tfor (const operation of operations) {\n\t\tconst candidate = operation;\n\t\tif (!(\"execute\" in candidate) || !Array.isArray(candidate[\"execute\"])) continue;\n\t\tfor (const step of candidate[\"execute\"]) if (step.command && typeof step.command.accept === \"function\") statements.push(step.command.accept(formatter));\n\t}\n\treturn statements;\n}\n/**\n* Wraps `formatMongoOperations` into the family-agnostic\n* `OperationPreview` shape. Each statement carries\n* `language: 'mongodb-shell'`. Mirrors `sqlOperationsToPreview`.\n*/\nfunction mongoOperationsToPreview(operations) {\n\treturn { statements: formatMongoOperations(operations).map((text) => ({\n\t\ttext,\n\t\tlanguage: \"mongodb-shell\"\n\t})) };\n}\n//#endregion\n//#region src/core/schema-to-view.ts\nfunction mongoSchemaToView(schema) {\n\tconst collectionNodes = schema.collections.map((collection) => collectionToSchemaNode(collection.name, collection));\n\treturn { root: new SchemaTreeNode({\n\t\tkind: \"root\",\n\t\tid: \"mongo-schema\",\n\t\tlabel: \"database\",\n\t\t...ifDefined(\"children\", collectionNodes.length > 0 ? collectionNodes : void 0)\n\t}) };\n}\nfunction collectionToSchemaNode(name, collection) {\n\tconst children = [];\n\tfor (const index of collection.indexes) {\n\t\tconst keysSummary = index.keys.map((k) => {\n\t\t\tif (k.direction === 1) return k.field;\n\t\t\tif (k.direction === -1) return `${k.field} desc`;\n\t\t\treturn `${k.field} ${k.direction}`;\n\t\t}).join(\", \");\n\t\tconst prefix = index.unique ? \"unique index\" : \"index\";\n\t\tconst options = [];\n\t\tif (index.sparse) options.push(\"sparse\");\n\t\tif (index.expireAfterSeconds != null) options.push(`ttl: ${index.expireAfterSeconds}s`);\n\t\tif (index.partialFilterExpression) options.push(\"partial\");\n\t\tconst optsSuffix = options.length > 0 ? ` (${options.join(\", \")})` : \"\";\n\t\tchildren.push(new SchemaTreeNode({\n\t\t\tkind: \"index\",\n\t\t\tid: `index-${name}-${index.keys.map((k) => `${k.field}_${k.direction}`).join(\"_\")}`,\n\t\t\tlabel: `${prefix} (${keysSummary})${optsSuffix}`,\n\t\t\tmeta: {\n\t\t\t\tkeys: index.keys,\n\t\t\t\tunique: index.unique,\n\t\t\t\t...ifDefined(\"sparse\", index.sparse || void 0),\n\t\t\t\t...ifDefined(\"expireAfterSeconds\", index.expireAfterSeconds ?? void 0),\n\t\t\t\t...ifDefined(\"partialFilterExpression\", index.partialFilterExpression ?? void 0)\n\t\t\t}\n\t\t}));\n\t}\n\tif (collection.validator) {\n\t\tconst validatorChildren = [];\n\t\tconst jsonSchema = blindCast(collection.validator.jsonSchema);\n\t\tconst properties = jsonSchema.properties;\n\t\tconst required = new Set(jsonSchema.required ?? []);\n\t\tif (properties) for (const [propName, propDef] of Object.entries(properties)) {\n\t\t\tconst bsonType = propDef.bsonType === void 0 ? \"any\" : String(propDef.bsonType);\n\t\t\tconst suffix = required.has(propName) ? \" (required)\" : \"\";\n\t\t\tvalidatorChildren.push(new SchemaTreeNode({\n\t\t\t\tkind: \"field\",\n\t\t\t\tid: `field-${name}-${propName}`,\n\t\t\t\tlabel: `${propName}: ${bsonType}${suffix}`\n\t\t\t}));\n\t\t}\n\t\tchildren.push(new SchemaTreeNode({\n\t\t\tkind: \"field\",\n\t\t\tid: `validator-${name}`,\n\t\t\tlabel: `validator (level: ${collection.validator.validationLevel}, action: ${collection.validator.validationAction})`,\n\t\t\tmeta: {\n\t\t\t\tvalidationLevel: collection.validator.validationLevel,\n\t\t\t\tvalidationAction: collection.validator.validationAction,\n\t\t\t\tjsonSchema: collection.validator.jsonSchema\n\t\t\t},\n\t\t\t...ifDefined(\"children\", validatorChildren.length > 0 ? validatorChildren : void 0)\n\t\t}));\n\t}\n\tif (collection.options) {\n\t\tconst opts = collection.options;\n\t\tconst optLabels = [];\n\t\tif (opts.capped) optLabels.push(\"capped\");\n\t\tif (opts.timeseries) optLabels.push(\"timeseries\");\n\t\tif (opts.collation) optLabels.push(\"collation\");\n\t\tif (opts.changeStreamPreAndPostImages) optLabels.push(\"changeStreamPreAndPostImages\");\n\t\tif (opts.clusteredIndex) optLabels.push(\"clusteredIndex\");\n\t\tif (optLabels.length > 0) children.push(new SchemaTreeNode({\n\t\t\tkind: \"field\",\n\t\t\tid: `options-${name}`,\n\t\t\tlabel: `options (${optLabels.join(\", \")})`,\n\t\t\tmeta: {\n\t\t\t\t...ifDefined(\"capped\", opts.capped ?? void 0),\n\t\t\t\t...ifDefined(\"timeseries\", opts.timeseries ?? void 0),\n\t\t\t\t...ifDefined(\"collation\", opts.collation ?? void 0),\n\t\t\t\t...ifDefined(\"changeStreamPreAndPostImages\", opts.changeStreamPreAndPostImages ?? void 0),\n\t\t\t\t...ifDefined(\"clusteredIndex\", opts.clusteredIndex ?? void 0)\n\t\t\t}\n\t\t}));\n\t}\n\treturn new SchemaTreeNode({\n\t\tkind: \"collection\",\n\t\tid: `collection-${name}`,\n\t\tlabel: `collection ${name}`,\n\t\t...ifDefined(\"children\", children.length > 0 ? children : void 0)\n\t});\n}\n//#endregion\n//#region src/core/control-instance.ts\nfunction deserializeMongoContract(contractJson) {\n\treturn new MongoContractSerializer().deserializeContract(contractJson);\n}\n/**\n* Family-method contract input. By the time control-plane methods\n* (`verify`, `verifySchema`, `sign`, …) are invoked through the CLI\n* control client (`client.ts`), the input has already been threaded\n* through `familyInstance.deserializeContract`. The value is therefore a\n* class-form `MongoTargetContract` (or a structurally-equivalent\n* envelope post-deserialization) and must NOT be re-fed through\n* structural validation (arktype rejects extra keys like `namespaces`).\n*\n* The parameter type on the framework SPI is `unknown` for variance\n* reasons (so the family can express its own contract type without\n* leaking it to the framework). This helper recovers the validated\n* shape with a single narrow cast.\n*/\nfunction asValidatedMongoContract(contract) {\n\treturn blindCast(contract);\n}\nfunction buildVerifyResult(opts) {\n\treturn {\n\t\tok: opts.ok,\n\t\t...ifDefined(\"code\", opts.code),\n\t\tsummary: opts.summary,\n\t\tcontract: {\n\t\t\tstorageHash: opts.contractStorageHash,\n\t\t\t...ifDefined(\"profileHash\", opts.contractProfileHash)\n\t\t},\n\t\t...ifDefined(\"marker\", opts.marker ? {\n\t\t\tstorageHash: opts.marker.storageHash,\n\t\t\tprofileHash: opts.marker.profileHash\n\t\t} : void 0),\n\t\ttarget: {\n\t\t\texpected: opts.expectedTargetId,\n\t\t\t...ifDefined(\"actual\", opts.actualTargetId)\n\t\t},\n\t\tmeta: {\n\t\t\tcontractPath: opts.contractPath,\n\t\t\t...ifDefined(\"configPath\", opts.configPath)\n\t\t},\n\t\ttimings: { total: opts.totalTime }\n\t};\n}\nfunction createMongoFamilyInstance(controlStack) {\n\tconst extensions = blindCast(controlStack.extensions ?? []);\n\tfor (const extension of extensions) if (extension.contractSpace) {\n\t\tconst { contractJson, headRef } = extension.contractSpace;\n\t\tassertDescriptorSelfConsistency({\n\t\t\textensionId: extension.id,\n\t\t\ttarget: contractJson.target,\n\t\t\ttargetFamily: contractJson.targetFamily,\n\t\t\tstorage: contractJson.storage,\n\t\t\theadRefHash: headRef.hash,\n\t\t\t...mongoContractCanonicalizationHooks\n\t\t});\n\t}\n\tconst adapter = blindCast(controlStack.adapter);\n\tconst getControlAdapter = () => {\n\t\tif (!adapter) throw new InternalError(\"Mongo family requires an adapter descriptor in ControlStack\");\n\t\treturn adapter.create(blindCast(controlStack));\n\t};\n\tfunction isMongoTargetDriver(driver) {\n\t\treturn driver.targetId === \"mongo\";\n\t}\n\tfunction asMongoDriver(driver) {\n\t\tif (!isMongoTargetDriver(driver)) throw structuredError(\"CONTRACT.TARGET_MISMATCH\", `Expected Mongo control driver with targetId 'mongo', got '${driver.targetId}'`);\n\t\treturn driver;\n\t}\n\treturn {\n\t\tfamilyId: \"mongo\",\n\t\tdeserializeContract(contractJson) {\n\t\t\treturn blindCast(deserializeMongoContract(contractJson));\n\t\t},\n\t\tasync verify(options) {\n\t\t\tconst { driver, contract: rawContract, expectedTargetId, contractPath, configPath } = options;\n\t\t\tconst startTime = Date.now();\n\t\t\tconst contract = asValidatedMongoContract(rawContract);\n\t\t\tconst contractStorageHash = contract.storage.storageHash;\n\t\t\tconst contractProfileHash = contract.profileHash;\n\t\t\tconst contractTarget = contract.target;\n\t\t\tconst baseOpts = {\n\t\t\t\tcontractStorageHash,\n\t\t\t\tcontractProfileHash,\n\t\t\t\texpectedTargetId,\n\t\t\t\tcontractPath,\n\t\t\t\t...ifDefined(\"configPath\", configPath)\n\t\t\t};\n\t\t\tif (contractTarget !== expectedTargetId) return buildVerifyResult({\n\t\t\t\t...baseOpts,\n\t\t\t\tok: false,\n\t\t\t\tcode: VERIFY_CODE_TARGET_MISMATCH,\n\t\t\t\tsummary: \"Target mismatch\",\n\t\t\t\tactualTargetId: contractTarget,\n\t\t\t\ttotalTime: Date.now() - startTime\n\t\t\t});\n\t\t\tconst marker = await getControlAdapter().readMarker(asMongoDriver(driver), APP_SPACE_ID);\n\t\t\tif (!marker) return buildVerifyResult({\n\t\t\t\t...baseOpts,\n\t\t\t\tok: false,\n\t\t\t\tcode: VERIFY_CODE_MARKER_MISSING,\n\t\t\t\tsummary: \"Marker missing\",\n\t\t\t\ttotalTime: Date.now() - startTime\n\t\t\t});\n\t\t\tif (marker.storageHash !== contractStorageHash) return buildVerifyResult({\n\t\t\t\t...baseOpts,\n\t\t\t\tok: false,\n\t\t\t\tcode: VERIFY_CODE_HASH_MISMATCH,\n\t\t\t\tsummary: \"Hash mismatch\",\n\t\t\t\tmarker,\n\t\t\t\ttotalTime: Date.now() - startTime\n\t\t\t});\n\t\t\tif (contractProfileHash && marker.profileHash !== contractProfileHash) return buildVerifyResult({\n\t\t\t\t...baseOpts,\n\t\t\t\tok: false,\n\t\t\t\tcode: VERIFY_CODE_HASH_MISMATCH,\n\t\t\t\tsummary: \"Hash mismatch\",\n\t\t\t\tmarker,\n\t\t\t\ttotalTime: Date.now() - startTime\n\t\t\t});\n\t\t\treturn buildVerifyResult({\n\t\t\t\t...baseOpts,\n\t\t\t\tok: true,\n\t\t\t\tsummary: \"Database matches contract\",\n\t\t\t\tmarker,\n\t\t\t\ttotalTime: Date.now() - startTime\n\t\t\t});\n\t\t},\n\t\tverifySchema(options) {\n\t\t\treturn verifyMongoSchema({\n\t\t\t\tcontract: asValidatedMongoContract(options.contract),\n\t\t\t\tschema: options.schema,\n\t\t\t\tstrict: options.strict,\n\t\t\t\tframeworkComponents: options.frameworkComponents\n\t\t\t});\n\t\t},\n\t\tasync sign(options) {\n\t\t\tconst { driver, contract: rawContract, contractPath, configPath } = options;\n\t\t\tconst startTime = Date.now();\n\t\t\tconst contract = asValidatedMongoContract(rawContract);\n\t\t\tconst contractStorageHash = contract.storage.storageHash;\n\t\t\tconst contractProfileHash = contract.profileHash;\n\t\t\tconst controlAdapter = getControlAdapter();\n\t\t\tconst mongoDriver = asMongoDriver(driver);\n\t\t\tconst existingMarker = await controlAdapter.readMarker(mongoDriver, APP_SPACE_ID);\n\t\t\tlet markerCreated = false;\n\t\t\tlet markerUpdated = false;\n\t\t\tlet previousHashes;\n\t\t\tif (!existingMarker) {\n\t\t\t\tawait controlAdapter.initMarker(mongoDriver, APP_SPACE_ID, {\n\t\t\t\t\tstorageHash: contractStorageHash,\n\t\t\t\t\tprofileHash: contractProfileHash\n\t\t\t\t});\n\t\t\t\tmarkerCreated = true;\n\t\t\t} else {\n\t\t\t\tconst storageHashMatches = existingMarker.storageHash === contractStorageHash;\n\t\t\t\tconst profileHashMatches = existingMarker.profileHash === contractProfileHash;\n\t\t\t\tif (!storageHashMatches || !profileHashMatches) {\n\t\t\t\t\tpreviousHashes = {\n\t\t\t\t\t\tstorageHash: existingMarker.storageHash,\n\t\t\t\t\t\tprofileHash: existingMarker.profileHash\n\t\t\t\t\t};\n\t\t\t\t\tif (!await controlAdapter.updateMarker(mongoDriver, APP_SPACE_ID, existingMarker.storageHash, {\n\t\t\t\t\t\tstorageHash: contractStorageHash,\n\t\t\t\t\t\tprofileHash: contractProfileHash\n\t\t\t\t\t})) throw structuredError(\"MIGRATION.MARKER_CAS_FAILURE\", \"CAS conflict: marker was modified by another process during sign\");\n\t\t\t\t\tmarkerUpdated = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tlet summary;\n\t\t\tif (markerCreated) summary = \"Database signed (marker created)\";\n\t\t\telse if (markerUpdated) summary = `Database signed (marker updated from ${previousHashes?.storageHash ?? \"unknown\"})`;\n\t\t\telse summary = \"Database already signed with this contract\";\n\t\t\treturn {\n\t\t\t\tok: true,\n\t\t\t\tsummary,\n\t\t\t\tcontract: {\n\t\t\t\t\tstorageHash: contractStorageHash,\n\t\t\t\t\tprofileHash: contractProfileHash\n\t\t\t\t},\n\t\t\t\ttarget: {\n\t\t\t\t\texpected: contract.target,\n\t\t\t\t\tactual: contract.target\n\t\t\t\t},\n\t\t\t\tmarker: {\n\t\t\t\t\tcreated: markerCreated,\n\t\t\t\t\tupdated: markerUpdated,\n\t\t\t\t\t...ifDefined(\"previous\", previousHashes)\n\t\t\t\t},\n\t\t\t\tmeta: {\n\t\t\t\t\tcontractPath,\n\t\t\t\t\t...ifDefined(\"configPath\", configPath)\n\t\t\t\t},\n\t\t\t\ttimings: { total: Date.now() - startTime }\n\t\t\t};\n\t\t},\n\t\tasync readMarker(options) {\n\t\t\treturn getControlAdapter().readMarker(asMongoDriver(options.driver), options.space);\n\t\t},\n\t\tasync readAllMarkers(options) {\n\t\t\treturn getControlAdapter().readAllMarkers(asMongoDriver(options.driver));\n\t\t},\n\t\tasync readLedger(options) {\n\t\t\treturn getControlAdapter().readLedger(asMongoDriver(options.driver), options.space);\n\t\t},\n\t\tasync introspect(options) {\n\t\t\treturn getControlAdapter().introspectSchema(asMongoDriver(options.driver));\n\t\t},\n\t\tcreateRunnerDependencies(options) {\n\t\t\treturn getControlAdapter().createRunnerDependencies(asMongoDriver(options.driver));\n\t\t},\n\t\ttoSchemaView(schema) {\n\t\t\treturn mongoSchemaToView(schema);\n\t\t},\n\t\ttoOperationPreview(operations) {\n\t\t\treturn mongoOperationsToPreview(operations);\n\t\t}\n\t};\n}\n//#endregion\n//#region src/core/control-descriptor.ts\nconst mongoFamilyAttributeSpecs = mongoAttributeSpecs;\nvar MongoFamilyDescriptor = class {\n\tkind = \"family\";\n\tid = \"mongo\";\n\tfamilyId = \"mongo\";\n\tversion = \"0.0.1\";\n\temission = mongoEmission;\n\tauthoring = {\n\t\tentityTypes: mongoFamilyEntityTypes,\n\t\tpslBlockDescriptors: mongoFamilyPslBlockDescriptors,\n\t\tattributeSpecs: mongoFamilyAttributeSpecs\n\t};\n\tcreate(stack) {\n\t\treturn createMongoFamilyInstance(stack);\n\t}\n};\nconst mongoFamilyDescriptor = new MongoFamilyDescriptor();\n//#endregion\nexport { canonicalizeSchemasForVerification, contractToMongoSchemaIR, createMongoFamilyInstance, diffMongoSchemas, formatMongoOperations, mongoFamilyDescriptor, mongoOperationsToPreview };\n\n//# sourceMappingURL=control.mjs.map"],"mappings":"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"}
package/dist/family.mjs CHANGED
@@ -1,8 +1,8 @@
1
1
  import { d as defaultMongoStorageNamespaceId, u as defaultMongoDomainNamespaceId } from "./dist-Dvr-nVtl.mjs";
2
2
  import { i as verifyMongoSchema, n as contractToMongoSchemaIR, r as diffMongoSchemas, t as canonicalizeSchemasForVerification } from "./verify-mongo-schema-B0bMHQW0-BuK0Jv5S.mjs";
3
- import { n as mongoFamilyPslBlockDescriptors, t as mongoFamilyEntityTypes } from "./authoring-entity-types-tg0iEIGv-BsmTWyHs.mjs";
3
+ import { n as mongoFamilyPslBlockDescriptors, t as mongoFamilyEntityTypes } from "./authoring-entity-types-D1gQKIyI-DKDypFsk.mjs";
4
4
  import { n as MongoContractSerializerBase, t as MongoContractSerializer } from "./mongo-contract-serializer-DC_DM9_Y-BCyJeFBM.mjs";
5
- import { i as mongoOperationsToPreview, n as formatMongoOperations, r as mongoFamilyDescriptor, t as createMongoFamilyInstance } from "./control-D9OASt_0.mjs";
5
+ import { i as mongoOperationsToPreview, n as formatMongoOperations, r as mongoFamilyDescriptor, t as createMongoFamilyInstance } from "./control-Bp1lwO-G.mjs";
6
6
  import { t as MongoContractView$1 } from "./mongo-contract-view-JZOa0Ry--Dm8a36wf.mjs";
7
7
  import { t as MongoSchemaVerifierBase } from "./ir-vZWjElPY.mjs";
8
8
  import { t as MongoMigration } from "./migration-DkhV-MNn.mjs";
@@ -1,3 +1,3 @@
1
1
  import { n as contractToMongoSchemaIR, r as diffMongoSchemas, t as canonicalizeSchemasForVerification } from "./verify-mongo-schema-B0bMHQW0-BuK0Jv5S.mjs";
2
- import { i as mongoOperationsToPreview, n as formatMongoOperations, r as mongoFamilyDescriptor, t as createMongoFamilyInstance } from "./control-D9OASt_0.mjs";
2
+ import { i as mongoOperationsToPreview, n as formatMongoOperations, r as mongoFamilyDescriptor, t as createMongoFamilyInstance } from "./control-Bp1lwO-G.mjs";
3
3
  export { canonicalizeSchemasForVerification, contractToMongoSchemaIR, createMongoFamilyInstance, diffMongoSchemas, formatMongoOperations, mongoFamilyDescriptor, mongoOperationsToPreview };
@@ -1,5 +1,5 @@
1
1
  import { i as mongoAttributeSpecs } from "./interpreter-Da0fGDSM-DGCJEzeI.mjs";
2
- import { n as mongoFamilyPslBlockDescriptors, t as mongoFamilyEntityTypes } from "./authoring-entity-types-tg0iEIGv-BsmTWyHs.mjs";
2
+ import { n as mongoFamilyPslBlockDescriptors, t as mongoFamilyEntityTypes } from "./authoring-entity-types-D1gQKIyI-DKDypFsk.mjs";
3
3
  //#region ../../../2-mongo-family/9-family/dist/pack.mjs
4
4
  const mongoFamilyPack = {
5
5
  kind: "family",
@@ -1 +1 @@
1
- {"version":3,"file":"family__pack.mjs","names":[],"sources":["../../../../2-mongo-family/9-family/dist/pack.mjs"],"sourcesContent":["import { n as mongoFamilyPslBlockDescriptors, t as mongoFamilyEntityTypes } from \"./authoring-entity-types-tg0iEIGv.mjs\";\nimport { mongoAttributeSpecs } from \"@internal/mongo-contract-psl\";\n//#region src/exports/pack.ts\nconst mongoFamilyPack = {\n\tkind: \"family\",\n\tid: \"mongo\",\n\tfamilyId: \"mongo\",\n\tversion: \"0.0.1\",\n\tauthoring: {\n\t\tentityTypes: mongoFamilyEntityTypes,\n\t\tpslBlockDescriptors: mongoFamilyPslBlockDescriptors,\n\t\tattributeSpecs: mongoAttributeSpecs\n\t}\n};\n//#endregion\nexport { mongoFamilyPack as default, mongoFamilyEntityTypes, mongoFamilyPslBlockDescriptors };\n\n//# sourceMappingURL=pack.mjs.map"],"mappings":";;;AAGA,MAAM,kBAAkB;CACvB,MAAM;CACN,IAAI;CACJ,UAAU;CACV,SAAS;CACT,WAAW;EACV,aAAa;EACb,qBAAqB;EACrB,gBAAgB;CACjB;AACD"}
1
+ {"version":3,"file":"family__pack.mjs","names":[],"sources":["../../../../2-mongo-family/9-family/dist/pack.mjs"],"sourcesContent":["import { n as mongoFamilyPslBlockDescriptors, t as mongoFamilyEntityTypes } from \"./authoring-entity-types-D1gQKIyI.mjs\";\nimport { mongoAttributeSpecs } from \"@internal/mongo-contract-psl\";\n//#region src/exports/pack.ts\nconst mongoFamilyPack = {\n\tkind: \"family\",\n\tid: \"mongo\",\n\tfamilyId: \"mongo\",\n\tversion: \"0.0.1\",\n\tauthoring: {\n\t\tentityTypes: mongoFamilyEntityTypes,\n\t\tpslBlockDescriptors: mongoFamilyPslBlockDescriptors,\n\t\tattributeSpecs: mongoAttributeSpecs\n\t}\n};\n//#endregion\nexport { mongoFamilyPack as default, mongoFamilyEntityTypes, mongoFamilyPslBlockDescriptors };\n\n//# sourceMappingURL=pack.mjs.map"],"mappings":";;;AAGA,MAAM,kBAAkB;CACvB,MAAM;CACN,IAAI;CACJ,UAAU;CACV,SAAS;CACT,WAAW;EACV,aAAa;EACb,qBAAqB;EACrB,gBAAgB;CACjB;AACD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prisma/orm-family-mongo",
3
- "version": "8.0.0-rc.14-dev.7",
3
+ "version": "8.0.0-rc.14-dev.8",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -9,30 +9,30 @@
9
9
  "dist"
10
10
  ],
11
11
  "dependencies": {
12
- "@prisma/orm-framework": "8.0.0-rc.14-dev.7",
13
- "@prisma/orm-toolchain": "8.0.0-rc.14-dev.7",
12
+ "@prisma/orm-framework": "8.0.0-rc.14-dev.8",
13
+ "@prisma/orm-toolchain": "8.0.0-rc.14-dev.8",
14
14
  "arktype": "^2.2.2",
15
15
  "mongodb": "^7.4.0",
16
16
  "pathe": "^2.0.3"
17
17
  },
18
18
  "devDependencies": {
19
- "@internal/family-mongo": "8.0.0-rc.14-dev.7",
20
- "@internal/mongo-codec": "8.0.0-rc.14-dev.7",
21
- "@internal/mongo-contract": "8.0.0-rc.14-dev.7",
22
- "@internal/mongo-contract-prisma6": "8.0.0-rc.14-dev.7",
23
- "@internal/mongo-contract-psl": "8.0.0-rc.14-dev.7",
24
- "@internal/mongo-contract-ts": "8.0.0-rc.14-dev.7",
25
- "@internal/mongo-emitter": "8.0.0-rc.14-dev.7",
26
- "@internal/mongo-lowering": "8.0.0-rc.14-dev.7",
27
- "@internal/mongo-orm": "8.0.0-rc.14-dev.7",
28
- "@internal/mongo-query-ast": "8.0.0-rc.14-dev.7",
29
- "@internal/mongo-query-builder": "8.0.0-rc.14-dev.7",
30
- "@internal/mongo-runtime": "8.0.0-rc.14-dev.7",
31
- "@internal/mongo-schema-ir": "8.0.0-rc.14-dev.7",
32
- "@internal/mongo-value": "8.0.0-rc.14-dev.7",
33
- "@internal/mongo-wire": "8.0.0-rc.14-dev.7",
34
- "@repo/tsconfig": "8.0.0-rc.14-dev.7",
35
- "@repo/tsdown": "8.0.0-rc.14-dev.7",
19
+ "@internal/family-mongo": "8.0.0-rc.14-dev.8",
20
+ "@internal/mongo-codec": "8.0.0-rc.14-dev.8",
21
+ "@internal/mongo-contract": "8.0.0-rc.14-dev.8",
22
+ "@internal/mongo-contract-prisma6": "8.0.0-rc.14-dev.8",
23
+ "@internal/mongo-contract-psl": "8.0.0-rc.14-dev.8",
24
+ "@internal/mongo-contract-ts": "8.0.0-rc.14-dev.8",
25
+ "@internal/mongo-emitter": "8.0.0-rc.14-dev.8",
26
+ "@internal/mongo-lowering": "8.0.0-rc.14-dev.8",
27
+ "@internal/mongo-orm": "8.0.0-rc.14-dev.8",
28
+ "@internal/mongo-query-ast": "8.0.0-rc.14-dev.8",
29
+ "@internal/mongo-query-builder": "8.0.0-rc.14-dev.8",
30
+ "@internal/mongo-runtime": "8.0.0-rc.14-dev.8",
31
+ "@internal/mongo-schema-ir": "8.0.0-rc.14-dev.8",
32
+ "@internal/mongo-value": "8.0.0-rc.14-dev.8",
33
+ "@internal/mongo-wire": "8.0.0-rc.14-dev.8",
34
+ "@repo/tsconfig": "8.0.0-rc.14-dev.8",
35
+ "@repo/tsdown": "8.0.0-rc.14-dev.8",
36
36
  "tsdown": "0.22.14",
37
37
  "typescript": "5.9.3"
38
38
  },
@@ -1 +0,0 @@
1
- {"version":3,"file":"authoring-entity-types-tg0iEIGv-BsmTWyHs.mjs","names":[],"sources":["../../../../2-mongo-family/9-family/dist/authoring-entity-types-tg0iEIGv.mjs"],"sourcesContent":["import \"@internal/utils/defined\";\nimport { resolveEnumCodecId } from \"@internal/framework-components/authoring\";\nimport \"@internal/contract/hashing\";\nimport \"@internal/contract/types\";\nimport { enumType } from \"@internal/contract-authoring\";\nimport \"@internal/errors/control\";\nimport \"@internal/framework-components/control\";\nimport \"@internal/framework-components/ir\";\nimport \"@internal/mongo-contract\";\nimport \"@internal/mongo-contract/canonicalization-hooks\";\nimport \"@internal/utils/canonical-stringify\";\nimport \"@internal/utils/casts\";\nimport { blockAttribute, jsonValue, mapBlock, str } from \"@internal/psl-parser\";\nimport { isInternalError } from \"@internal/utils/internal-error\";\n//#region src/core/authoring-entity-types.ts\nfunction mongoFamilyEnumSpec() {\n\treturn mapBlock({\n\t\tvalue: {\n\t\t\ttype: jsonValue(),\n\t\t\tdocumentation: \"The stored member value; a bare member stores its own name.\"\n\t\t},\n\t\tallowBare: true\n\t});\n}\nconst mongoFamilyEntityTypes = { enum: {\n\tkind: \"entity\",\n\tdiscriminator: \"enum\",\n\toutput: { factory: (block, ctx) => {\n\t\tconst sourceId = ctx.sourceId ?? \"unknown\";\n\t\tconst diagnostics = ctx.diagnostics;\n\t\tconst resolved = resolveEnumCodecId(block, ctx);\n\t\tif (resolved === void 0) return;\n\t\tconst { codecId, codecSpan } = resolved;\n\t\tconst bsonTypes = ctx.codecLookup?.targetTypesFor(codecId);\n\t\tif (bsonTypes === void 0) {\n\t\t\tdiagnostics?.push({\n\t\t\t\tcode: \"PSL_EXTENSION_INVALID_VALUE\",\n\t\t\t\tmessage: `enum \"${block.name}\" @@type references unknown codec \"${codecId}\"`,\n\t\t\t\tsourceId,\n\t\t\t\tspan: codecSpan\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tconst [bsonType, ...otherBsonTypes] = bsonTypes;\n\t\tif (bsonType === void 0 || otherBsonTypes.length > 0) {\n\t\t\tdiagnostics?.push({\n\t\t\t\tcode: \"PSL_EXTENSION_INVALID_VALUE\",\n\t\t\t\tmessage: `enum \"${block.name}\" @@type codec \"${codecId}\" declares ${bsonTypes.length} BSON types; an enum needs exactly one. Use a codec with one BSON type, such as mongo/string@1.`,\n\t\t\t\tsourceId,\n\t\t\t\tspan: codecSpan\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tconst codec = ctx.codecLookup?.get(codecId);\n\t\tif (codec === void 0) {\n\t\t\tdiagnostics?.push({\n\t\t\t\tcode: \"PSL_EXTENSION_INVALID_VALUE\",\n\t\t\t\tmessage: `enum \"${block.name}\" @@type codec \"${codecId}\" resolves in targetTypesFor but is absent from codecLookup.get`,\n\t\t\t\tsourceId,\n\t\t\t\tspan: codecSpan\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tconst seenValues = /* @__PURE__ */ new Set();\n\t\tconst members = [];\n\t\tlet memberError = false;\n\t\tfor (const [memberName, memberValue] of Object.entries(block.values)) {\n\t\t\tconst span = block.parameterSpans[memberName] ?? block.span;\n\t\t\tlet value;\n\t\t\tif (memberValue === void 0) try {\n\t\t\t\tvalue = codec.decodeJson(memberName);\n\t\t\t} catch (error) {\n\t\t\t\tif (isInternalError(error)) throw error;\n\t\t\t\tdiagnostics?.push({\n\t\t\t\t\tcode: \"PSL_ENUM_BARE_MEMBER_NON_STRING_CODEC\",\n\t\t\t\t\tmessage: `enum \"${block.name}\" member \"${memberName}\" has no value and codec \"${codecId}\" does not accept a bare name as input`,\n\t\t\t\t\tsourceId,\n\t\t\t\t\tspan\n\t\t\t\t});\n\t\t\t\tmemberError = true;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\telse try {\n\t\t\t\tvalue = codec.decodeJson(memberValue);\n\t\t\t} catch (err) {\n\t\t\t\tif (isInternalError(err)) throw 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: `enum \"${block.name}\" member \"${memberName}\" was rejected by codec \"${codecId}\": ${reason}`,\n\t\t\t\t\tsourceId,\n\t\t\t\t\tspan\n\t\t\t\t});\n\t\t\t\tmemberError = true;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst valueKey = String(value);\n\t\t\tif (seenValues.has(valueKey)) {\n\t\t\t\tdiagnostics?.push({\n\t\t\t\t\tcode: \"PSL_ENUM_DUPLICATE_MEMBER_VALUE\",\n\t\t\t\t\tmessage: `enum \"${block.name}\": duplicate member value \"${valueKey}\"`,\n\t\t\t\t\tsourceId,\n\t\t\t\t\tspan\n\t\t\t\t});\n\t\t\t\tmemberError = true;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tseenValues.add(valueKey);\n\t\t\tmembers.push({\n\t\t\t\tname: memberName,\n\t\t\t\tvalue\n\t\t\t});\n\t\t}\n\t\tif (memberError) return void 0;\n\t\tif (members.length === 0) {\n\t\t\tdiagnostics?.push({\n\t\t\t\tcode: \"PSL_ENUM_MISSING_TYPE\",\n\t\t\t\tmessage: `enum \"${block.name}\" must have at least one member`,\n\t\t\t\tsourceId,\n\t\t\t\tspan: block.span\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\treturn enumType(block.name, {\n\t\t\tcodecId,\n\t\t\tnativeType: bsonType\n\t\t}, ...members.map((m) => ({\n\t\t\tname: m.name,\n\t\t\tvalue: m.value\n\t\t})));\n\t} }\n} };\nconst enumTypeBlockAttribute = blockAttribute(\"type\", {\n\tdocumentation: \"Selects the storage codec for this enum.\",\n\tpositional: [{\n\t\tkey: \"codecId\",\n\t\ttype: str(),\n\t\tdocumentation: \"The fully qualified codec identifier used to store enum values.\"\n\t}]\n});\nconst mongoFamilyPslBlockDescriptors = { enum: {\n\tkind: \"pslBlock\",\n\tkeyword: \"enum\",\n\tdocumentation: \"Defines an enum with named values and an inferred or explicitly selected storage codec.\",\n\tdiscriminator: \"enum\",\n\tname: { required: true },\n\tspec: mongoFamilyEnumSpec,\n\tattributes: { type: () => enumTypeBlockAttribute }\n} };\n//#endregion\nexport { mongoFamilyPslBlockDescriptors as n, mongoFamilyEntityTypes as t };\n\n//# sourceMappingURL=authoring-entity-types-tg0iEIGv.mjs.map"],"mappings":"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"}