@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
|
@@ -1,9 +1,23 @@
|
|
|
1
1
|
import type { Component } from "../component";
|
|
2
|
+
/**
|
|
3
|
+
* How a position is authorized.
|
|
4
|
+
*
|
|
5
|
+
* - `own`: its id is registered in the grantable tree and mapped back from the
|
|
6
|
+
* component, and the position is served only once granted. Every root and
|
|
7
|
+
* synchronously declared child has its own permission.
|
|
8
|
+
* - `withheld`: never served. The id belongs to something else, so no answer
|
|
9
|
+
* about it can be trusted.
|
|
10
|
+
*/
|
|
2
11
|
export type ComponentAccess = "own" | "withheld";
|
|
12
|
+
/**
|
|
13
|
+
* One component of a page, at the position it occupies in the component tree.
|
|
14
|
+
* A page's own component is the root; every `.child()` below it is a node of
|
|
15
|
+
* its own, keyed by the dot-separated path of ids leading to it.
|
|
16
|
+
*/
|
|
3
17
|
export interface ComponentTreeNode {
|
|
4
18
|
component: Component;
|
|
5
19
|
permissionId: string;
|
|
20
|
+
/** 0 for the component the page declares, 1 for its children, and so on. */
|
|
6
21
|
depth: number;
|
|
7
22
|
access: ComponentAccess;
|
|
8
23
|
}
|
|
9
|
-
export declare function collectComponentTree(root: Component, rootPermissionId: string): ComponentTreeNode[];
|
|
@@ -1,43 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.collectComponentTree = collectComponentTree;
|
|
4
|
-
const logging_1 = require("@antelopejs/interface-core/logging");
|
|
5
|
-
const component_target_1 = require("./component-target");
|
|
6
|
-
function childAccess(parent, childId) {
|
|
7
|
-
if (parent.actions[childId])
|
|
8
|
-
return "withheld";
|
|
9
|
-
return "own";
|
|
10
|
-
}
|
|
11
|
-
function collectComponentTree(root, rootPermissionId) {
|
|
12
|
-
const nodes = [];
|
|
13
|
-
const ancestors = new Set();
|
|
14
|
-
const walk = (node) => {
|
|
15
|
-
if (ancestors.has(node.component)) {
|
|
16
|
-
logging_1.Logging.Warn(`[dms] component "${node.permissionId}" nests itself; the cycle is not walked further.`);
|
|
17
|
-
return;
|
|
18
|
-
}
|
|
19
|
-
nodes.push(node);
|
|
20
|
-
if (node.access === "withheld") {
|
|
21
|
-
logging_1.Logging.Error(`[dms] "${node.permissionId}" is claimed by both an action and a child of the same name; the child and everything below it is withheld. Rename one of them.`);
|
|
22
|
-
return;
|
|
23
|
-
}
|
|
24
|
-
ancestors.add(node.component);
|
|
25
|
-
for (const child of (0, component_target_1.getDeclaredComponentChildren)(node.component)) {
|
|
26
|
-
walk({
|
|
27
|
-
component: child.component,
|
|
28
|
-
permissionId: `${node.permissionId}.${child.id}`,
|
|
29
|
-
depth: node.depth + 1,
|
|
30
|
-
access: childAccess(node.component, child.id),
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
ancestors.delete(node.component);
|
|
34
|
-
};
|
|
35
|
-
walk({
|
|
36
|
-
component: root,
|
|
37
|
-
permissionId: rootPermissionId,
|
|
38
|
-
depth: 0,
|
|
39
|
-
access: "own",
|
|
40
|
-
});
|
|
41
|
-
return nodes;
|
|
42
|
-
}
|
|
43
3
|
//# sourceMappingURL=component-tree.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component-tree.js","sourceRoot":"","sources":["../../src/page/component-tree.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"component-tree.js","sourceRoot":"","sources":["../../src/page/component-tree.ts"],"names":[],"mappings":""}
|
|
@@ -2,6 +2,48 @@ import { type ControllerClass } from "@antelopejs/interface-api";
|
|
|
2
2
|
import { type ComponentInfo } from "../component";
|
|
3
3
|
import type { CategoryInfo, DynamicMenuResolver, MenuOptions } from "./types";
|
|
4
4
|
export declare const RegisterPage: () => import("@antelopejs/interface-core/decorators").ClassDecorator<import("@antelopejs/interface-core/decorators").Class<any, any[]>>;
|
|
5
|
+
/**
|
|
6
|
+
* Inject components into a page owned by another module. The decorated class is
|
|
7
|
+
* not a page: every static component field on it becomes a component of the
|
|
8
|
+
* target page, keyed by its field name, and therefore permissioned as
|
|
9
|
+
* `<target page id>.<field name>` in that page's own permission tree — exactly
|
|
10
|
+
* like a component the page declares itself.
|
|
11
|
+
*
|
|
12
|
+
* The target is named by its page id, never imported: an extending module
|
|
13
|
+
* depends on `@antelopejs/interface-dms` alone, and stays out of the target
|
|
14
|
+
* module's registrations. A page id is the dotted path of its categories
|
|
15
|
+
* followed by its own id — it is also the page's permission id, the one listed
|
|
16
|
+
* in the roles screen and returned by `GetPermissionId(ThePageClass)` inside
|
|
17
|
+
* the owning module. The DMS members page, for instance, is
|
|
18
|
+
* `settings.workspace.members`.
|
|
19
|
+
*
|
|
20
|
+
* Placement is declared on each component with `.before(anchor)` /
|
|
21
|
+
* `.after(anchor)`, where an anchor is a static field name of the target page
|
|
22
|
+
* (`"table"`) or the dotted path to a nested position (`"content.tasks"`).
|
|
23
|
+
* Without one, the component is appended after the page's own components. When
|
|
24
|
+
* several components land at the same spot, `.order(n)` decides, and equal
|
|
25
|
+
* orders fall back to the extension class name then to declaration order —
|
|
26
|
+
* never to module start order.
|
|
27
|
+
*
|
|
28
|
+
* The injection applies as soon as the target page has finished registering —
|
|
29
|
+
* it is held until then whichever module starts first, and stays held, with a
|
|
30
|
+
* warning once the project has started, for a page id no module registers — and
|
|
31
|
+
* is removed when the extending module stops. Anchors and field names are
|
|
32
|
+
* checked against the target page when the injection applies: a field name the
|
|
33
|
+
* page or another extension already uses, or an anchor the page does not
|
|
34
|
+
* declare, is reported and the extension is skipped.
|
|
35
|
+
*
|
|
36
|
+
* ```ts
|
|
37
|
+
* @RegisterPageExtension("settings.workspace.members")
|
|
38
|
+
* export class SeatQuotaExtension {
|
|
39
|
+
* static seatQuota = CustomComponent("SeatQuotaBanner")
|
|
40
|
+
* .meta({ name: "Seat quota" })
|
|
41
|
+
* .before("table");
|
|
42
|
+
* }
|
|
43
|
+
* ```
|
|
44
|
+
*
|
|
45
|
+
* @param targetPageId Full id of the page to extend.
|
|
46
|
+
*/
|
|
5
47
|
export declare const RegisterPageExtension: (targetPageId: string) => import("@antelopejs/interface-core/decorators").ClassDecorator<import("@antelopejs/interface-core/decorators").Class<any, any[]>>;
|
|
6
48
|
export declare function Category(id: string, options: MenuOptions): CategoryInfo;
|
|
7
49
|
export declare function PageController(id: string, options: MenuOptions, layout?: ComponentInfo): {
|
|
@@ -16,11 +58,76 @@ export declare function RootPageController(id: string, options: Omit<MenuOptions
|
|
|
16
58
|
extend: <T extends ControllerClass>(this: T, location: string) => T;
|
|
17
59
|
location: string;
|
|
18
60
|
};
|
|
61
|
+
/**
|
|
62
|
+
* Register a resolver contributing per-request entries under an existing
|
|
63
|
+
* category. The resolver runs during `/sitelayout`, and its entries are grafted
|
|
64
|
+
* onto that request's tree copy only — the global navigation tree is never
|
|
65
|
+
* touched, so one tenant's entries can never reach another's site layout.
|
|
66
|
+
*
|
|
67
|
+
* Dynamic and static children of the category sort together by `order`, then
|
|
68
|
+
* by display name and id — so entries that share a rank keep the same order on
|
|
69
|
+
* every host and across restarts.
|
|
70
|
+
*
|
|
71
|
+
* Entries link to an already registered page, so a single page (typically with
|
|
72
|
+
* `validation.requiredQueryParams`) serves them all. An entry's `permissionId`
|
|
73
|
+
* decides whether it is **listed**, nothing more: the target page receives the
|
|
74
|
+
* entry's `query` like any other caller-supplied input and must authorize the
|
|
75
|
+
* value itself. The menu is a convenience, never a boundary.
|
|
76
|
+
*
|
|
77
|
+
* Providers run concurrently, and one that throws — or does not answer within
|
|
78
|
+
* two seconds — contributes nothing to that request and is reported once: the
|
|
79
|
+
* rest of the menu still resolves, and its entries come back when it does.
|
|
80
|
+
* Call `NotifyMenuChanged()` when the underlying data changes.
|
|
81
|
+
*
|
|
82
|
+
* The registration is bound to the **registering** module, not to the category
|
|
83
|
+
* it targets: a provider whose category is not (or no longer) registered lies
|
|
84
|
+
* dormant and resolves again as soon as the category appears, so module start
|
|
85
|
+
* order and hot reloads need no coordination.
|
|
86
|
+
*
|
|
87
|
+
* @param categoryFullId Dot-separated `fullId` of the parent category.
|
|
88
|
+
* @param resolver Called once per site-layout request.
|
|
89
|
+
* @returns Removes this provider, for the rare case a module drops it while
|
|
90
|
+
* staying loaded.
|
|
91
|
+
*/
|
|
19
92
|
export declare function RegisterDynamicMenuProvider(categoryFullId: string, resolver: DynamicMenuResolver): () => void;
|
|
93
|
+
/**
|
|
94
|
+
* Signal that the navigation menu's underlying data changed (e.g. a project was
|
|
95
|
+
* created or deleted), so connected clients resync their site layout.
|
|
96
|
+
*
|
|
97
|
+
* The signal carries no data: it is an invalidation, and each client re-fetches
|
|
98
|
+
* its own `/sitelayout`, which is resolved against its own permissions.
|
|
99
|
+
*
|
|
100
|
+
* Pass the `tenantId` whose data changed so only that tenant's sessions
|
|
101
|
+
* re-fetch; omitting it invalidates the menu for every connected session, which
|
|
102
|
+
* is meant for changes that are not tenant-scoped.
|
|
103
|
+
*/
|
|
20
104
|
export declare const NotifyMenuChanged: (tenantId?: string | undefined) => Promise<void>;
|
|
105
|
+
/**
|
|
106
|
+
* Create a new top-level category at the root of the sidebar, alongside the
|
|
107
|
+
* built-in Pages / Modules / Settings groups. Use this to register your own
|
|
108
|
+
* top-level navigation group with its own label, icon and order. Pages and
|
|
109
|
+
* nested categories can then target it via `category`.
|
|
110
|
+
*
|
|
111
|
+
* Defaults `type` to `"label"` so the category renders as a section heading.
|
|
112
|
+
*/
|
|
21
113
|
export declare function RootCategory(id: string, options: Omit<MenuOptions, "category" | "module">): CategoryInfo;
|
|
114
|
+
/**
|
|
115
|
+
* The renderer a frontend module is written for. The DMS keys its frontend
|
|
116
|
+
* registry on it, and serves a renderer only the modules registered for its
|
|
117
|
+
* name and the major of its version.
|
|
118
|
+
*
|
|
119
|
+
* It names a framework, not a loader release: `{ name: "vue", version: "3" }`
|
|
120
|
+
* is Vue 3, whichever `@antelopejs/dms-frontend` release loads it. The loader
|
|
121
|
+
* releases a module runs on are declared by the module itself, in the
|
|
122
|
+
* package.json of its `sourcePath`, under `engines` keyed by the loader package
|
|
123
|
+
* (`"@antelopejs/dms-frontend": ">=0.4.0 <0.5.0"`). The loader reads that file,
|
|
124
|
+
* with or without a backend, and refuses a module whose range excludes it; the
|
|
125
|
+
* DMS passes the directory through without reading it.
|
|
126
|
+
*/
|
|
22
127
|
export interface FrontendRendererMetadata {
|
|
128
|
+
/** Framework the module targets, such as `vue`. */
|
|
23
129
|
name: string;
|
|
130
|
+
/** Version of that framework, compared by major only, such as `3`. */
|
|
24
131
|
version: string;
|
|
25
132
|
}
|
|
26
133
|
export type FrontendModuleValue = string | number | boolean | null | FrontendModuleValue[] | FrontendModuleOptions;
|
|
@@ -35,6 +142,26 @@ export interface AddFrontendModuleOptions {
|
|
|
35
142
|
privateOptions?: FrontendModuleOptions;
|
|
36
143
|
priority?: number;
|
|
37
144
|
configKey?: string;
|
|
145
|
+
/**
|
|
146
|
+
* Absolute backend API paths (`/api/...`) the frontend server may open a
|
|
147
|
+
* session from on behalf of this module.
|
|
148
|
+
*
|
|
149
|
+
* A module whose own flow ends on an authenticated user — a self-service
|
|
150
|
+
* registration completing, an invitation being redeemed — names here the
|
|
151
|
+
* backend route that mints the token pair. The frontend server then accepts
|
|
152
|
+
* that path on its `/auth/establish` route and seals its session cookie from
|
|
153
|
+
* the tokens it fetched itself, so the browser never carries one.
|
|
154
|
+
*
|
|
155
|
+
* Declaring a path is what makes it a session-opening route: any backend
|
|
156
|
+
* endpoint left out stays refused, and the operator can still widen the list
|
|
157
|
+
* per deployment through the frontend server's
|
|
158
|
+
* `DMS_AUTH_ESTABLISH_ENDPOINTS`. The DMS's own login, signup and 2FA routes
|
|
159
|
+
* are wired into the frontend server directly and need no declaration.
|
|
160
|
+
*
|
|
161
|
+
* Each entry must be an absolute path under `/api/`, with no query string
|
|
162
|
+
* and no segment that climbs out of it; anything else is rejected at
|
|
163
|
+
* registration.
|
|
164
|
+
*/
|
|
38
165
|
authEstablishEndpoints?: string[];
|
|
39
166
|
}
|
|
40
167
|
export declare const AddFrontendModule: (config: AddFrontendModuleOptions) => Promise<void>;
|
|
@@ -44,6 +171,14 @@ export interface FrontendModuleMetadata {
|
|
|
44
171
|
renderer: FrontendRendererMetadata;
|
|
45
172
|
priority: number;
|
|
46
173
|
options: FrontendModuleOptions;
|
|
174
|
+
/**
|
|
175
|
+
* Absolute backend API paths (`/api/...`) the frontend server may open a
|
|
176
|
+
* session from on behalf of this module, as declared by
|
|
177
|
+
* {@link AddFrontendModuleOptions.authEstablishEndpoints}. Empty when the
|
|
178
|
+
* module declared none, absent when the DMS serving this metadata predates
|
|
179
|
+
* the field.
|
|
180
|
+
*/
|
|
47
181
|
authEstablishEndpoints?: string[];
|
|
48
182
|
}
|
|
183
|
+
/** Returns registered frontend source metadata for server-side module discovery, excluding private options. */
|
|
49
184
|
export declare const GetFrontendModules: () => Promise<FrontendModuleMetadata[]>;
|
package/dist/page/controllers.js
CHANGED
|
@@ -11,13 +11,26 @@ const interface_core_1 = require("@antelopejs/interface-core");
|
|
|
11
11
|
const decorators_1 = require("@antelopejs/interface-core/decorators");
|
|
12
12
|
const logging_1 = require("@antelopejs/interface-core/logging");
|
|
13
13
|
const component_1 = require("../component");
|
|
14
|
-
const categories_1 = require("./categories");
|
|
14
|
+
const categories_1 = require("./internal/categories");
|
|
15
|
+
const categories_2 = require("./categories");
|
|
15
16
|
const metadata_1 = require("./metadata");
|
|
17
|
+
const fire_and_forget_1 = require("../utils/fire-and-forget");
|
|
18
|
+
/**
|
|
19
|
+
* Static component fields of a class, in declaration order. Underscore-prefixed
|
|
20
|
+
* fields are skipped, so a class can keep private static state.
|
|
21
|
+
*/
|
|
22
|
+
// `object` is the contract: this walks a decorated class whose static
|
|
23
|
+
// fields are only known at run time, which is the whole point of the
|
|
24
|
+
// decorator. A narrower type would only push an assertion here.
|
|
25
|
+
// oxlint-disable-next-line anti-slop/no-object-parameters
|
|
16
26
|
function collectStaticComponents(cl) {
|
|
17
27
|
const fields = [];
|
|
18
28
|
for (const key of Object.getOwnPropertyNames(cl)) {
|
|
19
29
|
if (key.startsWith("_"))
|
|
20
30
|
continue;
|
|
31
|
+
// Reading a static field whose name is only known at run time is the
|
|
32
|
+
// whole job here; the alternative is an assertion to a dictionary.
|
|
33
|
+
// oxlint-disable-next-line anti-slop/no-reflect-get
|
|
21
34
|
const value = Reflect.get(cl, key);
|
|
22
35
|
if (value instanceof component_1.Component) {
|
|
23
36
|
fields.push({ key, component: value });
|
|
@@ -30,11 +43,18 @@ exports.RegisterPage = (0, decorators_1.MakeClassDecorator)((cl) => {
|
|
|
30
43
|
for (const { key, component } of collectStaticComponents(cl)) {
|
|
31
44
|
meta.SetComponent(key, component);
|
|
32
45
|
}
|
|
33
|
-
|
|
46
|
+
(0, fire_and_forget_1.fireAndForget)(meta.Register(), "page registration");
|
|
34
47
|
});
|
|
35
|
-
function buildExtensionComponents(
|
|
48
|
+
function buildExtensionComponents(
|
|
49
|
+
// `object` is the contract: this walks a decorated class whose static
|
|
50
|
+
// fields are only known at run time, which is the whole point of the
|
|
51
|
+
// decorator. A narrower type would only push an assertion here.
|
|
52
|
+
// oxlint-disable-next-line anti-slop/no-object-parameters
|
|
53
|
+
extensionClass) {
|
|
36
54
|
return collectStaticComponents(extensionClass).map(({ key, component }) => {
|
|
37
55
|
const placement = component.placement ?? component_1.DEFAULT_PLACEMENT;
|
|
56
|
+
// `anchorPath` is set only when the placement names an anchor: its absence
|
|
57
|
+
// is what extension-assembly reads as "append at the end".
|
|
38
58
|
const entry = {
|
|
39
59
|
key,
|
|
40
60
|
component,
|
|
@@ -47,10 +67,52 @@ function buildExtensionComponents(extensionClass) {
|
|
|
47
67
|
return entry;
|
|
48
68
|
});
|
|
49
69
|
}
|
|
70
|
+
/**
|
|
71
|
+
* Inject components into a page owned by another module. The decorated class is
|
|
72
|
+
* not a page: every static component field on it becomes a component of the
|
|
73
|
+
* target page, keyed by its field name, and therefore permissioned as
|
|
74
|
+
* `<target page id>.<field name>` in that page's own permission tree — exactly
|
|
75
|
+
* like a component the page declares itself.
|
|
76
|
+
*
|
|
77
|
+
* The target is named by its page id, never imported: an extending module
|
|
78
|
+
* depends on `@antelopejs/interface-dms` alone, and stays out of the target
|
|
79
|
+
* module's registrations. A page id is the dotted path of its categories
|
|
80
|
+
* followed by its own id — it is also the page's permission id, the one listed
|
|
81
|
+
* in the roles screen and returned by `GetPermissionId(ThePageClass)` inside
|
|
82
|
+
* the owning module. The DMS members page, for instance, is
|
|
83
|
+
* `settings.workspace.members`.
|
|
84
|
+
*
|
|
85
|
+
* Placement is declared on each component with `.before(anchor)` /
|
|
86
|
+
* `.after(anchor)`, where an anchor is a static field name of the target page
|
|
87
|
+
* (`"table"`) or the dotted path to a nested position (`"content.tasks"`).
|
|
88
|
+
* Without one, the component is appended after the page's own components. When
|
|
89
|
+
* several components land at the same spot, `.order(n)` decides, and equal
|
|
90
|
+
* orders fall back to the extension class name then to declaration order —
|
|
91
|
+
* never to module start order.
|
|
92
|
+
*
|
|
93
|
+
* The injection applies as soon as the target page has finished registering —
|
|
94
|
+
* it is held until then whichever module starts first, and stays held, with a
|
|
95
|
+
* warning once the project has started, for a page id no module registers — and
|
|
96
|
+
* is removed when the extending module stops. Anchors and field names are
|
|
97
|
+
* checked against the target page when the injection applies: a field name the
|
|
98
|
+
* page or another extension already uses, or an anchor the page does not
|
|
99
|
+
* declare, is reported and the extension is skipped.
|
|
100
|
+
*
|
|
101
|
+
* ```ts
|
|
102
|
+
* @RegisterPageExtension("settings.workspace.members")
|
|
103
|
+
* export class SeatQuotaExtension {
|
|
104
|
+
* static seatQuota = CustomComponent("SeatQuotaBanner")
|
|
105
|
+
* .meta({ name: "Seat quota" })
|
|
106
|
+
* .before("table");
|
|
107
|
+
* }
|
|
108
|
+
* ```
|
|
109
|
+
*
|
|
110
|
+
* @param targetPageId Full id of the page to extend.
|
|
111
|
+
*/
|
|
50
112
|
exports.RegisterPageExtension = (0, decorators_1.MakeClassDecorator)((cl, targetPageId) => {
|
|
51
113
|
const extensionName = cl.name || "anonymous page extension";
|
|
52
114
|
if (!targetPageId.trim()) {
|
|
53
|
-
throw new Error(`Page extension "${extensionName}" must name the page it extends by its full id, for example "settings.
|
|
115
|
+
throw new Error(`Page extension "${extensionName}" must name the page it extends by its full id, for example "settings.workspace.members".`);
|
|
54
116
|
}
|
|
55
117
|
const components = buildExtensionComponents(cl);
|
|
56
118
|
if (components.length === 0) {
|
|
@@ -62,7 +124,7 @@ exports.RegisterPageExtension = (0, decorators_1.MakeClassDecorator)((cl, target
|
|
|
62
124
|
targetFullId: targetPageId,
|
|
63
125
|
components,
|
|
64
126
|
};
|
|
65
|
-
|
|
127
|
+
categories_2.internal.RegisterPageExtension.register(info);
|
|
66
128
|
});
|
|
67
129
|
function assertHasCategoryOrModule(id, options, kind) {
|
|
68
130
|
if (!options.category && !options.module) {
|
|
@@ -93,22 +155,76 @@ function RootPageController(id, options, layout) {
|
|
|
93
155
|
meta.SetInfo(id, fullSlug, options, layout);
|
|
94
156
|
return cl;
|
|
95
157
|
}
|
|
158
|
+
/**
|
|
159
|
+
* Register a resolver contributing per-request entries under an existing
|
|
160
|
+
* category. The resolver runs during `/sitelayout`, and its entries are grafted
|
|
161
|
+
* onto that request's tree copy only — the global navigation tree is never
|
|
162
|
+
* touched, so one tenant's entries can never reach another's site layout.
|
|
163
|
+
*
|
|
164
|
+
* Dynamic and static children of the category sort together by `order`, then
|
|
165
|
+
* by display name and id — so entries that share a rank keep the same order on
|
|
166
|
+
* every host and across restarts.
|
|
167
|
+
*
|
|
168
|
+
* Entries link to an already registered page, so a single page (typically with
|
|
169
|
+
* `validation.requiredQueryParams`) serves them all. An entry's `permissionId`
|
|
170
|
+
* decides whether it is **listed**, nothing more: the target page receives the
|
|
171
|
+
* entry's `query` like any other caller-supplied input and must authorize the
|
|
172
|
+
* value itself. The menu is a convenience, never a boundary.
|
|
173
|
+
*
|
|
174
|
+
* Providers run concurrently, and one that throws — or does not answer within
|
|
175
|
+
* two seconds — contributes nothing to that request and is reported once: the
|
|
176
|
+
* rest of the menu still resolves, and its entries come back when it does.
|
|
177
|
+
* Call `NotifyMenuChanged()` when the underlying data changes.
|
|
178
|
+
*
|
|
179
|
+
* The registration is bound to the **registering** module, not to the category
|
|
180
|
+
* it targets: a provider whose category is not (or no longer) registered lies
|
|
181
|
+
* dormant and resolves again as soon as the category appears, so module start
|
|
182
|
+
* order and hot reloads need no coordination.
|
|
183
|
+
*
|
|
184
|
+
* @param categoryFullId Dot-separated `fullId` of the parent category.
|
|
185
|
+
* @param resolver Called once per site-layout request.
|
|
186
|
+
* @returns Removes this provider, for the rare case a module drops it while
|
|
187
|
+
* staying loaded.
|
|
188
|
+
*/
|
|
96
189
|
function RegisterDynamicMenuProvider(categoryFullId, resolver) {
|
|
97
190
|
const info = { categoryFullId, resolver };
|
|
98
|
-
|
|
99
|
-
return () =>
|
|
191
|
+
categories_2.internal.RegisterDynamicMenuProvider.register(info);
|
|
192
|
+
return () => categories_2.internal.RegisterDynamicMenuProvider.unregister(info);
|
|
100
193
|
}
|
|
194
|
+
/**
|
|
195
|
+
* Signal that the navigation menu's underlying data changed (e.g. a project was
|
|
196
|
+
* created or deleted), so connected clients resync their site layout.
|
|
197
|
+
*
|
|
198
|
+
* The signal carries no data: it is an invalidation, and each client re-fetches
|
|
199
|
+
* its own `/sitelayout`, which is resolved against its own permissions.
|
|
200
|
+
*
|
|
201
|
+
* Pass the `tenantId` whose data changed so only that tenant's sessions
|
|
202
|
+
* re-fetch; omitting it invalidates the menu for every connected session, which
|
|
203
|
+
* is meant for changes that are not tenant-scoped.
|
|
204
|
+
*/
|
|
101
205
|
exports.NotifyMenuChanged = (0, interface_core_1.InterfaceFunction)();
|
|
102
206
|
const RESERVED_ROOT_CATEGORY_IDS = new Set(["pages", "modules", "settings"]);
|
|
207
|
+
/**
|
|
208
|
+
* Create a new top-level category at the root of the sidebar, alongside the
|
|
209
|
+
* built-in Pages / Modules / Settings groups. Use this to register your own
|
|
210
|
+
* top-level navigation group with its own label, icon and order. Pages and
|
|
211
|
+
* nested categories can then target it via `category`.
|
|
212
|
+
*
|
|
213
|
+
* Defaults `type` to `"label"` so the category renders as a section heading.
|
|
214
|
+
*/
|
|
103
215
|
function RootCategory(id, options) {
|
|
104
216
|
if (RESERVED_ROOT_CATEGORY_IDS.has(id)) {
|
|
105
217
|
throw new Error(`RootCategory id "${id}" is reserved by the built-in Pages/Modules/Settings groups. Choose a different id.`);
|
|
106
218
|
}
|
|
107
|
-
|
|
219
|
+
// Spread options first so an explicitly-passed type wins, then default an
|
|
220
|
+
// omitted type to "label". Spreading after the default would let an explicit
|
|
221
|
+
// `type: undefined` clobber it.
|
|
222
|
+
return (0, categories_1.RootCategory)(id, {
|
|
108
223
|
...options,
|
|
109
224
|
type: options.type ?? "label",
|
|
110
225
|
});
|
|
111
226
|
}
|
|
112
227
|
exports.AddFrontendModule = (0, interface_core_1.InterfaceFunction)();
|
|
228
|
+
/** Returns registered frontend source metadata for server-side module discovery, excluding private options. */
|
|
113
229
|
exports.GetFrontendModules = (0, interface_core_1.InterfaceFunction)();
|
|
114
230
|
//# sourceMappingURL=controllers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controllers.js","sourceRoot":"","sources":["../../src/page/controllers.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"controllers.js","sourceRoot":"","sources":["../../src/page/controllers.ts"],"names":[],"mappings":";;;AAyKA,4BAGC;AAED,wCAiBC;AAED,gDAcC;AAiCD,kEAOC;AA0BD,oCAgBC;AAjSD,6DAA6E;AAC7E,+DAA4E;AAC5E,sEAA2E;AAC3E,gEAA6D;AAC7D,4CAAgF;AAChF,sDAO+B;AAC/B,6CAAwC;AACxC,yCAA0C;AAS1C,8DAAyD;AAOzD;;;GAGG;AACH,sEAAsE;AACtE,qEAAqE;AACrE,gEAAgE;AAChE,0DAA0D;AAC1D,SAAS,uBAAuB,CAAC,EAAU;IACzC,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,mBAAmB,CAAC,EAAE,CAAC,EAAE,CAAC;QACjD,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QAElC,qEAAqE;QACrE,mEAAmE;QACnE,oDAAoD;QACpD,MAAM,KAAK,GAAY,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QAC5C,IAAI,KAAK,YAAY,qBAAS,EAAE,CAAC;YAC/B,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAEY,QAAA,YAAY,GAAG,IAAA,+BAAkB,EAAC,CAAC,EAAE,EAAE,EAAE;IACpD,MAAM,IAAI,GAAG,IAAA,4BAAW,EAAC,EAAqB,EAAE,uBAAY,CAAC,CAAC;IAE9D,KAAK,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,uBAAuB,CAAC,EAAE,CAAC,EAAE,CAAC;QAC7D,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IACpC,CAAC;IAED,IAAA,+BAAa,EAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,mBAAmB,CAAC,CAAC;AACtD,CAAC,CAAC,CAAC;AAEH,SAAS,wBAAwB;AAC/B,sEAAsE;AACtE,qEAAqE;AACrE,gEAAgE;AAChE,0DAA0D;AAC1D,cAAsB;IAEtB,OAAO,uBAAuB,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE;QACxE,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,IAAI,6BAAiB,CAAC;QAC3D,2EAA2E;QAC3E,2DAA2D;QAC3D,MAAM,KAAK,GAA2B;YACpC,GAAG;YACH,SAAS;YACT,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,KAAK,EAAE,SAAS,CAAC,KAAK;SACvB,CAAC;QACF,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;YACrB,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC;QACtC,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACU,QAAA,qBAAqB,GAAG,IAAA,+BAAkB,EACrD,CAAC,EAAE,EAAE,YAAoB,EAAE,EAAE;IAC3B,MAAM,aAAa,GAChB,EAAsB,CAAC,IAAI,IAAI,0BAA0B,CAAC;IAC7D,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,mBAAmB,aAAa,2FAA2F,CAC5H,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,wBAAwB,CAAC,EAAE,CAAC,CAAC;IAChD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,iBAAO,CAAC,IAAI,CACV,yBAAyB,aAAa,kEAAkE,YAAY,IAAI,CACzH,CAAC;QACF,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAAsB;QAC9B,aAAa;QACb,YAAY,EAAE,YAAY;QAC1B,UAAU;KACX,CAAC;IACF,qBAAQ,CAAC,qBAAqB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAChD,CAAC,CACF,CAAC;AAEF,SAAS,yBAAyB,CAChC,EAAU,EACV,OAAoB,EACpB,IAAyB;IAEzB,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CACb,GAAG,IAAI,KAAK,EAAE,8DAA8D,CAC7E,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAgB,QAAQ,CAAC,EAAU,EAAE,OAAoB;IACvD,yBAAyB,CAAC,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IACnD,OAAO,IAAA,mCAAsB,EAAC,EAAE,EAAE,OAAO,CAAC,CAAC;AAC7C,CAAC;AAED,SAAgB,cAAc,CAC5B,EAAU,EACV,OAAoB,EACpB,MAAsB;IAEtB,yBAAyB,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAC/C,MAAM,eAAe,GAAG,IAAA,kCAAqB,EAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAC3D,MAAM,gBAAgB,GAAG,IAAA,gCAAmB,EAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;IACvE,IAAA,sCAAyB,EAAC,eAAe,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAEpE,MAAM,QAAQ,GAAG,IAAA,8BAAiB,EAAC,EAAE,EAAE,eAAe,CAAC,CAAC;IACxD,MAAM,EAAE,GAAG,KAAM,SAAQ,IAAA,0BAAU,EAAC,QAAQ,CAAC;KAAG,CAAC;IAEjD,MAAM,IAAI,GAAG,IAAA,4BAAW,EAAC,EAAE,EAAE,uBAAY,CAAC,CAAC;IAC3C,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,CAAC,CAAC;IAEpD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAgB,kBAAkB,CAChC,EAAU,EACV,OAEC,EACD,MAAsB;IAEtB,MAAM,QAAQ,GAAG,IAAA,8BAAiB,EAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAChD,MAAM,EAAE,GAAG,KAAM,SAAQ,IAAA,0BAAU,EAAC,QAAQ,CAAC;KAAG,CAAC;IAEjD,MAAM,IAAI,GAAG,IAAA,4BAAW,EAAC,EAAE,EAAE,uBAAY,CAAC,CAAC;IAC3C,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAE5C,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,SAAgB,2BAA2B,CACzC,cAAsB,EACtB,QAA6B;IAE7B,MAAM,IAAI,GAA4B,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC;IACnE,qBAAQ,CAAC,2BAA2B,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACpD,OAAO,GAAG,EAAE,CAAC,qBAAQ,CAAC,2BAA2B,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACrE,CAAC;AAED;;;;;;;;;;GAUG;AACU,QAAA,iBAAiB,GAC5B,IAAA,kCAAiB,GAA+B,CAAC;AAEnD,MAAM,0BAA0B,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;AAE7E;;;;;;;GAOG;AACH,SAAgB,YAAY,CAC1B,EAAU,EACV,OAAiD;IAEjD,IAAI,0BAA0B,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CACb,oBAAoB,EAAE,qFAAqF,CAC5G,CAAC;IACJ,CAAC;IACD,0EAA0E;IAC1E,6EAA6E;IAC7E,gCAAgC;IAChC,OAAO,IAAA,yBAAkB,EAAC,EAAE,EAAE;QAC5B,GAAG,OAAO;QACV,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,OAAO;KAC9B,CAAC,CAAC;AACL,CAAC;AAiEY,QAAA,iBAAiB,GAC5B,IAAA,kCAAiB,GAA8C,CAAC;AAkBlE,+GAA+G;AAClG,QAAA,kBAAkB,GAC7B,IAAA,kCAAiB,GAAkC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A declaration a page cannot honour, such as two components claiming what
|
|
3
|
+
* only one of them may hold. Fatal: rethrown out of the hooks that isolate
|
|
4
|
+
* component errors, so the page fails to register instead of booting with one
|
|
5
|
+
* of the two declarations silently dropped.
|
|
6
|
+
*/
|
|
7
|
+
export declare class PageDeclarationConflictError extends Error {
|
|
8
|
+
constructor(message: string);
|
|
9
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PageDeclarationConflictError = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* A declaration a page cannot honour, such as two components claiming what
|
|
6
|
+
* only one of them may hold. Fatal: rethrown out of the hooks that isolate
|
|
7
|
+
* component errors, so the page fails to register instead of booting with one
|
|
8
|
+
* of the two declarations silently dropped.
|
|
9
|
+
*/
|
|
10
|
+
class PageDeclarationConflictError extends Error {
|
|
11
|
+
constructor(message) {
|
|
12
|
+
super(message);
|
|
13
|
+
this.name = new.target.name;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
exports.PageDeclarationConflictError = PageDeclarationConflictError;
|
|
17
|
+
//# sourceMappingURL=declaration-conflict.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"declaration-conflict.js","sourceRoot":"","sources":["../../src/page/declaration-conflict.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACH,MAAa,4BAA6B,SAAQ,KAAK;IACrD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;IAC9B,CAAC;CACF;AALD,oEAKC"}
|
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import { PageDeclarationConflictError } from "./declaration-conflict";
|
|
2
|
+
/**
|
|
3
|
+
* Two page-mode table views registering the same form sub-page. Fatal: it is a
|
|
4
|
+
* declaration the page cannot honour, not a component that merely fails to
|
|
5
|
+
* contribute.
|
|
6
|
+
*/
|
|
7
|
+
export declare class FormPageRouteConflictError extends PageDeclarationConflictError {
|
|
7
8
|
}
|
|
8
|
-
export declare class FormPageRouteConflictError extends Error {
|
|
9
|
-
constructor(message: string);
|
|
10
|
-
}
|
|
11
|
-
export declare function claimFormPageRoute(claim: FormPageRouteClaim): void;
|
|
@@ -1,37 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
// Page-mode form sub-pages are not declared: the TableView factory registers
|
|
3
|
+
// one set of them per table view, deriving their id and their slug from the
|
|
4
|
+
// page and from the table view's own key. Two table views resolving to the same
|
|
5
|
+
// id or the same slug used to be silent — `publish()` disposes whatever already
|
|
6
|
+
// held the id, and the layout handler map keeps only the last writer for a slug
|
|
7
|
+
// — so a page would boot with one of its two forms quietly gone. Claims are
|
|
8
|
+
// checked here instead, and a collision is fatal.
|
|
2
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
10
|
exports.FormPageRouteConflictError = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
+
const declaration_conflict_1 = require("./declaration-conflict");
|
|
12
|
+
/**
|
|
13
|
+
* Two page-mode table views registering the same form sub-page. Fatal: it is a
|
|
14
|
+
* declaration the page cannot honour, not a component that merely fails to
|
|
15
|
+
* contribute.
|
|
16
|
+
*/
|
|
17
|
+
class FormPageRouteConflictError extends declaration_conflict_1.PageDeclarationConflictError {
|
|
11
18
|
}
|
|
12
19
|
exports.FormPageRouteConflictError = FormPageRouteConflictError;
|
|
13
|
-
const claimsByFullId = new Map();
|
|
14
|
-
const claimsBySlug = new Map();
|
|
15
|
-
function conflict(held, claim, what) {
|
|
16
|
-
throw new FormPageRouteConflictError(`[dms] TableView "${held.owner}" and TableView "${claim.owner}" on page "${claim.pageFullId}" both register their "${claim.kind}" form page ${what}. Give one of them a URL of its own with formContainer.pages.${claim.kind}.urlSlug.`);
|
|
17
|
-
}
|
|
18
|
-
function claimFormPageRoute(claim) {
|
|
19
|
-
const byId = claimsByFullId.get(claim.fullId);
|
|
20
|
-
if (byId &&
|
|
21
|
-
byId.owner !== claim.owner &&
|
|
22
|
-
registry_1.pageMetadataByFullId.has(claim.fullId)) {
|
|
23
|
-
conflict(byId, claim, `under the id "${claim.fullId}"`);
|
|
24
|
-
}
|
|
25
|
-
const bySlug = claimsBySlug.get(claim.fullSlug);
|
|
26
|
-
if (bySlug &&
|
|
27
|
-
bySlug.owner !== claim.owner &&
|
|
28
|
-
registry_1.pageLayoutHandlers.has(claim.fullSlug)) {
|
|
29
|
-
conflict(bySlug, claim, `at "${claim.fullSlug}"`);
|
|
30
|
-
}
|
|
31
|
-
if (byId && byId.fullSlug !== claim.fullSlug) {
|
|
32
|
-
claimsBySlug.delete(byId.fullSlug);
|
|
33
|
-
}
|
|
34
|
-
claimsByFullId.set(claim.fullId, claim);
|
|
35
|
-
claimsBySlug.set(claim.fullSlug, claim);
|
|
36
|
-
}
|
|
37
20
|
//# sourceMappingURL=form-page-routes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-page-routes.js","sourceRoot":"","sources":["../../src/page/form-page-routes.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"form-page-routes.js","sourceRoot":"","sources":["../../src/page/form-page-routes.ts"],"names":[],"mappings":";AAAA,6EAA6E;AAC7E,4EAA4E;AAC5E,gFAAgF;AAChF,gFAAgF;AAChF,gFAAgF;AAChF,4EAA4E;AAC5E,kDAAkD;;;AAElD,iEAAsE;AAEtE;;;;GAIG;AACH,MAAa,0BAA2B,SAAQ,mDAA4B;CAAG;AAA/E,gEAA+E"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { ControllerClass } from "@antelopejs/interface-api";
|
|
2
|
+
import type { ComponentInfo } from "../../component";
|
|
3
|
+
import type { CategoryInfo, MenuOptions, PageExtensionInfo, PageInfo } from "../types";
|
|
4
|
+
/**
|
|
5
|
+
* Resolve a category to CategoryInfo
|
|
6
|
+
* @param category A CategoryInfo object or a ControllerClass
|
|
7
|
+
* @returns The resolved CategoryInfo
|
|
8
|
+
*
|
|
9
|
+
* @internal
|
|
10
|
+
*/
|
|
11
|
+
export declare function resolveCategoryInfo(category: CategoryInfo | ControllerClass | undefined): CategoryInfo | undefined;
|
|
12
|
+
/**
|
|
13
|
+
* The default layout a page or category declared under `category` inherits:
|
|
14
|
+
* the `layout` of the nearest ancestor that declares one.
|
|
15
|
+
*
|
|
16
|
+
* @param category The parent the entry is declared under
|
|
17
|
+
* @returns That layout, or undefined when no ancestor declares one
|
|
18
|
+
*
|
|
19
|
+
* @internal
|
|
20
|
+
*/
|
|
21
|
+
export declare function resolveInheritedLayout(category: CategoryInfo | ControllerClass | undefined): ComponentInfo | undefined;
|
|
22
|
+
/**
|
|
23
|
+
* Calculate the full slug for a page or category
|
|
24
|
+
* @param id The unique identifier
|
|
25
|
+
* @param options Menu options containing urlSlug and category
|
|
26
|
+
* @returns The calculated full slug
|
|
27
|
+
*
|
|
28
|
+
* @internal
|
|
29
|
+
*/
|
|
30
|
+
export declare function calculateFullSlug(id: string, options: MenuOptions | RootCategoryOptions): string;
|
|
31
|
+
/** @internal */
|
|
32
|
+
export declare function validateNotInsideSettings(moduleId: string | undefined, resolved: CategoryInfo | undefined): void;
|
|
33
|
+
/** @internal */
|
|
34
|
+
export declare function createCategoryFunction(id: string, options: RootCategoryOptions): CategoryInfo;
|
|
35
|
+
/** @internal */
|
|
36
|
+
export declare function createCategoryFunction(id: string, options: MenuOptions): CategoryInfo;
|
|
37
|
+
/** @internal */
|
|
38
|
+
export declare function applyModuleResolution(id: string, options: MenuOptions): MenuOptions;
|
|
39
|
+
/** @internal */
|
|
40
|
+
export declare function clearModuleResolution(id: string): void;
|
|
41
|
+
/** @internal */
|
|
42
|
+
export declare function applyPageExtension(info: PageExtensionInfo): void;
|
|
43
|
+
/** @internal */
|
|
44
|
+
export declare function revokePageExtension(info: PageExtensionInfo): void;
|
|
45
|
+
/**
|
|
46
|
+
* Take down the metadata registered for a page.
|
|
47
|
+
*
|
|
48
|
+
* `expected` names the registration being unwound. A hot reload registers
|
|
49
|
+
* the replacement before the old one unregisters, so without it the departing
|
|
50
|
+
* page would tear down the live one's metadata, layout handler and
|
|
51
|
+
* permissions.
|
|
52
|
+
*
|
|
53
|
+
* @internal
|
|
54
|
+
*/
|
|
55
|
+
export declare function clearPageMetadata(fullId: string, expected?: PageInfo): void;
|
|
56
|
+
/** @internal */
|
|
57
|
+
export interface RootCategoryOptions extends Omit<MenuOptions, "category"> {
|
|
58
|
+
category?: CategoryInfo | ControllerClass;
|
|
59
|
+
isModuleRoot?: boolean;
|
|
60
|
+
}
|
|
61
|
+
/** @internal */
|
|
62
|
+
export declare function RootCategory(id: string, options: RootCategoryOptions): CategoryInfo;
|