@contember/schema-definition 2.1.0-alpha.9 → 2.1.0-beta.2
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/CLAUDE.md +64 -0
- package/dist/development/index.cjs +33 -33
- package/dist/development/index.cjs.map +1 -1
- package/dist/development/index.js +25 -25
- package/dist/development/index.js.map +1 -1
- package/dist/development/src/acl/builder/EntityPermissionsBuilder.cjs.map +1 -1
- package/dist/development/src/acl/builder/EntityPermissionsBuilder.js.map +1 -1
- package/dist/development/src/acl/builder/EntitySelector.cjs.map +1 -1
- package/dist/development/src/acl/builder/EntitySelector.js.map +1 -1
- package/dist/development/src/acl/builder/FieldPermissionsBuilder.cjs.map +1 -1
- package/dist/development/src/acl/builder/FieldPermissionsBuilder.js.map +1 -1
- package/dist/development/src/acl/builder/FieldSelector.cjs.map +1 -1
- package/dist/development/src/acl/builder/FieldSelector.js.map +1 -1
- package/dist/development/src/acl/builder/PermissionOverrider.cjs.map +1 -1
- package/dist/development/src/acl/builder/PermissionOverrider.js.map +1 -1
- package/dist/development/src/acl/builder/PermissionsBuilder.cjs +1 -3
- package/dist/development/src/acl/builder/PermissionsBuilder.cjs.map +1 -1
- package/dist/development/src/acl/builder/PermissionsBuilder.js +1 -3
- package/dist/development/src/acl/builder/PermissionsBuilder.js.map +1 -1
- package/dist/development/src/acl/builder/PredicateReference.cjs.map +1 -1
- package/dist/development/src/acl/builder/PredicateReference.js.map +1 -1
- package/dist/development/src/acl/definition/aclExtensions.cjs +2 -2
- package/dist/development/src/acl/definition/aclExtensions.cjs.map +1 -1
- package/dist/development/src/acl/definition/aclExtensions.js +2 -2
- package/dist/development/src/acl/definition/aclExtensions.js.map +1 -1
- package/dist/development/src/acl/definition/customPrimary.cjs +1 -1
- package/dist/development/src/acl/definition/customPrimary.cjs.map +1 -1
- package/dist/development/src/acl/definition/customPrimary.js +1 -1
- package/dist/development/src/acl/definition/customPrimary.js.map +1 -1
- package/dist/development/src/acl/definition/index.cjs.map +1 -1
- package/dist/development/src/acl/definition/index.js.map +1 -1
- package/dist/development/src/acl/definition/internal/AclFactory.cjs +24 -16
- package/dist/development/src/acl/definition/internal/AclFactory.cjs.map +1 -1
- package/dist/development/src/acl/definition/internal/AclFactory.js +24 -16
- package/dist/development/src/acl/definition/internal/AclFactory.js.map +1 -1
- package/dist/development/src/acl/definition/internal/EntityPredicateResolver.cjs.map +1 -1
- package/dist/development/src/acl/definition/internal/EntityPredicateResolver.js.map +1 -1
- package/dist/development/src/acl/definition/internal/createPredicateName.cjs.map +1 -1
- package/dist/development/src/acl/definition/internal/createPredicateName.js.map +1 -1
- package/dist/development/src/acl/definition/internal/stores.cjs.map +1 -1
- package/dist/development/src/acl/definition/internal/stores.js.map +1 -1
- package/dist/development/src/acl/definition/permissions.cjs +5 -2
- package/dist/development/src/acl/definition/permissions.cjs.map +1 -1
- package/dist/development/src/acl/definition/permissions.js +5 -2
- package/dist/development/src/acl/definition/permissions.js.map +1 -1
- package/dist/development/src/acl/definition/references.cjs.map +1 -1
- package/dist/development/src/acl/definition/references.js.map +1 -1
- package/dist/development/src/acl/definition/roles.cjs.map +1 -1
- package/dist/development/src/acl/definition/roles.js.map +1 -1
- package/dist/development/src/acl/definition/variables.cjs.map +1 -1
- package/dist/development/src/acl/definition/variables.js.map +1 -1
- package/dist/development/src/actions/definition/index.cjs.map +1 -1
- package/dist/development/src/actions/definition/index.js.map +1 -1
- package/dist/development/src/actions/definition/internal/ActionsFactory.cjs +8 -7
- package/dist/development/src/actions/definition/internal/ActionsFactory.cjs.map +1 -1
- package/dist/development/src/actions/definition/internal/ActionsFactory.js +8 -7
- package/dist/development/src/actions/definition/internal/ActionsFactory.js.map +1 -1
- package/dist/development/src/actions/definition/internal/store.cjs.map +1 -1
- package/dist/development/src/actions/definition/internal/store.js.map +1 -1
- package/dist/development/src/actions/definition/targets.cjs.map +1 -1
- package/dist/development/src/actions/definition/targets.js.map +1 -1
- package/dist/development/src/actions/definition/triggers.cjs +4 -4
- package/dist/development/src/actions/definition/triggers.cjs.map +1 -1
- package/dist/development/src/actions/definition/triggers.js +4 -4
- package/dist/development/src/actions/definition/triggers.js.map +1 -1
- package/dist/development/src/createSchema.cjs.map +1 -1
- package/dist/development/src/createSchema.js.map +1 -1
- package/dist/development/src/model/builder/ColumnBuilder.cjs +7 -5
- package/dist/development/src/model/builder/ColumnBuilder.cjs.map +1 -1
- package/dist/development/src/model/builder/ColumnBuilder.js +7 -5
- package/dist/development/src/model/builder/ColumnBuilder.js.map +1 -1
- package/dist/development/src/model/builder/EntityBuilder.cjs.map +1 -1
- package/dist/development/src/model/builder/EntityBuilder.js.map +1 -1
- package/dist/development/src/model/builder/FieldBuilder.cjs +4 -4
- package/dist/development/src/model/builder/FieldBuilder.cjs.map +1 -1
- package/dist/development/src/model/builder/FieldBuilder.js.map +1 -1
- package/dist/development/src/model/builder/ManyHasManyBuilder.cjs.map +1 -1
- package/dist/development/src/model/builder/ManyHasManyBuilder.js.map +1 -1
- package/dist/development/src/model/builder/ManyHasOneBuilder.cjs.map +1 -1
- package/dist/development/src/model/builder/ManyHasOneBuilder.js.map +1 -1
- package/dist/development/src/model/builder/OneHasManyBuilder.cjs.map +1 -1
- package/dist/development/src/model/builder/OneHasManyBuilder.js.map +1 -1
- package/dist/development/src/model/builder/OneHasOneBuilder.cjs.map +1 -1
- package/dist/development/src/model/builder/OneHasOneBuilder.js.map +1 -1
- package/dist/development/src/model/builder/SchemaBuilder.cjs.map +1 -1
- package/dist/development/src/model/builder/SchemaBuilder.js.map +1 -1
- package/dist/development/src/model/builder/SchemaBuilderInternal.cjs.map +1 -1
- package/dist/development/src/model/builder/SchemaBuilderInternal.js.map +1 -1
- package/dist/development/src/model/builder/internal/ColumnProcessor.cjs.map +1 -1
- package/dist/development/src/model/builder/internal/ColumnProcessor.js.map +1 -1
- package/dist/development/src/model/builder/internal/ManyHasManyProcessor.cjs.map +1 -1
- package/dist/development/src/model/builder/internal/ManyHasManyProcessor.js.map +1 -1
- package/dist/development/src/model/builder/internal/ManyHasOneProcessor.cjs.map +1 -1
- package/dist/development/src/model/builder/internal/ManyHasOneProcessor.js.map +1 -1
- package/dist/development/src/model/builder/internal/OneHasManyProcessor.cjs.map +1 -1
- package/dist/development/src/model/builder/internal/OneHasManyProcessor.js.map +1 -1
- package/dist/development/src/model/builder/internal/OneHasOneProcessor.cjs.map +1 -1
- package/dist/development/src/model/builder/internal/OneHasOneProcessor.js.map +1 -1
- package/dist/development/src/model/definition/EnumDefinition.cjs.map +1 -1
- package/dist/development/src/model/definition/EnumDefinition.js.map +1 -1
- package/dist/development/src/model/definition/EventLogDefinition.cjs.map +1 -1
- package/dist/development/src/model/definition/EventLogDefinition.js.map +1 -1
- package/dist/development/src/model/definition/IndexDefinition.cjs +2 -2
- package/dist/development/src/model/definition/IndexDefinition.cjs.map +1 -1
- package/dist/development/src/model/definition/IndexDefinition.js +2 -2
- package/dist/development/src/model/definition/IndexDefinition.js.map +1 -1
- package/dist/development/src/model/definition/OrderByDefinition.cjs +3 -1
- package/dist/development/src/model/definition/OrderByDefinition.cjs.map +1 -1
- package/dist/development/src/model/definition/OrderByDefinition.js +3 -1
- package/dist/development/src/model/definition/OrderByDefinition.js.map +1 -1
- package/dist/development/src/model/definition/UniqueDefinition.cjs.map +1 -1
- package/dist/development/src/model/definition/UniqueDefinition.js.map +1 -1
- package/dist/development/src/model/definition/ViewDefinition.cjs.map +1 -1
- package/dist/development/src/model/definition/ViewDefinition.js.map +1 -1
- package/dist/development/src/model/definition/extensions.cjs +2 -2
- package/dist/development/src/model/definition/extensions.cjs.map +1 -1
- package/dist/development/src/model/definition/extensions.js +2 -2
- package/dist/development/src/model/definition/extensions.js.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/ColumnDefinition.cjs +12 -1
- package/dist/development/src/model/definition/fieldDefinitions/ColumnDefinition.cjs.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/ColumnDefinition.js +12 -1
- package/dist/development/src/model/definition/fieldDefinitions/ColumnDefinition.js.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/FieldDefinition.cjs.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/FieldDefinition.js.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/ManyHasManyDefinition.cjs.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/ManyHasManyDefinition.js.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/ManyHasManyInverseDefinition.cjs.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/ManyHasManyInverseDefinition.js.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/ManyHasOneDefinition.cjs.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/ManyHasOneDefinition.js.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/OneHasManyDefinition.cjs.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/OneHasManyDefinition.js.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/OneHasOneDefinition.cjs.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/OneHasOneDefinition.js.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/OneHasOneInverseDefinition.cjs.map +1 -1
- package/dist/development/src/model/definition/fieldDefinitions/OneHasOneInverseDefinition.js.map +1 -1
- package/dist/development/src/model/definition/index.cjs.map +1 -1
- package/dist/development/src/model/definition/index.js.map +1 -1
- package/dist/development/src/model/definition/internal/EntityRegistry.cjs.map +1 -1
- package/dist/development/src/model/definition/internal/EntityRegistry.js.map +1 -1
- package/dist/development/src/model/definition/internal/EnumRegistry.cjs.map +1 -1
- package/dist/development/src/model/definition/internal/EnumRegistry.js.map +1 -1
- package/dist/development/src/model/definition/internal/SchemaBuilder.cjs.map +1 -1
- package/dist/development/src/model/definition/internal/SchemaBuilder.js.map +1 -1
- package/dist/development/src/presets.cjs.map +1 -1
- package/dist/development/src/presets.js.map +1 -1
- package/dist/development/src/strict.cjs +3 -1
- package/dist/development/src/strict.cjs.map +1 -1
- package/dist/development/src/strict.js +3 -1
- package/dist/development/src/strict.js.map +1 -1
- package/dist/development/src/utils/MetadataStore.cjs +16 -4
- package/dist/development/src/utils/MetadataStore.cjs.map +1 -1
- package/dist/development/src/utils/MetadataStore.js +16 -4
- package/dist/development/src/utils/MetadataStore.js.map +1 -1
- package/dist/development/src/utils/assertNever.cjs.map +1 -1
- package/dist/development/src/utils/assertNever.js.map +1 -1
- package/dist/development/src/utils/filterEntityDefinition.cjs.map +1 -1
- package/dist/development/src/utils/filterEntityDefinition.js.map +1 -1
- package/dist/development/src/utils/tuple.cjs.map +1 -1
- package/dist/development/src/utils/tuple.js.map +1 -1
- package/dist/development/src/validation/index.cjs +25 -11
- package/dist/development/src/validation/index.cjs.map +1 -1
- package/dist/development/src/validation/index.js +25 -11
- package/dist/development/src/validation/index.js.map +1 -1
- package/dist/production/index.cjs +33 -33
- package/dist/production/index.cjs.map +1 -1
- package/dist/production/index.js +25 -25
- package/dist/production/index.js.map +1 -1
- package/dist/production/src/acl/builder/EntityPermissionsBuilder.cjs.map +1 -1
- package/dist/production/src/acl/builder/EntityPermissionsBuilder.js.map +1 -1
- package/dist/production/src/acl/builder/EntitySelector.cjs.map +1 -1
- package/dist/production/src/acl/builder/EntitySelector.js.map +1 -1
- package/dist/production/src/acl/builder/FieldPermissionsBuilder.cjs.map +1 -1
- package/dist/production/src/acl/builder/FieldPermissionsBuilder.js.map +1 -1
- package/dist/production/src/acl/builder/FieldSelector.cjs.map +1 -1
- package/dist/production/src/acl/builder/FieldSelector.js.map +1 -1
- package/dist/production/src/acl/builder/PermissionOverrider.cjs.map +1 -1
- package/dist/production/src/acl/builder/PermissionOverrider.js.map +1 -1
- package/dist/production/src/acl/builder/PermissionsBuilder.cjs +1 -3
- package/dist/production/src/acl/builder/PermissionsBuilder.cjs.map +1 -1
- package/dist/production/src/acl/builder/PermissionsBuilder.js +1 -3
- package/dist/production/src/acl/builder/PermissionsBuilder.js.map +1 -1
- package/dist/production/src/acl/builder/PredicateReference.cjs.map +1 -1
- package/dist/production/src/acl/builder/PredicateReference.js.map +1 -1
- package/dist/production/src/acl/definition/aclExtensions.cjs +2 -2
- package/dist/production/src/acl/definition/aclExtensions.cjs.map +1 -1
- package/dist/production/src/acl/definition/aclExtensions.js +2 -2
- package/dist/production/src/acl/definition/aclExtensions.js.map +1 -1
- package/dist/production/src/acl/definition/customPrimary.cjs +1 -1
- package/dist/production/src/acl/definition/customPrimary.cjs.map +1 -1
- package/dist/production/src/acl/definition/customPrimary.js +1 -1
- package/dist/production/src/acl/definition/customPrimary.js.map +1 -1
- package/dist/production/src/acl/definition/index.cjs.map +1 -1
- package/dist/production/src/acl/definition/index.js.map +1 -1
- package/dist/production/src/acl/definition/internal/AclFactory.cjs +24 -16
- package/dist/production/src/acl/definition/internal/AclFactory.cjs.map +1 -1
- package/dist/production/src/acl/definition/internal/AclFactory.js +24 -16
- package/dist/production/src/acl/definition/internal/AclFactory.js.map +1 -1
- package/dist/production/src/acl/definition/internal/EntityPredicateResolver.cjs.map +1 -1
- package/dist/production/src/acl/definition/internal/EntityPredicateResolver.js.map +1 -1
- package/dist/production/src/acl/definition/internal/createPredicateName.cjs.map +1 -1
- package/dist/production/src/acl/definition/internal/createPredicateName.js.map +1 -1
- package/dist/production/src/acl/definition/internal/stores.cjs.map +1 -1
- package/dist/production/src/acl/definition/internal/stores.js.map +1 -1
- package/dist/production/src/acl/definition/permissions.cjs +5 -2
- package/dist/production/src/acl/definition/permissions.cjs.map +1 -1
- package/dist/production/src/acl/definition/permissions.js +5 -2
- package/dist/production/src/acl/definition/permissions.js.map +1 -1
- package/dist/production/src/acl/definition/references.cjs.map +1 -1
- package/dist/production/src/acl/definition/references.js.map +1 -1
- package/dist/production/src/acl/definition/roles.cjs.map +1 -1
- package/dist/production/src/acl/definition/roles.js.map +1 -1
- package/dist/production/src/acl/definition/variables.cjs.map +1 -1
- package/dist/production/src/acl/definition/variables.js.map +1 -1
- package/dist/production/src/actions/definition/index.cjs.map +1 -1
- package/dist/production/src/actions/definition/index.js.map +1 -1
- package/dist/production/src/actions/definition/internal/ActionsFactory.cjs +8 -7
- package/dist/production/src/actions/definition/internal/ActionsFactory.cjs.map +1 -1
- package/dist/production/src/actions/definition/internal/ActionsFactory.js +8 -7
- package/dist/production/src/actions/definition/internal/ActionsFactory.js.map +1 -1
- package/dist/production/src/actions/definition/internal/store.cjs.map +1 -1
- package/dist/production/src/actions/definition/internal/store.js.map +1 -1
- package/dist/production/src/actions/definition/targets.cjs.map +1 -1
- package/dist/production/src/actions/definition/targets.js.map +1 -1
- package/dist/production/src/actions/definition/triggers.cjs +4 -4
- package/dist/production/src/actions/definition/triggers.cjs.map +1 -1
- package/dist/production/src/actions/definition/triggers.js +4 -4
- package/dist/production/src/actions/definition/triggers.js.map +1 -1
- package/dist/production/src/createSchema.cjs.map +1 -1
- package/dist/production/src/createSchema.js.map +1 -1
- package/dist/production/src/model/builder/ColumnBuilder.cjs +7 -5
- package/dist/production/src/model/builder/ColumnBuilder.cjs.map +1 -1
- package/dist/production/src/model/builder/ColumnBuilder.js +7 -5
- package/dist/production/src/model/builder/ColumnBuilder.js.map +1 -1
- package/dist/production/src/model/builder/EntityBuilder.cjs.map +1 -1
- package/dist/production/src/model/builder/EntityBuilder.js.map +1 -1
- package/dist/production/src/model/builder/FieldBuilder.cjs +4 -4
- package/dist/production/src/model/builder/FieldBuilder.cjs.map +1 -1
- package/dist/production/src/model/builder/FieldBuilder.js.map +1 -1
- package/dist/production/src/model/builder/ManyHasManyBuilder.cjs.map +1 -1
- package/dist/production/src/model/builder/ManyHasManyBuilder.js.map +1 -1
- package/dist/production/src/model/builder/ManyHasOneBuilder.cjs.map +1 -1
- package/dist/production/src/model/builder/ManyHasOneBuilder.js.map +1 -1
- package/dist/production/src/model/builder/OneHasManyBuilder.cjs.map +1 -1
- package/dist/production/src/model/builder/OneHasManyBuilder.js.map +1 -1
- package/dist/production/src/model/builder/OneHasOneBuilder.cjs.map +1 -1
- package/dist/production/src/model/builder/OneHasOneBuilder.js.map +1 -1
- package/dist/production/src/model/builder/SchemaBuilder.cjs.map +1 -1
- package/dist/production/src/model/builder/SchemaBuilder.js.map +1 -1
- package/dist/production/src/model/builder/SchemaBuilderInternal.cjs.map +1 -1
- package/dist/production/src/model/builder/SchemaBuilderInternal.js.map +1 -1
- package/dist/production/src/model/builder/internal/ColumnProcessor.cjs.map +1 -1
- package/dist/production/src/model/builder/internal/ColumnProcessor.js.map +1 -1
- package/dist/production/src/model/builder/internal/ManyHasManyProcessor.cjs.map +1 -1
- package/dist/production/src/model/builder/internal/ManyHasManyProcessor.js.map +1 -1
- package/dist/production/src/model/builder/internal/ManyHasOneProcessor.cjs.map +1 -1
- package/dist/production/src/model/builder/internal/ManyHasOneProcessor.js.map +1 -1
- package/dist/production/src/model/builder/internal/OneHasManyProcessor.cjs.map +1 -1
- package/dist/production/src/model/builder/internal/OneHasManyProcessor.js.map +1 -1
- package/dist/production/src/model/builder/internal/OneHasOneProcessor.cjs.map +1 -1
- package/dist/production/src/model/builder/internal/OneHasOneProcessor.js.map +1 -1
- package/dist/production/src/model/definition/EnumDefinition.cjs.map +1 -1
- package/dist/production/src/model/definition/EnumDefinition.js.map +1 -1
- package/dist/production/src/model/definition/EventLogDefinition.cjs.map +1 -1
- package/dist/production/src/model/definition/EventLogDefinition.js.map +1 -1
- package/dist/production/src/model/definition/IndexDefinition.cjs +2 -2
- package/dist/production/src/model/definition/IndexDefinition.cjs.map +1 -1
- package/dist/production/src/model/definition/IndexDefinition.js +2 -2
- package/dist/production/src/model/definition/IndexDefinition.js.map +1 -1
- package/dist/production/src/model/definition/OrderByDefinition.cjs +3 -1
- package/dist/production/src/model/definition/OrderByDefinition.cjs.map +1 -1
- package/dist/production/src/model/definition/OrderByDefinition.js +3 -1
- package/dist/production/src/model/definition/OrderByDefinition.js.map +1 -1
- package/dist/production/src/model/definition/UniqueDefinition.cjs.map +1 -1
- package/dist/production/src/model/definition/UniqueDefinition.js.map +1 -1
- package/dist/production/src/model/definition/ViewDefinition.cjs.map +1 -1
- package/dist/production/src/model/definition/ViewDefinition.js.map +1 -1
- package/dist/production/src/model/definition/extensions.cjs +2 -2
- package/dist/production/src/model/definition/extensions.cjs.map +1 -1
- package/dist/production/src/model/definition/extensions.js +2 -2
- package/dist/production/src/model/definition/extensions.js.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/ColumnDefinition.cjs +12 -1
- package/dist/production/src/model/definition/fieldDefinitions/ColumnDefinition.cjs.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/ColumnDefinition.js +12 -1
- package/dist/production/src/model/definition/fieldDefinitions/ColumnDefinition.js.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/FieldDefinition.cjs.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/FieldDefinition.js.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/ManyHasManyDefinition.cjs.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/ManyHasManyDefinition.js.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/ManyHasManyInverseDefinition.cjs.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/ManyHasManyInverseDefinition.js.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/ManyHasOneDefinition.cjs.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/ManyHasOneDefinition.js.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/OneHasManyDefinition.cjs.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/OneHasManyDefinition.js.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/OneHasOneDefinition.cjs.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/OneHasOneDefinition.js.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/OneHasOneInverseDefinition.cjs.map +1 -1
- package/dist/production/src/model/definition/fieldDefinitions/OneHasOneInverseDefinition.js.map +1 -1
- package/dist/production/src/model/definition/index.cjs.map +1 -1
- package/dist/production/src/model/definition/index.js.map +1 -1
- package/dist/production/src/model/definition/internal/EntityRegistry.cjs.map +1 -1
- package/dist/production/src/model/definition/internal/EntityRegistry.js.map +1 -1
- package/dist/production/src/model/definition/internal/EnumRegistry.cjs.map +1 -1
- package/dist/production/src/model/definition/internal/EnumRegistry.js.map +1 -1
- package/dist/production/src/model/definition/internal/SchemaBuilder.cjs.map +1 -1
- package/dist/production/src/model/definition/internal/SchemaBuilder.js.map +1 -1
- package/dist/production/src/presets.cjs.map +1 -1
- package/dist/production/src/presets.js.map +1 -1
- package/dist/production/src/strict.cjs +3 -1
- package/dist/production/src/strict.cjs.map +1 -1
- package/dist/production/src/strict.js +3 -1
- package/dist/production/src/strict.js.map +1 -1
- package/dist/production/src/utils/MetadataStore.cjs +16 -4
- package/dist/production/src/utils/MetadataStore.cjs.map +1 -1
- package/dist/production/src/utils/MetadataStore.js +16 -4
- package/dist/production/src/utils/MetadataStore.js.map +1 -1
- package/dist/production/src/utils/assertNever.cjs.map +1 -1
- package/dist/production/src/utils/assertNever.js.map +1 -1
- package/dist/production/src/utils/filterEntityDefinition.cjs.map +1 -1
- package/dist/production/src/utils/filterEntityDefinition.js.map +1 -1
- package/dist/production/src/utils/tuple.cjs.map +1 -1
- package/dist/production/src/utils/tuple.js.map +1 -1
- package/dist/production/src/validation/index.cjs +25 -11
- package/dist/production/src/validation/index.cjs.map +1 -1
- package/dist/production/src/validation/index.js +25 -11
- package/dist/production/src/validation/index.js.map +1 -1
- package/dist/tests/tsconfig.tsbuildinfo +1 -1
- package/dist/types/acl/builder/PermissionOverrider.d.ts.map +1 -1
- package/dist/types/acl/builder/PermissionsBuilder.d.ts.map +1 -1
- package/dist/types/acl/definition/aclExtensions.d.ts.map +1 -1
- package/dist/types/acl/definition/internal/AclFactory.d.ts +1 -1
- package/dist/types/acl/definition/internal/AclFactory.d.ts.map +1 -1
- package/dist/types/acl/definition/internal/EntityPredicateResolver.d.ts.map +1 -1
- package/dist/types/acl/definition/internal/stores.d.ts +4 -3
- package/dist/types/acl/definition/internal/stores.d.ts.map +1 -1
- package/dist/types/acl/definition/permissions.d.ts +7 -2
- package/dist/types/acl/definition/permissions.d.ts.map +1 -1
- package/dist/types/acl/definition/variables.d.ts.map +1 -1
- package/dist/types/actions/definition/index.d.ts.map +1 -1
- package/dist/types/actions/definition/internal/ActionsFactory.d.ts +0 -1
- package/dist/types/actions/definition/internal/ActionsFactory.d.ts.map +1 -1
- package/dist/types/actions/definition/targets.d.ts.map +1 -1
- package/dist/types/actions/definition/triggers.d.ts +1 -0
- package/dist/types/actions/definition/triggers.d.ts.map +1 -1
- package/dist/types/createSchema.d.ts.map +1 -1
- package/dist/types/index.d.ts +3 -3
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/model/builder/ColumnBuilder.d.ts.map +1 -1
- package/dist/types/model/builder/internal/ColumnProcessor.d.ts.map +1 -1
- package/dist/types/model/definition/IndexDefinition.d.ts +2 -0
- package/dist/types/model/definition/IndexDefinition.d.ts.map +1 -1
- package/dist/types/model/definition/OrderByDefinition.d.ts.map +1 -1
- package/dist/types/model/definition/UniqueDefinition.d.ts +1 -0
- package/dist/types/model/definition/UniqueDefinition.d.ts.map +1 -1
- package/dist/types/model/definition/fieldDefinitions/ColumnDefinition.d.ts.map +1 -1
- package/dist/types/model/definition/fieldDefinitions/FieldDefinition.d.ts.map +1 -1
- package/dist/types/model/definition/fieldDefinitions/ManyHasManyDefinition.d.ts.map +1 -1
- package/dist/types/model/definition/fieldDefinitions/ManyHasManyInverseDefinition.d.ts.map +1 -1
- package/dist/types/model/definition/fieldDefinitions/ManyHasOneDefinition.d.ts.map +1 -1
- package/dist/types/model/definition/fieldDefinitions/OneHasManyDefinition.d.ts.map +1 -1
- package/dist/types/model/definition/fieldDefinitions/OneHasOneDefinition.d.ts.map +1 -1
- package/dist/types/model/definition/fieldDefinitions/OneHasOneInverseDefinition.d.ts.map +1 -1
- package/dist/types/model/definition/index.d.ts +1 -1
- package/dist/types/model/definition/index.d.ts.map +1 -1
- package/dist/types/model/definition/internal/SchemaBuilder.d.ts.map +1 -1
- package/dist/types/model/definition/types.d.ts +1 -1
- package/dist/types/model/definition/types.d.ts.map +1 -1
- package/dist/types/model/index.d.ts +1 -1
- package/dist/types/model/index.d.ts.map +1 -1
- package/dist/types/presets.d.ts.map +1 -1
- package/dist/types/strict.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/dist/types/utils/MetadataStore.d.ts +1 -1
- package/dist/types/utils/MetadataStore.d.ts.map +1 -1
- package/dist/types/utils/decorators.d.ts +1 -1
- package/dist/types/utils/decorators.d.ts.map +1 -1
- package/dist/types/utils/filterEntityDefinition.d.ts.map +1 -1
- package/dist/types/validation/index.d.ts +0 -1
- package/dist/types/validation/index.d.ts.map +1 -1
- package/package.json +11 -6
- package/src/acl/builder/EntityPermissionsBuilder.ts +1 -1
- package/src/acl/builder/EntitySelector.ts +2 -2
- package/src/acl/builder/PermissionOverrider.ts +10 -8
- package/src/acl/builder/PermissionsBuilder.ts +1 -3
- package/src/acl/definition/aclExtensions.ts +7 -8
- package/src/acl/definition/customPrimary.ts +1 -1
- package/src/acl/definition/internal/AclFactory.ts +30 -25
- package/src/acl/definition/internal/EntityPredicateResolver.ts +4 -4
- package/src/acl/definition/internal/stores.ts +5 -6
- package/src/acl/definition/permissions.ts +14 -8
- package/src/acl/definition/variables.ts +5 -1
- package/src/actions/definition/index.ts +0 -1
- package/src/actions/definition/internal/ActionsFactory.ts +7 -9
- package/src/actions/definition/targets.ts +0 -1
- package/src/actions/definition/triggers.ts +9 -7
- package/src/createSchema.ts +1 -1
- package/src/index.ts +6 -11
- package/src/model/builder/ColumnBuilder.ts +7 -5
- package/src/model/builder/internal/ColumnProcessor.ts +0 -1
- package/src/model/definition/IndexDefinition.ts +7 -3
- package/src/model/definition/OrderByDefinition.ts +7 -5
- package/src/model/definition/UniqueDefinition.ts +14 -12
- package/src/model/definition/extensions.ts +2 -2
- package/src/model/definition/fieldDefinitions/ColumnDefinition.ts +12 -4
- package/src/model/definition/fieldDefinitions/FieldDefinition.ts +1 -1
- package/src/model/definition/fieldDefinitions/ManyHasManyDefinition.ts +0 -2
- package/src/model/definition/fieldDefinitions/ManyHasManyInverseDefinition.ts +4 -2
- package/src/model/definition/fieldDefinitions/ManyHasOneDefinition.ts +1 -1
- package/src/model/definition/fieldDefinitions/OneHasManyDefinition.ts +0 -1
- package/src/model/definition/fieldDefinitions/OneHasOneDefinition.ts +0 -2
- package/src/model/definition/fieldDefinitions/OneHasOneInverseDefinition.ts +5 -3
- package/src/model/definition/index.ts +2 -2
- package/src/model/definition/internal/SchemaBuilder.ts +1 -2
- package/src/model/definition/types.ts +1 -1
- package/src/model/index.ts +1 -10
- package/src/presets.ts +0 -2
- package/src/strict.ts +4 -4
- package/src/utils/MetadataStore.ts +18 -4
- package/src/utils/decorators.ts +1 -1
- package/src/utils/filterEntityDefinition.ts +3 -2
- package/src/validation/index.ts +30 -21
- package/tests/cases/unit/createSchema.test.ts +5 -6
- package/tests/cases/unit/extendEntity.test.ts +1 -2
- package/tests/cases/unit/orderBy.test.ts +3 -6
- package/tests/cases/unit/readAclDefinitions.test.ts +191 -176
- package/tests/cases/unit/readActions.test.ts +0 -2
- package/vitest.config.ts +0 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FieldPermissionsBuilder.cjs","sources":["../../../../../../packages/schema-definition/src/acl/builder/FieldPermissionsBuilder.ts"],"sourcesContent":["import FieldSelector from './FieldSelector'\nimport EntityPermissionsBuilder from './EntityPermissionsBuilder'\nimport { Acl, Model, Writable } from '@contember/schema'\nimport EntitySelector from './EntitySelector'\nimport { PermissionsBuilder } from './PermissionsBuilder'\n\nexport default class FieldPermissionsBuilder {\n\tpublic constructor(\n\t\tpublic entityPermissionsBuilder: EntityPermissionsBuilder,\n\t\tprivate readonly fields: [Model.Entity, Model.AnyField][],\n\t) {}\n\n\tget builder(): PermissionsBuilder {\n\t\treturn this.entityPermissionsBuilder.builder\n\t}\n\n\tget schema(): Model.Schema {\n\t\treturn this.entityPermissionsBuilder.schema\n\t}\n\n\tget permissions(): Acl.Permissions {\n\t\treturn this.entityPermissionsBuilder.permissions\n\t}\n\n\tpublic allowCreate(predicate: Acl.Predicate = true): FieldPermissionsBuilder {\n\t\treturn this.allow([Acl.Operation.create], predicate)\n\t}\n\n\tpublic allowRead(predicate: Acl.Predicate = true): FieldPermissionsBuilder {\n\t\treturn this.allow([Acl.Operation.read], predicate)\n\t}\n\n\tpublic allowUpdate(predicate: Acl.Predicate = true): FieldPermissionsBuilder {\n\t\treturn this.allow([Acl.Operation.update], predicate)\n\t}\n\n\tpublic allowAll(predicate: Acl.Predicate = true): FieldPermissionsBuilder {\n\t\treturn this.allow([Acl.Operation.create, Acl.Operation.read, Acl.Operation.update], predicate)\n\t}\n\n\tpublic allow(\n\t\toperations: (Acl.Operation.create | Acl.Operation.read | Acl.Operation.update)[],\n\t\tpredicate: Acl.Predicate = true,\n\t): FieldPermissionsBuilder {\n\t\tconst permissions: Writable<Acl.Permissions> = {}\n\t\tfor (const [entity, field] of this.fields) {\n\t\t\tif (!permissions[entity.name]) {\n\t\t\t\tpermissions[entity.name] = { operations: {}, predicates: {} }\n\t\t\t}\n\t\t\tconst entityOperations: Writable<Acl.EntityOperations> = permissions[entity.name].operations\n\t\t\tfor (const op of operations) {\n\t\t\t\tentityOperations[op] = {\n\t\t\t\t\t...(permissions[entity.name].operations[op] || {}),\n\t\t\t\t\t[field.name]: predicate,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn new FieldPermissionsBuilder(this.entityPermissionsBuilder.add(permissions), this.fields)\n\t}\n\n\tpublic onEntity(entitySelector: EntitySelector | string | string[]): EntityPermissionsBuilder {\n\t\treturn this.entityPermissionsBuilder.onEntity(entitySelector)\n\t}\n\n\tpublic onEveryEntity(): EntityPermissionsBuilder {\n\t\treturn this.entityPermissionsBuilder.onEveryEntity()\n\t}\n\n\tpublic onField(fieldSelector: FieldSelector | string | string[]) {\n\t\treturn this.entityPermissionsBuilder.onField(fieldSelector)\n\t}\n\n\tpublic onEveryField(): FieldPermissionsBuilder {\n\t\treturn this.entityPermissionsBuilder.onEveryField()\n\t}\n}\n"],"names":["Acl"],"mappings":";;AAMA,MAAqB,wBAAwB;AAAA,EACrC,YACC,0BACU,QAChB;AAFM,SAAA,2BAAA;AACU,SAAA,SAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"FieldPermissionsBuilder.cjs","sources":["../../../../../../packages/schema-definition/src/acl/builder/FieldPermissionsBuilder.ts"],"sourcesContent":["import FieldSelector from './FieldSelector'\nimport EntityPermissionsBuilder from './EntityPermissionsBuilder'\nimport { Acl, Model, Writable } from '@contember/schema'\nimport EntitySelector from './EntitySelector'\nimport { PermissionsBuilder } from './PermissionsBuilder'\n\nexport default class FieldPermissionsBuilder {\n\tpublic constructor(\n\t\tpublic entityPermissionsBuilder: EntityPermissionsBuilder,\n\t\tprivate readonly fields: [Model.Entity, Model.AnyField][],\n\t) {}\n\n\tget builder(): PermissionsBuilder {\n\t\treturn this.entityPermissionsBuilder.builder\n\t}\n\n\tget schema(): Model.Schema {\n\t\treturn this.entityPermissionsBuilder.schema\n\t}\n\n\tget permissions(): Acl.Permissions {\n\t\treturn this.entityPermissionsBuilder.permissions\n\t}\n\n\tpublic allowCreate(predicate: Acl.Predicate = true): FieldPermissionsBuilder {\n\t\treturn this.allow([Acl.Operation.create], predicate)\n\t}\n\n\tpublic allowRead(predicate: Acl.Predicate = true): FieldPermissionsBuilder {\n\t\treturn this.allow([Acl.Operation.read], predicate)\n\t}\n\n\tpublic allowUpdate(predicate: Acl.Predicate = true): FieldPermissionsBuilder {\n\t\treturn this.allow([Acl.Operation.update], predicate)\n\t}\n\n\tpublic allowAll(predicate: Acl.Predicate = true): FieldPermissionsBuilder {\n\t\treturn this.allow([Acl.Operation.create, Acl.Operation.read, Acl.Operation.update], predicate)\n\t}\n\n\tpublic allow(\n\t\toperations: (Acl.Operation.create | Acl.Operation.read | Acl.Operation.update)[],\n\t\tpredicate: Acl.Predicate = true,\n\t): FieldPermissionsBuilder {\n\t\tconst permissions: Writable<Acl.Permissions> = {}\n\t\tfor (const [entity, field] of this.fields) {\n\t\t\tif (!permissions[entity.name]) {\n\t\t\t\tpermissions[entity.name] = { operations: {}, predicates: {} }\n\t\t\t}\n\t\t\tconst entityOperations: Writable<Acl.EntityOperations> = permissions[entity.name].operations\n\t\t\tfor (const op of operations) {\n\t\t\t\tentityOperations[op] = {\n\t\t\t\t\t...(permissions[entity.name].operations[op] || {}),\n\t\t\t\t\t[field.name]: predicate,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn new FieldPermissionsBuilder(this.entityPermissionsBuilder.add(permissions), this.fields)\n\t}\n\n\tpublic onEntity(entitySelector: EntitySelector | string | string[]): EntityPermissionsBuilder {\n\t\treturn this.entityPermissionsBuilder.onEntity(entitySelector)\n\t}\n\n\tpublic onEveryEntity(): EntityPermissionsBuilder {\n\t\treturn this.entityPermissionsBuilder.onEveryEntity()\n\t}\n\n\tpublic onField(fieldSelector: FieldSelector | string | string[]) {\n\t\treturn this.entityPermissionsBuilder.onField(fieldSelector)\n\t}\n\n\tpublic onEveryField(): FieldPermissionsBuilder {\n\t\treturn this.entityPermissionsBuilder.onEveryField()\n\t}\n}\n"],"names":["Acl"],"mappings":";;AAMA,MAAqB,wBAAwB;AAAA,EACrC,YACC,0BACU,QAChB;AAFM,SAAA,2BAAA;AACU,SAAA,SAAA;AAAA,EACf;AAAA,EAEH,IAAI,UAA8B;AACjC,WAAO,KAAK,yBAAyB;AAAA,EACtC;AAAA,EAEA,IAAI,SAAuB;AAC1B,WAAO,KAAK,yBAAyB;AAAA,EACtC;AAAA,EAEA,IAAI,cAA+B;AAClC,WAAO,KAAK,yBAAyB;AAAA,EACtC;AAAA,EAEO,YAAY,YAA2B,MAA+B;AAC5E,WAAO,KAAK,MAAM,CAACA,OAAAA,IAAI,UAAU,MAAM,GAAG,SAAS;AAAA,EACpD;AAAA,EAEO,UAAU,YAA2B,MAA+B;AAC1E,WAAO,KAAK,MAAM,CAACA,OAAAA,IAAI,UAAU,IAAI,GAAG,SAAS;AAAA,EAClD;AAAA,EAEO,YAAY,YAA2B,MAA+B;AAC5E,WAAO,KAAK,MAAM,CAACA,OAAAA,IAAI,UAAU,MAAM,GAAG,SAAS;AAAA,EACpD;AAAA,EAEO,SAAS,YAA2B,MAA+B;AACzE,WAAO,KAAK,MAAM,CAACA,OAAAA,IAAI,UAAU,QAAQA,OAAAA,IAAI,UAAU,MAAMA,OAAAA,IAAI,UAAU,MAAM,GAAG,SAAS;AAAA,EAC9F;AAAA,EAEO,MACN,YACA,YAA2B,MACD;AAC1B,UAAM,cAAyC,CAAA;AAC/C,eAAW,CAAC,QAAQ,KAAK,KAAK,KAAK,QAAQ;AAC1C,UAAI,CAAC,YAAY,OAAO,IAAI,GAAG;AAC9B,oBAAY,OAAO,IAAI,IAAI,EAAE,YAAY,CAAA,GAAI,YAAY,GAAC;AAAA,MAC3D;AACA,YAAM,mBAAmD,YAAY,OAAO,IAAI,EAAE;AAClF,iBAAW,MAAM,YAAY;AAC5B,yBAAiB,EAAE,IAAI;AAAA,UACtB,GAAI,YAAY,OAAO,IAAI,EAAE,WAAW,EAAE,KAAK,CAAA;AAAA,UAC/C,CAAC,MAAM,IAAI,GAAG;AAAA,QAAA;AAAA,MAEhB;AAAA,IACD;AACA,WAAO,IAAI,wBAAwB,KAAK,yBAAyB,IAAI,WAAW,GAAG,KAAK,MAAM;AAAA,EAC/F;AAAA,EAEO,SAAS,gBAA8E;AAC7F,WAAO,KAAK,yBAAyB,SAAS,cAAc;AAAA,EAC7D;AAAA,EAEO,gBAA0C;AAChD,WAAO,KAAK,yBAAyB,cAAA;AAAA,EACtC;AAAA,EAEO,QAAQ,eAAkD;AAChE,WAAO,KAAK,yBAAyB,QAAQ,aAAa;AAAA,EAC3D;AAAA,EAEO,eAAwC;AAC9C,WAAO,KAAK,yBAAyB,aAAA;AAAA,EACtC;AACD;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FieldPermissionsBuilder.js","sources":["../../../../../../packages/schema-definition/src/acl/builder/FieldPermissionsBuilder.ts"],"sourcesContent":["import FieldSelector from './FieldSelector'\nimport EntityPermissionsBuilder from './EntityPermissionsBuilder'\nimport { Acl, Model, Writable } from '@contember/schema'\nimport EntitySelector from './EntitySelector'\nimport { PermissionsBuilder } from './PermissionsBuilder'\n\nexport default class FieldPermissionsBuilder {\n\tpublic constructor(\n\t\tpublic entityPermissionsBuilder: EntityPermissionsBuilder,\n\t\tprivate readonly fields: [Model.Entity, Model.AnyField][],\n\t) {}\n\n\tget builder(): PermissionsBuilder {\n\t\treturn this.entityPermissionsBuilder.builder\n\t}\n\n\tget schema(): Model.Schema {\n\t\treturn this.entityPermissionsBuilder.schema\n\t}\n\n\tget permissions(): Acl.Permissions {\n\t\treturn this.entityPermissionsBuilder.permissions\n\t}\n\n\tpublic allowCreate(predicate: Acl.Predicate = true): FieldPermissionsBuilder {\n\t\treturn this.allow([Acl.Operation.create], predicate)\n\t}\n\n\tpublic allowRead(predicate: Acl.Predicate = true): FieldPermissionsBuilder {\n\t\treturn this.allow([Acl.Operation.read], predicate)\n\t}\n\n\tpublic allowUpdate(predicate: Acl.Predicate = true): FieldPermissionsBuilder {\n\t\treturn this.allow([Acl.Operation.update], predicate)\n\t}\n\n\tpublic allowAll(predicate: Acl.Predicate = true): FieldPermissionsBuilder {\n\t\treturn this.allow([Acl.Operation.create, Acl.Operation.read, Acl.Operation.update], predicate)\n\t}\n\n\tpublic allow(\n\t\toperations: (Acl.Operation.create | Acl.Operation.read | Acl.Operation.update)[],\n\t\tpredicate: Acl.Predicate = true,\n\t): FieldPermissionsBuilder {\n\t\tconst permissions: Writable<Acl.Permissions> = {}\n\t\tfor (const [entity, field] of this.fields) {\n\t\t\tif (!permissions[entity.name]) {\n\t\t\t\tpermissions[entity.name] = { operations: {}, predicates: {} }\n\t\t\t}\n\t\t\tconst entityOperations: Writable<Acl.EntityOperations> = permissions[entity.name].operations\n\t\t\tfor (const op of operations) {\n\t\t\t\tentityOperations[op] = {\n\t\t\t\t\t...(permissions[entity.name].operations[op] || {}),\n\t\t\t\t\t[field.name]: predicate,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn new FieldPermissionsBuilder(this.entityPermissionsBuilder.add(permissions), this.fields)\n\t}\n\n\tpublic onEntity(entitySelector: EntitySelector | string | string[]): EntityPermissionsBuilder {\n\t\treturn this.entityPermissionsBuilder.onEntity(entitySelector)\n\t}\n\n\tpublic onEveryEntity(): EntityPermissionsBuilder {\n\t\treturn this.entityPermissionsBuilder.onEveryEntity()\n\t}\n\n\tpublic onField(fieldSelector: FieldSelector | string | string[]) {\n\t\treturn this.entityPermissionsBuilder.onField(fieldSelector)\n\t}\n\n\tpublic onEveryField(): FieldPermissionsBuilder {\n\t\treturn this.entityPermissionsBuilder.onEveryField()\n\t}\n}\n"],"names":[],"mappings":";AAMA,MAAqB,wBAAwB;AAAA,EACrC,YACC,0BACU,QAChB;AAFM,SAAA,2BAAA;AACU,SAAA,SAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"FieldPermissionsBuilder.js","sources":["../../../../../../packages/schema-definition/src/acl/builder/FieldPermissionsBuilder.ts"],"sourcesContent":["import FieldSelector from './FieldSelector'\nimport EntityPermissionsBuilder from './EntityPermissionsBuilder'\nimport { Acl, Model, Writable } from '@contember/schema'\nimport EntitySelector from './EntitySelector'\nimport { PermissionsBuilder } from './PermissionsBuilder'\n\nexport default class FieldPermissionsBuilder {\n\tpublic constructor(\n\t\tpublic entityPermissionsBuilder: EntityPermissionsBuilder,\n\t\tprivate readonly fields: [Model.Entity, Model.AnyField][],\n\t) {}\n\n\tget builder(): PermissionsBuilder {\n\t\treturn this.entityPermissionsBuilder.builder\n\t}\n\n\tget schema(): Model.Schema {\n\t\treturn this.entityPermissionsBuilder.schema\n\t}\n\n\tget permissions(): Acl.Permissions {\n\t\treturn this.entityPermissionsBuilder.permissions\n\t}\n\n\tpublic allowCreate(predicate: Acl.Predicate = true): FieldPermissionsBuilder {\n\t\treturn this.allow([Acl.Operation.create], predicate)\n\t}\n\n\tpublic allowRead(predicate: Acl.Predicate = true): FieldPermissionsBuilder {\n\t\treturn this.allow([Acl.Operation.read], predicate)\n\t}\n\n\tpublic allowUpdate(predicate: Acl.Predicate = true): FieldPermissionsBuilder {\n\t\treturn this.allow([Acl.Operation.update], predicate)\n\t}\n\n\tpublic allowAll(predicate: Acl.Predicate = true): FieldPermissionsBuilder {\n\t\treturn this.allow([Acl.Operation.create, Acl.Operation.read, Acl.Operation.update], predicate)\n\t}\n\n\tpublic allow(\n\t\toperations: (Acl.Operation.create | Acl.Operation.read | Acl.Operation.update)[],\n\t\tpredicate: Acl.Predicate = true,\n\t): FieldPermissionsBuilder {\n\t\tconst permissions: Writable<Acl.Permissions> = {}\n\t\tfor (const [entity, field] of this.fields) {\n\t\t\tif (!permissions[entity.name]) {\n\t\t\t\tpermissions[entity.name] = { operations: {}, predicates: {} }\n\t\t\t}\n\t\t\tconst entityOperations: Writable<Acl.EntityOperations> = permissions[entity.name].operations\n\t\t\tfor (const op of operations) {\n\t\t\t\tentityOperations[op] = {\n\t\t\t\t\t...(permissions[entity.name].operations[op] || {}),\n\t\t\t\t\t[field.name]: predicate,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn new FieldPermissionsBuilder(this.entityPermissionsBuilder.add(permissions), this.fields)\n\t}\n\n\tpublic onEntity(entitySelector: EntitySelector | string | string[]): EntityPermissionsBuilder {\n\t\treturn this.entityPermissionsBuilder.onEntity(entitySelector)\n\t}\n\n\tpublic onEveryEntity(): EntityPermissionsBuilder {\n\t\treturn this.entityPermissionsBuilder.onEveryEntity()\n\t}\n\n\tpublic onField(fieldSelector: FieldSelector | string | string[]) {\n\t\treturn this.entityPermissionsBuilder.onField(fieldSelector)\n\t}\n\n\tpublic onEveryField(): FieldPermissionsBuilder {\n\t\treturn this.entityPermissionsBuilder.onEveryField()\n\t}\n}\n"],"names":[],"mappings":";AAMA,MAAqB,wBAAwB;AAAA,EACrC,YACC,0BACU,QAChB;AAFM,SAAA,2BAAA;AACU,SAAA,SAAA;AAAA,EACf;AAAA,EAEH,IAAI,UAA8B;AACjC,WAAO,KAAK,yBAAyB;AAAA,EACtC;AAAA,EAEA,IAAI,SAAuB;AAC1B,WAAO,KAAK,yBAAyB;AAAA,EACtC;AAAA,EAEA,IAAI,cAA+B;AAClC,WAAO,KAAK,yBAAyB;AAAA,EACtC;AAAA,EAEO,YAAY,YAA2B,MAA+B;AAC5E,WAAO,KAAK,MAAM,CAAC,IAAI,UAAU,MAAM,GAAG,SAAS;AAAA,EACpD;AAAA,EAEO,UAAU,YAA2B,MAA+B;AAC1E,WAAO,KAAK,MAAM,CAAC,IAAI,UAAU,IAAI,GAAG,SAAS;AAAA,EAClD;AAAA,EAEO,YAAY,YAA2B,MAA+B;AAC5E,WAAO,KAAK,MAAM,CAAC,IAAI,UAAU,MAAM,GAAG,SAAS;AAAA,EACpD;AAAA,EAEO,SAAS,YAA2B,MAA+B;AACzE,WAAO,KAAK,MAAM,CAAC,IAAI,UAAU,QAAQ,IAAI,UAAU,MAAM,IAAI,UAAU,MAAM,GAAG,SAAS;AAAA,EAC9F;AAAA,EAEO,MACN,YACA,YAA2B,MACD;AAC1B,UAAM,cAAyC,CAAA;AAC/C,eAAW,CAAC,QAAQ,KAAK,KAAK,KAAK,QAAQ;AAC1C,UAAI,CAAC,YAAY,OAAO,IAAI,GAAG;AAC9B,oBAAY,OAAO,IAAI,IAAI,EAAE,YAAY,CAAA,GAAI,YAAY,GAAC;AAAA,MAC3D;AACA,YAAM,mBAAmD,YAAY,OAAO,IAAI,EAAE;AAClF,iBAAW,MAAM,YAAY;AAC5B,yBAAiB,EAAE,IAAI;AAAA,UACtB,GAAI,YAAY,OAAO,IAAI,EAAE,WAAW,EAAE,KAAK,CAAA;AAAA,UAC/C,CAAC,MAAM,IAAI,GAAG;AAAA,QAAA;AAAA,MAEhB;AAAA,IACD;AACA,WAAO,IAAI,wBAAwB,KAAK,yBAAyB,IAAI,WAAW,GAAG,KAAK,MAAM;AAAA,EAC/F;AAAA,EAEO,SAAS,gBAA8E;AAC7F,WAAO,KAAK,yBAAyB,SAAS,cAAc;AAAA,EAC7D;AAAA,EAEO,gBAA0C;AAChD,WAAO,KAAK,yBAAyB,cAAA;AAAA,EACtC;AAAA,EAEO,QAAQ,eAAkD;AAChE,WAAO,KAAK,yBAAyB,QAAQ,aAAa;AAAA,EAC3D;AAAA,EAEO,eAAwC;AAC9C,WAAO,KAAK,yBAAyB,aAAA;AAAA,EACtC;AACD;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FieldSelector.cjs","sources":["../../../../../../packages/schema-definition/src/acl/builder/FieldSelector.ts"],"sourcesContent":["import { Model } from '@contember/schema'\n\ntype Matcher = (schema: Model.Schema, entity: Model.Entity, field: Model.AnyField) => boolean\n\nexport default class FieldSelector {\n\tprivate constructor(private readonly matchers: Matcher[]) {}\n\n\tpublic static every() {\n\t\treturn new FieldSelector([])\n\t}\n\n\tpublic static named(...name: string[]) {\n\t\treturn FieldSelector.every().named(...name)\n\t}\n\n\tpublic named(...name: string[]) {\n\t\treturn this.matching((schema, entity, field) => name.includes(field.name))\n\t}\n\n\tpublic except(...name: string[]) {\n\t\treturn this.matching((schema, entity, field) => !name.includes(field.name))\n\t}\n\n\tpublic matching(matcher: Matcher): FieldSelector {\n\t\treturn new FieldSelector([...this.matchers, matcher])\n\t}\n\n\tpublic matches(schema: Model.Schema, entity: Model.Entity, field: Model.AnyField): boolean {\n\t\treturn this.matchers.reduce<boolean>((prev, predicate) => prev && predicate(schema, entity, field), true)\n\t}\n}\n"],"names":[],"mappings":";AAIA,MAAqB,cAAc;AAAA,EAC1B,YAA6B,UAAqB;AAArB,SAAA,WAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"FieldSelector.cjs","sources":["../../../../../../packages/schema-definition/src/acl/builder/FieldSelector.ts"],"sourcesContent":["import { Model } from '@contember/schema'\n\ntype Matcher = (schema: Model.Schema, entity: Model.Entity, field: Model.AnyField) => boolean\n\nexport default class FieldSelector {\n\tprivate constructor(private readonly matchers: Matcher[]) {}\n\n\tpublic static every() {\n\t\treturn new FieldSelector([])\n\t}\n\n\tpublic static named(...name: string[]) {\n\t\treturn FieldSelector.every().named(...name)\n\t}\n\n\tpublic named(...name: string[]) {\n\t\treturn this.matching((schema, entity, field) => name.includes(field.name))\n\t}\n\n\tpublic except(...name: string[]) {\n\t\treturn this.matching((schema, entity, field) => !name.includes(field.name))\n\t}\n\n\tpublic matching(matcher: Matcher): FieldSelector {\n\t\treturn new FieldSelector([...this.matchers, matcher])\n\t}\n\n\tpublic matches(schema: Model.Schema, entity: Model.Entity, field: Model.AnyField): boolean {\n\t\treturn this.matchers.reduce<boolean>((prev, predicate) => prev && predicate(schema, entity, field), true)\n\t}\n}\n"],"names":[],"mappings":";AAIA,MAAqB,cAAc;AAAA,EAC1B,YAA6B,UAAqB;AAArB,SAAA,WAAA;AAAA,EAAsB;AAAA,EAE3D,OAAc,QAAQ;AACrB,WAAO,IAAI,cAAc,EAAE;AAAA,EAC5B;AAAA,EAEA,OAAc,SAAS,MAAgB;AACtC,WAAO,cAAc,MAAA,EAAQ,MAAM,GAAG,IAAI;AAAA,EAC3C;AAAA,EAEO,SAAS,MAAgB;AAC/B,WAAO,KAAK,SAAS,CAAC,QAAQ,QAAQ,UAAU,KAAK,SAAS,MAAM,IAAI,CAAC;AAAA,EAC1E;AAAA,EAEO,UAAU,MAAgB;AAChC,WAAO,KAAK,SAAS,CAAC,QAAQ,QAAQ,UAAU,CAAC,KAAK,SAAS,MAAM,IAAI,CAAC;AAAA,EAC3E;AAAA,EAEO,SAAS,SAAiC;AAChD,WAAO,IAAI,cAAc,CAAC,GAAG,KAAK,UAAU,OAAO,CAAC;AAAA,EACrD;AAAA,EAEO,QAAQ,QAAsB,QAAsB,OAAgC;AAC1F,WAAO,KAAK,SAAS,OAAgB,CAAC,MAAM,cAAc,QAAQ,UAAU,QAAQ,QAAQ,KAAK,GAAG,IAAI;AAAA,EACzG;AACD;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FieldSelector.js","sources":["../../../../../../packages/schema-definition/src/acl/builder/FieldSelector.ts"],"sourcesContent":["import { Model } from '@contember/schema'\n\ntype Matcher = (schema: Model.Schema, entity: Model.Entity, field: Model.AnyField) => boolean\n\nexport default class FieldSelector {\n\tprivate constructor(private readonly matchers: Matcher[]) {}\n\n\tpublic static every() {\n\t\treturn new FieldSelector([])\n\t}\n\n\tpublic static named(...name: string[]) {\n\t\treturn FieldSelector.every().named(...name)\n\t}\n\n\tpublic named(...name: string[]) {\n\t\treturn this.matching((schema, entity, field) => name.includes(field.name))\n\t}\n\n\tpublic except(...name: string[]) {\n\t\treturn this.matching((schema, entity, field) => !name.includes(field.name))\n\t}\n\n\tpublic matching(matcher: Matcher): FieldSelector {\n\t\treturn new FieldSelector([...this.matchers, matcher])\n\t}\n\n\tpublic matches(schema: Model.Schema, entity: Model.Entity, field: Model.AnyField): boolean {\n\t\treturn this.matchers.reduce<boolean>((prev, predicate) => prev && predicate(schema, entity, field), true)\n\t}\n}\n"],"names":[],"mappings":"AAIA,MAAqB,cAAc;AAAA,EAC1B,YAA6B,UAAqB;AAArB,SAAA,WAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"FieldSelector.js","sources":["../../../../../../packages/schema-definition/src/acl/builder/FieldSelector.ts"],"sourcesContent":["import { Model } from '@contember/schema'\n\ntype Matcher = (schema: Model.Schema, entity: Model.Entity, field: Model.AnyField) => boolean\n\nexport default class FieldSelector {\n\tprivate constructor(private readonly matchers: Matcher[]) {}\n\n\tpublic static every() {\n\t\treturn new FieldSelector([])\n\t}\n\n\tpublic static named(...name: string[]) {\n\t\treturn FieldSelector.every().named(...name)\n\t}\n\n\tpublic named(...name: string[]) {\n\t\treturn this.matching((schema, entity, field) => name.includes(field.name))\n\t}\n\n\tpublic except(...name: string[]) {\n\t\treturn this.matching((schema, entity, field) => !name.includes(field.name))\n\t}\n\n\tpublic matching(matcher: Matcher): FieldSelector {\n\t\treturn new FieldSelector([...this.matchers, matcher])\n\t}\n\n\tpublic matches(schema: Model.Schema, entity: Model.Entity, field: Model.AnyField): boolean {\n\t\treturn this.matchers.reduce<boolean>((prev, predicate) => prev && predicate(schema, entity, field), true)\n\t}\n}\n"],"names":[],"mappings":"AAIA,MAAqB,cAAc;AAAA,EAC1B,YAA6B,UAAqB;AAArB,SAAA,WAAA;AAAA,EAAsB;AAAA,EAE3D,OAAc,QAAQ;AACrB,WAAO,IAAI,cAAc,EAAE;AAAA,EAC5B;AAAA,EAEA,OAAc,SAAS,MAAgB;AACtC,WAAO,cAAc,MAAA,EAAQ,MAAM,GAAG,IAAI;AAAA,EAC3C;AAAA,EAEO,SAAS,MAAgB;AAC/B,WAAO,KAAK,SAAS,CAAC,QAAQ,QAAQ,UAAU,KAAK,SAAS,MAAM,IAAI,CAAC;AAAA,EAC1E;AAAA,EAEO,UAAU,MAAgB;AAChC,WAAO,KAAK,SAAS,CAAC,QAAQ,QAAQ,UAAU,CAAC,KAAK,SAAS,MAAM,IAAI,CAAC;AAAA,EAC3E;AAAA,EAEO,SAAS,SAAiC;AAChD,WAAO,IAAI,cAAc,CAAC,GAAG,KAAK,UAAU,OAAO,CAAC;AAAA,EACrD;AAAA,EAEO,QAAQ,QAAsB,QAAsB,OAAgC;AAC1F,WAAO,KAAK,SAAS,OAAgB,CAAC,MAAM,cAAc,QAAQ,UAAU,QAAQ,QAAQ,KAAK,GAAG,IAAI;AAAA,EACzG;AACD;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PermissionOverrider.cjs","sources":["../../../../../../packages/schema-definition/src/acl/builder/PermissionOverrider.ts"],"sourcesContent":["import { Acl } from '@contember/schema'\nimport { tuple } from '../../utils'\n\nexport default class PermissionOverrider {\n\tpublic override(original: Acl.Permissions, overrides: Acl.Permissions): Acl.Permissions {\n\t\treturn Object.entries({ ...overrides, ...original })\n\t\t\t.map(([key, value]) => {\n\t\t\t\tif (overrides[key]) {\n\t\t\t\t\treturn tuple(key, this.overrideEntityPermissions(value, overrides[key]))\n\t\t\t\t}\n\t\t\t\treturn tuple(key, value)\n\t\t\t})\n\t\t\t.reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {})\n\t}\n\n\tprivate overrideEntityPermissions(\n\t\toriginal: Acl.EntityPermissions,\n\t\toverrides: Acl.EntityPermissions,\n\t): Acl.EntityPermissions {\n\t\treturn {\n\t\t\tpredicates: { ...original.predicates, ...overrides.predicates },\n\t\t\toperations: {\n\t\t\t\tcreate: { ...(original.operations.create || {}), ...(overrides.operations.create || {}) },\n\t\t\t\tread: { ...(original.operations.read || {}), ...(overrides.operations.read || {}) },\n\t\t\t\tupdate: { ...(original.operations.update || {}), ...(overrides.operations.update || {}) },\n\t\t\t\t...(original.operations.delete === undefined && overrides.operations.delete === undefined\n\t\t\t\t\t? {}\n\t\t\t\t\t: {\n\t\t\t\t\t\tdelete: overrides.operations.delete ?? original.operations.delete,\n\t\t\t\t\t
|
|
1
|
+
{"version":3,"file":"PermissionOverrider.cjs","sources":["../../../../../../packages/schema-definition/src/acl/builder/PermissionOverrider.ts"],"sourcesContent":["import { Acl } from '@contember/schema'\nimport { tuple } from '../../utils'\n\nexport default class PermissionOverrider {\n\tpublic override(original: Acl.Permissions, overrides: Acl.Permissions): Acl.Permissions {\n\t\treturn Object.entries({ ...overrides, ...original })\n\t\t\t.map(([key, value]) => {\n\t\t\t\tif (overrides[key]) {\n\t\t\t\t\treturn tuple(key, this.overrideEntityPermissions(value, overrides[key]))\n\t\t\t\t}\n\t\t\t\treturn tuple(key, value)\n\t\t\t})\n\t\t\t.reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {})\n\t}\n\n\tprivate overrideEntityPermissions(\n\t\toriginal: Acl.EntityPermissions,\n\t\toverrides: Acl.EntityPermissions,\n\t): Acl.EntityPermissions {\n\t\treturn {\n\t\t\tpredicates: { ...original.predicates, ...overrides.predicates },\n\t\t\toperations: {\n\t\t\t\tcreate: { ...(original.operations.create || {}), ...(overrides.operations.create || {}) },\n\t\t\t\tread: { ...(original.operations.read || {}), ...(overrides.operations.read || {}) },\n\t\t\t\tupdate: { ...(original.operations.update || {}), ...(overrides.operations.update || {}) },\n\t\t\t\t...(original.operations.delete === undefined && overrides.operations.delete === undefined\n\t\t\t\t\t? {}\n\t\t\t\t\t: {\n\t\t\t\t\t\tdelete: overrides.operations.delete ?? original.operations.delete,\n\t\t\t\t\t}),\n\t\t\t\t...(original.operations.customPrimary === undefined && overrides.operations.customPrimary === undefined\n\t\t\t\t\t? {}\n\t\t\t\t\t: {\n\t\t\t\t\t\tcustomPrimary: overrides.operations.customPrimary ?? original.operations.customPrimary,\n\t\t\t\t\t}),\n\t\t\t\t...(original.operations.noRoot || overrides.operations.noRoot\n\t\t\t\t\t? {\n\t\t\t\t\t\tnoRoot: [\n\t\t\t\t\t\t\t...(original.operations.noRoot || []),\n\t\t\t\t\t\t\t...(overrides.operations.noRoot || []),\n\t\t\t\t\t\t],\n\t\t\t\t\t}\n\t\t\t\t\t: {}),\n\t\t\t},\n\t\t}\n\t}\n}\n"],"names":["tuple"],"mappings":";;;AAGA,MAAqB,oBAAoB;AAAA,EACjC,SAAS,UAA2B,WAA6C;AACvF,WAAO,OAAO,QAAQ,EAAE,GAAG,WAAW,GAAG,UAAU,EACjD,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM;AACtB,UAAI,UAAU,GAAG,GAAG;AACnB,eAAOA,MAAAA,MAAM,KAAK,KAAK,0BAA0B,OAAO,UAAU,GAAG,CAAC,CAAC;AAAA,MACxE;AACA,aAAOA,MAAAA,MAAM,KAAK,KAAK;AAAA,IACxB,CAAC,EACA,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,OAAO,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,MAAA,IAAU,CAAA,CAAE;AAAA,EAC/D;AAAA,EAEQ,0BACP,UACA,WACwB;AACxB,WAAO;AAAA,MACN,YAAY,EAAE,GAAG,SAAS,YAAY,GAAG,UAAU,WAAA;AAAA,MACnD,YAAY;AAAA,QACX,QAAQ,EAAE,GAAI,SAAS,WAAW,UAAU,IAAK,GAAI,UAAU,WAAW,UAAU,GAAC;AAAA,QACrF,MAAM,EAAE,GAAI,SAAS,WAAW,QAAQ,IAAK,GAAI,UAAU,WAAW,QAAQ,GAAC;AAAA,QAC/E,QAAQ,EAAE,GAAI,SAAS,WAAW,UAAU,IAAK,GAAI,UAAU,WAAW,UAAU,GAAC;AAAA,QACrF,GAAI,SAAS,WAAW,WAAW,UAAa,UAAU,WAAW,WAAW,SAC7E,KACA;AAAA,UACD,QAAQ,UAAU,WAAW,UAAU,SAAS,WAAW;AAAA,QAAA;AAAA,QAE7D,GAAI,SAAS,WAAW,kBAAkB,UAAa,UAAU,WAAW,kBAAkB,SAC3F,KACA;AAAA,UACD,eAAe,UAAU,WAAW,iBAAiB,SAAS,WAAW;AAAA,QAAA;AAAA,QAE3E,GAAI,SAAS,WAAW,UAAU,UAAU,WAAW,SACpD;AAAA,UACD,QAAQ;AAAA,YACP,GAAI,SAAS,WAAW,UAAU,CAAA;AAAA,YAClC,GAAI,UAAU,WAAW,UAAU,CAAA;AAAA,UAAC;AAAA,QACrC,IAEC,CAAA;AAAA,MAAC;AAAA,IACL;AAAA,EAEF;AACD;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PermissionOverrider.js","sources":["../../../../../../packages/schema-definition/src/acl/builder/PermissionOverrider.ts"],"sourcesContent":["import { Acl } from '@contember/schema'\nimport { tuple } from '../../utils'\n\nexport default class PermissionOverrider {\n\tpublic override(original: Acl.Permissions, overrides: Acl.Permissions): Acl.Permissions {\n\t\treturn Object.entries({ ...overrides, ...original })\n\t\t\t.map(([key, value]) => {\n\t\t\t\tif (overrides[key]) {\n\t\t\t\t\treturn tuple(key, this.overrideEntityPermissions(value, overrides[key]))\n\t\t\t\t}\n\t\t\t\treturn tuple(key, value)\n\t\t\t})\n\t\t\t.reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {})\n\t}\n\n\tprivate overrideEntityPermissions(\n\t\toriginal: Acl.EntityPermissions,\n\t\toverrides: Acl.EntityPermissions,\n\t): Acl.EntityPermissions {\n\t\treturn {\n\t\t\tpredicates: { ...original.predicates, ...overrides.predicates },\n\t\t\toperations: {\n\t\t\t\tcreate: { ...(original.operations.create || {}), ...(overrides.operations.create || {}) },\n\t\t\t\tread: { ...(original.operations.read || {}), ...(overrides.operations.read || {}) },\n\t\t\t\tupdate: { ...(original.operations.update || {}), ...(overrides.operations.update || {}) },\n\t\t\t\t...(original.operations.delete === undefined && overrides.operations.delete === undefined\n\t\t\t\t\t? {}\n\t\t\t\t\t: {\n\t\t\t\t\t\tdelete: overrides.operations.delete ?? original.operations.delete,\n\t\t\t\t\t
|
|
1
|
+
{"version":3,"file":"PermissionOverrider.js","sources":["../../../../../../packages/schema-definition/src/acl/builder/PermissionOverrider.ts"],"sourcesContent":["import { Acl } from '@contember/schema'\nimport { tuple } from '../../utils'\n\nexport default class PermissionOverrider {\n\tpublic override(original: Acl.Permissions, overrides: Acl.Permissions): Acl.Permissions {\n\t\treturn Object.entries({ ...overrides, ...original })\n\t\t\t.map(([key, value]) => {\n\t\t\t\tif (overrides[key]) {\n\t\t\t\t\treturn tuple(key, this.overrideEntityPermissions(value, overrides[key]))\n\t\t\t\t}\n\t\t\t\treturn tuple(key, value)\n\t\t\t})\n\t\t\t.reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {})\n\t}\n\n\tprivate overrideEntityPermissions(\n\t\toriginal: Acl.EntityPermissions,\n\t\toverrides: Acl.EntityPermissions,\n\t): Acl.EntityPermissions {\n\t\treturn {\n\t\t\tpredicates: { ...original.predicates, ...overrides.predicates },\n\t\t\toperations: {\n\t\t\t\tcreate: { ...(original.operations.create || {}), ...(overrides.operations.create || {}) },\n\t\t\t\tread: { ...(original.operations.read || {}), ...(overrides.operations.read || {}) },\n\t\t\t\tupdate: { ...(original.operations.update || {}), ...(overrides.operations.update || {}) },\n\t\t\t\t...(original.operations.delete === undefined && overrides.operations.delete === undefined\n\t\t\t\t\t? {}\n\t\t\t\t\t: {\n\t\t\t\t\t\tdelete: overrides.operations.delete ?? original.operations.delete,\n\t\t\t\t\t}),\n\t\t\t\t...(original.operations.customPrimary === undefined && overrides.operations.customPrimary === undefined\n\t\t\t\t\t? {}\n\t\t\t\t\t: {\n\t\t\t\t\t\tcustomPrimary: overrides.operations.customPrimary ?? original.operations.customPrimary,\n\t\t\t\t\t}),\n\t\t\t\t...(original.operations.noRoot || overrides.operations.noRoot\n\t\t\t\t\t? {\n\t\t\t\t\t\tnoRoot: [\n\t\t\t\t\t\t\t...(original.operations.noRoot || []),\n\t\t\t\t\t\t\t...(overrides.operations.noRoot || []),\n\t\t\t\t\t\t],\n\t\t\t\t\t}\n\t\t\t\t\t: {}),\n\t\t\t},\n\t\t}\n\t}\n}\n"],"names":[],"mappings":";;AAGA,MAAqB,oBAAoB;AAAA,EACjC,SAAS,UAA2B,WAA6C;AACvF,WAAO,OAAO,QAAQ,EAAE,GAAG,WAAW,GAAG,UAAU,EACjD,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM;AACtB,UAAI,UAAU,GAAG,GAAG;AACnB,eAAO,MAAM,KAAK,KAAK,0BAA0B,OAAO,UAAU,GAAG,CAAC,CAAC;AAAA,MACxE;AACA,aAAO,MAAM,KAAK,KAAK;AAAA,IACxB,CAAC,EACA,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,OAAO,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,MAAA,IAAU,CAAA,CAAE;AAAA,EAC/D;AAAA,EAEQ,0BACP,UACA,WACwB;AACxB,WAAO;AAAA,MACN,YAAY,EAAE,GAAG,SAAS,YAAY,GAAG,UAAU,WAAA;AAAA,MACnD,YAAY;AAAA,QACX,QAAQ,EAAE,GAAI,SAAS,WAAW,UAAU,IAAK,GAAI,UAAU,WAAW,UAAU,GAAC;AAAA,QACrF,MAAM,EAAE,GAAI,SAAS,WAAW,QAAQ,IAAK,GAAI,UAAU,WAAW,QAAQ,GAAC;AAAA,QAC/E,QAAQ,EAAE,GAAI,SAAS,WAAW,UAAU,IAAK,GAAI,UAAU,WAAW,UAAU,GAAC;AAAA,QACrF,GAAI,SAAS,WAAW,WAAW,UAAa,UAAU,WAAW,WAAW,SAC7E,KACA;AAAA,UACD,QAAQ,UAAU,WAAW,UAAU,SAAS,WAAW;AAAA,QAAA;AAAA,QAE7D,GAAI,SAAS,WAAW,kBAAkB,UAAa,UAAU,WAAW,kBAAkB,SAC3F,KACA;AAAA,UACD,eAAe,UAAU,WAAW,iBAAiB,SAAS,WAAW;AAAA,QAAA;AAAA,QAE3E,GAAI,SAAS,WAAW,UAAU,UAAU,WAAW,SACpD;AAAA,UACD,QAAQ;AAAA,YACP,GAAI,SAAS,WAAW,UAAU,CAAA;AAAA,YAClC,GAAI,UAAU,WAAW,UAAU,CAAA;AAAA,UAAC;AAAA,QACrC,IAEC,CAAA;AAAA,MAAC;AAAA,IACL;AAAA,EAEF;AACD;"}
|
|
@@ -36,9 +36,7 @@ class PermissionsBuilder {
|
|
|
36
36
|
entitySelector = EntitySelector.named(...entitySelector);
|
|
37
37
|
}
|
|
38
38
|
const entitySelectorWithType = entitySelector;
|
|
39
|
-
const entities = Object.values(this.schema.entities).filter(
|
|
40
|
-
(entity) => entitySelectorWithType.matches(this.schema, entity)
|
|
41
|
-
);
|
|
39
|
+
const entities = Object.values(this.schema.entities).filter((entity) => entitySelectorWithType.matches(this.schema, entity));
|
|
42
40
|
return new EntityPermissionsBuilder(this, entities);
|
|
43
41
|
}
|
|
44
42
|
onEveryEntity() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PermissionsBuilder.cjs","sources":["../../../../../../packages/schema-definition/src/acl/builder/PermissionsBuilder.ts"],"sourcesContent":["import { Acl, Model } from '@contember/schema'\nimport { AllowAllPermissionFactory } from '@contember/schema-utils'\nimport PermissionOverrider from './PermissionOverrider'\nimport EntitySelector from './EntitySelector'\nimport EntityPermissionsBuilder from './EntityPermissionsBuilder'\nimport FieldSelector from './FieldSelector'\nimport Reference from './PredicateReference'\n\nclass PermissionsBuilder {\n\tconstructor(public readonly schema: Model.Schema, public readonly permissions: Acl.Permissions) {}\n\n\tpublic static create(model: Model.Schema): PermissionsBuilder {\n\t\treturn new PermissionsBuilder(model, {})\n\t}\n\n\tpublic allowAll(): PermissionsBuilder {\n\t\treturn this.allow([Acl.Operation.read, Acl.Operation.update, Acl.Operation.delete, Acl.Operation.create])\n\t}\n\n\tpublic allow(operations: Acl.Operation[]): PermissionsBuilder {\n\t\tconst allowAllFactory = new AllowAllPermissionFactory(operations)\n\t\treturn this.add(allowAllFactory.create(this.schema))\n\t}\n\n\tpublic allowCustomPrimary(): PermissionsBuilder {\n\t\treturn this.onEveryEntity().allowCustomPrimary().builder\n\t}\n\n\tpublic add(permissions: Acl.Permissions): PermissionsBuilder {\n\t\tconst overrider = new PermissionOverrider()\n\t\treturn new PermissionsBuilder(this.schema, overrider.override(this.permissions, permissions))\n\t}\n\n\tpublic onEntity(entitySelector: EntitySelector | string | string[]): EntityPermissionsBuilder {\n\t\tif (typeof entitySelector === 'string') {\n\t\t\tentitySelector = EntitySelector.named(entitySelector)\n\t\t} else if (Array.isArray(entitySelector)) {\n\t\t\tentitySelector = EntitySelector.named(...entitySelector)\n\t\t}\n\t\tconst entitySelectorWithType = entitySelector\n\t\tconst entities = Object.values(this.schema.entities).filter(entity
|
|
1
|
+
{"version":3,"file":"PermissionsBuilder.cjs","sources":["../../../../../../packages/schema-definition/src/acl/builder/PermissionsBuilder.ts"],"sourcesContent":["import { Acl, Model } from '@contember/schema'\nimport { AllowAllPermissionFactory } from '@contember/schema-utils'\nimport PermissionOverrider from './PermissionOverrider'\nimport EntitySelector from './EntitySelector'\nimport EntityPermissionsBuilder from './EntityPermissionsBuilder'\nimport FieldSelector from './FieldSelector'\nimport Reference from './PredicateReference'\n\nclass PermissionsBuilder {\n\tconstructor(public readonly schema: Model.Schema, public readonly permissions: Acl.Permissions) {}\n\n\tpublic static create(model: Model.Schema): PermissionsBuilder {\n\t\treturn new PermissionsBuilder(model, {})\n\t}\n\n\tpublic allowAll(): PermissionsBuilder {\n\t\treturn this.allow([Acl.Operation.read, Acl.Operation.update, Acl.Operation.delete, Acl.Operation.create])\n\t}\n\n\tpublic allow(operations: Acl.Operation[]): PermissionsBuilder {\n\t\tconst allowAllFactory = new AllowAllPermissionFactory(operations)\n\t\treturn this.add(allowAllFactory.create(this.schema))\n\t}\n\n\tpublic allowCustomPrimary(): PermissionsBuilder {\n\t\treturn this.onEveryEntity().allowCustomPrimary().builder\n\t}\n\n\tpublic add(permissions: Acl.Permissions): PermissionsBuilder {\n\t\tconst overrider = new PermissionOverrider()\n\t\treturn new PermissionsBuilder(this.schema, overrider.override(this.permissions, permissions))\n\t}\n\n\tpublic onEntity(entitySelector: EntitySelector | string | string[]): EntityPermissionsBuilder {\n\t\tif (typeof entitySelector === 'string') {\n\t\t\tentitySelector = EntitySelector.named(entitySelector)\n\t\t} else if (Array.isArray(entitySelector)) {\n\t\t\tentitySelector = EntitySelector.named(...entitySelector)\n\t\t}\n\t\tconst entitySelectorWithType = entitySelector\n\t\tconst entities = Object.values(this.schema.entities).filter(entity => entitySelectorWithType.matches(this.schema, entity))\n\t\treturn new EntityPermissionsBuilder(this, entities)\n\t}\n\n\tpublic onEveryEntity(): EntityPermissionsBuilder {\n\t\treturn this.onEntity(EntitySelector.every())\n\t}\n}\n\nnamespace PermissionsBuilder {\n\texport const everyEntity = () => {\n\t\treturn EntitySelector.every()\n\t}\n\texport const everyField = () => {\n\t\treturn FieldSelector.every()\n\t}\n\texport const predicateReference = (name: Acl.PredicateReference) => new Reference(name)\n}\nexport { PermissionsBuilder }\n"],"names":["schema","Acl","AllowAllPermissionFactory","PermissionsBuilder","Reference"],"mappings":";;;;;;;;;AAQA,MAAM,mBAAmB;AAAA,EACxB,YAA4BA,SAAsC,aAA8B;AAApE,SAAA,SAAAA;AAAsC,SAAA,cAAA;AAAA,EAA+B;AAAA,EAEjG,OAAc,OAAO,OAAyC;AAC7D,WAAO,IAAI,mBAAmB,OAAO,EAAE;AAAA,EACxC;AAAA,EAEO,WAA+B;AACrC,WAAO,KAAK,MAAM,CAACC,OAAAA,IAAI,UAAU,MAAMA,WAAI,UAAU,QAAQA,OAAAA,IAAI,UAAU,QAAQA,OAAAA,IAAI,UAAU,MAAM,CAAC;AAAA,EACzG;AAAA,EAEO,MAAM,YAAiD;AAC7D,UAAM,kBAAkB,IAAIC,YAAAA,0BAA0B,UAAU;AAChE,WAAO,KAAK,IAAI,gBAAgB,OAAO,KAAK,MAAM,CAAC;AAAA,EACpD;AAAA,EAEO,qBAAyC;AAC/C,WAAO,KAAK,gBAAgB,mBAAA,EAAqB;AAAA,EAClD;AAAA,EAEO,IAAI,aAAkD;AAC5D,UAAM,YAAY,IAAI,oBAAA;AACtB,WAAO,IAAI,mBAAmB,KAAK,QAAQ,UAAU,SAAS,KAAK,aAAa,WAAW,CAAC;AAAA,EAC7F;AAAA,EAEO,SAAS,gBAA8E;AAC7F,QAAI,OAAO,mBAAmB,UAAU;AACvC,uBAAiB,eAAe,MAAM,cAAc;AAAA,IACrD,WAAW,MAAM,QAAQ,cAAc,GAAG;AACzC,uBAAiB,eAAe,MAAM,GAAG,cAAc;AAAA,IACxD;AACA,UAAM,yBAAyB;AAC/B,UAAM,WAAW,OAAO,OAAO,KAAK,OAAO,QAAQ,EAAE,OAAO,CAAA,WAAU,uBAAuB,QAAQ,KAAK,QAAQ,MAAM,CAAC;AACzH,WAAO,IAAI,yBAAyB,MAAM,QAAQ;AAAA,EACnD;AAAA,EAEO,gBAA0C;AAChD,WAAO,KAAK,SAAS,eAAe,MAAA,CAAO;AAAA,EAC5C;AACD;AAAA,CAEA,CAAUC,wBAAV;AACcA,sBAAA,cAAc,MAAM;AAChC,WAAO,eAAe,MAAA;AAAA,EACvB;AACaA,sBAAA,aAAa,MAAM;AAC/B,WAAO,cAAc,MAAA;AAAA,EACtB;AACaA,sBAAA,qBAAqB,CAAC,SAAiC,IAAIC,mBAAAA,QAAU,IAAI;AAAA,GAP7E,uBAAA,qBAAA,CAAA,EAAA;;"}
|
|
@@ -34,9 +34,7 @@ class PermissionsBuilder {
|
|
|
34
34
|
entitySelector = EntitySelector.named(...entitySelector);
|
|
35
35
|
}
|
|
36
36
|
const entitySelectorWithType = entitySelector;
|
|
37
|
-
const entities = Object.values(this.schema.entities).filter(
|
|
38
|
-
(entity) => entitySelectorWithType.matches(this.schema, entity)
|
|
39
|
-
);
|
|
37
|
+
const entities = Object.values(this.schema.entities).filter((entity) => entitySelectorWithType.matches(this.schema, entity));
|
|
40
38
|
return new EntityPermissionsBuilder(this, entities);
|
|
41
39
|
}
|
|
42
40
|
onEveryEntity() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PermissionsBuilder.js","sources":["../../../../../../packages/schema-definition/src/acl/builder/PermissionsBuilder.ts"],"sourcesContent":["import { Acl, Model } from '@contember/schema'\nimport { AllowAllPermissionFactory } from '@contember/schema-utils'\nimport PermissionOverrider from './PermissionOverrider'\nimport EntitySelector from './EntitySelector'\nimport EntityPermissionsBuilder from './EntityPermissionsBuilder'\nimport FieldSelector from './FieldSelector'\nimport Reference from './PredicateReference'\n\nclass PermissionsBuilder {\n\tconstructor(public readonly schema: Model.Schema, public readonly permissions: Acl.Permissions) {}\n\n\tpublic static create(model: Model.Schema): PermissionsBuilder {\n\t\treturn new PermissionsBuilder(model, {})\n\t}\n\n\tpublic allowAll(): PermissionsBuilder {\n\t\treturn this.allow([Acl.Operation.read, Acl.Operation.update, Acl.Operation.delete, Acl.Operation.create])\n\t}\n\n\tpublic allow(operations: Acl.Operation[]): PermissionsBuilder {\n\t\tconst allowAllFactory = new AllowAllPermissionFactory(operations)\n\t\treturn this.add(allowAllFactory.create(this.schema))\n\t}\n\n\tpublic allowCustomPrimary(): PermissionsBuilder {\n\t\treturn this.onEveryEntity().allowCustomPrimary().builder\n\t}\n\n\tpublic add(permissions: Acl.Permissions): PermissionsBuilder {\n\t\tconst overrider = new PermissionOverrider()\n\t\treturn new PermissionsBuilder(this.schema, overrider.override(this.permissions, permissions))\n\t}\n\n\tpublic onEntity(entitySelector: EntitySelector | string | string[]): EntityPermissionsBuilder {\n\t\tif (typeof entitySelector === 'string') {\n\t\t\tentitySelector = EntitySelector.named(entitySelector)\n\t\t} else if (Array.isArray(entitySelector)) {\n\t\t\tentitySelector = EntitySelector.named(...entitySelector)\n\t\t}\n\t\tconst entitySelectorWithType = entitySelector\n\t\tconst entities = Object.values(this.schema.entities).filter(entity
|
|
1
|
+
{"version":3,"file":"PermissionsBuilder.js","sources":["../../../../../../packages/schema-definition/src/acl/builder/PermissionsBuilder.ts"],"sourcesContent":["import { Acl, Model } from '@contember/schema'\nimport { AllowAllPermissionFactory } from '@contember/schema-utils'\nimport PermissionOverrider from './PermissionOverrider'\nimport EntitySelector from './EntitySelector'\nimport EntityPermissionsBuilder from './EntityPermissionsBuilder'\nimport FieldSelector from './FieldSelector'\nimport Reference from './PredicateReference'\n\nclass PermissionsBuilder {\n\tconstructor(public readonly schema: Model.Schema, public readonly permissions: Acl.Permissions) {}\n\n\tpublic static create(model: Model.Schema): PermissionsBuilder {\n\t\treturn new PermissionsBuilder(model, {})\n\t}\n\n\tpublic allowAll(): PermissionsBuilder {\n\t\treturn this.allow([Acl.Operation.read, Acl.Operation.update, Acl.Operation.delete, Acl.Operation.create])\n\t}\n\n\tpublic allow(operations: Acl.Operation[]): PermissionsBuilder {\n\t\tconst allowAllFactory = new AllowAllPermissionFactory(operations)\n\t\treturn this.add(allowAllFactory.create(this.schema))\n\t}\n\n\tpublic allowCustomPrimary(): PermissionsBuilder {\n\t\treturn this.onEveryEntity().allowCustomPrimary().builder\n\t}\n\n\tpublic add(permissions: Acl.Permissions): PermissionsBuilder {\n\t\tconst overrider = new PermissionOverrider()\n\t\treturn new PermissionsBuilder(this.schema, overrider.override(this.permissions, permissions))\n\t}\n\n\tpublic onEntity(entitySelector: EntitySelector | string | string[]): EntityPermissionsBuilder {\n\t\tif (typeof entitySelector === 'string') {\n\t\t\tentitySelector = EntitySelector.named(entitySelector)\n\t\t} else if (Array.isArray(entitySelector)) {\n\t\t\tentitySelector = EntitySelector.named(...entitySelector)\n\t\t}\n\t\tconst entitySelectorWithType = entitySelector\n\t\tconst entities = Object.values(this.schema.entities).filter(entity => entitySelectorWithType.matches(this.schema, entity))\n\t\treturn new EntityPermissionsBuilder(this, entities)\n\t}\n\n\tpublic onEveryEntity(): EntityPermissionsBuilder {\n\t\treturn this.onEntity(EntitySelector.every())\n\t}\n}\n\nnamespace PermissionsBuilder {\n\texport const everyEntity = () => {\n\t\treturn EntitySelector.every()\n\t}\n\texport const everyField = () => {\n\t\treturn FieldSelector.every()\n\t}\n\texport const predicateReference = (name: Acl.PredicateReference) => new Reference(name)\n}\nexport { PermissionsBuilder }\n"],"names":["PermissionsBuilder","Reference"],"mappings":";;;;;;;AAQA,MAAM,mBAAmB;AAAA,EACxB,YAA4B,QAAsC,aAA8B;AAApE,SAAA,SAAA;AAAsC,SAAA,cAAA;AAAA,EAA+B;AAAA,EAEjG,OAAc,OAAO,OAAyC;AAC7D,WAAO,IAAI,mBAAmB,OAAO,EAAE;AAAA,EACxC;AAAA,EAEO,WAA+B;AACrC,WAAO,KAAK,MAAM,CAAC,IAAI,UAAU,MAAM,IAAI,UAAU,QAAQ,IAAI,UAAU,QAAQ,IAAI,UAAU,MAAM,CAAC;AAAA,EACzG;AAAA,EAEO,MAAM,YAAiD;AAC7D,UAAM,kBAAkB,IAAI,0BAA0B,UAAU;AAChE,WAAO,KAAK,IAAI,gBAAgB,OAAO,KAAK,MAAM,CAAC;AAAA,EACpD;AAAA,EAEO,qBAAyC;AAC/C,WAAO,KAAK,gBAAgB,mBAAA,EAAqB;AAAA,EAClD;AAAA,EAEO,IAAI,aAAkD;AAC5D,UAAM,YAAY,IAAI,oBAAA;AACtB,WAAO,IAAI,mBAAmB,KAAK,QAAQ,UAAU,SAAS,KAAK,aAAa,WAAW,CAAC;AAAA,EAC7F;AAAA,EAEO,SAAS,gBAA8E;AAC7F,QAAI,OAAO,mBAAmB,UAAU;AACvC,uBAAiB,eAAe,MAAM,cAAc;AAAA,IACrD,WAAW,MAAM,QAAQ,cAAc,GAAG;AACzC,uBAAiB,eAAe,MAAM,GAAG,cAAc;AAAA,IACxD;AACA,UAAM,yBAAyB;AAC/B,UAAM,WAAW,OAAO,OAAO,KAAK,OAAO,QAAQ,EAAE,OAAO,CAAA,WAAU,uBAAuB,QAAQ,KAAK,QAAQ,MAAM,CAAC;AACzH,WAAO,IAAI,yBAAyB,MAAM,QAAQ;AAAA,EACnD;AAAA,EAEO,gBAA0C;AAChD,WAAO,KAAK,SAAS,eAAe,MAAA,CAAO;AAAA,EAC5C;AACD;AAAA,CAEA,CAAUA,wBAAV;AACcA,sBAAA,cAAc,MAAM;AAChC,WAAO,eAAe,MAAA;AAAA,EACvB;AACaA,sBAAA,aAAa,MAAM;AAC/B,WAAO,cAAc,MAAA;AAAA,EACtB;AACaA,sBAAA,qBAAqB,CAAC,SAAiC,IAAIC,mBAAU,IAAI;AAAA,GAP7E,uBAAA,qBAAA,CAAA,EAAA;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PredicateReference.cjs","sources":["../../../../../../packages/schema-definition/src/acl/builder/PredicateReference.ts"],"sourcesContent":["import { Acl, Input, Model } from '@contember/schema'\nimport { PredicateDefinitionProcessor } from '@contember/schema-utils'\n\nexport default class PredicateReference {\n\tconstructor(public readonly name: Acl.PredicateReference) {}\n}\n\nexport const resolvePredicateReference = (\n\tmodel: Model.Schema,\n\tpermissions: Acl.Permissions,\n\tentity: Model.Entity,\n\tpredicate: Acl.PredicateDefinition<PredicateReference>,\n): Acl.PredicateDefinition => {\n\tconst predicateDefinitionProcessor = new PredicateDefinitionProcessor(model)\n\treturn predicateDefinitionProcessor.process<Acl.PredicateVariable | Input.Condition, PredicateReference>(\n\t\tentity,\n\t\tpredicate,\n\t\t{\n\t\t\thandleColumn: ({ value }) => {\n\t\t\t\tif (value instanceof PredicateReference) {\n\t\t\t\t\tthrow new Error()\n\t\t\t\t}\n\t\t\t\treturn value\n\t\t\t},\n\t\t\thandleRelation: ({ value, targetEntity }) => {\n\t\t\t\tif (value instanceof PredicateReference) {\n\t\t\t\t\tif (!permissions[targetEntity.name]) {\n\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t`Permissions for entity ${targetEntity.name} not found. Make sure you are defining it in a right order.`,\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t\tconst predicate = permissions[targetEntity.name].predicates[value.name]\n\t\t\t\t\tif (!predicate) {\n\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t`Predicate ${value.name} of entity ${targetEntity.name} not found. Make sure you are defining it in a right order.`,\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t\treturn predicate\n\t\t\t\t}\n\t\t\t\treturn value\n\t\t\t},\n\t\t},\n\t)\n}\n"],"names":["PredicateDefinitionProcessor","predicate"],"mappings":";;;AAGA,MAAqB,mBAAmB;AAAA,EACvC,YAA4B,MAA8B;AAA9B,SAAA,OAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"PredicateReference.cjs","sources":["../../../../../../packages/schema-definition/src/acl/builder/PredicateReference.ts"],"sourcesContent":["import { Acl, Input, Model } from '@contember/schema'\nimport { PredicateDefinitionProcessor } from '@contember/schema-utils'\n\nexport default class PredicateReference {\n\tconstructor(public readonly name: Acl.PredicateReference) {}\n}\n\nexport const resolvePredicateReference = (\n\tmodel: Model.Schema,\n\tpermissions: Acl.Permissions,\n\tentity: Model.Entity,\n\tpredicate: Acl.PredicateDefinition<PredicateReference>,\n): Acl.PredicateDefinition => {\n\tconst predicateDefinitionProcessor = new PredicateDefinitionProcessor(model)\n\treturn predicateDefinitionProcessor.process<Acl.PredicateVariable | Input.Condition, PredicateReference>(\n\t\tentity,\n\t\tpredicate,\n\t\t{\n\t\t\thandleColumn: ({ value }) => {\n\t\t\t\tif (value instanceof PredicateReference) {\n\t\t\t\t\tthrow new Error()\n\t\t\t\t}\n\t\t\t\treturn value\n\t\t\t},\n\t\t\thandleRelation: ({ value, targetEntity }) => {\n\t\t\t\tif (value instanceof PredicateReference) {\n\t\t\t\t\tif (!permissions[targetEntity.name]) {\n\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t`Permissions for entity ${targetEntity.name} not found. Make sure you are defining it in a right order.`,\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t\tconst predicate = permissions[targetEntity.name].predicates[value.name]\n\t\t\t\t\tif (!predicate) {\n\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t`Predicate ${value.name} of entity ${targetEntity.name} not found. Make sure you are defining it in a right order.`,\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t\treturn predicate\n\t\t\t\t}\n\t\t\t\treturn value\n\t\t\t},\n\t\t},\n\t)\n}\n"],"names":["PredicateDefinitionProcessor","predicate"],"mappings":";;;AAGA,MAAqB,mBAAmB;AAAA,EACvC,YAA4B,MAA8B;AAA9B,SAAA,OAAA;AAAA,EAA+B;AAC5D;AAEO,MAAM,4BAA4B,CACxC,OACA,aACA,QACA,cAC6B;AAC7B,QAAM,+BAA+B,IAAIA,YAAAA,6BAA6B,KAAK;AAC3E,SAAO,6BAA6B;AAAA,IACnC;AAAA,IACA;AAAA,IACA;AAAA,MACC,cAAc,CAAC,EAAE,YAAY;AAC5B,YAAI,iBAAiB,oBAAoB;AACxC,gBAAM,IAAI,MAAA;AAAA,QACX;AACA,eAAO;AAAA,MACR;AAAA,MACA,gBAAgB,CAAC,EAAE,OAAO,mBAAmB;AAC5C,YAAI,iBAAiB,oBAAoB;AACxC,cAAI,CAAC,YAAY,aAAa,IAAI,GAAG;AACpC,kBAAM,IAAI;AAAA,cACT,0BAA0B,aAAa,IAAI;AAAA,YAAA;AAAA,UAE7C;AACA,gBAAMC,aAAY,YAAY,aAAa,IAAI,EAAE,WAAW,MAAM,IAAI;AACtE,cAAI,CAACA,YAAW;AACf,kBAAM,IAAI;AAAA,cACT,aAAa,MAAM,IAAI,cAAc,aAAa,IAAI;AAAA,YAAA;AAAA,UAExD;AACA,iBAAOA;AAAAA,QACR;AACA,eAAO;AAAA,MACR;AAAA,IAAA;AAAA,EACD;AAEF;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PredicateReference.js","sources":["../../../../../../packages/schema-definition/src/acl/builder/PredicateReference.ts"],"sourcesContent":["import { Acl, Input, Model } from '@contember/schema'\nimport { PredicateDefinitionProcessor } from '@contember/schema-utils'\n\nexport default class PredicateReference {\n\tconstructor(public readonly name: Acl.PredicateReference) {}\n}\n\nexport const resolvePredicateReference = (\n\tmodel: Model.Schema,\n\tpermissions: Acl.Permissions,\n\tentity: Model.Entity,\n\tpredicate: Acl.PredicateDefinition<PredicateReference>,\n): Acl.PredicateDefinition => {\n\tconst predicateDefinitionProcessor = new PredicateDefinitionProcessor(model)\n\treturn predicateDefinitionProcessor.process<Acl.PredicateVariable | Input.Condition, PredicateReference>(\n\t\tentity,\n\t\tpredicate,\n\t\t{\n\t\t\thandleColumn: ({ value }) => {\n\t\t\t\tif (value instanceof PredicateReference) {\n\t\t\t\t\tthrow new Error()\n\t\t\t\t}\n\t\t\t\treturn value\n\t\t\t},\n\t\t\thandleRelation: ({ value, targetEntity }) => {\n\t\t\t\tif (value instanceof PredicateReference) {\n\t\t\t\t\tif (!permissions[targetEntity.name]) {\n\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t`Permissions for entity ${targetEntity.name} not found. Make sure you are defining it in a right order.`,\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t\tconst predicate = permissions[targetEntity.name].predicates[value.name]\n\t\t\t\t\tif (!predicate) {\n\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t`Predicate ${value.name} of entity ${targetEntity.name} not found. Make sure you are defining it in a right order.`,\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t\treturn predicate\n\t\t\t\t}\n\t\t\t\treturn value\n\t\t\t},\n\t\t},\n\t)\n}\n"],"names":["predicate"],"mappings":";AAGA,MAAqB,mBAAmB;AAAA,EACvC,YAA4B,MAA8B;AAA9B,SAAA,OAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"PredicateReference.js","sources":["../../../../../../packages/schema-definition/src/acl/builder/PredicateReference.ts"],"sourcesContent":["import { Acl, Input, Model } from '@contember/schema'\nimport { PredicateDefinitionProcessor } from '@contember/schema-utils'\n\nexport default class PredicateReference {\n\tconstructor(public readonly name: Acl.PredicateReference) {}\n}\n\nexport const resolvePredicateReference = (\n\tmodel: Model.Schema,\n\tpermissions: Acl.Permissions,\n\tentity: Model.Entity,\n\tpredicate: Acl.PredicateDefinition<PredicateReference>,\n): Acl.PredicateDefinition => {\n\tconst predicateDefinitionProcessor = new PredicateDefinitionProcessor(model)\n\treturn predicateDefinitionProcessor.process<Acl.PredicateVariable | Input.Condition, PredicateReference>(\n\t\tentity,\n\t\tpredicate,\n\t\t{\n\t\t\thandleColumn: ({ value }) => {\n\t\t\t\tif (value instanceof PredicateReference) {\n\t\t\t\t\tthrow new Error()\n\t\t\t\t}\n\t\t\t\treturn value\n\t\t\t},\n\t\t\thandleRelation: ({ value, targetEntity }) => {\n\t\t\t\tif (value instanceof PredicateReference) {\n\t\t\t\t\tif (!permissions[targetEntity.name]) {\n\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t`Permissions for entity ${targetEntity.name} not found. Make sure you are defining it in a right order.`,\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t\tconst predicate = permissions[targetEntity.name].predicates[value.name]\n\t\t\t\t\tif (!predicate) {\n\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t`Predicate ${value.name} of entity ${targetEntity.name} not found. Make sure you are defining it in a right order.`,\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t\treturn predicate\n\t\t\t\t}\n\t\t\t\treturn value\n\t\t\t},\n\t\t},\n\t)\n}\n"],"names":["predicate"],"mappings":";AAGA,MAAqB,mBAAmB;AAAA,EACvC,YAA4B,MAA8B;AAA9B,SAAA,OAAA;AAAA,EAA+B;AAC5D;AAEO,MAAM,4BAA4B,CACxC,OACA,aACA,QACA,cAC6B;AAC7B,QAAM,+BAA+B,IAAI,6BAA6B,KAAK;AAC3E,SAAO,6BAA6B;AAAA,IACnC;AAAA,IACA;AAAA,IACA;AAAA,MACC,cAAc,CAAC,EAAE,YAAY;AAC5B,YAAI,iBAAiB,oBAAoB;AACxC,gBAAM,IAAI,MAAA;AAAA,QACX;AACA,eAAO;AAAA,MACR;AAAA,MACA,gBAAgB,CAAC,EAAE,OAAO,mBAAmB;AAC5C,YAAI,iBAAiB,oBAAoB;AACxC,cAAI,CAAC,YAAY,aAAa,IAAI,GAAG;AACpC,kBAAM,IAAI;AAAA,cACT,0BAA0B,aAAa,IAAI;AAAA,YAAA;AAAA,UAE7C;AACA,gBAAMA,aAAY,YAAY,aAAa,IAAI,EAAE,WAAW,MAAM,IAAI;AACtE,cAAI,CAACA,YAAW;AACf,kBAAM,IAAI;AAAA,cACT,aAAa,MAAM,IAAI,cAAc,aAAa,IAAI;AAAA,YAAA;AAAA,UAExD;AACA,iBAAOA;AAAAA,QACR;AACA,eAAO;AAAA,MACR;AAAA,IAAA;AAAA,EACD;AAEF;"}
|
|
@@ -3,8 +3,8 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
3
3
|
const MetadataStore = require("../../utils/MetadataStore.cjs");
|
|
4
4
|
const entityAclExtensionsStore = MetadataStore.createMetadataStore([]);
|
|
5
5
|
const extendEntityAcl = (extension) => {
|
|
6
|
-
return function(cls) {
|
|
7
|
-
entityAclExtensionsStore.update(cls, (current) => [...current, extension]);
|
|
6
|
+
return function(cls, context) {
|
|
7
|
+
entityAclExtensionsStore.update(cls, (current) => [...current, extension], context);
|
|
8
8
|
};
|
|
9
9
|
};
|
|
10
10
|
const applyEntityAclExtensions = (cls, args) => entityAclExtensionsStore.get(cls).reduce(
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aclExtensions.cjs","sources":["../../../../../../packages/schema-definition/src/acl/definition/aclExtensions.ts"],"sourcesContent":["import { Acl, Model } from '@contember/schema'\nimport { createMetadataStore, DecoratorFunction, EntityConstructor } from '../../utils'\nimport { Role } from './roles'\n\nexport type EntityAclExtensionArgs
|
|
1
|
+
{"version":3,"file":"aclExtensions.cjs","sources":["../../../../../../packages/schema-definition/src/acl/definition/aclExtensions.ts"],"sourcesContent":["import { Acl, Model } from '@contember/schema'\nimport { createMetadataStore, DecoratorFunction, EntityConstructor } from '../../utils'\nimport { Role } from './roles'\n\nexport type EntityAclExtensionArgs = {\n\tentity: Model.Entity\n\trole: Role\n\tpermissions: Acl.EntityPermissions\n}\n\nconst entityAclExtensionsStore = createMetadataStore<EntityAclExtension[]>([])\n\nexport type EntityAclExtension = (args: EntityAclExtensionArgs) => Acl.EntityPermissions\nexport const extendEntityAcl = <T>(extension: EntityAclExtension): DecoratorFunction<T> => {\n\treturn function(cls: EntityConstructor, context?: ClassDecoratorContext) {\n\t\tentityAclExtensionsStore.update(cls, current => [...current, extension], context)\n\t}\n}\n\nexport const applyEntityAclExtensions = (\n\tcls: EntityConstructor,\n\targs: EntityAclExtensionArgs,\n): Acl.EntityPermissions =>\n\tentityAclExtensionsStore.get(cls).reduce(\n\t\t(permissions, ext) => ext({ ...args, permissions }),\n\t\targs.permissions,\n\t)\n"],"names":["createMetadataStore"],"mappings":";;;AAUA,MAAM,2BAA2BA,cAAAA,oBAA0C,EAAE;AAGtE,MAAM,kBAAkB,CAAI,cAAwD;AAC1F,SAAO,SAAS,KAAwB,SAAiC;AACxE,6BAAyB,OAAO,KAAK,CAAA,YAAW,CAAC,GAAG,SAAS,SAAS,GAAG,OAAO;AAAA,EACjF;AACD;AAEO,MAAM,2BAA2B,CACvC,KACA,SAEA,yBAAyB,IAAI,GAAG,EAAE;AAAA,EACjC,CAAC,aAAa,QAAQ,IAAI,EAAE,GAAG,MAAM,aAAa;AAAA,EAClD,KAAK;AACN;;;"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { createMetadataStore } from "../../utils/MetadataStore.js";
|
|
2
2
|
const entityAclExtensionsStore = createMetadataStore([]);
|
|
3
3
|
const extendEntityAcl = (extension) => {
|
|
4
|
-
return function(cls) {
|
|
5
|
-
entityAclExtensionsStore.update(cls, (current) => [...current, extension]);
|
|
4
|
+
return function(cls, context) {
|
|
5
|
+
entityAclExtensionsStore.update(cls, (current) => [...current, extension], context);
|
|
6
6
|
};
|
|
7
7
|
};
|
|
8
8
|
const applyEntityAclExtensions = (cls, args) => entityAclExtensionsStore.get(cls).reduce(
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aclExtensions.js","sources":["../../../../../../packages/schema-definition/src/acl/definition/aclExtensions.ts"],"sourcesContent":["import { Acl, Model } from '@contember/schema'\nimport { createMetadataStore, DecoratorFunction, EntityConstructor } from '../../utils'\nimport { Role } from './roles'\n\nexport type EntityAclExtensionArgs
|
|
1
|
+
{"version":3,"file":"aclExtensions.js","sources":["../../../../../../packages/schema-definition/src/acl/definition/aclExtensions.ts"],"sourcesContent":["import { Acl, Model } from '@contember/schema'\nimport { createMetadataStore, DecoratorFunction, EntityConstructor } from '../../utils'\nimport { Role } from './roles'\n\nexport type EntityAclExtensionArgs = {\n\tentity: Model.Entity\n\trole: Role\n\tpermissions: Acl.EntityPermissions\n}\n\nconst entityAclExtensionsStore = createMetadataStore<EntityAclExtension[]>([])\n\nexport type EntityAclExtension = (args: EntityAclExtensionArgs) => Acl.EntityPermissions\nexport const extendEntityAcl = <T>(extension: EntityAclExtension): DecoratorFunction<T> => {\n\treturn function(cls: EntityConstructor, context?: ClassDecoratorContext) {\n\t\tentityAclExtensionsStore.update(cls, current => [...current, extension], context)\n\t}\n}\n\nexport const applyEntityAclExtensions = (\n\tcls: EntityConstructor,\n\targs: EntityAclExtensionArgs,\n): Acl.EntityPermissions =>\n\tentityAclExtensionsStore.get(cls).reduce(\n\t\t(permissions, ext) => ext({ ...args, permissions }),\n\t\targs.permissions,\n\t)\n"],"names":[],"mappings":";AAUA,MAAM,2BAA2B,oBAA0C,EAAE;AAGtE,MAAM,kBAAkB,CAAI,cAAwD;AAC1F,SAAO,SAAS,KAAwB,SAAiC;AACxE,6BAAyB,OAAO,KAAK,CAAA,YAAW,CAAC,GAAG,SAAS,SAAS,GAAG,OAAO;AAAA,EACjF;AACD;AAEO,MAAM,2BAA2B,CACvC,KACA,SAEA,yBAAyB,IAAI,GAAG,EAAE;AAAA,EACjC,CAAC,aAAa,QAAQ,IAAI,EAAE,GAAG,MAAM,aAAa;AAAA,EAClD,KAAK;AACN;"}
|
|
@@ -4,7 +4,7 @@ const aclExtensions = require("./aclExtensions.cjs");
|
|
|
4
4
|
const allowCustomPrimary = (role) => {
|
|
5
5
|
return aclExtensions.extendEntityAcl(({ permissions, role: currentRole }) => {
|
|
6
6
|
if (!role || role === currentRole || Array.isArray(role) && role.includes(currentRole)) {
|
|
7
|
-
return { ...permissions, operations: { customPrimary: true } };
|
|
7
|
+
return { ...permissions, operations: { ...permissions.operations, customPrimary: true } };
|
|
8
8
|
}
|
|
9
9
|
return permissions;
|
|
10
10
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"customPrimary.cjs","sources":["../../../../../../packages/schema-definition/src/acl/definition/customPrimary.ts"],"sourcesContent":["import { Role } from './roles'\nimport { DecoratorFunction } from '../../utils'\nimport { extendEntityAcl } from './aclExtensions'\n\nexport const allowCustomPrimary = (role?: Role | Role[]): DecoratorFunction<any> => {\n\treturn extendEntityAcl(({ permissions, role: currentRole }) => {\n\t\tif (!role || role === currentRole || (Array.isArray(role) && role.includes(currentRole))) {\n\t\t\treturn { ...permissions, operations: { customPrimary: true } }\n\t\t}\n\t\treturn permissions\n\t})\n}\n"],"names":["extendEntityAcl"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"customPrimary.cjs","sources":["../../../../../../packages/schema-definition/src/acl/definition/customPrimary.ts"],"sourcesContent":["import { Role } from './roles'\nimport { DecoratorFunction } from '../../utils'\nimport { extendEntityAcl } from './aclExtensions'\n\nexport const allowCustomPrimary = (role?: Role | Role[]): DecoratorFunction<any> => {\n\treturn extendEntityAcl(({ permissions, role: currentRole }) => {\n\t\tif (!role || role === currentRole || (Array.isArray(role) && role.includes(currentRole))) {\n\t\t\treturn { ...permissions, operations: { ...permissions.operations, customPrimary: true } }\n\t\t}\n\t\treturn permissions\n\t})\n}\n"],"names":["extendEntityAcl"],"mappings":";;;AAIO,MAAM,qBAAqB,CAAC,SAAiD;AACnF,SAAOA,cAAAA,gBAAgB,CAAC,EAAE,aAAa,MAAM,kBAAkB;AAC9D,QAAI,CAAC,QAAQ,SAAS,eAAgB,MAAM,QAAQ,IAAI,KAAK,KAAK,SAAS,WAAW,GAAI;AACzF,aAAO,EAAE,GAAG,aAAa,YAAY,EAAE,GAAG,YAAY,YAAY,eAAe,OAAK;AAAA,IACvF;AACA,WAAO;AAAA,EACR,CAAC;AACF;;"}
|
|
@@ -2,7 +2,7 @@ import { extendEntityAcl } from "./aclExtensions.js";
|
|
|
2
2
|
const allowCustomPrimary = (role) => {
|
|
3
3
|
return extendEntityAcl(({ permissions, role: currentRole }) => {
|
|
4
4
|
if (!role || role === currentRole || Array.isArray(role) && role.includes(currentRole)) {
|
|
5
|
-
return { ...permissions, operations: { customPrimary: true } };
|
|
5
|
+
return { ...permissions, operations: { ...permissions.operations, customPrimary: true } };
|
|
6
6
|
}
|
|
7
7
|
return permissions;
|
|
8
8
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"customPrimary.js","sources":["../../../../../../packages/schema-definition/src/acl/definition/customPrimary.ts"],"sourcesContent":["import { Role } from './roles'\nimport { DecoratorFunction } from '../../utils'\nimport { extendEntityAcl } from './aclExtensions'\n\nexport const allowCustomPrimary = (role?: Role | Role[]): DecoratorFunction<any> => {\n\treturn extendEntityAcl(({ permissions, role: currentRole }) => {\n\t\tif (!role || role === currentRole || (Array.isArray(role) && role.includes(currentRole))) {\n\t\t\treturn { ...permissions, operations: { customPrimary: true } }\n\t\t}\n\t\treturn permissions\n\t})\n}\n"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"customPrimary.js","sources":["../../../../../../packages/schema-definition/src/acl/definition/customPrimary.ts"],"sourcesContent":["import { Role } from './roles'\nimport { DecoratorFunction } from '../../utils'\nimport { extendEntityAcl } from './aclExtensions'\n\nexport const allowCustomPrimary = (role?: Role | Role[]): DecoratorFunction<any> => {\n\treturn extendEntityAcl(({ permissions, role: currentRole }) => {\n\t\tif (!role || role === currentRole || (Array.isArray(role) && role.includes(currentRole))) {\n\t\t\treturn { ...permissions, operations: { ...permissions.operations, customPrimary: true } }\n\t\t}\n\t\treturn permissions\n\t})\n}\n"],"names":[],"mappings":";AAIO,MAAM,qBAAqB,CAAC,SAAiD;AACnF,SAAO,gBAAgB,CAAC,EAAE,aAAa,MAAM,kBAAkB;AAC9D,QAAI,CAAC,QAAQ,SAAS,eAAgB,MAAM,QAAQ,IAAI,KAAK,KAAK,SAAS,WAAW,GAAI;AACzF,aAAO,EAAE,GAAG,aAAa,YAAY,EAAE,GAAG,YAAY,YAAY,eAAe,OAAK;AAAA,IACvF;AACA,WAAO;AAAA,EACR,CAAC;AACF;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../../../../packages/schema-definition/src/acl/definition/index.ts"],"sourcesContent":["import { Acl, Model } from '@contember/schema'\nimport { AclFactory } from './internal/AclFactory'\n\nexport * from './customPrimary'\nexport * from './permissions'\nexport * from './references'\nexport * from './roles'\nexport * from './variables'\n\nexport const createAcl = (\n\texportedDefinitions: Record<string, any>,\n\tmodel: Model.Schema,\n): Acl.Schema => {\n\tconst aclFactory = new AclFactory(model)\n\treturn aclFactory.create(exportedDefinitions)\n}\n"],"names":["AclFactory"],"mappings":";;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../../../../packages/schema-definition/src/acl/definition/index.ts"],"sourcesContent":["import { Acl, Model } from '@contember/schema'\nimport { AclFactory } from './internal/AclFactory'\n\nexport * from './customPrimary'\nexport * from './permissions'\nexport * from './references'\nexport * from './roles'\nexport * from './variables'\n\nexport const createAcl = (\n\texportedDefinitions: Record<string, any>,\n\tmodel: Model.Schema,\n): Acl.Schema => {\n\tconst aclFactory = new AclFactory(model)\n\treturn aclFactory.create(exportedDefinitions)\n}\n"],"names":["AclFactory"],"mappings":";;;;;;;;AASO,MAAM,YAAY,CACxB,qBACA,UACgB;AAChB,QAAM,aAAa,IAAIA,WAAAA,WAAW,KAAK;AACvC,SAAO,WAAW,OAAO,mBAAmB;AAC7C;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../../packages/schema-definition/src/acl/definition/index.ts"],"sourcesContent":["import { Acl, Model } from '@contember/schema'\nimport { AclFactory } from './internal/AclFactory'\n\nexport * from './customPrimary'\nexport * from './permissions'\nexport * from './references'\nexport * from './roles'\nexport * from './variables'\n\nexport const createAcl = (\n\texportedDefinitions: Record<string, any>,\n\tmodel: Model.Schema,\n): Acl.Schema => {\n\tconst aclFactory = new AclFactory(model)\n\treturn aclFactory.create(exportedDefinitions)\n}\n"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../../packages/schema-definition/src/acl/definition/index.ts"],"sourcesContent":["import { Acl, Model } from '@contember/schema'\nimport { AclFactory } from './internal/AclFactory'\n\nexport * from './customPrimary'\nexport * from './permissions'\nexport * from './references'\nexport * from './roles'\nexport * from './variables'\n\nexport const createAcl = (\n\texportedDefinitions: Record<string, any>,\n\tmodel: Model.Schema,\n): Acl.Schema => {\n\tconst aclFactory = new AclFactory(model)\n\treturn aclFactory.create(exportedDefinitions)\n}\n"],"names":[],"mappings":";;;;;;AASO,MAAM,YAAY,CACxB,qBACA,UACgB;AAChB,QAAM,aAAa,IAAI,WAAW,KAAK;AACvC,SAAO,WAAW,OAAO,mBAAmB;AAC7C;"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const schemaUtils = require("@contember/schema-utils");
|
|
3
4
|
const EntityPredicateResolver = require("./EntityPredicateResolver.cjs");
|
|
4
5
|
const stores = require("./stores.cjs");
|
|
5
6
|
const roles = require("../roles.cjs");
|
|
@@ -15,7 +16,7 @@ class AclFactory {
|
|
|
15
16
|
const entityLikeDefinition = filterEntityDefinition.filterEntityDefinition(exportedDefinitions);
|
|
16
17
|
const roles$1 = Object.values(exportedDefinitions).filter((it) => it instanceof roles.Role);
|
|
17
18
|
const variables$1 = Object.values(exportedDefinitions).filter((it) => it instanceof variables.VariableDefinition);
|
|
18
|
-
const groupedPermissions =
|
|
19
|
+
const groupedPermissions = this.groupPermissions(entityLikeDefinition, roles$1);
|
|
19
20
|
return {
|
|
20
21
|
roles: Object.fromEntries(roles$1.map((role) => {
|
|
21
22
|
const rolePermissions = groupedPermissions.get(role);
|
|
@@ -32,18 +33,20 @@ class AclFactory {
|
|
|
32
33
|
};
|
|
33
34
|
}
|
|
34
35
|
createPermissions(rolePermissions, entityLikeDefinition, role) {
|
|
35
|
-
return Object.fromEntries(
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
36
|
+
return Object.fromEntries(
|
|
37
|
+
Object.values(this.model.entities).map((entity) => {
|
|
38
|
+
const permissions = rolePermissions ? this.createPermissionsFromAllow(rolePermissions, entity) : { predicates: {}, operations: {} };
|
|
39
|
+
const isEmpty = !rolePermissions?.has(entity.name);
|
|
40
|
+
const withExtensions = aclExtensions.applyEntityAclExtensions(entityLikeDefinition[entity.name], { entity, permissions, role });
|
|
41
|
+
if (isEmpty && withExtensions === permissions) {
|
|
42
|
+
return void 0;
|
|
43
|
+
}
|
|
44
|
+
return [
|
|
45
|
+
entity.name,
|
|
46
|
+
withExtensions
|
|
47
|
+
];
|
|
48
|
+
}).filter((it) => it !== void 0)
|
|
49
|
+
);
|
|
47
50
|
}
|
|
48
51
|
createPermissionsFromAllow(rolePermissions, entity) {
|
|
49
52
|
const predicatesResolver = EntityPredicateResolver.EntityPredicatesResolver.create(rolePermissions, this.model, entity);
|
|
@@ -97,7 +100,7 @@ class AclFactory {
|
|
|
97
100
|
return [variable.name, variable.variable];
|
|
98
101
|
}));
|
|
99
102
|
}
|
|
100
|
-
|
|
103
|
+
groupPermissions(entityLikeDefinition, roles2) {
|
|
101
104
|
const groupedPermissions = /* @__PURE__ */ new Map();
|
|
102
105
|
for (const [name, entity] of entityLikeDefinition) {
|
|
103
106
|
const initEntityPermissions = (role) => {
|
|
@@ -110,12 +113,17 @@ class AclFactory {
|
|
|
110
113
|
return entityPermissions;
|
|
111
114
|
};
|
|
112
115
|
const metadata = stores.allowDefinitionsStore.get(entity);
|
|
113
|
-
for (const { role,
|
|
116
|
+
for (const { role, factory } of metadata) {
|
|
114
117
|
if (!roles2.includes(role)) {
|
|
115
118
|
throw `Role ${role.name} used on entity ${name} is not registered. Have you exported it?`;
|
|
116
119
|
}
|
|
117
120
|
const entityPermissions = initEntityPermissions(role);
|
|
118
|
-
|
|
121
|
+
const entity2 = schemaUtils.getEntity(this.model, name);
|
|
122
|
+
entityPermissions.definitions.push(factory({
|
|
123
|
+
model: this.model,
|
|
124
|
+
entity: schemaUtils.getEntity(this.model, name),
|
|
125
|
+
except: (...fields) => Object.keys(entity2.fields).filter((it) => !fields.includes(it))
|
|
126
|
+
}));
|
|
119
127
|
}
|
|
120
128
|
}
|
|
121
129
|
return groupedPermissions;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AclFactory.cjs","sources":["../../../../../../../packages/schema-definition/src/acl/definition/internal/AclFactory.ts"],"sourcesContent":["import { Acl, Model, Writable } from '@contember/schema'\nimport { getEntity } from '@contember/schema-utils'\n\nimport { EntityPredicatesResolver } from './EntityPredicateResolver'\nimport { AllowDefinition } from '../permissions'\nimport {\n\tallowDefinitionsStore,\n\tEntityPermissionsDefinition,\n} from './stores'\nimport { Role } from '../roles'\nimport { VariableDefinition } from '../variables'\nimport { filterEntityDefinition } from '../../../utils'\nimport { applyEntityAclExtensions } from '../aclExtensions'\n\nexport class AclFactory {\n\tconstructor(\n\t\tprivate model: Model.Schema,\n\t) {\n\t}\n\n\tpublic create(\n\t\texportedDefinitions: Record<string, any>,\n\t): Acl.Schema {\n\t\tconst entityLikeDefinition = filterEntityDefinition(exportedDefinitions)\n\t\tconst roles: Role[] = Object.values(exportedDefinitions).filter(it => it instanceof Role)\n\t\tconst variables: VariableDefinition[] = Object.values(exportedDefinitions).filter(it => it instanceof VariableDefinition)\n\n\t\tconst groupedPermissions = AclFactory.groupPermissions(entityLikeDefinition, roles)\n\n\t\treturn {\n\t\t\troles: Object.fromEntries(roles.map((role): [string, Acl.RolePermissions] => {\n\t\t\t\tconst rolePermissions = groupedPermissions.get(role)\n\t\t\t\treturn [\n\t\t\t\t\trole.name,\n\t\t\t\t\t{\n\t\t\t\t\t\t...role.options,\n\t\t\t\t\t\tstages: role.options.stages ?? '*',\n\t\t\t\t\t\tentities: this.createPermissions(rolePermissions, Object.fromEntries(entityLikeDefinition), role),\n\t\t\t\t\t\tvariables: this.createVariables(role, variables),\n\t\t\t\t\t},\n\t\t\t\t]\n\t\t\t})),\n\t\t}\n\t}\n\n\tprivate createPermissions(rolePermissions: PermissionsByEntity | undefined, entityLikeDefinition: Record<string, { new(): any }>, role: Role): Acl.Permissions {\n\t\treturn Object.fromEntries(Object.values(this.model.entities).map((entity): [string, Acl.EntityPermissions] | undefined => {\n\t\t\tconst permissions = rolePermissions ? this.createPermissionsFromAllow(rolePermissions, entity) : { predicates: {}, operations: {} }\n\t\t\tconst isEmpty = !rolePermissions?.has(entity.name)\n\t\t\tconst withExtensions = applyEntityAclExtensions(entityLikeDefinition[entity.name], { entity, permissions, role })\n\t\t\tif (isEmpty && withExtensions === permissions) {\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\treturn [\n\t\t\t\tentity.name,\n\t\t\t\twithExtensions,\n\t\t\t]\n\t\t}).filter(<T>(it: T | undefined): it is T => it !== undefined))\n\t}\n\n\tprivate createPermissionsFromAllow(rolePermissions: PermissionsByEntity, entity: Model.Entity): Acl.EntityPermissions {\n\t\tconst predicatesResolver = EntityPredicatesResolver.create(rolePermissions, this.model, entity)\n\n\t\tconst entityOperations: Writable<Acl.EntityOperations> = {}\n\t\tconst noRootOptions = this.getNoRootOptions(entity, rolePermissions.get(entity.name))\n\t\tif (noRootOptions?.length) {\n\t\t\tentityOperations.noRoot = noRootOptions\n\t\t}\n\t\tfor (const op of ['create', 'update', 'read'] as const) {\n\t\t\tconst fieldPermissions: Writable<Acl.FieldPermissions> = {}\n\t\t\tfor (const field of Object.keys(entity.fields)) {\n\t\t\t\tconst predicate = predicatesResolver.createFieldPredicate(op, field, field === entity.primary)\n\t\t\t\tif (predicate !== undefined) {\n\t\t\t\t\tfieldPermissions[field] = predicate\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (Object.keys(fieldPermissions).length > 0) {\n\t\t\t\tentityOperations[op] = fieldPermissions\n\t\t\t}\n\t\t}\n\t\tconst delPredicate = predicatesResolver.createFieldPredicate('delete', '', false)\n\t\tif (delPredicate !== undefined) {\n\t\t\tentityOperations.delete = delPredicate\n\t\t}\n\t\treturn {\n\t\t\tpredicates: predicatesResolver.getUsedPredicates(),\n\t\t\toperations: entityOperations,\n\t\t}\n\t}\n\n\n\tgetNoRootOptions(entity: Model.Entity, permissions?: EntityPermissions): Acl.EntityOperations['noRoot'] {\n\t\tconst allowedRoot = new Set<Acl.Operation>()\n\t\tconst disallowedRoot = new Set<Acl.Operation>()\n\t\tfor (const def of permissions?.definitions ?? []) {\n\t\t\tconst noRoot = def.through === true\n\t\t\tfor (const op of ['create', 'read', 'update', 'delete'] as const) {\n\t\t\t\tif (def[op]) {\n\t\t\t\t\tconst currentSet = noRoot ? disallowedRoot : allowedRoot\n\t\t\t\t\tcurrentSet.add(op as Acl.Operation)\n\n\t\t\t\t\tconst otherSet = noRoot ? allowedRoot : disallowedRoot\n\n\t\t\t\t\tif (otherSet.has(op as Acl.Operation)) {\n\t\t\t\t\t\tthrow new Error(`Operation ${op} cannot be both allowed and disallowed on root on entity ${entity.name}`)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t\treturn [...disallowedRoot.values()]\n\t}\n\n\tprivate createVariables(role: Role, variables: VariableDefinition[]): Acl.Variables {\n\t\tconst roleVariables = variables.filter(it => it.roles.includes(role))\n\t\treturn Object.fromEntries(roleVariables.map((variable): [string, Acl.Variable] => {\n\t\t\treturn [variable.name, variable.variable]\n\t\t}))\n\t}\n\n\tprivate static groupPermissions(entityLikeDefinition: [string, { new(): any }][], roles: Role[]): PermissionsByRoleAndEntity {\n\t\tconst groupedPermissions: PermissionsByRoleAndEntity = new Map()\n\t\tfor (const [name, entity] of entityLikeDefinition) {\n\t\t\tconst initEntityPermissions = (role: Role): EntityPermissions => {\n\t\t\t\tconst rolePermissions: PermissionsByEntity = groupedPermissions.get(role) ?? new Map()\n\t\t\t\tgroupedPermissions.set(role, rolePermissions)\n\t\t\t\tconst entityPermissions = rolePermissions.get(name) ?? {\n\t\t\t\t\tdefinitions: [],\n\t\t\t\t}\n\t\t\t\trolePermissions.set(name, entityPermissions)\n\t\t\t\treturn entityPermissions\n\t\t\t}\n\t\t\tconst metadata: EntityPermissionsDefinition[] = allowDefinitionsStore.get(entity)\n\t\t\tfor (const { role, ...definition } of metadata) {\n\t\t\t\tif (!roles.includes(role)) {\n\t\t\t\t\tthrow `Role ${role.name} used on entity ${name} is not registered. Have you exported it?`\n\t\t\t\t}\n\t\t\t\tconst entityPermissions = initEntityPermissions(role)\n\t\t\t\tentityPermissions.definitions.push(definition)\n\t\t\t}\n\t\t}\n\n\t\treturn groupedPermissions\n\t}\n}\n\n\nexport type EntityPermissions = { definitions: AllowDefinition<any>[] }\nexport type PermissionsByEntity = Map<string, EntityPermissions>\nexport type PermissionsByRoleAndEntity = Map<Role, PermissionsByEntity>\n"],"names":["filterEntityDefinition","roles","Role","variables","VariableDefinition","applyEntityAclExtensions","EntityPredicatesResolver","allowDefinitionsStore"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AclFactory.cjs","sources":["../../../../../../../packages/schema-definition/src/acl/definition/internal/AclFactory.ts"],"sourcesContent":["import { Acl, Model, Writable } from '@contember/schema'\nimport { getEntity } from '@contember/schema-utils'\n\nimport { EntityPredicatesResolver } from './EntityPredicateResolver'\nimport { AllowDefinition } from '../permissions'\nimport { allowDefinitionsStore, EntityPermissionsDefinition } from './stores'\nimport { Role } from '../roles'\nimport { VariableDefinition } from '../variables'\nimport { filterEntityDefinition } from '../../../utils'\nimport { applyEntityAclExtensions } from '../aclExtensions'\n\nexport class AclFactory {\n\tconstructor(\n\t\tprivate model: Model.Schema,\n\t) {\n\t}\n\n\tpublic create(\n\t\texportedDefinitions: Record<string, any>,\n\t): Acl.Schema {\n\t\tconst entityLikeDefinition = filterEntityDefinition(exportedDefinitions)\n\t\tconst roles: Role[] = Object.values(exportedDefinitions).filter(it => it instanceof Role)\n\t\tconst variables: VariableDefinition[] = Object.values(exportedDefinitions).filter(it => it instanceof VariableDefinition)\n\n\t\tconst groupedPermissions = this.groupPermissions(entityLikeDefinition, roles)\n\n\t\treturn {\n\t\t\troles: Object.fromEntries(roles.map((role): [string, Acl.RolePermissions] => {\n\t\t\t\tconst rolePermissions = groupedPermissions.get(role)\n\t\t\t\treturn [\n\t\t\t\t\trole.name,\n\t\t\t\t\t{\n\t\t\t\t\t\t...role.options,\n\t\t\t\t\t\tstages: role.options.stages ?? '*',\n\t\t\t\t\t\tentities: this.createPermissions(rolePermissions, Object.fromEntries(entityLikeDefinition), role),\n\t\t\t\t\t\tvariables: this.createVariables(role, variables),\n\t\t\t\t\t},\n\t\t\t\t]\n\t\t\t})),\n\t\t}\n\t}\n\n\tprivate createPermissions(\n\t\trolePermissions: PermissionsByEntity | undefined,\n\t\tentityLikeDefinition: Record<string, { new(): any }>,\n\t\trole: Role,\n\t): Acl.Permissions {\n\t\treturn Object.fromEntries(\n\t\t\tObject.values(this.model.entities).map((entity): [string, Acl.EntityPermissions] | undefined => {\n\t\t\t\tconst permissions = rolePermissions ? this.createPermissionsFromAllow(rolePermissions, entity) : { predicates: {}, operations: {} }\n\t\t\t\tconst isEmpty = !rolePermissions?.has(entity.name)\n\t\t\t\tconst withExtensions = applyEntityAclExtensions(entityLikeDefinition[entity.name], { entity, permissions, role })\n\t\t\t\tif (isEmpty && withExtensions === permissions) {\n\t\t\t\t\treturn undefined\n\t\t\t\t}\n\t\t\t\treturn [\n\t\t\t\t\tentity.name,\n\t\t\t\t\twithExtensions,\n\t\t\t\t]\n\t\t\t}).filter(<T>(it: T | undefined): it is T => it !== undefined),\n\t\t)\n\t}\n\n\tprivate createPermissionsFromAllow(rolePermissions: PermissionsByEntity, entity: Model.Entity): Acl.EntityPermissions {\n\t\tconst predicatesResolver = EntityPredicatesResolver.create(rolePermissions, this.model, entity)\n\n\t\tconst entityOperations: Writable<Acl.EntityOperations> = {}\n\t\tconst noRootOptions = this.getNoRootOptions(entity, rolePermissions.get(entity.name))\n\t\tif (noRootOptions?.length) {\n\t\t\tentityOperations.noRoot = noRootOptions\n\t\t}\n\t\tfor (const op of ['create', 'update', 'read'] as const) {\n\t\t\tconst fieldPermissions: Writable<Acl.FieldPermissions> = {}\n\t\t\tfor (const field of Object.keys(entity.fields)) {\n\t\t\t\tconst predicate = predicatesResolver.createFieldPredicate(op, field, field === entity.primary)\n\t\t\t\tif (predicate !== undefined) {\n\t\t\t\t\tfieldPermissions[field] = predicate\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (Object.keys(fieldPermissions).length > 0) {\n\t\t\t\tentityOperations[op] = fieldPermissions\n\t\t\t}\n\t\t}\n\t\tconst delPredicate = predicatesResolver.createFieldPredicate('delete', '', false)\n\t\tif (delPredicate !== undefined) {\n\t\t\tentityOperations.delete = delPredicate\n\t\t}\n\t\treturn {\n\t\t\tpredicates: predicatesResolver.getUsedPredicates(),\n\t\t\toperations: entityOperations,\n\t\t}\n\t}\n\n\tgetNoRootOptions(entity: Model.Entity, permissions?: EntityPermissions): Acl.EntityOperations['noRoot'] {\n\t\tconst allowedRoot = new Set<Acl.Operation>()\n\t\tconst disallowedRoot = new Set<Acl.Operation>()\n\t\tfor (const def of permissions?.definitions ?? []) {\n\t\t\tconst noRoot = def.through === true\n\t\t\tfor (const op of ['create', 'read', 'update', 'delete'] as const) {\n\t\t\t\tif (def[op]) {\n\t\t\t\t\tconst currentSet = noRoot ? disallowedRoot : allowedRoot\n\t\t\t\t\tcurrentSet.add(op as Acl.Operation)\n\n\t\t\t\t\tconst otherSet = noRoot ? allowedRoot : disallowedRoot\n\n\t\t\t\t\tif (otherSet.has(op as Acl.Operation)) {\n\t\t\t\t\t\tthrow new Error(`Operation ${op} cannot be both allowed and disallowed on root on entity ${entity.name}`)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn [...disallowedRoot.values()]\n\t}\n\n\tprivate createVariables(role: Role, variables: VariableDefinition[]): Acl.Variables {\n\t\tconst roleVariables = variables.filter(it => it.roles.includes(role))\n\t\treturn Object.fromEntries(roleVariables.map((variable): [string, Acl.Variable] => {\n\t\t\treturn [variable.name, variable.variable]\n\t\t}))\n\t}\n\n\tprivate groupPermissions(entityLikeDefinition: [string, { new(): any }][], roles: Role[]): PermissionsByRoleAndEntity {\n\t\tconst groupedPermissions: PermissionsByRoleAndEntity = new Map()\n\t\tfor (const [name, entity] of entityLikeDefinition) {\n\t\t\tconst initEntityPermissions = (role: Role): EntityPermissions => {\n\t\t\t\tconst rolePermissions: PermissionsByEntity = groupedPermissions.get(role) ?? new Map()\n\t\t\t\tgroupedPermissions.set(role, rolePermissions)\n\t\t\t\tconst entityPermissions = rolePermissions.get(name) ?? {\n\t\t\t\t\tdefinitions: [],\n\t\t\t\t}\n\t\t\t\trolePermissions.set(name, entityPermissions)\n\t\t\t\treturn entityPermissions\n\t\t\t}\n\t\t\tconst metadata: EntityPermissionsDefinition[] = allowDefinitionsStore.get(entity)\n\t\t\tfor (const { role, factory } of metadata) {\n\t\t\t\tif (!roles.includes(role)) {\n\t\t\t\t\tthrow `Role ${role.name} used on entity ${name} is not registered. Have you exported it?`\n\t\t\t\t}\n\t\t\t\tconst entityPermissions = initEntityPermissions(role)\n\t\t\t\tconst entity = getEntity(this.model, name)\n\t\t\t\tentityPermissions.definitions.push(factory({\n\t\t\t\t\tmodel: this.model,\n\t\t\t\t\tentity: getEntity(this.model, name),\n\t\t\t\t\texcept: (...fields) => (Object.keys(entity.fields)).filter(it => !fields.includes(it)),\n\t\t\t\t}))\n\t\t\t}\n\t\t}\n\n\t\treturn groupedPermissions\n\t}\n}\n\nexport type EntityPermissions = { definitions: AllowDefinition<any>[] }\nexport type PermissionsByEntity = Map<string, EntityPermissions>\nexport type PermissionsByRoleAndEntity = Map<Role, PermissionsByEntity>\n"],"names":["filterEntityDefinition","roles","Role","variables","VariableDefinition","applyEntityAclExtensions","EntityPredicatesResolver","allowDefinitionsStore","entity","getEntity"],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { getEntity } from "@contember/schema-utils";
|
|
1
2
|
import { EntityPredicatesResolver } from "./EntityPredicateResolver.js";
|
|
2
3
|
import { allowDefinitionsStore } from "./stores.js";
|
|
3
4
|
import { Role } from "../roles.js";
|
|
@@ -13,7 +14,7 @@ class AclFactory {
|
|
|
13
14
|
const entityLikeDefinition = filterEntityDefinition(exportedDefinitions);
|
|
14
15
|
const roles = Object.values(exportedDefinitions).filter((it) => it instanceof Role);
|
|
15
16
|
const variables = Object.values(exportedDefinitions).filter((it) => it instanceof VariableDefinition);
|
|
16
|
-
const groupedPermissions =
|
|
17
|
+
const groupedPermissions = this.groupPermissions(entityLikeDefinition, roles);
|
|
17
18
|
return {
|
|
18
19
|
roles: Object.fromEntries(roles.map((role) => {
|
|
19
20
|
const rolePermissions = groupedPermissions.get(role);
|
|
@@ -30,18 +31,20 @@ class AclFactory {
|
|
|
30
31
|
};
|
|
31
32
|
}
|
|
32
33
|
createPermissions(rolePermissions, entityLikeDefinition, role) {
|
|
33
|
-
return Object.fromEntries(
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
34
|
+
return Object.fromEntries(
|
|
35
|
+
Object.values(this.model.entities).map((entity) => {
|
|
36
|
+
const permissions = rolePermissions ? this.createPermissionsFromAllow(rolePermissions, entity) : { predicates: {}, operations: {} };
|
|
37
|
+
const isEmpty = !rolePermissions?.has(entity.name);
|
|
38
|
+
const withExtensions = applyEntityAclExtensions(entityLikeDefinition[entity.name], { entity, permissions, role });
|
|
39
|
+
if (isEmpty && withExtensions === permissions) {
|
|
40
|
+
return void 0;
|
|
41
|
+
}
|
|
42
|
+
return [
|
|
43
|
+
entity.name,
|
|
44
|
+
withExtensions
|
|
45
|
+
];
|
|
46
|
+
}).filter((it) => it !== void 0)
|
|
47
|
+
);
|
|
45
48
|
}
|
|
46
49
|
createPermissionsFromAllow(rolePermissions, entity) {
|
|
47
50
|
const predicatesResolver = EntityPredicatesResolver.create(rolePermissions, this.model, entity);
|
|
@@ -95,7 +98,7 @@ class AclFactory {
|
|
|
95
98
|
return [variable.name, variable.variable];
|
|
96
99
|
}));
|
|
97
100
|
}
|
|
98
|
-
|
|
101
|
+
groupPermissions(entityLikeDefinition, roles) {
|
|
99
102
|
const groupedPermissions = /* @__PURE__ */ new Map();
|
|
100
103
|
for (const [name, entity] of entityLikeDefinition) {
|
|
101
104
|
const initEntityPermissions = (role) => {
|
|
@@ -108,12 +111,17 @@ class AclFactory {
|
|
|
108
111
|
return entityPermissions;
|
|
109
112
|
};
|
|
110
113
|
const metadata = allowDefinitionsStore.get(entity);
|
|
111
|
-
for (const { role,
|
|
114
|
+
for (const { role, factory } of metadata) {
|
|
112
115
|
if (!roles.includes(role)) {
|
|
113
116
|
throw `Role ${role.name} used on entity ${name} is not registered. Have you exported it?`;
|
|
114
117
|
}
|
|
115
118
|
const entityPermissions = initEntityPermissions(role);
|
|
116
|
-
|
|
119
|
+
const entity2 = getEntity(this.model, name);
|
|
120
|
+
entityPermissions.definitions.push(factory({
|
|
121
|
+
model: this.model,
|
|
122
|
+
entity: getEntity(this.model, name),
|
|
123
|
+
except: (...fields) => Object.keys(entity2.fields).filter((it) => !fields.includes(it))
|
|
124
|
+
}));
|
|
117
125
|
}
|
|
118
126
|
}
|
|
119
127
|
return groupedPermissions;
|