@contember/schema-migrations 2.0.0-alpha.32 → 2.0.0-alpha.35
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/MigrationDescriber.cjs.map +1 -1
- package/dist/development/src/MigrationDescriber.js.map +1 -1
- package/dist/development/src/SchemaDiffer.cjs.map +1 -1
- package/dist/development/src/SchemaDiffer.js.map +1 -1
- package/dist/development/src/SchemaMigrator.cjs.map +1 -1
- package/dist/development/src/SchemaMigrator.js.map +1 -1
- package/dist/development/src/modifications/ModificationHandler.cjs.map +1 -1
- package/dist/development/src/modifications/ModificationHandler.js.map +1 -1
- package/dist/development/src/modifications/ModificationHandlerFactory.cjs.map +1 -1
- package/dist/development/src/modifications/ModificationHandlerFactory.js.map +1 -1
- package/dist/development/src/modifications/NoopModification.cjs.map +1 -1
- package/dist/development/src/modifications/NoopModification.js.map +1 -1
- package/dist/development/src/modifications/acl/PatchAclSchemaModification.cjs.map +1 -1
- package/dist/development/src/modifications/acl/PatchAclSchemaModification.js.map +1 -1
- package/dist/development/src/modifications/acl/UpdateAclSchemaModification.cjs.map +1 -1
- package/dist/development/src/modifications/acl/UpdateAclSchemaModification.js.map +1 -1
- package/dist/development/src/modifications/actions/CreateTargetModification.cjs.map +1 -1
- package/dist/development/src/modifications/actions/CreateTargetModification.js.map +1 -1
- package/dist/development/src/modifications/actions/CreateTriggerModification.cjs.map +1 -1
- package/dist/development/src/modifications/actions/CreateTriggerModification.js.map +1 -1
- package/dist/development/src/modifications/actions/RemoveTargetModification.cjs.map +1 -1
- package/dist/development/src/modifications/actions/RemoveTargetModification.js.map +1 -1
- package/dist/development/src/modifications/actions/RemoveTriggerModification.cjs.map +1 -1
- package/dist/development/src/modifications/actions/RemoveTriggerModification.js.map +1 -1
- package/dist/development/src/modifications/actions/UpdateTargetModification.cjs.map +1 -1
- package/dist/development/src/modifications/actions/UpdateTargetModification.js.map +1 -1
- package/dist/development/src/modifications/actions/UpdateTriggerModification.cjs.map +1 -1
- package/dist/development/src/modifications/actions/UpdateTriggerModification.js.map +1 -1
- package/dist/development/src/modifications/columns/CreateColumnModification.cjs.map +1 -1
- package/dist/development/src/modifications/columns/CreateColumnModification.js.map +1 -1
- package/dist/development/src/modifications/columns/UpdateColumnDefinitionModification.cjs.map +1 -1
- package/dist/development/src/modifications/columns/UpdateColumnDefinitionModification.js.map +1 -1
- package/dist/development/src/modifications/columns/UpdateColumnNameModification.cjs.map +1 -1
- package/dist/development/src/modifications/columns/UpdateColumnNameModification.js.map +1 -1
- package/dist/development/src/modifications/columns/columnUtils.cjs.map +1 -1
- package/dist/development/src/modifications/columns/columnUtils.js.map +1 -1
- package/dist/development/src/modifications/constraints/CreateUniqueConstraintModification.cjs.map +1 -1
- package/dist/development/src/modifications/constraints/CreateUniqueConstraintModification.js.map +1 -1
- package/dist/development/src/modifications/constraints/RemoveUniqueConstraintModification.cjs.map +1 -1
- package/dist/development/src/modifications/constraints/RemoveUniqueConstraintModification.js.map +1 -1
- package/dist/development/src/modifications/constraints/utils.cjs.map +1 -1
- package/dist/development/src/modifications/constraints/utils.js.map +1 -1
- package/dist/development/src/modifications/differs/RemoveChangedFieldDiffer.cjs.map +1 -1
- package/dist/development/src/modifications/differs/RemoveChangedFieldDiffer.js.map +1 -1
- package/dist/development/src/modifications/differs/RemoveViewDiffer.cjs.map +1 -1
- package/dist/development/src/modifications/differs/RemoveViewDiffer.js.map +1 -1
- package/dist/development/src/modifications/entities/CreateEntityModification.cjs.map +1 -1
- package/dist/development/src/modifications/entities/CreateEntityModification.js.map +1 -1
- package/dist/development/src/modifications/entities/CreateViewModification.cjs.map +1 -1
- package/dist/development/src/modifications/entities/CreateViewModification.js.map +1 -1
- package/dist/development/src/modifications/entities/RemoveEntityModification.cjs.map +1 -1
- package/dist/development/src/modifications/entities/RemoveEntityModification.js.map +1 -1
- package/dist/development/src/modifications/entities/ToggleEventLogModification.cjs.map +1 -1
- package/dist/development/src/modifications/entities/ToggleEventLogModification.js.map +1 -1
- package/dist/development/src/modifications/entities/UpdateEntityNameModification.cjs.map +1 -1
- package/dist/development/src/modifications/entities/UpdateEntityNameModification.js.map +1 -1
- package/dist/development/src/modifications/entities/UpdateEntityOrderByModification.cjs.map +1 -1
- package/dist/development/src/modifications/entities/UpdateEntityOrderByModification.js.map +1 -1
- package/dist/development/src/modifications/entities/UpdateEntityTableNameModification.cjs.map +1 -1
- package/dist/development/src/modifications/entities/UpdateEntityTableNameModification.js.map +1 -1
- package/dist/development/src/modifications/entities/UpdateViewModification.cjs.map +1 -1
- package/dist/development/src/modifications/entities/UpdateViewModification.js.map +1 -1
- package/dist/development/src/modifications/enums/CreateEnumModification.cjs.map +1 -1
- package/dist/development/src/modifications/enums/CreateEnumModification.js.map +1 -1
- package/dist/development/src/modifications/enums/RemoveEnumModification.cjs.map +1 -1
- package/dist/development/src/modifications/enums/RemoveEnumModification.js.map +1 -1
- package/dist/development/src/modifications/enums/UpdateEnumModification.cjs.map +1 -1
- package/dist/development/src/modifications/enums/UpdateEnumModification.js.map +1 -1
- package/dist/development/src/modifications/enums/enumUtils.cjs.map +1 -1
- package/dist/development/src/modifications/fields/RemoveFieldModification.cjs.map +1 -1
- package/dist/development/src/modifications/fields/RemoveFieldModification.js.map +1 -1
- package/dist/development/src/modifications/fields/UpdateFieldNameModification.cjs.map +1 -1
- package/dist/development/src/modifications/fields/UpdateFieldNameModification.js.map +1 -1
- package/dist/development/src/modifications/indexes/CreateIndexModification.cjs.map +1 -1
- package/dist/development/src/modifications/indexes/CreateIndexModification.js.map +1 -1
- package/dist/development/src/modifications/indexes/RemoveIndexModification.cjs.map +1 -1
- package/dist/development/src/modifications/indexes/RemoveIndexModification.js.map +1 -1
- package/dist/development/src/modifications/indexes/utils.cjs.map +1 -1
- package/dist/development/src/modifications/indexes/utils.js.map +1 -1
- package/dist/development/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.cjs.map +1 -1
- package/dist/development/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.js.map +1 -1
- package/dist/development/src/modifications/relations/ConvertOneHasManyToOneHasOneRelationModification.cjs.map +1 -1
- package/dist/development/src/modifications/relations/ConvertOneHasManyToOneHasOneRelationModification.js.map +1 -1
- package/dist/development/src/modifications/relations/ConvertOneToManyRelationModification.cjs.map +1 -1
- package/dist/development/src/modifications/relations/ConvertOneToManyRelationModification.js.map +1 -1
- package/dist/development/src/modifications/relations/CreateRelationInverseSideModification.cjs.map +1 -1
- package/dist/development/src/modifications/relations/CreateRelationInverseSideModification.js.map +1 -1
- package/dist/development/src/modifications/relations/CreateRelationModification.cjs.map +1 -1
- package/dist/development/src/modifications/relations/CreateRelationModification.js.map +1 -1
- package/dist/development/src/modifications/relations/DisableOrphanRemovalModification.cjs.map +1 -1
- package/dist/development/src/modifications/relations/DisableOrphanRemovalModification.js.map +1 -1
- package/dist/development/src/modifications/relations/EnableOrphanRemovalModification.cjs.map +1 -1
- package/dist/development/src/modifications/relations/EnableOrphanRemovalModification.js.map +1 -1
- package/dist/development/src/modifications/relations/MakeRelationNotNullModification.cjs.map +1 -1
- package/dist/development/src/modifications/relations/MakeRelationNotNullModification.js.map +1 -1
- package/dist/development/src/modifications/relations/MakeRelationNullableModification.cjs.map +1 -1
- package/dist/development/src/modifications/relations/MakeRelationNullableModification.js.map +1 -1
- package/dist/development/src/modifications/relations/ToggleJunctionEventLogModification.cjs.map +1 -1
- package/dist/development/src/modifications/relations/ToggleJunctionEventLogModification.js.map +1 -1
- package/dist/development/src/modifications/relations/UpdateRelationOnDeleteModification.cjs.map +1 -1
- package/dist/development/src/modifications/relations/UpdateRelationOnDeleteModification.js.map +1 -1
- package/dist/development/src/modifications/relations/UpdateRelationOrderByModification.cjs.map +1 -1
- package/dist/development/src/modifications/relations/UpdateRelationOrderByModification.js.map +1 -1
- package/dist/development/src/modifications/relations/helpers.cjs.map +1 -1
- package/dist/development/src/modifications/relations/helpers.js.map +1 -1
- package/dist/development/src/modifications/relations/normalization.cjs.map +1 -1
- package/dist/development/src/modifications/relations/normalization.js.map +1 -1
- package/dist/development/src/modifications/settings/UpdateSettingsModification.cjs.map +1 -1
- package/dist/development/src/modifications/settings/UpdateSettingsModification.js.map +1 -1
- package/dist/development/src/modifications/upgrade/RemoveIndexNamesModification.cjs.map +1 -1
- package/dist/development/src/modifications/upgrade/RemoveIndexNamesModification.js.map +1 -1
- package/dist/development/src/modifications/utils/createJunctionTable.cjs.map +1 -1
- package/dist/development/src/modifications/utils/createJunctionTable.js.map +1 -1
- package/dist/development/src/modifications/utils/diffUtils.cjs.map +1 -1
- package/dist/development/src/modifications/utils/diffUtils.js.map +1 -1
- package/dist/development/src/modifications/utils/schemaUpdateUtils.cjs.map +1 -1
- package/dist/development/src/modifications/utils/schemaUpdateUtils.js.map +1 -1
- package/dist/development/src/modifications/utils/sqlUpdateUtils.cjs.map +1 -1
- package/dist/development/src/modifications/utils/sqlUpdateUtils.js.map +1 -1
- package/dist/development/src/modifications/utils/viewDependencies.cjs.map +1 -1
- package/dist/development/src/modifications/utils/viewDependencies.js.map +1 -1
- package/dist/development/src/modifications/validation/PatchValidationSchemaModification.cjs.map +1 -1
- package/dist/development/src/modifications/validation/PatchValidationSchemaModification.js.map +1 -1
- package/dist/development/src/modifications/validation/UpdateValidationSchemaModification.cjs.map +1 -1
- package/dist/development/src/modifications/validation/UpdateValidationSchemaModification.js.map +1 -1
- package/dist/development/src/utils/deepCopy.cjs.map +1 -1
- package/dist/development/src/utils/deepCopy.js.map +1 -1
- package/dist/production/src/MigrationDescriber.cjs.map +1 -1
- package/dist/production/src/MigrationDescriber.js.map +1 -1
- package/dist/production/src/SchemaDiffer.cjs.map +1 -1
- package/dist/production/src/SchemaDiffer.js.map +1 -1
- package/dist/production/src/SchemaMigrator.cjs.map +1 -1
- package/dist/production/src/SchemaMigrator.js.map +1 -1
- package/dist/production/src/modifications/ModificationHandler.cjs.map +1 -1
- package/dist/production/src/modifications/ModificationHandler.js.map +1 -1
- package/dist/production/src/modifications/ModificationHandlerFactory.cjs.map +1 -1
- package/dist/production/src/modifications/ModificationHandlerFactory.js.map +1 -1
- package/dist/production/src/modifications/NoopModification.cjs.map +1 -1
- package/dist/production/src/modifications/NoopModification.js.map +1 -1
- package/dist/production/src/modifications/acl/PatchAclSchemaModification.cjs.map +1 -1
- package/dist/production/src/modifications/acl/PatchAclSchemaModification.js.map +1 -1
- package/dist/production/src/modifications/acl/UpdateAclSchemaModification.cjs.map +1 -1
- package/dist/production/src/modifications/acl/UpdateAclSchemaModification.js.map +1 -1
- package/dist/production/src/modifications/actions/CreateTargetModification.cjs.map +1 -1
- package/dist/production/src/modifications/actions/CreateTargetModification.js.map +1 -1
- package/dist/production/src/modifications/actions/CreateTriggerModification.cjs.map +1 -1
- package/dist/production/src/modifications/actions/CreateTriggerModification.js.map +1 -1
- package/dist/production/src/modifications/actions/RemoveTargetModification.cjs.map +1 -1
- package/dist/production/src/modifications/actions/RemoveTargetModification.js.map +1 -1
- package/dist/production/src/modifications/actions/RemoveTriggerModification.cjs.map +1 -1
- package/dist/production/src/modifications/actions/RemoveTriggerModification.js.map +1 -1
- package/dist/production/src/modifications/actions/UpdateTargetModification.cjs.map +1 -1
- package/dist/production/src/modifications/actions/UpdateTargetModification.js.map +1 -1
- package/dist/production/src/modifications/actions/UpdateTriggerModification.cjs.map +1 -1
- package/dist/production/src/modifications/actions/UpdateTriggerModification.js.map +1 -1
- package/dist/production/src/modifications/columns/CreateColumnModification.cjs.map +1 -1
- package/dist/production/src/modifications/columns/CreateColumnModification.js.map +1 -1
- package/dist/production/src/modifications/columns/UpdateColumnDefinitionModification.cjs.map +1 -1
- package/dist/production/src/modifications/columns/UpdateColumnDefinitionModification.js.map +1 -1
- package/dist/production/src/modifications/columns/UpdateColumnNameModification.cjs.map +1 -1
- package/dist/production/src/modifications/columns/UpdateColumnNameModification.js.map +1 -1
- package/dist/production/src/modifications/columns/columnUtils.cjs.map +1 -1
- package/dist/production/src/modifications/columns/columnUtils.js.map +1 -1
- package/dist/production/src/modifications/constraints/CreateUniqueConstraintModification.cjs.map +1 -1
- package/dist/production/src/modifications/constraints/CreateUniqueConstraintModification.js.map +1 -1
- package/dist/production/src/modifications/constraints/RemoveUniqueConstraintModification.cjs.map +1 -1
- package/dist/production/src/modifications/constraints/RemoveUniqueConstraintModification.js.map +1 -1
- package/dist/production/src/modifications/constraints/utils.cjs.map +1 -1
- package/dist/production/src/modifications/constraints/utils.js.map +1 -1
- package/dist/production/src/modifications/differs/RemoveChangedFieldDiffer.cjs.map +1 -1
- package/dist/production/src/modifications/differs/RemoveChangedFieldDiffer.js.map +1 -1
- package/dist/production/src/modifications/differs/RemoveViewDiffer.cjs.map +1 -1
- package/dist/production/src/modifications/differs/RemoveViewDiffer.js.map +1 -1
- package/dist/production/src/modifications/entities/CreateEntityModification.cjs.map +1 -1
- package/dist/production/src/modifications/entities/CreateEntityModification.js.map +1 -1
- package/dist/production/src/modifications/entities/CreateViewModification.cjs.map +1 -1
- package/dist/production/src/modifications/entities/CreateViewModification.js.map +1 -1
- package/dist/production/src/modifications/entities/RemoveEntityModification.cjs.map +1 -1
- package/dist/production/src/modifications/entities/RemoveEntityModification.js.map +1 -1
- package/dist/production/src/modifications/entities/ToggleEventLogModification.cjs.map +1 -1
- package/dist/production/src/modifications/entities/ToggleEventLogModification.js.map +1 -1
- package/dist/production/src/modifications/entities/UpdateEntityNameModification.cjs.map +1 -1
- package/dist/production/src/modifications/entities/UpdateEntityNameModification.js.map +1 -1
- package/dist/production/src/modifications/entities/UpdateEntityOrderByModification.cjs.map +1 -1
- package/dist/production/src/modifications/entities/UpdateEntityOrderByModification.js.map +1 -1
- package/dist/production/src/modifications/entities/UpdateEntityTableNameModification.cjs.map +1 -1
- package/dist/production/src/modifications/entities/UpdateEntityTableNameModification.js.map +1 -1
- package/dist/production/src/modifications/entities/UpdateViewModification.cjs.map +1 -1
- package/dist/production/src/modifications/entities/UpdateViewModification.js.map +1 -1
- package/dist/production/src/modifications/enums/CreateEnumModification.cjs.map +1 -1
- package/dist/production/src/modifications/enums/CreateEnumModification.js.map +1 -1
- package/dist/production/src/modifications/enums/RemoveEnumModification.cjs.map +1 -1
- package/dist/production/src/modifications/enums/RemoveEnumModification.js.map +1 -1
- package/dist/production/src/modifications/enums/UpdateEnumModification.cjs.map +1 -1
- package/dist/production/src/modifications/enums/UpdateEnumModification.js.map +1 -1
- package/dist/production/src/modifications/enums/enumUtils.cjs.map +1 -1
- package/dist/production/src/modifications/fields/RemoveFieldModification.cjs.map +1 -1
- package/dist/production/src/modifications/fields/RemoveFieldModification.js.map +1 -1
- package/dist/production/src/modifications/fields/UpdateFieldNameModification.cjs.map +1 -1
- package/dist/production/src/modifications/fields/UpdateFieldNameModification.js.map +1 -1
- package/dist/production/src/modifications/indexes/CreateIndexModification.cjs.map +1 -1
- package/dist/production/src/modifications/indexes/CreateIndexModification.js.map +1 -1
- package/dist/production/src/modifications/indexes/RemoveIndexModification.cjs.map +1 -1
- package/dist/production/src/modifications/indexes/RemoveIndexModification.js.map +1 -1
- package/dist/production/src/modifications/indexes/utils.cjs.map +1 -1
- package/dist/production/src/modifications/indexes/utils.js.map +1 -1
- package/dist/production/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.cjs.map +1 -1
- package/dist/production/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.js.map +1 -1
- package/dist/production/src/modifications/relations/ConvertOneHasManyToOneHasOneRelationModification.cjs.map +1 -1
- package/dist/production/src/modifications/relations/ConvertOneHasManyToOneHasOneRelationModification.js.map +1 -1
- package/dist/production/src/modifications/relations/ConvertOneToManyRelationModification.cjs.map +1 -1
- package/dist/production/src/modifications/relations/ConvertOneToManyRelationModification.js.map +1 -1
- package/dist/production/src/modifications/relations/CreateRelationInverseSideModification.cjs.map +1 -1
- package/dist/production/src/modifications/relations/CreateRelationInverseSideModification.js.map +1 -1
- package/dist/production/src/modifications/relations/CreateRelationModification.cjs.map +1 -1
- package/dist/production/src/modifications/relations/CreateRelationModification.js.map +1 -1
- package/dist/production/src/modifications/relations/DisableOrphanRemovalModification.cjs.map +1 -1
- package/dist/production/src/modifications/relations/DisableOrphanRemovalModification.js.map +1 -1
- package/dist/production/src/modifications/relations/EnableOrphanRemovalModification.cjs.map +1 -1
- package/dist/production/src/modifications/relations/EnableOrphanRemovalModification.js.map +1 -1
- package/dist/production/src/modifications/relations/MakeRelationNotNullModification.cjs.map +1 -1
- package/dist/production/src/modifications/relations/MakeRelationNotNullModification.js.map +1 -1
- package/dist/production/src/modifications/relations/MakeRelationNullableModification.cjs.map +1 -1
- package/dist/production/src/modifications/relations/MakeRelationNullableModification.js.map +1 -1
- package/dist/production/src/modifications/relations/ToggleJunctionEventLogModification.cjs.map +1 -1
- package/dist/production/src/modifications/relations/ToggleJunctionEventLogModification.js.map +1 -1
- package/dist/production/src/modifications/relations/UpdateRelationOnDeleteModification.cjs.map +1 -1
- package/dist/production/src/modifications/relations/UpdateRelationOnDeleteModification.js.map +1 -1
- package/dist/production/src/modifications/relations/UpdateRelationOrderByModification.cjs.map +1 -1
- package/dist/production/src/modifications/relations/UpdateRelationOrderByModification.js.map +1 -1
- package/dist/production/src/modifications/relations/helpers.cjs.map +1 -1
- package/dist/production/src/modifications/relations/helpers.js.map +1 -1
- package/dist/production/src/modifications/relations/normalization.cjs.map +1 -1
- package/dist/production/src/modifications/relations/normalization.js.map +1 -1
- package/dist/production/src/modifications/settings/UpdateSettingsModification.cjs.map +1 -1
- package/dist/production/src/modifications/settings/UpdateSettingsModification.js.map +1 -1
- package/dist/production/src/modifications/upgrade/RemoveIndexNamesModification.cjs.map +1 -1
- package/dist/production/src/modifications/upgrade/RemoveIndexNamesModification.js.map +1 -1
- package/dist/production/src/modifications/utils/createJunctionTable.cjs.map +1 -1
- package/dist/production/src/modifications/utils/createJunctionTable.js.map +1 -1
- package/dist/production/src/modifications/utils/diffUtils.cjs.map +1 -1
- package/dist/production/src/modifications/utils/diffUtils.js.map +1 -1
- package/dist/production/src/modifications/utils/schemaUpdateUtils.cjs.map +1 -1
- package/dist/production/src/modifications/utils/schemaUpdateUtils.js.map +1 -1
- package/dist/production/src/modifications/utils/sqlUpdateUtils.cjs.map +1 -1
- package/dist/production/src/modifications/utils/sqlUpdateUtils.js.map +1 -1
- package/dist/production/src/modifications/utils/viewDependencies.cjs.map +1 -1
- package/dist/production/src/modifications/utils/viewDependencies.js.map +1 -1
- package/dist/production/src/modifications/validation/PatchValidationSchemaModification.cjs.map +1 -1
- package/dist/production/src/modifications/validation/PatchValidationSchemaModification.js.map +1 -1
- package/dist/production/src/modifications/validation/UpdateValidationSchemaModification.cjs.map +1 -1
- package/dist/production/src/modifications/validation/UpdateValidationSchemaModification.js.map +1 -1
- package/dist/production/src/utils/deepCopy.cjs.map +1 -1
- package/dist/production/src/utils/deepCopy.js.map +1 -1
- package/dist/tests/src/tests.d.ts +1 -1
- package/dist/tests/src/tests.d.ts.map +1 -1
- package/dist/tests/tsconfig.tsbuildinfo +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +8 -8
- package/tests/cases/integration/convertManyHasOneToOneHasOneRelation.test.ts +23 -19
- package/tests/cases/integration/convertOneHasManyToManyHasManyRelation.test.ts +57 -55
- package/tests/cases/integration/convertOneToManyRelation.test.ts +46 -42
- package/tests/cases/integration/createAndDropIndex.test.ts +5 -4
- package/tests/cases/integration/createColumn.test.ts +7 -6
- package/tests/cases/integration/createEntity.test.ts +5 -4
- package/tests/cases/integration/createEnum.test.ts +3 -2
- package/tests/cases/integration/createManyHasMany.test.ts +3 -2
- package/tests/cases/integration/createManyHasOne.test.ts +3 -2
- package/tests/cases/integration/createOneHasMany.test.ts +3 -2
- package/tests/cases/integration/createOneHasOne.test.ts +3 -2
- package/tests/cases/integration/createRelationInverseSide.test.ts +5 -4
- package/tests/cases/integration/createUnique.test.ts +11 -10
- package/tests/cases/integration/createView.test.ts +5 -4
- package/tests/cases/integration/disableOrphanRemoval.test.ts +3 -2
- package/tests/cases/integration/enableOrphanRemoval.test.ts +3 -2
- package/tests/cases/integration/makeColumnNotNull.test.ts +3 -2
- package/tests/cases/integration/makeRelationNotNull.test.ts +3 -2
- package/tests/cases/integration/makeRelationNullable.test.ts +5 -4
- package/tests/cases/integration/patchAclSchema.test.ts +3 -2
- package/tests/cases/integration/removeEntity.test.ts +15 -14
- package/tests/cases/integration/removeEnum.test.ts +3 -2
- package/tests/cases/integration/removeField.test.ts +13 -12
- package/tests/cases/integration/toggleEventLog.test.ts +5 -4
- package/tests/cases/integration/toggleJunctionEventLog.test.ts +5 -4
- package/tests/cases/integration/updateColumnDefinition.test.ts +11 -10
- package/tests/cases/integration/updateEntityName.test.ts +9 -8
- package/tests/cases/integration/updateEntityOrderBy.test.ts +5 -4
- package/tests/cases/integration/updateEnum.test.ts +3 -2
- package/tests/cases/integration/updateFieldName.test.ts +13 -12
- package/tests/cases/integration/updateRelationOnDelete.test.ts +4 -2
- package/tests/cases/integration/updateRelationOrderBy.test.ts +3 -2
- package/tests/cases/integration/updateView.test.ts +9 -8
- package/tests/src/tests.ts +17 -19
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RemoveIndexNamesModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/upgrade/RemoveIndexNamesModification.ts"],"sourcesContent":["import { Schema } from '@contember/schema'\nimport { SchemaUpdater, updateEveryEntity, updateModel } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'\n\nexport class RemoveIndexNamesModificationHandler implements ModificationHandler<RemoveIndexNamesModificationData> {\n\tconstructor() {}\n\n\tpublic createSql(): void {\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn updateModel(\n\t\t\tupdateEveryEntity(({ entity }) => {\n\t\t\t\treturn {\n\t\t\t\t\t...entity,\n\t\t\t\t\tindexes: entity.indexes.map(({ name, ...other }) => other),\n\t\t\t\t\tunique: entity.unique.map(({ name, ...other }) => other),\n\t\t\t\t}\n\t\t\t}),\n\t\t)\n\t}\n\n\tdescribe() {\n\t\treturn { message: `Schema upgrade: remove names of indexes and unique constraints` }\n\t}\n}\n\nexport const removeIndexNamesModification = createModificationType({\n\tid: 'removeIndexNames',\n\thandler: RemoveIndexNamesModificationHandler,\n})\n\n\nexport type RemoveIndexNamesModificationData = {}\n\nexport class RemoveIndexNamesDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema) {\n\t\tconst hasNames = !!Object.values(originalSchema.model.entities).find(it => {\n\t\t\treturn it.indexes.find(it => !!it.name) || it.unique.find(it => !!it.name)\n\t\t})\n\t\tif (hasNames) {\n\t\t\treturn [removeIndexNamesModification.createModification({})]\n\t\t}\n\t\treturn []\n\t}\n}\n"],"names":["it"],"mappings":";;AAIO,MAAM,oCAAsG;AAAA,EAClH,cAAc;AAAA,
|
|
1
|
+
{"version":3,"file":"RemoveIndexNamesModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/upgrade/RemoveIndexNamesModification.ts"],"sourcesContent":["import { Schema } from '@contember/schema'\nimport { SchemaUpdater, updateEveryEntity, updateModel } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'\n\nexport class RemoveIndexNamesModificationHandler implements ModificationHandler<RemoveIndexNamesModificationData> {\n\tconstructor() {}\n\n\tpublic createSql(): void {\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn updateModel(\n\t\t\tupdateEveryEntity(({ entity }) => {\n\t\t\t\treturn {\n\t\t\t\t\t...entity,\n\t\t\t\t\tindexes: entity.indexes.map(({ name, ...other }) => other),\n\t\t\t\t\tunique: entity.unique.map(({ name, ...other }) => other),\n\t\t\t\t}\n\t\t\t}),\n\t\t)\n\t}\n\n\tdescribe() {\n\t\treturn { message: `Schema upgrade: remove names of indexes and unique constraints` }\n\t}\n}\n\nexport const removeIndexNamesModification = createModificationType({\n\tid: 'removeIndexNames',\n\thandler: RemoveIndexNamesModificationHandler,\n})\n\n\nexport type RemoveIndexNamesModificationData = {}\n\nexport class RemoveIndexNamesDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema) {\n\t\tconst hasNames = !!Object.values(originalSchema.model.entities).find(it => {\n\t\t\treturn it.indexes.find(it => !!it.name) || it.unique.find(it => !!it.name)\n\t\t})\n\t\tif (hasNames) {\n\t\t\treturn [removeIndexNamesModification.createModification({})]\n\t\t}\n\t\treturn []\n\t}\n}\n"],"names":["it"],"mappings":";;AAIO,MAAM,oCAAsG;AAAA,EAClH,cAAc;AAAA,EAAA;AAAA,EAEP,YAAkB;AAAA,EAAA;AAAA,EAGlB,mBAAkC;AACjC,WAAA;AAAA,MACN,kBAAkB,CAAC,EAAE,aAAa;AAC1B,eAAA;AAAA,UACN,GAAG;AAAA,UACH,SAAS,OAAO,QAAQ,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,MAAM,KAAK;AAAA,UACzD,QAAQ,OAAO,OAAO,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,MAAM,KAAK;AAAA,QACxD;AAAA,MACA,CAAA;AAAA,IACF;AAAA,EAAA;AAAA,EAGD,WAAW;AACH,WAAA,EAAE,SAAS,iEAAiE;AAAA,EAAA;AAErF;AAEO,MAAM,+BAA+B,uBAAuB;AAAA,EAClE,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAKM,MAAM,uBAAyC;AAAA,EACrD,WAAW,gBAAwB;AAC5B,UAAA,WAAW,CAAC,CAAC,OAAO,OAAO,eAAe,MAAM,QAAQ,EAAE,KAAK,CAAM,OAAA;AAC1E,aAAO,GAAG,QAAQ,KAAK,CAAAA,QAAM,CAAC,CAACA,IAAG,IAAI,KAAK,GAAG,OAAO,KAAK,CAAAA,QAAM,CAAC,CAACA,IAAG,IAAI;AAAA,IAAA,CACzE;AACD,QAAI,UAAU;AACb,aAAO,CAAC,6BAA6B,mBAAmB,CAAA,CAAE,CAAC;AAAA,IAAA;AAE5D,WAAO,CAAC;AAAA,EAAA;AAEV;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createJunctionTable.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/utils/createJunctionTable.ts"],"sourcesContent":["import { createEventTrigger, createEventTrxTrigger } from './sqlUpdateUtils'\nimport { MigrationBuilder } from '@contember/database-migrations'\nimport { Model, Schema } from '@contember/schema'\nimport { getPrimaryColumnType } from './getPrimaryColumnType'\nimport { wrapIdentifier } from '../../utils/dbHelpers'\n\nexport const createJunctionTableSql = (\n\tbuilder: MigrationBuilder,\n\tsystemSchema: string,\n\tschema: Schema,\n\tentity: Model.Entity,\n\ttargetEntity: Model.Entity,\n\trelation: Model.ManyHasManyOwningRelation,\n) => {\n\tconst primaryColumns = [\n\t\trelation.joiningTable.joiningColumn.columnName,\n\t\trelation.joiningTable.inverseJoiningColumn.columnName,\n\t]\n\tbuilder.createTable(\n\t\trelation.joiningTable.tableName,\n\t\t{\n\t\t\t[relation.joiningTable.joiningColumn.columnName]: {\n\t\t\t\ttype: getPrimaryColumnType(entity),\n\t\t\t\tnotNull: true,\n\t\t\t\treferences: `\"${entity.tableName}\"(\"${entity.primaryColumn}\")`,\n\t\t\t\tonDelete: 'CASCADE',\n\t\t\t},\n\t\t\t[relation.joiningTable.inverseJoiningColumn.columnName]: {\n\t\t\t\ttype: getPrimaryColumnType(targetEntity),\n\t\t\t\tnotNull: true,\n\t\t\t\treferences: `\"${targetEntity.tableName}\"(\"${targetEntity.primaryColumn}\")`,\n\t\t\t\tonDelete: 'CASCADE',\n\t\t\t},\n\t\t},\n\t)\n\n\tconst tableNameId = wrapIdentifier(relation.joiningTable.tableName)\n\tconst columnNameId = primaryColumns.map(wrapIdentifier)\n\tbuilder.sql(`ALTER TABLE ${tableNameId} ADD PRIMARY KEY (${columnNameId.join(', ')})`)\n\n\tif (relation.joiningTable.eventLog.enabled) {\n\t\tcreateEventTrigger(builder, systemSchema, relation.joiningTable.tableName, primaryColumns)\n\t\tcreateEventTrxTrigger(builder, systemSchema, relation.joiningTable.tableName)\n\t}\n}\n"],"names":["getPrimaryColumnType","wrapIdentifier","createEventTrigger","createEventTrxTrigger"],"mappings":";;;;;AAMO,MAAM,yBAAyB,CACrC,SACA,cACA,QACA,QACA,cACA,aACI;AACJ,QAAM,iBAAiB;AAAA,IACtB,SAAS,aAAa,cAAc;AAAA,IACpC,SAAS,aAAa,qBAAqB;AAAA,
|
|
1
|
+
{"version":3,"file":"createJunctionTable.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/utils/createJunctionTable.ts"],"sourcesContent":["import { createEventTrigger, createEventTrxTrigger } from './sqlUpdateUtils'\nimport { MigrationBuilder } from '@contember/database-migrations'\nimport { Model, Schema } from '@contember/schema'\nimport { getPrimaryColumnType } from './getPrimaryColumnType'\nimport { wrapIdentifier } from '../../utils/dbHelpers'\n\nexport const createJunctionTableSql = (\n\tbuilder: MigrationBuilder,\n\tsystemSchema: string,\n\tschema: Schema,\n\tentity: Model.Entity,\n\ttargetEntity: Model.Entity,\n\trelation: Model.ManyHasManyOwningRelation,\n) => {\n\tconst primaryColumns = [\n\t\trelation.joiningTable.joiningColumn.columnName,\n\t\trelation.joiningTable.inverseJoiningColumn.columnName,\n\t]\n\tbuilder.createTable(\n\t\trelation.joiningTable.tableName,\n\t\t{\n\t\t\t[relation.joiningTable.joiningColumn.columnName]: {\n\t\t\t\ttype: getPrimaryColumnType(entity),\n\t\t\t\tnotNull: true,\n\t\t\t\treferences: `\"${entity.tableName}\"(\"${entity.primaryColumn}\")`,\n\t\t\t\tonDelete: 'CASCADE',\n\t\t\t},\n\t\t\t[relation.joiningTable.inverseJoiningColumn.columnName]: {\n\t\t\t\ttype: getPrimaryColumnType(targetEntity),\n\t\t\t\tnotNull: true,\n\t\t\t\treferences: `\"${targetEntity.tableName}\"(\"${targetEntity.primaryColumn}\")`,\n\t\t\t\tonDelete: 'CASCADE',\n\t\t\t},\n\t\t},\n\t)\n\n\tconst tableNameId = wrapIdentifier(relation.joiningTable.tableName)\n\tconst columnNameId = primaryColumns.map(wrapIdentifier)\n\tbuilder.sql(`ALTER TABLE ${tableNameId} ADD PRIMARY KEY (${columnNameId.join(', ')})`)\n\n\tif (relation.joiningTable.eventLog.enabled) {\n\t\tcreateEventTrigger(builder, systemSchema, relation.joiningTable.tableName, primaryColumns)\n\t\tcreateEventTrxTrigger(builder, systemSchema, relation.joiningTable.tableName)\n\t}\n}\n"],"names":["getPrimaryColumnType","wrapIdentifier","createEventTrigger","createEventTrxTrigger"],"mappings":";;;;;AAMO,MAAM,yBAAyB,CACrC,SACA,cACA,QACA,QACA,cACA,aACI;AACJ,QAAM,iBAAiB;AAAA,IACtB,SAAS,aAAa,cAAc;AAAA,IACpC,SAAS,aAAa,qBAAqB;AAAA,EAC5C;AACQ,UAAA;AAAA,IACP,SAAS,aAAa;AAAA,IACtB;AAAA,MACC,CAAC,SAAS,aAAa,cAAc,UAAU,GAAG;AAAA,QACjD,MAAMA,0CAAqB,MAAM;AAAA,QACjC,SAAS;AAAA,QACT,YAAY,IAAI,OAAO,SAAS,MAAM,OAAO,aAAa;AAAA,QAC1D,UAAU;AAAA,MACX;AAAA,MACA,CAAC,SAAS,aAAa,qBAAqB,UAAU,GAAG;AAAA,QACxD,MAAMA,0CAAqB,YAAY;AAAA,QACvC,SAAS;AAAA,QACT,YAAY,IAAI,aAAa,SAAS,MAAM,aAAa,aAAa;AAAA,QACtE,UAAU;AAAA,MAAA;AAAA,IACX;AAAA,EAEF;AAEA,QAAM,cAAcC,UAAA,eAAe,SAAS,aAAa,SAAS;AAC5D,QAAA,eAAe,eAAe,IAAIA,wBAAc;AAC9C,UAAA,IAAI,eAAe,WAAW,qBAAqB,aAAa,KAAK,IAAI,CAAC,GAAG;AAEjF,MAAA,SAAS,aAAa,SAAS,SAAS;AAC3CC,mBAAA,mBAAmB,SAAS,cAAc,SAAS,aAAa,WAAW,cAAc;AACzFC,mBAAAA,sBAAsB,SAAS,cAAc,SAAS,aAAa,SAAS;AAAA,EAAA;AAE9E;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createJunctionTable.js","sources":["../../../../../../packages/schema-migrations/src/modifications/utils/createJunctionTable.ts"],"sourcesContent":["import { createEventTrigger, createEventTrxTrigger } from './sqlUpdateUtils'\nimport { MigrationBuilder } from '@contember/database-migrations'\nimport { Model, Schema } from '@contember/schema'\nimport { getPrimaryColumnType } from './getPrimaryColumnType'\nimport { wrapIdentifier } from '../../utils/dbHelpers'\n\nexport const createJunctionTableSql = (\n\tbuilder: MigrationBuilder,\n\tsystemSchema: string,\n\tschema: Schema,\n\tentity: Model.Entity,\n\ttargetEntity: Model.Entity,\n\trelation: Model.ManyHasManyOwningRelation,\n) => {\n\tconst primaryColumns = [\n\t\trelation.joiningTable.joiningColumn.columnName,\n\t\trelation.joiningTable.inverseJoiningColumn.columnName,\n\t]\n\tbuilder.createTable(\n\t\trelation.joiningTable.tableName,\n\t\t{\n\t\t\t[relation.joiningTable.joiningColumn.columnName]: {\n\t\t\t\ttype: getPrimaryColumnType(entity),\n\t\t\t\tnotNull: true,\n\t\t\t\treferences: `\"${entity.tableName}\"(\"${entity.primaryColumn}\")`,\n\t\t\t\tonDelete: 'CASCADE',\n\t\t\t},\n\t\t\t[relation.joiningTable.inverseJoiningColumn.columnName]: {\n\t\t\t\ttype: getPrimaryColumnType(targetEntity),\n\t\t\t\tnotNull: true,\n\t\t\t\treferences: `\"${targetEntity.tableName}\"(\"${targetEntity.primaryColumn}\")`,\n\t\t\t\tonDelete: 'CASCADE',\n\t\t\t},\n\t\t},\n\t)\n\n\tconst tableNameId = wrapIdentifier(relation.joiningTable.tableName)\n\tconst columnNameId = primaryColumns.map(wrapIdentifier)\n\tbuilder.sql(`ALTER TABLE ${tableNameId} ADD PRIMARY KEY (${columnNameId.join(', ')})`)\n\n\tif (relation.joiningTable.eventLog.enabled) {\n\t\tcreateEventTrigger(builder, systemSchema, relation.joiningTable.tableName, primaryColumns)\n\t\tcreateEventTrxTrigger(builder, systemSchema, relation.joiningTable.tableName)\n\t}\n}\n"],"names":[],"mappings":";;;AAMO,MAAM,yBAAyB,CACrC,SACA,cACA,QACA,QACA,cACA,aACI;AACJ,QAAM,iBAAiB;AAAA,IACtB,SAAS,aAAa,cAAc;AAAA,IACpC,SAAS,aAAa,qBAAqB;AAAA,
|
|
1
|
+
{"version":3,"file":"createJunctionTable.js","sources":["../../../../../../packages/schema-migrations/src/modifications/utils/createJunctionTable.ts"],"sourcesContent":["import { createEventTrigger, createEventTrxTrigger } from './sqlUpdateUtils'\nimport { MigrationBuilder } from '@contember/database-migrations'\nimport { Model, Schema } from '@contember/schema'\nimport { getPrimaryColumnType } from './getPrimaryColumnType'\nimport { wrapIdentifier } from '../../utils/dbHelpers'\n\nexport const createJunctionTableSql = (\n\tbuilder: MigrationBuilder,\n\tsystemSchema: string,\n\tschema: Schema,\n\tentity: Model.Entity,\n\ttargetEntity: Model.Entity,\n\trelation: Model.ManyHasManyOwningRelation,\n) => {\n\tconst primaryColumns = [\n\t\trelation.joiningTable.joiningColumn.columnName,\n\t\trelation.joiningTable.inverseJoiningColumn.columnName,\n\t]\n\tbuilder.createTable(\n\t\trelation.joiningTable.tableName,\n\t\t{\n\t\t\t[relation.joiningTable.joiningColumn.columnName]: {\n\t\t\t\ttype: getPrimaryColumnType(entity),\n\t\t\t\tnotNull: true,\n\t\t\t\treferences: `\"${entity.tableName}\"(\"${entity.primaryColumn}\")`,\n\t\t\t\tonDelete: 'CASCADE',\n\t\t\t},\n\t\t\t[relation.joiningTable.inverseJoiningColumn.columnName]: {\n\t\t\t\ttype: getPrimaryColumnType(targetEntity),\n\t\t\t\tnotNull: true,\n\t\t\t\treferences: `\"${targetEntity.tableName}\"(\"${targetEntity.primaryColumn}\")`,\n\t\t\t\tonDelete: 'CASCADE',\n\t\t\t},\n\t\t},\n\t)\n\n\tconst tableNameId = wrapIdentifier(relation.joiningTable.tableName)\n\tconst columnNameId = primaryColumns.map(wrapIdentifier)\n\tbuilder.sql(`ALTER TABLE ${tableNameId} ADD PRIMARY KEY (${columnNameId.join(', ')})`)\n\n\tif (relation.joiningTable.eventLog.enabled) {\n\t\tcreateEventTrigger(builder, systemSchema, relation.joiningTable.tableName, primaryColumns)\n\t\tcreateEventTrxTrigger(builder, systemSchema, relation.joiningTable.tableName)\n\t}\n}\n"],"names":[],"mappings":";;;AAMO,MAAM,yBAAyB,CACrC,SACA,cACA,QACA,QACA,cACA,aACI;AACJ,QAAM,iBAAiB;AAAA,IACtB,SAAS,aAAa,cAAc;AAAA,IACpC,SAAS,aAAa,qBAAqB;AAAA,EAC5C;AACQ,UAAA;AAAA,IACP,SAAS,aAAa;AAAA,IACtB;AAAA,MACC,CAAC,SAAS,aAAa,cAAc,UAAU,GAAG;AAAA,QACjD,MAAM,qBAAqB,MAAM;AAAA,QACjC,SAAS;AAAA,QACT,YAAY,IAAI,OAAO,SAAS,MAAM,OAAO,aAAa;AAAA,QAC1D,UAAU;AAAA,MACX;AAAA,MACA,CAAC,SAAS,aAAa,qBAAqB,UAAU,GAAG;AAAA,QACxD,MAAM,qBAAqB,YAAY;AAAA,QACvC,SAAS;AAAA,QACT,YAAY,IAAI,aAAa,SAAS,MAAM,aAAa,aAAa;AAAA,QACtE,UAAU;AAAA,MAAA;AAAA,IACX;AAAA,EAEF;AAEA,QAAM,cAAc,eAAe,SAAS,aAAa,SAAS;AAC5D,QAAA,eAAe,eAAe,IAAI,cAAc;AAC9C,UAAA,IAAI,eAAe,WAAW,qBAAqB,aAAa,KAAK,IAAI,CAAC,GAAG;AAEjF,MAAA,SAAS,aAAa,SAAS,SAAS;AAC3C,uBAAmB,SAAS,cAAc,SAAS,aAAa,WAAW,cAAc;AACzF,0BAAsB,SAAS,cAAc,SAAS,aAAa,SAAS;AAAA,EAAA;AAE9E;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diffUtils.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/utils/diffUtils.ts"],"sourcesContent":["import { Model, Schema } from '@contember/schema'\nimport { Migration } from '../../Migration'\nimport { isColumn, isRelation } from '@contember/schema-utils'\nimport { isDefined } from '../../utils/isDefined'\nimport deepEqual from 'fast-deep-equal'\n\nexport const updateFields = <Data = { [field: string]: any }>(\n\toriginalSchema: Schema,\n\tupdatedSchema: Schema,\n\tmodificationGenerator: (args: {\n\t\toriginalEntity: Model.Entity\n\t\tupdatedEntity: Model.Entity\n\t\toriginalField: Model.AnyField\n\t\tupdatedField: Model.AnyField\n\t}) => Migration.Modification<Data> | Migration.Modification<Data>[] | undefined,\n): Migration.Modification<Data>[] => {\n\treturn Object.values(updatedSchema.model.entities)\n\t\t.filter(({ name }) => originalSchema.model.entities[name])\n\t\t.flatMap(updatedEntity => {\n\t\t\tconst originalEntity = originalSchema.model.entities[updatedEntity.name]\n\n\t\t\treturn Object.values(updatedEntity.fields)\n\t\t\t\t.flatMap(updatedField => {\n\t\t\t\t\tconst originalField = originalEntity.fields[updatedField.name]\n\t\t\t\t\tif (!originalField) {\n\t\t\t\t\t\treturn undefined\n\t\t\t\t\t}\n\t\t\t\t\tif (deepEqual(originalField, updatedField)) {\n\t\t\t\t\t\treturn undefined\n\t\t\t\t\t}\n\t\t\t\t\tconst result = modificationGenerator({\n\t\t\t\t\t\toriginalEntity,\n\t\t\t\t\t\tupdatedEntity,\n\t\t\t\t\t\toriginalField,\n\t\t\t\t\t\tupdatedField,\n\t\t\t\t\t})\n\t\t\t\t\tif (result !== undefined && !Array.isArray(result)) {\n\t\t\t\t\t\treturn [result]\n\t\t\t\t\t}\n\t\t\t\t\treturn result\n\t\t\t\t})\n\t\t\t\t.filter(isDefined)\n\t\t})\n}\n\nexport const updateColumns = <Data = { [field: string]: any }>(\n\toriginalSchema: Schema,\n\tupdatedSchema: Schema,\n\tmodificationGenerator: (args: {\n\t\toriginalEntity: Model.Entity\n\t\toriginalColumn: Model.AnyColumn\n\t\tupdatedEntity: Model.Entity\n\t\tupdatedColumn: Model.AnyColumn\n\t}) => Migration.Modification<Data> | undefined,\n): Migration.Modification<Data>[] => {\n\treturn updateFields(\n\t\toriginalSchema,\n\t\tupdatedSchema,\n\t\t({ updatedEntity, originalEntity, originalField, updatedField }) => {\n\t\t\tif (!isColumn(updatedField) || !isColumn(originalField)) {\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\treturn modificationGenerator({\n\t\t\t\toriginalEntity,\n\t\t\t\tupdatedEntity,\n\t\t\t\toriginalColumn: originalField,\n\t\t\t\tupdatedColumn: updatedField,\n\t\t\t})\n\t\t},\n\t)\n}\n\nexport const updateRelations = <Data = { [field: string]: any }>(\n\toriginalSchema: Schema,\n\tupdatedSchema: Schema,\n\tmodificationGenerator: (args: {\n\t\toriginalEntity: Model.Entity\n\t\toriginalRelation: Model.AnyRelation\n\t\tupdatedEntity: Model.Entity\n\t\tupdatedRelation: Model.AnyRelation\n\t}) => Migration.Modification<Data> | undefined,\n): Migration.Modification<Data>[] => {\n\treturn updateFields(\n\t\toriginalSchema,\n\t\tupdatedSchema,\n\t\t({ updatedEntity, originalEntity, originalField, updatedField }) => {\n\t\t\tif (!isRelation(updatedField) || !isRelation(originalField)) {\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\treturn modificationGenerator({\n\t\t\t\toriginalEntity,\n\t\t\t\tupdatedEntity,\n\t\t\t\toriginalRelation: originalField,\n\t\t\t\tupdatedRelation: updatedField,\n\t\t\t})\n\t\t},\n\t)\n}\n\nexport const createFields = <Data = { [field: string]: any }>(\n\toriginalSchema: Schema,\n\tupdatedSchema: Schema,\n\tmodificationGenerator: (args: {\n\t\toriginalEntity: Model.Entity\n\t\tupdatedEntity: Model.Entity\n\t\tnewField: Model.AnyField\n\t}) => Migration.Modification<Data> | undefined,\n): Migration.Modification<Data>[] => {\n\treturn Object.values(updatedSchema.model.entities)\n\t\t.filter(({ name }) => originalSchema.model.entities[name])\n\t\t.flatMap(updatedEntity => {\n\t\t\tconst originalEntity = originalSchema.model.entities[updatedEntity.name]\n\n\t\t\treturn Object.values(updatedEntity.fields)\n\t\t\t\t.filter(it => !originalEntity.fields[it.name])\n\t\t\t\t.map(newField => {\n\t\t\t\t\treturn modificationGenerator({\n\t\t\t\t\t\tnewField,\n\t\t\t\t\t\tupdatedEntity,\n\t\t\t\t\t\toriginalEntity,\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t\t.filter(isDefined)\n\t\t})\n}\n"],"names":["isDefined","isColumn","isRelation"],"mappings":";;;;;AAMO,MAAM,eAAe,CAC3B,gBACA,eACA,0BAMoC;AACpC,SAAO,OAAO,OAAO,cAAc,MAAM,QAAQ,EAC/C,OAAO,CAAC,EAAE,KAAK,MAAM,eAAe,MAAM,SAAS,IAAI,CAAC,EACxD,QAAQ,CAAiB,kBAAA;AACzB,UAAM,iBAAiB,eAAe,MAAM,SAAS,cAAc,IAAI;AAEvE,WAAO,OAAO,OAAO,cAAc,MAAM,EACvC,QAAQ,CAAgB,iBAAA;AACxB,YAAM,gBAAgB,eAAe,OAAO,aAAa,IAAI;AAC7D,UAAI,CAAC,eAAe;AACZ,eAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"diffUtils.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/utils/diffUtils.ts"],"sourcesContent":["import { Model, Schema } from '@contember/schema'\nimport { Migration } from '../../Migration'\nimport { isColumn, isRelation } from '@contember/schema-utils'\nimport { isDefined } from '../../utils/isDefined'\nimport deepEqual from 'fast-deep-equal'\n\nexport const updateFields = <Data = { [field: string]: any }>(\n\toriginalSchema: Schema,\n\tupdatedSchema: Schema,\n\tmodificationGenerator: (args: {\n\t\toriginalEntity: Model.Entity\n\t\tupdatedEntity: Model.Entity\n\t\toriginalField: Model.AnyField\n\t\tupdatedField: Model.AnyField\n\t}) => Migration.Modification<Data> | Migration.Modification<Data>[] | undefined,\n): Migration.Modification<Data>[] => {\n\treturn Object.values(updatedSchema.model.entities)\n\t\t.filter(({ name }) => originalSchema.model.entities[name])\n\t\t.flatMap(updatedEntity => {\n\t\t\tconst originalEntity = originalSchema.model.entities[updatedEntity.name]\n\n\t\t\treturn Object.values(updatedEntity.fields)\n\t\t\t\t.flatMap(updatedField => {\n\t\t\t\t\tconst originalField = originalEntity.fields[updatedField.name]\n\t\t\t\t\tif (!originalField) {\n\t\t\t\t\t\treturn undefined\n\t\t\t\t\t}\n\t\t\t\t\tif (deepEqual(originalField, updatedField)) {\n\t\t\t\t\t\treturn undefined\n\t\t\t\t\t}\n\t\t\t\t\tconst result = modificationGenerator({\n\t\t\t\t\t\toriginalEntity,\n\t\t\t\t\t\tupdatedEntity,\n\t\t\t\t\t\toriginalField,\n\t\t\t\t\t\tupdatedField,\n\t\t\t\t\t})\n\t\t\t\t\tif (result !== undefined && !Array.isArray(result)) {\n\t\t\t\t\t\treturn [result]\n\t\t\t\t\t}\n\t\t\t\t\treturn result\n\t\t\t\t})\n\t\t\t\t.filter(isDefined)\n\t\t})\n}\n\nexport const updateColumns = <Data = { [field: string]: any }>(\n\toriginalSchema: Schema,\n\tupdatedSchema: Schema,\n\tmodificationGenerator: (args: {\n\t\toriginalEntity: Model.Entity\n\t\toriginalColumn: Model.AnyColumn\n\t\tupdatedEntity: Model.Entity\n\t\tupdatedColumn: Model.AnyColumn\n\t}) => Migration.Modification<Data> | undefined,\n): Migration.Modification<Data>[] => {\n\treturn updateFields(\n\t\toriginalSchema,\n\t\tupdatedSchema,\n\t\t({ updatedEntity, originalEntity, originalField, updatedField }) => {\n\t\t\tif (!isColumn(updatedField) || !isColumn(originalField)) {\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\treturn modificationGenerator({\n\t\t\t\toriginalEntity,\n\t\t\t\tupdatedEntity,\n\t\t\t\toriginalColumn: originalField,\n\t\t\t\tupdatedColumn: updatedField,\n\t\t\t})\n\t\t},\n\t)\n}\n\nexport const updateRelations = <Data = { [field: string]: any }>(\n\toriginalSchema: Schema,\n\tupdatedSchema: Schema,\n\tmodificationGenerator: (args: {\n\t\toriginalEntity: Model.Entity\n\t\toriginalRelation: Model.AnyRelation\n\t\tupdatedEntity: Model.Entity\n\t\tupdatedRelation: Model.AnyRelation\n\t}) => Migration.Modification<Data> | undefined,\n): Migration.Modification<Data>[] => {\n\treturn updateFields(\n\t\toriginalSchema,\n\t\tupdatedSchema,\n\t\t({ updatedEntity, originalEntity, originalField, updatedField }) => {\n\t\t\tif (!isRelation(updatedField) || !isRelation(originalField)) {\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\treturn modificationGenerator({\n\t\t\t\toriginalEntity,\n\t\t\t\tupdatedEntity,\n\t\t\t\toriginalRelation: originalField,\n\t\t\t\tupdatedRelation: updatedField,\n\t\t\t})\n\t\t},\n\t)\n}\n\nexport const createFields = <Data = { [field: string]: any }>(\n\toriginalSchema: Schema,\n\tupdatedSchema: Schema,\n\tmodificationGenerator: (args: {\n\t\toriginalEntity: Model.Entity\n\t\tupdatedEntity: Model.Entity\n\t\tnewField: Model.AnyField\n\t}) => Migration.Modification<Data> | undefined,\n): Migration.Modification<Data>[] => {\n\treturn Object.values(updatedSchema.model.entities)\n\t\t.filter(({ name }) => originalSchema.model.entities[name])\n\t\t.flatMap(updatedEntity => {\n\t\t\tconst originalEntity = originalSchema.model.entities[updatedEntity.name]\n\n\t\t\treturn Object.values(updatedEntity.fields)\n\t\t\t\t.filter(it => !originalEntity.fields[it.name])\n\t\t\t\t.map(newField => {\n\t\t\t\t\treturn modificationGenerator({\n\t\t\t\t\t\tnewField,\n\t\t\t\t\t\tupdatedEntity,\n\t\t\t\t\t\toriginalEntity,\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t\t.filter(isDefined)\n\t\t})\n}\n"],"names":["isDefined","isColumn","isRelation"],"mappings":";;;;;AAMO,MAAM,eAAe,CAC3B,gBACA,eACA,0BAMoC;AACpC,SAAO,OAAO,OAAO,cAAc,MAAM,QAAQ,EAC/C,OAAO,CAAC,EAAE,KAAK,MAAM,eAAe,MAAM,SAAS,IAAI,CAAC,EACxD,QAAQ,CAAiB,kBAAA;AACzB,UAAM,iBAAiB,eAAe,MAAM,SAAS,cAAc,IAAI;AAEvE,WAAO,OAAO,OAAO,cAAc,MAAM,EACvC,QAAQ,CAAgB,iBAAA;AACxB,YAAM,gBAAgB,eAAe,OAAO,aAAa,IAAI;AAC7D,UAAI,CAAC,eAAe;AACZ,eAAA;AAAA,MAAA;AAEJ,UAAA,UAAU,eAAe,YAAY,GAAG;AACpC,eAAA;AAAA,MAAA;AAER,YAAM,SAAS,sBAAsB;AAAA,QACpC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA,CACA;AACD,UAAI,WAAW,UAAa,CAAC,MAAM,QAAQ,MAAM,GAAG;AACnD,eAAO,CAAC,MAAM;AAAA,MAAA;AAER,aAAA;AAAA,IAAA,CACP,EACA,OAAOA,mBAAS;AAAA,EAAA,CAClB;AACH;AAEO,MAAM,gBAAgB,CAC5B,gBACA,eACA,0BAMoC;AAC7B,SAAA;AAAA,IACN;AAAA,IACA;AAAA,IACA,CAAC,EAAE,eAAe,gBAAgB,eAAe,mBAAmB;AACnE,UAAI,CAACC,YAAS,SAAA,YAAY,KAAK,CAACA,YAAA,SAAS,aAAa,GAAG;AACjD,eAAA;AAAA,MAAA;AAER,aAAO,sBAAsB;AAAA,QAC5B;AAAA,QACA;AAAA,QACA,gBAAgB;AAAA,QAChB,eAAe;AAAA,MAAA,CACf;AAAA,IAAA;AAAA,EAEH;AACD;AAEO,MAAM,kBAAkB,CAC9B,gBACA,eACA,0BAMoC;AAC7B,SAAA;AAAA,IACN;AAAA,IACA;AAAA,IACA,CAAC,EAAE,eAAe,gBAAgB,eAAe,mBAAmB;AACnE,UAAI,CAACC,YAAW,WAAA,YAAY,KAAK,CAACA,YAAA,WAAW,aAAa,GAAG;AACrD,eAAA;AAAA,MAAA;AAER,aAAO,sBAAsB;AAAA,QAC5B;AAAA,QACA;AAAA,QACA,kBAAkB;AAAA,QAClB,iBAAiB;AAAA,MAAA,CACjB;AAAA,IAAA;AAAA,EAEH;AACD;AAEO,MAAM,eAAe,CAC3B,gBACA,eACA,0BAKoC;AACpC,SAAO,OAAO,OAAO,cAAc,MAAM,QAAQ,EAC/C,OAAO,CAAC,EAAE,KAAK,MAAM,eAAe,MAAM,SAAS,IAAI,CAAC,EACxD,QAAQ,CAAiB,kBAAA;AACzB,UAAM,iBAAiB,eAAe,MAAM,SAAS,cAAc,IAAI;AAEvE,WAAO,OAAO,OAAO,cAAc,MAAM,EACvC,OAAO,CAAA,OAAM,CAAC,eAAe,OAAO,GAAG,IAAI,CAAC,EAC5C,IAAI,CAAY,aAAA;AAChB,aAAO,sBAAsB;AAAA,QAC5B;AAAA,QACA;AAAA,QACA;AAAA,MAAA,CACA;AAAA,IAAA,CACD,EACA,OAAOF,mBAAS;AAAA,EAAA,CAClB;AACH;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diffUtils.js","sources":["../../../../../../packages/schema-migrations/src/modifications/utils/diffUtils.ts"],"sourcesContent":["import { Model, Schema } from '@contember/schema'\nimport { Migration } from '../../Migration'\nimport { isColumn, isRelation } from '@contember/schema-utils'\nimport { isDefined } from '../../utils/isDefined'\nimport deepEqual from 'fast-deep-equal'\n\nexport const updateFields = <Data = { [field: string]: any }>(\n\toriginalSchema: Schema,\n\tupdatedSchema: Schema,\n\tmodificationGenerator: (args: {\n\t\toriginalEntity: Model.Entity\n\t\tupdatedEntity: Model.Entity\n\t\toriginalField: Model.AnyField\n\t\tupdatedField: Model.AnyField\n\t}) => Migration.Modification<Data> | Migration.Modification<Data>[] | undefined,\n): Migration.Modification<Data>[] => {\n\treturn Object.values(updatedSchema.model.entities)\n\t\t.filter(({ name }) => originalSchema.model.entities[name])\n\t\t.flatMap(updatedEntity => {\n\t\t\tconst originalEntity = originalSchema.model.entities[updatedEntity.name]\n\n\t\t\treturn Object.values(updatedEntity.fields)\n\t\t\t\t.flatMap(updatedField => {\n\t\t\t\t\tconst originalField = originalEntity.fields[updatedField.name]\n\t\t\t\t\tif (!originalField) {\n\t\t\t\t\t\treturn undefined\n\t\t\t\t\t}\n\t\t\t\t\tif (deepEqual(originalField, updatedField)) {\n\t\t\t\t\t\treturn undefined\n\t\t\t\t\t}\n\t\t\t\t\tconst result = modificationGenerator({\n\t\t\t\t\t\toriginalEntity,\n\t\t\t\t\t\tupdatedEntity,\n\t\t\t\t\t\toriginalField,\n\t\t\t\t\t\tupdatedField,\n\t\t\t\t\t})\n\t\t\t\t\tif (result !== undefined && !Array.isArray(result)) {\n\t\t\t\t\t\treturn [result]\n\t\t\t\t\t}\n\t\t\t\t\treturn result\n\t\t\t\t})\n\t\t\t\t.filter(isDefined)\n\t\t})\n}\n\nexport const updateColumns = <Data = { [field: string]: any }>(\n\toriginalSchema: Schema,\n\tupdatedSchema: Schema,\n\tmodificationGenerator: (args: {\n\t\toriginalEntity: Model.Entity\n\t\toriginalColumn: Model.AnyColumn\n\t\tupdatedEntity: Model.Entity\n\t\tupdatedColumn: Model.AnyColumn\n\t}) => Migration.Modification<Data> | undefined,\n): Migration.Modification<Data>[] => {\n\treturn updateFields(\n\t\toriginalSchema,\n\t\tupdatedSchema,\n\t\t({ updatedEntity, originalEntity, originalField, updatedField }) => {\n\t\t\tif (!isColumn(updatedField) || !isColumn(originalField)) {\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\treturn modificationGenerator({\n\t\t\t\toriginalEntity,\n\t\t\t\tupdatedEntity,\n\t\t\t\toriginalColumn: originalField,\n\t\t\t\tupdatedColumn: updatedField,\n\t\t\t})\n\t\t},\n\t)\n}\n\nexport const updateRelations = <Data = { [field: string]: any }>(\n\toriginalSchema: Schema,\n\tupdatedSchema: Schema,\n\tmodificationGenerator: (args: {\n\t\toriginalEntity: Model.Entity\n\t\toriginalRelation: Model.AnyRelation\n\t\tupdatedEntity: Model.Entity\n\t\tupdatedRelation: Model.AnyRelation\n\t}) => Migration.Modification<Data> | undefined,\n): Migration.Modification<Data>[] => {\n\treturn updateFields(\n\t\toriginalSchema,\n\t\tupdatedSchema,\n\t\t({ updatedEntity, originalEntity, originalField, updatedField }) => {\n\t\t\tif (!isRelation(updatedField) || !isRelation(originalField)) {\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\treturn modificationGenerator({\n\t\t\t\toriginalEntity,\n\t\t\t\tupdatedEntity,\n\t\t\t\toriginalRelation: originalField,\n\t\t\t\tupdatedRelation: updatedField,\n\t\t\t})\n\t\t},\n\t)\n}\n\nexport const createFields = <Data = { [field: string]: any }>(\n\toriginalSchema: Schema,\n\tupdatedSchema: Schema,\n\tmodificationGenerator: (args: {\n\t\toriginalEntity: Model.Entity\n\t\tupdatedEntity: Model.Entity\n\t\tnewField: Model.AnyField\n\t}) => Migration.Modification<Data> | undefined,\n): Migration.Modification<Data>[] => {\n\treturn Object.values(updatedSchema.model.entities)\n\t\t.filter(({ name }) => originalSchema.model.entities[name])\n\t\t.flatMap(updatedEntity => {\n\t\t\tconst originalEntity = originalSchema.model.entities[updatedEntity.name]\n\n\t\t\treturn Object.values(updatedEntity.fields)\n\t\t\t\t.filter(it => !originalEntity.fields[it.name])\n\t\t\t\t.map(newField => {\n\t\t\t\t\treturn modificationGenerator({\n\t\t\t\t\t\tnewField,\n\t\t\t\t\t\tupdatedEntity,\n\t\t\t\t\t\toriginalEntity,\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t\t.filter(isDefined)\n\t\t})\n}\n"],"names":[],"mappings":";;;AAMO,MAAM,eAAe,CAC3B,gBACA,eACA,0BAMoC;AACpC,SAAO,OAAO,OAAO,cAAc,MAAM,QAAQ,EAC/C,OAAO,CAAC,EAAE,KAAK,MAAM,eAAe,MAAM,SAAS,IAAI,CAAC,EACxD,QAAQ,CAAiB,kBAAA;AACzB,UAAM,iBAAiB,eAAe,MAAM,SAAS,cAAc,IAAI;AAEvE,WAAO,OAAO,OAAO,cAAc,MAAM,EACvC,QAAQ,CAAgB,iBAAA;AACxB,YAAM,gBAAgB,eAAe,OAAO,aAAa,IAAI;AAC7D,UAAI,CAAC,eAAe;AACZ,eAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"diffUtils.js","sources":["../../../../../../packages/schema-migrations/src/modifications/utils/diffUtils.ts"],"sourcesContent":["import { Model, Schema } from '@contember/schema'\nimport { Migration } from '../../Migration'\nimport { isColumn, isRelation } from '@contember/schema-utils'\nimport { isDefined } from '../../utils/isDefined'\nimport deepEqual from 'fast-deep-equal'\n\nexport const updateFields = <Data = { [field: string]: any }>(\n\toriginalSchema: Schema,\n\tupdatedSchema: Schema,\n\tmodificationGenerator: (args: {\n\t\toriginalEntity: Model.Entity\n\t\tupdatedEntity: Model.Entity\n\t\toriginalField: Model.AnyField\n\t\tupdatedField: Model.AnyField\n\t}) => Migration.Modification<Data> | Migration.Modification<Data>[] | undefined,\n): Migration.Modification<Data>[] => {\n\treturn Object.values(updatedSchema.model.entities)\n\t\t.filter(({ name }) => originalSchema.model.entities[name])\n\t\t.flatMap(updatedEntity => {\n\t\t\tconst originalEntity = originalSchema.model.entities[updatedEntity.name]\n\n\t\t\treturn Object.values(updatedEntity.fields)\n\t\t\t\t.flatMap(updatedField => {\n\t\t\t\t\tconst originalField = originalEntity.fields[updatedField.name]\n\t\t\t\t\tif (!originalField) {\n\t\t\t\t\t\treturn undefined\n\t\t\t\t\t}\n\t\t\t\t\tif (deepEqual(originalField, updatedField)) {\n\t\t\t\t\t\treturn undefined\n\t\t\t\t\t}\n\t\t\t\t\tconst result = modificationGenerator({\n\t\t\t\t\t\toriginalEntity,\n\t\t\t\t\t\tupdatedEntity,\n\t\t\t\t\t\toriginalField,\n\t\t\t\t\t\tupdatedField,\n\t\t\t\t\t})\n\t\t\t\t\tif (result !== undefined && !Array.isArray(result)) {\n\t\t\t\t\t\treturn [result]\n\t\t\t\t\t}\n\t\t\t\t\treturn result\n\t\t\t\t})\n\t\t\t\t.filter(isDefined)\n\t\t})\n}\n\nexport const updateColumns = <Data = { [field: string]: any }>(\n\toriginalSchema: Schema,\n\tupdatedSchema: Schema,\n\tmodificationGenerator: (args: {\n\t\toriginalEntity: Model.Entity\n\t\toriginalColumn: Model.AnyColumn\n\t\tupdatedEntity: Model.Entity\n\t\tupdatedColumn: Model.AnyColumn\n\t}) => Migration.Modification<Data> | undefined,\n): Migration.Modification<Data>[] => {\n\treturn updateFields(\n\t\toriginalSchema,\n\t\tupdatedSchema,\n\t\t({ updatedEntity, originalEntity, originalField, updatedField }) => {\n\t\t\tif (!isColumn(updatedField) || !isColumn(originalField)) {\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\treturn modificationGenerator({\n\t\t\t\toriginalEntity,\n\t\t\t\tupdatedEntity,\n\t\t\t\toriginalColumn: originalField,\n\t\t\t\tupdatedColumn: updatedField,\n\t\t\t})\n\t\t},\n\t)\n}\n\nexport const updateRelations = <Data = { [field: string]: any }>(\n\toriginalSchema: Schema,\n\tupdatedSchema: Schema,\n\tmodificationGenerator: (args: {\n\t\toriginalEntity: Model.Entity\n\t\toriginalRelation: Model.AnyRelation\n\t\tupdatedEntity: Model.Entity\n\t\tupdatedRelation: Model.AnyRelation\n\t}) => Migration.Modification<Data> | undefined,\n): Migration.Modification<Data>[] => {\n\treturn updateFields(\n\t\toriginalSchema,\n\t\tupdatedSchema,\n\t\t({ updatedEntity, originalEntity, originalField, updatedField }) => {\n\t\t\tif (!isRelation(updatedField) || !isRelation(originalField)) {\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\treturn modificationGenerator({\n\t\t\t\toriginalEntity,\n\t\t\t\tupdatedEntity,\n\t\t\t\toriginalRelation: originalField,\n\t\t\t\tupdatedRelation: updatedField,\n\t\t\t})\n\t\t},\n\t)\n}\n\nexport const createFields = <Data = { [field: string]: any }>(\n\toriginalSchema: Schema,\n\tupdatedSchema: Schema,\n\tmodificationGenerator: (args: {\n\t\toriginalEntity: Model.Entity\n\t\tupdatedEntity: Model.Entity\n\t\tnewField: Model.AnyField\n\t}) => Migration.Modification<Data> | undefined,\n): Migration.Modification<Data>[] => {\n\treturn Object.values(updatedSchema.model.entities)\n\t\t.filter(({ name }) => originalSchema.model.entities[name])\n\t\t.flatMap(updatedEntity => {\n\t\t\tconst originalEntity = originalSchema.model.entities[updatedEntity.name]\n\n\t\t\treturn Object.values(updatedEntity.fields)\n\t\t\t\t.filter(it => !originalEntity.fields[it.name])\n\t\t\t\t.map(newField => {\n\t\t\t\t\treturn modificationGenerator({\n\t\t\t\t\t\tnewField,\n\t\t\t\t\t\tupdatedEntity,\n\t\t\t\t\t\toriginalEntity,\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t\t.filter(isDefined)\n\t\t})\n}\n"],"names":[],"mappings":";;;AAMO,MAAM,eAAe,CAC3B,gBACA,eACA,0BAMoC;AACpC,SAAO,OAAO,OAAO,cAAc,MAAM,QAAQ,EAC/C,OAAO,CAAC,EAAE,KAAK,MAAM,eAAe,MAAM,SAAS,IAAI,CAAC,EACxD,QAAQ,CAAiB,kBAAA;AACzB,UAAM,iBAAiB,eAAe,MAAM,SAAS,cAAc,IAAI;AAEvE,WAAO,OAAO,OAAO,cAAc,MAAM,EACvC,QAAQ,CAAgB,iBAAA;AACxB,YAAM,gBAAgB,eAAe,OAAO,aAAa,IAAI;AAC7D,UAAI,CAAC,eAAe;AACZ,eAAA;AAAA,MAAA;AAEJ,UAAA,UAAU,eAAe,YAAY,GAAG;AACpC,eAAA;AAAA,MAAA;AAER,YAAM,SAAS,sBAAsB;AAAA,QACpC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA,CACA;AACD,UAAI,WAAW,UAAa,CAAC,MAAM,QAAQ,MAAM,GAAG;AACnD,eAAO,CAAC,MAAM;AAAA,MAAA;AAER,aAAA;AAAA,IAAA,CACP,EACA,OAAO,SAAS;AAAA,EAAA,CAClB;AACH;AAEO,MAAM,gBAAgB,CAC5B,gBACA,eACA,0BAMoC;AAC7B,SAAA;AAAA,IACN;AAAA,IACA;AAAA,IACA,CAAC,EAAE,eAAe,gBAAgB,eAAe,mBAAmB;AACnE,UAAI,CAAC,SAAS,YAAY,KAAK,CAAC,SAAS,aAAa,GAAG;AACjD,eAAA;AAAA,MAAA;AAER,aAAO,sBAAsB;AAAA,QAC5B;AAAA,QACA;AAAA,QACA,gBAAgB;AAAA,QAChB,eAAe;AAAA,MAAA,CACf;AAAA,IAAA;AAAA,EAEH;AACD;AAEO,MAAM,kBAAkB,CAC9B,gBACA,eACA,0BAMoC;AAC7B,SAAA;AAAA,IACN;AAAA,IACA;AAAA,IACA,CAAC,EAAE,eAAe,gBAAgB,eAAe,mBAAmB;AACnE,UAAI,CAAC,WAAW,YAAY,KAAK,CAAC,WAAW,aAAa,GAAG;AACrD,eAAA;AAAA,MAAA;AAER,aAAO,sBAAsB;AAAA,QAC5B;AAAA,QACA;AAAA,QACA,kBAAkB;AAAA,QAClB,iBAAiB;AAAA,MAAA,CACjB;AAAA,IAAA;AAAA,EAEH;AACD;AAEO,MAAM,eAAe,CAC3B,gBACA,eACA,0BAKoC;AACpC,SAAO,OAAO,OAAO,cAAc,MAAM,QAAQ,EAC/C,OAAO,CAAC,EAAE,KAAK,MAAM,eAAe,MAAM,SAAS,IAAI,CAAC,EACxD,QAAQ,CAAiB,kBAAA;AACzB,UAAM,iBAAiB,eAAe,MAAM,SAAS,cAAc,IAAI;AAEvE,WAAO,OAAO,OAAO,cAAc,MAAM,EACvC,OAAO,CAAA,OAAM,CAAC,eAAe,OAAO,GAAG,IAAI,CAAC,EAC5C,IAAI,CAAY,aAAA;AAChB,aAAO,sBAAsB;AAAA,QAC5B;AAAA,QACA;AAAA,QACA;AAAA,MAAA,CACA;AAAA,IAAA,CACD,EACA,OAAO,SAAS;AAAA,EAAA,CAClB;AACH;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemaUpdateUtils.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/utils/schemaUpdateUtils.ts"],"sourcesContent":["import { Acl, Model, Schema, Writable } from '@contember/schema'\nimport { SchemaUpdateError } from '../exceptions'\nimport { isDefined } from '../../utils/isDefined'\nimport { isInverseRelation, isOwningRelation, isRelation, PredicateDefinitionProcessor } from '@contember/schema-utils'\nimport { VERSION_ACL_PATCH, VERSION_REMOVE_RELATION_INVERSE_SIDE } from '../ModificationVersions'\n\n\nexport type SchemaUpdater = (args: { schema: Schema }) => Schema\nexport type ModelUpdater = (args: { schema: Schema; model: Model.Schema }) => Model.Schema\nexport type EntityUpdater = (args: { schema: Schema; model: Model.Schema; entity: Model.Entity }) => Model.Entity\nexport type FieldUpdater<In extends Model.AnyField, Out extends Model.AnyField> = (args: {\n\tschema: Schema\n\tmodel: Model.Schema\n\tentity: Model.Entity\n\tfield: In\n}) => Out | undefined\nexport type AclUpdater = (args: { schema: Schema; acl: Acl.Schema }) => Acl.Schema\nexport type AclRoleUpdater = (args: {\n\tschema: Schema\n\tacl: Acl.Schema\n\trole: Acl.RolePermissions\n}) => Acl.RolePermissions\nexport type AclPermissionsUpdater = (args: {\n\tschema: Schema\n\tacl: Acl.Schema\n\trole: Acl.RolePermissions\n\tentities: Acl.Permissions\n}) => Acl.Permissions\n\nexport type AclEntityPermissionsUpdater = (args: {\n\tschema: Schema\n\tacl: Acl.Schema\n\trole: Acl.RolePermissions\n\tentities: Acl.Permissions\n\tentityName: string\n\tentityPermissions: Acl.EntityPermissions\n}) => Acl.EntityPermissions\n\nexport type EntityAclEveryPredicatesUpdater = (args: {\n\tschema: Schema\n\tacl: Acl.Schema\n\trole: Acl.RolePermissions\n\tentities: Acl.Permissions\n\tentityName: string\n\tentityPermissions: Acl.EntityPermissions\n\tpredicate: Acl.PredicateDefinition\n}) => Acl.PredicateDefinition\n\nexport const updateSchema =\n\t(...schemaUpdater: (SchemaUpdater | undefined)[]): SchemaUpdater =>\n\t\targs =>\n\t\t\tschemaUpdater.filter(isDefined).reduce((schema, updater) => updater({ ...args, schema }), args.schema)\n\nexport const updateAcl =\n\t(updater: AclUpdater): SchemaUpdater =>\n\t\targs => ({\n\t\t\t...args.schema,\n\t\t\tacl: updater({ schema: args.schema, acl: args.schema.acl }),\n\t\t})\n\nexport const updateAclEveryRole =\n\t(...updater: AclRoleUpdater[]): AclUpdater =>\n\t\targs => ({\n\t\t\t...args.acl,\n\t\t\troles: Object.fromEntries(\n\t\t\t\tupdater.reduce(\n\t\t\t\t\t(acc, updater) => acc.map(([name, role]) => [name, updater({ ...args, role })]),\n\t\t\t\t\tObject.entries(args.acl.roles),\n\t\t\t\t),\n\t\t\t),\n\t\t})\n\nexport const updateAclEntities =\n\t(updater: AclPermissionsUpdater): AclRoleUpdater =>\n\t\targs => ({\n\t\t\t...args.role,\n\t\t\tentities: updater({ ...args, entities: args.role.entities }),\n\t\t})\n\nexport const updateAclEveryEntity =\n\t(...updater: AclEntityPermissionsUpdater[]): AclRoleUpdater =>\n\t\targs => ({\n\t\t\t...args.role,\n\t\t\tentities: Object.fromEntries(\n\t\t\t\tupdater.reduce(\n\t\t\t\t\t(acc, updater) =>\n\t\t\t\t\t\tacc.map(([entity, entityPermissions]) => [\n\t\t\t\t\t\t\tentity,\n\t\t\t\t\t\t\tupdater({\n\t\t\t\t\t\t\t\t...args,\n\t\t\t\t\t\t\t\tentities: args.role.entities,\n\t\t\t\t\t\t\t\tentityName: entity,\n\t\t\t\t\t\t\t\tentityPermissions,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t]),\n\t\t\t\t\tObject.entries(args.role.entities),\n\t\t\t\t),\n\t\t\t),\n\t\t})\n\ntype EntityAclFieldPermissionsUpdater = (\n\tfieldPermissions: Acl.FieldPermissions,\n\tentityName: string,\n\toperation: Acl.Operation,\n) => Acl.FieldPermissions\ntype EntityOperationHandler = {\n\t[K in keyof Required<Acl.EntityOperations>]: (\n\t\tvalue: Exclude<Acl.EntityOperations[K], undefined>,\n\t) => Acl.EntityOperations[K]\n}\n\nexport const updateAclFieldPermissions =\n\t(updater: EntityAclFieldPermissionsUpdater): AclEntityPermissionsUpdater =>\n\t\t({ entityPermissions, entityName }) => {\n\t\t\tconst operations: Writable<Acl.EntityOperations> = {}\n\t\t\tconst handlers: EntityOperationHandler = {\n\t\t\t\tcreate: value => updater(value, entityName, Acl.Operation.create),\n\t\t\t\tupdate: value => updater(value, entityName, Acl.Operation.update),\n\t\t\t\tread: value => updater(value, entityName, Acl.Operation.read),\n\t\t\t\tdelete: value => value,\n\t\t\t\tcustomPrimary: value => value,\n\t\t\t}\n\t\t\tconst types: (keyof Acl.EntityOperations)[] = ['create', 'update', 'read', 'delete', 'customPrimary']\n\t\t\tfor (const key of types) {\n\t\t\t\tif (key in entityPermissions.operations) {\n\t\t\t\t\toperations[key] = handlers[key](entityPermissions.operations[key] as any) as any\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t...entityPermissions,\n\t\t\t\toperations,\n\t\t\t}\n\t\t}\n\nexport const updateAclEveryPredicate =\n\t(updater: EntityAclEveryPredicatesUpdater): AclEntityPermissionsUpdater =>\n\t\targs => {\n\t\t\treturn {\n\t\t\t\t...args.entityPermissions,\n\t\t\t\tpredicates: Object.fromEntries(\n\t\t\t\t\tObject.entries(args.entityPermissions.predicates).map(([name, predicate]) => [\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tupdater({\n\t\t\t\t\t\t\t...args,\n\t\t\t\t\t\t\tpredicate,\n\t\t\t\t\t\t}),\n\t\t\t\t\t]),\n\t\t\t\t),\n\t\t\t}\n\t\t}\n\nexport const updateModel =\n\t(...modelUpdate: (ModelUpdater | undefined)[]): SchemaUpdater =>\n\t\targs => ({\n\t\t\t...args.schema,\n\t\t\tmodel: modelUpdate\n\t\t\t\t.filter((it): it is ModelUpdater => it !== undefined)\n\t\t\t\t.reduce((model, updater) => updater({ ...args, model }), args.schema.model),\n\t\t})\n\nexport const updateEntity =\n\t(name: string, entityUpdate: EntityUpdater): ModelUpdater =>\n\t\targs => {\n\t\t\tif (!args.model.entities[name]) {\n\t\t\t\tthrow new SchemaUpdateError(`Entity ${name} not found`)\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t...args.model,\n\t\t\t\tentities: {\n\t\t\t\t\t...args.model.entities,\n\t\t\t\t\t[name]: entityUpdate({ ...args, entity: args.model.entities[name] }),\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\nexport const updateEveryEntity =\n\t(entityUpdate: EntityUpdater): ModelUpdater =>\n\t\targs => ({\n\t\t\t...args.model,\n\t\t\tentities: Object.fromEntries(\n\t\t\t\tObject.entries(args.model.entities).map(([name, entity]) => [name, entityUpdate({ ...args, entity })]),\n\t\t\t),\n\t\t})\n\nexport const updateField =\n\t<In extends Model.AnyField = Model.AnyField, Out extends Model.AnyField = In>(name: string, fieldUpdater: FieldUpdater<In, Out>): EntityUpdater =>\n\t\targs => {\n\t\t\tconst { [name]: field, ...otherFields } = args.entity.fields\n\t\t\tif (!args.entity.fields[name]) {\n\t\t\t\tthrow new SchemaUpdateError(`Field ${args.entity.name}::${name} not found`)\n\t\t\t}\n\t\t\tconst updatedField = fieldUpdater({ ...args, field: args.entity.fields[name] as In })\n\n\t\t\treturn {\n\t\t\t\t...args.entity,\n\t\t\t\tfields: {\n\t\t\t\t\t...otherFields,\n\t\t\t\t\t...(updatedField ? { [name]: updatedField } : {}),\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\nexport const updateEveryField =\n\t(fieldUpdater: FieldUpdater<Model.AnyField, Model.AnyField>): EntityUpdater =>\n\t\targs => ({\n\t\t\t...args.entity,\n\t\t\tfields: Object.fromEntries(\n\t\t\t\tObject.entries(args.entity.fields)\n\t\t\t\t\t.map(([name, field]) => {\n\t\t\t\t\t\tconst updatedField = fieldUpdater({ ...args, field })\n\t\t\t\t\t\tif (!updatedField) {\n\t\t\t\t\t\t\treturn undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn [name, updatedField]\n\t\t\t\t\t})\n\t\t\t\t\t.filter(isDefined),\n\t\t\t),\n\t\t})\n\nexport const addField =\n\t(field: Model.AnyField): EntityUpdater =>\n\t\targs => {\n\t\t\treturn {\n\t\t\t\t...args.entity,\n\t\t\t\tfields: {\n\t\t\t\t\t...args.entity.fields,\n\t\t\t\t\t[field.name]: field,\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\nexport const removeField = (entityName: string, fieldName: string, version: number): SchemaUpdater => {\n\treturn ({ schema }) => {\n\t\tconst entity = schema.model.entities[entityName]\n\t\tconst field = entity.fields[fieldName]\n\t\treturn updateSchema(\n\t\t\tversion >= VERSION_ACL_PATCH\n\t\t\t\t? updateAcl(\n\t\t\t\t\tupdateAclEveryRole(\n\t\t\t\t\t\tupdateAclEveryEntity(\n\t\t\t\t\t\t\tupdateAclFieldPermissions((permissions, entityName) => {\n\t\t\t\t\t\t\t\tif (entityName !== entity.name) {\n\t\t\t\t\t\t\t\t\treturn permissions\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst { [fieldName]: field, ...other } = permissions\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t...other,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tupdateAclEveryPredicate(({ predicate, entityName }) => {\n\t\t\t\t\t\t\t\tconst processor = new PredicateDefinitionProcessor(schema.model)\n\t\t\t\t\t\t\t\treturn processor.process(schema.model.entities[entityName], predicate, {\n\t\t\t\t\t\t\t\t\thandleColumn: ctx =>\n\t\t\t\t\t\t\t\t\t\tctx.entity.name === entity.name && ctx.column.name === field.name ? undefined : ctx.value,\n\t\t\t\t\t\t\t\t\thandleRelation: ctx =>\n\t\t\t\t\t\t\t\t\t\tctx.entity.name === entity.name && ctx.relation.name === field.name ? undefined : ctx.value,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t )\n\t\t\t\t: undefined,\n\t\t\tisRelation(field) &&\n\t\t\t\tisOwningRelation(field) &&\n\t\t\t\tfield.inversedBy &&\n\t\t\t\tversion >= VERSION_REMOVE_RELATION_INVERSE_SIDE\n\t\t\t\t? removeField(field.target, field.inversedBy, version)\n\t\t\t\t: undefined,\n\t\t\tupdateModel(\n\t\t\t\tupdateEntity(entity.name, ({ entity }) => {\n\t\t\t\t\tconst { [field.name]: removed, ...fields } = entity.fields\n\t\t\t\t\tconst indexes = entity.indexes.filter(index => !index.fields.includes(field.name))\n\t\t\t\t\tconst unique = entity.unique.filter(index => !index.fields.includes(field.name))\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...entity,\n\t\t\t\t\t\tfields,\n\t\t\t\t\t\tindexes,\n\t\t\t\t\t\tunique,\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\tisRelation(field) && isInverseRelation(field)\n\t\t\t\t\t? updateEntity(\n\t\t\t\t\t\tfield.target,\n\t\t\t\t\t\tupdateField<Model.AnyOwningRelation>(field.ownedBy, ({ field: { inversedBy, ...field } }) => field),\n\t\t\t\t\t )\n\t\t\t\t\t: undefined,\n\t\t\t),\n\t\t)({ schema })\n\t}\n}\n"],"names":["isDefined","schema","updater","Acl","SchemaUpdateError","VERSION_ACL_PATCH","entityName","field","PredicateDefinitionProcessor","isRelation","isOwningRelation","VERSION_REMOVE_RELATION_INVERSE_SIDE","entity","isInverseRelation"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"schemaUpdateUtils.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/utils/schemaUpdateUtils.ts"],"sourcesContent":["import { Acl, Model, Schema, Writable } from '@contember/schema'\nimport { SchemaUpdateError } from '../exceptions'\nimport { isDefined } from '../../utils/isDefined'\nimport { isInverseRelation, isOwningRelation, isRelation, PredicateDefinitionProcessor } from '@contember/schema-utils'\nimport { VERSION_ACL_PATCH, VERSION_REMOVE_RELATION_INVERSE_SIDE } from '../ModificationVersions'\n\n\nexport type SchemaUpdater = (args: { schema: Schema }) => Schema\nexport type ModelUpdater = (args: { schema: Schema; model: Model.Schema }) => Model.Schema\nexport type EntityUpdater = (args: { schema: Schema; model: Model.Schema; entity: Model.Entity }) => Model.Entity\nexport type FieldUpdater<In extends Model.AnyField, Out extends Model.AnyField> = (args: {\n\tschema: Schema\n\tmodel: Model.Schema\n\tentity: Model.Entity\n\tfield: In\n}) => Out | undefined\nexport type AclUpdater = (args: { schema: Schema; acl: Acl.Schema }) => Acl.Schema\nexport type AclRoleUpdater = (args: {\n\tschema: Schema\n\tacl: Acl.Schema\n\trole: Acl.RolePermissions\n}) => Acl.RolePermissions\nexport type AclPermissionsUpdater = (args: {\n\tschema: Schema\n\tacl: Acl.Schema\n\trole: Acl.RolePermissions\n\tentities: Acl.Permissions\n}) => Acl.Permissions\n\nexport type AclEntityPermissionsUpdater = (args: {\n\tschema: Schema\n\tacl: Acl.Schema\n\trole: Acl.RolePermissions\n\tentities: Acl.Permissions\n\tentityName: string\n\tentityPermissions: Acl.EntityPermissions\n}) => Acl.EntityPermissions\n\nexport type EntityAclEveryPredicatesUpdater = (args: {\n\tschema: Schema\n\tacl: Acl.Schema\n\trole: Acl.RolePermissions\n\tentities: Acl.Permissions\n\tentityName: string\n\tentityPermissions: Acl.EntityPermissions\n\tpredicate: Acl.PredicateDefinition\n}) => Acl.PredicateDefinition\n\nexport const updateSchema =\n\t(...schemaUpdater: (SchemaUpdater | undefined)[]): SchemaUpdater =>\n\t\targs =>\n\t\t\tschemaUpdater.filter(isDefined).reduce((schema, updater) => updater({ ...args, schema }), args.schema)\n\nexport const updateAcl =\n\t(updater: AclUpdater): SchemaUpdater =>\n\t\targs => ({\n\t\t\t...args.schema,\n\t\t\tacl: updater({ schema: args.schema, acl: args.schema.acl }),\n\t\t})\n\nexport const updateAclEveryRole =\n\t(...updater: AclRoleUpdater[]): AclUpdater =>\n\t\targs => ({\n\t\t\t...args.acl,\n\t\t\troles: Object.fromEntries(\n\t\t\t\tupdater.reduce(\n\t\t\t\t\t(acc, updater) => acc.map(([name, role]) => [name, updater({ ...args, role })]),\n\t\t\t\t\tObject.entries(args.acl.roles),\n\t\t\t\t),\n\t\t\t),\n\t\t})\n\nexport const updateAclEntities =\n\t(updater: AclPermissionsUpdater): AclRoleUpdater =>\n\t\targs => ({\n\t\t\t...args.role,\n\t\t\tentities: updater({ ...args, entities: args.role.entities }),\n\t\t})\n\nexport const updateAclEveryEntity =\n\t(...updater: AclEntityPermissionsUpdater[]): AclRoleUpdater =>\n\t\targs => ({\n\t\t\t...args.role,\n\t\t\tentities: Object.fromEntries(\n\t\t\t\tupdater.reduce(\n\t\t\t\t\t(acc, updater) =>\n\t\t\t\t\t\tacc.map(([entity, entityPermissions]) => [\n\t\t\t\t\t\t\tentity,\n\t\t\t\t\t\t\tupdater({\n\t\t\t\t\t\t\t\t...args,\n\t\t\t\t\t\t\t\tentities: args.role.entities,\n\t\t\t\t\t\t\t\tentityName: entity,\n\t\t\t\t\t\t\t\tentityPermissions,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t]),\n\t\t\t\t\tObject.entries(args.role.entities),\n\t\t\t\t),\n\t\t\t),\n\t\t})\n\ntype EntityAclFieldPermissionsUpdater = (\n\tfieldPermissions: Acl.FieldPermissions,\n\tentityName: string,\n\toperation: Acl.Operation,\n) => Acl.FieldPermissions\ntype EntityOperationHandler = {\n\t[K in keyof Required<Acl.EntityOperations>]: (\n\t\tvalue: Exclude<Acl.EntityOperations[K], undefined>,\n\t) => Acl.EntityOperations[K]\n}\n\nexport const updateAclFieldPermissions =\n\t(updater: EntityAclFieldPermissionsUpdater): AclEntityPermissionsUpdater =>\n\t\t({ entityPermissions, entityName }) => {\n\t\t\tconst operations: Writable<Acl.EntityOperations> = {}\n\t\t\tconst handlers: EntityOperationHandler = {\n\t\t\t\tcreate: value => updater(value, entityName, Acl.Operation.create),\n\t\t\t\tupdate: value => updater(value, entityName, Acl.Operation.update),\n\t\t\t\tread: value => updater(value, entityName, Acl.Operation.read),\n\t\t\t\tdelete: value => value,\n\t\t\t\tcustomPrimary: value => value,\n\t\t\t}\n\t\t\tconst types: (keyof Acl.EntityOperations)[] = ['create', 'update', 'read', 'delete', 'customPrimary']\n\t\t\tfor (const key of types) {\n\t\t\t\tif (key in entityPermissions.operations) {\n\t\t\t\t\toperations[key] = handlers[key](entityPermissions.operations[key] as any) as any\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t...entityPermissions,\n\t\t\t\toperations,\n\t\t\t}\n\t\t}\n\nexport const updateAclEveryPredicate =\n\t(updater: EntityAclEveryPredicatesUpdater): AclEntityPermissionsUpdater =>\n\t\targs => {\n\t\t\treturn {\n\t\t\t\t...args.entityPermissions,\n\t\t\t\tpredicates: Object.fromEntries(\n\t\t\t\t\tObject.entries(args.entityPermissions.predicates).map(([name, predicate]) => [\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tupdater({\n\t\t\t\t\t\t\t...args,\n\t\t\t\t\t\t\tpredicate,\n\t\t\t\t\t\t}),\n\t\t\t\t\t]),\n\t\t\t\t),\n\t\t\t}\n\t\t}\n\nexport const updateModel =\n\t(...modelUpdate: (ModelUpdater | undefined)[]): SchemaUpdater =>\n\t\targs => ({\n\t\t\t...args.schema,\n\t\t\tmodel: modelUpdate\n\t\t\t\t.filter((it): it is ModelUpdater => it !== undefined)\n\t\t\t\t.reduce((model, updater) => updater({ ...args, model }), args.schema.model),\n\t\t})\n\nexport const updateEntity =\n\t(name: string, entityUpdate: EntityUpdater): ModelUpdater =>\n\t\targs => {\n\t\t\tif (!args.model.entities[name]) {\n\t\t\t\tthrow new SchemaUpdateError(`Entity ${name} not found`)\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t...args.model,\n\t\t\t\tentities: {\n\t\t\t\t\t...args.model.entities,\n\t\t\t\t\t[name]: entityUpdate({ ...args, entity: args.model.entities[name] }),\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\nexport const updateEveryEntity =\n\t(entityUpdate: EntityUpdater): ModelUpdater =>\n\t\targs => ({\n\t\t\t...args.model,\n\t\t\tentities: Object.fromEntries(\n\t\t\t\tObject.entries(args.model.entities).map(([name, entity]) => [name, entityUpdate({ ...args, entity })]),\n\t\t\t),\n\t\t})\n\nexport const updateField =\n\t<In extends Model.AnyField = Model.AnyField, Out extends Model.AnyField = In>(name: string, fieldUpdater: FieldUpdater<In, Out>): EntityUpdater =>\n\t\targs => {\n\t\t\tconst { [name]: field, ...otherFields } = args.entity.fields\n\t\t\tif (!args.entity.fields[name]) {\n\t\t\t\tthrow new SchemaUpdateError(`Field ${args.entity.name}::${name} not found`)\n\t\t\t}\n\t\t\tconst updatedField = fieldUpdater({ ...args, field: args.entity.fields[name] as In })\n\n\t\t\treturn {\n\t\t\t\t...args.entity,\n\t\t\t\tfields: {\n\t\t\t\t\t...otherFields,\n\t\t\t\t\t...(updatedField ? { [name]: updatedField } : {}),\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\nexport const updateEveryField =\n\t(fieldUpdater: FieldUpdater<Model.AnyField, Model.AnyField>): EntityUpdater =>\n\t\targs => ({\n\t\t\t...args.entity,\n\t\t\tfields: Object.fromEntries(\n\t\t\t\tObject.entries(args.entity.fields)\n\t\t\t\t\t.map(([name, field]) => {\n\t\t\t\t\t\tconst updatedField = fieldUpdater({ ...args, field })\n\t\t\t\t\t\tif (!updatedField) {\n\t\t\t\t\t\t\treturn undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn [name, updatedField]\n\t\t\t\t\t})\n\t\t\t\t\t.filter(isDefined),\n\t\t\t),\n\t\t})\n\nexport const addField =\n\t(field: Model.AnyField): EntityUpdater =>\n\t\targs => {\n\t\t\treturn {\n\t\t\t\t...args.entity,\n\t\t\t\tfields: {\n\t\t\t\t\t...args.entity.fields,\n\t\t\t\t\t[field.name]: field,\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\nexport const removeField = (entityName: string, fieldName: string, version: number): SchemaUpdater => {\n\treturn ({ schema }) => {\n\t\tconst entity = schema.model.entities[entityName]\n\t\tconst field = entity.fields[fieldName]\n\t\treturn updateSchema(\n\t\t\tversion >= VERSION_ACL_PATCH\n\t\t\t\t? updateAcl(\n\t\t\t\t\tupdateAclEveryRole(\n\t\t\t\t\t\tupdateAclEveryEntity(\n\t\t\t\t\t\t\tupdateAclFieldPermissions((permissions, entityName) => {\n\t\t\t\t\t\t\t\tif (entityName !== entity.name) {\n\t\t\t\t\t\t\t\t\treturn permissions\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst { [fieldName]: field, ...other } = permissions\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t...other,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tupdateAclEveryPredicate(({ predicate, entityName }) => {\n\t\t\t\t\t\t\t\tconst processor = new PredicateDefinitionProcessor(schema.model)\n\t\t\t\t\t\t\t\treturn processor.process(schema.model.entities[entityName], predicate, {\n\t\t\t\t\t\t\t\t\thandleColumn: ctx =>\n\t\t\t\t\t\t\t\t\t\tctx.entity.name === entity.name && ctx.column.name === field.name ? undefined : ctx.value,\n\t\t\t\t\t\t\t\t\thandleRelation: ctx =>\n\t\t\t\t\t\t\t\t\t\tctx.entity.name === entity.name && ctx.relation.name === field.name ? undefined : ctx.value,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t )\n\t\t\t\t: undefined,\n\t\t\tisRelation(field) &&\n\t\t\t\tisOwningRelation(field) &&\n\t\t\t\tfield.inversedBy &&\n\t\t\t\tversion >= VERSION_REMOVE_RELATION_INVERSE_SIDE\n\t\t\t\t? removeField(field.target, field.inversedBy, version)\n\t\t\t\t: undefined,\n\t\t\tupdateModel(\n\t\t\t\tupdateEntity(entity.name, ({ entity }) => {\n\t\t\t\t\tconst { [field.name]: removed, ...fields } = entity.fields\n\t\t\t\t\tconst indexes = entity.indexes.filter(index => !index.fields.includes(field.name))\n\t\t\t\t\tconst unique = entity.unique.filter(index => !index.fields.includes(field.name))\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...entity,\n\t\t\t\t\t\tfields,\n\t\t\t\t\t\tindexes,\n\t\t\t\t\t\tunique,\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\tisRelation(field) && isInverseRelation(field)\n\t\t\t\t\t? updateEntity(\n\t\t\t\t\t\tfield.target,\n\t\t\t\t\t\tupdateField<Model.AnyOwningRelation>(field.ownedBy, ({ field: { inversedBy, ...field } }) => field),\n\t\t\t\t\t )\n\t\t\t\t\t: undefined,\n\t\t\t),\n\t\t)({ schema })\n\t}\n}\n"],"names":["isDefined","schema","updater","Acl","SchemaUpdateError","VERSION_ACL_PATCH","entityName","field","PredicateDefinitionProcessor","isRelation","isOwningRelation","VERSION_REMOVE_RELATION_INVERSE_SIDE","entity","isInverseRelation"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemaUpdateUtils.js","sources":["../../../../../../packages/schema-migrations/src/modifications/utils/schemaUpdateUtils.ts"],"sourcesContent":["import { Acl, Model, Schema, Writable } from '@contember/schema'\nimport { SchemaUpdateError } from '../exceptions'\nimport { isDefined } from '../../utils/isDefined'\nimport { isInverseRelation, isOwningRelation, isRelation, PredicateDefinitionProcessor } from '@contember/schema-utils'\nimport { VERSION_ACL_PATCH, VERSION_REMOVE_RELATION_INVERSE_SIDE } from '../ModificationVersions'\n\n\nexport type SchemaUpdater = (args: { schema: Schema }) => Schema\nexport type ModelUpdater = (args: { schema: Schema; model: Model.Schema }) => Model.Schema\nexport type EntityUpdater = (args: { schema: Schema; model: Model.Schema; entity: Model.Entity }) => Model.Entity\nexport type FieldUpdater<In extends Model.AnyField, Out extends Model.AnyField> = (args: {\n\tschema: Schema\n\tmodel: Model.Schema\n\tentity: Model.Entity\n\tfield: In\n}) => Out | undefined\nexport type AclUpdater = (args: { schema: Schema; acl: Acl.Schema }) => Acl.Schema\nexport type AclRoleUpdater = (args: {\n\tschema: Schema\n\tacl: Acl.Schema\n\trole: Acl.RolePermissions\n}) => Acl.RolePermissions\nexport type AclPermissionsUpdater = (args: {\n\tschema: Schema\n\tacl: Acl.Schema\n\trole: Acl.RolePermissions\n\tentities: Acl.Permissions\n}) => Acl.Permissions\n\nexport type AclEntityPermissionsUpdater = (args: {\n\tschema: Schema\n\tacl: Acl.Schema\n\trole: Acl.RolePermissions\n\tentities: Acl.Permissions\n\tentityName: string\n\tentityPermissions: Acl.EntityPermissions\n}) => Acl.EntityPermissions\n\nexport type EntityAclEveryPredicatesUpdater = (args: {\n\tschema: Schema\n\tacl: Acl.Schema\n\trole: Acl.RolePermissions\n\tentities: Acl.Permissions\n\tentityName: string\n\tentityPermissions: Acl.EntityPermissions\n\tpredicate: Acl.PredicateDefinition\n}) => Acl.PredicateDefinition\n\nexport const updateSchema =\n\t(...schemaUpdater: (SchemaUpdater | undefined)[]): SchemaUpdater =>\n\t\targs =>\n\t\t\tschemaUpdater.filter(isDefined).reduce((schema, updater) => updater({ ...args, schema }), args.schema)\n\nexport const updateAcl =\n\t(updater: AclUpdater): SchemaUpdater =>\n\t\targs => ({\n\t\t\t...args.schema,\n\t\t\tacl: updater({ schema: args.schema, acl: args.schema.acl }),\n\t\t})\n\nexport const updateAclEveryRole =\n\t(...updater: AclRoleUpdater[]): AclUpdater =>\n\t\targs => ({\n\t\t\t...args.acl,\n\t\t\troles: Object.fromEntries(\n\t\t\t\tupdater.reduce(\n\t\t\t\t\t(acc, updater) => acc.map(([name, role]) => [name, updater({ ...args, role })]),\n\t\t\t\t\tObject.entries(args.acl.roles),\n\t\t\t\t),\n\t\t\t),\n\t\t})\n\nexport const updateAclEntities =\n\t(updater: AclPermissionsUpdater): AclRoleUpdater =>\n\t\targs => ({\n\t\t\t...args.role,\n\t\t\tentities: updater({ ...args, entities: args.role.entities }),\n\t\t})\n\nexport const updateAclEveryEntity =\n\t(...updater: AclEntityPermissionsUpdater[]): AclRoleUpdater =>\n\t\targs => ({\n\t\t\t...args.role,\n\t\t\tentities: Object.fromEntries(\n\t\t\t\tupdater.reduce(\n\t\t\t\t\t(acc, updater) =>\n\t\t\t\t\t\tacc.map(([entity, entityPermissions]) => [\n\t\t\t\t\t\t\tentity,\n\t\t\t\t\t\t\tupdater({\n\t\t\t\t\t\t\t\t...args,\n\t\t\t\t\t\t\t\tentities: args.role.entities,\n\t\t\t\t\t\t\t\tentityName: entity,\n\t\t\t\t\t\t\t\tentityPermissions,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t]),\n\t\t\t\t\tObject.entries(args.role.entities),\n\t\t\t\t),\n\t\t\t),\n\t\t})\n\ntype EntityAclFieldPermissionsUpdater = (\n\tfieldPermissions: Acl.FieldPermissions,\n\tentityName: string,\n\toperation: Acl.Operation,\n) => Acl.FieldPermissions\ntype EntityOperationHandler = {\n\t[K in keyof Required<Acl.EntityOperations>]: (\n\t\tvalue: Exclude<Acl.EntityOperations[K], undefined>,\n\t) => Acl.EntityOperations[K]\n}\n\nexport const updateAclFieldPermissions =\n\t(updater: EntityAclFieldPermissionsUpdater): AclEntityPermissionsUpdater =>\n\t\t({ entityPermissions, entityName }) => {\n\t\t\tconst operations: Writable<Acl.EntityOperations> = {}\n\t\t\tconst handlers: EntityOperationHandler = {\n\t\t\t\tcreate: value => updater(value, entityName, Acl.Operation.create),\n\t\t\t\tupdate: value => updater(value, entityName, Acl.Operation.update),\n\t\t\t\tread: value => updater(value, entityName, Acl.Operation.read),\n\t\t\t\tdelete: value => value,\n\t\t\t\tcustomPrimary: value => value,\n\t\t\t}\n\t\t\tconst types: (keyof Acl.EntityOperations)[] = ['create', 'update', 'read', 'delete', 'customPrimary']\n\t\t\tfor (const key of types) {\n\t\t\t\tif (key in entityPermissions.operations) {\n\t\t\t\t\toperations[key] = handlers[key](entityPermissions.operations[key] as any) as any\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t...entityPermissions,\n\t\t\t\toperations,\n\t\t\t}\n\t\t}\n\nexport const updateAclEveryPredicate =\n\t(updater: EntityAclEveryPredicatesUpdater): AclEntityPermissionsUpdater =>\n\t\targs => {\n\t\t\treturn {\n\t\t\t\t...args.entityPermissions,\n\t\t\t\tpredicates: Object.fromEntries(\n\t\t\t\t\tObject.entries(args.entityPermissions.predicates).map(([name, predicate]) => [\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tupdater({\n\t\t\t\t\t\t\t...args,\n\t\t\t\t\t\t\tpredicate,\n\t\t\t\t\t\t}),\n\t\t\t\t\t]),\n\t\t\t\t),\n\t\t\t}\n\t\t}\n\nexport const updateModel =\n\t(...modelUpdate: (ModelUpdater | undefined)[]): SchemaUpdater =>\n\t\targs => ({\n\t\t\t...args.schema,\n\t\t\tmodel: modelUpdate\n\t\t\t\t.filter((it): it is ModelUpdater => it !== undefined)\n\t\t\t\t.reduce((model, updater) => updater({ ...args, model }), args.schema.model),\n\t\t})\n\nexport const updateEntity =\n\t(name: string, entityUpdate: EntityUpdater): ModelUpdater =>\n\t\targs => {\n\t\t\tif (!args.model.entities[name]) {\n\t\t\t\tthrow new SchemaUpdateError(`Entity ${name} not found`)\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t...args.model,\n\t\t\t\tentities: {\n\t\t\t\t\t...args.model.entities,\n\t\t\t\t\t[name]: entityUpdate({ ...args, entity: args.model.entities[name] }),\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\nexport const updateEveryEntity =\n\t(entityUpdate: EntityUpdater): ModelUpdater =>\n\t\targs => ({\n\t\t\t...args.model,\n\t\t\tentities: Object.fromEntries(\n\t\t\t\tObject.entries(args.model.entities).map(([name, entity]) => [name, entityUpdate({ ...args, entity })]),\n\t\t\t),\n\t\t})\n\nexport const updateField =\n\t<In extends Model.AnyField = Model.AnyField, Out extends Model.AnyField = In>(name: string, fieldUpdater: FieldUpdater<In, Out>): EntityUpdater =>\n\t\targs => {\n\t\t\tconst { [name]: field, ...otherFields } = args.entity.fields\n\t\t\tif (!args.entity.fields[name]) {\n\t\t\t\tthrow new SchemaUpdateError(`Field ${args.entity.name}::${name} not found`)\n\t\t\t}\n\t\t\tconst updatedField = fieldUpdater({ ...args, field: args.entity.fields[name] as In })\n\n\t\t\treturn {\n\t\t\t\t...args.entity,\n\t\t\t\tfields: {\n\t\t\t\t\t...otherFields,\n\t\t\t\t\t...(updatedField ? { [name]: updatedField } : {}),\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\nexport const updateEveryField =\n\t(fieldUpdater: FieldUpdater<Model.AnyField, Model.AnyField>): EntityUpdater =>\n\t\targs => ({\n\t\t\t...args.entity,\n\t\t\tfields: Object.fromEntries(\n\t\t\t\tObject.entries(args.entity.fields)\n\t\t\t\t\t.map(([name, field]) => {\n\t\t\t\t\t\tconst updatedField = fieldUpdater({ ...args, field })\n\t\t\t\t\t\tif (!updatedField) {\n\t\t\t\t\t\t\treturn undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn [name, updatedField]\n\t\t\t\t\t})\n\t\t\t\t\t.filter(isDefined),\n\t\t\t),\n\t\t})\n\nexport const addField =\n\t(field: Model.AnyField): EntityUpdater =>\n\t\targs => {\n\t\t\treturn {\n\t\t\t\t...args.entity,\n\t\t\t\tfields: {\n\t\t\t\t\t...args.entity.fields,\n\t\t\t\t\t[field.name]: field,\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\nexport const removeField = (entityName: string, fieldName: string, version: number): SchemaUpdater => {\n\treturn ({ schema }) => {\n\t\tconst entity = schema.model.entities[entityName]\n\t\tconst field = entity.fields[fieldName]\n\t\treturn updateSchema(\n\t\t\tversion >= VERSION_ACL_PATCH\n\t\t\t\t? updateAcl(\n\t\t\t\t\tupdateAclEveryRole(\n\t\t\t\t\t\tupdateAclEveryEntity(\n\t\t\t\t\t\t\tupdateAclFieldPermissions((permissions, entityName) => {\n\t\t\t\t\t\t\t\tif (entityName !== entity.name) {\n\t\t\t\t\t\t\t\t\treturn permissions\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst { [fieldName]: field, ...other } = permissions\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t...other,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tupdateAclEveryPredicate(({ predicate, entityName }) => {\n\t\t\t\t\t\t\t\tconst processor = new PredicateDefinitionProcessor(schema.model)\n\t\t\t\t\t\t\t\treturn processor.process(schema.model.entities[entityName], predicate, {\n\t\t\t\t\t\t\t\t\thandleColumn: ctx =>\n\t\t\t\t\t\t\t\t\t\tctx.entity.name === entity.name && ctx.column.name === field.name ? undefined : ctx.value,\n\t\t\t\t\t\t\t\t\thandleRelation: ctx =>\n\t\t\t\t\t\t\t\t\t\tctx.entity.name === entity.name && ctx.relation.name === field.name ? undefined : ctx.value,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t )\n\t\t\t\t: undefined,\n\t\t\tisRelation(field) &&\n\t\t\t\tisOwningRelation(field) &&\n\t\t\t\tfield.inversedBy &&\n\t\t\t\tversion >= VERSION_REMOVE_RELATION_INVERSE_SIDE\n\t\t\t\t? removeField(field.target, field.inversedBy, version)\n\t\t\t\t: undefined,\n\t\t\tupdateModel(\n\t\t\t\tupdateEntity(entity.name, ({ entity }) => {\n\t\t\t\t\tconst { [field.name]: removed, ...fields } = entity.fields\n\t\t\t\t\tconst indexes = entity.indexes.filter(index => !index.fields.includes(field.name))\n\t\t\t\t\tconst unique = entity.unique.filter(index => !index.fields.includes(field.name))\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...entity,\n\t\t\t\t\t\tfields,\n\t\t\t\t\t\tindexes,\n\t\t\t\t\t\tunique,\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\tisRelation(field) && isInverseRelation(field)\n\t\t\t\t\t? updateEntity(\n\t\t\t\t\t\tfield.target,\n\t\t\t\t\t\tupdateField<Model.AnyOwningRelation>(field.ownedBy, ({ field: { inversedBy, ...field } }) => field),\n\t\t\t\t\t )\n\t\t\t\t\t: undefined,\n\t\t\t),\n\t\t)({ schema })\n\t}\n}\n"],"names":["updater","entityName","field","entity"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"schemaUpdateUtils.js","sources":["../../../../../../packages/schema-migrations/src/modifications/utils/schemaUpdateUtils.ts"],"sourcesContent":["import { Acl, Model, Schema, Writable } from '@contember/schema'\nimport { SchemaUpdateError } from '../exceptions'\nimport { isDefined } from '../../utils/isDefined'\nimport { isInverseRelation, isOwningRelation, isRelation, PredicateDefinitionProcessor } from '@contember/schema-utils'\nimport { VERSION_ACL_PATCH, VERSION_REMOVE_RELATION_INVERSE_SIDE } from '../ModificationVersions'\n\n\nexport type SchemaUpdater = (args: { schema: Schema }) => Schema\nexport type ModelUpdater = (args: { schema: Schema; model: Model.Schema }) => Model.Schema\nexport type EntityUpdater = (args: { schema: Schema; model: Model.Schema; entity: Model.Entity }) => Model.Entity\nexport type FieldUpdater<In extends Model.AnyField, Out extends Model.AnyField> = (args: {\n\tschema: Schema\n\tmodel: Model.Schema\n\tentity: Model.Entity\n\tfield: In\n}) => Out | undefined\nexport type AclUpdater = (args: { schema: Schema; acl: Acl.Schema }) => Acl.Schema\nexport type AclRoleUpdater = (args: {\n\tschema: Schema\n\tacl: Acl.Schema\n\trole: Acl.RolePermissions\n}) => Acl.RolePermissions\nexport type AclPermissionsUpdater = (args: {\n\tschema: Schema\n\tacl: Acl.Schema\n\trole: Acl.RolePermissions\n\tentities: Acl.Permissions\n}) => Acl.Permissions\n\nexport type AclEntityPermissionsUpdater = (args: {\n\tschema: Schema\n\tacl: Acl.Schema\n\trole: Acl.RolePermissions\n\tentities: Acl.Permissions\n\tentityName: string\n\tentityPermissions: Acl.EntityPermissions\n}) => Acl.EntityPermissions\n\nexport type EntityAclEveryPredicatesUpdater = (args: {\n\tschema: Schema\n\tacl: Acl.Schema\n\trole: Acl.RolePermissions\n\tentities: Acl.Permissions\n\tentityName: string\n\tentityPermissions: Acl.EntityPermissions\n\tpredicate: Acl.PredicateDefinition\n}) => Acl.PredicateDefinition\n\nexport const updateSchema =\n\t(...schemaUpdater: (SchemaUpdater | undefined)[]): SchemaUpdater =>\n\t\targs =>\n\t\t\tschemaUpdater.filter(isDefined).reduce((schema, updater) => updater({ ...args, schema }), args.schema)\n\nexport const updateAcl =\n\t(updater: AclUpdater): SchemaUpdater =>\n\t\targs => ({\n\t\t\t...args.schema,\n\t\t\tacl: updater({ schema: args.schema, acl: args.schema.acl }),\n\t\t})\n\nexport const updateAclEveryRole =\n\t(...updater: AclRoleUpdater[]): AclUpdater =>\n\t\targs => ({\n\t\t\t...args.acl,\n\t\t\troles: Object.fromEntries(\n\t\t\t\tupdater.reduce(\n\t\t\t\t\t(acc, updater) => acc.map(([name, role]) => [name, updater({ ...args, role })]),\n\t\t\t\t\tObject.entries(args.acl.roles),\n\t\t\t\t),\n\t\t\t),\n\t\t})\n\nexport const updateAclEntities =\n\t(updater: AclPermissionsUpdater): AclRoleUpdater =>\n\t\targs => ({\n\t\t\t...args.role,\n\t\t\tentities: updater({ ...args, entities: args.role.entities }),\n\t\t})\n\nexport const updateAclEveryEntity =\n\t(...updater: AclEntityPermissionsUpdater[]): AclRoleUpdater =>\n\t\targs => ({\n\t\t\t...args.role,\n\t\t\tentities: Object.fromEntries(\n\t\t\t\tupdater.reduce(\n\t\t\t\t\t(acc, updater) =>\n\t\t\t\t\t\tacc.map(([entity, entityPermissions]) => [\n\t\t\t\t\t\t\tentity,\n\t\t\t\t\t\t\tupdater({\n\t\t\t\t\t\t\t\t...args,\n\t\t\t\t\t\t\t\tentities: args.role.entities,\n\t\t\t\t\t\t\t\tentityName: entity,\n\t\t\t\t\t\t\t\tentityPermissions,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t]),\n\t\t\t\t\tObject.entries(args.role.entities),\n\t\t\t\t),\n\t\t\t),\n\t\t})\n\ntype EntityAclFieldPermissionsUpdater = (\n\tfieldPermissions: Acl.FieldPermissions,\n\tentityName: string,\n\toperation: Acl.Operation,\n) => Acl.FieldPermissions\ntype EntityOperationHandler = {\n\t[K in keyof Required<Acl.EntityOperations>]: (\n\t\tvalue: Exclude<Acl.EntityOperations[K], undefined>,\n\t) => Acl.EntityOperations[K]\n}\n\nexport const updateAclFieldPermissions =\n\t(updater: EntityAclFieldPermissionsUpdater): AclEntityPermissionsUpdater =>\n\t\t({ entityPermissions, entityName }) => {\n\t\t\tconst operations: Writable<Acl.EntityOperations> = {}\n\t\t\tconst handlers: EntityOperationHandler = {\n\t\t\t\tcreate: value => updater(value, entityName, Acl.Operation.create),\n\t\t\t\tupdate: value => updater(value, entityName, Acl.Operation.update),\n\t\t\t\tread: value => updater(value, entityName, Acl.Operation.read),\n\t\t\t\tdelete: value => value,\n\t\t\t\tcustomPrimary: value => value,\n\t\t\t}\n\t\t\tconst types: (keyof Acl.EntityOperations)[] = ['create', 'update', 'read', 'delete', 'customPrimary']\n\t\t\tfor (const key of types) {\n\t\t\t\tif (key in entityPermissions.operations) {\n\t\t\t\t\toperations[key] = handlers[key](entityPermissions.operations[key] as any) as any\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t...entityPermissions,\n\t\t\t\toperations,\n\t\t\t}\n\t\t}\n\nexport const updateAclEveryPredicate =\n\t(updater: EntityAclEveryPredicatesUpdater): AclEntityPermissionsUpdater =>\n\t\targs => {\n\t\t\treturn {\n\t\t\t\t...args.entityPermissions,\n\t\t\t\tpredicates: Object.fromEntries(\n\t\t\t\t\tObject.entries(args.entityPermissions.predicates).map(([name, predicate]) => [\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tupdater({\n\t\t\t\t\t\t\t...args,\n\t\t\t\t\t\t\tpredicate,\n\t\t\t\t\t\t}),\n\t\t\t\t\t]),\n\t\t\t\t),\n\t\t\t}\n\t\t}\n\nexport const updateModel =\n\t(...modelUpdate: (ModelUpdater | undefined)[]): SchemaUpdater =>\n\t\targs => ({\n\t\t\t...args.schema,\n\t\t\tmodel: modelUpdate\n\t\t\t\t.filter((it): it is ModelUpdater => it !== undefined)\n\t\t\t\t.reduce((model, updater) => updater({ ...args, model }), args.schema.model),\n\t\t})\n\nexport const updateEntity =\n\t(name: string, entityUpdate: EntityUpdater): ModelUpdater =>\n\t\targs => {\n\t\t\tif (!args.model.entities[name]) {\n\t\t\t\tthrow new SchemaUpdateError(`Entity ${name} not found`)\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t...args.model,\n\t\t\t\tentities: {\n\t\t\t\t\t...args.model.entities,\n\t\t\t\t\t[name]: entityUpdate({ ...args, entity: args.model.entities[name] }),\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\nexport const updateEveryEntity =\n\t(entityUpdate: EntityUpdater): ModelUpdater =>\n\t\targs => ({\n\t\t\t...args.model,\n\t\t\tentities: Object.fromEntries(\n\t\t\t\tObject.entries(args.model.entities).map(([name, entity]) => [name, entityUpdate({ ...args, entity })]),\n\t\t\t),\n\t\t})\n\nexport const updateField =\n\t<In extends Model.AnyField = Model.AnyField, Out extends Model.AnyField = In>(name: string, fieldUpdater: FieldUpdater<In, Out>): EntityUpdater =>\n\t\targs => {\n\t\t\tconst { [name]: field, ...otherFields } = args.entity.fields\n\t\t\tif (!args.entity.fields[name]) {\n\t\t\t\tthrow new SchemaUpdateError(`Field ${args.entity.name}::${name} not found`)\n\t\t\t}\n\t\t\tconst updatedField = fieldUpdater({ ...args, field: args.entity.fields[name] as In })\n\n\t\t\treturn {\n\t\t\t\t...args.entity,\n\t\t\t\tfields: {\n\t\t\t\t\t...otherFields,\n\t\t\t\t\t...(updatedField ? { [name]: updatedField } : {}),\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\nexport const updateEveryField =\n\t(fieldUpdater: FieldUpdater<Model.AnyField, Model.AnyField>): EntityUpdater =>\n\t\targs => ({\n\t\t\t...args.entity,\n\t\t\tfields: Object.fromEntries(\n\t\t\t\tObject.entries(args.entity.fields)\n\t\t\t\t\t.map(([name, field]) => {\n\t\t\t\t\t\tconst updatedField = fieldUpdater({ ...args, field })\n\t\t\t\t\t\tif (!updatedField) {\n\t\t\t\t\t\t\treturn undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn [name, updatedField]\n\t\t\t\t\t})\n\t\t\t\t\t.filter(isDefined),\n\t\t\t),\n\t\t})\n\nexport const addField =\n\t(field: Model.AnyField): EntityUpdater =>\n\t\targs => {\n\t\t\treturn {\n\t\t\t\t...args.entity,\n\t\t\t\tfields: {\n\t\t\t\t\t...args.entity.fields,\n\t\t\t\t\t[field.name]: field,\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\nexport const removeField = (entityName: string, fieldName: string, version: number): SchemaUpdater => {\n\treturn ({ schema }) => {\n\t\tconst entity = schema.model.entities[entityName]\n\t\tconst field = entity.fields[fieldName]\n\t\treturn updateSchema(\n\t\t\tversion >= VERSION_ACL_PATCH\n\t\t\t\t? updateAcl(\n\t\t\t\t\tupdateAclEveryRole(\n\t\t\t\t\t\tupdateAclEveryEntity(\n\t\t\t\t\t\t\tupdateAclFieldPermissions((permissions, entityName) => {\n\t\t\t\t\t\t\t\tif (entityName !== entity.name) {\n\t\t\t\t\t\t\t\t\treturn permissions\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst { [fieldName]: field, ...other } = permissions\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t...other,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tupdateAclEveryPredicate(({ predicate, entityName }) => {\n\t\t\t\t\t\t\t\tconst processor = new PredicateDefinitionProcessor(schema.model)\n\t\t\t\t\t\t\t\treturn processor.process(schema.model.entities[entityName], predicate, {\n\t\t\t\t\t\t\t\t\thandleColumn: ctx =>\n\t\t\t\t\t\t\t\t\t\tctx.entity.name === entity.name && ctx.column.name === field.name ? undefined : ctx.value,\n\t\t\t\t\t\t\t\t\thandleRelation: ctx =>\n\t\t\t\t\t\t\t\t\t\tctx.entity.name === entity.name && ctx.relation.name === field.name ? undefined : ctx.value,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t )\n\t\t\t\t: undefined,\n\t\t\tisRelation(field) &&\n\t\t\t\tisOwningRelation(field) &&\n\t\t\t\tfield.inversedBy &&\n\t\t\t\tversion >= VERSION_REMOVE_RELATION_INVERSE_SIDE\n\t\t\t\t? removeField(field.target, field.inversedBy, version)\n\t\t\t\t: undefined,\n\t\t\tupdateModel(\n\t\t\t\tupdateEntity(entity.name, ({ entity }) => {\n\t\t\t\t\tconst { [field.name]: removed, ...fields } = entity.fields\n\t\t\t\t\tconst indexes = entity.indexes.filter(index => !index.fields.includes(field.name))\n\t\t\t\t\tconst unique = entity.unique.filter(index => !index.fields.includes(field.name))\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...entity,\n\t\t\t\t\t\tfields,\n\t\t\t\t\t\tindexes,\n\t\t\t\t\t\tunique,\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\tisRelation(field) && isInverseRelation(field)\n\t\t\t\t\t? updateEntity(\n\t\t\t\t\t\tfield.target,\n\t\t\t\t\t\tupdateField<Model.AnyOwningRelation>(field.ownedBy, ({ field: { inversedBy, ...field } }) => field),\n\t\t\t\t\t )\n\t\t\t\t\t: undefined,\n\t\t\t),\n\t\t)({ schema })\n\t}\n}\n"],"names":["updater","entityName","field","entity"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlUpdateUtils.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/utils/sqlUpdateUtils.ts"],"sourcesContent":["import { MigrationBuilder, Name } from '@contember/database-migrations'\n\nexport const createEventTrigger = (builder: MigrationBuilder, systemSchema: string, tableName: Name, primaryColumns: string[]) => {\n\tbuilder.createTrigger(tableName, 'log_event', {\n\t\twhen: 'AFTER',\n\t\toperation: ['INSERT', 'UPDATE', 'DELETE'],\n\t\tlevel: 'ROW',\n\t\tfunction: {\n\t\t\tschema: systemSchema,\n\t\t\tname: 'trigger_event',\n\t\t},\n\t\tfunctionParams: primaryColumns,\n\t})\n}\n\nexport const dropEventTrigger = (builder: MigrationBuilder, tableName: Name) => {\n\tbuilder.dropTrigger(tableName, 'log_event')\n}\n\nexport const createEventTrxTrigger = (builder: MigrationBuilder, systemSchema: string, tableName: Name) => {\n\tbuilder.createTrigger(tableName, 'log_event_trx', {\n\t\twhen: 'AFTER',\n\t\toperation: ['INSERT', 'UPDATE', 'DELETE'],\n\t\tlevel: 'ROW',\n\t\tconstraint: true,\n\t\tdeferrable: true,\n\t\tdeferred: true,\n\t\tfunction: {\n\t\t\tschema: systemSchema,\n\t\t\tname: 'trigger_event_commit',\n\t\t},\n\t})\n}\n\nexport const dropEventTrxTrigger = (builder: MigrationBuilder, tableName: Name) => {\n\tbuilder.dropTrigger(tableName, 'log_event_trx')\n}\n"],"names":[],"mappings":";;AAEO,MAAM,qBAAqB,CAAC,SAA2B,cAAsB,WAAiB,mBAA6B;AACzH,UAAA,cAAc,WAAW,aAAa;AAAA,IAC7C,MAAM;AAAA,IACN,WAAW,CAAC,UAAU,UAAU,QAAQ;AAAA,IACxC,OAAO;AAAA,IACP,UAAU;AAAA,MACT,QAAQ;AAAA,MACR,MAAM;AAAA,IACP;AAAA,IACA,gBAAgB;AAAA,EAAA,CAChB;AACF;AAEa,MAAA,mBAAmB,CAAC,SAA2B,cAAoB;AACvE,UAAA,YAAY,WAAW,WAAW;AAC3C;AAEO,MAAM,wBAAwB,CAAC,SAA2B,cAAsB,cAAoB;AAClG,UAAA,cAAc,WAAW,iBAAiB;AAAA,IACjD,MAAM;AAAA,IACN,WAAW,CAAC,UAAU,UAAU,QAAQ;AAAA,IACxC,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,UAAU;AAAA,MACT,QAAQ;AAAA,MACR,MAAM;AAAA,
|
|
1
|
+
{"version":3,"file":"sqlUpdateUtils.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/utils/sqlUpdateUtils.ts"],"sourcesContent":["import { MigrationBuilder, Name } from '@contember/database-migrations'\n\nexport const createEventTrigger = (builder: MigrationBuilder, systemSchema: string, tableName: Name, primaryColumns: string[]) => {\n\tbuilder.createTrigger(tableName, 'log_event', {\n\t\twhen: 'AFTER',\n\t\toperation: ['INSERT', 'UPDATE', 'DELETE'],\n\t\tlevel: 'ROW',\n\t\tfunction: {\n\t\t\tschema: systemSchema,\n\t\t\tname: 'trigger_event',\n\t\t},\n\t\tfunctionParams: primaryColumns,\n\t})\n}\n\nexport const dropEventTrigger = (builder: MigrationBuilder, tableName: Name) => {\n\tbuilder.dropTrigger(tableName, 'log_event')\n}\n\nexport const createEventTrxTrigger = (builder: MigrationBuilder, systemSchema: string, tableName: Name) => {\n\tbuilder.createTrigger(tableName, 'log_event_trx', {\n\t\twhen: 'AFTER',\n\t\toperation: ['INSERT', 'UPDATE', 'DELETE'],\n\t\tlevel: 'ROW',\n\t\tconstraint: true,\n\t\tdeferrable: true,\n\t\tdeferred: true,\n\t\tfunction: {\n\t\t\tschema: systemSchema,\n\t\t\tname: 'trigger_event_commit',\n\t\t},\n\t})\n}\n\nexport const dropEventTrxTrigger = (builder: MigrationBuilder, tableName: Name) => {\n\tbuilder.dropTrigger(tableName, 'log_event_trx')\n}\n"],"names":[],"mappings":";;AAEO,MAAM,qBAAqB,CAAC,SAA2B,cAAsB,WAAiB,mBAA6B;AACzH,UAAA,cAAc,WAAW,aAAa;AAAA,IAC7C,MAAM;AAAA,IACN,WAAW,CAAC,UAAU,UAAU,QAAQ;AAAA,IACxC,OAAO;AAAA,IACP,UAAU;AAAA,MACT,QAAQ;AAAA,MACR,MAAM;AAAA,IACP;AAAA,IACA,gBAAgB;AAAA,EAAA,CAChB;AACF;AAEa,MAAA,mBAAmB,CAAC,SAA2B,cAAoB;AACvE,UAAA,YAAY,WAAW,WAAW;AAC3C;AAEO,MAAM,wBAAwB,CAAC,SAA2B,cAAsB,cAAoB;AAClG,UAAA,cAAc,WAAW,iBAAiB;AAAA,IACjD,MAAM;AAAA,IACN,WAAW,CAAC,UAAU,UAAU,QAAQ;AAAA,IACxC,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,UAAU;AAAA,MACT,QAAQ;AAAA,MACR,MAAM;AAAA,IAAA;AAAA,EACP,CACA;AACF;AAEa,MAAA,sBAAsB,CAAC,SAA2B,cAAoB;AAC1E,UAAA,YAAY,WAAW,eAAe;AAC/C;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlUpdateUtils.js","sources":["../../../../../../packages/schema-migrations/src/modifications/utils/sqlUpdateUtils.ts"],"sourcesContent":["import { MigrationBuilder, Name } from '@contember/database-migrations'\n\nexport const createEventTrigger = (builder: MigrationBuilder, systemSchema: string, tableName: Name, primaryColumns: string[]) => {\n\tbuilder.createTrigger(tableName, 'log_event', {\n\t\twhen: 'AFTER',\n\t\toperation: ['INSERT', 'UPDATE', 'DELETE'],\n\t\tlevel: 'ROW',\n\t\tfunction: {\n\t\t\tschema: systemSchema,\n\t\t\tname: 'trigger_event',\n\t\t},\n\t\tfunctionParams: primaryColumns,\n\t})\n}\n\nexport const dropEventTrigger = (builder: MigrationBuilder, tableName: Name) => {\n\tbuilder.dropTrigger(tableName, 'log_event')\n}\n\nexport const createEventTrxTrigger = (builder: MigrationBuilder, systemSchema: string, tableName: Name) => {\n\tbuilder.createTrigger(tableName, 'log_event_trx', {\n\t\twhen: 'AFTER',\n\t\toperation: ['INSERT', 'UPDATE', 'DELETE'],\n\t\tlevel: 'ROW',\n\t\tconstraint: true,\n\t\tdeferrable: true,\n\t\tdeferred: true,\n\t\tfunction: {\n\t\t\tschema: systemSchema,\n\t\t\tname: 'trigger_event_commit',\n\t\t},\n\t})\n}\n\nexport const dropEventTrxTrigger = (builder: MigrationBuilder, tableName: Name) => {\n\tbuilder.dropTrigger(tableName, 'log_event_trx')\n}\n"],"names":[],"mappings":"AAEO,MAAM,qBAAqB,CAAC,SAA2B,cAAsB,WAAiB,mBAA6B;AACzH,UAAA,cAAc,WAAW,aAAa;AAAA,IAC7C,MAAM;AAAA,IACN,WAAW,CAAC,UAAU,UAAU,QAAQ;AAAA,IACxC,OAAO;AAAA,IACP,UAAU;AAAA,MACT,QAAQ;AAAA,MACR,MAAM;AAAA,IACP;AAAA,IACA,gBAAgB;AAAA,EAAA,CAChB;AACF;AAEa,MAAA,mBAAmB,CAAC,SAA2B,cAAoB;AACvE,UAAA,YAAY,WAAW,WAAW;AAC3C;AAEO,MAAM,wBAAwB,CAAC,SAA2B,cAAsB,cAAoB;AAClG,UAAA,cAAc,WAAW,iBAAiB;AAAA,IACjD,MAAM;AAAA,IACN,WAAW,CAAC,UAAU,UAAU,QAAQ;AAAA,IACxC,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,UAAU;AAAA,MACT,QAAQ;AAAA,MACR,MAAM;AAAA,
|
|
1
|
+
{"version":3,"file":"sqlUpdateUtils.js","sources":["../../../../../../packages/schema-migrations/src/modifications/utils/sqlUpdateUtils.ts"],"sourcesContent":["import { MigrationBuilder, Name } from '@contember/database-migrations'\n\nexport const createEventTrigger = (builder: MigrationBuilder, systemSchema: string, tableName: Name, primaryColumns: string[]) => {\n\tbuilder.createTrigger(tableName, 'log_event', {\n\t\twhen: 'AFTER',\n\t\toperation: ['INSERT', 'UPDATE', 'DELETE'],\n\t\tlevel: 'ROW',\n\t\tfunction: {\n\t\t\tschema: systemSchema,\n\t\t\tname: 'trigger_event',\n\t\t},\n\t\tfunctionParams: primaryColumns,\n\t})\n}\n\nexport const dropEventTrigger = (builder: MigrationBuilder, tableName: Name) => {\n\tbuilder.dropTrigger(tableName, 'log_event')\n}\n\nexport const createEventTrxTrigger = (builder: MigrationBuilder, systemSchema: string, tableName: Name) => {\n\tbuilder.createTrigger(tableName, 'log_event_trx', {\n\t\twhen: 'AFTER',\n\t\toperation: ['INSERT', 'UPDATE', 'DELETE'],\n\t\tlevel: 'ROW',\n\t\tconstraint: true,\n\t\tdeferrable: true,\n\t\tdeferred: true,\n\t\tfunction: {\n\t\t\tschema: systemSchema,\n\t\t\tname: 'trigger_event_commit',\n\t\t},\n\t})\n}\n\nexport const dropEventTrxTrigger = (builder: MigrationBuilder, tableName: Name) => {\n\tbuilder.dropTrigger(tableName, 'log_event_trx')\n}\n"],"names":[],"mappings":"AAEO,MAAM,qBAAqB,CAAC,SAA2B,cAAsB,WAAiB,mBAA6B;AACzH,UAAA,cAAc,WAAW,aAAa;AAAA,IAC7C,MAAM;AAAA,IACN,WAAW,CAAC,UAAU,UAAU,QAAQ;AAAA,IACxC,OAAO;AAAA,IACP,UAAU;AAAA,MACT,QAAQ;AAAA,MACR,MAAM;AAAA,IACP;AAAA,IACA,gBAAgB;AAAA,EAAA,CAChB;AACF;AAEa,MAAA,mBAAmB,CAAC,SAA2B,cAAoB;AACvE,UAAA,YAAY,WAAW,WAAW;AAC3C;AAEO,MAAM,wBAAwB,CAAC,SAA2B,cAAsB,cAAoB;AAClG,UAAA,cAAc,WAAW,iBAAiB;AAAA,IACjD,MAAM;AAAA,IACN,WAAW,CAAC,UAAU,UAAU,QAAQ;AAAA,IACxC,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,UAAU;AAAA,MACT,QAAQ;AAAA,MACR,MAAM;AAAA,IAAA;AAAA,EACP,CACA;AACF;AAEa,MAAA,sBAAsB,CAAC,SAA2B,cAAoB;AAC1E,UAAA,YAAY,WAAW,eAAe;AAC/C;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viewDependencies.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/utils/viewDependencies.ts"],"sourcesContent":["import { Model } from '@contember/schema'\nimport { Migration } from '../../Migration'\nimport { removeEntityModification } from '../entities'\n\ntype EntityDependantViews = Map<string, Set<Model.Entity>>\nexport const getEntityDependantViews = (model: Model.Schema): EntityDependantViews => {\n\tconst dependants: EntityDependantViews = new Map(Object.values(model.entities).map(it => [it.name, new Set()]))\n\tfor (const entity of Object.values(model.entities)) {\n\t\tif (!entity.view?.dependencies?.length) {\n\t\t\tcontinue\n\t\t}\n\t\tfor (const dependency of entity.view.dependencies) {\n\t\t\tconst entityDependants = dependants.get(dependency)\n\t\t\tif (!entityDependants) {\n\t\t\t\tthrow new Error()\n\t\t\t}\n\t\t\tentityDependants.add(entity)\n\t\t}\n\t}\n\treturn dependants\n}\n\nexport const cascadeRemoveDependantViews = (model: Model.Schema, entities: Model.Entity[]): Migration.Modification[] => {\n\tconst visited = new Set<string>()\n\tconst dependants = getEntityDependantViews(model)\n\tconst modifications: Migration.Modification[] = []\n\tconst removeCascade = (entity: Model.Entity) => {\n\t\tif (visited.has(entity.name)) {\n\t\t\treturn\n\t\t}\n\t\tvisited.add(entity.name)\n\t\tfor (const dependant of dependants.get(entity.name) ?? []) {\n\t\t\tremoveCascade(dependant)\n\t\t}\n\t\tif (entity.view) {\n\t\t\tmodifications.push(removeEntityModification.createModification({ entityName: entity.name }))\n\t\t}\n\t}\n\tfor (const entity of entities) {\n\t\tremoveCascade(entity)\n\t}\n\treturn modifications\n}\n"],"names":["removeEntityModification"],"mappings":";;;;;;AAKa,MAAA,0BAA0B,CAAC,UAA8C;AACrF,QAAM,aAAmC,IAAI,IAAI,OAAO,OAAO,MAAM,QAAQ,EAAE,IAAI,CAAA,OAAM,CAAC,GAAG,0BAAU,
|
|
1
|
+
{"version":3,"file":"viewDependencies.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/utils/viewDependencies.ts"],"sourcesContent":["import { Model } from '@contember/schema'\nimport { Migration } from '../../Migration'\nimport { removeEntityModification } from '../entities'\n\ntype EntityDependantViews = Map<string, Set<Model.Entity>>\nexport const getEntityDependantViews = (model: Model.Schema): EntityDependantViews => {\n\tconst dependants: EntityDependantViews = new Map(Object.values(model.entities).map(it => [it.name, new Set()]))\n\tfor (const entity of Object.values(model.entities)) {\n\t\tif (!entity.view?.dependencies?.length) {\n\t\t\tcontinue\n\t\t}\n\t\tfor (const dependency of entity.view.dependencies) {\n\t\t\tconst entityDependants = dependants.get(dependency)\n\t\t\tif (!entityDependants) {\n\t\t\t\tthrow new Error()\n\t\t\t}\n\t\t\tentityDependants.add(entity)\n\t\t}\n\t}\n\treturn dependants\n}\n\nexport const cascadeRemoveDependantViews = (model: Model.Schema, entities: Model.Entity[]): Migration.Modification[] => {\n\tconst visited = new Set<string>()\n\tconst dependants = getEntityDependantViews(model)\n\tconst modifications: Migration.Modification[] = []\n\tconst removeCascade = (entity: Model.Entity) => {\n\t\tif (visited.has(entity.name)) {\n\t\t\treturn\n\t\t}\n\t\tvisited.add(entity.name)\n\t\tfor (const dependant of dependants.get(entity.name) ?? []) {\n\t\t\tremoveCascade(dependant)\n\t\t}\n\t\tif (entity.view) {\n\t\t\tmodifications.push(removeEntityModification.createModification({ entityName: entity.name }))\n\t\t}\n\t}\n\tfor (const entity of entities) {\n\t\tremoveCascade(entity)\n\t}\n\treturn modifications\n}\n"],"names":["removeEntityModification"],"mappings":";;;;;;AAKa,MAAA,0BAA0B,CAAC,UAA8C;AACrF,QAAM,aAAmC,IAAI,IAAI,OAAO,OAAO,MAAM,QAAQ,EAAE,IAAI,CAAA,OAAM,CAAC,GAAG,0BAAU,IAAK,CAAA,CAAC,CAAC;AAC9G,aAAW,UAAU,OAAO,OAAO,MAAM,QAAQ,GAAG;AACnD,QAAI,CAAC,OAAO,MAAM,cAAc,QAAQ;AACvC;AAAA,IAAA;AAEU,eAAA,cAAc,OAAO,KAAK,cAAc;AAC5C,YAAA,mBAAmB,WAAW,IAAI,UAAU;AAClD,UAAI,CAAC,kBAAkB;AACtB,cAAM,IAAI,MAAM;AAAA,MAAA;AAEjB,uBAAiB,IAAI,MAAM;AAAA,IAAA;AAAA,EAC5B;AAEM,SAAA;AACR;AAEa,MAAA,8BAA8B,CAAC,OAAqB,aAAuD;AACjH,QAAA,8BAAc,IAAY;AAC1B,QAAA,aAAa,wBAAwB,KAAK;AAChD,QAAM,gBAA0C,CAAC;AAC3C,QAAA,gBAAgB,CAAC,WAAyB;AAC/C,QAAI,QAAQ,IAAI,OAAO,IAAI,GAAG;AAC7B;AAAA,IAAA;AAEO,YAAA,IAAI,OAAO,IAAI;AACvB,eAAW,aAAa,WAAW,IAAI,OAAO,IAAI,KAAK,IAAI;AAC1D,oBAAc,SAAS;AAAA,IAAA;AAExB,QAAI,OAAO,MAAM;AACF,oBAAA,KAAKA,yBAAAA,yBAAyB,mBAAmB,EAAE,YAAY,OAAO,KAAA,CAAM,CAAC;AAAA,IAAA;AAAA,EAE7F;AACA,aAAW,UAAU,UAAU;AAC9B,kBAAc,MAAM;AAAA,EAAA;AAEd,SAAA;AACR;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viewDependencies.js","sources":["../../../../../../packages/schema-migrations/src/modifications/utils/viewDependencies.ts"],"sourcesContent":["import { Model } from '@contember/schema'\nimport { Migration } from '../../Migration'\nimport { removeEntityModification } from '../entities'\n\ntype EntityDependantViews = Map<string, Set<Model.Entity>>\nexport const getEntityDependantViews = (model: Model.Schema): EntityDependantViews => {\n\tconst dependants: EntityDependantViews = new Map(Object.values(model.entities).map(it => [it.name, new Set()]))\n\tfor (const entity of Object.values(model.entities)) {\n\t\tif (!entity.view?.dependencies?.length) {\n\t\t\tcontinue\n\t\t}\n\t\tfor (const dependency of entity.view.dependencies) {\n\t\t\tconst entityDependants = dependants.get(dependency)\n\t\t\tif (!entityDependants) {\n\t\t\t\tthrow new Error()\n\t\t\t}\n\t\t\tentityDependants.add(entity)\n\t\t}\n\t}\n\treturn dependants\n}\n\nexport const cascadeRemoveDependantViews = (model: Model.Schema, entities: Model.Entity[]): Migration.Modification[] => {\n\tconst visited = new Set<string>()\n\tconst dependants = getEntityDependantViews(model)\n\tconst modifications: Migration.Modification[] = []\n\tconst removeCascade = (entity: Model.Entity) => {\n\t\tif (visited.has(entity.name)) {\n\t\t\treturn\n\t\t}\n\t\tvisited.add(entity.name)\n\t\tfor (const dependant of dependants.get(entity.name) ?? []) {\n\t\t\tremoveCascade(dependant)\n\t\t}\n\t\tif (entity.view) {\n\t\t\tmodifications.push(removeEntityModification.createModification({ entityName: entity.name }))\n\t\t}\n\t}\n\tfor (const entity of entities) {\n\t\tremoveCascade(entity)\n\t}\n\treturn modifications\n}\n"],"names":[],"mappings":";;;;AAKa,MAAA,0BAA0B,CAAC,UAA8C;AACrF,QAAM,aAAmC,IAAI,IAAI,OAAO,OAAO,MAAM,QAAQ,EAAE,IAAI,CAAA,OAAM,CAAC,GAAG,0BAAU,
|
|
1
|
+
{"version":3,"file":"viewDependencies.js","sources":["../../../../../../packages/schema-migrations/src/modifications/utils/viewDependencies.ts"],"sourcesContent":["import { Model } from '@contember/schema'\nimport { Migration } from '../../Migration'\nimport { removeEntityModification } from '../entities'\n\ntype EntityDependantViews = Map<string, Set<Model.Entity>>\nexport const getEntityDependantViews = (model: Model.Schema): EntityDependantViews => {\n\tconst dependants: EntityDependantViews = new Map(Object.values(model.entities).map(it => [it.name, new Set()]))\n\tfor (const entity of Object.values(model.entities)) {\n\t\tif (!entity.view?.dependencies?.length) {\n\t\t\tcontinue\n\t\t}\n\t\tfor (const dependency of entity.view.dependencies) {\n\t\t\tconst entityDependants = dependants.get(dependency)\n\t\t\tif (!entityDependants) {\n\t\t\t\tthrow new Error()\n\t\t\t}\n\t\t\tentityDependants.add(entity)\n\t\t}\n\t}\n\treturn dependants\n}\n\nexport const cascadeRemoveDependantViews = (model: Model.Schema, entities: Model.Entity[]): Migration.Modification[] => {\n\tconst visited = new Set<string>()\n\tconst dependants = getEntityDependantViews(model)\n\tconst modifications: Migration.Modification[] = []\n\tconst removeCascade = (entity: Model.Entity) => {\n\t\tif (visited.has(entity.name)) {\n\t\t\treturn\n\t\t}\n\t\tvisited.add(entity.name)\n\t\tfor (const dependant of dependants.get(entity.name) ?? []) {\n\t\t\tremoveCascade(dependant)\n\t\t}\n\t\tif (entity.view) {\n\t\t\tmodifications.push(removeEntityModification.createModification({ entityName: entity.name }))\n\t\t}\n\t}\n\tfor (const entity of entities) {\n\t\tremoveCascade(entity)\n\t}\n\treturn modifications\n}\n"],"names":[],"mappings":";;;;AAKa,MAAA,0BAA0B,CAAC,UAA8C;AACrF,QAAM,aAAmC,IAAI,IAAI,OAAO,OAAO,MAAM,QAAQ,EAAE,IAAI,CAAA,OAAM,CAAC,GAAG,0BAAU,IAAK,CAAA,CAAC,CAAC;AAC9G,aAAW,UAAU,OAAO,OAAO,MAAM,QAAQ,GAAG;AACnD,QAAI,CAAC,OAAO,MAAM,cAAc,QAAQ;AACvC;AAAA,IAAA;AAEU,eAAA,cAAc,OAAO,KAAK,cAAc;AAC5C,YAAA,mBAAmB,WAAW,IAAI,UAAU;AAClD,UAAI,CAAC,kBAAkB;AACtB,cAAM,IAAI,MAAM;AAAA,MAAA;AAEjB,uBAAiB,IAAI,MAAM;AAAA,IAAA;AAAA,EAC5B;AAEM,SAAA;AACR;AAEa,MAAA,8BAA8B,CAAC,OAAqB,aAAuD;AACjH,QAAA,8BAAc,IAAY;AAC1B,QAAA,aAAa,wBAAwB,KAAK;AAChD,QAAM,gBAA0C,CAAC;AAC3C,QAAA,gBAAgB,CAAC,WAAyB;AAC/C,QAAI,QAAQ,IAAI,OAAO,IAAI,GAAG;AAC7B;AAAA,IAAA;AAEO,YAAA,IAAI,OAAO,IAAI;AACvB,eAAW,aAAa,WAAW,IAAI,OAAO,IAAI,KAAK,IAAI;AAC1D,oBAAc,SAAS;AAAA,IAAA;AAExB,QAAI,OAAO,MAAM;AACF,oBAAA,KAAK,yBAAyB,mBAAmB,EAAE,YAAY,OAAO,KAAA,CAAM,CAAC;AAAA,IAAA;AAAA,EAE7F;AACA,aAAW,UAAU,UAAU;AAC9B,kBAAc,MAAM;AAAA,EAAA;AAEd,SAAA;AACR;"}
|
package/dist/development/src/modifications/validation/PatchValidationSchemaModification.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PatchValidationSchemaModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/validation/PatchValidationSchemaModification.ts"],"sourcesContent":["import { SchemaUpdater } from '../utils/schemaUpdateUtils'\nimport { createModificationType, ModificationHandler } from '../ModificationHandler'\nimport { applyPatch, Operation } from 'rfc6902'\nimport deepCopy from '../../utils/deepCopy'\n\nexport class PatchValidationSchemaModificationHandler implements ModificationHandler<PatchValidationSchemaModificationData> {\n\tconstructor(private readonly data: PatchValidationSchemaModificationData) {}\n\n\tpublic createSql(): void {}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn ({ schema }) => {\n\t\t\tconst validation = deepCopy(schema.validation)\n\t\t\tconst result = applyPatch(validation, this.data.patch).filter(it => it !== null)\n\t\t\tif (result.length > 0) {\n\t\t\t\tthrow result[0]\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t...schema,\n\t\t\t\tvalidation,\n\t\t\t}\n\t\t}\n\t}\n\n\tdescribe() {\n\t\treturn { message: 'Update validation schema' }\n\t}\n}\n\nexport interface PatchValidationSchemaModificationData {\n\tpatch: Operation[]\n}\n\nexport const patchValidationSchemaModification = createModificationType({\n\tid: 'patchValidationSchema',\n\thandler: PatchValidationSchemaModificationHandler,\n})\n"],"names":["applyPatch","createModificationType"],"mappings":";;;;;AAKO,MAAM,yCAA+G;AAAA,EAC3H,YAA6B,MAA6C;AAA7C,SAAA,OAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"PatchValidationSchemaModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/validation/PatchValidationSchemaModification.ts"],"sourcesContent":["import { SchemaUpdater } from '../utils/schemaUpdateUtils'\nimport { createModificationType, ModificationHandler } from '../ModificationHandler'\nimport { applyPatch, Operation } from 'rfc6902'\nimport deepCopy from '../../utils/deepCopy'\n\nexport class PatchValidationSchemaModificationHandler implements ModificationHandler<PatchValidationSchemaModificationData> {\n\tconstructor(private readonly data: PatchValidationSchemaModificationData) {}\n\n\tpublic createSql(): void {}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn ({ schema }) => {\n\t\t\tconst validation = deepCopy(schema.validation)\n\t\t\tconst result = applyPatch(validation, this.data.patch).filter(it => it !== null)\n\t\t\tif (result.length > 0) {\n\t\t\t\tthrow result[0]\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t...schema,\n\t\t\t\tvalidation,\n\t\t\t}\n\t\t}\n\t}\n\n\tdescribe() {\n\t\treturn { message: 'Update validation schema' }\n\t}\n}\n\nexport interface PatchValidationSchemaModificationData {\n\tpatch: Operation[]\n}\n\nexport const patchValidationSchemaModification = createModificationType({\n\tid: 'patchValidationSchema',\n\thandler: PatchValidationSchemaModificationHandler,\n})\n"],"names":["applyPatch","createModificationType"],"mappings":";;;;;AAKO,MAAM,yCAA+G;AAAA,EAC3H,YAA6B,MAA6C;AAA7C,SAAA,OAAA;AAAA,EAAA;AAAA,EAEtB,YAAkB;AAAA,EAAA;AAAA,EAElB,mBAAkC;AACjC,WAAA,CAAC,EAAE,aAAa;AAChB,YAAA,aAAa,SAAS,OAAO,UAAU;AACvC,YAAA,SAASA,QAAAA,WAAW,YAAY,KAAK,KAAK,KAAK,EAAE,OAAO,CAAM,OAAA,OAAO,IAAI;AAC3E,UAAA,OAAO,SAAS,GAAG;AACtB,cAAM,OAAO,CAAC;AAAA,MAAA;AAGR,aAAA;AAAA,QACN,GAAG;AAAA,QACH;AAAA,MACD;AAAA,IACD;AAAA,EAAA;AAAA,EAGD,WAAW;AACH,WAAA,EAAE,SAAS,2BAA2B;AAAA,EAAA;AAE/C;AAMO,MAAM,oCAAoCC,oBAAAA,uBAAuB;AAAA,EACvE,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;;;"}
|
package/dist/development/src/modifications/validation/PatchValidationSchemaModification.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PatchValidationSchemaModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/validation/PatchValidationSchemaModification.ts"],"sourcesContent":["import { SchemaUpdater } from '../utils/schemaUpdateUtils'\nimport { createModificationType, ModificationHandler } from '../ModificationHandler'\nimport { applyPatch, Operation } from 'rfc6902'\nimport deepCopy from '../../utils/deepCopy'\n\nexport class PatchValidationSchemaModificationHandler implements ModificationHandler<PatchValidationSchemaModificationData> {\n\tconstructor(private readonly data: PatchValidationSchemaModificationData) {}\n\n\tpublic createSql(): void {}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn ({ schema }) => {\n\t\t\tconst validation = deepCopy(schema.validation)\n\t\t\tconst result = applyPatch(validation, this.data.patch).filter(it => it !== null)\n\t\t\tif (result.length > 0) {\n\t\t\t\tthrow result[0]\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t...schema,\n\t\t\t\tvalidation,\n\t\t\t}\n\t\t}\n\t}\n\n\tdescribe() {\n\t\treturn { message: 'Update validation schema' }\n\t}\n}\n\nexport interface PatchValidationSchemaModificationData {\n\tpatch: Operation[]\n}\n\nexport const patchValidationSchemaModification = createModificationType({\n\tid: 'patchValidationSchema',\n\thandler: PatchValidationSchemaModificationHandler,\n})\n"],"names":[],"mappings":";;;AAKO,MAAM,yCAA+G;AAAA,EAC3H,YAA6B,MAA6C;AAA7C,SAAA,OAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"PatchValidationSchemaModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/validation/PatchValidationSchemaModification.ts"],"sourcesContent":["import { SchemaUpdater } from '../utils/schemaUpdateUtils'\nimport { createModificationType, ModificationHandler } from '../ModificationHandler'\nimport { applyPatch, Operation } from 'rfc6902'\nimport deepCopy from '../../utils/deepCopy'\n\nexport class PatchValidationSchemaModificationHandler implements ModificationHandler<PatchValidationSchemaModificationData> {\n\tconstructor(private readonly data: PatchValidationSchemaModificationData) {}\n\n\tpublic createSql(): void {}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn ({ schema }) => {\n\t\t\tconst validation = deepCopy(schema.validation)\n\t\t\tconst result = applyPatch(validation, this.data.patch).filter(it => it !== null)\n\t\t\tif (result.length > 0) {\n\t\t\t\tthrow result[0]\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t...schema,\n\t\t\t\tvalidation,\n\t\t\t}\n\t\t}\n\t}\n\n\tdescribe() {\n\t\treturn { message: 'Update validation schema' }\n\t}\n}\n\nexport interface PatchValidationSchemaModificationData {\n\tpatch: Operation[]\n}\n\nexport const patchValidationSchemaModification = createModificationType({\n\tid: 'patchValidationSchema',\n\thandler: PatchValidationSchemaModificationHandler,\n})\n"],"names":[],"mappings":";;;AAKO,MAAM,yCAA+G;AAAA,EAC3H,YAA6B,MAA6C;AAA7C,SAAA,OAAA;AAAA,EAAA;AAAA,EAEtB,YAAkB;AAAA,EAAA;AAAA,EAElB,mBAAkC;AACjC,WAAA,CAAC,EAAE,aAAa;AAChB,YAAA,aAAa,SAAS,OAAO,UAAU;AACvC,YAAA,SAAS,WAAW,YAAY,KAAK,KAAK,KAAK,EAAE,OAAO,CAAM,OAAA,OAAO,IAAI;AAC3E,UAAA,OAAO,SAAS,GAAG;AACtB,cAAM,OAAO,CAAC;AAAA,MAAA;AAGR,aAAA;AAAA,QACN,GAAG;AAAA,QACH;AAAA,MACD;AAAA,IACD;AAAA,EAAA;AAAA,EAGD,WAAW;AACH,WAAA,EAAE,SAAS,2BAA2B;AAAA,EAAA;AAE/C;AAMO,MAAM,oCAAoC,uBAAuB;AAAA,EACvE,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;"}
|
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 <= 20) {\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,
|
|
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 <= 20) {\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,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;AACzE,QAAA,MAAM,UAAU,IAAI;AACvB,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;;;;"}
|
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 <= 20) {\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,
|
|
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 <= 20) {\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,WAAW,gBAAwB,eAAuB;AACzD,QAAI,UAAU,eAAe,YAAY,cAAc,UAAU,GAAG;AACnE,aAAO,CAAC;AAAA,IAAA;AAET,UAAM,QAAQ,YAAY,eAAe,YAAY,cAAc,UAAU;AACzE,QAAA,MAAM,UAAU,IAAI;AACvB,aAAO,CAAC,kCAAkC,mBAAmB,EAAE,MAAO,CAAA,CAAC;AAAA,IAAA;AAEjE,WAAA,CAAC,mCAAmC,mBAAmB,EAAE,QAAQ,cAAc,WAAA,CAAY,CAAC;AAAA,EAAA;AAErG;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deepCopy.cjs","sources":["../../../../../packages/schema-migrations/src/utils/deepCopy.ts"],"sourcesContent":["export default function deepCopy<T>(value: T): T {\n\tif (Array.isArray(value)) {\n\t\treturn value.map(deepCopy) as any as T\n\t} else if (value === null) {\n\t\treturn value\n\t} else if (typeof value === 'object') {\n\t\treturn Object.keys(value)\n\t\t\t.map(k => ({ [k]: deepCopy((value as any)[k]) }))\n\t\t\t.reduce((a, c) => Object.assign(a, c), {}) as T\n\t} else {\n\t\treturn value\n\t}\n}\n"],"names":[],"mappings":";AAAA,SAAwB,SAAY,OAAa;AAC5C,MAAA,MAAM,QAAQ,KAAK,GAAG;AAClB,WAAA,MAAM,IAAI,QAAQ;AAAA,EAAA,WACf,UAAU,MAAM;AACnB,WAAA;AAAA,EAAA,WACG,OAAO,UAAU,UAAU;AAC9B,WAAA,OAAO,KAAK,KAAK,EACtB,IAAI,CAAM,OAAA,EAAE,CAAC,CAAC,GAAG,SAAU,MAAc,CAAC,CAAC,EAAI,
|
|
1
|
+
{"version":3,"file":"deepCopy.cjs","sources":["../../../../../packages/schema-migrations/src/utils/deepCopy.ts"],"sourcesContent":["export default function deepCopy<T>(value: T): T {\n\tif (Array.isArray(value)) {\n\t\treturn value.map(deepCopy) as any as T\n\t} else if (value === null) {\n\t\treturn value\n\t} else if (typeof value === 'object') {\n\t\treturn Object.keys(value)\n\t\t\t.map(k => ({ [k]: deepCopy((value as any)[k]) }))\n\t\t\t.reduce((a, c) => Object.assign(a, c), {}) as T\n\t} else {\n\t\treturn value\n\t}\n}\n"],"names":[],"mappings":";AAAA,SAAwB,SAAY,OAAa;AAC5C,MAAA,MAAM,QAAQ,KAAK,GAAG;AAClB,WAAA,MAAM,IAAI,QAAQ;AAAA,EAAA,WACf,UAAU,MAAM;AACnB,WAAA;AAAA,EAAA,WACG,OAAO,UAAU,UAAU;AAC9B,WAAA,OAAO,KAAK,KAAK,EACtB,IAAI,CAAM,OAAA,EAAE,CAAC,CAAC,GAAG,SAAU,MAAc,CAAC,CAAC,EAAA,EAAI,EAC/C,OAAO,CAAC,GAAG,MAAM,OAAO,OAAO,GAAG,CAAC,GAAG,CAAA,CAAE;AAAA,EAAA,OACpC;AACC,WAAA;AAAA,EAAA;AAET;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deepCopy.js","sources":["../../../../../packages/schema-migrations/src/utils/deepCopy.ts"],"sourcesContent":["export default function deepCopy<T>(value: T): T {\n\tif (Array.isArray(value)) {\n\t\treturn value.map(deepCopy) as any as T\n\t} else if (value === null) {\n\t\treturn value\n\t} else if (typeof value === 'object') {\n\t\treturn Object.keys(value)\n\t\t\t.map(k => ({ [k]: deepCopy((value as any)[k]) }))\n\t\t\t.reduce((a, c) => Object.assign(a, c), {}) as T\n\t} else {\n\t\treturn value\n\t}\n}\n"],"names":[],"mappings":"AAAA,SAAwB,SAAY,OAAa;AAC5C,MAAA,MAAM,QAAQ,KAAK,GAAG;AAClB,WAAA,MAAM,IAAI,QAAQ;AAAA,EAAA,WACf,UAAU,MAAM;AACnB,WAAA;AAAA,EAAA,WACG,OAAO,UAAU,UAAU;AAC9B,WAAA,OAAO,KAAK,KAAK,EACtB,IAAI,CAAM,OAAA,EAAE,CAAC,CAAC,GAAG,SAAU,MAAc,CAAC,CAAC,EAAI,
|
|
1
|
+
{"version":3,"file":"deepCopy.js","sources":["../../../../../packages/schema-migrations/src/utils/deepCopy.ts"],"sourcesContent":["export default function deepCopy<T>(value: T): T {\n\tif (Array.isArray(value)) {\n\t\treturn value.map(deepCopy) as any as T\n\t} else if (value === null) {\n\t\treturn value\n\t} else if (typeof value === 'object') {\n\t\treturn Object.keys(value)\n\t\t\t.map(k => ({ [k]: deepCopy((value as any)[k]) }))\n\t\t\t.reduce((a, c) => Object.assign(a, c), {}) as T\n\t} else {\n\t\treturn value\n\t}\n}\n"],"names":[],"mappings":"AAAA,SAAwB,SAAY,OAAa;AAC5C,MAAA,MAAM,QAAQ,KAAK,GAAG;AAClB,WAAA,MAAM,IAAI,QAAQ;AAAA,EAAA,WACf,UAAU,MAAM;AACnB,WAAA;AAAA,EAAA,WACG,OAAO,UAAU,UAAU;AAC9B,WAAA,OAAO,KAAK,KAAK,EACtB,IAAI,CAAM,OAAA,EAAE,CAAC,CAAC,GAAG,SAAU,MAAc,CAAC,CAAC,EAAA,EAAI,EAC/C,OAAO,CAAC,GAAG,MAAM,OAAO,OAAO,GAAG,CAAC,GAAG,CAAA,CAAE;AAAA,EAAA,OACpC;AACC,WAAA;AAAA,EAAA;AAET;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MigrationDescriber.cjs","sources":["../../../../packages/schema-migrations/src/MigrationDescriber.ts"],"sourcesContent":["import {\n\tcreateEntityModification,\n\temptyModificationDescriptionContext,\n\tModificationDescription,\n\tModificationDescriptionContext,\n\tModificationHandler,\n\tModificationHandlerCreateSqlOptions,\n\tModificationHandlerFactory,\n\tModificationHandlerOptions,\n\tSchemaUpdateError,\n} from './modifications'\nimport { createMigrationBuilder } from '@contember/database-migrations'\nimport { Migration } from './Migration'\nimport { Schema } from '@contember/schema'\n\nexport interface ModificationDescriptionResult {\n\tmodification: Migration.Modification\n\tschema: Schema\n\tdescription: ModificationDescription\n\thandler: ModificationHandler<any>\n\tgetSql: (options: ModificationHandlerCreateSqlOptions) => string\n}\n\nexport class MigrationDescriber {\n\tconstructor(private readonly modificationHandlerFactory: ModificationHandlerFactory) {\n\t}\n\n\tpublic describeModification(\n\t\tschema: Schema,\n\t\tmodification: Migration.Modification,\n\t\toptions: ModificationHandlerOptions,\n\t\tmodificationDescriptionContext: ModificationDescriptionContext = emptyModificationDescriptionContext,\n\t): ModificationDescriptionResult {\n\t\tconst modificationHandler = this.modificationHandlerFactory.create(\n\t\t\tmodification.modification,\n\t\t\tmodification,\n\t\t\tschema,\n\t\t\toptions,\n\t\t)\n\t\ttry {\n\t\t\tschema = modificationHandler.getSchemaUpdater()({ schema })\n\t\t} catch (e) {\n\t\t\tif (!(e instanceof SchemaUpdateError)) {\n\t\t\t\tthrow e\n\t\t\t}\n\t\t\tthrow new SchemaUpdateError(e.message + '\\n for modification: \\n' + JSON.stringify(modification))\n\t\t}\n\t\treturn {\n\t\t\tmodification,\n\t\t\tschema,\n\t\t\tgetSql: options => {\n\t\t\t\tconst builder = createMigrationBuilder()\n\t\t\t\tmodificationHandler.createSql(builder, options)\n\t\t\t\treturn builder.getSql()\n\t\t\t},\n\t\t\tdescription: modificationHandler.describe(modificationDescriptionContext),\n\t\t\thandler: modificationHandler,\n\t\t}\n\t}\n\n\tpublic describeModifications(schema: Schema, migration: Migration): ModificationDescriptionResult[] {\n\t\tconst result = []\n\t\tconst createdEntities = []\n\t\tfor (const modification of migration.modifications) {\n\t\t\tif (modification.modification === createEntityModification.id) {\n\t\t\t\tcreatedEntities.push(modification.entity.name)\n\t\t\t}\n\t\t\tconst description = this.describeModification(\n\t\t\t\tschema,\n\t\t\t\tmodification,\n\t\t\t\t{\n\t\t\t\t\tformatVersion: migration.formatVersion,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcreatedEntities,\n\t\t\t\t})\n\t\t\tschema = description.schema\n\t\t\tresult.push(description)\n\t\t}\n\t\treturn result\n\t}\n}\n"],"names":["emptyModificationDescriptionContext","SchemaUpdateError","options","createMigrationBuilder","createEntityModification"],"mappings":";;;;;;;;;;;AAuBO,MAAM,mBAAmB;AAAA,EAC/B,YAA6B,4BAAwD;AAAxD,SAAA,6BAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"MigrationDescriber.cjs","sources":["../../../../packages/schema-migrations/src/MigrationDescriber.ts"],"sourcesContent":["import {\n\tcreateEntityModification,\n\temptyModificationDescriptionContext,\n\tModificationDescription,\n\tModificationDescriptionContext,\n\tModificationHandler,\n\tModificationHandlerCreateSqlOptions,\n\tModificationHandlerFactory,\n\tModificationHandlerOptions,\n\tSchemaUpdateError,\n} from './modifications'\nimport { createMigrationBuilder } from '@contember/database-migrations'\nimport { Migration } from './Migration'\nimport { Schema } from '@contember/schema'\n\nexport interface ModificationDescriptionResult {\n\tmodification: Migration.Modification\n\tschema: Schema\n\tdescription: ModificationDescription\n\thandler: ModificationHandler<any>\n\tgetSql: (options: ModificationHandlerCreateSqlOptions) => string\n}\n\nexport class MigrationDescriber {\n\tconstructor(private readonly modificationHandlerFactory: ModificationHandlerFactory) {\n\t}\n\n\tpublic describeModification(\n\t\tschema: Schema,\n\t\tmodification: Migration.Modification,\n\t\toptions: ModificationHandlerOptions,\n\t\tmodificationDescriptionContext: ModificationDescriptionContext = emptyModificationDescriptionContext,\n\t): ModificationDescriptionResult {\n\t\tconst modificationHandler = this.modificationHandlerFactory.create(\n\t\t\tmodification.modification,\n\t\t\tmodification,\n\t\t\tschema,\n\t\t\toptions,\n\t\t)\n\t\ttry {\n\t\t\tschema = modificationHandler.getSchemaUpdater()({ schema })\n\t\t} catch (e) {\n\t\t\tif (!(e instanceof SchemaUpdateError)) {\n\t\t\t\tthrow e\n\t\t\t}\n\t\t\tthrow new SchemaUpdateError(e.message + '\\n for modification: \\n' + JSON.stringify(modification))\n\t\t}\n\t\treturn {\n\t\t\tmodification,\n\t\t\tschema,\n\t\t\tgetSql: options => {\n\t\t\t\tconst builder = createMigrationBuilder()\n\t\t\t\tmodificationHandler.createSql(builder, options)\n\t\t\t\treturn builder.getSql()\n\t\t\t},\n\t\t\tdescription: modificationHandler.describe(modificationDescriptionContext),\n\t\t\thandler: modificationHandler,\n\t\t}\n\t}\n\n\tpublic describeModifications(schema: Schema, migration: Migration): ModificationDescriptionResult[] {\n\t\tconst result = []\n\t\tconst createdEntities = []\n\t\tfor (const modification of migration.modifications) {\n\t\t\tif (modification.modification === createEntityModification.id) {\n\t\t\t\tcreatedEntities.push(modification.entity.name)\n\t\t\t}\n\t\t\tconst description = this.describeModification(\n\t\t\t\tschema,\n\t\t\t\tmodification,\n\t\t\t\t{\n\t\t\t\t\tformatVersion: migration.formatVersion,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcreatedEntities,\n\t\t\t\t})\n\t\t\tschema = description.schema\n\t\t\tresult.push(description)\n\t\t}\n\t\treturn result\n\t}\n}\n"],"names":["emptyModificationDescriptionContext","SchemaUpdateError","options","createMigrationBuilder","createEntityModification"],"mappings":";;;;;;;;;;;AAuBO,MAAM,mBAAmB;AAAA,EAC/B,YAA6B,4BAAwD;AAAxD,SAAA,6BAAA;AAAA,EAAA;AAAA,EAGtB,qBACN,QACA,cACA,SACA,iCAAiEA,oBAAAA,qCACjC;AAC1B,UAAA,sBAAsB,KAAK,2BAA2B;AAAA,MAC3D,aAAa;AAAA,MACb;AAAA,MACA;AAAA,MACA;AAAA,IACD;AACI,QAAA;AACH,eAAS,oBAAoB,mBAAmB,EAAE,QAAQ;AAAA,aAClD,GAAG;AACP,UAAA,EAAE,aAAaC,WAAAA,oBAAoB;AAChC,cAAA;AAAA,MAAA;AAED,YAAA,IAAIA,WAAAA,kBAAkB,EAAE,UAAU,4BAA4B,KAAK,UAAU,YAAY,CAAC;AAAA,IAAA;AAE1F,WAAA;AAAA,MACN;AAAA,MACA;AAAA,MACA,QAAQ,CAAAC,aAAW;AAClB,cAAM,UAAUC,mBAAAA,uBAAuB;AACnB,4BAAA,UAAU,SAASD,QAAO;AAC9C,eAAO,QAAQ,OAAO;AAAA,MACvB;AAAA,MACA,aAAa,oBAAoB,SAAS,8BAA8B;AAAA,MACxE,SAAS;AAAA,IACV;AAAA,EAAA;AAAA,EAGM,sBAAsB,QAAgB,WAAuD;AACnG,UAAM,SAAS,CAAC;AAChB,UAAM,kBAAkB,CAAC;AACd,eAAA,gBAAgB,UAAU,eAAe;AAC/C,UAAA,aAAa,iBAAiBE,yBAAA,yBAAyB,IAAI;AAC9C,wBAAA,KAAK,aAAa,OAAO,IAAI;AAAA,MAAA;AAE9C,YAAM,cAAc,KAAK;AAAA,QACxB;AAAA,QACA;AAAA,QACA;AAAA,UACC,eAAe,UAAU;AAAA,QAC1B;AAAA,QACA;AAAA,UACC;AAAA,QAAA;AAAA,MACA;AACF,eAAS,YAAY;AACrB,aAAO,KAAK,WAAW;AAAA,IAAA;AAEjB,WAAA;AAAA,EAAA;AAET;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MigrationDescriber.js","sources":["../../../../packages/schema-migrations/src/MigrationDescriber.ts"],"sourcesContent":["import {\n\tcreateEntityModification,\n\temptyModificationDescriptionContext,\n\tModificationDescription,\n\tModificationDescriptionContext,\n\tModificationHandler,\n\tModificationHandlerCreateSqlOptions,\n\tModificationHandlerFactory,\n\tModificationHandlerOptions,\n\tSchemaUpdateError,\n} from './modifications'\nimport { createMigrationBuilder } from '@contember/database-migrations'\nimport { Migration } from './Migration'\nimport { Schema } from '@contember/schema'\n\nexport interface ModificationDescriptionResult {\n\tmodification: Migration.Modification\n\tschema: Schema\n\tdescription: ModificationDescription\n\thandler: ModificationHandler<any>\n\tgetSql: (options: ModificationHandlerCreateSqlOptions) => string\n}\n\nexport class MigrationDescriber {\n\tconstructor(private readonly modificationHandlerFactory: ModificationHandlerFactory) {\n\t}\n\n\tpublic describeModification(\n\t\tschema: Schema,\n\t\tmodification: Migration.Modification,\n\t\toptions: ModificationHandlerOptions,\n\t\tmodificationDescriptionContext: ModificationDescriptionContext = emptyModificationDescriptionContext,\n\t): ModificationDescriptionResult {\n\t\tconst modificationHandler = this.modificationHandlerFactory.create(\n\t\t\tmodification.modification,\n\t\t\tmodification,\n\t\t\tschema,\n\t\t\toptions,\n\t\t)\n\t\ttry {\n\t\t\tschema = modificationHandler.getSchemaUpdater()({ schema })\n\t\t} catch (e) {\n\t\t\tif (!(e instanceof SchemaUpdateError)) {\n\t\t\t\tthrow e\n\t\t\t}\n\t\t\tthrow new SchemaUpdateError(e.message + '\\n for modification: \\n' + JSON.stringify(modification))\n\t\t}\n\t\treturn {\n\t\t\tmodification,\n\t\t\tschema,\n\t\t\tgetSql: options => {\n\t\t\t\tconst builder = createMigrationBuilder()\n\t\t\t\tmodificationHandler.createSql(builder, options)\n\t\t\t\treturn builder.getSql()\n\t\t\t},\n\t\t\tdescription: modificationHandler.describe(modificationDescriptionContext),\n\t\t\thandler: modificationHandler,\n\t\t}\n\t}\n\n\tpublic describeModifications(schema: Schema, migration: Migration): ModificationDescriptionResult[] {\n\t\tconst result = []\n\t\tconst createdEntities = []\n\t\tfor (const modification of migration.modifications) {\n\t\t\tif (modification.modification === createEntityModification.id) {\n\t\t\t\tcreatedEntities.push(modification.entity.name)\n\t\t\t}\n\t\t\tconst description = this.describeModification(\n\t\t\t\tschema,\n\t\t\t\tmodification,\n\t\t\t\t{\n\t\t\t\t\tformatVersion: migration.formatVersion,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcreatedEntities,\n\t\t\t\t})\n\t\t\tschema = description.schema\n\t\t\tresult.push(description)\n\t\t}\n\t\treturn result\n\t}\n}\n"],"names":["options"],"mappings":";;;;;;;;;AAuBO,MAAM,mBAAmB;AAAA,EAC/B,YAA6B,4BAAwD;AAAxD,SAAA,6BAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"MigrationDescriber.js","sources":["../../../../packages/schema-migrations/src/MigrationDescriber.ts"],"sourcesContent":["import {\n\tcreateEntityModification,\n\temptyModificationDescriptionContext,\n\tModificationDescription,\n\tModificationDescriptionContext,\n\tModificationHandler,\n\tModificationHandlerCreateSqlOptions,\n\tModificationHandlerFactory,\n\tModificationHandlerOptions,\n\tSchemaUpdateError,\n} from './modifications'\nimport { createMigrationBuilder } from '@contember/database-migrations'\nimport { Migration } from './Migration'\nimport { Schema } from '@contember/schema'\n\nexport interface ModificationDescriptionResult {\n\tmodification: Migration.Modification\n\tschema: Schema\n\tdescription: ModificationDescription\n\thandler: ModificationHandler<any>\n\tgetSql: (options: ModificationHandlerCreateSqlOptions) => string\n}\n\nexport class MigrationDescriber {\n\tconstructor(private readonly modificationHandlerFactory: ModificationHandlerFactory) {\n\t}\n\n\tpublic describeModification(\n\t\tschema: Schema,\n\t\tmodification: Migration.Modification,\n\t\toptions: ModificationHandlerOptions,\n\t\tmodificationDescriptionContext: ModificationDescriptionContext = emptyModificationDescriptionContext,\n\t): ModificationDescriptionResult {\n\t\tconst modificationHandler = this.modificationHandlerFactory.create(\n\t\t\tmodification.modification,\n\t\t\tmodification,\n\t\t\tschema,\n\t\t\toptions,\n\t\t)\n\t\ttry {\n\t\t\tschema = modificationHandler.getSchemaUpdater()({ schema })\n\t\t} catch (e) {\n\t\t\tif (!(e instanceof SchemaUpdateError)) {\n\t\t\t\tthrow e\n\t\t\t}\n\t\t\tthrow new SchemaUpdateError(e.message + '\\n for modification: \\n' + JSON.stringify(modification))\n\t\t}\n\t\treturn {\n\t\t\tmodification,\n\t\t\tschema,\n\t\t\tgetSql: options => {\n\t\t\t\tconst builder = createMigrationBuilder()\n\t\t\t\tmodificationHandler.createSql(builder, options)\n\t\t\t\treturn builder.getSql()\n\t\t\t},\n\t\t\tdescription: modificationHandler.describe(modificationDescriptionContext),\n\t\t\thandler: modificationHandler,\n\t\t}\n\t}\n\n\tpublic describeModifications(schema: Schema, migration: Migration): ModificationDescriptionResult[] {\n\t\tconst result = []\n\t\tconst createdEntities = []\n\t\tfor (const modification of migration.modifications) {\n\t\t\tif (modification.modification === createEntityModification.id) {\n\t\t\t\tcreatedEntities.push(modification.entity.name)\n\t\t\t}\n\t\t\tconst description = this.describeModification(\n\t\t\t\tschema,\n\t\t\t\tmodification,\n\t\t\t\t{\n\t\t\t\t\tformatVersion: migration.formatVersion,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcreatedEntities,\n\t\t\t\t})\n\t\t\tschema = description.schema\n\t\t\tresult.push(description)\n\t\t}\n\t\treturn result\n\t}\n}\n"],"names":["options"],"mappings":";;;;;;;;;AAuBO,MAAM,mBAAmB;AAAA,EAC/B,YAA6B,4BAAwD;AAAxD,SAAA,6BAAA;AAAA,EAAA;AAAA,EAGtB,qBACN,QACA,cACA,SACA,iCAAiE,qCACjC;AAC1B,UAAA,sBAAsB,KAAK,2BAA2B;AAAA,MAC3D,aAAa;AAAA,MACb;AAAA,MACA;AAAA,MACA;AAAA,IACD;AACI,QAAA;AACH,eAAS,oBAAoB,mBAAmB,EAAE,QAAQ;AAAA,aAClD,GAAG;AACP,UAAA,EAAE,aAAa,oBAAoB;AAChC,cAAA;AAAA,MAAA;AAED,YAAA,IAAI,kBAAkB,EAAE,UAAU,4BAA4B,KAAK,UAAU,YAAY,CAAC;AAAA,IAAA;AAE1F,WAAA;AAAA,MACN;AAAA,MACA;AAAA,MACA,QAAQ,CAAAA,aAAW;AAClB,cAAM,UAAU,uBAAuB;AACnB,4BAAA,UAAU,SAASA,QAAO;AAC9C,eAAO,QAAQ,OAAO;AAAA,MACvB;AAAA,MACA,aAAa,oBAAoB,SAAS,8BAA8B;AAAA,MACxE,SAAS;AAAA,IACV;AAAA,EAAA;AAAA,EAGM,sBAAsB,QAAgB,WAAuD;AACnG,UAAM,SAAS,CAAC;AAChB,UAAM,kBAAkB,CAAC;AACd,eAAA,gBAAgB,UAAU,eAAe;AAC/C,UAAA,aAAa,iBAAiB,yBAAyB,IAAI;AAC9C,wBAAA,KAAK,aAAa,OAAO,IAAI;AAAA,MAAA;AAE9C,YAAM,cAAc,KAAK;AAAA,QACxB;AAAA,QACA;AAAA,QACA;AAAA,UACC,eAAe,UAAU;AAAA,QAC1B;AAAA,QACA;AAAA,UACC;AAAA,QAAA;AAAA,MACA;AACF,eAAS,YAAY;AACrB,aAAO,KAAK,WAAW;AAAA,IAAA;AAEjB,WAAA;AAAA,EAAA;AAET;"}
|
|
@@ -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(private readonly schemaMigrator: SchemaMigrator) {}\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(),\n\t\t\tnew UpdateValidationSchemaDiffer(),\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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiDO,MAAM,aAAa;AAAA,EACzB,YAA6B,gBAAgC;AAAhC,SAAA,iBAAA;AAAA,
|
|
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(private readonly schemaMigrator: SchemaMigrator) {}\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(),\n\t\t\tnew UpdateValidationSchemaDiffer(),\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 +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(private readonly schemaMigrator: SchemaMigrator) {}\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(),\n\t\t\tnew UpdateValidationSchemaDiffer(),\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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiDO,MAAM,aAAa;AAAA,EACzB,YAA6B,gBAAgC;AAAhC,SAAA,iBAAA;AAAA,
|
|
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(private readonly schemaMigrator: SchemaMigrator) {}\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(),\n\t\t\tnew UpdateValidationSchemaDiffer(),\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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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaMigrator.cjs","sources":["../../../../packages/schema-migrations/src/SchemaMigrator.ts"],"sourcesContent":["import { Schema } from '@contember/schema'\nimport { ModificationHandlerFactory } from './modifications'\nimport { Migration } from './Migration'\n\nexport class SchemaMigrator {\n\tconstructor(private readonly modificationHandlerFactory: ModificationHandlerFactory) {}\n\n\tpublic applyModifications(schema: Schema, diff: readonly Migration.Modification[], formatVersion: number): Schema {\n\t\tfor (const modification of diff) {\n\t\t\tconst { modification: name, ...data } = modification\n\t\t\tconst modificationHandler = this.modificationHandlerFactory.create(name, data, schema, {\n\t\t\t\tformatVersion,\n\t\t\t})\n\t\t\tschema = modificationHandler.getSchemaUpdater()({ schema })\n\t\t}\n\t\treturn schema\n\t}\n}\n"],"names":[],"mappings":";;AAIO,MAAM,eAAe;AAAA,EAC3B,YAA6B,4BAAwD;AAAxD,SAAA,6BAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"SchemaMigrator.cjs","sources":["../../../../packages/schema-migrations/src/SchemaMigrator.ts"],"sourcesContent":["import { Schema } from '@contember/schema'\nimport { ModificationHandlerFactory } from './modifications'\nimport { Migration } from './Migration'\n\nexport class SchemaMigrator {\n\tconstructor(private readonly modificationHandlerFactory: ModificationHandlerFactory) {}\n\n\tpublic applyModifications(schema: Schema, diff: readonly Migration.Modification[], formatVersion: number): Schema {\n\t\tfor (const modification of diff) {\n\t\t\tconst { modification: name, ...data } = modification\n\t\t\tconst modificationHandler = this.modificationHandlerFactory.create(name, data, schema, {\n\t\t\t\tformatVersion,\n\t\t\t})\n\t\t\tschema = modificationHandler.getSchemaUpdater()({ schema })\n\t\t}\n\t\treturn schema\n\t}\n}\n"],"names":[],"mappings":";;AAIO,MAAM,eAAe;AAAA,EAC3B,YAA6B,4BAAwD;AAAxD,SAAA,6BAAA;AAAA,EAAA;AAAA,EAEtB,mBAAmB,QAAgB,MAAyC,eAA+B;AACjH,eAAW,gBAAgB,MAAM;AAChC,YAAM,EAAE,cAAc,MAAM,GAAG,KAAS,IAAA;AACxC,YAAM,sBAAsB,KAAK,2BAA2B,OAAO,MAAM,MAAM,QAAQ;AAAA,QACtF;AAAA,MAAA,CACA;AACD,eAAS,oBAAoB,mBAAmB,EAAE,QAAQ;AAAA,IAAA;AAEpD,WAAA;AAAA,EAAA;AAET;;"}
|