@contember/schema-migrations 2.1.0-alpha.9 → 2.1.0-beta.2
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/CLAUDE.md +48 -0
- package/dist/development/src/Migration.cjs.map +1 -1
- package/dist/development/src/Migration.js.map +1 -1
- package/dist/development/src/MigrationDescriber.cjs.map +1 -1
- package/dist/development/src/MigrationDescriber.js.map +1 -1
- package/dist/development/src/SchemaDiffer.cjs +1 -1
- package/dist/development/src/SchemaDiffer.cjs.map +1 -1
- package/dist/development/src/SchemaDiffer.js +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 +2 -0
- package/dist/development/src/modifications/ModificationHandlerFactory.cjs.map +1 -1
- package/dist/development/src/modifications/ModificationHandlerFactory.js +2 -0
- 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 +1 -1
- package/dist/development/src/modifications/acl/UpdateAclSchemaModification.cjs.map +1 -1
- package/dist/development/src/modifications/acl/UpdateAclSchemaModification.js +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/PatchTriggerModification.cjs +44 -0
- package/dist/development/src/modifications/actions/PatchTriggerModification.cjs.map +1 -0
- package/dist/development/src/modifications/actions/PatchTriggerModification.js +44 -0
- package/dist/development/src/modifications/actions/PatchTriggerModification.js.map +1 -0
- 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 +16 -1
- package/dist/development/src/modifications/actions/UpdateTriggerModification.cjs.map +1 -1
- package/dist/development/src/modifications/actions/UpdateTriggerModification.js +16 -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 +2 -2
- package/dist/development/src/modifications/columns/UpdateColumnDefinitionModification.cjs.map +1 -1
- package/dist/development/src/modifications/columns/UpdateColumnDefinitionModification.js +2 -2
- package/dist/development/src/modifications/columns/UpdateColumnDefinitionModification.js.map +1 -1
- package/dist/development/src/modifications/columns/UpdateColumnNameModification.cjs +37 -45
- package/dist/development/src/modifications/columns/UpdateColumnNameModification.cjs.map +1 -1
- package/dist/development/src/modifications/columns/UpdateColumnNameModification.js +37 -45
- 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 +8 -5
- package/dist/development/src/modifications/constraints/CreateUniqueConstraintModification.cjs.map +1 -1
- package/dist/development/src/modifications/constraints/CreateUniqueConstraintModification.js +8 -5
- 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 +0 -2
- package/dist/development/src/modifications/differs/RemoveViewDiffer.cjs.map +1 -1
- package/dist/development/src/modifications/differs/RemoveViewDiffer.js +0 -2
- 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 +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 +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 +6 -4
- package/dist/development/src/modifications/entities/UpdateEntityTableNameModification.cjs.map +1 -1
- package/dist/development/src/modifications/entities/UpdateEntityTableNameModification.js +6 -4
- 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 +6 -4
- package/dist/development/src/modifications/enums/CreateEnumModification.cjs.map +1 -1
- package/dist/development/src/modifications/enums/CreateEnumModification.js +7 -5
- 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 +36 -8
- package/dist/development/src/modifications/enums/UpdateEnumModification.cjs.map +1 -1
- package/dist/development/src/modifications/enums/UpdateEnumModification.js +34 -6
- 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/enums/enumUtils.js.map +1 -1
- package/dist/development/src/modifications/fields/RemoveFieldModification.cjs.map +1 -1
- package/dist/development/src/modifications/fields/RemoveFieldModification.js +1 -1
- package/dist/development/src/modifications/fields/RemoveFieldModification.js.map +1 -1
- package/dist/development/src/modifications/fields/UpdateFieldNameModification.cjs +9 -5
- package/dist/development/src/modifications/fields/UpdateFieldNameModification.cjs.map +1 -1
- package/dist/development/src/modifications/fields/UpdateFieldNameModification.js +10 -6
- package/dist/development/src/modifications/fields/UpdateFieldNameModification.js.map +1 -1
- package/dist/development/src/modifications/indexes/CreateIndexModification.cjs +10 -6
- package/dist/development/src/modifications/indexes/CreateIndexModification.cjs.map +1 -1
- package/dist/development/src/modifications/indexes/CreateIndexModification.js +10 -6
- 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 +6 -4
- package/dist/development/src/modifications/settings/UpdateSettingsModification.cjs.map +1 -1
- package/dist/development/src/modifications/settings/UpdateSettingsModification.js +6 -4
- package/dist/development/src/modifications/settings/UpdateSettingsModification.js.map +1 -1
- package/dist/development/src/modifications/upgrade/RemoveIndexNamesModification.cjs +0 -2
- package/dist/development/src/modifications/upgrade/RemoveIndexNamesModification.cjs.map +1 -1
- package/dist/development/src/modifications/upgrade/RemoveIndexNamesModification.js +0 -2
- package/dist/development/src/modifications/upgrade/RemoveIndexNamesModification.js.map +1 -1
- package/dist/development/src/modifications/utils/columnUtils.cjs.map +1 -1
- package/dist/development/src/modifications/utils/columnUtils.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/getPrimaryColumnType.cjs.map +1 -1
- package/dist/development/src/modifications/utils/getPrimaryColumnType.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/valueUtils.cjs.map +1 -1
- package/dist/development/src/modifications/utils/valueUtils.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/dbHelpers.cjs.map +1 -1
- package/dist/development/src/utils/dbHelpers.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/development/src/utils/escapeSqlString.cjs +1 -1
- package/dist/development/src/utils/escapeSqlString.cjs.map +1 -1
- package/dist/development/src/utils/escapeSqlString.js +1 -1
- package/dist/development/src/utils/escapeSqlString.js.map +1 -1
- package/dist/development/src/utils/isDefined.cjs.map +1 -1
- package/dist/development/src/utils/isDefined.js.map +1 -1
- package/dist/development/src/utils/isIt.cjs.map +1 -1
- package/dist/development/src/utils/isIt.js.map +1 -1
- package/dist/production/src/Migration.cjs.map +1 -1
- package/dist/production/src/Migration.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 +1 -1
- package/dist/production/src/SchemaDiffer.cjs.map +1 -1
- package/dist/production/src/SchemaDiffer.js +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 +2 -0
- package/dist/production/src/modifications/ModificationHandlerFactory.cjs.map +1 -1
- package/dist/production/src/modifications/ModificationHandlerFactory.js +2 -0
- 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 +1 -1
- package/dist/production/src/modifications/acl/UpdateAclSchemaModification.cjs.map +1 -1
- package/dist/production/src/modifications/acl/UpdateAclSchemaModification.js +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/PatchTriggerModification.cjs +44 -0
- package/dist/production/src/modifications/actions/PatchTriggerModification.cjs.map +1 -0
- package/dist/production/src/modifications/actions/PatchTriggerModification.js +44 -0
- package/dist/production/src/modifications/actions/PatchTriggerModification.js.map +1 -0
- 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 +16 -1
- package/dist/production/src/modifications/actions/UpdateTriggerModification.cjs.map +1 -1
- package/dist/production/src/modifications/actions/UpdateTriggerModification.js +16 -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 +2 -2
- package/dist/production/src/modifications/columns/UpdateColumnDefinitionModification.cjs.map +1 -1
- package/dist/production/src/modifications/columns/UpdateColumnDefinitionModification.js +2 -2
- package/dist/production/src/modifications/columns/UpdateColumnDefinitionModification.js.map +1 -1
- package/dist/production/src/modifications/columns/UpdateColumnNameModification.cjs +37 -45
- package/dist/production/src/modifications/columns/UpdateColumnNameModification.cjs.map +1 -1
- package/dist/production/src/modifications/columns/UpdateColumnNameModification.js +37 -45
- 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 +8 -5
- package/dist/production/src/modifications/constraints/CreateUniqueConstraintModification.cjs.map +1 -1
- package/dist/production/src/modifications/constraints/CreateUniqueConstraintModification.js +8 -5
- 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 +0 -2
- package/dist/production/src/modifications/differs/RemoveViewDiffer.cjs.map +1 -1
- package/dist/production/src/modifications/differs/RemoveViewDiffer.js +0 -2
- 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 +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 +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 +6 -4
- package/dist/production/src/modifications/entities/UpdateEntityTableNameModification.cjs.map +1 -1
- package/dist/production/src/modifications/entities/UpdateEntityTableNameModification.js +6 -4
- 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 +6 -4
- package/dist/production/src/modifications/enums/CreateEnumModification.cjs.map +1 -1
- package/dist/production/src/modifications/enums/CreateEnumModification.js +7 -5
- 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 +36 -8
- package/dist/production/src/modifications/enums/UpdateEnumModification.cjs.map +1 -1
- package/dist/production/src/modifications/enums/UpdateEnumModification.js +34 -6
- 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/enums/enumUtils.js.map +1 -1
- package/dist/production/src/modifications/fields/RemoveFieldModification.cjs.map +1 -1
- package/dist/production/src/modifications/fields/RemoveFieldModification.js +1 -1
- package/dist/production/src/modifications/fields/RemoveFieldModification.js.map +1 -1
- package/dist/production/src/modifications/fields/UpdateFieldNameModification.cjs +9 -5
- package/dist/production/src/modifications/fields/UpdateFieldNameModification.cjs.map +1 -1
- package/dist/production/src/modifications/fields/UpdateFieldNameModification.js +10 -6
- package/dist/production/src/modifications/fields/UpdateFieldNameModification.js.map +1 -1
- package/dist/production/src/modifications/indexes/CreateIndexModification.cjs +10 -6
- package/dist/production/src/modifications/indexes/CreateIndexModification.cjs.map +1 -1
- package/dist/production/src/modifications/indexes/CreateIndexModification.js +10 -6
- 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 +6 -4
- package/dist/production/src/modifications/settings/UpdateSettingsModification.cjs.map +1 -1
- package/dist/production/src/modifications/settings/UpdateSettingsModification.js +6 -4
- package/dist/production/src/modifications/settings/UpdateSettingsModification.js.map +1 -1
- package/dist/production/src/modifications/upgrade/RemoveIndexNamesModification.cjs +0 -2
- package/dist/production/src/modifications/upgrade/RemoveIndexNamesModification.cjs.map +1 -1
- package/dist/production/src/modifications/upgrade/RemoveIndexNamesModification.js +0 -2
- package/dist/production/src/modifications/upgrade/RemoveIndexNamesModification.js.map +1 -1
- package/dist/production/src/modifications/utils/columnUtils.cjs.map +1 -1
- package/dist/production/src/modifications/utils/columnUtils.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/getPrimaryColumnType.cjs.map +1 -1
- package/dist/production/src/modifications/utils/getPrimaryColumnType.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/valueUtils.cjs.map +1 -1
- package/dist/production/src/modifications/utils/valueUtils.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/dbHelpers.cjs.map +1 -1
- package/dist/production/src/utils/dbHelpers.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/production/src/utils/escapeSqlString.cjs +1 -1
- package/dist/production/src/utils/escapeSqlString.cjs.map +1 -1
- package/dist/production/src/utils/escapeSqlString.js +1 -1
- package/dist/production/src/utils/escapeSqlString.js.map +1 -1
- package/dist/production/src/utils/isDefined.cjs.map +1 -1
- package/dist/production/src/utils/isDefined.js.map +1 -1
- package/dist/production/src/utils/isIt.cjs.map +1 -1
- package/dist/production/src/utils/isIt.js.map +1 -1
- package/dist/tests/cases/integration/patchTrigger.test.d.ts +2 -0
- package/dist/tests/cases/integration/patchTrigger.test.d.ts.map +1 -0
- package/dist/tests/src/tests.d.ts.map +1 -1
- package/dist/tests/tsconfig.tsbuildinfo +1 -1
- package/dist/types/MigrationDescriber.d.ts.map +1 -1
- package/dist/types/SchemaDiffer.d.ts.map +1 -1
- package/dist/types/modifications/ModificationHandler.d.ts.map +1 -1
- package/dist/types/modifications/ModificationHandlerFactory.d.ts.map +1 -1
- package/dist/types/modifications/acl/PatchAclSchemaModification.d.ts +1 -1
- package/dist/types/modifications/acl/PatchAclSchemaModification.d.ts.map +1 -1
- package/dist/types/modifications/acl/UpdateAclSchemaModification.d.ts +1 -1
- package/dist/types/modifications/acl/UpdateAclSchemaModification.d.ts.map +1 -1
- package/dist/types/modifications/actions/CreateTargetModification.d.ts +1 -1
- package/dist/types/modifications/actions/CreateTargetModification.d.ts.map +1 -1
- package/dist/types/modifications/actions/CreateTriggerModification.d.ts +1 -1
- package/dist/types/modifications/actions/CreateTriggerModification.d.ts.map +1 -1
- package/dist/types/modifications/actions/PatchTriggerModification.d.ts +18 -0
- package/dist/types/modifications/actions/PatchTriggerModification.d.ts.map +1 -0
- package/dist/types/modifications/actions/RemoveTargetModification.d.ts +1 -1
- package/dist/types/modifications/actions/RemoveTargetModification.d.ts.map +1 -1
- package/dist/types/modifications/actions/RemoveTriggerModification.d.ts +1 -1
- package/dist/types/modifications/actions/RemoveTriggerModification.d.ts.map +1 -1
- package/dist/types/modifications/actions/UpdateTargetModification.d.ts +1 -1
- package/dist/types/modifications/actions/UpdateTargetModification.d.ts.map +1 -1
- package/dist/types/modifications/actions/UpdateTriggerModification.d.ts +6 -2
- package/dist/types/modifications/actions/UpdateTriggerModification.d.ts.map +1 -1
- package/dist/types/modifications/actions/index.d.ts +1 -0
- package/dist/types/modifications/actions/index.d.ts.map +1 -1
- package/dist/types/modifications/columns/CreateColumnModification.d.ts +1 -1
- package/dist/types/modifications/columns/CreateColumnModification.d.ts.map +1 -1
- package/dist/types/modifications/columns/UpdateColumnDefinitionModification.d.ts +1 -1
- package/dist/types/modifications/columns/UpdateColumnDefinitionModification.d.ts.map +1 -1
- package/dist/types/modifications/columns/UpdateColumnNameModification.d.ts +1 -1
- package/dist/types/modifications/columns/UpdateColumnNameModification.d.ts.map +1 -1
- package/dist/types/modifications/columns/columnUtils.d.ts.map +1 -1
- package/dist/types/modifications/constraints/CreateUniqueConstraintModification.d.ts +1 -1
- package/dist/types/modifications/constraints/CreateUniqueConstraintModification.d.ts.map +1 -1
- package/dist/types/modifications/constraints/RemoveUniqueConstraintModification.d.ts +1 -1
- package/dist/types/modifications/constraints/RemoveUniqueConstraintModification.d.ts.map +1 -1
- package/dist/types/modifications/differs/RemoveChangedFieldDiffer.d.ts +1 -1
- package/dist/types/modifications/differs/RemoveViewDiffer.d.ts +0 -1
- package/dist/types/modifications/differs/RemoveViewDiffer.d.ts.map +1 -1
- package/dist/types/modifications/entities/CreateEntityModification.d.ts +1 -1
- package/dist/types/modifications/entities/CreateEntityModification.d.ts.map +1 -1
- package/dist/types/modifications/entities/CreateViewModification.d.ts +1 -1
- package/dist/types/modifications/entities/CreateViewModification.d.ts.map +1 -1
- package/dist/types/modifications/entities/RemoveEntityModification.d.ts +1 -1
- package/dist/types/modifications/entities/RemoveEntityModification.d.ts.map +1 -1
- package/dist/types/modifications/entities/ToggleEventLogModification.d.ts +1 -1
- package/dist/types/modifications/entities/ToggleEventLogModification.d.ts.map +1 -1
- package/dist/types/modifications/entities/UpdateEntityNameModification.d.ts +1 -1
- package/dist/types/modifications/entities/UpdateEntityNameModification.d.ts.map +1 -1
- package/dist/types/modifications/entities/UpdateEntityOrderByModification.d.ts +1 -1
- package/dist/types/modifications/entities/UpdateEntityOrderByModification.d.ts.map +1 -1
- package/dist/types/modifications/entities/UpdateEntityTableNameModification.d.ts +1 -1
- package/dist/types/modifications/entities/UpdateEntityTableNameModification.d.ts.map +1 -1
- package/dist/types/modifications/entities/UpdateViewModification.d.ts +1 -1
- package/dist/types/modifications/entities/UpdateViewModification.d.ts.map +1 -1
- package/dist/types/modifications/enums/CreateEnumModification.d.ts +1 -1
- package/dist/types/modifications/enums/CreateEnumModification.d.ts.map +1 -1
- package/dist/types/modifications/enums/RemoveEnumModification.d.ts +1 -1
- package/dist/types/modifications/enums/RemoveEnumModification.d.ts.map +1 -1
- package/dist/types/modifications/enums/UpdateEnumModification.d.ts +2 -1
- package/dist/types/modifications/enums/UpdateEnumModification.d.ts.map +1 -1
- package/dist/types/modifications/fields/RemoveFieldModification.d.ts +1 -1
- package/dist/types/modifications/fields/RemoveFieldModification.d.ts.map +1 -1
- package/dist/types/modifications/fields/UpdateFieldNameModification.d.ts +1 -1
- package/dist/types/modifications/fields/UpdateFieldNameModification.d.ts.map +1 -1
- package/dist/types/modifications/indexes/CreateIndexModification.d.ts +1 -1
- package/dist/types/modifications/indexes/CreateIndexModification.d.ts.map +1 -1
- package/dist/types/modifications/indexes/RemoveIndexModification.d.ts +1 -1
- package/dist/types/modifications/indexes/RemoveIndexModification.d.ts.map +1 -1
- package/dist/types/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.d.ts +1 -1
- package/dist/types/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.d.ts.map +1 -1
- package/dist/types/modifications/relations/ConvertOneHasManyToOneHasOneRelationModification.d.ts +1 -1
- package/dist/types/modifications/relations/ConvertOneHasManyToOneHasOneRelationModification.d.ts.map +1 -1
- package/dist/types/modifications/relations/ConvertOneToManyRelationModification.d.ts +1 -1
- package/dist/types/modifications/relations/ConvertOneToManyRelationModification.d.ts.map +1 -1
- package/dist/types/modifications/relations/CreateRelationInverseSideModification.d.ts +1 -1
- package/dist/types/modifications/relations/CreateRelationInverseSideModification.d.ts.map +1 -1
- package/dist/types/modifications/relations/CreateRelationModification.d.ts +1 -1
- package/dist/types/modifications/relations/CreateRelationModification.d.ts.map +1 -1
- package/dist/types/modifications/relations/DisableOrphanRemovalModification.d.ts +1 -1
- package/dist/types/modifications/relations/DisableOrphanRemovalModification.d.ts.map +1 -1
- package/dist/types/modifications/relations/EnableOrphanRemovalModification.d.ts +1 -1
- package/dist/types/modifications/relations/EnableOrphanRemovalModification.d.ts.map +1 -1
- package/dist/types/modifications/relations/MakeRelationNotNullModification.d.ts +1 -1
- package/dist/types/modifications/relations/MakeRelationNotNullModification.d.ts.map +1 -1
- package/dist/types/modifications/relations/MakeRelationNullableModification.d.ts +1 -1
- package/dist/types/modifications/relations/MakeRelationNullableModification.d.ts.map +1 -1
- package/dist/types/modifications/relations/ToggleJunctionEventLogModification.d.ts +1 -1
- package/dist/types/modifications/relations/ToggleJunctionEventLogModification.d.ts.map +1 -1
- package/dist/types/modifications/relations/UpdateRelationOnDeleteModification.d.ts +1 -1
- package/dist/types/modifications/relations/UpdateRelationOnDeleteModification.d.ts.map +1 -1
- package/dist/types/modifications/relations/UpdateRelationOrderByModification.d.ts +1 -1
- package/dist/types/modifications/relations/UpdateRelationOrderByModification.d.ts.map +1 -1
- package/dist/types/modifications/relations/helpers.d.ts.map +1 -1
- package/dist/types/modifications/settings/UpdateSettingsModification.d.ts +1 -1
- package/dist/types/modifications/settings/UpdateSettingsModification.d.ts.map +1 -1
- package/dist/types/modifications/upgrade/RemoveIndexNamesModification.d.ts +1 -2
- package/dist/types/modifications/upgrade/RemoveIndexNamesModification.d.ts.map +1 -1
- package/dist/types/modifications/utils/columnUtils.d.ts.map +1 -1
- package/dist/types/modifications/utils/schemaUpdateUtils.d.ts.map +1 -1
- package/dist/types/modifications/utils/valueUtils.d.ts.map +1 -1
- package/dist/types/modifications/validation/PatchValidationSchemaModification.d.ts +1 -1
- package/dist/types/modifications/validation/PatchValidationSchemaModification.d.ts.map +1 -1
- package/dist/types/modifications/validation/UpdateValidationSchemaModification.d.ts +1 -1
- package/dist/types/modifications/validation/UpdateValidationSchemaModification.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/dist/types/utils/PartialEntity.d.ts.map +1 -1
- package/package.json +15 -10
- package/src/MigrationDescriber.ts +4 -2
- package/src/SchemaDiffer.ts +10 -2
- package/src/modifications/ModificationHandler.ts +0 -1
- package/src/modifications/ModificationHandlerFactory.ts +2 -2
- package/src/modifications/acl/PatchAclSchemaModification.ts +1 -1
- package/src/modifications/acl/UpdateAclSchemaModification.ts +2 -2
- package/src/modifications/actions/PatchTriggerModification.ts +51 -0
- package/src/modifications/actions/UpdateTriggerModification.ts +22 -1
- package/src/modifications/actions/index.ts +1 -0
- package/src/modifications/columns/CreateColumnModification.ts +3 -6
- package/src/modifications/columns/UpdateColumnDefinitionModification.ts +7 -3
- package/src/modifications/columns/UpdateColumnNameModification.ts +1 -3
- package/src/modifications/columns/columnUtils.ts +0 -2
- package/src/modifications/constraints/CreateUniqueConstraintModification.ts +13 -16
- package/src/modifications/constraints/RemoveUniqueConstraintModification.ts +4 -15
- package/src/modifications/differs/RemoveViewDiffer.ts +0 -3
- package/src/modifications/entities/CreateEntityModification.ts +4 -5
- package/src/modifications/entities/CreateViewModification.ts +0 -1
- package/src/modifications/entities/RemoveEntityModification.ts +6 -6
- package/src/modifications/entities/ToggleEventLogModification.ts +1 -8
- package/src/modifications/entities/UpdateEntityNameModification.ts +3 -8
- package/src/modifications/entities/UpdateEntityOrderByModification.ts +2 -4
- package/src/modifications/entities/UpdateEntityTableNameModification.ts +7 -6
- package/src/modifications/entities/UpdateViewModification.ts +0 -1
- package/src/modifications/enums/CreateEnumModification.ts +6 -4
- package/src/modifications/enums/UpdateEnumModification.ts +49 -13
- package/src/modifications/fields/RemoveFieldModification.ts +0 -2
- package/src/modifications/fields/UpdateFieldNameModification.ts +71 -79
- package/src/modifications/indexes/CreateIndexModification.ts +11 -12
- package/src/modifications/indexes/RemoveIndexModification.ts +4 -11
- package/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.ts +9 -6
- package/src/modifications/relations/ConvertOneHasManyToOneHasOneRelationModification.ts +20 -14
- package/src/modifications/relations/ConvertOneToManyRelationModification.ts +18 -14
- package/src/modifications/relations/CreateRelationModification.ts +5 -9
- package/src/modifications/relations/DisableOrphanRemovalModification.ts +6 -7
- package/src/modifications/relations/EnableOrphanRemovalModification.ts +7 -8
- package/src/modifications/relations/MakeRelationNotNullModification.ts +5 -5
- package/src/modifications/relations/MakeRelationNullableModification.ts +5 -7
- package/src/modifications/relations/ToggleJunctionEventLogModification.ts +6 -18
- package/src/modifications/relations/UpdateRelationOnDeleteModification.ts +5 -10
- package/src/modifications/relations/UpdateRelationOrderByModification.ts +4 -5
- package/src/modifications/relations/helpers.ts +3 -1
- package/src/modifications/settings/UpdateSettingsModification.ts +6 -10
- package/src/modifications/upgrade/RemoveIndexNamesModification.ts +1 -4
- package/src/modifications/utils/columnUtils.ts +1 -2
- package/src/modifications/utils/schemaUpdateUtils.ts +139 -165
- package/src/modifications/utils/valueUtils.ts +1 -4
- package/src/modifications/validation/UpdateValidationSchemaModification.ts +0 -1
- package/src/tsconfig.json +1 -2
- package/src/utils/PartialEntity.ts +2 -2
- package/src/utils/escapeSqlString.ts +1 -1
- package/tests/cases/integration/convertOneToManyRelation.test.ts +69 -81
- package/tests/cases/integration/createAndDropIndex.test.ts +138 -36
- package/tests/cases/integration/createColumn.test.ts +178 -175
- package/tests/cases/integration/createEntity.test.ts +185 -182
- package/tests/cases/integration/createEnum.test.ts +34 -34
- package/tests/cases/integration/createManyHasMany.test.ts +66 -67
- package/tests/cases/integration/createManyHasOne.test.ts +62 -62
- package/tests/cases/integration/createOneHasMany.test.ts +86 -88
- package/tests/cases/integration/createOneHasOne.test.ts +96 -96
- package/tests/cases/integration/createRelationInverseSide.test.ts +73 -72
- package/tests/cases/integration/createUnique.test.ts +321 -162
- package/tests/cases/integration/createView.test.ts +111 -96
- package/tests/cases/integration/disableOrphanRemoval.test.ts +25 -27
- package/tests/cases/integration/enableOrphanRemoval.test.ts +25 -27
- package/tests/cases/integration/makeColumnNotNull.test.ts +25 -24
- package/tests/cases/integration/makeRelationNotNull.test.ts +25 -27
- package/tests/cases/integration/makeRelationNullable.test.ts +47 -48
- package/tests/cases/integration/patchAclSchema.test.ts +43 -42
- package/tests/cases/integration/patchTrigger.test.ts +184 -0
- package/tests/cases/integration/removeEntity.test.ts +143 -147
- package/tests/cases/integration/removeEnum.test.ts +27 -27
- package/tests/cases/integration/removeField.test.ts +163 -172
- package/tests/cases/integration/toggleEventLog.test.ts +26 -25
- package/tests/cases/integration/toggleJunctionEventLog.test.ts +28 -26
- package/tests/cases/integration/updateColumnDefinition.test.ts +191 -165
- package/tests/cases/integration/updateEntityName.test.ts +113 -110
- package/tests/cases/integration/updateEntityOrderBy.test.ts +25 -24
- package/tests/cases/integration/updateEnum.test.ts +68 -30
- package/tests/cases/integration/updateFieldName.test.ts +195 -199
- package/tests/cases/integration/updateRelationOnDelete.test.ts +42 -44
- package/tests/cases/integration/updateRelationOrderBy.test.ts +35 -38
- package/tests/cases/integration/updateView.test.ts +350 -350
- package/tests/src/tests.ts +1 -2
- package/vitest.config.ts +0 -3
|
@@ -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,
|
|
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,KAAA,MAAW,eAAe,MAAM,SAAS,IAAI,CAAC,EACxD,QAAQ,CAAA,kBAAiB;AACzB,UAAM,iBAAiB,eAAe,MAAM,SAAS,cAAc,IAAI;AAEvE,WAAO,OAAO,OAAO,cAAc,MAAM,EACvC,QAAQ,CAAA,iBAAgB;AACxB,YAAM,gBAAgB,eAAe,OAAO,aAAa,IAAI;AAC7D,UAAI,CAAC,eAAe;AACnB,eAAO;AAAA,MACR;AACA,UAAI,UAAU,eAAe,YAAY,GAAG;AAC3C,eAAO;AAAA,MACR;AACA,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,MACf;AACA,aAAO;AAAA,IACR,CAAC,EACA,OAAO,SAAS;AAAA,EACnB,CAAC;AACH;AAEO,MAAM,gBAAgB,CAC5B,gBACA,eACA,0BAMoC;AACpC,SAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA,CAAC,EAAE,eAAe,gBAAgB,eAAe,mBAAmB;AACnE,UAAI,CAAC,SAAS,YAAY,KAAK,CAAC,SAAS,aAAa,GAAG;AACxD,eAAO;AAAA,MACR;AACA,aAAO,sBAAsB;AAAA,QAC5B;AAAA,QACA;AAAA,QACA,gBAAgB;AAAA,QAChB,eAAe;AAAA,MAAA,CACf;AAAA,IACF;AAAA,EAAA;AAEF;AAEO,MAAM,kBAAkB,CAC9B,gBACA,eACA,0BAMoC;AACpC,SAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA,CAAC,EAAE,eAAe,gBAAgB,eAAe,mBAAmB;AACnE,UAAI,CAAC,WAAW,YAAY,KAAK,CAAC,WAAW,aAAa,GAAG;AAC5D,eAAO;AAAA,MACR;AACA,aAAO,sBAAsB;AAAA,QAC5B;AAAA,QACA;AAAA,QACA,kBAAkB;AAAA,QAClB,iBAAiB;AAAA,MAAA,CACjB;AAAA,IACF;AAAA,EAAA;AAEF;AAEO,MAAM,eAAe,CAC3B,gBACA,eACA,0BAKoC;AACpC,SAAO,OAAO,OAAO,cAAc,MAAM,QAAQ,EAC/C,OAAO,CAAC,EAAE,KAAA,MAAW,eAAe,MAAM,SAAS,IAAI,CAAC,EACxD,QAAQ,CAAA,kBAAiB;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,CAAA,aAAY;AAChB,aAAO,sBAAsB;AAAA,QAC5B;AAAA,QACA;AAAA,QACA;AAAA,MAAA,CACA;AAAA,IACF,CAAC,EACA,OAAO,SAAS;AAAA,EACnB,CAAC;AACH;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getPrimaryColumnType.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/utils/getPrimaryColumnType.ts"],"sourcesContent":["import { Model } from '@contember/schema'\n\nexport const getPrimaryColumnType = (entity: Model.Entity): string => {\n\tconst column = entity.fields[entity.primary] as Model.AnyColumn\n\treturn column.columnType\n}\n"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"getPrimaryColumnType.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/utils/getPrimaryColumnType.ts"],"sourcesContent":["import { Model } from '@contember/schema'\n\nexport const getPrimaryColumnType = (entity: Model.Entity): string => {\n\tconst column = entity.fields[entity.primary] as Model.AnyColumn\n\treturn column.columnType\n}\n"],"names":[],"mappings":";;AAEO,MAAM,uBAAuB,CAAC,WAAiC;AACrE,QAAM,SAAS,OAAO,OAAO,OAAO,OAAO;AAC3C,SAAO,OAAO;AACf;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getPrimaryColumnType.js","sources":["../../../../../../packages/schema-migrations/src/modifications/utils/getPrimaryColumnType.ts"],"sourcesContent":["import { Model } from '@contember/schema'\n\nexport const getPrimaryColumnType = (entity: Model.Entity): string => {\n\tconst column = entity.fields[entity.primary] as Model.AnyColumn\n\treturn column.columnType\n}\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"getPrimaryColumnType.js","sources":["../../../../../../packages/schema-migrations/src/modifications/utils/getPrimaryColumnType.ts"],"sourcesContent":["import { Model } from '@contember/schema'\n\nexport const getPrimaryColumnType = (entity: Model.Entity): string => {\n\tconst column = entity.fields[entity.primary] as Model.AnyColumn\n\treturn column.columnType\n}\n"],"names":[],"mappings":"AAEO,MAAM,uBAAuB,CAAC,WAAiC;AACrE,QAAM,SAAS,OAAO,OAAO,OAAO,OAAO;AAC3C,SAAO,OAAO;AACf;"}
|
|
@@ -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\trefreshMaterializedView: value => value,\n\t\t\t\tnoRoot: value => value,\n\t\t\t}\n\t\t\tconst types: (keyof Acl.EntityOperations)[] = ['create', 'update', 'read', 'delete', 'customPrimary', 'noRoot']\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\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 = (...schemaUpdater: (SchemaUpdater | undefined)[]): SchemaUpdater => args =>\n\tschemaUpdater.filter(isDefined).reduce((schema, updater) => updater({ ...args, schema }), args.schema)\n\nexport const updateAcl = (updater: AclUpdater): SchemaUpdater => args => ({\n\t...args.schema,\n\tacl: updater({ schema: args.schema, acl: args.schema.acl }),\n})\n\nexport const updateAclEveryRole = (...updater: AclRoleUpdater[]): AclUpdater => args => ({\n\t...args.acl,\n\troles: Object.fromEntries(\n\t\tupdater.reduce(\n\t\t\t(acc, updater) => acc.map(([name, role]) => [name, updater({ ...args, role })]),\n\t\t\tObject.entries(args.acl.roles),\n\t\t),\n\t),\n})\n\nexport const updateAclEntities = (updater: AclPermissionsUpdater): AclRoleUpdater => args => ({\n\t...args.role,\n\tentities: updater({ ...args, entities: args.role.entities }),\n})\n\nexport const updateAclEveryEntity = (...updater: AclEntityPermissionsUpdater[]): AclRoleUpdater => args => ({\n\t...args.role,\n\tentities: Object.fromEntries(\n\t\tupdater.reduce(\n\t\t\t(acc, updater) =>\n\t\t\t\tacc.map(([entity, entityPermissions]) => [\n\t\t\t\t\tentity,\n\t\t\t\t\tupdater({\n\t\t\t\t\t\t...args,\n\t\t\t\t\t\tentities: args.role.entities,\n\t\t\t\t\t\tentityName: entity,\n\t\t\t\t\t\tentityPermissions,\n\t\t\t\t\t}),\n\t\t\t\t]),\n\t\t\tObject.entries(args.role.entities),\n\t\t),\n\t),\n})\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 => ({ entityPermissions, entityName }) => {\n\t\tconst operations: Writable<Acl.EntityOperations> = {}\n\t\tconst handlers: EntityOperationHandler = {\n\t\t\tcreate: value => updater(value, entityName, Acl.Operation.create),\n\t\t\tupdate: value => updater(value, entityName, Acl.Operation.update),\n\t\t\tread: value => updater(value, entityName, Acl.Operation.read),\n\t\t\tdelete: value => value,\n\t\t\tcustomPrimary: value => value,\n\t\t\trefreshMaterializedView: value => value,\n\t\t\tnoRoot: value => value,\n\t\t}\n\t\tconst types: (keyof Acl.EntityOperations)[] = ['create', 'update', 'read', 'delete', 'customPrimary', 'noRoot']\n\t\tfor (const key of types) {\n\t\t\tif (key in entityPermissions.operations) {\n\t\t\t\toperations[key] = handlers[key](entityPermissions.operations[key] as any) as any\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\t...entityPermissions,\n\t\t\toperations,\n\t\t}\n\t}\n\nexport const updateAclEveryPredicate = (updater: EntityAclEveryPredicatesUpdater): AclEntityPermissionsUpdater => args => {\n\treturn {\n\t\t...args.entityPermissions,\n\t\tpredicates: Object.fromEntries(\n\t\t\tObject.entries(args.entityPermissions.predicates).map(([name, predicate]) => [\n\t\t\t\tname,\n\t\t\t\tupdater({\n\t\t\t\t\t...args,\n\t\t\t\t\tpredicate,\n\t\t\t\t}),\n\t\t\t]),\n\t\t),\n\t}\n}\n\nexport const updateModel = (...modelUpdate: (ModelUpdater | undefined)[]): SchemaUpdater => args => ({\n\t...args.schema,\n\tmodel: modelUpdate\n\t\t.filter((it): it is ModelUpdater => it !== undefined)\n\t\t.reduce((model, updater) => updater({ ...args, model }), args.schema.model),\n})\n\nexport const updateEntity = (name: string, entityUpdate: EntityUpdater): ModelUpdater => args => {\n\tif (!args.model.entities[name]) {\n\t\tthrow new SchemaUpdateError(`Entity ${name} not found`)\n\t}\n\treturn {\n\t\t...args.model,\n\t\tentities: {\n\t\t\t...args.model.entities,\n\t\t\t[name]: entityUpdate({ ...args, entity: args.model.entities[name] }),\n\t\t},\n\t}\n}\n\nexport const updateEveryEntity = (entityUpdate: EntityUpdater): ModelUpdater => args => ({\n\t...args.model,\n\tentities: Object.fromEntries(\n\t\tObject.entries(args.model.entities).map(([name, entity]) => [name, entityUpdate({ ...args, entity })]),\n\t),\n})\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\targs => {\n\t\tconst { [name]: field, ...otherFields } = args.entity.fields\n\t\tif (!args.entity.fields[name]) {\n\t\t\tthrow new SchemaUpdateError(`Field ${args.entity.name}::${name} not found`)\n\t\t}\n\t\tconst updatedField = fieldUpdater({ ...args, field: args.entity.fields[name] as In })\n\n\t\treturn {\n\t\t\t...args.entity,\n\t\t\tfields: {\n\t\t\t\t...otherFields,\n\t\t\t\t...(updatedField ? { [name]: updatedField } : {}),\n\t\t\t},\n\t\t}\n\t}\n\nexport const updateEveryField = (fieldUpdater: FieldUpdater<Model.AnyField, Model.AnyField>): EntityUpdater => args => ({\n\t...args.entity,\n\tfields: Object.fromEntries(\n\t\tObject.entries(args.entity.fields)\n\t\t\t.map(([name, field]) => {\n\t\t\t\tconst updatedField = fieldUpdater({ ...args, field })\n\t\t\t\tif (!updatedField) {\n\t\t\t\t\treturn undefined\n\t\t\t\t}\n\t\t\t\treturn [name, updatedField]\n\t\t\t})\n\t\t\t.filter(isDefined),\n\t),\n})\n\nexport const addField = (field: Model.AnyField): EntityUpdater => args => {\n\treturn {\n\t\t...args.entity,\n\t\tfields: {\n\t\t\t...args.entity.fields,\n\t\t\t[field.name]: field,\n\t\t},\n\t}\n}\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 => ctx.entity.name === entity.name && ctx.column.name === field.name ? undefined : ctx.value,\n\t\t\t\t\t\t\t\t\thandleRelation: ctx => ctx.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\t&& isOwningRelation(field)\n\t\t\t\t&& field.inversedBy\n\t\t\t\t&& version >= 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\trefreshMaterializedView: value => value,\n\t\t\t\tnoRoot: value => value,\n\t\t\t}\n\t\t\tconst types: (keyof Acl.EntityOperations)[] = ['create', 'update', 'read', 'delete', 'customPrimary', 'noRoot']\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\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 = (...schemaUpdater: (SchemaUpdater | undefined)[]): SchemaUpdater => args =>\n\tschemaUpdater.filter(isDefined).reduce((schema, updater) => updater({ ...args, schema }), args.schema)\n\nexport const updateAcl = (updater: AclUpdater): SchemaUpdater => args => ({\n\t...args.schema,\n\tacl: updater({ schema: args.schema, acl: args.schema.acl }),\n})\n\nexport const updateAclEveryRole = (...updater: AclRoleUpdater[]): AclUpdater => args => ({\n\t...args.acl,\n\troles: Object.fromEntries(\n\t\tupdater.reduce(\n\t\t\t(acc, updater) => acc.map(([name, role]) => [name, updater({ ...args, role })]),\n\t\t\tObject.entries(args.acl.roles),\n\t\t),\n\t),\n})\n\nexport const updateAclEntities = (updater: AclPermissionsUpdater): AclRoleUpdater => args => ({\n\t...args.role,\n\tentities: updater({ ...args, entities: args.role.entities }),\n})\n\nexport const updateAclEveryEntity = (...updater: AclEntityPermissionsUpdater[]): AclRoleUpdater => args => ({\n\t...args.role,\n\tentities: Object.fromEntries(\n\t\tupdater.reduce(\n\t\t\t(acc, updater) =>\n\t\t\t\tacc.map(([entity, entityPermissions]) => [\n\t\t\t\t\tentity,\n\t\t\t\t\tupdater({\n\t\t\t\t\t\t...args,\n\t\t\t\t\t\tentities: args.role.entities,\n\t\t\t\t\t\tentityName: entity,\n\t\t\t\t\t\tentityPermissions,\n\t\t\t\t\t}),\n\t\t\t\t]),\n\t\t\tObject.entries(args.role.entities),\n\t\t),\n\t),\n})\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 => ({ entityPermissions, entityName }) => {\n\t\tconst operations: Writable<Acl.EntityOperations> = {}\n\t\tconst handlers: EntityOperationHandler = {\n\t\t\tcreate: value => updater(value, entityName, Acl.Operation.create),\n\t\t\tupdate: value => updater(value, entityName, Acl.Operation.update),\n\t\t\tread: value => updater(value, entityName, Acl.Operation.read),\n\t\t\tdelete: value => value,\n\t\t\tcustomPrimary: value => value,\n\t\t\trefreshMaterializedView: value => value,\n\t\t\tnoRoot: value => value,\n\t\t}\n\t\tconst types: (keyof Acl.EntityOperations)[] = ['create', 'update', 'read', 'delete', 'customPrimary', 'noRoot']\n\t\tfor (const key of types) {\n\t\t\tif (key in entityPermissions.operations) {\n\t\t\t\toperations[key] = handlers[key](entityPermissions.operations[key] as any) as any\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\t...entityPermissions,\n\t\t\toperations,\n\t\t}\n\t}\n\nexport const updateAclEveryPredicate = (updater: EntityAclEveryPredicatesUpdater): AclEntityPermissionsUpdater => args => {\n\treturn {\n\t\t...args.entityPermissions,\n\t\tpredicates: Object.fromEntries(\n\t\t\tObject.entries(args.entityPermissions.predicates).map(([name, predicate]) => [\n\t\t\t\tname,\n\t\t\t\tupdater({\n\t\t\t\t\t...args,\n\t\t\t\t\tpredicate,\n\t\t\t\t}),\n\t\t\t]),\n\t\t),\n\t}\n}\n\nexport const updateModel = (...modelUpdate: (ModelUpdater | undefined)[]): SchemaUpdater => args => ({\n\t...args.schema,\n\tmodel: modelUpdate\n\t\t.filter((it): it is ModelUpdater => it !== undefined)\n\t\t.reduce((model, updater) => updater({ ...args, model }), args.schema.model),\n})\n\nexport const updateEntity = (name: string, entityUpdate: EntityUpdater): ModelUpdater => args => {\n\tif (!args.model.entities[name]) {\n\t\tthrow new SchemaUpdateError(`Entity ${name} not found`)\n\t}\n\treturn {\n\t\t...args.model,\n\t\tentities: {\n\t\t\t...args.model.entities,\n\t\t\t[name]: entityUpdate({ ...args, entity: args.model.entities[name] }),\n\t\t},\n\t}\n}\n\nexport const updateEveryEntity = (entityUpdate: EntityUpdater): ModelUpdater => args => ({\n\t...args.model,\n\tentities: Object.fromEntries(\n\t\tObject.entries(args.model.entities).map(([name, entity]) => [name, entityUpdate({ ...args, entity })]),\n\t),\n})\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\targs => {\n\t\tconst { [name]: field, ...otherFields } = args.entity.fields\n\t\tif (!args.entity.fields[name]) {\n\t\t\tthrow new SchemaUpdateError(`Field ${args.entity.name}::${name} not found`)\n\t\t}\n\t\tconst updatedField = fieldUpdater({ ...args, field: args.entity.fields[name] as In })\n\n\t\treturn {\n\t\t\t...args.entity,\n\t\t\tfields: {\n\t\t\t\t...otherFields,\n\t\t\t\t...(updatedField ? { [name]: updatedField } : {}),\n\t\t\t},\n\t\t}\n\t}\n\nexport const updateEveryField = (fieldUpdater: FieldUpdater<Model.AnyField, Model.AnyField>): EntityUpdater => args => ({\n\t...args.entity,\n\tfields: Object.fromEntries(\n\t\tObject.entries(args.entity.fields)\n\t\t\t.map(([name, field]) => {\n\t\t\t\tconst updatedField = fieldUpdater({ ...args, field })\n\t\t\t\tif (!updatedField) {\n\t\t\t\t\treturn undefined\n\t\t\t\t}\n\t\t\t\treturn [name, updatedField]\n\t\t\t})\n\t\t\t.filter(isDefined),\n\t),\n})\n\nexport const addField = (field: Model.AnyField): EntityUpdater => args => {\n\treturn {\n\t\t...args.entity,\n\t\tfields: {\n\t\t\t...args.entity.fields,\n\t\t\t[field.name]: field,\n\t\t},\n\t}\n}\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 => ctx.entity.name === entity.name && ctx.column.name === field.name ? undefined : ctx.value,\n\t\t\t\t\t\t\t\t\thandleRelation: ctx => ctx.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\t&& isOwningRelation(field)\n\t\t\t\t&& field.inversedBy\n\t\t\t\t&& version >= 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;
|
|
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;AACjI,UAAQ,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,IAAA;AAAA,IAEP,gBAAgB;AAAA,EAAA,CAChB;AACF;AAEO,MAAM,mBAAmB,CAAC,SAA2B,cAAoB;AAC/E,UAAQ,YAAY,WAAW,WAAW;AAC3C;AAEO,MAAM,wBAAwB,CAAC,SAA2B,cAAsB,cAAoB;AAC1G,UAAQ,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;AAEO,MAAM,sBAAsB,CAAC,SAA2B,cAAoB;AAClF,UAAQ,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;
|
|
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;AACjI,UAAQ,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,IAAA;AAAA,IAEP,gBAAgB;AAAA,EAAA,CAChB;AACF;AAEO,MAAM,mBAAmB,CAAC,SAA2B,cAAoB;AAC/E,UAAQ,YAAY,WAAW,WAAW;AAC3C;AAEO,MAAM,wBAAwB,CAAC,SAA2B,cAAsB,cAAoB;AAC1G,UAAQ,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;AAEO,MAAM,sBAAsB,CAAC,SAA2B,cAAoB;AAClF,UAAQ,YAAY,WAAW,eAAe;AAC/C;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"valueUtils.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/utils/valueUtils.ts"],"sourcesContent":["export const changeValue
|
|
1
|
+
{"version":3,"file":"valueUtils.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/utils/valueUtils.ts"],"sourcesContent":["export const changeValue = (from: string, to: string) => (value: string): string => value === from ? to : value\n"],"names":[],"mappings":";;AAAO,MAAM,cAAc,CAAC,MAAc,OAAe,CAAC,UAA0B,UAAU,OAAO,KAAK;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"valueUtils.js","sources":["../../../../../../packages/schema-migrations/src/modifications/utils/valueUtils.ts"],"sourcesContent":["export const changeValue
|
|
1
|
+
{"version":3,"file":"valueUtils.js","sources":["../../../../../../packages/schema-migrations/src/modifications/utils/valueUtils.ts"],"sourcesContent":["export const changeValue = (from: string, to: string) => (value: string): string => value === from ? to : value\n"],"names":[],"mappings":"AAAO,MAAM,cAAc,CAAC,MAAc,OAAe,CAAC,UAA0B,UAAU,OAAO,KAAK;"}
|
|
@@ -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":";;;;;;
|
|
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":";;;;;;AAKO,MAAM,0BAA0B,CAAC,UAA8C;AACrF,QAAM,aAAmC,IAAI,IAAI,OAAO,OAAO,MAAM,QAAQ,EAAE,IAAI,CAAA,OAAM,CAAC,GAAG,0BAAU,IAAA,CAAK,CAAC,CAAC;AAC9G,aAAW,UAAU,OAAO,OAAO,MAAM,QAAQ,GAAG;AACnD,QAAI,CAAC,OAAO,MAAM,cAAc,QAAQ;AACvC;AAAA,IACD;AACA,eAAW,cAAc,OAAO,KAAK,cAAc;AAClD,YAAM,mBAAmB,WAAW,IAAI,UAAU;AAClD,UAAI,CAAC,kBAAkB;AACtB,cAAM,IAAI,MAAA;AAAA,MACX;AACA,uBAAiB,IAAI,MAAM;AAAA,IAC5B;AAAA,EACD;AACA,SAAO;AACR;AAEO,MAAM,8BAA8B,CAAC,OAAqB,aAAuD;AACvH,QAAM,8BAAc,IAAA;AACpB,QAAM,aAAa,wBAAwB,KAAK;AAChD,QAAM,gBAA0C,CAAA;AAChD,QAAM,gBAAgB,CAAC,WAAyB;AAC/C,QAAI,QAAQ,IAAI,OAAO,IAAI,GAAG;AAC7B;AAAA,IACD;AACA,YAAQ,IAAI,OAAO,IAAI;AACvB,eAAW,aAAa,WAAW,IAAI,OAAO,IAAI,KAAK,IAAI;AAC1D,oBAAc,SAAS;AAAA,IACxB;AACA,QAAI,OAAO,MAAM;AAChB,oBAAc,KAAKA,yBAAAA,yBAAyB,mBAAmB,EAAE,YAAY,OAAO,KAAA,CAAM,CAAC;AAAA,IAC5F;AAAA,EACD;AACA,aAAW,UAAU,UAAU;AAC9B,kBAAc,MAAM;AAAA,EACrB;AACA,SAAO;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":";;;;
|
|
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":";;;;AAKO,MAAM,0BAA0B,CAAC,UAA8C;AACrF,QAAM,aAAmC,IAAI,IAAI,OAAO,OAAO,MAAM,QAAQ,EAAE,IAAI,CAAA,OAAM,CAAC,GAAG,0BAAU,IAAA,CAAK,CAAC,CAAC;AAC9G,aAAW,UAAU,OAAO,OAAO,MAAM,QAAQ,GAAG;AACnD,QAAI,CAAC,OAAO,MAAM,cAAc,QAAQ;AACvC;AAAA,IACD;AACA,eAAW,cAAc,OAAO,KAAK,cAAc;AAClD,YAAM,mBAAmB,WAAW,IAAI,UAAU;AAClD,UAAI,CAAC,kBAAkB;AACtB,cAAM,IAAI,MAAA;AAAA,MACX;AACA,uBAAiB,IAAI,MAAM;AAAA,IAC5B;AAAA,EACD;AACA,SAAO;AACR;AAEO,MAAM,8BAA8B,CAAC,OAAqB,aAAuD;AACvH,QAAM,8BAAc,IAAA;AACpB,QAAM,aAAa,wBAAwB,KAAK;AAChD,QAAM,gBAA0C,CAAA;AAChD,QAAM,gBAAgB,CAAC,WAAyB;AAC/C,QAAI,QAAQ,IAAI,OAAO,IAAI,GAAG;AAC7B;AAAA,IACD;AACA,YAAQ,IAAI,OAAO,IAAI;AACvB,eAAW,aAAa,WAAW,IAAI,OAAO,IAAI,KAAK,IAAI;AAC1D,oBAAc,SAAS;AAAA,IACxB;AACA,QAAI,OAAO,MAAM;AAChB,oBAAc,KAAK,yBAAyB,mBAAmB,EAAE,YAAY,OAAO,KAAA,CAAM,CAAC;AAAA,IAC5F;AAAA,EACD;AACA,aAAW,UAAU,UAAU;AAC9B,kBAAc,MAAM;AAAA,EACrB;AACA,SAAO;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,EAA8C;AAAA,EAEpE,YAAkB;AAAA,EAAC;AAAA,EAEnB,mBAAkC;AACxC,WAAO,CAAC,EAAE,aAAa;AACtB,YAAM,aAAa,SAAS,OAAO,UAAU;AAC7C,YAAM,SAASA,QAAAA,WAAW,YAAY,KAAK,KAAK,KAAK,EAAE,OAAO,CAAA,OAAM,OAAO,IAAI;AAC/E,UAAI,OAAO,SAAS,GAAG;AACtB,cAAM,OAAO,CAAC;AAAA,MACf;AAEA,aAAO;AAAA,QACN,GAAG;AAAA,QACH;AAAA,MAAA;AAAA,IAEF;AAAA,EACD;AAAA,EAEA,WAAW;AACV,WAAO,EAAE,SAAS,2BAAA;AAAA,EACnB;AACD;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,EAA8C;AAAA,EAEpE,YAAkB;AAAA,EAAC;AAAA,EAEnB,mBAAkC;AACxC,WAAO,CAAC,EAAE,aAAa;AACtB,YAAM,aAAa,SAAS,OAAO,UAAU;AAC7C,YAAM,SAAS,WAAW,YAAY,KAAK,KAAK,KAAK,EAAE,OAAO,CAAA,OAAM,OAAO,IAAI;AAC/E,UAAI,OAAO,SAAS,GAAG;AACtB,cAAM,OAAO,CAAC;AAAA,MACf;AAEA,aAAO;AAAA,QACN,GAAG;AAAA,QACH;AAAA,MAAA;AAAA,IAEF;AAAA,EACD;AAAA,EAEA,WAAW;AACV,WAAO,EAAE,SAAS,2BAAA;AAAA,EACnB;AACD;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
|
|
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\nexport interface UpdateValidationSchemaModificationData {\n\tschema: Validation.Schema\n}\n\nexport const updateValidationSchemaModification = createModificationType({\n\tid: 'updateValidationSchema',\n\thandler: UpdateValidationSchemaModificationHandler,\n})\n\nexport class UpdateValidationSchemaDiffer implements Differ {\n\tconstructor(\n\t\tprivate readonly options?: {\n\t\t\tmaxPatchSize?: number\n\t\t},\n\t) {\n\t}\n\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\tif (deepEqual(originalSchema.validation, updatedSchema.validation)) {\n\t\t\treturn []\n\t\t}\n\t\tconst patch = createPatch(originalSchema.validation, updatedSchema.validation)\n\t\tif (patch.length <= (this.options?.maxPatchSize ?? 100)) {\n\t\t\treturn [patchValidationSchemaModification.createModification({ patch })]\n\t\t}\n\t\treturn [updateValidationSchemaModification.createModification({ schema: updatedSchema.validation })]\n\t}\n}\n"],"names":["createModificationType","createPatch","patchValidationSchemaModification"],"mappings":";;;;;;AAOO,MAAM,0CAAiH;AAAA,EAC7H,YAA6B,MAA8C;AAA9C,SAAA,OAAA;AAAA,EAA+C;AAAA,EAErE,YAAkB;AAAA,EAAC;AAAA,EAEnB,mBAAkC;AACxC,WAAO,CAAC,EAAE,cAAc;AAAA,MACvB,GAAG;AAAA,MACH,YAAY,KAAK,KAAK;AAAA,IAAA;AAAA,EAExB;AAAA,EAEA,WAAW;AACV,WAAO,EAAE,SAAS,2BAAA;AAAA,EACnB;AACD;AAMO,MAAM,qCAAqCA,oBAAAA,uBAAuB;AAAA,EACxE,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAEM,MAAM,6BAA+C;AAAA,EAC3D,YACkB,SAGhB;AAHgB,SAAA,UAAA;AAAA,EAIlB;AAAA,EAEA,WAAW,gBAAwB,eAAuB;AACzD,QAAI,UAAU,eAAe,YAAY,cAAc,UAAU,GAAG;AACnE,aAAO,CAAA;AAAA,IACR;AACA,UAAM,QAAQC,QAAAA,YAAY,eAAe,YAAY,cAAc,UAAU;AAC7E,QAAI,MAAM,WAAW,KAAK,SAAS,gBAAgB,MAAM;AACxD,aAAO,CAACC,kCAAAA,kCAAkC,mBAAmB,EAAE,MAAA,CAAO,CAAC;AAAA,IACxE;AACA,WAAO,CAAC,mCAAmC,mBAAmB,EAAE,QAAQ,cAAc,WAAA,CAAY,CAAC;AAAA,EACpG;AACD;;;;"}
|
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
|
|
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\nexport interface UpdateValidationSchemaModificationData {\n\tschema: Validation.Schema\n}\n\nexport const updateValidationSchemaModification = createModificationType({\n\tid: 'updateValidationSchema',\n\thandler: UpdateValidationSchemaModificationHandler,\n})\n\nexport class UpdateValidationSchemaDiffer implements Differ {\n\tconstructor(\n\t\tprivate readonly options?: {\n\t\t\tmaxPatchSize?: number\n\t\t},\n\t) {\n\t}\n\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\tif (deepEqual(originalSchema.validation, updatedSchema.validation)) {\n\t\t\treturn []\n\t\t}\n\t\tconst patch = createPatch(originalSchema.validation, updatedSchema.validation)\n\t\tif (patch.length <= (this.options?.maxPatchSize ?? 100)) {\n\t\t\treturn [patchValidationSchemaModification.createModification({ patch })]\n\t\t}\n\t\treturn [updateValidationSchemaModification.createModification({ schema: updatedSchema.validation })]\n\t}\n}\n"],"names":[],"mappings":";;;;AAOO,MAAM,0CAAiH;AAAA,EAC7H,YAA6B,MAA8C;AAA9C,SAAA,OAAA;AAAA,EAA+C;AAAA,EAErE,YAAkB;AAAA,EAAC;AAAA,EAEnB,mBAAkC;AACxC,WAAO,CAAC,EAAE,cAAc;AAAA,MACvB,GAAG;AAAA,MACH,YAAY,KAAK,KAAK;AAAA,IAAA;AAAA,EAExB;AAAA,EAEA,WAAW;AACV,WAAO,EAAE,SAAS,2BAAA;AAAA,EACnB;AACD;AAMO,MAAM,qCAAqC,uBAAuB;AAAA,EACxE,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAEM,MAAM,6BAA+C;AAAA,EAC3D,YACkB,SAGhB;AAHgB,SAAA,UAAA;AAAA,EAIlB;AAAA,EAEA,WAAW,gBAAwB,eAAuB;AACzD,QAAI,UAAU,eAAe,YAAY,cAAc,UAAU,GAAG;AACnE,aAAO,CAAA;AAAA,IACR;AACA,UAAM,QAAQ,YAAY,eAAe,YAAY,cAAc,UAAU;AAC7E,QAAI,MAAM,WAAW,KAAK,SAAS,gBAAgB,MAAM;AACxD,aAAO,CAAC,kCAAkC,mBAAmB,EAAE,MAAA,CAAO,CAAC;AAAA,IACxE;AACA,WAAO,CAAC,mCAAmC,mBAAmB,EAAE,QAAQ,cAAc,WAAA,CAAY,CAAC;AAAA,EACpG;AACD;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dbHelpers.cjs","sources":["../../../../../packages/schema-migrations/src/utils/dbHelpers.ts"],"sourcesContent":["export const wrapIdentifier = (value: string) => '\"' + value.replace(/\"/g, '\"\"') + '\"'\n"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"dbHelpers.cjs","sources":["../../../../../packages/schema-migrations/src/utils/dbHelpers.ts"],"sourcesContent":["export const wrapIdentifier = (value: string) => '\"' + value.replace(/\"/g, '\"\"') + '\"'\n"],"names":[],"mappings":";;AAAO,MAAM,iBAAiB,CAAC,UAAkB,MAAM,MAAM,QAAQ,MAAM,IAAI,IAAI;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dbHelpers.js","sources":["../../../../../packages/schema-migrations/src/utils/dbHelpers.ts"],"sourcesContent":["export const wrapIdentifier = (value: string) => '\"' + value.replace(/\"/g, '\"\"') + '\"'\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dbHelpers.js","sources":["../../../../../packages/schema-migrations/src/utils/dbHelpers.ts"],"sourcesContent":["export const wrapIdentifier = (value: string) => '\"' + value.replace(/\"/g, '\"\"') + '\"'\n"],"names":[],"mappings":"AAAO,MAAM,iBAAiB,CAAC,UAAkB,MAAM,MAAM,QAAQ,MAAM,IAAI,IAAI;"}
|
|
@@ -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;
|
|
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;AAChD,MAAI,MAAM,QAAQ,KAAK,GAAG;AACzB,WAAO,MAAM,IAAI,QAAQ;AAAA,EAC1B,WAAW,UAAU,MAAM;AAC1B,WAAO;AAAA,EACR,WAAW,OAAO,UAAU,UAAU;AACrC,WAAO,OAAO,KAAK,KAAK,EACtB,IAAI,CAAA,OAAM,EAAE,CAAC,CAAC,GAAG,SAAU,MAAc,CAAC,CAAC,EAAA,EAAI,EAC/C,OAAO,CAAC,GAAG,MAAM,OAAO,OAAO,GAAG,CAAC,GAAG,CAAA,CAAE;AAAA,EAC3C,OAAO;AACN,WAAO;AAAA,EACR;AACD;;"}
|
|
@@ -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;
|
|
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;AAChD,MAAI,MAAM,QAAQ,KAAK,GAAG;AACzB,WAAO,MAAM,IAAI,QAAQ;AAAA,EAC1B,WAAW,UAAU,MAAM;AAC1B,WAAO;AAAA,EACR,WAAW,OAAO,UAAU,UAAU;AACrC,WAAO,OAAO,KAAK,KAAK,EACtB,IAAI,CAAA,OAAM,EAAE,CAAC,CAAC,GAAG,SAAU,MAAc,CAAC,CAAC,EAAA,EAAI,EAC/C,OAAO,CAAC,GAAG,MAAM,OAAO,OAAO,GAAG,CAAC,GAAG,CAAA,CAAE;AAAA,EAC3C,OAAO;AACN,WAAO;AAAA,EACR;AACD;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
function escapeSqlString(src) {
|
|
4
|
-
return src.replace(/\\/g, "\\\\").replace(
|
|
4
|
+
return src.replace(/\\/g, "\\\\").replace(/'/g, "''");
|
|
5
5
|
}
|
|
6
6
|
exports.escapeSqlString = escapeSqlString;
|
|
7
7
|
//# sourceMappingURL=escapeSqlString.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"escapeSqlString.cjs","sources":["../../../../../packages/schema-migrations/src/utils/escapeSqlString.ts"],"sourcesContent":["export function escapeSqlString(src: string) {\n\treturn src.replace(/\\\\/g, '\\\\\\\\').replace(
|
|
1
|
+
{"version":3,"file":"escapeSqlString.cjs","sources":["../../../../../packages/schema-migrations/src/utils/escapeSqlString.ts"],"sourcesContent":["export function escapeSqlString(src: string) {\n\treturn src.replace(/\\\\/g, '\\\\\\\\').replace(/'/g, \"''\")\n}\n"],"names":[],"mappings":";;AAAO,SAAS,gBAAgB,KAAa;AAC5C,SAAO,IAAI,QAAQ,OAAO,MAAM,EAAE,QAAQ,MAAM,IAAI;AACrD;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"escapeSqlString.js","sources":["../../../../../packages/schema-migrations/src/utils/escapeSqlString.ts"],"sourcesContent":["export function escapeSqlString(src: string) {\n\treturn src.replace(/\\\\/g, '\\\\\\\\').replace(
|
|
1
|
+
{"version":3,"file":"escapeSqlString.js","sources":["../../../../../packages/schema-migrations/src/utils/escapeSqlString.ts"],"sourcesContent":["export function escapeSqlString(src: string) {\n\treturn src.replace(/\\\\/g, '\\\\\\\\').replace(/'/g, \"''\")\n}\n"],"names":[],"mappings":"AAAO,SAAS,gBAAgB,KAAa;AAC5C,SAAO,IAAI,QAAQ,OAAO,MAAM,EAAE,QAAQ,MAAM,IAAI;AACrD;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isDefined.cjs","sources":["../../../../../packages/schema-migrations/src/utils/isDefined.ts"],"sourcesContent":["export const isDefined = <T>(value: undefined | T): value is T => value !== undefined\n"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"isDefined.cjs","sources":["../../../../../packages/schema-migrations/src/utils/isDefined.ts"],"sourcesContent":["export const isDefined = <T>(value: undefined | T): value is T => value !== undefined\n"],"names":[],"mappings":";;AAAO,MAAM,YAAY,CAAI,UAAqC,UAAU;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isDefined.js","sources":["../../../../../packages/schema-migrations/src/utils/isDefined.ts"],"sourcesContent":["export const isDefined = <T>(value: undefined | T): value is T => value !== undefined\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"isDefined.js","sources":["../../../../../packages/schema-migrations/src/utils/isDefined.ts"],"sourcesContent":["export const isDefined = <T>(value: undefined | T): value is T => value !== undefined\n"],"names":[],"mappings":"AAAO,MAAM,YAAY,CAAI,UAAqC,UAAU;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isIt.cjs","sources":["../../../../../packages/schema-migrations/src/utils/isIt.ts"],"sourcesContent":["export const isIt = <T extends object, P extends keyof T = keyof T>(val: any, property: P, value?: T[P]): val is T => {\n\tif (value !== undefined) {\n\t\treturn val[property] === value\n\t}\n\treturn val[property] !== undefined\n}\n"],"names":[],"mappings":";;AAAO,MAAM,OAAO,CAAgD,KAAU,UAAa,UAA2B;
|
|
1
|
+
{"version":3,"file":"isIt.cjs","sources":["../../../../../packages/schema-migrations/src/utils/isIt.ts"],"sourcesContent":["export const isIt = <T extends object, P extends keyof T = keyof T>(val: any, property: P, value?: T[P]): val is T => {\n\tif (value !== undefined) {\n\t\treturn val[property] === value\n\t}\n\treturn val[property] !== undefined\n}\n"],"names":[],"mappings":";;AAAO,MAAM,OAAO,CAAgD,KAAU,UAAa,UAA2B;AAIrH,SAAO,IAAI,QAAQ,MAAM;AAC1B;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isIt.js","sources":["../../../../../packages/schema-migrations/src/utils/isIt.ts"],"sourcesContent":["export const isIt = <T extends object, P extends keyof T = keyof T>(val: any, property: P, value?: T[P]): val is T => {\n\tif (value !== undefined) {\n\t\treturn val[property] === value\n\t}\n\treturn val[property] !== undefined\n}\n"],"names":[],"mappings":"AAAO,MAAM,OAAO,CAAgD,KAAU,UAAa,UAA2B;
|
|
1
|
+
{"version":3,"file":"isIt.js","sources":["../../../../../packages/schema-migrations/src/utils/isIt.ts"],"sourcesContent":["export const isIt = <T extends object, P extends keyof T = keyof T>(val: any, property: P, value?: T[P]): val is T => {\n\tif (value !== undefined) {\n\t\treturn val[property] === value\n\t}\n\treturn val[property] !== undefined\n}\n"],"names":[],"mappings":"AAAO,MAAM,OAAO,CAAgD,KAAU,UAAa,UAA2B;AAIrH,SAAO,IAAI,QAAQ,MAAM;AAC1B;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Migration.cjs","sources":["../../../../packages/schema-migrations/src/Migration.ts"],"sourcesContent":["import { SchemaValidatorSkippedErrors } from '@contember/schema-utils'\nimport crypto from 'node:crypto'\n\nexport interface MigrationInfo {\n\treadonly version: string // YYYY-MM-DD-HHIISS\n\treadonly name: string // version-label\n\treadonly formatVersion: number\n\treadonly skippedErrors?: readonly SchemaValidatorSkippedErrors[]\n}\n\ninterface Migration extends MigrationInfo {\n\treadonly modifications: readonly Migration.Modification[]\n}\n\nnamespace Migration {\n\texport type Modification<Data = { [field: string]: any }> = { modification: string } & Data\n}\n\nexport const calculateMigrationChecksum = (migration: Migration): string => {\n\tconst canonicalMigration = JSON.stringify(migration.modifications)\n\treturn crypto //\n\t\t.createHash('md5')\n\t\t.update(canonicalMigration)\n\t\t.digest('hex')\n}\n\nexport type { Migration }\n"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"Migration.cjs","sources":["../../../../packages/schema-migrations/src/Migration.ts"],"sourcesContent":["import { SchemaValidatorSkippedErrors } from '@contember/schema-utils'\nimport crypto from 'node:crypto'\n\nexport interface MigrationInfo {\n\treadonly version: string // YYYY-MM-DD-HHIISS\n\treadonly name: string // version-label\n\treadonly formatVersion: number\n\treadonly skippedErrors?: readonly SchemaValidatorSkippedErrors[]\n}\n\ninterface Migration extends MigrationInfo {\n\treadonly modifications: readonly Migration.Modification[]\n}\n\nnamespace Migration {\n\texport type Modification<Data = { [field: string]: any }> = { modification: string } & Data\n}\n\nexport const calculateMigrationChecksum = (migration: Migration): string => {\n\tconst canonicalMigration = JSON.stringify(migration.modifications)\n\treturn crypto //\n\t\t.createHash('md5')\n\t\t.update(canonicalMigration)\n\t\t.digest('hex')\n}\n\nexport type { Migration }\n"],"names":[],"mappings":";;;AAkBO,MAAM,6BAA6B,CAAC,cAAiC;AAC3E,QAAM,qBAAqB,KAAK,UAAU,UAAU,aAAa;AACjE,SAAO,OACL,WAAW,KAAK,EAChB,OAAO,kBAAkB,EACzB,OAAO,KAAK;AACf;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Migration.js","sources":["../../../../packages/schema-migrations/src/Migration.ts"],"sourcesContent":["import { SchemaValidatorSkippedErrors } from '@contember/schema-utils'\nimport crypto from 'node:crypto'\n\nexport interface MigrationInfo {\n\treadonly version: string // YYYY-MM-DD-HHIISS\n\treadonly name: string // version-label\n\treadonly formatVersion: number\n\treadonly skippedErrors?: readonly SchemaValidatorSkippedErrors[]\n}\n\ninterface Migration extends MigrationInfo {\n\treadonly modifications: readonly Migration.Modification[]\n}\n\nnamespace Migration {\n\texport type Modification<Data = { [field: string]: any }> = { modification: string } & Data\n}\n\nexport const calculateMigrationChecksum = (migration: Migration): string => {\n\tconst canonicalMigration = JSON.stringify(migration.modifications)\n\treturn crypto //\n\t\t.createHash('md5')\n\t\t.update(canonicalMigration)\n\t\t.digest('hex')\n}\n\nexport type { Migration }\n"],"names":["crypto"],"mappings":";
|
|
1
|
+
{"version":3,"file":"Migration.js","sources":["../../../../packages/schema-migrations/src/Migration.ts"],"sourcesContent":["import { SchemaValidatorSkippedErrors } from '@contember/schema-utils'\nimport crypto from 'node:crypto'\n\nexport interface MigrationInfo {\n\treadonly version: string // YYYY-MM-DD-HHIISS\n\treadonly name: string // version-label\n\treadonly formatVersion: number\n\treadonly skippedErrors?: readonly SchemaValidatorSkippedErrors[]\n}\n\ninterface Migration extends MigrationInfo {\n\treadonly modifications: readonly Migration.Modification[]\n}\n\nnamespace Migration {\n\texport type Modification<Data = { [field: string]: any }> = { modification: string } & Data\n}\n\nexport const calculateMigrationChecksum = (migration: Migration): string => {\n\tconst canonicalMigration = JSON.stringify(migration.modifications)\n\treturn crypto //\n\t\t.createHash('md5')\n\t\t.update(canonicalMigration)\n\t\t.digest('hex')\n}\n\nexport type { Migration }\n"],"names":["crypto"],"mappings":";AAkBO,MAAM,6BAA6B,CAAC,cAAiC;AAC3E,QAAM,qBAAqB,KAAK,UAAU,UAAU,aAAa;AACjE,SAAOA,gBACL,WAAW,KAAK,EAChB,OAAO,kBAAkB,EACzB,OAAO,KAAK;AACf;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MigrationDescriber.cjs","sources":["../../../../packages/schema-migrations/src/MigrationDescriber.ts"],"sourcesContent":["import {\n\tcreateEntityModification
|
|
1
|
+
{"version":3,"file":"MigrationDescriber.cjs","sources":["../../../../packages/schema-migrations/src/MigrationDescriber.ts"],"sourcesContent":["import {\n\tcreateEntityModification,\n\tcreateViewModification,\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 || modification.modification === createViewModification.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\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","createViewModification"],"mappings":";;;;;;;;;;;;AAwBO,MAAM,mBAAmB;AAAA,EAC/B,YAA6B,4BAAwD;AAAxD,SAAA,6BAAA;AAAA,EAC7B;AAAA,EAEO,qBACN,QACA,cACA,SACA,iCAAiEA,oBAAAA,qCACjC;AAChC,UAAM,sBAAsB,KAAK,2BAA2B;AAAA,MAC3D,aAAa;AAAA,MACb;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAED,QAAI;AACH,eAAS,oBAAoB,mBAAmB,EAAE,QAAQ;AAAA,IAC3D,SAAS,GAAG;AACX,UAAI,EAAE,aAAaC,WAAAA,oBAAoB;AACtC,cAAM;AAAA,MACP;AACA,YAAM,IAAIA,WAAAA,kBAAkB,EAAE,UAAU,4BAA4B,KAAK,UAAU,YAAY,CAAC;AAAA,IACjG;AACA,WAAO;AAAA,MACN;AAAA,MACA;AAAA,MACA,QAAQ,CAAAC,aAAW;AAClB,cAAM,UAAUC,mBAAAA,uBAAA;AAChB,4BAAoB,UAAU,SAASD,QAAO;AAC9C,eAAO,QAAQ,OAAA;AAAA,MAChB;AAAA,MACA,aAAa,oBAAoB,SAAS,8BAA8B;AAAA,MACxE,SAAS;AAAA,IAAA;AAAA,EAEX;AAAA,EAEO,sBAAsB,QAAgB,WAAuD;AACnG,UAAM,SAAS,CAAA;AACf,UAAM,kBAAkB,CAAA;AACxB,eAAW,gBAAgB,UAAU,eAAe;AACnD,UAAI,aAAa,iBAAiBE,kDAAyB,MAAM,aAAa,iBAAiBC,uBAAAA,uBAAuB,IAAI;AACzH,wBAAgB,KAAK,aAAa,OAAO,IAAI;AAAA,MAC9C;AACA,YAAM,cAAc,KAAK;AAAA,QACxB;AAAA,QACA;AAAA,QACA;AAAA,UACC,eAAe,UAAU;AAAA,QAAA;AAAA,QAE1B;AAAA,UACC;AAAA,QAAA;AAAA,MACD;AAED,eAAS,YAAY;AACrB,aAAO,KAAK,WAAW;AAAA,IACxB;AACA,WAAO;AAAA,EACR;AACD;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MigrationDescriber.js","sources":["../../../../packages/schema-migrations/src/MigrationDescriber.ts"],"sourcesContent":["import {\n\tcreateEntityModification
|
|
1
|
+
{"version":3,"file":"MigrationDescriber.js","sources":["../../../../packages/schema-migrations/src/MigrationDescriber.ts"],"sourcesContent":["import {\n\tcreateEntityModification,\n\tcreateViewModification,\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 || modification.modification === createViewModification.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\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":";;;;;;;;;;AAwBO,MAAM,mBAAmB;AAAA,EAC/B,YAA6B,4BAAwD;AAAxD,SAAA,6BAAA;AAAA,EAC7B;AAAA,EAEO,qBACN,QACA,cACA,SACA,iCAAiE,qCACjC;AAChC,UAAM,sBAAsB,KAAK,2BAA2B;AAAA,MAC3D,aAAa;AAAA,MACb;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAED,QAAI;AACH,eAAS,oBAAoB,mBAAmB,EAAE,QAAQ;AAAA,IAC3D,SAAS,GAAG;AACX,UAAI,EAAE,aAAa,oBAAoB;AACtC,cAAM;AAAA,MACP;AACA,YAAM,IAAI,kBAAkB,EAAE,UAAU,4BAA4B,KAAK,UAAU,YAAY,CAAC;AAAA,IACjG;AACA,WAAO;AAAA,MACN;AAAA,MACA;AAAA,MACA,QAAQ,CAAAA,aAAW;AAClB,cAAM,UAAU,uBAAA;AAChB,4BAAoB,UAAU,SAASA,QAAO;AAC9C,eAAO,QAAQ,OAAA;AAAA,MAChB;AAAA,MACA,aAAa,oBAAoB,SAAS,8BAA8B;AAAA,MACxE,SAAS;AAAA,IAAA;AAAA,EAEX;AAAA,EAEO,sBAAsB,QAAgB,WAAuD;AACnG,UAAM,SAAS,CAAA;AACf,UAAM,kBAAkB,CAAA;AACxB,eAAW,gBAAgB,UAAU,eAAe;AACnD,UAAI,aAAa,iBAAiB,yBAAyB,MAAM,aAAa,iBAAiB,uBAAuB,IAAI;AACzH,wBAAgB,KAAK,aAAa,OAAO,IAAI;AAAA,MAC9C;AACA,YAAM,cAAc,KAAK;AAAA,QACxB;AAAA,QACA;AAAA,QACA;AAAA,UACC,eAAe,UAAU;AAAA,QAAA;AAAA,QAE1B;AAAA,UACC;AAAA,QAAA;AAAA,MACD;AAED,eAAS,YAAY;AACrB,aAAO,KAAK,WAAW;AAAA,IACxB;AACA,WAAO;AAAA,EACR;AACD;"}
|
|
@@ -105,7 +105,7 @@ class SchemaDiffer {
|
|
|
105
105
|
new UpdateEntityOrderByModification.UpdateEntityOrderByDiffer(),
|
|
106
106
|
new UpdateTargetModification.UpdateTargetDiffer(),
|
|
107
107
|
new CreateTargetModification.CreateTargetDiffer(),
|
|
108
|
-
new UpdateTriggerModification.UpdateTriggerDiffer(),
|
|
108
|
+
new UpdateTriggerModification.UpdateTriggerDiffer(this.options),
|
|
109
109
|
new CreateTriggerModification.CreateTriggerDiffer(),
|
|
110
110
|
new RemoveTriggerModification.RemoveTriggerDiffer(),
|
|
111
111
|
new RemoveTargetModification.RemoveTargetDiffer()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaDiffer.cjs","sources":["../../../../packages/schema-migrations/src/SchemaDiffer.ts"],"sourcesContent":["import { Schema } from '@contember/schema'\nimport {
|
|
1
|
+
{"version":3,"file":"SchemaDiffer.cjs","sources":["../../../../packages/schema-migrations/src/SchemaDiffer.ts"],"sourcesContent":["import { Schema } from '@contember/schema'\nimport {\n\tcompareArraysIgnoreOrder,\n\tdeepCompare,\n\tisInverseRelation,\n\tisOwningRelation,\n\tisRelation,\n\tSchemaValidator,\n\tValidationError,\n} from '@contember/schema-utils'\nimport { SchemaMigrator } from './SchemaMigrator'\nimport { Migration } from './Migration'\nimport { ImplementationException } from './exceptions'\nimport {\n\tConvertOneHasManyToManyHasManyRelationDiffer,\n\tConvertOneToManyRelationDiffer,\n\tCreateColumnDiffer,\n\tCreateEntityDiffer,\n\tCreateEnumDiffer,\n\tCreateRelationDiffer,\n\tCreateRelationInverseSideDiffer,\n\tCreateUniqueConstraintDiffer,\n\tCreateViewDiffer,\n\tDiffer,\n\tDisableOrphanRemovalDiffer,\n\tEnableOrphanRemovalDiffer,\n\tMakeRelationNotNullDiffer,\n\tMakeRelationNullableDiffer,\n\tRemoveEntityDiffer,\n\tRemoveEnumDiffer,\n\tRemoveFieldDiffer,\n\tRemoveUniqueConstraintDiffer,\n\tToggleEventLogDiffer,\n\tToggleJunctionEventLogDiffer,\n\tUpdateAclSchemaDiffer,\n\tUpdateColumnDefinitionDiffer,\n\tUpdateColumnNameDiffer,\n\tUpdateEntityOrderByDiffer,\n\tUpdateEntityTableNameDiffer,\n\tUpdateEnumDiffer,\n\tUpdateRelationOnDeleteDiffer,\n\tUpdateRelationOrderByDiffer,\n\tUpdateValidationSchemaDiffer,\n\tVERSION_LATEST,\n} from './modifications'\nimport { RemoveChangedFieldDiffer, RemoveViewDiffer } from './modifications/differs'\nimport { CreateIndexDiffer, RemoveIndexDiffer } from './modifications/indexes'\nimport { CreateTriggerDiffer, RemoveTriggerDiffer, UpdateTriggerDiffer } from './modifications/actions'\nimport { UpdateTargetDiffer } from './modifications/actions/UpdateTargetModification'\nimport { CreateTargetDiffer } from './modifications/actions/CreateTargetModification'\nimport { RemoveTargetDiffer } from './modifications/actions/RemoveTargetModification'\nimport { UpdateSettingsDiffer } from './modifications/settings'\nimport { RemoveIndexNamesDiffer } from './modifications/upgrade/RemoveIndexNamesModification'\nimport { ConvertOneHasManyToOneHasOneRelationDiffer } from './modifications/relations/ConvertOneHasManyToOneHasOneRelationModification'\n\ntype DiffOptions = { skipRecreateValidation?: boolean; skipInitialSchemaValidation?: boolean }\n\nexport class SchemaDiffer {\n\tconstructor(\n\t\tprivate readonly schemaMigrator: SchemaMigrator,\n\t\tprivate readonly options?: {\n\t\t\tmaxPatchSize?: number\n\t\t},\n\t) {}\n\n\tdiffSchemas(originalSchema: Schema, updatedSchema: Schema, {\n\t\tskipInitialSchemaValidation = false,\n\t\tskipRecreateValidation = false,\n\t}: DiffOptions = {}): Migration.Modification[] {\n\t\tif (!skipInitialSchemaValidation) {\n\t\t\tconst originalErrors = SchemaValidator.validate(originalSchema)\n\t\t\tif (originalErrors.length > 0) {\n\t\t\t\tthrow new InvalidSchemaException('original schema is not valid', originalErrors)\n\t\t\t}\n\t\t}\n\t\tconst updatedErrors = SchemaValidator.validate(updatedSchema)\n\t\tif (updatedErrors.length > 0) {\n\t\t\tthrow new InvalidSchemaException('updated schema is not valid', updatedErrors)\n\t\t}\n\n\t\tconst differs: Differ[] = [\n\t\t\tnew RemoveIndexNamesDiffer(),\n\t\t\tnew UpdateSettingsDiffer(),\n\t\t\tnew ConvertOneToManyRelationDiffer(),\n\t\t\tnew ConvertOneHasManyToManyHasManyRelationDiffer(),\n\t\t\tnew ConvertOneHasManyToOneHasOneRelationDiffer(),\n\t\t\tnew RemoveUniqueConstraintDiffer(),\n\t\t\tnew RemoveIndexDiffer(),\n\t\t\tnew RemoveViewDiffer(),\n\t\t\tnew RemoveEntityDiffer(),\n\t\t\tnew RemoveFieldDiffer(),\n\t\t\tnew CreateEnumDiffer(),\n\t\t\tnew UpdateEntityTableNameDiffer(),\n\t\t\tnew ToggleEventLogDiffer(),\n\t\t\tnew ToggleJunctionEventLogDiffer(),\n\t\t\tnew UpdateColumnDefinitionDiffer(),\n\t\t\tnew UpdateColumnNameDiffer(),\n\t\t\tnew UpdateRelationOnDeleteDiffer(),\n\t\t\tnew MakeRelationNotNullDiffer(),\n\t\t\tnew MakeRelationNullableDiffer(),\n\t\t\tnew EnableOrphanRemovalDiffer(),\n\t\t\tnew DisableOrphanRemovalDiffer(),\n\t\t\tnew UpdateRelationOrderByDiffer(),\n\t\t\tnew UpdateEnumDiffer(),\n\t\t\tnew RemoveChangedFieldDiffer(it => !isRelation(it) || isOwningRelation(it)),\n\t\t\tnew RemoveChangedFieldDiffer(it => isRelation(it) && isInverseRelation(it)),\n\t\t\tnew CreateEntityDiffer(),\n\t\t\tnew CreateColumnDiffer(),\n\t\t\tnew CreateRelationDiffer(),\n\t\t\tnew CreateViewDiffer(),\n\t\t\tnew CreateRelationInverseSideDiffer(),\n\t\t\tnew CreateUniqueConstraintDiffer(),\n\t\t\tnew CreateIndexDiffer(),\n\t\t\tnew RemoveEnumDiffer(),\n\t\t\tnew UpdateAclSchemaDiffer(this.options),\n\t\t\tnew UpdateValidationSchemaDiffer(this.options),\n\t\t\tnew UpdateEntityOrderByDiffer(),\n\t\t\tnew UpdateTargetDiffer(),\n\t\t\tnew CreateTargetDiffer(),\n\t\t\tnew UpdateTriggerDiffer(this.options),\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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"}
|