@antelopejs/interface-dms 0.3.4 → 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 +43 -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 +54 -17
- package/dist/invites.js +49 -34
- 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
package/dist/page.js
CHANGED
|
@@ -14,7 +14,28 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.GetRegisteredPageIds = exports.GetPermissionId = exports.
|
|
17
|
+
exports.GetRegisteredPageIds = exports.GetPermissionId = exports.GetPageLayoutBySlug = exports.GetComponentPermissionIds = exports.ClearPageLayoutBySlug = exports.PageMetadata = exports.FormPageRouteConflictError = exports.PageDeclarationConflictError = exports.RootPageController = exports.RootCategory = exports.RegisterPageExtension = exports.RegisterPage = exports.RegisterDynamicMenuProvider = exports.PageController = exports.NotifyMenuChanged = exports.GetFrontendModules = exports.Category = exports.AddFrontendModule = exports.isInsideModule = exports.internal = void 0;
|
|
18
|
+
/**
|
|
19
|
+
* Public entry of the page system, split by concern under `./page/`:
|
|
20
|
+
*
|
|
21
|
+
* - `types` — the shared vocabulary (menu options, page/category infos,
|
|
22
|
+
* dynamic menu and extension contracts)
|
|
23
|
+
* - `registry` — the page layout and permission id lookups
|
|
24
|
+
* - `layout-filter` — permission filtering of a serialized layout
|
|
25
|
+
* - `categories` — the `internal` registration proxies and the module
|
|
26
|
+
* membership check
|
|
27
|
+
* - `metadata` — `PageMetadata`, the registration/teardown lifecycle of one
|
|
28
|
+
* page
|
|
29
|
+
* - `controllers` — the consumer-facing decorators and constructors
|
|
30
|
+
* - `roots` — the built-in root categories and module registration
|
|
31
|
+
*
|
|
32
|
+
* The plumbing behind them lives under `./page/internal/` and is not
|
|
33
|
+
* re-exported here: the module-wide registries every piece writes to
|
|
34
|
+
* (`registry`), category resolution and creation (`categories`), the
|
|
35
|
+
* deterministic ordering and grafting of page extensions into a layout
|
|
36
|
+
* (`extension-assembly`), extension validation, component targets and trees,
|
|
37
|
+
* form page route claims and the registration identities.
|
|
38
|
+
*/
|
|
18
39
|
var categories_1 = require("./page/categories");
|
|
19
40
|
Object.defineProperty(exports, "internal", { enumerable: true, get: function () { return categories_1.internal; } });
|
|
20
41
|
Object.defineProperty(exports, "isInsideModule", { enumerable: true, get: function () { return categories_1.isInsideModule; } });
|
|
@@ -29,6 +50,8 @@ Object.defineProperty(exports, "RegisterPage", { enumerable: true, get: function
|
|
|
29
50
|
Object.defineProperty(exports, "RegisterPageExtension", { enumerable: true, get: function () { return controllers_1.RegisterPageExtension; } });
|
|
30
51
|
Object.defineProperty(exports, "RootCategory", { enumerable: true, get: function () { return controllers_1.RootCategory; } });
|
|
31
52
|
Object.defineProperty(exports, "RootPageController", { enumerable: true, get: function () { return controllers_1.RootPageController; } });
|
|
53
|
+
var declaration_conflict_1 = require("./page/declaration-conflict");
|
|
54
|
+
Object.defineProperty(exports, "PageDeclarationConflictError", { enumerable: true, get: function () { return declaration_conflict_1.PageDeclarationConflictError; } });
|
|
32
55
|
var form_page_routes_1 = require("./page/form-page-routes");
|
|
33
56
|
Object.defineProperty(exports, "FormPageRouteConflictError", { enumerable: true, get: function () { return form_page_routes_1.FormPageRouteConflictError; } });
|
|
34
57
|
var metadata_1 = require("./page/metadata");
|
|
@@ -37,7 +60,6 @@ var registry_1 = require("./page/registry");
|
|
|
37
60
|
Object.defineProperty(exports, "ClearPageLayoutBySlug", { enumerable: true, get: function () { return registry_1.ClearPageLayoutBySlug; } });
|
|
38
61
|
Object.defineProperty(exports, "GetComponentPermissionIds", { enumerable: true, get: function () { return registry_1.GetComponentPermissionIds; } });
|
|
39
62
|
Object.defineProperty(exports, "GetPageLayoutBySlug", { enumerable: true, get: function () { return registry_1.GetPageLayoutBySlug; } });
|
|
40
|
-
Object.defineProperty(exports, "GetPendingPageExtensions", { enumerable: true, get: function () { return registry_1.GetPendingPageExtensions; } });
|
|
41
63
|
Object.defineProperty(exports, "GetPermissionId", { enumerable: true, get: function () { return registry_1.GetPermissionId; } });
|
|
42
64
|
Object.defineProperty(exports, "GetRegisteredPageIds", { enumerable: true, get: function () { return registry_1.GetRegisteredPageIds; } });
|
|
43
65
|
__exportStar(require("./page/roots"), exports);
|
package/dist/page.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page.js","sourceRoot":"","sources":["../src/page.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"page.js","sourceRoot":"","sources":["../src/page.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,gDAA6D;AAApD,sGAAA,QAAQ,OAAA;AAAE,4GAAA,cAAc,OAAA;AACjC,kDAgB4B;AAf1B,gHAAA,iBAAiB,OAAA;AAEjB,uGAAA,QAAQ,OAAA;AAKR,iHAAA,kBAAkB,OAAA;AAClB,gHAAA,iBAAiB,OAAA;AACjB,6GAAA,cAAc,OAAA;AACd,0HAAA,2BAA2B,OAAA;AAC3B,2GAAA,YAAY,OAAA;AACZ,oHAAA,qBAAqB,OAAA;AACrB,2GAAA,YAAY,OAAA;AACZ,iHAAA,kBAAkB,OAAA;AAEpB,oEAA2E;AAAlE,oIAAA,4BAA4B,OAAA;AACrC,4DAAqE;AAA5D,8HAAA,0BAA0B,OAAA;AACnC,4CAA+C;AAAtC,wGAAA,YAAY,OAAA;AACrB,4CAMyB;AALvB,iHAAA,qBAAqB,OAAA;AACrB,qHAAA,yBAAyB,OAAA;AACzB,+GAAA,mBAAmB,OAAA;AACnB,2GAAA,eAAe,OAAA;AACf,gHAAA,oBAAoB,OAAA;AAEtB,+CAA6B;AAC7B,+CAA6B"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ButtonPermission } from "./component";
|
|
2
|
+
/**
|
|
3
|
+
* Who may use a button, a row action, a tab, a view or a header button.
|
|
4
|
+
*
|
|
5
|
+
* `permission` names an action relative to the owner — the table view for its
|
|
6
|
+
* buttons, row actions, tabs and views, the page for a header button — like
|
|
7
|
+
* `"edit"`, or is an `Action` of any component. `permissionId` is an absolute
|
|
8
|
+
* permission id (`"pages.sales.invoices.export"`), for the rare gate that is
|
|
9
|
+
* neither. `permissionId` wins when both are set.
|
|
10
|
+
*/
|
|
11
|
+
export interface PermissionGate {
|
|
12
|
+
permission?: ButtonPermission;
|
|
13
|
+
permissionId?: string;
|
|
14
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permission-gate.js","sourceRoot":"","sources":["../src/permission-gate.ts"],"names":[],"mappings":""}
|
|
@@ -5,8 +5,32 @@ export interface PermissionsResolverInfo {
|
|
|
5
5
|
resolver: PermissionsResolverFn;
|
|
6
6
|
order: number;
|
|
7
7
|
}
|
|
8
|
+
/** @internal */
|
|
8
9
|
export declare namespace internal {
|
|
9
10
|
const RegisterPermissionsResolver: RegisteringProxy<(info: PermissionsResolverInfo) => void>;
|
|
10
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
* Register a permissions resolver that transforms a user's base permission
|
|
14
|
+
* set into their effective permission set.
|
|
15
|
+
*
|
|
16
|
+
* Semantics:
|
|
17
|
+
* - Resolvers run in ascending `order`; resolvers with the same `order` run
|
|
18
|
+
* in registration order (i.e. module load order).
|
|
19
|
+
* - A resolver that throws aborts the permission computation and fails the
|
|
20
|
+
* request (fail-closed); it is never silently skipped.
|
|
21
|
+
* - The registration is automatically removed when the registering module is
|
|
22
|
+
* unloaded.
|
|
23
|
+
* - Call during your module's `construct()` so the resolver is active before
|
|
24
|
+
* the API starts serving requests.
|
|
25
|
+
*
|
|
26
|
+
* Resolvers are for granular permission shaping (e.g. intersecting with a
|
|
27
|
+
* subscription plan). To deny a tenant access to the product entirely, use
|
|
28
|
+
* `RegisterTenantAccessGate` from `dms/tenant-access` instead.
|
|
29
|
+
*/
|
|
11
30
|
export declare function RegisterPermissionsResolver(info: PermissionsResolverInfo): void;
|
|
31
|
+
/**
|
|
32
|
+
* Run the registered resolvers over a base permission set and return the
|
|
33
|
+
* effective set. Prefer `GetEffectiveUserPermissions` from `dms/permissions`,
|
|
34
|
+
* which composes the base set computation with this pipeline.
|
|
35
|
+
*/
|
|
12
36
|
export declare const ApplyPermissionsResolvers: (userId: string, tenantId: string, basePermissions: Set<string>) => Promise<Set<string>>;
|
|
@@ -3,12 +3,36 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.ApplyPermissionsResolvers = exports.internal = void 0;
|
|
4
4
|
exports.RegisterPermissionsResolver = RegisterPermissionsResolver;
|
|
5
5
|
const interface_core_1 = require("@antelopejs/interface-core");
|
|
6
|
+
/** @internal */
|
|
6
7
|
var internal;
|
|
7
8
|
(function (internal) {
|
|
8
9
|
internal.RegisterPermissionsResolver = new interface_core_1.RegisteringProxy();
|
|
9
10
|
})(internal || (exports.internal = internal = {}));
|
|
11
|
+
/**
|
|
12
|
+
* Register a permissions resolver that transforms a user's base permission
|
|
13
|
+
* set into their effective permission set.
|
|
14
|
+
*
|
|
15
|
+
* Semantics:
|
|
16
|
+
* - Resolvers run in ascending `order`; resolvers with the same `order` run
|
|
17
|
+
* in registration order (i.e. module load order).
|
|
18
|
+
* - A resolver that throws aborts the permission computation and fails the
|
|
19
|
+
* request (fail-closed); it is never silently skipped.
|
|
20
|
+
* - The registration is automatically removed when the registering module is
|
|
21
|
+
* unloaded.
|
|
22
|
+
* - Call during your module's `construct()` so the resolver is active before
|
|
23
|
+
* the API starts serving requests.
|
|
24
|
+
*
|
|
25
|
+
* Resolvers are for granular permission shaping (e.g. intersecting with a
|
|
26
|
+
* subscription plan). To deny a tenant access to the product entirely, use
|
|
27
|
+
* `RegisterTenantAccessGate` from `dms/tenant-access` instead.
|
|
28
|
+
*/
|
|
10
29
|
function RegisterPermissionsResolver(info) {
|
|
11
30
|
internal.RegisterPermissionsResolver.register(info);
|
|
12
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* Run the registered resolvers over a base permission set and return the
|
|
34
|
+
* effective set. Prefer `GetEffectiveUserPermissions` from `dms/permissions`,
|
|
35
|
+
* which composes the base set computation with this pipeline.
|
|
36
|
+
*/
|
|
13
37
|
exports.ApplyPermissionsResolvers = (0, interface_core_1.InterfaceFunction)();
|
|
14
38
|
//# sourceMappingURL=permissions-resolver.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissions-resolver.js","sourceRoot":"","sources":["../src/permissions-resolver.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"permissions-resolver.js","sourceRoot":"","sources":["../src/permissions-resolver.ts"],"names":[],"mappings":";;;AA0CA,kEAIC;AA9CD,+DAGoC;AAcpC,gBAAgB;AAChB,IAAiB,QAAQ,CAIxB;AAJD,WAAiB,QAAQ;IACV,oCAA2B,GAAG,IAAI,iCAAgB,EAE5D,CAAC;AACN,CAAC,EAJgB,QAAQ,wBAAR,QAAQ,QAIxB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,SAAgB,2BAA2B,CACzC,IAA6B;IAE7B,QAAQ,CAAC,2BAA2B,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACtD,CAAC;AAED;;;;GAIG;AACU,QAAA,yBAAyB,GACpC,IAAA,kCAAiB,GAMd,CAAC"}
|
package/dist/permissions.d.ts
CHANGED
|
@@ -12,22 +12,49 @@ export type PermissionTree = {
|
|
|
12
12
|
data?: Permission;
|
|
13
13
|
children: Record<string, PermissionTree>;
|
|
14
14
|
};
|
|
15
|
+
/**
|
|
16
|
+
* @internal
|
|
17
|
+
*/
|
|
15
18
|
export declare namespace internal {
|
|
16
19
|
const RegisterPermission: RegisteringProxy<(id: string, permission: Permission) => void>;
|
|
17
20
|
}
|
|
18
21
|
export declare const RegisterPermission: (id: string, permission: Permission) => void;
|
|
22
|
+
/**
|
|
23
|
+
* Drop a permission from the grantable tree. Used when a registration is undone
|
|
24
|
+
* while the process keeps running — a page extension whose module stopped.
|
|
25
|
+
*/
|
|
19
26
|
export declare const UnregisterPermission: (id: string) => void;
|
|
20
27
|
export declare function MarkModuleScopedPermission(id: string): void;
|
|
21
28
|
export declare function UnmarkModuleScopedPermission(id: string): void;
|
|
22
29
|
export declare function IsModuleScopedPermission(id: string): boolean;
|
|
23
30
|
export declare const GetPermission: (id: string) => Promise<Permission | undefined>;
|
|
24
31
|
export declare const GetPermissions: () => Promise<Record<string, PermissionTree>>;
|
|
32
|
+
/**
|
|
33
|
+
* Compute the user's BASE permission set from role grants (or `*` for
|
|
34
|
+
* platform owners). This set does not account for registered permissions
|
|
35
|
+
* resolvers (e.g. plan gating): authorization surfaces must use
|
|
36
|
+
* {@link GetEffectiveUserPermissions} instead so that every surface (guards,
|
|
37
|
+
* menus, table views, search) agrees on the same effective set.
|
|
38
|
+
*/
|
|
25
39
|
export declare function GetUserPermissions(user: {
|
|
26
40
|
owner?: boolean;
|
|
27
41
|
}, roleIds: string[], roleModel: RoleModel): Promise<Set<string>>;
|
|
42
|
+
/**
|
|
43
|
+
* Compute the user's EFFECTIVE permission set: base permissions from roles,
|
|
44
|
+
* passed through every registered permissions resolver in ascending order.
|
|
45
|
+
* This is the single entry point for authorization surfaces — route guards,
|
|
46
|
+
* page/menu visibility, table-view action checks and search must all use it
|
|
47
|
+
* so the UI and the API agree on what the user can do.
|
|
48
|
+
*
|
|
49
|
+
* Depends on the `dms/permissions-resolver` interface being implemented
|
|
50
|
+
* (`ApplyPermissionsResolvers`): the dms module wires it in `construct()`.
|
|
51
|
+
* In standalone contexts (unit tests, thin consumers) connect it manually
|
|
52
|
+
* with `ImplementInterface`, otherwise the call queues until wired.
|
|
53
|
+
*/
|
|
28
54
|
export declare function GetEffectiveUserPermissions(user: {
|
|
29
55
|
_id: string;
|
|
30
56
|
owner?: boolean;
|
|
31
57
|
}, tenantId: string, roleIds: string[], roleModel: RoleModel): Promise<Set<string>>;
|
|
32
58
|
export declare function HasPermission(permissions: Set<string>, permissionId: string): Promise<boolean>;
|
|
59
|
+
/** Whether `permissions` grants at least one of `permissionIds`. */
|
|
33
60
|
export declare function HasAnyPermission(permissions: Set<string>, permissionIds: string[]): Promise<boolean>;
|
package/dist/permissions.js
CHANGED
|
@@ -10,6 +10,9 @@ exports.HasPermission = HasPermission;
|
|
|
10
10
|
exports.HasAnyPermission = HasAnyPermission;
|
|
11
11
|
const interface_core_1 = require("@antelopejs/interface-core");
|
|
12
12
|
const permissions_resolver_1 = require("./permissions-resolver");
|
|
13
|
+
/**
|
|
14
|
+
* @internal
|
|
15
|
+
*/
|
|
13
16
|
var internal;
|
|
14
17
|
(function (internal) {
|
|
15
18
|
internal.RegisterPermission = new interface_core_1.RegisteringProxy();
|
|
@@ -18,10 +21,20 @@ const RegisterPermission = (id, permission) => {
|
|
|
18
21
|
internal.RegisterPermission.register(id, permission);
|
|
19
22
|
};
|
|
20
23
|
exports.RegisterPermission = RegisterPermission;
|
|
24
|
+
/**
|
|
25
|
+
* Drop a permission from the grantable tree. Used when a registration is undone
|
|
26
|
+
* while the process keeps running — a page extension whose module stopped.
|
|
27
|
+
*/
|
|
21
28
|
const UnregisterPermission = (id) => {
|
|
22
29
|
internal.RegisterPermission.unregister(id);
|
|
23
30
|
};
|
|
24
31
|
exports.UnregisterPermission = UnregisterPermission;
|
|
32
|
+
// Module access is platform-owner-only: permissions that belong to module
|
|
33
|
+
// pages/categories are never registered into the permission tree (Roles form)
|
|
34
|
+
// and must never grant anything to a non-owner, even when a stored role still
|
|
35
|
+
// references their id. Marking an id here also covers every dot-separated
|
|
36
|
+
// descendant id (components, actions), which are always built by suffixing
|
|
37
|
+
// the page or category permission id.
|
|
25
38
|
const moduleScopedPermissionIds = new Set();
|
|
26
39
|
function MarkModuleScopedPermission(id) {
|
|
27
40
|
moduleScopedPermissionIds.add(id);
|
|
@@ -42,6 +55,13 @@ function IsModuleScopedPermission(id) {
|
|
|
42
55
|
}
|
|
43
56
|
exports.GetPermission = (0, interface_core_1.InterfaceFunction)();
|
|
44
57
|
exports.GetPermissions = (0, interface_core_1.InterfaceFunction)();
|
|
58
|
+
/**
|
|
59
|
+
* Compute the user's BASE permission set from role grants (or `*` for
|
|
60
|
+
* platform owners). This set does not account for registered permissions
|
|
61
|
+
* resolvers (e.g. plan gating): authorization surfaces must use
|
|
62
|
+
* {@link GetEffectiveUserPermissions} instead so that every surface (guards,
|
|
63
|
+
* menus, table views, search) agrees on the same effective set.
|
|
64
|
+
*/
|
|
45
65
|
async function GetUserPermissions(user, roleIds, roleModel) {
|
|
46
66
|
if (user.owner) {
|
|
47
67
|
return new Set(["*"]);
|
|
@@ -52,6 +72,18 @@ async function GetUserPermissions(user, roleIds, roleModel) {
|
|
|
52
72
|
const roles = await roleModel.getBy("_id", ...roleIds);
|
|
53
73
|
return new Set(roles.flatMap((role) => role.permissions));
|
|
54
74
|
}
|
|
75
|
+
/**
|
|
76
|
+
* Compute the user's EFFECTIVE permission set: base permissions from roles,
|
|
77
|
+
* passed through every registered permissions resolver in ascending order.
|
|
78
|
+
* This is the single entry point for authorization surfaces — route guards,
|
|
79
|
+
* page/menu visibility, table-view action checks and search must all use it
|
|
80
|
+
* so the UI and the API agree on what the user can do.
|
|
81
|
+
*
|
|
82
|
+
* Depends on the `dms/permissions-resolver` interface being implemented
|
|
83
|
+
* (`ApplyPermissionsResolvers`): the dms module wires it in `construct()`.
|
|
84
|
+
* In standalone contexts (unit tests, thin consumers) connect it manually
|
|
85
|
+
* with `ImplementInterface`, otherwise the call queues until wired.
|
|
86
|
+
*/
|
|
55
87
|
async function GetEffectiveUserPermissions(user, tenantId, roleIds, roleModel) {
|
|
56
88
|
const basePermissions = await GetUserPermissions(user, roleIds, roleModel);
|
|
57
89
|
return (0, permissions_resolver_1.ApplyPermissionsResolvers)(user._id, tenantId, basePermissions);
|
|
@@ -59,11 +91,16 @@ async function GetEffectiveUserPermissions(user, tenantId, roleIds, roleModel) {
|
|
|
59
91
|
async function HasPermission(permissions, permissionId) {
|
|
60
92
|
if (permissions.has("*"))
|
|
61
93
|
return true;
|
|
94
|
+
// Module permissions are owner-only regardless of role grants. This covers
|
|
95
|
+
// the guards that funnel through HasPermission (route validator, table
|
|
96
|
+
// actions); realtime page access short-circuits earlier via isInsideModule
|
|
97
|
+
// in userCanAccessPage/computeEntryAccess (implementations/dms/page.ts).
|
|
62
98
|
if (IsModuleScopedPermission(permissionId))
|
|
63
99
|
return false;
|
|
64
100
|
const permission = await (0, exports.GetPermission)(permissionId);
|
|
65
101
|
return permissions.has(permissionId) || permission?.defaultGranted || false;
|
|
66
102
|
}
|
|
103
|
+
/** Whether `permissions` grants at least one of `permissionIds`. */
|
|
67
104
|
async function HasAnyPermission(permissions, permissionIds) {
|
|
68
105
|
for (const permissionId of permissionIds) {
|
|
69
106
|
if (await HasPermission(permissions, permissionId))
|
package/dist/permissions.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissions.js","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":";;;AAkDA,gEAEC;AAED,oEAEC;AAED,4DAQC;AAaD,gDAaC;AAcD,kEAQC;AAED,sCAYC;AAGD,4CAQC;AA3ID,+DAGoC;AAEpC,iEAAmE;
|
|
1
|
+
{"version":3,"file":"permissions.js","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":";;;AAkDA,gEAEC;AAED,oEAEC;AAED,4DAQC;AAaD,gDAaC;AAcD,kEAQC;AAED,sCAYC;AAGD,4CAQC;AA3ID,+DAGoC;AAEpC,iEAAmE;AAgBnE;;GAEG;AACH,IAAiB,QAAQ,CAIxB;AAJD,WAAiB,QAAQ;IACV,2BAAkB,GAAG,IAAI,iCAAgB,EAEnD,CAAC;AACN,CAAC,EAJgB,QAAQ,wBAAR,QAAQ,QAIxB;AAEM,MAAM,kBAAkB,GAAG,CAAC,EAAU,EAAE,UAAsB,EAAE,EAAE;IACvE,QAAQ,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;AACvD,CAAC,CAAC;AAFW,QAAA,kBAAkB,sBAE7B;AAEF;;;GAGG;AACI,MAAM,oBAAoB,GAAG,CAAC,EAAU,EAAE,EAAE;IACjD,QAAQ,CAAC,kBAAkB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AAC7C,CAAC,CAAC;AAFW,QAAA,oBAAoB,wBAE/B;AAEF,0EAA0E;AAC1E,8EAA8E;AAC9E,8EAA8E;AAC9E,0EAA0E;AAC1E,2EAA2E;AAC3E,sCAAsC;AACtC,MAAM,yBAAyB,GAAG,IAAI,GAAG,EAAU,CAAC;AAEpD,SAAgB,0BAA0B,CAAC,EAAU;IACnD,yBAAyB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACpC,CAAC;AAED,SAAgB,4BAA4B,CAAC,EAAU;IACrD,yBAAyB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACvC,CAAC;AAED,SAAgB,wBAAwB,CAAC,EAAU;IACjD,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,SAAS,CAAC;QACR,IAAI,yBAAyB,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,OAAO,IAAI,CAAC;QACxD,MAAM,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAChD,IAAI,cAAc,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QACtC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC;AACY,QAAA,aAAa,GACxB,IAAA,kCAAiB,GAA0C,CAAC;AACjD,QAAA,cAAc,GACzB,IAAA,kCAAiB,GAAwC,CAAC;AAE5D;;;;;;GAMG;AACI,KAAK,UAAU,kBAAkB,CACtC,IAAyB,EACzB,OAAiB,EACjB,SAAoB;IAEpB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,OAAO,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,IAAI,GAAG,EAAE,CAAC;IACnB,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC,CAAC;IACvD,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAU,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;AAClE,CAAC;AAED;;;;;;;;;;;GAWG;AACI,KAAK,UAAU,2BAA2B,CAC/C,IAAsC,EACtC,QAAgB,EAChB,OAAiB,EACjB,SAAoB;IAEpB,MAAM,eAAe,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IAC3E,OAAO,IAAA,gDAAyB,EAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;AACxE,CAAC;AAEM,KAAK,UAAU,aAAa,CACjC,WAAwB,EACxB,YAAoB;IAEpB,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,2EAA2E;IAC3E,uEAAuE;IACvE,2EAA2E;IAC3E,yEAAyE;IACzE,IAAI,wBAAwB,CAAC,YAAY,CAAC;QAAE,OAAO,KAAK,CAAC;IACzD,MAAM,UAAU,GAAG,MAAM,IAAA,qBAAa,EAAC,YAAY,CAAC,CAAC;IACrD,OAAO,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,UAAU,EAAE,cAAc,IAAI,KAAK,CAAC;AAC9E,CAAC;AAED,oEAAoE;AAC7D,KAAK,UAAU,gBAAgB,CACpC,WAAwB,EACxB,aAAuB;IAEvB,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;QACzC,IAAI,MAAM,aAAa,CAAC,WAAW,EAAE,YAAY,CAAC;YAAE,OAAO,IAAI,CAAC;IAClE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
package/dist/quick-actions.d.ts
CHANGED
|
@@ -7,6 +7,15 @@ export interface QuickActionCategoryInfo {
|
|
|
7
7
|
icon?: string;
|
|
8
8
|
order?: number;
|
|
9
9
|
}
|
|
10
|
+
/**
|
|
11
|
+
* The page a quick action belongs to.
|
|
12
|
+
*
|
|
13
|
+
* Access follows that page — its permission, and the tenant access gate with
|
|
14
|
+
* its `bypassTenantAccessGate` flag — so an action can never offer what its
|
|
15
|
+
* page refuses. The route the client navigates to is derived from it, which is
|
|
16
|
+
* also why the page is a controller class rather than a slug: nothing to keep
|
|
17
|
+
* in sync, and a renamed page cannot leave a stale link behind.
|
|
18
|
+
*/
|
|
10
19
|
export interface QuickActionPageTarget {
|
|
11
20
|
page: ControllerClass;
|
|
12
21
|
}
|
|
@@ -15,10 +24,27 @@ export type QuickActionTarget = (QuickActionPageTarget & {
|
|
|
15
24
|
query?: Record<string, string>;
|
|
16
25
|
}) | (QuickActionPageTarget & {
|
|
17
26
|
type: "openForm";
|
|
27
|
+
/**
|
|
28
|
+
* Which table view to open the creation form of. Required once the page
|
|
29
|
+
* mounts more than one component that can create a row — the action is
|
|
30
|
+
* not served, with a warning, while the choice stays ambiguous. Use
|
|
31
|
+
* `MyPage.content.targetChild("table")` for a nested table view.
|
|
32
|
+
*/
|
|
18
33
|
component?: ComponentTargetInput;
|
|
19
34
|
}) | (QuickActionPageTarget & {
|
|
20
35
|
type: "button";
|
|
36
|
+
/**
|
|
37
|
+
* The `id` of the button to press — a table view's `customButtons[].id`.
|
|
38
|
+
* The action opens what the button opens, and is listed only for a
|
|
39
|
+
* caller the button's own `permission` admits: it declares none of its
|
|
40
|
+
* own, so the two cannot drift apart.
|
|
41
|
+
*/
|
|
21
42
|
button: string;
|
|
43
|
+
/**
|
|
44
|
+
* Which component carries the button. Required once several components
|
|
45
|
+
* of the page declare that button id — the action is not served, with a
|
|
46
|
+
* warning, while the choice stays ambiguous.
|
|
47
|
+
*/
|
|
22
48
|
component?: ComponentTargetInput;
|
|
23
49
|
}) | (QuickActionPageTarget & {
|
|
24
50
|
type: "event";
|
|
@@ -33,6 +59,7 @@ export interface QuickActionInfo {
|
|
|
33
59
|
order?: number;
|
|
34
60
|
target: QuickActionTarget;
|
|
35
61
|
}
|
|
62
|
+
/** @internal */
|
|
36
63
|
export declare namespace internal {
|
|
37
64
|
const RegisterQuickActionCategory: RegisteringProxy<(info: QuickActionCategoryInfo) => void>;
|
|
38
65
|
const RegisterQuickAction: RegisteringProxy<(info: QuickActionInfo) => void>;
|
package/dist/quick-actions.js
CHANGED
|
@@ -4,6 +4,7 @@ exports.internal = void 0;
|
|
|
4
4
|
exports.QuickActionCategory = QuickActionCategory;
|
|
5
5
|
exports.QuickAction = QuickAction;
|
|
6
6
|
const interface_core_1 = require("@antelopejs/interface-core");
|
|
7
|
+
/** @internal */
|
|
7
8
|
var internal;
|
|
8
9
|
(function (internal) {
|
|
9
10
|
internal.RegisterQuickActionCategory = new interface_core_1.RegisteringProxy();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quick-actions.js","sourceRoot":"","sources":["../src/quick-actions.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"quick-actions.js","sourceRoot":"","sources":["../src/quick-actions.ts"],"names":[],"mappings":";;;AAgFA,kDAOC;AAED,kCAOC;AA/FD,+DAA8D;AAqE9D,gBAAgB;AAChB,IAAiB,QAAQ,CAOxB;AAPD,WAAiB,QAAQ;IACV,oCAA2B,GAAG,IAAI,iCAAgB,EAE5D,CAAC;IACS,4BAAmB,GAAG,IAAI,iCAAgB,EAEpD,CAAC;AACN,CAAC,EAPgB,QAAQ,wBAAR,QAAQ,QAOxB;AAED,SAAgB,mBAAmB,CACjC,EAAU,EACV,IAAyC;IAEzC,MAAM,YAAY,GAA4B,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,CAAC;IAC9D,QAAQ,CAAC,2BAA2B,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC5D,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAgB,WAAW,CACzB,EAAU,EACV,IAAiC;IAEjC,MAAM,UAAU,GAAoB,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,CAAC;IACpD,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAClD,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
package/dist/realtime.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ export interface PublishMessageOptions {
|
|
|
3
3
|
payload?: Record<string, unknown>;
|
|
4
4
|
actorId?: string;
|
|
5
5
|
}
|
|
6
|
+
/** One message delivered to a {@link SubscribeMessage} handler. */
|
|
6
7
|
export interface RealtimeMessage {
|
|
7
8
|
topic: string;
|
|
8
9
|
type: string;
|
|
@@ -11,11 +12,39 @@ export interface RealtimeMessage {
|
|
|
11
12
|
ts: number;
|
|
12
13
|
}
|
|
13
14
|
export type RealtimeMessageHandler = (message: RealtimeMessage) => void;
|
|
15
|
+
/** Ends the subscription; calling it again is a no-op. */
|
|
14
16
|
export type UnsubscribeMessage = () => void;
|
|
17
|
+
/**
|
|
18
|
+
* @internal
|
|
19
|
+
*/
|
|
15
20
|
export declare namespace internal {
|
|
16
21
|
const RegisterPageTopic: RegisteringProxy<(id: string, pageId: string, topic: string) => void>;
|
|
17
22
|
const SubscribeMessage: RegisteringProxy<(id: string, topic: string, handler: RealtimeMessageHandler) => void>;
|
|
18
23
|
}
|
|
24
|
+
/**
|
|
25
|
+
* Bind `topic` to the page `pageId`, so the sessions on that page receive what
|
|
26
|
+
* is published on it.
|
|
27
|
+
*
|
|
28
|
+
* The binding belongs to the module that registers it: it is removed when that
|
|
29
|
+
* module is unloaded, and it outlives a reload of the DMS module.
|
|
30
|
+
*/
|
|
19
31
|
export declare const RegisterPageTopic: (pageId: string, topic: string) => void;
|
|
20
32
|
export declare const PublishMessage: (topic: string, type: string, options?: PublishMessageOptions | undefined) => Promise<void>;
|
|
33
|
+
/**
|
|
34
|
+
* Receive every message published on `topic`, whichever instance published it:
|
|
35
|
+
* the subscription rides the same broker as {@link PublishMessage}, so what one
|
|
36
|
+
* instance publishes reaches the subscribers of every other.
|
|
37
|
+
*
|
|
38
|
+
* The read half of the message interface. {@link PublishMessage} alone lets a
|
|
39
|
+
* module feed the DMS's own streams; paired with this, a module can serve
|
|
40
|
+
* realtime channels of its own — its endpoint subscribes here, the DMS carries
|
|
41
|
+
* the messages — instead of bringing a second broker for the same job.
|
|
42
|
+
*
|
|
43
|
+
* Handlers are called on the delivering instance's event loop and must not
|
|
44
|
+
* throw. Delivery is fire-and-forget: there is no replay, a message published
|
|
45
|
+
* while nobody was subscribed is gone.
|
|
46
|
+
*
|
|
47
|
+
* The subscription is removed automatically when the registering module is
|
|
48
|
+
* unloaded.
|
|
49
|
+
*/
|
|
21
50
|
export declare function SubscribeMessage(topic: string, handler: RealtimeMessageHandler): UnsubscribeMessage;
|
package/dist/realtime.js
CHANGED
|
@@ -4,19 +4,49 @@ exports.PublishMessage = exports.RegisterPageTopic = exports.internal = void 0;
|
|
|
4
4
|
exports.SubscribeMessage = SubscribeMessage;
|
|
5
5
|
const node_crypto_1 = require("node:crypto");
|
|
6
6
|
const interface_core_1 = require("@antelopejs/interface-core");
|
|
7
|
+
/**
|
|
8
|
+
* @internal
|
|
9
|
+
*/
|
|
7
10
|
var internal;
|
|
8
11
|
(function (internal) {
|
|
9
12
|
internal.RegisterPageTopic = new interface_core_1.RegisteringProxy();
|
|
10
13
|
internal.SubscribeMessage = new interface_core_1.RegisteringProxy();
|
|
11
14
|
})(internal || (exports.internal = internal = {}));
|
|
15
|
+
// One registration per topic, not per page: the core keys what it replays to a
|
|
16
|
+
// new DMS generation by this id, so an id shared by the topics of one page
|
|
17
|
+
// would bring back only the last of them.
|
|
12
18
|
function pageTopicId(pageId, topic) {
|
|
13
19
|
return JSON.stringify([pageId, topic]);
|
|
14
20
|
}
|
|
21
|
+
/**
|
|
22
|
+
* Bind `topic` to the page `pageId`, so the sessions on that page receive what
|
|
23
|
+
* is published on it.
|
|
24
|
+
*
|
|
25
|
+
* The binding belongs to the module that registers it: it is removed when that
|
|
26
|
+
* module is unloaded, and it outlives a reload of the DMS module.
|
|
27
|
+
*/
|
|
15
28
|
const RegisterPageTopic = (pageId, topic) => {
|
|
16
29
|
internal.RegisterPageTopic.register(pageTopicId(pageId, topic), pageId, topic);
|
|
17
30
|
};
|
|
18
31
|
exports.RegisterPageTopic = RegisterPageTopic;
|
|
19
32
|
exports.PublishMessage = (0, interface_core_1.InterfaceFunction)();
|
|
33
|
+
/**
|
|
34
|
+
* Receive every message published on `topic`, whichever instance published it:
|
|
35
|
+
* the subscription rides the same broker as {@link PublishMessage}, so what one
|
|
36
|
+
* instance publishes reaches the subscribers of every other.
|
|
37
|
+
*
|
|
38
|
+
* The read half of the message interface. {@link PublishMessage} alone lets a
|
|
39
|
+
* module feed the DMS's own streams; paired with this, a module can serve
|
|
40
|
+
* realtime channels of its own — its endpoint subscribes here, the DMS carries
|
|
41
|
+
* the messages — instead of bringing a second broker for the same job.
|
|
42
|
+
*
|
|
43
|
+
* Handlers are called on the delivering instance's event loop and must not
|
|
44
|
+
* throw. Delivery is fire-and-forget: there is no replay, a message published
|
|
45
|
+
* while nobody was subscribed is gone.
|
|
46
|
+
*
|
|
47
|
+
* The subscription is removed automatically when the registering module is
|
|
48
|
+
* unloaded.
|
|
49
|
+
*/
|
|
20
50
|
function SubscribeMessage(topic, handler) {
|
|
21
51
|
const id = (0, node_crypto_1.randomUUID)();
|
|
22
52
|
internal.SubscribeMessage.register(id, topic, handler);
|
package/dist/realtime.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"realtime.js","sourceRoot":"","sources":["../src/realtime.ts"],"names":[],"mappings":";;;AAsFA,4CAOC;AA7FD,6CAAyC;AACzC,+DAGoC;
|
|
1
|
+
{"version":3,"file":"realtime.js","sourceRoot":"","sources":["../src/realtime.ts"],"names":[],"mappings":";;;AAsFA,4CAOC;AA7FD,6CAAyC;AACzC,+DAGoC;AAqBpC;;GAEG;AACH,IAAiB,QAAQ,CAQxB;AARD,WAAiB,QAAQ;IACV,0BAAiB,GAAG,IAAI,iCAAgB,EAElD,CAAC;IAES,yBAAgB,GAAG,IAAI,iCAAgB,EAEjD,CAAC;AACN,CAAC,EARgB,QAAQ,wBAAR,QAAQ,QAQxB;AAED,+EAA+E;AAC/E,2EAA2E;AAC3E,0CAA0C;AAC1C,SAAS,WAAW,CAAC,MAAc,EAAE,KAAa;IAChD,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AACzC,CAAC;AAED;;;;;;GAMG;AACI,MAAM,iBAAiB,GAAG,CAAC,MAAc,EAAE,KAAa,EAAQ,EAAE;IACvE,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,CACjC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,EAC1B,MAAM,EACN,KAAK,CACN,CAAC;AACJ,CAAC,CAAC;AANW,QAAA,iBAAiB,qBAM5B;AAEW,QAAA,cAAc,GACzB,IAAA,kCAAiB,GAMd,CAAC;AAEN;;;;;;;;;;;;;;;;GAgBG;AACH,SAAgB,gBAAgB,CAC9B,KAAa,EACb,OAA+B;IAE/B,MAAM,EAAE,GAAG,IAAA,wBAAU,GAAE,CAAC;IACxB,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IACvD,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AACxD,CAAC"}
|
package/dist/request-tenant.d.ts
CHANGED
|
@@ -1,2 +1,19 @@
|
|
|
1
1
|
import type { RequestContext } from "@antelopejs/interface-api";
|
|
2
|
+
/**
|
|
3
|
+
* Prefer the tenant bound by authenticateRequestPrincipal or the tenant guards.
|
|
4
|
+
* An authentication failure or changed credential makes this accessor throw.
|
|
5
|
+
* Without a bound principal, preserve legacy JWT decoding / DEFAULT_TENANT_ID.
|
|
6
|
+
*
|
|
7
|
+
* The legacy value is only *decoded*: this function does NOT verify the
|
|
8
|
+
* JWT signature. It is safe when the request has already been authenticated
|
|
9
|
+
* upstream (auth decorators such as `@AuthUser`, `@AuthTenantMember`, or the
|
|
10
|
+
* gating performed by `PageController`) — those validators verify the signature
|
|
11
|
+
* before this function runs, so the decoded `tenantId` is authentic.
|
|
12
|
+
*
|
|
13
|
+
* For routes that legitimately accept anonymous traffic (e.g. `@IfAuthUser`),
|
|
14
|
+
* the fallback resolves to `DEFAULT_TENANT_ID` so public layouts can be served.
|
|
15
|
+
*
|
|
16
|
+
* Do NOT introduce new routes that rely on `tenantId` for authorization without
|
|
17
|
+
* upstream auth verification — without signature checks, the claim is forgeable.
|
|
18
|
+
*/
|
|
2
19
|
export declare function getRequestTenantId(ctx: RequestContext): string;
|
package/dist/request-tenant.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getRequestTenantId = getRequestTenantId;
|
|
4
4
|
const jsonwebtoken_1 = require("jsonwebtoken");
|
|
5
|
-
const request_authenticators_1 = require("./auth/request-authenticators");
|
|
5
|
+
const request_authenticators_1 = require("./auth/internal/request-authenticators");
|
|
6
6
|
const constants_1 = require("./constants");
|
|
7
7
|
const BEARER_PREFIX = "Bearer ";
|
|
8
8
|
function extractBearerToken(authHeader) {
|
|
@@ -26,6 +26,23 @@ function readTenantIdFromToken(token) {
|
|
|
26
26
|
}
|
|
27
27
|
return undefined;
|
|
28
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* Prefer the tenant bound by authenticateRequestPrincipal or the tenant guards.
|
|
31
|
+
* An authentication failure or changed credential makes this accessor throw.
|
|
32
|
+
* Without a bound principal, preserve legacy JWT decoding / DEFAULT_TENANT_ID.
|
|
33
|
+
*
|
|
34
|
+
* The legacy value is only *decoded*: this function does NOT verify the
|
|
35
|
+
* JWT signature. It is safe when the request has already been authenticated
|
|
36
|
+
* upstream (auth decorators such as `@AuthUser`, `@AuthTenantMember`, or the
|
|
37
|
+
* gating performed by `PageController`) — those validators verify the signature
|
|
38
|
+
* before this function runs, so the decoded `tenantId` is authentic.
|
|
39
|
+
*
|
|
40
|
+
* For routes that legitimately accept anonymous traffic (e.g. `@IfAuthUser`),
|
|
41
|
+
* the fallback resolves to `DEFAULT_TENANT_ID` so public layouts can be served.
|
|
42
|
+
*
|
|
43
|
+
* Do NOT introduce new routes that rely on `tenantId` for authorization without
|
|
44
|
+
* upstream auth verification — without signature checks, the claim is forgeable.
|
|
45
|
+
*/
|
|
29
46
|
function getRequestTenantId(ctx) {
|
|
30
47
|
const authenticatedTenantId = (0, request_authenticators_1.getAuthenticatedRequestTenantId)(ctx);
|
|
31
48
|
if (authenticatedTenantId)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-tenant.js","sourceRoot":"","sources":["../src/request-tenant.ts"],"names":[],"mappings":";;AAkDA,gDASC;AA1DD,+CAAsC;AACtC,
|
|
1
|
+
{"version":3,"file":"request-tenant.js","sourceRoot":"","sources":["../src/request-tenant.ts"],"names":[],"mappings":";;AAkDA,gDASC;AA1DD,+CAAsC;AACtC,mFAAyF;AACzF,2CAAgD;AAEhD,MAAM,aAAa,GAAG,SAAS,CAAC;AAMhC,SAAS,kBAAkB,CAAC,UAAmB;IAC7C,IAAI,OAAO,UAAU,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IACrD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,aAAa,CAAC;QAAE,OAAO,SAAS,CAAC;IAC5D,OAAO,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAa;IAC1C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAA,qBAAM,EAAC,KAAK,CAAgC,CAAC;QAC7D,IACE,OAAO;YACP,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ;YACpC,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAC3B,CAAC;YACD,OAAO,OAAO,CAAC,QAAQ,CAAC;QAC1B,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,SAAgB,kBAAkB,CAAC,GAAmB;IACpD,MAAM,qBAAqB,GAAG,IAAA,wDAA+B,EAAC,GAAG,CAAC,CAAC;IACnE,IAAI,qBAAqB;QAAE,OAAO,qBAAqB,CAAC;IACxD,MAAM,KAAK,GAAG,kBAAkB,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;IACzE,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,eAAe,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;QACrD,IAAI,eAAe;YAAE,OAAO,eAAe,CAAC;IAC9C,CAAC;IACD,OAAO,6BAAiB,CAAC;AAC3B,CAAC"}
|
package/dist/tenant-access.d.ts
CHANGED
|
@@ -11,15 +11,47 @@ export interface TenantAccessGateInfo {
|
|
|
11
11
|
gate: TenantAccessGateFn;
|
|
12
12
|
order: number;
|
|
13
13
|
}
|
|
14
|
+
/**
|
|
15
|
+
* @internal
|
|
16
|
+
*/
|
|
14
17
|
export declare namespace internal {
|
|
15
18
|
const RegisterTenantAccessGate: RegisteringProxy<(info: TenantAccessGateInfo) => void>;
|
|
16
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* Register a tenant access gate: a tenant-level, binary access check applied
|
|
22
|
+
* at every tenant authorization surface (permission guards, tenant member /
|
|
23
|
+
* owner guards, table-view data routes, page and menu visibility, realtime
|
|
24
|
+
* page access). Use it to deny a tenant access to the product entirely, e.g.
|
|
25
|
+
* when its subscription is suspended.
|
|
26
|
+
*
|
|
27
|
+
* This is deliberately NOT part of the permissions pipeline: gates also block
|
|
28
|
+
* surfaces that permissions cannot express (defaultGranted permissions,
|
|
29
|
+
* membership-only guards). For granular permission shaping, use
|
|
30
|
+
* `RegisterPermissionsResolver` from `dms/permissions-resolver`.
|
|
31
|
+
*
|
|
32
|
+
* Semantics:
|
|
33
|
+
* - Gates run in ascending `order` (ties in registration order); the first
|
|
34
|
+
* denial wins and its `code` is returned to the client as the 403 body.
|
|
35
|
+
* - A gate that throws fails the request (fail-closed).
|
|
36
|
+
* - The registration is automatically removed when the registering module is
|
|
37
|
+
* unloaded.
|
|
38
|
+
* - Call during your module's `construct()` so the gate is active before the
|
|
39
|
+
* API starts serving requests.
|
|
40
|
+
*
|
|
41
|
+
* Routes that must stay reachable for a denied tenant (billing, recovery)
|
|
42
|
+
* opt out explicitly with the `bypassTenantAccessGate` option of
|
|
43
|
+
* `AuthTenantMember` / `AuthTenantOwner`, or of `TableViewOptions` for
|
|
44
|
+
* table-view data routes.
|
|
45
|
+
*/
|
|
17
46
|
export declare function RegisterTenantAccessGate(info: TenantAccessGateInfo): void;
|
|
47
|
+
/**
|
|
48
|
+
* Run the registered gates for the given user and tenant. Returns the first
|
|
49
|
+
* denial, or `{ allowed: true }` when every gate passes. `userId` is
|
|
50
|
+
* undefined for unauthenticated requests.
|
|
51
|
+
*/
|
|
18
52
|
export declare const CheckTenantAccess: (userId: string | undefined, tenantId: string) => Promise<TenantAccessResult>;
|
|
53
|
+
/**
|
|
54
|
+
* Assert that the tenant is accessible; throws a 403 whose body is the
|
|
55
|
+
* denying gate's `code` (a machine-readable i18n key) otherwise.
|
|
56
|
+
*/
|
|
19
57
|
export declare function AssertTenantAccess(userId: string | undefined, tenantId: string): Promise<void>;
|
|
20
|
-
export interface GatedSurface {
|
|
21
|
-
bypassTenantAccessGate?: boolean;
|
|
22
|
-
publicAccess?: boolean;
|
|
23
|
-
authOnly?: boolean;
|
|
24
|
-
}
|
|
25
|
-
export declare function gateAllowsSurface(surface: GatedSurface, gateDenied: boolean): boolean;
|