@contember/schema-utils 1.4.0-rc.8 → 2.0.0-alpha.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/development/index.cjs +109 -0
- package/dist/development/index.cjs.map +1 -0
- package/dist/development/index.js +93 -0
- package/dist/development/index.js.map +1 -0
- package/dist/development/src/acl/AllowAllPermissionFactory.cjs +42 -0
- package/dist/development/src/acl/AllowAllPermissionFactory.cjs.map +1 -0
- package/dist/development/src/acl/AllowAllPermissionFactory.js +42 -0
- package/dist/development/src/acl/AllowAllPermissionFactory.js.map +1 -0
- package/dist/development/src/acl/PredicateDefinitionProcessor.cjs +71 -0
- package/dist/development/src/acl/PredicateDefinitionProcessor.cjs.map +1 -0
- package/dist/development/src/acl/PredicateDefinitionProcessor.js +71 -0
- package/dist/development/src/acl/PredicateDefinitionProcessor.js.map +1 -0
- package/dist/development/src/acl/schemaUtils.cjs +11 -0
- package/dist/development/src/acl/schemaUtils.cjs.map +1 -0
- package/dist/development/src/acl/schemaUtils.js +11 -0
- package/dist/development/src/acl/schemaUtils.js.map +1 -0
- package/dist/development/src/dataUtils.cjs +59 -0
- package/dist/development/src/dataUtils.cjs.map +1 -0
- package/dist/development/src/dataUtils.js +59 -0
- package/dist/development/src/dataUtils.js.map +1 -0
- package/dist/development/src/definition-generator/AclDefinitionCodeGenerator.cjs +118 -0
- package/dist/development/src/definition-generator/AclDefinitionCodeGenerator.cjs.map +1 -0
- package/dist/development/src/definition-generator/AclDefinitionCodeGenerator.js +118 -0
- package/dist/development/src/definition-generator/AclDefinitionCodeGenerator.js.map +1 -0
- package/dist/development/src/definition-generator/DefinitionCodeGenerator.cjs +221 -0
- package/dist/development/src/definition-generator/DefinitionCodeGenerator.cjs.map +1 -0
- package/dist/development/src/definition-generator/DefinitionCodeGenerator.js +221 -0
- package/dist/development/src/definition-generator/DefinitionCodeGenerator.js.map +1 -0
- package/dist/development/src/definition-generator/DefinitionNamingConventions.cjs +19 -0
- package/dist/development/src/definition-generator/DefinitionNamingConventions.cjs.map +1 -0
- package/dist/development/src/definition-generator/DefinitionNamingConventions.js +19 -0
- package/dist/development/src/definition-generator/DefinitionNamingConventions.js.map +1 -0
- package/dist/development/src/definition-generator/TsDefinitionGenerator.cjs +17 -0
- package/dist/development/src/definition-generator/TsDefinitionGenerator.cjs.map +1 -0
- package/dist/development/src/definition-generator/TsDefinitionGenerator.js +17 -0
- package/dist/development/src/definition-generator/TsDefinitionGenerator.js.map +1 -0
- package/dist/development/src/lax/LaxSchemaConverter.cjs +202 -0
- package/dist/development/src/lax/LaxSchemaConverter.cjs.map +1 -0
- package/dist/development/src/lax/LaxSchemaConverter.js +202 -0
- package/dist/development/src/lax/LaxSchemaConverter.js.map +1 -0
- package/dist/development/src/lax/schema.cjs +70 -0
- package/dist/development/src/lax/schema.cjs.map +1 -0
- package/dist/development/src/lax/schema.js +53 -0
- package/dist/development/src/lax/schema.js.map +1 -0
- package/dist/development/src/model/NamingConventions.cjs +28 -0
- package/dist/development/src/model/NamingConventions.cjs.map +1 -0
- package/dist/development/src/model/NamingConventions.js +28 -0
- package/dist/development/src/model/NamingConventions.js.map +1 -0
- package/dist/development/src/model/modelUtils.cjs +231 -0
- package/dist/development/src/model/modelUtils.cjs.map +1 -0
- package/dist/development/src/model/modelUtils.js +231 -0
- package/dist/development/src/model/modelUtils.js.map +1 -0
- package/dist/development/src/model/resolveDefaultColumnType.cjs +28 -0
- package/dist/development/src/model/resolveDefaultColumnType.cjs.map +1 -0
- package/dist/development/src/model/resolveDefaultColumnType.js +28 -0
- package/dist/development/src/model/resolveDefaultColumnType.js.map +1 -0
- package/dist/development/src/schemaFilter.cjs +24 -0
- package/dist/development/src/schemaFilter.cjs.map +1 -0
- package/dist/development/src/schemaFilter.js +24 -0
- package/dist/development/src/schemaFilter.js.map +1 -0
- package/dist/development/src/schemaNormalizer.cjs +70 -0
- package/dist/development/src/schemaNormalizer.cjs.map +1 -0
- package/dist/development/src/schemaNormalizer.js +70 -0
- package/dist/development/src/schemaNormalizer.js.map +1 -0
- package/dist/development/src/type-schema/acl.cjs +143 -0
- package/dist/development/src/type-schema/acl.cjs.map +1 -0
- package/dist/development/src/type-schema/acl.js +126 -0
- package/dist/development/src/type-schema/acl.js.map +1 -0
- package/dist/development/src/type-schema/actions.cjs +87 -0
- package/dist/development/src/type-schema/actions.cjs.map +1 -0
- package/dist/development/src/type-schema/actions.js +70 -0
- package/dist/development/src/type-schema/actions.js.map +1 -0
- package/dist/development/src/type-schema/condition.cjs +87 -0
- package/dist/development/src/type-schema/condition.cjs.map +1 -0
- package/dist/development/src/type-schema/condition.js +70 -0
- package/dist/development/src/type-schema/condition.js.map +1 -0
- package/dist/development/src/type-schema/model.cjs +195 -0
- package/dist/development/src/type-schema/model.cjs.map +1 -0
- package/dist/development/src/type-schema/model.js +178 -0
- package/dist/development/src/type-schema/model.js.map +1 -0
- package/dist/development/src/type-schema/settings.cjs +32 -0
- package/dist/development/src/type-schema/settings.cjs.map +1 -0
- package/dist/development/src/type-schema/settings.js +15 -0
- package/dist/development/src/type-schema/settings.js.map +1 -0
- package/dist/development/src/type-schema/validation.cjs +115 -0
- package/dist/development/src/type-schema/validation.cjs.map +1 -0
- package/dist/development/src/type-schema/validation.js +98 -0
- package/dist/development/src/type-schema/validation.js.map +1 -0
- package/dist/development/src/type-schema/where.cjs +44 -0
- package/dist/development/src/type-schema/where.cjs.map +1 -0
- package/dist/development/src/type-schema/where.js +27 -0
- package/dist/development/src/type-schema/where.js.map +1 -0
- package/dist/development/src/utils/assertNever.cjs +7 -0
- package/dist/development/src/utils/assertNever.cjs.map +1 -0
- package/dist/development/src/utils/assertNever.js +7 -0
- package/dist/development/src/utils/assertNever.js.map +1 -0
- package/dist/development/src/utils/deepCompare.cjs +134 -0
- package/dist/development/src/utils/deepCompare.cjs.map +1 -0
- package/dist/development/src/utils/deepCompare.js +134 -0
- package/dist/development/src/utils/deepCompare.js.map +1 -0
- package/dist/development/src/utils/isIt.cjs +7 -0
- package/dist/development/src/utils/isIt.cjs.map +1 -0
- package/dist/development/src/utils/isIt.js +7 -0
- package/dist/development/src/utils/isIt.js.map +1 -0
- package/dist/development/src/utils/printJsValue.cjs +42 -0
- package/dist/development/src/utils/printJsValue.cjs.map +1 -0
- package/dist/development/src/utils/printJsValue.js +42 -0
- package/dist/development/src/utils/printJsValue.js.map +1 -0
- package/dist/development/src/validation/AclValidator.cjs +168 -0
- package/dist/development/src/validation/AclValidator.cjs.map +1 -0
- package/dist/development/src/validation/AclValidator.js +168 -0
- package/dist/development/src/validation/AclValidator.js.map +1 -0
- package/dist/development/src/validation/ActionsValidator.cjs +127 -0
- package/dist/development/src/validation/ActionsValidator.cjs.map +1 -0
- package/dist/development/src/validation/ActionsValidator.js +110 -0
- package/dist/development/src/validation/ActionsValidator.js.map +1 -0
- package/dist/development/src/validation/MembershipResolver.cjs +126 -0
- package/dist/development/src/validation/MembershipResolver.cjs.map +1 -0
- package/dist/development/src/validation/MembershipResolver.js +126 -0
- package/dist/development/src/validation/MembershipResolver.js.map +1 -0
- package/dist/development/src/validation/ModelValidator.cjs +310 -0
- package/dist/development/src/validation/ModelValidator.cjs.map +1 -0
- package/dist/development/src/validation/ModelValidator.js +310 -0
- package/dist/development/src/validation/ModelValidator.js.map +1 -0
- package/dist/development/src/validation/SchemaValidator.cjs +29 -0
- package/dist/development/src/validation/SchemaValidator.cjs.map +1 -0
- package/dist/development/src/validation/SchemaValidator.js +29 -0
- package/dist/development/src/validation/SchemaValidator.js.map +1 -0
- package/dist/development/src/validation/ValidationValidator.cjs +121 -0
- package/dist/development/src/validation/ValidationValidator.cjs.map +1 -0
- package/dist/development/src/validation/ValidationValidator.js +121 -0
- package/dist/development/src/validation/ValidationValidator.js.map +1 -0
- package/dist/development/src/validation/errors.cjs +16 -0
- package/dist/development/src/validation/errors.cjs.map +1 -0
- package/dist/development/src/validation/errors.js +16 -0
- package/dist/development/src/validation/errors.js.map +1 -0
- package/dist/production/index.cjs +109 -0
- package/dist/production/index.cjs.map +1 -0
- package/dist/production/index.js +93 -0
- package/dist/production/index.js.map +1 -0
- package/dist/production/src/acl/AllowAllPermissionFactory.cjs +42 -0
- package/dist/production/src/acl/AllowAllPermissionFactory.cjs.map +1 -0
- package/dist/production/src/acl/AllowAllPermissionFactory.js +42 -0
- package/dist/production/src/acl/AllowAllPermissionFactory.js.map +1 -0
- package/dist/production/src/acl/PredicateDefinitionProcessor.cjs +71 -0
- package/dist/production/src/acl/PredicateDefinitionProcessor.cjs.map +1 -0
- package/dist/production/src/acl/PredicateDefinitionProcessor.js +71 -0
- package/dist/production/src/acl/PredicateDefinitionProcessor.js.map +1 -0
- package/dist/production/src/acl/schemaUtils.cjs +11 -0
- package/dist/production/src/acl/schemaUtils.cjs.map +1 -0
- package/dist/production/src/acl/schemaUtils.js +11 -0
- package/dist/production/src/acl/schemaUtils.js.map +1 -0
- package/dist/production/src/dataUtils.cjs +59 -0
- package/dist/production/src/dataUtils.cjs.map +1 -0
- package/dist/production/src/dataUtils.js +59 -0
- package/dist/production/src/dataUtils.js.map +1 -0
- package/dist/production/src/definition-generator/AclDefinitionCodeGenerator.cjs +118 -0
- package/dist/production/src/definition-generator/AclDefinitionCodeGenerator.cjs.map +1 -0
- package/dist/production/src/definition-generator/AclDefinitionCodeGenerator.js +118 -0
- package/dist/production/src/definition-generator/AclDefinitionCodeGenerator.js.map +1 -0
- package/dist/production/src/definition-generator/DefinitionCodeGenerator.cjs +221 -0
- package/dist/production/src/definition-generator/DefinitionCodeGenerator.cjs.map +1 -0
- package/dist/production/src/definition-generator/DefinitionCodeGenerator.js +221 -0
- package/dist/production/src/definition-generator/DefinitionCodeGenerator.js.map +1 -0
- package/dist/production/src/definition-generator/DefinitionNamingConventions.cjs +19 -0
- package/dist/production/src/definition-generator/DefinitionNamingConventions.cjs.map +1 -0
- package/dist/production/src/definition-generator/DefinitionNamingConventions.js +19 -0
- package/dist/production/src/definition-generator/DefinitionNamingConventions.js.map +1 -0
- package/dist/production/src/definition-generator/TsDefinitionGenerator.cjs +17 -0
- package/dist/production/src/definition-generator/TsDefinitionGenerator.cjs.map +1 -0
- package/dist/production/src/definition-generator/TsDefinitionGenerator.js +17 -0
- package/dist/production/src/definition-generator/TsDefinitionGenerator.js.map +1 -0
- package/dist/production/src/lax/LaxSchemaConverter.cjs +202 -0
- package/dist/production/src/lax/LaxSchemaConverter.cjs.map +1 -0
- package/dist/production/src/lax/LaxSchemaConverter.js +202 -0
- package/dist/production/src/lax/LaxSchemaConverter.js.map +1 -0
- package/dist/production/src/lax/schema.cjs +70 -0
- package/dist/production/src/lax/schema.cjs.map +1 -0
- package/dist/production/src/lax/schema.js +53 -0
- package/dist/production/src/lax/schema.js.map +1 -0
- package/dist/production/src/model/NamingConventions.cjs +28 -0
- package/dist/production/src/model/NamingConventions.cjs.map +1 -0
- package/dist/production/src/model/NamingConventions.js +28 -0
- package/dist/production/src/model/NamingConventions.js.map +1 -0
- package/dist/production/src/model/modelUtils.cjs +231 -0
- package/dist/production/src/model/modelUtils.cjs.map +1 -0
- package/dist/production/src/model/modelUtils.js +231 -0
- package/dist/production/src/model/modelUtils.js.map +1 -0
- package/dist/production/src/model/resolveDefaultColumnType.cjs +28 -0
- package/dist/production/src/model/resolveDefaultColumnType.cjs.map +1 -0
- package/dist/production/src/model/resolveDefaultColumnType.js +28 -0
- package/dist/production/src/model/resolveDefaultColumnType.js.map +1 -0
- package/dist/production/src/schemaFilter.cjs +24 -0
- package/dist/production/src/schemaFilter.cjs.map +1 -0
- package/dist/production/src/schemaFilter.js +24 -0
- package/dist/production/src/schemaFilter.js.map +1 -0
- package/dist/production/src/schemaNormalizer.cjs +70 -0
- package/dist/production/src/schemaNormalizer.cjs.map +1 -0
- package/dist/production/src/schemaNormalizer.js +70 -0
- package/dist/production/src/schemaNormalizer.js.map +1 -0
- package/dist/production/src/type-schema/acl.cjs +143 -0
- package/dist/production/src/type-schema/acl.cjs.map +1 -0
- package/dist/production/src/type-schema/acl.js +126 -0
- package/dist/production/src/type-schema/acl.js.map +1 -0
- package/dist/production/src/type-schema/actions.cjs +87 -0
- package/dist/production/src/type-schema/actions.cjs.map +1 -0
- package/dist/production/src/type-schema/actions.js +70 -0
- package/dist/production/src/type-schema/actions.js.map +1 -0
- package/dist/production/src/type-schema/condition.cjs +87 -0
- package/dist/production/src/type-schema/condition.cjs.map +1 -0
- package/dist/production/src/type-schema/condition.js +70 -0
- package/dist/production/src/type-schema/condition.js.map +1 -0
- package/dist/production/src/type-schema/model.cjs +195 -0
- package/dist/production/src/type-schema/model.cjs.map +1 -0
- package/dist/production/src/type-schema/model.js +178 -0
- package/dist/production/src/type-schema/model.js.map +1 -0
- package/dist/production/src/type-schema/settings.cjs +32 -0
- package/dist/production/src/type-schema/settings.cjs.map +1 -0
- package/dist/production/src/type-schema/settings.js +15 -0
- package/dist/production/src/type-schema/settings.js.map +1 -0
- package/dist/production/src/type-schema/validation.cjs +115 -0
- package/dist/production/src/type-schema/validation.cjs.map +1 -0
- package/dist/production/src/type-schema/validation.js +98 -0
- package/dist/production/src/type-schema/validation.js.map +1 -0
- package/dist/production/src/type-schema/where.cjs +44 -0
- package/dist/production/src/type-schema/where.cjs.map +1 -0
- package/dist/production/src/type-schema/where.js +27 -0
- package/dist/production/src/type-schema/where.js.map +1 -0
- package/dist/production/src/utils/assertNever.cjs +7 -0
- package/dist/production/src/utils/assertNever.cjs.map +1 -0
- package/dist/production/src/utils/assertNever.js +7 -0
- package/dist/production/src/utils/assertNever.js.map +1 -0
- package/dist/production/src/utils/deepCompare.cjs +134 -0
- package/dist/production/src/utils/deepCompare.cjs.map +1 -0
- package/dist/production/src/utils/deepCompare.js +134 -0
- package/dist/production/src/utils/deepCompare.js.map +1 -0
- package/dist/production/src/utils/isIt.cjs +7 -0
- package/dist/production/src/utils/isIt.cjs.map +1 -0
- package/dist/production/src/utils/isIt.js +7 -0
- package/dist/production/src/utils/isIt.js.map +1 -0
- package/dist/production/src/utils/printJsValue.cjs +42 -0
- package/dist/production/src/utils/printJsValue.cjs.map +1 -0
- package/dist/production/src/utils/printJsValue.js +42 -0
- package/dist/production/src/utils/printJsValue.js.map +1 -0
- package/dist/production/src/validation/AclValidator.cjs +168 -0
- package/dist/production/src/validation/AclValidator.cjs.map +1 -0
- package/dist/production/src/validation/AclValidator.js +168 -0
- package/dist/production/src/validation/AclValidator.js.map +1 -0
- package/dist/production/src/validation/ActionsValidator.cjs +127 -0
- package/dist/production/src/validation/ActionsValidator.cjs.map +1 -0
- package/dist/production/src/validation/ActionsValidator.js +110 -0
- package/dist/production/src/validation/ActionsValidator.js.map +1 -0
- package/dist/production/src/validation/MembershipResolver.cjs +126 -0
- package/dist/production/src/validation/MembershipResolver.cjs.map +1 -0
- package/dist/production/src/validation/MembershipResolver.js +126 -0
- package/dist/production/src/validation/MembershipResolver.js.map +1 -0
- package/dist/production/src/validation/ModelValidator.cjs +310 -0
- package/dist/production/src/validation/ModelValidator.cjs.map +1 -0
- package/dist/production/src/validation/ModelValidator.js +310 -0
- package/dist/production/src/validation/ModelValidator.js.map +1 -0
- package/dist/production/src/validation/SchemaValidator.cjs +29 -0
- package/dist/production/src/validation/SchemaValidator.cjs.map +1 -0
- package/dist/production/src/validation/SchemaValidator.js +29 -0
- package/dist/production/src/validation/SchemaValidator.js.map +1 -0
- package/dist/production/src/validation/ValidationValidator.cjs +121 -0
- package/dist/production/src/validation/ValidationValidator.cjs.map +1 -0
- package/dist/production/src/validation/ValidationValidator.js +121 -0
- package/dist/production/src/validation/ValidationValidator.js.map +1 -0
- package/dist/production/src/validation/errors.cjs +16 -0
- package/dist/production/src/validation/errors.cjs.map +1 -0
- package/dist/production/src/validation/errors.js +16 -0
- package/dist/production/src/validation/errors.js.map +1 -0
- package/dist/tests/cases/unit/schemas/acl.d.ts +7 -7
- package/dist/tests/cases/unit/schemas/acl.d.ts.map +1 -1
- package/dist/tests/cases/unit/schemas/basic.d.ts +1 -1
- package/dist/tests/cases/unit/schemas/basic.d.ts.map +1 -1
- package/dist/tests/cases/unit/schemas/enum.d.ts +3 -3
- package/dist/tests/cases/unit/schemas/enum.d.ts.map +1 -1
- package/dist/tests/cases/unit/schemas/relations.d.ts +7 -7
- package/dist/tests/cases/unit/schemas/relations.d.ts.map +1 -1
- package/dist/tests/cases/unit/schemas/unique.d.ts +1 -1
- package/dist/tests/cases/unit/schemas/unique.d.ts.map +1 -1
- package/dist/tests/tsconfig.tsbuildinfo +1 -1
- package/dist/{src → types}/acl/schemaUtils.d.ts.map +1 -1
- package/dist/{src → types}/dataUtils.d.ts +1 -1
- package/dist/types/dataUtils.d.ts.map +1 -0
- package/dist/{src → types}/lax/schema.d.ts +21 -21
- package/dist/{src → types}/model/modelUtils.d.ts +1 -1
- package/dist/types/model/modelUtils.d.ts.map +1 -0
- package/dist/{src → types}/model/resolveDefaultColumnType.d.ts.map +1 -1
- package/dist/{src → types}/schemaFilter.d.ts.map +1 -1
- package/dist/{src → types}/schemaNormalizer.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -0
- package/dist/{src → types}/type-schema/condition.d.ts +1 -2
- package/dist/types/type-schema/condition.d.ts.map +1 -0
- package/dist/types/type-schema/settings.d.ts +46 -0
- package/dist/types/type-schema/settings.d.ts.map +1 -0
- package/dist/{src → types}/type-schema/where.d.ts.map +1 -1
- package/dist/{src → types}/utils/deepCompare.d.ts.map +1 -1
- package/dist/types/utils/isIt.d.ts +2 -0
- package/dist/{src → types}/utils/isIt.d.ts.map +1 -1
- package/dist/{src → types}/utils/printJsValue.d.ts.map +1 -1
- package/dist/{src → types}/validation/MembershipResolver.d.ts.map +1 -1
- package/package.json +24 -12
- package/src/tsconfig.json +1 -1
- package/tests/cases/unit/tsDefinitionGenerator.test.ts +4 -3
- package/tests/tsconfig.json +2 -1
- package/vitest.config.ts +3 -0
- package/dist/src/acl/AllowAllPermissionFactory.js +0 -42
- package/dist/src/acl/AllowAllPermissionFactory.js.map +0 -1
- package/dist/src/acl/PredicateDefinitionProcessor.js +0 -75
- package/dist/src/acl/PredicateDefinitionProcessor.js.map +0 -1
- package/dist/src/acl/index.js +0 -20
- package/dist/src/acl/index.js.map +0 -1
- package/dist/src/acl/schemaUtils.js +0 -9
- package/dist/src/acl/schemaUtils.js.map +0 -1
- package/dist/src/dataUtils.d.ts.map +0 -1
- package/dist/src/dataUtils.js +0 -58
- package/dist/src/dataUtils.js.map +0 -1
- package/dist/src/definition-generator/AclDefinitionCodeGenerator.js +0 -116
- package/dist/src/definition-generator/AclDefinitionCodeGenerator.js.map +0 -1
- package/dist/src/definition-generator/DefinitionCodeGenerator.js +0 -216
- package/dist/src/definition-generator/DefinitionCodeGenerator.js.map +0 -1
- package/dist/src/definition-generator/DefinitionNamingConventions.js +0 -18
- package/dist/src/definition-generator/DefinitionNamingConventions.js.map +0 -1
- package/dist/src/definition-generator/TsDefinitionGenerator.js +0 -20
- package/dist/src/definition-generator/TsDefinitionGenerator.js.map +0 -1
- package/dist/src/definition-generator/index.js +0 -21
- package/dist/src/definition-generator/index.js.map +0 -1
- package/dist/src/index.js +0 -59
- package/dist/src/index.js.map +0 -1
- package/dist/src/lax/LaxSchemaConverter.js +0 -203
- package/dist/src/lax/LaxSchemaConverter.js.map +0 -1
- package/dist/src/lax/index.js +0 -21
- package/dist/src/lax/index.js.map +0 -1
- package/dist/src/lax/schema.js +0 -67
- package/dist/src/lax/schema.js.map +0 -1
- package/dist/src/model/NamingConventions.js +0 -29
- package/dist/src/model/NamingConventions.js.map +0 -1
- package/dist/src/model/index.js +0 -20
- package/dist/src/model/index.js.map +0 -1
- package/dist/src/model/modelUtils.d.ts.map +0 -1
- package/dist/src/model/modelUtils.js +0 -219
- package/dist/src/model/modelUtils.js.map +0 -1
- package/dist/src/model/resolveDefaultColumnType.js +0 -29
- package/dist/src/model/resolveDefaultColumnType.js.map +0 -1
- package/dist/src/schemaFilter.js +0 -29
- package/dist/src/schemaFilter.js.map +0 -1
- package/dist/src/schemaNormalizer.js +0 -72
- package/dist/src/schemaNormalizer.js.map +0 -1
- package/dist/src/tsconfig.tsbuildinfo +0 -1
- package/dist/src/type-schema/acl.js +0 -114
- package/dist/src/type-schema/acl.js.map +0 -1
- package/dist/src/type-schema/actions.js +0 -77
- package/dist/src/type-schema/actions.js.map +0 -1
- package/dist/src/type-schema/condition.d.ts.map +0 -1
- package/dist/src/type-schema/condition.js +0 -95
- package/dist/src/type-schema/condition.js.map +0 -1
- package/dist/src/type-schema/index.js +0 -22
- package/dist/src/type-schema/index.js.map +0 -1
- package/dist/src/type-schema/model.js +0 -156
- package/dist/src/type-schema/model.js.map +0 -1
- package/dist/src/type-schema/settings.d.ts +0 -35
- package/dist/src/type-schema/settings.d.ts.map +0 -1
- package/dist/src/type-schema/settings.js +0 -39
- package/dist/src/type-schema/settings.js.map +0 -1
- package/dist/src/type-schema/validation.js +0 -95
- package/dist/src/type-schema/validation.js.map +0 -1
- package/dist/src/type-schema/where.js +0 -50
- package/dist/src/type-schema/where.js.map +0 -1
- package/dist/src/utils/assertNever.js +0 -8
- package/dist/src/utils/assertNever.js.map +0 -1
- package/dist/src/utils/deepCompare.js +0 -136
- package/dist/src/utils/deepCompare.js.map +0 -1
- package/dist/src/utils/index.js +0 -20
- package/dist/src/utils/index.js.map +0 -1
- package/dist/src/utils/isIt.d.ts +0 -2
- package/dist/src/utils/isIt.js +0 -11
- package/dist/src/utils/isIt.js.map +0 -1
- package/dist/src/utils/printJsValue.js +0 -57
- package/dist/src/utils/printJsValue.js.map +0 -1
- package/dist/src/validation/AclValidator.js +0 -147
- package/dist/src/validation/AclValidator.js.map +0 -1
- package/dist/src/validation/ActionsValidator.js +0 -134
- package/dist/src/validation/ActionsValidator.js.map +0 -1
- package/dist/src/validation/MembershipResolver.js +0 -113
- package/dist/src/validation/MembershipResolver.js.map +0 -1
- package/dist/src/validation/ModelValidator.js +0 -306
- package/dist/src/validation/ModelValidator.js.map +0 -1
- package/dist/src/validation/SchemaValidator.js +0 -27
- package/dist/src/validation/SchemaValidator.js.map +0 -1
- package/dist/src/validation/ValidationValidator.js +0 -109
- package/dist/src/validation/ValidationValidator.js.map +0 -1
- package/dist/src/validation/errors.js +0 -17
- package/dist/src/validation/errors.js.map +0 -1
- package/dist/src/validation/index.js +0 -23
- package/dist/src/validation/index.js.map +0 -1
- package/dist/tests/cases/unit/conditionSchema.test.js +0 -50
- package/dist/tests/cases/unit/conditionSchema.test.js.map +0 -1
- package/dist/tests/cases/unit/deepCompare.test.js +0 -43
- package/dist/tests/cases/unit/deepCompare.test.js.map +0 -1
- package/dist/tests/cases/unit/laxSchemaConverter.test.js +0 -118
- package/dist/tests/cases/unit/laxSchemaConverter.test.js.map +0 -1
- package/dist/tests/cases/unit/membershipResolver.test.js +0 -168
- package/dist/tests/cases/unit/membershipResolver.test.js.map +0 -1
- package/dist/tests/cases/unit/modelValidator.test.js +0 -97
- package/dist/tests/cases/unit/modelValidator.test.js.map +0 -1
- package/dist/tests/cases/unit/printJsvalue.test.js +0 -90
- package/dist/tests/cases/unit/printJsvalue.test.js.map +0 -1
- package/dist/tests/cases/unit/schemas/acl.js +0 -47
- package/dist/tests/cases/unit/schemas/acl.js.map +0 -1
- package/dist/tests/cases/unit/schemas/basic.js +0 -11
- package/dist/tests/cases/unit/schemas/basic.js.map +0 -1
- package/dist/tests/cases/unit/schemas/enum.js +0 -13
- package/dist/tests/cases/unit/schemas/enum.js.map +0 -1
- package/dist/tests/cases/unit/schemas/relations.js +0 -27
- package/dist/tests/cases/unit/schemas/relations.js.map +0 -1
- package/dist/tests/cases/unit/schemas/unique.js +0 -20
- package/dist/tests/cases/unit/schemas/unique.js.map +0 -1
- package/dist/tests/cases/unit/tsDefinitionGenerator.test.js +0 -58
- package/dist/tests/cases/unit/tsDefinitionGenerator.test.js.map +0 -1
- package/dist/tests/cases/unit/whereSchema.test.js +0 -85
- package/dist/tests/cases/unit/whereSchema.test.js.map +0 -1
- /package/dist/{src → types}/acl/AllowAllPermissionFactory.d.ts +0 -0
- /package/dist/{src → types}/acl/AllowAllPermissionFactory.d.ts.map +0 -0
- /package/dist/{src → types}/acl/PredicateDefinitionProcessor.d.ts +0 -0
- /package/dist/{src → types}/acl/PredicateDefinitionProcessor.d.ts.map +0 -0
- /package/dist/{src → types}/acl/index.d.ts +0 -0
- /package/dist/{src → types}/acl/index.d.ts.map +0 -0
- /package/dist/{src → types}/acl/schemaUtils.d.ts +0 -0
- /package/dist/{src → types}/definition-generator/AclDefinitionCodeGenerator.d.ts +0 -0
- /package/dist/{src → types}/definition-generator/AclDefinitionCodeGenerator.d.ts.map +0 -0
- /package/dist/{src → types}/definition-generator/DefinitionCodeGenerator.d.ts +0 -0
- /package/dist/{src → types}/definition-generator/DefinitionCodeGenerator.d.ts.map +0 -0
- /package/dist/{src → types}/definition-generator/DefinitionNamingConventions.d.ts +0 -0
- /package/dist/{src → types}/definition-generator/DefinitionNamingConventions.d.ts.map +0 -0
- /package/dist/{src → types}/definition-generator/TsDefinitionGenerator.d.ts +0 -0
- /package/dist/{src → types}/definition-generator/TsDefinitionGenerator.d.ts.map +0 -0
- /package/dist/{src → types}/definition-generator/index.d.ts +0 -0
- /package/dist/{src → types}/definition-generator/index.d.ts.map +0 -0
- /package/dist/{src → types}/index.d.ts +0 -0
- /package/dist/{src → types}/index.d.ts.map +0 -0
- /package/dist/{src → types}/lax/LaxSchemaConverter.d.ts +0 -0
- /package/dist/{src → types}/lax/LaxSchemaConverter.d.ts.map +0 -0
- /package/dist/{src → types}/lax/index.d.ts +0 -0
- /package/dist/{src → types}/lax/index.d.ts.map +0 -0
- /package/dist/{src → types}/lax/schema.d.ts.map +0 -0
- /package/dist/{src → types}/model/NamingConventions.d.ts +0 -0
- /package/dist/{src → types}/model/NamingConventions.d.ts.map +0 -0
- /package/dist/{src → types}/model/index.d.ts +0 -0
- /package/dist/{src → types}/model/index.d.ts.map +0 -0
- /package/dist/{src → types}/model/resolveDefaultColumnType.d.ts +0 -0
- /package/dist/{src → types}/schemaFilter.d.ts +0 -0
- /package/dist/{src → types}/schemaNormalizer.d.ts +0 -0
- /package/dist/{src → types}/type-schema/acl.d.ts +0 -0
- /package/dist/{src → types}/type-schema/acl.d.ts.map +0 -0
- /package/dist/{src → types}/type-schema/actions.d.ts +0 -0
- /package/dist/{src → types}/type-schema/actions.d.ts.map +0 -0
- /package/dist/{src → types}/type-schema/index.d.ts +0 -0
- /package/dist/{src → types}/type-schema/index.d.ts.map +0 -0
- /package/dist/{src → types}/type-schema/model.d.ts +0 -0
- /package/dist/{src → types}/type-schema/model.d.ts.map +0 -0
- /package/dist/{src → types}/type-schema/validation.d.ts +0 -0
- /package/dist/{src → types}/type-schema/validation.d.ts.map +0 -0
- /package/dist/{src → types}/type-schema/where.d.ts +0 -0
- /package/dist/{src → types}/utils/assertNever.d.ts +0 -0
- /package/dist/{src → types}/utils/assertNever.d.ts.map +0 -0
- /package/dist/{src → types}/utils/deepCompare.d.ts +0 -0
- /package/dist/{src → types}/utils/index.d.ts +0 -0
- /package/dist/{src → types}/utils/index.d.ts.map +0 -0
- /package/dist/{src → types}/utils/printJsValue.d.ts +0 -0
- /package/dist/{src → types}/validation/AclValidator.d.ts +0 -0
- /package/dist/{src → types}/validation/AclValidator.d.ts.map +0 -0
- /package/dist/{src → types}/validation/ActionsValidator.d.ts +0 -0
- /package/dist/{src → types}/validation/ActionsValidator.d.ts.map +0 -0
- /package/dist/{src → types}/validation/MembershipResolver.d.ts +0 -0
- /package/dist/{src → types}/validation/ModelValidator.d.ts +0 -0
- /package/dist/{src → types}/validation/ModelValidator.d.ts.map +0 -0
- /package/dist/{src → types}/validation/SchemaValidator.d.ts +0 -0
- /package/dist/{src → types}/validation/SchemaValidator.d.ts.map +0 -0
- /package/dist/{src → types}/validation/ValidationValidator.d.ts +0 -0
- /package/dist/{src → types}/validation/ValidationValidator.d.ts.map +0 -0
- /package/dist/{src → types}/validation/errors.d.ts +0 -0
- /package/dist/{src → types}/validation/errors.d.ts.map +0 -0
- /package/dist/{src → types}/validation/index.d.ts +0 -0
- /package/dist/{src → types}/validation/index.d.ts.map +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modelUtils.cjs","sources":["../../../../../packages/schema-utils/src/model/modelUtils.ts"],"sourcesContent":["import { assertNever, isIt } from '../utils'\nimport { Model } from '@contember/schema'\n\nexport enum ModelErrorCode {\n\tENTITY_NOT_FOUND = 'entityNotFound',\n\tFIELD_NOT_FOUND = 'fieldNotFound',\n\tNOT_RELATION = 'notRelation',\n\tNOT_OWNING_SIDE = 'notOwningSide',\n}\n\nexport class ModelError extends Error {\n\tconstructor(public readonly code: ModelErrorCode, message: string) {\n\t\tsuper(message)\n\t}\n}\n\nconst createEntityNotFoundError = (entityName: string) =>\n\tnew ModelError(ModelErrorCode.ENTITY_NOT_FOUND, `Entity ${entityName} not found`)\n\nconst createFieldNotFoundError = (entityName: string, fieldName: string) =>\n\tnew ModelError(ModelErrorCode.FIELD_NOT_FOUND, `Field ${fieldName} of entity ${entityName} not found`)\n\nexport const getEntity = (schema: Model.Schema, entityName: string): Model.Entity => {\n\tconst entity = schema.entities[entityName]\n\tif (!entity) {\n\t\tthrow createEntityNotFoundError(entityName)\n\t}\n\treturn entity\n}\n\nexport const getField = (entity: Model.Entity, fieldName: string): Model.AnyField => {\n\tconst field = entity.fields[fieldName]\n\tif (!field) {\n\t\tthrow createFieldNotFoundError(entity.name, fieldName)\n\t}\n\treturn field\n}\n\nexport const getColumnName = (schema: Model.Schema, entity: Model.Entity, fieldName: string) => {\n\treturn acceptFieldVisitor(schema, entity, fieldName, {\n\t\tvisitColumn: ({ column }) => column.columnName,\n\t\tvisitRelation: ({ entity, relation }) => {\n\t\t\tif (isIt<Model.JoiningColumnRelation>(relation, 'joiningColumn')) {\n\t\t\t\treturn relation.joiningColumn.columnName\n\t\t\t}\n\t\t\tthrow new ModelError(\n\t\t\t\tModelErrorCode.NOT_OWNING_SIDE,\n\t\t\t\t`Field ${relation.name} of entity ${entity.name} is not an owning side`,\n\t\t\t)\n\t\t},\n\t})\n}\n\nexport const tryGetColumnName = (schema: Model.Schema, entity: Model.Entity, fieldName: string) => {\n\ttry {\n\t\treturn getColumnName(schema, entity, fieldName)\n\t} catch (e) {\n\t\tif (e instanceof ModelError && e.code === ModelErrorCode.NOT_OWNING_SIDE) {\n\t\t\treturn undefined\n\t\t}\n\t\tthrow e\n\t}\n}\n\nexport const getColumnType = (schema: Model.Schema, entity: Model.Entity, fieldName: string): string => {\n\treturn acceptFieldVisitor(schema, entity, fieldName, {\n\t\t// TODO solve enum handling properly maybe we should distinguish between domain and column type\n\t\tvisitColumn: ({ column }) => (column.type === Model.ColumnType.Enum ? 'text' : column.columnType),\n\t\tvisitRelation: ({ entity, relation, targetEntity }) => {\n\t\t\tif (isIt<Model.JoiningColumnRelation>(relation, 'joiningColumn')) {\n\t\t\t\treturn getColumnType(schema, targetEntity, targetEntity.primary)\n\t\t\t}\n\t\t\tthrow new ModelError(\n\t\t\t\tModelErrorCode.NOT_OWNING_SIDE,\n\t\t\t\t`Field ${relation.name} of entity ${entity.name} is not an owning side`,\n\t\t\t)\n\t\t},\n\t})\n}\n\nexport const getTargetEntity = (\n\tschema: Model.Schema,\n\tentity: Model.Entity,\n\trelationName: string,\n): Model.Entity | null => {\n\treturn acceptFieldVisitor(schema, entity, relationName, {\n\t\tvisitColumn: () => null,\n\t\tvisitRelation: ({ targetEntity }) => targetEntity,\n\t})\n}\n\nexport const acceptEveryFieldVisitor = <T>(\n\tschema: Model.Schema,\n\tentity: string | Model.Entity,\n\tvisitor: Model.FieldVisitor<T>,\n): { [fieldName: string]: T } => {\n\tconst entityObj: Model.Entity = typeof entity === 'string' ? getEntity(schema, entity) : entity\n\n\tconst result: { [fieldName: string]: T } = {}\n\tfor (const field in entityObj.fields) {\n\t\tresult[field] = acceptFieldVisitor(schema, entityObj, field, visitor)\n\t}\n\treturn result\n}\n\nexport const acceptFieldVisitor = <T>(\n\tschema: Model.Schema,\n\tentity: string | Model.Entity,\n\tfield: string | Model.AnyField,\n\tvisitor: Model.FieldVisitor<T>,\n): T => {\n\tconst entityObj: Model.Entity = typeof entity === 'string' ? getEntity(schema, entity) : entity\n\n\tconst fieldObj: Model.AnyField = typeof field === 'string' ? entityObj.fields[field] : field\n\tif (!fieldObj) {\n\t\tthrow createFieldNotFoundError(entityObj.name, typeof field === 'string' ? field : 'unknown')\n\t}\n\n\tif (isIt<Model.AnyColumn>(fieldObj, 'columnType')) {\n\t\treturn visitor.visitColumn({\n\t\t\tentity: entityObj,\n\t\t\tcolumn: fieldObj,\n\t\t})\n\t}\n\n\tif (isIt<Model.ColumnVisitor<T> & Model.RelationVisitor<T>>(visitor, 'visitRelation')) {\n\t\treturn acceptRelationTypeVisitor(schema, entityObj, fieldObj, {\n\t\t\tvisitManyHasManyInverse: visitor.visitRelation.bind(visitor),\n\t\t\tvisitManyHasManyOwning: visitor.visitRelation.bind(visitor),\n\t\t\tvisitOneHasMany: visitor.visitRelation.bind(visitor),\n\t\t\tvisitOneHasOneInverse: visitor.visitRelation.bind(visitor),\n\t\t\tvisitOneHasOneOwning: visitor.visitRelation.bind(visitor),\n\t\t\tvisitManyHasOne: visitor.visitRelation.bind(visitor),\n\t\t})\n\t}\n\n\tif (isIt<Model.ColumnVisitor<T> & Model.RelationByGenericTypeVisitor<T>>(visitor, 'visitHasMany')) {\n\t\treturn acceptRelationTypeVisitor(schema, entityObj, fieldObj, {\n\t\t\tvisitManyHasManyInverse: visitor.visitHasMany.bind(visitor),\n\t\t\tvisitManyHasManyOwning: visitor.visitHasMany.bind(visitor),\n\t\t\tvisitOneHasMany: visitor.visitHasMany.bind(visitor),\n\t\t\tvisitOneHasOneInverse: visitor.visitHasOne.bind(visitor),\n\t\t\tvisitOneHasOneOwning: visitor.visitHasOne.bind(visitor),\n\t\t\tvisitManyHasOne: visitor.visitHasOne.bind(visitor),\n\t\t})\n\t}\n\n\tif (isIt<Model.ColumnVisitor<T> & Model.RelationByTypeVisitor<T>>(visitor, 'visitManyHasManyInverse')) {\n\t\treturn acceptRelationTypeVisitor(schema, entityObj, fieldObj, visitor)\n\t}\n\n\tthrow new Error()\n}\n\nexport const acceptRelationTypeVisitor = <T>(\n\tschema: Model.Schema,\n\tentity: string | Model.Entity,\n\trelation: string | Model.AnyRelation,\n\tvisitor: Model.RelationByTypeVisitor<T>,\n): T => {\n\tconst entityObj = typeof entity === 'string' ? getEntity(schema, entity) : entity\n\n\tconst relationObj: Model.AnyField = typeof relation === 'string' ? entityObj.fields[relation] : relation\n\tif (!relationObj) {\n\t\tthrow createFieldNotFoundError(entityObj.name, typeof relation === 'string' ? relation : 'unknown')\n\t}\n\n\tif (!isRelation(relationObj)) {\n\t\tthrow new ModelError(\n\t\t\tModelErrorCode.NOT_RELATION,\n\t\t\t`Field ${relationObj.name} of entity ${entityObj.name} is not a relation`,\n\t\t)\n\t}\n\n\tconst targetEntity = getEntity(schema, relationObj.target)\n\n\tif (isInverseRelation(relationObj)) {\n\t\tconst targetRelation = targetEntity.fields[relationObj.ownedBy]\n\t\tswitch (relationObj.type) {\n\t\t\tcase Model.RelationType.ManyHasMany:\n\t\t\t\treturn visitor.visitManyHasManyInverse({\n\t\t\t\t\ttype: 'manyHasManyInverse',\n\t\t\t\t\tentity: entityObj,\n\t\t\t\t\trelation: relationObj,\n\t\t\t\t\ttargetEntity: targetEntity,\n\t\t\t\t\ttargetRelation: targetRelation as Model.ManyHasManyOwningRelation,\n\t\t\t\t},\n\t\t\t\t)\n\t\t\tcase Model.RelationType.OneHasOne:\n\t\t\t\treturn visitor.visitOneHasOneInverse({\n\t\t\t\t\ttype: 'oneHasOneInverse',\n\t\t\t\t\tentity: entityObj,\n\t\t\t\t\trelation: relationObj,\n\t\t\t\t\ttargetEntity: targetEntity,\n\t\t\t\t\ttargetRelation: targetRelation as Model.OneHasOneOwningRelation,\n\t\t\t\t})\n\t\t\tcase Model.RelationType.OneHasMany:\n\t\t\t\treturn visitor.visitOneHasMany({\n\t\t\t\t\ttype: 'oneHasMany',\n\t\t\t\t\tentity: entityObj,\n\t\t\t\t\trelation: relationObj,\n\t\t\t\t\ttargetEntity: targetEntity,\n\t\t\t\t\ttargetRelation: targetRelation as Model.ManyHasOneRelation,\n\t\t\t\t})\n\t\t\tdefault:\n\t\t\t\treturn assertNever(relationObj)\n\t\t}\n\t} else if (isOwningRelation(relationObj)) {\n\t\tconst targetRelation = relationObj.inversedBy ? targetEntity.fields[relationObj.inversedBy] : null\n\n\t\tswitch (relationObj.type) {\n\t\t\tcase Model.RelationType.ManyHasMany:\n\t\t\t\treturn visitor.visitManyHasManyOwning({\n\t\t\t\t\ttype: 'manyHasManyOwning',\n\t\t\t\t\tentity: entityObj,\n\t\t\t\t\trelation: relationObj,\n\t\t\t\t\ttargetEntity: targetEntity,\n\t\t\t\t\ttargetRelation: targetRelation as Model.ManyHasManyInverseRelation,\n\t\t\t\t})\n\t\t\tcase Model.RelationType.OneHasOne:\n\t\t\t\treturn visitor.visitOneHasOneOwning({\n\t\t\t\t\ttype: 'oneHasOneOwning',\n\t\t\t\t\tentity: entityObj,\n\t\t\t\t\trelation: relationObj,\n\t\t\t\t\ttargetEntity: targetEntity,\n\t\t\t\t\ttargetRelation: targetRelation as Model.OneHasOneInverseRelation,\n\t\t\t\t})\n\t\t\tcase Model.RelationType.ManyHasOne:\n\t\t\t\treturn visitor.visitManyHasOne({\n\t\t\t\t\ttype: 'manyHasOne',\n\t\t\t\t\tentity: entityObj, //\n\t\t\t\t\trelation: relationObj,\n\t\t\t\t\ttargetEntity: targetEntity,\n\t\t\t\t\ttargetRelation: targetRelation as Model.OneHasManyRelation,\n\t\t\t\t})\n\t\t\tdefault:\n\t\t\t\treturn assertNever(relationObj)\n\t\t}\n\t}\n\n\tthrow new Error('Invalid relation type')\n}\n\nexport const isRelation = (field: Model.AnyField): field is Model.AnyRelation => {\n\treturn isIt<Model.Relation>(field, 'target')\n}\n\nexport const isInverseRelation = (relation: Model.Relation): relation is Model.InverseRelation => {\n\treturn (relation as Model.InverseRelation).ownedBy !== undefined\n}\n\nexport const isOwningRelation = (relation: Model.Relation): relation is Model.OwningRelation => {\n\treturn !isInverseRelation(relation)\n}\n\nexport const isColumn = (field: Model.AnyField): field is Model.AnyColumn => isIt<Model.AnyColumn>(field, 'columnType')\n\nexport const emptyModelSchema: Model.Schema = { entities: {}, enums: {} }\n"],"names":["ModelErrorCode","schema","entity","isIt","Model","assertNever"],"mappings":"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"}
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
import { assertNever } from "../utils/assertNever.js";
|
|
2
|
+
import { isIt } from "../utils/isIt.js";
|
|
3
|
+
import { Model } from "@contember/schema";
|
|
4
|
+
var ModelErrorCode = /* @__PURE__ */ ((ModelErrorCode2) => {
|
|
5
|
+
ModelErrorCode2["ENTITY_NOT_FOUND"] = "entityNotFound";
|
|
6
|
+
ModelErrorCode2["FIELD_NOT_FOUND"] = "fieldNotFound";
|
|
7
|
+
ModelErrorCode2["NOT_RELATION"] = "notRelation";
|
|
8
|
+
ModelErrorCode2["NOT_OWNING_SIDE"] = "notOwningSide";
|
|
9
|
+
return ModelErrorCode2;
|
|
10
|
+
})(ModelErrorCode || {});
|
|
11
|
+
class ModelError extends Error {
|
|
12
|
+
constructor(code, message) {
|
|
13
|
+
super(message);
|
|
14
|
+
this.code = code;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
const createEntityNotFoundError = (entityName) => new ModelError("entityNotFound", `Entity ${entityName} not found`);
|
|
18
|
+
const createFieldNotFoundError = (entityName, fieldName) => new ModelError("fieldNotFound", `Field ${fieldName} of entity ${entityName} not found`);
|
|
19
|
+
const getEntity = (schema, entityName) => {
|
|
20
|
+
const entity = schema.entities[entityName];
|
|
21
|
+
if (!entity) {
|
|
22
|
+
throw createEntityNotFoundError(entityName);
|
|
23
|
+
}
|
|
24
|
+
return entity;
|
|
25
|
+
};
|
|
26
|
+
const getField = (entity, fieldName) => {
|
|
27
|
+
const field = entity.fields[fieldName];
|
|
28
|
+
if (!field) {
|
|
29
|
+
throw createFieldNotFoundError(entity.name, fieldName);
|
|
30
|
+
}
|
|
31
|
+
return field;
|
|
32
|
+
};
|
|
33
|
+
const getColumnName = (schema, entity, fieldName) => {
|
|
34
|
+
return acceptFieldVisitor(schema, entity, fieldName, {
|
|
35
|
+
visitColumn: ({ column }) => column.columnName,
|
|
36
|
+
visitRelation: ({ entity: entity2, relation }) => {
|
|
37
|
+
if (isIt(relation, "joiningColumn")) {
|
|
38
|
+
return relation.joiningColumn.columnName;
|
|
39
|
+
}
|
|
40
|
+
throw new ModelError(
|
|
41
|
+
"notOwningSide",
|
|
42
|
+
`Field ${relation.name} of entity ${entity2.name} is not an owning side`
|
|
43
|
+
);
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
};
|
|
47
|
+
const tryGetColumnName = (schema, entity, fieldName) => {
|
|
48
|
+
try {
|
|
49
|
+
return getColumnName(schema, entity, fieldName);
|
|
50
|
+
} catch (e) {
|
|
51
|
+
if (e instanceof ModelError && e.code === "notOwningSide") {
|
|
52
|
+
return void 0;
|
|
53
|
+
}
|
|
54
|
+
throw e;
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
const getColumnType = (schema, entity, fieldName) => {
|
|
58
|
+
return acceptFieldVisitor(schema, entity, fieldName, {
|
|
59
|
+
// TODO solve enum handling properly maybe we should distinguish between domain and column type
|
|
60
|
+
visitColumn: ({ column }) => column.type === Model.ColumnType.Enum ? "text" : column.columnType,
|
|
61
|
+
visitRelation: ({ entity: entity2, relation, targetEntity }) => {
|
|
62
|
+
if (isIt(relation, "joiningColumn")) {
|
|
63
|
+
return getColumnType(schema, targetEntity, targetEntity.primary);
|
|
64
|
+
}
|
|
65
|
+
throw new ModelError(
|
|
66
|
+
"notOwningSide",
|
|
67
|
+
`Field ${relation.name} of entity ${entity2.name} is not an owning side`
|
|
68
|
+
);
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
};
|
|
72
|
+
const getTargetEntity = (schema, entity, relationName) => {
|
|
73
|
+
return acceptFieldVisitor(schema, entity, relationName, {
|
|
74
|
+
visitColumn: () => null,
|
|
75
|
+
visitRelation: ({ targetEntity }) => targetEntity
|
|
76
|
+
});
|
|
77
|
+
};
|
|
78
|
+
const acceptEveryFieldVisitor = (schema, entity, visitor) => {
|
|
79
|
+
const entityObj = typeof entity === "string" ? getEntity(schema, entity) : entity;
|
|
80
|
+
const result = {};
|
|
81
|
+
for (const field in entityObj.fields) {
|
|
82
|
+
result[field] = acceptFieldVisitor(schema, entityObj, field, visitor);
|
|
83
|
+
}
|
|
84
|
+
return result;
|
|
85
|
+
};
|
|
86
|
+
const acceptFieldVisitor = (schema, entity, field, visitor) => {
|
|
87
|
+
const entityObj = typeof entity === "string" ? getEntity(schema, entity) : entity;
|
|
88
|
+
const fieldObj = typeof field === "string" ? entityObj.fields[field] : field;
|
|
89
|
+
if (!fieldObj) {
|
|
90
|
+
throw createFieldNotFoundError(entityObj.name, typeof field === "string" ? field : "unknown");
|
|
91
|
+
}
|
|
92
|
+
if (isIt(fieldObj, "columnType")) {
|
|
93
|
+
return visitor.visitColumn({
|
|
94
|
+
entity: entityObj,
|
|
95
|
+
column: fieldObj
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
if (isIt(visitor, "visitRelation")) {
|
|
99
|
+
return acceptRelationTypeVisitor(schema, entityObj, fieldObj, {
|
|
100
|
+
visitManyHasManyInverse: visitor.visitRelation.bind(visitor),
|
|
101
|
+
visitManyHasManyOwning: visitor.visitRelation.bind(visitor),
|
|
102
|
+
visitOneHasMany: visitor.visitRelation.bind(visitor),
|
|
103
|
+
visitOneHasOneInverse: visitor.visitRelation.bind(visitor),
|
|
104
|
+
visitOneHasOneOwning: visitor.visitRelation.bind(visitor),
|
|
105
|
+
visitManyHasOne: visitor.visitRelation.bind(visitor)
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
if (isIt(visitor, "visitHasMany")) {
|
|
109
|
+
return acceptRelationTypeVisitor(schema, entityObj, fieldObj, {
|
|
110
|
+
visitManyHasManyInverse: visitor.visitHasMany.bind(visitor),
|
|
111
|
+
visitManyHasManyOwning: visitor.visitHasMany.bind(visitor),
|
|
112
|
+
visitOneHasMany: visitor.visitHasMany.bind(visitor),
|
|
113
|
+
visitOneHasOneInverse: visitor.visitHasOne.bind(visitor),
|
|
114
|
+
visitOneHasOneOwning: visitor.visitHasOne.bind(visitor),
|
|
115
|
+
visitManyHasOne: visitor.visitHasOne.bind(visitor)
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
if (isIt(visitor, "visitManyHasManyInverse")) {
|
|
119
|
+
return acceptRelationTypeVisitor(schema, entityObj, fieldObj, visitor);
|
|
120
|
+
}
|
|
121
|
+
throw new Error();
|
|
122
|
+
};
|
|
123
|
+
const acceptRelationTypeVisitor = (schema, entity, relation, visitor) => {
|
|
124
|
+
const entityObj = typeof entity === "string" ? getEntity(schema, entity) : entity;
|
|
125
|
+
const relationObj = typeof relation === "string" ? entityObj.fields[relation] : relation;
|
|
126
|
+
if (!relationObj) {
|
|
127
|
+
throw createFieldNotFoundError(entityObj.name, typeof relation === "string" ? relation : "unknown");
|
|
128
|
+
}
|
|
129
|
+
if (!isRelation(relationObj)) {
|
|
130
|
+
throw new ModelError(
|
|
131
|
+
"notRelation",
|
|
132
|
+
`Field ${relationObj.name} of entity ${entityObj.name} is not a relation`
|
|
133
|
+
);
|
|
134
|
+
}
|
|
135
|
+
const targetEntity = getEntity(schema, relationObj.target);
|
|
136
|
+
if (isInverseRelation(relationObj)) {
|
|
137
|
+
const targetRelation = targetEntity.fields[relationObj.ownedBy];
|
|
138
|
+
switch (relationObj.type) {
|
|
139
|
+
case Model.RelationType.ManyHasMany:
|
|
140
|
+
return visitor.visitManyHasManyInverse(
|
|
141
|
+
{
|
|
142
|
+
type: "manyHasManyInverse",
|
|
143
|
+
entity: entityObj,
|
|
144
|
+
relation: relationObj,
|
|
145
|
+
targetEntity,
|
|
146
|
+
targetRelation
|
|
147
|
+
}
|
|
148
|
+
);
|
|
149
|
+
case Model.RelationType.OneHasOne:
|
|
150
|
+
return visitor.visitOneHasOneInverse({
|
|
151
|
+
type: "oneHasOneInverse",
|
|
152
|
+
entity: entityObj,
|
|
153
|
+
relation: relationObj,
|
|
154
|
+
targetEntity,
|
|
155
|
+
targetRelation
|
|
156
|
+
});
|
|
157
|
+
case Model.RelationType.OneHasMany:
|
|
158
|
+
return visitor.visitOneHasMany({
|
|
159
|
+
type: "oneHasMany",
|
|
160
|
+
entity: entityObj,
|
|
161
|
+
relation: relationObj,
|
|
162
|
+
targetEntity,
|
|
163
|
+
targetRelation
|
|
164
|
+
});
|
|
165
|
+
default:
|
|
166
|
+
return assertNever();
|
|
167
|
+
}
|
|
168
|
+
} else if (isOwningRelation(relationObj)) {
|
|
169
|
+
const targetRelation = relationObj.inversedBy ? targetEntity.fields[relationObj.inversedBy] : null;
|
|
170
|
+
switch (relationObj.type) {
|
|
171
|
+
case Model.RelationType.ManyHasMany:
|
|
172
|
+
return visitor.visitManyHasManyOwning({
|
|
173
|
+
type: "manyHasManyOwning",
|
|
174
|
+
entity: entityObj,
|
|
175
|
+
relation: relationObj,
|
|
176
|
+
targetEntity,
|
|
177
|
+
targetRelation
|
|
178
|
+
});
|
|
179
|
+
case Model.RelationType.OneHasOne:
|
|
180
|
+
return visitor.visitOneHasOneOwning({
|
|
181
|
+
type: "oneHasOneOwning",
|
|
182
|
+
entity: entityObj,
|
|
183
|
+
relation: relationObj,
|
|
184
|
+
targetEntity,
|
|
185
|
+
targetRelation
|
|
186
|
+
});
|
|
187
|
+
case Model.RelationType.ManyHasOne:
|
|
188
|
+
return visitor.visitManyHasOne({
|
|
189
|
+
type: "manyHasOne",
|
|
190
|
+
entity: entityObj,
|
|
191
|
+
//
|
|
192
|
+
relation: relationObj,
|
|
193
|
+
targetEntity,
|
|
194
|
+
targetRelation
|
|
195
|
+
});
|
|
196
|
+
default:
|
|
197
|
+
return assertNever();
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
throw new Error("Invalid relation type");
|
|
201
|
+
};
|
|
202
|
+
const isRelation = (field) => {
|
|
203
|
+
return isIt(field, "target");
|
|
204
|
+
};
|
|
205
|
+
const isInverseRelation = (relation) => {
|
|
206
|
+
return relation.ownedBy !== void 0;
|
|
207
|
+
};
|
|
208
|
+
const isOwningRelation = (relation) => {
|
|
209
|
+
return !isInverseRelation(relation);
|
|
210
|
+
};
|
|
211
|
+
const isColumn = (field) => isIt(field, "columnType");
|
|
212
|
+
const emptyModelSchema = { entities: {}, enums: {} };
|
|
213
|
+
export {
|
|
214
|
+
ModelError,
|
|
215
|
+
ModelErrorCode,
|
|
216
|
+
acceptEveryFieldVisitor,
|
|
217
|
+
acceptFieldVisitor,
|
|
218
|
+
acceptRelationTypeVisitor,
|
|
219
|
+
emptyModelSchema,
|
|
220
|
+
getColumnName,
|
|
221
|
+
getColumnType,
|
|
222
|
+
getEntity,
|
|
223
|
+
getField,
|
|
224
|
+
getTargetEntity,
|
|
225
|
+
isColumn,
|
|
226
|
+
isInverseRelation,
|
|
227
|
+
isOwningRelation,
|
|
228
|
+
isRelation,
|
|
229
|
+
tryGetColumnName
|
|
230
|
+
};
|
|
231
|
+
//# sourceMappingURL=modelUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modelUtils.js","sources":["../../../../../packages/schema-utils/src/model/modelUtils.ts"],"sourcesContent":["import { assertNever, isIt } from '../utils'\nimport { Model } from '@contember/schema'\n\nexport enum ModelErrorCode {\n\tENTITY_NOT_FOUND = 'entityNotFound',\n\tFIELD_NOT_FOUND = 'fieldNotFound',\n\tNOT_RELATION = 'notRelation',\n\tNOT_OWNING_SIDE = 'notOwningSide',\n}\n\nexport class ModelError extends Error {\n\tconstructor(public readonly code: ModelErrorCode, message: string) {\n\t\tsuper(message)\n\t}\n}\n\nconst createEntityNotFoundError = (entityName: string) =>\n\tnew ModelError(ModelErrorCode.ENTITY_NOT_FOUND, `Entity ${entityName} not found`)\n\nconst createFieldNotFoundError = (entityName: string, fieldName: string) =>\n\tnew ModelError(ModelErrorCode.FIELD_NOT_FOUND, `Field ${fieldName} of entity ${entityName} not found`)\n\nexport const getEntity = (schema: Model.Schema, entityName: string): Model.Entity => {\n\tconst entity = schema.entities[entityName]\n\tif (!entity) {\n\t\tthrow createEntityNotFoundError(entityName)\n\t}\n\treturn entity\n}\n\nexport const getField = (entity: Model.Entity, fieldName: string): Model.AnyField => {\n\tconst field = entity.fields[fieldName]\n\tif (!field) {\n\t\tthrow createFieldNotFoundError(entity.name, fieldName)\n\t}\n\treturn field\n}\n\nexport const getColumnName = (schema: Model.Schema, entity: Model.Entity, fieldName: string) => {\n\treturn acceptFieldVisitor(schema, entity, fieldName, {\n\t\tvisitColumn: ({ column }) => column.columnName,\n\t\tvisitRelation: ({ entity, relation }) => {\n\t\t\tif (isIt<Model.JoiningColumnRelation>(relation, 'joiningColumn')) {\n\t\t\t\treturn relation.joiningColumn.columnName\n\t\t\t}\n\t\t\tthrow new ModelError(\n\t\t\t\tModelErrorCode.NOT_OWNING_SIDE,\n\t\t\t\t`Field ${relation.name} of entity ${entity.name} is not an owning side`,\n\t\t\t)\n\t\t},\n\t})\n}\n\nexport const tryGetColumnName = (schema: Model.Schema, entity: Model.Entity, fieldName: string) => {\n\ttry {\n\t\treturn getColumnName(schema, entity, fieldName)\n\t} catch (e) {\n\t\tif (e instanceof ModelError && e.code === ModelErrorCode.NOT_OWNING_SIDE) {\n\t\t\treturn undefined\n\t\t}\n\t\tthrow e\n\t}\n}\n\nexport const getColumnType = (schema: Model.Schema, entity: Model.Entity, fieldName: string): string => {\n\treturn acceptFieldVisitor(schema, entity, fieldName, {\n\t\t// TODO solve enum handling properly maybe we should distinguish between domain and column type\n\t\tvisitColumn: ({ column }) => (column.type === Model.ColumnType.Enum ? 'text' : column.columnType),\n\t\tvisitRelation: ({ entity, relation, targetEntity }) => {\n\t\t\tif (isIt<Model.JoiningColumnRelation>(relation, 'joiningColumn')) {\n\t\t\t\treturn getColumnType(schema, targetEntity, targetEntity.primary)\n\t\t\t}\n\t\t\tthrow new ModelError(\n\t\t\t\tModelErrorCode.NOT_OWNING_SIDE,\n\t\t\t\t`Field ${relation.name} of entity ${entity.name} is not an owning side`,\n\t\t\t)\n\t\t},\n\t})\n}\n\nexport const getTargetEntity = (\n\tschema: Model.Schema,\n\tentity: Model.Entity,\n\trelationName: string,\n): Model.Entity | null => {\n\treturn acceptFieldVisitor(schema, entity, relationName, {\n\t\tvisitColumn: () => null,\n\t\tvisitRelation: ({ targetEntity }) => targetEntity,\n\t})\n}\n\nexport const acceptEveryFieldVisitor = <T>(\n\tschema: Model.Schema,\n\tentity: string | Model.Entity,\n\tvisitor: Model.FieldVisitor<T>,\n): { [fieldName: string]: T } => {\n\tconst entityObj: Model.Entity = typeof entity === 'string' ? getEntity(schema, entity) : entity\n\n\tconst result: { [fieldName: string]: T } = {}\n\tfor (const field in entityObj.fields) {\n\t\tresult[field] = acceptFieldVisitor(schema, entityObj, field, visitor)\n\t}\n\treturn result\n}\n\nexport const acceptFieldVisitor = <T>(\n\tschema: Model.Schema,\n\tentity: string | Model.Entity,\n\tfield: string | Model.AnyField,\n\tvisitor: Model.FieldVisitor<T>,\n): T => {\n\tconst entityObj: Model.Entity = typeof entity === 'string' ? getEntity(schema, entity) : entity\n\n\tconst fieldObj: Model.AnyField = typeof field === 'string' ? entityObj.fields[field] : field\n\tif (!fieldObj) {\n\t\tthrow createFieldNotFoundError(entityObj.name, typeof field === 'string' ? field : 'unknown')\n\t}\n\n\tif (isIt<Model.AnyColumn>(fieldObj, 'columnType')) {\n\t\treturn visitor.visitColumn({\n\t\t\tentity: entityObj,\n\t\t\tcolumn: fieldObj,\n\t\t})\n\t}\n\n\tif (isIt<Model.ColumnVisitor<T> & Model.RelationVisitor<T>>(visitor, 'visitRelation')) {\n\t\treturn acceptRelationTypeVisitor(schema, entityObj, fieldObj, {\n\t\t\tvisitManyHasManyInverse: visitor.visitRelation.bind(visitor),\n\t\t\tvisitManyHasManyOwning: visitor.visitRelation.bind(visitor),\n\t\t\tvisitOneHasMany: visitor.visitRelation.bind(visitor),\n\t\t\tvisitOneHasOneInverse: visitor.visitRelation.bind(visitor),\n\t\t\tvisitOneHasOneOwning: visitor.visitRelation.bind(visitor),\n\t\t\tvisitManyHasOne: visitor.visitRelation.bind(visitor),\n\t\t})\n\t}\n\n\tif (isIt<Model.ColumnVisitor<T> & Model.RelationByGenericTypeVisitor<T>>(visitor, 'visitHasMany')) {\n\t\treturn acceptRelationTypeVisitor(schema, entityObj, fieldObj, {\n\t\t\tvisitManyHasManyInverse: visitor.visitHasMany.bind(visitor),\n\t\t\tvisitManyHasManyOwning: visitor.visitHasMany.bind(visitor),\n\t\t\tvisitOneHasMany: visitor.visitHasMany.bind(visitor),\n\t\t\tvisitOneHasOneInverse: visitor.visitHasOne.bind(visitor),\n\t\t\tvisitOneHasOneOwning: visitor.visitHasOne.bind(visitor),\n\t\t\tvisitManyHasOne: visitor.visitHasOne.bind(visitor),\n\t\t})\n\t}\n\n\tif (isIt<Model.ColumnVisitor<T> & Model.RelationByTypeVisitor<T>>(visitor, 'visitManyHasManyInverse')) {\n\t\treturn acceptRelationTypeVisitor(schema, entityObj, fieldObj, visitor)\n\t}\n\n\tthrow new Error()\n}\n\nexport const acceptRelationTypeVisitor = <T>(\n\tschema: Model.Schema,\n\tentity: string | Model.Entity,\n\trelation: string | Model.AnyRelation,\n\tvisitor: Model.RelationByTypeVisitor<T>,\n): T => {\n\tconst entityObj = typeof entity === 'string' ? getEntity(schema, entity) : entity\n\n\tconst relationObj: Model.AnyField = typeof relation === 'string' ? entityObj.fields[relation] : relation\n\tif (!relationObj) {\n\t\tthrow createFieldNotFoundError(entityObj.name, typeof relation === 'string' ? relation : 'unknown')\n\t}\n\n\tif (!isRelation(relationObj)) {\n\t\tthrow new ModelError(\n\t\t\tModelErrorCode.NOT_RELATION,\n\t\t\t`Field ${relationObj.name} of entity ${entityObj.name} is not a relation`,\n\t\t)\n\t}\n\n\tconst targetEntity = getEntity(schema, relationObj.target)\n\n\tif (isInverseRelation(relationObj)) {\n\t\tconst targetRelation = targetEntity.fields[relationObj.ownedBy]\n\t\tswitch (relationObj.type) {\n\t\t\tcase Model.RelationType.ManyHasMany:\n\t\t\t\treturn visitor.visitManyHasManyInverse({\n\t\t\t\t\ttype: 'manyHasManyInverse',\n\t\t\t\t\tentity: entityObj,\n\t\t\t\t\trelation: relationObj,\n\t\t\t\t\ttargetEntity: targetEntity,\n\t\t\t\t\ttargetRelation: targetRelation as Model.ManyHasManyOwningRelation,\n\t\t\t\t},\n\t\t\t\t)\n\t\t\tcase Model.RelationType.OneHasOne:\n\t\t\t\treturn visitor.visitOneHasOneInverse({\n\t\t\t\t\ttype: 'oneHasOneInverse',\n\t\t\t\t\tentity: entityObj,\n\t\t\t\t\trelation: relationObj,\n\t\t\t\t\ttargetEntity: targetEntity,\n\t\t\t\t\ttargetRelation: targetRelation as Model.OneHasOneOwningRelation,\n\t\t\t\t})\n\t\t\tcase Model.RelationType.OneHasMany:\n\t\t\t\treturn visitor.visitOneHasMany({\n\t\t\t\t\ttype: 'oneHasMany',\n\t\t\t\t\tentity: entityObj,\n\t\t\t\t\trelation: relationObj,\n\t\t\t\t\ttargetEntity: targetEntity,\n\t\t\t\t\ttargetRelation: targetRelation as Model.ManyHasOneRelation,\n\t\t\t\t})\n\t\t\tdefault:\n\t\t\t\treturn assertNever(relationObj)\n\t\t}\n\t} else if (isOwningRelation(relationObj)) {\n\t\tconst targetRelation = relationObj.inversedBy ? targetEntity.fields[relationObj.inversedBy] : null\n\n\t\tswitch (relationObj.type) {\n\t\t\tcase Model.RelationType.ManyHasMany:\n\t\t\t\treturn visitor.visitManyHasManyOwning({\n\t\t\t\t\ttype: 'manyHasManyOwning',\n\t\t\t\t\tentity: entityObj,\n\t\t\t\t\trelation: relationObj,\n\t\t\t\t\ttargetEntity: targetEntity,\n\t\t\t\t\ttargetRelation: targetRelation as Model.ManyHasManyInverseRelation,\n\t\t\t\t})\n\t\t\tcase Model.RelationType.OneHasOne:\n\t\t\t\treturn visitor.visitOneHasOneOwning({\n\t\t\t\t\ttype: 'oneHasOneOwning',\n\t\t\t\t\tentity: entityObj,\n\t\t\t\t\trelation: relationObj,\n\t\t\t\t\ttargetEntity: targetEntity,\n\t\t\t\t\ttargetRelation: targetRelation as Model.OneHasOneInverseRelation,\n\t\t\t\t})\n\t\t\tcase Model.RelationType.ManyHasOne:\n\t\t\t\treturn visitor.visitManyHasOne({\n\t\t\t\t\ttype: 'manyHasOne',\n\t\t\t\t\tentity: entityObj, //\n\t\t\t\t\trelation: relationObj,\n\t\t\t\t\ttargetEntity: targetEntity,\n\t\t\t\t\ttargetRelation: targetRelation as Model.OneHasManyRelation,\n\t\t\t\t})\n\t\t\tdefault:\n\t\t\t\treturn assertNever(relationObj)\n\t\t}\n\t}\n\n\tthrow new Error('Invalid relation type')\n}\n\nexport const isRelation = (field: Model.AnyField): field is Model.AnyRelation => {\n\treturn isIt<Model.Relation>(field, 'target')\n}\n\nexport const isInverseRelation = (relation: Model.Relation): relation is Model.InverseRelation => {\n\treturn (relation as Model.InverseRelation).ownedBy !== undefined\n}\n\nexport const isOwningRelation = (relation: Model.Relation): relation is Model.OwningRelation => {\n\treturn !isInverseRelation(relation)\n}\n\nexport const isColumn = (field: Model.AnyField): field is Model.AnyColumn => isIt<Model.AnyColumn>(field, 'columnType')\n\nexport const emptyModelSchema: Model.Schema = { entities: {}, enums: {} }\n"],"names":["ModelErrorCode","entity"],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const schema = require("@contember/schema");
|
|
4
|
+
const assertNever = require("../utils/assertNever.cjs");
|
|
5
|
+
const resolveDefaultColumnType = (type) => {
|
|
6
|
+
switch (type) {
|
|
7
|
+
case schema.Model.ColumnType.Int:
|
|
8
|
+
return "integer";
|
|
9
|
+
case schema.Model.ColumnType.Double:
|
|
10
|
+
return "double precision";
|
|
11
|
+
case schema.Model.ColumnType.String:
|
|
12
|
+
return "text";
|
|
13
|
+
case schema.Model.ColumnType.Uuid:
|
|
14
|
+
return "uuid";
|
|
15
|
+
case schema.Model.ColumnType.Bool:
|
|
16
|
+
return "boolean";
|
|
17
|
+
case schema.Model.ColumnType.DateTime:
|
|
18
|
+
return "timestamptz";
|
|
19
|
+
case schema.Model.ColumnType.Date:
|
|
20
|
+
return "date";
|
|
21
|
+
case schema.Model.ColumnType.Json:
|
|
22
|
+
return "jsonb";
|
|
23
|
+
default:
|
|
24
|
+
return assertNever.assertNever();
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
exports.resolveDefaultColumnType = resolveDefaultColumnType;
|
|
28
|
+
//# sourceMappingURL=resolveDefaultColumnType.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveDefaultColumnType.cjs","sources":["../../../../../packages/schema-utils/src/model/resolveDefaultColumnType.ts"],"sourcesContent":["import { Model } from '@contember/schema'\nimport { assertNever } from '../utils'\n\nexport const resolveDefaultColumnType = (type: Exclude<Model.ColumnType, Model.ColumnType.Enum>): string => {\n\tswitch (type) {\n\t\tcase Model.ColumnType.Int:\n\t\t\treturn 'integer'\n\t\tcase Model.ColumnType.Double:\n\t\t\treturn 'double precision'\n\t\tcase Model.ColumnType.String:\n\t\t\treturn 'text'\n\t\tcase Model.ColumnType.Uuid:\n\t\t\treturn 'uuid'\n\t\tcase Model.ColumnType.Bool:\n\t\t\treturn 'boolean'\n\t\tcase Model.ColumnType.DateTime:\n\t\t\treturn 'timestamptz'\n\t\tcase Model.ColumnType.Date:\n\t\t\treturn 'date'\n\t\tcase Model.ColumnType.Json:\n\t\t\treturn 'jsonb'\n\t\tdefault:\n\t\t\treturn assertNever(type)\n\t}\n}\n"],"names":["Model","assertNever"],"mappings":";;;;AAGa,MAAA,2BAA2B,CAAC,SAAmE;AAC3G,UAAQ,MAAM;AAAA,IACb,KAAKA,OAAAA,MAAM,WAAW;AACd,aAAA;AAAA,IACR,KAAKA,OAAAA,MAAM,WAAW;AACd,aAAA;AAAA,IACR,KAAKA,OAAAA,MAAM,WAAW;AACd,aAAA;AAAA,IACR,KAAKA,OAAAA,MAAM,WAAW;AACd,aAAA;AAAA,IACR,KAAKA,OAAAA,MAAM,WAAW;AACd,aAAA;AAAA,IACR,KAAKA,OAAAA,MAAM,WAAW;AACd,aAAA;AAAA,IACR,KAAKA,OAAAA,MAAM,WAAW;AACd,aAAA;AAAA,IACR,KAAKA,OAAAA,MAAM,WAAW;AACd,aAAA;AAAA,IACR;AACC,aAAOC,YAAAA,YAAgB;AAAA,EACzB;AACD;;"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Model } from "@contember/schema";
|
|
2
|
+
import { assertNever } from "../utils/assertNever.js";
|
|
3
|
+
const resolveDefaultColumnType = (type) => {
|
|
4
|
+
switch (type) {
|
|
5
|
+
case Model.ColumnType.Int:
|
|
6
|
+
return "integer";
|
|
7
|
+
case Model.ColumnType.Double:
|
|
8
|
+
return "double precision";
|
|
9
|
+
case Model.ColumnType.String:
|
|
10
|
+
return "text";
|
|
11
|
+
case Model.ColumnType.Uuid:
|
|
12
|
+
return "uuid";
|
|
13
|
+
case Model.ColumnType.Bool:
|
|
14
|
+
return "boolean";
|
|
15
|
+
case Model.ColumnType.DateTime:
|
|
16
|
+
return "timestamptz";
|
|
17
|
+
case Model.ColumnType.Date:
|
|
18
|
+
return "date";
|
|
19
|
+
case Model.ColumnType.Json:
|
|
20
|
+
return "jsonb";
|
|
21
|
+
default:
|
|
22
|
+
return assertNever();
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
export {
|
|
26
|
+
resolveDefaultColumnType
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=resolveDefaultColumnType.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveDefaultColumnType.js","sources":["../../../../../packages/schema-utils/src/model/resolveDefaultColumnType.ts"],"sourcesContent":["import { Model } from '@contember/schema'\nimport { assertNever } from '../utils'\n\nexport const resolveDefaultColumnType = (type: Exclude<Model.ColumnType, Model.ColumnType.Enum>): string => {\n\tswitch (type) {\n\t\tcase Model.ColumnType.Int:\n\t\t\treturn 'integer'\n\t\tcase Model.ColumnType.Double:\n\t\t\treturn 'double precision'\n\t\tcase Model.ColumnType.String:\n\t\t\treturn 'text'\n\t\tcase Model.ColumnType.Uuid:\n\t\t\treturn 'uuid'\n\t\tcase Model.ColumnType.Bool:\n\t\t\treturn 'boolean'\n\t\tcase Model.ColumnType.DateTime:\n\t\t\treturn 'timestamptz'\n\t\tcase Model.ColumnType.Date:\n\t\t\treturn 'date'\n\t\tcase Model.ColumnType.Json:\n\t\t\treturn 'jsonb'\n\t\tdefault:\n\t\t\treturn assertNever(type)\n\t}\n}\n"],"names":[],"mappings":";;AAGa,MAAA,2BAA2B,CAAC,SAAmE;AAC3G,UAAQ,MAAM;AAAA,IACb,KAAK,MAAM,WAAW;AACd,aAAA;AAAA,IACR,KAAK,MAAM,WAAW;AACd,aAAA;AAAA,IACR,KAAK,MAAM,WAAW;AACd,aAAA;AAAA,IACR,KAAK,MAAM,WAAW;AACd,aAAA;AAAA,IACR,KAAK,MAAM,WAAW;AACd,aAAA;AAAA,IACR,KAAK,MAAM,WAAW;AACd,aAAA;AAAA,IACR,KAAK,MAAM,WAAW;AACd,aAAA;AAAA,IACR,KAAK,MAAM,WAAW;AACd,aAAA;AAAA,IACR;AACC,aAAO,YAAgB;AAAA,EACzB;AACD;"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const filterSchemaByStage = (schema, stageSlug) => {
|
|
4
|
+
const roles = Object.entries(schema.acl.roles).filter(
|
|
5
|
+
([, value]) => !value.stages || value.stages === "*" || !!value.stages.find((pattern) => !!new RegExp(pattern).exec(stageSlug))
|
|
6
|
+
).map(([name, definition], index, roles2) => [
|
|
7
|
+
name,
|
|
8
|
+
{
|
|
9
|
+
...definition,
|
|
10
|
+
...definition.inherits ? {
|
|
11
|
+
inherits: definition.inherits.filter((it) => roles2.map(([role]) => role).includes(it))
|
|
12
|
+
} : {}
|
|
13
|
+
}
|
|
14
|
+
]);
|
|
15
|
+
return {
|
|
16
|
+
...schema,
|
|
17
|
+
acl: {
|
|
18
|
+
...schema.acl,
|
|
19
|
+
roles: Object.fromEntries(roles)
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
exports.filterSchemaByStage = filterSchemaByStage;
|
|
24
|
+
//# sourceMappingURL=schemaFilter.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemaFilter.cjs","sources":["../../../../packages/schema-utils/src/schemaFilter.ts"],"sourcesContent":["import { Schema } from '@contember/schema'\n\nexport const filterSchemaByStage = <S extends Schema>(schema: S, stageSlug: string): S => {\n\tconst roles = Object.entries(schema.acl.roles)\n\t\t.filter(\n\t\t\t([, value]) =>\n\t\t\t\t!value.stages\n\t\t\t\t|| value.stages === '*'\n\t\t\t\t|| !!value.stages.find(pattern => !!new RegExp(pattern).exec(stageSlug)),\n\t\t)\n\t\t.map(([name, definition], index, roles) => [\n\t\t\tname,\n\t\t\t{\n\t\t\t\t...definition,\n\t\t\t\t...(definition.inherits\n\t\t\t\t\t? {\n\t\t\t\t\t\tinherits: definition.inherits.filter(it => roles.map(([role]) => role).includes(it)),\n\t\t\t\t\t }\n\t\t\t\t\t: {}),\n\t\t\t},\n\t\t])\n\treturn {\n\t\t...schema,\n\t\tacl: {\n\t\t\t...schema.acl,\n\t\t\troles: Object.fromEntries(roles),\n\t\t},\n\t}\n}\n"],"names":["roles"],"mappings":";;AAEa,MAAA,sBAAsB,CAAmB,QAAW,cAAyB;AACzF,QAAM,QAAQ,OAAO,QAAQ,OAAO,IAAI,KAAK,EAC3C;AAAA,IACA,CAAC,CAAG,EAAA,KAAK,MACR,CAAC,MAAM,UACJ,MAAM,WAAW,OACjB,CAAC,CAAC,MAAM,OAAO,KAAK,CAAA,YAAW,CAAC,CAAC,IAAI,OAAO,OAAO,EAAE,KAAK,SAAS,CAAC;AAAA,EAAA,EAExE,IAAI,CAAC,CAAC,MAAM,UAAU,GAAG,OAAOA,WAAU;AAAA,IAC1C;AAAA,IACA;AAAA,MACC,GAAG;AAAA,MACH,GAAI,WAAW,WACZ;AAAA,QACD,UAAU,WAAW,SAAS,OAAO,QAAMA,OAAM,IAAI,CAAC,CAAC,IAAI,MAAM,IAAI,EAAE,SAAS,EAAE,CAAC;AAAA,MAAA,IAElF,CAAC;AAAA,IACL;AAAA,EAAA,CACA;AACK,SAAA;AAAA,IACN,GAAG;AAAA,IACH,KAAK;AAAA,MACJ,GAAG,OAAO;AAAA,MACV,OAAO,OAAO,YAAY,KAAK;AAAA,IAChC;AAAA,EAAA;AAEF;;"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
const filterSchemaByStage = (schema, stageSlug) => {
|
|
2
|
+
const roles = Object.entries(schema.acl.roles).filter(
|
|
3
|
+
([, value]) => !value.stages || value.stages === "*" || !!value.stages.find((pattern) => !!new RegExp(pattern).exec(stageSlug))
|
|
4
|
+
).map(([name, definition], index, roles2) => [
|
|
5
|
+
name,
|
|
6
|
+
{
|
|
7
|
+
...definition,
|
|
8
|
+
...definition.inherits ? {
|
|
9
|
+
inherits: definition.inherits.filter((it) => roles2.map(([role]) => role).includes(it))
|
|
10
|
+
} : {}
|
|
11
|
+
}
|
|
12
|
+
]);
|
|
13
|
+
return {
|
|
14
|
+
...schema,
|
|
15
|
+
acl: {
|
|
16
|
+
...schema.acl,
|
|
17
|
+
roles: Object.fromEntries(roles)
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
export {
|
|
22
|
+
filterSchemaByStage
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=schemaFilter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemaFilter.js","sources":["../../../../packages/schema-utils/src/schemaFilter.ts"],"sourcesContent":["import { Schema } from '@contember/schema'\n\nexport const filterSchemaByStage = <S extends Schema>(schema: S, stageSlug: string): S => {\n\tconst roles = Object.entries(schema.acl.roles)\n\t\t.filter(\n\t\t\t([, value]) =>\n\t\t\t\t!value.stages\n\t\t\t\t|| value.stages === '*'\n\t\t\t\t|| !!value.stages.find(pattern => !!new RegExp(pattern).exec(stageSlug)),\n\t\t)\n\t\t.map(([name, definition], index, roles) => [\n\t\t\tname,\n\t\t\t{\n\t\t\t\t...definition,\n\t\t\t\t...(definition.inherits\n\t\t\t\t\t? {\n\t\t\t\t\t\tinherits: definition.inherits.filter(it => roles.map(([role]) => role).includes(it)),\n\t\t\t\t\t }\n\t\t\t\t\t: {}),\n\t\t\t},\n\t\t])\n\treturn {\n\t\t...schema,\n\t\tacl: {\n\t\t\t...schema.acl,\n\t\t\troles: Object.fromEntries(roles),\n\t\t},\n\t}\n}\n"],"names":["roles"],"mappings":"AAEa,MAAA,sBAAsB,CAAmB,QAAW,cAAyB;AACzF,QAAM,QAAQ,OAAO,QAAQ,OAAO,IAAI,KAAK,EAC3C;AAAA,IACA,CAAC,CAAG,EAAA,KAAK,MACR,CAAC,MAAM,UACJ,MAAM,WAAW,OACjB,CAAC,CAAC,MAAM,OAAO,KAAK,CAAA,YAAW,CAAC,CAAC,IAAI,OAAO,OAAO,EAAE,KAAK,SAAS,CAAC;AAAA,EAAA,EAExE,IAAI,CAAC,CAAC,MAAM,UAAU,GAAG,OAAOA,WAAU;AAAA,IAC1C;AAAA,IACA;AAAA,MACC,GAAG;AAAA,MACH,GAAI,WAAW,WACZ;AAAA,QACD,UAAU,WAAW,SAAS,OAAO,QAAMA,OAAM,IAAI,CAAC,CAAC,IAAI,MAAM,IAAI,EAAE,SAAS,EAAE,CAAC;AAAA,MAAA,IAElF,CAAC;AAAA,IACL;AAAA,EAAA,CACA;AACK,SAAA;AAAA,IACN,GAAG;AAAA,IACH,KAAK;AAAA,MACJ,GAAG,OAAO;AAAA,MACV,OAAO,OAAO,YAAY,KAAK;AAAA,IAChC;AAAA,EAAA;AAEF;"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const schema = require("@contember/schema");
|
|
4
|
+
const AllowAllPermissionFactory = require("./acl/AllowAllPermissionFactory.cjs");
|
|
5
|
+
const normalizeSchema = (schema$1) => {
|
|
6
|
+
const adminRoleDefinition = schema$1.acl.roles?.[schema.ProjectRole.ADMIN] ?? {};
|
|
7
|
+
const contentAdminRoleDefinition = schema$1.acl.roles?.[schema.ProjectRole.CONTENT_ADMIN] ?? {};
|
|
8
|
+
return {
|
|
9
|
+
...schema$1,
|
|
10
|
+
acl: {
|
|
11
|
+
...schema$1.acl,
|
|
12
|
+
roles: {
|
|
13
|
+
...schema$1.acl.roles,
|
|
14
|
+
[schema.ProjectRole.ADMIN]: {
|
|
15
|
+
stages: "*",
|
|
16
|
+
variables: {},
|
|
17
|
+
entities: new AllowAllPermissionFactory.AllowAllPermissionFactory().create(schema$1.model),
|
|
18
|
+
s3: {
|
|
19
|
+
"**": {
|
|
20
|
+
upload: true,
|
|
21
|
+
read: true
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
content: {
|
|
25
|
+
export: true,
|
|
26
|
+
import: true,
|
|
27
|
+
...adminRoleDefinition.content
|
|
28
|
+
},
|
|
29
|
+
system: {
|
|
30
|
+
export: true,
|
|
31
|
+
import: true,
|
|
32
|
+
...adminRoleDefinition.system
|
|
33
|
+
},
|
|
34
|
+
debug: true,
|
|
35
|
+
...adminRoleDefinition
|
|
36
|
+
},
|
|
37
|
+
[schema.ProjectRole.CONTENT_ADMIN]: {
|
|
38
|
+
stages: "*",
|
|
39
|
+
variables: {},
|
|
40
|
+
entities: new AllowAllPermissionFactory.AllowAllPermissionFactory().create(schema$1.model),
|
|
41
|
+
s3: {
|
|
42
|
+
"**": {
|
|
43
|
+
upload: true,
|
|
44
|
+
read: true
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
content: {
|
|
48
|
+
export: true,
|
|
49
|
+
import: true,
|
|
50
|
+
...contentAdminRoleDefinition.content
|
|
51
|
+
},
|
|
52
|
+
system: {
|
|
53
|
+
history: true,
|
|
54
|
+
export: true,
|
|
55
|
+
import: true,
|
|
56
|
+
...contentAdminRoleDefinition.system
|
|
57
|
+
},
|
|
58
|
+
...contentAdminRoleDefinition
|
|
59
|
+
},
|
|
60
|
+
[schema.ProjectRole.DEPLOYER]: {
|
|
61
|
+
stages: "*",
|
|
62
|
+
entities: {},
|
|
63
|
+
variables: {}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
};
|
|
69
|
+
exports.normalizeSchema = normalizeSchema;
|
|
70
|
+
//# sourceMappingURL=schemaNormalizer.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemaNormalizer.cjs","sources":["../../../../packages/schema-utils/src/schemaNormalizer.ts"],"sourcesContent":["import { Acl, ProjectRole, Schema } from '@contember/schema'\nimport { AllowAllPermissionFactory } from './acl'\n\nexport const normalizeSchema = <S extends Schema>(schema: S): S => {\n\tconst adminRoleDefinition: Partial<Acl.RolePermissions> = schema.acl.roles?.[ProjectRole.ADMIN] ?? {}\n\tconst contentAdminRoleDefinition: Partial<Acl.RolePermissions> = schema.acl.roles?.[ProjectRole.CONTENT_ADMIN] ?? {}\n\n\treturn {\n\t\t...schema,\n\t\tacl: {\n\t\t\t...schema.acl,\n\t\t\troles: {\n\t\t\t\t...schema.acl.roles,\n\t\t\t\t[ProjectRole.ADMIN]: {\n\t\t\t\t\tstages: '*',\n\t\t\t\t\tvariables: {},\n\t\t\t\t\tentities: new AllowAllPermissionFactory().create(schema.model),\n\t\t\t\t\ts3: {\n\t\t\t\t\t\t'**': {\n\t\t\t\t\t\t\tupload: true,\n\t\t\t\t\t\t\tread: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tcontent: {\n\t\t\t\t\t\texport: true,\n\t\t\t\t\t\timport: true,\n\t\t\t\t\t\t...adminRoleDefinition.content,\n\t\t\t\t\t},\n\t\t\t\t\tsystem: {\n\t\t\t\t\t\texport: true,\n\t\t\t\t\t\timport: true,\n\t\t\t\t\t\t...adminRoleDefinition.system,\n\t\t\t\t\t},\n\t\t\t\t\tdebug: true,\n\t\t\t\t\t...adminRoleDefinition,\n\t\t\t\t},\n\t\t\t\t[ProjectRole.CONTENT_ADMIN]: {\n\t\t\t\t\tstages: '*',\n\t\t\t\t\tvariables: {},\n\t\t\t\t\tentities: new AllowAllPermissionFactory().create(schema.model),\n\t\t\t\t\ts3: {\n\t\t\t\t\t\t'**': {\n\t\t\t\t\t\t\tupload: true,\n\t\t\t\t\t\t\tread: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tcontent: {\n\t\t\t\t\t\texport: true,\n\t\t\t\t\t\timport: true,\n\t\t\t\t\t\t...contentAdminRoleDefinition.content,\n\t\t\t\t\t},\n\t\t\t\t\tsystem: {\n\t\t\t\t\t\thistory: true,\n\t\t\t\t\t\texport: true,\n\t\t\t\t\t\timport: true,\n\t\t\t\t\t\t...contentAdminRoleDefinition.system,\n\t\t\t\t\t},\n\t\t\t\t\t...contentAdminRoleDefinition,\n\t\t\t\t},\n\t\t\t\t[ProjectRole.DEPLOYER]: {\n\t\t\t\t\tstages: '*',\n\t\t\t\t\tentities: {},\n\t\t\t\t\tvariables: {},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n}\n"],"names":["schema","ProjectRole","AllowAllPermissionFactory"],"mappings":";;;;AAGa,MAAA,kBAAkB,CAAmBA,aAAiB;AAClE,QAAM,sBAAoDA,SAAO,IAAI,QAAQC,mBAAY,KAAK,KAAK;AACnG,QAAM,6BAA2DD,SAAO,IAAI,QAAQC,mBAAY,aAAa,KAAK;AAE3G,SAAA;AAAA,IACN,GAAGD;AAAAA,IACH,KAAK;AAAA,MACJ,GAAGA,SAAO;AAAA,MACV,OAAO;AAAA,QACN,GAAGA,SAAO,IAAI;AAAA,QACd,CAACC,OAAAA,YAAY,KAAK,GAAG;AAAA,UACpB,QAAQ;AAAA,UACR,WAAW,CAAC;AAAA,UACZ,UAAU,IAAIC,0BAAA,0BAAA,EAA4B,OAAOF,SAAO,KAAK;AAAA,UAC7D,IAAI;AAAA,YACH,MAAM;AAAA,cACL,QAAQ;AAAA,cACR,MAAM;AAAA,YACP;AAAA,UACD;AAAA,UACA,SAAS;AAAA,YACR,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,GAAG,oBAAoB;AAAA,UACxB;AAAA,UACA,QAAQ;AAAA,YACP,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,GAAG,oBAAoB;AAAA,UACxB;AAAA,UACA,OAAO;AAAA,UACP,GAAG;AAAA,QACJ;AAAA,QACA,CAACC,OAAAA,YAAY,aAAa,GAAG;AAAA,UAC5B,QAAQ;AAAA,UACR,WAAW,CAAC;AAAA,UACZ,UAAU,IAAIC,0BAAA,0BAAA,EAA4B,OAAOF,SAAO,KAAK;AAAA,UAC7D,IAAI;AAAA,YACH,MAAM;AAAA,cACL,QAAQ;AAAA,cACR,MAAM;AAAA,YACP;AAAA,UACD;AAAA,UACA,SAAS;AAAA,YACR,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,GAAG,2BAA2B;AAAA,UAC/B;AAAA,UACA,QAAQ;AAAA,YACP,SAAS;AAAA,YACT,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,GAAG,2BAA2B;AAAA,UAC/B;AAAA,UACA,GAAG;AAAA,QACJ;AAAA,QACA,CAACC,OAAAA,YAAY,QAAQ,GAAG;AAAA,UACvB,QAAQ;AAAA,UACR,UAAU,CAAC;AAAA,UACX,WAAW,CAAC;AAAA,QACb;AAAA,MACD;AAAA,IACD;AAAA,EAAA;AAEF;;"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { ProjectRole } from "@contember/schema";
|
|
2
|
+
import { AllowAllPermissionFactory } from "./acl/AllowAllPermissionFactory.js";
|
|
3
|
+
const normalizeSchema = (schema) => {
|
|
4
|
+
const adminRoleDefinition = schema.acl.roles?.[ProjectRole.ADMIN] ?? {};
|
|
5
|
+
const contentAdminRoleDefinition = schema.acl.roles?.[ProjectRole.CONTENT_ADMIN] ?? {};
|
|
6
|
+
return {
|
|
7
|
+
...schema,
|
|
8
|
+
acl: {
|
|
9
|
+
...schema.acl,
|
|
10
|
+
roles: {
|
|
11
|
+
...schema.acl.roles,
|
|
12
|
+
[ProjectRole.ADMIN]: {
|
|
13
|
+
stages: "*",
|
|
14
|
+
variables: {},
|
|
15
|
+
entities: new AllowAllPermissionFactory().create(schema.model),
|
|
16
|
+
s3: {
|
|
17
|
+
"**": {
|
|
18
|
+
upload: true,
|
|
19
|
+
read: true
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
content: {
|
|
23
|
+
export: true,
|
|
24
|
+
import: true,
|
|
25
|
+
...adminRoleDefinition.content
|
|
26
|
+
},
|
|
27
|
+
system: {
|
|
28
|
+
export: true,
|
|
29
|
+
import: true,
|
|
30
|
+
...adminRoleDefinition.system
|
|
31
|
+
},
|
|
32
|
+
debug: true,
|
|
33
|
+
...adminRoleDefinition
|
|
34
|
+
},
|
|
35
|
+
[ProjectRole.CONTENT_ADMIN]: {
|
|
36
|
+
stages: "*",
|
|
37
|
+
variables: {},
|
|
38
|
+
entities: new AllowAllPermissionFactory().create(schema.model),
|
|
39
|
+
s3: {
|
|
40
|
+
"**": {
|
|
41
|
+
upload: true,
|
|
42
|
+
read: true
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
content: {
|
|
46
|
+
export: true,
|
|
47
|
+
import: true,
|
|
48
|
+
...contentAdminRoleDefinition.content
|
|
49
|
+
},
|
|
50
|
+
system: {
|
|
51
|
+
history: true,
|
|
52
|
+
export: true,
|
|
53
|
+
import: true,
|
|
54
|
+
...contentAdminRoleDefinition.system
|
|
55
|
+
},
|
|
56
|
+
...contentAdminRoleDefinition
|
|
57
|
+
},
|
|
58
|
+
[ProjectRole.DEPLOYER]: {
|
|
59
|
+
stages: "*",
|
|
60
|
+
entities: {},
|
|
61
|
+
variables: {}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
};
|
|
67
|
+
export {
|
|
68
|
+
normalizeSchema
|
|
69
|
+
};
|
|
70
|
+
//# sourceMappingURL=schemaNormalizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemaNormalizer.js","sources":["../../../../packages/schema-utils/src/schemaNormalizer.ts"],"sourcesContent":["import { Acl, ProjectRole, Schema } from '@contember/schema'\nimport { AllowAllPermissionFactory } from './acl'\n\nexport const normalizeSchema = <S extends Schema>(schema: S): S => {\n\tconst adminRoleDefinition: Partial<Acl.RolePermissions> = schema.acl.roles?.[ProjectRole.ADMIN] ?? {}\n\tconst contentAdminRoleDefinition: Partial<Acl.RolePermissions> = schema.acl.roles?.[ProjectRole.CONTENT_ADMIN] ?? {}\n\n\treturn {\n\t\t...schema,\n\t\tacl: {\n\t\t\t...schema.acl,\n\t\t\troles: {\n\t\t\t\t...schema.acl.roles,\n\t\t\t\t[ProjectRole.ADMIN]: {\n\t\t\t\t\tstages: '*',\n\t\t\t\t\tvariables: {},\n\t\t\t\t\tentities: new AllowAllPermissionFactory().create(schema.model),\n\t\t\t\t\ts3: {\n\t\t\t\t\t\t'**': {\n\t\t\t\t\t\t\tupload: true,\n\t\t\t\t\t\t\tread: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tcontent: {\n\t\t\t\t\t\texport: true,\n\t\t\t\t\t\timport: true,\n\t\t\t\t\t\t...adminRoleDefinition.content,\n\t\t\t\t\t},\n\t\t\t\t\tsystem: {\n\t\t\t\t\t\texport: true,\n\t\t\t\t\t\timport: true,\n\t\t\t\t\t\t...adminRoleDefinition.system,\n\t\t\t\t\t},\n\t\t\t\t\tdebug: true,\n\t\t\t\t\t...adminRoleDefinition,\n\t\t\t\t},\n\t\t\t\t[ProjectRole.CONTENT_ADMIN]: {\n\t\t\t\t\tstages: '*',\n\t\t\t\t\tvariables: {},\n\t\t\t\t\tentities: new AllowAllPermissionFactory().create(schema.model),\n\t\t\t\t\ts3: {\n\t\t\t\t\t\t'**': {\n\t\t\t\t\t\t\tupload: true,\n\t\t\t\t\t\t\tread: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tcontent: {\n\t\t\t\t\t\texport: true,\n\t\t\t\t\t\timport: true,\n\t\t\t\t\t\t...contentAdminRoleDefinition.content,\n\t\t\t\t\t},\n\t\t\t\t\tsystem: {\n\t\t\t\t\t\thistory: true,\n\t\t\t\t\t\texport: true,\n\t\t\t\t\t\timport: true,\n\t\t\t\t\t\t...contentAdminRoleDefinition.system,\n\t\t\t\t\t},\n\t\t\t\t\t...contentAdminRoleDefinition,\n\t\t\t\t},\n\t\t\t\t[ProjectRole.DEPLOYER]: {\n\t\t\t\t\tstages: '*',\n\t\t\t\t\tentities: {},\n\t\t\t\t\tvariables: {},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n}\n"],"names":[],"mappings":";;AAGa,MAAA,kBAAkB,CAAmB,WAAiB;AAClE,QAAM,sBAAoD,OAAO,IAAI,QAAQ,YAAY,KAAK,KAAK;AACnG,QAAM,6BAA2D,OAAO,IAAI,QAAQ,YAAY,aAAa,KAAK;AAE3G,SAAA;AAAA,IACN,GAAG;AAAA,IACH,KAAK;AAAA,MACJ,GAAG,OAAO;AAAA,MACV,OAAO;AAAA,QACN,GAAG,OAAO,IAAI;AAAA,QACd,CAAC,YAAY,KAAK,GAAG;AAAA,UACpB,QAAQ;AAAA,UACR,WAAW,CAAC;AAAA,UACZ,UAAU,IAAI,0BAAA,EAA4B,OAAO,OAAO,KAAK;AAAA,UAC7D,IAAI;AAAA,YACH,MAAM;AAAA,cACL,QAAQ;AAAA,cACR,MAAM;AAAA,YACP;AAAA,UACD;AAAA,UACA,SAAS;AAAA,YACR,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,GAAG,oBAAoB;AAAA,UACxB;AAAA,UACA,QAAQ;AAAA,YACP,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,GAAG,oBAAoB;AAAA,UACxB;AAAA,UACA,OAAO;AAAA,UACP,GAAG;AAAA,QACJ;AAAA,QACA,CAAC,YAAY,aAAa,GAAG;AAAA,UAC5B,QAAQ;AAAA,UACR,WAAW,CAAC;AAAA,UACZ,UAAU,IAAI,0BAAA,EAA4B,OAAO,OAAO,KAAK;AAAA,UAC7D,IAAI;AAAA,YACH,MAAM;AAAA,cACL,QAAQ;AAAA,cACR,MAAM;AAAA,YACP;AAAA,UACD;AAAA,UACA,SAAS;AAAA,YACR,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,GAAG,2BAA2B;AAAA,UAC/B;AAAA,UACA,QAAQ;AAAA,YACP,SAAS;AAAA,YACT,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,GAAG,2BAA2B;AAAA,UAC/B;AAAA,UACA,GAAG;AAAA,QACJ;AAAA,QACA,CAAC,YAAY,QAAQ,GAAG;AAAA,UACvB,QAAQ;AAAA,UACR,UAAU,CAAC;AAAA,UACX,WAAW,CAAC;AAAA,QACb;AAAA,MACD;AAAA,IACD;AAAA,EAAA;AAEF;"}
|