@contember/schema-definition 2.1.0-alpha.9 → 2.1.0-beta.1
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 +64 -0
- package/dist/development/index.cjs +33 -33
- package/dist/development/index.cjs.map +1 -1
- package/dist/development/index.js +25 -25
- package/dist/development/index.js.map +1 -1
- package/dist/development/src/acl/builder/EntityPermissionsBuilder.cjs.map +1 -1
- package/dist/development/src/acl/builder/EntityPermissionsBuilder.js.map +1 -1
- package/dist/development/src/acl/builder/EntitySelector.cjs.map +1 -1
- package/dist/development/src/acl/builder/EntitySelector.js.map +1 -1
- package/dist/development/src/acl/builder/FieldPermissionsBuilder.cjs.map +1 -1
- package/dist/development/src/acl/builder/FieldPermissionsBuilder.js.map +1 -1
- package/dist/development/src/acl/builder/FieldSelector.cjs.map +1 -1
- package/dist/development/src/acl/builder/FieldSelector.js.map +1 -1
- package/dist/development/src/acl/builder/PermissionOverrider.cjs.map +1 -1
- package/dist/development/src/acl/builder/PermissionOverrider.js.map +1 -1
- package/dist/development/src/acl/builder/PermissionsBuilder.cjs +1 -3
- package/dist/development/src/acl/builder/PermissionsBuilder.cjs.map +1 -1
- package/dist/development/src/acl/builder/PermissionsBuilder.js +1 -3
- package/dist/development/src/acl/builder/PermissionsBuilder.js.map +1 -1
- package/dist/development/src/acl/builder/PredicateReference.cjs.map +1 -1
- package/dist/development/src/acl/builder/PredicateReference.js.map +1 -1
- package/dist/development/src/acl/definition/aclExtensions.cjs +2 -2
- package/dist/development/src/acl/definition/aclExtensions.cjs.map +1 -1
- package/dist/development/src/acl/definition/aclExtensions.js +2 -2
- package/dist/development/src/acl/definition/aclExtensions.js.map +1 -1
- package/dist/development/src/acl/definition/customPrimary.cjs +1 -1
- package/dist/development/src/acl/definition/customPrimary.cjs.map +1 -1
- package/dist/development/src/acl/definition/customPrimary.js +1 -1
- package/dist/development/src/acl/definition/customPrimary.js.map +1 -1
- package/dist/development/src/acl/definition/index.cjs.map +1 -1
- package/dist/development/src/acl/definition/index.js.map +1 -1
- package/dist/development/src/acl/definition/internal/AclFactory.cjs +24 -16
- package/dist/development/src/acl/definition/internal/AclFactory.cjs.map +1 -1
- package/dist/development/src/acl/definition/internal/AclFactory.js +24 -16
- package/dist/development/src/acl/definition/internal/AclFactory.js.map +1 -1
- package/dist/development/src/acl/definition/internal/EntityPredicateResolver.cjs.map +1 -1
- package/dist/development/src/acl/definition/internal/EntityPredicateResolver.js.map +1 -1
- package/dist/development/src/acl/definition/internal/createPredicateName.cjs.map +1 -1
- package/dist/development/src/acl/definition/internal/createPredicateName.js.map +1 -1
- package/dist/development/src/acl/definition/internal/stores.cjs.map +1 -1
- package/dist/development/src/acl/definition/internal/stores.js.map +1 -1
- package/dist/development/src/acl/definition/permissions.cjs +5 -2
- package/dist/development/src/acl/definition/permissions.cjs.map +1 -1
- package/dist/development/src/acl/definition/permissions.js +5 -2
- package/dist/development/src/acl/definition/permissions.js.map +1 -1
- package/dist/development/src/acl/definition/references.cjs.map +1 -1
- package/dist/development/src/acl/definition/references.js.map +1 -1
- package/dist/development/src/acl/definition/roles.cjs.map +1 -1
- package/dist/development/src/acl/definition/roles.js.map +1 -1
- package/dist/development/src/acl/definition/variables.cjs.map +1 -1
- package/dist/development/src/acl/definition/variables.js.map +1 -1
- package/dist/development/src/actions/definition/index.cjs.map +1 -1
- package/dist/development/src/actions/definition/index.js.map +1 -1
- package/dist/development/src/actions/definition/internal/ActionsFactory.cjs +8 -7
- package/dist/development/src/actions/definition/internal/ActionsFactory.cjs.map +1 -1
- package/dist/development/src/actions/definition/internal/ActionsFactory.js +8 -7
- package/dist/development/src/actions/definition/internal/ActionsFactory.js.map +1 -1
- package/dist/development/src/actions/definition/internal/store.cjs.map +1 -1
- package/dist/development/src/actions/definition/internal/store.js.map +1 -1
- package/dist/development/src/actions/definition/targets.cjs.map +1 -1
- package/dist/development/src/actions/definition/targets.js.map +1 -1
- package/dist/development/src/actions/definition/triggers.cjs +4 -4
- package/dist/development/src/actions/definition/triggers.cjs.map +1 -1
- package/dist/development/src/actions/definition/triggers.js +4 -4
- package/dist/development/src/actions/definition/triggers.js.map +1 -1
- package/dist/development/src/createSchema.cjs.map +1 -1
- package/dist/development/src/createSchema.js.map +1 -1
- package/dist/development/src/model/builder/ColumnBuilder.cjs +7 -5
- package/dist/development/src/model/builder/ColumnBuilder.cjs.map +1 -1
- package/dist/development/src/model/builder/ColumnBuilder.js +7 -5
- package/dist/development/src/model/builder/ColumnBuilder.js.map +1 -1
- package/dist/development/src/model/builder/EntityBuilder.cjs.map +1 -1
- package/dist/development/src/model/builder/EntityBuilder.js.map +1 -1
- package/dist/development/src/model/builder/FieldBuilder.cjs +4 -4
- package/dist/development/src/model/builder/FieldBuilder.cjs.map +1 -1
- package/dist/development/src/model/builder/FieldBuilder.js.map +1 -1
- package/dist/development/src/model/builder/ManyHasManyBuilder.cjs.map +1 -1
- package/dist/development/src/model/builder/ManyHasManyBuilder.js.map +1 -1
- package/dist/development/src/model/builder/ManyHasOneBuilder.cjs.map +1 -1
- package/dist/development/src/model/builder/ManyHasOneBuilder.js.map +1 -1
- package/dist/development/src/model/builder/OneHasManyBuilder.cjs.map +1 -1
- package/dist/development/src/model/builder/OneHasManyBuilder.js.map +1 -1
- package/dist/development/src/model/builder/OneHasOneBuilder.cjs.map +1 -1
- package/dist/development/src/model/builder/OneHasOneBuilder.js.map +1 -1
- package/dist/development/src/model/builder/SchemaBuilder.cjs.map +1 -1
- package/dist/development/src/model/builder/SchemaBuilder.js.map +1 -1
- package/dist/development/src/model/builder/SchemaBuilderInternal.cjs.map +1 -1
- package/dist/development/src/model/builder/SchemaBuilderInternal.js.map +1 -1
- package/dist/development/src/model/builder/internal/ColumnProcessor.cjs.map +1 -1
- package/dist/development/src/model/builder/internal/ColumnProcessor.js.map +1 -1
- package/dist/development/src/model/builder/internal/ManyHasManyProcessor.cjs.map +1 -1
- package/dist/development/src/model/builder/internal/ManyHasManyProcessor.js.map +1 -1
- package/dist/development/src/model/builder/internal/ManyHasOneProcessor.cjs.map +1 -1
- package/dist/development/src/model/builder/internal/ManyHasOneProcessor.js.map +1 -1
- package/dist/development/src/model/builder/internal/OneHasManyProcessor.cjs.map +1 -1
- package/dist/development/src/model/builder/internal/OneHasManyProcessor.js.map +1 -1
- package/dist/development/src/model/builder/internal/OneHasOneProcessor.cjs.map +1 -1
- package/dist/development/src/model/builder/internal/OneHasOneProcessor.js.map +1 -1
- package/dist/development/src/model/definition/EnumDefinition.cjs.map +1 -1
- package/dist/development/src/model/definition/EnumDefinition.js.map +1 -1
- package/dist/development/src/model/definition/EventLogDefinition.cjs.map +1 -1
- package/dist/development/src/model/definition/EventLogDefinition.js.map +1 -1
- package/dist/development/src/model/definition/IndexDefinition.cjs +2 -2
- package/dist/development/src/model/definition/IndexDefinition.cjs.map +1 -1
- package/dist/development/src/model/definition/IndexDefinition.js +2 -2
- package/dist/development/src/model/definition/IndexDefinition.js.map +1 -1
- package/dist/development/src/model/definition/OrderByDefinition.cjs +3 -1
- package/dist/development/src/model/definition/OrderByDefinition.cjs.map +1 -1
- package/dist/development/src/model/definition/OrderByDefinition.js +3 -1
- package/dist/development/src/model/definition/OrderByDefinition.js.map +1 -1
- package/dist/development/src/model/definition/UniqueDefinition.cjs.map +1 -1
- package/dist/development/src/model/definition/UniqueDefinition.js.map +1 -1
- package/dist/development/src/model/definition/ViewDefinition.cjs.map +1 -1
- package/dist/development/src/model/definition/ViewDefinition.js.map +1 -1
- package/dist/development/src/model/definition/extensions.cjs +2 -2
- package/dist/development/src/model/definition/extensions.cjs.map +1 -1
- package/dist/development/src/model/definition/extensions.js +2 -2
- package/dist/development/src/model/definition/extensions.js.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/ColumnDefinition.cjs +12 -1
- package/dist/development/src/model/definition/fieldDefinitions/ColumnDefinition.cjs.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/ColumnDefinition.js +12 -1
- package/dist/development/src/model/definition/fieldDefinitions/ColumnDefinition.js.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/FieldDefinition.cjs.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/FieldDefinition.js.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/ManyHasManyDefinition.cjs.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/ManyHasManyDefinition.js.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/ManyHasManyInverseDefinition.cjs.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/ManyHasManyInverseDefinition.js.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/ManyHasOneDefinition.cjs.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/ManyHasOneDefinition.js.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/OneHasManyDefinition.cjs.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/OneHasManyDefinition.js.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/OneHasOneDefinition.cjs.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/OneHasOneDefinition.js.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/OneHasOneInverseDefinition.cjs.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/OneHasOneInverseDefinition.js.map +1 -1
- package/dist/development/src/model/definition/index.cjs.map +1 -1
- package/dist/development/src/model/definition/index.js.map +1 -1
- package/dist/development/src/model/definition/internal/EntityRegistry.cjs.map +1 -1
- package/dist/development/src/model/definition/internal/EntityRegistry.js.map +1 -1
- package/dist/development/src/model/definition/internal/EnumRegistry.cjs.map +1 -1
- package/dist/development/src/model/definition/internal/EnumRegistry.js.map +1 -1
- package/dist/development/src/model/definition/internal/SchemaBuilder.cjs.map +1 -1
- package/dist/development/src/model/definition/internal/SchemaBuilder.js.map +1 -1
- package/dist/development/src/presets.cjs.map +1 -1
- package/dist/development/src/presets.js.map +1 -1
- package/dist/development/src/strict.cjs +3 -1
- package/dist/development/src/strict.cjs.map +1 -1
- package/dist/development/src/strict.js +3 -1
- package/dist/development/src/strict.js.map +1 -1
- package/dist/development/src/utils/MetadataStore.cjs +16 -4
- package/dist/development/src/utils/MetadataStore.cjs.map +1 -1
- package/dist/development/src/utils/MetadataStore.js +16 -4
- package/dist/development/src/utils/MetadataStore.js.map +1 -1
- package/dist/development/src/utils/assertNever.cjs.map +1 -1
- package/dist/development/src/utils/assertNever.js.map +1 -1
- package/dist/development/src/utils/filterEntityDefinition.cjs.map +1 -1
- package/dist/development/src/utils/filterEntityDefinition.js.map +1 -1
- package/dist/development/src/utils/tuple.cjs.map +1 -1
- package/dist/development/src/utils/tuple.js.map +1 -1
- package/dist/development/src/validation/index.cjs +25 -11
- package/dist/development/src/validation/index.cjs.map +1 -1
- package/dist/development/src/validation/index.js +25 -11
- package/dist/development/src/validation/index.js.map +1 -1
- package/dist/production/index.cjs +33 -33
- package/dist/production/index.cjs.map +1 -1
- package/dist/production/index.js +25 -25
- package/dist/production/index.js.map +1 -1
- package/dist/production/src/acl/builder/EntityPermissionsBuilder.cjs.map +1 -1
- package/dist/production/src/acl/builder/EntityPermissionsBuilder.js.map +1 -1
- package/dist/production/src/acl/builder/EntitySelector.cjs.map +1 -1
- package/dist/production/src/acl/builder/EntitySelector.js.map +1 -1
- package/dist/production/src/acl/builder/FieldPermissionsBuilder.cjs.map +1 -1
- package/dist/production/src/acl/builder/FieldPermissionsBuilder.js.map +1 -1
- package/dist/production/src/acl/builder/FieldSelector.cjs.map +1 -1
- package/dist/production/src/acl/builder/FieldSelector.js.map +1 -1
- package/dist/production/src/acl/builder/PermissionOverrider.cjs.map +1 -1
- package/dist/production/src/acl/builder/PermissionOverrider.js.map +1 -1
- package/dist/production/src/acl/builder/PermissionsBuilder.cjs +1 -3
- package/dist/production/src/acl/builder/PermissionsBuilder.cjs.map +1 -1
- package/dist/production/src/acl/builder/PermissionsBuilder.js +1 -3
- package/dist/production/src/acl/builder/PermissionsBuilder.js.map +1 -1
- package/dist/production/src/acl/builder/PredicateReference.cjs.map +1 -1
- package/dist/production/src/acl/builder/PredicateReference.js.map +1 -1
- package/dist/production/src/acl/definition/aclExtensions.cjs +2 -2
- package/dist/production/src/acl/definition/aclExtensions.cjs.map +1 -1
- package/dist/production/src/acl/definition/aclExtensions.js +2 -2
- package/dist/production/src/acl/definition/aclExtensions.js.map +1 -1
- package/dist/production/src/acl/definition/customPrimary.cjs +1 -1
- package/dist/production/src/acl/definition/customPrimary.cjs.map +1 -1
- package/dist/production/src/acl/definition/customPrimary.js +1 -1
- package/dist/production/src/acl/definition/customPrimary.js.map +1 -1
- package/dist/production/src/acl/definition/index.cjs.map +1 -1
- package/dist/production/src/acl/definition/index.js.map +1 -1
- package/dist/production/src/acl/definition/internal/AclFactory.cjs +24 -16
- package/dist/production/src/acl/definition/internal/AclFactory.cjs.map +1 -1
- package/dist/production/src/acl/definition/internal/AclFactory.js +24 -16
- package/dist/production/src/acl/definition/internal/AclFactory.js.map +1 -1
- package/dist/production/src/acl/definition/internal/EntityPredicateResolver.cjs.map +1 -1
- package/dist/production/src/acl/definition/internal/EntityPredicateResolver.js.map +1 -1
- package/dist/production/src/acl/definition/internal/createPredicateName.cjs.map +1 -1
- package/dist/production/src/acl/definition/internal/createPredicateName.js.map +1 -1
- package/dist/production/src/acl/definition/internal/stores.cjs.map +1 -1
- package/dist/production/src/acl/definition/internal/stores.js.map +1 -1
- package/dist/production/src/acl/definition/permissions.cjs +5 -2
- package/dist/production/src/acl/definition/permissions.cjs.map +1 -1
- package/dist/production/src/acl/definition/permissions.js +5 -2
- package/dist/production/src/acl/definition/permissions.js.map +1 -1
- package/dist/production/src/acl/definition/references.cjs.map +1 -1
- package/dist/production/src/acl/definition/references.js.map +1 -1
- package/dist/production/src/acl/definition/roles.cjs.map +1 -1
- package/dist/production/src/acl/definition/roles.js.map +1 -1
- package/dist/production/src/acl/definition/variables.cjs.map +1 -1
- package/dist/production/src/acl/definition/variables.js.map +1 -1
- package/dist/production/src/actions/definition/index.cjs.map +1 -1
- package/dist/production/src/actions/definition/index.js.map +1 -1
- package/dist/production/src/actions/definition/internal/ActionsFactory.cjs +8 -7
- package/dist/production/src/actions/definition/internal/ActionsFactory.cjs.map +1 -1
- package/dist/production/src/actions/definition/internal/ActionsFactory.js +8 -7
- package/dist/production/src/actions/definition/internal/ActionsFactory.js.map +1 -1
- package/dist/production/src/actions/definition/internal/store.cjs.map +1 -1
- package/dist/production/src/actions/definition/internal/store.js.map +1 -1
- package/dist/production/src/actions/definition/targets.cjs.map +1 -1
- package/dist/production/src/actions/definition/targets.js.map +1 -1
- package/dist/production/src/actions/definition/triggers.cjs +4 -4
- package/dist/production/src/actions/definition/triggers.cjs.map +1 -1
- package/dist/production/src/actions/definition/triggers.js +4 -4
- package/dist/production/src/actions/definition/triggers.js.map +1 -1
- package/dist/production/src/createSchema.cjs.map +1 -1
- package/dist/production/src/createSchema.js.map +1 -1
- package/dist/production/src/model/builder/ColumnBuilder.cjs +7 -5
- package/dist/production/src/model/builder/ColumnBuilder.cjs.map +1 -1
- package/dist/production/src/model/builder/ColumnBuilder.js +7 -5
- package/dist/production/src/model/builder/ColumnBuilder.js.map +1 -1
- package/dist/production/src/model/builder/EntityBuilder.cjs.map +1 -1
- package/dist/production/src/model/builder/EntityBuilder.js.map +1 -1
- package/dist/production/src/model/builder/FieldBuilder.cjs +4 -4
- package/dist/production/src/model/builder/FieldBuilder.cjs.map +1 -1
- package/dist/production/src/model/builder/FieldBuilder.js.map +1 -1
- package/dist/production/src/model/builder/ManyHasManyBuilder.cjs.map +1 -1
- package/dist/production/src/model/builder/ManyHasManyBuilder.js.map +1 -1
- package/dist/production/src/model/builder/ManyHasOneBuilder.cjs.map +1 -1
- package/dist/production/src/model/builder/ManyHasOneBuilder.js.map +1 -1
- package/dist/production/src/model/builder/OneHasManyBuilder.cjs.map +1 -1
- package/dist/production/src/model/builder/OneHasManyBuilder.js.map +1 -1
- package/dist/production/src/model/builder/OneHasOneBuilder.cjs.map +1 -1
- package/dist/production/src/model/builder/OneHasOneBuilder.js.map +1 -1
- package/dist/production/src/model/builder/SchemaBuilder.cjs.map +1 -1
- package/dist/production/src/model/builder/SchemaBuilder.js.map +1 -1
- package/dist/production/src/model/builder/SchemaBuilderInternal.cjs.map +1 -1
- package/dist/production/src/model/builder/SchemaBuilderInternal.js.map +1 -1
- package/dist/production/src/model/builder/internal/ColumnProcessor.cjs.map +1 -1
- package/dist/production/src/model/builder/internal/ColumnProcessor.js.map +1 -1
- package/dist/production/src/model/builder/internal/ManyHasManyProcessor.cjs.map +1 -1
- package/dist/production/src/model/builder/internal/ManyHasManyProcessor.js.map +1 -1
- package/dist/production/src/model/builder/internal/ManyHasOneProcessor.cjs.map +1 -1
- package/dist/production/src/model/builder/internal/ManyHasOneProcessor.js.map +1 -1
- package/dist/production/src/model/builder/internal/OneHasManyProcessor.cjs.map +1 -1
- package/dist/production/src/model/builder/internal/OneHasManyProcessor.js.map +1 -1
- package/dist/production/src/model/builder/internal/OneHasOneProcessor.cjs.map +1 -1
- package/dist/production/src/model/builder/internal/OneHasOneProcessor.js.map +1 -1
- package/dist/production/src/model/definition/EnumDefinition.cjs.map +1 -1
- package/dist/production/src/model/definition/EnumDefinition.js.map +1 -1
- package/dist/production/src/model/definition/EventLogDefinition.cjs.map +1 -1
- package/dist/production/src/model/definition/EventLogDefinition.js.map +1 -1
- package/dist/production/src/model/definition/IndexDefinition.cjs +2 -2
- package/dist/production/src/model/definition/IndexDefinition.cjs.map +1 -1
- package/dist/production/src/model/definition/IndexDefinition.js +2 -2
- package/dist/production/src/model/definition/IndexDefinition.js.map +1 -1
- package/dist/production/src/model/definition/OrderByDefinition.cjs +3 -1
- package/dist/production/src/model/definition/OrderByDefinition.cjs.map +1 -1
- package/dist/production/src/model/definition/OrderByDefinition.js +3 -1
- package/dist/production/src/model/definition/OrderByDefinition.js.map +1 -1
- package/dist/production/src/model/definition/UniqueDefinition.cjs.map +1 -1
- package/dist/production/src/model/definition/UniqueDefinition.js.map +1 -1
- package/dist/production/src/model/definition/ViewDefinition.cjs.map +1 -1
- package/dist/production/src/model/definition/ViewDefinition.js.map +1 -1
- package/dist/production/src/model/definition/extensions.cjs +2 -2
- package/dist/production/src/model/definition/extensions.cjs.map +1 -1
- package/dist/production/src/model/definition/extensions.js +2 -2
- package/dist/production/src/model/definition/extensions.js.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/ColumnDefinition.cjs +12 -1
- package/dist/production/src/model/definition/fieldDefinitions/ColumnDefinition.cjs.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/ColumnDefinition.js +12 -1
- package/dist/production/src/model/definition/fieldDefinitions/ColumnDefinition.js.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/FieldDefinition.cjs.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/FieldDefinition.js.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/ManyHasManyDefinition.cjs.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/ManyHasManyDefinition.js.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/ManyHasManyInverseDefinition.cjs.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/ManyHasManyInverseDefinition.js.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/ManyHasOneDefinition.cjs.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/ManyHasOneDefinition.js.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/OneHasManyDefinition.cjs.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/OneHasManyDefinition.js.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/OneHasOneDefinition.cjs.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/OneHasOneDefinition.js.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/OneHasOneInverseDefinition.cjs.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/OneHasOneInverseDefinition.js.map +1 -1
- package/dist/production/src/model/definition/index.cjs.map +1 -1
- package/dist/production/src/model/definition/index.js.map +1 -1
- package/dist/production/src/model/definition/internal/EntityRegistry.cjs.map +1 -1
- package/dist/production/src/model/definition/internal/EntityRegistry.js.map +1 -1
- package/dist/production/src/model/definition/internal/EnumRegistry.cjs.map +1 -1
- package/dist/production/src/model/definition/internal/EnumRegistry.js.map +1 -1
- package/dist/production/src/model/definition/internal/SchemaBuilder.cjs.map +1 -1
- package/dist/production/src/model/definition/internal/SchemaBuilder.js.map +1 -1
- package/dist/production/src/presets.cjs.map +1 -1
- package/dist/production/src/presets.js.map +1 -1
- package/dist/production/src/strict.cjs +3 -1
- package/dist/production/src/strict.cjs.map +1 -1
- package/dist/production/src/strict.js +3 -1
- package/dist/production/src/strict.js.map +1 -1
- package/dist/production/src/utils/MetadataStore.cjs +16 -4
- package/dist/production/src/utils/MetadataStore.cjs.map +1 -1
- package/dist/production/src/utils/MetadataStore.js +16 -4
- package/dist/production/src/utils/MetadataStore.js.map +1 -1
- package/dist/production/src/utils/assertNever.cjs.map +1 -1
- package/dist/production/src/utils/assertNever.js.map +1 -1
- package/dist/production/src/utils/filterEntityDefinition.cjs.map +1 -1
- package/dist/production/src/utils/filterEntityDefinition.js.map +1 -1
- package/dist/production/src/utils/tuple.cjs.map +1 -1
- package/dist/production/src/utils/tuple.js.map +1 -1
- package/dist/production/src/validation/index.cjs +25 -11
- package/dist/production/src/validation/index.cjs.map +1 -1
- package/dist/production/src/validation/index.js +25 -11
- package/dist/production/src/validation/index.js.map +1 -1
- package/dist/tests/tsconfig.tsbuildinfo +1 -1
- package/dist/types/acl/builder/PermissionOverrider.d.ts.map +1 -1
- package/dist/types/acl/builder/PermissionsBuilder.d.ts.map +1 -1
- package/dist/types/acl/definition/aclExtensions.d.ts.map +1 -1
- package/dist/types/acl/definition/internal/AclFactory.d.ts +1 -1
- package/dist/types/acl/definition/internal/AclFactory.d.ts.map +1 -1
- package/dist/types/acl/definition/internal/EntityPredicateResolver.d.ts.map +1 -1
- package/dist/types/acl/definition/internal/stores.d.ts +4 -3
- package/dist/types/acl/definition/internal/stores.d.ts.map +1 -1
- package/dist/types/acl/definition/permissions.d.ts +7 -2
- package/dist/types/acl/definition/permissions.d.ts.map +1 -1
- package/dist/types/acl/definition/variables.d.ts.map +1 -1
- package/dist/types/actions/definition/index.d.ts.map +1 -1
- package/dist/types/actions/definition/internal/ActionsFactory.d.ts +0 -1
- package/dist/types/actions/definition/internal/ActionsFactory.d.ts.map +1 -1
- package/dist/types/actions/definition/targets.d.ts.map +1 -1
- package/dist/types/actions/definition/triggers.d.ts +1 -0
- package/dist/types/actions/definition/triggers.d.ts.map +1 -1
- package/dist/types/createSchema.d.ts.map +1 -1
- package/dist/types/index.d.ts +3 -3
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/model/builder/ColumnBuilder.d.ts.map +1 -1
- package/dist/types/model/builder/internal/ColumnProcessor.d.ts.map +1 -1
- package/dist/types/model/definition/IndexDefinition.d.ts +2 -0
- package/dist/types/model/definition/IndexDefinition.d.ts.map +1 -1
- package/dist/types/model/definition/OrderByDefinition.d.ts.map +1 -1
- package/dist/types/model/definition/UniqueDefinition.d.ts +1 -0
- package/dist/types/model/definition/UniqueDefinition.d.ts.map +1 -1
- package/dist/types/model/definition/fieldDefinitions/ColumnDefinition.d.ts.map +1 -1
- package/dist/types/model/definition/fieldDefinitions/FieldDefinition.d.ts.map +1 -1
- package/dist/types/model/definition/fieldDefinitions/ManyHasManyDefinition.d.ts.map +1 -1
- package/dist/types/model/definition/fieldDefinitions/ManyHasManyInverseDefinition.d.ts.map +1 -1
- package/dist/types/model/definition/fieldDefinitions/ManyHasOneDefinition.d.ts.map +1 -1
- package/dist/types/model/definition/fieldDefinitions/OneHasManyDefinition.d.ts.map +1 -1
- package/dist/types/model/definition/fieldDefinitions/OneHasOneDefinition.d.ts.map +1 -1
- package/dist/types/model/definition/fieldDefinitions/OneHasOneInverseDefinition.d.ts.map +1 -1
- package/dist/types/model/definition/index.d.ts +1 -1
- package/dist/types/model/definition/index.d.ts.map +1 -1
- package/dist/types/model/definition/internal/SchemaBuilder.d.ts.map +1 -1
- package/dist/types/model/definition/types.d.ts +1 -1
- package/dist/types/model/definition/types.d.ts.map +1 -1
- package/dist/types/model/index.d.ts +1 -1
- package/dist/types/model/index.d.ts.map +1 -1
- package/dist/types/presets.d.ts.map +1 -1
- package/dist/types/strict.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/dist/types/utils/MetadataStore.d.ts +1 -1
- package/dist/types/utils/MetadataStore.d.ts.map +1 -1
- package/dist/types/utils/decorators.d.ts +1 -1
- package/dist/types/utils/decorators.d.ts.map +1 -1
- package/dist/types/utils/filterEntityDefinition.d.ts.map +1 -1
- package/dist/types/validation/index.d.ts +0 -1
- package/dist/types/validation/index.d.ts.map +1 -1
- package/package.json +11 -6
- package/src/acl/builder/EntityPermissionsBuilder.ts +1 -1
- package/src/acl/builder/EntitySelector.ts +2 -2
- package/src/acl/builder/PermissionOverrider.ts +10 -8
- package/src/acl/builder/PermissionsBuilder.ts +1 -3
- package/src/acl/definition/aclExtensions.ts +7 -8
- package/src/acl/definition/customPrimary.ts +1 -1
- package/src/acl/definition/internal/AclFactory.ts +30 -25
- package/src/acl/definition/internal/EntityPredicateResolver.ts +4 -4
- package/src/acl/definition/internal/stores.ts +5 -6
- package/src/acl/definition/permissions.ts +14 -8
- package/src/acl/definition/variables.ts +5 -1
- package/src/actions/definition/index.ts +0 -1
- package/src/actions/definition/internal/ActionsFactory.ts +7 -9
- package/src/actions/definition/targets.ts +0 -1
- package/src/actions/definition/triggers.ts +9 -7
- package/src/createSchema.ts +1 -1
- package/src/index.ts +6 -11
- package/src/model/builder/ColumnBuilder.ts +7 -5
- package/src/model/builder/internal/ColumnProcessor.ts +0 -1
- package/src/model/definition/IndexDefinition.ts +7 -3
- package/src/model/definition/OrderByDefinition.ts +7 -5
- package/src/model/definition/UniqueDefinition.ts +14 -12
- package/src/model/definition/extensions.ts +2 -2
- package/src/model/definition/fieldDefinitions/ColumnDefinition.ts +12 -4
- package/src/model/definition/fieldDefinitions/FieldDefinition.ts +1 -1
- package/src/model/definition/fieldDefinitions/ManyHasManyDefinition.ts +0 -2
- package/src/model/definition/fieldDefinitions/ManyHasManyInverseDefinition.ts +4 -2
- package/src/model/definition/fieldDefinitions/ManyHasOneDefinition.ts +1 -1
- package/src/model/definition/fieldDefinitions/OneHasManyDefinition.ts +0 -1
- package/src/model/definition/fieldDefinitions/OneHasOneDefinition.ts +0 -2
- package/src/model/definition/fieldDefinitions/OneHasOneInverseDefinition.ts +5 -3
- package/src/model/definition/index.ts +2 -2
- package/src/model/definition/internal/SchemaBuilder.ts +1 -2
- package/src/model/definition/types.ts +1 -1
- package/src/model/index.ts +1 -10
- package/src/presets.ts +0 -2
- package/src/strict.ts +4 -4
- package/src/utils/MetadataStore.ts +18 -4
- package/src/utils/decorators.ts +1 -1
- package/src/utils/filterEntityDefinition.ts +3 -2
- package/src/validation/index.ts +30 -21
- package/tests/cases/unit/createSchema.test.ts +5 -6
- package/tests/cases/unit/extendEntity.test.ts +1 -2
- package/tests/cases/unit/orderBy.test.ts +3 -6
- package/tests/cases/unit/readAclDefinitions.test.ts +191 -176
- package/tests/cases/unit/readActions.test.ts +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../../../packages/schema-definition/src/validation/index.ts"],"sourcesContent":["import { tuple } from '../utils'\nimport { SchemaDefinition } from '../model'\nimport 'reflect-metadata'\nimport { Validation } from '@contember/schema'\nimport { filterEntityDefinition } from '../utils'\n\ntype MessageOrString = Validation.Message | string\n\nexport type ContextPath = Validation.ContextPath | string | undefined\nexport const parsePath = (path: ContextPath): readonly string[] => {\n\tif (!path) {\n\t\treturn []\n\t}\n\tif (typeof path === 'string') {\n\t\treturn path.split('.')\n\t}\n\treturn path\n}\n\nconst ArgumentFactory = {\n\tvalidator: (validator: Validation.Validator): Validation.ValidatorArgument => ({\n\t\ttype: Validation.ArgumentType.validator,\n\t\tvalidator,\n\t}),\n\tpath: (path?: ContextPath): Validation.PathArgument => ({\n\t\ttype: Validation.ArgumentType.path,\n\t\tpath: parsePath(path),\n\t}),\n\tliteral: <V = any>(value: V): Validation.LiteralArgument<V> => ({ type: Validation.ArgumentType.literal, value }),\n}\n\nconst RuleMetaKey = Symbol('Rule')\n\nfunction updateMetadata<T>(\n\t{ key, target, propertyKey }: { key: symbol; target: any; propertyKey: string | symbol },\n\tgenerator: (previous: T) => T,\n\tinitialValue: T,\n) {\n\tconst metadata = Reflect.hasMetadata(key, target, propertyKey)\n\t\t? Reflect.getMetadata(key, target, propertyKey)\n\t\t: initialValue\n\n\tconst newMetadata = generator(metadata)\n\tReflect.defineMetadata(key, newMetadata, target, propertyKey)\n}\n\nfunction addRuleToMetadata(target: any, propertyKey: string | symbol, ...rule: Validation.ValidationRule[]) {\n\tupdateMetadata<Validation.ValidationRule[]>({ key: RuleMetaKey, target, propertyKey }, prev => [...rule, ...prev], [])\n}\n\nexport function fluent() {\n\treturn new RuleBranch([], [])\n}\n\nexport class RuleBranch {\n\tconstructor(private conditions: Validation.Validator[], private branchRules: Validation.ValidationRule[]) {}\n\n\tpublic buildRules = (): Validation.ValidationRule[] => {\n\t\tif (this.conditions.length === 0) {\n\t\t\treturn this.branchRules\n\t\t}\n\t\treturn this.branchRules.map(rule => ({\n\t\t\tvalidator: rules.conditional(\n\t\t\t\tthis.conditions.length === 1 ? this.conditions[0] : rules.and(...this.conditions),\n\t\t\t\trule.validator,\n\t\t\t),\n\t\t\tmessage: rule.message,\n\t\t}))\n\t}\n\n\tpublic assert = (validator: Validation.Validator, message: MessageOrString): RuleBranch & PropertyDecorator => {\n\t\tconst messageParsed: Validation.Message = typeof message === 'string' ? { text: message } : message\n\t\tconst newRules = [...this.branchRules, { validator, message: messageParsed }]\n\t\tconst branch = new RuleBranch(this.conditions, newRules)\n\t\tconst propertyDecorator: PropertyDecorator = (target: any, propertykey: string | symbol) => {\n\t\t\taddRuleToMetadata(target, propertykey, ...branch.buildRules())\n\t\t}\n\t\treturn Object.assign(propertyDecorator, branch)\n\t}\n\n\tassertPattern = (pattern: RegExp, message: MessageOrString) => this.assert(rules.pattern(pattern), message)\n\tassertEquals = (value: any, message: MessageOrString) => this.assert(rules.equals(value), message)\n\tassertDefined = (message: MessageOrString) => this.assert(rules.defined(), message)\n\tassertNotEmpty = (message: MessageOrString) => this.assert(rules.notEmpty(), message)\n\tassertMinLength = (minLength: number, message: MessageOrString) => this.assert(rules.minLength(minLength), message)\n\tassertMaxLength = (minLength: number, message: MessageOrString) => this.assert(rules.maxLength(minLength), message)\n}\n\nconst andOperation = (...conditions: Validation.Validator[]): Validation.Validator => ({\n\toperation: 'and',\n\targs: conditions.map(validator => ArgumentFactory.validator(validator)),\n})\nconst orOperation = (...conditions: Validation.Validator[]): Validation.Validator => ({\n\toperation: 'or',\n\targs: conditions.map(validator => ArgumentFactory.validator(validator)),\n})\nconst conditionalOperation = (condition: Validation.Validator, rule: Validation.Validator): Validation.Validator => ({\n\toperation: 'conditional',\n\targs: [ArgumentFactory.validator(condition), ArgumentFactory.validator(rule)],\n})\n\nconst patternOperation = (pattern: RegExp): Validation.Validator => ({\n\toperation: 'pattern',\n\targs: [ArgumentFactory.literal([pattern.source, pattern.flags])],\n})\n\nconst lengthRangeOperation = (min: number | null, max: number | null): Validation.Validator => ({\n\toperation: 'lengthRange',\n\targs: [ArgumentFactory.literal(min), ArgumentFactory.literal(max)],\n})\n\nconst rangeOperation = (min: number | null, max: number | null): Validation.Validator => ({\n\toperation: 'range',\n\targs: [ArgumentFactory.literal(min), ArgumentFactory.literal(max)],\n})\n\nconst equalsOperation = (value: any): Validation.Validator => ({\n\toperation: 'equals',\n\targs: [ArgumentFactory.literal(value)],\n})\nconst notOperation = (validator: Validation.Validator): Validation.Validator => ({\n\toperation: 'not',\n\targs: [ArgumentFactory.validator(validator)],\n})\n\nconst emptyOperation = (): Validation.Validator => ({ operation: 'empty', args: [] })\nconst definedOperation = (): Validation.Validator => ({ operation: 'defined', args: [] })\n\nexport const InContextOperation = 'inContext' as const\nconst onOperation = (path: ContextPath, validator: Validation.Validator): Validation.Validator => ({\n\toperation: InContextOperation,\n\targs: [ArgumentFactory.path(path), ArgumentFactory.validator(validator)],\n})\n\nconst everyOperation = (validator: Validation.Validator): Validation.Validator => ({\n\toperation: 'every',\n\targs: [ArgumentFactory.validator(validator)],\n})\n\nconst anyOperation = (validator: Validation.Validator): Validation.Validator => ({\n\toperation: 'any',\n\targs: [ArgumentFactory.validator(validator)],\n})\n\nconst filterOperation = (filter: Validation.Validator, validator: Validation.Validator): Validation.Validator => ({\n\toperation: 'filter',\n\targs: [ArgumentFactory.validator(filter), ArgumentFactory.validator(validator)],\n})\n\nexport const rules = {\n\tequals: equalsOperation,\n\tin: (...value: any[]) => orOperation(...value.map(it => equalsOperation(it))),\n\tpattern: patternOperation,\n\n\tlengthRange: lengthRangeOperation,\n\tminLength: (min: number) => lengthRangeOperation(min, null),\n\tmaxLength: (max: number) => lengthRangeOperation(null, max),\n\n\trange: rangeOperation,\n\tmin: (min: number) => rangeOperation(min, null),\n\tmax: (max: number) => rangeOperation(null, max),\n\n\tdefined: definedOperation,\n\t['empty']: emptyOperation,\n\tnotEmpty: () => notOperation(emptyOperation()),\n\t['null']: () => equalsOperation(null),\n\tnotNull: () => notOperation(equalsOperation(null)),\n\n\tand: andOperation,\n\tor: orOperation,\n\tnot: notOperation,\n\n\tconditional: conditionalOperation,\n\ton: onOperation,\n\n\tfilter: filterOperation,\n\tany: anyOperation,\n\tevery: everyOperation,\n}\n\nexport function when(...conditions: Validation.Validator[]) {\n\treturn new RuleBranch(conditions, [])\n}\n\nexport const assert = (validator: Validation.Validator, message: MessageOrString) => fluent().assert(validator, message)\n/** alias for assertDefined */\nexport const required = (message: MessageOrString) => fluent().assertDefined(message)\nexport const assertDefined = (message: MessageOrString) => fluent().assertDefined(message)\nexport const assertNotEmpty = (message: MessageOrString) => fluent().assertNotEmpty(message)\nexport const assertPattern = (pattern: RegExp, message: MessageOrString) => fluent().assertPattern(pattern, message)\nexport const assertMinLength = (min: number, message: MessageOrString) => fluent().assertMinLength(min, message)\nexport const assertMaxLength = (min: number, message: MessageOrString) => fluent().assertMaxLength(min, message)\n\nexport const combine =\n\t(...decorators: PropertyDecorator[]): PropertyDecorator =>\n\t\t(target, propertyKey) =>\n\t\t\tdecorators.forEach(it => it(target, propertyKey))\n\nexport function parseDefinition(\n\tdefinitions: Record<string, any>,\n): Validation.Schema {\n\treturn filterEntityDefinition(definitions)\n\t\t.map(([name, definition]) => {\n\t\t\tconst target = definition.prototype\n\t\t\tconst defInstance = new definition()\n\t\t\tconst fields = Object.keys(defInstance)\n\t\t\treturn tuple(\n\t\t\t\tname,\n\t\t\t\tfields\n\t\t\t\t\t.map(field => {\n\t\t\t\t\t\tconst fieldRules: Validation.ValidationRule[] | undefined = Reflect.getMetadata(RuleMetaKey, target, field)\n\t\t\t\t\t\tif (fieldRules === undefined) {\n\t\t\t\t\t\t\treturn tuple(field, [])\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn tuple(field, fieldRules)\n\t\t\t\t\t})\n\t\t\t\t\t.reduce<Validation.EntityRules>(\n\t\t\t\t\t\t(ruleSet, [field, rules]) => (rules.length > 0 ? { ...ruleSet, [field]: rules } : ruleSet),\n\t\t\t\t\t\t{},\n\t\t\t\t\t),\n\t\t\t)\n\t\t})\n\t\t.reduce<Validation.Schema>(\n\t\t\t(acc, [name, defs]) => (Object.keys(defs).length > 0 ? { ...acc, [name]: defs } : acc),\n\t\t\t{},\n\t\t)\n}\n"],"names":["Validation","filterEntityDefinition","tuple","rules"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../../../packages/schema-definition/src/validation/index.ts"],"sourcesContent":["import { tuple } from '../utils'\nimport { SchemaDefinition } from '../model'\nimport { Validation } from '@contember/schema'\nimport { filterEntityDefinition } from '../utils'\n\ntype MessageOrString = Validation.Message | string\n\nexport type ContextPath = Validation.ContextPath | string | undefined\nexport const parsePath = (path: ContextPath): readonly string[] => {\n\tif (!path) {\n\t\treturn []\n\t}\n\tif (typeof path === 'string') {\n\t\treturn path.split('.')\n\t}\n\treturn path\n}\n\nconst ArgumentFactory = {\n\tvalidator: (validator: Validation.Validator): Validation.ValidatorArgument => ({\n\t\ttype: Validation.ArgumentType.validator,\n\t\tvalidator,\n\t}),\n\tpath: (path?: ContextPath): Validation.PathArgument => ({\n\t\ttype: Validation.ArgumentType.path,\n\t\tpath: parsePath(path),\n\t}),\n\tliteral: <V = any>(value: V): Validation.LiteralArgument<V> => ({ type: Validation.ArgumentType.literal, value }),\n}\n\nconst RuleMetaKey = Symbol('Rule')\n\nconst isLegacyDecorator = (target: any): boolean => typeof target === 'object' && target !== null || typeof target === 'function'\n\nfunction addRuleToMetadata(target: any, propertyKeyOrContext: any, ...rule: Validation.ValidationRule[]) {\n\tif (isLegacyDecorator(target)) {\n\t\t// Legacy TypeScript decorators: target is prototype, propertyKeyOrContext is property name\n\t\tconst propertyKey: string | symbol = propertyKeyOrContext\n\t\tconst hasExisting = Reflect.hasMetadata(RuleMetaKey, target, propertyKey)\n\t\tconst existing: Validation.ValidationRule[] = hasExisting ? Reflect.getMetadata(RuleMetaKey, target, propertyKey) : []\n\t\tReflect.defineMetadata(RuleMetaKey, [...rule, ...existing], target, propertyKey)\n\t} else {\n\t\t// TC39 stage 3 decorators: target is undefined, propertyKeyOrContext is context\n\t\tconst context = propertyKeyOrContext as ClassFieldDecoratorContext\n\t\tconst name = String(context.name)\n\t\tconst allRules = (context.metadata[RuleMetaKey] as Record<string, Validation.ValidationRule[]>) ?? {}\n\t\tallRules[name] = [...rule, ...(allRules[name] ?? [])]\n\t\tcontext.metadata[RuleMetaKey] = allRules\n\t}\n}\n\nfunction getTC39Metadata(cls: Function): Record<string, Validation.ValidationRule[]> | undefined {\n\tconst metaSymbol = Symbol.metadata\n\t\t?? Reflect.ownKeys(cls).find((k): k is symbol => typeof k === 'symbol' && String(k) === 'Symbol(Symbol.metadata)')\n\tif (!metaSymbol) return undefined\n\tconst meta = (cls as any)[metaSymbol]\n\treturn meta?.[RuleMetaKey] as Record<string, Validation.ValidationRule[]> | undefined\n}\n\nexport function fluent() {\n\treturn new RuleBranch([], [])\n}\n\nexport class RuleBranch {\n\tconstructor(private conditions: Validation.Validator[], private branchRules: Validation.ValidationRule[]) {}\n\n\tpublic buildRules = (): Validation.ValidationRule[] => {\n\t\tif (this.conditions.length === 0) {\n\t\t\treturn this.branchRules\n\t\t}\n\t\treturn this.branchRules.map(rule => ({\n\t\t\tvalidator: rules.conditional(\n\t\t\t\tthis.conditions.length === 1 ? this.conditions[0] : rules.and(...this.conditions),\n\t\t\t\trule.validator,\n\t\t\t),\n\t\t\tmessage: rule.message,\n\t\t}))\n\t}\n\n\tpublic assert = (validator: Validation.Validator, message: MessageOrString): RuleBranch & PropertyDecorator => {\n\t\tconst messageParsed: Validation.Message = typeof message === 'string' ? { text: message } : message\n\t\tconst newRules = [...this.branchRules, { validator, message: messageParsed }]\n\t\tconst branch = new RuleBranch(this.conditions, newRules)\n\t\tconst propertyDecorator = (target: any, propertyKeyOrContext: any) => {\n\t\t\taddRuleToMetadata(target, propertyKeyOrContext, ...branch.buildRules())\n\t\t}\n\t\treturn Object.assign(propertyDecorator, branch)\n\t}\n\n\tassertPattern = (pattern: RegExp, message: MessageOrString) => this.assert(rules.pattern(pattern), message)\n\tassertEquals = (value: any, message: MessageOrString) => this.assert(rules.equals(value), message)\n\tassertDefined = (message: MessageOrString) => this.assert(rules.defined(), message)\n\tassertNotEmpty = (message: MessageOrString) => this.assert(rules.notEmpty(), message)\n\tassertMinLength = (minLength: number, message: MessageOrString) => this.assert(rules.minLength(minLength), message)\n\tassertMaxLength = (minLength: number, message: MessageOrString) => this.assert(rules.maxLength(minLength), message)\n}\n\nconst andOperation = (...conditions: Validation.Validator[]): Validation.Validator => ({\n\toperation: 'and',\n\targs: conditions.map(validator => ArgumentFactory.validator(validator)),\n})\nconst orOperation = (...conditions: Validation.Validator[]): Validation.Validator => ({\n\toperation: 'or',\n\targs: conditions.map(validator => ArgumentFactory.validator(validator)),\n})\nconst conditionalOperation = (condition: Validation.Validator, rule: Validation.Validator): Validation.Validator => ({\n\toperation: 'conditional',\n\targs: [ArgumentFactory.validator(condition), ArgumentFactory.validator(rule)],\n})\n\nconst patternOperation = (pattern: RegExp): Validation.Validator => ({\n\toperation: 'pattern',\n\targs: [ArgumentFactory.literal([pattern.source, pattern.flags])],\n})\n\nconst lengthRangeOperation = (min: number | null, max: number | null): Validation.Validator => ({\n\toperation: 'lengthRange',\n\targs: [ArgumentFactory.literal(min), ArgumentFactory.literal(max)],\n})\n\nconst rangeOperation = (min: number | null, max: number | null): Validation.Validator => ({\n\toperation: 'range',\n\targs: [ArgumentFactory.literal(min), ArgumentFactory.literal(max)],\n})\n\nconst equalsOperation = (value: any): Validation.Validator => ({\n\toperation: 'equals',\n\targs: [ArgumentFactory.literal(value)],\n})\nconst notOperation = (validator: Validation.Validator): Validation.Validator => ({\n\toperation: 'not',\n\targs: [ArgumentFactory.validator(validator)],\n})\n\nconst emptyOperation = (): Validation.Validator => ({ operation: 'empty', args: [] })\nconst definedOperation = (): Validation.Validator => ({ operation: 'defined', args: [] })\n\nexport const InContextOperation = 'inContext' as const\nconst onOperation = (path: ContextPath, validator: Validation.Validator): Validation.Validator => ({\n\toperation: InContextOperation,\n\targs: [ArgumentFactory.path(path), ArgumentFactory.validator(validator)],\n})\n\nconst everyOperation = (validator: Validation.Validator): Validation.Validator => ({\n\toperation: 'every',\n\targs: [ArgumentFactory.validator(validator)],\n})\n\nconst anyOperation = (validator: Validation.Validator): Validation.Validator => ({\n\toperation: 'any',\n\targs: [ArgumentFactory.validator(validator)],\n})\n\nconst filterOperation = (filter: Validation.Validator, validator: Validation.Validator): Validation.Validator => ({\n\toperation: 'filter',\n\targs: [ArgumentFactory.validator(filter), ArgumentFactory.validator(validator)],\n})\n\nexport const rules = {\n\tequals: equalsOperation,\n\tin: (...value: any[]) => orOperation(...value.map(it => equalsOperation(it))),\n\tpattern: patternOperation,\n\n\tlengthRange: lengthRangeOperation,\n\tminLength: (min: number) => lengthRangeOperation(min, null),\n\tmaxLength: (max: number) => lengthRangeOperation(null, max),\n\n\trange: rangeOperation,\n\tmin: (min: number) => rangeOperation(min, null),\n\tmax: (max: number) => rangeOperation(null, max),\n\n\tdefined: definedOperation,\n\t['empty']: emptyOperation,\n\tnotEmpty: () => notOperation(emptyOperation()),\n\t['null']: () => equalsOperation(null),\n\tnotNull: () => notOperation(equalsOperation(null)),\n\n\tand: andOperation,\n\tor: orOperation,\n\tnot: notOperation,\n\n\tconditional: conditionalOperation,\n\ton: onOperation,\n\n\tfilter: filterOperation,\n\tany: anyOperation,\n\tevery: everyOperation,\n}\n\nexport function when(...conditions: Validation.Validator[]) {\n\treturn new RuleBranch(conditions, [])\n}\n\nexport const assert = (validator: Validation.Validator, message: MessageOrString) => fluent().assert(validator, message)\n/** alias for assertDefined */\nexport const required = (message: MessageOrString) => fluent().assertDefined(message)\nexport const assertDefined = (message: MessageOrString) => fluent().assertDefined(message)\nexport const assertNotEmpty = (message: MessageOrString) => fluent().assertNotEmpty(message)\nexport const assertPattern = (pattern: RegExp, message: MessageOrString) => fluent().assertPattern(pattern, message)\nexport const assertMinLength = (min: number, message: MessageOrString) => fluent().assertMinLength(min, message)\nexport const assertMaxLength = (min: number, message: MessageOrString) => fluent().assertMaxLength(min, message)\n\nexport const combine = (...decorators: PropertyDecorator[]): PropertyDecorator => (target: any, propertyKeyOrContext: any) =>\n\tdecorators.forEach(it => (it as any)(target, propertyKeyOrContext))\n\nexport function parseDefinition(\n\tdefinitions: Record<string, any>,\n): Validation.Schema {\n\treturn filterEntityDefinition(definitions)\n\t\t.map(([name, definition]) => {\n\t\t\tconst target = definition.prototype\n\t\t\tconst defInstance = new definition()\n\t\t\tconst fields = Object.keys(defInstance)\n\t\t\tconst tc39Rules = getTC39Metadata(definition)\n\t\t\treturn tuple(\n\t\t\t\tname,\n\t\t\t\tfields\n\t\t\t\t\t.map(field => {\n\t\t\t\t\t\tconst fieldRules: Validation.ValidationRule[] | undefined = tc39Rules?.[field]\n\t\t\t\t\t\t\t?? (typeof Reflect.getMetadata === 'function' ? Reflect.getMetadata(RuleMetaKey, target, field) : undefined)\n\t\t\t\t\t\tif (fieldRules === undefined) {\n\t\t\t\t\t\t\treturn tuple(field, [])\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn tuple(field, fieldRules)\n\t\t\t\t\t})\n\t\t\t\t\t.reduce<Validation.EntityRules>(\n\t\t\t\t\t\t(ruleSet, [field, rules]) => (rules.length > 0 ? { ...ruleSet, [field]: rules } : ruleSet),\n\t\t\t\t\t\t{},\n\t\t\t\t\t),\n\t\t\t)\n\t\t})\n\t\t.reduce<Validation.Schema>(\n\t\t\t(acc, [name, defs]) => (Object.keys(defs).length > 0 ? { ...acc, [name]: defs } : acc),\n\t\t\t{},\n\t\t)\n}\n"],"names":["Validation","filterEntityDefinition","tuple","rules"],"mappings":"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"}
|
|
@@ -25,14 +25,27 @@ const ArgumentFactory = {
|
|
|
25
25
|
}),
|
|
26
26
|
literal: (value) => ({ type: Validation.ArgumentType.literal, value })
|
|
27
27
|
};
|
|
28
|
-
const RuleMetaKey = Symbol("Rule");
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
28
|
+
const RuleMetaKey = /* @__PURE__ */ Symbol("Rule");
|
|
29
|
+
const isLegacyDecorator = (target) => typeof target === "object" && target !== null || typeof target === "function";
|
|
30
|
+
function addRuleToMetadata(target, propertyKeyOrContext, ...rule) {
|
|
31
|
+
if (isLegacyDecorator(target)) {
|
|
32
|
+
const propertyKey = propertyKeyOrContext;
|
|
33
|
+
const hasExisting = Reflect.hasMetadata(RuleMetaKey, target, propertyKey);
|
|
34
|
+
const existing = hasExisting ? Reflect.getMetadata(RuleMetaKey, target, propertyKey) : [];
|
|
35
|
+
Reflect.defineMetadata(RuleMetaKey, [...rule, ...existing], target, propertyKey);
|
|
36
|
+
} else {
|
|
37
|
+
const context = propertyKeyOrContext;
|
|
38
|
+
const name = String(context.name);
|
|
39
|
+
const allRules = context.metadata[RuleMetaKey] ?? {};
|
|
40
|
+
allRules[name] = [...rule, ...allRules[name] ?? []];
|
|
41
|
+
context.metadata[RuleMetaKey] = allRules;
|
|
42
|
+
}
|
|
33
43
|
}
|
|
34
|
-
function
|
|
35
|
-
|
|
44
|
+
function getTC39Metadata(cls) {
|
|
45
|
+
const metaSymbol = Symbol.metadata ?? Reflect.ownKeys(cls).find((k) => typeof k === "symbol" && String(k) === "Symbol(Symbol.metadata)");
|
|
46
|
+
if (!metaSymbol) return void 0;
|
|
47
|
+
const meta = cls[metaSymbol];
|
|
48
|
+
return meta?.[RuleMetaKey];
|
|
36
49
|
}
|
|
37
50
|
function fluent() {
|
|
38
51
|
return new RuleBranch([], []);
|
|
@@ -57,8 +70,8 @@ class RuleBranch {
|
|
|
57
70
|
const messageParsed = typeof message === "string" ? { text: message } : message;
|
|
58
71
|
const newRules = [...this.branchRules, { validator, message: messageParsed }];
|
|
59
72
|
const branch = new RuleBranch(this.conditions, newRules);
|
|
60
|
-
const propertyDecorator = (target,
|
|
61
|
-
addRuleToMetadata(target,
|
|
73
|
+
const propertyDecorator = (target, propertyKeyOrContext) => {
|
|
74
|
+
addRuleToMetadata(target, propertyKeyOrContext, ...branch.buildRules());
|
|
62
75
|
};
|
|
63
76
|
return Object.assign(propertyDecorator, branch);
|
|
64
77
|
});
|
|
@@ -155,16 +168,17 @@ const assertNotEmpty = (message) => fluent().assertNotEmpty(message);
|
|
|
155
168
|
const assertPattern = (pattern, message) => fluent().assertPattern(pattern, message);
|
|
156
169
|
const assertMinLength = (min, message) => fluent().assertMinLength(min, message);
|
|
157
170
|
const assertMaxLength = (min, message) => fluent().assertMaxLength(min, message);
|
|
158
|
-
const combine = (...decorators) => (target,
|
|
171
|
+
const combine = (...decorators) => (target, propertyKeyOrContext) => decorators.forEach((it) => it(target, propertyKeyOrContext));
|
|
159
172
|
function parseDefinition(definitions) {
|
|
160
173
|
return filterEntityDefinition(definitions).map(([name, definition]) => {
|
|
161
174
|
const target = definition.prototype;
|
|
162
175
|
const defInstance = new definition();
|
|
163
176
|
const fields = Object.keys(defInstance);
|
|
177
|
+
const tc39Rules = getTC39Metadata(definition);
|
|
164
178
|
return tuple(
|
|
165
179
|
name,
|
|
166
180
|
fields.map((field) => {
|
|
167
|
-
const fieldRules = Reflect.getMetadata(RuleMetaKey, target, field);
|
|
181
|
+
const fieldRules = tc39Rules?.[field] ?? (typeof Reflect.getMetadata === "function" ? Reflect.getMetadata(RuleMetaKey, target, field) : void 0);
|
|
168
182
|
if (fieldRules === void 0) {
|
|
169
183
|
return tuple(field, []);
|
|
170
184
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../packages/schema-definition/src/validation/index.ts"],"sourcesContent":["import { tuple } from '../utils'\nimport { SchemaDefinition } from '../model'\nimport 'reflect-metadata'\nimport { Validation } from '@contember/schema'\nimport { filterEntityDefinition } from '../utils'\n\ntype MessageOrString = Validation.Message | string\n\nexport type ContextPath = Validation.ContextPath | string | undefined\nexport const parsePath = (path: ContextPath): readonly string[] => {\n\tif (!path) {\n\t\treturn []\n\t}\n\tif (typeof path === 'string') {\n\t\treturn path.split('.')\n\t}\n\treturn path\n}\n\nconst ArgumentFactory = {\n\tvalidator: (validator: Validation.Validator): Validation.ValidatorArgument => ({\n\t\ttype: Validation.ArgumentType.validator,\n\t\tvalidator,\n\t}),\n\tpath: (path?: ContextPath): Validation.PathArgument => ({\n\t\ttype: Validation.ArgumentType.path,\n\t\tpath: parsePath(path),\n\t}),\n\tliteral: <V = any>(value: V): Validation.LiteralArgument<V> => ({ type: Validation.ArgumentType.literal, value }),\n}\n\nconst RuleMetaKey = Symbol('Rule')\n\nfunction updateMetadata<T>(\n\t{ key, target, propertyKey }: { key: symbol; target: any; propertyKey: string | symbol },\n\tgenerator: (previous: T) => T,\n\tinitialValue: T,\n) {\n\tconst metadata = Reflect.hasMetadata(key, target, propertyKey)\n\t\t? Reflect.getMetadata(key, target, propertyKey)\n\t\t: initialValue\n\n\tconst newMetadata = generator(metadata)\n\tReflect.defineMetadata(key, newMetadata, target, propertyKey)\n}\n\nfunction addRuleToMetadata(target: any, propertyKey: string | symbol, ...rule: Validation.ValidationRule[]) {\n\tupdateMetadata<Validation.ValidationRule[]>({ key: RuleMetaKey, target, propertyKey }, prev => [...rule, ...prev], [])\n}\n\nexport function fluent() {\n\treturn new RuleBranch([], [])\n}\n\nexport class RuleBranch {\n\tconstructor(private conditions: Validation.Validator[], private branchRules: Validation.ValidationRule[]) {}\n\n\tpublic buildRules = (): Validation.ValidationRule[] => {\n\t\tif (this.conditions.length === 0) {\n\t\t\treturn this.branchRules\n\t\t}\n\t\treturn this.branchRules.map(rule => ({\n\t\t\tvalidator: rules.conditional(\n\t\t\t\tthis.conditions.length === 1 ? this.conditions[0] : rules.and(...this.conditions),\n\t\t\t\trule.validator,\n\t\t\t),\n\t\t\tmessage: rule.message,\n\t\t}))\n\t}\n\n\tpublic assert = (validator: Validation.Validator, message: MessageOrString): RuleBranch & PropertyDecorator => {\n\t\tconst messageParsed: Validation.Message = typeof message === 'string' ? { text: message } : message\n\t\tconst newRules = [...this.branchRules, { validator, message: messageParsed }]\n\t\tconst branch = new RuleBranch(this.conditions, newRules)\n\t\tconst propertyDecorator: PropertyDecorator = (target: any, propertykey: string | symbol) => {\n\t\t\taddRuleToMetadata(target, propertykey, ...branch.buildRules())\n\t\t}\n\t\treturn Object.assign(propertyDecorator, branch)\n\t}\n\n\tassertPattern = (pattern: RegExp, message: MessageOrString) => this.assert(rules.pattern(pattern), message)\n\tassertEquals = (value: any, message: MessageOrString) => this.assert(rules.equals(value), message)\n\tassertDefined = (message: MessageOrString) => this.assert(rules.defined(), message)\n\tassertNotEmpty = (message: MessageOrString) => this.assert(rules.notEmpty(), message)\n\tassertMinLength = (minLength: number, message: MessageOrString) => this.assert(rules.minLength(minLength), message)\n\tassertMaxLength = (minLength: number, message: MessageOrString) => this.assert(rules.maxLength(minLength), message)\n}\n\nconst andOperation = (...conditions: Validation.Validator[]): Validation.Validator => ({\n\toperation: 'and',\n\targs: conditions.map(validator => ArgumentFactory.validator(validator)),\n})\nconst orOperation = (...conditions: Validation.Validator[]): Validation.Validator => ({\n\toperation: 'or',\n\targs: conditions.map(validator => ArgumentFactory.validator(validator)),\n})\nconst conditionalOperation = (condition: Validation.Validator, rule: Validation.Validator): Validation.Validator => ({\n\toperation: 'conditional',\n\targs: [ArgumentFactory.validator(condition), ArgumentFactory.validator(rule)],\n})\n\nconst patternOperation = (pattern: RegExp): Validation.Validator => ({\n\toperation: 'pattern',\n\targs: [ArgumentFactory.literal([pattern.source, pattern.flags])],\n})\n\nconst lengthRangeOperation = (min: number | null, max: number | null): Validation.Validator => ({\n\toperation: 'lengthRange',\n\targs: [ArgumentFactory.literal(min), ArgumentFactory.literal(max)],\n})\n\nconst rangeOperation = (min: number | null, max: number | null): Validation.Validator => ({\n\toperation: 'range',\n\targs: [ArgumentFactory.literal(min), ArgumentFactory.literal(max)],\n})\n\nconst equalsOperation = (value: any): Validation.Validator => ({\n\toperation: 'equals',\n\targs: [ArgumentFactory.literal(value)],\n})\nconst notOperation = (validator: Validation.Validator): Validation.Validator => ({\n\toperation: 'not',\n\targs: [ArgumentFactory.validator(validator)],\n})\n\nconst emptyOperation = (): Validation.Validator => ({ operation: 'empty', args: [] })\nconst definedOperation = (): Validation.Validator => ({ operation: 'defined', args: [] })\n\nexport const InContextOperation = 'inContext' as const\nconst onOperation = (path: ContextPath, validator: Validation.Validator): Validation.Validator => ({\n\toperation: InContextOperation,\n\targs: [ArgumentFactory.path(path), ArgumentFactory.validator(validator)],\n})\n\nconst everyOperation = (validator: Validation.Validator): Validation.Validator => ({\n\toperation: 'every',\n\targs: [ArgumentFactory.validator(validator)],\n})\n\nconst anyOperation = (validator: Validation.Validator): Validation.Validator => ({\n\toperation: 'any',\n\targs: [ArgumentFactory.validator(validator)],\n})\n\nconst filterOperation = (filter: Validation.Validator, validator: Validation.Validator): Validation.Validator => ({\n\toperation: 'filter',\n\targs: [ArgumentFactory.validator(filter), ArgumentFactory.validator(validator)],\n})\n\nexport const rules = {\n\tequals: equalsOperation,\n\tin: (...value: any[]) => orOperation(...value.map(it => equalsOperation(it))),\n\tpattern: patternOperation,\n\n\tlengthRange: lengthRangeOperation,\n\tminLength: (min: number) => lengthRangeOperation(min, null),\n\tmaxLength: (max: number) => lengthRangeOperation(null, max),\n\n\trange: rangeOperation,\n\tmin: (min: number) => rangeOperation(min, null),\n\tmax: (max: number) => rangeOperation(null, max),\n\n\tdefined: definedOperation,\n\t['empty']: emptyOperation,\n\tnotEmpty: () => notOperation(emptyOperation()),\n\t['null']: () => equalsOperation(null),\n\tnotNull: () => notOperation(equalsOperation(null)),\n\n\tand: andOperation,\n\tor: orOperation,\n\tnot: notOperation,\n\n\tconditional: conditionalOperation,\n\ton: onOperation,\n\n\tfilter: filterOperation,\n\tany: anyOperation,\n\tevery: everyOperation,\n}\n\nexport function when(...conditions: Validation.Validator[]) {\n\treturn new RuleBranch(conditions, [])\n}\n\nexport const assert = (validator: Validation.Validator, message: MessageOrString) => fluent().assert(validator, message)\n/** alias for assertDefined */\nexport const required = (message: MessageOrString) => fluent().assertDefined(message)\nexport const assertDefined = (message: MessageOrString) => fluent().assertDefined(message)\nexport const assertNotEmpty = (message: MessageOrString) => fluent().assertNotEmpty(message)\nexport const assertPattern = (pattern: RegExp, message: MessageOrString) => fluent().assertPattern(pattern, message)\nexport const assertMinLength = (min: number, message: MessageOrString) => fluent().assertMinLength(min, message)\nexport const assertMaxLength = (min: number, message: MessageOrString) => fluent().assertMaxLength(min, message)\n\nexport const combine =\n\t(...decorators: PropertyDecorator[]): PropertyDecorator =>\n\t\t(target, propertyKey) =>\n\t\t\tdecorators.forEach(it => it(target, propertyKey))\n\nexport function parseDefinition(\n\tdefinitions: Record<string, any>,\n): Validation.Schema {\n\treturn filterEntityDefinition(definitions)\n\t\t.map(([name, definition]) => {\n\t\t\tconst target = definition.prototype\n\t\t\tconst defInstance = new definition()\n\t\t\tconst fields = Object.keys(defInstance)\n\t\t\treturn tuple(\n\t\t\t\tname,\n\t\t\t\tfields\n\t\t\t\t\t.map(field => {\n\t\t\t\t\t\tconst fieldRules: Validation.ValidationRule[] | undefined = Reflect.getMetadata(RuleMetaKey, target, field)\n\t\t\t\t\t\tif (fieldRules === undefined) {\n\t\t\t\t\t\t\treturn tuple(field, [])\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn tuple(field, fieldRules)\n\t\t\t\t\t})\n\t\t\t\t\t.reduce<Validation.EntityRules>(\n\t\t\t\t\t\t(ruleSet, [field, rules]) => (rules.length > 0 ? { ...ruleSet, [field]: rules } : ruleSet),\n\t\t\t\t\t\t{},\n\t\t\t\t\t),\n\t\t\t)\n\t\t})\n\t\t.reduce<Validation.Schema>(\n\t\t\t(acc, [name, defs]) => (Object.keys(defs).length > 0 ? { ...acc, [name]: defs } : acc),\n\t\t\t{},\n\t\t)\n}\n"],"names":["rules"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../packages/schema-definition/src/validation/index.ts"],"sourcesContent":["import { tuple } from '../utils'\nimport { SchemaDefinition } from '../model'\nimport { Validation } from '@contember/schema'\nimport { filterEntityDefinition } from '../utils'\n\ntype MessageOrString = Validation.Message | string\n\nexport type ContextPath = Validation.ContextPath | string | undefined\nexport const parsePath = (path: ContextPath): readonly string[] => {\n\tif (!path) {\n\t\treturn []\n\t}\n\tif (typeof path === 'string') {\n\t\treturn path.split('.')\n\t}\n\treturn path\n}\n\nconst ArgumentFactory = {\n\tvalidator: (validator: Validation.Validator): Validation.ValidatorArgument => ({\n\t\ttype: Validation.ArgumentType.validator,\n\t\tvalidator,\n\t}),\n\tpath: (path?: ContextPath): Validation.PathArgument => ({\n\t\ttype: Validation.ArgumentType.path,\n\t\tpath: parsePath(path),\n\t}),\n\tliteral: <V = any>(value: V): Validation.LiteralArgument<V> => ({ type: Validation.ArgumentType.literal, value }),\n}\n\nconst RuleMetaKey = Symbol('Rule')\n\nconst isLegacyDecorator = (target: any): boolean => typeof target === 'object' && target !== null || typeof target === 'function'\n\nfunction addRuleToMetadata(target: any, propertyKeyOrContext: any, ...rule: Validation.ValidationRule[]) {\n\tif (isLegacyDecorator(target)) {\n\t\t// Legacy TypeScript decorators: target is prototype, propertyKeyOrContext is property name\n\t\tconst propertyKey: string | symbol = propertyKeyOrContext\n\t\tconst hasExisting = Reflect.hasMetadata(RuleMetaKey, target, propertyKey)\n\t\tconst existing: Validation.ValidationRule[] = hasExisting ? Reflect.getMetadata(RuleMetaKey, target, propertyKey) : []\n\t\tReflect.defineMetadata(RuleMetaKey, [...rule, ...existing], target, propertyKey)\n\t} else {\n\t\t// TC39 stage 3 decorators: target is undefined, propertyKeyOrContext is context\n\t\tconst context = propertyKeyOrContext as ClassFieldDecoratorContext\n\t\tconst name = String(context.name)\n\t\tconst allRules = (context.metadata[RuleMetaKey] as Record<string, Validation.ValidationRule[]>) ?? {}\n\t\tallRules[name] = [...rule, ...(allRules[name] ?? [])]\n\t\tcontext.metadata[RuleMetaKey] = allRules\n\t}\n}\n\nfunction getTC39Metadata(cls: Function): Record<string, Validation.ValidationRule[]> | undefined {\n\tconst metaSymbol = Symbol.metadata\n\t\t?? Reflect.ownKeys(cls).find((k): k is symbol => typeof k === 'symbol' && String(k) === 'Symbol(Symbol.metadata)')\n\tif (!metaSymbol) return undefined\n\tconst meta = (cls as any)[metaSymbol]\n\treturn meta?.[RuleMetaKey] as Record<string, Validation.ValidationRule[]> | undefined\n}\n\nexport function fluent() {\n\treturn new RuleBranch([], [])\n}\n\nexport class RuleBranch {\n\tconstructor(private conditions: Validation.Validator[], private branchRules: Validation.ValidationRule[]) {}\n\n\tpublic buildRules = (): Validation.ValidationRule[] => {\n\t\tif (this.conditions.length === 0) {\n\t\t\treturn this.branchRules\n\t\t}\n\t\treturn this.branchRules.map(rule => ({\n\t\t\tvalidator: rules.conditional(\n\t\t\t\tthis.conditions.length === 1 ? this.conditions[0] : rules.and(...this.conditions),\n\t\t\t\trule.validator,\n\t\t\t),\n\t\t\tmessage: rule.message,\n\t\t}))\n\t}\n\n\tpublic assert = (validator: Validation.Validator, message: MessageOrString): RuleBranch & PropertyDecorator => {\n\t\tconst messageParsed: Validation.Message = typeof message === 'string' ? { text: message } : message\n\t\tconst newRules = [...this.branchRules, { validator, message: messageParsed }]\n\t\tconst branch = new RuleBranch(this.conditions, newRules)\n\t\tconst propertyDecorator = (target: any, propertyKeyOrContext: any) => {\n\t\t\taddRuleToMetadata(target, propertyKeyOrContext, ...branch.buildRules())\n\t\t}\n\t\treturn Object.assign(propertyDecorator, branch)\n\t}\n\n\tassertPattern = (pattern: RegExp, message: MessageOrString) => this.assert(rules.pattern(pattern), message)\n\tassertEquals = (value: any, message: MessageOrString) => this.assert(rules.equals(value), message)\n\tassertDefined = (message: MessageOrString) => this.assert(rules.defined(), message)\n\tassertNotEmpty = (message: MessageOrString) => this.assert(rules.notEmpty(), message)\n\tassertMinLength = (minLength: number, message: MessageOrString) => this.assert(rules.minLength(minLength), message)\n\tassertMaxLength = (minLength: number, message: MessageOrString) => this.assert(rules.maxLength(minLength), message)\n}\n\nconst andOperation = (...conditions: Validation.Validator[]): Validation.Validator => ({\n\toperation: 'and',\n\targs: conditions.map(validator => ArgumentFactory.validator(validator)),\n})\nconst orOperation = (...conditions: Validation.Validator[]): Validation.Validator => ({\n\toperation: 'or',\n\targs: conditions.map(validator => ArgumentFactory.validator(validator)),\n})\nconst conditionalOperation = (condition: Validation.Validator, rule: Validation.Validator): Validation.Validator => ({\n\toperation: 'conditional',\n\targs: [ArgumentFactory.validator(condition), ArgumentFactory.validator(rule)],\n})\n\nconst patternOperation = (pattern: RegExp): Validation.Validator => ({\n\toperation: 'pattern',\n\targs: [ArgumentFactory.literal([pattern.source, pattern.flags])],\n})\n\nconst lengthRangeOperation = (min: number | null, max: number | null): Validation.Validator => ({\n\toperation: 'lengthRange',\n\targs: [ArgumentFactory.literal(min), ArgumentFactory.literal(max)],\n})\n\nconst rangeOperation = (min: number | null, max: number | null): Validation.Validator => ({\n\toperation: 'range',\n\targs: [ArgumentFactory.literal(min), ArgumentFactory.literal(max)],\n})\n\nconst equalsOperation = (value: any): Validation.Validator => ({\n\toperation: 'equals',\n\targs: [ArgumentFactory.literal(value)],\n})\nconst notOperation = (validator: Validation.Validator): Validation.Validator => ({\n\toperation: 'not',\n\targs: [ArgumentFactory.validator(validator)],\n})\n\nconst emptyOperation = (): Validation.Validator => ({ operation: 'empty', args: [] })\nconst definedOperation = (): Validation.Validator => ({ operation: 'defined', args: [] })\n\nexport const InContextOperation = 'inContext' as const\nconst onOperation = (path: ContextPath, validator: Validation.Validator): Validation.Validator => ({\n\toperation: InContextOperation,\n\targs: [ArgumentFactory.path(path), ArgumentFactory.validator(validator)],\n})\n\nconst everyOperation = (validator: Validation.Validator): Validation.Validator => ({\n\toperation: 'every',\n\targs: [ArgumentFactory.validator(validator)],\n})\n\nconst anyOperation = (validator: Validation.Validator): Validation.Validator => ({\n\toperation: 'any',\n\targs: [ArgumentFactory.validator(validator)],\n})\n\nconst filterOperation = (filter: Validation.Validator, validator: Validation.Validator): Validation.Validator => ({\n\toperation: 'filter',\n\targs: [ArgumentFactory.validator(filter), ArgumentFactory.validator(validator)],\n})\n\nexport const rules = {\n\tequals: equalsOperation,\n\tin: (...value: any[]) => orOperation(...value.map(it => equalsOperation(it))),\n\tpattern: patternOperation,\n\n\tlengthRange: lengthRangeOperation,\n\tminLength: (min: number) => lengthRangeOperation(min, null),\n\tmaxLength: (max: number) => lengthRangeOperation(null, max),\n\n\trange: rangeOperation,\n\tmin: (min: number) => rangeOperation(min, null),\n\tmax: (max: number) => rangeOperation(null, max),\n\n\tdefined: definedOperation,\n\t['empty']: emptyOperation,\n\tnotEmpty: () => notOperation(emptyOperation()),\n\t['null']: () => equalsOperation(null),\n\tnotNull: () => notOperation(equalsOperation(null)),\n\n\tand: andOperation,\n\tor: orOperation,\n\tnot: notOperation,\n\n\tconditional: conditionalOperation,\n\ton: onOperation,\n\n\tfilter: filterOperation,\n\tany: anyOperation,\n\tevery: everyOperation,\n}\n\nexport function when(...conditions: Validation.Validator[]) {\n\treturn new RuleBranch(conditions, [])\n}\n\nexport const assert = (validator: Validation.Validator, message: MessageOrString) => fluent().assert(validator, message)\n/** alias for assertDefined */\nexport const required = (message: MessageOrString) => fluent().assertDefined(message)\nexport const assertDefined = (message: MessageOrString) => fluent().assertDefined(message)\nexport const assertNotEmpty = (message: MessageOrString) => fluent().assertNotEmpty(message)\nexport const assertPattern = (pattern: RegExp, message: MessageOrString) => fluent().assertPattern(pattern, message)\nexport const assertMinLength = (min: number, message: MessageOrString) => fluent().assertMinLength(min, message)\nexport const assertMaxLength = (min: number, message: MessageOrString) => fluent().assertMaxLength(min, message)\n\nexport const combine = (...decorators: PropertyDecorator[]): PropertyDecorator => (target: any, propertyKeyOrContext: any) =>\n\tdecorators.forEach(it => (it as any)(target, propertyKeyOrContext))\n\nexport function parseDefinition(\n\tdefinitions: Record<string, any>,\n): Validation.Schema {\n\treturn filterEntityDefinition(definitions)\n\t\t.map(([name, definition]) => {\n\t\t\tconst target = definition.prototype\n\t\t\tconst defInstance = new definition()\n\t\t\tconst fields = Object.keys(defInstance)\n\t\t\tconst tc39Rules = getTC39Metadata(definition)\n\t\t\treturn tuple(\n\t\t\t\tname,\n\t\t\t\tfields\n\t\t\t\t\t.map(field => {\n\t\t\t\t\t\tconst fieldRules: Validation.ValidationRule[] | undefined = tc39Rules?.[field]\n\t\t\t\t\t\t\t?? (typeof Reflect.getMetadata === 'function' ? Reflect.getMetadata(RuleMetaKey, target, field) : undefined)\n\t\t\t\t\t\tif (fieldRules === undefined) {\n\t\t\t\t\t\t\treturn tuple(field, [])\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn tuple(field, fieldRules)\n\t\t\t\t\t})\n\t\t\t\t\t.reduce<Validation.EntityRules>(\n\t\t\t\t\t\t(ruleSet, [field, rules]) => (rules.length > 0 ? { ...ruleSet, [field]: rules } : ruleSet),\n\t\t\t\t\t\t{},\n\t\t\t\t\t),\n\t\t\t)\n\t\t})\n\t\t.reduce<Validation.Schema>(\n\t\t\t(acc, [name, defs]) => (Object.keys(defs).length > 0 ? { ...acc, [name]: defs } : acc),\n\t\t\t{},\n\t\t)\n}\n"],"names":["rules"],"mappings":";;;;;;;AAQO,MAAM,YAAY,CAAC,SAAyC;AAClE,MAAI,CAAC,MAAM;AACV,WAAO,CAAA;AAAA,EACR;AACA,MAAI,OAAO,SAAS,UAAU;AAC7B,WAAO,KAAK,MAAM,GAAG;AAAA,EACtB;AACA,SAAO;AACR;AAEA,MAAM,kBAAkB;AAAA,EACvB,WAAW,CAAC,eAAmE;AAAA,IAC9E,MAAM,WAAW,aAAa;AAAA,IAC9B;AAAA,EAAA;AAAA,EAED,MAAM,CAAC,UAAiD;AAAA,IACvD,MAAM,WAAW,aAAa;AAAA,IAC9B,MAAM,UAAU,IAAI;AAAA,EAAA;AAAA,EAErB,SAAS,CAAU,WAA6C,EAAE,MAAM,WAAW,aAAa,SAAS,MAAA;AAC1G;AAEA,MAAM,qCAAqB,MAAM;AAEjC,MAAM,oBAAoB,CAAC,WAAyB,OAAO,WAAW,YAAY,WAAW,QAAQ,OAAO,WAAW;AAEvH,SAAS,kBAAkB,QAAa,yBAA8B,MAAmC;AACxG,MAAI,kBAAkB,MAAM,GAAG;AAE9B,UAAM,cAA+B;AACrC,UAAM,cAAc,QAAQ,YAAY,aAAa,QAAQ,WAAW;AACxE,UAAM,WAAwC,cAAc,QAAQ,YAAY,aAAa,QAAQ,WAAW,IAAI,CAAA;AACpH,YAAQ,eAAe,aAAa,CAAC,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,WAAW;AAAA,EAChF,OAAO;AAEN,UAAM,UAAU;AAChB,UAAM,OAAO,OAAO,QAAQ,IAAI;AAChC,UAAM,WAAY,QAAQ,SAAS,WAAW,KAAqD,CAAA;AACnG,aAAS,IAAI,IAAI,CAAC,GAAG,MAAM,GAAI,SAAS,IAAI,KAAK,EAAG;AACpD,YAAQ,SAAS,WAAW,IAAI;AAAA,EACjC;AACD;AAEA,SAAS,gBAAgB,KAAwE;AAChG,QAAM,aAAa,OAAO,YACtB,QAAQ,QAAQ,GAAG,EAAE,KAAK,CAAC,MAAmB,OAAO,MAAM,YAAY,OAAO,CAAC,MAAM,yBAAyB;AAClH,MAAI,CAAC,WAAY,QAAO;AACxB,QAAM,OAAQ,IAAY,UAAU;AACpC,SAAO,OAAO,WAAW;AAC1B;AAEO,SAAS,SAAS;AACxB,SAAO,IAAI,WAAW,CAAA,GAAI,EAAE;AAC7B;AAEO,MAAM,WAAW;AAAA,EACvB,YAAoB,YAA4C,aAA0C;AAAtF,SAAA,aAAA;AAA4C,SAAA,cAAA;AAEhE,kBAAA,MAAO,cAAa,MAAmC;AACtD,UAAI,KAAK,WAAW,WAAW,GAAG;AACjC,eAAO,KAAK;AAAA,MACb;AACA,aAAO,KAAK,YAAY,IAAI,CAAA,UAAS;AAAA,QACpC,WAAW,MAAM;AAAA,UAChB,KAAK,WAAW,WAAW,IAAI,KAAK,WAAW,CAAC,IAAI,MAAM,IAAI,GAAG,KAAK,UAAU;AAAA,UAChF,KAAK;AAAA,QAAA;AAAA,QAEN,SAAS,KAAK;AAAA,MAAA,EACb;AAAA,IACH,CAAA;AAEA,kBAAA,MAAO,UAAS,CAAC,WAAiC,YAA6D;AAC9G,YAAM,gBAAoC,OAAO,YAAY,WAAW,EAAE,MAAM,YAAY;AAC5F,YAAM,WAAW,CAAC,GAAG,KAAK,aAAa,EAAE,WAAW,SAAS,eAAe;AAC5E,YAAM,SAAS,IAAI,WAAW,KAAK,YAAY,QAAQ;AACvD,YAAM,oBAAoB,CAAC,QAAa,yBAA8B;AACrE,0BAAkB,QAAQ,sBAAsB,GAAG,OAAO,YAAY;AAAA,MACvE;AACA,aAAO,OAAO,OAAO,mBAAmB,MAAM;AAAA,IAC/C,CAAA;AAEA,kBAAA,MAAA,iBAAgB,CAAC,SAAiB,YAA6B,KAAK,OAAO,MAAM,QAAQ,OAAO,GAAG,OAAO,CAAA;AAC1G,kBAAA,MAAA,gBAAe,CAAC,OAAY,YAA6B,KAAK,OAAO,MAAM,OAAO,KAAK,GAAG,OAAO,CAAA;AACjG,kBAAA,MAAA,iBAAgB,CAAC,YAA6B,KAAK,OAAO,MAAM,WAAW,OAAO,CAAA;AAClF,kBAAA,MAAA,kBAAiB,CAAC,YAA6B,KAAK,OAAO,MAAM,YAAY,OAAO,CAAA;AACpF,kBAAA,MAAA,mBAAkB,CAAC,WAAmB,YAA6B,KAAK,OAAO,MAAM,UAAU,SAAS,GAAG,OAAO,CAAA;AAClH,kBAAA,MAAA,mBAAkB,CAAC,WAAmB,YAA6B,KAAK,OAAO,MAAM,UAAU,SAAS,GAAG,OAAO,CAAA;AAAA,EA9BP;AA+B5G;AAEA,MAAM,eAAe,IAAI,gBAA8D;AAAA,EACtF,WAAW;AAAA,EACX,MAAM,WAAW,IAAI,eAAa,gBAAgB,UAAU,SAAS,CAAC;AACvE;AACA,MAAM,cAAc,IAAI,gBAA8D;AAAA,EACrF,WAAW;AAAA,EACX,MAAM,WAAW,IAAI,eAAa,gBAAgB,UAAU,SAAS,CAAC;AACvE;AACA,MAAM,uBAAuB,CAAC,WAAiC,UAAsD;AAAA,EACpH,WAAW;AAAA,EACX,MAAM,CAAC,gBAAgB,UAAU,SAAS,GAAG,gBAAgB,UAAU,IAAI,CAAC;AAC7E;AAEA,MAAM,mBAAmB,CAAC,aAA2C;AAAA,EACpE,WAAW;AAAA,EACX,MAAM,CAAC,gBAAgB,QAAQ,CAAC,QAAQ,QAAQ,QAAQ,KAAK,CAAC,CAAC;AAChE;AAEA,MAAM,uBAAuB,CAAC,KAAoB,SAA8C;AAAA,EAC/F,WAAW;AAAA,EACX,MAAM,CAAC,gBAAgB,QAAQ,GAAG,GAAG,gBAAgB,QAAQ,GAAG,CAAC;AAClE;AAEA,MAAM,iBAAiB,CAAC,KAAoB,SAA8C;AAAA,EACzF,WAAW;AAAA,EACX,MAAM,CAAC,gBAAgB,QAAQ,GAAG,GAAG,gBAAgB,QAAQ,GAAG,CAAC;AAClE;AAEA,MAAM,kBAAkB,CAAC,WAAsC;AAAA,EAC9D,WAAW;AAAA,EACX,MAAM,CAAC,gBAAgB,QAAQ,KAAK,CAAC;AACtC;AACA,MAAM,eAAe,CAAC,eAA2D;AAAA,EAChF,WAAW;AAAA,EACX,MAAM,CAAC,gBAAgB,UAAU,SAAS,CAAC;AAC5C;AAEA,MAAM,iBAAiB,OAA6B,EAAE,WAAW,SAAS,MAAM,CAAA,EAAC;AACjF,MAAM,mBAAmB,OAA6B,EAAE,WAAW,WAAW,MAAM,CAAA,EAAC;AAE9E,MAAM,qBAAqB;AAClC,MAAM,cAAc,CAAC,MAAmB,eAA2D;AAAA,EAClG,WAAW;AAAA,EACX,MAAM,CAAC,gBAAgB,KAAK,IAAI,GAAG,gBAAgB,UAAU,SAAS,CAAC;AACxE;AAEA,MAAM,iBAAiB,CAAC,eAA2D;AAAA,EAClF,WAAW;AAAA,EACX,MAAM,CAAC,gBAAgB,UAAU,SAAS,CAAC;AAC5C;AAEA,MAAM,eAAe,CAAC,eAA2D;AAAA,EAChF,WAAW;AAAA,EACX,MAAM,CAAC,gBAAgB,UAAU,SAAS,CAAC;AAC5C;AAEA,MAAM,kBAAkB,CAAC,QAA8B,eAA2D;AAAA,EACjH,WAAW;AAAA,EACX,MAAM,CAAC,gBAAgB,UAAU,MAAM,GAAG,gBAAgB,UAAU,SAAS,CAAC;AAC/E;AAEO,MAAM,QAAQ;AAAA,EACpB,QAAQ;AAAA,EACR,IAAI,IAAI,UAAiB,YAAY,GAAG,MAAM,IAAI,CAAA,OAAM,gBAAgB,EAAE,CAAC,CAAC;AAAA,EAC5E,SAAS;AAAA,EAET,aAAa;AAAA,EACb,WAAW,CAAC,QAAgB,qBAAqB,KAAK,IAAI;AAAA,EAC1D,WAAW,CAAC,QAAgB,qBAAqB,MAAM,GAAG;AAAA,EAE1D,OAAO;AAAA,EACP,KAAK,CAAC,QAAgB,eAAe,KAAK,IAAI;AAAA,EAC9C,KAAK,CAAC,QAAgB,eAAe,MAAM,GAAG;AAAA,EAE9C,SAAS;AAAA,EACT,CAAC,OAAO,GAAG;AAAA,EACX,UAAU,MAAM,aAAa,gBAAgB;AAAA,EAC7C,CAAC,MAAM,GAAG,MAAM,gBAAgB,IAAI;AAAA,EACpC,SAAS,MAAM,aAAa,gBAAgB,IAAI,CAAC;AAAA,EAEjD,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EAEL,aAAa;AAAA,EACb,IAAI;AAAA,EAEJ,QAAQ;AAAA,EACR,KAAK;AAAA,EACL,OAAO;AACR;AAEO,SAAS,QAAQ,YAAoC;AAC3D,SAAO,IAAI,WAAW,YAAY,EAAE;AACrC;AAEO,MAAM,SAAS,CAAC,WAAiC,YAA6B,SAAS,OAAO,WAAW,OAAO;AAEhH,MAAM,WAAW,CAAC,YAA6B,OAAA,EAAS,cAAc,OAAO;AAC7E,MAAM,gBAAgB,CAAC,YAA6B,OAAA,EAAS,cAAc,OAAO;AAClF,MAAM,iBAAiB,CAAC,YAA6B,OAAA,EAAS,eAAe,OAAO;AACpF,MAAM,gBAAgB,CAAC,SAAiB,YAA6B,SAAS,cAAc,SAAS,OAAO;AAC5G,MAAM,kBAAkB,CAAC,KAAa,YAA6B,SAAS,gBAAgB,KAAK,OAAO;AACxG,MAAM,kBAAkB,CAAC,KAAa,YAA6B,SAAS,gBAAgB,KAAK,OAAO;AAExG,MAAM,UAAU,IAAI,eAAuD,CAAC,QAAa,yBAC/F,WAAW,QAAQ,CAAA,OAAO,GAAW,QAAQ,oBAAoB,CAAC;AAE5D,SAAS,gBACf,aACoB;AACpB,SAAO,uBAAuB,WAAW,EACvC,IAAI,CAAC,CAAC,MAAM,UAAU,MAAM;AAC5B,UAAM,SAAS,WAAW;AAC1B,UAAM,cAAc,IAAI,WAAA;AACxB,UAAM,SAAS,OAAO,KAAK,WAAW;AACtC,UAAM,YAAY,gBAAgB,UAAU;AAC5C,WAAO;AAAA,MACN;AAAA,MACA,OACE,IAAI,CAAA,UAAS;AACb,cAAM,aAAsD,YAAY,KAAK,MACxE,OAAO,QAAQ,gBAAgB,aAAa,QAAQ,YAAY,aAAa,QAAQ,KAAK,IAAI;AACnG,YAAI,eAAe,QAAW;AAC7B,iBAAO,MAAM,OAAO,EAAE;AAAA,QACvB;AACA,eAAO,MAAM,OAAO,UAAU;AAAA,MAC/B,CAAC,EACA;AAAA,QACA,CAAC,SAAS,CAAC,OAAOA,MAAK,MAAOA,OAAM,SAAS,IAAI,EAAE,GAAG,SAAS,CAAC,KAAK,GAAGA,WAAU;AAAA,QAClF,CAAA;AAAA,MAAC;AAAA,IACF;AAAA,EAEH,CAAC,EACA;AAAA,IACA,CAAC,KAAK,CAAC,MAAM,IAAI,MAAO,OAAO,KAAK,IAAI,EAAE,SAAS,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI,GAAG,SAAS;AAAA,IAClF,CAAA;AAAA,EAAC;AAEJ;"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const index = require("./src/acl/definition/index.cjs");
|
|
4
4
|
const index$1 = require("./src/actions/definition/index.cjs");
|
|
5
|
-
const index$
|
|
5
|
+
const index$2 = require("./src/validation/index.cjs");
|
|
6
6
|
const SchemaBuilder = require("./src/model/builder/SchemaBuilder.cjs");
|
|
7
7
|
const ColumnBuilder = require("./src/model/builder/ColumnBuilder.cjs");
|
|
8
8
|
const ManyHasManyBuilder = require("./src/model/builder/ManyHasManyBuilder.cjs");
|
|
@@ -10,32 +10,32 @@ const OneHasManyBuilder = require("./src/model/builder/OneHasManyBuilder.cjs");
|
|
|
10
10
|
const ManyHasOneBuilder = require("./src/model/builder/ManyHasOneBuilder.cjs");
|
|
11
11
|
const OneHasOneBuilder = require("./src/model/builder/OneHasOneBuilder.cjs");
|
|
12
12
|
const FieldBuilder = require("./src/model/builder/FieldBuilder.cjs");
|
|
13
|
-
const index$
|
|
13
|
+
const index$3 = require("./src/model/definition/index.cjs");
|
|
14
14
|
const createSchema = require("./src/createSchema.cjs");
|
|
15
15
|
const schemaUtils = require("@contember/schema-utils");
|
|
16
16
|
const PermissionsBuilder = require("./src/acl/builder/PermissionsBuilder.cjs");
|
|
17
17
|
const presets = require("./src/presets.cjs");
|
|
18
|
-
const customPrimary = require("./src/acl/definition/customPrimary.cjs");
|
|
19
|
-
const permissions = require("./src/acl/definition/permissions.cjs");
|
|
20
|
-
const roles = require("./src/acl/definition/roles.cjs");
|
|
21
|
-
const variables = require("./src/acl/definition/variables.cjs");
|
|
22
|
-
const references = require("./src/acl/definition/references.cjs");
|
|
23
|
-
const triggers = require("./src/actions/definition/triggers.cjs");
|
|
24
|
-
const targets = require("./src/actions/definition/targets.cjs");
|
|
25
|
-
const extensions = require("./src/model/definition/extensions.cjs");
|
|
26
|
-
const IndexDefinition = require("./src/model/definition/IndexDefinition.cjs");
|
|
27
|
-
const UniqueDefinition = require("./src/model/definition/UniqueDefinition.cjs");
|
|
28
|
-
const ViewDefinition = require("./src/model/definition/ViewDefinition.cjs");
|
|
29
|
-
const EventLogDefinition = require("./src/model/definition/EventLogDefinition.cjs");
|
|
30
|
-
const OrderByDefinition = require("./src/model/definition/OrderByDefinition.cjs");
|
|
31
|
-
const ColumnDefinition = require("./src/model/definition/fieldDefinitions/ColumnDefinition.cjs");
|
|
32
|
-
const ManyHasManyDefinition = require("./src/model/definition/fieldDefinitions/ManyHasManyDefinition.cjs");
|
|
33
|
-
const ManyHasManyInverseDefinition = require("./src/model/definition/fieldDefinitions/ManyHasManyInverseDefinition.cjs");
|
|
34
|
-
const ManyHasOneDefinition = require("./src/model/definition/fieldDefinitions/ManyHasOneDefinition.cjs");
|
|
35
|
-
const OneHasOneDefinition = require("./src/model/definition/fieldDefinitions/OneHasOneDefinition.cjs");
|
|
36
|
-
const OneHasOneInverseDefinition = require("./src/model/definition/fieldDefinitions/OneHasOneInverseDefinition.cjs");
|
|
37
|
-
const OneHasManyDefinition = require("./src/model/definition/fieldDefinitions/OneHasManyDefinition.cjs");
|
|
38
18
|
const EnumDefinition = require("./src/model/definition/EnumDefinition.cjs");
|
|
19
|
+
const OneHasManyDefinition = require("./src/model/definition/fieldDefinitions/OneHasManyDefinition.cjs");
|
|
20
|
+
const OneHasOneInverseDefinition = require("./src/model/definition/fieldDefinitions/OneHasOneInverseDefinition.cjs");
|
|
21
|
+
const OneHasOneDefinition = require("./src/model/definition/fieldDefinitions/OneHasOneDefinition.cjs");
|
|
22
|
+
const ManyHasOneDefinition = require("./src/model/definition/fieldDefinitions/ManyHasOneDefinition.cjs");
|
|
23
|
+
const ManyHasManyInverseDefinition = require("./src/model/definition/fieldDefinitions/ManyHasManyInverseDefinition.cjs");
|
|
24
|
+
const ManyHasManyDefinition = require("./src/model/definition/fieldDefinitions/ManyHasManyDefinition.cjs");
|
|
25
|
+
const ColumnDefinition = require("./src/model/definition/fieldDefinitions/ColumnDefinition.cjs");
|
|
26
|
+
const OrderByDefinition = require("./src/model/definition/OrderByDefinition.cjs");
|
|
27
|
+
const EventLogDefinition = require("./src/model/definition/EventLogDefinition.cjs");
|
|
28
|
+
const ViewDefinition = require("./src/model/definition/ViewDefinition.cjs");
|
|
29
|
+
const UniqueDefinition = require("./src/model/definition/UniqueDefinition.cjs");
|
|
30
|
+
const IndexDefinition = require("./src/model/definition/IndexDefinition.cjs");
|
|
31
|
+
const extensions = require("./src/model/definition/extensions.cjs");
|
|
32
|
+
const targets = require("./src/actions/definition/targets.cjs");
|
|
33
|
+
const triggers = require("./src/actions/definition/triggers.cjs");
|
|
34
|
+
const references = require("./src/acl/definition/references.cjs");
|
|
35
|
+
const variables = require("./src/acl/definition/variables.cjs");
|
|
36
|
+
const roles = require("./src/acl/definition/roles.cjs");
|
|
37
|
+
const permissions = require("./src/acl/definition/permissions.cjs");
|
|
38
|
+
const customPrimary = require("./src/acl/definition/customPrimary.cjs");
|
|
39
39
|
const c = {
|
|
40
40
|
// ACL
|
|
41
41
|
// ACL entity decorators
|
|
@@ -87,20 +87,20 @@ const c = {
|
|
|
87
87
|
createEnum: EnumDefinition.createEnum,
|
|
88
88
|
// Validation
|
|
89
89
|
// Validation field decorators
|
|
90
|
-
Assert: index$
|
|
91
|
-
Required: index$
|
|
92
|
-
AssertDefined: index$
|
|
93
|
-
AssertNotEmpty: index$
|
|
94
|
-
AssertPattern: index$
|
|
95
|
-
AssertMinLength: index$
|
|
96
|
-
AssertMaxLength: index$
|
|
97
|
-
ValidateWhen: index$
|
|
90
|
+
Assert: index$2.assert,
|
|
91
|
+
Required: index$2.required,
|
|
92
|
+
AssertDefined: index$2.assertDefined,
|
|
93
|
+
AssertNotEmpty: index$2.assertNotEmpty,
|
|
94
|
+
AssertPattern: index$2.assertPattern,
|
|
95
|
+
AssertMinLength: index$2.assertMinLength,
|
|
96
|
+
AssertMaxLength: index$2.assertMaxLength,
|
|
97
|
+
ValidateWhen: index$2.when,
|
|
98
98
|
// Validation utilities
|
|
99
|
-
rules: index$
|
|
99
|
+
rules: index$2.rules
|
|
100
100
|
};
|
|
101
101
|
exports.AclDefinition = index;
|
|
102
102
|
exports.ActionsDefinition = index$1;
|
|
103
|
-
exports.InputValidation = index$
|
|
103
|
+
exports.InputValidation = index$2;
|
|
104
104
|
exports.SchemaBuilder = SchemaBuilder.default;
|
|
105
105
|
exports.ColumnBuilder = ColumnBuilder;
|
|
106
106
|
exports.ManyHasManyBuilder = ManyHasManyBuilder;
|
|
@@ -108,7 +108,7 @@ exports.OneHasManyBuilder = OneHasManyBuilder;
|
|
|
108
108
|
exports.ManyHasOneBuilder = ManyHasOneBuilder;
|
|
109
109
|
exports.OneHasOneBuilder = OneHasOneBuilder;
|
|
110
110
|
exports.FieldBuilder = FieldBuilder;
|
|
111
|
-
exports.SchemaDefinition = index$
|
|
111
|
+
exports.SchemaDefinition = index$3;
|
|
112
112
|
exports.createSchema = createSchema.createSchema;
|
|
113
113
|
Object.defineProperty(exports, "AllowAllPermissionFactory", {
|
|
114
114
|
enumerable: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../packages/schema-definition/src/index.ts"],"sourcesContent":["import * as AclDefinition from './acl/definition'\nimport { Role } from './acl/definition'\nimport * as ActionsDefinition from './actions/definition'\nimport * as InputValidation from './validation'\nimport { SchemaDefinition } from './model'\nimport { createSchema } from './createSchema'\n\nexport { AllowAllPermissionFactory } from '@contember/schema-utils'\nexport { PermissionsBuilder } from './acl/builder/PermissionsBuilder'\nexport * from './model'\nexport * from './presets'\n\nexport type { Role }\nexport type { VariableDefinition } from './acl/definition'\nexport type {\n\tColumnDefinition,\n\
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../packages/schema-definition/src/index.ts"],"sourcesContent":["import * as AclDefinition from './acl/definition'\nimport { Role } from './acl/definition'\nimport * as ActionsDefinition from './actions/definition'\nimport * as InputValidation from './validation'\nimport { SchemaDefinition } from './model'\nimport { createSchema } from './createSchema'\n\nexport { AllowAllPermissionFactory } from '@contember/schema-utils'\nexport { PermissionsBuilder } from './acl/builder/PermissionsBuilder'\nexport * from './model'\nexport * from './presets'\n\nexport type { Role }\nexport type { VariableDefinition } from './acl/definition'\nexport type {\n\tColumnDefinition,\n\tEnumDefinition,\n\tFieldDefinition,\n\tManyHasManyDefinition,\n\tManyHasManyInverseDefinition,\n\tManyHasOneDefinition,\n\tOneHasManyDefinition,\n\tOneHasOneDefinition,\n\tOneHasOneInverseDefinition,\n} from './model/definition'\n\nexport { AclDefinition, ActionsDefinition, createSchema, InputValidation, SchemaDefinition }\n\nexport const c = {\n\t// ACL\n\t// ACL entity decorators\n\tAllowCustomPrimary: AclDefinition.allowCustomPrimary,\n\tAllow: AclDefinition.allow,\n\t// ACL factories\n\tcreateRole: AclDefinition.createRole,\n\tcreateConditionVariable: AclDefinition.createConditionVariable,\n\tcreateEntityVariable: AclDefinition.createEntityVariable,\n\tcreatePredefinedVariable: AclDefinition.createPredefinedVariable,\n\t// ACL utilities\n\tcanCreate: AclDefinition.canCreate,\n\tcanRead: AclDefinition.canRead,\n\tcanUpdate: AclDefinition.canUpdate,\n\tcanDelete: AclDefinition.canDelete,\n\n\t// Actions\n\t// Actions entity decorators\n\tWatch: ActionsDefinition.watch,\n\tTrigger: ActionsDefinition.trigger,\n\t// Actions factories\n\tcreateActionsTarget: ActionsDefinition.createTarget,\n\n\t// Model\n\t// Model entity decorators\n\tExtendEntity: SchemaDefinition.extendEntity,\n\tIndex: SchemaDefinition.Index,\n\tUnique: SchemaDefinition.Unique,\n\tView: SchemaDefinition.View,\n\tDisableEventLog: SchemaDefinition.DisableEventLog,\n\tOrderBy: SchemaDefinition.OrderBy,\n\t// Model field factories\n\tcolumn: SchemaDefinition.column,\n\tboolColumn: SchemaDefinition.boolColumn,\n\tintColumn: SchemaDefinition.intColumn,\n\tdoubleColumn: SchemaDefinition.doubleColumn,\n\tdateColumn: SchemaDefinition.dateColumn,\n\ttimeColumn: SchemaDefinition.timeColumn,\n\tdateTimeColumn: SchemaDefinition.dateTimeColumn,\n\tjsonColumn: SchemaDefinition.jsonColumn,\n\tstringColumn: SchemaDefinition.stringColumn,\n\tenumColumn: SchemaDefinition.enumColumn,\n\tuuidColumn: SchemaDefinition.uuidColumn,\n\tmanyHasMany: SchemaDefinition.manyHasMany,\n\tmanyHasManyInverse: SchemaDefinition.manyHasManyInverse,\n\tmanyHasOne: SchemaDefinition.manyHasOne,\n\toneHasOne: SchemaDefinition.oneHasOne,\n\toneHasOneInverse: SchemaDefinition.oneHasOneInverse,\n\toneHasMany: SchemaDefinition.oneHasMany,\n\t// Model factories\n\tcreateEnum: SchemaDefinition.createEnum,\n\n\t// Validation\n\t// Validation field decorators\n\tAssert: InputValidation.assert,\n\tRequired: InputValidation.required,\n\tAssertDefined: InputValidation.assertDefined,\n\tAssertNotEmpty: InputValidation.assertNotEmpty,\n\tAssertPattern: InputValidation.assertPattern,\n\tAssertMinLength: InputValidation.assertMinLength,\n\tAssertMaxLength: InputValidation.assertMaxLength,\n\tValidateWhen: InputValidation.when,\n\t// Validation utilities\n\trules: InputValidation.rules,\n}\n"],"names":["AclDefinition.allowCustomPrimary","AclDefinition.allow","AclDefinition.createRole","AclDefinition.createConditionVariable","AclDefinition.createEntityVariable","AclDefinition.createPredefinedVariable","AclDefinition.canCreate","AclDefinition.canRead","AclDefinition.canUpdate","AclDefinition.canDelete","ActionsDefinition.watch","ActionsDefinition.trigger","ActionsDefinition.createTarget","SchemaDefinition.extendEntity","SchemaDefinition.Index","SchemaDefinition.Unique","SchemaDefinition.View","SchemaDefinition.DisableEventLog","SchemaDefinition.OrderBy","SchemaDefinition.column","SchemaDefinition.boolColumn","SchemaDefinition.intColumn","SchemaDefinition.doubleColumn","SchemaDefinition.dateColumn","SchemaDefinition.timeColumn","SchemaDefinition.dateTimeColumn","SchemaDefinition.jsonColumn","SchemaDefinition.stringColumn","SchemaDefinition.enumColumn","SchemaDefinition.uuidColumn","SchemaDefinition.manyHasMany","SchemaDefinition.manyHasManyInverse","SchemaDefinition.manyHasOne","SchemaDefinition.oneHasOne","SchemaDefinition.oneHasOneInverse","SchemaDefinition.oneHasMany","SchemaDefinition.createEnum","InputValidation.assert","InputValidation.required","InputValidation.assertDefined","InputValidation.assertNotEmpty","InputValidation.assertPattern","InputValidation.assertMinLength","InputValidation.assertMaxLength","InputValidation.when","InputValidation.rules"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BO,MAAM,IAAI;AAAA;AAAA;AAAA,EAGhB,oBAAoBA,cAAAA;AAAAA,EACpB,OAAOC,YAAAA;AAAAA;AAAAA,EAEP,YAAYC,MAAAA;AAAAA,EACZ,yBAAyBC,UAAAA;AAAAA,EACzB,sBAAsBC,UAAAA;AAAAA,EACtB,0BAA0BC,UAAAA;AAAAA;AAAAA,EAE1B,WAAWC,WAAAA;AAAAA,EACX,SAASC,WAAAA;AAAAA,EACT,WAAWC,WAAAA;AAAAA,EACX,WAAWC,WAAAA;AAAAA;AAAAA;AAAAA,EAIX,OAAOC,SAAAA;AAAAA,EACP,SAASC,SAAAA;AAAAA;AAAAA,EAET,qBAAqBC,QAAAA;AAAAA;AAAAA;AAAAA,EAIrB,cAAcC,WAAAA;AAAAA,EACd,OAAOC,gBAAAA;AAAAA,EACP,QAAQC,iBAAAA;AAAAA,EACR,MAAMC,eAAAA;AAAAA,EACN,iBAAiBC,mBAAAA;AAAAA,EACjB,SAASC,kBAAAA;AAAAA;AAAAA,EAET,QAAQC,iBAAAA;AAAAA,EACR,YAAYC,iBAAAA;AAAAA,EACZ,WAAWC,iBAAAA;AAAAA,EACX,cAAcC,iBAAAA;AAAAA,EACd,YAAYC,iBAAAA;AAAAA,EACZ,YAAYC,iBAAAA;AAAAA,EACZ,gBAAgBC,iBAAAA;AAAAA,EAChB,YAAYC,iBAAAA;AAAAA,EACZ,cAAcC,iBAAAA;AAAAA,EACd,YAAYC,iBAAAA;AAAAA,EACZ,YAAYC,iBAAAA;AAAAA,EACZ,aAAaC,sBAAAA;AAAAA,EACb,oBAAoBC,6BAAAA;AAAAA,EACpB,YAAYC,qBAAAA;AAAAA,EACZ,WAAWC,oBAAAA;AAAAA,EACX,kBAAkBC,2BAAAA;AAAAA,EAClB,YAAYC,qBAAAA;AAAAA;AAAAA,EAEZ,YAAYC,eAAAA;AAAAA;AAAAA;AAAAA,EAIZ,QAAQC,QAAAA;AAAAA,EACR,UAAUC,QAAAA;AAAAA,EACV,eAAeC,QAAAA;AAAAA,EACf,gBAAgBC,QAAAA;AAAAA,EAChB,eAAeC,QAAAA;AAAAA,EACf,iBAAiBC,QAAAA;AAAAA,EACjB,iBAAiBC,QAAAA;AAAAA,EACjB,cAAcC,QAAAA;AAAAA;AAAAA,EAEd,OAAOC,QAAAA;AACR;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/production/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as index from "./src/acl/definition/index.js";
|
|
2
2
|
import * as index$1 from "./src/actions/definition/index.js";
|
|
3
|
-
import {
|
|
4
|
-
import * as index$
|
|
3
|
+
import { rules, when, assertMaxLength, assertMinLength, assertPattern, assertNotEmpty, assertDefined, required, assert } from "./src/validation/index.js";
|
|
4
|
+
import * as index$2 from "./src/validation/index.js";
|
|
5
5
|
import { default as default2 } from "./src/model/builder/SchemaBuilder.js";
|
|
6
6
|
import { default as default3 } from "./src/model/builder/ColumnBuilder.js";
|
|
7
7
|
import { default as default4 } from "./src/model/builder/ManyHasManyBuilder.js";
|
|
@@ -9,32 +9,32 @@ import { default as default5 } from "./src/model/builder/OneHasManyBuilder.js";
|
|
|
9
9
|
import { default as default6 } from "./src/model/builder/ManyHasOneBuilder.js";
|
|
10
10
|
import { default as default7 } from "./src/model/builder/OneHasOneBuilder.js";
|
|
11
11
|
import { default as default8 } from "./src/model/builder/FieldBuilder.js";
|
|
12
|
-
import * as index$
|
|
12
|
+
import * as index$3 from "./src/model/definition/index.js";
|
|
13
13
|
import { createSchema } from "./src/createSchema.js";
|
|
14
14
|
import { AllowAllPermissionFactory } from "@contember/schema-utils";
|
|
15
15
|
import { PermissionsBuilder } from "./src/acl/builder/PermissionsBuilder.js";
|
|
16
16
|
import { settingsPresets } from "./src/presets.js";
|
|
17
|
-
import { allowCustomPrimary } from "./src/acl/definition/customPrimary.js";
|
|
18
|
-
import { allow } from "./src/acl/definition/permissions.js";
|
|
19
|
-
import { createRole } from "./src/acl/definition/roles.js";
|
|
20
|
-
import { createConditionVariable, createEntityVariable, createPredefinedVariable } from "./src/acl/definition/variables.js";
|
|
21
|
-
import { canCreate, canRead, canUpdate, canDelete } from "./src/acl/definition/references.js";
|
|
22
|
-
import { watch, trigger } from "./src/actions/definition/triggers.js";
|
|
23
|
-
import { createTarget } from "./src/actions/definition/targets.js";
|
|
24
|
-
import { extendEntity } from "./src/model/definition/extensions.js";
|
|
25
|
-
import { Index } from "./src/model/definition/IndexDefinition.js";
|
|
26
|
-
import { Unique } from "./src/model/definition/UniqueDefinition.js";
|
|
27
|
-
import { View } from "./src/model/definition/ViewDefinition.js";
|
|
28
|
-
import { DisableEventLog } from "./src/model/definition/EventLogDefinition.js";
|
|
29
|
-
import { OrderBy } from "./src/model/definition/OrderByDefinition.js";
|
|
30
|
-
import { column, boolColumn, intColumn, doubleColumn, dateColumn, timeColumn, dateTimeColumn, jsonColumn, stringColumn, enumColumn, uuidColumn } from "./src/model/definition/fieldDefinitions/ColumnDefinition.js";
|
|
31
|
-
import { manyHasMany } from "./src/model/definition/fieldDefinitions/ManyHasManyDefinition.js";
|
|
32
|
-
import { manyHasManyInverse } from "./src/model/definition/fieldDefinitions/ManyHasManyInverseDefinition.js";
|
|
33
|
-
import { manyHasOne } from "./src/model/definition/fieldDefinitions/ManyHasOneDefinition.js";
|
|
34
|
-
import { oneHasOne } from "./src/model/definition/fieldDefinitions/OneHasOneDefinition.js";
|
|
35
|
-
import { oneHasOneInverse } from "./src/model/definition/fieldDefinitions/OneHasOneInverseDefinition.js";
|
|
36
|
-
import { oneHasMany } from "./src/model/definition/fieldDefinitions/OneHasManyDefinition.js";
|
|
37
17
|
import { createEnum } from "./src/model/definition/EnumDefinition.js";
|
|
18
|
+
import { oneHasMany } from "./src/model/definition/fieldDefinitions/OneHasManyDefinition.js";
|
|
19
|
+
import { oneHasOneInverse } from "./src/model/definition/fieldDefinitions/OneHasOneInverseDefinition.js";
|
|
20
|
+
import { oneHasOne } from "./src/model/definition/fieldDefinitions/OneHasOneDefinition.js";
|
|
21
|
+
import { manyHasOne } from "./src/model/definition/fieldDefinitions/ManyHasOneDefinition.js";
|
|
22
|
+
import { manyHasManyInverse } from "./src/model/definition/fieldDefinitions/ManyHasManyInverseDefinition.js";
|
|
23
|
+
import { manyHasMany } from "./src/model/definition/fieldDefinitions/ManyHasManyDefinition.js";
|
|
24
|
+
import { uuidColumn, enumColumn, stringColumn, jsonColumn, dateTimeColumn, timeColumn, dateColumn, doubleColumn, intColumn, boolColumn, column } from "./src/model/definition/fieldDefinitions/ColumnDefinition.js";
|
|
25
|
+
import { OrderBy } from "./src/model/definition/OrderByDefinition.js";
|
|
26
|
+
import { DisableEventLog } from "./src/model/definition/EventLogDefinition.js";
|
|
27
|
+
import { View } from "./src/model/definition/ViewDefinition.js";
|
|
28
|
+
import { Unique } from "./src/model/definition/UniqueDefinition.js";
|
|
29
|
+
import { Index } from "./src/model/definition/IndexDefinition.js";
|
|
30
|
+
import { extendEntity } from "./src/model/definition/extensions.js";
|
|
31
|
+
import { createTarget } from "./src/actions/definition/targets.js";
|
|
32
|
+
import { trigger, watch } from "./src/actions/definition/triggers.js";
|
|
33
|
+
import { canDelete, canUpdate, canRead, canCreate } from "./src/acl/definition/references.js";
|
|
34
|
+
import { createPredefinedVariable, createEntityVariable, createConditionVariable } from "./src/acl/definition/variables.js";
|
|
35
|
+
import { createRole } from "./src/acl/definition/roles.js";
|
|
36
|
+
import { allow } from "./src/acl/definition/permissions.js";
|
|
37
|
+
import { allowCustomPrimary } from "./src/acl/definition/customPrimary.js";
|
|
38
38
|
const c = {
|
|
39
39
|
// ACL
|
|
40
40
|
// ACL entity decorators
|
|
@@ -103,14 +103,14 @@ export {
|
|
|
103
103
|
AllowAllPermissionFactory,
|
|
104
104
|
default3 as ColumnBuilder,
|
|
105
105
|
default8 as FieldBuilder,
|
|
106
|
-
index$
|
|
106
|
+
index$2 as InputValidation,
|
|
107
107
|
default4 as ManyHasManyBuilder,
|
|
108
108
|
default6 as ManyHasOneBuilder,
|
|
109
109
|
default5 as OneHasManyBuilder,
|
|
110
110
|
default7 as OneHasOneBuilder,
|
|
111
111
|
PermissionsBuilder,
|
|
112
112
|
default2 as SchemaBuilder,
|
|
113
|
-
index$
|
|
113
|
+
index$3 as SchemaDefinition,
|
|
114
114
|
c,
|
|
115
115
|
createSchema,
|
|
116
116
|
settingsPresets
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../packages/schema-definition/src/index.ts"],"sourcesContent":["import * as AclDefinition from './acl/definition'\nimport { Role } from './acl/definition'\nimport * as ActionsDefinition from './actions/definition'\nimport * as InputValidation from './validation'\nimport { SchemaDefinition } from './model'\nimport { createSchema } from './createSchema'\n\nexport { AllowAllPermissionFactory } from '@contember/schema-utils'\nexport { PermissionsBuilder } from './acl/builder/PermissionsBuilder'\nexport * from './model'\nexport * from './presets'\n\nexport type { Role }\nexport type { VariableDefinition } from './acl/definition'\nexport type {\n\tColumnDefinition,\n\
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../packages/schema-definition/src/index.ts"],"sourcesContent":["import * as AclDefinition from './acl/definition'\nimport { Role } from './acl/definition'\nimport * as ActionsDefinition from './actions/definition'\nimport * as InputValidation from './validation'\nimport { SchemaDefinition } from './model'\nimport { createSchema } from './createSchema'\n\nexport { AllowAllPermissionFactory } from '@contember/schema-utils'\nexport { PermissionsBuilder } from './acl/builder/PermissionsBuilder'\nexport * from './model'\nexport * from './presets'\n\nexport type { Role }\nexport type { VariableDefinition } from './acl/definition'\nexport type {\n\tColumnDefinition,\n\tEnumDefinition,\n\tFieldDefinition,\n\tManyHasManyDefinition,\n\tManyHasManyInverseDefinition,\n\tManyHasOneDefinition,\n\tOneHasManyDefinition,\n\tOneHasOneDefinition,\n\tOneHasOneInverseDefinition,\n} from './model/definition'\n\nexport { AclDefinition, ActionsDefinition, createSchema, InputValidation, SchemaDefinition }\n\nexport const c = {\n\t// ACL\n\t// ACL entity decorators\n\tAllowCustomPrimary: AclDefinition.allowCustomPrimary,\n\tAllow: AclDefinition.allow,\n\t// ACL factories\n\tcreateRole: AclDefinition.createRole,\n\tcreateConditionVariable: AclDefinition.createConditionVariable,\n\tcreateEntityVariable: AclDefinition.createEntityVariable,\n\tcreatePredefinedVariable: AclDefinition.createPredefinedVariable,\n\t// ACL utilities\n\tcanCreate: AclDefinition.canCreate,\n\tcanRead: AclDefinition.canRead,\n\tcanUpdate: AclDefinition.canUpdate,\n\tcanDelete: AclDefinition.canDelete,\n\n\t// Actions\n\t// Actions entity decorators\n\tWatch: ActionsDefinition.watch,\n\tTrigger: ActionsDefinition.trigger,\n\t// Actions factories\n\tcreateActionsTarget: ActionsDefinition.createTarget,\n\n\t// Model\n\t// Model entity decorators\n\tExtendEntity: SchemaDefinition.extendEntity,\n\tIndex: SchemaDefinition.Index,\n\tUnique: SchemaDefinition.Unique,\n\tView: SchemaDefinition.View,\n\tDisableEventLog: SchemaDefinition.DisableEventLog,\n\tOrderBy: SchemaDefinition.OrderBy,\n\t// Model field factories\n\tcolumn: SchemaDefinition.column,\n\tboolColumn: SchemaDefinition.boolColumn,\n\tintColumn: SchemaDefinition.intColumn,\n\tdoubleColumn: SchemaDefinition.doubleColumn,\n\tdateColumn: SchemaDefinition.dateColumn,\n\ttimeColumn: SchemaDefinition.timeColumn,\n\tdateTimeColumn: SchemaDefinition.dateTimeColumn,\n\tjsonColumn: SchemaDefinition.jsonColumn,\n\tstringColumn: SchemaDefinition.stringColumn,\n\tenumColumn: SchemaDefinition.enumColumn,\n\tuuidColumn: SchemaDefinition.uuidColumn,\n\tmanyHasMany: SchemaDefinition.manyHasMany,\n\tmanyHasManyInverse: SchemaDefinition.manyHasManyInverse,\n\tmanyHasOne: SchemaDefinition.manyHasOne,\n\toneHasOne: SchemaDefinition.oneHasOne,\n\toneHasOneInverse: SchemaDefinition.oneHasOneInverse,\n\toneHasMany: SchemaDefinition.oneHasMany,\n\t// Model factories\n\tcreateEnum: SchemaDefinition.createEnum,\n\n\t// Validation\n\t// Validation field decorators\n\tAssert: InputValidation.assert,\n\tRequired: InputValidation.required,\n\tAssertDefined: InputValidation.assertDefined,\n\tAssertNotEmpty: InputValidation.assertNotEmpty,\n\tAssertPattern: InputValidation.assertPattern,\n\tAssertMinLength: InputValidation.assertMinLength,\n\tAssertMaxLength: InputValidation.assertMaxLength,\n\tValidateWhen: InputValidation.when,\n\t// Validation utilities\n\trules: InputValidation.rules,\n}\n"],"names":["AclDefinition.allowCustomPrimary","AclDefinition.allow","ActionsDefinition.watch","ActionsDefinition.trigger","ActionsDefinition.createTarget","SchemaDefinition.extendEntity","InputValidation.assert","InputValidation.required","InputValidation.assertDefined","InputValidation.assertNotEmpty","InputValidation.assertPattern","InputValidation.assertMinLength","InputValidation.assertMaxLength","InputValidation.when"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BO,MAAM,IAAI;AAAA;AAAA;AAAA,EAGhB,oBAAoBA;AAAAA,EACpB,OAAOC;AAAAA;AAAAA,EAEP;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA;AAAA,EAIA,OAAOC;AAAAA,EACP,SAASC;AAAAA;AAAAA,EAET,qBAAqBC;AAAAA;AAAAA;AAAAA,EAIrB,cAAcC;AAAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA;AAAA;AAAA,EAIA,QAAQC;AAAAA,EACR,UAAUC;AAAAA,EACV,eAAeC;AAAAA,EACf,gBAAgBC;AAAAA,EAChB,eAAeC;AAAAA,EACf,iBAAiBC;AAAAA,EACjB,iBAAiBC;AAAAA,EACjB,cAAcC;AAAAA;AAAAA,EAEd;AACD;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityPermissionsBuilder.cjs","sources":["../../../../../../packages/schema-definition/src/acl/builder/EntityPermissionsBuilder.ts"],"sourcesContent":["import { tuple } from '../../utils'\nimport EntitySelector from './EntitySelector'\nimport { Acl, Model, Writable } from '@contember/schema'\nimport FieldSelector from './FieldSelector'\nimport FieldPermissionsBuilder from './FieldPermissionsBuilder'\nimport { PermissionsBuilder } from './PermissionsBuilder'\nimport PredicateReference, { resolvePredicateReference } from './PredicateReference'\n\nexport default class EntityPermissionsBuilder {\n\tpublic constructor(public readonly builder: PermissionsBuilder, private readonly entities: Model.Entity[]) {}\n\n\tget schema(): Model.Schema {\n\t\treturn this.builder.schema\n\t}\n\n\tget permissions(): Acl.Permissions {\n\t\treturn this.builder.permissions\n\t}\n\n\taddPredicate(name: string, predicate: Acl.PredicateDefinition<PredicateReference>): EntityPermissionsBuilder {\n\t\tconst predicates = this.entities.reduce<Acl.Permissions>(\n\t\t\t(acc, entity) => ({\n\t\t\t\t...acc,\n\t\t\t\t[entity.name]: {\n\t\t\t\t\toperations: {},\n\t\t\t\t\tpredicates: { [name]: resolvePredicateReference(this.schema, this.permissions, entity, predicate) },\n\t\t\t\t},\n\t\t\t}),\n\t\t\t{},\n\t\t)\n\n\t\treturn this.add(predicates)\n\t}\n\n\tallow(operations: Acl.Operation[], predicate: Acl.Predicate = true): EntityPermissionsBuilder {\n\t\treturn this.updateAll(operations, predicate)\n\t}\n\n\tallowAll(predicate: Acl.Predicate = true): EntityPermissionsBuilder {\n\t\treturn this.updateAll(\n\t\t\t[Acl.Operation.read, Acl.Operation.create, Acl.Operation.update, Acl.Operation.delete],\n\t\t\tpredicate,\n\t\t)\n\t}\n\n\tallowOnlyRead(predicate: Acl.Predicate = true): EntityPermissionsBuilder {\n\t\treturn this.disallowAll().allow([Acl.Operation.read], predicate)\n\t}\n\n\tdisallowAll(): EntityPermissionsBuilder {\n\t\treturn this.updateAll([Acl.Operation.read, Acl.Operation.create, Acl.Operation.update, Acl.Operation.delete], false)\n\t}\n\n\tallowDelete(predicate: Acl.Predicate = true): EntityPermissionsBuilder {\n\t\treturn this.addEntityPermission(() => ({ operations: { delete: predicate }, predicates: {} }))\n\t}\n\n\tallowCustomPrimary(): EntityPermissionsBuilder {\n\t\treturn this.addEntityPermission(() => ({ operations: { customPrimary: true }, predicates: {} }))\n\t}\n\n\tprivate updateAll(operations: Acl.Operation[], predicate: Acl.Predicate): EntityPermissionsBuilder {\n\t\treturn this.addEntityPermission(entity => {\n\t\t\tconst fieldPermissions = Object.keys(entity.fields).reduce(\n\t\t\t\t(permissions: Acl.FieldPermissions, fieldName): Acl.FieldPermissions => {\n\t\t\t\t\treturn { ...permissions, [fieldName]: predicate }\n\t\t\t\t},\n\t\t\t\t{},\n\t\t\t)\n\t\t\tconst entityOperations: Writable<Acl.EntityOperations> = {}\n\t\t\tif (operations.includes(Acl.Operation.read)) {\n\t\t\t\tentityOperations.read = fieldPermissions\n\t\t\t}\n\t\t\tif (operations.includes(Acl.Operation.create)) {\n\t\t\t\tentityOperations.create = fieldPermissions\n\t\t\t}\n\t\t\tif (operations.includes(Acl.Operation.update)) {\n\t\t\t\tentityOperations.update = fieldPermissions\n\t\t\t}\n\t\t\tif (operations.includes(Acl.Operation.delete)) {\n\t\t\t\tentityOperations.delete = predicate\n\t\t\t}\n\t\t\treturn {\n\t\t\t\toperations: entityOperations,\n\t\t\t\tpredicates: {},\n\t\t\t}\n\t\t})\n\t}\n\n\tprivate addEntityPermission(\n\t\tentityPermission: (entity: Model.Entity) => Acl.EntityPermissions,\n\t): EntityPermissionsBuilder {\n\t\tconst permissions = this.entities.reduce<Acl.Permissions>(\n\t\t\t(acc, entity) => ({ ...acc, [entity.name]: entityPermission(entity) }),\n\t\t\t{},\n\t\t)\n\t\treturn this.add(permissions)\n\t}\n\n\tpublic add(permissions: Acl.Permissions): EntityPermissionsBuilder {\n\t\treturn new EntityPermissionsBuilder(this.builder.add(permissions), this.entities)\n\t}\n\n\tpublic onEntity(entitySelector: EntitySelector | string | string[]): EntityPermissionsBuilder {\n\t\treturn this.builder.onEntity(entitySelector)\n\t}\n\n\tpublic onEveryEntity(): EntityPermissionsBuilder {\n\t\treturn this.builder.onEveryEntity()\n\t}\n\n\tonField(fieldSelector: FieldSelector | string | string[]): FieldPermissionsBuilder {\n\t\tif (typeof fieldSelector === 'string') {\n\t\t\tfieldSelector = FieldSelector.named(fieldSelector)\n\t\t} else if (Array.isArray(fieldSelector)) {\n\t\t\tfieldSelector = FieldSelector.named(...fieldSelector)\n\t\t}\n\t\tconst fieldSelectorConst = fieldSelector\n\t\tconst fields = this.entities\n\t\t\t.map(it =>\n\t\t\t\ttuple(\n\t\t\t\t\tit,\n\t\t\t\t\tObject.values(it.fields).filter(field => fieldSelectorConst.matches(this.schema, it, field)),\n\t\t\t\t)
|
|
1
|
+
{"version":3,"file":"EntityPermissionsBuilder.cjs","sources":["../../../../../../packages/schema-definition/src/acl/builder/EntityPermissionsBuilder.ts"],"sourcesContent":["import { tuple } from '../../utils'\nimport EntitySelector from './EntitySelector'\nimport { Acl, Model, Writable } from '@contember/schema'\nimport FieldSelector from './FieldSelector'\nimport FieldPermissionsBuilder from './FieldPermissionsBuilder'\nimport { PermissionsBuilder } from './PermissionsBuilder'\nimport PredicateReference, { resolvePredicateReference } from './PredicateReference'\n\nexport default class EntityPermissionsBuilder {\n\tpublic constructor(public readonly builder: PermissionsBuilder, private readonly entities: Model.Entity[]) {}\n\n\tget schema(): Model.Schema {\n\t\treturn this.builder.schema\n\t}\n\n\tget permissions(): Acl.Permissions {\n\t\treturn this.builder.permissions\n\t}\n\n\taddPredicate(name: string, predicate: Acl.PredicateDefinition<PredicateReference>): EntityPermissionsBuilder {\n\t\tconst predicates = this.entities.reduce<Acl.Permissions>(\n\t\t\t(acc, entity) => ({\n\t\t\t\t...acc,\n\t\t\t\t[entity.name]: {\n\t\t\t\t\toperations: {},\n\t\t\t\t\tpredicates: { [name]: resolvePredicateReference(this.schema, this.permissions, entity, predicate) },\n\t\t\t\t},\n\t\t\t}),\n\t\t\t{},\n\t\t)\n\n\t\treturn this.add(predicates)\n\t}\n\n\tallow(operations: Acl.Operation[], predicate: Acl.Predicate = true): EntityPermissionsBuilder {\n\t\treturn this.updateAll(operations, predicate)\n\t}\n\n\tallowAll(predicate: Acl.Predicate = true): EntityPermissionsBuilder {\n\t\treturn this.updateAll(\n\t\t\t[Acl.Operation.read, Acl.Operation.create, Acl.Operation.update, Acl.Operation.delete],\n\t\t\tpredicate,\n\t\t)\n\t}\n\n\tallowOnlyRead(predicate: Acl.Predicate = true): EntityPermissionsBuilder {\n\t\treturn this.disallowAll().allow([Acl.Operation.read], predicate)\n\t}\n\n\tdisallowAll(): EntityPermissionsBuilder {\n\t\treturn this.updateAll([Acl.Operation.read, Acl.Operation.create, Acl.Operation.update, Acl.Operation.delete], false)\n\t}\n\n\tallowDelete(predicate: Acl.Predicate = true): EntityPermissionsBuilder {\n\t\treturn this.addEntityPermission(() => ({ operations: { delete: predicate }, predicates: {} }))\n\t}\n\n\tallowCustomPrimary(): EntityPermissionsBuilder {\n\t\treturn this.addEntityPermission(() => ({ operations: { customPrimary: true }, predicates: {} }))\n\t}\n\n\tprivate updateAll(operations: Acl.Operation[], predicate: Acl.Predicate): EntityPermissionsBuilder {\n\t\treturn this.addEntityPermission(entity => {\n\t\t\tconst fieldPermissions = Object.keys(entity.fields).reduce(\n\t\t\t\t(permissions: Acl.FieldPermissions, fieldName): Acl.FieldPermissions => {\n\t\t\t\t\treturn { ...permissions, [fieldName]: predicate }\n\t\t\t\t},\n\t\t\t\t{},\n\t\t\t)\n\t\t\tconst entityOperations: Writable<Acl.EntityOperations> = {}\n\t\t\tif (operations.includes(Acl.Operation.read)) {\n\t\t\t\tentityOperations.read = fieldPermissions\n\t\t\t}\n\t\t\tif (operations.includes(Acl.Operation.create)) {\n\t\t\t\tentityOperations.create = fieldPermissions\n\t\t\t}\n\t\t\tif (operations.includes(Acl.Operation.update)) {\n\t\t\t\tentityOperations.update = fieldPermissions\n\t\t\t}\n\t\t\tif (operations.includes(Acl.Operation.delete)) {\n\t\t\t\tentityOperations.delete = predicate\n\t\t\t}\n\t\t\treturn {\n\t\t\t\toperations: entityOperations,\n\t\t\t\tpredicates: {},\n\t\t\t}\n\t\t})\n\t}\n\n\tprivate addEntityPermission(\n\t\tentityPermission: (entity: Model.Entity) => Acl.EntityPermissions,\n\t): EntityPermissionsBuilder {\n\t\tconst permissions = this.entities.reduce<Acl.Permissions>(\n\t\t\t(acc, entity) => ({ ...acc, [entity.name]: entityPermission(entity) }),\n\t\t\t{},\n\t\t)\n\t\treturn this.add(permissions)\n\t}\n\n\tpublic add(permissions: Acl.Permissions): EntityPermissionsBuilder {\n\t\treturn new EntityPermissionsBuilder(this.builder.add(permissions), this.entities)\n\t}\n\n\tpublic onEntity(entitySelector: EntitySelector | string | string[]): EntityPermissionsBuilder {\n\t\treturn this.builder.onEntity(entitySelector)\n\t}\n\n\tpublic onEveryEntity(): EntityPermissionsBuilder {\n\t\treturn this.builder.onEveryEntity()\n\t}\n\n\tonField(fieldSelector: FieldSelector | string | string[]): FieldPermissionsBuilder {\n\t\tif (typeof fieldSelector === 'string') {\n\t\t\tfieldSelector = FieldSelector.named(fieldSelector)\n\t\t} else if (Array.isArray(fieldSelector)) {\n\t\t\tfieldSelector = FieldSelector.named(...fieldSelector)\n\t\t}\n\t\tconst fieldSelectorConst = fieldSelector\n\t\tconst fields = this.entities\n\t\t\t.map(it =>\n\t\t\t\ttuple(\n\t\t\t\t\tit,\n\t\t\t\t\tObject.values(it.fields).filter(field => fieldSelectorConst.matches(this.schema, it, field)),\n\t\t\t\t)\n\t\t\t)\n\t\t\t.reduce<[Model.Entity, Model.AnyField][]>(\n\t\t\t\t(acc, [entity, fields]) => [...acc, ...fields.map(it => tuple(entity, it))],\n\t\t\t\t[],\n\t\t\t)\n\t\treturn new FieldPermissionsBuilder(this, fields)\n\t}\n\n\tonEveryField(): FieldPermissionsBuilder {\n\t\treturn this.onField(FieldSelector.every())\n\t}\n}\n"],"names":["resolvePredicateReference","Acl","tuple","fields"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityPermissionsBuilder.js","sources":["../../../../../../packages/schema-definition/src/acl/builder/EntityPermissionsBuilder.ts"],"sourcesContent":["import { tuple } from '../../utils'\nimport EntitySelector from './EntitySelector'\nimport { Acl, Model, Writable } from '@contember/schema'\nimport FieldSelector from './FieldSelector'\nimport FieldPermissionsBuilder from './FieldPermissionsBuilder'\nimport { PermissionsBuilder } from './PermissionsBuilder'\nimport PredicateReference, { resolvePredicateReference } from './PredicateReference'\n\nexport default class EntityPermissionsBuilder {\n\tpublic constructor(public readonly builder: PermissionsBuilder, private readonly entities: Model.Entity[]) {}\n\n\tget schema(): Model.Schema {\n\t\treturn this.builder.schema\n\t}\n\n\tget permissions(): Acl.Permissions {\n\t\treturn this.builder.permissions\n\t}\n\n\taddPredicate(name: string, predicate: Acl.PredicateDefinition<PredicateReference>): EntityPermissionsBuilder {\n\t\tconst predicates = this.entities.reduce<Acl.Permissions>(\n\t\t\t(acc, entity) => ({\n\t\t\t\t...acc,\n\t\t\t\t[entity.name]: {\n\t\t\t\t\toperations: {},\n\t\t\t\t\tpredicates: { [name]: resolvePredicateReference(this.schema, this.permissions, entity, predicate) },\n\t\t\t\t},\n\t\t\t}),\n\t\t\t{},\n\t\t)\n\n\t\treturn this.add(predicates)\n\t}\n\n\tallow(operations: Acl.Operation[], predicate: Acl.Predicate = true): EntityPermissionsBuilder {\n\t\treturn this.updateAll(operations, predicate)\n\t}\n\n\tallowAll(predicate: Acl.Predicate = true): EntityPermissionsBuilder {\n\t\treturn this.updateAll(\n\t\t\t[Acl.Operation.read, Acl.Operation.create, Acl.Operation.update, Acl.Operation.delete],\n\t\t\tpredicate,\n\t\t)\n\t}\n\n\tallowOnlyRead(predicate: Acl.Predicate = true): EntityPermissionsBuilder {\n\t\treturn this.disallowAll().allow([Acl.Operation.read], predicate)\n\t}\n\n\tdisallowAll(): EntityPermissionsBuilder {\n\t\treturn this.updateAll([Acl.Operation.read, Acl.Operation.create, Acl.Operation.update, Acl.Operation.delete], false)\n\t}\n\n\tallowDelete(predicate: Acl.Predicate = true): EntityPermissionsBuilder {\n\t\treturn this.addEntityPermission(() => ({ operations: { delete: predicate }, predicates: {} }))\n\t}\n\n\tallowCustomPrimary(): EntityPermissionsBuilder {\n\t\treturn this.addEntityPermission(() => ({ operations: { customPrimary: true }, predicates: {} }))\n\t}\n\n\tprivate updateAll(operations: Acl.Operation[], predicate: Acl.Predicate): EntityPermissionsBuilder {\n\t\treturn this.addEntityPermission(entity => {\n\t\t\tconst fieldPermissions = Object.keys(entity.fields).reduce(\n\t\t\t\t(permissions: Acl.FieldPermissions, fieldName): Acl.FieldPermissions => {\n\t\t\t\t\treturn { ...permissions, [fieldName]: predicate }\n\t\t\t\t},\n\t\t\t\t{},\n\t\t\t)\n\t\t\tconst entityOperations: Writable<Acl.EntityOperations> = {}\n\t\t\tif (operations.includes(Acl.Operation.read)) {\n\t\t\t\tentityOperations.read = fieldPermissions\n\t\t\t}\n\t\t\tif (operations.includes(Acl.Operation.create)) {\n\t\t\t\tentityOperations.create = fieldPermissions\n\t\t\t}\n\t\t\tif (operations.includes(Acl.Operation.update)) {\n\t\t\t\tentityOperations.update = fieldPermissions\n\t\t\t}\n\t\t\tif (operations.includes(Acl.Operation.delete)) {\n\t\t\t\tentityOperations.delete = predicate\n\t\t\t}\n\t\t\treturn {\n\t\t\t\toperations: entityOperations,\n\t\t\t\tpredicates: {},\n\t\t\t}\n\t\t})\n\t}\n\n\tprivate addEntityPermission(\n\t\tentityPermission: (entity: Model.Entity) => Acl.EntityPermissions,\n\t): EntityPermissionsBuilder {\n\t\tconst permissions = this.entities.reduce<Acl.Permissions>(\n\t\t\t(acc, entity) => ({ ...acc, [entity.name]: entityPermission(entity) }),\n\t\t\t{},\n\t\t)\n\t\treturn this.add(permissions)\n\t}\n\n\tpublic add(permissions: Acl.Permissions): EntityPermissionsBuilder {\n\t\treturn new EntityPermissionsBuilder(this.builder.add(permissions), this.entities)\n\t}\n\n\tpublic onEntity(entitySelector: EntitySelector | string | string[]): EntityPermissionsBuilder {\n\t\treturn this.builder.onEntity(entitySelector)\n\t}\n\n\tpublic onEveryEntity(): EntityPermissionsBuilder {\n\t\treturn this.builder.onEveryEntity()\n\t}\n\n\tonField(fieldSelector: FieldSelector | string | string[]): FieldPermissionsBuilder {\n\t\tif (typeof fieldSelector === 'string') {\n\t\t\tfieldSelector = FieldSelector.named(fieldSelector)\n\t\t} else if (Array.isArray(fieldSelector)) {\n\t\t\tfieldSelector = FieldSelector.named(...fieldSelector)\n\t\t}\n\t\tconst fieldSelectorConst = fieldSelector\n\t\tconst fields = this.entities\n\t\t\t.map(it =>\n\t\t\t\ttuple(\n\t\t\t\t\tit,\n\t\t\t\t\tObject.values(it.fields).filter(field => fieldSelectorConst.matches(this.schema, it, field)),\n\t\t\t\t)
|
|
1
|
+
{"version":3,"file":"EntityPermissionsBuilder.js","sources":["../../../../../../packages/schema-definition/src/acl/builder/EntityPermissionsBuilder.ts"],"sourcesContent":["import { tuple } from '../../utils'\nimport EntitySelector from './EntitySelector'\nimport { Acl, Model, Writable } from '@contember/schema'\nimport FieldSelector from './FieldSelector'\nimport FieldPermissionsBuilder from './FieldPermissionsBuilder'\nimport { PermissionsBuilder } from './PermissionsBuilder'\nimport PredicateReference, { resolvePredicateReference } from './PredicateReference'\n\nexport default class EntityPermissionsBuilder {\n\tpublic constructor(public readonly builder: PermissionsBuilder, private readonly entities: Model.Entity[]) {}\n\n\tget schema(): Model.Schema {\n\t\treturn this.builder.schema\n\t}\n\n\tget permissions(): Acl.Permissions {\n\t\treturn this.builder.permissions\n\t}\n\n\taddPredicate(name: string, predicate: Acl.PredicateDefinition<PredicateReference>): EntityPermissionsBuilder {\n\t\tconst predicates = this.entities.reduce<Acl.Permissions>(\n\t\t\t(acc, entity) => ({\n\t\t\t\t...acc,\n\t\t\t\t[entity.name]: {\n\t\t\t\t\toperations: {},\n\t\t\t\t\tpredicates: { [name]: resolvePredicateReference(this.schema, this.permissions, entity, predicate) },\n\t\t\t\t},\n\t\t\t}),\n\t\t\t{},\n\t\t)\n\n\t\treturn this.add(predicates)\n\t}\n\n\tallow(operations: Acl.Operation[], predicate: Acl.Predicate = true): EntityPermissionsBuilder {\n\t\treturn this.updateAll(operations, predicate)\n\t}\n\n\tallowAll(predicate: Acl.Predicate = true): EntityPermissionsBuilder {\n\t\treturn this.updateAll(\n\t\t\t[Acl.Operation.read, Acl.Operation.create, Acl.Operation.update, Acl.Operation.delete],\n\t\t\tpredicate,\n\t\t)\n\t}\n\n\tallowOnlyRead(predicate: Acl.Predicate = true): EntityPermissionsBuilder {\n\t\treturn this.disallowAll().allow([Acl.Operation.read], predicate)\n\t}\n\n\tdisallowAll(): EntityPermissionsBuilder {\n\t\treturn this.updateAll([Acl.Operation.read, Acl.Operation.create, Acl.Operation.update, Acl.Operation.delete], false)\n\t}\n\n\tallowDelete(predicate: Acl.Predicate = true): EntityPermissionsBuilder {\n\t\treturn this.addEntityPermission(() => ({ operations: { delete: predicate }, predicates: {} }))\n\t}\n\n\tallowCustomPrimary(): EntityPermissionsBuilder {\n\t\treturn this.addEntityPermission(() => ({ operations: { customPrimary: true }, predicates: {} }))\n\t}\n\n\tprivate updateAll(operations: Acl.Operation[], predicate: Acl.Predicate): EntityPermissionsBuilder {\n\t\treturn this.addEntityPermission(entity => {\n\t\t\tconst fieldPermissions = Object.keys(entity.fields).reduce(\n\t\t\t\t(permissions: Acl.FieldPermissions, fieldName): Acl.FieldPermissions => {\n\t\t\t\t\treturn { ...permissions, [fieldName]: predicate }\n\t\t\t\t},\n\t\t\t\t{},\n\t\t\t)\n\t\t\tconst entityOperations: Writable<Acl.EntityOperations> = {}\n\t\t\tif (operations.includes(Acl.Operation.read)) {\n\t\t\t\tentityOperations.read = fieldPermissions\n\t\t\t}\n\t\t\tif (operations.includes(Acl.Operation.create)) {\n\t\t\t\tentityOperations.create = fieldPermissions\n\t\t\t}\n\t\t\tif (operations.includes(Acl.Operation.update)) {\n\t\t\t\tentityOperations.update = fieldPermissions\n\t\t\t}\n\t\t\tif (operations.includes(Acl.Operation.delete)) {\n\t\t\t\tentityOperations.delete = predicate\n\t\t\t}\n\t\t\treturn {\n\t\t\t\toperations: entityOperations,\n\t\t\t\tpredicates: {},\n\t\t\t}\n\t\t})\n\t}\n\n\tprivate addEntityPermission(\n\t\tentityPermission: (entity: Model.Entity) => Acl.EntityPermissions,\n\t): EntityPermissionsBuilder {\n\t\tconst permissions = this.entities.reduce<Acl.Permissions>(\n\t\t\t(acc, entity) => ({ ...acc, [entity.name]: entityPermission(entity) }),\n\t\t\t{},\n\t\t)\n\t\treturn this.add(permissions)\n\t}\n\n\tpublic add(permissions: Acl.Permissions): EntityPermissionsBuilder {\n\t\treturn new EntityPermissionsBuilder(this.builder.add(permissions), this.entities)\n\t}\n\n\tpublic onEntity(entitySelector: EntitySelector | string | string[]): EntityPermissionsBuilder {\n\t\treturn this.builder.onEntity(entitySelector)\n\t}\n\n\tpublic onEveryEntity(): EntityPermissionsBuilder {\n\t\treturn this.builder.onEveryEntity()\n\t}\n\n\tonField(fieldSelector: FieldSelector | string | string[]): FieldPermissionsBuilder {\n\t\tif (typeof fieldSelector === 'string') {\n\t\t\tfieldSelector = FieldSelector.named(fieldSelector)\n\t\t} else if (Array.isArray(fieldSelector)) {\n\t\t\tfieldSelector = FieldSelector.named(...fieldSelector)\n\t\t}\n\t\tconst fieldSelectorConst = fieldSelector\n\t\tconst fields = this.entities\n\t\t\t.map(it =>\n\t\t\t\ttuple(\n\t\t\t\t\tit,\n\t\t\t\t\tObject.values(it.fields).filter(field => fieldSelectorConst.matches(this.schema, it, field)),\n\t\t\t\t)\n\t\t\t)\n\t\t\t.reduce<[Model.Entity, Model.AnyField][]>(\n\t\t\t\t(acc, [entity, fields]) => [...acc, ...fields.map(it => tuple(entity, it))],\n\t\t\t\t[],\n\t\t\t)\n\t\treturn new FieldPermissionsBuilder(this, fields)\n\t}\n\n\tonEveryField(): FieldPermissionsBuilder {\n\t\treturn this.onField(FieldSelector.every())\n\t}\n}\n"],"names":["fields"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntitySelector.cjs","sources":["../../../../../../packages/schema-definition/src/acl/builder/EntitySelector.ts"],"sourcesContent":["import { Model } from '@contember/schema'\nimport { acceptFieldVisitor } from '@contember/schema-utils'\n\ntype Matcher = (schema: Model.Schema, entity: Model.Entity) => boolean\n\nexport default class EntitySelector {\n\tprivate constructor(private readonly matchers: Matcher[]) {}\n\n\tpublic static every() {\n\t\treturn new EntitySelector([])\n\t}\n\n\tpublic static named(...name: string[]) {\n\t\treturn EntitySelector.every().named(...name)\n\t}\n\n\tpublic named(...name: string[]) {\n\t\treturn this.matching((schema, entity) => name.includes(entity.name))\n\t}\n\n\tpublic havingRelation(name: string, targetEntityName?: string) {\n\t\treturn this.matching(\n\t\t\t(schema, entity) =>\n\t\t\t\tentity.fields[name]
|
|
1
|
+
{"version":3,"file":"EntitySelector.cjs","sources":["../../../../../../packages/schema-definition/src/acl/builder/EntitySelector.ts"],"sourcesContent":["import { Model } from '@contember/schema'\nimport { acceptFieldVisitor } from '@contember/schema-utils'\n\ntype Matcher = (schema: Model.Schema, entity: Model.Entity) => boolean\n\nexport default class EntitySelector {\n\tprivate constructor(private readonly matchers: Matcher[]) {}\n\n\tpublic static every() {\n\t\treturn new EntitySelector([])\n\t}\n\n\tpublic static named(...name: string[]) {\n\t\treturn EntitySelector.every().named(...name)\n\t}\n\n\tpublic named(...name: string[]) {\n\t\treturn this.matching((schema, entity) => name.includes(entity.name))\n\t}\n\n\tpublic havingRelation(name: string, targetEntityName?: string) {\n\t\treturn this.matching(\n\t\t\t(schema, entity) =>\n\t\t\t\tentity.fields[name]\n\t\t\t\t&& acceptFieldVisitor(schema, entity, name, {\n\t\t\t\t\tvisitColumn: () => false,\n\t\t\t\t\tvisitRelation: ({ targetEntity }) => !targetEntityName || targetEntity.name === targetEntityName,\n\t\t\t\t}),\n\t\t)\n\t}\n\n\tpublic matching(matcher: Matcher): EntitySelector {\n\t\treturn new EntitySelector([...this.matchers, matcher])\n\t}\n\n\tpublic matches(schema: Model.Schema, entity: Model.Entity): boolean {\n\t\treturn this.matchers.reduce<boolean>((prev, predicate) => prev && predicate(schema, entity), true)\n\t}\n}\n"],"names":["acceptFieldVisitor"],"mappings":";;AAKA,MAAqB,eAAe;AAAA,EAC3B,YAA6B,UAAqB;AAArB,SAAA,WAAA;AAAA,EAAsB;AAAA,EAE3D,OAAc,QAAQ;AACrB,WAAO,IAAI,eAAe,EAAE;AAAA,EAC7B;AAAA,EAEA,OAAc,SAAS,MAAgB;AACtC,WAAO,eAAe,MAAA,EAAQ,MAAM,GAAG,IAAI;AAAA,EAC5C;AAAA,EAEO,SAAS,MAAgB;AAC/B,WAAO,KAAK,SAAS,CAAC,QAAQ,WAAW,KAAK,SAAS,OAAO,IAAI,CAAC;AAAA,EACpE;AAAA,EAEO,eAAe,MAAc,kBAA2B;AAC9D,WAAO,KAAK;AAAA,MACX,CAAC,QAAQ,WACR,OAAO,OAAO,IAAI,KACfA,+BAAmB,QAAQ,QAAQ,MAAM;AAAA,QAC3C,aAAa,MAAM;AAAA,QACnB,eAAe,CAAC,EAAE,aAAA,MAAmB,CAAC,oBAAoB,aAAa,SAAS;AAAA,MAAA,CAChF;AAAA,IAAA;AAAA,EAEJ;AAAA,EAEO,SAAS,SAAkC;AACjD,WAAO,IAAI,eAAe,CAAC,GAAG,KAAK,UAAU,OAAO,CAAC;AAAA,EACtD;AAAA,EAEO,QAAQ,QAAsB,QAA+B;AACnE,WAAO,KAAK,SAAS,OAAgB,CAAC,MAAM,cAAc,QAAQ,UAAU,QAAQ,MAAM,GAAG,IAAI;AAAA,EAClG;AACD;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntitySelector.js","sources":["../../../../../../packages/schema-definition/src/acl/builder/EntitySelector.ts"],"sourcesContent":["import { Model } from '@contember/schema'\nimport { acceptFieldVisitor } from '@contember/schema-utils'\n\ntype Matcher = (schema: Model.Schema, entity: Model.Entity) => boolean\n\nexport default class EntitySelector {\n\tprivate constructor(private readonly matchers: Matcher[]) {}\n\n\tpublic static every() {\n\t\treturn new EntitySelector([])\n\t}\n\n\tpublic static named(...name: string[]) {\n\t\treturn EntitySelector.every().named(...name)\n\t}\n\n\tpublic named(...name: string[]) {\n\t\treturn this.matching((schema, entity) => name.includes(entity.name))\n\t}\n\n\tpublic havingRelation(name: string, targetEntityName?: string) {\n\t\treturn this.matching(\n\t\t\t(schema, entity) =>\n\t\t\t\tentity.fields[name]
|
|
1
|
+
{"version":3,"file":"EntitySelector.js","sources":["../../../../../../packages/schema-definition/src/acl/builder/EntitySelector.ts"],"sourcesContent":["import { Model } from '@contember/schema'\nimport { acceptFieldVisitor } from '@contember/schema-utils'\n\ntype Matcher = (schema: Model.Schema, entity: Model.Entity) => boolean\n\nexport default class EntitySelector {\n\tprivate constructor(private readonly matchers: Matcher[]) {}\n\n\tpublic static every() {\n\t\treturn new EntitySelector([])\n\t}\n\n\tpublic static named(...name: string[]) {\n\t\treturn EntitySelector.every().named(...name)\n\t}\n\n\tpublic named(...name: string[]) {\n\t\treturn this.matching((schema, entity) => name.includes(entity.name))\n\t}\n\n\tpublic havingRelation(name: string, targetEntityName?: string) {\n\t\treturn this.matching(\n\t\t\t(schema, entity) =>\n\t\t\t\tentity.fields[name]\n\t\t\t\t&& acceptFieldVisitor(schema, entity, name, {\n\t\t\t\t\tvisitColumn: () => false,\n\t\t\t\t\tvisitRelation: ({ targetEntity }) => !targetEntityName || targetEntity.name === targetEntityName,\n\t\t\t\t}),\n\t\t)\n\t}\n\n\tpublic matching(matcher: Matcher): EntitySelector {\n\t\treturn new EntitySelector([...this.matchers, matcher])\n\t}\n\n\tpublic matches(schema: Model.Schema, entity: Model.Entity): boolean {\n\t\treturn this.matchers.reduce<boolean>((prev, predicate) => prev && predicate(schema, entity), true)\n\t}\n}\n"],"names":[],"mappings":";AAKA,MAAqB,eAAe;AAAA,EAC3B,YAA6B,UAAqB;AAArB,SAAA,WAAA;AAAA,EAAsB;AAAA,EAE3D,OAAc,QAAQ;AACrB,WAAO,IAAI,eAAe,EAAE;AAAA,EAC7B;AAAA,EAEA,OAAc,SAAS,MAAgB;AACtC,WAAO,eAAe,MAAA,EAAQ,MAAM,GAAG,IAAI;AAAA,EAC5C;AAAA,EAEO,SAAS,MAAgB;AAC/B,WAAO,KAAK,SAAS,CAAC,QAAQ,WAAW,KAAK,SAAS,OAAO,IAAI,CAAC;AAAA,EACpE;AAAA,EAEO,eAAe,MAAc,kBAA2B;AAC9D,WAAO,KAAK;AAAA,MACX,CAAC,QAAQ,WACR,OAAO,OAAO,IAAI,KACf,mBAAmB,QAAQ,QAAQ,MAAM;AAAA,QAC3C,aAAa,MAAM;AAAA,QACnB,eAAe,CAAC,EAAE,aAAA,MAAmB,CAAC,oBAAoB,aAAa,SAAS;AAAA,MAAA,CAChF;AAAA,IAAA;AAAA,EAEJ;AAAA,EAEO,SAAS,SAAkC;AACjD,WAAO,IAAI,eAAe,CAAC,GAAG,KAAK,UAAU,OAAO,CAAC;AAAA,EACtD;AAAA,EAEO,QAAQ,QAAsB,QAA+B;AACnE,WAAO,KAAK,SAAS,OAAgB,CAAC,MAAM,cAAc,QAAQ,UAAU,QAAQ,MAAM,GAAG,IAAI;AAAA,EAClG;AACD;"}
|