@contember/schema-definition 2.1.0-beta.2 → 2.2.0-alpha.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 +1 -0
- package/dist/development/index.cjs.map +1 -1
- package/dist/development/index.js +2 -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/FieldPermissionsBuilder.cjs.map +1 -1
- package/dist/development/src/acl/builder/FieldPermissionsBuilder.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/definition/aclExtensions.cjs.map +1 -1
- package/dist/development/src/acl/definition/aclExtensions.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/index.js.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.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.map +1 -1
- package/dist/development/src/acl/definition/permissions.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/internal/store.cjs.map +1 -1
- package/dist/development/src/actions/definition/internal/store.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 +2 -1
- package/dist/development/src/createSchema.cjs.map +1 -1
- package/dist/development/src/createSchema.js +2 -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/EventLogDefinition.cjs.map +1 -1
- package/dist/development/src/model/definition/EventLogDefinition.js.map +1 -1
- package/dist/development/src/model/definition/IndexDefinition.cjs +35 -10
- package/dist/development/src/model/definition/IndexDefinition.cjs.map +1 -1
- package/dist/development/src/model/definition/IndexDefinition.js +35 -10
- 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 +20 -2
- package/dist/development/src/model/definition/fieldDefinitions/ColumnDefinition.cjs.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/ColumnDefinition.js +20 -2
- 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 +1 -0
- package/dist/development/src/model/definition/index.cjs.map +1 -1
- package/dist/development/src/model/definition/index.js +2 -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/strict.cjs +20 -5
- package/dist/development/src/strict.cjs.map +1 -1
- package/dist/development/src/strict.js +20 -5
- package/dist/development/src/strict.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/validation/index.cjs.map +1 -1
- package/dist/development/src/validation/index.js.map +1 -1
- package/dist/production/index.cjs +1 -0
- package/dist/production/index.cjs.map +1 -1
- package/dist/production/index.js +2 -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/FieldPermissionsBuilder.cjs.map +1 -1
- package/dist/production/src/acl/builder/FieldPermissionsBuilder.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/definition/aclExtensions.cjs.map +1 -1
- package/dist/production/src/acl/definition/aclExtensions.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/index.js.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.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.map +1 -1
- package/dist/production/src/acl/definition/permissions.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/internal/store.cjs.map +1 -1
- package/dist/production/src/actions/definition/internal/store.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 +2 -1
- package/dist/production/src/createSchema.cjs.map +1 -1
- package/dist/production/src/createSchema.js +2 -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/EventLogDefinition.cjs.map +1 -1
- package/dist/production/src/model/definition/EventLogDefinition.js.map +1 -1
- package/dist/production/src/model/definition/IndexDefinition.cjs +35 -10
- package/dist/production/src/model/definition/IndexDefinition.cjs.map +1 -1
- package/dist/production/src/model/definition/IndexDefinition.js +35 -10
- 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 +20 -2
- package/dist/production/src/model/definition/fieldDefinitions/ColumnDefinition.cjs.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/ColumnDefinition.js +20 -2
- 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 +1 -0
- package/dist/production/src/model/definition/index.cjs.map +1 -1
- package/dist/production/src/model/definition/index.js +2 -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/strict.cjs +20 -5
- package/dist/production/src/strict.cjs.map +1 -1
- package/dist/production/src/strict.js +20 -5
- package/dist/production/src/strict.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/validation/index.cjs.map +1 -1
- package/dist/production/src/validation/index.js.map +1 -1
- package/dist/tests/cases/unit/numericColumn.test.d.ts +2 -0
- package/dist/tests/cases/unit/numericColumn.test.d.ts.map +1 -0
- package/dist/tests/tsconfig.tsbuildinfo +1 -1
- package/dist/types/acl/builder/EntityPermissionsBuilder.d.ts +5 -5
- package/dist/types/acl/builder/EntityPermissionsBuilder.d.ts.map +1 -1
- package/dist/types/acl/builder/FieldPermissionsBuilder.d.ts +4 -4
- package/dist/types/acl/builder/FieldPermissionsBuilder.d.ts.map +1 -1
- package/dist/types/acl/builder/PermissionsBuilder.d.ts +4 -4
- package/dist/types/acl/builder/PermissionsBuilder.d.ts.map +1 -1
- package/dist/types/acl/definition/aclExtensions.d.ts +2 -2
- package/dist/types/acl/definition/aclExtensions.d.ts.map +1 -1
- package/dist/types/acl/definition/customPrimary.d.ts +2 -2
- package/dist/types/acl/definition/customPrimary.d.ts.map +1 -1
- package/dist/types/acl/definition/index.d.ts +5 -5
- package/dist/types/acl/definition/index.d.ts.map +1 -1
- package/dist/types/acl/definition/internal/AclFactory.d.ts +2 -2
- package/dist/types/acl/definition/internal/AclFactory.d.ts.map +1 -1
- package/dist/types/acl/definition/internal/EntityPredicateResolver.d.ts +1 -1
- package/dist/types/acl/definition/internal/EntityPredicateResolver.d.ts.map +1 -1
- package/dist/types/acl/definition/internal/createPredicateName.d.ts +1 -1
- package/dist/types/acl/definition/internal/createPredicateName.d.ts.map +1 -1
- package/dist/types/acl/definition/internal/stores.d.ts +3 -3
- package/dist/types/acl/definition/internal/stores.d.ts.map +1 -1
- package/dist/types/acl/definition/permissions.d.ts +4 -4
- package/dist/types/acl/definition/permissions.d.ts.map +1 -1
- package/dist/types/acl/definition/variables.d.ts +1 -1
- package/dist/types/acl/definition/variables.d.ts.map +1 -1
- package/dist/types/actions/definition/index.d.ts +2 -2
- package/dist/types/actions/definition/index.d.ts.map +1 -1
- package/dist/types/actions/definition/internal/store.d.ts +2 -2
- package/dist/types/actions/definition/internal/store.d.ts.map +1 -1
- package/dist/types/actions/definition/triggers.d.ts +2 -2
- package/dist/types/actions/definition/triggers.d.ts.map +1 -1
- package/dist/types/createSchema.d.ts +1 -1
- package/dist/types/createSchema.d.ts.map +1 -1
- package/dist/types/index.d.ts +19 -18
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/model/builder/ColumnBuilder.d.ts +1 -1
- package/dist/types/model/builder/ColumnBuilder.d.ts.map +1 -1
- package/dist/types/model/builder/EntityBuilder.d.ts +7 -7
- package/dist/types/model/builder/EntityBuilder.d.ts.map +1 -1
- package/dist/types/model/builder/FieldBuilder.d.ts +5 -5
- package/dist/types/model/builder/FieldBuilder.d.ts.map +1 -1
- package/dist/types/model/builder/ManyHasManyBuilder.d.ts +2 -2
- package/dist/types/model/builder/ManyHasManyBuilder.d.ts.map +1 -1
- package/dist/types/model/builder/ManyHasOneBuilder.d.ts +2 -2
- package/dist/types/model/builder/ManyHasOneBuilder.d.ts.map +1 -1
- package/dist/types/model/builder/OneHasManyBuilder.d.ts +2 -2
- package/dist/types/model/builder/OneHasManyBuilder.d.ts.map +1 -1
- package/dist/types/model/builder/OneHasOneBuilder.d.ts +2 -2
- package/dist/types/model/builder/OneHasOneBuilder.d.ts.map +1 -1
- package/dist/types/model/builder/SchemaBuilder.d.ts +2 -2
- package/dist/types/model/builder/SchemaBuilder.d.ts.map +1 -1
- package/dist/types/model/builder/SchemaBuilderInternal.d.ts +2 -2
- package/dist/types/model/builder/SchemaBuilderInternal.d.ts.map +1 -1
- package/dist/types/model/builder/internal/ColumnProcessor.d.ts +2 -2
- package/dist/types/model/builder/internal/ColumnProcessor.d.ts.map +1 -1
- package/dist/types/model/builder/internal/ManyHasManyProcessor.d.ts +2 -2
- package/dist/types/model/builder/internal/ManyHasManyProcessor.d.ts.map +1 -1
- package/dist/types/model/builder/internal/ManyHasOneProcessor.d.ts +2 -2
- package/dist/types/model/builder/internal/ManyHasOneProcessor.d.ts.map +1 -1
- package/dist/types/model/builder/internal/OneHasManyProcessor.d.ts +2 -2
- package/dist/types/model/builder/internal/OneHasManyProcessor.d.ts.map +1 -1
- package/dist/types/model/builder/internal/OneHasOneProcessor.d.ts +2 -2
- package/dist/types/model/builder/internal/OneHasOneProcessor.d.ts.map +1 -1
- package/dist/types/model/builder/types.d.ts +1 -1
- package/dist/types/model/builder/types.d.ts.map +1 -1
- package/dist/types/model/definition/EventLogDefinition.d.ts +1 -1
- package/dist/types/model/definition/EventLogDefinition.d.ts.map +1 -1
- package/dist/types/model/definition/IndexDefinition.d.ts +11 -2
- package/dist/types/model/definition/IndexDefinition.d.ts.map +1 -1
- package/dist/types/model/definition/OrderByDefinition.d.ts +1 -1
- package/dist/types/model/definition/OrderByDefinition.d.ts.map +1 -1
- package/dist/types/model/definition/UniqueDefinition.d.ts +1 -1
- package/dist/types/model/definition/UniqueDefinition.d.ts.map +1 -1
- package/dist/types/model/definition/ViewDefinition.d.ts +2 -2
- package/dist/types/model/definition/ViewDefinition.d.ts.map +1 -1
- package/dist/types/model/definition/context.d.ts +2 -2
- package/dist/types/model/definition/context.d.ts.map +1 -1
- package/dist/types/model/definition/extensions.d.ts +4 -4
- package/dist/types/model/definition/extensions.d.ts.map +1 -1
- package/dist/types/model/definition/fieldDefinitions/ColumnDefinition.d.ts +26 -3
- package/dist/types/model/definition/fieldDefinitions/ColumnDefinition.d.ts.map +1 -1
- package/dist/types/model/definition/fieldDefinitions/FieldDefinition.d.ts +1 -1
- package/dist/types/model/definition/fieldDefinitions/FieldDefinition.d.ts.map +1 -1
- package/dist/types/model/definition/fieldDefinitions/ManyHasManyDefinition.d.ts +2 -2
- package/dist/types/model/definition/fieldDefinitions/ManyHasManyDefinition.d.ts.map +1 -1
- package/dist/types/model/definition/fieldDefinitions/ManyHasManyInverseDefinition.d.ts +2 -2
- package/dist/types/model/definition/fieldDefinitions/ManyHasManyInverseDefinition.d.ts.map +1 -1
- package/dist/types/model/definition/fieldDefinitions/ManyHasOneDefinition.d.ts +2 -2
- package/dist/types/model/definition/fieldDefinitions/ManyHasOneDefinition.d.ts.map +1 -1
- package/dist/types/model/definition/fieldDefinitions/OneHasManyDefinition.d.ts +2 -2
- package/dist/types/model/definition/fieldDefinitions/OneHasManyDefinition.d.ts.map +1 -1
- package/dist/types/model/definition/fieldDefinitions/OneHasOneDefinition.d.ts +2 -2
- package/dist/types/model/definition/fieldDefinitions/OneHasOneDefinition.d.ts.map +1 -1
- package/dist/types/model/definition/fieldDefinitions/OneHasOneInverseDefinition.d.ts +3 -3
- package/dist/types/model/definition/fieldDefinitions/OneHasOneInverseDefinition.d.ts.map +1 -1
- package/dist/types/model/definition/fieldDefinitions/index.d.ts +8 -8
- package/dist/types/model/definition/fieldDefinitions/index.d.ts.map +1 -1
- package/dist/types/model/definition/index.d.ts +11 -11
- package/dist/types/model/definition/index.d.ts.map +1 -1
- package/dist/types/model/definition/internal/EntityRegistry.d.ts +1 -1
- package/dist/types/model/definition/internal/EntityRegistry.d.ts.map +1 -1
- package/dist/types/model/definition/internal/EnumRegistry.d.ts +1 -1
- package/dist/types/model/definition/internal/EnumRegistry.d.ts.map +1 -1
- package/dist/types/model/definition/internal/SchemaBuilder.d.ts +3 -3
- package/dist/types/model/definition/internal/SchemaBuilder.d.ts.map +1 -1
- package/dist/types/model/definition/internal/index.d.ts +3 -3
- package/dist/types/model/definition/internal/index.d.ts.map +1 -1
- package/dist/types/model/definition/types.d.ts +2 -2
- package/dist/types/model/definition/types.d.ts.map +1 -1
- package/dist/types/model/index.d.ts +8 -8
- package/dist/types/model/index.d.ts.map +1 -1
- package/dist/types/strict.d.ts +2 -0
- package/dist/types/strict.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/dist/types/utils/filterEntityDefinition.d.ts +1 -1
- package/dist/types/utils/filterEntityDefinition.d.ts.map +1 -1
- package/dist/types/utils/index.d.ts +5 -5
- package/dist/types/utils/index.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/acl/builder/EntityPermissionsBuilder.ts +6 -6
- package/src/acl/builder/FieldPermissionsBuilder.ts +4 -4
- package/src/acl/builder/PermissionOverrider.ts +1 -1
- package/src/acl/builder/PermissionsBuilder.ts +5 -5
- package/src/acl/definition/aclExtensions.ts +2 -2
- package/src/acl/definition/customPrimary.ts +3 -3
- package/src/acl/definition/index.ts +6 -6
- package/src/acl/definition/internal/AclFactory.ts +7 -7
- package/src/acl/definition/internal/EntityPredicateResolver.ts +5 -5
- package/src/acl/definition/internal/createPredicateName.ts +1 -1
- package/src/acl/definition/internal/stores.ts +3 -3
- package/src/acl/definition/permissions.ts +5 -5
- package/src/acl/definition/variables.ts +1 -1
- package/src/actions/definition/index.ts +3 -3
- package/src/actions/definition/internal/ActionsFactory.ts +4 -4
- package/src/actions/definition/internal/store.ts +2 -2
- package/src/actions/definition/triggers.ts +3 -3
- package/src/createSchema.ts +7 -6
- package/src/index.ts +12 -11
- package/src/model/builder/ColumnBuilder.ts +1 -1
- package/src/model/builder/EntityBuilder.ts +7 -7
- package/src/model/builder/FieldBuilder.ts +5 -5
- package/src/model/builder/ManyHasManyBuilder.ts +2 -2
- package/src/model/builder/ManyHasOneBuilder.ts +2 -2
- package/src/model/builder/OneHasManyBuilder.ts +2 -2
- package/src/model/builder/OneHasOneBuilder.ts +2 -2
- package/src/model/builder/SchemaBuilder.ts +4 -4
- package/src/model/builder/SchemaBuilderInternal.ts +9 -9
- package/src/model/builder/internal/ColumnProcessor.ts +2 -2
- package/src/model/builder/internal/ManyHasManyProcessor.ts +2 -2
- package/src/model/builder/internal/ManyHasOneProcessor.ts +2 -2
- package/src/model/builder/internal/OneHasManyProcessor.ts +2 -2
- package/src/model/builder/internal/OneHasOneProcessor.ts +2 -2
- package/src/model/builder/types.ts +1 -1
- package/src/model/definition/EventLogDefinition.ts +1 -1
- package/src/model/definition/IndexDefinition.ts +52 -12
- package/src/model/definition/OrderByDefinition.ts +2 -2
- package/src/model/definition/UniqueDefinition.ts +2 -2
- package/src/model/definition/ViewDefinition.ts +3 -3
- package/src/model/definition/context.ts +2 -2
- package/src/model/definition/extensions.ts +4 -4
- package/src/model/definition/fieldDefinitions/ColumnDefinition.ts +34 -3
- package/src/model/definition/fieldDefinitions/FieldDefinition.ts +1 -1
- package/src/model/definition/fieldDefinitions/ManyHasManyDefinition.ts +2 -2
- package/src/model/definition/fieldDefinitions/ManyHasManyInverseDefinition.ts +2 -2
- package/src/model/definition/fieldDefinitions/ManyHasOneDefinition.ts +2 -2
- package/src/model/definition/fieldDefinitions/OneHasManyDefinition.ts +2 -2
- package/src/model/definition/fieldDefinitions/OneHasOneDefinition.ts +2 -2
- package/src/model/definition/fieldDefinitions/OneHasOneInverseDefinition.ts +3 -3
- package/src/model/definition/fieldDefinitions/index.ts +8 -8
- package/src/model/definition/index.ts +13 -13
- package/src/model/definition/internal/EntityRegistry.ts +1 -1
- package/src/model/definition/internal/EnumRegistry.ts +1 -1
- package/src/model/definition/internal/SchemaBuilder.ts +8 -8
- package/src/model/definition/internal/index.ts +3 -3
- package/src/model/definition/types.ts +2 -2
- package/src/model/index.ts +8 -8
- package/src/strict.ts +29 -4
- package/src/utils/filterEntityDefinition.ts +1 -1
- package/src/utils/index.ts +5 -5
- package/src/validation/index.ts +3 -3
- package/tests/cases/unit/createSchema.test.ts +93 -2
- package/tests/cases/unit/extendEntity.test.ts +3 -3
- package/tests/cases/unit/numericColumn.test.ts +31 -0
- package/tests/cases/unit/orderBy.test.ts +1 -1
- package/tests/cases/unit/readAclDefinitions.test.ts +1 -1
- package/tests/cases/unit/readActions.test.ts +2 -2
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
var __defProp = Object.defineProperty;
|
|
4
4
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
5
|
-
var __publicField = (obj, key, value) => __defNormalProp(obj, key + "", value);
|
|
5
|
+
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
6
6
|
const allStrict = {
|
|
7
7
|
requireOnDelete: true,
|
|
8
8
|
requireInverseSide: true
|
|
@@ -11,6 +11,7 @@ class StrictDefinitionValidator {
|
|
|
11
11
|
constructor(options) {
|
|
12
12
|
this.options = options;
|
|
13
13
|
__publicField(this, "warnings", []);
|
|
14
|
+
__publicField(this, "onDeleteValidations", []);
|
|
14
15
|
}
|
|
15
16
|
validateInverseSide(entityName, field, definition) {
|
|
16
17
|
if (!definition.inversedBy && this.options.requireInverseSide) {
|
|
@@ -18,10 +19,24 @@ class StrictDefinitionValidator {
|
|
|
18
19
|
}
|
|
19
20
|
}
|
|
20
21
|
validateOnCascade(entityName, field, definition) {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
this.onDeleteValidations.push({ entityName, field, hasOnDelete: definition.onDelete !== void 0 });
|
|
23
|
+
}
|
|
24
|
+
validateModel(model) {
|
|
25
|
+
for (const { entityName, field, hasOnDelete } of this.onDeleteValidations) {
|
|
26
|
+
const isView = model.entities[entityName]?.view !== void 0;
|
|
27
|
+
if (isView) {
|
|
28
|
+
if (hasOnDelete) {
|
|
29
|
+
this.registerWarning(
|
|
30
|
+
`${entityName}.${field}: onDelete behaviour must not be set on a relation of a view entity. Views are read-only and have no delete semantics.`
|
|
31
|
+
);
|
|
32
|
+
}
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
if (!hasOnDelete && this.options.requireOnDelete) {
|
|
36
|
+
this.registerWarning(
|
|
37
|
+
`${entityName}.${field}: onDelete behaviour is not set. Use one of cascadeOnDelete(), setNullOnDelete() or restrictOnDelete().`
|
|
38
|
+
);
|
|
39
|
+
}
|
|
25
40
|
}
|
|
26
41
|
}
|
|
27
42
|
registerWarning(message) {
|
|
@@ -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\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\tpublic validateOnCascade(entityName: string, field: string, definition: { onDelete?: Model.OnDelete }): void {\n\t\
|
|
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\nexport type Warning = { message: string }\n\ntype OnDeleteValidation = {\n\tentityName: string\n\tfield: string\n\thasOnDelete: boolean\n}\n\nexport class StrictDefinitionValidator {\n\tpublic readonly warnings: Warning[] = []\n\n\tprivate readonly onDeleteValidations: OnDeleteValidation[] = []\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\tpublic validateOnCascade(entityName: string, field: string, definition: { onDelete?: Model.OnDelete }): void {\n\t\t// View entities are read-only and have no real delete semantics, so onDelete validation is\n\t\t// deferred to validateModel() where we know which entities are views.\n\t\tthis.onDeleteValidations.push({ entityName, field, hasOnDelete: definition.onDelete !== undefined })\n\t}\n\n\tpublic validateModel(model: Model.Schema): void {\n\t\tfor (const { entityName, field, hasOnDelete } of this.onDeleteValidations) {\n\t\t\tconst isView = model.entities[entityName]?.view !== undefined\n\t\t\tif (isView) {\n\t\t\t\tif (hasOnDelete) {\n\t\t\t\t\tthis.registerWarning(\n\t\t\t\t\t\t`${entityName}.${field}: onDelete behaviour must not be set on a relation of a view entity. Views are read-only and have no delete semantics.`,\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif (!hasOnDelete && this.options.requireOnDelete) {\n\t\t\t\tthis.registerWarning(\n\t\t\t\t\t`${entityName}.${field}: onDelete behaviour is not set. Use one of cascadeOnDelete(), setNullOnDelete() or restrictOnDelete().`,\n\t\t\t\t)\n\t\t\t}\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;AAUO,MAAM,0BAA0B;AAAA,EAKtC,YACkB,SAChB;AADgB,SAAA,UAAA;AALlB,kBAAA,MAAgB,YAAsB,EAAC;AAEvC,kBAAA,MAAiB,uBAA4C,EAAC;AAAA,EAK9D;AAAA,EAEO,oBAAoB,YAAoB,OAAe,YAA2C;AACxG,QAAI,CAAC,WAAW,cAAc,KAAK,QAAQ,oBAAoB;AAC9D,WAAK,gBAAgB,GAAG,UAAU,IAAI,KAAK,gDAAgD;AAAA,IAC5F;AAAA,EACD;AAAA,EAEO,kBAAkB,YAAoB,OAAe,YAAiD;AAG5G,SAAK,oBAAoB,KAAK,EAAE,YAAY,OAAO,aAAa,WAAW,aAAa,QAAW;AAAA,EACpG;AAAA,EAEO,cAAc,OAA2B;AAC/C,eAAW,EAAE,YAAY,OAAO,YAAA,KAAiB,KAAK,qBAAqB;AAC1E,YAAM,SAAS,MAAM,SAAS,UAAU,GAAG,SAAS;AACpD,UAAI,QAAQ;AACX,YAAI,aAAa;AAChB,eAAK;AAAA,YACJ,GAAG,UAAU,IAAI,KAAK;AAAA,UAAA;AAAA,QAExB;AACA;AAAA,MACD;AACA,UAAI,CAAC,eAAe,KAAK,QAAQ,iBAAiB;AACjD,aAAK;AAAA,UACJ,GAAG,UAAU,IAAI,KAAK;AAAA,QAAA;AAAA,MAExB;AAAA,IACD;AAAA,EACD;AAAA,EAEO,gBAAgB,SAAuB;AAC7C,SAAK,SAAS,KAAK,EAAE,QAAA,CAAS;AAAA,EAC/B;AACD;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
var __defProp = Object.defineProperty;
|
|
2
2
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3
|
-
var __publicField = (obj, key, value) => __defNormalProp(obj, key + "", value);
|
|
3
|
+
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
4
4
|
const allStrict = {
|
|
5
5
|
requireOnDelete: true,
|
|
6
6
|
requireInverseSide: true
|
|
@@ -9,6 +9,7 @@ class StrictDefinitionValidator {
|
|
|
9
9
|
constructor(options) {
|
|
10
10
|
this.options = options;
|
|
11
11
|
__publicField(this, "warnings", []);
|
|
12
|
+
__publicField(this, "onDeleteValidations", []);
|
|
12
13
|
}
|
|
13
14
|
validateInverseSide(entityName, field, definition) {
|
|
14
15
|
if (!definition.inversedBy && this.options.requireInverseSide) {
|
|
@@ -16,10 +17,24 @@ class StrictDefinitionValidator {
|
|
|
16
17
|
}
|
|
17
18
|
}
|
|
18
19
|
validateOnCascade(entityName, field, definition) {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
this.onDeleteValidations.push({ entityName, field, hasOnDelete: definition.onDelete !== void 0 });
|
|
21
|
+
}
|
|
22
|
+
validateModel(model) {
|
|
23
|
+
for (const { entityName, field, hasOnDelete } of this.onDeleteValidations) {
|
|
24
|
+
const isView = model.entities[entityName]?.view !== void 0;
|
|
25
|
+
if (isView) {
|
|
26
|
+
if (hasOnDelete) {
|
|
27
|
+
this.registerWarning(
|
|
28
|
+
`${entityName}.${field}: onDelete behaviour must not be set on a relation of a view entity. Views are read-only and have no delete semantics.`
|
|
29
|
+
);
|
|
30
|
+
}
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
if (!hasOnDelete && this.options.requireOnDelete) {
|
|
34
|
+
this.registerWarning(
|
|
35
|
+
`${entityName}.${field}: onDelete behaviour is not set. Use one of cascadeOnDelete(), setNullOnDelete() or restrictOnDelete().`
|
|
36
|
+
);
|
|
37
|
+
}
|
|
23
38
|
}
|
|
24
39
|
}
|
|
25
40
|
registerWarning(message) {
|
|
@@ -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\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\tpublic validateOnCascade(entityName: string, field: string, definition: { onDelete?: Model.OnDelete }): void {\n\t\
|
|
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\nexport type Warning = { message: string }\n\ntype OnDeleteValidation = {\n\tentityName: string\n\tfield: string\n\thasOnDelete: boolean\n}\n\nexport class StrictDefinitionValidator {\n\tpublic readonly warnings: Warning[] = []\n\n\tprivate readonly onDeleteValidations: OnDeleteValidation[] = []\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\tpublic validateOnCascade(entityName: string, field: string, definition: { onDelete?: Model.OnDelete }): void {\n\t\t// View entities are read-only and have no real delete semantics, so onDelete validation is\n\t\t// deferred to validateModel() where we know which entities are views.\n\t\tthis.onDeleteValidations.push({ entityName, field, hasOnDelete: definition.onDelete !== undefined })\n\t}\n\n\tpublic validateModel(model: Model.Schema): void {\n\t\tfor (const { entityName, field, hasOnDelete } of this.onDeleteValidations) {\n\t\t\tconst isView = model.entities[entityName]?.view !== undefined\n\t\t\tif (isView) {\n\t\t\t\tif (hasOnDelete) {\n\t\t\t\t\tthis.registerWarning(\n\t\t\t\t\t\t`${entityName}.${field}: onDelete behaviour must not be set on a relation of a view entity. Views are read-only and have no delete semantics.`,\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif (!hasOnDelete && this.options.requireOnDelete) {\n\t\t\t\tthis.registerWarning(\n\t\t\t\t\t`${entityName}.${field}: onDelete behaviour is not set. Use one of cascadeOnDelete(), setNullOnDelete() or restrictOnDelete().`,\n\t\t\t\t)\n\t\t\t}\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;AAUO,MAAM,0BAA0B;AAAA,EAKtC,YACkB,SAChB;AADgB,SAAA,UAAA;AALlB,kBAAA,MAAgB,YAAsB,EAAC;AAEvC,kBAAA,MAAiB,uBAA4C,EAAC;AAAA,EAK9D;AAAA,EAEO,oBAAoB,YAAoB,OAAe,YAA2C;AACxG,QAAI,CAAC,WAAW,cAAc,KAAK,QAAQ,oBAAoB;AAC9D,WAAK,gBAAgB,GAAG,UAAU,IAAI,KAAK,gDAAgD;AAAA,IAC5F;AAAA,EACD;AAAA,EAEO,kBAAkB,YAAoB,OAAe,YAAiD;AAG5G,SAAK,oBAAoB,KAAK,EAAE,YAAY,OAAO,aAAa,WAAW,aAAa,QAAW;AAAA,EACpG;AAAA,EAEO,cAAc,OAA2B;AAC/C,eAAW,EAAE,YAAY,OAAO,YAAA,KAAiB,KAAK,qBAAqB;AAC1E,YAAM,SAAS,MAAM,SAAS,UAAU,GAAG,SAAS;AACpD,UAAI,QAAQ;AACX,YAAI,aAAa;AAChB,eAAK;AAAA,YACJ,GAAG,UAAU,IAAI,KAAK;AAAA,UAAA;AAAA,QAExB;AACA;AAAA,MACD;AACA,UAAI,CAAC,eAAe,KAAK,QAAQ,iBAAiB;AACjD,aAAK;AAAA,UACJ,GAAG,UAAU,IAAI,KAAK;AAAA,QAAA;AAAA,MAExB;AAAA,IACD;AAAA,EACD;AAAA,EAEO,gBAAgB,SAAuB;AAC7C,SAAK,SAAS,KAAK,EAAE,QAAA,CAAS;AAAA,EAC/B;AACD;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filterEntityDefinition.cjs","sources":["../../../../../packages/schema-definition/src/utils/filterEntityDefinition.ts"],"sourcesContent":["import { EntityConstructor } from './decorators'\n\nexport const filterEntityDefinition = (definitions: Record<string, unknown>): [string, EntityConstructor][] =>\n\tObject.entries(definitions)\n\t\t.filter((it): it is [string, EntityConstructor] => isEntityConstructor(it[1]))\n\nexport const isEntityConstructor = (it: unknown): it is EntityConstructor => {\n\treturn typeof it === 'function' && 'constructor' in it && 'prototype' in it\n}\n"],"names":[],"mappings":";;AAEO,MAAM,yBAAyB,CAAC,gBACtC,OAAO,QAAQ,WAAW,EACxB,OAAO,CAAC,OAA0C,oBAAoB,GAAG,CAAC,CAAC,CAAC;AAExE,MAAM,sBAAsB,CAAC,OAAyC;AAC5E,SAAO,OAAO,OAAO,cAAc,iBAAiB,MAAM,eAAe;AAC1E;;;"}
|
|
1
|
+
{"version":3,"file":"filterEntityDefinition.cjs","sources":["../../../../../packages/schema-definition/src/utils/filterEntityDefinition.ts"],"sourcesContent":["import { EntityConstructor } from './decorators.js'\n\nexport const filterEntityDefinition = (definitions: Record<string, unknown>): [string, EntityConstructor][] =>\n\tObject.entries(definitions)\n\t\t.filter((it): it is [string, EntityConstructor] => isEntityConstructor(it[1]))\n\nexport const isEntityConstructor = (it: unknown): it is EntityConstructor => {\n\treturn typeof it === 'function' && 'constructor' in it && 'prototype' in it\n}\n"],"names":[],"mappings":";;AAEO,MAAM,yBAAyB,CAAC,gBACtC,OAAO,QAAQ,WAAW,EACxB,OAAO,CAAC,OAA0C,oBAAoB,GAAG,CAAC,CAAC,CAAC;AAExE,MAAM,sBAAsB,CAAC,OAAyC;AAC5E,SAAO,OAAO,OAAO,cAAc,iBAAiB,MAAM,eAAe;AAC1E;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filterEntityDefinition.js","sources":["../../../../../packages/schema-definition/src/utils/filterEntityDefinition.ts"],"sourcesContent":["import { EntityConstructor } from './decorators'\n\nexport const filterEntityDefinition = (definitions: Record<string, unknown>): [string, EntityConstructor][] =>\n\tObject.entries(definitions)\n\t\t.filter((it): it is [string, EntityConstructor] => isEntityConstructor(it[1]))\n\nexport const isEntityConstructor = (it: unknown): it is EntityConstructor => {\n\treturn typeof it === 'function' && 'constructor' in it && 'prototype' in it\n}\n"],"names":[],"mappings":"AAEO,MAAM,yBAAyB,CAAC,gBACtC,OAAO,QAAQ,WAAW,EACxB,OAAO,CAAC,OAA0C,oBAAoB,GAAG,CAAC,CAAC,CAAC;AAExE,MAAM,sBAAsB,CAAC,OAAyC;AAC5E,SAAO,OAAO,OAAO,cAAc,iBAAiB,MAAM,eAAe;AAC1E;"}
|
|
1
|
+
{"version":3,"file":"filterEntityDefinition.js","sources":["../../../../../packages/schema-definition/src/utils/filterEntityDefinition.ts"],"sourcesContent":["import { EntityConstructor } from './decorators.js'\n\nexport const filterEntityDefinition = (definitions: Record<string, unknown>): [string, EntityConstructor][] =>\n\tObject.entries(definitions)\n\t\t.filter((it): it is [string, EntityConstructor] => isEntityConstructor(it[1]))\n\nexport const isEntityConstructor = (it: unknown): it is EntityConstructor => {\n\treturn typeof it === 'function' && 'constructor' in it && 'prototype' in it\n}\n"],"names":[],"mappings":"AAEO,MAAM,yBAAyB,CAAC,gBACtC,OAAO,QAAQ,WAAW,EACxB,OAAO,CAAC,OAA0C,oBAAoB,GAAG,CAAC,CAAC,CAAC;AAExE,MAAM,sBAAsB,CAAC,OAAyC;AAC5E,SAAO,OAAO,OAAO,cAAc,iBAAiB,MAAM,eAAe;AAC1E;"}
|
|
@@ -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 { 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":";;;;;;;;;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,MAAMA,OAAAA,WAAW,aAAa;AAAA,IAC9B;AAAA,EAAA;AAAA,EAED,MAAM,CAAC,UAAiD;AAAA,IACvD,MAAMA,OAAAA,WAAW,aAAa;AAAA,IAC9B,MAAM,UAAU,IAAI;AAAA,EAAA;AAAA,EAErB,SAAS,CAAU,WAA6C,EAAE,MAAMA,OAAAA,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,SAAOC,uBAAAA,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,WAAOC,MAAAA;AAAAA,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,iBAAOA,MAAAA,MAAM,OAAO,EAAE;AAAA,QACvB;AACA,eAAOA,MAAAA,MAAM,OAAO,UAAU;AAAA,MAC/B,CAAC,EACA;AAAA,QACA,CAAC,SAAS,CAAC,OAAOC,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;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../../../packages/schema-definition/src/validation/index.ts"],"sourcesContent":["import { tuple } from '../utils/index.js'\nimport { SchemaDefinition } from '../model/index.js'\nimport { Validation } from '@contember/schema'\nimport { filterEntityDefinition } from '../utils/index.js'\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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"}
|
|
@@ -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 { 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":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../packages/schema-definition/src/validation/index.ts"],"sourcesContent":["import { tuple } from '../utils/index.js'\nimport { SchemaDefinition } from '../model/index.js'\nimport { Validation } from '@contember/schema'\nimport { filterEntityDefinition } from '../utils/index.js'\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":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"numericColumn.test.d.ts","sourceRoot":"","sources":["../../../../tests/cases/unit/numericColumn.test.ts"],"names":[],"mappings":""}
|