@prisma-next/mongo-contract 0.5.0-dev.66 → 0.5.0-dev.67

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/index.d.mts CHANGED
@@ -163,7 +163,7 @@ type ExtractValueObjects<TContract> = TContract extends {
163
163
  valueObjects: infer VO extends Record<string, ContractValueObject>;
164
164
  } ? VO : Record<never, never>;
165
165
  type NormalizeContractFields<TFields> = { [K in keyof TFields]: TFields[K] extends ContractField ? TFields[K] : never };
166
- type ExtractValueObjectFields<TValueObjects extends Record<string, ContractValueObject>, VOName$1 extends keyof TValueObjects> = NormalizeContractFields<TValueObjects[VOName$1]['fields']>;
166
+ type ExtractValueObjectFields<TValueObjects extends Record<string, ContractValueObject>, VOName extends keyof TValueObjects> = NormalizeContractFields<TValueObjects[VOName]['fields']>;
167
167
  type InferFieldBaseType<TFieldType, TValueObjects extends Record<string, ContractValueObject>, TCodecTypes extends Record<string, {
168
168
  output: unknown;
169
169
  }>> = TFieldType extends {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/contract-types.ts","../src/polymorphic-index-scope.ts","../src/validate-mongo-contract.ts","../src/validate-storage.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/contract-types.ts","../src/polymorphic-index-scope.ts","../src/validate-mongo-contract.ts","../src/validate-storage.ts"],"mappings":"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"}
package/dist/index.mjs CHANGED
@@ -1,6 +1,5 @@
1
1
  import { validateContractDomain } from "@prisma-next/contract/validate-domain";
2
2
  import { type } from "arktype";
3
-
4
3
  //#region src/polymorphic-index-scope.ts
5
4
  function isScalarDiscriminatorValue(value) {
6
5
  const t = typeof value;
@@ -42,7 +41,6 @@ function applyPolymorphicScopeToMongoIndex(index, scope) {
42
41
  }
43
42
  };
44
43
  }
45
-
46
44
  //#endregion
47
45
  //#region src/contract-schema.ts
