@contember/schema-definition 2.0.0-alpha.9 → 2.0.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/development/index.cjs.map +1 -1
- 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.map +1 -1
- 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/customPrimary.cjs.map +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/internal/AclFactory.cjs.map +1 -1
- package/dist/development/src/acl/definition/internal/AclFactory.js.map +1 -1
- package/dist/development/src/acl/definition/internal/EntityPredicateResolver.cjs +2 -2
- package/dist/development/src/acl/definition/internal/EntityPredicateResolver.cjs.map +1 -1
- package/dist/development/src/acl/definition/internal/EntityPredicateResolver.js +2 -2
- package/dist/development/src/acl/definition/internal/EntityPredicateResolver.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.map +1 -1
- 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.map +1 -1
- package/dist/development/src/actions/definition/internal/ActionsFactory.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.map +1 -1
- 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.map +1 -1
- 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.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/IndexDefinition.cjs.map +1 -1
- package/dist/development/src/model/definition/IndexDefinition.js.map +1 -1
- package/dist/development/src/model/definition/OrderByDefinition.cjs.map +1 -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.map +1 -1
- package/dist/development/src/model/definition/extensions.js.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/ColumnDefinition.cjs +9 -2
- package/dist/development/src/model/definition/fieldDefinitions/ColumnDefinition.cjs.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/ColumnDefinition.js +9 -2
- package/dist/development/src/model/definition/fieldDefinitions/ColumnDefinition.js.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/FieldDefinition.cjs +0 -3
- package/dist/development/src/model/definition/fieldDefinitions/FieldDefinition.cjs.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/FieldDefinition.js +0 -3
- package/dist/development/src/model/definition/fieldDefinitions/FieldDefinition.js.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/ManyHasManyDefinition.cjs +6 -3
- package/dist/development/src/model/definition/fieldDefinitions/ManyHasManyDefinition.cjs.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/ManyHasManyDefinition.js +6 -3
- package/dist/development/src/model/definition/fieldDefinitions/ManyHasManyDefinition.js.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/ManyHasManyInverseDefinition.cjs +6 -7
- package/dist/development/src/model/definition/fieldDefinitions/ManyHasManyInverseDefinition.cjs.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/ManyHasManyInverseDefinition.js +7 -8
- package/dist/development/src/model/definition/fieldDefinitions/ManyHasManyInverseDefinition.js.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/ManyHasOneDefinition.cjs +6 -3
- package/dist/development/src/model/definition/fieldDefinitions/ManyHasOneDefinition.cjs.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/ManyHasOneDefinition.js +6 -3
- package/dist/development/src/model/definition/fieldDefinitions/ManyHasOneDefinition.js.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/OneHasManyDefinition.cjs +6 -3
- package/dist/development/src/model/definition/fieldDefinitions/OneHasManyDefinition.cjs.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/OneHasManyDefinition.js +6 -3
- package/dist/development/src/model/definition/fieldDefinitions/OneHasManyDefinition.js.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/OneHasOneDefinition.cjs +6 -3
- package/dist/development/src/model/definition/fieldDefinitions/OneHasOneDefinition.cjs.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/OneHasOneDefinition.js +6 -3
- package/dist/development/src/model/definition/fieldDefinitions/OneHasOneDefinition.js.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/OneHasOneInverseDefinition.cjs +6 -7
- package/dist/development/src/model/definition/fieldDefinitions/OneHasOneInverseDefinition.cjs.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/OneHasOneInverseDefinition.js +7 -8
- package/dist/development/src/model/definition/fieldDefinitions/OneHasOneInverseDefinition.js.map +1 -1
- package/dist/development/src/model/definition/index.cjs +6 -8
- package/dist/development/src/model/definition/index.cjs.map +1 -1
- package/dist/development/src/model/definition/index.js +12 -14
- 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 +5 -0
- package/dist/development/src/model/definition/internal/SchemaBuilder.cjs.map +1 -1
- package/dist/development/src/model/definition/internal/SchemaBuilder.js +5 -0
- package/dist/development/src/model/definition/internal/SchemaBuilder.js.map +1 -1
- package/dist/development/src/presets.cjs +13 -1
- package/dist/development/src/presets.cjs.map +1 -1
- package/dist/development/src/presets.js +13 -1
- package/dist/development/src/presets.js.map +1 -1
- package/dist/development/src/strict.cjs.map +1 -1
- package/dist/development/src/strict.js.map +1 -1
- package/dist/development/src/utils/MetadataStore.cjs.map +1 -1
- package/dist/development/src/utils/MetadataStore.js.map +1 -1
- package/dist/development/src/validation/index.cjs.map +1 -1
- package/dist/development/src/validation/index.js.map +1 -1
- package/dist/production/index.cjs.map +1 -1
- 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.map +1 -1
- 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/customPrimary.cjs.map +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/internal/AclFactory.cjs.map +1 -1
- package/dist/production/src/acl/definition/internal/AclFactory.js.map +1 -1
- package/dist/production/src/acl/definition/internal/EntityPredicateResolver.cjs +2 -2
- package/dist/production/src/acl/definition/internal/EntityPredicateResolver.cjs.map +1 -1
- package/dist/production/src/acl/definition/internal/EntityPredicateResolver.js +2 -2
- package/dist/production/src/acl/definition/internal/EntityPredicateResolver.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.map +1 -1
- 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.map +1 -1
- package/dist/production/src/actions/definition/internal/ActionsFactory.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.map +1 -1
- 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.map +1 -1
- 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.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/IndexDefinition.cjs.map +1 -1
- package/dist/production/src/model/definition/IndexDefinition.js.map +1 -1
- package/dist/production/src/model/definition/OrderByDefinition.cjs.map +1 -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.map +1 -1
- package/dist/production/src/model/definition/extensions.js.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/ColumnDefinition.cjs +9 -2
- package/dist/production/src/model/definition/fieldDefinitions/ColumnDefinition.cjs.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/ColumnDefinition.js +9 -2
- package/dist/production/src/model/definition/fieldDefinitions/ColumnDefinition.js.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/FieldDefinition.cjs +0 -3
- package/dist/production/src/model/definition/fieldDefinitions/FieldDefinition.cjs.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/FieldDefinition.js +0 -3
- package/dist/production/src/model/definition/fieldDefinitions/FieldDefinition.js.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/ManyHasManyDefinition.cjs +6 -3
- package/dist/production/src/model/definition/fieldDefinitions/ManyHasManyDefinition.cjs.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/ManyHasManyDefinition.js +6 -3
- package/dist/production/src/model/definition/fieldDefinitions/ManyHasManyDefinition.js.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/ManyHasManyInverseDefinition.cjs +6 -7
- package/dist/production/src/model/definition/fieldDefinitions/ManyHasManyInverseDefinition.cjs.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/ManyHasManyInverseDefinition.js +7 -8
- package/dist/production/src/model/definition/fieldDefinitions/ManyHasManyInverseDefinition.js.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/ManyHasOneDefinition.cjs +6 -3
- package/dist/production/src/model/definition/fieldDefinitions/ManyHasOneDefinition.cjs.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/ManyHasOneDefinition.js +6 -3
- package/dist/production/src/model/definition/fieldDefinitions/ManyHasOneDefinition.js.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/OneHasManyDefinition.cjs +6 -3
- package/dist/production/src/model/definition/fieldDefinitions/OneHasManyDefinition.cjs.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/OneHasManyDefinition.js +6 -3
- package/dist/production/src/model/definition/fieldDefinitions/OneHasManyDefinition.js.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/OneHasOneDefinition.cjs +6 -3
- package/dist/production/src/model/definition/fieldDefinitions/OneHasOneDefinition.cjs.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/OneHasOneDefinition.js +6 -3
- package/dist/production/src/model/definition/fieldDefinitions/OneHasOneDefinition.js.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/OneHasOneInverseDefinition.cjs +6 -7
- package/dist/production/src/model/definition/fieldDefinitions/OneHasOneInverseDefinition.cjs.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/OneHasOneInverseDefinition.js +7 -8
- package/dist/production/src/model/definition/fieldDefinitions/OneHasOneInverseDefinition.js.map +1 -1
- package/dist/production/src/model/definition/index.cjs +6 -8
- package/dist/production/src/model/definition/index.cjs.map +1 -1
- package/dist/production/src/model/definition/index.js +12 -14
- 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 +5 -0
- package/dist/production/src/model/definition/internal/SchemaBuilder.cjs.map +1 -1
- package/dist/production/src/model/definition/internal/SchemaBuilder.js +5 -0
- package/dist/production/src/model/definition/internal/SchemaBuilder.js.map +1 -1
- package/dist/production/src/presets.cjs +13 -1
- package/dist/production/src/presets.cjs.map +1 -1
- package/dist/production/src/presets.js +13 -1
- package/dist/production/src/presets.js.map +1 -1
- package/dist/production/src/strict.cjs.map +1 -1
- package/dist/production/src/strict.js.map +1 -1
- package/dist/production/src/utils/MetadataStore.cjs.map +1 -1
- package/dist/production/src/utils/MetadataStore.js.map +1 -1
- package/dist/production/src/validation/index.cjs.map +1 -1
- package/dist/production/src/validation/index.js.map +1 -1
- package/dist/tests/tsconfig.tsbuildinfo +1 -1
- package/dist/types/index.d.ts +10 -6
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/model/builder/EntityBuilder.d.ts +1 -1
- package/dist/types/model/builder/EntityBuilder.d.ts.map +1 -1
- package/dist/types/model/definition/fieldDefinitions/ColumnDefinition.d.ts +12 -10
- package/dist/types/model/definition/fieldDefinitions/ColumnDefinition.d.ts.map +1 -1
- package/dist/types/model/definition/fieldDefinitions/FieldDefinition.d.ts +0 -3
- package/dist/types/model/definition/fieldDefinitions/FieldDefinition.d.ts.map +1 -1
- package/dist/types/model/definition/fieldDefinitions/ManyHasManyDefinition.d.ts +6 -6
- package/dist/types/model/definition/fieldDefinitions/ManyHasManyDefinition.d.ts.map +1 -1
- package/dist/types/model/definition/fieldDefinitions/ManyHasManyInverseDefinition.d.ts +4 -8
- package/dist/types/model/definition/fieldDefinitions/ManyHasManyInverseDefinition.d.ts.map +1 -1
- package/dist/types/model/definition/fieldDefinitions/ManyHasOneDefinition.d.ts +10 -10
- package/dist/types/model/definition/fieldDefinitions/ManyHasOneDefinition.d.ts.map +1 -1
- package/dist/types/model/definition/fieldDefinitions/OneHasManyDefinition.d.ts +4 -4
- package/dist/types/model/definition/fieldDefinitions/OneHasManyDefinition.d.ts.map +1 -1
- package/dist/types/model/definition/fieldDefinitions/OneHasOneDefinition.d.ts +11 -11
- package/dist/types/model/definition/fieldDefinitions/OneHasOneDefinition.d.ts.map +1 -1
- package/dist/types/model/definition/fieldDefinitions/OneHasOneInverseDefinition.d.ts +4 -8
- package/dist/types/model/definition/fieldDefinitions/OneHasOneInverseDefinition.d.ts.map +1 -1
- package/dist/types/model/definition/index.d.ts +1 -2
- 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 +2 -5
- package/dist/types/model/definition/types.d.ts.map +1 -1
- package/dist/types/presets.d.ts +1 -0
- package/dist/types/presets.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -6
- package/src/acl/definition/internal/EntityPredicateResolver.ts +2 -2
- package/src/index.ts +15 -0
- package/src/model/definition/fieldDefinitions/ColumnDefinition.ts +27 -19
- package/src/model/definition/fieldDefinitions/FieldDefinition.ts +1 -5
- package/src/model/definition/fieldDefinitions/ManyHasManyDefinition.ts +11 -7
- package/src/model/definition/fieldDefinitions/ManyHasManyInverseDefinition.ts +8 -12
- package/src/model/definition/fieldDefinitions/ManyHasOneDefinition.ts +14 -12
- package/src/model/definition/fieldDefinitions/OneHasManyDefinition.ts +8 -5
- package/src/model/definition/fieldDefinitions/OneHasOneDefinition.ts +16 -12
- package/src/model/definition/fieldDefinitions/OneHasOneInverseDefinition.ts +8 -11
- package/src/model/definition/index.ts +1 -2
- package/src/model/definition/internal/SchemaBuilder.ts +6 -0
- package/src/model/definition/types.ts +2 -3
- package/src/presets.ts +12 -0
- package/tests/cases/unit/__snapshots__/readActions.test.ts.snap +33 -0
- package/tests/cases/unit/createSchema.test.ts +78 -80
- package/tests/cases/unit/extendEntity.test.ts +2 -2
- package/tests/cases/unit/orderBy.test.ts +10 -6
- package/tests/cases/unit/readAclDefinitions.test.ts +197 -208
- package/tests/cases/unit/readActions.test.ts +2 -32
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaBuilder.js","sources":["../../../../../../../packages/schema-definition/src/model/definition/internal/SchemaBuilder.ts"],"sourcesContent":["import { Model } from '@contember/schema'\nimport { NamingConventions } from '@contember/schema-utils'\nimport 'reflect-metadata'\nimport { tuple } from '../../../utils'\nimport { EntityConstructor, FieldsDefinition } from '../types'\nimport { EnumDefinition } from '../EnumDefinition'\nimport { EntityRegistry } from './EntityRegistry'\nimport { EnumRegistry } from './EnumRegistry'\nimport { ColumnDefinition } from '../fieldDefinitions'\nimport { applyEntityExtensions } from '../extensions'\nimport { StrictOptions, StrictDefinitionValidator } from '../../../strict'\n\nexport class SchemaBuilder {\n\tprivate entityRegistry = new EntityRegistry()\n\n\tprivate enumRegistry = new EnumRegistry()\n\n\tconstructor(\n\t\tprivate readonly conventions: NamingConventions,\n\t\tprivate readonly strictDefinitionValidator: StrictDefinitionValidator = new StrictDefinitionValidator({}),\n\t) {}\n\n\tpublic addEntity(name: string, entity: EntityConstructor): void {\n\t\tthis.entityRegistry.register(name, entity)\n\t}\n\n\tpublic addEnum(name: string, definition: EnumDefinition): void {\n\t\tthis.enumRegistry.register(name, definition)\n\t}\n\n\tpublic createSchema(): Model.Schema {\n\t\tconst entities = Object.entries(this.entityRegistry.entities).map(([entityName, definition]): Model.Entity => {\n\t\t\tconst definitionInstance: FieldsDefinition = new definition()\n\n\t\t\tconst primaryName = this.conventions.getPrimaryField()\n\n\t\t\tconst entity: Model.Entity = {\n\t\t\t\tname: entityName,\n\t\t\t\tprimary: primaryName,\n\t\t\t\tprimaryColumn: this.conventions.getColumnName(primaryName),\n\t\t\t\tunique: this.createUnique(entityName, definitionInstance),\n\t\t\t\tindexes: [],\n\t\t\t\tfields: [\n\t\t\t\t\t...definitionInstance[primaryName] ? [] : [tuple(primaryName, this.createPrimaryColumn())],\n\t\t\t\t\t...Object.entries(definitionInstance),\n\t\t\t\t]\n\t\t\t\t\t.map(([name, definition]) => {\n\t\t\t\t\t\treturn definition.createField({\n\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\tentityName,\n\t\t\t\t\t\t\tconventions: this.conventions,\n\t\t\t\t\t\t\tenumRegistry: this.enumRegistry,\n\t\t\t\t\t\t\tentityRegistry: this.entityRegistry,\n\t\t\t\t\t\t\tstrictDefinitionValidator: this.strictDefinitionValidator,\n\t\t\t\t\t\t})\n\t\t\t\t\t})\n\t\t\t\t\t.reduce<Model.Entity['fields']>((acc, field) => {\n\t\t\t\t\t\tif (acc[field.name]) {\n\t\t\t\t\t\t\tthrow new Error(`Entity ${entityName}: field ${field.name} is already registered`)\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn { ...acc, [field.name]: field }\n\t\t\t\t\t}, {}),\n\t\t\t\ttableName: this.conventions.getTableName(entityName),\n\t\t\t\teventLog: {\n\t\t\t\t\tenabled: true,\n\t\t\t\t},\n\t\t\t}\n\t\t\treturn applyEntityExtensions(definition, {\n\t\t\t\tentity,\n\t\t\t\tdefinition: definitionInstance,\n\t\t\t\tregistry: this.entityRegistry,\n\t\t\t\tentityRegistry: this.entityRegistry,\n\t\t\t\tconventions: this.conventions,\n\t\t\t\tenumRegistry: this.enumRegistry,\n\t\t\t\tstrictDefinitionValidator: this.strictDefinitionValidator,\n\t\t\t})\n\t\t})\n\n\t\treturn {\n\t\t\tenums: Object.entries(this.enumRegistry.enums).reduce((acc, [name, def]) => ({ ...acc, [name]: def.values }), {}),\n\t\t\tentities: entities.reduce((acc, entity) => ({ ...acc, [entity.name]: entity }), {}),\n\t\t}\n\t}\n\n\tprivate createPrimaryColumn(): ColumnDefinition {\n\t\treturn new ColumnDefinition({\n\t\t\tnullable: false,\n\t\t\ttype: Model.ColumnType.Uuid,\n\t\t})\n\t}\n\n\tprivate createUnique(entityName: string, fieldDefinitions: FieldsDefinition): Model.UniqueConstraints {\n\t\tconst unique: Model.UniqueConstraint[] = []\n\t\tfor (const [fieldName, definition] of Object.entries(fieldDefinitions)) {\n\t\t\tif (definition.options.unique) {\n\t\t\t\tunique.push({ fields: [fieldName], ...definition.options.unique })\n\t\t\t}\n\t\t}\n\t\treturn unique\n\t}\n}\n"],"names":["definition"],"mappings":";;;;;;;;;;;AAYO,MAAM,cAAc;AAAA,EAK1B,YACkB,aACA,4BAAuD,IAAI,0BAA0B,CAAE,CAAA,GACvG;AAFgB,SAAA,cAAA;AACA,SAAA,4BAAA;AANV,kBAAA,MAAA,kBAAiB,IAAI,eAAe,CAAA;AAEpC,kBAAA,MAAA,gBAAe,IAAI,aAAa,CAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"SchemaBuilder.js","sources":["../../../../../../../packages/schema-definition/src/model/definition/internal/SchemaBuilder.ts"],"sourcesContent":["import { Model } from '@contember/schema'\nimport { NamingConventions } from '@contember/schema-utils'\nimport 'reflect-metadata'\nimport { tuple } from '../../../utils'\nimport { EntityConstructor, FieldsDefinition } from '../types'\nimport { EnumDefinition } from '../EnumDefinition'\nimport { EntityRegistry } from './EntityRegistry'\nimport { EnumRegistry } from './EnumRegistry'\nimport { ColumnDefinition } from '../fieldDefinitions'\nimport { applyEntityExtensions } from '../extensions'\nimport { StrictOptions, StrictDefinitionValidator } from '../../../strict'\n\nexport class SchemaBuilder {\n\tprivate entityRegistry = new EntityRegistry()\n\n\tprivate enumRegistry = new EnumRegistry()\n\n\tconstructor(\n\t\tprivate readonly conventions: NamingConventions,\n\t\tprivate readonly strictDefinitionValidator: StrictDefinitionValidator = new StrictDefinitionValidator({}),\n\t) {}\n\n\tpublic addEntity(name: string, entity: EntityConstructor): void {\n\t\tthis.entityRegistry.register(name, entity)\n\t}\n\n\tpublic addEnum(name: string, definition: EnumDefinition): void {\n\t\tthis.enumRegistry.register(name, definition)\n\t}\n\n\tpublic createSchema(): Model.Schema {\n\t\tconst entities = Object.entries(this.entityRegistry.entities).map(([entityName, definition]): Model.Entity => {\n\t\t\tconst definitionInstance: FieldsDefinition = new definition()\n\n\t\t\tObject.entries(definitionInstance).forEach(([fieldName, fieldDefinition]) => {\n\t\t\t\tif (typeof fieldDefinition !== 'object' || !('createField' in fieldDefinition)) {\n\t\t\t\t\tthrow `Entity \"${entityName}\": field \"${fieldName}\" does not contain expected field definition. Check that you are correctly invoking methods of the definition builder.`\n\t\t\t\t}\n\t\t\t})\n\n\t\t\tconst primaryName = this.conventions.getPrimaryField()\n\n\t\t\tconst entity: Model.Entity = {\n\t\t\t\tname: entityName,\n\t\t\t\tprimary: primaryName,\n\t\t\t\tprimaryColumn: this.conventions.getColumnName(primaryName),\n\t\t\t\tunique: this.createUnique(entityName, definitionInstance),\n\t\t\t\tindexes: [],\n\t\t\t\tfields: [\n\t\t\t\t\t...definitionInstance[primaryName] ? [] : [tuple(primaryName, this.createPrimaryColumn())],\n\t\t\t\t\t...Object.entries(definitionInstance),\n\t\t\t\t]\n\t\t\t\t\t.map(([name, definition]) => {\n\t\t\t\t\t\treturn definition.createField({\n\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\tentityName,\n\t\t\t\t\t\t\tconventions: this.conventions,\n\t\t\t\t\t\t\tenumRegistry: this.enumRegistry,\n\t\t\t\t\t\t\tentityRegistry: this.entityRegistry,\n\t\t\t\t\t\t\tstrictDefinitionValidator: this.strictDefinitionValidator,\n\t\t\t\t\t\t})\n\t\t\t\t\t})\n\t\t\t\t\t.reduce<Model.Entity['fields']>((acc, field) => {\n\t\t\t\t\t\tif (acc[field.name]) {\n\t\t\t\t\t\t\tthrow new Error(`Entity ${entityName}: field ${field.name} is already registered`)\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn { ...acc, [field.name]: field }\n\t\t\t\t\t}, {}),\n\t\t\t\ttableName: this.conventions.getTableName(entityName),\n\t\t\t\teventLog: {\n\t\t\t\t\tenabled: true,\n\t\t\t\t},\n\t\t\t}\n\t\t\treturn applyEntityExtensions(definition, {\n\t\t\t\tentity,\n\t\t\t\tdefinition: definitionInstance,\n\t\t\t\tregistry: this.entityRegistry,\n\t\t\t\tentityRegistry: this.entityRegistry,\n\t\t\t\tconventions: this.conventions,\n\t\t\t\tenumRegistry: this.enumRegistry,\n\t\t\t\tstrictDefinitionValidator: this.strictDefinitionValidator,\n\t\t\t})\n\t\t})\n\n\t\treturn {\n\t\t\tenums: Object.entries(this.enumRegistry.enums).reduce((acc, [name, def]) => ({ ...acc, [name]: def.values }), {}),\n\t\t\tentities: entities.reduce((acc, entity) => ({ ...acc, [entity.name]: entity }), {}),\n\t\t}\n\t}\n\n\tprivate createPrimaryColumn(): ColumnDefinition {\n\t\treturn new ColumnDefinition({\n\t\t\tnullable: false,\n\t\t\ttype: Model.ColumnType.Uuid,\n\t\t})\n\t}\n\n\tprivate createUnique(entityName: string, fieldDefinitions: FieldsDefinition): Model.UniqueConstraints {\n\t\tconst unique: Model.UniqueConstraint[] = []\n\t\tfor (const [fieldName, definition] of Object.entries(fieldDefinitions)) {\n\t\t\tif (definition.options.unique) {\n\t\t\t\tunique.push({ fields: [fieldName], ...definition.options.unique })\n\t\t\t}\n\t\t}\n\t\treturn unique\n\t}\n}\n"],"names":["definition"],"mappings":"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"}
|
|
@@ -17,9 +17,21 @@ const v1_4preset = {
|
|
|
17
17
|
useExistsInHasManyFilter: true
|
|
18
18
|
}
|
|
19
19
|
};
|
|
20
|
+
const v2_0preset = {
|
|
21
|
+
tenant: {
|
|
22
|
+
inviteExpirationMinutes: 60 * 24 * 7
|
|
23
|
+
// 7 days
|
|
24
|
+
},
|
|
25
|
+
content: {
|
|
26
|
+
shortDateResponse: true,
|
|
27
|
+
fullDateTimeResponse: true,
|
|
28
|
+
useExistsInHasManyFilter: true
|
|
29
|
+
}
|
|
30
|
+
};
|
|
20
31
|
const settingsPresets = {
|
|
21
32
|
"v1.3": v1_3preset,
|
|
22
|
-
"v1.4": v1_4preset
|
|
33
|
+
"v1.4": v1_4preset,
|
|
34
|
+
"v2.0": v2_0preset
|
|
23
35
|
};
|
|
24
36
|
exports.settingsPresets = settingsPresets;
|
|
25
37
|
//# sourceMappingURL=presets.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presets.cjs","sources":["../../../../packages/schema-definition/src/presets.ts"],"sourcesContent":["import { Settings } from '@contember/schema'\n\nconst v1_3preset: Settings.Schema = {\n\tuseExistsInHasManyFilter: true,\n\ttenant: {\n\t\tinviteExpirationMinutes: 60 * 24 * 7, // 7 days\n\t},\n}\n\n\nconst v1_4preset: Settings.Schema = {\n\ttenant: {\n\t\tinviteExpirationMinutes: 60 * 24 * 7, // 7 days\n\t},\n\tcontent: {\n\t\tshortDateResponse: true,\n\t\tuseExistsInHasManyFilter: true,\n\t},\n}\n\nexport const settingsPresets = {\n\t'v1.3': v1_3preset,\n\t'v1.4': v1_4preset,\n}\n"],"names":[],"mappings":";;AAEA,MAAM,aAA8B;AAAA,EACnC,0BAA0B;AAAA,EAC1B,QAAQ;AAAA,IACP,yBAAyB,KAAK,KAAK;AAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"presets.cjs","sources":["../../../../packages/schema-definition/src/presets.ts"],"sourcesContent":["import { Settings } from '@contember/schema'\n\nconst v1_3preset: Settings.Schema = {\n\tuseExistsInHasManyFilter: true,\n\ttenant: {\n\t\tinviteExpirationMinutes: 60 * 24 * 7, // 7 days\n\t},\n}\n\n\nconst v1_4preset: Settings.Schema = {\n\ttenant: {\n\t\tinviteExpirationMinutes: 60 * 24 * 7, // 7 days\n\t},\n\tcontent: {\n\t\tshortDateResponse: true,\n\t\tuseExistsInHasManyFilter: true,\n\t},\n}\n\nconst v2_0preset: Settings.Schema = {\n\ttenant: {\n\t\tinviteExpirationMinutes: 60 * 24 * 7, // 7 days\n\t},\n\tcontent: {\n\t\tshortDateResponse: true,\n\t\tfullDateTimeResponse: true,\n\t\tuseExistsInHasManyFilter: true,\n\t},\n}\n\nexport const settingsPresets = {\n\t'v1.3': v1_3preset,\n\t'v1.4': v1_4preset,\n\t'v2.0': v2_0preset,\n}\n"],"names":[],"mappings":";;AAEA,MAAM,aAA8B;AAAA,EACnC,0BAA0B;AAAA,EAC1B,QAAQ;AAAA,IACP,yBAAyB,KAAK,KAAK;AAAA;AAAA,EAAA;AAErC;AAGA,MAAM,aAA8B;AAAA,EACnC,QAAQ;AAAA,IACP,yBAAyB,KAAK,KAAK;AAAA;AAAA,EACpC;AAAA,EACA,SAAS;AAAA,IACR,mBAAmB;AAAA,IACnB,0BAA0B;AAAA,EAAA;AAE5B;AAEA,MAAM,aAA8B;AAAA,EACnC,QAAQ;AAAA,IACP,yBAAyB,KAAK,KAAK;AAAA;AAAA,EACpC;AAAA,EACA,SAAS;AAAA,IACR,mBAAmB;AAAA,IACnB,sBAAsB;AAAA,IACtB,0BAA0B;AAAA,EAAA;AAE5B;AAEO,MAAM,kBAAkB;AAAA,EAC9B,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AACT;;"}
|
|
@@ -15,9 +15,21 @@ const v1_4preset = {
|
|
|
15
15
|
useExistsInHasManyFilter: true
|
|
16
16
|
}
|
|
17
17
|
};
|
|
18
|
+
const v2_0preset = {
|
|
19
|
+
tenant: {
|
|
20
|
+
inviteExpirationMinutes: 60 * 24 * 7
|
|
21
|
+
// 7 days
|
|
22
|
+
},
|
|
23
|
+
content: {
|
|
24
|
+
shortDateResponse: true,
|
|
25
|
+
fullDateTimeResponse: true,
|
|
26
|
+
useExistsInHasManyFilter: true
|
|
27
|
+
}
|
|
28
|
+
};
|
|
18
29
|
const settingsPresets = {
|
|
19
30
|
"v1.3": v1_3preset,
|
|
20
|
-
"v1.4": v1_4preset
|
|
31
|
+
"v1.4": v1_4preset,
|
|
32
|
+
"v2.0": v2_0preset
|
|
21
33
|
};
|
|
22
34
|
export {
|
|
23
35
|
settingsPresets
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presets.js","sources":["../../../../packages/schema-definition/src/presets.ts"],"sourcesContent":["import { Settings } from '@contember/schema'\n\nconst v1_3preset: Settings.Schema = {\n\tuseExistsInHasManyFilter: true,\n\ttenant: {\n\t\tinviteExpirationMinutes: 60 * 24 * 7, // 7 days\n\t},\n}\n\n\nconst v1_4preset: Settings.Schema = {\n\ttenant: {\n\t\tinviteExpirationMinutes: 60 * 24 * 7, // 7 days\n\t},\n\tcontent: {\n\t\tshortDateResponse: true,\n\t\tuseExistsInHasManyFilter: true,\n\t},\n}\n\nexport const settingsPresets = {\n\t'v1.3': v1_3preset,\n\t'v1.4': v1_4preset,\n}\n"],"names":[],"mappings":"AAEA,MAAM,aAA8B;AAAA,EACnC,0BAA0B;AAAA,EAC1B,QAAQ;AAAA,IACP,yBAAyB,KAAK,KAAK;AAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"presets.js","sources":["../../../../packages/schema-definition/src/presets.ts"],"sourcesContent":["import { Settings } from '@contember/schema'\n\nconst v1_3preset: Settings.Schema = {\n\tuseExistsInHasManyFilter: true,\n\ttenant: {\n\t\tinviteExpirationMinutes: 60 * 24 * 7, // 7 days\n\t},\n}\n\n\nconst v1_4preset: Settings.Schema = {\n\ttenant: {\n\t\tinviteExpirationMinutes: 60 * 24 * 7, // 7 days\n\t},\n\tcontent: {\n\t\tshortDateResponse: true,\n\t\tuseExistsInHasManyFilter: true,\n\t},\n}\n\nconst v2_0preset: Settings.Schema = {\n\ttenant: {\n\t\tinviteExpirationMinutes: 60 * 24 * 7, // 7 days\n\t},\n\tcontent: {\n\t\tshortDateResponse: true,\n\t\tfullDateTimeResponse: true,\n\t\tuseExistsInHasManyFilter: true,\n\t},\n}\n\nexport const settingsPresets = {\n\t'v1.3': v1_3preset,\n\t'v1.4': v1_4preset,\n\t'v2.0': v2_0preset,\n}\n"],"names":[],"mappings":"AAEA,MAAM,aAA8B;AAAA,EACnC,0BAA0B;AAAA,EAC1B,QAAQ;AAAA,IACP,yBAAyB,KAAK,KAAK;AAAA;AAAA,EAAA;AAErC;AAGA,MAAM,aAA8B;AAAA,EACnC,QAAQ;AAAA,IACP,yBAAyB,KAAK,KAAK;AAAA;AAAA,EACpC;AAAA,EACA,SAAS;AAAA,IACR,mBAAmB;AAAA,IACnB,0BAA0B;AAAA,EAAA;AAE5B;AAEA,MAAM,aAA8B;AAAA,EACnC,QAAQ;AAAA,IACP,yBAAyB,KAAK,KAAK;AAAA;AAAA,EACpC;AAAA,EACA,SAAS;AAAA,IACR,mBAAmB;AAAA,IACnB,sBAAsB;AAAA,IACtB,0BAA0B;AAAA,EAAA;AAE5B;AAEO,MAAM,kBAAkB;AAAA,EAC9B,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AACT;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strict.cjs","sources":["../../../../packages/schema-definition/src/strict.ts"],"sourcesContent":["import { Model } from '@contember/schema'\n\nexport type StrictOptions = {\n\trequireOnDelete?: boolean\n\trequireInverseSide?: boolean\n}\n\nexport const allStrict: StrictOptions = {\n\trequireOnDelete: true,\n\trequireInverseSide: true,\n}\n\n\nexport type Warning = { message: string }\n\nexport class StrictDefinitionValidator {\n\tpublic readonly warnings: Warning[] = []\n\n\tconstructor(\n\t\tprivate readonly options: StrictOptions,\n\t) {\n\t}\n\n\tpublic validateInverseSide(entityName: string, field: string, definition: { inversedBy?: string }): void {\n\t\tif (!definition.inversedBy && this.options.requireInverseSide) {\n\t\t\tthis.registerWarning(`${entityName}.${field}: inverse side of the relation is not defined.`)\n\t\t}\n\t}\n\n\n\tpublic validateOnCascade(entityName: string, field: string, definition: { onDelete?: Model.OnDelete}): void {\n\t\tif (!definition.onDelete && this.options.requireOnDelete) {\n\t\t\tthis.registerWarning(`${entityName}.${field}: onDelete behaviour is not set. Use one of cascadeOnDelete(), setNullOnDelete() or restrictOnDelete().`)\n\t\t}\n\t}\n\n\tpublic registerWarning(message: string): void {\n\t\tthis.warnings.push({ message })\n\t}\n}\n"],"names":[],"mappings":";;;;;AAOO,MAAM,YAA2B;AAAA,EACvC,iBAAiB;AAAA,EACjB,oBAAoB;AACrB;AAKO,MAAM,0BAA0B;AAAA,EAGtC,YACkB,SAChB;AADgB,SAAA,UAAA;AAHlB,kBAAA,MAAgB,YAAsB,
|
|
1
|
+
{"version":3,"file":"strict.cjs","sources":["../../../../packages/schema-definition/src/strict.ts"],"sourcesContent":["import { Model } from '@contember/schema'\n\nexport type StrictOptions = {\n\trequireOnDelete?: boolean\n\trequireInverseSide?: boolean\n}\n\nexport const allStrict: StrictOptions = {\n\trequireOnDelete: true,\n\trequireInverseSide: true,\n}\n\n\nexport type Warning = { message: string }\n\nexport class StrictDefinitionValidator {\n\tpublic readonly warnings: Warning[] = []\n\n\tconstructor(\n\t\tprivate readonly options: StrictOptions,\n\t) {\n\t}\n\n\tpublic validateInverseSide(entityName: string, field: string, definition: { inversedBy?: string }): void {\n\t\tif (!definition.inversedBy && this.options.requireInverseSide) {\n\t\t\tthis.registerWarning(`${entityName}.${field}: inverse side of the relation is not defined.`)\n\t\t}\n\t}\n\n\n\tpublic validateOnCascade(entityName: string, field: string, definition: { onDelete?: Model.OnDelete}): void {\n\t\tif (!definition.onDelete && this.options.requireOnDelete) {\n\t\t\tthis.registerWarning(`${entityName}.${field}: onDelete behaviour is not set. Use one of cascadeOnDelete(), setNullOnDelete() or restrictOnDelete().`)\n\t\t}\n\t}\n\n\tpublic registerWarning(message: string): void {\n\t\tthis.warnings.push({ message })\n\t}\n}\n"],"names":[],"mappings":";;;;;AAOO,MAAM,YAA2B;AAAA,EACvC,iBAAiB;AAAA,EACjB,oBAAoB;AACrB;AAKO,MAAM,0BAA0B;AAAA,EAGtC,YACkB,SAChB;AADgB,SAAA,UAAA;AAHlB,kBAAA,MAAgB,YAAsB,EAAC;AAAA,EAAA;AAAA,EAOhC,oBAAoB,YAAoB,OAAe,YAA2C;AACxG,QAAI,CAAC,WAAW,cAAc,KAAK,QAAQ,oBAAoB;AAC9D,WAAK,gBAAgB,GAAG,UAAU,IAAI,KAAK,gDAAgD;AAAA,IAAA;AAAA,EAC5F;AAAA,EAIM,kBAAkB,YAAoB,OAAe,YAAgD;AAC3G,QAAI,CAAC,WAAW,YAAY,KAAK,QAAQ,iBAAiB;AACzD,WAAK,gBAAgB,GAAG,UAAU,IAAI,KAAK,yGAAyG;AAAA,IAAA;AAAA,EACrJ;AAAA,EAGM,gBAAgB,SAAuB;AAC7C,SAAK,SAAS,KAAK,EAAE,QAAA,CAAS;AAAA,EAAA;AAEhC;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strict.js","sources":["../../../../packages/schema-definition/src/strict.ts"],"sourcesContent":["import { Model } from '@contember/schema'\n\nexport type StrictOptions = {\n\trequireOnDelete?: boolean\n\trequireInverseSide?: boolean\n}\n\nexport const allStrict: StrictOptions = {\n\trequireOnDelete: true,\n\trequireInverseSide: true,\n}\n\n\nexport type Warning = { message: string }\n\nexport class StrictDefinitionValidator {\n\tpublic readonly warnings: Warning[] = []\n\n\tconstructor(\n\t\tprivate readonly options: StrictOptions,\n\t) {\n\t}\n\n\tpublic validateInverseSide(entityName: string, field: string, definition: { inversedBy?: string }): void {\n\t\tif (!definition.inversedBy && this.options.requireInverseSide) {\n\t\t\tthis.registerWarning(`${entityName}.${field}: inverse side of the relation is not defined.`)\n\t\t}\n\t}\n\n\n\tpublic validateOnCascade(entityName: string, field: string, definition: { onDelete?: Model.OnDelete}): void {\n\t\tif (!definition.onDelete && this.options.requireOnDelete) {\n\t\t\tthis.registerWarning(`${entityName}.${field}: onDelete behaviour is not set. Use one of cascadeOnDelete(), setNullOnDelete() or restrictOnDelete().`)\n\t\t}\n\t}\n\n\tpublic registerWarning(message: string): void {\n\t\tthis.warnings.push({ message })\n\t}\n}\n"],"names":[],"mappings":";;;AAOO,MAAM,YAA2B;AAAA,EACvC,iBAAiB;AAAA,EACjB,oBAAoB;AACrB;AAKO,MAAM,0BAA0B;AAAA,EAGtC,YACkB,SAChB;AADgB,SAAA,UAAA;AAHlB,kBAAA,MAAgB,YAAsB,
|
|
1
|
+
{"version":3,"file":"strict.js","sources":["../../../../packages/schema-definition/src/strict.ts"],"sourcesContent":["import { Model } from '@contember/schema'\n\nexport type StrictOptions = {\n\trequireOnDelete?: boolean\n\trequireInverseSide?: boolean\n}\n\nexport const allStrict: StrictOptions = {\n\trequireOnDelete: true,\n\trequireInverseSide: true,\n}\n\n\nexport type Warning = { message: string }\n\nexport class StrictDefinitionValidator {\n\tpublic readonly warnings: Warning[] = []\n\n\tconstructor(\n\t\tprivate readonly options: StrictOptions,\n\t) {\n\t}\n\n\tpublic validateInverseSide(entityName: string, field: string, definition: { inversedBy?: string }): void {\n\t\tif (!definition.inversedBy && this.options.requireInverseSide) {\n\t\t\tthis.registerWarning(`${entityName}.${field}: inverse side of the relation is not defined.`)\n\t\t}\n\t}\n\n\n\tpublic validateOnCascade(entityName: string, field: string, definition: { onDelete?: Model.OnDelete}): void {\n\t\tif (!definition.onDelete && this.options.requireOnDelete) {\n\t\t\tthis.registerWarning(`${entityName}.${field}: onDelete behaviour is not set. Use one of cascadeOnDelete(), setNullOnDelete() or restrictOnDelete().`)\n\t\t}\n\t}\n\n\tpublic registerWarning(message: string): void {\n\t\tthis.warnings.push({ message })\n\t}\n}\n"],"names":[],"mappings":";;;AAOO,MAAM,YAA2B;AAAA,EACvC,iBAAiB;AAAA,EACjB,oBAAoB;AACrB;AAKO,MAAM,0BAA0B;AAAA,EAGtC,YACkB,SAChB;AADgB,SAAA,UAAA;AAHlB,kBAAA,MAAgB,YAAsB,EAAC;AAAA,EAAA;AAAA,EAOhC,oBAAoB,YAAoB,OAAe,YAA2C;AACxG,QAAI,CAAC,WAAW,cAAc,KAAK,QAAQ,oBAAoB;AAC9D,WAAK,gBAAgB,GAAG,UAAU,IAAI,KAAK,gDAAgD;AAAA,IAAA;AAAA,EAC5F;AAAA,EAIM,kBAAkB,YAAoB,OAAe,YAAgD;AAC3G,QAAI,CAAC,WAAW,YAAY,KAAK,QAAQ,iBAAiB;AACzD,WAAK,gBAAgB,GAAG,UAAU,IAAI,KAAK,yGAAyG;AAAA,IAAA;AAAA,EACrJ;AAAA,EAGM,gBAAgB,SAAuB;AAC7C,SAAK,SAAS,KAAK,EAAE,QAAA,CAAS;AAAA,EAAA;AAEhC;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MetadataStore.cjs","sources":["../../../../../packages/schema-definition/src/utils/MetadataStore.ts"],"sourcesContent":["import 'reflect-metadata'\n\nexport interface MetadataStore<V> {\n\tget(target: Object): V\n\tupdate(target: Object, generator: (current: V) => V): void\n}\n\nexport const createMetadataStore = <V>(initialValue: V): MetadataStore<V> => {\n\tconst key = Symbol()\n\tconst get = (target: Object): V => {\n\t\treturn Reflect.hasMetadata(key, target)\n\t\t\t? Reflect.getMetadata(key, target)\n\t\t\t: initialValue\n\t}\n\treturn {\n\t\tget,\n\t\tupdate: (target, generator) => {\n\t\t\tconst current = get(target)\n\t\t\tconst newMetadata = generator(current)\n\t\t\tReflect.defineMetadata(key, newMetadata, target)\n\t\t},\n\t}\n}\n"],"names":[],"mappings":";;;AAOa,MAAA,sBAAsB,CAAI,iBAAsC;AAC5E,QAAM,MAAM;
|
|
1
|
+
{"version":3,"file":"MetadataStore.cjs","sources":["../../../../../packages/schema-definition/src/utils/MetadataStore.ts"],"sourcesContent":["import 'reflect-metadata'\n\nexport interface MetadataStore<V> {\n\tget(target: Object): V\n\tupdate(target: Object, generator: (current: V) => V): void\n}\n\nexport const createMetadataStore = <V>(initialValue: V): MetadataStore<V> => {\n\tconst key = Symbol()\n\tconst get = (target: Object): V => {\n\t\treturn Reflect.hasMetadata(key, target)\n\t\t\t? Reflect.getMetadata(key, target)\n\t\t\t: initialValue\n\t}\n\treturn {\n\t\tget,\n\t\tupdate: (target, generator) => {\n\t\t\tconst current = get(target)\n\t\t\tconst newMetadata = generator(current)\n\t\t\tReflect.defineMetadata(key, newMetadata, target)\n\t\t},\n\t}\n}\n"],"names":[],"mappings":";;;AAOa,MAAA,sBAAsB,CAAI,iBAAsC;AAC5E,QAAM,MAAM,OAAO;AACb,QAAA,MAAM,CAAC,WAAsB;AAC3B,WAAA,QAAQ,YAAY,KAAK,MAAM,IACnC,QAAQ,YAAY,KAAK,MAAM,IAC/B;AAAA,EACJ;AACO,SAAA;AAAA,IACN;AAAA,IACA,QAAQ,CAAC,QAAQ,cAAc;AACxB,YAAA,UAAU,IAAI,MAAM;AACpB,YAAA,cAAc,UAAU,OAAO;AAC7B,cAAA,eAAe,KAAK,aAAa,MAAM;AAAA,IAAA;AAAA,EAEjD;AACD;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MetadataStore.js","sources":["../../../../../packages/schema-definition/src/utils/MetadataStore.ts"],"sourcesContent":["import 'reflect-metadata'\n\nexport interface MetadataStore<V> {\n\tget(target: Object): V\n\tupdate(target: Object, generator: (current: V) => V): void\n}\n\nexport const createMetadataStore = <V>(initialValue: V): MetadataStore<V> => {\n\tconst key = Symbol()\n\tconst get = (target: Object): V => {\n\t\treturn Reflect.hasMetadata(key, target)\n\t\t\t? Reflect.getMetadata(key, target)\n\t\t\t: initialValue\n\t}\n\treturn {\n\t\tget,\n\t\tupdate: (target, generator) => {\n\t\t\tconst current = get(target)\n\t\t\tconst newMetadata = generator(current)\n\t\t\tReflect.defineMetadata(key, newMetadata, target)\n\t\t},\n\t}\n}\n"],"names":[],"mappings":";AAOa,MAAA,sBAAsB,CAAI,iBAAsC;AAC5E,QAAM,MAAM;
|
|
1
|
+
{"version":3,"file":"MetadataStore.js","sources":["../../../../../packages/schema-definition/src/utils/MetadataStore.ts"],"sourcesContent":["import 'reflect-metadata'\n\nexport interface MetadataStore<V> {\n\tget(target: Object): V\n\tupdate(target: Object, generator: (current: V) => V): void\n}\n\nexport const createMetadataStore = <V>(initialValue: V): MetadataStore<V> => {\n\tconst key = Symbol()\n\tconst get = (target: Object): V => {\n\t\treturn Reflect.hasMetadata(key, target)\n\t\t\t? Reflect.getMetadata(key, target)\n\t\t\t: initialValue\n\t}\n\treturn {\n\t\tget,\n\t\tupdate: (target, generator) => {\n\t\t\tconst current = get(target)\n\t\t\tconst newMetadata = generator(current)\n\t\t\tReflect.defineMetadata(key, newMetadata, target)\n\t\t},\n\t}\n}\n"],"names":[],"mappings":";AAOa,MAAA,sBAAsB,CAAI,iBAAsC;AAC5E,QAAM,MAAM,OAAO;AACb,QAAA,MAAM,CAAC,WAAsB;AAC3B,WAAA,QAAQ,YAAY,KAAK,MAAM,IACnC,QAAQ,YAAY,KAAK,MAAM,IAC/B;AAAA,EACJ;AACO,SAAA;AAAA,IACN;AAAA,IACA,QAAQ,CAAC,QAAQ,cAAc;AACxB,YAAA,UAAU,IAAI,MAAM;AACpB,YAAA,cAAc,UAAU,OAAO;AAC7B,cAAA,eAAe,KAAK,aAAa,MAAM;AAAA,IAAA;AAAA,EAEjD;AACD;"}
|
|
@@ -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 '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 +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 '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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"}
|