@prisma-next/target-mongo 0.11.0-dev.6 → 0.11.0-dev.61

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.
@@ -1 +1 @@
1
- {"version":3,"file":"codec-types.d.mts","names":[],"sources":["../src/exports/codec-types.ts"],"mappings":";KAAY,UAAA;EAAA,SACD,kBAAA;IAAA,SAA+B,KAAA;IAAA,SAAwB,MAAA;EAAA;EAAA,SACvD,gBAAA;IAAA,SAA6B,KAAA;IAAA,SAAwB,MAAA;EAAA;EAAA,SACrD,gBAAA;IAAA,SAA6B,KAAA;IAAA,SAAwB,MAAA;EAAA;EAAA,SACrD,eAAA;IAAA,SAA4B,KAAA;IAAA,SAAwB,MAAA;EAAA;EAAA,SACpD,cAAA;IAAA,SAA2B,KAAA;IAAA,SAAyB,MAAA;EAAA;EAAA,SACpD,cAAA;IAAA,SAA2B,KAAA,EAAO,IAAA;IAAA,SAAe,MAAA,EAAQ,IAAA;EAAA;EAAA,SACzD,gBAAA;IAAA,SACE,KAAA;IAAA,SACA,MAAA;EAAA;AAAA"}
1
+ {"version":3,"file":"codec-types.d.mts","names":[],"sources":["../src/exports/codec-types.ts"],"mappings":";KAAY,UAAA;EAAA,SACD,kBAAA;IAAA,SAA+B,KAAA;IAAA,SAAwB,MAAA;EAAA;EAAA,SACvD,gBAAA;IAAA,SAA6B,KAAA;IAAA,SAAwB,MAAA;EAAA;EAAA,SACrD,gBAAA;IAAA,SAA6B,KAAA;IAAA,SAAwB,MAAA;EAAA;EAAA,SACrD,eAAA;IAAA,SAA4B,KAAA;IAAA,SAAwB,MAAA;EAAA;EAAA,SACpD,cAAA;IAAA,SAA2B,KAAA;IAAA,SAAyB,MAAA;EAAA;EAAA,SACpD,cAAA;IAAA,SAA2B,KAAA,EAAO,IAAA;IAAA,SAAe,MAAA,EAAQ,IAAI;EAAA;EAAA,SAC7D,gBAAA;IAAA,SACE,KAAA;IAAA,SACA,MAAA;EAAA;AAAA"}
@@ -263,7 +263,6 @@ declare function renderOps(calls: ReadonlyArray<OpFactoryCall>): MongoMigrationP
263
263
  interface RenderMigrationMeta {
264
264
  readonly from: string | null;
265
265
  readonly to: string;
266
- readonly labels?: readonly string[];
267
266
  }
