@contember/schema-utils 2.1.0-alpha.30 → 2.1.0-alpha.35
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/package.json +11 -6
- package/src/acl/AllowAllPermissionFactory.ts +1 -1
- package/src/acl/PredicateDefinitionProcessor.ts +5 -7
- package/src/dataUtils.ts +1 -1
- package/src/definition-generator/AclDefinitionCodeGenerator.ts +7 -8
- package/src/definition-generator/DefinitionCodeGenerator.ts +8 -14
- package/src/definition-generator/DefinitionNamingConventions.ts +50 -1
- package/src/index.ts +2 -2
- package/src/lax/LaxSchemaConverter.ts +0 -4
- package/src/lax/schema.ts +4 -1
- package/src/model/modelUtils.ts +2 -4
- package/src/schemaChecksum.ts +0 -1
- package/src/schemaFilter.ts +1 -1
- package/src/type-schema/acl.ts +16 -13
- package/src/type-schema/actions.ts +0 -2
- package/src/type-schema/condition.ts +25 -23
- package/src/type-schema/model.ts +10 -8
- package/src/type-schema/validation.ts +5 -4
- package/src/type-schema/where.ts +11 -9
- package/src/utils/deepCompare.ts +1 -1
- package/src/utils/printJsValue.ts +23 -25
- package/src/validation/AclValidator.ts +0 -2
- package/src/validation/ActionsValidator.ts +7 -7
- package/src/validation/MembershipResolver.ts +0 -3
- package/src/validation/ModelValidator.ts +43 -32
- package/src/validation/SchemaValidator.ts +7 -6
- package/src/validation/ValidationValidator.ts +1 -3
- package/src/validation/errors.ts +0 -3
- package/tests/cases/unit/conditionSchema.test.ts +1 -2
- package/tests/cases/unit/deepCompare.test.ts +2 -3
- package/tests/cases/unit/laxSchemaConverter.test.ts +0 -4
- package/tests/cases/unit/membershipResolver.test.ts +88 -60
- package/tests/cases/unit/modelSchema.test.ts +4 -4
- package/tests/cases/unit/modelValidator.test.ts +0 -1
- package/tests/cases/unit/printJsvalue.test.ts +11 -7
- package/tests/cases/unit/whereSchema.test.ts +19 -18
- package/dist/development/index.cjs +0 -110
- package/dist/development/index.cjs.map +0 -1
- package/dist/development/index.js +0 -94
- package/dist/development/index.js.map +0 -1
- package/dist/development/src/acl/AllowAllPermissionFactory.cjs +0 -42
- package/dist/development/src/acl/AllowAllPermissionFactory.cjs.map +0 -1
- package/dist/development/src/acl/AllowAllPermissionFactory.js +0 -42
- package/dist/development/src/acl/AllowAllPermissionFactory.js.map +0 -1
- package/dist/development/src/acl/PredicateDefinitionProcessor.cjs +0 -71
- package/dist/development/src/acl/PredicateDefinitionProcessor.cjs.map +0 -1
- package/dist/development/src/acl/PredicateDefinitionProcessor.js +0 -71
- package/dist/development/src/acl/PredicateDefinitionProcessor.js.map +0 -1
- package/dist/development/src/acl/schemaUtils.cjs +0 -11
- package/dist/development/src/acl/schemaUtils.cjs.map +0 -1
- package/dist/development/src/acl/schemaUtils.js +0 -11
- package/dist/development/src/acl/schemaUtils.js.map +0 -1
- package/dist/development/src/dataUtils.cjs +0 -59
- package/dist/development/src/dataUtils.cjs.map +0 -1
- package/dist/development/src/dataUtils.js +0 -59
- package/dist/development/src/dataUtils.js.map +0 -1
- package/dist/development/src/definition-generator/AclDefinitionCodeGenerator.cjs +0 -117
- package/dist/development/src/definition-generator/AclDefinitionCodeGenerator.cjs.map +0 -1
- package/dist/development/src/definition-generator/AclDefinitionCodeGenerator.js +0 -117
- package/dist/development/src/definition-generator/AclDefinitionCodeGenerator.js.map +0 -1
- package/dist/development/src/definition-generator/DefinitionCodeGenerator.cjs +0 -218
- package/dist/development/src/definition-generator/DefinitionCodeGenerator.cjs.map +0 -1
- package/dist/development/src/definition-generator/DefinitionCodeGenerator.js +0 -218
- package/dist/development/src/definition-generator/DefinitionCodeGenerator.js.map +0 -1
- package/dist/development/src/definition-generator/DefinitionNamingConventions.cjs +0 -19
- package/dist/development/src/definition-generator/DefinitionNamingConventions.cjs.map +0 -1
- package/dist/development/src/definition-generator/DefinitionNamingConventions.js +0 -19
- package/dist/development/src/definition-generator/DefinitionNamingConventions.js.map +0 -1
- package/dist/development/src/definition-generator/TsDefinitionGenerator.cjs +0 -17
- package/dist/development/src/definition-generator/TsDefinitionGenerator.cjs.map +0 -1
- package/dist/development/src/definition-generator/TsDefinitionGenerator.js +0 -17
- package/dist/development/src/definition-generator/TsDefinitionGenerator.js.map +0 -1
- package/dist/development/src/lax/LaxSchemaConverter.cjs +0 -202
- package/dist/development/src/lax/LaxSchemaConverter.cjs.map +0 -1
- package/dist/development/src/lax/LaxSchemaConverter.js +0 -202
- package/dist/development/src/lax/LaxSchemaConverter.js.map +0 -1
- package/dist/development/src/lax/schema.cjs +0 -70
- package/dist/development/src/lax/schema.cjs.map +0 -1
- package/dist/development/src/lax/schema.js +0 -53
- package/dist/development/src/lax/schema.js.map +0 -1
- package/dist/development/src/model/NamingConventions.cjs +0 -28
- package/dist/development/src/model/NamingConventions.cjs.map +0 -1
- package/dist/development/src/model/NamingConventions.js +0 -28
- package/dist/development/src/model/NamingConventions.js.map +0 -1
- package/dist/development/src/model/modelUtils.cjs +0 -231
- package/dist/development/src/model/modelUtils.cjs.map +0 -1
- package/dist/development/src/model/modelUtils.js +0 -231
- package/dist/development/src/model/modelUtils.js.map +0 -1
- package/dist/development/src/model/resolveDefaultColumnType.cjs +0 -30
- package/dist/development/src/model/resolveDefaultColumnType.cjs.map +0 -1
- package/dist/development/src/model/resolveDefaultColumnType.js +0 -30
- package/dist/development/src/model/resolveDefaultColumnType.js.map +0 -1
- package/dist/development/src/schemaChecksum.cjs +0 -9
- package/dist/development/src/schemaChecksum.cjs.map +0 -1
- package/dist/development/src/schemaChecksum.js +0 -9
- package/dist/development/src/schemaChecksum.js.map +0 -1
- package/dist/development/src/schemaFilter.cjs +0 -24
- package/dist/development/src/schemaFilter.cjs.map +0 -1
- package/dist/development/src/schemaFilter.js +0 -24
- package/dist/development/src/schemaFilter.js.map +0 -1
- package/dist/development/src/schemaNormalizer.cjs +0 -72
- package/dist/development/src/schemaNormalizer.cjs.map +0 -1
- package/dist/development/src/schemaNormalizer.js +0 -72
- package/dist/development/src/schemaNormalizer.js.map +0 -1
- package/dist/development/src/type-schema/acl.cjs +0 -146
- package/dist/development/src/type-schema/acl.cjs.map +0 -1
- package/dist/development/src/type-schema/acl.js +0 -129
- package/dist/development/src/type-schema/acl.js.map +0 -1
- package/dist/development/src/type-schema/actions.cjs +0 -88
- package/dist/development/src/type-schema/actions.cjs.map +0 -1
- package/dist/development/src/type-schema/actions.js +0 -71
- package/dist/development/src/type-schema/actions.js.map +0 -1
- package/dist/development/src/type-schema/condition.cjs +0 -92
- package/dist/development/src/type-schema/condition.cjs.map +0 -1
- package/dist/development/src/type-schema/condition.js +0 -75
- package/dist/development/src/type-schema/condition.js.map +0 -1
- package/dist/development/src/type-schema/model.cjs +0 -219
- package/dist/development/src/type-schema/model.cjs.map +0 -1
- package/dist/development/src/type-schema/model.js +0 -203
- package/dist/development/src/type-schema/model.js.map +0 -1
- package/dist/development/src/type-schema/settings.cjs +0 -34
- package/dist/development/src/type-schema/settings.cjs.map +0 -1
- package/dist/development/src/type-schema/settings.js +0 -17
- package/dist/development/src/type-schema/settings.js.map +0 -1
- package/dist/development/src/type-schema/validation.cjs +0 -115
- package/dist/development/src/type-schema/validation.cjs.map +0 -1
- package/dist/development/src/type-schema/validation.js +0 -98
- package/dist/development/src/type-schema/validation.js.map +0 -1
- package/dist/development/src/type-schema/where.cjs +0 -44
- package/dist/development/src/type-schema/where.cjs.map +0 -1
- package/dist/development/src/type-schema/where.js +0 -27
- package/dist/development/src/type-schema/where.js.map +0 -1
- package/dist/development/src/utils/assertNever.cjs +0 -7
- package/dist/development/src/utils/assertNever.cjs.map +0 -1
- package/dist/development/src/utils/assertNever.js +0 -7
- package/dist/development/src/utils/assertNever.js.map +0 -1
- package/dist/development/src/utils/deepCompare.cjs +0 -134
- package/dist/development/src/utils/deepCompare.cjs.map +0 -1
- package/dist/development/src/utils/deepCompare.js +0 -134
- package/dist/development/src/utils/deepCompare.js.map +0 -1
- package/dist/development/src/utils/isIt.cjs +0 -7
- package/dist/development/src/utils/isIt.cjs.map +0 -1
- package/dist/development/src/utils/isIt.js +0 -7
- package/dist/development/src/utils/isIt.js.map +0 -1
- package/dist/development/src/utils/printJsValue.cjs +0 -42
- package/dist/development/src/utils/printJsValue.cjs.map +0 -1
- package/dist/development/src/utils/printJsValue.js +0 -42
- package/dist/development/src/utils/printJsValue.js.map +0 -1
- package/dist/development/src/validation/AclValidator.cjs +0 -168
- package/dist/development/src/validation/AclValidator.cjs.map +0 -1
- package/dist/development/src/validation/AclValidator.js +0 -168
- package/dist/development/src/validation/AclValidator.js.map +0 -1
- package/dist/development/src/validation/ActionsValidator.cjs +0 -127
- package/dist/development/src/validation/ActionsValidator.cjs.map +0 -1
- package/dist/development/src/validation/ActionsValidator.js +0 -110
- package/dist/development/src/validation/ActionsValidator.js.map +0 -1
- package/dist/development/src/validation/MembershipResolver.cjs +0 -129
- package/dist/development/src/validation/MembershipResolver.cjs.map +0 -1
- package/dist/development/src/validation/MembershipResolver.js +0 -129
- package/dist/development/src/validation/MembershipResolver.js.map +0 -1
- package/dist/development/src/validation/ModelValidator.cjs +0 -310
- package/dist/development/src/validation/ModelValidator.cjs.map +0 -1
- package/dist/development/src/validation/ModelValidator.js +0 -310
- package/dist/development/src/validation/ModelValidator.js.map +0 -1
- package/dist/development/src/validation/SchemaValidator.cjs +0 -29
- package/dist/development/src/validation/SchemaValidator.cjs.map +0 -1
- package/dist/development/src/validation/SchemaValidator.js +0 -29
- package/dist/development/src/validation/SchemaValidator.js.map +0 -1
- package/dist/development/src/validation/ValidationValidator.cjs +0 -121
- package/dist/development/src/validation/ValidationValidator.cjs.map +0 -1
- package/dist/development/src/validation/ValidationValidator.js +0 -121
- package/dist/development/src/validation/ValidationValidator.js.map +0 -1
- package/dist/development/src/validation/errors.cjs +0 -16
- package/dist/development/src/validation/errors.cjs.map +0 -1
- package/dist/development/src/validation/errors.js +0 -16
- package/dist/development/src/validation/errors.js.map +0 -1
- package/dist/production/index.cjs +0 -110
- package/dist/production/index.cjs.map +0 -1
- package/dist/production/index.js +0 -94
- package/dist/production/index.js.map +0 -1
- package/dist/production/src/acl/AllowAllPermissionFactory.cjs +0 -42
- package/dist/production/src/acl/AllowAllPermissionFactory.cjs.map +0 -1
- package/dist/production/src/acl/AllowAllPermissionFactory.js +0 -42
- package/dist/production/src/acl/AllowAllPermissionFactory.js.map +0 -1
- package/dist/production/src/acl/PredicateDefinitionProcessor.cjs +0 -71
- package/dist/production/src/acl/PredicateDefinitionProcessor.cjs.map +0 -1
- package/dist/production/src/acl/PredicateDefinitionProcessor.js +0 -71
- package/dist/production/src/acl/PredicateDefinitionProcessor.js.map +0 -1
- package/dist/production/src/acl/schemaUtils.cjs +0 -11
- package/dist/production/src/acl/schemaUtils.cjs.map +0 -1
- package/dist/production/src/acl/schemaUtils.js +0 -11
- package/dist/production/src/acl/schemaUtils.js.map +0 -1
- package/dist/production/src/dataUtils.cjs +0 -59
- package/dist/production/src/dataUtils.cjs.map +0 -1
- package/dist/production/src/dataUtils.js +0 -59
- package/dist/production/src/dataUtils.js.map +0 -1
- package/dist/production/src/definition-generator/AclDefinitionCodeGenerator.cjs +0 -117
- package/dist/production/src/definition-generator/AclDefinitionCodeGenerator.cjs.map +0 -1
- package/dist/production/src/definition-generator/AclDefinitionCodeGenerator.js +0 -117
- package/dist/production/src/definition-generator/AclDefinitionCodeGenerator.js.map +0 -1
- package/dist/production/src/definition-generator/DefinitionCodeGenerator.cjs +0 -218
- package/dist/production/src/definition-generator/DefinitionCodeGenerator.cjs.map +0 -1
- package/dist/production/src/definition-generator/DefinitionCodeGenerator.js +0 -218
- package/dist/production/src/definition-generator/DefinitionCodeGenerator.js.map +0 -1
- package/dist/production/src/definition-generator/DefinitionNamingConventions.cjs +0 -19
- package/dist/production/src/definition-generator/DefinitionNamingConventions.cjs.map +0 -1
- package/dist/production/src/definition-generator/DefinitionNamingConventions.js +0 -19
- package/dist/production/src/definition-generator/DefinitionNamingConventions.js.map +0 -1
- package/dist/production/src/definition-generator/TsDefinitionGenerator.cjs +0 -17
- package/dist/production/src/definition-generator/TsDefinitionGenerator.cjs.map +0 -1
- package/dist/production/src/definition-generator/TsDefinitionGenerator.js +0 -17
- package/dist/production/src/definition-generator/TsDefinitionGenerator.js.map +0 -1
- package/dist/production/src/lax/LaxSchemaConverter.cjs +0 -202
- package/dist/production/src/lax/LaxSchemaConverter.cjs.map +0 -1
- package/dist/production/src/lax/LaxSchemaConverter.js +0 -202
- package/dist/production/src/lax/LaxSchemaConverter.js.map +0 -1
- package/dist/production/src/lax/schema.cjs +0 -70
- package/dist/production/src/lax/schema.cjs.map +0 -1
- package/dist/production/src/lax/schema.js +0 -53
- package/dist/production/src/lax/schema.js.map +0 -1
- package/dist/production/src/model/NamingConventions.cjs +0 -28
- package/dist/production/src/model/NamingConventions.cjs.map +0 -1
- package/dist/production/src/model/NamingConventions.js +0 -28
- package/dist/production/src/model/NamingConventions.js.map +0 -1
- package/dist/production/src/model/modelUtils.cjs +0 -231
- package/dist/production/src/model/modelUtils.cjs.map +0 -1
- package/dist/production/src/model/modelUtils.js +0 -231
- package/dist/production/src/model/modelUtils.js.map +0 -1
- package/dist/production/src/model/resolveDefaultColumnType.cjs +0 -30
- package/dist/production/src/model/resolveDefaultColumnType.cjs.map +0 -1
- package/dist/production/src/model/resolveDefaultColumnType.js +0 -30
- package/dist/production/src/model/resolveDefaultColumnType.js.map +0 -1
- package/dist/production/src/schemaChecksum.cjs +0 -9
- package/dist/production/src/schemaChecksum.cjs.map +0 -1
- package/dist/production/src/schemaChecksum.js +0 -9
- package/dist/production/src/schemaChecksum.js.map +0 -1
- package/dist/production/src/schemaFilter.cjs +0 -24
- package/dist/production/src/schemaFilter.cjs.map +0 -1
- package/dist/production/src/schemaFilter.js +0 -24
- package/dist/production/src/schemaFilter.js.map +0 -1
- package/dist/production/src/schemaNormalizer.cjs +0 -72
- package/dist/production/src/schemaNormalizer.cjs.map +0 -1
- package/dist/production/src/schemaNormalizer.js +0 -72
- package/dist/production/src/schemaNormalizer.js.map +0 -1
- package/dist/production/src/type-schema/acl.cjs +0 -146
- package/dist/production/src/type-schema/acl.cjs.map +0 -1
- package/dist/production/src/type-schema/acl.js +0 -129
- package/dist/production/src/type-schema/acl.js.map +0 -1
- package/dist/production/src/type-schema/actions.cjs +0 -88
- package/dist/production/src/type-schema/actions.cjs.map +0 -1
- package/dist/production/src/type-schema/actions.js +0 -71
- package/dist/production/src/type-schema/actions.js.map +0 -1
- package/dist/production/src/type-schema/condition.cjs +0 -92
- package/dist/production/src/type-schema/condition.cjs.map +0 -1
- package/dist/production/src/type-schema/condition.js +0 -75
- package/dist/production/src/type-schema/condition.js.map +0 -1
- package/dist/production/src/type-schema/model.cjs +0 -219
- package/dist/production/src/type-schema/model.cjs.map +0 -1
- package/dist/production/src/type-schema/model.js +0 -203
- package/dist/production/src/type-schema/model.js.map +0 -1
- package/dist/production/src/type-schema/settings.cjs +0 -34
- package/dist/production/src/type-schema/settings.cjs.map +0 -1
- package/dist/production/src/type-schema/settings.js +0 -17
- package/dist/production/src/type-schema/settings.js.map +0 -1
- package/dist/production/src/type-schema/validation.cjs +0 -115
- package/dist/production/src/type-schema/validation.cjs.map +0 -1
- package/dist/production/src/type-schema/validation.js +0 -98
- package/dist/production/src/type-schema/validation.js.map +0 -1
- package/dist/production/src/type-schema/where.cjs +0 -44
- package/dist/production/src/type-schema/where.cjs.map +0 -1
- package/dist/production/src/type-schema/where.js +0 -27
- package/dist/production/src/type-schema/where.js.map +0 -1
- package/dist/production/src/utils/assertNever.cjs +0 -7
- package/dist/production/src/utils/assertNever.cjs.map +0 -1
- package/dist/production/src/utils/assertNever.js +0 -7
- package/dist/production/src/utils/assertNever.js.map +0 -1
- package/dist/production/src/utils/deepCompare.cjs +0 -134
- package/dist/production/src/utils/deepCompare.cjs.map +0 -1
- package/dist/production/src/utils/deepCompare.js +0 -134
- package/dist/production/src/utils/deepCompare.js.map +0 -1
- package/dist/production/src/utils/isIt.cjs +0 -7
- package/dist/production/src/utils/isIt.cjs.map +0 -1
- package/dist/production/src/utils/isIt.js +0 -7
- package/dist/production/src/utils/isIt.js.map +0 -1
- package/dist/production/src/utils/printJsValue.cjs +0 -42
- package/dist/production/src/utils/printJsValue.cjs.map +0 -1
- package/dist/production/src/utils/printJsValue.js +0 -42
- package/dist/production/src/utils/printJsValue.js.map +0 -1
- package/dist/production/src/validation/AclValidator.cjs +0 -168
- package/dist/production/src/validation/AclValidator.cjs.map +0 -1
- package/dist/production/src/validation/AclValidator.js +0 -168
- package/dist/production/src/validation/AclValidator.js.map +0 -1
- package/dist/production/src/validation/ActionsValidator.cjs +0 -127
- package/dist/production/src/validation/ActionsValidator.cjs.map +0 -1
- package/dist/production/src/validation/ActionsValidator.js +0 -110
- package/dist/production/src/validation/ActionsValidator.js.map +0 -1
- package/dist/production/src/validation/MembershipResolver.cjs +0 -129
- package/dist/production/src/validation/MembershipResolver.cjs.map +0 -1
- package/dist/production/src/validation/MembershipResolver.js +0 -129
- package/dist/production/src/validation/MembershipResolver.js.map +0 -1
- package/dist/production/src/validation/ModelValidator.cjs +0 -310
- package/dist/production/src/validation/ModelValidator.cjs.map +0 -1
- package/dist/production/src/validation/ModelValidator.js +0 -310
- package/dist/production/src/validation/ModelValidator.js.map +0 -1
- package/dist/production/src/validation/SchemaValidator.cjs +0 -29
- package/dist/production/src/validation/SchemaValidator.cjs.map +0 -1
- package/dist/production/src/validation/SchemaValidator.js +0 -29
- package/dist/production/src/validation/SchemaValidator.js.map +0 -1
- package/dist/production/src/validation/ValidationValidator.cjs +0 -121
- package/dist/production/src/validation/ValidationValidator.cjs.map +0 -1
- package/dist/production/src/validation/ValidationValidator.js +0 -121
- package/dist/production/src/validation/ValidationValidator.js.map +0 -1
- package/dist/production/src/validation/errors.cjs +0 -16
- package/dist/production/src/validation/errors.cjs.map +0 -1
- package/dist/production/src/validation/errors.js +0 -16
- package/dist/production/src/validation/errors.js.map +0 -1
- package/dist/tests/cases/unit/conditionSchema.test.d.ts +0 -2
- package/dist/tests/cases/unit/conditionSchema.test.d.ts.map +0 -1
- package/dist/tests/cases/unit/deepCompare.test.d.ts +0 -2
- package/dist/tests/cases/unit/deepCompare.test.d.ts.map +0 -1
- package/dist/tests/cases/unit/laxSchemaConverter.test.d.ts +0 -2
- package/dist/tests/cases/unit/laxSchemaConverter.test.d.ts.map +0 -1
- package/dist/tests/cases/unit/membershipResolver.test.d.ts +0 -2
- package/dist/tests/cases/unit/membershipResolver.test.d.ts.map +0 -1
- package/dist/tests/cases/unit/modelSchema.test.d.ts +0 -2
- package/dist/tests/cases/unit/modelSchema.test.d.ts.map +0 -1
- package/dist/tests/cases/unit/modelValidator.test.d.ts +0 -2
- package/dist/tests/cases/unit/modelValidator.test.d.ts.map +0 -1
- package/dist/tests/cases/unit/printJsvalue.test.d.ts +0 -2
- package/dist/tests/cases/unit/printJsvalue.test.d.ts.map +0 -1
- package/dist/tests/cases/unit/schemas/acl.d.ts +0 -12
- package/dist/tests/cases/unit/schemas/acl.d.ts.map +0 -1
- package/dist/tests/cases/unit/schemas/basic.d.ts +0 -4
- package/dist/tests/cases/unit/schemas/basic.d.ts.map +0 -1
- package/dist/tests/cases/unit/schemas/complex.d.ts +0 -12
- package/dist/tests/cases/unit/schemas/complex.d.ts.map +0 -1
- package/dist/tests/cases/unit/schemas/enum.d.ts +0 -6
- package/dist/tests/cases/unit/schemas/enum.d.ts.map +0 -1
- package/dist/tests/cases/unit/schemas/relations.d.ts +0 -14
- package/dist/tests/cases/unit/schemas/relations.d.ts.map +0 -1
- package/dist/tests/cases/unit/schemas/unique.d.ts +0 -4
- package/dist/tests/cases/unit/schemas/unique.d.ts.map +0 -1
- package/dist/tests/cases/unit/schemas/view.d.ts +0 -4
- package/dist/tests/cases/unit/schemas/view.d.ts.map +0 -1
- package/dist/tests/cases/unit/tsDefinitionGenerator.test.d.ts +0 -2
- package/dist/tests/cases/unit/tsDefinitionGenerator.test.d.ts.map +0 -1
- package/dist/tests/cases/unit/whereSchema.test.d.ts +0 -2
- package/dist/tests/cases/unit/whereSchema.test.d.ts.map +0 -1
- package/dist/tests/tsconfig.tsbuildinfo +0 -1
- package/dist/types/acl/AllowAllPermissionFactory.d.ts +0 -7
- package/dist/types/acl/AllowAllPermissionFactory.d.ts.map +0 -1
- package/dist/types/acl/PredicateDefinitionProcessor.d.ts +0 -32
- package/dist/types/acl/PredicateDefinitionProcessor.d.ts.map +0 -1
- package/dist/types/acl/index.d.ts +0 -4
- package/dist/types/acl/index.d.ts.map +0 -1
- package/dist/types/acl/schemaUtils.d.ts +0 -3
- package/dist/types/acl/schemaUtils.d.ts.map +0 -1
- package/dist/types/dataUtils.d.ts +0 -18
- package/dist/types/dataUtils.d.ts.map +0 -1
- package/dist/types/definition-generator/AclDefinitionCodeGenerator.d.ts +0 -19
- package/dist/types/definition-generator/AclDefinitionCodeGenerator.d.ts.map +0 -1
- package/dist/types/definition-generator/DefinitionCodeGenerator.d.ts +0 -27
- package/dist/types/definition-generator/DefinitionCodeGenerator.d.ts.map +0 -1
- package/dist/types/definition-generator/DefinitionNamingConventions.d.ts +0 -7
- package/dist/types/definition-generator/DefinitionNamingConventions.d.ts.map +0 -1
- package/dist/types/definition-generator/TsDefinitionGenerator.d.ts +0 -12
- package/dist/types/definition-generator/TsDefinitionGenerator.d.ts.map +0 -1
- package/dist/types/definition-generator/index.d.ts +0 -5
- package/dist/types/definition-generator/index.d.ts.map +0 -1
- package/dist/types/index.d.ts +0 -15
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/lax/LaxSchemaConverter.d.ts +0 -10
- package/dist/types/lax/LaxSchemaConverter.d.ts.map +0 -1
- package/dist/types/lax/index.d.ts +0 -3
- package/dist/types/lax/index.d.ts.map +0 -1
- package/dist/types/lax/schema.d.ts +0 -285
- package/dist/types/lax/schema.d.ts.map +0 -1
- package/dist/types/model/NamingConventions.d.ts +0 -17
- package/dist/types/model/NamingConventions.d.ts.map +0 -1
- package/dist/types/model/index.d.ts +0 -4
- package/dist/types/model/index.d.ts.map +0 -1
- package/dist/types/model/modelUtils.d.ts +0 -28
- package/dist/types/model/modelUtils.d.ts.map +0 -1
- package/dist/types/model/resolveDefaultColumnType.d.ts +0 -3
- package/dist/types/model/resolveDefaultColumnType.d.ts.map +0 -1
- package/dist/types/schemaChecksum.d.ts +0 -3
- package/dist/types/schemaChecksum.d.ts.map +0 -1
- package/dist/types/schemaFilter.d.ts +0 -3
- package/dist/types/schemaFilter.d.ts.map +0 -1
- package/dist/types/schemaNormalizer.d.ts +0 -3
- package/dist/types/schemaNormalizer.d.ts.map +0 -1
- package/dist/types/tsconfig.tsbuildinfo +0 -1
- package/dist/types/type-schema/acl.d.ts +0 -10
- package/dist/types/type-schema/acl.d.ts.map +0 -1
- package/dist/types/type-schema/actions.d.ts +0 -32
- package/dist/types/type-schema/actions.d.ts.map +0 -1
- package/dist/types/type-schema/condition.d.ts +0 -4
- package/dist/types/type-schema/condition.d.ts.map +0 -1
- package/dist/types/type-schema/index.d.ts +0 -6
- package/dist/types/type-schema/index.d.ts.map +0 -1
- package/dist/types/type-schema/model.d.ts +0 -30
- package/dist/types/type-schema/model.d.ts.map +0 -1
- package/dist/types/type-schema/settings.d.ts +0 -41
- package/dist/types/type-schema/settings.d.ts.map +0 -1
- package/dist/types/type-schema/validation.d.ts +0 -15
- package/dist/types/type-schema/validation.d.ts.map +0 -1
- package/dist/types/type-schema/where.d.ts +0 -7
- package/dist/types/type-schema/where.d.ts.map +0 -1
- package/dist/types/utils/assertNever.d.ts +0 -2
- package/dist/types/utils/assertNever.d.ts.map +0 -1
- package/dist/types/utils/deepCompare.d.ts +0 -13
- package/dist/types/utils/deepCompare.d.ts.map +0 -1
- package/dist/types/utils/index.d.ts +0 -4
- package/dist/types/utils/index.d.ts.map +0 -1
- package/dist/types/utils/isIt.d.ts +0 -2
- package/dist/types/utils/isIt.d.ts.map +0 -1
- package/dist/types/utils/printJsValue.d.ts +0 -13
- package/dist/types/utils/printJsValue.d.ts.map +0 -1
- package/dist/types/validation/AclValidator.d.ts +0 -20
- package/dist/types/validation/AclValidator.d.ts.map +0 -1
- package/dist/types/validation/ActionsValidator.d.ts +0 -13
- package/dist/types/validation/ActionsValidator.d.ts.map +0 -1
- package/dist/types/validation/MembershipResolver.d.ts +0 -37
- package/dist/types/validation/MembershipResolver.d.ts.map +0 -1
- package/dist/types/validation/ModelValidator.d.ts +0 -20
- package/dist/types/validation/ModelValidator.d.ts.map +0 -1
- package/dist/types/validation/SchemaValidator.d.ts +0 -11
- package/dist/types/validation/SchemaValidator.d.ts.map +0 -1
- package/dist/types/validation/ValidationValidator.d.ts +0 -14
- package/dist/types/validation/ValidationValidator.d.ts.map +0 -1
- package/dist/types/validation/errors.d.ts +0 -14
- package/dist/types/validation/errors.d.ts.map +0 -1
- package/dist/types/validation/index.d.ts +0 -7
- package/dist/types/validation/index.d.ts.map +0 -1
- package/tests/cases/unit/schemas/.eslintignore +0 -1
|
@@ -4,7 +4,6 @@ import { getEntity } from '../model'
|
|
|
4
4
|
import { ErrorBuilder, ValidationError } from './errors'
|
|
5
5
|
import { conditionSchema } from '../type-schema'
|
|
6
6
|
|
|
7
|
-
|
|
8
7
|
export class AclValidator {
|
|
9
8
|
constructor(private readonly model: Model.Schema) {}
|
|
10
9
|
|
|
@@ -28,7 +27,6 @@ export class AclValidator {
|
|
|
28
27
|
roles: string[],
|
|
29
28
|
errorBuilder: ErrorBuilder,
|
|
30
29
|
): void {
|
|
31
|
-
|
|
32
30
|
this.validateInherits(permissions.inherits, roles, errorBuilder.for('inherits'))
|
|
33
31
|
this.validateVariables(permissions.variables, errorBuilder.for('variables'))
|
|
34
32
|
this.validatePermissions(permissions.entities, (permissions.variables as Acl.Variables) || {}, errorBuilder.for('entities'))
|
|
@@ -5,12 +5,13 @@ import { assertNever } from '../utils'
|
|
|
5
5
|
import * as Typesafe from '@contember/typesafe'
|
|
6
6
|
import { whereSchema } from '../type-schema/where'
|
|
7
7
|
|
|
8
|
-
const manyArgsSchema = (args: {schema: Model.Schema; entity: Model.Entity}) =>
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
8
|
+
const manyArgsSchema = (args: { schema: Model.Schema; entity: Model.Entity }) =>
|
|
9
|
+
Typesafe.partial({
|
|
10
|
+
limit: Typesafe.integer,
|
|
11
|
+
offset: Typesafe.integer,
|
|
12
|
+
orderBy: Typesafe.array(Typesafe.anyJsonObject),
|
|
13
|
+
filter: whereSchema(args),
|
|
14
|
+
})
|
|
14
15
|
|
|
15
16
|
export class ActionsValidator {
|
|
16
17
|
constructor(private readonly model: Model.Schema) {}
|
|
@@ -34,7 +35,6 @@ export class ActionsValidator {
|
|
|
34
35
|
}
|
|
35
36
|
}
|
|
36
37
|
|
|
37
|
-
|
|
38
38
|
private validateTrigger(trigger: Actions.AnyTrigger, errorBuilder: ErrorBuilder): void {
|
|
39
39
|
const entity = this.model.entities[trigger.entity]
|
|
40
40
|
if (!entity) {
|
|
@@ -3,7 +3,6 @@ import { getRoleVariables } from '../acl'
|
|
|
3
3
|
import { conditionSchema } from '../type-schema'
|
|
4
4
|
import { assertNever } from '../utils'
|
|
5
5
|
|
|
6
|
-
|
|
7
6
|
export class MembershipResolver {
|
|
8
7
|
public static UnknownIdentity = { identityId: '00000000-0000-0000-0000-000000000000' }
|
|
9
8
|
|
|
@@ -88,7 +87,6 @@ export class MembershipResolver {
|
|
|
88
87
|
|
|
89
88
|
if (variable.type === Acl.VariableType.entity) {
|
|
90
89
|
parsedVariables.push({ name, condition: { in: inputVariable.values } }) // todo: cast to int where primary is int
|
|
91
|
-
|
|
92
90
|
} else if (variable.type === Acl.VariableType.condition) {
|
|
93
91
|
try {
|
|
94
92
|
const conditions = inputVariable.values.map(it => conditionSchema()(JSON.parse(it)))
|
|
@@ -132,7 +130,6 @@ export enum MembershipValidationErrorType {
|
|
|
132
130
|
VARIABLE_INVALID = 'variableInvalid',
|
|
133
131
|
}
|
|
134
132
|
|
|
135
|
-
|
|
136
133
|
export interface ParsedMembershipVariable {
|
|
137
134
|
readonly name: string
|
|
138
135
|
readonly condition: Input.Condition
|
|
@@ -5,9 +5,8 @@ import { acceptEveryFieldVisitor, getTargetEntity, isColumn, isInverseRelation,
|
|
|
5
5
|
const IDENTIFIER_PATTERN = /^[_a-zA-Z][_a-zA-Z0-9]*$/
|
|
6
6
|
const RESERVED_WORDS = ['and', 'or', 'not']
|
|
7
7
|
|
|
8
|
-
|
|
9
8
|
export class ModelValidator {
|
|
10
|
-
constructor(private readonly model: Model.Schema) {
|
|
9
|
+
constructor(private readonly model: Model.Schema) {}
|
|
11
10
|
|
|
12
11
|
public validate(): ValidationError[] {
|
|
13
12
|
const errorBuilder = new ErrorBuilder([], [])
|
|
@@ -121,7 +120,7 @@ export class ModelValidator {
|
|
|
121
120
|
return errors.add('MODEL_UNDEFINED_ENTITY', `Target entity ${targetEntityName} not found`)
|
|
122
121
|
}
|
|
123
122
|
if (((it: Model.AnyRelation): it is Model.AnyRelation & Model.OrderableRelation => 'orderBy' in it)(field)) {
|
|
124
|
-
(field as Model.OrderableRelation).orderBy?.forEach(it => {
|
|
123
|
+
;(field as Model.OrderableRelation).orderBy?.forEach(it => {
|
|
125
124
|
let entity = targetEntity
|
|
126
125
|
|
|
127
126
|
for (let i = 0; i < it.path.length; i++) {
|
|
@@ -147,15 +146,15 @@ export class ModelValidator {
|
|
|
147
146
|
return errors.add('MODEL_INVALID_VIEW_USAGE', 'Many-has-many relation is not allowed on a view entity.')
|
|
148
147
|
}
|
|
149
148
|
if (
|
|
150
|
-
!targetEntity.view
|
|
151
|
-
field.type === Model.RelationType.OneHasMany
|
|
149
|
+
!targetEntity.view
|
|
150
|
+
&& field.type === Model.RelationType.OneHasMany
|
|
152
151
|
) {
|
|
153
152
|
return errors.add('MODEL_INVALID_VIEW_USAGE', 'One-has-many relation fields on views must point to a view entity.')
|
|
154
153
|
}
|
|
155
154
|
if (
|
|
156
|
-
!targetEntity.view
|
|
157
|
-
field.type === Model.RelationType.OneHasOne
|
|
158
|
-
!('joiningColumn' in field)
|
|
155
|
+
!targetEntity.view
|
|
156
|
+
&& field.type === Model.RelationType.OneHasOne
|
|
157
|
+
&& !('joiningColumn' in field)
|
|
159
158
|
) {
|
|
160
159
|
return errors.add('MODEL_INVALID_VIEW_USAGE', 'One-has-one relation fields on views must be owning or point to a view entity.')
|
|
161
160
|
}
|
|
@@ -172,7 +171,10 @@ export class ModelValidator {
|
|
|
172
171
|
return errors.add('MODEL_RELATION_REQUIRED', `${relationDescription} not a relation`)
|
|
173
172
|
}
|
|
174
173
|
if (targetField.target !== entityName) {
|
|
175
|
-
return errors.add(
|
|
174
|
+
return errors.add(
|
|
175
|
+
'MODEL_INVALID_RELATION_DEFINITION',
|
|
176
|
+
`${relationDescription} back reference to entity ${entityName} expected, but ${targetField.target} given`,
|
|
177
|
+
)
|
|
176
178
|
}
|
|
177
179
|
if (!isOwningRelation(targetField)) {
|
|
178
180
|
errors.add('MODEL_INVALID_RELATION_DEFINITION', `${relationDescription} not an owning relation`)
|
|
@@ -182,7 +184,10 @@ export class ModelValidator {
|
|
|
182
184
|
return errors.add('MODEL_INVALID_RELATION_DEFINITION', `${relationDescription} inverse relation is not set`)
|
|
183
185
|
}
|
|
184
186
|
if (targetField.inversedBy !== field.name) {
|
|
185
|
-
return errors.add(
|
|
187
|
+
return errors.add(
|
|
188
|
+
'MODEL_INVALID_RELATION_DEFINITION',
|
|
189
|
+
`${relationDescription} back reference ${entityName}::${field.name} expected, ${targetField.target}::${targetField.inversedBy} given`,
|
|
190
|
+
)
|
|
186
191
|
}
|
|
187
192
|
if (field.type === Model.RelationType.OneHasOne && targetField.type !== Model.RelationType.OneHasOne) {
|
|
188
193
|
return errors.add('MODEL_INVALID_RELATION_DEFINITION', `${relationDescription} "OneHasOne" type expected, "${targetField.type}" given`)
|
|
@@ -205,7 +210,10 @@ export class ModelValidator {
|
|
|
205
210
|
return errors.add('MODEL_RELATION_REQUIRED', `${relationDescription} not a relation`)
|
|
206
211
|
}
|
|
207
212
|
if (targetField.target !== entityName) {
|
|
208
|
-
return errors.add(
|
|
213
|
+
return errors.add(
|
|
214
|
+
'MODEL_INVALID_RELATION_DEFINITION',
|
|
215
|
+
`${relationDescription} back reference to entity ${entityName} expected, but ${targetField.target} given`,
|
|
216
|
+
)
|
|
209
217
|
}
|
|
210
218
|
if (!isInverseRelation(targetField)) {
|
|
211
219
|
return errors.add('MODEL_INVALID_RELATION_DEFINITION', `${relationDescription} not an inverse relation`)
|
|
@@ -214,7 +222,10 @@ export class ModelValidator {
|
|
|
214
222
|
return errors.add('MODEL_INVALID_RELATION_DEFINITION', `${relationDescription} owning relation is not set`)
|
|
215
223
|
}
|
|
216
224
|
if (targetField.ownedBy !== field.name) {
|
|
217
|
-
return errors.add(
|
|
225
|
+
return errors.add(
|
|
226
|
+
'MODEL_INVALID_RELATION_DEFINITION',
|
|
227
|
+
`${relationDescription} back reference ${entityName}::${field.name} expected, ${targetField.target}::${targetField.ownedBy} given`,
|
|
228
|
+
)
|
|
218
229
|
}
|
|
219
230
|
if (field.type === Model.RelationType.OneHasOne && targetField.type !== Model.RelationType.OneHasOne) {
|
|
220
231
|
return errors.add('MODEL_INVALID_RELATION_DEFINITION', `${relationDescription} "OneHasOne" type expected, "${targetField.type}" given`)
|
|
@@ -244,7 +255,6 @@ export class ModelValidator {
|
|
|
244
255
|
}
|
|
245
256
|
}
|
|
246
257
|
|
|
247
|
-
|
|
248
258
|
private validateMetaSuffixCollisions(entities: Model.Entity[], errorBuilder: ErrorBuilder) {
|
|
249
259
|
const entityNames = new Set(entities.map(it => it.name))
|
|
250
260
|
for (const entity of entities) {
|
|
@@ -252,13 +262,15 @@ export class ModelValidator {
|
|
|
252
262
|
const baseName = entity.name.substring(0, entity.name.length - 4)
|
|
253
263
|
if (entityNames.has(baseName)) {
|
|
254
264
|
errorBuilder.for(entity.name)
|
|
255
|
-
.add(
|
|
265
|
+
.add(
|
|
266
|
+
'MODEL_NAME_COLLISION',
|
|
267
|
+
`entity ${entity.name} collides with entity ${baseName}, because a GraphQL type with "Meta" suffix is created for every entity`,
|
|
268
|
+
)
|
|
256
269
|
}
|
|
257
270
|
}
|
|
258
271
|
}
|
|
259
272
|
}
|
|
260
273
|
|
|
261
|
-
|
|
262
274
|
private validateTableNameCollisions(entities: Model.Entity[], errorBuilder: ErrorBuilder) {
|
|
263
275
|
const relationNames: Record<string, string> = {}
|
|
264
276
|
for (const entity of entities) {
|
|
@@ -280,25 +292,25 @@ export class ModelValidator {
|
|
|
280
292
|
if (relationNames[joiningTable.tableName]) {
|
|
281
293
|
entityErrorBuilder
|
|
282
294
|
.for(relation.name)
|
|
283
|
-
.add(
|
|
284
|
-
|
|
285
|
-
|
|
295
|
+
.add(
|
|
296
|
+
'MODEL_NAME_COLLISION',
|
|
297
|
+
`${description} collides with a ${relationNames[joiningTable.tableName]}.`
|
|
298
|
+
+ 'Consider using plural for a relation name or change the joining table name using .joiningTable(...) in schema definition.',
|
|
286
299
|
)
|
|
287
300
|
} else {
|
|
288
301
|
relationNames[joiningTable.tableName] = description
|
|
289
302
|
}
|
|
290
303
|
},
|
|
291
304
|
visitColumn: () => {},
|
|
292
|
-
visitManyHasManyInverse: () => {
|
|
293
|
-
visitOneHasMany: () => {
|
|
294
|
-
visitOneHasOneInverse: () => {
|
|
295
|
-
visitOneHasOneOwning: () => {
|
|
296
|
-
visitManyHasOne: () => {
|
|
305
|
+
visitManyHasManyInverse: () => {},
|
|
306
|
+
visitOneHasMany: () => {},
|
|
307
|
+
visitOneHasOneInverse: () => {},
|
|
308
|
+
visitOneHasOneOwning: () => {},
|
|
309
|
+
visitManyHasOne: () => {},
|
|
297
310
|
})
|
|
298
311
|
}
|
|
299
312
|
}
|
|
300
313
|
|
|
301
|
-
|
|
302
314
|
private validateAliasedTypesCollision(entities: Model.Entity[], errorBuilder: ErrorBuilder) {
|
|
303
315
|
const aliasedTypes = new Map<string, Model.ColumnType>()
|
|
304
316
|
for (const entity of entities) {
|
|
@@ -314,16 +326,15 @@ export class ModelValidator {
|
|
|
314
326
|
}
|
|
315
327
|
aliasedTypes.set(column.typeAlias, column.type)
|
|
316
328
|
},
|
|
317
|
-
visitManyHasManyOwning: () => {
|
|
318
|
-
visitManyHasManyInverse: () => {
|
|
319
|
-
visitOneHasMany: () => {
|
|
320
|
-
visitOneHasOneInverse: () => {
|
|
321
|
-
visitOneHasOneOwning: () => {
|
|
322
|
-
visitManyHasOne: () => {
|
|
329
|
+
visitManyHasManyOwning: () => {},
|
|
330
|
+
visitManyHasManyInverse: () => {},
|
|
331
|
+
visitOneHasMany: () => {},
|
|
332
|
+
visitOneHasOneInverse: () => {},
|
|
333
|
+
visitOneHasOneOwning: () => {},
|
|
334
|
+
visitManyHasOne: () => {},
|
|
323
335
|
})
|
|
324
336
|
}
|
|
325
337
|
}
|
|
326
338
|
}
|
|
327
339
|
|
|
328
|
-
const isRelation = (field: Model.AnyField): field is Model.AnyRelation =>
|
|
329
|
-
Object.values(Model.RelationType).includes(field.type as Model.RelationType)
|
|
340
|
+
const isRelation = (field: Model.AnyField): field is Model.AnyRelation => Object.values(Model.RelationType).includes(field.type as Model.RelationType)
|
|
@@ -19,22 +19,23 @@ export class SchemaValidator {
|
|
|
19
19
|
const aclValidator = new AclValidator(schema.model)
|
|
20
20
|
const aclErrors = aclValidator.validate(schema.acl)
|
|
21
21
|
|
|
22
|
-
|
|
23
22
|
const validationValidator = new ValidationValidator(schema.model)
|
|
24
23
|
const validationErrors = validationValidator.validate(schema.validation)
|
|
25
24
|
|
|
26
25
|
const actionsValidator = new ActionsValidator(schema.model)
|
|
27
|
-
const actionsErrors
|
|
26
|
+
const actionsErrors = actionsValidator.validate(schema.actions)
|
|
28
27
|
|
|
29
28
|
const allErrors = [...aclErrors, ...modelErrors, ...validationErrors, ...actionsErrors]
|
|
30
29
|
if (skippedErrors.length === 0) {
|
|
31
30
|
return allErrors
|
|
32
31
|
}
|
|
33
32
|
return allErrors.filter(
|
|
34
|
-
err =>
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
33
|
+
err =>
|
|
34
|
+
!skippedErrors.some(
|
|
35
|
+
rule =>
|
|
36
|
+
err.code === rule.code
|
|
37
|
+
&& (!rule.path || err.path.join('.') === rule.path),
|
|
38
|
+
),
|
|
38
39
|
)
|
|
39
40
|
}
|
|
40
41
|
}
|
|
@@ -65,7 +65,6 @@ export class ValidationValidator {
|
|
|
65
65
|
this.validateValidator(errorBuilder.for('validator'), rule.validator, entity, field)
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
-
|
|
69
68
|
private validateValidator(
|
|
70
69
|
errorBuilder: ErrorBuilder,
|
|
71
70
|
validator: Validation.Validator,
|
|
@@ -120,7 +119,7 @@ export class ValidationValidator {
|
|
|
120
119
|
)
|
|
121
120
|
return
|
|
122
121
|
default:
|
|
123
|
-
((_: never) => {
|
|
122
|
+
;((_: never) => {
|
|
124
123
|
errorBuilder.for('operation', `Operation ${(validatorCast as any).operation} is not an valid option`)
|
|
125
124
|
})(validatorCast)
|
|
126
125
|
}
|
|
@@ -135,7 +134,6 @@ export class ValidationValidator {
|
|
|
135
134
|
this.validateValidator(errorBuilder.for('validator'), argument.validator, entity, field)
|
|
136
135
|
}
|
|
137
136
|
|
|
138
|
-
|
|
139
137
|
private validatePathArgument(
|
|
140
138
|
errorBuilder: ErrorBuilder,
|
|
141
139
|
argument: Validation.PathArgument,
|
package/src/validation/errors.ts
CHANGED
|
@@ -11,21 +11,18 @@ export type ValidationErrorCode =
|
|
|
11
11
|
| 'MODEL_INVALID_ENTITY_NAME'
|
|
12
12
|
| 'MODEL_INVALID_CONSTRAINT'
|
|
13
13
|
| 'MODEL_NAME_COLLISION'
|
|
14
|
-
|
|
15
14
|
| 'ACL_INVALID_CONDITION'
|
|
16
15
|
| 'ACL_UNDEFINED_VARIABLE'
|
|
17
16
|
| 'ACL_UNDEFINED_FIELD'
|
|
18
17
|
| 'ACL_UNDEFINED_PREDICATE'
|
|
19
18
|
| 'ACL_UNDEFINED_ROLE'
|
|
20
19
|
| 'ACL_UNDEFINED_ENTITY'
|
|
21
|
-
|
|
22
20
|
| 'ACTIONS_NAME_MISMATCH'
|
|
23
21
|
| 'ACTIONS_INVALID_CONDITION'
|
|
24
22
|
| 'ACTIONS_UNDEFINED_FIELD'
|
|
25
23
|
| 'ACTIONS_UNDEFINED_ENTITY'
|
|
26
24
|
| 'ACTIONS_UNDEFINED_TRIGGER_TARGET'
|
|
27
25
|
| 'ACTIONS_INVALID_SELECTION'
|
|
28
|
-
|
|
29
26
|
| 'VALIDATION_UNDEFINED_ENTITY'
|
|
30
27
|
| 'VALIDATION_UNDEFINED_FIELD'
|
|
31
28
|
| 'VALIDATION_NOT_IMPLEMENTED'
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { expect, test
|
|
1
|
+
import { describe, expect, test } from 'bun:test'
|
|
2
2
|
import { conditionSchema } from '../../../src/type-schema'
|
|
3
3
|
import { Model } from '@contember/schema'
|
|
4
4
|
|
|
@@ -31,7 +31,6 @@ describe('condition schema', () => {
|
|
|
31
31
|
expect(() => conditionSchema(Model.ColumnType.Int)(condition)).toThrow('value at root: extra property containsCI found')
|
|
32
32
|
})
|
|
33
33
|
|
|
34
|
-
|
|
35
34
|
test('accept non-json condition for unknown type', () => {
|
|
36
35
|
const condition = {
|
|
37
36
|
eq: 'foo',
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { describe, expect, test } from 'bun:test'
|
|
2
2
|
import { compareArraysIgnoreOrder } from '../../../src'
|
|
3
3
|
|
|
4
4
|
describe('deep compare', () => {
|
|
@@ -38,7 +38,6 @@ describe('deep compare', () => {
|
|
|
38
38
|
expect(actual).toStrictEqual([{
|
|
39
39
|
path: [],
|
|
40
40
|
message: 'Array item: {"foo":"bar"} not found in [{"lorem":"ipsum"},{"lorem":"ipsum"}]',
|
|
41
|
-
}]
|
|
42
|
-
)
|
|
41
|
+
}])
|
|
43
42
|
})
|
|
44
43
|
})
|
|
@@ -18,7 +18,6 @@ test('lax schema converter basic', () => {
|
|
|
18
18
|
expect(converter.convert()).toMatchSnapshot()
|
|
19
19
|
})
|
|
20
20
|
|
|
21
|
-
|
|
22
21
|
test('lax schema converter one-has-many', () => {
|
|
23
22
|
const converter = new LaxSchemaConverter(
|
|
24
23
|
{
|
|
@@ -57,7 +56,6 @@ test('lax schema converter one-has-many', () => {
|
|
|
57
56
|
expect(converter2.convert()).toStrictEqual(schema1)
|
|
58
57
|
})
|
|
59
58
|
|
|
60
|
-
|
|
61
59
|
test('lax schema converter many-has-many', () => {
|
|
62
60
|
const converter = new LaxSchemaConverter(
|
|
63
61
|
{
|
|
@@ -96,7 +94,6 @@ test('lax schema converter many-has-many', () => {
|
|
|
96
94
|
expect(converter2.convert()).toStrictEqual(schema1)
|
|
97
95
|
})
|
|
98
96
|
|
|
99
|
-
|
|
100
97
|
test('lax schema converter one-has-one', () => {
|
|
101
98
|
const converter = new LaxSchemaConverter(
|
|
102
99
|
{
|
|
@@ -134,4 +131,3 @@ test('lax schema converter one-has-one', () => {
|
|
|
134
131
|
)
|
|
135
132
|
expect(converter2.convert()).toStrictEqual(schema1)
|
|
136
133
|
})
|
|
137
|
-
|
|
@@ -6,18 +6,23 @@ const id1 = 'bff057b3-11f7-4bc7-abe3-1f2ef266824d'
|
|
|
6
6
|
const id2 = '1cdb828f-62f0-4ae5-9b2c-e53b3e7584ef'
|
|
7
7
|
test('read membership with entity variable', () => {
|
|
8
8
|
const reader = new MembershipResolver()
|
|
9
|
-
const result = reader.resolve(
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
9
|
+
const result = reader.resolve(
|
|
10
|
+
{
|
|
11
|
+
roles: {
|
|
12
|
+
editor: {
|
|
13
|
+
variables: {
|
|
14
|
+
localeID: { type: Acl.VariableType.entity, entityName: 'Locale' },
|
|
15
|
+
},
|
|
16
|
+
entities: {},
|
|
14
17
|
},
|
|
15
|
-
entities: {},
|
|
16
18
|
},
|
|
17
19
|
},
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
20
|
+
[
|
|
21
|
+
{ role: 'editor', variables: [{ name: 'localeID', values: [id1] }] },
|
|
22
|
+
],
|
|
23
|
+
MembershipResolver.UnknownIdentity,
|
|
24
|
+
false,
|
|
25
|
+
)
|
|
21
26
|
expect(result.errors).toStrictEqual([])
|
|
22
27
|
expect(result.memberships).toStrictEqual([
|
|
23
28
|
{ role: 'editor', variables: [{ name: 'localeID', condition: { in: [id1] } }] },
|
|
@@ -26,18 +31,23 @@ test('read membership with entity variable', () => {
|
|
|
26
31
|
|
|
27
32
|
test('read fails when variable is not provided', () => {
|
|
28
33
|
const reader = new MembershipResolver()
|
|
29
|
-
const result = reader.resolve(
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
+
const result = reader.resolve(
|
|
35
|
+
{
|
|
36
|
+
roles: {
|
|
37
|
+
editor: {
|
|
38
|
+
variables: {
|
|
39
|
+
localeID: { type: Acl.VariableType.entity, entityName: 'Locale' },
|
|
40
|
+
},
|
|
41
|
+
entities: {},
|
|
34
42
|
},
|
|
35
|
-
entities: {},
|
|
36
43
|
},
|
|
37
44
|
},
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
45
|
+
[
|
|
46
|
+
{ role: 'editor', variables: [] },
|
|
47
|
+
],
|
|
48
|
+
MembershipResolver.UnknownIdentity,
|
|
49
|
+
false,
|
|
50
|
+
)
|
|
41
51
|
expect(result.errors).toEqual([{
|
|
42
52
|
error: MembershipValidationErrorType.VARIABLE_EMPTY,
|
|
43
53
|
role: 'editor',
|
|
@@ -73,18 +83,23 @@ test('read membership with predefined variable', () => {
|
|
|
73
83
|
|
|
74
84
|
test('read membership with condition variable', () => {
|
|
75
85
|
const reader = new MembershipResolver()
|
|
76
|
-
const result = reader.resolve(
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
86
|
+
const result = reader.resolve(
|
|
87
|
+
{
|
|
88
|
+
roles: {
|
|
89
|
+
editor: {
|
|
90
|
+
variables: {
|
|
91
|
+
cond: { type: Acl.VariableType.condition },
|
|
92
|
+
},
|
|
93
|
+
entities: {},
|
|
81
94
|
},
|
|
82
|
-
entities: {},
|
|
83
95
|
},
|
|
84
96
|
},
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
97
|
+
[
|
|
98
|
+
{ role: 'editor', variables: [{ name: 'cond', values: [JSON.stringify({ eq: 'foo' })] }] },
|
|
99
|
+
],
|
|
100
|
+
MembershipResolver.UnknownIdentity,
|
|
101
|
+
false,
|
|
102
|
+
)
|
|
88
103
|
expect(result.errors).toStrictEqual([])
|
|
89
104
|
expect(result.memberships).toStrictEqual([
|
|
90
105
|
{ role: 'editor', variables: [{ name: 'cond', condition: { eq: 'foo' } }] },
|
|
@@ -104,7 +119,8 @@ test('fails when trying to override predefined variable with stored', () => {
|
|
|
104
119
|
},
|
|
105
120
|
}, [
|
|
106
121
|
{
|
|
107
|
-
role: 'editor',
|
|
122
|
+
role: 'editor',
|
|
123
|
+
variables: [
|
|
108
124
|
{ name: 'self', values: [id2] },
|
|
109
125
|
],
|
|
110
126
|
},
|
|
@@ -121,7 +137,6 @@ test('fails when trying to override predefined variable with stored', () => {
|
|
|
121
137
|
])
|
|
122
138
|
})
|
|
123
139
|
|
|
124
|
-
|
|
125
140
|
test('read overridden predefined variable with assume', () => {
|
|
126
141
|
const reader = new MembershipResolver()
|
|
127
142
|
const result = reader.resolve({
|
|
@@ -135,7 +150,8 @@ test('read overridden predefined variable with assume', () => {
|
|
|
135
150
|
},
|
|
136
151
|
}, [
|
|
137
152
|
{
|
|
138
|
-
role: 'editor',
|
|
153
|
+
role: 'editor',
|
|
154
|
+
variables: [
|
|
139
155
|
{ name: 'self', values: [id2] },
|
|
140
156
|
],
|
|
141
157
|
},
|
|
@@ -148,21 +164,25 @@ test('read overridden predefined variable with assume', () => {
|
|
|
148
164
|
])
|
|
149
165
|
})
|
|
150
166
|
|
|
151
|
-
|
|
152
167
|
test('fails on invalid condition', () => {
|
|
153
168
|
const reader = new MembershipResolver()
|
|
154
|
-
const result = reader.resolve(
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
169
|
+
const result = reader.resolve(
|
|
170
|
+
{
|
|
171
|
+
roles: {
|
|
172
|
+
editor: {
|
|
173
|
+
variables: {
|
|
174
|
+
cond: { type: Acl.VariableType.condition },
|
|
175
|
+
},
|
|
176
|
+
entities: {},
|
|
159
177
|
},
|
|
160
|
-
entities: {},
|
|
161
178
|
},
|
|
162
179
|
},
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
180
|
+
[
|
|
181
|
+
{ role: 'editor', variables: [{ name: 'cond', values: [JSON.stringify('abcd')] }] },
|
|
182
|
+
],
|
|
183
|
+
MembershipResolver.UnknownIdentity,
|
|
184
|
+
false,
|
|
185
|
+
)
|
|
166
186
|
|
|
167
187
|
expect(result.errors).toEqual([{
|
|
168
188
|
error: MembershipValidationErrorType.VARIABLE_INVALID,
|
|
@@ -178,8 +198,7 @@ test('fails on invalid condition', () => {
|
|
|
178
198
|
test('fails on undefined role', () => {
|
|
179
199
|
const reader = new MembershipResolver()
|
|
180
200
|
const result = reader.resolve({
|
|
181
|
-
roles: {
|
|
182
|
-
},
|
|
201
|
+
roles: {},
|
|
183
202
|
}, [
|
|
184
203
|
{ role: 'editor', variables: [{ name: 'cond', values: [JSON.stringify('abcd')] }] },
|
|
185
204
|
], {
|
|
@@ -197,16 +216,21 @@ test('fails on undefined role', () => {
|
|
|
197
216
|
|
|
198
217
|
test('fails on undefined variable', () => {
|
|
199
218
|
const reader = new MembershipResolver()
|
|
200
|
-
const result = reader.resolve(
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
219
|
+
const result = reader.resolve(
|
|
220
|
+
{
|
|
221
|
+
roles: {
|
|
222
|
+
editor: {
|
|
223
|
+
variables: {},
|
|
224
|
+
entities: {},
|
|
225
|
+
},
|
|
205
226
|
},
|
|
206
227
|
},
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
228
|
+
[
|
|
229
|
+
{ role: 'editor', variables: [{ name: 'cond', values: [JSON.stringify('abcd')] }] },
|
|
230
|
+
],
|
|
231
|
+
MembershipResolver.UnknownIdentity,
|
|
232
|
+
false,
|
|
233
|
+
)
|
|
210
234
|
|
|
211
235
|
expect(result.errors).toEqual([{
|
|
212
236
|
error: MembershipValidationErrorType.VARIABLE_NOT_FOUND,
|
|
@@ -219,21 +243,25 @@ test('fails on undefined variable', () => {
|
|
|
219
243
|
])
|
|
220
244
|
})
|
|
221
245
|
|
|
222
|
-
|
|
223
246
|
test('use fallback value', () => {
|
|
224
247
|
const reader = new MembershipResolver()
|
|
225
|
-
const result = reader.resolve(
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
248
|
+
const result = reader.resolve(
|
|
249
|
+
{
|
|
250
|
+
roles: {
|
|
251
|
+
editor: {
|
|
252
|
+
variables: {
|
|
253
|
+
localeID: { type: Acl.VariableType.condition, fallback: { always: true } },
|
|
254
|
+
},
|
|
255
|
+
entities: {},
|
|
230
256
|
},
|
|
231
|
-
entities: {},
|
|
232
257
|
},
|
|
233
258
|
},
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
259
|
+
[
|
|
260
|
+
{ role: 'editor', variables: [] },
|
|
261
|
+
],
|
|
262
|
+
MembershipResolver.UnknownIdentity,
|
|
263
|
+
false,
|
|
264
|
+
)
|
|
237
265
|
expect(result.errors).toStrictEqual([])
|
|
238
266
|
|
|
239
267
|
expect(result.memberships).toStrictEqual([
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { describe, expect, test } from 'bun:test'
|
|
2
2
|
import { modelSchema } from '../../../src/type-schema'
|
|
3
3
|
import { Model } from '@contember/schema'
|
|
4
4
|
|
|
@@ -17,9 +17,9 @@ describe('model schema', () => {
|
|
|
17
17
|
|
|
18
18
|
// Array of invalid PostgreSQL data type examples
|
|
19
19
|
const invalidDataTypes = [
|
|
20
|
-
'varchar(255',
|
|
21
|
-
'character(10))',
|
|
22
|
-
'numeric(,2)',
|
|
20
|
+
'varchar(255', // Missing closing parenthesis
|
|
21
|
+
'character(10))', // Extra closing parenthesis
|
|
22
|
+
'numeric(,2)', // Missing first parameter
|
|
23
23
|
'geometry(Point,4326))', // Extra closing parenthesis
|
|
24
24
|
'VARCHAR(255) COLLATE "de_DE" (extra text)', // Extra text outside the valid pattern
|
|
25
25
|
'VARCHAR(255) COLLATE "de_DE', // Missing closing quote
|