@prisma-next/target-mongo 0.11.0-dev.6 → 0.11.0-dev.60
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/codec-types.d.mts.map +1 -1
- package/dist/control.d.mts +0 -1
- package/dist/control.d.mts.map +1 -1
- package/dist/control.mjs +55 -47
- package/dist/control.mjs.map +1 -1
- package/dist/descriptor-meta-DdXFJeK1.mjs.map +1 -1
- package/dist/{migration-factories-BRBKKZia.mjs → migration-factories-BX6N1O0e.mjs} +4 -2
- package/dist/migration-factories-BX6N1O0e.mjs.map +1 -0
- package/dist/migration.d.mts.map +1 -1
- package/dist/migration.mjs +1 -1
- package/dist/op-factory-call-BC-llGKt.d.mts.map +1 -1
- package/dist/pack.d.mts.map +1 -1
- package/dist/runtime.d.mts.map +1 -1
- package/dist/runtime.mjs.map +1 -1
- package/package.json +23 -23
- package/src/core/control-target.ts +19 -32
- package/src/core/migration-factories.ts +24 -0
- package/src/core/mongo-ops-serializer.ts +13 -10
- package/src/core/mongo-planner.ts +53 -8
- package/src/core/planner-produced-migration.ts +0 -2
- package/src/core/render-typescript.ts +1 -5
- package/dist/migration-factories-BRBKKZia.mjs.map +0 -1
|
@@ -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,
|
|
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"}
|
package/dist/control.d.mts
CHANGED
|
@@ -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`
|
package/dist/control.d.mts.map
CHANGED
|
@@ -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":";;;;;;;;;;;;;;;;;;;;;;;;;;KAYY,mBAAA,GAAsB,IAAA,CAAK,aAAA;EAAA,SAC5B,OAAA,EAAS,YAAA;AAAA;;;;;;;;;;;;;
|
|
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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"}
|
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-
|
|
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
|
-
|
|
329
|
-
if (
|
|
330
|
-
if (origin.
|
|
331
|
-
|
|
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
|
-
|
|
334
|
-
|
|
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
|
|
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
|
|
885
|
-
sparse
|
|
886
|
-
expireAfterSeconds
|
|
887
|
-
partialFilterExpression
|
|
888
|
-
name
|
|
889
|
-
wildcardProjection
|
|
890
|
-
collation
|
|
891
|
-
weights
|
|
892
|
-
default_language
|
|
893
|
-
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
|
|
1403
|
-
*
|
|
1404
|
-
*
|
|
1405
|
-
*
|
|
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
|
-
|
|
1428
|
+
const contract = blindCast(opts.destinationContract);
|
|
1429
|
+
return createContractSpaceMember({
|
|
1414
1430
|
spaceId: opts.space,
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
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 };
|