@contember/schema-utils 2.1.0-alpha.3 → 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 +15 -12
- package/src/type-schema/actions.ts +1 -2
- package/src/type-schema/condition.ts +25 -20
- package/src/type-schema/model.ts +12 -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 +10 -9
- 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 +136 -49
- 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 -87
- package/dist/development/src/type-schema/actions.cjs.map +0 -1
- package/dist/development/src/type-schema/actions.js +0 -70
- package/dist/development/src/type-schema/actions.js.map +0 -1
- package/dist/development/src/type-schema/condition.cjs +0 -89
- package/dist/development/src/type-schema/condition.cjs.map +0 -1
- package/dist/development/src/type-schema/condition.js +0 -72
- package/dist/development/src/type-schema/condition.js.map +0 -1
- package/dist/development/src/type-schema/model.cjs +0 -217
- package/dist/development/src/type-schema/model.cjs.map +0 -1
- package/dist/development/src/type-schema/model.js +0 -201
- 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 -126
- package/dist/development/src/validation/MembershipResolver.cjs.map +0 -1
- package/dist/development/src/validation/MembershipResolver.js +0 -126
- 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 -87
- package/dist/production/src/type-schema/actions.cjs.map +0 -1
- package/dist/production/src/type-schema/actions.js +0 -70
- package/dist/production/src/type-schema/actions.js.map +0 -1
- package/dist/production/src/type-schema/condition.cjs +0 -89
- package/dist/production/src/type-schema/condition.cjs.map +0 -1
- package/dist/production/src/type-schema/condition.js +0 -72
- package/dist/production/src/type-schema/condition.js.map +0 -1
- package/dist/production/src/type-schema/model.cjs +0 -217
- package/dist/production/src/type-schema/model.cjs.map +0 -1
- package/dist/production/src/type-schema/model.js +0 -201
- 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 -126
- package/dist/production/src/validation/MembershipResolver.cjs.map +0 -1
- package/dist/production/src/validation/MembershipResolver.js +0 -126
- 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 -31
- 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
|
@@ -6,7 +6,6 @@ export class Literal {
|
|
|
6
6
|
export type FormatterPath = ({ type: 'array' } | { type: 'object'; key: string })[]
|
|
7
7
|
export type IndentDecider = (value: any, path: FormatterPath) => boolean
|
|
8
8
|
|
|
9
|
-
|
|
10
9
|
export const printJsValue = (value: any, shouldIndentCb: IndentDecider = () => false, path: FormatterPath = []): string => {
|
|
11
10
|
if (value instanceof Literal) {
|
|
12
11
|
return value.value
|
|
@@ -18,7 +17,7 @@ export const printJsValue = (value: any, shouldIndentCb: IndentDecider = () => f
|
|
|
18
17
|
return value.toString(10) + 'n'
|
|
19
18
|
}
|
|
20
19
|
if (typeof value === 'string') {
|
|
21
|
-
return `'${value.replaceAll(/'/g, '
|
|
20
|
+
return `'${value.replaceAll(/'/g, "\\'")}'`
|
|
22
21
|
}
|
|
23
22
|
const shouldIndent = shouldIndentCb(value, path)
|
|
24
23
|
if (!shouldIndent) {
|
|
@@ -29,32 +28,31 @@ export const printJsValue = (value: any, shouldIndentCb: IndentDecider = () => f
|
|
|
29
28
|
const nl = '\n'
|
|
30
29
|
|
|
31
30
|
if (Array.isArray(value)) {
|
|
32
|
-
return
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
31
|
+
return ''
|
|
32
|
+
+ '['
|
|
33
|
+
+ value.map((it, index, arr) =>
|
|
34
|
+
(shouldIndent ? nl + indent(1) : '')
|
|
35
|
+
+ printJsValue(it, shouldIndentCb, [...path, { type: 'array' }])
|
|
36
|
+
+ (shouldIndent ? ',' : ((index + 1) < arr.length ? ', ' : ''))
|
|
37
|
+
).join('')
|
|
38
|
+
+ (shouldIndent ? nl + indent(0) : '')
|
|
39
|
+
+ ']'
|
|
41
40
|
}
|
|
42
41
|
|
|
43
42
|
return ''
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
43
|
+
+ '{'
|
|
44
|
+
+ (shouldIndent ? '' : ' ')
|
|
45
|
+
+ Object.entries(value).map(([key, value], index, arr) => {
|
|
46
|
+
const formattedKey = isSimpleIdentifier(key) ? key : `[${printJsValue(key)}]`
|
|
47
|
+
return ''
|
|
48
|
+
+ (shouldIndent ? nl + indent(1) : '')
|
|
49
|
+
+ formattedKey
|
|
50
|
+
+ ': '
|
|
51
|
+
+ printJsValue(value, shouldIndentCb, [...path, { type: 'object', key }])
|
|
52
|
+
+ (shouldIndent ? ',' : ((index + 1) < arr.length ? ', ' : ''))
|
|
53
|
+
}).join('')
|
|
54
|
+
+ (shouldIndent ? nl + indent(0) : ' ')
|
|
55
|
+
+ '}'
|
|
58
56
|
}
|
|
59
57
|
|
|
60
58
|
const isSimpleIdentifier = (identifier: string): boolean => {
|
|
@@ -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
|
|
|
@@ -14,6 +13,7 @@ export class MembershipResolver {
|
|
|
14
13
|
identityId: string
|
|
15
14
|
personId?: string
|
|
16
15
|
},
|
|
16
|
+
isAssumed: boolean,
|
|
17
17
|
): MembershipReadResult {
|
|
18
18
|
const errors: MembershipValidationError[] = []
|
|
19
19
|
const parsed: ParsedMembership[] = []
|
|
@@ -25,7 +25,7 @@ export class MembershipResolver {
|
|
|
25
25
|
}
|
|
26
26
|
const roleVariables = getRoleVariables(membership.role, acl)
|
|
27
27
|
for (const variable of membership.variables) {
|
|
28
|
-
if (!roleVariables[variable.name] || roleVariables[variable.name].type === Acl.VariableType.predefined) {
|
|
28
|
+
if (!roleVariables[variable.name] || (!isAssumed && roleVariables[variable.name].type === Acl.VariableType.predefined)) {
|
|
29
29
|
errors.push(
|
|
30
30
|
new MembershipValidationError(
|
|
31
31
|
membership.role,
|
|
@@ -35,7 +35,7 @@ export class MembershipResolver {
|
|
|
35
35
|
)
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
|
-
const [membershipErrors, parsedVariables] = this.readMembershipVariables(roleVariables, membership, identity)
|
|
38
|
+
const [membershipErrors, parsedVariables] = this.readMembershipVariables(roleVariables, membership, identity, isAssumed)
|
|
39
39
|
errors.push(...membershipErrors)
|
|
40
40
|
parsed.push({
|
|
41
41
|
role: membership.role,
|
|
@@ -48,19 +48,23 @@ export class MembershipResolver {
|
|
|
48
48
|
private readMembershipVariables(roleVariables: Acl.Variables, membership: Acl.Membership, identity: {
|
|
49
49
|
identityId: string
|
|
50
50
|
personId?: string
|
|
51
|
-
}): [MembershipValidationError[], ParsedMembershipVariable[]] {
|
|
51
|
+
}, isAssumed: boolean): [MembershipValidationError[], ParsedMembershipVariable[]] {
|
|
52
52
|
const errors: MembershipValidationError[] = []
|
|
53
53
|
const parsedVariables: ParsedMembershipVariable[] = []
|
|
54
54
|
for (const [name, variable] of Object.entries(roleVariables)) {
|
|
55
|
+
const inputVariable = membership.variables.find(it => it.name === name)
|
|
55
56
|
if (variable.type === Acl.VariableType.predefined) {
|
|
56
57
|
switch (variable.value) {
|
|
57
58
|
case 'identityID':
|
|
58
|
-
parsedVariables.push({
|
|
59
|
+
parsedVariables.push({
|
|
60
|
+
name,
|
|
61
|
+
condition: { in: isAssumed && inputVariable ? inputVariable.values : [identity.identityId] },
|
|
62
|
+
})
|
|
59
63
|
break
|
|
60
64
|
case 'personID':
|
|
61
65
|
parsedVariables.push({
|
|
62
66
|
name,
|
|
63
|
-
condition: { in: identity.personId ? [identity.personId] : [] },
|
|
67
|
+
condition: { in: isAssumed && inputVariable ? inputVariable.values : identity.personId ? [identity.personId] : [] },
|
|
64
68
|
})
|
|
65
69
|
break
|
|
66
70
|
default:
|
|
@@ -71,7 +75,6 @@ export class MembershipResolver {
|
|
|
71
75
|
continue
|
|
72
76
|
}
|
|
73
77
|
|
|
74
|
-
const inputVariable = membership.variables.find(it => it.name === name)
|
|
75
78
|
if (!inputVariable) {
|
|
76
79
|
if (variable.fallback) {
|
|
77
80
|
parsedVariables.push({ name, condition: variable.fallback })
|
|
@@ -84,7 +87,6 @@ export class MembershipResolver {
|
|
|
84
87
|
|
|
85
88
|
if (variable.type === Acl.VariableType.entity) {
|
|
86
89
|
parsedVariables.push({ name, condition: { in: inputVariable.values } }) // todo: cast to int where primary is int
|
|
87
|
-
|
|
88
90
|
} else if (variable.type === Acl.VariableType.condition) {
|
|
89
91
|
try {
|
|
90
92
|
const conditions = inputVariable.values.map(it => conditionSchema()(JSON.parse(it)))
|
|
@@ -128,7 +130,6 @@ export enum MembershipValidationErrorType {
|
|
|
128
130
|
VARIABLE_INVALID = 'variableInvalid',
|
|
129
131
|
}
|
|
130
132
|
|
|
131
|
-
|
|
132
133
|
export interface ParsedMembershipVariable {
|
|
133
134
|
readonly name: string
|
|
134
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
|
-
|