@contember/schema-migrations 2.0.0-alpha.39 → 2.0.0-alpha.40
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/development/src/SchemaDiffer.cjs +4 -3
- package/dist/development/src/SchemaDiffer.cjs.map +1 -1
- package/dist/development/src/SchemaDiffer.js +5 -4
- package/dist/development/src/SchemaDiffer.js.map +1 -1
- package/dist/development/src/modifications/acl/UpdateAclSchemaModification.cjs +4 -1
- package/dist/development/src/modifications/acl/UpdateAclSchemaModification.cjs.map +1 -1
- package/dist/development/src/modifications/acl/UpdateAclSchemaModification.js +4 -1
- package/dist/development/src/modifications/acl/UpdateAclSchemaModification.js.map +1 -1
- package/dist/development/src/modifications/validation/UpdateValidationSchemaModification.cjs +4 -1
- package/dist/development/src/modifications/validation/UpdateValidationSchemaModification.cjs.map +1 -1
- package/dist/development/src/modifications/validation/UpdateValidationSchemaModification.js +4 -1
- package/dist/development/src/modifications/validation/UpdateValidationSchemaModification.js.map +1 -1
- package/dist/production/src/SchemaDiffer.cjs +4 -3
- package/dist/production/src/SchemaDiffer.cjs.map +1 -1
- package/dist/production/src/SchemaDiffer.js +5 -4
- package/dist/production/src/SchemaDiffer.js.map +1 -1
- package/dist/production/src/modifications/acl/UpdateAclSchemaModification.cjs +4 -1
- package/dist/production/src/modifications/acl/UpdateAclSchemaModification.cjs.map +1 -1
- package/dist/production/src/modifications/acl/UpdateAclSchemaModification.js +4 -1
- package/dist/production/src/modifications/acl/UpdateAclSchemaModification.js.map +1 -1
- package/dist/production/src/modifications/validation/UpdateValidationSchemaModification.cjs +4 -1
- package/dist/production/src/modifications/validation/UpdateValidationSchemaModification.cjs.map +1 -1
- package/dist/production/src/modifications/validation/UpdateValidationSchemaModification.js +4 -1
- package/dist/production/src/modifications/validation/UpdateValidationSchemaModification.js.map +1 -1
- package/dist/tests/tsconfig.tsbuildinfo +1 -1
- package/dist/types/SchemaDiffer.d.ts +4 -1
- package/dist/types/SchemaDiffer.d.ts.map +1 -1
- package/dist/types/modifications/acl/UpdateAclSchemaModification.d.ts +4 -0
- package/dist/types/modifications/acl/UpdateAclSchemaModification.d.ts.map +1 -1
- package/dist/types/modifications/validation/UpdateValidationSchemaModification.d.ts +4 -0
- package/dist/types/modifications/validation/UpdateValidationSchemaModification.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -7
- package/src/SchemaDiffer.ts +8 -3
- package/src/modifications/acl/UpdateAclSchemaModification.ts +8 -1
- package/src/modifications/validation/UpdateValidationSchemaModification.ts +8 -1
|
@@ -48,8 +48,9 @@ const UpdateSettingsModification = require("./modifications/settings/UpdateSetti
|
|
|
48
48
|
const RemoveIndexNamesModification = require("./modifications/upgrade/RemoveIndexNamesModification.cjs");
|
|
49
49
|
const ConvertOneHasManyToOneHasOneRelationModification = require("./modifications/relations/ConvertOneHasManyToOneHasOneRelationModification.cjs");
|
|
50
50
|
class SchemaDiffer {
|
|
51
|
-
constructor(schemaMigrator) {
|
|
51
|
+
constructor(schemaMigrator, options) {
|
|
52
52
|
this.schemaMigrator = schemaMigrator;
|
|
53
|
+
this.options = options;
|
|
53
54
|
}
|
|
54
55
|
diffSchemas(originalSchema, updatedSchema, {
|
|
55
56
|
skipInitialSchemaValidation = false,
|
|
@@ -99,8 +100,8 @@ class SchemaDiffer {
|
|
|
99
100
|
new CreateUniqueConstraintModification.CreateUniqueConstraintDiffer(),
|
|
100
101
|
new CreateIndexModification.CreateIndexDiffer(),
|
|
101
102
|
new RemoveEnumModification.RemoveEnumDiffer(),
|
|
102
|
-
new UpdateAclSchemaModification.UpdateAclSchemaDiffer(),
|
|
103
|
-
new UpdateValidationSchemaModification.UpdateValidationSchemaDiffer(),
|
|
103
|
+
new UpdateAclSchemaModification.UpdateAclSchemaDiffer(this.options),
|
|
104
|
+
new UpdateValidationSchemaModification.UpdateValidationSchemaDiffer(this.options),
|
|
104
105
|
new UpdateEntityOrderByModification.UpdateEntityOrderByDiffer(),
|
|
105
106
|
new UpdateTargetModification.UpdateTargetDiffer(),
|
|
106
107
|
new CreateTargetModification.CreateTargetDiffer(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaDiffer.cjs","sources":["../../../../packages/schema-migrations/src/SchemaDiffer.ts"],"sourcesContent":["import { Schema } from '@contember/schema'\nimport { compareArraysIgnoreOrder, deepCompare, isInverseRelation, isOwningRelation, isRelation, SchemaValidator, ValidationError } from '@contember/schema-utils'\nimport { SchemaMigrator } from './SchemaMigrator'\nimport { Migration } from './Migration'\nimport { ImplementationException } from './exceptions'\nimport {\n\tConvertOneHasManyToManyHasManyRelationDiffer,\n\tConvertOneToManyRelationDiffer,\n\tCreateColumnDiffer,\n\tCreateEntityDiffer,\n\tCreateEnumDiffer,\n\tCreateRelationDiffer,\n\tCreateRelationInverseSideDiffer,\n\tCreateUniqueConstraintDiffer,\n\tCreateViewDiffer,\n\tDiffer,\n\tDisableOrphanRemovalDiffer,\n\tEnableOrphanRemovalDiffer,\n\tMakeRelationNotNullDiffer,\n\tMakeRelationNullableDiffer,\n\tRemoveEntityDiffer,\n\tRemoveEnumDiffer,\n\tRemoveFieldDiffer,\n\tRemoveUniqueConstraintDiffer,\n\tToggleEventLogDiffer,\n\tToggleJunctionEventLogDiffer,\n\tUpdateAclSchemaDiffer,\n\tUpdateColumnDefinitionDiffer,\n\tUpdateColumnNameDiffer,\n\tUpdateEntityOrderByDiffer,\n\tUpdateEntityTableNameDiffer,\n\tUpdateEnumDiffer,\n\tUpdateRelationOnDeleteDiffer,\n\tUpdateRelationOrderByDiffer,\n\tUpdateValidationSchemaDiffer,\n\tVERSION_LATEST,\n} from './modifications'\nimport { RemoveChangedFieldDiffer, RemoveViewDiffer } from './modifications/differs'\nimport { CreateIndexDiffer, RemoveIndexDiffer } from './modifications/indexes'\nimport { CreateTriggerDiffer, RemoveTriggerDiffer, UpdateTriggerDiffer } from './modifications/actions'\nimport { UpdateTargetDiffer } from './modifications/actions/UpdateTargetModification'\nimport { CreateTargetDiffer } from './modifications/actions/CreateTargetModification'\nimport { RemoveTargetDiffer } from './modifications/actions/RemoveTargetModification'\nimport { UpdateSettingsDiffer } from './modifications/settings'\nimport { RemoveIndexNamesDiffer } from './modifications/upgrade/RemoveIndexNamesModification'\nimport { ConvertOneHasManyToOneHasOneRelationDiffer } from './modifications/relations/ConvertOneHasManyToOneHasOneRelationModification'\n\ntype DiffOptions = { skipRecreateValidation?: boolean; skipInitialSchemaValidation?: boolean }\n\nexport class SchemaDiffer {\n\tconstructor(
|
|
1
|
+
{"version":3,"file":"SchemaDiffer.cjs","sources":["../../../../packages/schema-migrations/src/SchemaDiffer.ts"],"sourcesContent":["import { Schema } from '@contember/schema'\nimport { compareArraysIgnoreOrder, deepCompare, isInverseRelation, isOwningRelation, isRelation, SchemaValidator, ValidationError } from '@contember/schema-utils'\nimport { SchemaMigrator } from './SchemaMigrator'\nimport { Migration } from './Migration'\nimport { ImplementationException } from './exceptions'\nimport {\n\tConvertOneHasManyToManyHasManyRelationDiffer,\n\tConvertOneToManyRelationDiffer,\n\tCreateColumnDiffer,\n\tCreateEntityDiffer,\n\tCreateEnumDiffer,\n\tCreateRelationDiffer,\n\tCreateRelationInverseSideDiffer,\n\tCreateUniqueConstraintDiffer,\n\tCreateViewDiffer,\n\tDiffer,\n\tDisableOrphanRemovalDiffer,\n\tEnableOrphanRemovalDiffer,\n\tMakeRelationNotNullDiffer,\n\tMakeRelationNullableDiffer,\n\tRemoveEntityDiffer,\n\tRemoveEnumDiffer,\n\tRemoveFieldDiffer,\n\tRemoveUniqueConstraintDiffer,\n\tToggleEventLogDiffer,\n\tToggleJunctionEventLogDiffer,\n\tUpdateAclSchemaDiffer,\n\tUpdateColumnDefinitionDiffer,\n\tUpdateColumnNameDiffer,\n\tUpdateEntityOrderByDiffer,\n\tUpdateEntityTableNameDiffer,\n\tUpdateEnumDiffer,\n\tUpdateRelationOnDeleteDiffer,\n\tUpdateRelationOrderByDiffer,\n\tUpdateValidationSchemaDiffer,\n\tVERSION_LATEST,\n} from './modifications'\nimport { RemoveChangedFieldDiffer, RemoveViewDiffer } from './modifications/differs'\nimport { CreateIndexDiffer, RemoveIndexDiffer } from './modifications/indexes'\nimport { CreateTriggerDiffer, RemoveTriggerDiffer, UpdateTriggerDiffer } from './modifications/actions'\nimport { UpdateTargetDiffer } from './modifications/actions/UpdateTargetModification'\nimport { CreateTargetDiffer } from './modifications/actions/CreateTargetModification'\nimport { RemoveTargetDiffer } from './modifications/actions/RemoveTargetModification'\nimport { UpdateSettingsDiffer } from './modifications/settings'\nimport { RemoveIndexNamesDiffer } from './modifications/upgrade/RemoveIndexNamesModification'\nimport { ConvertOneHasManyToOneHasOneRelationDiffer } from './modifications/relations/ConvertOneHasManyToOneHasOneRelationModification'\n\ntype DiffOptions = { skipRecreateValidation?: boolean; skipInitialSchemaValidation?: boolean }\n\nexport class SchemaDiffer {\n\tconstructor(\n\t\tprivate readonly schemaMigrator: SchemaMigrator,\n\t\tprivate readonly options?: {\n\t\t\tmaxPatchSize?: number\n\t\t},\n\t) {}\n\n\tdiffSchemas(originalSchema: Schema, updatedSchema: Schema, {\n\t\tskipInitialSchemaValidation = false,\n\t\tskipRecreateValidation = false,\n\t}: DiffOptions = {}): Migration.Modification[] {\n\t\tif (!skipInitialSchemaValidation) {\n\t\t\tconst originalErrors = SchemaValidator.validate(originalSchema)\n\t\t\tif (originalErrors.length > 0) {\n\t\t\t\tthrow new InvalidSchemaException('original schema is not valid', originalErrors)\n\t\t\t}\n\t\t}\n\t\tconst updatedErrors = SchemaValidator.validate(updatedSchema)\n\t\tif (updatedErrors.length > 0) {\n\t\t\tthrow new InvalidSchemaException('updated schema is not valid', updatedErrors)\n\t\t}\n\n\t\tconst differs: Differ[] = [\n\t\t\tnew RemoveIndexNamesDiffer(),\n\t\t\tnew UpdateSettingsDiffer(),\n\t\t\tnew ConvertOneToManyRelationDiffer(),\n\t\t\tnew ConvertOneHasManyToManyHasManyRelationDiffer(),\n\t\t\tnew ConvertOneHasManyToOneHasOneRelationDiffer(),\n\t\t\tnew RemoveUniqueConstraintDiffer(),\n\t\t\tnew RemoveIndexDiffer(),\n\t\t\tnew RemoveViewDiffer(),\n\t\t\tnew RemoveEntityDiffer(),\n\t\t\tnew RemoveFieldDiffer(),\n\t\t\tnew CreateEnumDiffer(),\n\t\t\tnew UpdateEntityTableNameDiffer(),\n\t\t\tnew ToggleEventLogDiffer(),\n\t\t\tnew ToggleJunctionEventLogDiffer(),\n\t\t\tnew UpdateColumnDefinitionDiffer(),\n\t\t\tnew UpdateColumnNameDiffer(),\n\t\t\tnew UpdateRelationOnDeleteDiffer(),\n\t\t\tnew MakeRelationNotNullDiffer(),\n\t\t\tnew MakeRelationNullableDiffer(),\n\t\t\tnew EnableOrphanRemovalDiffer(),\n\t\t\tnew DisableOrphanRemovalDiffer(),\n\t\t\tnew UpdateRelationOrderByDiffer(),\n\t\t\tnew UpdateEnumDiffer(),\n\t\t\tnew RemoveChangedFieldDiffer(it => !isRelation(it) || isOwningRelation(it)),\n\t\t\tnew RemoveChangedFieldDiffer(it => isRelation(it) && isInverseRelation(it)),\n\t\t\tnew CreateEntityDiffer(),\n\t\t\tnew CreateColumnDiffer(),\n\t\t\tnew CreateRelationDiffer(),\n\t\t\tnew CreateViewDiffer(),\n\t\t\tnew CreateRelationInverseSideDiffer(),\n\t\t\tnew CreateUniqueConstraintDiffer(),\n\t\t\tnew CreateIndexDiffer(),\n\t\t\tnew RemoveEnumDiffer(),\n\t\t\tnew UpdateAclSchemaDiffer(this.options),\n\t\t\tnew UpdateValidationSchemaDiffer(this.options),\n\t\t\tnew UpdateEntityOrderByDiffer(),\n\t\t\tnew UpdateTargetDiffer(),\n\t\t\tnew CreateTargetDiffer(),\n\t\t\tnew UpdateTriggerDiffer(),\n\t\t\tnew CreateTriggerDiffer(),\n\t\t\tnew RemoveTriggerDiffer(),\n\t\t\tnew RemoveTargetDiffer(),\n\t\t]\n\n\t\tconst diffs: Migration.Modification[] = []\n\t\tlet appliedDiffsSchema = originalSchema\n\t\tfor (const differ of differs) {\n\t\t\tconst differDiffs = differ.createDiff(appliedDiffsSchema, updatedSchema)\n\t\t\tappliedDiffsSchema = this.schemaMigrator.applyModifications(appliedDiffsSchema, differDiffs, VERSION_LATEST)\n\t\t\tdiffs.push(...differDiffs)\n\t\t}\n\n\t\tif (!skipRecreateValidation) {\n\t\t\tconst errors = deepCompare(updatedSchema, appliedDiffsSchema, [], path => {\n\t\t\t\tif (path[0] === 'model' && path[1] === 'entities' && (path[3] === 'unique' || path[3] === 'index')) {\n\t\t\t\t\treturn (a, b) => {\n\t\t\t\t\t\treturn compareArraysIgnoreOrder(a, b, path)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn null\n\t\t\t})\n\t\t\tif (errors.length === 0) {\n\t\t\t\treturn diffs\n\t\t\t}\n\t\t\tlet message = 'Updated schema cannot be recreated by the generated diff:'\n\t\t\tfor (const err of errors) {\n\t\t\t\tmessage += '\\n\\t' + err.path.join('.') + ': ' + err.message\n\t\t\t}\n\t\t\tmessage += '\\n\\nPlease fill a bug report'\n\t\t\tthrow new ImplementationException(message)\n\t\t}\n\n\t\treturn diffs\n\t}\n}\n\nexport class InvalidSchemaException extends Error {\n\tconstructor(message: string, public readonly validationErrors: ValidationError[]) {\n\t\tsuper(message)\n\t}\n}\n"],"names":["SchemaValidator","RemoveIndexNamesDiffer","UpdateSettingsDiffer","ConvertOneToManyRelationDiffer","ConvertOneHasManyToManyHasManyRelationDiffer","ConvertOneHasManyToOneHasOneRelationDiffer","RemoveUniqueConstraintDiffer","RemoveIndexDiffer","RemoveViewDiffer","RemoveEntityDiffer","RemoveFieldDiffer","CreateEnumDiffer","UpdateEntityTableNameDiffer","ToggleEventLogDiffer","ToggleJunctionEventLogDiffer","UpdateColumnDefinitionDiffer","UpdateColumnNameDiffer","UpdateRelationOnDeleteDiffer","MakeRelationNotNullDiffer","MakeRelationNullableDiffer","EnableOrphanRemovalDiffer","DisableOrphanRemovalDiffer","UpdateRelationOrderByDiffer","UpdateEnumDiffer","RemoveChangedFieldDiffer","isRelation","isOwningRelation","isInverseRelation","CreateEntityDiffer","CreateColumnDiffer","CreateRelationDiffer","CreateViewDiffer","CreateRelationInverseSideDiffer","CreateUniqueConstraintDiffer","CreateIndexDiffer","RemoveEnumDiffer","UpdateAclSchemaDiffer","UpdateValidationSchemaDiffer","UpdateEntityOrderByDiffer","UpdateTargetDiffer","CreateTargetDiffer","UpdateTriggerDiffer","CreateTriggerDiffer","RemoveTriggerDiffer","RemoveTargetDiffer","VERSION_LATEST","deepCompare","compareArraysIgnoreOrder","ImplementationException"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { SchemaValidator,
|
|
1
|
+
import { SchemaValidator, isRelation, isOwningRelation, isInverseRelation, deepCompare, compareArraysIgnoreOrder } from "@contember/schema-utils";
|
|
2
2
|
import { ImplementationException } from "./exceptions.js";
|
|
3
3
|
import "rfc6902";
|
|
4
4
|
import { UpdateAclSchemaDiffer } from "./modifications/acl/UpdateAclSchemaModification.js";
|
|
@@ -46,8 +46,9 @@ import { UpdateSettingsDiffer } from "./modifications/settings/UpdateSettingsMod
|
|
|
46
46
|
import { RemoveIndexNamesDiffer } from "./modifications/upgrade/RemoveIndexNamesModification.js";
|
|
47
47
|
import { ConvertOneHasManyToOneHasOneRelationDiffer } from "./modifications/relations/ConvertOneHasManyToOneHasOneRelationModification.js";
|
|
48
48
|
class SchemaDiffer {
|
|
49
|
-
constructor(schemaMigrator) {
|
|
49
|
+
constructor(schemaMigrator, options) {
|
|
50
50
|
this.schemaMigrator = schemaMigrator;
|
|
51
|
+
this.options = options;
|
|
51
52
|
}
|
|
52
53
|
diffSchemas(originalSchema, updatedSchema, {
|
|
53
54
|
skipInitialSchemaValidation = false,
|
|
@@ -97,8 +98,8 @@ class SchemaDiffer {
|
|
|
97
98
|
new CreateUniqueConstraintDiffer(),
|
|
98
99
|
new CreateIndexDiffer(),
|
|
99
100
|
new RemoveEnumDiffer(),
|
|
100
|
-
new UpdateAclSchemaDiffer(),
|
|
101
|
-
new UpdateValidationSchemaDiffer(),
|
|
101
|
+
new UpdateAclSchemaDiffer(this.options),
|
|
102
|
+
new UpdateValidationSchemaDiffer(this.options),
|
|
102
103
|
new UpdateEntityOrderByDiffer(),
|
|
103
104
|
new UpdateTargetDiffer(),
|
|
104
105
|
new CreateTargetDiffer(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaDiffer.js","sources":["../../../../packages/schema-migrations/src/SchemaDiffer.ts"],"sourcesContent":["import { Schema } from '@contember/schema'\nimport { compareArraysIgnoreOrder, deepCompare, isInverseRelation, isOwningRelation, isRelation, SchemaValidator, ValidationError } from '@contember/schema-utils'\nimport { SchemaMigrator } from './SchemaMigrator'\nimport { Migration } from './Migration'\nimport { ImplementationException } from './exceptions'\nimport {\n\tConvertOneHasManyToManyHasManyRelationDiffer,\n\tConvertOneToManyRelationDiffer,\n\tCreateColumnDiffer,\n\tCreateEntityDiffer,\n\tCreateEnumDiffer,\n\tCreateRelationDiffer,\n\tCreateRelationInverseSideDiffer,\n\tCreateUniqueConstraintDiffer,\n\tCreateViewDiffer,\n\tDiffer,\n\tDisableOrphanRemovalDiffer,\n\tEnableOrphanRemovalDiffer,\n\tMakeRelationNotNullDiffer,\n\tMakeRelationNullableDiffer,\n\tRemoveEntityDiffer,\n\tRemoveEnumDiffer,\n\tRemoveFieldDiffer,\n\tRemoveUniqueConstraintDiffer,\n\tToggleEventLogDiffer,\n\tToggleJunctionEventLogDiffer,\n\tUpdateAclSchemaDiffer,\n\tUpdateColumnDefinitionDiffer,\n\tUpdateColumnNameDiffer,\n\tUpdateEntityOrderByDiffer,\n\tUpdateEntityTableNameDiffer,\n\tUpdateEnumDiffer,\n\tUpdateRelationOnDeleteDiffer,\n\tUpdateRelationOrderByDiffer,\n\tUpdateValidationSchemaDiffer,\n\tVERSION_LATEST,\n} from './modifications'\nimport { RemoveChangedFieldDiffer, RemoveViewDiffer } from './modifications/differs'\nimport { CreateIndexDiffer, RemoveIndexDiffer } from './modifications/indexes'\nimport { CreateTriggerDiffer, RemoveTriggerDiffer, UpdateTriggerDiffer } from './modifications/actions'\nimport { UpdateTargetDiffer } from './modifications/actions/UpdateTargetModification'\nimport { CreateTargetDiffer } from './modifications/actions/CreateTargetModification'\nimport { RemoveTargetDiffer } from './modifications/actions/RemoveTargetModification'\nimport { UpdateSettingsDiffer } from './modifications/settings'\nimport { RemoveIndexNamesDiffer } from './modifications/upgrade/RemoveIndexNamesModification'\nimport { ConvertOneHasManyToOneHasOneRelationDiffer } from './modifications/relations/ConvertOneHasManyToOneHasOneRelationModification'\n\ntype DiffOptions = { skipRecreateValidation?: boolean; skipInitialSchemaValidation?: boolean }\n\nexport class SchemaDiffer {\n\tconstructor(
|
|
1
|
+
{"version":3,"file":"SchemaDiffer.js","sources":["../../../../packages/schema-migrations/src/SchemaDiffer.ts"],"sourcesContent":["import { Schema } from '@contember/schema'\nimport { compareArraysIgnoreOrder, deepCompare, isInverseRelation, isOwningRelation, isRelation, SchemaValidator, ValidationError } from '@contember/schema-utils'\nimport { SchemaMigrator } from './SchemaMigrator'\nimport { Migration } from './Migration'\nimport { ImplementationException } from './exceptions'\nimport {\n\tConvertOneHasManyToManyHasManyRelationDiffer,\n\tConvertOneToManyRelationDiffer,\n\tCreateColumnDiffer,\n\tCreateEntityDiffer,\n\tCreateEnumDiffer,\n\tCreateRelationDiffer,\n\tCreateRelationInverseSideDiffer,\n\tCreateUniqueConstraintDiffer,\n\tCreateViewDiffer,\n\tDiffer,\n\tDisableOrphanRemovalDiffer,\n\tEnableOrphanRemovalDiffer,\n\tMakeRelationNotNullDiffer,\n\tMakeRelationNullableDiffer,\n\tRemoveEntityDiffer,\n\tRemoveEnumDiffer,\n\tRemoveFieldDiffer,\n\tRemoveUniqueConstraintDiffer,\n\tToggleEventLogDiffer,\n\tToggleJunctionEventLogDiffer,\n\tUpdateAclSchemaDiffer,\n\tUpdateColumnDefinitionDiffer,\n\tUpdateColumnNameDiffer,\n\tUpdateEntityOrderByDiffer,\n\tUpdateEntityTableNameDiffer,\n\tUpdateEnumDiffer,\n\tUpdateRelationOnDeleteDiffer,\n\tUpdateRelationOrderByDiffer,\n\tUpdateValidationSchemaDiffer,\n\tVERSION_LATEST,\n} from './modifications'\nimport { RemoveChangedFieldDiffer, RemoveViewDiffer } from './modifications/differs'\nimport { CreateIndexDiffer, RemoveIndexDiffer } from './modifications/indexes'\nimport { CreateTriggerDiffer, RemoveTriggerDiffer, UpdateTriggerDiffer } from './modifications/actions'\nimport { UpdateTargetDiffer } from './modifications/actions/UpdateTargetModification'\nimport { CreateTargetDiffer } from './modifications/actions/CreateTargetModification'\nimport { RemoveTargetDiffer } from './modifications/actions/RemoveTargetModification'\nimport { UpdateSettingsDiffer } from './modifications/settings'\nimport { RemoveIndexNamesDiffer } from './modifications/upgrade/RemoveIndexNamesModification'\nimport { ConvertOneHasManyToOneHasOneRelationDiffer } from './modifications/relations/ConvertOneHasManyToOneHasOneRelationModification'\n\ntype DiffOptions = { skipRecreateValidation?: boolean; skipInitialSchemaValidation?: boolean }\n\nexport class SchemaDiffer {\n\tconstructor(\n\t\tprivate readonly schemaMigrator: SchemaMigrator,\n\t\tprivate readonly options?: {\n\t\t\tmaxPatchSize?: number\n\t\t},\n\t) {}\n\n\tdiffSchemas(originalSchema: Schema, updatedSchema: Schema, {\n\t\tskipInitialSchemaValidation = false,\n\t\tskipRecreateValidation = false,\n\t}: DiffOptions = {}): Migration.Modification[] {\n\t\tif (!skipInitialSchemaValidation) {\n\t\t\tconst originalErrors = SchemaValidator.validate(originalSchema)\n\t\t\tif (originalErrors.length > 0) {\n\t\t\t\tthrow new InvalidSchemaException('original schema is not valid', originalErrors)\n\t\t\t}\n\t\t}\n\t\tconst updatedErrors = SchemaValidator.validate(updatedSchema)\n\t\tif (updatedErrors.length > 0) {\n\t\t\tthrow new InvalidSchemaException('updated schema is not valid', updatedErrors)\n\t\t}\n\n\t\tconst differs: Differ[] = [\n\t\t\tnew RemoveIndexNamesDiffer(),\n\t\t\tnew UpdateSettingsDiffer(),\n\t\t\tnew ConvertOneToManyRelationDiffer(),\n\t\t\tnew ConvertOneHasManyToManyHasManyRelationDiffer(),\n\t\t\tnew ConvertOneHasManyToOneHasOneRelationDiffer(),\n\t\t\tnew RemoveUniqueConstraintDiffer(),\n\t\t\tnew RemoveIndexDiffer(),\n\t\t\tnew RemoveViewDiffer(),\n\t\t\tnew RemoveEntityDiffer(),\n\t\t\tnew RemoveFieldDiffer(),\n\t\t\tnew CreateEnumDiffer(),\n\t\t\tnew UpdateEntityTableNameDiffer(),\n\t\t\tnew ToggleEventLogDiffer(),\n\t\t\tnew ToggleJunctionEventLogDiffer(),\n\t\t\tnew UpdateColumnDefinitionDiffer(),\n\t\t\tnew UpdateColumnNameDiffer(),\n\t\t\tnew UpdateRelationOnDeleteDiffer(),\n\t\t\tnew MakeRelationNotNullDiffer(),\n\t\t\tnew MakeRelationNullableDiffer(),\n\t\t\tnew EnableOrphanRemovalDiffer(),\n\t\t\tnew DisableOrphanRemovalDiffer(),\n\t\t\tnew UpdateRelationOrderByDiffer(),\n\t\t\tnew UpdateEnumDiffer(),\n\t\t\tnew RemoveChangedFieldDiffer(it => !isRelation(it) || isOwningRelation(it)),\n\t\t\tnew RemoveChangedFieldDiffer(it => isRelation(it) && isInverseRelation(it)),\n\t\t\tnew CreateEntityDiffer(),\n\t\t\tnew CreateColumnDiffer(),\n\t\t\tnew CreateRelationDiffer(),\n\t\t\tnew CreateViewDiffer(),\n\t\t\tnew CreateRelationInverseSideDiffer(),\n\t\t\tnew CreateUniqueConstraintDiffer(),\n\t\t\tnew CreateIndexDiffer(),\n\t\t\tnew RemoveEnumDiffer(),\n\t\t\tnew UpdateAclSchemaDiffer(this.options),\n\t\t\tnew UpdateValidationSchemaDiffer(this.options),\n\t\t\tnew UpdateEntityOrderByDiffer(),\n\t\t\tnew UpdateTargetDiffer(),\n\t\t\tnew CreateTargetDiffer(),\n\t\t\tnew UpdateTriggerDiffer(),\n\t\t\tnew CreateTriggerDiffer(),\n\t\t\tnew RemoveTriggerDiffer(),\n\t\t\tnew RemoveTargetDiffer(),\n\t\t]\n\n\t\tconst diffs: Migration.Modification[] = []\n\t\tlet appliedDiffsSchema = originalSchema\n\t\tfor (const differ of differs) {\n\t\t\tconst differDiffs = differ.createDiff(appliedDiffsSchema, updatedSchema)\n\t\t\tappliedDiffsSchema = this.schemaMigrator.applyModifications(appliedDiffsSchema, differDiffs, VERSION_LATEST)\n\t\t\tdiffs.push(...differDiffs)\n\t\t}\n\n\t\tif (!skipRecreateValidation) {\n\t\t\tconst errors = deepCompare(updatedSchema, appliedDiffsSchema, [], path => {\n\t\t\t\tif (path[0] === 'model' && path[1] === 'entities' && (path[3] === 'unique' || path[3] === 'index')) {\n\t\t\t\t\treturn (a, b) => {\n\t\t\t\t\t\treturn compareArraysIgnoreOrder(a, b, path)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn null\n\t\t\t})\n\t\t\tif (errors.length === 0) {\n\t\t\t\treturn diffs\n\t\t\t}\n\t\t\tlet message = 'Updated schema cannot be recreated by the generated diff:'\n\t\t\tfor (const err of errors) {\n\t\t\t\tmessage += '\\n\\t' + err.path.join('.') + ': ' + err.message\n\t\t\t}\n\t\t\tmessage += '\\n\\nPlease fill a bug report'\n\t\t\tthrow new ImplementationException(message)\n\t\t}\n\n\t\treturn diffs\n\t}\n}\n\nexport class InvalidSchemaException extends Error {\n\tconstructor(message: string, public readonly validationErrors: ValidationError[]) {\n\t\tsuper(message)\n\t}\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -25,12 +25,15 @@ const updateAclSchemaModification = ModificationHandler.createModificationType({
|
|
|
25
25
|
handler: UpdateAclSchemaModificationHandler
|
|
26
26
|
});
|
|
27
27
|
class UpdateAclSchemaDiffer {
|
|
28
|
+
constructor(options) {
|
|
29
|
+
this.options = options;
|
|
30
|
+
}
|
|
28
31
|
createDiff(originalSchema, updatedSchema) {
|
|
29
32
|
if (deepEqual(originalSchema.acl, updatedSchema.acl)) {
|
|
30
33
|
return [];
|
|
31
34
|
}
|
|
32
35
|
const patch = rfc6902.createPatch(originalSchema.acl, updatedSchema.acl);
|
|
33
|
-
if (patch.length <= 100) {
|
|
36
|
+
if (patch.length <= (this.options?.maxPatchSize ?? 100)) {
|
|
34
37
|
return [PatchAclSchemaModification.patchAclSchemaModification.createModification({ patch })];
|
|
35
38
|
}
|
|
36
39
|
return [updateAclSchemaModification.createModification({ schema: updatedSchema.acl })];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UpdateAclSchemaModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/acl/UpdateAclSchemaModification.ts"],"sourcesContent":["import { Acl, Schema } from '@contember/schema'\nimport { SchemaUpdater } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'\nimport deepEqual from 'fast-deep-equal'\nimport { createPatch } from 'rfc6902'\nimport { patchAclSchemaModification } from './PatchAclSchemaModification'\n\nexport class UpdateAclSchemaModificationHandler implements ModificationHandler<UpdateAclSchemaModificationData>{\n\tconstructor(private readonly data: UpdateAclSchemaModificationData) {}\n\n\tpublic createSql(): void {}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn ({ schema }) => ({\n\t\t\t...schema,\n\t\t\tacl: this.data.schema,\n\t\t})\n\t}\n\n\tdescribe() {\n\t\treturn { message: 'Update ACL schema' }\n\t}\n}\n\nexport interface UpdateAclSchemaModificationData {\n\tschema: Acl.Schema\n}\n\nexport const updateAclSchemaModification = createModificationType({\n\tid: 'updateAclSchema',\n\thandler: UpdateAclSchemaModificationHandler,\n})\n\nexport class UpdateAclSchemaDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\tif (deepEqual(originalSchema.acl, updatedSchema.acl)) {\n\t\t\treturn []\n\t\t}\n\t\tconst patch = createPatch(originalSchema.acl, updatedSchema.acl)\n\t\tif (patch.length <= 100) {\n\t\t\treturn [patchAclSchemaModification.createModification({ patch })]\n\t\t}\n\t\treturn [updateAclSchemaModification.createModification({ schema: updatedSchema.acl })]\n\t}\n}\n"],"names":["createModificationType","createPatch","patchAclSchemaModification"],"mappings":";;;;;;AAOO,MAAM,mCAAkG;AAAA,EAC9G,YAA6B,MAAuC;AAAvC,SAAA,OAAA;AAAA,EAAA;AAAA,EAEtB,YAAkB;AAAA,EAAA;AAAA,EAElB,mBAAkC;AACjC,WAAA,CAAC,EAAE,cAAc;AAAA,MACvB,GAAG;AAAA,MACH,KAAK,KAAK,KAAK;AAAA,IAAA;AAAA,EAChB;AAAA,EAGD,WAAW;AACH,WAAA,EAAE,SAAS,oBAAoB;AAAA,EAAA;AAExC;AAMO,MAAM,8BAA8BA,oBAAAA,uBAAuB;AAAA,EACjE,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAEM,MAAM,sBAAwC;AAAA,EACpD,WAAW,gBAAwB,eAAuB;AACzD,QAAI,UAAU,eAAe,KAAK,cAAc,GAAG,GAAG;AACrD,aAAO,CAAC;AAAA,IAAA;AAET,UAAM,QAAQC,QAAAA,YAAY,eAAe,KAAK,cAAc,GAAG;
|
|
1
|
+
{"version":3,"file":"UpdateAclSchemaModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/acl/UpdateAclSchemaModification.ts"],"sourcesContent":["import { Acl, Schema } from '@contember/schema'\nimport { SchemaUpdater } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'\nimport deepEqual from 'fast-deep-equal'\nimport { createPatch } from 'rfc6902'\nimport { patchAclSchemaModification } from './PatchAclSchemaModification'\n\nexport class UpdateAclSchemaModificationHandler implements ModificationHandler<UpdateAclSchemaModificationData>{\n\tconstructor(private readonly data: UpdateAclSchemaModificationData) {}\n\n\tpublic createSql(): void {}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn ({ schema }) => ({\n\t\t\t...schema,\n\t\t\tacl: this.data.schema,\n\t\t})\n\t}\n\n\tdescribe() {\n\t\treturn { message: 'Update ACL schema' }\n\t}\n}\n\nexport interface UpdateAclSchemaModificationData {\n\tschema: Acl.Schema\n}\n\nexport const updateAclSchemaModification = createModificationType({\n\tid: 'updateAclSchema',\n\thandler: UpdateAclSchemaModificationHandler,\n})\n\nexport class UpdateAclSchemaDiffer implements Differ {\n\tconstructor(\n\t\tprivate readonly options?: {\n\t\t\tmaxPatchSize?: number\n\t\t},\n\t) {\n\t}\n\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\tif (deepEqual(originalSchema.acl, updatedSchema.acl)) {\n\t\t\treturn []\n\t\t}\n\t\tconst patch = createPatch(originalSchema.acl, updatedSchema.acl)\n\t\tif (patch.length <= (this.options?.maxPatchSize ?? 100)) {\n\t\t\treturn [patchAclSchemaModification.createModification({ patch })]\n\t\t}\n\t\treturn [updateAclSchemaModification.createModification({ schema: updatedSchema.acl })]\n\t}\n}\n"],"names":["createModificationType","createPatch","patchAclSchemaModification"],"mappings":";;;;;;AAOO,MAAM,mCAAkG;AAAA,EAC9G,YAA6B,MAAuC;AAAvC,SAAA,OAAA;AAAA,EAAA;AAAA,EAEtB,YAAkB;AAAA,EAAA;AAAA,EAElB,mBAAkC;AACjC,WAAA,CAAC,EAAE,cAAc;AAAA,MACvB,GAAG;AAAA,MACH,KAAK,KAAK,KAAK;AAAA,IAAA;AAAA,EAChB;AAAA,EAGD,WAAW;AACH,WAAA,EAAE,SAAS,oBAAoB;AAAA,EAAA;AAExC;AAMO,MAAM,8BAA8BA,oBAAAA,uBAAuB;AAAA,EACjE,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAEM,MAAM,sBAAwC;AAAA,EACpD,YACkB,SAGhB;AAHgB,SAAA,UAAA;AAAA,EAAA;AAAA,EAMlB,WAAW,gBAAwB,eAAuB;AACzD,QAAI,UAAU,eAAe,KAAK,cAAc,GAAG,GAAG;AACrD,aAAO,CAAC;AAAA,IAAA;AAET,UAAM,QAAQC,QAAAA,YAAY,eAAe,KAAK,cAAc,GAAG;AAC/D,QAAI,MAAM,WAAW,KAAK,SAAS,gBAAgB,MAAM;AACxD,aAAO,CAACC,2BAAAA,2BAA2B,mBAAmB,EAAE,MAAO,CAAA,CAAC;AAAA,IAAA;AAE1D,WAAA,CAAC,4BAA4B,mBAAmB,EAAE,QAAQ,cAAc,IAAA,CAAK,CAAC;AAAA,EAAA;AAEvF;;;;"}
|
|
@@ -23,12 +23,15 @@ const updateAclSchemaModification = createModificationType({
|
|
|
23
23
|
handler: UpdateAclSchemaModificationHandler
|
|
24
24
|
});
|
|
25
25
|
class UpdateAclSchemaDiffer {
|
|
26
|
+
constructor(options) {
|
|
27
|
+
this.options = options;
|
|
28
|
+
}
|
|
26
29
|
createDiff(originalSchema, updatedSchema) {
|
|
27
30
|
if (deepEqual(originalSchema.acl, updatedSchema.acl)) {
|
|
28
31
|
return [];
|
|
29
32
|
}
|
|
30
33
|
const patch = createPatch(originalSchema.acl, updatedSchema.acl);
|
|
31
|
-
if (patch.length <= 100) {
|
|
34
|
+
if (patch.length <= (this.options?.maxPatchSize ?? 100)) {
|
|
32
35
|
return [patchAclSchemaModification.createModification({ patch })];
|
|
33
36
|
}
|
|
34
37
|
return [updateAclSchemaModification.createModification({ schema: updatedSchema.acl })];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UpdateAclSchemaModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/acl/UpdateAclSchemaModification.ts"],"sourcesContent":["import { Acl, Schema } from '@contember/schema'\nimport { SchemaUpdater } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'\nimport deepEqual from 'fast-deep-equal'\nimport { createPatch } from 'rfc6902'\nimport { patchAclSchemaModification } from './PatchAclSchemaModification'\n\nexport class UpdateAclSchemaModificationHandler implements ModificationHandler<UpdateAclSchemaModificationData>{\n\tconstructor(private readonly data: UpdateAclSchemaModificationData) {}\n\n\tpublic createSql(): void {}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn ({ schema }) => ({\n\t\t\t...schema,\n\t\t\tacl: this.data.schema,\n\t\t})\n\t}\n\n\tdescribe() {\n\t\treturn { message: 'Update ACL schema' }\n\t}\n}\n\nexport interface UpdateAclSchemaModificationData {\n\tschema: Acl.Schema\n}\n\nexport const updateAclSchemaModification = createModificationType({\n\tid: 'updateAclSchema',\n\thandler: UpdateAclSchemaModificationHandler,\n})\n\nexport class UpdateAclSchemaDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\tif (deepEqual(originalSchema.acl, updatedSchema.acl)) {\n\t\t\treturn []\n\t\t}\n\t\tconst patch = createPatch(originalSchema.acl, updatedSchema.acl)\n\t\tif (patch.length <= 100) {\n\t\t\treturn [patchAclSchemaModification.createModification({ patch })]\n\t\t}\n\t\treturn [updateAclSchemaModification.createModification({ schema: updatedSchema.acl })]\n\t}\n}\n"],"names":[],"mappings":";;;;AAOO,MAAM,mCAAkG;AAAA,EAC9G,YAA6B,MAAuC;AAAvC,SAAA,OAAA;AAAA,EAAA;AAAA,EAEtB,YAAkB;AAAA,EAAA;AAAA,EAElB,mBAAkC;AACjC,WAAA,CAAC,EAAE,cAAc;AAAA,MACvB,GAAG;AAAA,MACH,KAAK,KAAK,KAAK;AAAA,IAAA;AAAA,EAChB;AAAA,EAGD,WAAW;AACH,WAAA,EAAE,SAAS,oBAAoB;AAAA,EAAA;AAExC;AAMO,MAAM,8BAA8B,uBAAuB;AAAA,EACjE,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAEM,MAAM,sBAAwC;AAAA,EACpD,WAAW,gBAAwB,eAAuB;AACzD,QAAI,UAAU,eAAe,KAAK,cAAc,GAAG,GAAG;AACrD,aAAO,CAAC;AAAA,IAAA;AAET,UAAM,QAAQ,YAAY,eAAe,KAAK,cAAc,GAAG;
|
|
1
|
+
{"version":3,"file":"UpdateAclSchemaModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/acl/UpdateAclSchemaModification.ts"],"sourcesContent":["import { Acl, Schema } from '@contember/schema'\nimport { SchemaUpdater } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'\nimport deepEqual from 'fast-deep-equal'\nimport { createPatch } from 'rfc6902'\nimport { patchAclSchemaModification } from './PatchAclSchemaModification'\n\nexport class UpdateAclSchemaModificationHandler implements ModificationHandler<UpdateAclSchemaModificationData>{\n\tconstructor(private readonly data: UpdateAclSchemaModificationData) {}\n\n\tpublic createSql(): void {}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn ({ schema }) => ({\n\t\t\t...schema,\n\t\t\tacl: this.data.schema,\n\t\t})\n\t}\n\n\tdescribe() {\n\t\treturn { message: 'Update ACL schema' }\n\t}\n}\n\nexport interface UpdateAclSchemaModificationData {\n\tschema: Acl.Schema\n}\n\nexport const updateAclSchemaModification = createModificationType({\n\tid: 'updateAclSchema',\n\thandler: UpdateAclSchemaModificationHandler,\n})\n\nexport class UpdateAclSchemaDiffer implements Differ {\n\tconstructor(\n\t\tprivate readonly options?: {\n\t\t\tmaxPatchSize?: number\n\t\t},\n\t) {\n\t}\n\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\tif (deepEqual(originalSchema.acl, updatedSchema.acl)) {\n\t\t\treturn []\n\t\t}\n\t\tconst patch = createPatch(originalSchema.acl, updatedSchema.acl)\n\t\tif (patch.length <= (this.options?.maxPatchSize ?? 100)) {\n\t\t\treturn [patchAclSchemaModification.createModification({ patch })]\n\t\t}\n\t\treturn [updateAclSchemaModification.createModification({ schema: updatedSchema.acl })]\n\t}\n}\n"],"names":[],"mappings":";;;;AAOO,MAAM,mCAAkG;AAAA,EAC9G,YAA6B,MAAuC;AAAvC,SAAA,OAAA;AAAA,EAAA;AAAA,EAEtB,YAAkB;AAAA,EAAA;AAAA,EAElB,mBAAkC;AACjC,WAAA,CAAC,EAAE,cAAc;AAAA,MACvB,GAAG;AAAA,MACH,KAAK,KAAK,KAAK;AAAA,IAAA;AAAA,EAChB;AAAA,EAGD,WAAW;AACH,WAAA,EAAE,SAAS,oBAAoB;AAAA,EAAA;AAExC;AAMO,MAAM,8BAA8B,uBAAuB;AAAA,EACjE,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAEM,MAAM,sBAAwC;AAAA,EACpD,YACkB,SAGhB;AAHgB,SAAA,UAAA;AAAA,EAAA;AAAA,EAMlB,WAAW,gBAAwB,eAAuB;AACzD,QAAI,UAAU,eAAe,KAAK,cAAc,GAAG,GAAG;AACrD,aAAO,CAAC;AAAA,IAAA;AAET,UAAM,QAAQ,YAAY,eAAe,KAAK,cAAc,GAAG;AAC/D,QAAI,MAAM,WAAW,KAAK,SAAS,gBAAgB,MAAM;AACxD,aAAO,CAAC,2BAA2B,mBAAmB,EAAE,MAAO,CAAA,CAAC;AAAA,IAAA;AAE1D,WAAA,CAAC,4BAA4B,mBAAmB,EAAE,QAAQ,cAAc,IAAA,CAAK,CAAC;AAAA,EAAA;AAEvF;"}
|
package/dist/development/src/modifications/validation/UpdateValidationSchemaModification.cjs
CHANGED
|
@@ -25,12 +25,15 @@ const updateValidationSchemaModification = ModificationHandler.createModificatio
|
|
|
25
25
|
handler: UpdateValidationSchemaModificationHandler
|
|
26
26
|
});
|
|
27
27
|
class UpdateValidationSchemaDiffer {
|
|
28
|
+
constructor(options) {
|
|
29
|
+
this.options = options;
|
|
30
|
+
}
|
|
28
31
|
createDiff(originalSchema, updatedSchema) {
|
|
29
32
|
if (deepEqual(originalSchema.validation, updatedSchema.validation)) {
|
|
30
33
|
return [];
|
|
31
34
|
}
|
|
32
35
|
const patch = rfc6902.createPatch(originalSchema.validation, updatedSchema.validation);
|
|
33
|
-
if (patch.length <=
|
|
36
|
+
if (patch.length <= (this.options?.maxPatchSize ?? 100)) {
|
|
34
37
|
return [PatchValidationSchemaModification.patchValidationSchemaModification.createModification({ patch })];
|
|
35
38
|
}
|
|
36
39
|
return [updateValidationSchemaModification.createModification({ schema: updatedSchema.validation })];
|
package/dist/development/src/modifications/validation/UpdateValidationSchemaModification.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UpdateValidationSchemaModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/validation/UpdateValidationSchemaModification.ts"],"sourcesContent":["import { Schema, Validation } from '@contember/schema'\nimport { SchemaUpdater } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'\nimport deepEqual from 'fast-deep-equal'\nimport { createPatch } from 'rfc6902'\nimport { patchValidationSchemaModification } from './PatchValidationSchemaModification'\n\nexport class UpdateValidationSchemaModificationHandler implements ModificationHandler<UpdateValidationSchemaModificationData> {\n\tconstructor(private readonly data: UpdateValidationSchemaModificationData) {}\n\n\tpublic createSql(): void {}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn ({ schema }) => ({\n\t\t\t...schema,\n\t\t\tvalidation: this.data.schema,\n\t\t})\n\t}\n\n\tdescribe() {\n\t\treturn { message: 'Update validation schema' }\n\t}\n\n}\n\nexport interface UpdateValidationSchemaModificationData {\n\tschema: Validation.Schema\n}\n\nexport const updateValidationSchemaModification = createModificationType({\n\tid: 'updateValidationSchema',\n\thandler: UpdateValidationSchemaModificationHandler,\n})\n\nexport class UpdateValidationSchemaDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\tif (deepEqual(originalSchema.validation, updatedSchema.validation)) {\n\t\t\treturn []\n\t\t}\n\t\tconst patch = createPatch(originalSchema.validation, updatedSchema.validation)\n\t\tif (patch.length <=
|
|
1
|
+
{"version":3,"file":"UpdateValidationSchemaModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/validation/UpdateValidationSchemaModification.ts"],"sourcesContent":["import { Schema, Validation } from '@contember/schema'\nimport { SchemaUpdater } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'\nimport deepEqual from 'fast-deep-equal'\nimport { createPatch } from 'rfc6902'\nimport { patchValidationSchemaModification } from './PatchValidationSchemaModification'\n\nexport class UpdateValidationSchemaModificationHandler implements ModificationHandler<UpdateValidationSchemaModificationData> {\n\tconstructor(private readonly data: UpdateValidationSchemaModificationData) {}\n\n\tpublic createSql(): void {}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn ({ schema }) => ({\n\t\t\t...schema,\n\t\t\tvalidation: this.data.schema,\n\t\t})\n\t}\n\n\tdescribe() {\n\t\treturn { message: 'Update validation schema' }\n\t}\n\n}\n\nexport interface UpdateValidationSchemaModificationData {\n\tschema: Validation.Schema\n}\n\nexport const updateValidationSchemaModification = createModificationType({\n\tid: 'updateValidationSchema',\n\thandler: UpdateValidationSchemaModificationHandler,\n})\n\nexport class UpdateValidationSchemaDiffer implements Differ {\n\tconstructor(\n\t\tprivate readonly options?: {\n\t\t\tmaxPatchSize?: number\n\t\t},\n\t) {\n\t}\n\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\tif (deepEqual(originalSchema.validation, updatedSchema.validation)) {\n\t\t\treturn []\n\t\t}\n\t\tconst patch = createPatch(originalSchema.validation, updatedSchema.validation)\n\t\tif (patch.length <= (this.options?.maxPatchSize ?? 100)) {\n\t\t\treturn [patchValidationSchemaModification.createModification({ patch })]\n\t\t}\n\t\treturn [updateValidationSchemaModification.createModification({ schema: updatedSchema.validation })]\n\t}\n}\n"],"names":["createModificationType","createPatch","patchValidationSchemaModification"],"mappings":";;;;;;AAOO,MAAM,0CAAiH;AAAA,EAC7H,YAA6B,MAA8C;AAA9C,SAAA,OAAA;AAAA,EAAA;AAAA,EAEtB,YAAkB;AAAA,EAAA;AAAA,EAElB,mBAAkC;AACjC,WAAA,CAAC,EAAE,cAAc;AAAA,MACvB,GAAG;AAAA,MACH,YAAY,KAAK,KAAK;AAAA,IAAA;AAAA,EACvB;AAAA,EAGD,WAAW;AACH,WAAA,EAAE,SAAS,2BAA2B;AAAA,EAAA;AAG/C;AAMO,MAAM,qCAAqCA,oBAAAA,uBAAuB;AAAA,EACxE,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAEM,MAAM,6BAA+C;AAAA,EAC3D,YACkB,SAGhB;AAHgB,SAAA,UAAA;AAAA,EAAA;AAAA,EAMlB,WAAW,gBAAwB,eAAuB;AACzD,QAAI,UAAU,eAAe,YAAY,cAAc,UAAU,GAAG;AACnE,aAAO,CAAC;AAAA,IAAA;AAET,UAAM,QAAQC,QAAAA,YAAY,eAAe,YAAY,cAAc,UAAU;AAC7E,QAAI,MAAM,WAAW,KAAK,SAAS,gBAAgB,MAAM;AACxD,aAAO,CAACC,kCAAAA,kCAAkC,mBAAmB,EAAE,MAAO,CAAA,CAAC;AAAA,IAAA;AAEjE,WAAA,CAAC,mCAAmC,mBAAmB,EAAE,QAAQ,cAAc,WAAA,CAAY,CAAC;AAAA,EAAA;AAErG;;;;"}
|
|
@@ -23,12 +23,15 @@ const updateValidationSchemaModification = createModificationType({
|
|
|
23
23
|
handler: UpdateValidationSchemaModificationHandler
|
|
24
24
|
});
|
|
25
25
|
class UpdateValidationSchemaDiffer {
|
|
26
|
+
constructor(options) {
|
|
27
|
+
this.options = options;
|
|
28
|
+
}
|
|
26
29
|
createDiff(originalSchema, updatedSchema) {
|
|
27
30
|
if (deepEqual(originalSchema.validation, updatedSchema.validation)) {
|
|
28
31
|
return [];
|
|
29
32
|
}
|
|
30
33
|
const patch = createPatch(originalSchema.validation, updatedSchema.validation);
|
|
31
|
-
if (patch.length <=
|
|
34
|
+
if (patch.length <= (this.options?.maxPatchSize ?? 100)) {
|
|
32
35
|
return [patchValidationSchemaModification.createModification({ patch })];
|
|
33
36
|
}
|
|
34
37
|
return [updateValidationSchemaModification.createModification({ schema: updatedSchema.validation })];
|
package/dist/development/src/modifications/validation/UpdateValidationSchemaModification.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UpdateValidationSchemaModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/validation/UpdateValidationSchemaModification.ts"],"sourcesContent":["import { Schema, Validation } from '@contember/schema'\nimport { SchemaUpdater } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'\nimport deepEqual from 'fast-deep-equal'\nimport { createPatch } from 'rfc6902'\nimport { patchValidationSchemaModification } from './PatchValidationSchemaModification'\n\nexport class UpdateValidationSchemaModificationHandler implements ModificationHandler<UpdateValidationSchemaModificationData> {\n\tconstructor(private readonly data: UpdateValidationSchemaModificationData) {}\n\n\tpublic createSql(): void {}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn ({ schema }) => ({\n\t\t\t...schema,\n\t\t\tvalidation: this.data.schema,\n\t\t})\n\t}\n\n\tdescribe() {\n\t\treturn { message: 'Update validation schema' }\n\t}\n\n}\n\nexport interface UpdateValidationSchemaModificationData {\n\tschema: Validation.Schema\n}\n\nexport const updateValidationSchemaModification = createModificationType({\n\tid: 'updateValidationSchema',\n\thandler: UpdateValidationSchemaModificationHandler,\n})\n\nexport class UpdateValidationSchemaDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\tif (deepEqual(originalSchema.validation, updatedSchema.validation)) {\n\t\t\treturn []\n\t\t}\n\t\tconst patch = createPatch(originalSchema.validation, updatedSchema.validation)\n\t\tif (patch.length <=
|
|
1
|
+
{"version":3,"file":"UpdateValidationSchemaModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/validation/UpdateValidationSchemaModification.ts"],"sourcesContent":["import { Schema, Validation } from '@contember/schema'\nimport { SchemaUpdater } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'\nimport deepEqual from 'fast-deep-equal'\nimport { createPatch } from 'rfc6902'\nimport { patchValidationSchemaModification } from './PatchValidationSchemaModification'\n\nexport class UpdateValidationSchemaModificationHandler implements ModificationHandler<UpdateValidationSchemaModificationData> {\n\tconstructor(private readonly data: UpdateValidationSchemaModificationData) {}\n\n\tpublic createSql(): void {}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn ({ schema }) => ({\n\t\t\t...schema,\n\t\t\tvalidation: this.data.schema,\n\t\t})\n\t}\n\n\tdescribe() {\n\t\treturn { message: 'Update validation schema' }\n\t}\n\n}\n\nexport interface UpdateValidationSchemaModificationData {\n\tschema: Validation.Schema\n}\n\nexport const updateValidationSchemaModification = createModificationType({\n\tid: 'updateValidationSchema',\n\thandler: UpdateValidationSchemaModificationHandler,\n})\n\nexport class UpdateValidationSchemaDiffer implements Differ {\n\tconstructor(\n\t\tprivate readonly options?: {\n\t\t\tmaxPatchSize?: number\n\t\t},\n\t) {\n\t}\n\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\tif (deepEqual(originalSchema.validation, updatedSchema.validation)) {\n\t\t\treturn []\n\t\t}\n\t\tconst patch = createPatch(originalSchema.validation, updatedSchema.validation)\n\t\tif (patch.length <= (this.options?.maxPatchSize ?? 100)) {\n\t\t\treturn [patchValidationSchemaModification.createModification({ patch })]\n\t\t}\n\t\treturn [updateValidationSchemaModification.createModification({ schema: updatedSchema.validation })]\n\t}\n}\n"],"names":[],"mappings":";;;;AAOO,MAAM,0CAAiH;AAAA,EAC7H,YAA6B,MAA8C;AAA9C,SAAA,OAAA;AAAA,EAAA;AAAA,EAEtB,YAAkB;AAAA,EAAA;AAAA,EAElB,mBAAkC;AACjC,WAAA,CAAC,EAAE,cAAc;AAAA,MACvB,GAAG;AAAA,MACH,YAAY,KAAK,KAAK;AAAA,IAAA;AAAA,EACvB;AAAA,EAGD,WAAW;AACH,WAAA,EAAE,SAAS,2BAA2B;AAAA,EAAA;AAG/C;AAMO,MAAM,qCAAqC,uBAAuB;AAAA,EACxE,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAEM,MAAM,6BAA+C;AAAA,EAC3D,YACkB,SAGhB;AAHgB,SAAA,UAAA;AAAA,EAAA;AAAA,EAMlB,WAAW,gBAAwB,eAAuB;AACzD,QAAI,UAAU,eAAe,YAAY,cAAc,UAAU,GAAG;AACnE,aAAO,CAAC;AAAA,IAAA;AAET,UAAM,QAAQ,YAAY,eAAe,YAAY,cAAc,UAAU;AAC7E,QAAI,MAAM,WAAW,KAAK,SAAS,gBAAgB,MAAM;AACxD,aAAO,CAAC,kCAAkC,mBAAmB,EAAE,MAAO,CAAA,CAAC;AAAA,IAAA;AAEjE,WAAA,CAAC,mCAAmC,mBAAmB,EAAE,QAAQ,cAAc,WAAA,CAAY,CAAC;AAAA,EAAA;AAErG;"}
|
|
@@ -48,8 +48,9 @@ const UpdateSettingsModification = require("./modifications/settings/UpdateSetti
|
|
|
48
48
|
const RemoveIndexNamesModification = require("./modifications/upgrade/RemoveIndexNamesModification.cjs");
|
|
49
49
|
const ConvertOneHasManyToOneHasOneRelationModification = require("./modifications/relations/ConvertOneHasManyToOneHasOneRelationModification.cjs");
|
|
50
50
|
class SchemaDiffer {
|
|
51
|
-
constructor(schemaMigrator) {
|
|
51
|
+
constructor(schemaMigrator, options) {
|
|
52
52
|
this.schemaMigrator = schemaMigrator;
|
|
53
|
+
this.options = options;
|
|
53
54
|
}
|
|
54
55
|
diffSchemas(originalSchema, updatedSchema, {
|
|
55
56
|
skipInitialSchemaValidation = false,
|
|
@@ -99,8 +100,8 @@ class SchemaDiffer {
|
|
|
99
100
|
new CreateUniqueConstraintModification.CreateUniqueConstraintDiffer(),
|
|
100
101
|
new CreateIndexModification.CreateIndexDiffer(),
|
|
101
102
|
new RemoveEnumModification.RemoveEnumDiffer(),
|
|
102
|
-
new UpdateAclSchemaModification.UpdateAclSchemaDiffer(),
|
|
103
|
-
new UpdateValidationSchemaModification.UpdateValidationSchemaDiffer(),
|
|
103
|
+
new UpdateAclSchemaModification.UpdateAclSchemaDiffer(this.options),
|
|
104
|
+
new UpdateValidationSchemaModification.UpdateValidationSchemaDiffer(this.options),
|
|
104
105
|
new UpdateEntityOrderByModification.UpdateEntityOrderByDiffer(),
|
|
105
106
|
new UpdateTargetModification.UpdateTargetDiffer(),
|
|
106
107
|
new CreateTargetModification.CreateTargetDiffer(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaDiffer.cjs","sources":["../../../../packages/schema-migrations/src/SchemaDiffer.ts"],"sourcesContent":["import { Schema } from '@contember/schema'\nimport { compareArraysIgnoreOrder, deepCompare, isInverseRelation, isOwningRelation, isRelation, SchemaValidator, ValidationError } from '@contember/schema-utils'\nimport { SchemaMigrator } from './SchemaMigrator'\nimport { Migration } from './Migration'\nimport { ImplementationException } from './exceptions'\nimport {\n\tConvertOneHasManyToManyHasManyRelationDiffer,\n\tConvertOneToManyRelationDiffer,\n\tCreateColumnDiffer,\n\tCreateEntityDiffer,\n\tCreateEnumDiffer,\n\tCreateRelationDiffer,\n\tCreateRelationInverseSideDiffer,\n\tCreateUniqueConstraintDiffer,\n\tCreateViewDiffer,\n\tDiffer,\n\tDisableOrphanRemovalDiffer,\n\tEnableOrphanRemovalDiffer,\n\tMakeRelationNotNullDiffer,\n\tMakeRelationNullableDiffer,\n\tRemoveEntityDiffer,\n\tRemoveEnumDiffer,\n\tRemoveFieldDiffer,\n\tRemoveUniqueConstraintDiffer,\n\tToggleEventLogDiffer,\n\tToggleJunctionEventLogDiffer,\n\tUpdateAclSchemaDiffer,\n\tUpdateColumnDefinitionDiffer,\n\tUpdateColumnNameDiffer,\n\tUpdateEntityOrderByDiffer,\n\tUpdateEntityTableNameDiffer,\n\tUpdateEnumDiffer,\n\tUpdateRelationOnDeleteDiffer,\n\tUpdateRelationOrderByDiffer,\n\tUpdateValidationSchemaDiffer,\n\tVERSION_LATEST,\n} from './modifications'\nimport { RemoveChangedFieldDiffer, RemoveViewDiffer } from './modifications/differs'\nimport { CreateIndexDiffer, RemoveIndexDiffer } from './modifications/indexes'\nimport { CreateTriggerDiffer, RemoveTriggerDiffer, UpdateTriggerDiffer } from './modifications/actions'\nimport { UpdateTargetDiffer } from './modifications/actions/UpdateTargetModification'\nimport { CreateTargetDiffer } from './modifications/actions/CreateTargetModification'\nimport { RemoveTargetDiffer } from './modifications/actions/RemoveTargetModification'\nimport { UpdateSettingsDiffer } from './modifications/settings'\nimport { RemoveIndexNamesDiffer } from './modifications/upgrade/RemoveIndexNamesModification'\nimport { ConvertOneHasManyToOneHasOneRelationDiffer } from './modifications/relations/ConvertOneHasManyToOneHasOneRelationModification'\n\ntype DiffOptions = { skipRecreateValidation?: boolean; skipInitialSchemaValidation?: boolean }\n\nexport class SchemaDiffer {\n\tconstructor(
|
|
1
|
+
{"version":3,"file":"SchemaDiffer.cjs","sources":["../../../../packages/schema-migrations/src/SchemaDiffer.ts"],"sourcesContent":["import { Schema } from '@contember/schema'\nimport { compareArraysIgnoreOrder, deepCompare, isInverseRelation, isOwningRelation, isRelation, SchemaValidator, ValidationError } from '@contember/schema-utils'\nimport { SchemaMigrator } from './SchemaMigrator'\nimport { Migration } from './Migration'\nimport { ImplementationException } from './exceptions'\nimport {\n\tConvertOneHasManyToManyHasManyRelationDiffer,\n\tConvertOneToManyRelationDiffer,\n\tCreateColumnDiffer,\n\tCreateEntityDiffer,\n\tCreateEnumDiffer,\n\tCreateRelationDiffer,\n\tCreateRelationInverseSideDiffer,\n\tCreateUniqueConstraintDiffer,\n\tCreateViewDiffer,\n\tDiffer,\n\tDisableOrphanRemovalDiffer,\n\tEnableOrphanRemovalDiffer,\n\tMakeRelationNotNullDiffer,\n\tMakeRelationNullableDiffer,\n\tRemoveEntityDiffer,\n\tRemoveEnumDiffer,\n\tRemoveFieldDiffer,\n\tRemoveUniqueConstraintDiffer,\n\tToggleEventLogDiffer,\n\tToggleJunctionEventLogDiffer,\n\tUpdateAclSchemaDiffer,\n\tUpdateColumnDefinitionDiffer,\n\tUpdateColumnNameDiffer,\n\tUpdateEntityOrderByDiffer,\n\tUpdateEntityTableNameDiffer,\n\tUpdateEnumDiffer,\n\tUpdateRelationOnDeleteDiffer,\n\tUpdateRelationOrderByDiffer,\n\tUpdateValidationSchemaDiffer,\n\tVERSION_LATEST,\n} from './modifications'\nimport { RemoveChangedFieldDiffer, RemoveViewDiffer } from './modifications/differs'\nimport { CreateIndexDiffer, RemoveIndexDiffer } from './modifications/indexes'\nimport { CreateTriggerDiffer, RemoveTriggerDiffer, UpdateTriggerDiffer } from './modifications/actions'\nimport { UpdateTargetDiffer } from './modifications/actions/UpdateTargetModification'\nimport { CreateTargetDiffer } from './modifications/actions/CreateTargetModification'\nimport { RemoveTargetDiffer } from './modifications/actions/RemoveTargetModification'\nimport { UpdateSettingsDiffer } from './modifications/settings'\nimport { RemoveIndexNamesDiffer } from './modifications/upgrade/RemoveIndexNamesModification'\nimport { ConvertOneHasManyToOneHasOneRelationDiffer } from './modifications/relations/ConvertOneHasManyToOneHasOneRelationModification'\n\ntype DiffOptions = { skipRecreateValidation?: boolean; skipInitialSchemaValidation?: boolean }\n\nexport class SchemaDiffer {\n\tconstructor(\n\t\tprivate readonly schemaMigrator: SchemaMigrator,\n\t\tprivate readonly options?: {\n\t\t\tmaxPatchSize?: number\n\t\t},\n\t) {}\n\n\tdiffSchemas(originalSchema: Schema, updatedSchema: Schema, {\n\t\tskipInitialSchemaValidation = false,\n\t\tskipRecreateValidation = false,\n\t}: DiffOptions = {}): Migration.Modification[] {\n\t\tif (!skipInitialSchemaValidation) {\n\t\t\tconst originalErrors = SchemaValidator.validate(originalSchema)\n\t\t\tif (originalErrors.length > 0) {\n\t\t\t\tthrow new InvalidSchemaException('original schema is not valid', originalErrors)\n\t\t\t}\n\t\t}\n\t\tconst updatedErrors = SchemaValidator.validate(updatedSchema)\n\t\tif (updatedErrors.length > 0) {\n\t\t\tthrow new InvalidSchemaException('updated schema is not valid', updatedErrors)\n\t\t}\n\n\t\tconst differs: Differ[] = [\n\t\t\tnew RemoveIndexNamesDiffer(),\n\t\t\tnew UpdateSettingsDiffer(),\n\t\t\tnew ConvertOneToManyRelationDiffer(),\n\t\t\tnew ConvertOneHasManyToManyHasManyRelationDiffer(),\n\t\t\tnew ConvertOneHasManyToOneHasOneRelationDiffer(),\n\t\t\tnew RemoveUniqueConstraintDiffer(),\n\t\t\tnew RemoveIndexDiffer(),\n\t\t\tnew RemoveViewDiffer(),\n\t\t\tnew RemoveEntityDiffer(),\n\t\t\tnew RemoveFieldDiffer(),\n\t\t\tnew CreateEnumDiffer(),\n\t\t\tnew UpdateEntityTableNameDiffer(),\n\t\t\tnew ToggleEventLogDiffer(),\n\t\t\tnew ToggleJunctionEventLogDiffer(),\n\t\t\tnew UpdateColumnDefinitionDiffer(),\n\t\t\tnew UpdateColumnNameDiffer(),\n\t\t\tnew UpdateRelationOnDeleteDiffer(),\n\t\t\tnew MakeRelationNotNullDiffer(),\n\t\t\tnew MakeRelationNullableDiffer(),\n\t\t\tnew EnableOrphanRemovalDiffer(),\n\t\t\tnew DisableOrphanRemovalDiffer(),\n\t\t\tnew UpdateRelationOrderByDiffer(),\n\t\t\tnew UpdateEnumDiffer(),\n\t\t\tnew RemoveChangedFieldDiffer(it => !isRelation(it) || isOwningRelation(it)),\n\t\t\tnew RemoveChangedFieldDiffer(it => isRelation(it) && isInverseRelation(it)),\n\t\t\tnew CreateEntityDiffer(),\n\t\t\tnew CreateColumnDiffer(),\n\t\t\tnew CreateRelationDiffer(),\n\t\t\tnew CreateViewDiffer(),\n\t\t\tnew CreateRelationInverseSideDiffer(),\n\t\t\tnew CreateUniqueConstraintDiffer(),\n\t\t\tnew CreateIndexDiffer(),\n\t\t\tnew RemoveEnumDiffer(),\n\t\t\tnew UpdateAclSchemaDiffer(this.options),\n\t\t\tnew UpdateValidationSchemaDiffer(this.options),\n\t\t\tnew UpdateEntityOrderByDiffer(),\n\t\t\tnew UpdateTargetDiffer(),\n\t\t\tnew CreateTargetDiffer(),\n\t\t\tnew UpdateTriggerDiffer(),\n\t\t\tnew CreateTriggerDiffer(),\n\t\t\tnew RemoveTriggerDiffer(),\n\t\t\tnew RemoveTargetDiffer(),\n\t\t]\n\n\t\tconst diffs: Migration.Modification[] = []\n\t\tlet appliedDiffsSchema = originalSchema\n\t\tfor (const differ of differs) {\n\t\t\tconst differDiffs = differ.createDiff(appliedDiffsSchema, updatedSchema)\n\t\t\tappliedDiffsSchema = this.schemaMigrator.applyModifications(appliedDiffsSchema, differDiffs, VERSION_LATEST)\n\t\t\tdiffs.push(...differDiffs)\n\t\t}\n\n\t\tif (!skipRecreateValidation) {\n\t\t\tconst errors = deepCompare(updatedSchema, appliedDiffsSchema, [], path => {\n\t\t\t\tif (path[0] === 'model' && path[1] === 'entities' && (path[3] === 'unique' || path[3] === 'index')) {\n\t\t\t\t\treturn (a, b) => {\n\t\t\t\t\t\treturn compareArraysIgnoreOrder(a, b, path)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn null\n\t\t\t})\n\t\t\tif (errors.length === 0) {\n\t\t\t\treturn diffs\n\t\t\t}\n\t\t\tlet message = 'Updated schema cannot be recreated by the generated diff:'\n\t\t\tfor (const err of errors) {\n\t\t\t\tmessage += '\\n\\t' + err.path.join('.') + ': ' + err.message\n\t\t\t}\n\t\t\tmessage += '\\n\\nPlease fill a bug report'\n\t\t\tthrow new ImplementationException(message)\n\t\t}\n\n\t\treturn diffs\n\t}\n}\n\nexport class InvalidSchemaException extends Error {\n\tconstructor(message: string, public readonly validationErrors: ValidationError[]) {\n\t\tsuper(message)\n\t}\n}\n"],"names":["SchemaValidator","RemoveIndexNamesDiffer","UpdateSettingsDiffer","ConvertOneToManyRelationDiffer","ConvertOneHasManyToManyHasManyRelationDiffer","ConvertOneHasManyToOneHasOneRelationDiffer","RemoveUniqueConstraintDiffer","RemoveIndexDiffer","RemoveViewDiffer","RemoveEntityDiffer","RemoveFieldDiffer","CreateEnumDiffer","UpdateEntityTableNameDiffer","ToggleEventLogDiffer","ToggleJunctionEventLogDiffer","UpdateColumnDefinitionDiffer","UpdateColumnNameDiffer","UpdateRelationOnDeleteDiffer","MakeRelationNotNullDiffer","MakeRelationNullableDiffer","EnableOrphanRemovalDiffer","DisableOrphanRemovalDiffer","UpdateRelationOrderByDiffer","UpdateEnumDiffer","RemoveChangedFieldDiffer","isRelation","isOwningRelation","isInverseRelation","CreateEntityDiffer","CreateColumnDiffer","CreateRelationDiffer","CreateViewDiffer","CreateRelationInverseSideDiffer","CreateUniqueConstraintDiffer","CreateIndexDiffer","RemoveEnumDiffer","UpdateAclSchemaDiffer","UpdateValidationSchemaDiffer","UpdateEntityOrderByDiffer","UpdateTargetDiffer","CreateTargetDiffer","UpdateTriggerDiffer","CreateTriggerDiffer","RemoveTriggerDiffer","RemoveTargetDiffer","VERSION_LATEST","deepCompare","compareArraysIgnoreOrder","ImplementationException"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { SchemaValidator,
|
|
1
|
+
import { SchemaValidator, isRelation, isOwningRelation, isInverseRelation, deepCompare, compareArraysIgnoreOrder } from "@contember/schema-utils";
|
|
2
2
|
import { ImplementationException } from "./exceptions.js";
|
|
3
3
|
import "rfc6902";
|
|
4
4
|
import { UpdateAclSchemaDiffer } from "./modifications/acl/UpdateAclSchemaModification.js";
|
|
@@ -46,8 +46,9 @@ import { UpdateSettingsDiffer } from "./modifications/settings/UpdateSettingsMod
|
|
|
46
46
|
import { RemoveIndexNamesDiffer } from "./modifications/upgrade/RemoveIndexNamesModification.js";
|
|
47
47
|
import { ConvertOneHasManyToOneHasOneRelationDiffer } from "./modifications/relations/ConvertOneHasManyToOneHasOneRelationModification.js";
|
|
48
48
|
class SchemaDiffer {
|
|
49
|
-
constructor(schemaMigrator) {
|
|
49
|
+
constructor(schemaMigrator, options) {
|
|
50
50
|
this.schemaMigrator = schemaMigrator;
|
|
51
|
+
this.options = options;
|
|
51
52
|
}
|
|
52
53
|
diffSchemas(originalSchema, updatedSchema, {
|
|
53
54
|
skipInitialSchemaValidation = false,
|
|
@@ -97,8 +98,8 @@ class SchemaDiffer {
|
|
|
97
98
|
new CreateUniqueConstraintDiffer(),
|
|
98
99
|
new CreateIndexDiffer(),
|
|
99
100
|
new RemoveEnumDiffer(),
|
|
100
|
-
new UpdateAclSchemaDiffer(),
|
|
101
|
-
new UpdateValidationSchemaDiffer(),
|
|
101
|
+
new UpdateAclSchemaDiffer(this.options),
|
|
102
|
+
new UpdateValidationSchemaDiffer(this.options),
|
|
102
103
|
new UpdateEntityOrderByDiffer(),
|
|
103
104
|
new UpdateTargetDiffer(),
|
|
104
105
|
new CreateTargetDiffer(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaDiffer.js","sources":["../../../../packages/schema-migrations/src/SchemaDiffer.ts"],"sourcesContent":["import { Schema } from '@contember/schema'\nimport { compareArraysIgnoreOrder, deepCompare, isInverseRelation, isOwningRelation, isRelation, SchemaValidator, ValidationError } from '@contember/schema-utils'\nimport { SchemaMigrator } from './SchemaMigrator'\nimport { Migration } from './Migration'\nimport { ImplementationException } from './exceptions'\nimport {\n\tConvertOneHasManyToManyHasManyRelationDiffer,\n\tConvertOneToManyRelationDiffer,\n\tCreateColumnDiffer,\n\tCreateEntityDiffer,\n\tCreateEnumDiffer,\n\tCreateRelationDiffer,\n\tCreateRelationInverseSideDiffer,\n\tCreateUniqueConstraintDiffer,\n\tCreateViewDiffer,\n\tDiffer,\n\tDisableOrphanRemovalDiffer,\n\tEnableOrphanRemovalDiffer,\n\tMakeRelationNotNullDiffer,\n\tMakeRelationNullableDiffer,\n\tRemoveEntityDiffer,\n\tRemoveEnumDiffer,\n\tRemoveFieldDiffer,\n\tRemoveUniqueConstraintDiffer,\n\tToggleEventLogDiffer,\n\tToggleJunctionEventLogDiffer,\n\tUpdateAclSchemaDiffer,\n\tUpdateColumnDefinitionDiffer,\n\tUpdateColumnNameDiffer,\n\tUpdateEntityOrderByDiffer,\n\tUpdateEntityTableNameDiffer,\n\tUpdateEnumDiffer,\n\tUpdateRelationOnDeleteDiffer,\n\tUpdateRelationOrderByDiffer,\n\tUpdateValidationSchemaDiffer,\n\tVERSION_LATEST,\n} from './modifications'\nimport { RemoveChangedFieldDiffer, RemoveViewDiffer } from './modifications/differs'\nimport { CreateIndexDiffer, RemoveIndexDiffer } from './modifications/indexes'\nimport { CreateTriggerDiffer, RemoveTriggerDiffer, UpdateTriggerDiffer } from './modifications/actions'\nimport { UpdateTargetDiffer } from './modifications/actions/UpdateTargetModification'\nimport { CreateTargetDiffer } from './modifications/actions/CreateTargetModification'\nimport { RemoveTargetDiffer } from './modifications/actions/RemoveTargetModification'\nimport { UpdateSettingsDiffer } from './modifications/settings'\nimport { RemoveIndexNamesDiffer } from './modifications/upgrade/RemoveIndexNamesModification'\nimport { ConvertOneHasManyToOneHasOneRelationDiffer } from './modifications/relations/ConvertOneHasManyToOneHasOneRelationModification'\n\ntype DiffOptions = { skipRecreateValidation?: boolean; skipInitialSchemaValidation?: boolean }\n\nexport class SchemaDiffer {\n\tconstructor(
|
|
1
|
+
{"version":3,"file":"SchemaDiffer.js","sources":["../../../../packages/schema-migrations/src/SchemaDiffer.ts"],"sourcesContent":["import { Schema } from '@contember/schema'\nimport { compareArraysIgnoreOrder, deepCompare, isInverseRelation, isOwningRelation, isRelation, SchemaValidator, ValidationError } from '@contember/schema-utils'\nimport { SchemaMigrator } from './SchemaMigrator'\nimport { Migration } from './Migration'\nimport { ImplementationException } from './exceptions'\nimport {\n\tConvertOneHasManyToManyHasManyRelationDiffer,\n\tConvertOneToManyRelationDiffer,\n\tCreateColumnDiffer,\n\tCreateEntityDiffer,\n\tCreateEnumDiffer,\n\tCreateRelationDiffer,\n\tCreateRelationInverseSideDiffer,\n\tCreateUniqueConstraintDiffer,\n\tCreateViewDiffer,\n\tDiffer,\n\tDisableOrphanRemovalDiffer,\n\tEnableOrphanRemovalDiffer,\n\tMakeRelationNotNullDiffer,\n\tMakeRelationNullableDiffer,\n\tRemoveEntityDiffer,\n\tRemoveEnumDiffer,\n\tRemoveFieldDiffer,\n\tRemoveUniqueConstraintDiffer,\n\tToggleEventLogDiffer,\n\tToggleJunctionEventLogDiffer,\n\tUpdateAclSchemaDiffer,\n\tUpdateColumnDefinitionDiffer,\n\tUpdateColumnNameDiffer,\n\tUpdateEntityOrderByDiffer,\n\tUpdateEntityTableNameDiffer,\n\tUpdateEnumDiffer,\n\tUpdateRelationOnDeleteDiffer,\n\tUpdateRelationOrderByDiffer,\n\tUpdateValidationSchemaDiffer,\n\tVERSION_LATEST,\n} from './modifications'\nimport { RemoveChangedFieldDiffer, RemoveViewDiffer } from './modifications/differs'\nimport { CreateIndexDiffer, RemoveIndexDiffer } from './modifications/indexes'\nimport { CreateTriggerDiffer, RemoveTriggerDiffer, UpdateTriggerDiffer } from './modifications/actions'\nimport { UpdateTargetDiffer } from './modifications/actions/UpdateTargetModification'\nimport { CreateTargetDiffer } from './modifications/actions/CreateTargetModification'\nimport { RemoveTargetDiffer } from './modifications/actions/RemoveTargetModification'\nimport { UpdateSettingsDiffer } from './modifications/settings'\nimport { RemoveIndexNamesDiffer } from './modifications/upgrade/RemoveIndexNamesModification'\nimport { ConvertOneHasManyToOneHasOneRelationDiffer } from './modifications/relations/ConvertOneHasManyToOneHasOneRelationModification'\n\ntype DiffOptions = { skipRecreateValidation?: boolean; skipInitialSchemaValidation?: boolean }\n\nexport class SchemaDiffer {\n\tconstructor(\n\t\tprivate readonly schemaMigrator: SchemaMigrator,\n\t\tprivate readonly options?: {\n\t\t\tmaxPatchSize?: number\n\t\t},\n\t) {}\n\n\tdiffSchemas(originalSchema: Schema, updatedSchema: Schema, {\n\t\tskipInitialSchemaValidation = false,\n\t\tskipRecreateValidation = false,\n\t}: DiffOptions = {}): Migration.Modification[] {\n\t\tif (!skipInitialSchemaValidation) {\n\t\t\tconst originalErrors = SchemaValidator.validate(originalSchema)\n\t\t\tif (originalErrors.length > 0) {\n\t\t\t\tthrow new InvalidSchemaException('original schema is not valid', originalErrors)\n\t\t\t}\n\t\t}\n\t\tconst updatedErrors = SchemaValidator.validate(updatedSchema)\n\t\tif (updatedErrors.length > 0) {\n\t\t\tthrow new InvalidSchemaException('updated schema is not valid', updatedErrors)\n\t\t}\n\n\t\tconst differs: Differ[] = [\n\t\t\tnew RemoveIndexNamesDiffer(),\n\t\t\tnew UpdateSettingsDiffer(),\n\t\t\tnew ConvertOneToManyRelationDiffer(),\n\t\t\tnew ConvertOneHasManyToManyHasManyRelationDiffer(),\n\t\t\tnew ConvertOneHasManyToOneHasOneRelationDiffer(),\n\t\t\tnew RemoveUniqueConstraintDiffer(),\n\t\t\tnew RemoveIndexDiffer(),\n\t\t\tnew RemoveViewDiffer(),\n\t\t\tnew RemoveEntityDiffer(),\n\t\t\tnew RemoveFieldDiffer(),\n\t\t\tnew CreateEnumDiffer(),\n\t\t\tnew UpdateEntityTableNameDiffer(),\n\t\t\tnew ToggleEventLogDiffer(),\n\t\t\tnew ToggleJunctionEventLogDiffer(),\n\t\t\tnew UpdateColumnDefinitionDiffer(),\n\t\t\tnew UpdateColumnNameDiffer(),\n\t\t\tnew UpdateRelationOnDeleteDiffer(),\n\t\t\tnew MakeRelationNotNullDiffer(),\n\t\t\tnew MakeRelationNullableDiffer(),\n\t\t\tnew EnableOrphanRemovalDiffer(),\n\t\t\tnew DisableOrphanRemovalDiffer(),\n\t\t\tnew UpdateRelationOrderByDiffer(),\n\t\t\tnew UpdateEnumDiffer(),\n\t\t\tnew RemoveChangedFieldDiffer(it => !isRelation(it) || isOwningRelation(it)),\n\t\t\tnew RemoveChangedFieldDiffer(it => isRelation(it) && isInverseRelation(it)),\n\t\t\tnew CreateEntityDiffer(),\n\t\t\tnew CreateColumnDiffer(),\n\t\t\tnew CreateRelationDiffer(),\n\t\t\tnew CreateViewDiffer(),\n\t\t\tnew CreateRelationInverseSideDiffer(),\n\t\t\tnew CreateUniqueConstraintDiffer(),\n\t\t\tnew CreateIndexDiffer(),\n\t\t\tnew RemoveEnumDiffer(),\n\t\t\tnew UpdateAclSchemaDiffer(this.options),\n\t\t\tnew UpdateValidationSchemaDiffer(this.options),\n\t\t\tnew UpdateEntityOrderByDiffer(),\n\t\t\tnew UpdateTargetDiffer(),\n\t\t\tnew CreateTargetDiffer(),\n\t\t\tnew UpdateTriggerDiffer(),\n\t\t\tnew CreateTriggerDiffer(),\n\t\t\tnew RemoveTriggerDiffer(),\n\t\t\tnew RemoveTargetDiffer(),\n\t\t]\n\n\t\tconst diffs: Migration.Modification[] = []\n\t\tlet appliedDiffsSchema = originalSchema\n\t\tfor (const differ of differs) {\n\t\t\tconst differDiffs = differ.createDiff(appliedDiffsSchema, updatedSchema)\n\t\t\tappliedDiffsSchema = this.schemaMigrator.applyModifications(appliedDiffsSchema, differDiffs, VERSION_LATEST)\n\t\t\tdiffs.push(...differDiffs)\n\t\t}\n\n\t\tif (!skipRecreateValidation) {\n\t\t\tconst errors = deepCompare(updatedSchema, appliedDiffsSchema, [], path => {\n\t\t\t\tif (path[0] === 'model' && path[1] === 'entities' && (path[3] === 'unique' || path[3] === 'index')) {\n\t\t\t\t\treturn (a, b) => {\n\t\t\t\t\t\treturn compareArraysIgnoreOrder(a, b, path)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn null\n\t\t\t})\n\t\t\tif (errors.length === 0) {\n\t\t\t\treturn diffs\n\t\t\t}\n\t\t\tlet message = 'Updated schema cannot be recreated by the generated diff:'\n\t\t\tfor (const err of errors) {\n\t\t\t\tmessage += '\\n\\t' + err.path.join('.') + ': ' + err.message\n\t\t\t}\n\t\t\tmessage += '\\n\\nPlease fill a bug report'\n\t\t\tthrow new ImplementationException(message)\n\t\t}\n\n\t\treturn diffs\n\t}\n}\n\nexport class InvalidSchemaException extends Error {\n\tconstructor(message: string, public readonly validationErrors: ValidationError[]) {\n\t\tsuper(message)\n\t}\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -25,12 +25,15 @@ const updateAclSchemaModification = ModificationHandler.createModificationType({
|
|
|
25
25
|
handler: UpdateAclSchemaModificationHandler
|
|
26
26
|
});
|
|
27
27
|
class UpdateAclSchemaDiffer {
|
|
28
|
+
constructor(options) {
|
|
29
|
+
this.options = options;
|
|
30
|
+
}
|
|
28
31
|
createDiff(originalSchema, updatedSchema) {
|
|
29
32
|
if (deepEqual(originalSchema.acl, updatedSchema.acl)) {
|
|
30
33
|
return [];
|
|
31
34
|
}
|
|
32
35
|
const patch = rfc6902.createPatch(originalSchema.acl, updatedSchema.acl);
|
|
33
|
-
if (patch.length <= 100) {
|
|
36
|
+
if (patch.length <= (this.options?.maxPatchSize ?? 100)) {
|
|
34
37
|
return [PatchAclSchemaModification.patchAclSchemaModification.createModification({ patch })];
|
|
35
38
|
}
|
|
36
39
|
return [updateAclSchemaModification.createModification({ schema: updatedSchema.acl })];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UpdateAclSchemaModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/acl/UpdateAclSchemaModification.ts"],"sourcesContent":["import { Acl, Schema } from '@contember/schema'\nimport { SchemaUpdater } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'\nimport deepEqual from 'fast-deep-equal'\nimport { createPatch } from 'rfc6902'\nimport { patchAclSchemaModification } from './PatchAclSchemaModification'\n\nexport class UpdateAclSchemaModificationHandler implements ModificationHandler<UpdateAclSchemaModificationData>{\n\tconstructor(private readonly data: UpdateAclSchemaModificationData) {}\n\n\tpublic createSql(): void {}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn ({ schema }) => ({\n\t\t\t...schema,\n\t\t\tacl: this.data.schema,\n\t\t})\n\t}\n\n\tdescribe() {\n\t\treturn { message: 'Update ACL schema' }\n\t}\n}\n\nexport interface UpdateAclSchemaModificationData {\n\tschema: Acl.Schema\n}\n\nexport const updateAclSchemaModification = createModificationType({\n\tid: 'updateAclSchema',\n\thandler: UpdateAclSchemaModificationHandler,\n})\n\nexport class UpdateAclSchemaDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\tif (deepEqual(originalSchema.acl, updatedSchema.acl)) {\n\t\t\treturn []\n\t\t}\n\t\tconst patch = createPatch(originalSchema.acl, updatedSchema.acl)\n\t\tif (patch.length <= 100) {\n\t\t\treturn [patchAclSchemaModification.createModification({ patch })]\n\t\t}\n\t\treturn [updateAclSchemaModification.createModification({ schema: updatedSchema.acl })]\n\t}\n}\n"],"names":["createModificationType","createPatch","patchAclSchemaModification"],"mappings":";;;;;;AAOO,MAAM,mCAAkG;AAAA,EAC9G,YAA6B,MAAuC;AAAvC,SAAA,OAAA;AAAA,EAAA;AAAA,EAEtB,YAAkB;AAAA,EAAA;AAAA,EAElB,mBAAkC;AACjC,WAAA,CAAC,EAAE,cAAc;AAAA,MACvB,GAAG;AAAA,MACH,KAAK,KAAK,KAAK;AAAA,IAAA;AAAA,EAChB;AAAA,EAGD,WAAW;AACH,WAAA,EAAE,SAAS,oBAAoB;AAAA,EAAA;AAExC;AAMO,MAAM,8BAA8BA,oBAAAA,uBAAuB;AAAA,EACjE,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAEM,MAAM,sBAAwC;AAAA,EACpD,WAAW,gBAAwB,eAAuB;AACzD,QAAI,UAAU,eAAe,KAAK,cAAc,GAAG,GAAG;AACrD,aAAO,CAAC;AAAA,IAAA;AAET,UAAM,QAAQC,QAAAA,YAAY,eAAe,KAAK,cAAc,GAAG;
|
|
1
|
+
{"version":3,"file":"UpdateAclSchemaModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/acl/UpdateAclSchemaModification.ts"],"sourcesContent":["import { Acl, Schema } from '@contember/schema'\nimport { SchemaUpdater } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'\nimport deepEqual from 'fast-deep-equal'\nimport { createPatch } from 'rfc6902'\nimport { patchAclSchemaModification } from './PatchAclSchemaModification'\n\nexport class UpdateAclSchemaModificationHandler implements ModificationHandler<UpdateAclSchemaModificationData>{\n\tconstructor(private readonly data: UpdateAclSchemaModificationData) {}\n\n\tpublic createSql(): void {}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn ({ schema }) => ({\n\t\t\t...schema,\n\t\t\tacl: this.data.schema,\n\t\t})\n\t}\n\n\tdescribe() {\n\t\treturn { message: 'Update ACL schema' }\n\t}\n}\n\nexport interface UpdateAclSchemaModificationData {\n\tschema: Acl.Schema\n}\n\nexport const updateAclSchemaModification = createModificationType({\n\tid: 'updateAclSchema',\n\thandler: UpdateAclSchemaModificationHandler,\n})\n\nexport class UpdateAclSchemaDiffer implements Differ {\n\tconstructor(\n\t\tprivate readonly options?: {\n\t\t\tmaxPatchSize?: number\n\t\t},\n\t) {\n\t}\n\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\tif (deepEqual(originalSchema.acl, updatedSchema.acl)) {\n\t\t\treturn []\n\t\t}\n\t\tconst patch = createPatch(originalSchema.acl, updatedSchema.acl)\n\t\tif (patch.length <= (this.options?.maxPatchSize ?? 100)) {\n\t\t\treturn [patchAclSchemaModification.createModification({ patch })]\n\t\t}\n\t\treturn [updateAclSchemaModification.createModification({ schema: updatedSchema.acl })]\n\t}\n}\n"],"names":["createModificationType","createPatch","patchAclSchemaModification"],"mappings":";;;;;;AAOO,MAAM,mCAAkG;AAAA,EAC9G,YAA6B,MAAuC;AAAvC,SAAA,OAAA;AAAA,EAAA;AAAA,EAEtB,YAAkB;AAAA,EAAA;AAAA,EAElB,mBAAkC;AACjC,WAAA,CAAC,EAAE,cAAc;AAAA,MACvB,GAAG;AAAA,MACH,KAAK,KAAK,KAAK;AAAA,IAAA;AAAA,EAChB;AAAA,EAGD,WAAW;AACH,WAAA,EAAE,SAAS,oBAAoB;AAAA,EAAA;AAExC;AAMO,MAAM,8BAA8BA,oBAAAA,uBAAuB;AAAA,EACjE,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAEM,MAAM,sBAAwC;AAAA,EACpD,YACkB,SAGhB;AAHgB,SAAA,UAAA;AAAA,EAAA;AAAA,EAMlB,WAAW,gBAAwB,eAAuB;AACzD,QAAI,UAAU,eAAe,KAAK,cAAc,GAAG,GAAG;AACrD,aAAO,CAAC;AAAA,IAAA;AAET,UAAM,QAAQC,QAAAA,YAAY,eAAe,KAAK,cAAc,GAAG;AAC/D,QAAI,MAAM,WAAW,KAAK,SAAS,gBAAgB,MAAM;AACxD,aAAO,CAACC,2BAAAA,2BAA2B,mBAAmB,EAAE,MAAO,CAAA,CAAC;AAAA,IAAA;AAE1D,WAAA,CAAC,4BAA4B,mBAAmB,EAAE,QAAQ,cAAc,IAAA,CAAK,CAAC;AAAA,EAAA;AAEvF;;;;"}
|
|
@@ -23,12 +23,15 @@ const updateAclSchemaModification = createModificationType({
|
|
|
23
23
|
handler: UpdateAclSchemaModificationHandler
|
|
24
24
|
});
|
|
25
25
|
class UpdateAclSchemaDiffer {
|
|
26
|
+
constructor(options) {
|
|
27
|
+
this.options = options;
|
|
28
|
+
}
|
|
26
29
|
createDiff(originalSchema, updatedSchema) {
|
|
27
30
|
if (deepEqual(originalSchema.acl, updatedSchema.acl)) {
|
|
28
31
|
return [];
|
|
29
32
|
}
|
|
30
33
|
const patch = createPatch(originalSchema.acl, updatedSchema.acl);
|
|
31
|
-
if (patch.length <= 100) {
|
|
34
|
+
if (patch.length <= (this.options?.maxPatchSize ?? 100)) {
|
|
32
35
|
return [patchAclSchemaModification.createModification({ patch })];
|
|
33
36
|
}
|
|
34
37
|
return [updateAclSchemaModification.createModification({ schema: updatedSchema.acl })];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UpdateAclSchemaModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/acl/UpdateAclSchemaModification.ts"],"sourcesContent":["import { Acl, Schema } from '@contember/schema'\nimport { SchemaUpdater } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'\nimport deepEqual from 'fast-deep-equal'\nimport { createPatch } from 'rfc6902'\nimport { patchAclSchemaModification } from './PatchAclSchemaModification'\n\nexport class UpdateAclSchemaModificationHandler implements ModificationHandler<UpdateAclSchemaModificationData>{\n\tconstructor(private readonly data: UpdateAclSchemaModificationData) {}\n\n\tpublic createSql(): void {}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn ({ schema }) => ({\n\t\t\t...schema,\n\t\t\tacl: this.data.schema,\n\t\t})\n\t}\n\n\tdescribe() {\n\t\treturn { message: 'Update ACL schema' }\n\t}\n}\n\nexport interface UpdateAclSchemaModificationData {\n\tschema: Acl.Schema\n}\n\nexport const updateAclSchemaModification = createModificationType({\n\tid: 'updateAclSchema',\n\thandler: UpdateAclSchemaModificationHandler,\n})\n\nexport class UpdateAclSchemaDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\tif (deepEqual(originalSchema.acl, updatedSchema.acl)) {\n\t\t\treturn []\n\t\t}\n\t\tconst patch = createPatch(originalSchema.acl, updatedSchema.acl)\n\t\tif (patch.length <= 100) {\n\t\t\treturn [patchAclSchemaModification.createModification({ patch })]\n\t\t}\n\t\treturn [updateAclSchemaModification.createModification({ schema: updatedSchema.acl })]\n\t}\n}\n"],"names":[],"mappings":";;;;AAOO,MAAM,mCAAkG;AAAA,EAC9G,YAA6B,MAAuC;AAAvC,SAAA,OAAA;AAAA,EAAA;AAAA,EAEtB,YAAkB;AAAA,EAAA;AAAA,EAElB,mBAAkC;AACjC,WAAA,CAAC,EAAE,cAAc;AAAA,MACvB,GAAG;AAAA,MACH,KAAK,KAAK,KAAK;AAAA,IAAA;AAAA,EAChB;AAAA,EAGD,WAAW;AACH,WAAA,EAAE,SAAS,oBAAoB;AAAA,EAAA;AAExC;AAMO,MAAM,8BAA8B,uBAAuB;AAAA,EACjE,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAEM,MAAM,sBAAwC;AAAA,EACpD,WAAW,gBAAwB,eAAuB;AACzD,QAAI,UAAU,eAAe,KAAK,cAAc,GAAG,GAAG;AACrD,aAAO,CAAC;AAAA,IAAA;AAET,UAAM,QAAQ,YAAY,eAAe,KAAK,cAAc,GAAG;
|
|
1
|
+
{"version":3,"file":"UpdateAclSchemaModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/acl/UpdateAclSchemaModification.ts"],"sourcesContent":["import { Acl, Schema } from '@contember/schema'\nimport { SchemaUpdater } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'\nimport deepEqual from 'fast-deep-equal'\nimport { createPatch } from 'rfc6902'\nimport { patchAclSchemaModification } from './PatchAclSchemaModification'\n\nexport class UpdateAclSchemaModificationHandler implements ModificationHandler<UpdateAclSchemaModificationData>{\n\tconstructor(private readonly data: UpdateAclSchemaModificationData) {}\n\n\tpublic createSql(): void {}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn ({ schema }) => ({\n\t\t\t...schema,\n\t\t\tacl: this.data.schema,\n\t\t})\n\t}\n\n\tdescribe() {\n\t\treturn { message: 'Update ACL schema' }\n\t}\n}\n\nexport interface UpdateAclSchemaModificationData {\n\tschema: Acl.Schema\n}\n\nexport const updateAclSchemaModification = createModificationType({\n\tid: 'updateAclSchema',\n\thandler: UpdateAclSchemaModificationHandler,\n})\n\nexport class UpdateAclSchemaDiffer implements Differ {\n\tconstructor(\n\t\tprivate readonly options?: {\n\t\t\tmaxPatchSize?: number\n\t\t},\n\t) {\n\t}\n\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\tif (deepEqual(originalSchema.acl, updatedSchema.acl)) {\n\t\t\treturn []\n\t\t}\n\t\tconst patch = createPatch(originalSchema.acl, updatedSchema.acl)\n\t\tif (patch.length <= (this.options?.maxPatchSize ?? 100)) {\n\t\t\treturn [patchAclSchemaModification.createModification({ patch })]\n\t\t}\n\t\treturn [updateAclSchemaModification.createModification({ schema: updatedSchema.acl })]\n\t}\n}\n"],"names":[],"mappings":";;;;AAOO,MAAM,mCAAkG;AAAA,EAC9G,YAA6B,MAAuC;AAAvC,SAAA,OAAA;AAAA,EAAA;AAAA,EAEtB,YAAkB;AAAA,EAAA;AAAA,EAElB,mBAAkC;AACjC,WAAA,CAAC,EAAE,cAAc;AAAA,MACvB,GAAG;AAAA,MACH,KAAK,KAAK,KAAK;AAAA,IAAA;AAAA,EAChB;AAAA,EAGD,WAAW;AACH,WAAA,EAAE,SAAS,oBAAoB;AAAA,EAAA;AAExC;AAMO,MAAM,8BAA8B,uBAAuB;AAAA,EACjE,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAEM,MAAM,sBAAwC;AAAA,EACpD,YACkB,SAGhB;AAHgB,SAAA,UAAA;AAAA,EAAA;AAAA,EAMlB,WAAW,gBAAwB,eAAuB;AACzD,QAAI,UAAU,eAAe,KAAK,cAAc,GAAG,GAAG;AACrD,aAAO,CAAC;AAAA,IAAA;AAET,UAAM,QAAQ,YAAY,eAAe,KAAK,cAAc,GAAG;AAC/D,QAAI,MAAM,WAAW,KAAK,SAAS,gBAAgB,MAAM;AACxD,aAAO,CAAC,2BAA2B,mBAAmB,EAAE,MAAO,CAAA,CAAC;AAAA,IAAA;AAE1D,WAAA,CAAC,4BAA4B,mBAAmB,EAAE,QAAQ,cAAc,IAAA,CAAK,CAAC;AAAA,EAAA;AAEvF;"}
|
|
@@ -25,12 +25,15 @@ const updateValidationSchemaModification = ModificationHandler.createModificatio
|
|
|
25
25
|
handler: UpdateValidationSchemaModificationHandler
|
|
26
26
|
});
|
|
27
27
|
class UpdateValidationSchemaDiffer {
|
|
28
|
+
constructor(options) {
|
|
29
|
+
this.options = options;
|
|
30
|
+
}
|
|
28
31
|
createDiff(originalSchema, updatedSchema) {
|
|
29
32
|
if (deepEqual(originalSchema.validation, updatedSchema.validation)) {
|
|
30
33
|
return [];
|
|
31
34
|
}
|
|
32
35
|
const patch = rfc6902.createPatch(originalSchema.validation, updatedSchema.validation);
|
|
33
|
-
if (patch.length <=
|
|
36
|
+
if (patch.length <= (this.options?.maxPatchSize ?? 100)) {
|
|
34
37
|
return [PatchValidationSchemaModification.patchValidationSchemaModification.createModification({ patch })];
|
|
35
38
|
}
|
|
36
39
|
return [updateValidationSchemaModification.createModification({ schema: updatedSchema.validation })];
|
package/dist/production/src/modifications/validation/UpdateValidationSchemaModification.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UpdateValidationSchemaModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/validation/UpdateValidationSchemaModification.ts"],"sourcesContent":["import { Schema, Validation } from '@contember/schema'\nimport { SchemaUpdater } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'\nimport deepEqual from 'fast-deep-equal'\nimport { createPatch } from 'rfc6902'\nimport { patchValidationSchemaModification } from './PatchValidationSchemaModification'\n\nexport class UpdateValidationSchemaModificationHandler implements ModificationHandler<UpdateValidationSchemaModificationData> {\n\tconstructor(private readonly data: UpdateValidationSchemaModificationData) {}\n\n\tpublic createSql(): void {}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn ({ schema }) => ({\n\t\t\t...schema,\n\t\t\tvalidation: this.data.schema,\n\t\t})\n\t}\n\n\tdescribe() {\n\t\treturn { message: 'Update validation schema' }\n\t}\n\n}\n\nexport interface UpdateValidationSchemaModificationData {\n\tschema: Validation.Schema\n}\n\nexport const updateValidationSchemaModification = createModificationType({\n\tid: 'updateValidationSchema',\n\thandler: UpdateValidationSchemaModificationHandler,\n})\n\nexport class UpdateValidationSchemaDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\tif (deepEqual(originalSchema.validation, updatedSchema.validation)) {\n\t\t\treturn []\n\t\t}\n\t\tconst patch = createPatch(originalSchema.validation, updatedSchema.validation)\n\t\tif (patch.length <=
|
|
1
|
+
{"version":3,"file":"UpdateValidationSchemaModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/validation/UpdateValidationSchemaModification.ts"],"sourcesContent":["import { Schema, Validation } from '@contember/schema'\nimport { SchemaUpdater } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'\nimport deepEqual from 'fast-deep-equal'\nimport { createPatch } from 'rfc6902'\nimport { patchValidationSchemaModification } from './PatchValidationSchemaModification'\n\nexport class UpdateValidationSchemaModificationHandler implements ModificationHandler<UpdateValidationSchemaModificationData> {\n\tconstructor(private readonly data: UpdateValidationSchemaModificationData) {}\n\n\tpublic createSql(): void {}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn ({ schema }) => ({\n\t\t\t...schema,\n\t\t\tvalidation: this.data.schema,\n\t\t})\n\t}\n\n\tdescribe() {\n\t\treturn { message: 'Update validation schema' }\n\t}\n\n}\n\nexport interface UpdateValidationSchemaModificationData {\n\tschema: Validation.Schema\n}\n\nexport const updateValidationSchemaModification = createModificationType({\n\tid: 'updateValidationSchema',\n\thandler: UpdateValidationSchemaModificationHandler,\n})\n\nexport class UpdateValidationSchemaDiffer implements Differ {\n\tconstructor(\n\t\tprivate readonly options?: {\n\t\t\tmaxPatchSize?: number\n\t\t},\n\t) {\n\t}\n\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\tif (deepEqual(originalSchema.validation, updatedSchema.validation)) {\n\t\t\treturn []\n\t\t}\n\t\tconst patch = createPatch(originalSchema.validation, updatedSchema.validation)\n\t\tif (patch.length <= (this.options?.maxPatchSize ?? 100)) {\n\t\t\treturn [patchValidationSchemaModification.createModification({ patch })]\n\t\t}\n\t\treturn [updateValidationSchemaModification.createModification({ schema: updatedSchema.validation })]\n\t}\n}\n"],"names":["createModificationType","createPatch","patchValidationSchemaModification"],"mappings":";;;;;;AAOO,MAAM,0CAAiH;AAAA,EAC7H,YAA6B,MAA8C;AAA9C,SAAA,OAAA;AAAA,EAAA;AAAA,EAEtB,YAAkB;AAAA,EAAA;AAAA,EAElB,mBAAkC;AACjC,WAAA,CAAC,EAAE,cAAc;AAAA,MACvB,GAAG;AAAA,MACH,YAAY,KAAK,KAAK;AAAA,IAAA;AAAA,EACvB;AAAA,EAGD,WAAW;AACH,WAAA,EAAE,SAAS,2BAA2B;AAAA,EAAA;AAG/C;AAMO,MAAM,qCAAqCA,oBAAAA,uBAAuB;AAAA,EACxE,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAEM,MAAM,6BAA+C;AAAA,EAC3D,YACkB,SAGhB;AAHgB,SAAA,UAAA;AAAA,EAAA;AAAA,EAMlB,WAAW,gBAAwB,eAAuB;AACzD,QAAI,UAAU,eAAe,YAAY,cAAc,UAAU,GAAG;AACnE,aAAO,CAAC;AAAA,IAAA;AAET,UAAM,QAAQC,QAAAA,YAAY,eAAe,YAAY,cAAc,UAAU;AAC7E,QAAI,MAAM,WAAW,KAAK,SAAS,gBAAgB,MAAM;AACxD,aAAO,CAACC,kCAAAA,kCAAkC,mBAAmB,EAAE,MAAO,CAAA,CAAC;AAAA,IAAA;AAEjE,WAAA,CAAC,mCAAmC,mBAAmB,EAAE,QAAQ,cAAc,WAAA,CAAY,CAAC;AAAA,EAAA;AAErG;;;;"}
|
|
@@ -23,12 +23,15 @@ const updateValidationSchemaModification = createModificationType({
|
|
|
23
23
|
handler: UpdateValidationSchemaModificationHandler
|
|
24
24
|
});
|
|
25
25
|
class UpdateValidationSchemaDiffer {
|
|
26
|
+
constructor(options) {
|
|
27
|
+
this.options = options;
|
|
28
|
+
}
|
|
26
29
|
createDiff(originalSchema, updatedSchema) {
|
|
27
30
|
if (deepEqual(originalSchema.validation, updatedSchema.validation)) {
|
|
28
31
|
return [];
|
|
29
32
|
}
|
|
30
33
|
const patch = createPatch(originalSchema.validation, updatedSchema.validation);
|
|
31
|
-
if (patch.length <=
|
|
34
|
+
if (patch.length <= (this.options?.maxPatchSize ?? 100)) {
|
|
32
35
|
return [patchValidationSchemaModification.createModification({ patch })];
|
|
33
36
|
}
|
|
34
37
|
return [updateValidationSchemaModification.createModification({ schema: updatedSchema.validation })];
|
package/dist/production/src/modifications/validation/UpdateValidationSchemaModification.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UpdateValidationSchemaModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/validation/UpdateValidationSchemaModification.ts"],"sourcesContent":["import { Schema, Validation } from '@contember/schema'\nimport { SchemaUpdater } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'\nimport deepEqual from 'fast-deep-equal'\nimport { createPatch } from 'rfc6902'\nimport { patchValidationSchemaModification } from './PatchValidationSchemaModification'\n\nexport class UpdateValidationSchemaModificationHandler implements ModificationHandler<UpdateValidationSchemaModificationData> {\n\tconstructor(private readonly data: UpdateValidationSchemaModificationData) {}\n\n\tpublic createSql(): void {}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn ({ schema }) => ({\n\t\t\t...schema,\n\t\t\tvalidation: this.data.schema,\n\t\t})\n\t}\n\n\tdescribe() {\n\t\treturn { message: 'Update validation schema' }\n\t}\n\n}\n\nexport interface UpdateValidationSchemaModificationData {\n\tschema: Validation.Schema\n}\n\nexport const updateValidationSchemaModification = createModificationType({\n\tid: 'updateValidationSchema',\n\thandler: UpdateValidationSchemaModificationHandler,\n})\n\nexport class UpdateValidationSchemaDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\tif (deepEqual(originalSchema.validation, updatedSchema.validation)) {\n\t\t\treturn []\n\t\t}\n\t\tconst patch = createPatch(originalSchema.validation, updatedSchema.validation)\n\t\tif (patch.length <=
|
|
1
|
+
{"version":3,"file":"UpdateValidationSchemaModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/validation/UpdateValidationSchemaModification.ts"],"sourcesContent":["import { Schema, Validation } from '@contember/schema'\nimport { SchemaUpdater } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'\nimport deepEqual from 'fast-deep-equal'\nimport { createPatch } from 'rfc6902'\nimport { patchValidationSchemaModification } from './PatchValidationSchemaModification'\n\nexport class UpdateValidationSchemaModificationHandler implements ModificationHandler<UpdateValidationSchemaModificationData> {\n\tconstructor(private readonly data: UpdateValidationSchemaModificationData) {}\n\n\tpublic createSql(): void {}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn ({ schema }) => ({\n\t\t\t...schema,\n\t\t\tvalidation: this.data.schema,\n\t\t})\n\t}\n\n\tdescribe() {\n\t\treturn { message: 'Update validation schema' }\n\t}\n\n}\n\nexport interface UpdateValidationSchemaModificationData {\n\tschema: Validation.Schema\n}\n\nexport const updateValidationSchemaModification = createModificationType({\n\tid: 'updateValidationSchema',\n\thandler: UpdateValidationSchemaModificationHandler,\n})\n\nexport class UpdateValidationSchemaDiffer implements Differ {\n\tconstructor(\n\t\tprivate readonly options?: {\n\t\t\tmaxPatchSize?: number\n\t\t},\n\t) {\n\t}\n\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\tif (deepEqual(originalSchema.validation, updatedSchema.validation)) {\n\t\t\treturn []\n\t\t}\n\t\tconst patch = createPatch(originalSchema.validation, updatedSchema.validation)\n\t\tif (patch.length <= (this.options?.maxPatchSize ?? 100)) {\n\t\t\treturn [patchValidationSchemaModification.createModification({ patch })]\n\t\t}\n\t\treturn [updateValidationSchemaModification.createModification({ schema: updatedSchema.validation })]\n\t}\n}\n"],"names":[],"mappings":";;;;AAOO,MAAM,0CAAiH;AAAA,EAC7H,YAA6B,MAA8C;AAA9C,SAAA,OAAA;AAAA,EAAA;AAAA,EAEtB,YAAkB;AAAA,EAAA;AAAA,EAElB,mBAAkC;AACjC,WAAA,CAAC,EAAE,cAAc;AAAA,MACvB,GAAG;AAAA,MACH,YAAY,KAAK,KAAK;AAAA,IAAA;AAAA,EACvB;AAAA,EAGD,WAAW;AACH,WAAA,EAAE,SAAS,2BAA2B;AAAA,EAAA;AAG/C;AAMO,MAAM,qCAAqC,uBAAuB;AAAA,EACxE,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAEM,MAAM,6BAA+C;AAAA,EAC3D,YACkB,SAGhB;AAHgB,SAAA,UAAA;AAAA,EAAA;AAAA,EAMlB,WAAW,gBAAwB,eAAuB;AACzD,QAAI,UAAU,eAAe,YAAY,cAAc,UAAU,GAAG;AACnE,aAAO,CAAC;AAAA,IAAA;AAET,UAAM,QAAQ,YAAY,eAAe,YAAY,cAAc,UAAU;AAC7E,QAAI,MAAM,WAAW,KAAK,SAAS,gBAAgB,MAAM;AACxD,aAAO,CAAC,kCAAkC,mBAAmB,EAAE,MAAO,CAAA,CAAC;AAAA,IAAA;AAEjE,WAAA,CAAC,mCAAmC,mBAAmB,EAAE,QAAQ,cAAc,WAAA,CAAY,CAAC;AAAA,EAAA;AAErG;"}
|