@antelopejs/interface-dms 0.3.5 → 0.3.6
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/CHANGELOG.md +27 -0
- package/README.md +2 -2
- package/dist/attachments.d.ts +19 -10
- package/dist/attachments.js +15 -0
- package/dist/attachments.js.map +1 -1
- package/dist/auth/db/internal/sessions.model.d.ts +9 -0
- package/dist/auth/db/internal/sessions.model.js +31 -0
- package/dist/auth/db/internal/sessions.model.js.map +1 -0
- package/dist/auth/db/models/sessions.model.d.ts +16 -2
- package/dist/auth/db/models/sessions.model.js +33 -41
- package/dist/auth/db/models/sessions.model.js.map +1 -1
- package/dist/auth/db/models/userExternalIdentities.model.d.ts +11 -0
- package/dist/auth/db/models/userExternalIdentities.model.js +11 -0
- package/dist/auth/db/models/userExternalIdentities.model.js.map +1 -1
- package/dist/auth/db/models/users.model.d.ts +13 -0
- package/dist/auth/db/models/users.model.js +13 -0
- package/dist/auth/db/models/users.model.js.map +1 -1
- package/dist/auth/db/tables/sessions.table.d.ts +6 -1
- package/dist/auth/db/tables/sessions.table.js +0 -4
- package/dist/auth/db/tables/sessions.table.js.map +1 -1
- package/dist/auth/db/tables/userExternalIdentities.table.d.ts +24 -0
- package/dist/auth/db/tables/userExternalIdentities.table.js +13 -0
- package/dist/auth/db/tables/userExternalIdentities.table.js.map +1 -1
- package/dist/auth/db/tables/users.table.d.ts +60 -0
- package/dist/auth/db/tables/users.table.js +32 -0
- package/dist/auth/db/tables/users.table.js.map +1 -1
- package/dist/auth/index.d.ts +114 -10
- package/dist/auth/index.js +110 -17
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/internal/request-authenticators.d.ts +6 -0
- package/dist/auth/internal/request-authenticators.js +82 -0
- package/dist/auth/internal/request-authenticators.js.map +1 -0
- package/dist/auth/internal/request-principal.d.ts +10 -0
- package/dist/auth/internal/request-principal.js +27 -0
- package/dist/auth/internal/request-principal.js.map +1 -0
- package/dist/auth/internal/user-agent.d.ts +10 -0
- package/dist/auth/internal/user-agent.js +3 -0
- package/dist/auth/internal/user-agent.js.map +1 -0
- package/dist/auth/password.d.ts +19 -0
- package/dist/auth/password.js +23 -0
- package/dist/auth/password.js.map +1 -1
- package/dist/auth/request-authenticators.d.ts +4 -3
- package/dist/auth/request-authenticators.js +0 -77
- package/dist/auth/request-authenticators.js.map +1 -1
- package/dist/base/activity-feed.d.ts +210 -0
- package/dist/base/activity-feed.js +104 -0
- package/dist/base/activity-feed.js.map +1 -0
- package/dist/base/banner.d.ts +111 -0
- package/dist/base/banner.js +93 -0
- package/dist/base/banner.js.map +1 -0
- package/dist/base/block-registry/helpers.d.ts +26 -0
- package/dist/base/block-registry/helpers.js +27 -1
- package/dist/base/block-registry/helpers.js.map +1 -1
- package/dist/base/block-registry/internal/describe.d.ts +35 -0
- package/dist/base/block-registry/{describe.js → internal/describe.js} +50 -0
- package/dist/base/block-registry/internal/describe.js.map +1 -0
- package/dist/base/block-registry/internal/ui.d.ts +23 -0
- package/dist/base/block-registry/internal/ui.js +35 -0
- package/dist/base/block-registry/internal/ui.js.map +1 -0
- package/dist/base/block-registry/registry.d.ts +24 -0
- package/dist/base/block-registry/registry.js +30 -1
- package/dist/base/block-registry/registry.js.map +1 -1
- package/dist/base/block-registry/types.d.ts +149 -0
- package/dist/base/block-types.d.ts +22 -2
- package/dist/base/block-types.js +24 -2
- package/dist/base/block-types.js.map +1 -1
- package/dist/base/card.d.ts +100 -0
- package/dist/base/card.js +91 -0
- package/dist/base/card.js.map +1 -0
- package/dist/base/chart-card.d.ts +9 -2
- package/dist/base/chart-card.js +14 -1
- package/dist/base/chart-card.js.map +1 -1
- package/dist/base/chart-schemas.d.ts +127 -115
- package/dist/base/chart-schemas.js +18 -56
- package/dist/base/chart-schemas.js.map +1 -1
- package/dist/base/chart-type.d.ts +15 -0
- package/dist/base/chart-type.js +20 -0
- package/dist/base/chart-type.js.map +1 -0
- package/dist/base/chart.d.ts +31 -22
- package/dist/base/chart.js +27 -54
- package/dist/base/chart.js.map +1 -1
- package/dist/base/confirm-dialog.d.ts +6 -0
- package/dist/base/confirm-dialog.js +18 -0
- package/dist/base/confirm-dialog.js.map +1 -0
- package/dist/base/data-sources.d.ts +38 -0
- package/dist/base/data-sources.js +13 -0
- package/dist/base/data-sources.js.map +1 -1
- package/dist/base/data-types/compare-types.d.ts +0 -2
- package/dist/base/data-types/compare-types.js +18 -13
- package/dist/base/data-types/compare-types.js.map +1 -1
- package/dist/base/data-types/core.d.ts +55 -0
- package/dist/base/data-types/core.js +42 -0
- package/dist/base/data-types/core.js.map +1 -1
- package/dist/base/data-types/default-types.d.ts +241 -62
- package/dist/base/data-types/default-types.js +257 -135
- package/dist/base/data-types/default-types.js.map +1 -1
- package/dist/base/data-types/field-types.d.ts +164 -0
- package/dist/base/data-types/field-types.js +236 -0
- package/dist/base/data-types/field-types.js.map +1 -0
- package/dist/base/data-types/index.d.ts +1 -0
- package/dist/base/data-types/index.js +21 -0
- package/dist/base/data-types/index.js.map +1 -1
- package/dist/base/data-types/internal/compare-types.d.ts +3 -0
- package/dist/base/data-types/internal/compare-types.js +15 -0
- package/dist/base/data-types/internal/compare-types.js.map +1 -0
- package/dist/base/data-types/status-type.d.ts +2 -1
- package/dist/base/data-types/status-type.js +6 -0
- package/dist/base/data-types/status-type.js.map +1 -1
- package/dist/base/display.d.ts +124 -0
- package/dist/base/display.js +95 -0
- package/dist/base/display.js.map +1 -0
- package/dist/base/empty-state.d.ts +106 -0
- package/dist/base/empty-state.js +109 -0
- package/dist/base/empty-state.js.map +1 -0
- package/dist/base/export-jobs.d.ts +39 -1
- package/dist/base/export-jobs.js +12 -3
- package/dist/base/export-jobs.js.map +1 -1
- package/dist/base/form-block-schema.d.ts +345 -28
- package/dist/base/form-block-schema.js +83 -12
- package/dist/base/form-block-schema.js.map +1 -1
- package/dist/base/form-schema.d.ts +137 -22
- package/dist/base/form-schema.js +139 -42
- package/dist/base/form-schema.js.map +1 -1
- package/dist/base/form-types.d.ts +139 -4
- package/dist/base/form-types.js +7 -1
- package/dist/base/form-types.js.map +1 -1
- package/dist/base/form.js +7 -0
- package/dist/base/form.js.map +1 -1
- package/dist/base/grid.d.ts +57 -0
- package/dist/base/grid.js +43 -0
- package/dist/base/grid.js.map +1 -1
- package/dist/base/helpers/file-refs.js +5 -1
- package/dist/base/helpers/file-refs.js.map +1 -1
- package/dist/base/index.d.ts +11 -1
- package/dist/base/index.js +16 -1
- package/dist/base/index.js.map +1 -1
- package/dist/base/internal/button-availability.d.ts +17 -0
- package/dist/base/internal/button-availability.js +31 -0
- package/dist/base/internal/button-availability.js.map +1 -0
- package/dist/base/internal/chart-schemas.d.ts +6 -0
- package/dist/base/internal/chart-schemas.js +70 -0
- package/dist/base/internal/chart-schemas.js.map +1 -0
- package/dist/base/internal/chart.d.ts +22 -0
- package/dist/base/internal/chart.js +37 -0
- package/dist/base/internal/chart.js.map +1 -0
- package/dist/base/internal/confirm-dialog.d.ts +13 -0
- package/dist/base/internal/confirm-dialog.js +24 -0
- package/dist/base/internal/confirm-dialog.js.map +1 -0
- package/dist/base/internal/display.d.ts +13 -0
- package/dist/base/internal/display.js +18 -0
- package/dist/base/internal/display.js.map +1 -0
- package/dist/base/internal/export-jobs.d.ts +2 -0
- package/dist/base/internal/export-jobs.js +6 -0
- package/dist/base/internal/export-jobs.js.map +1 -0
- package/dist/base/internal/form-block-schema.d.ts +6 -0
- package/dist/base/internal/form-block-schema.js +10 -0
- package/dist/base/internal/form-block-schema.js.map +1 -0
- package/dist/base/internal/form-schema.d.ts +7 -0
- package/dist/base/internal/form-schema.js +26 -0
- package/dist/base/internal/form-schema.js.map +1 -0
- package/dist/base/internal/layouts.d.ts +39 -0
- package/dist/base/internal/layouts.js +3 -0
- package/dist/base/internal/layouts.js.map +1 -0
- package/dist/base/internal/query-response.d.ts +24 -0
- package/dist/base/internal/query-response.js +47 -0
- package/dist/base/internal/query-response.js.map +1 -0
- package/dist/base/internal/searchable.d.ts +6 -0
- package/dist/base/internal/searchable.js +15 -0
- package/dist/base/internal/searchable.js.map +1 -0
- package/dist/base/key-value-list.d.ts +160 -0
- package/dist/base/key-value-list.js +107 -0
- package/dist/base/key-value-list.js.map +1 -0
- package/dist/base/kpi-card.d.ts +12 -4
- package/dist/base/kpi-card.js +7 -0
- package/dist/base/kpi-card.js.map +1 -1
- package/dist/base/layouts.d.ts +35 -0
- package/dist/base/layouts.js +41 -7
- package/dist/base/layouts.js.map +1 -1
- package/dist/base/meter.d.ts +186 -0
- package/dist/base/meter.js +134 -0
- package/dist/base/meter.js.map +1 -0
- package/dist/base/nav-card-grid.d.ts +173 -0
- package/dist/base/nav-card-grid.js +89 -0
- package/dist/base/nav-card-grid.js.map +1 -0
- package/dist/base/period-selector.d.ts +20 -0
- package/dist/base/period-selector.js +23 -0
- package/dist/base/period-selector.js.map +1 -1
- package/dist/base/placeholder.d.ts +26 -0
- package/dist/base/placeholder.js +12 -0
- package/dist/base/placeholder.js.map +1 -1
- package/dist/base/query-response.d.ts +51 -1
- package/dist/base/query-response.js +43 -26
- package/dist/base/query-response.js.map +1 -1
- package/dist/base/resource-form-schema.d.ts +18 -0
- package/dist/base/resource-form-schema.js +20 -3
- package/dist/base/resource-form-schema.js.map +1 -1
- package/dist/base/searchable.d.ts +2 -0
- package/dist/base/searchable.js +4 -0
- package/dist/base/searchable.js.map +1 -1
- package/dist/base/section.d.ts +105 -0
- package/dist/base/section.js +123 -0
- package/dist/base/section.js.map +1 -0
- package/dist/base/stack.d.ts +113 -0
- package/dist/base/stack.js +58 -0
- package/dist/base/stack.js.map +1 -1
- package/dist/base/stat-group.d.ts +152 -0
- package/dist/base/stat-group.js +97 -0
- package/dist/base/stat-group.js.map +1 -0
- package/dist/base/tab.d.ts +25 -8
- package/dist/base/tab.js +11 -0
- package/dist/base/tab.js.map +1 -1
- package/dist/base/table-view/column-display.d.ts +195 -0
- package/dist/base/table-view/column-display.js +131 -0
- package/dist/base/table-view/column-display.js.map +1 -0
- package/dist/base/table-view/data-functions.d.ts +36 -14
- package/dist/base/table-view/data-functions.js +26 -1
- package/dist/base/table-view/data-functions.js.map +1 -1
- package/dist/base/table-view/factory-helpers.d.ts +0 -42
- package/dist/base/table-view/factory-helpers.js +1 -244
- package/dist/base/table-view/factory-helpers.js.map +1 -1
- package/dist/base/table-view/factory.d.ts +5 -1
- package/dist/base/table-view/factory.js +158 -202
- package/dist/base/table-view/factory.js.map +1 -1
- package/dist/base/table-view/internal/auth.d.ts +33 -0
- package/dist/base/table-view/{auth.js → internal/auth.js} +45 -6
- package/dist/base/table-view/internal/auth.js.map +1 -0
- package/dist/base/table-view/internal/column-display.d.ts +18 -0
- package/dist/base/table-view/internal/column-display.js +37 -0
- package/dist/base/table-view/internal/column-display.js.map +1 -0
- package/dist/base/table-view/internal/data-functions.d.ts +14 -0
- package/dist/base/table-view/internal/data-functions.js +3 -0
- package/dist/base/table-view/internal/data-functions.js.map +1 -0
- package/dist/base/table-view/internal/factory-helpers.d.ts +213 -0
- package/dist/base/table-view/internal/factory-helpers.js +477 -0
- package/dist/base/table-view/internal/factory-helpers.js.map +1 -0
- package/dist/base/table-view/{files.d.ts → internal/files.d.ts} +5 -0
- package/dist/base/table-view/{files.js → internal/files.js} +14 -4
- package/dist/base/table-view/internal/files.js.map +1 -0
- package/dist/base/table-view/internal/footer.d.ts +33 -0
- package/dist/base/table-view/internal/footer.js +112 -0
- package/dist/base/table-view/internal/footer.js.map +1 -0
- package/dist/base/table-view/{guards.d.ts → internal/guards.d.ts} +3 -0
- package/dist/base/table-view/internal/guards.js +134 -0
- package/dist/base/table-view/internal/guards.js.map +1 -0
- package/dist/base/table-view/internal/meta.d.ts +5 -0
- package/dist/base/table-view/internal/meta.js +13 -0
- package/dist/base/table-view/internal/meta.js.map +1 -0
- package/dist/base/table-view/internal/nav-badges.d.ts +9 -0
- package/dist/base/table-view/internal/nav-badges.js +79 -0
- package/dist/base/table-view/internal/nav-badges.js.map +1 -0
- package/dist/base/table-view/internal/options.d.ts +6 -0
- package/dist/base/table-view/internal/options.js +10 -0
- package/dist/base/table-view/internal/options.js.map +1 -0
- package/dist/base/table-view/internal/realtime-listeners.d.ts +4 -0
- package/dist/base/table-view/internal/realtime-listeners.js +7 -0
- package/dist/base/table-view/internal/realtime-listeners.js.map +1 -0
- package/dist/base/table-view/internal/realtime.d.ts +39 -0
- package/dist/base/table-view/internal/realtime.js +163 -0
- package/dist/base/table-view/internal/realtime.js.map +1 -0
- package/dist/base/table-view/internal/request-filter.d.ts +75 -0
- package/dist/base/table-view/internal/request-filter.js +154 -0
- package/dist/base/table-view/internal/request-filter.js.map +1 -0
- package/dist/base/table-view/internal/resource-form.d.ts +25 -0
- package/dist/base/table-view/internal/resource-form.js +91 -0
- package/dist/base/table-view/internal/resource-form.js.map +1 -0
- package/dist/base/table-view/{row-rules.d.ts → internal/row-rules.d.ts} +5 -2
- package/dist/base/table-view/{row-rules.js → internal/row-rules.js} +20 -19
- package/dist/base/table-view/internal/row-rules.js.map +1 -0
- package/dist/base/table-view/internal/tabs.d.ts +39 -0
- package/dist/base/table-view/internal/tabs.js +116 -0
- package/dist/base/table-view/internal/tabs.js.map +1 -0
- package/dist/base/table-view/internal/validation.d.ts +99 -0
- package/dist/base/table-view/internal/validation.js +297 -0
- package/dist/base/table-view/internal/validation.js.map +1 -0
- package/dist/base/table-view/internal/views.d.ts +14 -0
- package/dist/base/table-view/internal/views.js +42 -0
- package/dist/base/table-view/internal/views.js.map +1 -0
- package/dist/base/table-view/internal/writer.d.ts +39 -0
- package/dist/base/table-view/internal/writer.js +55 -0
- package/dist/base/table-view/internal/writer.js.map +1 -0
- package/dist/base/table-view/meta.d.ts +77 -4
- package/dist/base/table-view/meta.js +133 -13
- package/dist/base/table-view/meta.js.map +1 -1
- package/dist/base/table-view/options.d.ts +749 -28
- package/dist/base/table-view/options.js +9 -2
- package/dist/base/table-view/options.js.map +1 -1
- package/dist/base/table-view/realtime.d.ts +26 -17
- package/dist/base/table-view/realtime.js +29 -126
- package/dist/base/table-view/realtime.js.map +1 -1
- package/dist/base/table-view/resource-form.d.ts +11 -5
- package/dist/base/table-view/resource-form.js +15 -59
- package/dist/base/table-view/resource-form.js.map +1 -1
- package/dist/base/table-view/routes.d.ts +29 -0
- package/dist/base/table-view/routes.js +71 -6
- package/dist/base/table-view/routes.js.map +1 -1
- package/dist/base/table-view/schema.d.ts +483 -69
- package/dist/base/table-view/schema.js +163 -18
- package/dist/base/table-view/schema.js.map +1 -1
- package/dist/base/table-view/source.d.ts +62 -0
- package/dist/base/table-view/source.js +161 -0
- package/dist/base/table-view/source.js.map +1 -0
- package/dist/base/table-view/views.d.ts +20 -0
- package/dist/base/table-view/views.js +38 -0
- package/dist/base/table-view/views.js.map +1 -0
- package/dist/base/table-view/writer.d.ts +7 -0
- package/dist/base/table-view/writer.js +17 -0
- package/dist/base/table-view/writer.js.map +1 -0
- package/dist/base/table-view.d.ts +34 -6
- package/dist/base/table-view.js +42 -6
- package/dist/base/table-view.js.map +1 -1
- package/dist/base/tenant-export-archive.d.ts +21 -0
- package/dist/base/tenant-export-archive.js +11 -0
- package/dist/base/tenant-export-archive.js.map +1 -1
- package/dist/base/top-list-card.d.ts +35 -12
- package/dist/base/top-list-card.js +24 -0
- package/dist/base/top-list-card.js.map +1 -1
- package/dist/base/types/action-target.d.ts +36 -20
- package/dist/base/types/component-input.d.ts +3 -0
- package/dist/base/types/confirm-dialog.d.ts +69 -0
- package/dist/base/types/confirm-dialog.js +3 -0
- package/dist/base/types/confirm-dialog.js.map +1 -0
- package/dist/base/types/custom-button.d.ts +48 -2
- package/dist/base/types/enum-option.d.ts +9 -0
- package/dist/base/types/error.d.ts +9 -0
- package/dist/base/types/error.js +7 -1
- package/dist/base/types/error.js.map +1 -1
- package/dist/base/types/export-status.d.ts +3 -0
- package/dist/base/types/export-status.js +3 -0
- package/dist/base/types/export-status.js.map +1 -1
- package/dist/base/types/field-config.d.ts +3 -0
- package/dist/base/types/form-mode.d.ts +3 -0
- package/dist/base/types/form-mode.js +3 -0
- package/dist/base/types/form-mode.js.map +1 -1
- package/dist/base/types/form-values.d.ts +6 -0
- package/dist/base/types/guards.d.ts +37 -7
- package/dist/base/types/index.d.ts +2 -0
- package/dist/base/types/index.js +2 -0
- package/dist/base/types/index.js.map +1 -1
- package/dist/base/types/internal/action-target.d.ts +8 -0
- package/dist/base/types/internal/action-target.js +16 -0
- package/dist/base/types/internal/action-target.js.map +1 -0
- package/dist/base/types/json.d.ts +6 -0
- package/dist/base/types/orientation.d.ts +3 -0
- package/dist/base/types/orientation.js +3 -0
- package/dist/base/types/orientation.js.map +1 -1
- package/dist/base/types/readonly-behavior.d.ts +9 -0
- package/dist/base/types/readonly-behavior.js +3 -0
- package/dist/base/types/readonly-behavior.js.map +1 -1
- package/dist/base/types/row-action.d.ts +111 -0
- package/dist/base/types/size.d.ts +1 -0
- package/dist/base/types/size.js +4 -0
- package/dist/base/types/size.js.map +1 -1
- package/dist/base/types/tone.d.ts +14 -0
- package/dist/base/types/tone.js +24 -0
- package/dist/base/types/tone.js.map +1 -0
- package/dist/client-base-url.d.ts +8 -0
- package/dist/client-base-url.js +8 -0
- package/dist/client-base-url.js.map +1 -1
- package/dist/component-slots.d.ts +17 -2
- package/dist/component-slots.js +18 -66
- package/dist/component-slots.js.map +1 -1
- package/dist/component.d.ts +113 -0
- package/dist/component.js +84 -1
- package/dist/component.js.map +1 -1
- package/dist/data-controllers/members.d.ts +16 -1
- package/dist/data-controllers/members.js +87 -26
- package/dist/data-controllers/members.js.map +1 -1
- package/dist/data-controllers/roles.d.ts +1 -0
- package/dist/data-controllers/roles.js +3 -3
- package/dist/data-controllers/roles.js.map +1 -1
- package/dist/db/{models → internal}/exportJobs.model.d.ts +2 -0
- package/dist/db/{models → internal}/exportJobs.model.js +4 -1
- package/dist/db/internal/exportJobs.model.js.map +1 -0
- package/dist/db/internal/inviteResolutions.model.d.ts +34 -0
- package/dist/db/internal/inviteResolutions.model.js +80 -0
- package/dist/db/internal/inviteResolutions.model.js.map +1 -0
- package/dist/db/internal/table-names.d.ts +4 -0
- package/dist/db/internal/table-names.js +8 -0
- package/dist/db/internal/table-names.js.map +1 -0
- package/dist/db/{models → internal}/tenantLifecycle.model.d.ts +10 -1
- package/dist/db/{models → internal}/tenantLifecycle.model.js +10 -1
- package/dist/db/internal/tenantLifecycle.model.js.map +1 -0
- package/dist/db/{tables → internal}/tenantLifecycle.table.d.ts +6 -0
- package/dist/db/{tables → internal}/tenantLifecycle.table.js +6 -0
- package/dist/db/internal/tenantLifecycle.table.js.map +1 -0
- package/dist/db/models/index.d.ts +0 -2
- package/dist/db/models/index.js +0 -2
- package/dist/db/models/index.js.map +1 -1
- package/dist/db/models/inviteResolutions.model.d.ts +1 -25
- package/dist/db/models/inviteResolutions.model.js +0 -68
- package/dist/db/models/inviteResolutions.model.js.map +1 -1
- package/dist/db/models/roles.model.d.ts +6 -0
- package/dist/db/models/roles.model.js +6 -0
- package/dist/db/models/roles.model.js.map +1 -1
- package/dist/db/models/tenantMembers.model.js +1 -1
- package/dist/db/models/tenantMembers.model.js.map +1 -1
- package/dist/db/models/user_invites.model.d.ts +24 -0
- package/dist/db/models/user_invites.model.js +25 -1
- package/dist/db/models/user_invites.model.js.map +1 -1
- package/dist/db/tables/exportJobs.table.d.ts +5 -1
- package/dist/db/tables/exportJobs.table.js +3 -3
- package/dist/db/tables/exportJobs.table.js.map +1 -1
- package/dist/db/tables/index.d.ts +0 -1
- package/dist/db/tables/index.js +0 -1
- package/dist/db/tables/index.js.map +1 -1
- package/dist/db/tables/inviteResolutions.table.d.ts +1 -1
- package/dist/db/tables/inviteResolutions.table.js +4 -3
- package/dist/db/tables/inviteResolutions.table.js.map +1 -1
- package/dist/db/tables/roles.table.d.ts +2 -0
- package/dist/db/tables/roles.table.js +4 -0
- package/dist/db/tables/roles.table.js.map +1 -1
- package/dist/db/tables/tenantMembers.table.d.ts +1 -0
- package/dist/db/tables/user_invites.table.d.ts +11 -0
- package/dist/db/tables/user_invites.table.js +4 -0
- package/dist/db/tables/user_invites.table.js.map +1 -1
- package/dist/guards.d.ts +36 -0
- package/dist/guards.js +30 -1
- package/dist/guards.js.map +1 -1
- package/dist/hooks.d.ts +133 -1
- package/dist/hooks.js +87 -1
- package/dist/hooks.js.map +1 -1
- package/dist/html-render/index.d.ts +15 -0
- package/dist/html-render/index.js +15 -0
- package/dist/html-render/index.js.map +1 -1
- package/dist/html-render/types.d.ts +4 -0
- package/dist/index.d.ts +6 -7
- package/dist/index.js +12 -17
- package/dist/index.js.map +1 -1
- package/dist/internal/attachments.d.ts +16 -0
- package/dist/internal/attachments.js +3 -0
- package/dist/internal/attachments.js.map +1 -0
- package/dist/internal/component-slots.d.ts +27 -0
- package/dist/internal/component-slots.js +97 -0
- package/dist/internal/component-slots.js.map +1 -0
- package/dist/internal/invite-membership.d.ts +8 -0
- package/dist/{invite-membership.js → internal/invite-membership.js} +11 -5
- package/dist/internal/invite-membership.js.map +1 -0
- package/dist/internal/invite-replacement.d.ts +7 -0
- package/dist/{invite-replacement.js → internal/invite-replacement.js} +8 -3
- package/dist/internal/invite-replacement.js.map +1 -0
- package/dist/internal/invite-resolution.d.ts +3 -0
- package/dist/internal/invite-resolution.js +50 -0
- package/dist/internal/invite-resolution.js.map +1 -0
- package/dist/internal/invites.d.ts +31 -0
- package/dist/internal/invites.js +44 -0
- package/dist/internal/invites.js.map +1 -0
- package/dist/internal/permission-gate.d.ts +23 -0
- package/dist/internal/permission-gate.js +43 -0
- package/dist/internal/permission-gate.js.map +1 -0
- package/dist/internal/tenant-access.d.ts +28 -0
- package/dist/internal/tenant-access.js +28 -0
- package/dist/internal/tenant-access.js.map +1 -0
- package/dist/internal/tenant-ownership.d.ts +13 -0
- package/dist/internal/tenant-ownership.js +95 -0
- package/dist/internal/tenant-ownership.js.map +1 -0
- package/dist/internal/uploads.d.ts +19 -0
- package/dist/internal/uploads.js +3 -0
- package/dist/internal/uploads.js.map +1 -0
- package/dist/invite-extensions/availability.d.ts +28 -3
- package/dist/invite-extensions/availability.js +26 -23
- package/dist/invite-extensions/availability.js.map +1 -1
- package/dist/invite-extensions/internal/availability.d.ts +12 -0
- package/dist/invite-extensions/internal/availability.js +32 -0
- package/dist/invite-extensions/internal/availability.js.map +1 -0
- package/dist/invite-extensions/internal/delivery.d.ts +44 -0
- package/dist/invite-extensions/{delivery.js → internal/delivery.js} +38 -0
- package/dist/invite-extensions/internal/delivery.js.map +1 -0
- package/dist/invite-extensions/internal/edit.d.ts +34 -0
- package/dist/invite-extensions/{edit.js → internal/edit.js} +33 -0
- package/dist/invite-extensions/internal/edit.js.map +1 -0
- package/dist/invite-extensions/internal/field-ids.d.ts +21 -0
- package/dist/invite-extensions/{field-ids.js → internal/field-ids.js} +13 -0
- package/dist/invite-extensions/internal/field-ids.js.map +1 -0
- package/dist/invite-extensions/internal/form-slot.d.ts +13 -0
- package/dist/invite-extensions/{form-slot.js → internal/form-slot.js} +49 -4
- package/dist/invite-extensions/internal/form-slot.js.map +1 -0
- package/dist/invite-extensions/internal/payload-slices.d.ts +31 -0
- package/dist/invite-extensions/{payload-slices.js → internal/payload-slices.js} +30 -0
- package/dist/invite-extensions/internal/payload-slices.js.map +1 -0
- package/dist/invite-extensions/internal/registry.d.ts +48 -0
- package/dist/invite-extensions/internal/registry.js +77 -0
- package/dist/invite-extensions/internal/registry.js.map +1 -0
- package/dist/invite-extensions/internal/types.d.ts +61 -0
- package/dist/invite-extensions/internal/types.js +3 -0
- package/dist/invite-extensions/internal/types.js.map +1 -0
- package/dist/invite-extensions/registry.d.ts +44 -12
- package/dist/invite-extensions/registry.js +51 -43
- package/dist/invite-extensions/registry.js.map +1 -1
- package/dist/invite-extensions/types.d.ts +59 -34
- package/dist/invite-extensions.d.ts +30 -4
- package/dist/invite-extensions.js +57 -7
- package/dist/invite-extensions.js.map +1 -1
- package/dist/invite-resolution.d.ts +5 -2
- package/dist/invite-resolution.js +16 -46
- package/dist/invite-resolution.js.map +1 -1
- package/dist/invitee-display-name.d.ts +5 -0
- package/dist/invitee-display-name.js +15 -0
- package/dist/invitee-display-name.js.map +1 -0
- package/dist/invites.d.ts +46 -14
- package/dist/invites.js +41 -44
- package/dist/invites.js.map +1 -1
- package/dist/layout-banners.d.ts +68 -0
- package/dist/layout-banners.js +18 -0
- package/dist/layout-banners.js.map +1 -1
- package/dist/notifications/builder.d.ts +3 -1
- package/dist/notifications/builder.js +10 -0
- package/dist/notifications/builder.js.map +1 -1
- package/dist/notifications/index.d.ts +1 -0
- package/dist/notifications/index.js +16 -0
- package/dist/notifications/index.js.map +1 -1
- package/dist/notifications/internal.d.ts +8 -5
- package/dist/notifications/internal.js +6 -0
- package/dist/notifications/internal.js.map +1 -1
- package/dist/notifications/sendable.d.ts +6 -0
- package/dist/notifications/sendable.js +13 -4
- package/dist/notifications/sendable.js.map +1 -1
- package/dist/notifications/types.d.ts +26 -1
- package/dist/page/categories.d.ts +19 -17
- package/dist/page/categories.js +24 -168
- package/dist/page/categories.js.map +1 -1
- package/dist/page/component-tree.d.ts +15 -1
- package/dist/page/component-tree.js +0 -40
- package/dist/page/component-tree.js.map +1 -1
- package/dist/page/controllers.d.ts +135 -0
- package/dist/page/controllers.js +124 -8
- package/dist/page/controllers.js.map +1 -1
- package/dist/page/declaration-conflict.d.ts +9 -0
- package/dist/page/declaration-conflict.js +17 -0
- package/dist/page/declaration-conflict.js.map +1 -0
- package/dist/page/form-page-routes.d.ts +7 -10
- package/dist/page/form-page-routes.js +14 -31
- package/dist/page/form-page-routes.js.map +1 -1
- package/dist/page/internal/categories.d.ts +62 -0
- package/dist/page/internal/categories.js +260 -0
- package/dist/page/internal/categories.js.map +1 -0
- package/dist/page/internal/component-target.d.ts +37 -0
- package/dist/page/{component-target.js → internal/component-target.js} +27 -2
- package/dist/page/internal/component-target.js.map +1 -0
- package/dist/page/internal/component-tree.d.ts +13 -0
- package/dist/page/internal/component-tree.js +61 -0
- package/dist/page/internal/component-tree.js.map +1 -0
- package/dist/page/{extension-assembly.d.ts → internal/extension-assembly.d.ts} +5 -2
- package/dist/page/{extension-assembly.js → internal/extension-assembly.js} +8 -0
- package/dist/page/internal/extension-assembly.js.map +1 -0
- package/dist/page/internal/extension-validation.d.ts +24 -0
- package/dist/page/{extension-validation.js → internal/extension-validation.js} +8 -0
- package/dist/page/internal/extension-validation.js.map +1 -0
- package/dist/page/internal/form-page-routes.d.ts +26 -0
- package/dist/page/internal/form-page-routes.js +40 -0
- package/dist/page/internal/form-page-routes.js.map +1 -0
- package/dist/page/internal/layout-filter.d.ts +21 -0
- package/dist/page/internal/layout-filter.js +101 -0
- package/dist/page/internal/layout-filter.js.map +1 -0
- package/dist/page/{metadata-helpers.d.ts → internal/metadata-helpers.d.ts} +4 -1
- package/dist/page/{metadata-helpers.js → internal/metadata-helpers.js} +19 -2
- package/dist/page/internal/metadata-helpers.js.map +1 -0
- package/dist/page/internal/nav-badges.d.ts +17 -0
- package/dist/page/internal/nav-badges.js +68 -0
- package/dist/page/internal/nav-badges.js.map +1 -0
- package/dist/page/internal/page-registration.d.ts +29 -0
- package/dist/page/internal/page-registration.js +41 -0
- package/dist/page/internal/page-registration.js.map +1 -0
- package/dist/page/internal/registry.d.ts +128 -0
- package/dist/page/internal/registry.js +225 -0
- package/dist/page/internal/registry.js.map +1 -0
- package/dist/page/internal/table-view-ids.d.ts +10 -0
- package/dist/page/internal/table-view-ids.js +39 -0
- package/dist/page/internal/table-view-ids.js.map +1 -0
- package/dist/page/internal/types.d.ts +2 -0
- package/dist/page/internal/types.js +6 -0
- package/dist/page/internal/types.js.map +1 -0
- package/dist/page/layout-filter.d.ts +4 -0
- package/dist/page/layout-filter.js +11 -0
- package/dist/page/layout-filter.js.map +1 -1
- package/dist/page/metadata.d.ts +93 -0
- package/dist/page/metadata.js +236 -28
- package/dist/page/metadata.js.map +1 -1
- package/dist/page/registry.d.ts +17 -36
- package/dist/page/registry.js +25 -127
- package/dist/page/registry.js.map +1 -1
- package/dist/page/roots.d.ts +10 -0
- package/dist/page/roots.js +27 -6
- package/dist/page/roots.js.map +1 -1
- package/dist/page/types.d.ts +186 -1
- package/dist/page/types.js +1 -2
- package/dist/page/types.js.map +1 -1
- package/dist/page.d.ts +23 -1
- package/dist/page.js +24 -2
- package/dist/page.js.map +1 -1
- package/dist/permission-gate.d.ts +14 -0
- package/dist/permission-gate.js +3 -0
- package/dist/permission-gate.js.map +1 -0
- package/dist/permissions-resolver.d.ts +24 -0
- package/dist/permissions-resolver.js +24 -0
- package/dist/permissions-resolver.js.map +1 -1
- package/dist/permissions.d.ts +27 -0
- package/dist/permissions.js +37 -0
- package/dist/permissions.js.map +1 -1
- package/dist/quick-actions.d.ts +27 -0
- package/dist/quick-actions.js +1 -0
- package/dist/quick-actions.js.map +1 -1
- package/dist/realtime.d.ts +29 -0
- package/dist/realtime.js +30 -0
- package/dist/realtime.js.map +1 -1
- package/dist/request-tenant.d.ts +17 -0
- package/dist/request-tenant.js +18 -1
- package/dist/request-tenant.js.map +1 -1
- package/dist/tenant-access.d.ts +38 -6
- package/dist/tenant-access.js +38 -8
- package/dist/tenant-access.js.map +1 -1
- package/dist/tenant-export.d.ts +19 -0
- package/dist/tenant-lifecycle.d.ts +13 -0
- package/dist/tenant-lifecycle.js +22 -1
- package/dist/tenant-lifecycle.js.map +1 -1
- package/dist/tenant-ownership.d.ts +2 -1
- package/dist/tenant-ownership.js +5 -85
- package/dist/tenant-ownership.js.map +1 -1
- package/dist/tenant-scoped-model.d.ts +8 -0
- package/dist/tenant-scoped-model.js +8 -0
- package/dist/tenant-scoped-model.js.map +1 -1
- package/dist/uploads.d.ts +24 -16
- package/dist/uploads.js +24 -0
- package/dist/uploads.js.map +1 -1
- package/dist/utils/fire-and-forget.d.ts +4 -0
- package/dist/utils/fire-and-forget.js +4 -0
- package/dist/utils/fire-and-forget.js.map +1 -1
- package/dist/utils/internal/owned-registry.d.ts +36 -0
- package/dist/utils/internal/owned-registry.js +60 -0
- package/dist/utils/internal/owned-registry.js.map +1 -0
- package/dist/utils/{row-instance.d.ts → internal/row-instance.d.ts} +1 -0
- package/dist/utils/internal/row-instance.js +12 -0
- package/dist/utils/internal/row-instance.js.map +1 -0
- package/dist/utils/internal/saas-mode.d.ts +8 -0
- package/dist/utils/internal/saas-mode.js +3 -0
- package/dist/utils/internal/saas-mode.js.map +1 -0
- package/dist/utils/{time.d.ts → internal/time.d.ts} +4 -0
- package/dist/utils/{time.js → internal/time.js} +4 -0
- package/dist/utils/internal/time.js.map +1 -0
- package/dist/utils/{type-check.d.ts → internal/type-check.d.ts} +12 -0
- package/dist/utils/{type-check.js → internal/type-check.js} +12 -0
- package/dist/utils/internal/type-check.js.map +1 -0
- package/dist/utils/internal/value-parser.d.ts +86 -0
- package/dist/utils/internal/value-parser.js +160 -0
- package/dist/utils/internal/value-parser.js.map +1 -0
- package/dist/utils/saas-mode.d.ts +25 -3
- package/dist/utils/saas-mode.js +24 -0
- package/dist/utils/saas-mode.js.map +1 -1
- package/package.json +3 -3
- package/dist/base/block-registry/describe.d.ts +0 -6
- package/dist/base/block-registry/describe.js.map +0 -1
- package/dist/base/block-registry/ui.d.ts +0 -5
- package/dist/base/block-registry/ui.js +0 -17
- package/dist/base/block-registry/ui.js.map +0 -1
- package/dist/base/table-view/auth.d.ts +0 -9
- package/dist/base/table-view/auth.js.map +0 -1
- package/dist/base/table-view/files.js.map +0 -1
- package/dist/base/table-view/guards.js +0 -85
- package/dist/base/table-view/guards.js.map +0 -1
- package/dist/base/table-view/row-rules.js.map +0 -1
- package/dist/base/tree.d.ts +0 -115
- package/dist/base/tree.js +0 -145
- package/dist/base/tree.js.map +0 -1
- package/dist/db/models/exportJobs.model.js.map +0 -1
- package/dist/db/models/tenantLifecycle.model.js.map +0 -1
- package/dist/db/tables/tenantLifecycle.table.js.map +0 -1
- package/dist/invite-extensions/delivery.d.ts +0 -5
- package/dist/invite-extensions/delivery.js.map +0 -1
- package/dist/invite-extensions/edit.d.ts +0 -4
- package/dist/invite-extensions/edit.js.map +0 -1
- package/dist/invite-extensions/field-ids.d.ts +0 -7
- package/dist/invite-extensions/field-ids.js.map +0 -1
- package/dist/invite-extensions/form-slot.d.ts +0 -2
- package/dist/invite-extensions/form-slot.js.map +0 -1
- package/dist/invite-extensions/internal.d.ts +0 -17
- package/dist/invite-extensions/internal.js +0 -55
- package/dist/invite-extensions/internal.js.map +0 -1
- package/dist/invite-extensions/payload-slices.d.ts +0 -8
- package/dist/invite-extensions/payload-slices.js.map +0 -1
- package/dist/invite-membership.d.ts +0 -3
- package/dist/invite-membership.js.map +0 -1
- package/dist/invite-replacement.d.ts +0 -2
- package/dist/invite-replacement.js.map +0 -1
- package/dist/page/component-target.d.ts +0 -10
- package/dist/page/component-target.js.map +0 -1
- package/dist/page/extension-assembly.js.map +0 -1
- package/dist/page/extension-validation.d.ts +0 -7
- package/dist/page/extension-validation.js.map +0 -1
- package/dist/page/metadata-helpers.js.map +0 -1
- package/dist/page/page-registration.d.ts +0 -13
- package/dist/page/page-registration.js +0 -22
- package/dist/page/page-registration.js.map +0 -1
- package/dist/utils/owned-registry.d.ts +0 -10
- package/dist/utils/owned-registry.js +0 -34
- package/dist/utils/owned-registry.js.map +0 -1
- package/dist/utils/row-instance.js +0 -8
- package/dist/utils/row-instance.js.map +0 -1
- package/dist/utils/time.js.map +0 -1
- package/dist/utils/type-check.js.map +0 -1
- package/dist/utils/value-parser.d.ts +0 -11
- package/dist/utils/value-parser.js +0 -86
- package/dist/utils/value-parser.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"realtime.js","sourceRoot":"","sources":["../../../../src/base/table-view/internal/realtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import type { ComponentFilterContext } from "../../../component";
|
|
2
|
+
import type { PermissionGate } from "../../../permission-gate";
|
|
3
|
+
import type { CustomButton, CustomButtonSerialized } from "../../types/custom-button";
|
|
4
|
+
import type { CustomRowActionSerialized, RowActionConfigSerialized, RowActionRule } from "../../types/row-action";
|
|
5
|
+
import type { TableViewRowActionOptions, TableViewRowActionOptionsSerialized } from "../options";
|
|
6
|
+
/** The table view actions whose permission shapes what a request is served. */
|
|
7
|
+
declare const GRANTED_ACTIONS: readonly ["add", "edit", "delete", "view", "archive", "restore", "viewArchived", "export"];
|
|
8
|
+
/**
|
|
9
|
+
* Whether the caller holds each table view action.
|
|
10
|
+
*
|
|
11
|
+
* @internal
|
|
12
|
+
*/
|
|
13
|
+
export type TableViewGrants = Record<(typeof GRANTED_ACTIONS)[number], boolean>;
|
|
14
|
+
/**
|
|
15
|
+
* The table view actions the caller holds, checked one after the other.
|
|
16
|
+
*
|
|
17
|
+
* @internal
|
|
18
|
+
*/
|
|
19
|
+
export declare function resolveTableViewGrants(permissions: Set<string>, permissionId: string): Promise<TableViewGrants>;
|
|
20
|
+
/**
|
|
21
|
+
* A built-in row action as served to a caller: refused (`false`) without
|
|
22
|
+
* the permission, on (`true`) when the table view left it unset.
|
|
23
|
+
*
|
|
24
|
+
* @internal
|
|
25
|
+
*/
|
|
26
|
+
export declare function applyPermissionToAction(hasPermission: boolean, actionConfig: boolean | RowActionConfigSerialized | undefined): boolean | RowActionConfigSerialized | undefined;
|
|
27
|
+
/**
|
|
28
|
+
* A built-in row action with the controller's rule, where the table view did
|
|
29
|
+
* not declare its own: rules are registered once per controller (the writing
|
|
30
|
+
* table view's) and enforced on every write, so the UI matches what the
|
|
31
|
+
* server accepts.
|
|
32
|
+
*
|
|
33
|
+
* @internal
|
|
34
|
+
*/
|
|
35
|
+
export declare function mergeControllerRule(actionConfig: boolean | RowActionConfigSerialized | undefined, rule: RowActionRule | undefined): boolean | RowActionConfigSerialized | undefined;
|
|
36
|
+
/**
|
|
37
|
+
* What the row actions of a table view are served from.
|
|
38
|
+
*
|
|
39
|
+
* @internal
|
|
40
|
+
*/
|
|
41
|
+
export interface RowActionsAdaptation {
|
|
42
|
+
/** The row actions as the table view serialized them. */
|
|
43
|
+
rowActions: TableViewRowActionOptionsSerialized | undefined;
|
|
44
|
+
archiveMode: boolean | undefined;
|
|
45
|
+
grants: TableViewGrants;
|
|
46
|
+
/** The custom row actions already filtered for the request. */
|
|
47
|
+
custom: CustomRowActionSerialized[] | undefined;
|
|
48
|
+
/** The rules the data routes enforce (see `controllerRowActionRules`). */
|
|
49
|
+
controllerRules: TableViewRowActionOptions | undefined;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* The row actions served to one request: each disabled when the caller lacks
|
|
53
|
+
* its permission, the archive ones only in archive mode, and controller-wide
|
|
54
|
+
* rules exposed where the table declared none. Details are dropped when edit
|
|
55
|
+
* is offered unconditionally, since edit already shows the row.
|
|
56
|
+
*
|
|
57
|
+
* @internal
|
|
58
|
+
*/
|
|
59
|
+
export declare function adaptRowActions({ rowActions, archiveMode, grants, custom, controllerRules, }: RowActionsAdaptation): TableViewRowActionOptionsSerialized;
|
|
60
|
+
/**
|
|
61
|
+
* The custom buttons served to one request: those whose permission the caller
|
|
62
|
+
* lacks are stripped, and those whose `availability` refuses the request are
|
|
63
|
+
* disabled with its reason.
|
|
64
|
+
*
|
|
65
|
+
* @internal
|
|
66
|
+
*/
|
|
67
|
+
export declare function resolveCustomButtons(permissions: Set<string>, declaredButtons: CustomButton[] | undefined, serializedButtons: CustomButtonSerialized[] | undefined, componentPermissionId: string, context: ComponentFilterContext): Promise<CustomButtonSerialized[] | undefined>;
|
|
68
|
+
/**
|
|
69
|
+
* The custom row actions served to one request: those whose `permission` the
|
|
70
|
+
* caller lacks are stripped, like custom buttons.
|
|
71
|
+
*
|
|
72
|
+
* @internal
|
|
73
|
+
*/
|
|
74
|
+
export declare function resolveCustomRowActions(permissions: Set<string>, declaredActions: PermissionGate[] | undefined, serializedActions: CustomRowActionSerialized[] | undefined, componentPermissionId: string): Promise<CustomRowActionSerialized[] | undefined>;
|
|
75
|
+
export {};
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// What one request is served of a table view's options: the actions, row
|
|
3
|
+
// actions and custom buttons the caller's permissions admit, with the rules
|
|
4
|
+
// the server enforces on them.
|
|
5
|
+
//
|
|
6
|
+
// Split out of factory-helpers.ts.
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.resolveTableViewGrants = resolveTableViewGrants;
|
|
9
|
+
exports.applyPermissionToAction = applyPermissionToAction;
|
|
10
|
+
exports.mergeControllerRule = mergeControllerRule;
|
|
11
|
+
exports.adaptRowActions = adaptRowActions;
|
|
12
|
+
exports.resolveCustomButtons = resolveCustomButtons;
|
|
13
|
+
exports.resolveCustomRowActions = resolveCustomRowActions;
|
|
14
|
+
const button_availability_1 = require("../../internal/button-availability");
|
|
15
|
+
const permission_gate_1 = require("../../../internal/permission-gate");
|
|
16
|
+
const permissions_1 = require("../../../permissions");
|
|
17
|
+
const row_rules_1 = require("./row-rules");
|
|
18
|
+
/** The table view actions whose permission shapes what a request is served. */
|
|
19
|
+
const GRANTED_ACTIONS = [
|
|
20
|
+
"add",
|
|
21
|
+
"edit",
|
|
22
|
+
"delete",
|
|
23
|
+
"view",
|
|
24
|
+
"archive",
|
|
25
|
+
"restore",
|
|
26
|
+
"viewArchived",
|
|
27
|
+
"export",
|
|
28
|
+
];
|
|
29
|
+
/**
|
|
30
|
+
* The table view actions the caller holds, checked one after the other.
|
|
31
|
+
*
|
|
32
|
+
* @internal
|
|
33
|
+
*/
|
|
34
|
+
async function resolveTableViewGrants(permissions, permissionId) {
|
|
35
|
+
const grants = {};
|
|
36
|
+
for (const action of GRANTED_ACTIONS) {
|
|
37
|
+
grants[action] = await (0, permissions_1.HasPermission)(permissions, `${permissionId}.${action}`);
|
|
38
|
+
}
|
|
39
|
+
return grants;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* A built-in row action as served to a caller: refused (`false`) without
|
|
43
|
+
* the permission, on (`true`) when the table view left it unset.
|
|
44
|
+
*
|
|
45
|
+
* @internal
|
|
46
|
+
*/
|
|
47
|
+
function applyPermissionToAction(hasPermission, actionConfig) {
|
|
48
|
+
if (!hasPermission) {
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
return typeof actionConfig === "undefined" ? true : actionConfig;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* A built-in row action with the controller's rule, where the table view did
|
|
55
|
+
* not declare its own: rules are registered once per controller (the writing
|
|
56
|
+
* table view's) and enforced on every write, so the UI matches what the
|
|
57
|
+
* server accepts.
|
|
58
|
+
*
|
|
59
|
+
* @internal
|
|
60
|
+
*/
|
|
61
|
+
function mergeControllerRule(actionConfig, rule) {
|
|
62
|
+
if (!rule || !actionConfig) {
|
|
63
|
+
return actionConfig;
|
|
64
|
+
}
|
|
65
|
+
if (actionConfig === true) {
|
|
66
|
+
return { isEnabled: true, rule };
|
|
67
|
+
}
|
|
68
|
+
if (!actionConfig.rule) {
|
|
69
|
+
return { ...actionConfig, rule };
|
|
70
|
+
}
|
|
71
|
+
return actionConfig;
|
|
72
|
+
}
|
|
73
|
+
const CONTROLLER_RULED_ACTIONS = [
|
|
74
|
+
"edit",
|
|
75
|
+
"delete",
|
|
76
|
+
"archive",
|
|
77
|
+
"restore",
|
|
78
|
+
];
|
|
79
|
+
/**
|
|
80
|
+
* The row actions served to one request: each disabled when the caller lacks
|
|
81
|
+
* its permission, the archive ones only in archive mode, and controller-wide
|
|
82
|
+
* rules exposed where the table declared none. Details are dropped when edit
|
|
83
|
+
* is offered unconditionally, since edit already shows the row.
|
|
84
|
+
*
|
|
85
|
+
* @internal
|
|
86
|
+
*/
|
|
87
|
+
function adaptRowActions({ rowActions, archiveMode, grants, custom, controllerRules, }) {
|
|
88
|
+
const inArchiveMode = (granted, config) => (archiveMode ? applyPermissionToAction(granted, config) : undefined);
|
|
89
|
+
const adapted = {
|
|
90
|
+
add: applyPermissionToAction(grants.add, rowActions?.add),
|
|
91
|
+
edit: applyPermissionToAction(grants.edit, rowActions?.edit),
|
|
92
|
+
duplicate: applyPermissionToAction(grants.add, rowActions?.duplicate),
|
|
93
|
+
delete: applyPermissionToAction(grants.delete, rowActions?.delete),
|
|
94
|
+
archive: inArchiveMode(grants.archive, rowActions?.archive),
|
|
95
|
+
restore: inArchiveMode(grants.restore, rowActions?.restore),
|
|
96
|
+
showArchived: archiveMode ? grants.viewArchived : undefined,
|
|
97
|
+
details: applyPermissionToAction(grants.view, rowActions?.details),
|
|
98
|
+
copyLink: applyPermissionToAction(grants.view, rowActions?.copyLink),
|
|
99
|
+
hasSelection: rowActions?.hasSelection,
|
|
100
|
+
custom,
|
|
101
|
+
};
|
|
102
|
+
// The table's own rules are already in its options; the controller's rule
|
|
103
|
+
// applies where it declared none, as the routes enforce it.
|
|
104
|
+
if (controllerRules) {
|
|
105
|
+
for (const actionName of CONTROLLER_RULED_ACTIONS) {
|
|
106
|
+
adapted[actionName] = mergeControllerRule(adapted[actionName], (0, row_rules_1.extractRuleFromConfig)(controllerRules, actionName));
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
const editHasNoRules = adapted.edit === true ||
|
|
110
|
+
(typeof adapted.edit === "object" && !adapted.edit.rule);
|
|
111
|
+
if (editHasNoRules) {
|
|
112
|
+
adapted.details = false;
|
|
113
|
+
}
|
|
114
|
+
return adapted;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* The custom buttons served to one request: those whose permission the caller
|
|
118
|
+
* lacks are stripped, and those whose `availability` refuses the request are
|
|
119
|
+
* disabled with its reason.
|
|
120
|
+
*
|
|
121
|
+
* @internal
|
|
122
|
+
*/
|
|
123
|
+
async function resolveCustomButtons(permissions, declaredButtons, serializedButtons, componentPermissionId, context) {
|
|
124
|
+
if (!declaredButtons || !serializedButtons) {
|
|
125
|
+
return serializedButtons;
|
|
126
|
+
}
|
|
127
|
+
const kept = [];
|
|
128
|
+
for (const [index, serialized] of serializedButtons.entries()) {
|
|
129
|
+
const declared = declaredButtons[index];
|
|
130
|
+
if (!(await (0, permission_gate_1.holdsPermissionGate)(permissions, declared, componentPermissionId))) {
|
|
131
|
+
continue;
|
|
132
|
+
}
|
|
133
|
+
kept.push(await (0, button_availability_1.applyButtonAvailability)(declared?.availability, serialized, context));
|
|
134
|
+
}
|
|
135
|
+
return kept;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* The custom row actions served to one request: those whose `permission` the
|
|
139
|
+
* caller lacks are stripped, like custom buttons.
|
|
140
|
+
*
|
|
141
|
+
* @internal
|
|
142
|
+
*/
|
|
143
|
+
async function resolveCustomRowActions(permissions, declaredActions, serializedActions, componentPermissionId) {
|
|
144
|
+
if (!declaredActions || !serializedActions)
|
|
145
|
+
return serializedActions;
|
|
146
|
+
const kept = [];
|
|
147
|
+
for (const [index, serialized] of serializedActions.entries()) {
|
|
148
|
+
if (await (0, permission_gate_1.holdsPermissionGate)(permissions, declaredActions[index], componentPermissionId)) {
|
|
149
|
+
kept.push(serialized);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
return kept;
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=request-filter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-filter.js","sourceRoot":"","sources":["../../../../src/base/table-view/internal/request-filter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { ControllerClass } from "@antelopejs/interface-api";
|
|
2
|
+
import type { FormBuilder } from "../../form-types";
|
|
3
|
+
import { type ResourceFormMode, type ResourceFormOptions } from "../../resource-form-schema";
|
|
4
|
+
import { TableViewMeta } from "../meta";
|
|
5
|
+
/**
|
|
6
|
+
* Point every file and image column at the attachment it stores into. The
|
|
7
|
+
* upload a form field hands out is claimed against that address, so a form
|
|
8
|
+
* built before it is set cannot upload anything. Idempotent: whichever form or
|
|
9
|
+
* table over the controller comes first sets the same value.
|
|
10
|
+
*
|
|
11
|
+
* @internal
|
|
12
|
+
*/
|
|
13
|
+
export declare function stampAttachmentFields(meta: TableViewMeta, location: string): void;
|
|
14
|
+
/**
|
|
15
|
+
* The form over `controller` in `mode`: the fields its columns declare for
|
|
16
|
+
* that mode, loaded from and submitted to the routes the mode uses. `rowId`
|
|
17
|
+
* defaults to {@link ROUTE_PARAM_ROW_ID}, the segment a TableView's own form
|
|
18
|
+
* pages carry.
|
|
19
|
+
*
|
|
20
|
+
* `undefined` when no column has an input in that mode — a resource whose
|
|
21
|
+
* every field is read-only has no edit form to offer.
|
|
22
|
+
*
|
|
23
|
+
* @internal
|
|
24
|
+
*/
|
|
25
|
+
export declare function resourceForm<T extends ControllerClass>(controller: T, mode: ResourceFormMode, options?: ResourceFormOptions): FormBuilder | undefined;
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// The form over a resource: its fields and the routes it loads and submits
|
|
3
|
+
// through, derived from the DataController for a mode. The forms a TableView
|
|
4
|
+
// opens and the ones a ResourceForm block renders are built here and nowhere
|
|
5
|
+
// else, so the shape of a route changes in one place for both.
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.stampAttachmentFields = stampAttachmentFields;
|
|
8
|
+
exports.resourceForm = resourceForm;
|
|
9
|
+
const interface_core_1 = require("@antelopejs/interface-core");
|
|
10
|
+
const core_1 = require("../../data-types/core");
|
|
11
|
+
const form_schema_1 = require("../../form-schema");
|
|
12
|
+
const resource_form_schema_1 = require("../../resource-form-schema");
|
|
13
|
+
const types_1 = require("../../types");
|
|
14
|
+
const meta_1 = require("../meta");
|
|
15
|
+
const realtime_1 = require("./realtime");
|
|
16
|
+
function formRoutes(location, mode, rowId) {
|
|
17
|
+
switch (mode) {
|
|
18
|
+
case "new":
|
|
19
|
+
return {
|
|
20
|
+
// A row being duplicated seeds the new one; without the query the
|
|
21
|
+
// token stays unresolved and nothing is fetched.
|
|
22
|
+
fetchUrl: `${location}/get?id={{query.duplicate}}`,
|
|
23
|
+
fetchUrlMethod: types_1.HttpMethod.get,
|
|
24
|
+
submitUrl: `${location}/new`,
|
|
25
|
+
submitUrlMethod: types_1.HttpMethod.post,
|
|
26
|
+
};
|
|
27
|
+
case "edit":
|
|
28
|
+
return {
|
|
29
|
+
fetchUrl: `${location}/get?id=${rowId}&${realtime_1.REALTIME_PRESENCE_QUERY}=${realtime_1.REALTIME_PRESENCE_ACQUIRE_VALUE}`,
|
|
30
|
+
fetchUrlMethod: types_1.HttpMethod.get,
|
|
31
|
+
submitUrl: `${location}/edit?id=${rowId}`,
|
|
32
|
+
submitUrlMethod: types_1.HttpMethod.put,
|
|
33
|
+
};
|
|
34
|
+
case "view":
|
|
35
|
+
return {
|
|
36
|
+
fetchUrl: `${location}/get?id=${rowId}`,
|
|
37
|
+
fetchUrlMethod: types_1.HttpMethod.get,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Point every file and image column at the attachment it stores into. The
|
|
43
|
+
* upload a form field hands out is claimed against that address, so a form
|
|
44
|
+
* built before it is set cannot upload anything. Idempotent: whichever form or
|
|
45
|
+
* table over the controller comes first sets the same value.
|
|
46
|
+
*
|
|
47
|
+
* @internal
|
|
48
|
+
*/
|
|
49
|
+
function stampAttachmentFields(meta, location) {
|
|
50
|
+
for (const [columnKey, column] of Object.entries(meta.columns)) {
|
|
51
|
+
const typeId = (0, core_1.getDataTypeId)(column.type);
|
|
52
|
+
if (typeId === "file" || typeId === "image") {
|
|
53
|
+
const typeOptions = column.type.options;
|
|
54
|
+
typeOptions.attachmentField = `${location}#${columnKey}`;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* The form over `controller` in `mode`: the fields its columns declare for
|
|
60
|
+
* that mode, loaded from and submitted to the routes the mode uses. `rowId`
|
|
61
|
+
* defaults to {@link ROUTE_PARAM_ROW_ID}, the segment a TableView's own form
|
|
62
|
+
* pages carry.
|
|
63
|
+
*
|
|
64
|
+
* `undefined` when no column has an input in that mode — a resource whose
|
|
65
|
+
* every field is read-only has no edit form to offer.
|
|
66
|
+
*
|
|
67
|
+
* @internal
|
|
68
|
+
*/
|
|
69
|
+
function resourceForm(controller, mode, options = {}) {
|
|
70
|
+
const meta = (0, interface_core_1.GetMetadata)(controller, meta_1.TableViewMeta);
|
|
71
|
+
const { location } = meta.config;
|
|
72
|
+
stampAttachmentFields(meta, location);
|
|
73
|
+
const fields = meta.getFormFields(mode);
|
|
74
|
+
if (fields.length === 0) {
|
|
75
|
+
return undefined;
|
|
76
|
+
}
|
|
77
|
+
const { rowId = resource_form_schema_1.ROUTE_PARAM_ROW_ID, ...formOptions } = options;
|
|
78
|
+
const form = (0, form_schema_1.Form)({
|
|
79
|
+
...formOptions,
|
|
80
|
+
fields,
|
|
81
|
+
...formRoutes(location, mode, rowId),
|
|
82
|
+
});
|
|
83
|
+
// A form that submits to the controller's write routes is a provenance the
|
|
84
|
+
// routes accept files from, as each of its TableViews is. That covers a
|
|
85
|
+
// TableView's own form too: a page-mode TableView mounts it as the component
|
|
86
|
+
// of its form sub-page, whose upload tokens are claimed under that form.
|
|
87
|
+
if (mode !== "view")
|
|
88
|
+
meta.addResourceFormBuilder(form);
|
|
89
|
+
return form;
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=resource-form.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource-form.js","sourceRoot":"","sources":["../../../../src/base/table-view/internal/resource-form.ts"],"names":[],"mappings":";AAAA,2EAA2E;AAC3E,6EAA6E;AAC7E,6EAA6E;AAC7E,+DAA+D;;AA8D/D,sDAWC;AAaD,oCAwBC;AA3GD,+DAAyD;AACzD,gDAAsD;AACtD,mDAAyC;AAEzC,qEAIoC;AACpC,uCAAyC;AACzC,kCAAwC;AACxC,yCAGoB;AAOpB,SAAS,UAAU,CACjB,QAAgB,EAChB,IAAsB,EACtB,KAAa;IAEb,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,KAAK;YACR,OAAO;gBACL,kEAAkE;gBAClE,iDAAiD;gBACjD,QAAQ,EAAE,GAAG,QAAQ,6BAA6B;gBAClD,cAAc,EAAE,kBAAU,CAAC,GAAG;gBAC9B,SAAS,EAAE,GAAG,QAAQ,MAAM;gBAC5B,eAAe,EAAE,kBAAU,CAAC,IAAI;aACjC,CAAC;QACJ,KAAK,MAAM;YACT,OAAO;gBACL,QAAQ,EAAE,GAAG,QAAQ,WAAW,KAAK,IAAI,kCAAuB,IAAI,0CAA+B,EAAE;gBACrG,cAAc,EAAE,kBAAU,CAAC,GAAG;gBAC9B,SAAS,EAAE,GAAG,QAAQ,YAAY,KAAK,EAAE;gBACzC,eAAe,EAAE,kBAAU,CAAC,GAAG;aAChC,CAAC;QACJ,KAAK,MAAM;YACT,OAAO;gBACL,QAAQ,EAAE,GAAG,QAAQ,WAAW,KAAK,EAAE;gBACvC,cAAc,EAAE,kBAAU,CAAC,GAAG;aAC/B,CAAC;IACN,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,qBAAqB,CACnC,IAAmB,EACnB,QAAgB;IAEhB,KAAK,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/D,MAAM,MAAM,GAAG,IAAA,oBAAa,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;YAC5C,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,OAAkC,CAAC;YACnE,WAAW,CAAC,eAAe,GAAG,GAAG,QAAQ,IAAI,SAAS,EAAE,CAAC;QAC3D,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAgB,YAAY,CAC1B,UAAa,EACb,IAAsB,EACtB,UAA+B,EAAE;IAEjC,MAAM,IAAI,GAAG,IAAA,4BAAW,EAAC,UAAU,EAAE,oBAAa,CAAC,CAAC;IACpD,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;IACjC,qBAAqB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,EAAE,KAAK,GAAG,yCAAkB,EAAE,GAAG,WAAW,EAAE,GAAG,OAAO,CAAC;IAC/D,MAAM,IAAI,GAAG,IAAA,kBAAI,EAAC;QAChB,GAAG,WAAW;QACd,MAAM;QACN,GAAG,UAAU,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC;KACrC,CAAC,CAAC;IACH,2EAA2E;IAC3E,wEAAwE;IACxE,6EAA6E;IAC7E,yEAAyE;IACzE,IAAI,IAAI,KAAK,MAAM;QAAE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;IACvD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import type { DataControllerCallback } from "@antelopejs/interface-data-api";
|
|
2
|
-
import type { RowActionRule } from "
|
|
3
|
-
import type { TableViewRowActionOptions } from "
|
|
2
|
+
import type { RowActionRule } from "../../types/row-action";
|
|
3
|
+
import type { TableViewRowActionOptions } from "../options";
|
|
4
4
|
type ValidatedActionName = "delete" | "edit" | "archive" | "restore";
|
|
5
|
+
/** @internal */
|
|
5
6
|
export declare const normalizeToArray: (value: string | string[]) => string[];
|
|
7
|
+
/** @internal */
|
|
6
8
|
export declare const extractRuleFromConfig: (controllerRules: TableViewRowActionOptions | undefined, actionName: ValidatedActionName) => RowActionRule | undefined;
|
|
9
|
+
/** @internal */
|
|
7
10
|
export declare const createValidatedRoute: (baseRoute: DataControllerCallback, actionName: ValidatedActionName) => DataControllerCallback;
|
|
8
11
|
export {};
|
|
@@ -3,14 +3,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.createValidatedRoute = exports.extractRuleFromConfig = exports.normalizeToArray = void 0;
|
|
4
4
|
const interface_api_util_1 = require("@antelopejs/interface-api-util");
|
|
5
5
|
const interface_core_1 = require("@antelopejs/interface-core");
|
|
6
|
-
const data_functions_1 = require("
|
|
7
|
-
const meta_1 = require("
|
|
8
|
-
const options_1 = require("
|
|
6
|
+
const data_functions_1 = require("../data-functions");
|
|
7
|
+
const meta_1 = require("../meta");
|
|
8
|
+
const options_1 = require("../options");
|
|
9
9
|
var EmptyResultBehavior;
|
|
10
10
|
(function (EmptyResultBehavior) {
|
|
11
11
|
EmptyResultBehavior[EmptyResultBehavior["Graceful"] = 0] = "Graceful";
|
|
12
12
|
EmptyResultBehavior[EmptyResultBehavior["Strict"] = 1] = "Strict";
|
|
13
13
|
})(EmptyResultBehavior || (EmptyResultBehavior = {}));
|
|
14
|
+
/** @internal */
|
|
14
15
|
const normalizeToArray = (value) => Array.isArray(value) ? value : [value];
|
|
15
16
|
exports.normalizeToArray = normalizeToArray;
|
|
16
17
|
const ACTION_VALIDATION_CONFIGS = {
|
|
@@ -27,27 +28,32 @@ const ACTION_VALIDATION_CONFIGS = {
|
|
|
27
28
|
extractIds: (params) => [params.id],
|
|
28
29
|
emptyResultBehavior: EmptyResultBehavior.Strict,
|
|
29
30
|
},
|
|
31
|
+
// A bulk route's first argument after the context is the id list itself:
|
|
32
|
+
// the rows a rule rejects are dropped from it before the operation runs.
|
|
30
33
|
archive: {
|
|
31
|
-
extractIds: (
|
|
34
|
+
extractIds: (ids) => (0, exports.normalizeToArray)(ids),
|
|
32
35
|
emptyResultBehavior: EmptyResultBehavior.Graceful,
|
|
33
36
|
emptyResult: { success: true, archivedCount: 0 },
|
|
34
|
-
|
|
37
|
+
transformParams: (_ids, eligibleIds) => eligibleIds,
|
|
35
38
|
},
|
|
36
39
|
restore: {
|
|
37
|
-
extractIds: (
|
|
40
|
+
extractIds: (ids) => (0, exports.normalizeToArray)(ids),
|
|
38
41
|
emptyResultBehavior: EmptyResultBehavior.Graceful,
|
|
39
42
|
emptyResult: { success: true, restoredCount: 0 },
|
|
40
|
-
|
|
43
|
+
transformParams: (_ids, eligibleIds) => eligibleIds,
|
|
41
44
|
},
|
|
42
45
|
};
|
|
43
|
-
|
|
46
|
+
// The writing TableView's rules and options are the controller's: it is the
|
|
47
|
+
// only one the write routes serve.
|
|
48
|
+
const getValidationContext = (controller, actionName) => {
|
|
44
49
|
const meta = (0, interface_core_1.GetMetadata)(controller.constructor, meta_1.TableViewMeta);
|
|
45
50
|
return {
|
|
46
|
-
|
|
51
|
+
rule: (0, exports.extractRuleFromConfig)(meta.controllerRowActionRules, actionName),
|
|
47
52
|
strictMode: meta.options.strictRuleValidation ?? false,
|
|
48
53
|
idField: meta.options.rowIdKey || options_1.DEFAULT_ROW_ID_FIELD,
|
|
49
54
|
};
|
|
50
55
|
};
|
|
56
|
+
/** @internal */
|
|
51
57
|
const extractRuleFromConfig = (controllerRules, actionName) => {
|
|
52
58
|
const actionConfig = controllerRules?.[actionName];
|
|
53
59
|
if (typeof actionConfig === "object" && actionConfig !== null) {
|
|
@@ -62,19 +68,17 @@ const handleNoEligibleIds = (config, actionName) => {
|
|
|
62
68
|
}
|
|
63
69
|
return config.emptyResult;
|
|
64
70
|
};
|
|
71
|
+
/** @internal */
|
|
65
72
|
const createValidatedRoute = (baseRoute, actionName) => {
|
|
66
73
|
const config = ACTION_VALIDATION_CONFIGS[actionName];
|
|
67
74
|
return {
|
|
68
75
|
func: async function (ctx, params, ...args) {
|
|
69
|
-
const validationCtx = getValidationContext(this);
|
|
70
|
-
|
|
71
|
-
return baseRoute.func.call(this, ctx, params, ...args);
|
|
72
|
-
}
|
|
73
|
-
const rule = (0, exports.extractRuleFromConfig)(validationCtx.rules, actionName);
|
|
76
|
+
const validationCtx = getValidationContext(this, actionName);
|
|
77
|
+
const { rule } = validationCtx;
|
|
74
78
|
if (!rule) {
|
|
75
79
|
return baseRoute.func.call(this, ctx, params, ...args);
|
|
76
80
|
}
|
|
77
|
-
const ids = config.extractIds(params
|
|
81
|
+
const ids = config.extractIds(params);
|
|
78
82
|
const { eligibleIds } = await (0, data_functions_1.validateRowsAgainstRule)(this, ids, rule, validationCtx.strictMode, validationCtx.idField);
|
|
79
83
|
if (eligibleIds.length === 0) {
|
|
80
84
|
return handleNoEligibleIds(config, actionName);
|
|
@@ -82,10 +86,7 @@ const createValidatedRoute = (baseRoute, actionName) => {
|
|
|
82
86
|
const finalParams = config.transformParams
|
|
83
87
|
? config.transformParams(params, eligibleIds)
|
|
84
88
|
: params;
|
|
85
|
-
|
|
86
|
-
? config.transformArgs(args, eligibleIds)
|
|
87
|
-
: args;
|
|
88
|
-
return baseRoute.func.call(this, ctx, finalParams, ...finalArgs);
|
|
89
|
+
return baseRoute.func.call(this, ctx, finalParams, ...args);
|
|
89
90
|
},
|
|
90
91
|
args: baseRoute.args,
|
|
91
92
|
method: baseRoute.method,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"row-rules.js","sourceRoot":"","sources":["../../../../src/base/table-view/internal/row-rules.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { type ControllerClass } from "@antelopejs/interface-api";
|
|
2
|
+
import type { DataControllerCallbackWithOptions } from "@antelopejs/interface-data-api";
|
|
3
|
+
import type { TableViewOptions, TableViewTab, TableViewTabSerialized } from "../options";
|
|
4
|
+
/**
|
|
5
|
+
* Tabs as the options carry them: a link tab's path target and its count
|
|
6
|
+
* location are plain strings already; a page controller target is resolved
|
|
7
|
+
* per request by {@link resolveTableViewTabs}, once pages are registered.
|
|
8
|
+
*
|
|
9
|
+
* @internal
|
|
10
|
+
*/
|
|
11
|
+
export declare function serializeTableViewTabs(tabs: TableViewTab[] | undefined): TableViewTabSerialized[] | undefined;
|
|
12
|
+
/**
|
|
13
|
+
* The tabs served to one request: a tab is kept only for a caller its gate
|
|
14
|
+
* admits — a link tab to a page, that page's own permission; any other tab,
|
|
15
|
+
* its `permission` (relative to the table view) or `permissionId` — and a
|
|
16
|
+
* page target is resolved to its path and full id. A page that never
|
|
17
|
+
* registered drops its tab.
|
|
18
|
+
*
|
|
19
|
+
* @internal
|
|
20
|
+
*/
|
|
21
|
+
export declare function resolveTableViewTabs(permissions: Set<string>, declaredTabs: TableViewTab[] | undefined, serializedTabs: TableViewTabSerialized[] | undefined, componentPermissionId: string): Promise<TableViewTabSerialized[] | undefined>;
|
|
22
|
+
/**
|
|
23
|
+
* Whether a table view shows counters the `count/batch` route serves: filter
|
|
24
|
+
* tabs, counted views or counted groups.
|
|
25
|
+
*
|
|
26
|
+
* @internal
|
|
27
|
+
*/
|
|
28
|
+
export declare function declaresCounters(options: Pick<TableViewOptions, "tabs" | "views" | "grouped">): boolean;
|
|
29
|
+
/** @internal */
|
|
30
|
+
export declare function servesRoute(endpoints: Record<string, DataControllerCallbackWithOptions>, path: string, method: string): boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Warn, once per controller, when a table view declares filter tabs, counted
|
|
33
|
+
* views or counted groups but its controller mounts no `POST count/batch`
|
|
34
|
+
* route: every counter request would fail. The fix belongs in the controller
|
|
35
|
+
* (mount `countBatch: TableViewRoutes.CountBatch`), so this only reports it.
|
|
36
|
+
*
|
|
37
|
+
* @internal
|
|
38
|
+
*/
|
|
39
|
+
export declare function warnIfTabsLackCountBatch(controller: ControllerClass, location: string, hasCounters: boolean, endpoints: Record<string, DataControllerCallbackWithOptions>): void;
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// The filter tabs of a table view: how the options carry them, which ones a
|
|
3
|
+
// request is served, and the warning when their counters have no route.
|
|
4
|
+
//
|
|
5
|
+
// Split out of factory-helpers.ts.
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.serializeTableViewTabs = serializeTableViewTabs;
|
|
8
|
+
exports.resolveTableViewTabs = resolveTableViewTabs;
|
|
9
|
+
exports.declaresCounters = declaresCounters;
|
|
10
|
+
exports.servesRoute = servesRoute;
|
|
11
|
+
exports.warnIfTabsLackCountBatch = warnIfTabsLackCountBatch;
|
|
12
|
+
const interface_api_1 = require("@antelopejs/interface-api");
|
|
13
|
+
const interface_core_1 = require("@antelopejs/interface-core");
|
|
14
|
+
const logging_1 = require("@antelopejs/interface-core/logging");
|
|
15
|
+
const page_1 = require("../../../page");
|
|
16
|
+
const permission_gate_1 = require("../../../internal/permission-gate");
|
|
17
|
+
const permissions_1 = require("../../../permissions");
|
|
18
|
+
function dataApiLocation(countFrom) {
|
|
19
|
+
return typeof countFrom === "string"
|
|
20
|
+
? countFrom
|
|
21
|
+
: (0, interface_core_1.GetMetadata)(countFrom, interface_api_1.ControllerMeta).location;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Tabs as the options carry them: a link tab's path target and its count
|
|
25
|
+
* location are plain strings already; a page controller target is resolved
|
|
26
|
+
* per request by {@link resolveTableViewTabs}, once pages are registered.
|
|
27
|
+
*
|
|
28
|
+
* @internal
|
|
29
|
+
*/
|
|
30
|
+
function serializeTableViewTabs(tabs) {
|
|
31
|
+
return tabs?.map(({ to, countFrom, permission: _permission, permissionId: _permissionId, ...tab }) => {
|
|
32
|
+
const serialized = { ...tab };
|
|
33
|
+
if (typeof to === "string")
|
|
34
|
+
serialized.to = to;
|
|
35
|
+
if (countFrom)
|
|
36
|
+
serialized.countFrom = dataApiLocation(countFrom);
|
|
37
|
+
return serialized;
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
const withLeadingSlash = (path) => path.startsWith("/") ? path : `/${path}`;
|
|
41
|
+
/**
|
|
42
|
+
* The tabs served to one request: a tab is kept only for a caller its gate
|
|
43
|
+
* admits — a link tab to a page, that page's own permission; any other tab,
|
|
44
|
+
* its `permission` (relative to the table view) or `permissionId` — and a
|
|
45
|
+
* page target is resolved to its path and full id. A page that never
|
|
46
|
+
* registered drops its tab.
|
|
47
|
+
*
|
|
48
|
+
* @internal
|
|
49
|
+
*/
|
|
50
|
+
async function resolveTableViewTabs(permissions, declaredTabs, serializedTabs, componentPermissionId) {
|
|
51
|
+
if (!declaredTabs || !serializedTabs)
|
|
52
|
+
return serializedTabs;
|
|
53
|
+
const kept = [];
|
|
54
|
+
for (const [index, tab] of serializedTabs.entries()) {
|
|
55
|
+
const declared = declaredTabs[index];
|
|
56
|
+
const target = declared?.to;
|
|
57
|
+
if (target && typeof target !== "string") {
|
|
58
|
+
const page = (0, interface_core_1.GetMetadata)(target, page_1.PageMetadata).pageInfo;
|
|
59
|
+
if (!page)
|
|
60
|
+
continue;
|
|
61
|
+
const permissionId = (0, page_1.GetPermissionId)(target);
|
|
62
|
+
if (permissionId && !(await (0, permissions_1.HasPermission)(permissions, permissionId))) {
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
kept.push({
|
|
66
|
+
...tab,
|
|
67
|
+
to: withLeadingSlash(page.fullSlug),
|
|
68
|
+
toPage: page.fullId,
|
|
69
|
+
});
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
if (await (0, permission_gate_1.holdsPermissionGate)(permissions, declared, componentPermissionId)) {
|
|
73
|
+
kept.push(tab);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return kept;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Whether a table view shows counters the `count/batch` route serves: filter
|
|
80
|
+
* tabs, counted views or counted groups.
|
|
81
|
+
*
|
|
82
|
+
* @internal
|
|
83
|
+
*/
|
|
84
|
+
function declaresCounters(options) {
|
|
85
|
+
return ((options.tabs?.length ?? 0) > 0 ||
|
|
86
|
+
!!options.views?.items.some((view) => view.count) ||
|
|
87
|
+
!!options.grouped?.count);
|
|
88
|
+
}
|
|
89
|
+
const COUNT_BATCH_PATH = "count/batch";
|
|
90
|
+
const COUNT_BATCH_METHOD = "post";
|
|
91
|
+
const EDGE_SLASHES = /^\/+|\/+$/g;
|
|
92
|
+
const controllersWarnedForTabCounts = new WeakSet();
|
|
93
|
+
// Matched on the mounted path and method rather than on the route object: a
|
|
94
|
+
// module mounts its own per-context copy of `TableViewRoutes.CountBatch`.
|
|
95
|
+
/** @internal */
|
|
96
|
+
function servesRoute(endpoints, path, method) {
|
|
97
|
+
return Object.entries(endpoints).some(([key, entry]) => (entry.endpoint ?? key).replace(EDGE_SLASHES, "") === path &&
|
|
98
|
+
entry.callback.method.toLowerCase() === method);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Warn, once per controller, when a table view declares filter tabs, counted
|
|
102
|
+
* views or counted groups but its controller mounts no `POST count/batch`
|
|
103
|
+
* route: every counter request would fail. The fix belongs in the controller
|
|
104
|
+
* (mount `countBatch: TableViewRoutes.CountBatch`), so this only reports it.
|
|
105
|
+
*
|
|
106
|
+
* @internal
|
|
107
|
+
*/
|
|
108
|
+
function warnIfTabsLackCountBatch(controller, location, hasCounters, endpoints) {
|
|
109
|
+
if (!hasCounters || controllersWarnedForTabCounts.has(controller))
|
|
110
|
+
return;
|
|
111
|
+
if (servesRoute(endpoints, COUNT_BATCH_PATH, COUNT_BATCH_METHOD))
|
|
112
|
+
return;
|
|
113
|
+
controllersWarnedForTabCounts.add(controller);
|
|
114
|
+
logging_1.Logging.Warn(`[DMS] TableView on "${controller.name}" (${location}) declares filter tabs, counted views or counted groups but its controller mounts no POST ${location}/${COUNT_BATCH_PATH} route: their counters will fail. Mount \`countBatch: TableViewRoutes.CountBatch\` on the controller.`);
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=tabs.js.map
|