268
267
  /**
269
268
  * Render a list of Mongo `OpFactoryCall`s as a `migration.ts`
@@ -1 +1 @@
1
- {"version":3,"file":"control.d.mts","names":[],"sources":["../src/core/mongo-target-contract.ts","../src/core/control-target.ts","../src/core/filter-evaluator.ts","../src/core/mongo-ops-serializer.ts","../src/core/mongo-planner.ts","../src/core/mongo-runner.ts","../src/core/mongo-target-contract-serializer.ts","../src/core/mongo-target-database.ts","../src/core/mongo-target-schema-verifier.ts","../src/core/planner-produced-migration.ts","../src/core/render-ops.ts","../src/core/render-typescript.ts"],"mappings":"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"}
1
+ {"version":3,"file":"control.d.mts","names":[],"sources":["../src/core/mongo-target-contract.ts","../src/core/control-target.ts","../src/core/filter-evaluator.ts","../src/core/mongo-ops-serializer.ts","../src/core/mongo-planner.ts","../src/core/mongo-runner.ts","../src/core/mongo-target-contract-serializer.ts","../src/core/mongo-target-database.ts","../src/core/mongo-target-schema-verifier.ts","../src/core/planner-produced-migration.ts","../src/core/render-ops.ts","../src/core/render-typescript.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;KAYY,mBAAA,GAAsB,IAAA,CAAK,aAAA;EAAA,SAC5B,OAAA,EAAS,YAAA;AAAA;;;;;;;;;;;;;cCoCP,qBAAA,EAAuB,4BAA4B,CAAC,mBAAA;;;cCCpD,eAAA,YAA2B,kBAAA;EAAA,QAC9B,GAAA;EAER,QAAA,CAAS,MAAA,EAAQ,eAAA,EAAiB,GAAA,EAAK,MAAA;EAKvC,KAAA,CAAM,IAAA,EAAM,gBAAA;EAKZ,GAAA,CAAI,IAAA,EAAM,YAAA;EAIV,EAAA,CAAG,IAAA,EAAM,WAAA;EAIT,GAAA,CAAI,IAAA,EAAM,YAAA;EAIV,MAAA,CAAO,IAAA,EAAM,eAAA;EAKb,IAAA,CAAK,KAAA,EAAO,eAAA;AAAA;;;iBCiiBE,kBAAA,CAAmB,IAAA,YAAgB,0BAA0B;AAAA,iBAO7D,mBAAA,CAAoB,IAAA,uBAA2B,0BAA0B;AAAA,iBAIzE,iBAAA,CAAkB,GAA0C,WAA5B,0BAA0B;;;KC1e9D,eAAA;EAAA,SACG,IAAA;EAAA,SAA0B,KAAA,EAAO,aAAA;AAAA;EAAA,SACjC,IAAA;EAAA,SAA0B,SAAA,EAAW,wBAAwB;AAAA;AAAA,cAE/D,qBAAA,YAAiC,gBAAA;EAC5C,SAAA,CAAU,OAAA;IAAA,SACC,QAAA;IAAA,SACA,MAAA;IAAA,SACA,MAAA,EAAQ,wBAAA;IAAA,SACR,mBAAA,EAAqB,aAAA,CAAc,8BAAA;EAAA,IAC1C,eAAA;EAgIJ,IAAA,CAAK,OAAA;IAAA,SACM,QAAA;IAAA,SACA,MAAA;IAAA,SACA,MAAA,EAAQ,wBAAA;IJlRW;;;;;IAAA,SIwRnB,YAAA,EAAc,QAAA;IAAA,SACd,mBAAA,EAAqB,aAAA,CAAc,8BAAA;EAAA,IAC1C,sBAAA;;;;AHtPN;;;;AAAoF;;EG4QlF,cAAA,CAAe,OAAA,EAAS,wBAAA,GAA2B,iCAAA;AAAA;;;UC3RpC,kCAAA;EAAA,SACN,IAAA,EAAM,aAAA;EAAA,SACN,mBAAA,EAAqB,aAAA;EAAA,SACrB,MAAA,EAAQ,wBAAA;EAAA,SACR,SAAA;IACP,gBAAA,EAAkB,EAAA,EAAI,sBAAA;IACtB,mBAAA,EAAqB,EAAA,EAAI,sBAAA;EAAA;EAAA,SAElB,eAAA,GAAkB,8BAAA;EAAA,SAClB,mBAAA,EAAqB,aAAA,CAAc,8BAAA;EAAA,SACnC,kBAAA;EAAA,SACA,OAAA,GAAU,gBAAA;;;;;;;;;;;;WAYV,aAAA,IAAiB,MAAA,EAAQ,aAAA,KAAkB,aAAA;AAAA;AAAA,cAezC,oBAAA;EAAA,iBACkB,IAAA;cAAA,IAAA,EAAM,uBAAA;EAE7B,OAAA,CAAQ,OAAA,EAAS,kCAAA,GAAqC,OAAA,CAAQ,qBAAA;EAAA,QAuLtD,oBAAA;EAAA,QA+DA,2BAAA;EAAA,QAoCA,cAAA;EAAA,QAgBA,kBAAA;EAAA,QASN,0BAAA;EAAA,QAuBA,yBAAA;AAAA;;;cC9YG,6BAAA,SAAsC,2BAAA,CAA4B,mBAAA;EAAA,UACnE,uBAAA,CAAwB,SAAA,EAAW,aAAA,GAAgB,mBAAA;EAyBpD,iBAAA,CAAkB,QAAA,EAAU,mBAAA,GAAsB,UAAA;AAAA;;;UC1B5C,wBAAA;EAAA,SACN,EAAA;EAAA,SACA,WAAA,GAAc,MAAA,SAAe,eAAA,GAAkB,oBAAA;AAAA;;;;;;;;;;;APG1D;;;cOaa,mBAAA,SAA4B,aAAA;EAAA,SAC9B,IAAA;EAAA,SACA,EAAA;EAAA,SACA,WAAA,EAAa,QAAA,CAAS,MAAA,SAAe,eAAA;cAElC,KAAA,EAAO,wBAAA;EPlBa;;;;EOoChC,SAAA,CAAA;EPnC8B;;;;ACoChC;;EMSE,iBAAA,CAAkB,cAAA;AAAA;ANTgE;;;;ACCpF;;;;;;;;;ADDoF,cM2BvE,0BAAA,SAAmC,mBAAmB;EAAA,gBACjD,QAAA,EAAU,0BAAA;EAAA,QAEnB,WAAA,CAAA;EAIE,SAAA,CAAA;EAIA,iBAAA,CAAkB,cAAA;AAAA;;;;;;;;;;;;;;AP3E7B;;;;;;;;;;cQoBa,yBAAA,SAAkC,uBAAA,CAC7C,mBAAA,EACA,aAAA;EAAA,UAEU,eAAA,CAAgB,OAAA;IAAA,SACf,QAAA,EAAU,mBAAA;IAAA,SACV,MAAA,EAAQ,aAAA;IAAA,SACR,WAAA;IAAA,SACA,SAAA,EAAW,SAAA;EAAA,aACT,WAAA;EAAA,UAOH,sBAAA,CACR,QAAA,EAAU,mBAAA,CAAoB,mBAAA,EAAqB,aAAA,aACzC,WAAA;AAAA;;;;;;;;;;;;;;;ARtCd;;;;cSWa,6BAAA,SACH,SAAA,CAAU,0BAAA,aACP,iCAAA;EAAA,iBAKQ,KAAA;EAAA,iBACA,IAAA;EAAA,SAJV,QAAA;cAGU,KAAA,WAAgB,aAAA,IAChB,IAAA,EAAM,aAAA;EAAA,IAKZ,UAAA,CAAA,YAAuB,0BAAA;EAI3B,QAAA,CAAA,GAAY,aAAA;EAIrB,gBAAA,CAAA;AAAA;;;iBCzCc,SAAA,CAAU,KAAA,EAAO,aAAA,CAAc,aAAA,IAAiB,2BAAA;;;UCC/C,mBAAA;EAAA,SACN,IAAA;EAAA,SACA,EAAE;AAAA;;;;;;;;;;;;AXMb;;;;;;iBWmCgB,uBAAA,CACd,KAAA,EAAO,aAAA,CAAc,aAAA,GACrB,IAAA,EAAM,mBAAA"}
package/dist/control.mjs CHANGED
@@ -1,10 +1,11 @@
1
1
  import { t as mongoTargetDescriptorMeta } from "./descriptor-meta-DdXFJeK1.mjs";
2
- import { a as dropCollection, n as createCollection, o as dropIndex, r as createIndex, t as collMod } from "./migration-factories-BRBKKZia.mjs";
2
+ import { a as dropCollection, n as createCollection, o as dropIndex, r as createIndex, t as collMod } from "./migration-factories-BX6N1O0e.mjs";
3
3
  import { createMongoRunnerDeps, extractDb } from "@prisma-next/adapter-mongo/control";
4
4
  import { MongoDriverImpl } from "@prisma-next/driver-mongo";
5
5
  import { canonicalizeSchemasForVerification, contractToMongoSchemaIR, diffMongoSchemas } from "@prisma-next/family-mongo/control";
6
- import { projectSchemaToSpace } from "@prisma-next/migration-tools/aggregate";
6
+ import { createContractSpaceMember, projectSchemaToSpace } from "@prisma-next/migration-tools/aggregate";
7
7
  import { MongoSchemaIR, canonicalize, deepEqual } from "@prisma-next/mongo-schema-ir";
8
+ import { blindCast } from "@prisma-next/utils/casts";
8
9
  import { notOk, ok } from "@prisma-next/utils/result";
9
10
  import { TsExpression, jsonToTsSource, renderImports } from "@prisma-next/ts-render";
10
11
  import { CollModCommand, CreateCollectionCommand, CreateIndexCommand, DropCollectionCommand, DropIndexCommand, ListCollectionsCommand, ListIndexesCommand, MongoAndExpr, MongoExistsExpr, MongoFieldFilter, MongoNotExpr, MongoOrExpr } from "@prisma-next/mongo-query-ast/control";
@@ -251,7 +252,6 @@ function buildDescribeMethod(meta) {
251
252
  lines.push(" return {");
252
253
  lines.push(` from: ${JSON.stringify(meta.from)},`);
253
254
  lines.push(` to: ${JSON.stringify(meta.to)},`);
254
- if (meta.labels && meta.labels.length > 0) lines.push(` labels: ${jsonToTsSource(meta.labels)},`);
255
255
  lines.push(" };");
256
256
  lines.push(" }");
257
257
  lines.push("");
@@ -297,8 +297,7 @@ var PlannerProducedMongoMigration = class extends Migration {
297
297
  renderTypeScript() {
298
298
  return renderCallsToTypeScript(this.calls, {
299
299
  from: this.meta.from,
300
- to: this.meta.to,
301
- ...ifDefined("labels", this.meta.labels)
300
+ to: this.meta.to
302
301
  });
303
302
  }
304
303
  };
@@ -325,15 +324,36 @@ function validatorsEqual(a, b) {
325
324
  return a.validationLevel === b.validationLevel && a.validationAction === b.validationAction && canonicalize(a.jsonSchema) === canonicalize(b.jsonSchema);
326
325
  }
327
326
  function classifyValidatorUpdate(origin, dest) {
328
- let hasDestructive = false;
329
- if (canonicalize(origin.jsonSchema) !== canonicalize(dest.jsonSchema)) hasDestructive = true;
330
- if (origin.validationAction !== dest.validationAction) {
331
- if (dest.validationAction === "error") hasDestructive = true;
327
+ if (origin.validationAction !== dest.validationAction && dest.validationAction === "error") return "destructive";
328
+ if (origin.validationLevel !== dest.validationLevel && dest.validationLevel === "strict") return "destructive";
329
+ if (canonicalize(origin.jsonSchema) === canonicalize(dest.jsonSchema)) return "widening";
330
+ return isWideningSchemaChange(origin.jsonSchema, dest.jsonSchema) ? "widening" : "destructive";
331
+ }
332
+ function isPlainObject(v) {
333
+ return typeof v === "object" && v !== null && !Array.isArray(v);
334
+ }
335
+ /**
336
+ * Returns true when `dest` is a structural superset of `origin` for the common
337
+ * additive case: adding non-required properties to a top-level object schema.
338
+ * Anything uncertain falls through to the safe `destructive` default.
339
+ */
340
+ function isWideningSchemaChange(origin, dest) {
341
+ if (origin["bsonType"] !== "object" || dest["bsonType"] !== "object") return false;
342
+ const allKeys = new Set([...Object.keys(origin), ...Object.keys(dest)]);
343
+ for (const key of allKeys) {
344
+ if (key === "required" || key === "properties") continue;
345
+ if (canonicalize(origin[key]) !== canonicalize(dest[key])) return false;
332
346
  }
333
- if (origin.validationLevel !== dest.validationLevel) {
334
- if (dest.validationLevel === "strict") hasDestructive = true;
347
+ const originRequired = new Set(Array.isArray(origin["required"]) ? origin["required"] : []);
348
+ const destRequired = Array.isArray(dest["required"]) ? dest["required"] : [];
349
+ for (const field of destRequired) if (!originRequired.has(field)) return false;
350
+ const originProps = isPlainObject(origin["properties"]) ? origin["properties"] : {};
351
+ const destProps = isPlainObject(dest["properties"]) ? dest["properties"] : {};
352
+ for (const field of Object.keys(originProps)) {
353
+ if (!Object.hasOwn(destProps, field)) return false;
354
+ if (canonicalize(originProps[field]) !== canonicalize(destProps[field])) return false;
335
355
  }
336
- return hasDestructive ? "destructive" : "widening";
356
+ return true;
337
357
  }
338
358
  function hasImmutableOptionChange(origin, dest) {
339
359
  if (canonicalize(origin?.capped) !== canonicalize(dest?.capped)) return "capped";
@@ -881,16 +901,16 @@ function deserializeDdlCommand(json) {
881
901
  case "createIndex": {
882
902
  const data = validate(CreateIndexJson, json, "createIndex command");
883
903
  return new CreateIndexCommand(data.collection, data.keys, {
884
- unique: data.unique,
885
- sparse: data.sparse,
886
- expireAfterSeconds: data.expireAfterSeconds,
887
- partialFilterExpression: data.partialFilterExpression,
888
- name: data.name,
889
- wildcardProjection: data.wildcardProjection,
890
- collation: data.collation,
891
- weights: data.weights,
892
- default_language: data.default_language,
893
- language_override: data.language_override
904
+ ...ifDefined("unique", data.unique),
905
+ ...ifDefined("sparse", data.sparse),
906
+ ...ifDefined("expireAfterSeconds", data.expireAfterSeconds),
907
+ ...ifDefined("partialFilterExpression", data.partialFilterExpression),
908
+ ...ifDefined("name", data.name),
909
+ ...ifDefined("wildcardProjection", data.wildcardProjection),
910
+ ...ifDefined("collation", data.collation),
911
+ ...ifDefined("weights", data.weights),
912
+ ...ifDefined("default_language", data.default_language),
913
+ ...ifDefined("language_override", data.language_override)
894
914
  });
895
915
  }
896
916
  case "dropIndex": {
@@ -1399,34 +1419,22 @@ const mongoTargetDescriptor = {
1399
1419
  }
1400
1420
  };
1401
1421
  /**
1402
- * Synthesise the minimum {@link projectSchemaToSpace}-compatible
1403
- * `ContractSpaceMember` shape from a per-space option entry. The
1404
- * projector only reads `spaceId` and `contract.storage`; the rest of
1405
- * `ContractSpaceMember` (head ref invariants, hydrated migration
1406
- * graph) is irrelevant at runner time and stubbed with sentinels.
1407
- *
1408
- * The `as unknown as ContractSpaceMember` cast is the load-bearing bit
1409
- * — the projector duck-types its members so a sentinel-shaped graph
1410
- * never gets read, but the framework type carries a richer shape.
1422
+ * Synthesise a {@link projectSchemaToSpace}-compatible member from a
1423
+ * per-space option entry. The projector only reads `spaceId` and
1424
+ * `contract()`; migration graph state is empty because the runner
1425
+ * consumes the destination contract directly.
1411
1426
  */
1412
1427
  function toSpaceMember(opts) {
1413
- return {
1428
+ const contract = blindCast(opts.destinationContract);
1429
+ return createContractSpaceMember({
1414
1430
  spaceId: opts.space,
1415
- contract: opts.destinationContract,
1416
- headRef: {
1417
- hash: "",
1418
- invariants: []
1419
- },
1420
- migrations: {
1421
- graph: {
1422
- nodes: /* @__PURE__ */ new Set(),
1423
- forwardChain: /* @__PURE__ */ new Map(),
1424
- reverseChain: /* @__PURE__ */ new Map(),
1425
- migrationByHash: /* @__PURE__ */ new Map()
1426
- },
1427
- packagesByMigrationHash: /* @__PURE__ */ new Map()
1428
- }
1429
- };
1431
+ packages: [],
1432
+ refs: {},
1433
+ headRef: null,
1434
+ refsDir: "",
1435
+ resolveContract: () => contract,
1436
+ deserializeContract: (raw) => blindCast(raw)
1437
+ });
1430
1438
  }
1431
1439
  //#endregion
1432
1440
  export { CollModCall, CreateCollectionCall, CreateIndexCall, DropCollectionCall, DropIndexCall, FilterEvaluator, MongoMigrationPlanner, MongoMigrationRunner, MongoTargetContractSerializer, MongoTargetDatabase, MongoTargetSchemaVerifier, MongoTargetUnboundDatabase, PlannerProducedMongoMigration, deserializeMongoOp, deserializeMongoOps, mongoTargetDescriptor, renderCallsToTypeScript, renderOps, schemaCollectionToCreateCollectionOptions, schemaIndexToCreateIndexOptions, serializeMongoOps };