@prisma/orm-family-mongo 8.0.0-rc.8-dev.19 → 8.0.0-rc.8-dev.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{authoring-entity-types-BGtkMyoN-D32kzx28.mjs → authoring-entity-types-Do4eLmih-DIruXcuT.mjs} +9 -3
- package/dist/authoring-entity-types-Do4eLmih-DIruXcuT.mjs.map +1 -0
- package/dist/contract-psl.d.mts +11 -11
- package/dist/contract-psl.d.mts.map +1 -1
- package/dist/contract-psl.mjs +1 -1
- package/dist/contract-psl__provider.mjs +1 -1
- package/dist/contract-psl__provider.mjs.map +1 -1
- package/dist/{control-B-sfDUVo.mjs → control-BNRwpUCl.mjs} +3 -3
- package/dist/{control-B-sfDUVo.mjs.map → control-BNRwpUCl.mjs.map} +1 -1
- package/dist/family.d.mts +1 -1
- package/dist/family.mjs +2 -2
- package/dist/family__control.mjs +1 -1
- package/dist/family__pack.d.mts +1 -1
- package/dist/family__pack.mjs +2 -2
- package/dist/family__pack.mjs.map +1 -1
- package/dist/{interpreter-69swE_3Y-CsfTcxiG.mjs → interpreter-BAcUM6H7-DNUcUApV.mjs} +12 -15
- package/dist/interpreter-BAcUM6H7-DNUcUApV.mjs.map +1 -0
- package/dist/{pack-qL_bS52W.d.mts → pack-ByR2mQ_8.d.mts} +11 -1
- package/dist/pack-ByR2mQ_8.d.mts.map +1 -0
- package/package.json +19 -19
- package/dist/authoring-entity-types-BGtkMyoN-D32kzx28.mjs.map +0 -1
- package/dist/interpreter-69swE_3Y-CsfTcxiG.mjs.map +0 -1
- package/dist/pack-qL_bS52W.d.mts.map +0 -1
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { structuredError } from "@prisma/orm-framework/utils/structured-error";
|
|
2
2
|
import { blindCast } from "@prisma/orm-framework/utils/casts";
|
|
3
3
|
import { resolveEnumCodecId } from "@prisma/orm-framework/components/authoring";
|
|
4
|
-
|
|
4
|
+
import { blockAttribute, str } from "@prisma/orm-framework/psl-parser";
|
|
5
|
+
//#region ../../../2-mongo-family/9-family/dist/authoring-entity-types-Do4eLmih.mjs
|
|
5
6
|
function contractError(code, message, options) {
|
|
6
7
|
return structuredError(code, message, options);
|
|
7
8
|
}
|
|
@@ -162,15 +163,20 @@ const mongoFamilyEntityTypes = { enum: {
|
|
|
162
163
|
})));
|
|
163
164
|
} }
|
|
164
165
|
} };
|
|
166
|
+
const enumTypeBlockAttribute = blockAttribute("type", { positional: [{
|
|
167
|
+
key: "codecId",
|
|
168
|
+
type: str()
|
|
169
|
+
}] });
|
|
165
170
|
const mongoFamilyPslBlockDescriptors = { enum: {
|
|
166
171
|
kind: "pslBlock",
|
|
167
172
|
keyword: "enum",
|
|
168
173
|
discriminator: "enum",
|
|
169
174
|
name: { required: true },
|
|
170
175
|
parameters: {},
|
|
171
|
-
variadicParameters: true
|
|
176
|
+
variadicParameters: true,
|
|
177
|
+
attributes: { type: () => enumTypeBlockAttribute }
|
|
172
178
|
} };
|
|
173
179
|
//#endregion
|
|
174
180
|
export { mongoFamilyPslBlockDescriptors as n, mongoFamilyEntityTypes as t };
|
|
175
181
|
|
|
176
|
-
//# sourceMappingURL=authoring-entity-types-
|
|
182
|
+
//# sourceMappingURL=authoring-entity-types-Do4eLmih-DIruXcuT.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authoring-entity-types-Do4eLmih-DIruXcuT.mjs","names":[],"sources":["../../../../2-mongo-family/9-family/dist/authoring-entity-types-Do4eLmih.mjs"],"sourcesContent":["import { resolveEnumCodecId } from \"@internal/framework-components/authoring\";\nimport { structuredError } from \"@internal/utils/structured-error\";\nimport { blindCast } from \"@internal/utils/casts\";\nimport { blockAttribute, str } from \"@internal/psl-parser\";\n//#region ../../1-framework/2-authoring/contract/dist/index.mjs\nfunction contractError(code, message, options) {\n\treturn structuredError(code, message, options);\n}\nconst ENUM_TYPE_HANDLE_BRAND = \"__prismaNextEnumTypeHandle__\";\nfunction enumType(name, codec, ...members) {\n\tif (members.length === 0) throw contractError(\"CONTRACT.ENUM_INVALID\", `enumType(\"${name}\"): must have at least one member.`, { meta: {\n\t\tenumName: name,\n\t\treason: \"no-members\"\n\t} });\n\tconst seenNames = /* @__PURE__ */ new Set();\n\tconst seenValues = /* @__PURE__ */ new Set();\n\tfor (const m of members) {\n\t\tif (seenNames.has(m.name)) throw contractError(\"CONTRACT.ENUM_INVALID\", `enumType(\"${name}\"): duplicate member name \"${m.name}\". Member names must be unique.`, { meta: {\n\t\t\tenumName: name,\n\t\t\tmember: m.name,\n\t\t\treason: \"duplicate-member-name\"\n\t\t} });\n\t\tseenNames.add(m.name);\n\t\tconst loweredValue = String(m.value);\n\t\tif (seenValues.has(loweredValue)) throw contractError(\"CONTRACT.ENUM_INVALID\", `enumType(\"${name}\"): duplicate member value \"${loweredValue}\". Member values must be unique.`, { meta: {\n\t\t\tenumName: name,\n\t\t\tmember: loweredValue,\n\t\t\treason: \"duplicate-member-value\"\n\t\t} });\n\t\tseenValues.add(loweredValue);\n\t}\n\tconst values = Object.freeze(members.map((m) => m.value));\n\tconst names = Object.freeze(members.map((m) => m.name));\n\tconst enumMembers = Object.freeze(members.map((m) => ({\n\t\tname: m.name,\n\t\tvalue: m.value\n\t})));\n\tconst membersAccessor = Object.freeze(Object.fromEntries(members.map((m) => [m.name, m.value])));\n\tconst valueSet = new Set(values);\n\tconst valueToName = new Map(members.map((m) => [m.value, m.name]));\n\tconst valueToOrdinal = new Map(values.map((v, i) => [v, i]));\n\treturn {\n\t\t[ENUM_TYPE_HANDLE_BRAND]: true,\n\t\tenumName: name,\n\t\tcodecId: codec.codecId,\n\t\tnativeType: codec.nativeType,\n\t\tenumMembers,\n\t\tvalues,\n\t\tnames,\n\t\tmembers: membersAccessor,\n\t\thas: (v) => valueSet.has(v),\n\t\tnameOf: (v) => valueToName.get(v),\n\t\tordinalOf: (v) => valueToOrdinal.get(v) ?? -1\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 nativeType = ctx.codecLookup?.targetTypesFor(codecId)?.[0];\n\t\tif (nativeType === 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 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, paramValue] of Object.entries(block.parameters)) {\n\t\t\tlet value;\n\t\t\tif (paramValue.kind === \"bare\") try {\n\t\t\t\tvalue = codec.decodeJson(memberName);\n\t\t\t} catch {\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: paramValue.span\n\t\t\t\t});\n\t\t\t\tmemberError = true;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\telse if (paramValue.kind === \"value\") {\n\t\t\t\tlet jsonValue;\n\t\t\t\ttry {\n\t\t\t\t\tjsonValue = JSON.parse(paramValue.raw);\n\t\t\t\t} catch {\n\t\t\t\t\tdiagnostics?.push({\n\t\t\t\t\t\tcode: \"PSL_EXTENSION_INVALID_VALUE\",\n\t\t\t\t\t\tmessage: `enum \"${block.name}\" member \"${memberName}\" value \"${paramValue.raw}\" is not valid JSON`,\n\t\t\t\t\t\tsourceId,\n\t\t\t\t\t\tspan: paramValue.span\n\t\t\t\t\t});\n\t\t\t\t\tmemberError = true;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\tvalue = codec.decodeJson(blindCast(jsonValue));\n\t\t\t\t} catch (err) {\n\t\t\t\t\tconst reason = err instanceof Error ? err.message : String(err);\n\t\t\t\t\tdiagnostics?.push({\n\t\t\t\t\t\tcode: \"PSL_EXTENSION_INVALID_VALUE\",\n\t\t\t\t\t\tmessage: `enum \"${block.name}\" member \"${memberName}\" was rejected by codec \"${codecId}\": ${reason}`,\n\t\t\t\t\t\tsourceId,\n\t\t\t\t\t\tspan: paramValue.span\n\t\t\t\t\t});\n\t\t\t\t\tmemberError = true;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t} else continue;\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: paramValue.span\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\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\", { positional: [{\n\tkey: \"codecId\",\n\ttype: str()\n}] });\nconst mongoFamilyPslBlockDescriptors = { enum: {\n\tkind: \"pslBlock\",\n\tkeyword: \"enum\",\n\tdiscriminator: \"enum\",\n\tname: { required: true },\n\tparameters: {},\n\tvariadicParameters: true,\n\tattributes: { type: () => enumTypeBlockAttribute }\n} };\n//#endregion\nexport { mongoFamilyPslBlockDescriptors as n, mongoFamilyEntityTypes as t };\n\n//# sourceMappingURL=authoring-entity-types-Do4eLmih.mjs.map"],"mappings":"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"}
|
package/dist/contract-psl.d.mts
CHANGED
|
@@ -2,7 +2,7 @@ import { Q as MongoValidator } from "./mongo-value-set-tNn9-pun-dJYx_rVD.mjs";
|
|
|
2
2
|
import "./index-Cd2zLiU6.mjs";
|
|
3
3
|
import { Contract, ContractField, ContractValueObject, JsonValue } from "@prisma/orm-framework/contract/types";
|
|
4
4
|
import { AuthoringContributions } from "@prisma/orm-framework/components/authoring";
|
|
5
|
-
import { AttributeSpec, AttributeSpecContext, FieldAttributeSpecContext, SymbolTable, TypedFuncCall } from "@prisma/orm-framework/psl-parser";
|
|
5
|
+
import { AttributeSpec, AttributeSpecContext, FieldAttributeCtx, FieldAttributeSpecContext, ModelAttributeCtx, SymbolTable, TypedFuncCall } from "@prisma/orm-framework/psl-parser";
|
|
6
6
|
import { Result } from "@prisma/orm-framework/utils/result";
|
|
7
7
|
import { SourceFile } from "@prisma/orm-framework/psl-parser/syntax";
|
|
8
8
|
import { ControlMutationDefaultRegistry } from "@prisma/orm-framework/components/control";
|
|
@@ -48,14 +48,14 @@ declare const mongoAttributeSpecs: {
|
|
|
48
48
|
readonly model: {
|
|
49
49
|
readonly map: (ctx: AttributeSpecContext) => AttributeSpec<{
|
|
50
50
|
name: string;
|
|
51
|
-
}>;
|
|
51
|
+
}, ModelAttributeCtx>;
|
|
52
52
|
readonly discriminator: (ctx: AttributeSpecContext) => AttributeSpec<{
|
|
53
53
|
field: string;
|
|
54
|
-
}>;
|
|
54
|
+
}, ModelAttributeCtx>;
|
|
55
55
|
readonly base: (ctx: AttributeSpecContext) => AttributeSpec<{
|
|
56
56
|
base: string;
|
|
57
57
|
value: string;
|
|
58
|
-
}>;
|
|
58
|
+
}, ModelAttributeCtx>;
|
|
59
59
|
readonly index: (ctx: AttributeSpecContext) => AttributeSpec<{
|
|
60
60
|
fields: (string | TypedFuncCall)[];
|
|
61
61
|
readonly collationLocale?: string;
|
|
@@ -75,7 +75,7 @@ declare const mongoAttributeSpecs: {
|
|
|
75
75
|
readonly exclude?: string[];
|
|
76
76
|
readonly default_language?: string;
|
|
77
77
|
readonly languageOverride?: string;
|
|
78
|
-
}>;
|
|
78
|
+
}, ModelAttributeCtx>;
|
|
79
79
|
readonly unique: (ctx: AttributeSpecContext) => AttributeSpec<{
|
|
80
80
|
fields: (string | TypedFuncCall)[];
|
|
81
81
|
readonly collationLocale?: string;
|
|
@@ -95,7 +95,7 @@ declare const mongoAttributeSpecs: {
|
|
|
95
95
|
readonly exclude?: string[];
|
|
96
96
|
readonly default_language?: string;
|
|
97
97
|
readonly languageOverride?: string;
|
|
98
|
-
}>;
|
|
98
|
+
}, ModelAttributeCtx>;
|
|
99
99
|
readonly textIndex: (ctx: AttributeSpecContext) => AttributeSpec<{
|
|
100
100
|
fields: (string | TypedFuncCall)[];
|
|
101
101
|
readonly collationLocale?: string;
|
|
@@ -111,19 +111,19 @@ declare const mongoAttributeSpecs: {
|
|
|
111
111
|
readonly weights?: Record<string, number>;
|
|
112
112
|
readonly language?: string;
|
|
113
113
|
readonly languageOverride?: string;
|
|
114
|
-
}>;
|
|
114
|
+
}, ModelAttributeCtx>;
|
|
115
115
|
};
|
|
116
116
|
readonly field: {
|
|
117
|
-
readonly id: (ctx: FieldAttributeSpecContext) => AttributeSpec<{}>;
|
|
118
|
-
readonly unique: (ctx: FieldAttributeSpecContext) => AttributeSpec<{}>;
|
|
117
|
+
readonly id: (ctx: FieldAttributeSpecContext) => AttributeSpec<{}, FieldAttributeCtx>;
|
|
118
|
+
readonly unique: (ctx: FieldAttributeSpecContext) => AttributeSpec<{}, FieldAttributeCtx>;
|
|
119
119
|
readonly map: (ctx: FieldAttributeSpecContext) => AttributeSpec<{
|
|
120
120
|
name: string;
|
|
121
|
-
}>;
|
|
121
|
+
}, FieldAttributeCtx>;
|
|
122
122
|
readonly relation: (ctx: FieldAttributeSpecContext) => AttributeSpec<{
|
|
123
123
|
name?: string;
|
|
124
124
|
readonly fields?: string[];
|
|
125
125
|
readonly references?: string[];
|
|
126
|
-
}>;
|
|
126
|
+
}, FieldAttributeCtx>;
|
|
127
127
|
};
|
|
128
128
|
};
|
|
129
129
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract-psl.d.mts","names":[],"sources":["../../../../2-mongo-family/2-authoring/contract-psl/dist/index.d.mts"],"mappings":";;;;;;;;;;;;;;;;;KAeK,iBAAiB;WACX,iBAAiB;;iBAEX,iBAAiB,QAAQ,eAAe,gBAAgB,eAAe,eAAe,sBAAsB,cAAc,aAAa,YAAY,iBAAiB;UAC3K;WACC;WACA,QAAQ,eAAe;;iBAEjB,4BAA4B,YAAY,eAAe,gBAAgB,4BAA4B,mBAAmB,sBAAsB,eAAe,eAAe,sBAAsB,cAAc,aAAa,YAAY,iBAAiB;;;UAG/P;WACC,aAAa;WACb,YAAY;WACZ;WACA,oBAAoB;WACpB,yBAAyB;WACzB,cAAc;WACd,2BAA2B;WAC3B,yBAAyB;;WAEzB;aACE;aACA;;;iBAGI,oCAAoC,OAAO,2CAA2C,OAAO,UAAU;;;cAG1G;WACH;aACE,MAAM,KAAK,yBAAyB;MAC3C
|
|
1
|
+
{"version":3,"file":"contract-psl.d.mts","names":[],"sources":["../../../../2-mongo-family/2-authoring/contract-psl/dist/index.d.mts"],"mappings":";;;;;;;;;;;;;;;;;KAeK,iBAAiB;WACX,iBAAiB;;iBAEX,iBAAiB,QAAQ,eAAe,gBAAgB,eAAe,eAAe,sBAAsB,cAAc,aAAa,YAAY,iBAAiB;UAC3K;WACC;WACA,QAAQ,eAAe;;iBAEjB,4BAA4B,YAAY,eAAe,gBAAgB,4BAA4B,mBAAmB,sBAAsB,eAAe,eAAe,sBAAsB,cAAc,aAAa,YAAY,iBAAiB;;;UAG/P;WACC,aAAa;WACb,YAAY;WACZ;WACA,oBAAoB;WACpB,yBAAyB;WACzB,cAAc;WACd,2BAA2B;WAC3B,yBAAyB;;WAEzB;aACE;aACA;;;iBAGI,oCAAoC,OAAO,2CAA2C,OAAO,UAAU;;;cAG1G;WACH;aACE,MAAM,KAAK,yBAAyB;MAC3C;OACC;aACM,gBAAgB,KAAK,yBAAyB;MACrD;OACC;aACM,OAAO,KAAK,yBAAyB;MAC5C;MACA;OACC;aACM,QAAQ,KAAK,yBAAyB;MAC7C,kBAAkB;eACT;eACA;eACA;eACA;eACA;eACA;eACA;eACA;eACA;eACA;eACA;eACA;eACA,SAAS;eACT;eACA;eACA;eACA;OACR;aACM,SAAS,KAAK,yBAAyB;MAC9C,kBAAkB;eACT;eACA;eACA;eACA;eACA;eACA;eACA;eACA;eACA;eACA;eACA;eACA;eACA,SAAS;eACT;eACA;eACA;eACA;OACR;aACM,YAAY,KAAK,yBAAyB;MACjD,kBAAkB;eACT;eACA;eACA;eACA;eACA;eACA;eACA;eACA;eACA;eACA,SAAS;eACT,UAAU;eACV;eACA;OACR;;WAEI;aACE,KAAK,KAAK,8BAA8B,kBAAkB;aAC1D,SAAS,KAAK,8BAA8B,kBAAkB;aAC9D,MAAM,KAAK,8BAA8B;MAChD;OACC;aACM,WAAW,KAAK,8BAA8B;MACrD;eACS;eACA;OACR"}
|
package/dist/contract-psl.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { i as mongoAttributeSpecs, n as derivePolymorphicJsonSchema, r as interpretPslDocumentToMongoContract, t as deriveJsonSchema } from "./interpreter-
|
|
1
|
+
import { i as mongoAttributeSpecs, n as derivePolymorphicJsonSchema, r as interpretPslDocumentToMongoContract, t as deriveJsonSchema } from "./interpreter-BAcUM6H7-DNUcUApV.mjs";
|
|
2
2
|
export { deriveJsonSchema, derivePolymorphicJsonSchema, interpretPslDocumentToMongoContract, mongoAttributeSpecs };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { r as interpretPslDocumentToMongoContract } from "./interpreter-
|
|
1
|
+
import { r as interpretPslDocumentToMongoContract } from "./interpreter-BAcUM6H7-DNUcUApV.mjs";
|
|
2
2
|
import { collectScalarTypeConstructors } from "@prisma/orm-framework/components/authoring";
|
|
3
3
|
import { buildSymbolTable, rangeToPslSpan } from "@prisma/orm-framework/psl-parser";
|
|
4
4
|
import { ifDefined } from "@prisma/orm-framework/utils/defined";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract-psl__provider.mjs","names":[],"sources":["../../../../2-mongo-family/2-authoring/contract-psl/dist/exports/provider.mjs"],"sourcesContent":["import { t as interpretPslDocumentToMongoContract } from \"../interpreter-
|
|
1
|
+
{"version":3,"file":"contract-psl__provider.mjs","names":[],"sources":["../../../../2-mongo-family/2-authoring/contract-psl/dist/exports/provider.mjs"],"sourcesContent":["import { t as interpretPslDocumentToMongoContract } from \"../interpreter-BAcUM6H7.mjs\";\nimport { collectScalarTypeConstructors } from \"@internal/framework-components/authoring\";\nimport { buildSymbolTable, rangeToPslSpan } from \"@internal/psl-parser\";\nimport { ifDefined } from \"@internal/utils/defined\";\nimport { notOk } from \"@internal/utils/result\";\nimport { readFile } from \"node:fs/promises\";\nimport { withSeedDiagnostics } from \"@internal/psl-parser/interpret\";\nimport { parse } from \"@internal/psl-parser/syntax\";\nimport { InternalError } from \"@internal/utils/internal-error\";\n//#region src/provider.ts\nfunction collectScalarTypeCodecIds(namespace) {\n\treturn new Map([...collectScalarTypeConstructors(namespace)].map(([name, output]) => [name, output.codecId]));\n}\nfunction mapParseDiagnostics(diagnostics, sourceFile, sourceId) {\n\treturn diagnostics.map((diagnostic) => ({\n\t\tcode: diagnostic.code,\n\t\tmessage: diagnostic.message,\n\t\tsourceId,\n\t\tspan: rangeToPslSpan(diagnostic.range, sourceFile)\n\t}));\n}\nfunction mongoContract(schemaPath, options) {\n\treturn {\n\t\tsource: {\n\t\t\tformat: \"psl\",\n\t\t\tinputs: [schemaPath],\n\t\t\tinterpret(input, context) {\n\t\t\t\treturn interpretPslDocumentToMongoContract({\n\t\t\t\t\tsymbolTable: input.symbolTable,\n\t\t\t\t\tsourceFile: input.sourceFile,\n\t\t\t\t\tsourceId: input.sourceId,\n\t\t\t\t\tseedDiagnostics: [],\n\t\t\t\t\tscalarTypeCodecIds: collectScalarTypeCodecIds(context.authoringContributions.type),\n\t\t\t\t\tcontrolMutationDefaults: context.controlMutationDefaults.defaultFunctionRegistry,\n\t\t\t\t\tcodecLookup: context.codecLookup,\n\t\t\t\t\tauthoringContributions: context.authoringContributions,\n\t\t\t\t\t...ifDefined(\"enumInferenceCodecs\", options?.enumInferenceCodecs)\n\t\t\t\t});\n\t\t\t},\n\t\t\tasync load(context) {\n\t\t\t\tconst [absoluteSchemaPath] = context.resolvedInputs;\n\t\t\t\tif (absoluteSchemaPath === void 0) throw new InternalError(\"mongoContract: context.resolvedInputs is empty. The CLI config loader should populate it positional-matched with source.inputs.\");\n\t\t\t\tlet schema;\n\t\t\t\ttry {\n\t\t\t\t\tschema = await readFile(absoluteSchemaPath, \"utf-8\");\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconst message = String(error);\n\t\t\t\t\treturn notOk({\n\t\t\t\t\t\tsummary: `Failed to read Prisma schema at \"${schemaPath}\"`,\n\t\t\t\t\t\tdiagnostics: [{\n\t\t\t\t\t\t\tcode: \"PSL_SCHEMA_READ_FAILED\",\n\t\t\t\t\t\t\tmessage,\n\t\t\t\t\t\t\tsourceId: schemaPath\n\t\t\t\t\t\t}],\n\t\t\t\t\t\tmeta: {\n\t\t\t\t\t\t\tschemaPath,\n\t\t\t\t\t\t\tabsoluteSchemaPath,\n\t\t\t\t\t\t\tcause: message\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tconst { document, sourceFile, diagnostics: parseDiagnostics } = parse(schema);\n\t\t\t\tconst { table: symbolTable, diagnostics: symbolTableDiagnostics } = buildSymbolTable({\n\t\t\t\t\tdocument,\n\t\t\t\t\tsourceFile,\n\t\t\t\t\tpslBlockDescriptors: context.authoringContributions.pslBlockDescriptors\n\t\t\t\t});\n\t\t\t\tconst seedDiagnostics = [...mapParseDiagnostics(parseDiagnostics, sourceFile, schemaPath), ...mapParseDiagnostics(symbolTableDiagnostics, sourceFile, schemaPath)];\n\t\t\t\treturn withSeedDiagnostics(this.interpret({\n\t\t\t\t\tdocument,\n\t\t\t\t\tsourceFile,\n\t\t\t\t\tsymbolTable,\n\t\t\t\t\tsourceId: schemaPath\n\t\t\t\t}, context), seedDiagnostics);\n\t\t\t}\n\t\t},\n\t\t...ifDefined(\"output\", options?.output)\n\t};\n}\n//#endregion\nexport { mongoContract };\n\n//# sourceMappingURL=provider.mjs.map"],"mappings":";;;;;;;;;;AAUA,SAAS,0BAA0B,WAAW;CAC7C,OAAO,IAAI,IAAI,CAAC,GAAG,8BAA8B,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,YAAY,CAAC,MAAM,OAAO,OAAO,CAAC,CAAC;AAC7G;AACA,SAAS,oBAAoB,aAAa,YAAY,UAAU;CAC/D,OAAO,YAAY,KAAK,gBAAgB;EACvC,MAAM,WAAW;EACjB,SAAS,WAAW;EACpB;EACA,MAAM,eAAe,WAAW,OAAO,UAAU;CAClD,EAAE;AACH;AACA,SAAS,cAAc,YAAY,SAAS;CAC3C,OAAO;EACN,QAAQ;GACP,QAAQ;GACR,QAAQ,CAAC,UAAU;GACnB,UAAU,OAAO,SAAS;IACzB,OAAO,oCAAoC;KAC1C,aAAa,MAAM;KACnB,YAAY,MAAM;KAClB,UAAU,MAAM;KAChB,iBAAiB,CAAC;KAClB,oBAAoB,0BAA0B,QAAQ,uBAAuB,IAAI;KACjF,yBAAyB,QAAQ,wBAAwB;KACzD,aAAa,QAAQ;KACrB,wBAAwB,QAAQ;KAChC,GAAG,UAAU,uBAAuB,SAAS,mBAAmB;IACjE,CAAC;GACF;GACA,MAAM,KAAK,SAAS;IACnB,MAAM,CAAC,sBAAsB,QAAQ;IACrC,IAAI,uBAAuB,KAAK,GAAG,MAAM,IAAI,cAAc,iIAAiI;IAC5L,IAAI;IACJ,IAAI;KACH,SAAS,MAAM,SAAS,oBAAoB,OAAO;IACpD,SAAS,OAAO;KACf,MAAM,UAAU,OAAO,KAAK;KAC5B,OAAO,MAAM;MACZ,SAAS,oCAAoC,WAAW;MACxD,aAAa,CAAC;OACb,MAAM;OACN;OACA,UAAU;MACX,CAAC;MACD,MAAM;OACL;OACA;OACA,OAAO;MACR;KACD,CAAC;IACF;IACA,MAAM,EAAE,UAAU,YAAY,aAAa,qBAAqB,MAAM,MAAM;IAC5E,MAAM,EAAE,OAAO,aAAa,aAAa,2BAA2B,iBAAiB;KACpF;KACA;KACA,qBAAqB,QAAQ,uBAAuB;IACrD,CAAC;IACD,MAAM,kBAAkB,CAAC,GAAG,oBAAoB,kBAAkB,YAAY,UAAU,GAAG,GAAG,oBAAoB,wBAAwB,YAAY,UAAU,CAAC;IACjK,OAAO,oBAAoB,KAAK,UAAU;KACzC;KACA;KACA;KACA,UAAU;IACX,GAAG,OAAO,GAAG,eAAe;GAC7B;EACD;EACA,GAAG,UAAU,UAAU,SAAS,MAAM;CACvC;AACD"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { t as mongoContractCanonicalizationHooks } from "./canonicalization-hooks-DF3Z6sjO.mjs";
|
|
2
|
-
import { i as mongoAttributeSpecs } from "./interpreter-
|
|
2
|
+
import { i as mongoAttributeSpecs } from "./interpreter-BAcUM6H7-DNUcUApV.mjs";
|
|
3
3
|
import { t as mongoEmission } from "./exports-C4RGBGzZ.mjs";
|
|
4
4
|
import { i as verifyMongoSchema } from "./verify-mongo-schema-De0FG2Rm-CCzwnNPY.mjs";
|
|
5
|
-
import { n as mongoFamilyPslBlockDescriptors, t as mongoFamilyEntityTypes } from "./authoring-entity-types-
|
|
5
|
+
import { n as mongoFamilyPslBlockDescriptors, t as mongoFamilyEntityTypes } from "./authoring-entity-types-Do4eLmih-DIruXcuT.mjs";
|
|
6
6
|
import { t as MongoContractSerializer } from "./mongo-contract-serializer-Cx7Fae8e-C8ZYPXpc.mjs";
|
|
7
7
|
import { structuredError } from "@prisma/orm-framework/utils/structured-error";
|
|
8
8
|
import { ifDefined } from "@prisma/orm-framework/utils/defined";
|
|
@@ -398,4 +398,4 @@ const mongoFamilyDescriptor = new MongoFamilyDescriptor();
|
|
|
398
398
|
//#endregion
|
|
399
399
|
export { mongoOperationsToPreview as i, formatMongoOperations as n, mongoFamilyDescriptor as r, createMongoFamilyInstance as t };
|
|
400
400
|
|
|
401
|
-
//# sourceMappingURL=control-
|
|
401
|
+
//# sourceMappingURL=control-BNRwpUCl.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"control-B-sfDUVo.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-De0FG2Rm.mjs\";\nimport { n as mongoFamilyPslBlockDescriptors, t as mongoFamilyEntityTypes } from \"./authoring-entity-types-BGtkMyoN.mjs\";\nimport { t as MongoContractSerializer } from \"./mongo-contract-serializer-Cx7Fae8e.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 { 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 = 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\"] ?? \"unknown\";\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 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 = 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 = 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(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 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\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-BNRwpUCl.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-De0FG2Rm.mjs\";\nimport { n as mongoFamilyPslBlockDescriptors, t as mongoFamilyEntityTypes } from \"./authoring-entity-types-Do4eLmih.mjs\";\nimport { t as MongoContractSerializer } from \"./mongo-contract-serializer-Cx7Fae8e.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 { 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 = 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\"] ?? \"unknown\";\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 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 = 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 = 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(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 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\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.d.mts
CHANGED
|
@@ -4,7 +4,7 @@ import { n as MongoControlAdapterDescriptor, t as MongoControlAdapter } from "./
|
|
|
4
4
|
import { t as MongoContractView$1 } from "./mongo-contract-view-AnejqfrQ-BaCFT0xm.mjs";
|
|
5
5
|
import { n as MongoContractSerializerBase, r as MongoSchemaVerifierBase, t as MongoContractSerializer } from "./ir-CQrenTYt.mjs";
|
|
6
6
|
import { t as MongoMigration } from "./migration-CNDQv5yB.mjs";
|
|
7
|
-
import { r as mongoFamilyPslBlockDescriptors, t as mongoFamilyEntityTypes } from "./pack-
|
|
7
|
+
import { r as mongoFamilyPslBlockDescriptors, t as mongoFamilyEntityTypes } from "./pack-ByR2mQ_8.mjs";
|
|
8
8
|
import "./runtime-DPkRW4iu.mjs";
|
|
9
9
|
import { n as verifyMongoSchema, t as VerifyMongoSchemaOptions } from "./schema-verify-DJGr28XW.mjs";
|
|
10
10
|
export { MongoMigration as Migration, MongoContractSerializer, MongoContractSerializerBase, MongoContractView$1 as MongoContractView, type MongoControlAdapter, type MongoControlAdapterDescriptor, type MongoControlExtensionDescriptor, type MongoControlFamilyInstance, type MongoControlTargetDescriptor, MongoSchemaVerifierBase, type VerifyMongoSchemaOptions, canonicalizeSchemasForVerification, contractToMongoSchemaIR, createMongoFamilyInstance, defaultMongoDomainNamespaceId, defaultMongoStorageNamespaceId, diffMongoSchemas, formatMongoOperations, mongoFamilyDescriptor, mongoFamilyEntityTypes, mongoFamilyPslBlockDescriptors, mongoOperationsToPreview, verifyMongoSchema };
|
package/dist/family.mjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { c as defaultMongoDomainNamespaceId, l as defaultMongoStorageNamespaceId } from "./dist-DHrEJnhK.mjs";
|
|
2
2
|
import { i as verifyMongoSchema, n as contractToMongoSchemaIR, r as diffMongoSchemas, t as canonicalizeSchemasForVerification } from "./verify-mongo-schema-De0FG2Rm-CCzwnNPY.mjs";
|
|
3
|
-
import { n as mongoFamilyPslBlockDescriptors, t as mongoFamilyEntityTypes } from "./authoring-entity-types-
|
|
3
|
+
import { n as mongoFamilyPslBlockDescriptors, t as mongoFamilyEntityTypes } from "./authoring-entity-types-Do4eLmih-DIruXcuT.mjs";
|
|
4
4
|
import { n as MongoContractSerializerBase, t as MongoContractSerializer } from "./mongo-contract-serializer-Cx7Fae8e-C8ZYPXpc.mjs";
|
|
5
|
-
import { i as mongoOperationsToPreview, n as formatMongoOperations, r as mongoFamilyDescriptor, t as createMongoFamilyInstance } from "./control-
|
|
5
|
+
import { i as mongoOperationsToPreview, n as formatMongoOperations, r as mongoFamilyDescriptor, t as createMongoFamilyInstance } from "./control-BNRwpUCl.mjs";
|
|
6
6
|
import { t as MongoContractView$1 } from "./mongo-contract-view-rcWzby6f-wRBCUnBt.mjs";
|
|
7
7
|
import { t as MongoSchemaVerifierBase } from "./ir-Ch2aPr7a.mjs";
|
|
8
8
|
import { t as MongoMigration } from "./migration-dcM7u4HG.mjs";
|
package/dist/family__control.mjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { n as contractToMongoSchemaIR, r as diffMongoSchemas, t as canonicalizeSchemasForVerification } from "./verify-mongo-schema-De0FG2Rm-CCzwnNPY.mjs";
|
|
2
|
-
import { i as mongoOperationsToPreview, n as formatMongoOperations, r as mongoFamilyDescriptor, t as createMongoFamilyInstance } from "./control-
|
|
2
|
+
import { i as mongoOperationsToPreview, n as formatMongoOperations, r as mongoFamilyDescriptor, t as createMongoFamilyInstance } from "./control-BNRwpUCl.mjs";
|
|
3
3
|
export { canonicalizeSchemasForVerification, contractToMongoSchemaIR, createMongoFamilyInstance, diffMongoSchemas, formatMongoOperations, mongoFamilyDescriptor, mongoOperationsToPreview };
|
package/dist/family__pack.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as mongoFamilyPack, r as mongoFamilyPslBlockDescriptors, t as mongoFamilyEntityTypes } from "./pack-
|
|
1
|
+
import { n as mongoFamilyPack, r as mongoFamilyPslBlockDescriptors, t as mongoFamilyEntityTypes } from "./pack-ByR2mQ_8.mjs";
|
|
2
2
|
export { mongoFamilyPack as default, mongoFamilyEntityTypes, mongoFamilyPslBlockDescriptors };
|
package/dist/family__pack.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { i as mongoAttributeSpecs } from "./interpreter-
|
|
2
|
-
import { n as mongoFamilyPslBlockDescriptors, t as mongoFamilyEntityTypes } from "./authoring-entity-types-
|
|
1
|
+
import { i as mongoAttributeSpecs } from "./interpreter-BAcUM6H7-DNUcUApV.mjs";
|
|
2
|
+
import { n as mongoFamilyPslBlockDescriptors, t as mongoFamilyEntityTypes } from "./authoring-entity-types-Do4eLmih-DIruXcuT.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-
|
|
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-Do4eLmih.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"}
|
|
@@ -7,11 +7,11 @@ import { blindCast } from "@prisma/orm-framework/utils/casts";
|
|
|
7
7
|
import { computeProfileHash, computeStorageHash } from "@prisma/orm-framework/contract/hashing";
|
|
8
8
|
import { errorEnumCodecNotInPackStack } from "@prisma/orm-framework/errors/control";
|
|
9
9
|
import { instantiateAuthoringEntityType, isAuthoringEntityTypeDescriptor } from "@prisma/orm-framework/components/authoring";
|
|
10
|
-
import { bool, entityRef, fieldAttribute, fieldRef, funcCall, identifier, int, interpretAttribute, json, list, modelAttribute, nodePslSpan, num, oneOf, optional, record, str } from "@prisma/orm-framework/psl-parser";
|
|
10
|
+
import { bool, entityRef, fieldAttribute, fieldRef, funcCall, identifier, int, interpretAttribute, json, list, modelAttribute, nodePslSpan, num, oneOf, optional, record, referencedFieldRef, str } from "@prisma/orm-framework/psl-parser";
|
|
11
11
|
import { assertDefined } from "@prisma/orm-framework/utils/assertions";
|
|
12
12
|
import { ifDefined } from "@prisma/orm-framework/utils/defined";
|
|
13
13
|
import { notOk, ok } from "@prisma/orm-framework/utils/result";
|
|
14
|
-
//#region ../../../2-mongo-family/2-authoring/contract-psl/dist/interpreter-
|
|
14
|
+
//#region ../../../2-mongo-family/2-authoring/contract-psl/dist/interpreter-BAcUM6H7.mjs
|
|
15
15
|
function resolveBsonType(codecId, codecLookup) {
|
|
16
16
|
return codecLookup?.targetTypesFor(codecId)?.[0];
|
|
17
17
|
}
|
|
@@ -119,18 +119,15 @@ function findModelAttributeNode(model, name) {
|
|
|
119
119
|
function findFieldAttributeNode(field, name) {
|
|
120
120
|
for (const attribute of field.node.attributes()) if (attribute.name()?.isSimpleName(name) === true) return attribute;
|
|
121
121
|
}
|
|
122
|
-
function
|
|
122
|
+
function buildModelAttributeCtx(input) {
|
|
123
123
|
return {
|
|
124
|
-
level: "model",
|
|
125
124
|
sourceId: input.sourceId,
|
|
126
125
|
sourceFile: input.sourceFile,
|
|
127
|
-
selfModel: input.selfModel
|
|
128
|
-
resolveReferencedModel: () => void 0
|
|
126
|
+
selfModel: input.selfModel
|
|
129
127
|
};
|
|
130
128
|
}
|
|
131
|
-
function
|
|
129
|
+
function buildFieldAttributeCtx(input) {
|
|
132
130
|
return {
|
|
133
|
-
level: "field",
|
|
134
131
|
sourceId: input.sourceId,
|
|
135
132
|
sourceFile: input.sourceFile,
|
|
136
133
|
selfModel: input.selfModel,
|
|
@@ -139,7 +136,7 @@ function buildFieldInterpretCtx(input) {
|
|
|
139
136
|
};
|
|
140
137
|
}
|
|
141
138
|
function interpretModelAttribute(input) {
|
|
142
|
-
const result = interpretAttribute(input.node, input.spec,
|
|
139
|
+
const result = interpretAttribute(input.node, input.spec, buildModelAttributeCtx({
|
|
143
140
|
selfModel: input.model,
|
|
144
141
|
sourceFile: input.sourceFile,
|
|
145
142
|
sourceId: input.sourceId
|
|
@@ -151,7 +148,7 @@ function interpretModelAttribute(input) {
|
|
|
151
148
|
return result.value;
|
|
152
149
|
}
|
|
153
150
|
function interpretFieldAttribute(input) {
|
|
154
|
-
const result = interpretAttribute(input.node, input.spec,
|
|
151
|
+
const result = interpretAttribute(input.node, input.spec, buildFieldAttributeCtx({
|
|
155
152
|
selfModel: input.model,
|
|
156
153
|
field: input.field,
|
|
157
154
|
sourceFile: input.sourceFile,
|
|
@@ -181,11 +178,11 @@ const relationFieldSpec = fieldAttribute("relation", {
|
|
|
181
178
|
}],
|
|
182
179
|
named: {
|
|
183
180
|
name: optional(str()),
|
|
184
|
-
fields: optional(list(fieldRef(
|
|
181
|
+
fields: optional(list(fieldRef(), {
|
|
185
182
|
nonEmpty: true,
|
|
186
183
|
unique: true
|
|
187
184
|
})),
|
|
188
|
-
references: optional(list(
|
|
185
|
+
references: optional(list(referencedFieldRef(), {
|
|
189
186
|
nonEmpty: true,
|
|
190
187
|
unique: true
|
|
191
188
|
}))
|
|
@@ -193,7 +190,7 @@ const relationFieldSpec = fieldAttribute("relation", {
|
|
|
193
190
|
});
|
|
194
191
|
const discriminatorModelSpec = modelAttribute("discriminator", { positional: [{
|
|
195
192
|
key: "field",
|
|
196
|
-
type: fieldRef(
|
|
193
|
+
type: fieldRef()
|
|
197
194
|
}] });
|
|
198
195
|
const baseModelSpec = modelAttribute("base", { positional: [{
|
|
199
196
|
key: "base",
|
|
@@ -205,7 +202,7 @@ const baseModelSpec = modelAttribute("base", { positional: [{
|
|
|
205
202
|
const sortSig = { named: { sort: oneOf(identifier("Asc"), identifier("Desc")) } };
|
|
206
203
|
function indexFieldElement(fieldNames) {
|
|
207
204
|
return oneOf(...[
|
|
208
|
-
fieldRef(
|
|
205
|
+
fieldRef(),
|
|
209
206
|
funcCall("wildcard", { positional: [{
|
|
210
207
|
key: "scope",
|
|
211
208
|
type: optional(entityRef())
|
|
@@ -1315,4 +1312,4 @@ function interpretPslDocumentToMongoContract(input) {
|
|
|
1315
1312
|
//#endregion
|
|
1316
1313
|
export { mongoAttributeSpecs as i, derivePolymorphicJsonSchema as n, interpretPslDocumentToMongoContract as r, deriveJsonSchema as t };
|
|
1317
1314
|
|
|
1318
|
-
//# sourceMappingURL=interpreter-
|
|
1315
|
+
//# sourceMappingURL=interpreter-BAcUM6H7-DNUcUApV.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interpreter-BAcUM6H7-DNUcUApV.mjs","names":[],"sources":["../../../../2-mongo-family/2-authoring/contract-psl/dist/interpreter-BAcUM6H7.mjs"],"sourcesContent":["import { MongoIndex, MongoStorage, MongoValidator, applyPolymorphicScopeToMongoIndex, buildMongoNamespace } from \"@internal/mongo-contract\";\nimport { computeProfileHash, computeStorageHash } from \"@internal/contract/hashing\";\nimport { crossRef } from \"@internal/contract/types\";\nimport { errorEnumCodecNotInPackStack } from \"@internal/errors/control\";\nimport { instantiateAuthoringEntityType, isAuthoringEntityTypeDescriptor } from \"@internal/framework-components/authoring\";\nimport { UNBOUND_NAMESPACE_ID } from \"@internal/framework-components/ir\";\nimport { mongoContractCanonicalizationHooks } from \"@internal/mongo-contract/canonicalization-hooks\";\nimport { bool, entityRef, fieldAttribute, fieldRef, funcCall, identifier, int, interpretAttribute, json, list, modelAttribute, nodePslSpan, num, oneOf, optional, record, referencedFieldRef, str } from \"@internal/psl-parser\";\nimport { assertDefined } from \"@internal/utils/assertions\";\nimport { blindCast } from \"@internal/utils/casts\";\nimport { ifDefined } from \"@internal/utils/defined\";\nimport { notOk, ok } from \"@internal/utils/result\";\n//#region src/derive-json-schema.ts\nfunction resolveBsonType(codecId, codecLookup) {\n\treturn codecLookup?.targetTypesFor(codecId)?.[0];\n}\nfunction fieldToBsonSchema(field, valueObjects, codecLookup, valueSets) {\n\tif (field.type.kind === \"scalar\") {\n\t\tconst bsonType = resolveBsonType(field.type.codecId, codecLookup);\n\t\tif (!bsonType) return void 0;\n\t\tconst enumValues = field.valueSet !== void 0 ? valueSets?.[field.valueSet.entityName]?.values ?? null : null;\n\t\tif (\"many\" in field && field.many) {\n\t\t\tconst items = { bsonType };\n\t\t\tif (enumValues) items[\"enum\"] = enumValues;\n\t\t\treturn {\n\t\t\t\tbsonType: \"array\",\n\t\t\t\titems\n\t\t\t};\n\t\t}\n\t\tif (field.nullable) {\n\t\t\tconst s = { bsonType: [\"null\", bsonType] };\n\t\t\tif (enumValues) s[\"enum\"] = [...enumValues, null];\n\t\t\treturn s;\n\t\t}\n\t\tconst s = { bsonType };\n\t\tif (enumValues) s[\"enum\"] = enumValues;\n\t\treturn s;\n\t}\n\tif (field.type.kind === \"valueObject\") {\n\t\tconst vo = valueObjects?.[field.type.name];\n\t\tif (!vo) return void 0;\n\t\tconst voSchema = deriveObjectSchema(vo.fields, valueObjects, codecLookup, valueSets);\n\t\tif (\"many\" in field && field.many) return {\n\t\t\tbsonType: \"array\",\n\t\t\titems: voSchema\n\t\t};\n\t\tif (field.nullable) return { oneOf: [{ bsonType: \"null\" }, voSchema] };\n\t\treturn voSchema;\n\t}\n}\nfunction deriveObjectSchema(fields, valueObjects, codecLookup, valueSets) {\n\tconst properties = {};\n\tconst required = [];\n\tfor (const [fieldName, field] of Object.entries(fields)) {\n\t\tconst schema = fieldToBsonSchema(field, valueObjects, codecLookup, valueSets);\n\t\tif (schema) {\n\t\t\tproperties[fieldName] = schema;\n\t\t\tif (!field.nullable) required.push(fieldName);\n\t\t}\n\t}\n\tconst result = {\n\t\tbsonType: \"object\",\n\t\tproperties,\n\t\tadditionalProperties: false\n\t};\n\tif (required.length > 0) result[\"required\"] = required.sort();\n\treturn result;\n}\nfunction isRecord(value) {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction deriveJsonSchema(fields, valueObjects, codecLookup, valueSets) {\n\treturn new MongoValidator({\n\t\tjsonSchema: deriveObjectSchema(fields, valueObjects, codecLookup, valueSets),\n\t\tvalidationLevel: \"strict\",\n\t\tvalidationAction: \"error\"\n\t});\n}\nfunction derivePolymorphicJsonSchema(baseFields, discriminatorField, variants, valueObjects, codecLookup, valueSets) {\n\tconst baseSchema = deriveObjectSchema(baseFields, valueObjects, codecLookup, valueSets);\n\tconst baseProperties = isRecord(baseSchema[\"properties\"]) ? baseSchema[\"properties\"] : {};\n\tconst oneOf = [];\n\tfor (const variant of variants) {\n\t\tconst variantOnlyFields = {};\n\t\tfor (const [name, field] of Object.entries(variant.fields)) if (!(name in baseFields)) variantOnlyFields[name] = field;\n\t\tconst variantProperties = {};\n\t\tconst variantRequired = [discriminatorField];\n\t\tfor (const [name, field] of Object.entries(variantOnlyFields)) {\n\t\t\tconst schema = fieldToBsonSchema(field, valueObjects, codecLookup, valueSets);\n\t\t\tif (schema) {\n\t\t\t\tvariantProperties[name] = schema;\n\t\t\t\tif (!field.nullable) variantRequired.push(name);\n\t\t\t}\n\t\t}\n\t\tconst entry = {\n\t\t\tproperties: {\n\t\t\t\t...baseProperties,\n\t\t\t\t[discriminatorField]: { enum: [variant.discriminatorValue] },\n\t\t\t\t...variantProperties\n\t\t\t},\n\t\t\trequired: variantRequired.sort(),\n\t\t\tadditionalProperties: false\n\t\t};\n\t\toneOf.push(entry);\n\t}\n\tconst jsonSchema = { ...baseSchema };\n\tdelete jsonSchema[\"additionalProperties\"];\n\tif (oneOf.length > 0) jsonSchema[\"oneOf\"] = oneOf;\n\treturn new MongoValidator({\n\t\tjsonSchema,\n\t\tvalidationLevel: \"strict\",\n\t\tvalidationAction: \"error\"\n\t});\n}\n//#endregion\n//#region src/mongo-attribute-specs.ts\nfunction findModelAttributeNode(model, name) {\n\tfor (const attribute of model.node.attributes()) if (attribute.name()?.isSimpleName(name) === true) return attribute;\n}\nfunction findFieldAttributeNode(field, name) {\n\tfor (const attribute of field.node.attributes()) if (attribute.name()?.isSimpleName(name) === true) return attribute;\n}\nfunction buildModelAttributeCtx(input) {\n\treturn {\n\t\tsourceId: input.sourceId,\n\t\tsourceFile: input.sourceFile,\n\t\tselfModel: input.selfModel\n\t};\n}\nfunction buildFieldAttributeCtx(input) {\n\treturn {\n\t\tsourceId: input.sourceId,\n\t\tsourceFile: input.sourceFile,\n\t\tselfModel: input.selfModel,\n\t\tresolveReferencedModel: input.resolveReferencedModel ?? (() => void 0),\n\t\tfield: input.field\n\t};\n}\nfunction interpretModelAttribute(input) {\n\tconst result = interpretAttribute(input.node, input.spec, buildModelAttributeCtx({\n\t\tselfModel: input.model,\n\t\tsourceFile: input.sourceFile,\n\t\tsourceId: input.sourceId\n\t}));\n\tif (!result.ok) {\n\t\tfor (const failure of result.failure) input.diagnostics.push(failure);\n\t\treturn;\n\t}\n\treturn result.value;\n}\nfunction interpretFieldAttribute(input) {\n\tconst result = interpretAttribute(input.node, input.spec, buildFieldAttributeCtx({\n\t\tselfModel: input.model,\n\t\tfield: input.field,\n\t\tsourceFile: input.sourceFile,\n\t\tsourceId: input.sourceId,\n\t\tresolveReferencedModel: input.resolveReferencedModel\n\t}));\n\tif (!result.ok) {\n\t\tfor (const failure of result.failure) input.diagnostics.push(failure);\n\t\treturn;\n\t}\n\treturn result.value;\n}\nconst mapModelSpec = modelAttribute(\"map\", { positional: [{\n\tkey: \"name\",\n\ttype: str()\n}] });\nconst mapFieldSpec = fieldAttribute(\"map\", { positional: [{\n\tkey: \"name\",\n\ttype: str()\n}] });\nconst idFieldSpec = fieldAttribute(\"id\", {});\nconst uniqueFieldSpec = fieldAttribute(\"unique\", {});\nconst relationFieldSpec = fieldAttribute(\"relation\", {\n\tpositional: [{\n\t\tkey: \"name\",\n\t\ttype: optional(str())\n\t}],\n\tnamed: {\n\t\tname: optional(str()),\n\t\tfields: optional(list(fieldRef(), {\n\t\t\tnonEmpty: true,\n\t\t\tunique: true\n\t\t})),\n\t\treferences: optional(list(referencedFieldRef(), {\n\t\t\tnonEmpty: true,\n\t\t\tunique: true\n\t\t}))\n\t}\n});\nconst discriminatorModelSpec = modelAttribute(\"discriminator\", { positional: [{\n\tkey: \"field\",\n\ttype: fieldRef()\n}] });\nconst baseModelSpec = modelAttribute(\"base\", { positional: [{\n\tkey: \"base\",\n\ttype: entityRef()\n}, {\n\tkey: \"value\",\n\ttype: str()\n}] });\nconst sortSig = { named: { sort: oneOf(identifier(\"Asc\"), identifier(\"Desc\")) } };\nfunction indexFieldElement(fieldNames) {\n\treturn oneOf(...[\n\t\tfieldRef(),\n\t\tfuncCall(\"wildcard\", { positional: [{\n\t\t\tkey: \"scope\",\n\t\t\ttype: optional(entityRef())\n\t\t}] }),\n\t\t...fieldNames.map((name) => funcCall(name, sortSig))\n\t]);\n}\nconst collationNamedArgs = {\n\tcollationLocale: optional(str()),\n\tcollationStrength: optional(oneOf(num(1), num(2), num(3), num(4), num(5))),\n\tcollationCaseLevel: optional(bool()),\n\tcollationCaseFirst: optional(oneOf(str(\"upper\"), str(\"lower\"), str(\"off\"))),\n\tcollationNumericOrdering: optional(bool()),\n\tcollationAlternate: optional(oneOf(str(\"non-ignorable\"), str(\"shifted\"))),\n\tcollationMaxVariable: optional(oneOf(str(\"punct\"), str(\"space\"))),\n\tcollationBackwards: optional(bool()),\n\tcollationNormalization: optional(bool())\n};\nfunction buildIndexModelSpec(name, fieldElement) {\n\treturn modelAttribute(name, {\n\t\tpositional: [{\n\t\t\tkey: \"fields\",\n\t\t\ttype: list(fieldElement, { nonEmpty: true })\n\t\t}],\n\t\tnamed: {\n\t\t\ttype: optional(oneOf(num(1), num(-1), str(\"text\"), str(\"2dsphere\"), str(\"2d\"), str(\"hashed\"))),\n\t\t\tsparse: optional(bool()),\n\t\t\texpireAfterSeconds: optional(int()),\n\t\t\tfilter: optional(json()),\n\t\t\tinclude: optional(list(str())),\n\t\t\texclude: optional(list(str())),\n\t\t\tdefault_language: optional(str()),\n\t\t\tlanguageOverride: optional(str()),\n\t\t\t...collationNamedArgs\n\t\t}\n\t});\n}\nfunction buildTextIndexModelSpec(fieldElement) {\n\treturn modelAttribute(\"textIndex\", {\n\t\tpositional: [{\n\t\t\tkey: \"fields\",\n\t\t\ttype: list(fieldElement, { nonEmpty: true })\n\t\t}],\n\t\tnamed: {\n\t\t\tfilter: optional(json()),\n\t\t\tweights: optional(record(int({\n\t\t\t\tmin: 1,\n\t\t\t\tmax: 99999\n\t\t\t}))),\n\t\t\tlanguage: optional(str()),\n\t\t\tlanguageOverride: optional(str()),\n\t\t\t...collationNamedArgs\n\t\t}\n\t});\n}\nfunction modelFieldElement(ctx) {\n\treturn indexFieldElement(Object.keys(ctx.model.fields));\n}\nfunction staticModelSpec(spec) {\n\treturn () => spec;\n}\nfunction staticFieldSpec(spec) {\n\treturn () => spec;\n}\nconst mongoAttributeSpecs = {\n\tmodel: {\n\t\tmap: staticModelSpec(mapModelSpec),\n\t\tdiscriminator: staticModelSpec(discriminatorModelSpec),\n\t\tbase: staticModelSpec(baseModelSpec),\n\t\tindex: (ctx) => buildIndexModelSpec(\"index\", modelFieldElement(ctx)),\n\t\tunique: (ctx) => buildIndexModelSpec(\"unique\", modelFieldElement(ctx)),\n\t\ttextIndex: (ctx) => buildTextIndexModelSpec(modelFieldElement(ctx))\n\t},\n\tfield: {\n\t\tid: staticFieldSpec(idFieldSpec),\n\t\tunique: staticFieldSpec(uniqueFieldSpec),\n\t\tmap: staticFieldSpec(mapFieldSpec),\n\t\trelation: staticFieldSpec(relationFieldSpec)\n\t}\n};\n//#endregion\n//#region src/psl-helpers.ts\nfunction lowerFirst(value) {\n\tif (value.length === 0) return value;\n\treturn value[0]?.toLowerCase() + value.slice(1);\n}\nfunction getAttribute(attributes, name) {\n\treturn attributes.find((attr) => attr.name === name);\n}\n//#endregion\n//#region src/interpreter.ts\n/**\n* Encode an authored enum value to its codec-encoded JSON form via the codec resolved by id from the\n* contract's codec lookup, so a non-identity `encodeJson` (permitted by the `mongoCodec` factory) is\n* respected. Matches the TS builder's `encodeEnumValue`: the lookup is always threaded in production,\n* and a codecId the lookup cannot resolve is a hard error — the enum uses a codec that is not part of\n* the contract's pack stack.\n*/\nfunction encodeEnumValue(value, codecId, codecLookup) {\n\tconst codec = codecLookup.get(codecId);\n\tif (!codec) throw errorEnumCodecNotInPackStack({ codecId });\n\treturn codec.encodeJson(value);\n}\n/**\n* Mongo's PSL surface binds the database from the connection string, so every\n* explicit namespace block is invalid, including `namespace unbound { … }`.\n*/\nfunction validateNamespaceBlocksForMongoTarget(input) {\n\tfor (const namespace of input.namespaces) input.diagnostics.push({\n\t\tcode: \"PSL_UNSUPPORTED_NAMESPACE_BLOCK\",\n\t\tmessage: `Mongo does not support \\`namespace ${namespace.name} { … }\\` blocks (the database is bound by the connection string; declare models at the document top level instead).`,\n\t\tsourceId: input.sourceId,\n\t\tspan: nodePslSpan(namespace.node.syntax, input.sourceFile)\n\t});\n}\nconst UNLOWERED_FIELD_ATTRIBUTE_HINTS = /* @__PURE__ */ new Map([[\"updatedAt\", \"Mongo lowers no automatic timestamp updates; delete the attribute and set the timestamp in application code.\"]]);\nfunction unsupportedFieldAttributeMessage(ownerName, fieldName, attributeName) {\n\tconst base = `Field \"${ownerName}.${fieldName}\" uses unsupported attribute \"@${attributeName}\"`;\n\tconst hint = UNLOWERED_FIELD_ATTRIBUTE_HINTS.get(attributeName);\n\treturn hint === void 0 ? base : `${base}. ${hint}`;\n}\nfunction reportUnknownAttributes(input) {\n\tconst { sourceId, diagnostics } = input;\n\tfor (const model of input.models) for (const attribute of model.attributes) {\n\t\tif (Object.hasOwn(mongoAttributeSpecs.model, attribute.name)) continue;\n\t\tdiagnostics.push({\n\t\t\tcode: \"PSL_UNSUPPORTED_MODEL_ATTRIBUTE\",\n\t\t\tmessage: `Model \"${model.name}\" uses unsupported attribute \"@@${attribute.name}\"`,\n\t\t\tsourceId,\n\t\t\tspan: attribute.span\n\t\t});\n\t}\n\tfor (const owner of [...input.models, ...input.compositeTypes]) for (const field of Object.values(owner.fields)) for (const attribute of field.attributes) {\n\t\tif (Object.hasOwn(mongoAttributeSpecs.field, attribute.name)) continue;\n\t\tdiagnostics.push({\n\t\t\tcode: \"PSL_UNSUPPORTED_FIELD_ATTRIBUTE\",\n\t\t\tmessage: unsupportedFieldAttributeMessage(owner.name, field.name, attribute.name),\n\t\t\tsourceId,\n\t\t\tspan: attribute.span\n\t\t});\n\t}\n}\nfunction fkRelationPairKey(declaringModel, targetModel) {\n\treturn `${declaringModel}::${targetModel}`;\n}\nfunction resolveFieldMappings(input) {\n\tconst { model, specContext, sourceFile, sourceId, diagnostics } = input;\n\tconst pslNameToMapped = /* @__PURE__ */ new Map();\n\tfor (const field of Object.values(model.fields)) {\n\t\tconst mapNode = findFieldAttributeNode(field, \"map\");\n\t\tconst mapped = (mapNode ? interpretFieldAttribute({\n\t\t\tnode: mapNode,\n\t\t\tspec: mongoAttributeSpecs.field.map({\n\t\t\t\t...specContext,\n\t\t\t\tfield\n\t\t\t}),\n\t\t\tmodel,\n\t\t\tfield,\n\t\t\tsourceFile,\n\t\t\tsourceId,\n\t\t\tdiagnostics\n\t\t})?.name : void 0) ?? field.name;\n\t\tpslNameToMapped.set(field.name, mapped);\n\t}\n\treturn { pslNameToMapped };\n}\nfunction resolveCollectionName(input) {\n\tconst { model, specContext, sourceFile, sourceId, diagnostics } = input;\n\tconst mapNode = findModelAttributeNode(model, \"map\");\n\treturn (mapNode ? interpretModelAttribute({\n\t\tnode: mapNode,\n\t\tspec: mongoAttributeSpecs.model.map(specContext),\n\t\tmodel,\n\t\tsourceFile,\n\t\tsourceId,\n\t\tdiagnostics\n\t})?.name : void 0) ?? lowerFirst(model.name);\n}\nfunction mongoCrossRef(modelName) {\n\treturn crossRef(modelName, UNBOUND_NAMESPACE_ID);\n}\nfunction collectPolymorphismDeclarations(models, specContextFor, modelMetadataByName, sourceFile, sourceId, diagnostics) {\n\tconst discriminatorDeclarations = /* @__PURE__ */ new Map();\n\tconst baseDeclarations = /* @__PURE__ */ new Map();\n\tfor (const model of models) {\n\t\tconst specContext = specContextFor(model);\n\t\tconst discNode = findModelAttributeNode(model, \"discriminator\");\n\t\tif (discNode) {\n\t\t\tconst parsed = interpretModelAttribute({\n\t\t\t\tnode: discNode,\n\t\t\t\tspec: mongoAttributeSpecs.model.discriminator(specContext),\n\t\t\t\tmodel,\n\t\t\t\tsourceFile,\n\t\t\t\tsourceId,\n\t\t\t\tdiagnostics\n\t\t\t});\n\t\t\tif (parsed) {\n\t\t\t\tconst fieldName = parsed.field;\n\t\t\t\tconst discField = model.fields[fieldName];\n\t\t\t\tif (discField && discField.typeName !== \"String\") diagnostics.push({\n\t\t\t\t\tcode: \"PSL_INVALID_ATTRIBUTE_ARGUMENT\",\n\t\t\t\t\tmessage: `Discriminator field \"${fieldName}\" on model \"${model.name}\" must be of type String, but is \"${discField.typeName}\"`,\n\t\t\t\t\tsourceId,\n\t\t\t\t\tspan: nodePslSpan(discNode.syntax, sourceFile)\n\t\t\t\t});\n\t\t\t\telse discriminatorDeclarations.set(model.name, {\n\t\t\t\t\tfieldName,\n\t\t\t\t\tspan: nodePslSpan(discNode.syntax, sourceFile)\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tconst baseNode = findModelAttributeNode(model, \"base\");\n\t\tif (baseNode) {\n\t\t\tconst parsed = interpretModelAttribute({\n\t\t\t\tnode: baseNode,\n\t\t\t\tspec: mongoAttributeSpecs.model.base(specContext),\n\t\t\t\tmodel,\n\t\t\t\tsourceFile,\n\t\t\t\tsourceId,\n\t\t\t\tdiagnostics\n\t\t\t});\n\t\t\tif (parsed) {\n\t\t\t\tconst collectionName = modelMetadataByName.get(model.name)?.collectionName ?? lowerFirst(model.name);\n\t\t\t\tbaseDeclarations.set(model.name, {\n\t\t\t\t\tbaseName: parsed.base,\n\t\t\t\t\tvalue: parsed.value,\n\t\t\t\t\tcollectionName,\n\t\t\t\t\tspan: nodePslSpan(baseNode.syntax, sourceFile)\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\treturn {\n\t\tdiscriminatorDeclarations,\n\t\tbaseDeclarations\n\t};\n}\nfunction resolvePolymorphism(input) {\n\tconst { discriminatorDeclarations, baseDeclarations, modelNames, modelMetadataByName, sourceId, allModels: allModelViews, indexSpans, modelIndexesByName } = input;\n\tlet patched = input.models;\n\tlet roots = input.roots;\n\tlet collections = input.collections;\n\tconst diagnostics = [];\n\tfor (const [modelName, decl] of discriminatorDeclarations) {\n\t\tif (baseDeclarations.has(modelName)) {\n\t\t\tdiagnostics.push({\n\t\t\t\tcode: \"PSL_DISCRIMINATOR_AND_BASE\",\n\t\t\t\tmessage: `Model \"${modelName}\" cannot have both @@discriminator and @@base`,\n\t\t\t\tsourceId,\n\t\t\t\tspan: decl.span\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tconst model = patched[modelName];\n\t\tif (!model) continue;\n\t\tconst mappedDiscriminatorField = modelMetadataByName.get(modelName)?.fieldMappings.pslNameToMapped.get(decl.fieldName) ?? decl.fieldName;\n\t\tif (!Object.hasOwn(model.fields, mappedDiscriminatorField)) {\n\t\t\tdiagnostics.push({\n\t\t\t\tcode: \"PSL_DISCRIMINATOR_FIELD_NOT_FOUND\",\n\t\t\t\tmessage: `Discriminator field \"${decl.fieldName}\" is not a field on model \"${modelName}\"`,\n\t\t\t\tsourceId,\n\t\t\t\tspan: decl.span\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tconst variants = {};\n\t\tfor (const [variantName, baseDecl] of baseDeclarations) {\n\t\t\tif (baseDecl.baseName !== modelName) continue;\n\t\t\tvariants[variantName] = { value: baseDecl.value };\n\t\t}\n\t\tif (Object.keys(variants).length === 0) {\n\t\t\tdiagnostics.push({\n\t\t\t\tcode: \"PSL_ORPHANED_DISCRIMINATOR\",\n\t\t\t\tmessage: `Model \"${modelName}\" has @@discriminator but no variant models declare @@base(${modelName}, ...)`,\n\t\t\t\tsourceId,\n\t\t\t\tspan: decl.span\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tpatched = {\n\t\t\t...patched,\n\t\t\t[modelName]: {\n\t\t\t\t...model,\n\t\t\t\tdiscriminator: { field: mappedDiscriminatorField },\n\t\t\t\tvariants\n\t\t\t}\n\t\t};\n\t}\n\tfor (const [variantName, baseDecl] of baseDeclarations) {\n\t\tif (!modelNames.has(baseDecl.baseName)) {\n\t\t\tdiagnostics.push({\n\t\t\t\tcode: \"PSL_BASE_TARGET_NOT_FOUND\",\n\t\t\t\tmessage: `Model \"${variantName}\" @@base references non-existent model \"${baseDecl.baseName}\"`,\n\t\t\t\tsourceId,\n\t\t\t\tspan: baseDecl.span\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tif (!discriminatorDeclarations.has(baseDecl.baseName)) {\n\t\t\tdiagnostics.push({\n\t\t\t\tcode: \"PSL_ORPHANED_BASE\",\n\t\t\t\tmessage: `Model \"${variantName}\" declares @@base(${baseDecl.baseName}, ...) but \"${baseDecl.baseName}\" has no @@discriminator`,\n\t\t\t\tsourceId,\n\t\t\t\tspan: baseDecl.span\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tif (discriminatorDeclarations.has(variantName)) continue;\n\t\tconst baseModel = patched[baseDecl.baseName];\n\t\tconst variantModelView = allModelViews.find((m) => m.name === variantName);\n\t\tif (!variantModelView) continue;\n\t\tif (getAttribute(variantModelView.attributes, \"map\") !== void 0 && baseModel && baseDecl.collectionName !== baseModel.storage.collection) {\n\t\t\tdiagnostics.push({\n\t\t\t\tcode: \"PSL_MONGO_VARIANT_SEPARATE_COLLECTION\",\n\t\t\t\tmessage: `Mongo variant \"${variantName}\" cannot use a different collection than its base \"${baseDecl.baseName}\". Mongo only supports single-collection polymorphism.`,\n\t\t\t\tsourceId,\n\t\t\t\tspan: baseDecl.span\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tconst baseCollection = baseModel?.storage.collection ?? baseDecl.collectionName;\n\t\tconst variantModel = patched[variantName];\n\t\tif (variantModel) patched = {\n\t\t\t...patched,\n\t\t\t[variantName]: {\n\t\t\t\t...variantModel,\n\t\t\t\tbase: mongoCrossRef(baseDecl.baseName),\n\t\t\t\tstorage: { collection: baseCollection }\n\t\t\t}\n\t\t};\n\t\tconst variantCollectionName = modelMetadataByName.get(variantName)?.collectionName ?? lowerFirst(variantName);\n\t\tif (roots[variantCollectionName]?.model === variantName) if (variantCollectionName === baseCollection && baseModel) roots = {\n\t\t\t...roots,\n\t\t\t[variantCollectionName]: mongoCrossRef(baseDecl.baseName)\n\t\t};\n\t\telse roots = Object.fromEntries(Object.entries(roots).filter(([key]) => key !== variantCollectionName));\n\t\tconst variantOwnIndexes = modelIndexesByName.get(variantName) ?? [];\n\t\tconst baseColl = collections[baseCollection];\n\t\tconst discriminatorField = patched[baseDecl.baseName]?.discriminator?.field;\n\t\tconst scopedVariantIndexes = [];\n\t\tif (discriminatorField) for (const idx of variantOwnIndexes) {\n\t\t\tconst result = applyPolymorphicScopeToMongoIndex(idx, {\n\t\t\t\tdiscriminatorField,\n\t\t\t\tdiscriminatorValue: baseDecl.value\n\t\t\t});\n\t\t\tif (result.kind === \"conflict\") {\n\t\t\t\tconst span = indexSpans.get(idx) ?? baseDecl.span;\n\t\t\t\tdiagnostics.push({\n\t\t\t\t\tcode: \"PSL_INVALID_INDEX\",\n\t\t\t\t\tmessage: `Variant \"${variantName}\" index conflicts with discriminator scope: ${result.reason}`,\n\t\t\t\t\tsourceId,\n\t\t\t\t\tspan\n\t\t\t\t});\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (result.index !== idx) indexSpans.set(result.index, indexSpans.get(idx) ?? baseDecl.span);\n\t\t\tscopedVariantIndexes.push(result.index);\n\t\t}\n\t\telse scopedVariantIndexes.push(...variantOwnIndexes);\n\t\tif (variantCollectionName !== baseCollection) {\n\t\t\tconst filtered = Object.fromEntries(Object.entries(collections).filter(([key]) => key !== variantCollectionName));\n\t\t\tif (scopedVariantIndexes.length > 0 && baseColl) {\n\t\t\t\tconst baseIndexes = collectionIndexes(baseColl);\n\t\t\t\tcollections = {\n\t\t\t\t\t...filtered,\n\t\t\t\t\t[baseCollection]: {\n\t\t\t\t\t\t...baseColl,\n\t\t\t\t\t\tindexes: [...baseIndexes, ...scopedVariantIndexes]\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t} else collections = filtered;\n\t\t} else if (baseColl) {\n\t\t\tconst existingIndexes = collectionIndexes(baseColl);\n\t\t\tconst variantIndexSet = new Set(variantOwnIndexes);\n\t\t\tconst withoutUnscopedVariants = existingIndexes.filter((idx) => !variantIndexSet.has(idx));\n\t\t\tconst mergedIndexes = [...withoutUnscopedVariants];\n\t\t\tfor (const idx of scopedVariantIndexes) {\n\t\t\t\tconst idxKey = canonicalJson(idx);\n\t\t\t\tif (!withoutUnscopedVariants.some((existing) => canonicalJson(existing) === idxKey)) mergedIndexes.push(idx);\n\t\t\t}\n\t\t\tif (mergedIndexes.length !== existingIndexes.length || mergedIndexes.some((idx, i) => idx !== existingIndexes[i])) {\n\t\t\t\tconst next = { ...baseColl };\n\t\t\t\tif (mergedIndexes.length > 0) next[\"indexes\"] = mergedIndexes;\n\t\t\t\telse delete next[\"indexes\"];\n\t\t\t\tcollections = {\n\t\t\t\t\t...collections,\n\t\t\t\t\t[baseCollection]: next\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t}\n\treturn {\n\t\tmodels: patched,\n\t\troots,\n\t\tcollections,\n\t\tdiagnostics\n\t};\n}\nfunction collectionIndexes(collection) {\n\treturn blindCast(collection[\"indexes\"] ?? []);\n}\nfunction canonicalJson(value) {\n\tif (Array.isArray(value)) return `[${value.map(canonicalJson).join(\",\")}]`;\n\tif (value && typeof value === \"object\") return `{${Object.entries(value).sort(([left], [right]) => left.localeCompare(right)).map(([key, entry]) => `${JSON.stringify(key)}:${canonicalJson(entry)}`).join(\",\")}}`;\n\treturn JSON.stringify(value);\n}\nfunction normalizeIndexField(element) {\n\tif (typeof element === \"string\") return {\n\t\tkind: \"field\",\n\t\tname: element\n\t};\n\tif (element.fn === \"wildcard\" && element.args[\"sort\"] === void 0) {\n\t\tconst scope = element.args[\"scope\"];\n\t\treturn typeof scope === \"string\" ? {\n\t\t\tkind: \"wildcard\",\n\t\t\tscope\n\t\t} : { kind: \"wildcard\" };\n\t}\n\tconst sort = element.args[\"sort\"];\n\treturn {\n\t\tkind: \"field\",\n\t\tname: element.fn,\n\t\tdirection: sort === \"Desc\" ? -1 : 1\n\t};\n}\nfunction buildCollationFromSpec(args) {\n\tconst locale = args.collationLocale;\n\tif (locale === void 0) return args.collationStrength !== void 0 || args.collationCaseLevel !== void 0 || args.collationCaseFirst !== void 0 || args.collationNumericOrdering !== void 0 || args.collationAlternate !== void 0 || args.collationMaxVariable !== void 0 || args.collationBackwards !== void 0 || args.collationNormalization !== void 0 ? null : void 0;\n\tconst collation = { locale };\n\tif (args.collationStrength !== void 0) collation.strength = args.collationStrength;\n\tif (args.collationCaseLevel !== void 0) collation.caseLevel = args.collationCaseLevel;\n\tif (args.collationCaseFirst !== void 0) collation.caseFirst = args.collationCaseFirst;\n\tif (args.collationNumericOrdering !== void 0) collation.numericOrdering = args.collationNumericOrdering;\n\tif (args.collationAlternate !== void 0) collation.alternate = args.collationAlternate;\n\tif (args.collationMaxVariable !== void 0) collation.maxVariable = args.collationMaxVariable;\n\tif (args.collationBackwards !== void 0) collation.backwards = args.collationBackwards;\n\tif (args.collationNormalization !== void 0) collation.normalization = args.collationNormalization;\n\treturn collation;\n}\nfunction resolveIndexKeys(parsedFields, defaultDirection, ctx) {\n\tconst wildcardCount = parsedFields.filter((field) => field.kind === \"wildcard\").length;\n\tif (wildcardCount > 1) {\n\t\tctx.diagnostics.push({\n\t\t\tcode: \"PSL_INVALID_INDEX\",\n\t\t\tmessage: \"An index can contain at most one wildcard() field\",\n\t\t\tsourceId: ctx.sourceId,\n\t\t\tspan: ctx.span\n\t\t});\n\t\treturn;\n\t}\n\tfor (const field of parsedFields) {\n\t\tconst fieldName = field.kind === \"wildcard\" ? field.scope : field.name;\n\t\tif (fieldName !== void 0 && !ctx.indexableFieldNames.has(fieldName)) {\n\t\t\tctx.diagnostics.push({\n\t\t\t\tcode: \"PSL_INDEX_FIELD_NOT_FOUND\",\n\t\t\t\tmessage: `Index on model \"${ctx.pslModel.name}\" references unknown field \"${fieldName}\"`,\n\t\t\t\tsourceId: ctx.sourceId,\n\t\t\t\tspan: ctx.span\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t}\n\treturn {\n\t\tkeys: parsedFields.map((field) => {\n\t\t\tif (field.kind === \"wildcard\") {\n\t\t\t\tif (field.scope === void 0) return {\n\t\t\t\t\tfield: \"$**\",\n\t\t\t\t\tdirection: defaultDirection\n\t\t\t\t};\n\t\t\t\treturn {\n\t\t\t\t\tfield: `${ctx.fieldMappings.pslNameToMapped.get(field.scope) ?? field.scope}.$**`,\n\t\t\t\t\tdirection: defaultDirection\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tfield: ctx.fieldMappings.pslNameToMapped.get(field.name) ?? field.name,\n\t\t\t\tdirection: field.direction ?? defaultDirection\n\t\t\t};\n\t\t}),\n\t\thasWildcard: wildcardCount === 1\n\t};\n}\nfunction buildProjection(include, exclude, hasWildcard, ctx) {\n\tif (include !== void 0 && exclude !== void 0) {\n\t\tctx.diagnostics.push({\n\t\t\tcode: \"PSL_INVALID_INDEX\",\n\t\t\tmessage: \"Cannot specify both include and exclude on the same index\",\n\t\t\tsourceId: ctx.sourceId,\n\t\t\tspan: ctx.span\n\t\t});\n\t\treturn null;\n\t}\n\tconst fields = include ?? exclude;\n\tif (fields === void 0) return void 0;\n\tif (!hasWildcard) {\n\t\tctx.diagnostics.push({\n\t\t\tcode: \"PSL_INVALID_INDEX\",\n\t\t\tmessage: \"include/exclude options are only valid when the index contains a wildcard() field\",\n\t\t\tsourceId: ctx.sourceId,\n\t\t\tspan: ctx.span\n\t\t});\n\t\treturn null;\n\t}\n\tif (fields.length === 0) return void 0;\n\tconst value = include === void 0 ? 0 : 1;\n\tconst projection = {};\n\tfor (const field of fields) projection[field] = value;\n\treturn projection;\n}\nfunction buildNormalIndex(parsed, unique, ctx) {\n\tconst parsedFields = parsed.fields.map(normalizeIndexField);\n\tif (parsedFields.length === 0) return void 0;\n\tconst defaultDirection = parsed.type ?? 1;\n\tconst resolved = resolveIndexKeys(parsedFields, defaultDirection, ctx);\n\tif (!resolved) return void 0;\n\tif (unique && resolved.hasWildcard) {\n\t\tctx.diagnostics.push({\n\t\t\tcode: \"PSL_INVALID_INDEX\",\n\t\t\tmessage: \"Unique indexes cannot use wildcard() fields\",\n\t\t\tsourceId: ctx.sourceId,\n\t\t\tspan: ctx.span\n\t\t});\n\t\treturn;\n\t}\n\tif (resolved.hasWildcard && typeof defaultDirection === \"string\" && [\n\t\t\"hashed\",\n\t\t\"2dsphere\",\n\t\t\"2d\"\n\t].includes(defaultDirection)) {\n\t\tctx.diagnostics.push({\n\t\t\tcode: \"PSL_INVALID_INDEX\",\n\t\t\tmessage: `wildcard() fields cannot be combined with type: ${defaultDirection}`,\n\t\t\tsourceId: ctx.sourceId,\n\t\t\tspan: ctx.span\n\t\t});\n\t\treturn;\n\t}\n\tif (defaultDirection === \"hashed\" && parsedFields.length > 1) {\n\t\tctx.diagnostics.push({\n\t\t\tcode: \"PSL_INVALID_INDEX\",\n\t\t\tmessage: \"Hashed indexes must have exactly one field\",\n\t\t\tsourceId: ctx.sourceId,\n\t\t\tspan: ctx.span\n\t\t});\n\t\treturn;\n\t}\n\tif (resolved.hasWildcard && parsed.expireAfterSeconds !== void 0) {\n\t\tctx.diagnostics.push({\n\t\t\tcode: \"PSL_INVALID_INDEX\",\n\t\t\tmessage: \"expireAfterSeconds cannot be combined with wildcard() fields\",\n\t\t\tsourceId: ctx.sourceId,\n\t\t\tspan: ctx.span\n\t\t});\n\t\treturn;\n\t}\n\tconst wildcardProjection = buildProjection(parsed.include, parsed.exclude, resolved.hasWildcard, ctx);\n\tif (wildcardProjection === null) return void 0;\n\tconst collation = buildCollationFromSpec(parsed);\n\tif (collation === null) {\n\t\tctx.diagnostics.push({\n\t\t\tcode: \"PSL_INVALID_INDEX\",\n\t\t\tmessage: \"collationLocale is required when using collation options\",\n\t\t\tsourceId: ctx.sourceId,\n\t\t\tspan: ctx.span\n\t\t});\n\t\treturn;\n\t}\n\treturn new MongoIndex({\n\t\tkeys: resolved.keys,\n\t\t...unique && { unique: true },\n\t\t...parsed.sparse !== void 0 && { sparse: parsed.sparse },\n\t\t...parsed.expireAfterSeconds !== void 0 && { expireAfterSeconds: parsed.expireAfterSeconds },\n\t\t...parsed.filter !== void 0 && { partialFilterExpression: parsed.filter },\n\t\t...wildcardProjection !== void 0 && { wildcardProjection },\n\t\t...collation !== void 0 && { collation },\n\t\t...parsed.default_language !== void 0 && { default_language: parsed.default_language },\n\t\t...parsed.languageOverride !== void 0 && { language_override: parsed.languageOverride }\n\t});\n}\nfunction buildTextIndex(parsed, ctx) {\n\tconst parsedFields = parsed.fields.map(normalizeIndexField);\n\tif (parsedFields.length === 0) return void 0;\n\tconst resolved = resolveIndexKeys(parsedFields, \"text\", ctx);\n\tif (!resolved) return void 0;\n\tif (resolved.hasWildcard) {\n\t\tctx.diagnostics.push({\n\t\t\tcode: \"PSL_INVALID_INDEX\",\n\t\t\tmessage: \"wildcard() fields cannot be combined with type: hashed/2dsphere/2d or @@textIndex\",\n\t\t\tsourceId: ctx.sourceId,\n\t\t\tspan: ctx.span\n\t\t});\n\t\treturn;\n\t}\n\tconst collation = buildCollationFromSpec(parsed);\n\tif (collation === null) {\n\t\tctx.diagnostics.push({\n\t\t\tcode: \"PSL_INVALID_INDEX\",\n\t\t\tmessage: \"collationLocale is required when using collation options\",\n\t\t\tsourceId: ctx.sourceId,\n\t\t\tspan: ctx.span\n\t\t});\n\t\treturn;\n\t}\n\treturn new MongoIndex({\n\t\tkeys: resolved.keys,\n\t\t...parsed.filter !== void 0 && { partialFilterExpression: parsed.filter },\n\t\t...collation !== void 0 && { collation },\n\t\t...ifDefined(\"weights\", parsed.weights),\n\t\t...parsed.language !== void 0 && { default_language: parsed.language },\n\t\t...parsed.languageOverride !== void 0 && { language_override: parsed.languageOverride }\n\t});\n}\nfunction collectIndexes(pslModel, specContext, fieldMappings, modelNames, sourceId, sourceFile, diagnostics, indexSpans) {\n\tconst indexes = [];\n\tlet textIndexCount = 0;\n\tconst indexableFieldNames = /* @__PURE__ */ new Set();\n\tfor (const field of Object.values(pslModel.fields)) if (!modelNames.has(field.typeName)) indexableFieldNames.add(field.name);\n\tfor (const field of Object.values(pslModel.fields)) {\n\t\tif (modelNames.has(field.typeName)) continue;\n\t\tconst uniqueNode = findFieldAttributeNode(field, \"unique\");\n\t\tif (!uniqueNode) continue;\n\t\tif (interpretFieldAttribute({\n\t\t\tnode: uniqueNode,\n\t\t\tspec: mongoAttributeSpecs.field.unique({\n\t\t\t\t...specContext,\n\t\t\t\tfield\n\t\t\t}),\n\t\t\tmodel: pslModel,\n\t\t\tfield,\n\t\t\tsourceFile,\n\t\t\tsourceId,\n\t\t\tdiagnostics\n\t\t}) === void 0) continue;\n\t\tconst fieldUniqueIndex = new MongoIndex({\n\t\t\tkeys: [{\n\t\t\t\tfield: fieldMappings.pslNameToMapped.get(field.name) ?? field.name,\n\t\t\t\tdirection: 1\n\t\t\t}],\n\t\t\tunique: true\n\t\t});\n\t\tindexes.push(fieldUniqueIndex);\n\t\tindexSpans.set(fieldUniqueIndex, nodePslSpan(uniqueNode.syntax, sourceFile));\n\t}\n\tconst attributeNodes = Array.from(pslModel.node.attributes());\n\tfor (const [attrIndex, attr] of pslModel.attributes.entries()) {\n\t\tif (attr.name !== \"index\" && attr.name !== \"unique\" && attr.name !== \"textIndex\") continue;\n\t\tconst node = attributeNodes[attrIndex];\n\t\tif (!node) continue;\n\t\tconst ctx = {\n\t\t\tpslModel,\n\t\t\tfieldMappings,\n\t\t\tindexableFieldNames,\n\t\t\tsourceId,\n\t\t\tspan: attr.span,\n\t\t\tdiagnostics\n\t\t};\n\t\tlet index;\n\t\tif (attr.name === \"textIndex\") {\n\t\t\tconst parsed = interpretModelAttribute({\n\t\t\t\tnode,\n\t\t\t\tspec: mongoAttributeSpecs.model.textIndex(specContext),\n\t\t\t\tmodel: pslModel,\n\t\t\t\tsourceFile,\n\t\t\t\tsourceId,\n\t\t\t\tdiagnostics\n\t\t\t});\n\t\t\tif (!parsed || parsed.fields.length === 0) continue;\n\t\t\ttextIndexCount++;\n\t\t\tif (textIndexCount > 1) {\n\t\t\t\tdiagnostics.push({\n\t\t\t\t\tcode: \"PSL_INVALID_INDEX\",\n\t\t\t\t\tmessage: `Only one @@textIndex is allowed per collection (model \"${pslModel.name}\")`,\n\t\t\t\t\tsourceId,\n\t\t\t\t\tspan: attr.span\n\t\t\t\t});\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tindex = buildTextIndex(parsed, ctx);\n\t\t} else {\n\t\t\tconst unique = attr.name === \"unique\";\n\t\t\tconst parsed = interpretModelAttribute({\n\t\t\t\tnode,\n\t\t\t\tspec: unique ? mongoAttributeSpecs.model.unique(specContext) : mongoAttributeSpecs.model.index(specContext),\n\t\t\t\tmodel: pslModel,\n\t\t\t\tsourceFile,\n\t\t\t\tsourceId,\n\t\t\t\tdiagnostics\n\t\t\t});\n\t\t\tif (!parsed) continue;\n\t\t\tindex = buildNormalIndex(parsed, unique, ctx);\n\t\t}\n\t\tif (!index) continue;\n\t\tindexes.push(index);\n\t\tindexSpans.set(index, attr.span);\n\t}\n\treturn indexes;\n}\nfunction isRelationField(field, modelNames) {\n\treturn modelNames.has(field.typeName);\n}\nconst MONGO_OBJECT_ID_PSL_TYPE = \"ObjectId\";\nfunction resolveFieldCodecId(field, scalarTypeCodecIds) {\n\treturn scalarTypeCodecIds.get(field.typeName);\n}\nfunction resolveNonRelationField(field, ownerName, compositeTypeNames, scalarTypeCodecIds, codecIdByEnumName, sourceId, diagnostics) {\n\tif (compositeTypeNames.has(field.typeName)) {\n\t\tconst result = {\n\t\t\ttype: {\n\t\t\t\tkind: \"valueObject\",\n\t\t\t\tname: field.typeName\n\t\t\t},\n\t\t\tnullable: field.optional\n\t\t};\n\t\treturn field.list ? {\n\t\t\t...result,\n\t\t\tmany: true\n\t\t} : result;\n\t}\n\tconst enumCodecId = codecIdByEnumName.get(field.typeName);\n\tif (enumCodecId !== void 0) {\n\t\tconst valueSet = {\n\t\t\tplane: \"domain\",\n\t\t\tentityKind: \"enum\",\n\t\t\tnamespaceId: UNBOUND_NAMESPACE_ID,\n\t\t\tentityName: field.typeName\n\t\t};\n\t\tconst result = {\n\t\t\ttype: {\n\t\t\t\tkind: \"scalar\",\n\t\t\t\tcodecId: enumCodecId\n\t\t\t},\n\t\t\tnullable: field.optional,\n\t\t\tvalueSet\n\t\t};\n\t\treturn field.list ? {\n\t\t\t...result,\n\t\t\tmany: true\n\t\t} : result;\n\t}\n\tif (field.malformedType) return;\n\tconst codecId = resolveFieldCodecId(field, scalarTypeCodecIds);\n\tif (!codecId) {\n\t\tdiagnostics.push({\n\t\t\tcode: \"PSL_UNSUPPORTED_FIELD_TYPE\",\n\t\t\tmessage: `Field \"${ownerName}.${field.name}\" type \"${field.typeName}\" is not supported in Mongo PSL interpreter`,\n\t\t\tsourceId,\n\t\t\tspan: field.span\n\t\t});\n\t\treturn;\n\t}\n\tconst result = {\n\t\ttype: {\n\t\t\tkind: \"scalar\",\n\t\t\tcodecId\n\t\t},\n\t\tnullable: field.optional\n\t};\n\treturn field.list ? {\n\t\t...result,\n\t\tmany: true\n\t} : result;\n}\nfunction processEnumDeclarations(input) {\n\tconst builtEnums = {};\n\tif (input.enumBlocks.length === 0) return builtEnums;\n\tconst enumDescriptor = input.authoringContributions?.entityTypes?.[\"enum\"] !== void 0 && isAuthoringEntityTypeDescriptor(input.authoringContributions.entityTypes[\"enum\"]) ? input.authoringContributions.entityTypes[\"enum\"] : void 0;\n\tif (!enumDescriptor) {\n\t\tfor (const decl of input.enumBlocks) input.diagnostics.push({\n\t\t\tcode: \"PSL_ENUM_MISSING_FACTORY\",\n\t\t\tmessage: `enum \"${decl.name}\" requires an \"enum\" entityType factory in the active authoring contributions`,\n\t\t\tsourceId: input.sourceId,\n\t\t\tspan: decl.span\n\t\t});\n\t\treturn builtEnums;\n\t}\n\tfor (const decl of input.enumBlocks) {\n\t\tconst handle = instantiateAuthoringEntityType(\"enum\", enumDescriptor, [decl], input.entityContext);\n\t\tif (handle === void 0 || handle === null) continue;\n\t\tbuiltEnums[decl.name] = {\n\t\t\tcodecId: handle.codecId,\n\t\t\tmembers: handle.enumMembers.map((m) => ({\n\t\t\t\tname: m.name,\n\t\t\t\tvalue: blindCast(m.value)\n\t\t\t}))\n\t\t};\n\t}\n\treturn builtEnums;\n}\nfunction interpretPslDocumentToMongoContract(input) {\n\tconst { symbolTable, sourceFile, scalarTypeCodecIds, codecLookup } = input;\n\tconst sourceId = input.sourceId;\n\tconst diagnostics = [...input.seedDiagnostics ?? []];\n\tconst topLevel = symbolTable.topLevel;\n\tvalidateNamespaceBlocksForMongoTarget({\n\t\tnamespaces: Object.values(topLevel.namespaces),\n\t\tsourceId,\n\t\tsourceFile,\n\t\tdiagnostics\n\t});\n\tconst allModels = Object.values(topLevel.models);\n\tconst allCompositeTypes = Object.values(topLevel.compositeTypes);\n\tconst modelNames = new Set(allModels.map((m) => m.name));\n\tconst compositeTypeNames = new Set(allCompositeTypes.map((ct) => ct.name));\n\treportUnknownAttributes({\n\t\tmodels: allModels,\n\t\tcompositeTypes: allCompositeTypes,\n\t\tsourceId,\n\t\tdiagnostics\n\t});\n\tconst specContextFor = (model) => ({\n\t\tsymbols: symbolTable,\n\t\tmodel,\n\t\tcontrolMutationDefaults: input.controlMutationDefaults\n\t});\n\tconst modelMetadataByName = /* @__PURE__ */ new Map();\n\tfor (const model of allModels) {\n\t\tconst specContext = specContextFor(model);\n\t\tmodelMetadataByName.set(model.name, {\n\t\t\tcollectionName: resolveCollectionName({\n\t\t\t\tmodel,\n\t\t\t\tspecContext,\n\t\t\t\tsourceFile,\n\t\t\t\tsourceId,\n\t\t\t\tdiagnostics\n\t\t\t}),\n\t\t\tfieldMappings: resolveFieldMappings({\n\t\t\t\tmodel,\n\t\t\t\tspecContext,\n\t\t\t\tsourceFile,\n\t\t\t\tsourceId,\n\t\t\t\tdiagnostics\n\t\t\t})\n\t\t});\n\t}\n\tconst builtEnums = processEnumDeclarations({\n\t\tenumBlocks: Object.values(topLevel.blocks).filter((b) => b.keyword === \"enum\").map((b) => b.block),\n\t\tsourceId,\n\t\tauthoringContributions: input.authoringContributions,\n\t\tentityContext: {\n\t\t\tfamily: \"mongo\",\n\t\t\ttarget: \"mongo\",\n\t\t\t...ifDefined(\"enumInferenceCodecs\", input.enumInferenceCodecs),\n\t\t\t...ifDefined(\"codecLookup\", codecLookup),\n\t\t\tsourceId,\n\t\t\tdiagnostics: { push: (d) => {\n\t\t\t\tdiagnostics.push(blindCast(d));\n\t\t\t} }\n\t\t},\n\t\tdiagnostics\n\t});\n\tconst codecIdByEnumName = new Map(Object.entries(builtEnums).map(([name, e]) => [name, e.codecId]));\n\tconst models = {};\n\tconst collections = {};\n\tconst roots = {};\n\tconst allFkRelations = [];\n\tconst indexSpans = /* @__PURE__ */ new Map();\n\tconst modelIndexesByName = /* @__PURE__ */ new Map();\n\tconst backrelationCandidates = [];\n\tfor (const pslModel of allModels) {\n\t\tconst metadata = modelMetadataByName.get(pslModel.name);\n\t\tif (!metadata) continue;\n\t\tconst { collectionName, fieldMappings } = metadata;\n\t\tconst specContext = specContextFor(pslModel);\n\t\tconst fields = {};\n\t\tconst relations = {};\n\t\tfor (const field of Object.values(pslModel.fields)) {\n\t\t\tif (isRelationField(field, modelNames)) {\n\t\t\t\tconst relationNode = findFieldAttributeNode(field, \"relation\");\n\t\t\t\tconst relation = relationNode ? interpretFieldAttribute({\n\t\t\t\t\tnode: relationNode,\n\t\t\t\t\tspec: mongoAttributeSpecs.field.relation({\n\t\t\t\t\t\t...specContext,\n\t\t\t\t\t\tfield\n\t\t\t\t\t}),\n\t\t\t\t\tmodel: pslModel,\n\t\t\t\t\tfield,\n\t\t\t\t\tsourceFile,\n\t\t\t\t\tsourceId,\n\t\t\t\t\tdiagnostics,\n\t\t\t\t\tresolveReferencedModel: () => allModels.find((m) => m.name === field.typeName)\n\t\t\t\t}) : void 0;\n\t\t\t\tif (field.list || !(relation?.fields && relation?.references)) {\n\t\t\t\t\tbackrelationCandidates.push({\n\t\t\t\t\t\tmodelName: pslModel.name,\n\t\t\t\t\t\tfieldName: field.name,\n\t\t\t\t\t\ttargetModelName: field.typeName,\n\t\t\t\t\t\t...ifDefined(\"relationName\", relation?.name),\n\t\t\t\t\t\tcardinality: field.list ? \"1:N\" : \"1:1\",\n\t\t\t\t\t\tfield\n\t\t\t\t\t});\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (relation?.fields && relation?.references) {\n\t\t\t\t\tconst localMapped = relation.fields.map((f) => fieldMappings.pslNameToMapped.get(f) ?? f);\n\t\t\t\t\tconst targetFieldMappings = modelMetadataByName.get(field.typeName)?.fieldMappings;\n\t\t\t\t\tconst targetMapped = relation.references.map((f) => targetFieldMappings?.pslNameToMapped.get(f) ?? f);\n\t\t\t\t\trelations[field.name] = {\n\t\t\t\t\t\tto: mongoCrossRef(field.typeName),\n\t\t\t\t\t\tcardinality: \"N:1\",\n\t\t\t\t\t\ton: {\n\t\t\t\t\t\t\tlocalFields: localMapped,\n\t\t\t\t\t\t\ttargetFields: targetMapped\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\tallFkRelations.push({\n\t\t\t\t\t\tdeclaringModel: pslModel.name,\n\t\t\t\t\t\tfieldName: field.name,\n\t\t\t\t\t\ttargetModel: field.typeName,\n\t\t\t\t\t\t...ifDefined(\"relationName\", relation.name),\n\t\t\t\t\t\tlocalFields: localMapped,\n\t\t\t\t\t\ttargetFields: targetMapped\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst resolved = resolveNonRelationField(field, pslModel.name, compositeTypeNames, scalarTypeCodecIds, codecIdByEnumName, sourceId, diagnostics);\n\t\t\tif (!resolved) continue;\n\t\t\tconst mappedName = fieldMappings.pslNameToMapped.get(field.name) ?? field.name;\n\t\t\tfields[mappedName] = resolved;\n\t\t}\n\t\tconst isVariantModel = pslModel.attributes.some((attr) => attr.name === \"base\");\n\t\tconst hasIdField = Object.values(pslModel.fields).filter((field) => {\n\t\t\tconst idNode = findFieldAttributeNode(field, \"id\");\n\t\t\tif (!idNode) return false;\n\t\t\treturn interpretFieldAttribute({\n\t\t\t\tnode: idNode,\n\t\t\t\tspec: mongoAttributeSpecs.field.id({\n\t\t\t\t\t...specContext,\n\t\t\t\t\tfield\n\t\t\t\t}),\n\t\t\t\tmodel: pslModel,\n\t\t\t\tfield,\n\t\t\t\tsourceFile,\n\t\t\t\tsourceId,\n\t\t\t\tdiagnostics\n\t\t\t}) !== void 0;\n\t\t}).length > 0;\n\t\tif (!isVariantModel) if (!hasIdField) diagnostics.push({\n\t\t\tcode: \"PSL_MISSING_ID_FIELD\",\n\t\t\tmessage: `Model \"${pslModel.name}\" has no field with @id attribute. Every model must have exactly one @id field.`,\n\t\t\tsourceId\n\t\t});\n\t\telse {\n\t\t\tconst objectIdCodecId = scalarTypeCodecIds.get(MONGO_OBJECT_ID_PSL_TYPE);\n\t\t\tconst idField = fields[\"_id\"];\n\t\t\tif (!(idField !== void 0 && idField.type.kind === \"scalar\" && objectIdCodecId !== void 0 && idField.type.codecId === objectIdCodecId)) diagnostics.push({\n\t\t\t\tcode: \"PSL_MONGO_ID_REQUIRED\",\n\t\t\t\tmessage: `Model \"${pslModel.name}\" must declare an _id field of type ObjectId (e.g. \\`id ObjectId @id @map(\"_id\")\\`).`,\n\t\t\t\tsourceId\n\t\t\t});\n\t\t}\n\t\tmodels[pslModel.name] = {\n\t\t\tfields,\n\t\t\trelations,\n\t\t\tstorage: { collection: collectionName }\n\t\t};\n\t\tconst modelIndexes = collectIndexes(pslModel, specContext, fieldMappings, modelNames, sourceId, sourceFile, diagnostics, indexSpans);\n\t\tmodelIndexesByName.set(pslModel.name, modelIndexes);\n\t\tconst existingColl = collections[collectionName];\n\t\tif (existingColl && modelIndexes.length > 0) collections[collectionName] = { indexes: [...collectionIndexes(existingColl), ...modelIndexes] };\n\t\telse if (!existingColl) collections[collectionName] = modelIndexes.length > 0 ? { indexes: modelIndexes } : {};\n\t\troots[collectionName] = mongoCrossRef(pslModel.name);\n\t}\n\tconst valueObjects = {};\n\tfor (const compositeType of allCompositeTypes) {\n\t\tconst fields = {};\n\t\tfor (const field of Object.values(compositeType.fields)) {\n\t\t\tconst resolved = resolveNonRelationField(field, compositeType.name, compositeTypeNames, scalarTypeCodecIds, codecIdByEnumName, sourceId, diagnostics);\n\t\t\tif (!resolved) continue;\n\t\t\tfields[field.name] = resolved;\n\t\t}\n\t\tvalueObjects[compositeType.name] = { fields };\n\t}\n\tconst fkRelationsByPair = /* @__PURE__ */ new Map();\n\tfor (const fk of allFkRelations) {\n\t\tconst key = fkRelationPairKey(fk.declaringModel, fk.targetModel);\n\t\tconst existing = fkRelationsByPair.get(key);\n\t\tif (existing) existing.push(fk);\n\t\telse fkRelationsByPair.set(key, [fk]);\n\t}\n\tfor (const candidate of backrelationCandidates) {\n\t\tconst pairKey = fkRelationPairKey(candidate.targetModelName, candidate.modelName);\n\t\tconst pairMatches = fkRelationsByPair.get(pairKey) ?? [];\n\t\tconst matches = candidate.relationName ? pairMatches.filter((r) => r.relationName === candidate.relationName) : [...pairMatches];\n\t\tif (matches.length === 0) {\n\t\t\tdiagnostics.push({\n\t\t\t\tcode: \"PSL_ORPHANED_BACKRELATION\",\n\t\t\t\tmessage: `Backrelation list field \"${candidate.modelName}.${candidate.fieldName}\" has no matching FK-side relation on model \"${candidate.targetModelName}\". Add @relation(fields: [...], references: [...]) on the FK-side relation or use an explicit join model for many-to-many.`,\n\t\t\t\tsourceId,\n\t\t\t\tspan: candidate.field.span\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tif (matches.length > 1) {\n\t\t\tdiagnostics.push({\n\t\t\t\tcode: \"PSL_AMBIGUOUS_BACKRELATION\",\n\t\t\t\tmessage: `Backrelation list field \"${candidate.modelName}.${candidate.fieldName}\" matches multiple FK-side relations on model \"${candidate.targetModelName}\". Add @relation(\"...\") to both sides to disambiguate.`,\n\t\t\t\tsourceId,\n\t\t\t\tspan: candidate.field.span\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tconst fk = matches[0];\n\t\tif (!fk) continue;\n\t\tconst modelEntry = models[candidate.modelName];\n\t\tif (!modelEntry) continue;\n\t\tmodelEntry.relations[candidate.fieldName] = {\n\t\t\tto: mongoCrossRef(candidate.targetModelName),\n\t\t\tcardinality: candidate.cardinality,\n\t\t\ton: {\n\t\t\t\tlocalFields: fk.targetFields,\n\t\t\t\ttargetFields: fk.localFields\n\t\t\t}\n\t\t};\n\t}\n\tconst { discriminatorDeclarations, baseDeclarations } = collectPolymorphismDeclarations(allModels, specContextFor, modelMetadataByName, sourceFile, sourceId, diagnostics);\n\tconst polyResult = resolvePolymorphism({\n\t\tmodels,\n\t\troots,\n\t\tcollections,\n\t\tallModels,\n\t\tdiscriminatorDeclarations,\n\t\tbaseDeclarations,\n\t\tmodelNames,\n\t\tindexSpans,\n\t\tmodelIndexesByName,\n\t\tmodelMetadataByName,\n\t\tsourceId\n\t});\n\tif (diagnostics.length > 0 || polyResult.diagnostics.length > 0) return notOk({\n\t\tsummary: \"PSL to Mongo contract interpretation failed\",\n\t\tdiagnostics: [...diagnostics, ...polyResult.diagnostics]\n\t});\n\tconst resolvedModels = polyResult.models;\n\tconst resolvedCollections = polyResult.collections;\n\tconst storageValueSets = {};\n\tconst enumEntries = Object.entries(builtEnums);\n\tif (enumEntries.length > 0) {\n\t\tassertDefined(codecLookup, \"Mongo PSL interpretation requires a codec lookup to encode enum values\");\n\t\tfor (const [enumName, builtEnum] of enumEntries) storageValueSets[enumName] = {\n\t\t\tkind: \"valueSet\",\n\t\t\tvalues: builtEnum.members.map((m) => encodeEnumValue(m.value, builtEnum.codecId, codecLookup))\n\t\t};\n\t}\n\tfor (const [, modelEntry] of Object.entries(resolvedModels)) {\n\t\tif (modelEntry.base) continue;\n\t\tconst coll = resolvedCollections[modelEntry.storage.collection];\n\t\tif (!coll) continue;\n\t\tif (modelEntry.discriminator && modelEntry.variants) {\n\t\t\tconst variantEntries = Object.entries(modelEntry.variants).map(([variantName, { value }]) => ({\n\t\t\t\tdiscriminatorValue: value,\n\t\t\t\tfields: resolvedModels[variantName]?.fields ?? {}\n\t\t\t}));\n\t\t\tcoll[\"validator\"] = derivePolymorphicJsonSchema(modelEntry.fields, modelEntry.discriminator.field, variantEntries, valueObjects, codecLookup, storageValueSets);\n\t\t} else coll[\"validator\"] = deriveJsonSchema(modelEntry.fields, valueObjects, codecLookup, storageValueSets);\n\t}\n\tconst target = \"mongo\";\n\tconst targetFamily = \"mongo\";\n\tconst collectionInputs = {};\n\tfor (const [name, coll] of Object.entries(resolvedCollections)) {\n\t\tconst raw = {};\n\t\tif (coll[\"indexes\"] != null) raw[\"indexes\"] = coll[\"indexes\"];\n\t\tif (coll[\"validator\"] != null) raw[\"validator\"] = coll[\"validator\"];\n\t\tif (coll[\"options\"] != null) raw[\"options\"] = coll[\"options\"];\n\t\tcollectionInputs[name] = blindCast(raw);\n\t}\n\tconst unboundNamespace = buildMongoNamespace({\n\t\tid: UNBOUND_NAMESPACE_ID,\n\t\tentries: {\n\t\t\tcollection: collectionInputs,\n\t\t\t...Object.keys(storageValueSets).length > 0 ? { valueSet: storageValueSets } : {}\n\t\t}\n\t});\n\tconst storage = blindCast(new MongoStorage({\n\t\tstorageHash: computeStorageHash({\n\t\t\ttarget,\n\t\t\ttargetFamily,\n\t\t\tstorage: { namespaces: { [UNBOUND_NAMESPACE_ID]: {\n\t\t\t\tid: UNBOUND_NAMESPACE_ID,\n\t\t\t\tentries: {\n\t\t\t\t\tcollection: unboundNamespace.entries.collection,\n\t\t\t\t\t...unboundNamespace.entries.valueSet !== void 0 ? { valueSet: unboundNamespace.entries.valueSet } : {}\n\t\t\t\t}\n\t\t\t} } },\n\t\t\t...mongoContractCanonicalizationHooks\n\t\t}),\n\t\tnamespaces: { [UNBOUND_NAMESPACE_ID]: unboundNamespace }\n\t}));\n\tconst capabilities = {};\n\tconst hasEnums = Object.keys(builtEnums).length > 0;\n\treturn ok({\n\t\ttargetFamily,\n\t\ttarget,\n\t\troots: polyResult.roots,\n\t\tdomain: { namespaces: { [UNBOUND_NAMESPACE_ID]: {\n\t\t\tmodels: polyResult.models,\n\t\t\t...Object.keys(valueObjects).length > 0 ? { valueObjects } : {},\n\t\t\t...hasEnums ? { enum: builtEnums } : {}\n\t\t} } },\n\t\tstorage,\n\t\textensions: {},\n\t\tcapabilities,\n\t\tprofileHash: computeProfileHash({\n\t\t\ttarget,\n\t\t\ttargetFamily,\n\t\t\tcapabilities\n\t\t}),\n\t\tmeta: {}\n\t});\n}\n//#endregion\nexport { derivePolymorphicJsonSchema as i, mongoAttributeSpecs as n, deriveJsonSchema as r, interpretPslDocumentToMongoContract as t };\n\n//# sourceMappingURL=interpreter-BAcUM6H7.mjs.map"],"mappings":"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"}
|
|
@@ -14,6 +14,11 @@ declare const mongoFamilyPslBlockDescriptors: {
|
|
|
14
14
|
};
|
|
15
15
|
readonly parameters: {};
|
|
16
16
|
readonly variadicParameters: true;
|
|
17
|
+
readonly attributes: {
|
|
18
|
+
readonly type: () => import("@prisma/orm-framework/psl-parser").AttributeSpec<{
|
|
19
|
+
codecId: string;
|
|
20
|
+
}, import("@prisma/orm-framework/psl-parser").AttributeCtx>;
|
|
21
|
+
};
|
|
17
22
|
};
|
|
18
23
|
};
|
|
19
24
|
//#endregion
|
|
@@ -35,6 +40,11 @@ declare const mongoFamilyPack: {
|
|
|
35
40
|
};
|
|
36
41
|
readonly parameters: {};
|
|
37
42
|
readonly variadicParameters: true;
|
|
43
|
+
readonly attributes: {
|
|
44
|
+
readonly type: () => import("@prisma/orm-framework/psl-parser").AttributeSpec<{
|
|
45
|
+
codecId: string;
|
|
46
|
+
}, import("@prisma/orm-framework/psl-parser").AttributeCtx>;
|
|
47
|
+
};
|
|
38
48
|
};
|
|
39
49
|
};
|
|
40
50
|
readonly attributeSpecs: AuthoringAttributeSpecContributions;
|
|
@@ -42,4 +52,4 @@ declare const mongoFamilyPack: {
|
|
|
42
52
|
};
|
|
43
53
|
//#endregion
|
|
44
54
|
export { mongoFamilyPack as n, mongoFamilyPslBlockDescriptors as r, mongoFamilyEntityTypes as t };
|
|
45
|
-
//# sourceMappingURL=pack-
|
|
55
|
+
//# sourceMappingURL=pack-ByR2mQ_8.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pack-ByR2mQ_8.d.mts","names":[],"sources":["../../../../2-mongo-family/9-family/dist/pack.d.mts"],"mappings":";;;;;cAOc,wBAAwB;cACxB;WACH;aACE;aACA;aACA;aACA;eACE;;aAEF;aACA;aACA;eACE,2CAA2C;QAClD;wCACgC;;;;;;cAM1B;WACH;WACA;WACA;WACA;WACA;aACE,gEAAgE;aAChE;eACE;iBACE;iBACA;iBACA;iBACA;mBACE;;iBAEF;iBACA;iBACA;mBACE,2CAA2C;YAClD;4CACgC;;;;aAI/B,gBAAgB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@prisma/orm-family-mongo",
|
|
3
|
-
"version": "8.0.0-rc.8-dev.
|
|
3
|
+
"version": "8.0.0-rc.8-dev.21",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -9,29 +9,29 @@
|
|
|
9
9
|
"dist"
|
|
10
10
|
],
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@prisma/orm-framework": "8.0.0-rc.8-dev.
|
|
13
|
-
"@prisma/orm-toolchain": "8.0.0-rc.8-dev.
|
|
12
|
+
"@prisma/orm-framework": "8.0.0-rc.8-dev.21",
|
|
13
|
+
"@prisma/orm-toolchain": "8.0.0-rc.8-dev.21",
|
|
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.8-dev.
|
|
20
|
-
"@internal/mongo-codec": "8.0.0-rc.8-dev.
|
|
21
|
-
"@internal/mongo-contract": "8.0.0-rc.8-dev.
|
|
22
|
-
"@internal/mongo-contract-psl": "8.0.0-rc.8-dev.
|
|
23
|
-
"@internal/mongo-contract-ts": "8.0.0-rc.8-dev.
|
|
24
|
-
"@internal/mongo-emitter": "8.0.0-rc.8-dev.
|
|
25
|
-
"@internal/mongo-lowering": "8.0.0-rc.8-dev.
|
|
26
|
-
"@internal/mongo-orm": "8.0.0-rc.8-dev.
|
|
27
|
-
"@internal/mongo-query-ast": "8.0.0-rc.8-dev.
|
|
28
|
-
"@internal/mongo-query-builder": "8.0.0-rc.8-dev.
|
|
29
|
-
"@internal/mongo-runtime": "8.0.0-rc.8-dev.
|
|
30
|
-
"@internal/mongo-schema-ir": "8.0.0-rc.8-dev.
|
|
31
|
-
"@internal/mongo-value": "8.0.0-rc.8-dev.
|
|
32
|
-
"@internal/mongo-wire": "8.0.0-rc.8-dev.
|
|
33
|
-
"@repo/tsconfig": "8.0.0-rc.8-dev.
|
|
34
|
-
"@repo/tsdown": "8.0.0-rc.8-dev.
|
|
19
|
+
"@internal/family-mongo": "8.0.0-rc.8-dev.21",
|
|
20
|
+
"@internal/mongo-codec": "8.0.0-rc.8-dev.21",
|
|
21
|
+
"@internal/mongo-contract": "8.0.0-rc.8-dev.21",
|
|
22
|
+
"@internal/mongo-contract-psl": "8.0.0-rc.8-dev.21",
|
|
23
|
+
"@internal/mongo-contract-ts": "8.0.0-rc.8-dev.21",
|
|
24
|
+
"@internal/mongo-emitter": "8.0.0-rc.8-dev.21",
|
|
25
|
+
"@internal/mongo-lowering": "8.0.0-rc.8-dev.21",
|
|
26
|
+
"@internal/mongo-orm": "8.0.0-rc.8-dev.21",
|
|
27
|
+
"@internal/mongo-query-ast": "8.0.0-rc.8-dev.21",
|
|
28
|
+
"@internal/mongo-query-builder": "8.0.0-rc.8-dev.21",
|
|
29
|
+
"@internal/mongo-runtime": "8.0.0-rc.8-dev.21",
|
|
30
|
+
"@internal/mongo-schema-ir": "8.0.0-rc.8-dev.21",
|
|
31
|
+
"@internal/mongo-value": "8.0.0-rc.8-dev.21",
|
|
32
|
+
"@internal/mongo-wire": "8.0.0-rc.8-dev.21",
|
|
33
|
+
"@repo/tsconfig": "8.0.0-rc.8-dev.21",
|
|
34
|
+
"@repo/tsdown": "8.0.0-rc.8-dev.21",
|
|
35
35
|
"tsdown": "0.22.14",
|
|
36
36
|
"typescript": "5.9.3"
|
|
37
37
|
},
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"authoring-entity-types-BGtkMyoN-D32kzx28.mjs","names":[],"sources":["../../../../2-mongo-family/9-family/dist/authoring-entity-types-BGtkMyoN.mjs"],"sourcesContent":["import { resolveEnumCodecId } from \"@internal/framework-components/authoring\";\nimport { structuredError } from \"@internal/utils/structured-error\";\nimport { blindCast } from \"@internal/utils/casts\";\n//#region ../../1-framework/2-authoring/contract/dist/index.mjs\nfunction contractError(code, message, options) {\n\treturn structuredError(code, message, options);\n}\nconst ENUM_TYPE_HANDLE_BRAND = \"__prismaNextEnumTypeHandle__\";\nfunction enumType(name, codec, ...members) {\n\tif (members.length === 0) throw contractError(\"CONTRACT.ENUM_INVALID\", `enumType(\"${name}\"): must have at least one member.`, { meta: {\n\t\tenumName: name,\n\t\treason: \"no-members\"\n\t} });\n\tconst seenNames = /* @__PURE__ */ new Set();\n\tconst seenValues = /* @__PURE__ */ new Set();\n\tfor (const m of members) {\n\t\tif (seenNames.has(m.name)) throw contractError(\"CONTRACT.ENUM_INVALID\", `enumType(\"${name}\"): duplicate member name \"${m.name}\". Member names must be unique.`, { meta: {\n\t\t\tenumName: name,\n\t\t\tmember: m.name,\n\t\t\treason: \"duplicate-member-name\"\n\t\t} });\n\t\tseenNames.add(m.name);\n\t\tconst loweredValue = String(m.value);\n\t\tif (seenValues.has(loweredValue)) throw contractError(\"CONTRACT.ENUM_INVALID\", `enumType(\"${name}\"): duplicate member value \"${loweredValue}\". Member values must be unique.`, { meta: {\n\t\t\tenumName: name,\n\t\t\tmember: loweredValue,\n\t\t\treason: \"duplicate-member-value\"\n\t\t} });\n\t\tseenValues.add(loweredValue);\n\t}\n\tconst values = Object.freeze(members.map((m) => m.value));\n\tconst names = Object.freeze(members.map((m) => m.name));\n\tconst enumMembers = Object.freeze(members.map((m) => ({\n\t\tname: m.name,\n\t\tvalue: m.value\n\t})));\n\tconst membersAccessor = Object.freeze(Object.fromEntries(members.map((m) => [m.name, m.value])));\n\tconst valueSet = new Set(values);\n\tconst valueToName = new Map(members.map((m) => [m.value, m.name]));\n\tconst valueToOrdinal = new Map(values.map((v, i) => [v, i]));\n\treturn {\n\t\t[ENUM_TYPE_HANDLE_BRAND]: true,\n\t\tenumName: name,\n\t\tcodecId: codec.codecId,\n\t\tnativeType: codec.nativeType,\n\t\tenumMembers,\n\t\tvalues,\n\t\tnames,\n\t\tmembers: membersAccessor,\n\t\thas: (v) => valueSet.has(v),\n\t\tnameOf: (v) => valueToName.get(v),\n\t\tordinalOf: (v) => valueToOrdinal.get(v) ?? -1\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 nativeType = ctx.codecLookup?.targetTypesFor(codecId)?.[0];\n\t\tif (nativeType === 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 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, paramValue] of Object.entries(block.parameters)) {\n\t\t\tlet value;\n\t\t\tif (paramValue.kind === \"bare\") try {\n\t\t\t\tvalue = codec.decodeJson(memberName);\n\t\t\t} catch {\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: paramValue.span\n\t\t\t\t});\n\t\t\t\tmemberError = true;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\telse if (paramValue.kind === \"value\") {\n\t\t\t\tlet jsonValue;\n\t\t\t\ttry {\n\t\t\t\t\tjsonValue = JSON.parse(paramValue.raw);\n\t\t\t\t} catch {\n\t\t\t\t\tdiagnostics?.push({\n\t\t\t\t\t\tcode: \"PSL_EXTENSION_INVALID_VALUE\",\n\t\t\t\t\t\tmessage: `enum \"${block.name}\" member \"${memberName}\" value \"${paramValue.raw}\" is not valid JSON`,\n\t\t\t\t\t\tsourceId,\n\t\t\t\t\t\tspan: paramValue.span\n\t\t\t\t\t});\n\t\t\t\t\tmemberError = true;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\tvalue = codec.decodeJson(blindCast(jsonValue));\n\t\t\t\t} catch (err) {\n\t\t\t\t\tconst reason = err instanceof Error ? err.message : String(err);\n\t\t\t\t\tdiagnostics?.push({\n\t\t\t\t\t\tcode: \"PSL_EXTENSION_INVALID_VALUE\",\n\t\t\t\t\t\tmessage: `enum \"${block.name}\" member \"${memberName}\" was rejected by codec \"${codecId}\": ${reason}`,\n\t\t\t\t\t\tsourceId,\n\t\t\t\t\t\tspan: paramValue.span\n\t\t\t\t\t});\n\t\t\t\t\tmemberError = true;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t} else continue;\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: paramValue.span\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\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 mongoFamilyPslBlockDescriptors = { enum: {\n\tkind: \"pslBlock\",\n\tkeyword: \"enum\",\n\tdiscriminator: \"enum\",\n\tname: { required: true },\n\tparameters: {},\n\tvariadicParameters: true\n} };\n//#endregion\nexport { mongoFamilyPslBlockDescriptors as n, mongoFamilyEntityTypes as t };\n\n//# sourceMappingURL=authoring-entity-types-BGtkMyoN.mjs.map"],"mappings":";;;;AAIA,SAAS,cAAc,MAAM,SAAS,SAAS;CAC9C,OAAO,gBAAgB,MAAM,SAAS,OAAO;AAC9C;AACA,MAAM,yBAAyB;AAC/B,SAAS,SAAS,MAAM,OAAO,GAAG,SAAS;CAC1C,IAAI,QAAQ,WAAW,GAAG,MAAM,cAAc,yBAAyB,aAAa,KAAK,qCAAqC,EAAE,MAAM;EACrI,UAAU;EACV,QAAQ;CACT,EAAE,CAAC;CACH,MAAM,4BAA4B,IAAI,IAAI;CAC1C,MAAM,6BAA6B,IAAI,IAAI;CAC3C,KAAK,MAAM,KAAK,SAAS;EACxB,IAAI,UAAU,IAAI,EAAE,IAAI,GAAG,MAAM,cAAc,yBAAyB,aAAa,KAAK,6BAA6B,EAAE,KAAK,kCAAkC,EAAE,MAAM;GACvK,UAAU;GACV,QAAQ,EAAE;GACV,QAAQ;EACT,EAAE,CAAC;EACH,UAAU,IAAI,EAAE,IAAI;EACpB,MAAM,eAAe,OAAO,EAAE,KAAK;EACnC,IAAI,WAAW,IAAI,YAAY,GAAG,MAAM,cAAc,yBAAyB,aAAa,KAAK,8BAA8B,aAAa,mCAAmC,EAAE,MAAM;GACtL,UAAU;GACV,QAAQ;GACR,QAAQ;EACT,EAAE,CAAC;EACH,WAAW,IAAI,YAAY;CAC5B;CACA,MAAM,SAAS,OAAO,OAAO,QAAQ,KAAK,MAAM,EAAE,KAAK,CAAC;CACxD,MAAM,QAAQ,OAAO,OAAO,QAAQ,KAAK,MAAM,EAAE,IAAI,CAAC;CACtD,MAAM,cAAc,OAAO,OAAO,QAAQ,KAAK,OAAO;EACrD,MAAM,EAAE;EACR,OAAO,EAAE;CACV,EAAE,CAAC;CACH,MAAM,kBAAkB,OAAO,OAAO,OAAO,YAAY,QAAQ,KAAK,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;CAC/F,MAAM,WAAW,IAAI,IAAI,MAAM;CAC/B,MAAM,cAAc,IAAI,IAAI,QAAQ,KAAK,MAAM,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;CACjE,MAAM,iBAAiB,IAAI,IAAI,OAAO,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;CAC3D,OAAO;GACL,yBAAyB;EAC1B,UAAU;EACV,SAAS,MAAM;EACf,YAAY,MAAM;EAClB;EACA;EACA;EACA,SAAS;EACT,MAAM,MAAM,SAAS,IAAI,CAAC;EAC1B,SAAS,MAAM,YAAY,IAAI,CAAC;EAChC,YAAY,MAAM,eAAe,IAAI,CAAC,KAAK;CAC5C;AACD;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,aAAa,IAAI,aAAa,eAAe,OAAO,CAAC,GAAG;EAC9D,IAAI,eAAe,KAAK,GAAG;GAC1B,aAAa,KAAK;IACjB,MAAM;IACN,SAAS,SAAS,MAAM,KAAK,qCAAqC,QAAQ;IAC1E;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,6BAA6B,IAAI,IAAI;EAC3C,MAAM,UAAU,CAAC;EACjB,IAAI,cAAc;EAClB,KAAK,MAAM,CAAC,YAAY,eAAe,OAAO,QAAQ,MAAM,UAAU,GAAG;GACxE,IAAI;GACJ,IAAI,WAAW,SAAS,QAAQ,IAAI;IACnC,QAAQ,MAAM,WAAW,UAAU;GACpC,QAAQ;IACP,aAAa,KAAK;KACjB,MAAM;KACN,SAAS,SAAS,MAAM,KAAK,YAAY,WAAW,4BAA4B,QAAQ;KACxF;KACA,MAAM,WAAW;IAClB,CAAC;IACD,cAAc;IACd;GACD;QACK,IAAI,WAAW,SAAS,SAAS;IACrC,IAAI;IACJ,IAAI;KACH,YAAY,KAAK,MAAM,WAAW,GAAG;IACtC,QAAQ;KACP,aAAa,KAAK;MACjB,MAAM;MACN,SAAS,SAAS,MAAM,KAAK,YAAY,WAAW,WAAW,WAAW,IAAI;MAC9E;MACA,MAAM,WAAW;KAClB,CAAC;KACD,cAAc;KACd;IACD;IACA,IAAI;KACH,QAAQ,MAAM,WAAW,UAAU,SAAS,CAAC;IAC9C,SAAS,KAAK;KACb,MAAM,SAAS,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;KAC9D,aAAa,KAAK;MACjB,MAAM;MACN,SAAS,SAAS,MAAM,KAAK,YAAY,WAAW,2BAA2B,QAAQ,KAAK;MAC5F;MACA,MAAM,WAAW;KAClB,CAAC;KACD,cAAc;KACd;IACD;GACD,OAAO;GACP,MAAM,WAAW,OAAO,KAAK;GAC7B,IAAI,WAAW,IAAI,QAAQ,GAAG;IAC7B,aAAa,KAAK;KACjB,MAAM;KACN,SAAS,SAAS,MAAM,KAAK,6BAA6B,SAAS;KACnE;KACA,MAAM,WAAW;IAClB,CAAC;IACD,cAAc;IACd;GACD;GACA,WAAW,IAAI,QAAQ;GACvB,QAAQ,KAAK;IACZ,MAAM;IACN;GACD,CAAC;EACF;EACA,IAAI,aAAa,OAAO,KAAK;EAC7B,IAAI,QAAQ,WAAW,GAAG;GACzB,aAAa,KAAK;IACjB,MAAM;IACN,SAAS,SAAS,MAAM,KAAK;IAC7B;IACA,MAAM,MAAM;GACb,CAAC;GACD;EACD;EACA,OAAO,SAAS,MAAM,MAAM;GAC3B;GACA;EACD,GAAG,GAAG,QAAQ,KAAK,OAAO;GACzB,MAAM,EAAE;GACR,OAAO,EAAE;EACV,EAAE,CAAC;CACJ,EAAE;AACH,EAAE;AACF,MAAM,iCAAiC,EAAE,MAAM;CAC9C,MAAM;CACN,SAAS;CACT,eAAe;CACf,MAAM,EAAE,UAAU,KAAK;CACvB,YAAY,CAAC;CACb,oBAAoB;AACrB,EAAE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"interpreter-69swE_3Y-CsfTcxiG.mjs","names":[],"sources":["../../../../2-mongo-family/2-authoring/contract-psl/dist/interpreter-69swE_3Y.mjs"],"sourcesContent":["import { MongoIndex, MongoStorage, MongoValidator, applyPolymorphicScopeToMongoIndex, buildMongoNamespace } from \"@internal/mongo-contract\";\nimport { computeProfileHash, computeStorageHash } from \"@internal/contract/hashing\";\nimport { crossRef } from \"@internal/contract/types\";\nimport { errorEnumCodecNotInPackStack } from \"@internal/errors/control\";\nimport { instantiateAuthoringEntityType, isAuthoringEntityTypeDescriptor } from \"@internal/framework-components/authoring\";\nimport { UNBOUND_NAMESPACE_ID } from \"@internal/framework-components/ir\";\nimport { mongoContractCanonicalizationHooks } from \"@internal/mongo-contract/canonicalization-hooks\";\nimport { bool, entityRef, fieldAttribute, fieldRef, funcCall, identifier, int, interpretAttribute, json, list, modelAttribute, nodePslSpan, num, oneOf, optional, record, str } from \"@internal/psl-parser\";\nimport { assertDefined } from \"@internal/utils/assertions\";\nimport { blindCast } from \"@internal/utils/casts\";\nimport { ifDefined } from \"@internal/utils/defined\";\nimport { notOk, ok } from \"@internal/utils/result\";\n//#region src/derive-json-schema.ts\nfunction resolveBsonType(codecId, codecLookup) {\n\treturn codecLookup?.targetTypesFor(codecId)?.[0];\n}\nfunction fieldToBsonSchema(field, valueObjects, codecLookup, valueSets) {\n\tif (field.type.kind === \"scalar\") {\n\t\tconst bsonType = resolveBsonType(field.type.codecId, codecLookup);\n\t\tif (!bsonType) return void 0;\n\t\tconst enumValues = field.valueSet !== void 0 ? valueSets?.[field.valueSet.entityName]?.values ?? null : null;\n\t\tif (\"many\" in field && field.many) {\n\t\t\tconst items = { bsonType };\n\t\t\tif (enumValues) items[\"enum\"] = enumValues;\n\t\t\treturn {\n\t\t\t\tbsonType: \"array\",\n\t\t\t\titems\n\t\t\t};\n\t\t}\n\t\tif (field.nullable) {\n\t\t\tconst s = { bsonType: [\"null\", bsonType] };\n\t\t\tif (enumValues) s[\"enum\"] = [...enumValues, null];\n\t\t\treturn s;\n\t\t}\n\t\tconst s = { bsonType };\n\t\tif (enumValues) s[\"enum\"] = enumValues;\n\t\treturn s;\n\t}\n\tif (field.type.kind === \"valueObject\") {\n\t\tconst vo = valueObjects?.[field.type.name];\n\t\tif (!vo) return void 0;\n\t\tconst voSchema = deriveObjectSchema(vo.fields, valueObjects, codecLookup, valueSets);\n\t\tif (\"many\" in field && field.many) return {\n\t\t\tbsonType: \"array\",\n\t\t\titems: voSchema\n\t\t};\n\t\tif (field.nullable) return { oneOf: [{ bsonType: \"null\" }, voSchema] };\n\t\treturn voSchema;\n\t}\n}\nfunction deriveObjectSchema(fields, valueObjects, codecLookup, valueSets) {\n\tconst properties = {};\n\tconst required = [];\n\tfor (const [fieldName, field] of Object.entries(fields)) {\n\t\tconst schema = fieldToBsonSchema(field, valueObjects, codecLookup, valueSets);\n\t\tif (schema) {\n\t\t\tproperties[fieldName] = schema;\n\t\t\tif (!field.nullable) required.push(fieldName);\n\t\t}\n\t}\n\tconst result = {\n\t\tbsonType: \"object\",\n\t\tproperties,\n\t\tadditionalProperties: false\n\t};\n\tif (required.length > 0) result[\"required\"] = required.sort();\n\treturn result;\n}\nfunction isRecord(value) {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction deriveJsonSchema(fields, valueObjects, codecLookup, valueSets) {\n\treturn new MongoValidator({\n\t\tjsonSchema: deriveObjectSchema(fields, valueObjects, codecLookup, valueSets),\n\t\tvalidationLevel: \"strict\",\n\t\tvalidationAction: \"error\"\n\t});\n}\nfunction derivePolymorphicJsonSchema(baseFields, discriminatorField, variants, valueObjects, codecLookup, valueSets) {\n\tconst baseSchema = deriveObjectSchema(baseFields, valueObjects, codecLookup, valueSets);\n\tconst baseProperties = isRecord(baseSchema[\"properties\"]) ? baseSchema[\"properties\"] : {};\n\tconst oneOf = [];\n\tfor (const variant of variants) {\n\t\tconst variantOnlyFields = {};\n\t\tfor (const [name, field] of Object.entries(variant.fields)) if (!(name in baseFields)) variantOnlyFields[name] = field;\n\t\tconst variantProperties = {};\n\t\tconst variantRequired = [discriminatorField];\n\t\tfor (const [name, field] of Object.entries(variantOnlyFields)) {\n\t\t\tconst schema = fieldToBsonSchema(field, valueObjects, codecLookup, valueSets);\n\t\t\tif (schema) {\n\t\t\t\tvariantProperties[name] = schema;\n\t\t\t\tif (!field.nullable) variantRequired.push(name);\n\t\t\t}\n\t\t}\n\t\tconst entry = {\n\t\t\tproperties: {\n\t\t\t\t...baseProperties,\n\t\t\t\t[discriminatorField]: { enum: [variant.discriminatorValue] },\n\t\t\t\t...variantProperties\n\t\t\t},\n\t\t\trequired: variantRequired.sort(),\n\t\t\tadditionalProperties: false\n\t\t};\n\t\toneOf.push(entry);\n\t}\n\tconst jsonSchema = { ...baseSchema };\n\tdelete jsonSchema[\"additionalProperties\"];\n\tif (oneOf.length > 0) jsonSchema[\"oneOf\"] = oneOf;\n\treturn new MongoValidator({\n\t\tjsonSchema,\n\t\tvalidationLevel: \"strict\",\n\t\tvalidationAction: \"error\"\n\t});\n}\n//#endregion\n//#region src/mongo-attribute-specs.ts\nfunction findModelAttributeNode(model, name) {\n\tfor (const attribute of model.node.attributes()) if (attribute.name()?.isSimpleName(name) === true) return attribute;\n}\nfunction findFieldAttributeNode(field, name) {\n\tfor (const attribute of field.node.attributes()) if (attribute.name()?.isSimpleName(name) === true) return attribute;\n}\nfunction buildModelInterpretCtx(input) {\n\treturn {\n\t\tlevel: \"model\",\n\t\tsourceId: input.sourceId,\n\t\tsourceFile: input.sourceFile,\n\t\tselfModel: input.selfModel,\n\t\tresolveReferencedModel: () => void 0\n\t};\n}\nfunction buildFieldInterpretCtx(input) {\n\treturn {\n\t\tlevel: \"field\",\n\t\tsourceId: input.sourceId,\n\t\tsourceFile: input.sourceFile,\n\t\tselfModel: input.selfModel,\n\t\tresolveReferencedModel: input.resolveReferencedModel ?? (() => void 0),\n\t\tfield: input.field\n\t};\n}\nfunction interpretModelAttribute(input) {\n\tconst result = interpretAttribute(input.node, input.spec, buildModelInterpretCtx({\n\t\tselfModel: input.model,\n\t\tsourceFile: input.sourceFile,\n\t\tsourceId: input.sourceId\n\t}));\n\tif (!result.ok) {\n\t\tfor (const failure of result.failure) input.diagnostics.push(failure);\n\t\treturn;\n\t}\n\treturn result.value;\n}\nfunction interpretFieldAttribute(input) {\n\tconst result = interpretAttribute(input.node, input.spec, buildFieldInterpretCtx({\n\t\tselfModel: input.model,\n\t\tfield: input.field,\n\t\tsourceFile: input.sourceFile,\n\t\tsourceId: input.sourceId,\n\t\tresolveReferencedModel: input.resolveReferencedModel\n\t}));\n\tif (!result.ok) {\n\t\tfor (const failure of result.failure) input.diagnostics.push(failure);\n\t\treturn;\n\t}\n\treturn result.value;\n}\nconst mapModelSpec = modelAttribute(\"map\", { positional: [{\n\tkey: \"name\",\n\ttype: str()\n}] });\nconst mapFieldSpec = fieldAttribute(\"map\", { positional: [{\n\tkey: \"name\",\n\ttype: str()\n}] });\nconst idFieldSpec = fieldAttribute(\"id\", {});\nconst uniqueFieldSpec = fieldAttribute(\"unique\", {});\nconst relationFieldSpec = fieldAttribute(\"relation\", {\n\tpositional: [{\n\t\tkey: \"name\",\n\t\ttype: optional(str())\n\t}],\n\tnamed: {\n\t\tname: optional(str()),\n\t\tfields: optional(list(fieldRef(\"self\"), {\n\t\t\tnonEmpty: true,\n\t\t\tunique: true\n\t\t})),\n\t\treferences: optional(list(fieldRef(\"referenced\"), {\n\t\t\tnonEmpty: true,\n\t\t\tunique: true\n\t\t}))\n\t}\n});\nconst discriminatorModelSpec = modelAttribute(\"discriminator\", { positional: [{\n\tkey: \"field\",\n\ttype: fieldRef(\"self\")\n}] });\nconst baseModelSpec = modelAttribute(\"base\", { positional: [{\n\tkey: \"base\",\n\ttype: entityRef()\n}, {\n\tkey: \"value\",\n\ttype: str()\n}] });\nconst sortSig = { named: { sort: oneOf(identifier(\"Asc\"), identifier(\"Desc\")) } };\nfunction indexFieldElement(fieldNames) {\n\treturn oneOf(...[\n\t\tfieldRef(\"self\"),\n\t\tfuncCall(\"wildcard\", { positional: [{\n\t\t\tkey: \"scope\",\n\t\t\ttype: optional(entityRef())\n\t\t}] }),\n\t\t...fieldNames.map((name) => funcCall(name, sortSig))\n\t]);\n}\nconst collationNamedArgs = {\n\tcollationLocale: optional(str()),\n\tcollationStrength: optional(oneOf(num(1), num(2), num(3), num(4), num(5))),\n\tcollationCaseLevel: optional(bool()),\n\tcollationCaseFirst: optional(oneOf(str(\"upper\"), str(\"lower\"), str(\"off\"))),\n\tcollationNumericOrdering: optional(bool()),\n\tcollationAlternate: optional(oneOf(str(\"non-ignorable\"), str(\"shifted\"))),\n\tcollationMaxVariable: optional(oneOf(str(\"punct\"), str(\"space\"))),\n\tcollationBackwards: optional(bool()),\n\tcollationNormalization: optional(bool())\n};\nfunction buildIndexModelSpec(name, fieldElement) {\n\treturn modelAttribute(name, {\n\t\tpositional: [{\n\t\t\tkey: \"fields\",\n\t\t\ttype: list(fieldElement, { nonEmpty: true })\n\t\t}],\n\t\tnamed: {\n\t\t\ttype: optional(oneOf(num(1), num(-1), str(\"text\"), str(\"2dsphere\"), str(\"2d\"), str(\"hashed\"))),\n\t\t\tsparse: optional(bool()),\n\t\t\texpireAfterSeconds: optional(int()),\n\t\t\tfilter: optional(json()),\n\t\t\tinclude: optional(list(str())),\n\t\t\texclude: optional(list(str())),\n\t\t\tdefault_language: optional(str()),\n\t\t\tlanguageOverride: optional(str()),\n\t\t\t...collationNamedArgs\n\t\t}\n\t});\n}\nfunction buildTextIndexModelSpec(fieldElement) {\n\treturn modelAttribute(\"textIndex\", {\n\t\tpositional: [{\n\t\t\tkey: \"fields\",\n\t\t\ttype: list(fieldElement, { nonEmpty: true })\n\t\t}],\n\t\tnamed: {\n\t\t\tfilter: optional(json()),\n\t\t\tweights: optional(record(int({\n\t\t\t\tmin: 1,\n\t\t\t\tmax: 99999\n\t\t\t}))),\n\t\t\tlanguage: optional(str()),\n\t\t\tlanguageOverride: optional(str()),\n\t\t\t...collationNamedArgs\n\t\t}\n\t});\n}\nfunction modelFieldElement(ctx) {\n\treturn indexFieldElement(Object.keys(ctx.model.fields));\n}\nfunction staticModelSpec(spec) {\n\treturn () => spec;\n}\nfunction staticFieldSpec(spec) {\n\treturn () => spec;\n}\nconst mongoAttributeSpecs = {\n\tmodel: {\n\t\tmap: staticModelSpec(mapModelSpec),\n\t\tdiscriminator: staticModelSpec(discriminatorModelSpec),\n\t\tbase: staticModelSpec(baseModelSpec),\n\t\tindex: (ctx) => buildIndexModelSpec(\"index\", modelFieldElement(ctx)),\n\t\tunique: (ctx) => buildIndexModelSpec(\"unique\", modelFieldElement(ctx)),\n\t\ttextIndex: (ctx) => buildTextIndexModelSpec(modelFieldElement(ctx))\n\t},\n\tfield: {\n\t\tid: staticFieldSpec(idFieldSpec),\n\t\tunique: staticFieldSpec(uniqueFieldSpec),\n\t\tmap: staticFieldSpec(mapFieldSpec),\n\t\trelation: staticFieldSpec(relationFieldSpec)\n\t}\n};\n//#endregion\n//#region src/psl-helpers.ts\nfunction lowerFirst(value) {\n\tif (value.length === 0) return value;\n\treturn value[0]?.toLowerCase() + value.slice(1);\n}\nfunction getAttribute(attributes, name) {\n\treturn attributes.find((attr) => attr.name === name);\n}\n//#endregion\n//#region src/interpreter.ts\n/**\n* Encode an authored enum value to its codec-encoded JSON form via the codec resolved by id from the\n* contract's codec lookup, so a non-identity `encodeJson` (permitted by the `mongoCodec` factory) is\n* respected. Matches the TS builder's `encodeEnumValue`: the lookup is always threaded in production,\n* and a codecId the lookup cannot resolve is a hard error — the enum uses a codec that is not part of\n* the contract's pack stack.\n*/\nfunction encodeEnumValue(value, codecId, codecLookup) {\n\tconst codec = codecLookup.get(codecId);\n\tif (!codec) throw errorEnumCodecNotInPackStack({ codecId });\n\treturn codec.encodeJson(value);\n}\n/**\n* Mongo's PSL surface binds the database from the connection string, so every\n* explicit namespace block is invalid, including `namespace unbound { … }`.\n*/\nfunction validateNamespaceBlocksForMongoTarget(input) {\n\tfor (const namespace of input.namespaces) input.diagnostics.push({\n\t\tcode: \"PSL_UNSUPPORTED_NAMESPACE_BLOCK\",\n\t\tmessage: `Mongo does not support \\`namespace ${namespace.name} { … }\\` blocks (the database is bound by the connection string; declare models at the document top level instead).`,\n\t\tsourceId: input.sourceId,\n\t\tspan: nodePslSpan(namespace.node.syntax, input.sourceFile)\n\t});\n}\nconst UNLOWERED_FIELD_ATTRIBUTE_HINTS = /* @__PURE__ */ new Map([[\"updatedAt\", \"Mongo lowers no automatic timestamp updates; delete the attribute and set the timestamp in application code.\"]]);\nfunction unsupportedFieldAttributeMessage(ownerName, fieldName, attributeName) {\n\tconst base = `Field \"${ownerName}.${fieldName}\" uses unsupported attribute \"@${attributeName}\"`;\n\tconst hint = UNLOWERED_FIELD_ATTRIBUTE_HINTS.get(attributeName);\n\treturn hint === void 0 ? base : `${base}. ${hint}`;\n}\nfunction reportUnknownAttributes(input) {\n\tconst { sourceId, diagnostics } = input;\n\tfor (const model of input.models) for (const attribute of model.attributes) {\n\t\tif (Object.hasOwn(mongoAttributeSpecs.model, attribute.name)) continue;\n\t\tdiagnostics.push({\n\t\t\tcode: \"PSL_UNSUPPORTED_MODEL_ATTRIBUTE\",\n\t\t\tmessage: `Model \"${model.name}\" uses unsupported attribute \"@@${attribute.name}\"`,\n\t\t\tsourceId,\n\t\t\tspan: attribute.span\n\t\t});\n\t}\n\tfor (const owner of [...input.models, ...input.compositeTypes]) for (const field of Object.values(owner.fields)) for (const attribute of field.attributes) {\n\t\tif (Object.hasOwn(mongoAttributeSpecs.field, attribute.name)) continue;\n\t\tdiagnostics.push({\n\t\t\tcode: \"PSL_UNSUPPORTED_FIELD_ATTRIBUTE\",\n\t\t\tmessage: unsupportedFieldAttributeMessage(owner.name, field.name, attribute.name),\n\t\t\tsourceId,\n\t\t\tspan: attribute.span\n\t\t});\n\t}\n}\nfunction fkRelationPairKey(declaringModel, targetModel) {\n\treturn `${declaringModel}::${targetModel}`;\n}\nfunction resolveFieldMappings(input) {\n\tconst { model, specContext, sourceFile, sourceId, diagnostics } = input;\n\tconst pslNameToMapped = /* @__PURE__ */ new Map();\n\tfor (const field of Object.values(model.fields)) {\n\t\tconst mapNode = findFieldAttributeNode(field, \"map\");\n\t\tconst mapped = (mapNode ? interpretFieldAttribute({\n\t\t\tnode: mapNode,\n\t\t\tspec: mongoAttributeSpecs.field.map({\n\t\t\t\t...specContext,\n\t\t\t\tfield\n\t\t\t}),\n\t\t\tmodel,\n\t\t\tfield,\n\t\t\tsourceFile,\n\t\t\tsourceId,\n\t\t\tdiagnostics\n\t\t})?.name : void 0) ?? field.name;\n\t\tpslNameToMapped.set(field.name, mapped);\n\t}\n\treturn { pslNameToMapped };\n}\nfunction resolveCollectionName(input) {\n\tconst { model, specContext, sourceFile, sourceId, diagnostics } = input;\n\tconst mapNode = findModelAttributeNode(model, \"map\");\n\treturn (mapNode ? interpretModelAttribute({\n\t\tnode: mapNode,\n\t\tspec: mongoAttributeSpecs.model.map(specContext),\n\t\tmodel,\n\t\tsourceFile,\n\t\tsourceId,\n\t\tdiagnostics\n\t})?.name : void 0) ?? lowerFirst(model.name);\n}\nfunction mongoCrossRef(modelName) {\n\treturn crossRef(modelName, UNBOUND_NAMESPACE_ID);\n}\nfunction collectPolymorphismDeclarations(models, specContextFor, modelMetadataByName, sourceFile, sourceId, diagnostics) {\n\tconst discriminatorDeclarations = /* @__PURE__ */ new Map();\n\tconst baseDeclarations = /* @__PURE__ */ new Map();\n\tfor (const model of models) {\n\t\tconst specContext = specContextFor(model);\n\t\tconst discNode = findModelAttributeNode(model, \"discriminator\");\n\t\tif (discNode) {\n\t\t\tconst parsed = interpretModelAttribute({\n\t\t\t\tnode: discNode,\n\t\t\t\tspec: mongoAttributeSpecs.model.discriminator(specContext),\n\t\t\t\tmodel,\n\t\t\t\tsourceFile,\n\t\t\t\tsourceId,\n\t\t\t\tdiagnostics\n\t\t\t});\n\t\t\tif (parsed) {\n\t\t\t\tconst fieldName = parsed.field;\n\t\t\t\tconst discField = model.fields[fieldName];\n\t\t\t\tif (discField && discField.typeName !== \"String\") diagnostics.push({\n\t\t\t\t\tcode: \"PSL_INVALID_ATTRIBUTE_ARGUMENT\",\n\t\t\t\t\tmessage: `Discriminator field \"${fieldName}\" on model \"${model.name}\" must be of type String, but is \"${discField.typeName}\"`,\n\t\t\t\t\tsourceId,\n\t\t\t\t\tspan: nodePslSpan(discNode.syntax, sourceFile)\n\t\t\t\t});\n\t\t\t\telse discriminatorDeclarations.set(model.name, {\n\t\t\t\t\tfieldName,\n\t\t\t\t\tspan: nodePslSpan(discNode.syntax, sourceFile)\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tconst baseNode = findModelAttributeNode(model, \"base\");\n\t\tif (baseNode) {\n\t\t\tconst parsed = interpretModelAttribute({\n\t\t\t\tnode: baseNode,\n\t\t\t\tspec: mongoAttributeSpecs.model.base(specContext),\n\t\t\t\tmodel,\n\t\t\t\tsourceFile,\n\t\t\t\tsourceId,\n\t\t\t\tdiagnostics\n\t\t\t});\n\t\t\tif (parsed) {\n\t\t\t\tconst collectionName = modelMetadataByName.get(model.name)?.collectionName ?? lowerFirst(model.name);\n\t\t\t\tbaseDeclarations.set(model.name, {\n\t\t\t\t\tbaseName: parsed.base,\n\t\t\t\t\tvalue: parsed.value,\n\t\t\t\t\tcollectionName,\n\t\t\t\t\tspan: nodePslSpan(baseNode.syntax, sourceFile)\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\treturn {\n\t\tdiscriminatorDeclarations,\n\t\tbaseDeclarations\n\t};\n}\nfunction resolvePolymorphism(input) {\n\tconst { discriminatorDeclarations, baseDeclarations, modelNames, modelMetadataByName, sourceId, allModels: allModelViews, indexSpans, modelIndexesByName } = input;\n\tlet patched = input.models;\n\tlet roots = input.roots;\n\tlet collections = input.collections;\n\tconst diagnostics = [];\n\tfor (const [modelName, decl] of discriminatorDeclarations) {\n\t\tif (baseDeclarations.has(modelName)) {\n\t\t\tdiagnostics.push({\n\t\t\t\tcode: \"PSL_DISCRIMINATOR_AND_BASE\",\n\t\t\t\tmessage: `Model \"${modelName}\" cannot have both @@discriminator and @@base`,\n\t\t\t\tsourceId,\n\t\t\t\tspan: decl.span\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tconst model = patched[modelName];\n\t\tif (!model) continue;\n\t\tconst mappedDiscriminatorField = modelMetadataByName.get(modelName)?.fieldMappings.pslNameToMapped.get(decl.fieldName) ?? decl.fieldName;\n\t\tif (!Object.hasOwn(model.fields, mappedDiscriminatorField)) {\n\t\t\tdiagnostics.push({\n\t\t\t\tcode: \"PSL_DISCRIMINATOR_FIELD_NOT_FOUND\",\n\t\t\t\tmessage: `Discriminator field \"${decl.fieldName}\" is not a field on model \"${modelName}\"`,\n\t\t\t\tsourceId,\n\t\t\t\tspan: decl.span\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tconst variants = {};\n\t\tfor (const [variantName, baseDecl] of baseDeclarations) {\n\t\t\tif (baseDecl.baseName !== modelName) continue;\n\t\t\tvariants[variantName] = { value: baseDecl.value };\n\t\t}\n\t\tif (Object.keys(variants).length === 0) {\n\t\t\tdiagnostics.push({\n\t\t\t\tcode: \"PSL_ORPHANED_DISCRIMINATOR\",\n\t\t\t\tmessage: `Model \"${modelName}\" has @@discriminator but no variant models declare @@base(${modelName}, ...)`,\n\t\t\t\tsourceId,\n\t\t\t\tspan: decl.span\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tpatched = {\n\t\t\t...patched,\n\t\t\t[modelName]: {\n\t\t\t\t...model,\n\t\t\t\tdiscriminator: { field: mappedDiscriminatorField },\n\t\t\t\tvariants\n\t\t\t}\n\t\t};\n\t}\n\tfor (const [variantName, baseDecl] of baseDeclarations) {\n\t\tif (!modelNames.has(baseDecl.baseName)) {\n\t\t\tdiagnostics.push({\n\t\t\t\tcode: \"PSL_BASE_TARGET_NOT_FOUND\",\n\t\t\t\tmessage: `Model \"${variantName}\" @@base references non-existent model \"${baseDecl.baseName}\"`,\n\t\t\t\tsourceId,\n\t\t\t\tspan: baseDecl.span\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tif (!discriminatorDeclarations.has(baseDecl.baseName)) {\n\t\t\tdiagnostics.push({\n\t\t\t\tcode: \"PSL_ORPHANED_BASE\",\n\t\t\t\tmessage: `Model \"${variantName}\" declares @@base(${baseDecl.baseName}, ...) but \"${baseDecl.baseName}\" has no @@discriminator`,\n\t\t\t\tsourceId,\n\t\t\t\tspan: baseDecl.span\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tif (discriminatorDeclarations.has(variantName)) continue;\n\t\tconst baseModel = patched[baseDecl.baseName];\n\t\tconst variantModelView = allModelViews.find((m) => m.name === variantName);\n\t\tif (!variantModelView) continue;\n\t\tif (getAttribute(variantModelView.attributes, \"map\") !== void 0 && baseModel && baseDecl.collectionName !== baseModel.storage.collection) {\n\t\t\tdiagnostics.push({\n\t\t\t\tcode: \"PSL_MONGO_VARIANT_SEPARATE_COLLECTION\",\n\t\t\t\tmessage: `Mongo variant \"${variantName}\" cannot use a different collection than its base \"${baseDecl.baseName}\". Mongo only supports single-collection polymorphism.`,\n\t\t\t\tsourceId,\n\t\t\t\tspan: baseDecl.span\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tconst baseCollection = baseModel?.storage.collection ?? baseDecl.collectionName;\n\t\tconst variantModel = patched[variantName];\n\t\tif (variantModel) patched = {\n\t\t\t...patched,\n\t\t\t[variantName]: {\n\t\t\t\t...variantModel,\n\t\t\t\tbase: mongoCrossRef(baseDecl.baseName),\n\t\t\t\tstorage: { collection: baseCollection }\n\t\t\t}\n\t\t};\n\t\tconst variantCollectionName = modelMetadataByName.get(variantName)?.collectionName ?? lowerFirst(variantName);\n\t\tif (roots[variantCollectionName]?.model === variantName) if (variantCollectionName === baseCollection && baseModel) roots = {\n\t\t\t...roots,\n\t\t\t[variantCollectionName]: mongoCrossRef(baseDecl.baseName)\n\t\t};\n\t\telse roots = Object.fromEntries(Object.entries(roots).filter(([key]) => key !== variantCollectionName));\n\t\tconst variantOwnIndexes = modelIndexesByName.get(variantName) ?? [];\n\t\tconst baseColl = collections[baseCollection];\n\t\tconst discriminatorField = patched[baseDecl.baseName]?.discriminator?.field;\n\t\tconst scopedVariantIndexes = [];\n\t\tif (discriminatorField) for (const idx of variantOwnIndexes) {\n\t\t\tconst result = applyPolymorphicScopeToMongoIndex(idx, {\n\t\t\t\tdiscriminatorField,\n\t\t\t\tdiscriminatorValue: baseDecl.value\n\t\t\t});\n\t\t\tif (result.kind === \"conflict\") {\n\t\t\t\tconst span = indexSpans.get(idx) ?? baseDecl.span;\n\t\t\t\tdiagnostics.push({\n\t\t\t\t\tcode: \"PSL_INVALID_INDEX\",\n\t\t\t\t\tmessage: `Variant \"${variantName}\" index conflicts with discriminator scope: ${result.reason}`,\n\t\t\t\t\tsourceId,\n\t\t\t\t\tspan\n\t\t\t\t});\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (result.index !== idx) indexSpans.set(result.index, indexSpans.get(idx) ?? baseDecl.span);\n\t\t\tscopedVariantIndexes.push(result.index);\n\t\t}\n\t\telse scopedVariantIndexes.push(...variantOwnIndexes);\n\t\tif (variantCollectionName !== baseCollection) {\n\t\t\tconst filtered = Object.fromEntries(Object.entries(collections).filter(([key]) => key !== variantCollectionName));\n\t\t\tif (scopedVariantIndexes.length > 0 && baseColl) {\n\t\t\t\tconst baseIndexes = collectionIndexes(baseColl);\n\t\t\t\tcollections = {\n\t\t\t\t\t...filtered,\n\t\t\t\t\t[baseCollection]: {\n\t\t\t\t\t\t...baseColl,\n\t\t\t\t\t\tindexes: [...baseIndexes, ...scopedVariantIndexes]\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t} else collections = filtered;\n\t\t} else if (baseColl) {\n\t\t\tconst existingIndexes = collectionIndexes(baseColl);\n\t\t\tconst variantIndexSet = new Set(variantOwnIndexes);\n\t\t\tconst withoutUnscopedVariants = existingIndexes.filter((idx) => !variantIndexSet.has(idx));\n\t\t\tconst mergedIndexes = [...withoutUnscopedVariants];\n\t\t\tfor (const idx of scopedVariantIndexes) {\n\t\t\t\tconst idxKey = canonicalJson(idx);\n\t\t\t\tif (!withoutUnscopedVariants.some((existing) => canonicalJson(existing) === idxKey)) mergedIndexes.push(idx);\n\t\t\t}\n\t\t\tif (mergedIndexes.length !== existingIndexes.length || mergedIndexes.some((idx, i) => idx !== existingIndexes[i])) {\n\t\t\t\tconst next = { ...baseColl };\n\t\t\t\tif (mergedIndexes.length > 0) next[\"indexes\"] = mergedIndexes;\n\t\t\t\telse delete next[\"indexes\"];\n\t\t\t\tcollections = {\n\t\t\t\t\t...collections,\n\t\t\t\t\t[baseCollection]: next\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t}\n\treturn {\n\t\tmodels: patched,\n\t\troots,\n\t\tcollections,\n\t\tdiagnostics\n\t};\n}\nfunction collectionIndexes(collection) {\n\treturn blindCast(collection[\"indexes\"] ?? []);\n}\nfunction canonicalJson(value) {\n\tif (Array.isArray(value)) return `[${value.map(canonicalJson).join(\",\")}]`;\n\tif (value && typeof value === \"object\") return `{${Object.entries(value).sort(([left], [right]) => left.localeCompare(right)).map(([key, entry]) => `${JSON.stringify(key)}:${canonicalJson(entry)}`).join(\",\")}}`;\n\treturn JSON.stringify(value);\n}\nfunction normalizeIndexField(element) {\n\tif (typeof element === \"string\") return {\n\t\tkind: \"field\",\n\t\tname: element\n\t};\n\tif (element.fn === \"wildcard\" && element.args[\"sort\"] === void 0) {\n\t\tconst scope = element.args[\"scope\"];\n\t\treturn typeof scope === \"string\" ? {\n\t\t\tkind: \"wildcard\",\n\t\t\tscope\n\t\t} : { kind: \"wildcard\" };\n\t}\n\tconst sort = element.args[\"sort\"];\n\treturn {\n\t\tkind: \"field\",\n\t\tname: element.fn,\n\t\tdirection: sort === \"Desc\" ? -1 : 1\n\t};\n}\nfunction buildCollationFromSpec(args) {\n\tconst locale = args.collationLocale;\n\tif (locale === void 0) return args.collationStrength !== void 0 || args.collationCaseLevel !== void 0 || args.collationCaseFirst !== void 0 || args.collationNumericOrdering !== void 0 || args.collationAlternate !== void 0 || args.collationMaxVariable !== void 0 || args.collationBackwards !== void 0 || args.collationNormalization !== void 0 ? null : void 0;\n\tconst collation = { locale };\n\tif (args.collationStrength !== void 0) collation.strength = args.collationStrength;\n\tif (args.collationCaseLevel !== void 0) collation.caseLevel = args.collationCaseLevel;\n\tif (args.collationCaseFirst !== void 0) collation.caseFirst = args.collationCaseFirst;\n\tif (args.collationNumericOrdering !== void 0) collation.numericOrdering = args.collationNumericOrdering;\n\tif (args.collationAlternate !== void 0) collation.alternate = args.collationAlternate;\n\tif (args.collationMaxVariable !== void 0) collation.maxVariable = args.collationMaxVariable;\n\tif (args.collationBackwards !== void 0) collation.backwards = args.collationBackwards;\n\tif (args.collationNormalization !== void 0) collation.normalization = args.collationNormalization;\n\treturn collation;\n}\nfunction resolveIndexKeys(parsedFields, defaultDirection, ctx) {\n\tconst wildcardCount = parsedFields.filter((field) => field.kind === \"wildcard\").length;\n\tif (wildcardCount > 1) {\n\t\tctx.diagnostics.push({\n\t\t\tcode: \"PSL_INVALID_INDEX\",\n\t\t\tmessage: \"An index can contain at most one wildcard() field\",\n\t\t\tsourceId: ctx.sourceId,\n\t\t\tspan: ctx.span\n\t\t});\n\t\treturn;\n\t}\n\tfor (const field of parsedFields) {\n\t\tconst fieldName = field.kind === \"wildcard\" ? field.scope : field.name;\n\t\tif (fieldName !== void 0 && !ctx.indexableFieldNames.has(fieldName)) {\n\t\t\tctx.diagnostics.push({\n\t\t\t\tcode: \"PSL_INDEX_FIELD_NOT_FOUND\",\n\t\t\t\tmessage: `Index on model \"${ctx.pslModel.name}\" references unknown field \"${fieldName}\"`,\n\t\t\t\tsourceId: ctx.sourceId,\n\t\t\t\tspan: ctx.span\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t}\n\treturn {\n\t\tkeys: parsedFields.map((field) => {\n\t\t\tif (field.kind === \"wildcard\") {\n\t\t\t\tif (field.scope === void 0) return {\n\t\t\t\t\tfield: \"$**\",\n\t\t\t\t\tdirection: defaultDirection\n\t\t\t\t};\n\t\t\t\treturn {\n\t\t\t\t\tfield: `${ctx.fieldMappings.pslNameToMapped.get(field.scope) ?? field.scope}.$**`,\n\t\t\t\t\tdirection: defaultDirection\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tfield: ctx.fieldMappings.pslNameToMapped.get(field.name) ?? field.name,\n\t\t\t\tdirection: field.direction ?? defaultDirection\n\t\t\t};\n\t\t}),\n\t\thasWildcard: wildcardCount === 1\n\t};\n}\nfunction buildProjection(include, exclude, hasWildcard, ctx) {\n\tif (include !== void 0 && exclude !== void 0) {\n\t\tctx.diagnostics.push({\n\t\t\tcode: \"PSL_INVALID_INDEX\",\n\t\t\tmessage: \"Cannot specify both include and exclude on the same index\",\n\t\t\tsourceId: ctx.sourceId,\n\t\t\tspan: ctx.span\n\t\t});\n\t\treturn null;\n\t}\n\tconst fields = include ?? exclude;\n\tif (fields === void 0) return void 0;\n\tif (!hasWildcard) {\n\t\tctx.diagnostics.push({\n\t\t\tcode: \"PSL_INVALID_INDEX\",\n\t\t\tmessage: \"include/exclude options are only valid when the index contains a wildcard() field\",\n\t\t\tsourceId: ctx.sourceId,\n\t\t\tspan: ctx.span\n\t\t});\n\t\treturn null;\n\t}\n\tif (fields.length === 0) return void 0;\n\tconst value = include === void 0 ? 0 : 1;\n\tconst projection = {};\n\tfor (const field of fields) projection[field] = value;\n\treturn projection;\n}\nfunction buildNormalIndex(parsed, unique, ctx) {\n\tconst parsedFields = parsed.fields.map(normalizeIndexField);\n\tif (parsedFields.length === 0) return void 0;\n\tconst defaultDirection = parsed.type ?? 1;\n\tconst resolved = resolveIndexKeys(parsedFields, defaultDirection, ctx);\n\tif (!resolved) return void 0;\n\tif (unique && resolved.hasWildcard) {\n\t\tctx.diagnostics.push({\n\t\t\tcode: \"PSL_INVALID_INDEX\",\n\t\t\tmessage: \"Unique indexes cannot use wildcard() fields\",\n\t\t\tsourceId: ctx.sourceId,\n\t\t\tspan: ctx.span\n\t\t});\n\t\treturn;\n\t}\n\tif (resolved.hasWildcard && typeof defaultDirection === \"string\" && [\n\t\t\"hashed\",\n\t\t\"2dsphere\",\n\t\t\"2d\"\n\t].includes(defaultDirection)) {\n\t\tctx.diagnostics.push({\n\t\t\tcode: \"PSL_INVALID_INDEX\",\n\t\t\tmessage: `wildcard() fields cannot be combined with type: ${defaultDirection}`,\n\t\t\tsourceId: ctx.sourceId,\n\t\t\tspan: ctx.span\n\t\t});\n\t\treturn;\n\t}\n\tif (defaultDirection === \"hashed\" && parsedFields.length > 1) {\n\t\tctx.diagnostics.push({\n\t\t\tcode: \"PSL_INVALID_INDEX\",\n\t\t\tmessage: \"Hashed indexes must have exactly one field\",\n\t\t\tsourceId: ctx.sourceId,\n\t\t\tspan: ctx.span\n\t\t});\n\t\treturn;\n\t}\n\tif (resolved.hasWildcard && parsed.expireAfterSeconds !== void 0) {\n\t\tctx.diagnostics.push({\n\t\t\tcode: \"PSL_INVALID_INDEX\",\n\t\t\tmessage: \"expireAfterSeconds cannot be combined with wildcard() fields\",\n\t\t\tsourceId: ctx.sourceId,\n\t\t\tspan: ctx.span\n\t\t});\n\t\treturn;\n\t}\n\tconst wildcardProjection = buildProjection(parsed.include, parsed.exclude, resolved.hasWildcard, ctx);\n\tif (wildcardProjection === null) return void 0;\n\tconst collation = buildCollationFromSpec(parsed);\n\tif (collation === null) {\n\t\tctx.diagnostics.push({\n\t\t\tcode: \"PSL_INVALID_INDEX\",\n\t\t\tmessage: \"collationLocale is required when using collation options\",\n\t\t\tsourceId: ctx.sourceId,\n\t\t\tspan: ctx.span\n\t\t});\n\t\treturn;\n\t}\n\treturn new MongoIndex({\n\t\tkeys: resolved.keys,\n\t\t...unique && { unique: true },\n\t\t...parsed.sparse !== void 0 && { sparse: parsed.sparse },\n\t\t...parsed.expireAfterSeconds !== void 0 && { expireAfterSeconds: parsed.expireAfterSeconds },\n\t\t...parsed.filter !== void 0 && { partialFilterExpression: parsed.filter },\n\t\t...wildcardProjection !== void 0 && { wildcardProjection },\n\t\t...collation !== void 0 && { collation },\n\t\t...parsed.default_language !== void 0 && { default_language: parsed.default_language },\n\t\t...parsed.languageOverride !== void 0 && { language_override: parsed.languageOverride }\n\t});\n}\nfunction buildTextIndex(parsed, ctx) {\n\tconst parsedFields = parsed.fields.map(normalizeIndexField);\n\tif (parsedFields.length === 0) return void 0;\n\tconst resolved = resolveIndexKeys(parsedFields, \"text\", ctx);\n\tif (!resolved) return void 0;\n\tif (resolved.hasWildcard) {\n\t\tctx.diagnostics.push({\n\t\t\tcode: \"PSL_INVALID_INDEX\",\n\t\t\tmessage: \"wildcard() fields cannot be combined with type: hashed/2dsphere/2d or @@textIndex\",\n\t\t\tsourceId: ctx.sourceId,\n\t\t\tspan: ctx.span\n\t\t});\n\t\treturn;\n\t}\n\tconst collation = buildCollationFromSpec(parsed);\n\tif (collation === null) {\n\t\tctx.diagnostics.push({\n\t\t\tcode: \"PSL_INVALID_INDEX\",\n\t\t\tmessage: \"collationLocale is required when using collation options\",\n\t\t\tsourceId: ctx.sourceId,\n\t\t\tspan: ctx.span\n\t\t});\n\t\treturn;\n\t}\n\treturn new MongoIndex({\n\t\tkeys: resolved.keys,\n\t\t...parsed.filter !== void 0 && { partialFilterExpression: parsed.filter },\n\t\t...collation !== void 0 && { collation },\n\t\t...ifDefined(\"weights\", parsed.weights),\n\t\t...parsed.language !== void 0 && { default_language: parsed.language },\n\t\t...parsed.languageOverride !== void 0 && { language_override: parsed.languageOverride }\n\t});\n}\nfunction collectIndexes(pslModel, specContext, fieldMappings, modelNames, sourceId, sourceFile, diagnostics, indexSpans) {\n\tconst indexes = [];\n\tlet textIndexCount = 0;\n\tconst indexableFieldNames = /* @__PURE__ */ new Set();\n\tfor (const field of Object.values(pslModel.fields)) if (!modelNames.has(field.typeName)) indexableFieldNames.add(field.name);\n\tfor (const field of Object.values(pslModel.fields)) {\n\t\tif (modelNames.has(field.typeName)) continue;\n\t\tconst uniqueNode = findFieldAttributeNode(field, \"unique\");\n\t\tif (!uniqueNode) continue;\n\t\tif (interpretFieldAttribute({\n\t\t\tnode: uniqueNode,\n\t\t\tspec: mongoAttributeSpecs.field.unique({\n\t\t\t\t...specContext,\n\t\t\t\tfield\n\t\t\t}),\n\t\t\tmodel: pslModel,\n\t\t\tfield,\n\t\t\tsourceFile,\n\t\t\tsourceId,\n\t\t\tdiagnostics\n\t\t}) === void 0) continue;\n\t\tconst fieldUniqueIndex = new MongoIndex({\n\t\t\tkeys: [{\n\t\t\t\tfield: fieldMappings.pslNameToMapped.get(field.name) ?? field.name,\n\t\t\t\tdirection: 1\n\t\t\t}],\n\t\t\tunique: true\n\t\t});\n\t\tindexes.push(fieldUniqueIndex);\n\t\tindexSpans.set(fieldUniqueIndex, nodePslSpan(uniqueNode.syntax, sourceFile));\n\t}\n\tconst attributeNodes = Array.from(pslModel.node.attributes());\n\tfor (const [attrIndex, attr] of pslModel.attributes.entries()) {\n\t\tif (attr.name !== \"index\" && attr.name !== \"unique\" && attr.name !== \"textIndex\") continue;\n\t\tconst node = attributeNodes[attrIndex];\n\t\tif (!node) continue;\n\t\tconst ctx = {\n\t\t\tpslModel,\n\t\t\tfieldMappings,\n\t\t\tindexableFieldNames,\n\t\t\tsourceId,\n\t\t\tspan: attr.span,\n\t\t\tdiagnostics\n\t\t};\n\t\tlet index;\n\t\tif (attr.name === \"textIndex\") {\n\t\t\tconst parsed = interpretModelAttribute({\n\t\t\t\tnode,\n\t\t\t\tspec: mongoAttributeSpecs.model.textIndex(specContext),\n\t\t\t\tmodel: pslModel,\n\t\t\t\tsourceFile,\n\t\t\t\tsourceId,\n\t\t\t\tdiagnostics\n\t\t\t});\n\t\t\tif (!parsed || parsed.fields.length === 0) continue;\n\t\t\ttextIndexCount++;\n\t\t\tif (textIndexCount > 1) {\n\t\t\t\tdiagnostics.push({\n\t\t\t\t\tcode: \"PSL_INVALID_INDEX\",\n\t\t\t\t\tmessage: `Only one @@textIndex is allowed per collection (model \"${pslModel.name}\")`,\n\t\t\t\t\tsourceId,\n\t\t\t\t\tspan: attr.span\n\t\t\t\t});\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tindex = buildTextIndex(parsed, ctx);\n\t\t} else {\n\t\t\tconst unique = attr.name === \"unique\";\n\t\t\tconst parsed = interpretModelAttribute({\n\t\t\t\tnode,\n\t\t\t\tspec: unique ? mongoAttributeSpecs.model.unique(specContext) : mongoAttributeSpecs.model.index(specContext),\n\t\t\t\tmodel: pslModel,\n\t\t\t\tsourceFile,\n\t\t\t\tsourceId,\n\t\t\t\tdiagnostics\n\t\t\t});\n\t\t\tif (!parsed) continue;\n\t\t\tindex = buildNormalIndex(parsed, unique, ctx);\n\t\t}\n\t\tif (!index) continue;\n\t\tindexes.push(index);\n\t\tindexSpans.set(index, attr.span);\n\t}\n\treturn indexes;\n}\nfunction isRelationField(field, modelNames) {\n\treturn modelNames.has(field.typeName);\n}\nconst MONGO_OBJECT_ID_PSL_TYPE = \"ObjectId\";\nfunction resolveFieldCodecId(field, scalarTypeCodecIds) {\n\treturn scalarTypeCodecIds.get(field.typeName);\n}\nfunction resolveNonRelationField(field, ownerName, compositeTypeNames, scalarTypeCodecIds, codecIdByEnumName, sourceId, diagnostics) {\n\tif (compositeTypeNames.has(field.typeName)) {\n\t\tconst result = {\n\t\t\ttype: {\n\t\t\t\tkind: \"valueObject\",\n\t\t\t\tname: field.typeName\n\t\t\t},\n\t\t\tnullable: field.optional\n\t\t};\n\t\treturn field.list ? {\n\t\t\t...result,\n\t\t\tmany: true\n\t\t} : result;\n\t}\n\tconst enumCodecId = codecIdByEnumName.get(field.typeName);\n\tif (enumCodecId !== void 0) {\n\t\tconst valueSet = {\n\t\t\tplane: \"domain\",\n\t\t\tentityKind: \"enum\",\n\t\t\tnamespaceId: UNBOUND_NAMESPACE_ID,\n\t\t\tentityName: field.typeName\n\t\t};\n\t\tconst result = {\n\t\t\ttype: {\n\t\t\t\tkind: \"scalar\",\n\t\t\t\tcodecId: enumCodecId\n\t\t\t},\n\t\t\tnullable: field.optional,\n\t\t\tvalueSet\n\t\t};\n\t\treturn field.list ? {\n\t\t\t...result,\n\t\t\tmany: true\n\t\t} : result;\n\t}\n\tif (field.malformedType) return;\n\tconst codecId = resolveFieldCodecId(field, scalarTypeCodecIds);\n\tif (!codecId) {\n\t\tdiagnostics.push({\n\t\t\tcode: \"PSL_UNSUPPORTED_FIELD_TYPE\",\n\t\t\tmessage: `Field \"${ownerName}.${field.name}\" type \"${field.typeName}\" is not supported in Mongo PSL interpreter`,\n\t\t\tsourceId,\n\t\t\tspan: field.span\n\t\t});\n\t\treturn;\n\t}\n\tconst result = {\n\t\ttype: {\n\t\t\tkind: \"scalar\",\n\t\t\tcodecId\n\t\t},\n\t\tnullable: field.optional\n\t};\n\treturn field.list ? {\n\t\t...result,\n\t\tmany: true\n\t} : result;\n}\nfunction processEnumDeclarations(input) {\n\tconst builtEnums = {};\n\tif (input.enumBlocks.length === 0) return builtEnums;\n\tconst enumDescriptor = input.authoringContributions?.entityTypes?.[\"enum\"] !== void 0 && isAuthoringEntityTypeDescriptor(input.authoringContributions.entityTypes[\"enum\"]) ? input.authoringContributions.entityTypes[\"enum\"] : void 0;\n\tif (!enumDescriptor) {\n\t\tfor (const decl of input.enumBlocks) input.diagnostics.push({\n\t\t\tcode: \"PSL_ENUM_MISSING_FACTORY\",\n\t\t\tmessage: `enum \"${decl.name}\" requires an \"enum\" entityType factory in the active authoring contributions`,\n\t\t\tsourceId: input.sourceId,\n\t\t\tspan: decl.span\n\t\t});\n\t\treturn builtEnums;\n\t}\n\tfor (const decl of input.enumBlocks) {\n\t\tconst handle = instantiateAuthoringEntityType(\"enum\", enumDescriptor, [decl], input.entityContext);\n\t\tif (handle === void 0 || handle === null) continue;\n\t\tbuiltEnums[decl.name] = {\n\t\t\tcodecId: handle.codecId,\n\t\t\tmembers: handle.enumMembers.map((m) => ({\n\t\t\t\tname: m.name,\n\t\t\t\tvalue: blindCast(m.value)\n\t\t\t}))\n\t\t};\n\t}\n\treturn builtEnums;\n}\nfunction interpretPslDocumentToMongoContract(input) {\n\tconst { symbolTable, sourceFile, scalarTypeCodecIds, codecLookup } = input;\n\tconst sourceId = input.sourceId;\n\tconst diagnostics = [...input.seedDiagnostics ?? []];\n\tconst topLevel = symbolTable.topLevel;\n\tvalidateNamespaceBlocksForMongoTarget({\n\t\tnamespaces: Object.values(topLevel.namespaces),\n\t\tsourceId,\n\t\tsourceFile,\n\t\tdiagnostics\n\t});\n\tconst allModels = Object.values(topLevel.models);\n\tconst allCompositeTypes = Object.values(topLevel.compositeTypes);\n\tconst modelNames = new Set(allModels.map((m) => m.name));\n\tconst compositeTypeNames = new Set(allCompositeTypes.map((ct) => ct.name));\n\treportUnknownAttributes({\n\t\tmodels: allModels,\n\t\tcompositeTypes: allCompositeTypes,\n\t\tsourceId,\n\t\tdiagnostics\n\t});\n\tconst specContextFor = (model) => ({\n\t\tsymbols: symbolTable,\n\t\tmodel,\n\t\tcontrolMutationDefaults: input.controlMutationDefaults\n\t});\n\tconst modelMetadataByName = /* @__PURE__ */ new Map();\n\tfor (const model of allModels) {\n\t\tconst specContext = specContextFor(model);\n\t\tmodelMetadataByName.set(model.name, {\n\t\t\tcollectionName: resolveCollectionName({\n\t\t\t\tmodel,\n\t\t\t\tspecContext,\n\t\t\t\tsourceFile,\n\t\t\t\tsourceId,\n\t\t\t\tdiagnostics\n\t\t\t}),\n\t\t\tfieldMappings: resolveFieldMappings({\n\t\t\t\tmodel,\n\t\t\t\tspecContext,\n\t\t\t\tsourceFile,\n\t\t\t\tsourceId,\n\t\t\t\tdiagnostics\n\t\t\t})\n\t\t});\n\t}\n\tconst builtEnums = processEnumDeclarations({\n\t\tenumBlocks: Object.values(topLevel.blocks).filter((b) => b.keyword === \"enum\").map((b) => b.block),\n\t\tsourceId,\n\t\tauthoringContributions: input.authoringContributions,\n\t\tentityContext: {\n\t\t\tfamily: \"mongo\",\n\t\t\ttarget: \"mongo\",\n\t\t\t...ifDefined(\"enumInferenceCodecs\", input.enumInferenceCodecs),\n\t\t\t...ifDefined(\"codecLookup\", codecLookup),\n\t\t\tsourceId,\n\t\t\tdiagnostics: { push: (d) => {\n\t\t\t\tdiagnostics.push(blindCast(d));\n\t\t\t} }\n\t\t},\n\t\tdiagnostics\n\t});\n\tconst codecIdByEnumName = new Map(Object.entries(builtEnums).map(([name, e]) => [name, e.codecId]));\n\tconst models = {};\n\tconst collections = {};\n\tconst roots = {};\n\tconst allFkRelations = [];\n\tconst indexSpans = /* @__PURE__ */ new Map();\n\tconst modelIndexesByName = /* @__PURE__ */ new Map();\n\tconst backrelationCandidates = [];\n\tfor (const pslModel of allModels) {\n\t\tconst metadata = modelMetadataByName.get(pslModel.name);\n\t\tif (!metadata) continue;\n\t\tconst { collectionName, fieldMappings } = metadata;\n\t\tconst specContext = specContextFor(pslModel);\n\t\tconst fields = {};\n\t\tconst relations = {};\n\t\tfor (const field of Object.values(pslModel.fields)) {\n\t\t\tif (isRelationField(field, modelNames)) {\n\t\t\t\tconst relationNode = findFieldAttributeNode(field, \"relation\");\n\t\t\t\tconst relation = relationNode ? interpretFieldAttribute({\n\t\t\t\t\tnode: relationNode,\n\t\t\t\t\tspec: mongoAttributeSpecs.field.relation({\n\t\t\t\t\t\t...specContext,\n\t\t\t\t\t\tfield\n\t\t\t\t\t}),\n\t\t\t\t\tmodel: pslModel,\n\t\t\t\t\tfield,\n\t\t\t\t\tsourceFile,\n\t\t\t\t\tsourceId,\n\t\t\t\t\tdiagnostics,\n\t\t\t\t\tresolveReferencedModel: () => allModels.find((m) => m.name === field.typeName)\n\t\t\t\t}) : void 0;\n\t\t\t\tif (field.list || !(relation?.fields && relation?.references)) {\n\t\t\t\t\tbackrelationCandidates.push({\n\t\t\t\t\t\tmodelName: pslModel.name,\n\t\t\t\t\t\tfieldName: field.name,\n\t\t\t\t\t\ttargetModelName: field.typeName,\n\t\t\t\t\t\t...ifDefined(\"relationName\", relation?.name),\n\t\t\t\t\t\tcardinality: field.list ? \"1:N\" : \"1:1\",\n\t\t\t\t\t\tfield\n\t\t\t\t\t});\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (relation?.fields && relation?.references) {\n\t\t\t\t\tconst localMapped = relation.fields.map((f) => fieldMappings.pslNameToMapped.get(f) ?? f);\n\t\t\t\t\tconst targetFieldMappings = modelMetadataByName.get(field.typeName)?.fieldMappings;\n\t\t\t\t\tconst targetMapped = relation.references.map((f) => targetFieldMappings?.pslNameToMapped.get(f) ?? f);\n\t\t\t\t\trelations[field.name] = {\n\t\t\t\t\t\tto: mongoCrossRef(field.typeName),\n\t\t\t\t\t\tcardinality: \"N:1\",\n\t\t\t\t\t\ton: {\n\t\t\t\t\t\t\tlocalFields: localMapped,\n\t\t\t\t\t\t\ttargetFields: targetMapped\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\tallFkRelations.push({\n\t\t\t\t\t\tdeclaringModel: pslModel.name,\n\t\t\t\t\t\tfieldName: field.name,\n\t\t\t\t\t\ttargetModel: field.typeName,\n\t\t\t\t\t\t...ifDefined(\"relationName\", relation.name),\n\t\t\t\t\t\tlocalFields: localMapped,\n\t\t\t\t\t\ttargetFields: targetMapped\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst resolved = resolveNonRelationField(field, pslModel.name, compositeTypeNames, scalarTypeCodecIds, codecIdByEnumName, sourceId, diagnostics);\n\t\t\tif (!resolved) continue;\n\t\t\tconst mappedName = fieldMappings.pslNameToMapped.get(field.name) ?? field.name;\n\t\t\tfields[mappedName] = resolved;\n\t\t}\n\t\tconst isVariantModel = pslModel.attributes.some((attr) => attr.name === \"base\");\n\t\tconst hasIdField = Object.values(pslModel.fields).filter((field) => {\n\t\t\tconst idNode = findFieldAttributeNode(field, \"id\");\n\t\t\tif (!idNode) return false;\n\t\t\treturn interpretFieldAttribute({\n\t\t\t\tnode: idNode,\n\t\t\t\tspec: mongoAttributeSpecs.field.id({\n\t\t\t\t\t...specContext,\n\t\t\t\t\tfield\n\t\t\t\t}),\n\t\t\t\tmodel: pslModel,\n\t\t\t\tfield,\n\t\t\t\tsourceFile,\n\t\t\t\tsourceId,\n\t\t\t\tdiagnostics\n\t\t\t}) !== void 0;\n\t\t}).length > 0;\n\t\tif (!isVariantModel) if (!hasIdField) diagnostics.push({\n\t\t\tcode: \"PSL_MISSING_ID_FIELD\",\n\t\t\tmessage: `Model \"${pslModel.name}\" has no field with @id attribute. Every model must have exactly one @id field.`,\n\t\t\tsourceId\n\t\t});\n\t\telse {\n\t\t\tconst objectIdCodecId = scalarTypeCodecIds.get(MONGO_OBJECT_ID_PSL_TYPE);\n\t\t\tconst idField = fields[\"_id\"];\n\t\t\tif (!(idField !== void 0 && idField.type.kind === \"scalar\" && objectIdCodecId !== void 0 && idField.type.codecId === objectIdCodecId)) diagnostics.push({\n\t\t\t\tcode: \"PSL_MONGO_ID_REQUIRED\",\n\t\t\t\tmessage: `Model \"${pslModel.name}\" must declare an _id field of type ObjectId (e.g. \\`id ObjectId @id @map(\"_id\")\\`).`,\n\t\t\t\tsourceId\n\t\t\t});\n\t\t}\n\t\tmodels[pslModel.name] = {\n\t\t\tfields,\n\t\t\trelations,\n\t\t\tstorage: { collection: collectionName }\n\t\t};\n\t\tconst modelIndexes = collectIndexes(pslModel, specContext, fieldMappings, modelNames, sourceId, sourceFile, diagnostics, indexSpans);\n\t\tmodelIndexesByName.set(pslModel.name, modelIndexes);\n\t\tconst existingColl = collections[collectionName];\n\t\tif (existingColl && modelIndexes.length > 0) collections[collectionName] = { indexes: [...collectionIndexes(existingColl), ...modelIndexes] };\n\t\telse if (!existingColl) collections[collectionName] = modelIndexes.length > 0 ? { indexes: modelIndexes } : {};\n\t\troots[collectionName] = mongoCrossRef(pslModel.name);\n\t}\n\tconst valueObjects = {};\n\tfor (const compositeType of allCompositeTypes) {\n\t\tconst fields = {};\n\t\tfor (const field of Object.values(compositeType.fields)) {\n\t\t\tconst resolved = resolveNonRelationField(field, compositeType.name, compositeTypeNames, scalarTypeCodecIds, codecIdByEnumName, sourceId, diagnostics);\n\t\t\tif (!resolved) continue;\n\t\t\tfields[field.name] = resolved;\n\t\t}\n\t\tvalueObjects[compositeType.name] = { fields };\n\t}\n\tconst fkRelationsByPair = /* @__PURE__ */ new Map();\n\tfor (const fk of allFkRelations) {\n\t\tconst key = fkRelationPairKey(fk.declaringModel, fk.targetModel);\n\t\tconst existing = fkRelationsByPair.get(key);\n\t\tif (existing) existing.push(fk);\n\t\telse fkRelationsByPair.set(key, [fk]);\n\t}\n\tfor (const candidate of backrelationCandidates) {\n\t\tconst pairKey = fkRelationPairKey(candidate.targetModelName, candidate.modelName);\n\t\tconst pairMatches = fkRelationsByPair.get(pairKey) ?? [];\n\t\tconst matches = candidate.relationName ? pairMatches.filter((r) => r.relationName === candidate.relationName) : [...pairMatches];\n\t\tif (matches.length === 0) {\n\t\t\tdiagnostics.push({\n\t\t\t\tcode: \"PSL_ORPHANED_BACKRELATION\",\n\t\t\t\tmessage: `Backrelation list field \"${candidate.modelName}.${candidate.fieldName}\" has no matching FK-side relation on model \"${candidate.targetModelName}\". Add @relation(fields: [...], references: [...]) on the FK-side relation or use an explicit join model for many-to-many.`,\n\t\t\t\tsourceId,\n\t\t\t\tspan: candidate.field.span\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tif (matches.length > 1) {\n\t\t\tdiagnostics.push({\n\t\t\t\tcode: \"PSL_AMBIGUOUS_BACKRELATION\",\n\t\t\t\tmessage: `Backrelation list field \"${candidate.modelName}.${candidate.fieldName}\" matches multiple FK-side relations on model \"${candidate.targetModelName}\". Add @relation(\"...\") to both sides to disambiguate.`,\n\t\t\t\tsourceId,\n\t\t\t\tspan: candidate.field.span\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tconst fk = matches[0];\n\t\tif (!fk) continue;\n\t\tconst modelEntry = models[candidate.modelName];\n\t\tif (!modelEntry) continue;\n\t\tmodelEntry.relations[candidate.fieldName] = {\n\t\t\tto: mongoCrossRef(candidate.targetModelName),\n\t\t\tcardinality: candidate.cardinality,\n\t\t\ton: {\n\t\t\t\tlocalFields: fk.targetFields,\n\t\t\t\ttargetFields: fk.localFields\n\t\t\t}\n\t\t};\n\t}\n\tconst { discriminatorDeclarations, baseDeclarations } = collectPolymorphismDeclarations(allModels, specContextFor, modelMetadataByName, sourceFile, sourceId, diagnostics);\n\tconst polyResult = resolvePolymorphism({\n\t\tmodels,\n\t\troots,\n\t\tcollections,\n\t\tallModels,\n\t\tdiscriminatorDeclarations,\n\t\tbaseDeclarations,\n\t\tmodelNames,\n\t\tindexSpans,\n\t\tmodelIndexesByName,\n\t\tmodelMetadataByName,\n\t\tsourceId\n\t});\n\tif (diagnostics.length > 0 || polyResult.diagnostics.length > 0) return notOk({\n\t\tsummary: \"PSL to Mongo contract interpretation failed\",\n\t\tdiagnostics: [...diagnostics, ...polyResult.diagnostics]\n\t});\n\tconst resolvedModels = polyResult.models;\n\tconst resolvedCollections = polyResult.collections;\n\tconst storageValueSets = {};\n\tconst enumEntries = Object.entries(builtEnums);\n\tif (enumEntries.length > 0) {\n\t\tassertDefined(codecLookup, \"Mongo PSL interpretation requires a codec lookup to encode enum values\");\n\t\tfor (const [enumName, builtEnum] of enumEntries) storageValueSets[enumName] = {\n\t\t\tkind: \"valueSet\",\n\t\t\tvalues: builtEnum.members.map((m) => encodeEnumValue(m.value, builtEnum.codecId, codecLookup))\n\t\t};\n\t}\n\tfor (const [, modelEntry] of Object.entries(resolvedModels)) {\n\t\tif (modelEntry.base) continue;\n\t\tconst coll = resolvedCollections[modelEntry.storage.collection];\n\t\tif (!coll) continue;\n\t\tif (modelEntry.discriminator && modelEntry.variants) {\n\t\t\tconst variantEntries = Object.entries(modelEntry.variants).map(([variantName, { value }]) => ({\n\t\t\t\tdiscriminatorValue: value,\n\t\t\t\tfields: resolvedModels[variantName]?.fields ?? {}\n\t\t\t}));\n\t\t\tcoll[\"validator\"] = derivePolymorphicJsonSchema(modelEntry.fields, modelEntry.discriminator.field, variantEntries, valueObjects, codecLookup, storageValueSets);\n\t\t} else coll[\"validator\"] = deriveJsonSchema(modelEntry.fields, valueObjects, codecLookup, storageValueSets);\n\t}\n\tconst target = \"mongo\";\n\tconst targetFamily = \"mongo\";\n\tconst collectionInputs = {};\n\tfor (const [name, coll] of Object.entries(resolvedCollections)) {\n\t\tconst raw = {};\n\t\tif (coll[\"indexes\"] != null) raw[\"indexes\"] = coll[\"indexes\"];\n\t\tif (coll[\"validator\"] != null) raw[\"validator\"] = coll[\"validator\"];\n\t\tif (coll[\"options\"] != null) raw[\"options\"] = coll[\"options\"];\n\t\tcollectionInputs[name] = blindCast(raw);\n\t}\n\tconst unboundNamespace = buildMongoNamespace({\n\t\tid: UNBOUND_NAMESPACE_ID,\n\t\tentries: {\n\t\t\tcollection: collectionInputs,\n\t\t\t...Object.keys(storageValueSets).length > 0 ? { valueSet: storageValueSets } : {}\n\t\t}\n\t});\n\tconst storage = blindCast(new MongoStorage({\n\t\tstorageHash: computeStorageHash({\n\t\t\ttarget,\n\t\t\ttargetFamily,\n\t\t\tstorage: { namespaces: { [UNBOUND_NAMESPACE_ID]: {\n\t\t\t\tid: UNBOUND_NAMESPACE_ID,\n\t\t\t\tentries: {\n\t\t\t\t\tcollection: unboundNamespace.entries.collection,\n\t\t\t\t\t...unboundNamespace.entries.valueSet !== void 0 ? { valueSet: unboundNamespace.entries.valueSet } : {}\n\t\t\t\t}\n\t\t\t} } },\n\t\t\t...mongoContractCanonicalizationHooks\n\t\t}),\n\t\tnamespaces: { [UNBOUND_NAMESPACE_ID]: unboundNamespace }\n\t}));\n\tconst capabilities = {};\n\tconst hasEnums = Object.keys(builtEnums).length > 0;\n\treturn ok({\n\t\ttargetFamily,\n\t\ttarget,\n\t\troots: polyResult.roots,\n\t\tdomain: { namespaces: { [UNBOUND_NAMESPACE_ID]: {\n\t\t\tmodels: polyResult.models,\n\t\t\t...Object.keys(valueObjects).length > 0 ? { valueObjects } : {},\n\t\t\t...hasEnums ? { enum: builtEnums } : {}\n\t\t} } },\n\t\tstorage,\n\t\textensions: {},\n\t\tcapabilities,\n\t\tprofileHash: computeProfileHash({\n\t\t\ttarget,\n\t\t\ttargetFamily,\n\t\t\tcapabilities\n\t\t}),\n\t\tmeta: {}\n\t});\n}\n//#endregion\nexport { derivePolymorphicJsonSchema as i, mongoAttributeSpecs as n, deriveJsonSchema as r, interpretPslDocumentToMongoContract as t };\n\n//# sourceMappingURL=interpreter-69swE_3Y.mjs.map"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pack-qL_bS52W.d.mts","names":[],"sources":["../../../../2-mongo-family/9-family/dist/pack.d.mts"],"mappings":";;;;;cAOc,wBAAwB;cACxB;WACH;aACE;aACA;aACA;aACA;eACE;;aAEF;aACA;;;;;cAKC;WACH;WACA;WACA;WACA;WACA;aACE,gEAAgE;aAChE;eACE;iBACE;iBACA;iBACA;iBACA;mBACE;;iBAEF;iBACA;;;aAGJ,gBAAgB"}
|