@contember/schema-utils 2.1.0-alpha.30 → 2.1.0-alpha.36
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
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@contember/schema-utils",
|
|
3
|
-
"version": "2.1.0-alpha.
|
|
3
|
+
"version": "2.1.0-alpha.36",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"main": "./dist/production/index.js",
|
|
6
6
|
"typings": "./dist/types/index.d.ts",
|
|
@@ -23,12 +23,17 @@
|
|
|
23
23
|
}
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@contember/schema": "
|
|
27
|
-
"@contember/typesafe": "
|
|
26
|
+
"@contember/schema": "workspace:*",
|
|
27
|
+
"@contember/typesafe": "workspace:*"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
|
-
"@contember/schema-definition": "
|
|
31
|
-
"@types/node": "
|
|
30
|
+
"@contember/schema-definition": "workspace:*",
|
|
31
|
+
"@types/node": "catalog:"
|
|
32
32
|
},
|
|
33
|
-
"type": "module"
|
|
33
|
+
"type": "module",
|
|
34
|
+
"repository": {
|
|
35
|
+
"type": "git",
|
|
36
|
+
"url": "git+https://github.com/contember/contember.git",
|
|
37
|
+
"directory": "packages/schema-utils"
|
|
38
|
+
}
|
|
34
39
|
}
|
|
@@ -28,9 +28,7 @@ class PredicateDefinitionProcessor {
|
|
|
28
28
|
key,
|
|
29
29
|
])
|
|
30
30
|
} else if (key === 'and' || key === 'or') {
|
|
31
|
-
result[key] = (value as Acl.PredicateDefinition[]).map(it =>
|
|
32
|
-
this.processInternal(entity, it, handler, [...path, key]),
|
|
33
|
-
)
|
|
31
|
+
result[key] = (value as Acl.PredicateDefinition[]).map(it => this.processInternal(entity, it, handler, [...path, key]))
|
|
34
32
|
} else if (!entity.fields[key] && handler.handleUndefinedField) {
|
|
35
33
|
const undefinedResult = handler.handleUndefinedField({ entity, name: key, value, path })
|
|
36
34
|
if (undefinedResult !== undefined) {
|
|
@@ -57,10 +55,10 @@ class PredicateDefinitionProcessor {
|
|
|
57
55
|
path,
|
|
58
56
|
})
|
|
59
57
|
if (
|
|
60
|
-
typeof processedValue === 'object'
|
|
61
|
-
processedValue !== null
|
|
62
|
-
'constructor' in processedValue
|
|
63
|
-
processedValue.constructor.name === 'Object'
|
|
58
|
+
typeof processedValue === 'object'
|
|
59
|
+
&& processedValue !== null
|
|
60
|
+
&& 'constructor' in processedValue
|
|
61
|
+
&& processedValue.constructor.name === 'Object'
|
|
64
62
|
) {
|
|
65
63
|
return this.processInternal(
|
|
66
64
|
targetEntity,
|
package/src/dataUtils.ts
CHANGED
|
@@ -3,21 +3,21 @@ import { IndentDecider, Literal, printJsValue } from '../utils/printJsValue'
|
|
|
3
3
|
import { Acl, Model, Schema } from '@contember/schema'
|
|
4
4
|
import { DefinitionNamingConventions } from './DefinitionNamingConventions'
|
|
5
5
|
|
|
6
|
-
|
|
7
6
|
const indentFirstLevel: IndentDecider = (val, path) => path.length === 0
|
|
8
7
|
|
|
9
8
|
export class AclDefinitionCodeGenerator {
|
|
10
|
-
|
|
11
9
|
constructor(
|
|
12
10
|
private readonly definitionNamingConventions = new DefinitionNamingConventions(),
|
|
13
11
|
) {
|
|
14
12
|
}
|
|
15
13
|
|
|
16
14
|
public generateRoles({ acl }: { acl: Acl.Schema }): string {
|
|
17
|
-
return Object.entries(acl.roles).map(([name, values]) =>
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
15
|
+
return Object.entries(acl.roles).map(([name, values]) =>
|
|
16
|
+
this.generateRole({
|
|
17
|
+
name,
|
|
18
|
+
values,
|
|
19
|
+
})
|
|
20
|
+
).join('')
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
private generateRole({ name, values }: { name: string; values: Acl.RolePermissions }): string {
|
|
@@ -52,7 +52,7 @@ export class AclDefinitionCodeGenerator {
|
|
|
52
52
|
return variablesOutput.join('')
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
-
public generateEntityAcl({ entity, schema }: { entity: Model.Entity; schema: Schema
|
|
55
|
+
public generateEntityAcl({ entity, schema }: { entity: Model.Entity; schema: Schema }): string {
|
|
56
56
|
const aclOutput: string[] = []
|
|
57
57
|
const numberOfEntityFieldsWithoutId = Object.keys(entity.fields).length - 1
|
|
58
58
|
for (const [roleName, roleDefinition] of Object.entries(schema.acl.roles)) {
|
|
@@ -110,7 +110,6 @@ export class AclDefinitionCodeGenerator {
|
|
|
110
110
|
for (const op of ['read', 'create', 'update'] as const) {
|
|
111
111
|
const fields = Object.entries(operations[op] ?? {}).filter(([, it]) => it === predicate).map(([it]) => it)
|
|
112
112
|
if (fields.length === 0) {
|
|
113
|
-
continue
|
|
114
113
|
} else if (fields.length === numberOfEntityFieldsWithoutId) {
|
|
115
114
|
result[op] = true
|
|
116
115
|
} else {
|
|
@@ -1,16 +1,9 @@
|
|
|
1
1
|
import { Model, Schema, Writable } from '@contember/schema'
|
|
2
|
-
import {
|
|
3
|
-
acceptFieldVisitor,
|
|
4
|
-
DefaultNamingConventions,
|
|
5
|
-
isInverseRelation,
|
|
6
|
-
NamingConventions,
|
|
7
|
-
resolveDefaultColumnType,
|
|
8
|
-
} from '../model'
|
|
2
|
+
import { acceptFieldVisitor, DefaultNamingConventions, isInverseRelation, NamingConventions, resolveDefaultColumnType } from '../model'
|
|
9
3
|
import { printJsValue } from '../utils/printJsValue'
|
|
10
4
|
import { DefinitionNamingConventions } from './DefinitionNamingConventions'
|
|
11
5
|
import { AclDefinitionCodeGenerator } from './AclDefinitionCodeGenerator'
|
|
12
6
|
|
|
13
|
-
|
|
14
7
|
export class DefinitionCodeGenerator {
|
|
15
8
|
constructor(
|
|
16
9
|
private readonly schemaNamingConventions: NamingConventions = new DefaultNamingConventions(),
|
|
@@ -57,7 +50,6 @@ ${Object.values(entity.fields).map(field => this.generateField({ field, entity,
|
|
|
57
50
|
return `@c.Index(${fieldsList})`
|
|
58
51
|
}
|
|
59
52
|
|
|
60
|
-
|
|
61
53
|
private generateView({ entity }: { entity: Model.Entity }): string | undefined {
|
|
62
54
|
if (!entity.view) {
|
|
63
55
|
return undefined
|
|
@@ -85,7 +77,6 @@ ${Object.values(entity.fields).map(field => this.generateField({ field, entity,
|
|
|
85
77
|
throw new Error(`Value ${providedValue} is not defined in enum ${enumName}`)
|
|
86
78
|
}
|
|
87
79
|
return `${enumName}.${enumValueKey}`
|
|
88
|
-
|
|
89
80
|
}
|
|
90
81
|
const formatOrderBy = (orderBy?: readonly Model.OrderBy[]) => {
|
|
91
82
|
return orderBy?.map(it => {
|
|
@@ -157,13 +148,18 @@ ${Object.values(entity.fields).map(field => this.generateField({ field, entity,
|
|
|
157
148
|
if (!relation.joiningTable.eventLog.enabled) {
|
|
158
149
|
joiningTable.eventLog = { enabled: false }
|
|
159
150
|
}
|
|
160
|
-
if (
|
|
151
|
+
if (
|
|
152
|
+
columnNames[0] !== relation.joiningTable.joiningColumn.columnName || relation.joiningTable.joiningColumn.onDelete !== Model.OnDelete.cascade
|
|
153
|
+
) {
|
|
161
154
|
joiningTable.joiningColumn = {
|
|
162
155
|
columnName: relation.joiningTable.joiningColumn.columnName,
|
|
163
156
|
onDelete: relation.joiningTable.joiningColumn.onDelete,
|
|
164
157
|
}
|
|
165
158
|
}
|
|
166
|
-
if (
|
|
159
|
+
if (
|
|
160
|
+
columnNames[1] !== relation.joiningTable.inverseJoiningColumn.columnName
|
|
161
|
+
|| relation.joiningTable.inverseJoiningColumn.onDelete !== Model.OnDelete.cascade
|
|
162
|
+
) {
|
|
167
163
|
joiningTable.inverseJoiningColumn = {
|
|
168
164
|
columnName: relation.joiningTable.inverseJoiningColumn.columnName,
|
|
169
165
|
onDelete: relation.joiningTable.inverseJoiningColumn.onDelete,
|
|
@@ -215,7 +211,6 @@ ${Object.values(entity.fields).map(field => this.generateField({ field, entity,
|
|
|
215
211
|
parts.push(`typeAlias(${printJsValue(column.typeAlias)})`)
|
|
216
212
|
}
|
|
217
213
|
|
|
218
|
-
|
|
219
214
|
// todo: sequence
|
|
220
215
|
// todo: maybe single column unique()
|
|
221
216
|
|
|
@@ -227,7 +222,6 @@ ${Object.values(entity.fields).map(field => this.generateField({ field, entity,
|
|
|
227
222
|
}
|
|
228
223
|
}
|
|
229
224
|
|
|
230
|
-
|
|
231
225
|
const ColumnToMethodMapping: {
|
|
232
226
|
[K in Exclude<Model.ColumnType, Model.ColumnType.Enum>]: string
|
|
233
227
|
} = {
|
|
@@ -1,5 +1,54 @@
|
|
|
1
1
|
export class DefinitionNamingConventions {
|
|
2
|
-
private static reservedWords = new Set([
|
|
2
|
+
private static reservedWords = new Set([
|
|
3
|
+
'do',
|
|
4
|
+
'if',
|
|
5
|
+
'in',
|
|
6
|
+
'for',
|
|
7
|
+
'let',
|
|
8
|
+
'new',
|
|
9
|
+
'try',
|
|
10
|
+
'var',
|
|
11
|
+
'case',
|
|
12
|
+
'else',
|
|
13
|
+
'enum',
|
|
14
|
+
'eval',
|
|
15
|
+
'null',
|
|
16
|
+
'this',
|
|
17
|
+
'true',
|
|
18
|
+
'void',
|
|
19
|
+
'with',
|
|
20
|
+
'await',
|
|
21
|
+
'break',
|
|
22
|
+
'catch',
|
|
23
|
+
'class',
|
|
24
|
+
'const',
|
|
25
|
+
'false',
|
|
26
|
+
'super',
|
|
27
|
+
'throw',
|
|
28
|
+
'while',
|
|
29
|
+
'yield',
|
|
30
|
+
'delete',
|
|
31
|
+
'export',
|
|
32
|
+
'import',
|
|
33
|
+
'public',
|
|
34
|
+
'return',
|
|
35
|
+
'static',
|
|
36
|
+
'switch',
|
|
37
|
+
'typeof',
|
|
38
|
+
'default',
|
|
39
|
+
'extends',
|
|
40
|
+
'finally',
|
|
41
|
+
'package',
|
|
42
|
+
'private',
|
|
43
|
+
'continue',
|
|
44
|
+
'debugger',
|
|
45
|
+
'function',
|
|
46
|
+
'arguments',
|
|
47
|
+
'interface',
|
|
48
|
+
'protected',
|
|
49
|
+
'implements',
|
|
50
|
+
'instanceof',
|
|
51
|
+
])
|
|
3
52
|
|
|
4
53
|
public formatIdentifier(id: string): string {
|
|
5
54
|
// todo: validate
|
package/src/index.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Schema } from '@contember/schema'
|
|
2
2
|
import { emptyModelSchema } from './model'
|
|
3
3
|
import * as Typesafe from '@contember/typesafe'
|
|
4
|
-
import { aclSchema, modelSchema,
|
|
4
|
+
import { aclSchema, modelSchema, settingsSchema, validationSchema } from './type-schema'
|
|
5
5
|
import { actionsSchema } from './type-schema/actions'
|
|
6
6
|
|
|
7
7
|
export * from './definition-generator'
|
|
@@ -13,7 +13,7 @@ export * from './validation'
|
|
|
13
13
|
export * from './schemaNormalizer'
|
|
14
14
|
export * from './schemaFilter'
|
|
15
15
|
export * from './schemaChecksum'
|
|
16
|
-
export {
|
|
16
|
+
export { compareArraysIgnoreOrder, deepCompare } from './utils'
|
|
17
17
|
|
|
18
18
|
export const emptySchema: Schema = {
|
|
19
19
|
model: emptyModelSchema,
|
|
@@ -26,7 +26,6 @@ export class LaxSchemaConverter {
|
|
|
26
26
|
const builder = new LaxSchemaBuilder(this.schema, this.conventions)
|
|
27
27
|
return builder.build()
|
|
28
28
|
}
|
|
29
|
-
|
|
30
29
|
}
|
|
31
30
|
|
|
32
31
|
class LaxSchemaBuilder {
|
|
@@ -44,10 +43,8 @@ class LaxSchemaBuilder {
|
|
|
44
43
|
for (const [fieldName, fieldDefinition] of Object.entries(entityDefinition.fields)) {
|
|
45
44
|
if (isColumnDefinition(fieldDefinition)) {
|
|
46
45
|
this.processColumn(entityName, fieldName, fieldDefinition)
|
|
47
|
-
|
|
48
46
|
} else if (fieldDefinition.type === 'enum') {
|
|
49
47
|
this.processEnum(entityName, fieldName, fieldDefinition)
|
|
50
|
-
|
|
51
48
|
} else {
|
|
52
49
|
this.processRelation(entityName, fieldName, fieldDefinition)
|
|
53
50
|
}
|
|
@@ -188,7 +185,6 @@ class LaxSchemaBuilder {
|
|
|
188
185
|
;(entity.fields as Writable<Model.Entity['fields']>)[field.name] = field
|
|
189
186
|
}
|
|
190
187
|
|
|
191
|
-
|
|
192
188
|
private getEntity(entityName: string): Model.Entity {
|
|
193
189
|
return this.entities[entityName] ??= {
|
|
194
190
|
name: entityName,
|
package/src/lax/schema.ts
CHANGED
|
@@ -46,7 +46,10 @@ const LaxSchemaField = Typesafe.discriminatedUnion('type', {
|
|
|
46
46
|
export type LaxSchemaField = ReturnType<typeof LaxSchemaField>
|
|
47
47
|
export type LaxSchemaEnum = Extract<LaxSchemaField, { type: 'enum' }>
|
|
48
48
|
export type LaxSchemaColumn = Extract<LaxSchemaField, { type: 'int' | 'float' | 'boolean' | 'string' | 'json' | 'datetime' | 'date' | 'uuid' }>
|
|
49
|
-
export type LaxSchemaRelation = Extract<
|
|
49
|
+
export type LaxSchemaRelation = Extract<
|
|
50
|
+
LaxSchemaField,
|
|
51
|
+
{ type: 'oneHasOne' | 'oneHasOneInverse' | 'manyHasMany' | 'manyHasManyInverse' | 'oneHasMany' | 'manyHasOne' }
|
|
52
|
+
>
|
|
50
53
|
|
|
51
54
|
const LaxSchemaEntity = Typesafe.object({
|
|
52
55
|
fields: Typesafe.record(Typesafe.string, LaxSchemaField),
|
package/src/model/modelUtils.ts
CHANGED
|
@@ -14,8 +14,7 @@ export class ModelError extends Error {
|
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
const createEntityNotFoundError = (entityName: string) =>
|
|
18
|
-
new ModelError(ModelErrorCode.ENTITY_NOT_FOUND, `Entity ${entityName} not found`)
|
|
17
|
+
const createEntityNotFoundError = (entityName: string) => new ModelError(ModelErrorCode.ENTITY_NOT_FOUND, `Entity ${entityName} not found`)
|
|
19
18
|
|
|
20
19
|
const createFieldNotFoundError = (entityName: string, fieldName: string) =>
|
|
21
20
|
new ModelError(ModelErrorCode.FIELD_NOT_FOUND, `Field ${fieldName} of entity ${entityName} not found`)
|
|
@@ -184,8 +183,7 @@ export const acceptRelationTypeVisitor = <T>(
|
|
|
184
183
|
relation: relationObj,
|
|
185
184
|
targetEntity: targetEntity,
|
|
186
185
|
targetRelation: targetRelation as Model.ManyHasManyOwningRelation,
|
|
187
|
-
}
|
|
188
|
-
)
|
|
186
|
+
})
|
|
189
187
|
case Model.RelationType.OneHasOne:
|
|
190
188
|
return visitor.visitOneHasOneInverse({
|
|
191
189
|
type: 'oneHasOneInverse',
|
package/src/schemaChecksum.ts
CHANGED
package/src/schemaFilter.ts
CHANGED
package/src/type-schema/acl.ts
CHANGED
|
@@ -2,21 +2,24 @@ import { Acl, Model } from '@contember/schema'
|
|
|
2
2
|
import * as Typesafe from '@contember/typesafe'
|
|
3
3
|
import { conditionSchema } from './condition'
|
|
4
4
|
|
|
5
|
-
const membershipMatchRuleSchema = Typesafe.union(
|
|
6
|
-
Typesafe.
|
|
7
|
-
Typesafe.
|
|
8
|
-
Typesafe.
|
|
9
|
-
Typesafe.
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
Typesafe.
|
|
13
|
-
Typesafe.
|
|
14
|
-
Typesafe.
|
|
5
|
+
const membershipMatchRuleSchema = Typesafe.union(
|
|
6
|
+
Typesafe.boolean,
|
|
7
|
+
Typesafe.record(
|
|
8
|
+
Typesafe.string,
|
|
9
|
+
Typesafe.union(
|
|
10
|
+
Typesafe.literal(true),
|
|
11
|
+
Typesafe.partial({
|
|
12
|
+
variables: Typesafe.union(
|
|
13
|
+
Typesafe.literal(true),
|
|
14
|
+
Typesafe.record(
|
|
15
|
+
Typesafe.string,
|
|
16
|
+
Typesafe.union(Typesafe.literal(true), Typesafe.string),
|
|
17
|
+
),
|
|
15
18
|
),
|
|
16
|
-
),
|
|
17
|
-
|
|
19
|
+
}),
|
|
20
|
+
),
|
|
18
21
|
),
|
|
19
|
-
)
|
|
22
|
+
)
|
|
20
23
|
|
|
21
24
|
const tenantPermissionsSchema = Typesafe.partial({
|
|
22
25
|
invite: Typesafe.union(Typesafe.boolean, membershipMatchRuleSchema),
|
|
@@ -51,7 +51,6 @@ const watchTriggerSchema = Typesafe.intersection(
|
|
|
51
51
|
|
|
52
52
|
const watchTriggerSchemaCheck: Typesafe.Equals<Actions.WatchTrigger, ReturnType<typeof watchTriggerSchema>> = true
|
|
53
53
|
|
|
54
|
-
|
|
55
54
|
const basicTriggerSchema = Typesafe.intersection(
|
|
56
55
|
Typesafe.object({
|
|
57
56
|
type: Typesafe.literal('basic'),
|
|
@@ -70,7 +69,6 @@ const basicTriggerSchema = Typesafe.intersection(
|
|
|
70
69
|
|
|
71
70
|
const basicTriggerSchemaCheck: Typesafe.Equals<Actions.BasicTrigger, ReturnType<typeof basicTriggerSchema>> = true
|
|
72
71
|
|
|
73
|
-
|
|
74
72
|
const anyTriggerSchema = Typesafe.union(
|
|
75
73
|
watchTriggerSchema,
|
|
76
74
|
basicTriggerSchema,
|
|
@@ -25,27 +25,31 @@ const conditionSchemaInner = <T extends Json>(metadata: ResolvedColumnMetadata<T
|
|
|
25
25
|
isNull: Typesafe.boolean,
|
|
26
26
|
never: Typesafe.true_,
|
|
27
27
|
always: Typesafe.true_,
|
|
28
|
-
...(metadata.isJson !== true
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
28
|
+
...(metadata.isJson !== true
|
|
29
|
+
? {
|
|
30
|
+
eq: inner,
|
|
31
|
+
notEq: inner,
|
|
32
|
+
in: Typesafe.array(inner),
|
|
33
|
+
notIn: Typesafe.array(inner),
|
|
34
|
+
lt: inner,
|
|
35
|
+
lte: inner,
|
|
36
|
+
gt: inner,
|
|
37
|
+
gte: inner,
|
|
38
|
+
}
|
|
39
|
+
: {
|
|
40
|
+
// For JSON columns, allow includes operator
|
|
41
|
+
includes: inner,
|
|
42
|
+
}),
|
|
43
|
+
...(metadata.isString !== false
|
|
44
|
+
? {
|
|
45
|
+
contains: Typesafe.string,
|
|
46
|
+
startsWith: Typesafe.string,
|
|
47
|
+
endsWith: Typesafe.string,
|
|
48
|
+
containsCI: Typesafe.string,
|
|
49
|
+
startsWithCI: Typesafe.string,
|
|
50
|
+
endsWithCI: Typesafe.string,
|
|
51
|
+
}
|
|
52
|
+
: {}),
|
|
49
53
|
}))
|
|
50
54
|
return objectSchema(input, path) as Input.Condition<T>
|
|
51
55
|
}
|
|
@@ -57,11 +61,9 @@ const resolveColumnMetadata = (type: Model.ColumnType): ResolvedColumnMetadata<a
|
|
|
57
61
|
type: resolvedType,
|
|
58
62
|
isJson: type === Model.ColumnType.Json,
|
|
59
63
|
isString: type === Model.ColumnType.String,
|
|
60
|
-
|
|
61
64
|
}
|
|
62
65
|
}
|
|
63
66
|
|
|
64
|
-
|
|
65
67
|
const resolveColumnTypeSchema = (type: Model.ColumnType) => {
|
|
66
68
|
switch (type) {
|
|
67
69
|
case Model.ColumnType.Bool:
|
package/src/type-schema/model.ts
CHANGED
|
@@ -52,7 +52,6 @@ const oneHasOneInverseRelationSchema = Typesafe.object({
|
|
|
52
52
|
})
|
|
53
53
|
const oneHasOneInverseRelationSchemaCheck: Typesafe.Equals<Model.OneHasOneInverseRelation, ReturnType<typeof oneHasOneInverseRelationSchema>> = true
|
|
54
54
|
|
|
55
|
-
|
|
56
55
|
const oneHasOneOwningRelationSchema = Typesafe.intersection(
|
|
57
56
|
Typesafe.object({
|
|
58
57
|
type: Typesafe.literal(Model.RelationType.OneHasOne),
|
|
@@ -69,9 +68,12 @@ const oneHasOneOwningRelationSchema = Typesafe.intersection(
|
|
|
69
68
|
|
|
70
69
|
const oneHasOneOwningRelationSchemaCheck: Typesafe.Equals<Model.OneHasOneOwningRelation, ReturnType<typeof oneHasOneOwningRelationSchema>> = true
|
|
71
70
|
|
|
72
|
-
const eventLogSchema = Typesafe.coalesce(
|
|
73
|
-
|
|
74
|
-
|
|
71
|
+
const eventLogSchema = Typesafe.coalesce(
|
|
72
|
+
Typesafe.object({
|
|
73
|
+
enabled: Typesafe.boolean,
|
|
74
|
+
}),
|
|
75
|
+
{ enabled: true },
|
|
76
|
+
) as Typesafe.Type<{ readonly enabled: boolean }>
|
|
75
77
|
|
|
76
78
|
const manyHasManyOwningRelationSchema = Typesafe.intersection(
|
|
77
79
|
Typesafe.object({
|
|
@@ -90,7 +92,8 @@ const manyHasManyOwningRelationSchema = Typesafe.intersection(
|
|
|
90
92
|
orderBy: orderBySchema,
|
|
91
93
|
}),
|
|
92
94
|
)
|
|
93
|
-
const manyHasManyOwningRelationSchemaCheck: Typesafe.Equals<Model.ManyHasManyOwningRelation, ReturnType<typeof manyHasManyOwningRelationSchema>> =
|
|
95
|
+
const manyHasManyOwningRelationSchemaCheck: Typesafe.Equals<Model.ManyHasManyOwningRelation, ReturnType<typeof manyHasManyOwningRelationSchema>> =
|
|
96
|
+
true
|
|
94
97
|
|
|
95
98
|
const manyHasManyInverseRelationSchema = Typesafe.intersection(
|
|
96
99
|
Typesafe.object({
|
|
@@ -103,7 +106,8 @@ const manyHasManyInverseRelationSchema = Typesafe.intersection(
|
|
|
103
106
|
orderBy: orderBySchema,
|
|
104
107
|
}),
|
|
105
108
|
)
|
|
106
|
-
const manyHasManyInverseRelationSchemaCheck: Typesafe.Equals<Model.ManyHasManyInverseRelation, ReturnType<typeof manyHasManyInverseRelationSchema>> =
|
|
109
|
+
const manyHasManyInverseRelationSchemaCheck: Typesafe.Equals<Model.ManyHasManyInverseRelation, ReturnType<typeof manyHasManyInverseRelationSchema>> =
|
|
110
|
+
true
|
|
107
111
|
|
|
108
112
|
const intersectionSchema = Typesafe.intersection(
|
|
109
113
|
Typesafe.object({
|
|
@@ -162,7 +166,6 @@ const viewSchemaInner = Typesafe.intersection(
|
|
|
162
166
|
const viewSchemaCheck: Typesafe.Equals<Model.View, ReturnType<typeof viewSchemaInner>> = true
|
|
163
167
|
const viewSchema: Typesafe.Type<Model.View> = viewSchemaInner
|
|
164
168
|
|
|
165
|
-
|
|
166
169
|
const indexSchemaBase = Typesafe.intersection(
|
|
167
170
|
Typesafe.object({
|
|
168
171
|
fields: Typesafe.array(Typesafe.string),
|
|
@@ -231,4 +234,3 @@ export const modelSchema = Typesafe.object({
|
|
|
231
234
|
entities: Typesafe.record(Typesafe.string, entitySchema),
|
|
232
235
|
enums: Typesafe.record(Typesafe.string, Typesafe.array(Typesafe.string)),
|
|
233
236
|
})
|
|
234
|
-
|
|
@@ -9,10 +9,11 @@ const messageSchema = Typesafe.intersection(
|
|
|
9
9
|
parameters: Typesafe.array(Typesafe.union(Typesafe.string, Typesafe.number)),
|
|
10
10
|
}),
|
|
11
11
|
)
|
|
12
|
-
const literalArgumentFactory = <T extends Typesafe.Json>(inner: Typesafe.Type<T>) =>
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
const literalArgumentFactory = <T extends Typesafe.Json>(inner: Typesafe.Type<T>) =>
|
|
13
|
+
Typesafe.object({
|
|
14
|
+
type: Typesafe.literal(Validation.ArgumentType.literal),
|
|
15
|
+
value: inner,
|
|
16
|
+
})
|
|
16
17
|
|
|
17
18
|
const validatorArgumentSchema = Typesafe.object({
|
|
18
19
|
type: Typesafe.literal(Validation.ArgumentType.validator),
|
package/src/type-schema/where.ts
CHANGED
|
@@ -12,15 +12,17 @@ export const whereSchema = ({ schema, entity }: {
|
|
|
12
12
|
and: Typesafe.array(whereSchema({ schema, entity })),
|
|
13
13
|
or: Typesafe.array(whereSchema({ schema, entity })),
|
|
14
14
|
not: whereSchema({ schema, entity }),
|
|
15
|
-
...Object.fromEntries(
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
15
|
+
...Object.fromEntries(
|
|
16
|
+
Object.values(entity.fields).map((it): [string, Typesafe.Type<Input.Where[any]>] => {
|
|
17
|
+
return [
|
|
18
|
+
it.name,
|
|
19
|
+
acceptFieldVisitor(schema, entity, it.name, {
|
|
20
|
+
visitColumn: ({ column }) => conditionSchema(column.type),
|
|
21
|
+
visitRelation: ({ targetEntity }) => whereSchema({ schema, entity: targetEntity }),
|
|
22
|
+
}),
|
|
23
|
+
]
|
|
24
|
+
}),
|
|
25
|
+
),
|
|
24
26
|
}))
|
|
25
27
|
|
|
26
28
|
return whereSchemaInner(input, path)
|
package/src/utils/deepCompare.ts
CHANGED
|
@@ -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 => {
|