@contember/schema-utils 2.1.0-alpha.36 → 2.1.0-alpha.39
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 +110 -0
- package/dist/development/index.cjs.map +1 -0
- package/dist/development/index.js +94 -0
- package/dist/development/index.js.map +1 -0
- package/dist/development/src/acl/AllowAllPermissionFactory.cjs +42 -0
- package/dist/development/src/acl/AllowAllPermissionFactory.cjs.map +1 -0
- package/dist/development/src/acl/AllowAllPermissionFactory.js +42 -0
- package/dist/development/src/acl/AllowAllPermissionFactory.js.map +1 -0
- package/dist/development/src/acl/PredicateDefinitionProcessor.cjs +69 -0
- package/dist/development/src/acl/PredicateDefinitionProcessor.cjs.map +1 -0
- package/dist/development/src/acl/PredicateDefinitionProcessor.js +69 -0
- package/dist/development/src/acl/PredicateDefinitionProcessor.js.map +1 -0
- package/dist/development/src/acl/schemaUtils.cjs +11 -0
- package/dist/development/src/acl/schemaUtils.cjs.map +1 -0
- package/dist/development/src/acl/schemaUtils.js +11 -0
- package/dist/development/src/acl/schemaUtils.js.map +1 -0
- package/dist/development/src/dataUtils.cjs +59 -0
- package/dist/development/src/dataUtils.cjs.map +1 -0
- package/dist/development/src/dataUtils.js +59 -0
- package/dist/development/src/dataUtils.js.map +1 -0
- package/dist/development/src/definition-generator/AclDefinitionCodeGenerator.cjs +118 -0
- package/dist/development/src/definition-generator/AclDefinitionCodeGenerator.cjs.map +1 -0
- package/dist/development/src/definition-generator/AclDefinitionCodeGenerator.js +118 -0
- package/dist/development/src/definition-generator/AclDefinitionCodeGenerator.js.map +1 -0
- package/dist/development/src/definition-generator/DefinitionCodeGenerator.cjs +218 -0
- package/dist/development/src/definition-generator/DefinitionCodeGenerator.cjs.map +1 -0
- package/dist/development/src/definition-generator/DefinitionCodeGenerator.js +218 -0
- package/dist/development/src/definition-generator/DefinitionCodeGenerator.js.map +1 -0
- package/dist/development/src/definition-generator/DefinitionNamingConventions.cjs +68 -0
- package/dist/development/src/definition-generator/DefinitionNamingConventions.cjs.map +1 -0
- package/dist/development/src/definition-generator/DefinitionNamingConventions.js +68 -0
- package/dist/development/src/definition-generator/DefinitionNamingConventions.js.map +1 -0
- package/dist/development/src/definition-generator/TsDefinitionGenerator.cjs +17 -0
- package/dist/development/src/definition-generator/TsDefinitionGenerator.cjs.map +1 -0
- package/dist/development/src/definition-generator/TsDefinitionGenerator.js +17 -0
- package/dist/development/src/definition-generator/TsDefinitionGenerator.js.map +1 -0
- package/dist/development/src/lax/LaxSchemaConverter.cjs +202 -0
- package/dist/development/src/lax/LaxSchemaConverter.cjs.map +1 -0
- package/dist/development/src/lax/LaxSchemaConverter.js +202 -0
- package/dist/development/src/lax/LaxSchemaConverter.js.map +1 -0
- package/dist/development/src/lax/schema.cjs +70 -0
- package/dist/development/src/lax/schema.cjs.map +1 -0
- package/dist/development/src/lax/schema.js +53 -0
- package/dist/development/src/lax/schema.js.map +1 -0
- package/dist/development/src/model/NamingConventions.cjs +28 -0
- package/dist/development/src/model/NamingConventions.cjs.map +1 -0
- package/dist/development/src/model/NamingConventions.js +28 -0
- package/dist/development/src/model/NamingConventions.js.map +1 -0
- package/dist/development/src/model/modelUtils.cjs +229 -0
- package/dist/development/src/model/modelUtils.cjs.map +1 -0
- package/dist/development/src/model/modelUtils.js +229 -0
- package/dist/development/src/model/modelUtils.js.map +1 -0
- package/dist/development/src/model/resolveDefaultColumnType.cjs +30 -0
- package/dist/development/src/model/resolveDefaultColumnType.cjs.map +1 -0
- package/dist/development/src/model/resolveDefaultColumnType.js +30 -0
- package/dist/development/src/model/resolveDefaultColumnType.js.map +1 -0
- package/dist/development/src/schemaChecksum.cjs +9 -0
- package/dist/development/src/schemaChecksum.cjs.map +1 -0
- package/dist/development/src/schemaChecksum.js +9 -0
- package/dist/development/src/schemaChecksum.js.map +1 -0
- package/dist/development/src/schemaFilter.cjs +24 -0
- package/dist/development/src/schemaFilter.cjs.map +1 -0
- package/dist/development/src/schemaFilter.js +24 -0
- package/dist/development/src/schemaFilter.js.map +1 -0
- package/dist/development/src/schemaNormalizer.cjs +72 -0
- package/dist/development/src/schemaNormalizer.cjs.map +1 -0
- package/dist/development/src/schemaNormalizer.js +72 -0
- package/dist/development/src/schemaNormalizer.js.map +1 -0
- package/dist/development/src/type-schema/acl.cjs +149 -0
- package/dist/development/src/type-schema/acl.cjs.map +1 -0
- package/dist/development/src/type-schema/acl.js +132 -0
- package/dist/development/src/type-schema/acl.js.map +1 -0
- package/dist/development/src/type-schema/actions.cjs +88 -0
- package/dist/development/src/type-schema/actions.cjs.map +1 -0
- package/dist/development/src/type-schema/actions.js +71 -0
- package/dist/development/src/type-schema/actions.js.map +1 -0
- package/dist/development/src/type-schema/condition.cjs +92 -0
- package/dist/development/src/type-schema/condition.cjs.map +1 -0
- package/dist/development/src/type-schema/condition.js +75 -0
- package/dist/development/src/type-schema/condition.js.map +1 -0
- package/dist/development/src/type-schema/model.cjs +222 -0
- package/dist/development/src/type-schema/model.cjs.map +1 -0
- package/dist/development/src/type-schema/model.js +206 -0
- package/dist/development/src/type-schema/model.js.map +1 -0
- package/dist/development/src/type-schema/settings.cjs +34 -0
- package/dist/development/src/type-schema/settings.cjs.map +1 -0
- package/dist/development/src/type-schema/settings.js +17 -0
- package/dist/development/src/type-schema/settings.js.map +1 -0
- package/dist/development/src/type-schema/validation.cjs +115 -0
- package/dist/development/src/type-schema/validation.cjs.map +1 -0
- package/dist/development/src/type-schema/validation.js +98 -0
- package/dist/development/src/type-schema/validation.js.map +1 -0
- package/dist/development/src/type-schema/where.cjs +46 -0
- package/dist/development/src/type-schema/where.cjs.map +1 -0
- package/dist/development/src/type-schema/where.js +29 -0
- package/dist/development/src/type-schema/where.js.map +1 -0
- package/dist/development/src/utils/assertNever.cjs +7 -0
- package/dist/development/src/utils/assertNever.cjs.map +1 -0
- package/dist/development/src/utils/assertNever.js +7 -0
- package/dist/development/src/utils/assertNever.js.map +1 -0
- package/dist/development/src/utils/deepCompare.cjs +134 -0
- package/dist/development/src/utils/deepCompare.cjs.map +1 -0
- package/dist/development/src/utils/deepCompare.js +134 -0
- package/dist/development/src/utils/deepCompare.js.map +1 -0
- package/dist/development/src/utils/isIt.cjs +7 -0
- package/dist/development/src/utils/isIt.cjs.map +1 -0
- package/dist/development/src/utils/isIt.js +7 -0
- package/dist/development/src/utils/isIt.js.map +1 -0
- package/dist/development/src/utils/printJsValue.cjs +42 -0
- package/dist/development/src/utils/printJsValue.cjs.map +1 -0
- package/dist/development/src/utils/printJsValue.js +42 -0
- package/dist/development/src/utils/printJsValue.js.map +1 -0
- package/dist/development/src/validation/AclValidator.cjs +168 -0
- package/dist/development/src/validation/AclValidator.cjs.map +1 -0
- package/dist/development/src/validation/AclValidator.js +168 -0
- package/dist/development/src/validation/AclValidator.js.map +1 -0
- package/dist/development/src/validation/ActionsValidator.cjs +127 -0
- package/dist/development/src/validation/ActionsValidator.cjs.map +1 -0
- package/dist/development/src/validation/ActionsValidator.js +110 -0
- package/dist/development/src/validation/ActionsValidator.js.map +1 -0
- package/dist/development/src/validation/MembershipResolver.cjs +129 -0
- package/dist/development/src/validation/MembershipResolver.cjs.map +1 -0
- package/dist/development/src/validation/MembershipResolver.js +129 -0
- package/dist/development/src/validation/MembershipResolver.js.map +1 -0
- package/dist/development/src/validation/ModelValidator.cjs +325 -0
- package/dist/development/src/validation/ModelValidator.cjs.map +1 -0
- package/dist/development/src/validation/ModelValidator.js +325 -0
- package/dist/development/src/validation/ModelValidator.js.map +1 -0
- package/dist/development/src/validation/SchemaValidator.cjs +29 -0
- package/dist/development/src/validation/SchemaValidator.cjs.map +1 -0
- package/dist/development/src/validation/SchemaValidator.js +29 -0
- package/dist/development/src/validation/SchemaValidator.js.map +1 -0
- package/dist/development/src/validation/ValidationValidator.cjs +121 -0
- package/dist/development/src/validation/ValidationValidator.cjs.map +1 -0
- package/dist/development/src/validation/ValidationValidator.js +121 -0
- package/dist/development/src/validation/ValidationValidator.js.map +1 -0
- package/dist/development/src/validation/errors.cjs +16 -0
- package/dist/development/src/validation/errors.cjs.map +1 -0
- package/dist/development/src/validation/errors.js +16 -0
- package/dist/development/src/validation/errors.js.map +1 -0
- package/dist/production/index.cjs +110 -0
- package/dist/production/index.cjs.map +1 -0
- package/dist/production/index.js +94 -0
- package/dist/production/index.js.map +1 -0
- package/dist/production/src/acl/AllowAllPermissionFactory.cjs +42 -0
- package/dist/production/src/acl/AllowAllPermissionFactory.cjs.map +1 -0
- package/dist/production/src/acl/AllowAllPermissionFactory.js +42 -0
- package/dist/production/src/acl/AllowAllPermissionFactory.js.map +1 -0
- package/dist/production/src/acl/PredicateDefinitionProcessor.cjs +69 -0
- package/dist/production/src/acl/PredicateDefinitionProcessor.cjs.map +1 -0
- package/dist/production/src/acl/PredicateDefinitionProcessor.js +69 -0
- package/dist/production/src/acl/PredicateDefinitionProcessor.js.map +1 -0
- package/dist/production/src/acl/schemaUtils.cjs +11 -0
- package/dist/production/src/acl/schemaUtils.cjs.map +1 -0
- package/dist/production/src/acl/schemaUtils.js +11 -0
- package/dist/production/src/acl/schemaUtils.js.map +1 -0
- package/dist/production/src/dataUtils.cjs +59 -0
- package/dist/production/src/dataUtils.cjs.map +1 -0
- package/dist/production/src/dataUtils.js +59 -0
- package/dist/production/src/dataUtils.js.map +1 -0
- package/dist/production/src/definition-generator/AclDefinitionCodeGenerator.cjs +118 -0
- package/dist/production/src/definition-generator/AclDefinitionCodeGenerator.cjs.map +1 -0
- package/dist/production/src/definition-generator/AclDefinitionCodeGenerator.js +118 -0
- package/dist/production/src/definition-generator/AclDefinitionCodeGenerator.js.map +1 -0
- package/dist/production/src/definition-generator/DefinitionCodeGenerator.cjs +218 -0
- package/dist/production/src/definition-generator/DefinitionCodeGenerator.cjs.map +1 -0
- package/dist/production/src/definition-generator/DefinitionCodeGenerator.js +218 -0
- package/dist/production/src/definition-generator/DefinitionCodeGenerator.js.map +1 -0
- package/dist/production/src/definition-generator/DefinitionNamingConventions.cjs +68 -0
- package/dist/production/src/definition-generator/DefinitionNamingConventions.cjs.map +1 -0
- package/dist/production/src/definition-generator/DefinitionNamingConventions.js +68 -0
- package/dist/production/src/definition-generator/DefinitionNamingConventions.js.map +1 -0
- package/dist/production/src/definition-generator/TsDefinitionGenerator.cjs +17 -0
- package/dist/production/src/definition-generator/TsDefinitionGenerator.cjs.map +1 -0
- package/dist/production/src/definition-generator/TsDefinitionGenerator.js +17 -0
- package/dist/production/src/definition-generator/TsDefinitionGenerator.js.map +1 -0
- package/dist/production/src/lax/LaxSchemaConverter.cjs +202 -0
- package/dist/production/src/lax/LaxSchemaConverter.cjs.map +1 -0
- package/dist/production/src/lax/LaxSchemaConverter.js +202 -0
- package/dist/production/src/lax/LaxSchemaConverter.js.map +1 -0
- package/dist/production/src/lax/schema.cjs +70 -0
- package/dist/production/src/lax/schema.cjs.map +1 -0
- package/dist/production/src/lax/schema.js +53 -0
- package/dist/production/src/lax/schema.js.map +1 -0
- package/dist/production/src/model/NamingConventions.cjs +28 -0
- package/dist/production/src/model/NamingConventions.cjs.map +1 -0
- package/dist/production/src/model/NamingConventions.js +28 -0
- package/dist/production/src/model/NamingConventions.js.map +1 -0
- package/dist/production/src/model/modelUtils.cjs +229 -0
- package/dist/production/src/model/modelUtils.cjs.map +1 -0
- package/dist/production/src/model/modelUtils.js +229 -0
- package/dist/production/src/model/modelUtils.js.map +1 -0
- package/dist/production/src/model/resolveDefaultColumnType.cjs +30 -0
- package/dist/production/src/model/resolveDefaultColumnType.cjs.map +1 -0
- package/dist/production/src/model/resolveDefaultColumnType.js +30 -0
- package/dist/production/src/model/resolveDefaultColumnType.js.map +1 -0
- package/dist/production/src/schemaChecksum.cjs +9 -0
- package/dist/production/src/schemaChecksum.cjs.map +1 -0
- package/dist/production/src/schemaChecksum.js +9 -0
- package/dist/production/src/schemaChecksum.js.map +1 -0
- package/dist/production/src/schemaFilter.cjs +24 -0
- package/dist/production/src/schemaFilter.cjs.map +1 -0
- package/dist/production/src/schemaFilter.js +24 -0
- package/dist/production/src/schemaFilter.js.map +1 -0
- package/dist/production/src/schemaNormalizer.cjs +72 -0
- package/dist/production/src/schemaNormalizer.cjs.map +1 -0
- package/dist/production/src/schemaNormalizer.js +72 -0
- package/dist/production/src/schemaNormalizer.js.map +1 -0
- package/dist/production/src/type-schema/acl.cjs +149 -0
- package/dist/production/src/type-schema/acl.cjs.map +1 -0
- package/dist/production/src/type-schema/acl.js +132 -0
- package/dist/production/src/type-schema/acl.js.map +1 -0
- package/dist/production/src/type-schema/actions.cjs +88 -0
- package/dist/production/src/type-schema/actions.cjs.map +1 -0
- package/dist/production/src/type-schema/actions.js +71 -0
- package/dist/production/src/type-schema/actions.js.map +1 -0
- package/dist/production/src/type-schema/condition.cjs +92 -0
- package/dist/production/src/type-schema/condition.cjs.map +1 -0
- package/dist/production/src/type-schema/condition.js +75 -0
- package/dist/production/src/type-schema/condition.js.map +1 -0
- package/dist/production/src/type-schema/model.cjs +222 -0
- package/dist/production/src/type-schema/model.cjs.map +1 -0
- package/dist/production/src/type-schema/model.js +206 -0
- package/dist/production/src/type-schema/model.js.map +1 -0
- package/dist/production/src/type-schema/settings.cjs +34 -0
- package/dist/production/src/type-schema/settings.cjs.map +1 -0
- package/dist/production/src/type-schema/settings.js +17 -0
- package/dist/production/src/type-schema/settings.js.map +1 -0
- package/dist/production/src/type-schema/validation.cjs +115 -0
- package/dist/production/src/type-schema/validation.cjs.map +1 -0
- package/dist/production/src/type-schema/validation.js +98 -0
- package/dist/production/src/type-schema/validation.js.map +1 -0
- package/dist/production/src/type-schema/where.cjs +46 -0
- package/dist/production/src/type-schema/where.cjs.map +1 -0
- package/dist/production/src/type-schema/where.js +29 -0
- package/dist/production/src/type-schema/where.js.map +1 -0
- package/dist/production/src/utils/assertNever.cjs +7 -0
- package/dist/production/src/utils/assertNever.cjs.map +1 -0
- package/dist/production/src/utils/assertNever.js +7 -0
- package/dist/production/src/utils/assertNever.js.map +1 -0
- package/dist/production/src/utils/deepCompare.cjs +134 -0
- package/dist/production/src/utils/deepCompare.cjs.map +1 -0
- package/dist/production/src/utils/deepCompare.js +134 -0
- package/dist/production/src/utils/deepCompare.js.map +1 -0
- package/dist/production/src/utils/isIt.cjs +7 -0
- package/dist/production/src/utils/isIt.cjs.map +1 -0
- package/dist/production/src/utils/isIt.js +7 -0
- package/dist/production/src/utils/isIt.js.map +1 -0
- package/dist/production/src/utils/printJsValue.cjs +42 -0
- package/dist/production/src/utils/printJsValue.cjs.map +1 -0
- package/dist/production/src/utils/printJsValue.js +42 -0
- package/dist/production/src/utils/printJsValue.js.map +1 -0
- package/dist/production/src/validation/AclValidator.cjs +168 -0
- package/dist/production/src/validation/AclValidator.cjs.map +1 -0
- package/dist/production/src/validation/AclValidator.js +168 -0
- package/dist/production/src/validation/AclValidator.js.map +1 -0
- package/dist/production/src/validation/ActionsValidator.cjs +127 -0
- package/dist/production/src/validation/ActionsValidator.cjs.map +1 -0
- package/dist/production/src/validation/ActionsValidator.js +110 -0
- package/dist/production/src/validation/ActionsValidator.js.map +1 -0
- package/dist/production/src/validation/MembershipResolver.cjs +129 -0
- package/dist/production/src/validation/MembershipResolver.cjs.map +1 -0
- package/dist/production/src/validation/MembershipResolver.js +129 -0
- package/dist/production/src/validation/MembershipResolver.js.map +1 -0
- package/dist/production/src/validation/ModelValidator.cjs +325 -0
- package/dist/production/src/validation/ModelValidator.cjs.map +1 -0
- package/dist/production/src/validation/ModelValidator.js +325 -0
- package/dist/production/src/validation/ModelValidator.js.map +1 -0
- package/dist/production/src/validation/SchemaValidator.cjs +29 -0
- package/dist/production/src/validation/SchemaValidator.cjs.map +1 -0
- package/dist/production/src/validation/SchemaValidator.js +29 -0
- package/dist/production/src/validation/SchemaValidator.js.map +1 -0
- package/dist/production/src/validation/ValidationValidator.cjs +121 -0
- package/dist/production/src/validation/ValidationValidator.cjs.map +1 -0
- package/dist/production/src/validation/ValidationValidator.js +121 -0
- package/dist/production/src/validation/ValidationValidator.js.map +1 -0
- package/dist/production/src/validation/errors.cjs +16 -0
- package/dist/production/src/validation/errors.cjs.map +1 -0
- package/dist/production/src/validation/errors.js +16 -0
- package/dist/production/src/validation/errors.js.map +1 -0
- package/dist/tests/cases/unit/conditionSchema.test.d.ts +2 -0
- package/dist/tests/cases/unit/conditionSchema.test.d.ts.map +1 -0
- package/dist/tests/cases/unit/deepCompare.test.d.ts +2 -0
- package/dist/tests/cases/unit/deepCompare.test.d.ts.map +1 -0
- package/dist/tests/cases/unit/laxSchemaConverter.test.d.ts +2 -0
- package/dist/tests/cases/unit/laxSchemaConverter.test.d.ts.map +1 -0
- package/dist/tests/cases/unit/membershipResolver.test.d.ts +2 -0
- package/dist/tests/cases/unit/membershipResolver.test.d.ts.map +1 -0
- package/dist/tests/cases/unit/modelSchema.test.d.ts +2 -0
- package/dist/tests/cases/unit/modelSchema.test.d.ts.map +1 -0
- package/dist/tests/cases/unit/modelValidator.test.d.ts +2 -0
- package/dist/tests/cases/unit/modelValidator.test.d.ts.map +1 -0
- package/dist/tests/cases/unit/printJsvalue.test.d.ts +2 -0
- package/dist/tests/cases/unit/printJsvalue.test.d.ts.map +1 -0
- package/dist/tests/cases/unit/schemas/acl.d.ts +12 -0
- package/dist/tests/cases/unit/schemas/acl.d.ts.map +1 -0
- package/dist/tests/cases/unit/schemas/basic.d.ts +4 -0
- package/dist/tests/cases/unit/schemas/basic.d.ts.map +1 -0
- package/dist/tests/cases/unit/schemas/complex.d.ts +12 -0
- package/dist/tests/cases/unit/schemas/complex.d.ts.map +1 -0
- package/dist/tests/cases/unit/schemas/enum.d.ts +6 -0
- package/dist/tests/cases/unit/schemas/enum.d.ts.map +1 -0
- package/dist/tests/cases/unit/schemas/relations.d.ts +14 -0
- package/dist/tests/cases/unit/schemas/relations.d.ts.map +1 -0
- package/dist/tests/cases/unit/schemas/unique.d.ts +4 -0
- package/dist/tests/cases/unit/schemas/unique.d.ts.map +1 -0
- package/dist/tests/cases/unit/schemas/view.d.ts +4 -0
- package/dist/tests/cases/unit/schemas/view.d.ts.map +1 -0
- package/dist/tests/cases/unit/tsDefinitionGenerator.test.d.ts +2 -0
- package/dist/tests/cases/unit/tsDefinitionGenerator.test.d.ts.map +1 -0
- package/dist/tests/cases/unit/whereSchema.test.d.ts +2 -0
- package/dist/tests/cases/unit/whereSchema.test.d.ts.map +1 -0
- package/dist/tests/tsconfig.tsbuildinfo +1 -0
- package/dist/types/acl/AllowAllPermissionFactory.d.ts +7 -0
- package/dist/types/acl/AllowAllPermissionFactory.d.ts.map +1 -0
- package/dist/types/acl/PredicateDefinitionProcessor.d.ts +32 -0
- package/dist/types/acl/PredicateDefinitionProcessor.d.ts.map +1 -0
- package/dist/types/acl/index.d.ts +4 -0
- package/dist/types/acl/index.d.ts.map +1 -0
- package/dist/types/acl/schemaUtils.d.ts +3 -0
- package/dist/types/acl/schemaUtils.d.ts.map +1 -0
- package/dist/types/dataUtils.d.ts +18 -0
- package/dist/types/dataUtils.d.ts.map +1 -0
- package/dist/types/definition-generator/AclDefinitionCodeGenerator.d.ts +19 -0
- package/dist/types/definition-generator/AclDefinitionCodeGenerator.d.ts.map +1 -0
- package/dist/types/definition-generator/DefinitionCodeGenerator.d.ts +27 -0
- package/dist/types/definition-generator/DefinitionCodeGenerator.d.ts.map +1 -0
- package/dist/types/definition-generator/DefinitionNamingConventions.d.ts +7 -0
- package/dist/types/definition-generator/DefinitionNamingConventions.d.ts.map +1 -0
- package/dist/types/definition-generator/TsDefinitionGenerator.d.ts +12 -0
- package/dist/types/definition-generator/TsDefinitionGenerator.d.ts.map +1 -0
- package/dist/types/definition-generator/index.d.ts +5 -0
- package/dist/types/definition-generator/index.d.ts.map +1 -0
- package/dist/types/index.d.ts +15 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/lax/LaxSchemaConverter.d.ts +10 -0
- package/dist/types/lax/LaxSchemaConverter.d.ts.map +1 -0
- package/dist/types/lax/index.d.ts +3 -0
- package/dist/types/lax/index.d.ts.map +1 -0
- package/dist/types/lax/schema.d.ts +285 -0
- package/dist/types/lax/schema.d.ts.map +1 -0
- package/dist/types/model/NamingConventions.d.ts +17 -0
- package/dist/types/model/NamingConventions.d.ts.map +1 -0
- package/dist/types/model/index.d.ts +4 -0
- package/dist/types/model/index.d.ts.map +1 -0
- package/dist/types/model/modelUtils.d.ts +28 -0
- package/dist/types/model/modelUtils.d.ts.map +1 -0
- package/dist/types/model/resolveDefaultColumnType.d.ts +3 -0
- package/dist/types/model/resolveDefaultColumnType.d.ts.map +1 -0
- package/dist/types/schemaChecksum.d.ts +3 -0
- package/dist/types/schemaChecksum.d.ts.map +1 -0
- package/dist/types/schemaFilter.d.ts +3 -0
- package/dist/types/schemaFilter.d.ts.map +1 -0
- package/dist/types/schemaNormalizer.d.ts +3 -0
- package/dist/types/schemaNormalizer.d.ts.map +1 -0
- package/dist/types/tsconfig.tsbuildinfo +1 -0
- package/dist/types/type-schema/acl.d.ts +10 -0
- package/dist/types/type-schema/acl.d.ts.map +1 -0
- package/dist/types/type-schema/actions.d.ts +32 -0
- package/dist/types/type-schema/actions.d.ts.map +1 -0
- package/dist/types/type-schema/condition.d.ts +4 -0
- package/dist/types/type-schema/condition.d.ts.map +1 -0
- package/dist/types/type-schema/index.d.ts +6 -0
- package/dist/types/type-schema/index.d.ts.map +1 -0
- package/dist/types/type-schema/model.d.ts +30 -0
- package/dist/types/type-schema/model.d.ts.map +1 -0
- package/dist/types/type-schema/settings.d.ts +41 -0
- package/dist/types/type-schema/settings.d.ts.map +1 -0
- package/dist/types/type-schema/validation.d.ts +15 -0
- package/dist/types/type-schema/validation.d.ts.map +1 -0
- package/dist/types/type-schema/where.d.ts +7 -0
- package/dist/types/type-schema/where.d.ts.map +1 -0
- package/dist/types/utils/assertNever.d.ts +2 -0
- package/dist/types/utils/assertNever.d.ts.map +1 -0
- package/dist/types/utils/deepCompare.d.ts +13 -0
- package/dist/types/utils/deepCompare.d.ts.map +1 -0
- package/dist/types/utils/index.d.ts +4 -0
- package/dist/types/utils/index.d.ts.map +1 -0
- package/dist/types/utils/isIt.d.ts +2 -0
- package/dist/types/utils/isIt.d.ts.map +1 -0
- package/dist/types/utils/printJsValue.d.ts +13 -0
- package/dist/types/utils/printJsValue.d.ts.map +1 -0
- package/dist/types/validation/AclValidator.d.ts +20 -0
- package/dist/types/validation/AclValidator.d.ts.map +1 -0
- package/dist/types/validation/ActionsValidator.d.ts +13 -0
- package/dist/types/validation/ActionsValidator.d.ts.map +1 -0
- package/dist/types/validation/MembershipResolver.d.ts +37 -0
- package/dist/types/validation/MembershipResolver.d.ts.map +1 -0
- package/dist/types/validation/ModelValidator.d.ts +20 -0
- package/dist/types/validation/ModelValidator.d.ts.map +1 -0
- package/dist/types/validation/SchemaValidator.d.ts +11 -0
- package/dist/types/validation/SchemaValidator.d.ts.map +1 -0
- package/dist/types/validation/ValidationValidator.d.ts +14 -0
- package/dist/types/validation/ValidationValidator.d.ts.map +1 -0
- package/dist/types/validation/errors.d.ts +14 -0
- package/dist/types/validation/errors.d.ts.map +1 -0
- package/dist/types/validation/index.d.ts +7 -0
- package/dist/types/validation/index.d.ts.map +1 -0
- package/package.json +5 -5
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import * as Typesafe from "@contember/typesafe";
|
|
2
|
+
const selectionNodeSchemaFactory = () => {
|
|
3
|
+
return (input, path = []) => {
|
|
4
|
+
return Typesafe.array(Typesafe.union(
|
|
5
|
+
Typesafe.string,
|
|
6
|
+
Typesafe.tuple(
|
|
7
|
+
Typesafe.string,
|
|
8
|
+
Typesafe.anyJsonObject,
|
|
9
|
+
selectionNodeSchemaFactory()
|
|
10
|
+
)
|
|
11
|
+
))(input, path);
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
const webhookTargetSchema = Typesafe.intersection(
|
|
15
|
+
Typesafe.object({
|
|
16
|
+
type: Typesafe.literal("webhook"),
|
|
17
|
+
name: Typesafe.string,
|
|
18
|
+
url: Typesafe.string
|
|
19
|
+
}),
|
|
20
|
+
Typesafe.partial({
|
|
21
|
+
headers: Typesafe.record(Typesafe.string, Typesafe.string),
|
|
22
|
+
timeoutMs: Typesafe.integer,
|
|
23
|
+
maxAttempts: Typesafe.integer,
|
|
24
|
+
initialRepeatIntervalMs: Typesafe.integer,
|
|
25
|
+
batchSize: Typesafe.integer,
|
|
26
|
+
body: Typesafe.anyJsonObject,
|
|
27
|
+
payloadPath: Typesafe.array(Typesafe.string)
|
|
28
|
+
})
|
|
29
|
+
);
|
|
30
|
+
const anyTargetSchema = Typesafe.union(webhookTargetSchema);
|
|
31
|
+
const watchTriggerSchema = Typesafe.intersection(
|
|
32
|
+
Typesafe.object({
|
|
33
|
+
type: Typesafe.literal("watch"),
|
|
34
|
+
name: Typesafe.string,
|
|
35
|
+
entity: Typesafe.string,
|
|
36
|
+
watch: selectionNodeSchemaFactory(),
|
|
37
|
+
target: Typesafe.string
|
|
38
|
+
}),
|
|
39
|
+
Typesafe.partial({
|
|
40
|
+
selection: selectionNodeSchemaFactory(),
|
|
41
|
+
priority: Typesafe.integer,
|
|
42
|
+
withNodes: Typesafe.boolean
|
|
43
|
+
})
|
|
44
|
+
);
|
|
45
|
+
const basicTriggerSchema = Typesafe.intersection(
|
|
46
|
+
Typesafe.object({
|
|
47
|
+
type: Typesafe.literal("basic"),
|
|
48
|
+
name: Typesafe.string,
|
|
49
|
+
entity: Typesafe.string,
|
|
50
|
+
create: Typesafe.boolean,
|
|
51
|
+
delete: Typesafe.boolean,
|
|
52
|
+
update: Typesafe.union(Typesafe.boolean, Typesafe.array(Typesafe.string)),
|
|
53
|
+
target: Typesafe.string
|
|
54
|
+
}),
|
|
55
|
+
Typesafe.partial({
|
|
56
|
+
selection: selectionNodeSchemaFactory(),
|
|
57
|
+
priority: Typesafe.integer
|
|
58
|
+
})
|
|
59
|
+
);
|
|
60
|
+
const anyTriggerSchema = Typesafe.union(
|
|
61
|
+
watchTriggerSchema,
|
|
62
|
+
basicTriggerSchema
|
|
63
|
+
);
|
|
64
|
+
const actionsSchema = Typesafe.object({
|
|
65
|
+
triggers: Typesafe.record(Typesafe.string, anyTriggerSchema),
|
|
66
|
+
targets: Typesafe.record(Typesafe.string, anyTargetSchema)
|
|
67
|
+
});
|
|
68
|
+
export {
|
|
69
|
+
actionsSchema
|
|
70
|
+
};
|
|
71
|
+
//# sourceMappingURL=actions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actions.js","sources":["../../../../../packages/schema-utils/src/type-schema/actions.ts"],"sourcesContent":["import * as Typesafe from '@contember/typesafe'\nimport { Actions } from '@contember/schema'\n\nconst selectionNodeSchemaFactory = (): Typesafe.Type<Actions.SelectionNode> => {\n\treturn (input: unknown, path: PropertyKey[] = []): Actions.SelectionNode => {\n\t\treturn Typesafe.array(Typesafe.union(\n\t\t\tTypesafe.string,\n\t\t\tTypesafe.tuple(\n\t\t\t\tTypesafe.string,\n\t\t\t\tTypesafe.anyJsonObject,\n\t\t\t\tselectionNodeSchemaFactory(),\n\t\t\t),\n\t\t))(input, path)\n\t}\n}\n\nconst webhookTargetSchema = Typesafe.intersection(\n\tTypesafe.object({\n\t\ttype: Typesafe.literal('webhook'),\n\t\tname: Typesafe.string,\n\t\turl: Typesafe.string,\n\t}),\n\tTypesafe.partial({\n\t\theaders: Typesafe.record(Typesafe.string, Typesafe.string),\n\t\ttimeoutMs: Typesafe.integer,\n\t\tmaxAttempts: Typesafe.integer,\n\t\tinitialRepeatIntervalMs: Typesafe.integer,\n\t\tbatchSize: Typesafe.integer,\n\t\tbody: Typesafe.anyJsonObject,\n\t\tpayloadPath: Typesafe.array(Typesafe.string),\n\t}),\n)\nconst webhookTargetSchemaCheck: Typesafe.Equals<Actions.WebhookTarget, ReturnType<typeof webhookTargetSchema>> = true\n\nconst anyTargetSchema: Typesafe.Type<Actions.AnyTarget> = Typesafe.union(webhookTargetSchema)\n\nconst watchTriggerSchema = Typesafe.intersection(\n\tTypesafe.object({\n\t\ttype: Typesafe.literal('watch'),\n\t\tname: Typesafe.string,\n\t\tentity: Typesafe.string,\n\t\twatch: selectionNodeSchemaFactory(),\n\t\ttarget: Typesafe.string,\n\t}),\n\tTypesafe.partial({\n\t\tselection: selectionNodeSchemaFactory(),\n\t\tpriority: Typesafe.integer,\n\t\twithNodes: Typesafe.boolean,\n\t}),\n)\n\nconst watchTriggerSchemaCheck: Typesafe.Equals<Actions.WatchTrigger, ReturnType<typeof watchTriggerSchema>> = true\n\nconst basicTriggerSchema = Typesafe.intersection(\n\tTypesafe.object({\n\t\ttype: Typesafe.literal('basic'),\n\t\tname: Typesafe.string,\n\t\tentity: Typesafe.string,\n\t\tcreate: Typesafe.boolean,\n\t\tdelete: Typesafe.boolean,\n\t\tupdate: Typesafe.union(Typesafe.boolean, Typesafe.array(Typesafe.string)),\n\t\ttarget: Typesafe.string,\n\t}),\n\tTypesafe.partial({\n\t\tselection: selectionNodeSchemaFactory(),\n\t\tpriority: Typesafe.integer,\n\t}),\n)\n\nconst basicTriggerSchemaCheck: Typesafe.Equals<Actions.BasicTrigger, ReturnType<typeof basicTriggerSchema>> = true\n\nconst anyTriggerSchema = Typesafe.union(\n\twatchTriggerSchema,\n\tbasicTriggerSchema,\n)\n\nexport const actionsSchema = Typesafe.object({\n\ttriggers: Typesafe.record(Typesafe.string, anyTriggerSchema),\n\ttargets: Typesafe.record(Typesafe.string, anyTargetSchema),\n})\n"],"names":[],"mappings":";AAGA,MAAM,6BAA6B,MAA4C;AAC9E,SAAO,CAAC,OAAgB,OAAsB,OAA8B;AAC3E,WAAO,SAAS,MAAM,SAAS;AAAA,MAC9B,SAAS;AAAA,MACT,SAAS;AAAA,QACR,SAAS;AAAA,QACT,SAAS;AAAA,QACT,2BAAA;AAAA,MAA2B;AAAA,IAC5B,CACA,EAAE,OAAO,IAAI;AAAA,EACf;AACD;AAEA,MAAM,sBAAsB,SAAS;AAAA,EACpC,SAAS,OAAO;AAAA,IACf,MAAM,SAAS,QAAQ,SAAS;AAAA,IAChC,MAAM,SAAS;AAAA,IACf,KAAK,SAAS;AAAA,EAAA,CACd;AAAA,EACD,SAAS,QAAQ;AAAA,IAChB,SAAS,SAAS,OAAO,SAAS,QAAQ,SAAS,MAAM;AAAA,IACzD,WAAW,SAAS;AAAA,IACpB,aAAa,SAAS;AAAA,IACtB,yBAAyB,SAAS;AAAA,IAClC,WAAW,SAAS;AAAA,IACpB,MAAM,SAAS;AAAA,IACf,aAAa,SAAS,MAAM,SAAS,MAAM;AAAA,EAAA,CAC3C;AACF;AAGA,MAAM,kBAAoD,SAAS,MAAM,mBAAmB;AAE5F,MAAM,qBAAqB,SAAS;AAAA,EACnC,SAAS,OAAO;AAAA,IACf,MAAM,SAAS,QAAQ,OAAO;AAAA,IAC9B,MAAM,SAAS;AAAA,IACf,QAAQ,SAAS;AAAA,IACjB,OAAO,2BAAA;AAAA,IACP,QAAQ,SAAS;AAAA,EAAA,CACjB;AAAA,EACD,SAAS,QAAQ;AAAA,IAChB,WAAW,2BAAA;AAAA,IACX,UAAU,SAAS;AAAA,IACnB,WAAW,SAAS;AAAA,EAAA,CACpB;AACF;AAIA,MAAM,qBAAqB,SAAS;AAAA,EACnC,SAAS,OAAO;AAAA,IACf,MAAM,SAAS,QAAQ,OAAO;AAAA,IAC9B,MAAM,SAAS;AAAA,IACf,QAAQ,SAAS;AAAA,IACjB,QAAQ,SAAS;AAAA,IACjB,QAAQ,SAAS;AAAA,IACjB,QAAQ,SAAS,MAAM,SAAS,SAAS,SAAS,MAAM,SAAS,MAAM,CAAC;AAAA,IACxE,QAAQ,SAAS;AAAA,EAAA,CACjB;AAAA,EACD,SAAS,QAAQ;AAAA,IAChB,WAAW,2BAAA;AAAA,IACX,UAAU,SAAS;AAAA,EAAA,CACnB;AACF;AAIA,MAAM,mBAAmB,SAAS;AAAA,EACjC;AAAA,EACA;AACD;AAEO,MAAM,gBAAgB,SAAS,OAAO;AAAA,EAC5C,UAAU,SAAS,OAAO,SAAS,QAAQ,gBAAgB;AAAA,EAC3D,SAAS,SAAS,OAAO,SAAS,QAAQ,eAAe;AAC1D,CAAC;"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const Typesafe = require("@contember/typesafe");
|
|
4
|
+
const schema = require("@contember/schema");
|
|
5
|
+
function _interopNamespaceDefault(e) {
|
|
6
|
+
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
|
|
7
|
+
if (e) {
|
|
8
|
+
for (const k in e) {
|
|
9
|
+
if (k !== "default") {
|
|
10
|
+
const d = Object.getOwnPropertyDescriptor(e, k);
|
|
11
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
12
|
+
enumerable: true,
|
|
13
|
+
get: () => e[k]
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
n.default = e;
|
|
19
|
+
return Object.freeze(n);
|
|
20
|
+
}
|
|
21
|
+
const Typesafe__namespace = /* @__PURE__ */ _interopNamespaceDefault(Typesafe);
|
|
22
|
+
const conditionSchema = (type) => {
|
|
23
|
+
const metadata = type ? resolveColumnMetadata(type) : { type: Typesafe__namespace.scalar };
|
|
24
|
+
return conditionSchemaInner(metadata);
|
|
25
|
+
};
|
|
26
|
+
const conditionSchemaInner = (metadata) => {
|
|
27
|
+
return (input, path = []) => {
|
|
28
|
+
const self = conditionSchemaInner(metadata);
|
|
29
|
+
const inner = metadata.type;
|
|
30
|
+
const objectSchema = Typesafe__namespace.noExtraProps(Typesafe__namespace.partial({
|
|
31
|
+
and: Typesafe__namespace.array(self),
|
|
32
|
+
or: Typesafe__namespace.array(self),
|
|
33
|
+
not: self,
|
|
34
|
+
null: Typesafe__namespace.boolean,
|
|
35
|
+
isNull: Typesafe__namespace.boolean,
|
|
36
|
+
never: Typesafe__namespace.true_,
|
|
37
|
+
always: Typesafe__namespace.true_,
|
|
38
|
+
...metadata.isJson !== true ? {
|
|
39
|
+
eq: inner,
|
|
40
|
+
notEq: inner,
|
|
41
|
+
in: Typesafe__namespace.array(inner),
|
|
42
|
+
notIn: Typesafe__namespace.array(inner),
|
|
43
|
+
lt: inner,
|
|
44
|
+
lte: inner,
|
|
45
|
+
gt: inner,
|
|
46
|
+
gte: inner
|
|
47
|
+
} : {
|
|
48
|
+
// For JSON columns, allow includes operator
|
|
49
|
+
includes: inner
|
|
50
|
+
},
|
|
51
|
+
...metadata.isString !== false ? {
|
|
52
|
+
contains: Typesafe__namespace.string,
|
|
53
|
+
startsWith: Typesafe__namespace.string,
|
|
54
|
+
endsWith: Typesafe__namespace.string,
|
|
55
|
+
containsCI: Typesafe__namespace.string,
|
|
56
|
+
startsWithCI: Typesafe__namespace.string,
|
|
57
|
+
endsWithCI: Typesafe__namespace.string
|
|
58
|
+
} : {}
|
|
59
|
+
}));
|
|
60
|
+
return objectSchema(input, path);
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
const resolveColumnMetadata = (type) => {
|
|
64
|
+
const resolvedType = Typesafe__namespace.nullable(resolveColumnTypeSchema(type));
|
|
65
|
+
return {
|
|
66
|
+
type: resolvedType,
|
|
67
|
+
isJson: type === schema.Model.ColumnType.Json,
|
|
68
|
+
isString: type === schema.Model.ColumnType.String
|
|
69
|
+
};
|
|
70
|
+
};
|
|
71
|
+
const resolveColumnTypeSchema = (type) => {
|
|
72
|
+
switch (type) {
|
|
73
|
+
case schema.Model.ColumnType.Bool:
|
|
74
|
+
return Typesafe__namespace.boolean;
|
|
75
|
+
// todo: validate format of string-like inputs uuid, date, enum
|
|
76
|
+
case schema.Model.ColumnType.Date:
|
|
77
|
+
case schema.Model.ColumnType.DateTime:
|
|
78
|
+
case schema.Model.ColumnType.Time:
|
|
79
|
+
case schema.Model.ColumnType.Uuid:
|
|
80
|
+
case schema.Model.ColumnType.Enum:
|
|
81
|
+
case schema.Model.ColumnType.String:
|
|
82
|
+
return Typesafe__namespace.string;
|
|
83
|
+
case schema.Model.ColumnType.Double:
|
|
84
|
+
return Typesafe__namespace.number;
|
|
85
|
+
case schema.Model.ColumnType.Int:
|
|
86
|
+
return Typesafe__namespace.integer;
|
|
87
|
+
case schema.Model.ColumnType.Json:
|
|
88
|
+
return Typesafe__namespace.anyJson;
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
exports.conditionSchema = conditionSchema;
|
|
92
|
+
//# sourceMappingURL=condition.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"condition.cjs","sources":["../../../../../packages/schema-utils/src/type-schema/condition.ts"],"sourcesContent":["import * as Typesafe from '@contember/typesafe'\nimport { Json, Type } from '@contember/typesafe'\nimport { Input, Model, Value } from '@contember/schema'\n\nexport const conditionSchema = <T extends Value.FieldValue>(type?: Model.ColumnType): Type<Input.Condition<T>> => {\n\tconst metadata = type ? resolveColumnMetadata(type) : { type: Typesafe.scalar }\n\treturn conditionSchemaInner(metadata)\n}\n\ninterface ResolvedColumnMetadata<T extends Json> {\n\ttype: Typesafe.Type<T>\n\tisJson?: boolean\n\tisString?: boolean\n}\n\nconst conditionSchemaInner = <T extends Json>(metadata: ResolvedColumnMetadata<T>): Type<Input.Condition<T>> => {\n\treturn (input: unknown, path: PropertyKey[] = []): Input.Condition<T> => {\n\t\tconst self = conditionSchemaInner(metadata)\n\t\tconst inner = metadata.type\n\t\tconst objectSchema = Typesafe.noExtraProps(Typesafe.partial({\n\t\t\tand: Typesafe.array(self),\n\t\t\tor: Typesafe.array(self),\n\t\t\tnot: self,\n\t\t\tnull: Typesafe.boolean,\n\t\t\tisNull: Typesafe.boolean,\n\t\t\tnever: Typesafe.true_,\n\t\t\talways: Typesafe.true_,\n\t\t\t...(metadata.isJson !== true\n\t\t\t\t? {\n\t\t\t\t\teq: inner,\n\t\t\t\t\tnotEq: inner,\n\t\t\t\t\tin: Typesafe.array(inner),\n\t\t\t\t\tnotIn: Typesafe.array(inner),\n\t\t\t\t\tlt: inner,\n\t\t\t\t\tlte: inner,\n\t\t\t\t\tgt: inner,\n\t\t\t\t\tgte: inner,\n\t\t\t\t}\n\t\t\t\t: {\n\t\t\t\t\t// For JSON columns, allow includes operator\n\t\t\t\t\tincludes: inner,\n\t\t\t\t}),\n\t\t\t...(metadata.isString !== false\n\t\t\t\t? {\n\t\t\t\t\tcontains: Typesafe.string,\n\t\t\t\t\tstartsWith: Typesafe.string,\n\t\t\t\t\tendsWith: Typesafe.string,\n\t\t\t\t\tcontainsCI: Typesafe.string,\n\t\t\t\t\tstartsWithCI: Typesafe.string,\n\t\t\t\t\tendsWithCI: Typesafe.string,\n\t\t\t\t}\n\t\t\t\t: {}),\n\t\t}))\n\t\treturn objectSchema(input, path) as Input.Condition<T>\n\t}\n}\n\nconst resolveColumnMetadata = (type: Model.ColumnType): ResolvedColumnMetadata<any> => {\n\tconst resolvedType = Typesafe.nullable(resolveColumnTypeSchema(type))\n\treturn {\n\t\ttype: resolvedType,\n\t\tisJson: type === Model.ColumnType.Json,\n\t\tisString: type === Model.ColumnType.String,\n\t}\n}\n\nconst resolveColumnTypeSchema = (type: Model.ColumnType) => {\n\tswitch (type) {\n\t\tcase Model.ColumnType.Bool:\n\t\t\treturn Typesafe.boolean\n\n\t\t// todo: validate format of string-like inputs uuid, date, enum\n\t\tcase Model.ColumnType.Date:\n\t\tcase Model.ColumnType.DateTime:\n\t\tcase Model.ColumnType.Time:\n\t\tcase Model.ColumnType.Uuid:\n\t\tcase Model.ColumnType.Enum:\n\t\tcase Model.ColumnType.String:\n\t\t\treturn Typesafe.string\n\t\tcase Model.ColumnType.Double:\n\t\t\treturn Typesafe.number\n\t\tcase Model.ColumnType.Int:\n\t\t\treturn Typesafe.integer\n\t\tcase Model.ColumnType.Json:\n\t\t\treturn Typesafe.anyJson\n\t}\n}\n"],"names":["Typesafe","Model"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAIO,MAAM,kBAAkB,CAA6B,SAAsD;AACjH,QAAM,WAAW,OAAO,sBAAsB,IAAI,IAAI,EAAE,MAAMA,oBAAS,OAAA;AACvE,SAAO,qBAAqB,QAAQ;AACrC;AAQA,MAAM,uBAAuB,CAAiB,aAAkE;AAC/G,SAAO,CAAC,OAAgB,OAAsB,OAA2B;AACxE,UAAM,OAAO,qBAAqB,QAAQ;AAC1C,UAAM,QAAQ,SAAS;AACvB,UAAM,eAAeA,oBAAS,aAAaA,oBAAS,QAAQ;AAAA,MAC3D,KAAKA,oBAAS,MAAM,IAAI;AAAA,MACxB,IAAIA,oBAAS,MAAM,IAAI;AAAA,MACvB,KAAK;AAAA,MACL,MAAMA,oBAAS;AAAA,MACf,QAAQA,oBAAS;AAAA,MACjB,OAAOA,oBAAS;AAAA,MAChB,QAAQA,oBAAS;AAAA,MACjB,GAAI,SAAS,WAAW,OACrB;AAAA,QACD,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,IAAIA,oBAAS,MAAM,KAAK;AAAA,QACxB,OAAOA,oBAAS,MAAM,KAAK;AAAA,QAC3B,IAAI;AAAA,QACJ,KAAK;AAAA,QACL,IAAI;AAAA,QACJ,KAAK;AAAA,MAAA,IAEJ;AAAA;AAAA,QAED,UAAU;AAAA,MAAA;AAAA,MAEZ,GAAI,SAAS,aAAa,QACvB;AAAA,QACD,UAAUA,oBAAS;AAAA,QACnB,YAAYA,oBAAS;AAAA,QACrB,UAAUA,oBAAS;AAAA,QACnB,YAAYA,oBAAS;AAAA,QACrB,cAAcA,oBAAS;AAAA,QACvB,YAAYA,oBAAS;AAAA,MAAA,IAEpB,CAAA;AAAA,IAAC,CACJ,CAAC;AACF,WAAO,aAAa,OAAO,IAAI;AAAA,EAChC;AACD;AAEA,MAAM,wBAAwB,CAAC,SAAwD;AACtF,QAAM,eAAeA,oBAAS,SAAS,wBAAwB,IAAI,CAAC;AACpE,SAAO;AAAA,IACN,MAAM;AAAA,IACN,QAAQ,SAASC,aAAM,WAAW;AAAA,IAClC,UAAU,SAASA,OAAAA,MAAM,WAAW;AAAA,EAAA;AAEtC;AAEA,MAAM,0BAA0B,CAAC,SAA2B;AAC3D,UAAQ,MAAA;AAAA,IACP,KAAKA,OAAAA,MAAM,WAAW;AACrB,aAAOD,oBAAS;AAAA;AAAA,IAGjB,KAAKC,OAAAA,MAAM,WAAW;AAAA,IACtB,KAAKA,OAAAA,MAAM,WAAW;AAAA,IACtB,KAAKA,OAAAA,MAAM,WAAW;AAAA,IACtB,KAAKA,OAAAA,MAAM,WAAW;AAAA,IACtB,KAAKA,OAAAA,MAAM,WAAW;AAAA,IACtB,KAAKA,OAAAA,MAAM,WAAW;AACrB,aAAOD,oBAAS;AAAA,IACjB,KAAKC,OAAAA,MAAM,WAAW;AACrB,aAAOD,oBAAS;AAAA,IACjB,KAAKC,OAAAA,MAAM,WAAW;AACrB,aAAOD,oBAAS;AAAA,IACjB,KAAKC,OAAAA,MAAM,WAAW;AACrB,aAAOD,oBAAS;AAAA,EAAA;AAEnB;;"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import * as Typesafe from "@contember/typesafe";
|
|
2
|
+
import { Model } from "@contember/schema";
|
|
3
|
+
const conditionSchema = (type) => {
|
|
4
|
+
const metadata = type ? resolveColumnMetadata(type) : { type: Typesafe.scalar };
|
|
5
|
+
return conditionSchemaInner(metadata);
|
|
6
|
+
};
|
|
7
|
+
const conditionSchemaInner = (metadata) => {
|
|
8
|
+
return (input, path = []) => {
|
|
9
|
+
const self = conditionSchemaInner(metadata);
|
|
10
|
+
const inner = metadata.type;
|
|
11
|
+
const objectSchema = Typesafe.noExtraProps(Typesafe.partial({
|
|
12
|
+
and: Typesafe.array(self),
|
|
13
|
+
or: Typesafe.array(self),
|
|
14
|
+
not: self,
|
|
15
|
+
null: Typesafe.boolean,
|
|
16
|
+
isNull: Typesafe.boolean,
|
|
17
|
+
never: Typesafe.true_,
|
|
18
|
+
always: Typesafe.true_,
|
|
19
|
+
...metadata.isJson !== true ? {
|
|
20
|
+
eq: inner,
|
|
21
|
+
notEq: inner,
|
|
22
|
+
in: Typesafe.array(inner),
|
|
23
|
+
notIn: Typesafe.array(inner),
|
|
24
|
+
lt: inner,
|
|
25
|
+
lte: inner,
|
|
26
|
+
gt: inner,
|
|
27
|
+
gte: inner
|
|
28
|
+
} : {
|
|
29
|
+
// For JSON columns, allow includes operator
|
|
30
|
+
includes: inner
|
|
31
|
+
},
|
|
32
|
+
...metadata.isString !== false ? {
|
|
33
|
+
contains: Typesafe.string,
|
|
34
|
+
startsWith: Typesafe.string,
|
|
35
|
+
endsWith: Typesafe.string,
|
|
36
|
+
containsCI: Typesafe.string,
|
|
37
|
+
startsWithCI: Typesafe.string,
|
|
38
|
+
endsWithCI: Typesafe.string
|
|
39
|
+
} : {}
|
|
40
|
+
}));
|
|
41
|
+
return objectSchema(input, path);
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
const resolveColumnMetadata = (type) => {
|
|
45
|
+
const resolvedType = Typesafe.nullable(resolveColumnTypeSchema(type));
|
|
46
|
+
return {
|
|
47
|
+
type: resolvedType,
|
|
48
|
+
isJson: type === Model.ColumnType.Json,
|
|
49
|
+
isString: type === Model.ColumnType.String
|
|
50
|
+
};
|
|
51
|
+
};
|
|
52
|
+
const resolveColumnTypeSchema = (type) => {
|
|
53
|
+
switch (type) {
|
|
54
|
+
case Model.ColumnType.Bool:
|
|
55
|
+
return Typesafe.boolean;
|
|
56
|
+
// todo: validate format of string-like inputs uuid, date, enum
|
|
57
|
+
case Model.ColumnType.Date:
|
|
58
|
+
case Model.ColumnType.DateTime:
|
|
59
|
+
case Model.ColumnType.Time:
|
|
60
|
+
case Model.ColumnType.Uuid:
|
|
61
|
+
case Model.ColumnType.Enum:
|
|
62
|
+
case Model.ColumnType.String:
|
|
63
|
+
return Typesafe.string;
|
|
64
|
+
case Model.ColumnType.Double:
|
|
65
|
+
return Typesafe.number;
|
|
66
|
+
case Model.ColumnType.Int:
|
|
67
|
+
return Typesafe.integer;
|
|
68
|
+
case Model.ColumnType.Json:
|
|
69
|
+
return Typesafe.anyJson;
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
export {
|
|
73
|
+
conditionSchema
|
|
74
|
+
};
|
|
75
|
+
//# sourceMappingURL=condition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"condition.js","sources":["../../../../../packages/schema-utils/src/type-schema/condition.ts"],"sourcesContent":["import * as Typesafe from '@contember/typesafe'\nimport { Json, Type } from '@contember/typesafe'\nimport { Input, Model, Value } from '@contember/schema'\n\nexport const conditionSchema = <T extends Value.FieldValue>(type?: Model.ColumnType): Type<Input.Condition<T>> => {\n\tconst metadata = type ? resolveColumnMetadata(type) : { type: Typesafe.scalar }\n\treturn conditionSchemaInner(metadata)\n}\n\ninterface ResolvedColumnMetadata<T extends Json> {\n\ttype: Typesafe.Type<T>\n\tisJson?: boolean\n\tisString?: boolean\n}\n\nconst conditionSchemaInner = <T extends Json>(metadata: ResolvedColumnMetadata<T>): Type<Input.Condition<T>> => {\n\treturn (input: unknown, path: PropertyKey[] = []): Input.Condition<T> => {\n\t\tconst self = conditionSchemaInner(metadata)\n\t\tconst inner = metadata.type\n\t\tconst objectSchema = Typesafe.noExtraProps(Typesafe.partial({\n\t\t\tand: Typesafe.array(self),\n\t\t\tor: Typesafe.array(self),\n\t\t\tnot: self,\n\t\t\tnull: Typesafe.boolean,\n\t\t\tisNull: Typesafe.boolean,\n\t\t\tnever: Typesafe.true_,\n\t\t\talways: Typesafe.true_,\n\t\t\t...(metadata.isJson !== true\n\t\t\t\t? {\n\t\t\t\t\teq: inner,\n\t\t\t\t\tnotEq: inner,\n\t\t\t\t\tin: Typesafe.array(inner),\n\t\t\t\t\tnotIn: Typesafe.array(inner),\n\t\t\t\t\tlt: inner,\n\t\t\t\t\tlte: inner,\n\t\t\t\t\tgt: inner,\n\t\t\t\t\tgte: inner,\n\t\t\t\t}\n\t\t\t\t: {\n\t\t\t\t\t// For JSON columns, allow includes operator\n\t\t\t\t\tincludes: inner,\n\t\t\t\t}),\n\t\t\t...(metadata.isString !== false\n\t\t\t\t? {\n\t\t\t\t\tcontains: Typesafe.string,\n\t\t\t\t\tstartsWith: Typesafe.string,\n\t\t\t\t\tendsWith: Typesafe.string,\n\t\t\t\t\tcontainsCI: Typesafe.string,\n\t\t\t\t\tstartsWithCI: Typesafe.string,\n\t\t\t\t\tendsWithCI: Typesafe.string,\n\t\t\t\t}\n\t\t\t\t: {}),\n\t\t}))\n\t\treturn objectSchema(input, path) as Input.Condition<T>\n\t}\n}\n\nconst resolveColumnMetadata = (type: Model.ColumnType): ResolvedColumnMetadata<any> => {\n\tconst resolvedType = Typesafe.nullable(resolveColumnTypeSchema(type))\n\treturn {\n\t\ttype: resolvedType,\n\t\tisJson: type === Model.ColumnType.Json,\n\t\tisString: type === Model.ColumnType.String,\n\t}\n}\n\nconst resolveColumnTypeSchema = (type: Model.ColumnType) => {\n\tswitch (type) {\n\t\tcase Model.ColumnType.Bool:\n\t\t\treturn Typesafe.boolean\n\n\t\t// todo: validate format of string-like inputs uuid, date, enum\n\t\tcase Model.ColumnType.Date:\n\t\tcase Model.ColumnType.DateTime:\n\t\tcase Model.ColumnType.Time:\n\t\tcase Model.ColumnType.Uuid:\n\t\tcase Model.ColumnType.Enum:\n\t\tcase Model.ColumnType.String:\n\t\t\treturn Typesafe.string\n\t\tcase Model.ColumnType.Double:\n\t\t\treturn Typesafe.number\n\t\tcase Model.ColumnType.Int:\n\t\t\treturn Typesafe.integer\n\t\tcase Model.ColumnType.Json:\n\t\t\treturn Typesafe.anyJson\n\t}\n}\n"],"names":[],"mappings":";;AAIO,MAAM,kBAAkB,CAA6B,SAAsD;AACjH,QAAM,WAAW,OAAO,sBAAsB,IAAI,IAAI,EAAE,MAAM,SAAS,OAAA;AACvE,SAAO,qBAAqB,QAAQ;AACrC;AAQA,MAAM,uBAAuB,CAAiB,aAAkE;AAC/G,SAAO,CAAC,OAAgB,OAAsB,OAA2B;AACxE,UAAM,OAAO,qBAAqB,QAAQ;AAC1C,UAAM,QAAQ,SAAS;AACvB,UAAM,eAAe,SAAS,aAAa,SAAS,QAAQ;AAAA,MAC3D,KAAK,SAAS,MAAM,IAAI;AAAA,MACxB,IAAI,SAAS,MAAM,IAAI;AAAA,MACvB,KAAK;AAAA,MACL,MAAM,SAAS;AAAA,MACf,QAAQ,SAAS;AAAA,MACjB,OAAO,SAAS;AAAA,MAChB,QAAQ,SAAS;AAAA,MACjB,GAAI,SAAS,WAAW,OACrB;AAAA,QACD,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,IAAI,SAAS,MAAM,KAAK;AAAA,QACxB,OAAO,SAAS,MAAM,KAAK;AAAA,QAC3B,IAAI;AAAA,QACJ,KAAK;AAAA,QACL,IAAI;AAAA,QACJ,KAAK;AAAA,MAAA,IAEJ;AAAA;AAAA,QAED,UAAU;AAAA,MAAA;AAAA,MAEZ,GAAI,SAAS,aAAa,QACvB;AAAA,QACD,UAAU,SAAS;AAAA,QACnB,YAAY,SAAS;AAAA,QACrB,UAAU,SAAS;AAAA,QACnB,YAAY,SAAS;AAAA,QACrB,cAAc,SAAS;AAAA,QACvB,YAAY,SAAS;AAAA,MAAA,IAEpB,CAAA;AAAA,IAAC,CACJ,CAAC;AACF,WAAO,aAAa,OAAO,IAAI;AAAA,EAChC;AACD;AAEA,MAAM,wBAAwB,CAAC,SAAwD;AACtF,QAAM,eAAe,SAAS,SAAS,wBAAwB,IAAI,CAAC;AACpE,SAAO;AAAA,IACN,MAAM;AAAA,IACN,QAAQ,SAAS,MAAM,WAAW;AAAA,IAClC,UAAU,SAAS,MAAM,WAAW;AAAA,EAAA;AAEtC;AAEA,MAAM,0BAA0B,CAAC,SAA2B;AAC3D,UAAQ,MAAA;AAAA,IACP,KAAK,MAAM,WAAW;AACrB,aAAO,SAAS;AAAA;AAAA,IAGjB,KAAK,MAAM,WAAW;AAAA,IACtB,KAAK,MAAM,WAAW;AAAA,IACtB,KAAK,MAAM,WAAW;AAAA,IACtB,KAAK,MAAM,WAAW;AAAA,IACtB,KAAK,MAAM,WAAW;AAAA,IACtB,KAAK,MAAM,WAAW;AACrB,aAAO,SAAS;AAAA,IACjB,KAAK,MAAM,WAAW;AACrB,aAAO,SAAS;AAAA,IACjB,KAAK,MAAM,WAAW;AACrB,aAAO,SAAS;AAAA,IACjB,KAAK,MAAM,WAAW;AACrB,aAAO,SAAS;AAAA,EAAA;AAEnB;"}
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const Typesafe = require("@contember/typesafe");
|
|
4
|
+
const schema = require("@contember/schema");
|
|
5
|
+
function _interopNamespaceDefault(e) {
|
|
6
|
+
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
|
|
7
|
+
if (e) {
|
|
8
|
+
for (const k in e) {
|
|
9
|
+
if (k !== "default") {
|
|
10
|
+
const d = Object.getOwnPropertyDescriptor(e, k);
|
|
11
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
12
|
+
enumerable: true,
|
|
13
|
+
get: () => e[k]
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
n.default = e;
|
|
19
|
+
return Object.freeze(n);
|
|
20
|
+
}
|
|
21
|
+
const Typesafe__namespace = /* @__PURE__ */ _interopNamespaceDefault(Typesafe);
|
|
22
|
+
const orderBySchema = Typesafe__namespace.array(Typesafe__namespace.object({
|
|
23
|
+
path: Typesafe__namespace.array(Typesafe__namespace.string),
|
|
24
|
+
direction: Typesafe__namespace.enumeration(
|
|
25
|
+
schema.Model.OrderDirection.asc,
|
|
26
|
+
schema.Model.OrderDirection.desc,
|
|
27
|
+
schema.Model.OrderDirection.ascNullsFirst,
|
|
28
|
+
schema.Model.OrderDirection.descNullsLast
|
|
29
|
+
)
|
|
30
|
+
}));
|
|
31
|
+
const joiningColumnSchema = Typesafe__namespace.object({
|
|
32
|
+
columnName: Typesafe__namespace.string,
|
|
33
|
+
onDelete: Typesafe__namespace.enumeration(schema.Model.OnDelete.cascade, schema.Model.OnDelete.restrict, schema.Model.OnDelete.setNull)
|
|
34
|
+
});
|
|
35
|
+
const oneHasManyRelationSchema = Typesafe__namespace.intersection(
|
|
36
|
+
Typesafe__namespace.object({
|
|
37
|
+
type: Typesafe__namespace.literal(schema.Model.RelationType.OneHasMany),
|
|
38
|
+
name: Typesafe__namespace.string,
|
|
39
|
+
target: Typesafe__namespace.string,
|
|
40
|
+
ownedBy: Typesafe__namespace.string
|
|
41
|
+
}),
|
|
42
|
+
Typesafe__namespace.partial({
|
|
43
|
+
orderBy: orderBySchema
|
|
44
|
+
})
|
|
45
|
+
);
|
|
46
|
+
const manyHasOneRelationSchema = Typesafe__namespace.intersection(
|
|
47
|
+
Typesafe__namespace.object({
|
|
48
|
+
type: Typesafe__namespace.literal(schema.Model.RelationType.ManyHasOne),
|
|
49
|
+
name: Typesafe__namespace.string,
|
|
50
|
+
target: Typesafe__namespace.string,
|
|
51
|
+
joiningColumn: joiningColumnSchema,
|
|
52
|
+
nullable: Typesafe__namespace.boolean
|
|
53
|
+
}),
|
|
54
|
+
Typesafe__namespace.partial({
|
|
55
|
+
inversedBy: Typesafe__namespace.string
|
|
56
|
+
})
|
|
57
|
+
);
|
|
58
|
+
const oneHasOneInverseRelationSchema = Typesafe__namespace.object({
|
|
59
|
+
type: Typesafe__namespace.literal(schema.Model.RelationType.OneHasOne),
|
|
60
|
+
name: Typesafe__namespace.string,
|
|
61
|
+
target: Typesafe__namespace.string,
|
|
62
|
+
ownedBy: Typesafe__namespace.string,
|
|
63
|
+
nullable: Typesafe__namespace.boolean
|
|
64
|
+
});
|
|
65
|
+
const oneHasOneOwningRelationSchema = Typesafe__namespace.intersection(
|
|
66
|
+
Typesafe__namespace.object({
|
|
67
|
+
type: Typesafe__namespace.literal(schema.Model.RelationType.OneHasOne),
|
|
68
|
+
name: Typesafe__namespace.string,
|
|
69
|
+
target: Typesafe__namespace.string,
|
|
70
|
+
joiningColumn: joiningColumnSchema,
|
|
71
|
+
nullable: Typesafe__namespace.boolean
|
|
72
|
+
}),
|
|
73
|
+
Typesafe__namespace.partial({
|
|
74
|
+
inversedBy: Typesafe__namespace.string,
|
|
75
|
+
orphanRemoval: Typesafe__namespace.literal(true)
|
|
76
|
+
})
|
|
77
|
+
);
|
|
78
|
+
const eventLogSchema = Typesafe__namespace.coalesce(
|
|
79
|
+
Typesafe__namespace.object({
|
|
80
|
+
enabled: Typesafe__namespace.boolean
|
|
81
|
+
}),
|
|
82
|
+
{ enabled: true }
|
|
83
|
+
);
|
|
84
|
+
const manyHasManyOwningRelationSchema = Typesafe__namespace.intersection(
|
|
85
|
+
Typesafe__namespace.object({
|
|
86
|
+
type: Typesafe__namespace.literal(schema.Model.RelationType.ManyHasMany),
|
|
87
|
+
name: Typesafe__namespace.string,
|
|
88
|
+
target: Typesafe__namespace.string,
|
|
89
|
+
joiningTable: Typesafe__namespace.object({
|
|
90
|
+
tableName: Typesafe__namespace.string,
|
|
91
|
+
joiningColumn: joiningColumnSchema,
|
|
92
|
+
inverseJoiningColumn: joiningColumnSchema,
|
|
93
|
+
eventLog: eventLogSchema
|
|
94
|
+
})
|
|
95
|
+
}),
|
|
96
|
+
Typesafe__namespace.partial({
|
|
97
|
+
inversedBy: Typesafe__namespace.string,
|
|
98
|
+
orderBy: orderBySchema
|
|
99
|
+
})
|
|
100
|
+
);
|
|
101
|
+
const manyHasManyInverseRelationSchema = Typesafe__namespace.intersection(
|
|
102
|
+
Typesafe__namespace.object({
|
|
103
|
+
type: Typesafe__namespace.literal(schema.Model.RelationType.ManyHasMany),
|
|
104
|
+
name: Typesafe__namespace.string,
|
|
105
|
+
target: Typesafe__namespace.string,
|
|
106
|
+
ownedBy: Typesafe__namespace.string
|
|
107
|
+
}),
|
|
108
|
+
Typesafe__namespace.partial({
|
|
109
|
+
orderBy: orderBySchema
|
|
110
|
+
})
|
|
111
|
+
);
|
|
112
|
+
const intersectionSchema = Typesafe__namespace.intersection(
|
|
113
|
+
Typesafe__namespace.object({
|
|
114
|
+
precedence: Typesafe__namespace.enumeration("ALWAYS", "BY DEFAULT")
|
|
115
|
+
}),
|
|
116
|
+
Typesafe__namespace.partial({
|
|
117
|
+
start: Typesafe__namespace.number
|
|
118
|
+
})
|
|
119
|
+
);
|
|
120
|
+
const columnSchema = Typesafe__namespace.intersection(
|
|
121
|
+
Typesafe__namespace.object({
|
|
122
|
+
name: Typesafe__namespace.string,
|
|
123
|
+
columnName: Typesafe__namespace.string,
|
|
124
|
+
columnType: Typesafe__namespace.transform(Typesafe__namespace.string, (it, raw, path) => {
|
|
125
|
+
if (!it.replaceAll(/\s+/g, "").match(/^[\w_]+(?:\(\w+(?:,\w+)*\))?\w*(?:"[^"]+")?(\[])*$/)) {
|
|
126
|
+
throw Typesafe.ParseError.format(it, path, "valid column type");
|
|
127
|
+
}
|
|
128
|
+
return it;
|
|
129
|
+
}),
|
|
130
|
+
nullable: Typesafe__namespace.boolean,
|
|
131
|
+
type: Typesafe__namespace.enumeration(...Object.values(schema.Model.ColumnType))
|
|
132
|
+
}),
|
|
133
|
+
Typesafe__namespace.partial({
|
|
134
|
+
typeAlias: Typesafe__namespace.string,
|
|
135
|
+
list: Typesafe__namespace.boolean,
|
|
136
|
+
default: Typesafe__namespace.anyJson,
|
|
137
|
+
sequence: intersectionSchema,
|
|
138
|
+
collation: Typesafe__namespace.string
|
|
139
|
+
})
|
|
140
|
+
);
|
|
141
|
+
const fieldSchema = Typesafe__namespace.partiallyDiscriminatedUnion(
|
|
142
|
+
"type",
|
|
143
|
+
oneHasOneInverseRelationSchema,
|
|
144
|
+
oneHasOneOwningRelationSchema,
|
|
145
|
+
oneHasManyRelationSchema,
|
|
146
|
+
manyHasOneRelationSchema,
|
|
147
|
+
manyHasManyInverseRelationSchema,
|
|
148
|
+
manyHasManyOwningRelationSchema,
|
|
149
|
+
columnSchema
|
|
150
|
+
);
|
|
151
|
+
const viewSchemaInner = Typesafe__namespace.intersection(
|
|
152
|
+
Typesafe__namespace.object({
|
|
153
|
+
sql: Typesafe__namespace.string
|
|
154
|
+
}),
|
|
155
|
+
Typesafe__namespace.partial({
|
|
156
|
+
dependencies: Typesafe__namespace.array(Typesafe__namespace.string),
|
|
157
|
+
idSource: Typesafe__namespace.array(Typesafe__namespace.string),
|
|
158
|
+
materialized: Typesafe__namespace.boolean
|
|
159
|
+
})
|
|
160
|
+
);
|
|
161
|
+
const viewSchema = viewSchemaInner;
|
|
162
|
+
const indexSchemaBase = Typesafe__namespace.intersection(
|
|
163
|
+
Typesafe__namespace.object({
|
|
164
|
+
fields: Typesafe__namespace.array(Typesafe__namespace.string)
|
|
165
|
+
}),
|
|
166
|
+
Typesafe__namespace.partial({
|
|
167
|
+
name: Typesafe__namespace.string,
|
|
168
|
+
method: Typesafe__namespace.enumeration("btree", "gin", "gist", "hash", "brin", "spgist")
|
|
169
|
+
})
|
|
170
|
+
);
|
|
171
|
+
const indexesSchema = Typesafe__namespace.coalesce(
|
|
172
|
+
Typesafe__namespace.preprocess(
|
|
173
|
+
Typesafe__namespace.array(indexSchemaBase),
|
|
174
|
+
(it) => it?.constructor === Object ? Object.values(it) : it
|
|
175
|
+
),
|
|
176
|
+
[]
|
|
177
|
+
);
|
|
178
|
+
const uniqueConstraint = Typesafe__namespace.intersection(
|
|
179
|
+
Typesafe__namespace.object({
|
|
180
|
+
fields: Typesafe__namespace.array(Typesafe__namespace.string)
|
|
181
|
+
}),
|
|
182
|
+
Typesafe__namespace.partial({
|
|
183
|
+
timing: Typesafe__namespace.enumeration("deferrable", "deferred"),
|
|
184
|
+
name: Typesafe__namespace.string,
|
|
185
|
+
index: Typesafe__namespace.literal(false)
|
|
186
|
+
})
|
|
187
|
+
);
|
|
188
|
+
const uniqueIndex = Typesafe__namespace.intersection(
|
|
189
|
+
Typesafe__namespace.object({
|
|
190
|
+
fields: Typesafe__namespace.array(Typesafe__namespace.string),
|
|
191
|
+
index: Typesafe__namespace.literal(true)
|
|
192
|
+
}),
|
|
193
|
+
Typesafe__namespace.partial({
|
|
194
|
+
nulls: Typesafe__namespace.enumeration("distinct", "not distinct"),
|
|
195
|
+
method: Typesafe__namespace.enumeration("btree", "gin", "gist", "hash", "brin", "spgist")
|
|
196
|
+
})
|
|
197
|
+
);
|
|
198
|
+
const entitySchema = Typesafe__namespace.intersection(
|
|
199
|
+
Typesafe__namespace.object({
|
|
200
|
+
name: Typesafe__namespace.string,
|
|
201
|
+
primary: Typesafe__namespace.string,
|
|
202
|
+
primaryColumn: Typesafe__namespace.string,
|
|
203
|
+
tableName: Typesafe__namespace.string,
|
|
204
|
+
fields: Typesafe__namespace.record(Typesafe__namespace.string, fieldSchema),
|
|
205
|
+
unique: Typesafe__namespace.preprocess(
|
|
206
|
+
Typesafe__namespace.array(Typesafe__namespace.union(uniqueConstraint, uniqueIndex)),
|
|
207
|
+
(it) => it?.constructor === Object ? Object.values(it) : it
|
|
208
|
+
),
|
|
209
|
+
indexes: indexesSchema,
|
|
210
|
+
eventLog: eventLogSchema
|
|
211
|
+
}),
|
|
212
|
+
Typesafe__namespace.partial({
|
|
213
|
+
view: viewSchema,
|
|
214
|
+
orderBy: orderBySchema
|
|
215
|
+
})
|
|
216
|
+
);
|
|
217
|
+
const modelSchema = Typesafe__namespace.object({
|
|
218
|
+
entities: Typesafe__namespace.record(Typesafe__namespace.string, entitySchema),
|
|
219
|
+
enums: Typesafe__namespace.record(Typesafe__namespace.string, Typesafe__namespace.array(Typesafe__namespace.string))
|
|
220
|
+
});
|
|
221
|
+
exports.modelSchema = modelSchema;
|
|
222
|
+
//# sourceMappingURL=model.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.cjs","sources":["../../../../../packages/schema-utils/src/type-schema/model.ts"],"sourcesContent":["import * as Typesafe from '@contember/typesafe'\nimport { Model } from '@contember/schema'\nimport { ParseError } from '@contember/typesafe'\n\nconst orderBySchema = Typesafe.array(Typesafe.object({\n\tpath: Typesafe.array(Typesafe.string),\n\tdirection: Typesafe.enumeration<Model.OrderDirection>(\n\t\tModel.OrderDirection.asc,\n\t\tModel.OrderDirection.desc,\n\t\tModel.OrderDirection.ascNullsFirst,\n\t\tModel.OrderDirection.descNullsLast,\n\t),\n}))\nconst joiningColumnSchema = Typesafe.object({\n\tcolumnName: Typesafe.string,\n\tonDelete: Typesafe.enumeration<Model.OnDelete>(Model.OnDelete.cascade, Model.OnDelete.restrict, Model.OnDelete.setNull),\n})\nconst oneHasManyRelationSchema = Typesafe.intersection(\n\tTypesafe.object({\n\t\ttype: Typesafe.literal(Model.RelationType.OneHasMany),\n\t\tname: Typesafe.string,\n\t\ttarget: Typesafe.string,\n\t\townedBy: Typesafe.string,\n\t}),\n\tTypesafe.partial({\n\t\torderBy: orderBySchema,\n\t}),\n)\nconst oneHasManyRelationSchemaCheck: Typesafe.Equals<Model.OneHasManyRelation, ReturnType<typeof oneHasManyRelationSchema>> = true\n\nconst manyHasOneRelationSchema = Typesafe.intersection(\n\tTypesafe.object({\n\t\ttype: Typesafe.literal(Model.RelationType.ManyHasOne),\n\t\tname: Typesafe.string,\n\t\ttarget: Typesafe.string,\n\t\tjoiningColumn: joiningColumnSchema,\n\t\tnullable: Typesafe.boolean,\n\t}),\n\tTypesafe.partial({\n\t\tinversedBy: Typesafe.string,\n\t}),\n)\n\nconst manyHasOneRelationSchemaCheck: Typesafe.Equals<Model.ManyHasOneRelation, ReturnType<typeof manyHasOneRelationSchema>> = true\n\nconst oneHasOneInverseRelationSchema = Typesafe.object({\n\ttype: Typesafe.literal(Model.RelationType.OneHasOne),\n\tname: Typesafe.string,\n\ttarget: Typesafe.string,\n\townedBy: Typesafe.string,\n\tnullable: Typesafe.boolean,\n})\nconst oneHasOneInverseRelationSchemaCheck: Typesafe.Equals<Model.OneHasOneInverseRelation, ReturnType<typeof oneHasOneInverseRelationSchema>> = true\n\nconst oneHasOneOwningRelationSchema = Typesafe.intersection(\n\tTypesafe.object({\n\t\ttype: Typesafe.literal(Model.RelationType.OneHasOne),\n\t\tname: Typesafe.string,\n\t\ttarget: Typesafe.string,\n\t\tjoiningColumn: joiningColumnSchema,\n\t\tnullable: Typesafe.boolean,\n\t}),\n\tTypesafe.partial({\n\t\tinversedBy: Typesafe.string,\n\t\torphanRemoval: Typesafe.literal(true),\n\t}),\n)\n\nconst oneHasOneOwningRelationSchemaCheck: Typesafe.Equals<Model.OneHasOneOwningRelation, ReturnType<typeof oneHasOneOwningRelationSchema>> = true\n\nconst eventLogSchema = Typesafe.coalesce(\n\tTypesafe.object({\n\t\tenabled: Typesafe.boolean,\n\t}),\n\t{ enabled: true },\n) as Typesafe.Type<{ readonly enabled: boolean }>\n\nconst manyHasManyOwningRelationSchema = Typesafe.intersection(\n\tTypesafe.object({\n\t\ttype: Typesafe.literal(Model.RelationType.ManyHasMany),\n\t\tname: Typesafe.string,\n\t\ttarget: Typesafe.string,\n\t\tjoiningTable: Typesafe.object({\n\t\t\ttableName: Typesafe.string,\n\t\t\tjoiningColumn: joiningColumnSchema,\n\t\t\tinverseJoiningColumn: joiningColumnSchema,\n\t\t\teventLog: eventLogSchema,\n\t\t}),\n\t}),\n\tTypesafe.partial({\n\t\tinversedBy: Typesafe.string,\n\t\torderBy: orderBySchema,\n\t}),\n)\nconst manyHasManyOwningRelationSchemaCheck: Typesafe.Equals<Model.ManyHasManyOwningRelation, ReturnType<typeof manyHasManyOwningRelationSchema>> =\n\ttrue\n\nconst manyHasManyInverseRelationSchema = Typesafe.intersection(\n\tTypesafe.object({\n\t\ttype: Typesafe.literal(Model.RelationType.ManyHasMany),\n\t\tname: Typesafe.string,\n\t\ttarget: Typesafe.string,\n\t\townedBy: Typesafe.string,\n\t}),\n\tTypesafe.partial({\n\t\torderBy: orderBySchema,\n\t}),\n)\nconst manyHasManyInverseRelationSchemaCheck: Typesafe.Equals<Model.ManyHasManyInverseRelation, ReturnType<typeof manyHasManyInverseRelationSchema>> =\n\ttrue\n\nconst intersectionSchema = Typesafe.intersection(\n\tTypesafe.object({\n\t\tprecedence: Typesafe.enumeration('ALWAYS', 'BY DEFAULT'),\n\t}),\n\tTypesafe.partial({\n\t\tstart: Typesafe.number,\n\t}),\n)\nconst intersectionSchemaCheck: Typesafe.Equals<Model.AnyColumn['sequence'], ReturnType<typeof intersectionSchema>> = true\n\nconst columnSchema = Typesafe.intersection(\n\tTypesafe.object({\n\t\tname: Typesafe.string,\n\t\tcolumnName: Typesafe.string,\n\t\tcolumnType: Typesafe.transform(Typesafe.string, (it, raw, path) => {\n\t\t\tif (!it.replaceAll(/\\s+/g, '').match(/^[\\w_]+(?:\\(\\w+(?:,\\w+)*\\))?\\w*(?:\"[^\"]+\")?(\\[])*$/)) {\n\t\t\t\tthrow ParseError.format(it, path, 'valid column type')\n\t\t\t}\n\t\t\treturn it\n\t\t}),\n\t\tnullable: Typesafe.boolean,\n\t\ttype: Typesafe.enumeration<Model.ColumnType>(...Object.values(Model.ColumnType)),\n\t}),\n\tTypesafe.partial({\n\t\ttypeAlias: Typesafe.string,\n\t\tlist: Typesafe.boolean,\n\t\tdefault: Typesafe.anyJson,\n\t\tsequence: intersectionSchema as Typesafe.Type<Model.AnyColumn['sequence']>,\n\t\tcollation: Typesafe.string as Typesafe.Type<Model.AnyColumn['collation']>,\n\t}),\n)\nconst columnSchemaCheck: Typesafe.Equals<Model.AnyColumn, ReturnType<typeof columnSchema>> = true\n\nconst fieldSchema: Typesafe.Type<Model.AnyField> = Typesafe.partiallyDiscriminatedUnion(\n\t'type',\n\toneHasOneInverseRelationSchema,\n\toneHasOneOwningRelationSchema,\n\toneHasManyRelationSchema,\n\tmanyHasOneRelationSchema,\n\tmanyHasManyInverseRelationSchema,\n\tmanyHasManyOwningRelationSchema,\n\tcolumnSchema,\n)\n\nconst viewSchemaInner = Typesafe.intersection(\n\tTypesafe.object({\n\t\tsql: Typesafe.string,\n\t}),\n\tTypesafe.partial({\n\t\tdependencies: Typesafe.array(Typesafe.string),\n\t\tidSource: Typesafe.array(Typesafe.string),\n\t\tmaterialized: Typesafe.boolean,\n\t}),\n)\nconst viewSchemaCheck: Typesafe.Equals<Model.View, ReturnType<typeof viewSchemaInner>> = true\nconst viewSchema: Typesafe.Type<Model.View> = viewSchemaInner\n\nconst indexSchemaBase = Typesafe.intersection(\n\tTypesafe.object({\n\t\tfields: Typesafe.array(Typesafe.string),\n\t}),\n\tTypesafe.partial({\n\t\tname: Typesafe.string,\n\t\tmethod: Typesafe.enumeration('btree', 'gin', 'gist', 'hash', 'brin', 'spgist'),\n\t}),\n)\nconst indexCheck: Typesafe.Equals<Model.Index, ReturnType<typeof indexSchemaBase>> = true\n\nconst indexesSchema = Typesafe.coalesce<Model.Indexes, Model.Indexes>(\n\tTypesafe.preprocess(\n\t\tTypesafe.array(indexSchemaBase),\n\t\tit => it?.constructor === Object ? Object.values(it) : it,\n\t),\n\t[],\n)\n\nconst uniqueConstraint = Typesafe.intersection(\n\tTypesafe.object({\n\t\tfields: Typesafe.array(Typesafe.string),\n\t}),\n\tTypesafe.partial({\n\t\ttiming: Typesafe.enumeration('deferrable', 'deferred'),\n\t\tname: Typesafe.string,\n\t\tindex: Typesafe.literal(false),\n\t}),\n)\nconst uniqueIndex = Typesafe.intersection(\n\tTypesafe.object({\n\t\tfields: Typesafe.array(Typesafe.string),\n\t\tindex: Typesafe.literal(true),\n\t}),\n\tTypesafe.partial({\n\t\tnulls: Typesafe.enumeration('distinct', 'not distinct'),\n\t\tmethod: Typesafe.enumeration('btree', 'gin', 'gist', 'hash', 'brin', 'spgist'),\n\t}),\n)\nconst uniqueConstraintCheck: Typesafe.Equals<Model.UniqueConstraint, ReturnType<typeof uniqueConstraint>> = true\nconst uniqueIndexCheck: Typesafe.Equals<Model.UniqueIndex, ReturnType<typeof uniqueIndex>> = true\n\nconst entitySchema = Typesafe.intersection(\n\tTypesafe.object({\n\t\tname: Typesafe.string,\n\t\tprimary: Typesafe.string,\n\t\tprimaryColumn: Typesafe.string,\n\t\ttableName: Typesafe.string,\n\t\tfields: Typesafe.record(Typesafe.string, fieldSchema),\n\t\tunique: Typesafe.preprocess<Model.Uniques>(\n\t\t\tTypesafe.array(Typesafe.union(uniqueConstraint, uniqueIndex)),\n\t\t\tit => it?.constructor === Object ? Object.values(it) : it,\n\t\t),\n\t\tindexes: indexesSchema,\n\t\teventLog: eventLogSchema,\n\t}),\n\tTypesafe.partial({\n\t\tview: viewSchema,\n\t\torderBy: orderBySchema,\n\t}),\n)\n\nconst entitySchemaCheck: Typesafe.Equals<Model.Entity, ReturnType<typeof entitySchema>> = true\n\nexport const modelSchema = Typesafe.object({\n\tentities: Typesafe.record(Typesafe.string, entitySchema),\n\tenums: Typesafe.record(Typesafe.string, Typesafe.array(Typesafe.string)),\n})\n"],"names":["Typesafe","Model","ParseError"],"mappings":"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"}
|