48
46
  const ScalarFieldTypeSchema = type({
@@ -61,10 +59,9 @@ const UnionFieldTypeSchema = type({
61
59
  kind: "'union'",
62
60
  members: ScalarFieldTypeSchema.or(ValueObjectFieldTypeSchema).array()
63
61
  });
64
- const FieldTypeSchema = ScalarFieldTypeSchema.or(ValueObjectFieldTypeSchema).or(UnionFieldTypeSchema);
65
62
  const FieldSchema = type({
66
63
  "+": "reject",
67
- type: FieldTypeSchema,
64
+ type: ScalarFieldTypeSchema.or(ValueObjectFieldTypeSchema).or(UnionFieldTypeSchema),
68
65
  "nullable?": "boolean",
69
66
  "many?": "boolean",
70
67
  "dict?": "boolean"
@@ -72,16 +69,15 @@ const FieldSchema = type({
72
69
  ...field,
73
70
  nullable: field.nullable ?? false
74
71
  }));
75
- const RelationOnSchema = type({
76
- "+": "reject",
77
- localFields: "string[]",
78
- targetFields: "string[]"
79
- });
80
72
  const RelationSchema = type({
81
73
  "+": "reject",
82
74
  to: "string",
83
75
  cardinality: "'1:1' | '1:N' | 'N:1'",
84
- "on?": RelationOnSchema
76
+ "on?": type({
77
+ "+": "reject",
78
+ localFields: "string[]",
79
+ targetFields: "string[]"
80
+ })
85
81
  });
86
82
  const StorageRelationEntrySchema = type({
87
83
  "+": "reject",
@@ -139,21 +135,20 @@ const TimeSeriesCollectionOptionsSchema = type({
139
135
  "bucketMaxSpanSeconds?": "number",
140
136
  "bucketRoundingSeconds?": "number"
141
137
  });
142
- const ClusteredCollectionKeySchema = type({
143
- "+": "reject",
144
- "[string]": "1"
145
- }).narrow((key, ctx) => Object.keys(key).length > 0 ? true : ctx.mustBe("a clustered index key map with at least one entry"));
146
138
  const ClusteredCollectionOptionsSchema = type({
147
139
  "+": "reject",
148
140
  "name?": "string",
149
- key: ClusteredCollectionKeySchema,
141
+ key: type({
142
+ "+": "reject",
143
+ "[string]": "1"
144
+ }).narrow((key, ctx) => Object.keys(key).length > 0 ? true : ctx.mustBe("a clustered index key map with at least one entry")),
150
145
  unique: "boolean"
151
146
  });
152
147
  const ChangeStreamPreAndPostImagesSchema = type({
153
148
  "+": "reject",
154
149
  enabled: "boolean"
155
150
  });
156
- const CollectionOptionsSchema = type({
151
+ type({
157
152
  "+": "reject",
158
153
  "capped?": "boolean",
159
154
  "size?": "number",
@@ -189,43 +184,40 @@ const ModelDefinitionSchema = type({
189
184
  "base?": "string",
190
185
  "owner?": "string"
191
186
  });
192
- const WildcardProjectionSchema = type({
193
- "+": "reject",
194
- "[string]": "0 | 1"
195
- });
196
- const IndexOptionsSchema = type({
197
- "+": "reject",
198
- "unique?": "boolean",
199
- "name?": "string",
200
- "partialFilterExpression?": MongoJsonObjectSchema,
201
- "sparse?": "boolean",
202
- "expireAfterSeconds?": "number",
203
- "weights?": NumberRecordSchema,
204
- "default_language?": "string",
205
- "language_override?": "string",
206
- "textIndexVersion?": "number",
207
- "2dsphereIndexVersion?": "number",
208
- "bits?": "number",
209
- "min?": "number",
210
- "max?": "number",
211
- "bucketSize?": "number",
212
- "hidden?": "boolean",
213
- "collation?": CollationSchema,
214
- "wildcardProjection?": WildcardProjectionSchema
215
- });
216
- const IndexSchema = type({
187
+ type({
217
188
  "+": "reject",
218
189
  fields: IndexFieldsSchema,
219
- "options?": IndexOptionsSchema
220
- });
221
- const MongoIndexKeySchema = type({
222
- "+": "reject",
223
- field: "string",
224
- direction: "1 | -1 | \"text\" | \"2dsphere\" | \"2d\" | \"hashed\""
190
+ "options?": type({
191
+ "+": "reject",
192
+ "unique?": "boolean",
193
+ "name?": "string",
194
+ "partialFilterExpression?": MongoJsonObjectSchema,
195
+ "sparse?": "boolean",
196
+ "expireAfterSeconds?": "number",
197
+ "weights?": NumberRecordSchema,
198
+ "default_language?": "string",
199
+ "language_override?": "string",
200
+ "textIndexVersion?": "number",
201
+ "2dsphereIndexVersion?": "number",
202
+ "bits?": "number",
203
+ "min?": "number",
204
+ "max?": "number",
205
+ "bucketSize?": "number",
206
+ "hidden?": "boolean",
207
+ "collation?": CollationSchema,
208
+ "wildcardProjection?": type({
209
+ "+": "reject",
210
+ "[string]": "0 | 1"
211
+ })
212
+ })
225
213
  });
226
214
  const MongoStorageIndexSchema = type({
227
215
  "+": "reject",
228
- keys: MongoIndexKeySchema.array().atLeastLength(1),
216
+ keys: type({
217
+ "+": "reject",
218
+ field: "string",
219
+ direction: "1 | -1 | \"text\" | \"2dsphere\" | \"2d\" | \"hashed\""
220
+ }).array().atLeastLength(1),
229
221
  "unique?": "boolean",
230
222
  "sparse?": "boolean",
231
223
  "expireAfterSeconds?": "number",
@@ -242,34 +234,25 @@ const MongoStorageValidatorSchema = type({
242
234
  validationLevel: "'strict' | 'moderate'",
243
235
  validationAction: "'error' | 'warn'"
244
236
  });
245
- const CappedOptionsSchema = type({
246
- "+": "reject",
247
- size: "number",
248
- "max?": "number"
249
- });
250
- const TimeseriesOptionsSchema = type({
251
- "+": "reject",
252
- timeField: "string",
253
- "metaField?": "string",
254
- "granularity?": "'seconds' | 'minutes' | 'hours'"
255
- });
256
- const ClusteredIndexSchema = type({
257
- "+": "reject",
258
- "name?": "string"
259
- });
260
237
  const MongoCollectionOptionsSchema = type({
261
238
  "+": "reject",
262
- "capped?": CappedOptionsSchema,
263
- "timeseries?": TimeseriesOptionsSchema,
239
+ "capped?": type({
240
+ "+": "reject",
241
+ size: "number",
242
+ "max?": "number"
243
+ }),
244
+ "timeseries?": type({
245
+ "+": "reject",
246
+ timeField: "string",
247
+ "metaField?": "string",
248
+ "granularity?": "'seconds' | 'minutes' | 'hours'"
249
+ }),
264
250
  "collation?": "Record<string, unknown>",
265
251
  "changeStreamPreAndPostImages?": ChangeStreamPreAndPostImagesSchema,
266
- "clusteredIndex?": ClusteredIndexSchema
267
- });
268
- const StorageCollectionSchema = type({
269
- "+": "reject",
270
- "indexes?": MongoStorageIndexSchema.array(),
271
- "validator?": MongoStorageValidatorSchema,
272
- "options?": MongoCollectionOptionsSchema
252
+ "clusteredIndex?": type({
253
+ "+": "reject",
254
+ "name?": "string"
255
+ })
273
256
  });
274
257
  const MongoContractSchema = type({
275
258
  "+": "reject",
@@ -286,7 +269,12 @@ const MongoContractSchema = type({
286
269
  "_generated?": "Record<string, unknown>",
287
270
  storage: type({
288
271
  "+": "reject",
289
- collections: type({ "[string]": StorageCollectionSchema }),
272
+ collections: type({ "[string]": type({
273
+ "+": "reject",
274
+ "indexes?": MongoStorageIndexSchema.array(),
275
+ "validator?": MongoStorageValidatorSchema,
276
+ "options?": MongoCollectionOptionsSchema
277
+ }) }),
290
278
  "storageHash?": "string"
291
279
  }),
292
280
  models: type({ "[string]": ModelDefinitionSchema }),
@@ -295,7 +283,6 @@ const MongoContractSchema = type({
295
283
  fields: type({ "[string]": FieldSchema })
296
284
  }) })
297
285
  });
298
-
299
286
  //#endregion
300
287
  //#region src/validate-storage.ts
301
288
  function validateMongoStorage(contract) {
@@ -325,7 +312,6 @@ function validateMongoStorage(contract) {
325
312
  }
326
313
  if (errors.length > 0) throw new Error(`Contract storage validation failed:\n- ${errors.join("\n- ")}`);
327
314
  }
328
-
329
315
  //#endregion
330
316
  //#region src/validate-mongo-contract.ts
331
317
  function validateMongoContract(value) {
@@ -351,7 +337,7 @@ function buildIndices(contract) {
351
337
  modelToVariants
352
338
  };
353
339
  }
354
-
355
340
  //#endregion
356
341
  export { applyPolymorphicScopeToMongoIndex, validateMongoContract, validateMongoStorage };
342
+
357
343
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["merged: Record<string, unknown>","errors: string[]","arktypeType","variantToBase: Record<string, string>","modelToVariants: Record<string, string[]>"],"sources":["../src/polymorphic-index-scope.ts","../src/contract-schema.ts","../src/validate-storage.ts","../src/validate-mongo-contract.ts"],"sourcesContent":["import type { MongoStorageIndex } from './contract-types';\n\nexport type PolymorphicIndexScope = {\n readonly discriminatorField: string;\n readonly discriminatorValue: string | number | boolean;\n};\n\nexport type ApplyScopeResult =\n | { readonly kind: 'ok'; readonly index: MongoStorageIndex }\n | { readonly kind: 'conflict'; readonly reason: string };\n\nfunction isScalarDiscriminatorValue(value: unknown): value is string | number | boolean {\n const t = typeof value;\n return t === 'string' || t === 'number' || t === 'boolean';\n}\n\nfunction formatValue(value: unknown): string {\n if (typeof value === 'string') return JSON.stringify(value);\n if (value === null) return 'null';\n if (Array.isArray(value)) return JSON.stringify(value);\n if (typeof value === 'object') return JSON.stringify(value);\n return String(value);\n}\n\nexport function applyPolymorphicScopeToMongoIndex(\n index: MongoStorageIndex,\n scope: PolymorphicIndexScope,\n): ApplyScopeResult {\n if (!isScalarDiscriminatorValue(scope.discriminatorValue)) {\n return {\n kind: 'conflict',\n reason: `Variant-scoped indexes require a scalar (string, number, or boolean) discriminator value for field \"${scope.discriminatorField}\", but received ${formatValue(scope.discriminatorValue)}.`,\n };\n }\n\n const existing = index.partialFilterExpression;\n if (existing && Object.hasOwn(existing, scope.discriminatorField)) {\n const existingValue = existing[scope.discriminatorField];\n if (existingValue === scope.discriminatorValue) {\n return { kind: 'ok', index };\n }\n return {\n kind: 'conflict',\n reason: `Index partialFilterExpression sets \"${scope.discriminatorField}\" to ${formatValue(existingValue)}, which conflicts with the variant's discriminator value ${formatValue(scope.discriminatorValue)}.`,\n };\n }\n\n const merged: Record<string, unknown> = {\n ...(existing ?? {}),\n [scope.discriminatorField]: scope.discriminatorValue,\n };\n\n return {\n kind: 'ok',\n index: { ...index, partialFilterExpression: merged },\n };\n}\n","import { type } from 'arktype';\nimport type { MongoJsonObject, MongoJsonPrimitive, MongoJsonValue } from './contract-types';\n\nconst ScalarFieldTypeSchema = type({\n '+': 'reject',\n kind: \"'scalar'\",\n codecId: 'string',\n 'typeParams?': 'Record<string, unknown>',\n});\n\nconst ValueObjectFieldTypeSchema = type({\n '+': 'reject',\n kind: \"'valueObject'\",\n name: 'string',\n});\n\nconst UnionFieldTypeSchema = type({\n '+': 'reject',\n kind: \"'union'\",\n members: ScalarFieldTypeSchema.or(ValueObjectFieldTypeSchema).array(),\n});\n\nconst FieldTypeSchema = ScalarFieldTypeSchema.or(ValueObjectFieldTypeSchema).or(\n UnionFieldTypeSchema,\n);\n\nconst RawFieldSchema = type({\n '+': 'reject',\n type: FieldTypeSchema,\n 'nullable?': 'boolean',\n 'many?': 'boolean',\n 'dict?': 'boolean',\n});\n\nconst FieldSchema = RawFieldSchema.pipe((field) => ({\n ...field,\n nullable: field.nullable ?? false,\n}));\n\nconst RelationOnSchema = type({\n '+': 'reject',\n localFields: 'string[]',\n targetFields: 'string[]',\n});\n\nconst RelationSchema = type({\n '+': 'reject',\n to: 'string',\n cardinality: \"'1:1' | '1:N' | 'N:1'\",\n 'on?': RelationOnSchema,\n});\n\nconst StorageRelationEntrySchema = type({\n '+': 'reject',\n field: 'string',\n});\n\nconst MongoJsonPrimitiveSchema = type\n .declare<MongoJsonPrimitive>()\n .type('string | number | boolean | null');\n\nfunction isMongoJsonRecord(value: unknown): value is Record<string, unknown> {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) {\n return false;\n }\n const prototype = Object.getPrototypeOf(value);\n return prototype === Object.prototype || prototype === null;\n}\n\nfunction withUnseenReference(value: object, seen: WeakSet<object>, visit: () => boolean): boolean {\n if (seen.has(value)) {\n return false;\n }\n\n seen.add(value);\n const result = visit();\n seen.delete(value);\n return result;\n}\n\nfunction isMongoJsonObject(value: unknown, seen: WeakSet<object>): value is MongoJsonObject {\n return (\n isMongoJsonRecord(value) &&\n withUnseenReference(value, seen, () =>\n Object.values(value).every((entry) => isMongoJsonValue(entry, seen)),\n )\n );\n}\n\nfunction isMongoJsonValue(value: unknown, seen = new WeakSet<object>()): value is MongoJsonValue {\n if (MongoJsonPrimitiveSchema.allows(value)) {\n return true;\n }\n if (Array.isArray(value)) {\n return withUnseenReference(value, seen, () =>\n value.every((entry) => isMongoJsonValue(entry, seen)),\n );\n }\n return isMongoJsonObject(value, seen);\n}\n\nconst MongoJsonValueSchema = type('unknown').narrow((value, ctx) =>\n isMongoJsonValue(value) ? true : ctx.mustBe('a JSON-serializable MongoJsonValue'),\n);\n\nconst MongoJsonObjectSchema = type({ '[string]': 'unknown' }).narrow((value, ctx) =>\n isMongoJsonRecord(value) &&\n Object.values(value).every((entry) => MongoJsonValueSchema.allows(entry))\n ? true\n : ctx.mustBe('a JSON object with MongoJsonValue entries'),\n);\n\nconst NumberRecordSchema = type({ '[string]': 'number' });\n\nconst IndexFieldsSchema = type({\n '+': 'reject',\n '[string]': '1 | -1 | \"text\" | \"2dsphere\" | \"2d\" | \"hashed\"',\n}).narrow((fields, ctx) =>\n Object.keys(fields).length > 0 ? true : ctx.mustBe('an index field map with at least one entry'),\n);\n\nconst CollationSchema = type({\n '+': 'reject',\n locale: 'string',\n 'caseLevel?': 'boolean',\n 'caseFirst?': '\"off\" | \"upper\" | \"lower\"',\n 'strength?': '1 | 2 | 3 | 4 | 5',\n 'numericOrdering?': 'boolean',\n 'alternate?': '\"non-ignorable\" | \"shifted\"',\n 'maxVariable?': '\"punct\" | \"space\"',\n 'backwards?': 'boolean',\n 'normalization?': 'boolean',\n});\n\nconst IndexOptionDefaultsSchema = type({\n '+': 'reject',\n 'storageEngine?': MongoJsonObjectSchema,\n});\n\nconst TimeSeriesCollectionOptionsSchema = type({\n '+': 'reject',\n timeField: 'string',\n 'metaField?': 'string',\n 'granularity?': '\"seconds\" | \"minutes\" | \"hours\"',\n 'bucketMaxSpanSeconds?': 'number',\n 'bucketRoundingSeconds?': 'number',\n});\n\nconst ClusteredCollectionKeySchema = type({\n '+': 'reject',\n '[string]': '1',\n}).narrow((key, ctx) =>\n Object.keys(key).length > 0\n ? true\n : ctx.mustBe('a clustered index key map with at least one entry'),\n);\n\nconst ClusteredCollectionOptionsSchema = type({\n '+': 'reject',\n 'name?': 'string',\n key: ClusteredCollectionKeySchema,\n unique: 'boolean',\n});\n\nconst ChangeStreamPreAndPostImagesSchema = type({\n '+': 'reject',\n enabled: 'boolean',\n});\n\nconst CollectionOptionsSchema = type({\n '+': 'reject',\n 'capped?': 'boolean',\n 'size?': 'number',\n 'max?': 'number',\n 'storageEngine?': MongoJsonObjectSchema,\n 'indexOptionDefaults?': IndexOptionDefaultsSchema,\n 'collation?': CollationSchema,\n 'timeseries?': TimeSeriesCollectionOptionsSchema,\n 'clusteredIndex?': ClusteredCollectionOptionsSchema,\n 'expireAfterSeconds?': 'number',\n 'changeStreamPreAndPostImages?': ChangeStreamPreAndPostImagesSchema,\n});\n\nconst ModelStorageSchema = type({\n '+': 'reject',\n 'collection?': 'string',\n 'relations?': type({ '[string]': StorageRelationEntrySchema }),\n});\n\nconst DiscriminatorSchema = type({\n '+': 'reject',\n field: 'string',\n});\n\nconst VariantEntrySchema = type({\n '+': 'reject',\n value: 'string',\n});\n\nconst ModelDefinitionSchema = type({\n '+': 'reject',\n fields: type({ '[string]': FieldSchema }),\n storage: ModelStorageSchema,\n 'relations?': type({ '[string]': RelationSchema }),\n 'discriminator?': DiscriminatorSchema,\n 'variants?': type({ '[string]': VariantEntrySchema }),\n 'base?': 'string',\n 'owner?': 'string',\n});\n\nconst WildcardProjectionSchema = type({\n '+': 'reject',\n '[string]': '0 | 1',\n});\n\nconst IndexOptionsSchema = type({\n '+': 'reject',\n 'unique?': 'boolean',\n 'name?': 'string',\n 'partialFilterExpression?': MongoJsonObjectSchema,\n 'sparse?': 'boolean',\n 'expireAfterSeconds?': 'number',\n 'weights?': NumberRecordSchema,\n 'default_language?': 'string',\n 'language_override?': 'string',\n 'textIndexVersion?': 'number',\n '2dsphereIndexVersion?': 'number',\n 'bits?': 'number',\n 'min?': 'number',\n 'max?': 'number',\n 'bucketSize?': 'number',\n 'hidden?': 'boolean',\n 'collation?': CollationSchema,\n 'wildcardProjection?': WildcardProjectionSchema,\n});\n\nconst IndexSchema = type({\n '+': 'reject',\n fields: IndexFieldsSchema,\n 'options?': IndexOptionsSchema,\n});\n\nconst MongoIndexKeySchema = type({\n '+': 'reject',\n field: 'string',\n direction: '1 | -1 | \"text\" | \"2dsphere\" | \"2d\" | \"hashed\"',\n});\n\nconst MongoStorageIndexSchema = type({\n '+': 'reject',\n keys: MongoIndexKeySchema.array().atLeastLength(1),\n 'unique?': 'boolean',\n 'sparse?': 'boolean',\n 'expireAfterSeconds?': 'number',\n 'partialFilterExpression?': 'Record<string, unknown>',\n 'wildcardProjection?': 'Record<string, 0 | 1>',\n 'collation?': 'Record<string, unknown>',\n 'weights?': 'Record<string, number>',\n 'default_language?': 'string',\n 'language_override?': 'string',\n});\n\nconst MongoStorageValidatorSchema = type({\n '+': 'reject',\n jsonSchema: 'Record<string, unknown>',\n validationLevel: \"'strict' | 'moderate'\",\n validationAction: \"'error' | 'warn'\",\n});\n\nconst CappedOptionsSchema = type({\n '+': 'reject',\n size: 'number',\n 'max?': 'number',\n});\n\nconst TimeseriesOptionsSchema = type({\n '+': 'reject',\n timeField: 'string',\n 'metaField?': 'string',\n 'granularity?': \"'seconds' | 'minutes' | 'hours'\",\n});\n\nconst ClusteredIndexSchema = type({\n '+': 'reject',\n 'name?': 'string',\n});\n\nconst MongoCollectionOptionsSchema = type({\n '+': 'reject',\n 'capped?': CappedOptionsSchema,\n 'timeseries?': TimeseriesOptionsSchema,\n 'collation?': 'Record<string, unknown>',\n 'changeStreamPreAndPostImages?': ChangeStreamPreAndPostImagesSchema,\n 'clusteredIndex?': ClusteredIndexSchema,\n});\n\nconst StorageCollectionSchema = type({\n '+': 'reject',\n 'indexes?': MongoStorageIndexSchema.array(),\n 'validator?': MongoStorageValidatorSchema,\n 'options?': MongoCollectionOptionsSchema,\n});\n\nexport const MongoContractSchema = type({\n '+': 'reject',\n targetFamily: \"'mongo'\",\n 'schemaVersion?': 'string',\n 'target?': 'string',\n 'storageHash?': 'string',\n 'profileHash?': 'string',\n roots: 'Record<string, string>',\n 'capabilities?': 'Record<string, unknown>',\n 'extensionPacks?': 'Record<string, unknown>',\n 'meta?': 'Record<string, unknown>',\n 'sources?': 'Record<string, unknown>',\n '_generated?': 'Record<string, unknown>',\n storage: type({\n '+': 'reject',\n collections: type({ '[string]': StorageCollectionSchema }),\n 'storageHash?': 'string',\n }),\n models: type({ '[string]': ModelDefinitionSchema }),\n 'valueObjects?': type({\n '[string]': type({ '+': 'reject', fields: type({ '[string]': FieldSchema }) }),\n }),\n});\n\nexport {\n CollationSchema,\n CollectionOptionsSchema,\n IndexFieldsSchema,\n IndexOptionsSchema,\n IndexSchema,\n MongoIndexKeySchema,\n MongoStorageIndexSchema,\n NumberRecordSchema,\n WildcardProjectionSchema,\n};\n","import type { MongoContract } from './contract-types';\n\nexport function validateMongoStorage(contract: MongoContract): void {\n const errors: string[] = [];\n\n for (const [modelName, model] of Object.entries(contract.models)) {\n if (model.storage.collection && !(model.storage.collection in contract.storage.collections)) {\n errors.push(\n `Model \"${modelName}\" references collection \"${model.storage.collection}\" which is not in storage.collections`,\n );\n }\n\n // Mongo does not support multi-table inheritance (ADR 2): all variants of a base\n // must share the same collection (single-table inheritance only).\n if (model.base) {\n const baseModel = contract.models[model.base];\n if (baseModel) {\n const variantCollection = model.storage.collection;\n const baseCollection = baseModel.storage.collection;\n if (variantCollection !== baseCollection) {\n errors.push(\n `Mongo does not support multi-table inheritance; variant \"${modelName}\" must share its base's collection (\"${baseCollection ?? '(none)'}\"), but has \"${variantCollection ?? '(none)'}\"`,\n );\n }\n }\n }\n\n for (const [relName, relation] of Object.entries(model.relations ?? {})) {\n const targetModel = contract.models[relation.to];\n\n if (targetModel?.owner) {\n if (targetModel.owner !== modelName) {\n errors.push(\n `Embed relation \"${relName}\" targets \"${relation.to}\" which is owned by \"${targetModel.owner}\", not \"${modelName}\"`,\n );\n }\n if (targetModel.storage.collection) {\n errors.push(\n `Embed relation \"${relName}\" targets \"${relation.to}\" which must not have a collection`,\n );\n }\n } else if ('on' in relation && relation.on) {\n for (const localField of relation.on.localFields) {\n if (!(localField in model.fields)) {\n errors.push(\n `Reference relation \"${relName}\": localField \"${localField}\" is not a field on model \"${modelName}\"`,\n );\n }\n }\n\n if (targetModel) {\n for (const targetField of relation.on.targetFields) {\n if (!(targetField in targetModel.fields)) {\n errors.push(\n `Reference relation \"${relName}\": targetField \"${targetField}\" is not a field on model \"${relation.to}\"`,\n );\n }\n }\n }\n }\n }\n }\n\n if (errors.length > 0) {\n throw new Error(`Contract storage validation failed:\\n- ${errors.join('\\n- ')}`);\n }\n}\n","import { validateContractDomain } from '@prisma-next/contract/validate-domain';\nimport { type as arktypeType } from 'arktype';\nimport { MongoContractSchema } from './contract-schema';\nimport type { MongoContract } from './contract-types';\nimport { validateMongoStorage } from './validate-storage';\n\nexport interface MongoContractIndices {\n readonly variantToBase: Record<string, string>;\n readonly modelToVariants: Record<string, string[]>;\n}\n\nexport interface ValidatedMongoContract<TContract extends MongoContract> {\n readonly contract: TContract;\n readonly indices: MongoContractIndices;\n}\n\nexport function validateMongoContract<TContract extends MongoContract>(\n value: unknown,\n): ValidatedMongoContract<TContract> {\n const parsed = MongoContractSchema(value);\n if (parsed instanceof arktypeType.errors) {\n throw new Error(`Contract structural validation failed: ${parsed.summary}`);\n }\n\n const contract = parsed as unknown as TContract;\n\n validateContractDomain(contract);\n validateMongoStorage(contract);\n\n const indices = buildIndices(contract);\n\n return { contract, indices };\n}\n\nfunction buildIndices(contract: MongoContract): MongoContractIndices {\n const variantToBase: Record<string, string> = {};\n const modelToVariants: Record<string, string[]> = {};\n\n for (const [modelName, model] of Object.entries(contract.models)) {\n if (model.base) {\n variantToBase[modelName] = model.base;\n }\n if (model.variants) {\n modelToVariants[modelName] = Object.keys(model.variants);\n }\n }\n\n return { variantToBase, modelToVariants };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":["arktypeType"],"sources":["../src/polymorphic-index-scope.ts","../src/contract-schema.ts","../src/validate-storage.ts","../src/validate-mongo-contract.ts"],"sourcesContent":["import type { MongoStorageIndex } from './contract-types';\n\nexport type PolymorphicIndexScope = {\n readonly discriminatorField: string;\n readonly discriminatorValue: string | number | boolean;\n};\n\nexport type ApplyScopeResult =\n | { readonly kind: 'ok'; readonly index: MongoStorageIndex }\n | { readonly kind: 'conflict'; readonly reason: string };\n\nfunction isScalarDiscriminatorValue(value: unknown): value is string | number | boolean {\n const t = typeof value;\n return t === 'string' || t === 'number' || t === 'boolean';\n}\n\nfunction formatValue(value: unknown): string {\n if (typeof value === 'string') return JSON.stringify(value);\n if (value === null) return 'null';\n if (Array.isArray(value)) return JSON.stringify(value);\n if (typeof value === 'object') return JSON.stringify(value);\n return String(value);\n}\n\nexport function applyPolymorphicScopeToMongoIndex(\n index: MongoStorageIndex,\n scope: PolymorphicIndexScope,\n): ApplyScopeResult {\n if (!isScalarDiscriminatorValue(scope.discriminatorValue)) {\n return {\n kind: 'conflict',\n reason: `Variant-scoped indexes require a scalar (string, number, or boolean) discriminator value for field \"${scope.discriminatorField}\", but received ${formatValue(scope.discriminatorValue)}.`,\n };\n }\n\n const existing = index.partialFilterExpression;\n if (existing && Object.hasOwn(existing, scope.discriminatorField)) {\n const existingValue = existing[scope.discriminatorField];\n if (existingValue === scope.discriminatorValue) {\n return { kind: 'ok', index };\n }\n return {\n kind: 'conflict',\n reason: `Index partialFilterExpression sets \"${scope.discriminatorField}\" to ${formatValue(existingValue)}, which conflicts with the variant's discriminator value ${formatValue(scope.discriminatorValue)}.`,\n };\n }\n\n const merged: Record<string, unknown> = {\n ...(existing ?? {}),\n [scope.discriminatorField]: scope.discriminatorValue,\n };\n\n return {\n kind: 'ok',\n index: { ...index, partialFilterExpression: merged },\n };\n}\n","import { type } from 'arktype';\nimport type { MongoJsonObject, MongoJsonPrimitive, MongoJsonValue } from './contract-types';\n\nconst ScalarFieldTypeSchema = type({\n '+': 'reject',\n kind: \"'scalar'\",\n codecId: 'string',\n 'typeParams?': 'Record<string, unknown>',\n});\n\nconst ValueObjectFieldTypeSchema = type({\n '+': 'reject',\n kind: \"'valueObject'\",\n name: 'string',\n});\n\nconst UnionFieldTypeSchema = type({\n '+': 'reject',\n kind: \"'union'\",\n members: ScalarFieldTypeSchema.or(ValueObjectFieldTypeSchema).array(),\n});\n\nconst FieldTypeSchema = ScalarFieldTypeSchema.or(ValueObjectFieldTypeSchema).or(\n UnionFieldTypeSchema,\n);\n\nconst RawFieldSchema = type({\n '+': 'reject',\n type: FieldTypeSchema,\n 'nullable?': 'boolean',\n 'many?': 'boolean',\n 'dict?': 'boolean',\n});\n\nconst FieldSchema = RawFieldSchema.pipe((field) => ({\n ...field,\n nullable: field.nullable ?? false,\n}));\n\nconst RelationOnSchema = type({\n '+': 'reject',\n localFields: 'string[]',\n targetFields: 'string[]',\n});\n\nconst RelationSchema = type({\n '+': 'reject',\n to: 'string',\n cardinality: \"'1:1' | '1:N' | 'N:1'\",\n 'on?': RelationOnSchema,\n});\n\nconst StorageRelationEntrySchema = type({\n '+': 'reject',\n field: 'string',\n});\n\nconst MongoJsonPrimitiveSchema = type\n .declare<MongoJsonPrimitive>()\n .type('string | number | boolean | null');\n\nfunction isMongoJsonRecord(value: unknown): value is Record<string, unknown> {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) {\n return false;\n }\n const prototype = Object.getPrototypeOf(value);\n return prototype === Object.prototype || prototype === null;\n}\n\nfunction withUnseenReference(value: object, seen: WeakSet<object>, visit: () => boolean): boolean {\n if (seen.has(value)) {\n return false;\n }\n\n seen.add(value);\n const result = visit();\n seen.delete(value);\n return result;\n}\n\nfunction isMongoJsonObject(value: unknown, seen: WeakSet<object>): value is MongoJsonObject {\n return (\n isMongoJsonRecord(value) &&\n withUnseenReference(value, seen, () =>\n Object.values(value).every((entry) => isMongoJsonValue(entry, seen)),\n )\n );\n}\n\nfunction isMongoJsonValue(value: unknown, seen = new WeakSet<object>()): value is MongoJsonValue {\n if (MongoJsonPrimitiveSchema.allows(value)) {\n return true;\n }\n if (Array.isArray(value)) {\n return withUnseenReference(value, seen, () =>\n value.every((entry) => isMongoJsonValue(entry, seen)),\n );\n }\n return isMongoJsonObject(value, seen);\n}\n\nconst MongoJsonValueSchema = type('unknown').narrow((value, ctx) =>\n isMongoJsonValue(value) ? true : ctx.mustBe('a JSON-serializable MongoJsonValue'),\n);\n\nconst MongoJsonObjectSchema = type({ '[string]': 'unknown' }).narrow((value, ctx) =>\n isMongoJsonRecord(value) &&\n Object.values(value).every((entry) => MongoJsonValueSchema.allows(entry))\n ? true\n : ctx.mustBe('a JSON object with MongoJsonValue entries'),\n);\n\nconst NumberRecordSchema = type({ '[string]': 'number' });\n\nconst IndexFieldsSchema = type({\n '+': 'reject',\n '[string]': '1 | -1 | \"text\" | \"2dsphere\" | \"2d\" | \"hashed\"',\n}).narrow((fields, ctx) =>\n Object.keys(fields).length > 0 ? true : ctx.mustBe('an index field map with at least one entry'),\n);\n\nconst CollationSchema = type({\n '+': 'reject',\n locale: 'string',\n 'caseLevel?': 'boolean',\n 'caseFirst?': '\"off\" | \"upper\" | \"lower\"',\n 'strength?': '1 | 2 | 3 | 4 | 5',\n 'numericOrdering?': 'boolean',\n 'alternate?': '\"non-ignorable\" | \"shifted\"',\n 'maxVariable?': '\"punct\" | \"space\"',\n 'backwards?': 'boolean',\n 'normalization?': 'boolean',\n});\n\nconst IndexOptionDefaultsSchema = type({\n '+': 'reject',\n 'storageEngine?': MongoJsonObjectSchema,\n});\n\nconst TimeSeriesCollectionOptionsSchema = type({\n '+': 'reject',\n timeField: 'string',\n 'metaField?': 'string',\n 'granularity?': '\"seconds\" | \"minutes\" | \"hours\"',\n 'bucketMaxSpanSeconds?': 'number',\n 'bucketRoundingSeconds?': 'number',\n});\n\nconst ClusteredCollectionKeySchema = type({\n '+': 'reject',\n '[string]': '1',\n}).narrow((key, ctx) =>\n Object.keys(key).length > 0\n ? true\n : ctx.mustBe('a clustered index key map with at least one entry'),\n);\n\nconst ClusteredCollectionOptionsSchema = type({\n '+': 'reject',\n 'name?': 'string',\n key: ClusteredCollectionKeySchema,\n unique: 'boolean',\n});\n\nconst ChangeStreamPreAndPostImagesSchema = type({\n '+': 'reject',\n enabled: 'boolean',\n});\n\nconst CollectionOptionsSchema = type({\n '+': 'reject',\n 'capped?': 'boolean',\n 'size?': 'number',\n 'max?': 'number',\n 'storageEngine?': MongoJsonObjectSchema,\n 'indexOptionDefaults?': IndexOptionDefaultsSchema,\n 'collation?': CollationSchema,\n 'timeseries?': TimeSeriesCollectionOptionsSchema,\n 'clusteredIndex?': ClusteredCollectionOptionsSchema,\n 'expireAfterSeconds?': 'number',\n 'changeStreamPreAndPostImages?': ChangeStreamPreAndPostImagesSchema,\n});\n\nconst ModelStorageSchema = type({\n '+': 'reject',\n 'collection?': 'string',\n 'relations?': type({ '[string]': StorageRelationEntrySchema }),\n});\n\nconst DiscriminatorSchema = type({\n '+': 'reject',\n field: 'string',\n});\n\nconst VariantEntrySchema = type({\n '+': 'reject',\n value: 'string',\n});\n\nconst ModelDefinitionSchema = type({\n '+': 'reject',\n fields: type({ '[string]': FieldSchema }),\n storage: ModelStorageSchema,\n 'relations?': type({ '[string]': RelationSchema }),\n 'discriminator?': DiscriminatorSchema,\n 'variants?': type({ '[string]': VariantEntrySchema }),\n 'base?': 'string',\n 'owner?': 'string',\n});\n\nconst WildcardProjectionSchema = type({\n '+': 'reject',\n '[string]': '0 | 1',\n});\n\nconst IndexOptionsSchema = type({\n '+': 'reject',\n 'unique?': 'boolean',\n 'name?': 'string',\n 'partialFilterExpression?': MongoJsonObjectSchema,\n 'sparse?': 'boolean',\n 'expireAfterSeconds?': 'number',\n 'weights?': NumberRecordSchema,\n 'default_language?': 'string',\n 'language_override?': 'string',\n 'textIndexVersion?': 'number',\n '2dsphereIndexVersion?': 'number',\n 'bits?': 'number',\n 'min?': 'number',\n 'max?': 'number',\n 'bucketSize?': 'number',\n 'hidden?': 'boolean',\n 'collation?': CollationSchema,\n 'wildcardProjection?': WildcardProjectionSchema,\n});\n\nconst IndexSchema = type({\n '+': 'reject',\n fields: IndexFieldsSchema,\n 'options?': IndexOptionsSchema,\n});\n\nconst MongoIndexKeySchema = type({\n '+': 'reject',\n field: 'string',\n direction: '1 | -1 | \"text\" | \"2dsphere\" | \"2d\" | \"hashed\"',\n});\n\nconst MongoStorageIndexSchema = type({\n '+': 'reject',\n keys: MongoIndexKeySchema.array().atLeastLength(1),\n 'unique?': 'boolean',\n 'sparse?': 'boolean',\n 'expireAfterSeconds?': 'number',\n 'partialFilterExpression?': 'Record<string, unknown>',\n 'wildcardProjection?': 'Record<string, 0 | 1>',\n 'collation?': 'Record<string, unknown>',\n 'weights?': 'Record<string, number>',\n 'default_language?': 'string',\n 'language_override?': 'string',\n});\n\nconst MongoStorageValidatorSchema = type({\n '+': 'reject',\n jsonSchema: 'Record<string, unknown>',\n validationLevel: \"'strict' | 'moderate'\",\n validationAction: \"'error' | 'warn'\",\n});\n\nconst CappedOptionsSchema = type({\n '+': 'reject',\n size: 'number',\n 'max?': 'number',\n});\n\nconst TimeseriesOptionsSchema = type({\n '+': 'reject',\n timeField: 'string',\n 'metaField?': 'string',\n 'granularity?': \"'seconds' | 'minutes' | 'hours'\",\n});\n\nconst ClusteredIndexSchema = type({\n '+': 'reject',\n 'name?': 'string',\n});\n\nconst MongoCollectionOptionsSchema = type({\n '+': 'reject',\n 'capped?': CappedOptionsSchema,\n 'timeseries?': TimeseriesOptionsSchema,\n 'collation?': 'Record<string, unknown>',\n 'changeStreamPreAndPostImages?': ChangeStreamPreAndPostImagesSchema,\n 'clusteredIndex?': ClusteredIndexSchema,\n});\n\nconst StorageCollectionSchema = type({\n '+': 'reject',\n 'indexes?': MongoStorageIndexSchema.array(),\n 'validator?': MongoStorageValidatorSchema,\n 'options?': MongoCollectionOptionsSchema,\n});\n\nexport const MongoContractSchema = type({\n '+': 'reject',\n targetFamily: \"'mongo'\",\n 'schemaVersion?': 'string',\n 'target?': 'string',\n 'storageHash?': 'string',\n 'profileHash?': 'string',\n roots: 'Record<string, string>',\n 'capabilities?': 'Record<string, unknown>',\n 'extensionPacks?': 'Record<string, unknown>',\n 'meta?': 'Record<string, unknown>',\n 'sources?': 'Record<string, unknown>',\n '_generated?': 'Record<string, unknown>',\n storage: type({\n '+': 'reject',\n collections: type({ '[string]': StorageCollectionSchema }),\n 'storageHash?': 'string',\n }),\n models: type({ '[string]': ModelDefinitionSchema }),\n 'valueObjects?': type({\n '[string]': type({ '+': 'reject', fields: type({ '[string]': FieldSchema }) }),\n }),\n});\n\nexport {\n CollationSchema,\n CollectionOptionsSchema,\n IndexFieldsSchema,\n IndexOptionsSchema,\n IndexSchema,\n MongoIndexKeySchema,\n MongoStorageIndexSchema,\n NumberRecordSchema,\n WildcardProjectionSchema,\n};\n","import type { MongoContract } from './contract-types';\n\nexport function validateMongoStorage(contract: MongoContract): void {\n const errors: string[] = [];\n\n for (const [modelName, model] of Object.entries(contract.models)) {\n if (model.storage.collection && !(model.storage.collection in contract.storage.collections)) {\n errors.push(\n `Model \"${modelName}\" references collection \"${model.storage.collection}\" which is not in storage.collections`,\n );\n }\n\n // Mongo does not support multi-table inheritance (ADR 2): all variants of a base\n // must share the same collection (single-table inheritance only).\n if (model.base) {\n const baseModel = contract.models[model.base];\n if (baseModel) {\n const variantCollection = model.storage.collection;\n const baseCollection = baseModel.storage.collection;\n if (variantCollection !== baseCollection) {\n errors.push(\n `Mongo does not support multi-table inheritance; variant \"${modelName}\" must share its base's collection (\"${baseCollection ?? '(none)'}\"), but has \"${variantCollection ?? '(none)'}\"`,\n );\n }\n }\n }\n\n for (const [relName, relation] of Object.entries(model.relations ?? {})) {\n const targetModel = contract.models[relation.to];\n\n if (targetModel?.owner) {\n if (targetModel.owner !== modelName) {\n errors.push(\n `Embed relation \"${relName}\" targets \"${relation.to}\" which is owned by \"${targetModel.owner}\", not \"${modelName}\"`,\n );\n }\n if (targetModel.storage.collection) {\n errors.push(\n `Embed relation \"${relName}\" targets \"${relation.to}\" which must not have a collection`,\n );\n }\n } else if ('on' in relation && relation.on) {\n for (const localField of relation.on.localFields) {\n if (!(localField in model.fields)) {\n errors.push(\n `Reference relation \"${relName}\": localField \"${localField}\" is not a field on model \"${modelName}\"`,\n );\n }\n }\n\n if (targetModel) {\n for (const targetField of relation.on.targetFields) {\n if (!(targetField in targetModel.fields)) {\n errors.push(\n `Reference relation \"${relName}\": targetField \"${targetField}\" is not a field on model \"${relation.to}\"`,\n );\n }\n }\n }\n }\n }\n }\n\n if (errors.length > 0) {\n throw new Error(`Contract storage validation failed:\\n- ${errors.join('\\n- ')}`);\n }\n}\n","import { validateContractDomain } from '@prisma-next/contract/validate-domain';\nimport { type as arktypeType } from 'arktype';\nimport { MongoContractSchema } from './contract-schema';\nimport type { MongoContract } from './contract-types';\nimport { validateMongoStorage } from './validate-storage';\n\nexport interface MongoContractIndices {\n readonly variantToBase: Record<string, string>;\n readonly modelToVariants: Record<string, string[]>;\n}\n\nexport interface ValidatedMongoContract<TContract extends MongoContract> {\n readonly contract: TContract;\n readonly indices: MongoContractIndices;\n}\n\nexport function validateMongoContract<TContract extends MongoContract>(\n value: unknown,\n): ValidatedMongoContract<TContract> {\n const parsed = MongoContractSchema(value);\n if (parsed instanceof arktypeType.errors) {\n throw new Error(`Contract structural validation failed: ${parsed.summary}`);\n }\n\n const contract = parsed as unknown as TContract;\n\n validateContractDomain(contract);\n validateMongoStorage(contract);\n\n const indices = buildIndices(contract);\n\n return { contract, indices };\n}\n\nfunction buildIndices(contract: MongoContract): MongoContractIndices {\n const variantToBase: Record<string, string> = {};\n const modelToVariants: Record<string, string[]> = {};\n\n for (const [modelName, model] of Object.entries(contract.models)) {\n if (model.base) {\n variantToBase[modelName] = model.base;\n }\n if (model.variants) {\n modelToVariants[modelName] = Object.keys(model.variants);\n }\n }\n\n return { variantToBase, modelToVariants };\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,21 +1,21 @@
1
1
  {
2
2
  "name": "@prisma-next/mongo-contract",
3
- "version": "0.5.0-dev.66",
3
+ "version": "0.5.0-dev.67",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "sideEffects": false,
7
7
  "description": "Contract types and validation for Prisma Next MongoDB support",
8
8
  "dependencies": {
9
9
  "arktype": "^2.1.29",
10
- "@prisma-next/contract": "0.5.0-dev.66"
10
+ "@prisma-next/contract": "0.5.0-dev.67"
11
11
  },
12
12
  "devDependencies": {
13
- "tsdown": "0.18.4",
13
+ "tsdown": "0.22.0",
14
14
  "typescript": "5.9.3",
15
- "vitest": "4.0.17",
16
- "@prisma-next/tsconfig": "0.0.0",
15
+ "vitest": "4.1.5",
16
+ "@prisma-next/test-utils": "0.0.1",
17
17
  "@prisma-next/tsdown": "0.0.0",
18
- "@prisma-next/test-utils": "0.0.1"
18
+ "@prisma-next/tsconfig": "0.0.0"
19
19
  },
20
20
  "files": [
21
21
  "dist",