@antelopejs/interface-dms 0.3.5 → 0.3.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +27 -0
- package/README.md +2 -2
- package/dist/attachments.d.ts +19 -10
- package/dist/attachments.js +15 -0
- package/dist/attachments.js.map +1 -1
- package/dist/auth/db/internal/sessions.model.d.ts +9 -0
- package/dist/auth/db/internal/sessions.model.js +31 -0
- package/dist/auth/db/internal/sessions.model.js.map +1 -0
- package/dist/auth/db/models/sessions.model.d.ts +16 -2
- package/dist/auth/db/models/sessions.model.js +33 -41
- package/dist/auth/db/models/sessions.model.js.map +1 -1
- package/dist/auth/db/models/userExternalIdentities.model.d.ts +11 -0
- package/dist/auth/db/models/userExternalIdentities.model.js +11 -0
- package/dist/auth/db/models/userExternalIdentities.model.js.map +1 -1
- package/dist/auth/db/models/users.model.d.ts +13 -0
- package/dist/auth/db/models/users.model.js +13 -0
- package/dist/auth/db/models/users.model.js.map +1 -1
- package/dist/auth/db/tables/sessions.table.d.ts +6 -1
- package/dist/auth/db/tables/sessions.table.js +0 -4
- package/dist/auth/db/tables/sessions.table.js.map +1 -1
- package/dist/auth/db/tables/userExternalIdentities.table.d.ts +24 -0
- package/dist/auth/db/tables/userExternalIdentities.table.js +13 -0
- package/dist/auth/db/tables/userExternalIdentities.table.js.map +1 -1
- package/dist/auth/db/tables/users.table.d.ts +60 -0
- package/dist/auth/db/tables/users.table.js +32 -0
- package/dist/auth/db/tables/users.table.js.map +1 -1
- package/dist/auth/index.d.ts +114 -10
- package/dist/auth/index.js +110 -17
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/internal/request-authenticators.d.ts +6 -0
- package/dist/auth/internal/request-authenticators.js +82 -0
- package/dist/auth/internal/request-authenticators.js.map +1 -0
- package/dist/auth/internal/request-principal.d.ts +10 -0
- package/dist/auth/internal/request-principal.js +27 -0
- package/dist/auth/internal/request-principal.js.map +1 -0
- package/dist/auth/internal/user-agent.d.ts +10 -0
- package/dist/auth/internal/user-agent.js +3 -0
- package/dist/auth/internal/user-agent.js.map +1 -0
- package/dist/auth/password.d.ts +19 -0
- package/dist/auth/password.js +23 -0
- package/dist/auth/password.js.map +1 -1
- package/dist/auth/request-authenticators.d.ts +4 -3
- package/dist/auth/request-authenticators.js +0 -77
- package/dist/auth/request-authenticators.js.map +1 -1
- package/dist/base/activity-feed.d.ts +210 -0
- package/dist/base/activity-feed.js +104 -0
- package/dist/base/activity-feed.js.map +1 -0
- package/dist/base/banner.d.ts +111 -0
- package/dist/base/banner.js +93 -0
- package/dist/base/banner.js.map +1 -0
- package/dist/base/block-registry/helpers.d.ts +26 -0
- package/dist/base/block-registry/helpers.js +27 -1
- package/dist/base/block-registry/helpers.js.map +1 -1
- package/dist/base/block-registry/internal/describe.d.ts +35 -0
- package/dist/base/block-registry/{describe.js → internal/describe.js} +50 -0
- package/dist/base/block-registry/internal/describe.js.map +1 -0
- package/dist/base/block-registry/internal/ui.d.ts +23 -0
- package/dist/base/block-registry/internal/ui.js +35 -0
- package/dist/base/block-registry/internal/ui.js.map +1 -0
- package/dist/base/block-registry/registry.d.ts +24 -0
- package/dist/base/block-registry/registry.js +30 -1
- package/dist/base/block-registry/registry.js.map +1 -1
- package/dist/base/block-registry/types.d.ts +149 -0
- package/dist/base/block-types.d.ts +22 -2
- package/dist/base/block-types.js +24 -2
- package/dist/base/block-types.js.map +1 -1
- package/dist/base/card.d.ts +100 -0
- package/dist/base/card.js +91 -0
- package/dist/base/card.js.map +1 -0
- package/dist/base/chart-card.d.ts +9 -2
- package/dist/base/chart-card.js +14 -1
- package/dist/base/chart-card.js.map +1 -1
- package/dist/base/chart-schemas.d.ts +127 -115
- package/dist/base/chart-schemas.js +18 -56
- package/dist/base/chart-schemas.js.map +1 -1
- package/dist/base/chart-type.d.ts +15 -0
- package/dist/base/chart-type.js +20 -0
- package/dist/base/chart-type.js.map +1 -0
- package/dist/base/chart.d.ts +31 -22
- package/dist/base/chart.js +27 -54
- package/dist/base/chart.js.map +1 -1
- package/dist/base/confirm-dialog.d.ts +6 -0
- package/dist/base/confirm-dialog.js +18 -0
- package/dist/base/confirm-dialog.js.map +1 -0
- package/dist/base/data-sources.d.ts +38 -0
- package/dist/base/data-sources.js +13 -0
- package/dist/base/data-sources.js.map +1 -1
- package/dist/base/data-types/compare-types.d.ts +0 -2
- package/dist/base/data-types/compare-types.js +18 -13
- package/dist/base/data-types/compare-types.js.map +1 -1
- package/dist/base/data-types/core.d.ts +55 -0
- package/dist/base/data-types/core.js +42 -0
- package/dist/base/data-types/core.js.map +1 -1
- package/dist/base/data-types/default-types.d.ts +241 -62
- package/dist/base/data-types/default-types.js +257 -135
- package/dist/base/data-types/default-types.js.map +1 -1
- package/dist/base/data-types/field-types.d.ts +164 -0
- package/dist/base/data-types/field-types.js +236 -0
- package/dist/base/data-types/field-types.js.map +1 -0
- package/dist/base/data-types/index.d.ts +1 -0
- package/dist/base/data-types/index.js +21 -0
- package/dist/base/data-types/index.js.map +1 -1
- package/dist/base/data-types/internal/compare-types.d.ts +3 -0
- package/dist/base/data-types/internal/compare-types.js +15 -0
- package/dist/base/data-types/internal/compare-types.js.map +1 -0
- package/dist/base/data-types/status-type.d.ts +2 -1
- package/dist/base/data-types/status-type.js +6 -0
- package/dist/base/data-types/status-type.js.map +1 -1
- package/dist/base/display.d.ts +124 -0
- package/dist/base/display.js +95 -0
- package/dist/base/display.js.map +1 -0
- package/dist/base/empty-state.d.ts +106 -0
- package/dist/base/empty-state.js +109 -0
- package/dist/base/empty-state.js.map +1 -0
- package/dist/base/export-jobs.d.ts +39 -1
- package/dist/base/export-jobs.js +12 -3
- package/dist/base/export-jobs.js.map +1 -1
- package/dist/base/form-block-schema.d.ts +345 -28
- package/dist/base/form-block-schema.js +83 -12
- package/dist/base/form-block-schema.js.map +1 -1
- package/dist/base/form-schema.d.ts +137 -22
- package/dist/base/form-schema.js +139 -42
- package/dist/base/form-schema.js.map +1 -1
- package/dist/base/form-types.d.ts +139 -4
- package/dist/base/form-types.js +7 -1
- package/dist/base/form-types.js.map +1 -1
- package/dist/base/form.js +7 -0
- package/dist/base/form.js.map +1 -1
- package/dist/base/grid.d.ts +57 -0
- package/dist/base/grid.js +43 -0
- package/dist/base/grid.js.map +1 -1
- package/dist/base/helpers/file-refs.js +5 -1
- package/dist/base/helpers/file-refs.js.map +1 -1
- package/dist/base/index.d.ts +11 -1
- package/dist/base/index.js +16 -1
- package/dist/base/index.js.map +1 -1
- package/dist/base/internal/button-availability.d.ts +17 -0
- package/dist/base/internal/button-availability.js +31 -0
- package/dist/base/internal/button-availability.js.map +1 -0
- package/dist/base/internal/chart-schemas.d.ts +6 -0
- package/dist/base/internal/chart-schemas.js +70 -0
- package/dist/base/internal/chart-schemas.js.map +1 -0
- package/dist/base/internal/chart.d.ts +22 -0
- package/dist/base/internal/chart.js +37 -0
- package/dist/base/internal/chart.js.map +1 -0
- package/dist/base/internal/confirm-dialog.d.ts +13 -0
- package/dist/base/internal/confirm-dialog.js +24 -0
- package/dist/base/internal/confirm-dialog.js.map +1 -0
- package/dist/base/internal/display.d.ts +13 -0
- package/dist/base/internal/display.js +18 -0
- package/dist/base/internal/display.js.map +1 -0
- package/dist/base/internal/export-jobs.d.ts +2 -0
- package/dist/base/internal/export-jobs.js +6 -0
- package/dist/base/internal/export-jobs.js.map +1 -0
- package/dist/base/internal/form-block-schema.d.ts +6 -0
- package/dist/base/internal/form-block-schema.js +10 -0
- package/dist/base/internal/form-block-schema.js.map +1 -0
- package/dist/base/internal/form-schema.d.ts +7 -0
- package/dist/base/internal/form-schema.js +26 -0
- package/dist/base/internal/form-schema.js.map +1 -0
- package/dist/base/internal/layouts.d.ts +39 -0
- package/dist/base/internal/layouts.js +3 -0
- package/dist/base/internal/layouts.js.map +1 -0
- package/dist/base/internal/query-response.d.ts +24 -0
- package/dist/base/internal/query-response.js +47 -0
- package/dist/base/internal/query-response.js.map +1 -0
- package/dist/base/internal/searchable.d.ts +6 -0
- package/dist/base/internal/searchable.js +15 -0
- package/dist/base/internal/searchable.js.map +1 -0
- package/dist/base/key-value-list.d.ts +160 -0
- package/dist/base/key-value-list.js +107 -0
- package/dist/base/key-value-list.js.map +1 -0
- package/dist/base/kpi-card.d.ts +12 -4
- package/dist/base/kpi-card.js +7 -0
- package/dist/base/kpi-card.js.map +1 -1
- package/dist/base/layouts.d.ts +35 -0
- package/dist/base/layouts.js +41 -7
- package/dist/base/layouts.js.map +1 -1
- package/dist/base/meter.d.ts +186 -0
- package/dist/base/meter.js +134 -0
- package/dist/base/meter.js.map +1 -0
- package/dist/base/nav-card-grid.d.ts +173 -0
- package/dist/base/nav-card-grid.js +89 -0
- package/dist/base/nav-card-grid.js.map +1 -0
- package/dist/base/period-selector.d.ts +20 -0
- package/dist/base/period-selector.js +23 -0
- package/dist/base/period-selector.js.map +1 -1
- package/dist/base/placeholder.d.ts +26 -0
- package/dist/base/placeholder.js +12 -0
- package/dist/base/placeholder.js.map +1 -1
- package/dist/base/query-response.d.ts +51 -1
- package/dist/base/query-response.js +43 -26
- package/dist/base/query-response.js.map +1 -1
- package/dist/base/resource-form-schema.d.ts +18 -0
- package/dist/base/resource-form-schema.js +20 -3
- package/dist/base/resource-form-schema.js.map +1 -1
- package/dist/base/searchable.d.ts +2 -0
- package/dist/base/searchable.js +4 -0
- package/dist/base/searchable.js.map +1 -1
- package/dist/base/section.d.ts +105 -0
- package/dist/base/section.js +123 -0
- package/dist/base/section.js.map +1 -0
- package/dist/base/stack.d.ts +113 -0
- package/dist/base/stack.js +58 -0
- package/dist/base/stack.js.map +1 -1
- package/dist/base/stat-group.d.ts +152 -0
- package/dist/base/stat-group.js +97 -0
- package/dist/base/stat-group.js.map +1 -0
- package/dist/base/tab.d.ts +25 -8
- package/dist/base/tab.js +11 -0
- package/dist/base/tab.js.map +1 -1
- package/dist/base/table-view/column-display.d.ts +195 -0
- package/dist/base/table-view/column-display.js +131 -0
- package/dist/base/table-view/column-display.js.map +1 -0
- package/dist/base/table-view/data-functions.d.ts +36 -14
- package/dist/base/table-view/data-functions.js +26 -1
- package/dist/base/table-view/data-functions.js.map +1 -1
- package/dist/base/table-view/factory-helpers.d.ts +0 -42
- package/dist/base/table-view/factory-helpers.js +1 -244
- package/dist/base/table-view/factory-helpers.js.map +1 -1
- package/dist/base/table-view/factory.d.ts +5 -1
- package/dist/base/table-view/factory.js +158 -202
- package/dist/base/table-view/factory.js.map +1 -1
- package/dist/base/table-view/internal/auth.d.ts +33 -0
- package/dist/base/table-view/{auth.js → internal/auth.js} +45 -6
- package/dist/base/table-view/internal/auth.js.map +1 -0
- package/dist/base/table-view/internal/column-display.d.ts +18 -0
- package/dist/base/table-view/internal/column-display.js +37 -0
- package/dist/base/table-view/internal/column-display.js.map +1 -0
- package/dist/base/table-view/internal/data-functions.d.ts +14 -0
- package/dist/base/table-view/internal/data-functions.js +3 -0
- package/dist/base/table-view/internal/data-functions.js.map +1 -0
- package/dist/base/table-view/internal/factory-helpers.d.ts +213 -0
- package/dist/base/table-view/internal/factory-helpers.js +477 -0
- package/dist/base/table-view/internal/factory-helpers.js.map +1 -0
- package/dist/base/table-view/{files.d.ts → internal/files.d.ts} +5 -0
- package/dist/base/table-view/{files.js → internal/files.js} +14 -4
- package/dist/base/table-view/internal/files.js.map +1 -0
- package/dist/base/table-view/internal/footer.d.ts +33 -0
- package/dist/base/table-view/internal/footer.js +112 -0
- package/dist/base/table-view/internal/footer.js.map +1 -0
- package/dist/base/table-view/{guards.d.ts → internal/guards.d.ts} +3 -0
- package/dist/base/table-view/internal/guards.js +134 -0
- package/dist/base/table-view/internal/guards.js.map +1 -0
- package/dist/base/table-view/internal/meta.d.ts +5 -0
- package/dist/base/table-view/internal/meta.js +13 -0
- package/dist/base/table-view/internal/meta.js.map +1 -0
- package/dist/base/table-view/internal/nav-badges.d.ts +9 -0
- package/dist/base/table-view/internal/nav-badges.js +79 -0
- package/dist/base/table-view/internal/nav-badges.js.map +1 -0
- package/dist/base/table-view/internal/options.d.ts +6 -0
- package/dist/base/table-view/internal/options.js +10 -0
- package/dist/base/table-view/internal/options.js.map +1 -0
- package/dist/base/table-view/internal/realtime-listeners.d.ts +4 -0
- package/dist/base/table-view/internal/realtime-listeners.js +7 -0
- package/dist/base/table-view/internal/realtime-listeners.js.map +1 -0
- package/dist/base/table-view/internal/realtime.d.ts +39 -0
- package/dist/base/table-view/internal/realtime.js +163 -0
- package/dist/base/table-view/internal/realtime.js.map +1 -0
- package/dist/base/table-view/internal/request-filter.d.ts +75 -0
- package/dist/base/table-view/internal/request-filter.js +154 -0
- package/dist/base/table-view/internal/request-filter.js.map +1 -0
- package/dist/base/table-view/internal/resource-form.d.ts +25 -0
- package/dist/base/table-view/internal/resource-form.js +91 -0
- package/dist/base/table-view/internal/resource-form.js.map +1 -0
- package/dist/base/table-view/{row-rules.d.ts → internal/row-rules.d.ts} +5 -2
- package/dist/base/table-view/{row-rules.js → internal/row-rules.js} +20 -19
- package/dist/base/table-view/internal/row-rules.js.map +1 -0
- package/dist/base/table-view/internal/tabs.d.ts +39 -0
- package/dist/base/table-view/internal/tabs.js +116 -0
- package/dist/base/table-view/internal/tabs.js.map +1 -0
- package/dist/base/table-view/internal/validation.d.ts +99 -0
- package/dist/base/table-view/internal/validation.js +297 -0
- package/dist/base/table-view/internal/validation.js.map +1 -0
- package/dist/base/table-view/internal/views.d.ts +14 -0
- package/dist/base/table-view/internal/views.js +42 -0
- package/dist/base/table-view/internal/views.js.map +1 -0
- package/dist/base/table-view/internal/writer.d.ts +39 -0
- package/dist/base/table-view/internal/writer.js +55 -0
- package/dist/base/table-view/internal/writer.js.map +1 -0
- package/dist/base/table-view/meta.d.ts +77 -4
- package/dist/base/table-view/meta.js +133 -13
- package/dist/base/table-view/meta.js.map +1 -1
- package/dist/base/table-view/options.d.ts +749 -28
- package/dist/base/table-view/options.js +9 -2
- package/dist/base/table-view/options.js.map +1 -1
- package/dist/base/table-view/realtime.d.ts +26 -17
- package/dist/base/table-view/realtime.js +29 -126
- package/dist/base/table-view/realtime.js.map +1 -1
- package/dist/base/table-view/resource-form.d.ts +11 -5
- package/dist/base/table-view/resource-form.js +15 -59
- package/dist/base/table-view/resource-form.js.map +1 -1
- package/dist/base/table-view/routes.d.ts +29 -0
- package/dist/base/table-view/routes.js +71 -6
- package/dist/base/table-view/routes.js.map +1 -1
- package/dist/base/table-view/schema.d.ts +483 -69
- package/dist/base/table-view/schema.js +163 -18
- package/dist/base/table-view/schema.js.map +1 -1
- package/dist/base/table-view/source.d.ts +62 -0
- package/dist/base/table-view/source.js +161 -0
- package/dist/base/table-view/source.js.map +1 -0
- package/dist/base/table-view/views.d.ts +20 -0
- package/dist/base/table-view/views.js +38 -0
- package/dist/base/table-view/views.js.map +1 -0
- package/dist/base/table-view/writer.d.ts +7 -0
- package/dist/base/table-view/writer.js +17 -0
- package/dist/base/table-view/writer.js.map +1 -0
- package/dist/base/table-view.d.ts +34 -6
- package/dist/base/table-view.js +42 -6
- package/dist/base/table-view.js.map +1 -1
- package/dist/base/tenant-export-archive.d.ts +21 -0
- package/dist/base/tenant-export-archive.js +11 -0
- package/dist/base/tenant-export-archive.js.map +1 -1
- package/dist/base/top-list-card.d.ts +35 -12
- package/dist/base/top-list-card.js +24 -0
- package/dist/base/top-list-card.js.map +1 -1
- package/dist/base/types/action-target.d.ts +36 -20
- package/dist/base/types/component-input.d.ts +3 -0
- package/dist/base/types/confirm-dialog.d.ts +69 -0
- package/dist/base/types/confirm-dialog.js +3 -0
- package/dist/base/types/confirm-dialog.js.map +1 -0
- package/dist/base/types/custom-button.d.ts +48 -2
- package/dist/base/types/enum-option.d.ts +9 -0
- package/dist/base/types/error.d.ts +9 -0
- package/dist/base/types/error.js +7 -1
- package/dist/base/types/error.js.map +1 -1
- package/dist/base/types/export-status.d.ts +3 -0
- package/dist/base/types/export-status.js +3 -0
- package/dist/base/types/export-status.js.map +1 -1
- package/dist/base/types/field-config.d.ts +3 -0
- package/dist/base/types/form-mode.d.ts +3 -0
- package/dist/base/types/form-mode.js +3 -0
- package/dist/base/types/form-mode.js.map +1 -1
- package/dist/base/types/form-values.d.ts +6 -0
- package/dist/base/types/guards.d.ts +37 -7
- package/dist/base/types/index.d.ts +2 -0
- package/dist/base/types/index.js +2 -0
- package/dist/base/types/index.js.map +1 -1
- package/dist/base/types/internal/action-target.d.ts +8 -0
- package/dist/base/types/internal/action-target.js +16 -0
- package/dist/base/types/internal/action-target.js.map +1 -0
- package/dist/base/types/json.d.ts +6 -0
- package/dist/base/types/orientation.d.ts +3 -0
- package/dist/base/types/orientation.js +3 -0
- package/dist/base/types/orientation.js.map +1 -1
- package/dist/base/types/readonly-behavior.d.ts +9 -0
- package/dist/base/types/readonly-behavior.js +3 -0
- package/dist/base/types/readonly-behavior.js.map +1 -1
- package/dist/base/types/row-action.d.ts +111 -0
- package/dist/base/types/size.d.ts +1 -0
- package/dist/base/types/size.js +4 -0
- package/dist/base/types/size.js.map +1 -1
- package/dist/base/types/tone.d.ts +14 -0
- package/dist/base/types/tone.js +24 -0
- package/dist/base/types/tone.js.map +1 -0
- package/dist/client-base-url.d.ts +8 -0
- package/dist/client-base-url.js +8 -0
- package/dist/client-base-url.js.map +1 -1
- package/dist/component-slots.d.ts +17 -2
- package/dist/component-slots.js +18 -66
- package/dist/component-slots.js.map +1 -1
- package/dist/component.d.ts +113 -0
- package/dist/component.js +84 -1
- package/dist/component.js.map +1 -1
- package/dist/data-controllers/members.d.ts +16 -1
- package/dist/data-controllers/members.js +87 -26
- package/dist/data-controllers/members.js.map +1 -1
- package/dist/data-controllers/roles.d.ts +1 -0
- package/dist/data-controllers/roles.js +3 -3
- package/dist/data-controllers/roles.js.map +1 -1
- package/dist/db/{models → internal}/exportJobs.model.d.ts +2 -0
- package/dist/db/{models → internal}/exportJobs.model.js +4 -1
- package/dist/db/internal/exportJobs.model.js.map +1 -0
- package/dist/db/internal/inviteResolutions.model.d.ts +34 -0
- package/dist/db/internal/inviteResolutions.model.js +80 -0
- package/dist/db/internal/inviteResolutions.model.js.map +1 -0
- package/dist/db/internal/table-names.d.ts +4 -0
- package/dist/db/internal/table-names.js +8 -0
- package/dist/db/internal/table-names.js.map +1 -0
- package/dist/db/{models → internal}/tenantLifecycle.model.d.ts +10 -1
- package/dist/db/{models → internal}/tenantLifecycle.model.js +10 -1
- package/dist/db/internal/tenantLifecycle.model.js.map +1 -0
- package/dist/db/{tables → internal}/tenantLifecycle.table.d.ts +6 -0
- package/dist/db/{tables → internal}/tenantLifecycle.table.js +6 -0
- package/dist/db/internal/tenantLifecycle.table.js.map +1 -0
- package/dist/db/models/index.d.ts +0 -2
- package/dist/db/models/index.js +0 -2
- package/dist/db/models/index.js.map +1 -1
- package/dist/db/models/inviteResolutions.model.d.ts +1 -25
- package/dist/db/models/inviteResolutions.model.js +0 -68
- package/dist/db/models/inviteResolutions.model.js.map +1 -1
- package/dist/db/models/roles.model.d.ts +6 -0
- package/dist/db/models/roles.model.js +6 -0
- package/dist/db/models/roles.model.js.map +1 -1
- package/dist/db/models/tenantMembers.model.js +1 -1
- package/dist/db/models/tenantMembers.model.js.map +1 -1
- package/dist/db/models/user_invites.model.d.ts +24 -0
- package/dist/db/models/user_invites.model.js +25 -1
- package/dist/db/models/user_invites.model.js.map +1 -1
- package/dist/db/tables/exportJobs.table.d.ts +5 -1
- package/dist/db/tables/exportJobs.table.js +3 -3
- package/dist/db/tables/exportJobs.table.js.map +1 -1
- package/dist/db/tables/index.d.ts +0 -1
- package/dist/db/tables/index.js +0 -1
- package/dist/db/tables/index.js.map +1 -1
- package/dist/db/tables/inviteResolutions.table.d.ts +1 -1
- package/dist/db/tables/inviteResolutions.table.js +4 -3
- package/dist/db/tables/inviteResolutions.table.js.map +1 -1
- package/dist/db/tables/roles.table.d.ts +2 -0
- package/dist/db/tables/roles.table.js +4 -0
- package/dist/db/tables/roles.table.js.map +1 -1
- package/dist/db/tables/tenantMembers.table.d.ts +1 -0
- package/dist/db/tables/user_invites.table.d.ts +11 -0
- package/dist/db/tables/user_invites.table.js +4 -0
- package/dist/db/tables/user_invites.table.js.map +1 -1
- package/dist/guards.d.ts +36 -0
- package/dist/guards.js +30 -1
- package/dist/guards.js.map +1 -1
- package/dist/hooks.d.ts +133 -1
- package/dist/hooks.js +87 -1
- package/dist/hooks.js.map +1 -1
- package/dist/html-render/index.d.ts +15 -0
- package/dist/html-render/index.js +15 -0
- package/dist/html-render/index.js.map +1 -1
- package/dist/html-render/types.d.ts +4 -0
- package/dist/index.d.ts +6 -7
- package/dist/index.js +12 -17
- package/dist/index.js.map +1 -1
- package/dist/internal/attachments.d.ts +16 -0
- package/dist/internal/attachments.js +3 -0
- package/dist/internal/attachments.js.map +1 -0
- package/dist/internal/component-slots.d.ts +27 -0
- package/dist/internal/component-slots.js +97 -0
- package/dist/internal/component-slots.js.map +1 -0
- package/dist/internal/invite-membership.d.ts +8 -0
- package/dist/{invite-membership.js → internal/invite-membership.js} +11 -5
- package/dist/internal/invite-membership.js.map +1 -0
- package/dist/internal/invite-replacement.d.ts +7 -0
- package/dist/{invite-replacement.js → internal/invite-replacement.js} +8 -3
- package/dist/internal/invite-replacement.js.map +1 -0
- package/dist/internal/invite-resolution.d.ts +3 -0
- package/dist/internal/invite-resolution.js +50 -0
- package/dist/internal/invite-resolution.js.map +1 -0
- package/dist/internal/invites.d.ts +31 -0
- package/dist/internal/invites.js +44 -0
- package/dist/internal/invites.js.map +1 -0
- package/dist/internal/permission-gate.d.ts +23 -0
- package/dist/internal/permission-gate.js +43 -0
- package/dist/internal/permission-gate.js.map +1 -0
- package/dist/internal/tenant-access.d.ts +28 -0
- package/dist/internal/tenant-access.js +28 -0
- package/dist/internal/tenant-access.js.map +1 -0
- package/dist/internal/tenant-ownership.d.ts +13 -0
- package/dist/internal/tenant-ownership.js +95 -0
- package/dist/internal/tenant-ownership.js.map +1 -0
- package/dist/internal/uploads.d.ts +19 -0
- package/dist/internal/uploads.js +3 -0
- package/dist/internal/uploads.js.map +1 -0
- package/dist/invite-extensions/availability.d.ts +28 -3
- package/dist/invite-extensions/availability.js +26 -23
- package/dist/invite-extensions/availability.js.map +1 -1
- package/dist/invite-extensions/internal/availability.d.ts +12 -0
- package/dist/invite-extensions/internal/availability.js +32 -0
- package/dist/invite-extensions/internal/availability.js.map +1 -0
- package/dist/invite-extensions/internal/delivery.d.ts +44 -0
- package/dist/invite-extensions/{delivery.js → internal/delivery.js} +38 -0
- package/dist/invite-extensions/internal/delivery.js.map +1 -0
- package/dist/invite-extensions/internal/edit.d.ts +34 -0
- package/dist/invite-extensions/{edit.js → internal/edit.js} +33 -0
- package/dist/invite-extensions/internal/edit.js.map +1 -0
- package/dist/invite-extensions/internal/field-ids.d.ts +21 -0
- package/dist/invite-extensions/{field-ids.js → internal/field-ids.js} +13 -0
- package/dist/invite-extensions/internal/field-ids.js.map +1 -0
- package/dist/invite-extensions/internal/form-slot.d.ts +13 -0
- package/dist/invite-extensions/{form-slot.js → internal/form-slot.js} +49 -4
- package/dist/invite-extensions/internal/form-slot.js.map +1 -0
- package/dist/invite-extensions/internal/payload-slices.d.ts +31 -0
- package/dist/invite-extensions/{payload-slices.js → internal/payload-slices.js} +30 -0
- package/dist/invite-extensions/internal/payload-slices.js.map +1 -0
- package/dist/invite-extensions/internal/registry.d.ts +48 -0
- package/dist/invite-extensions/internal/registry.js +77 -0
- package/dist/invite-extensions/internal/registry.js.map +1 -0
- package/dist/invite-extensions/internal/types.d.ts +61 -0
- package/dist/invite-extensions/internal/types.js +3 -0
- package/dist/invite-extensions/internal/types.js.map +1 -0
- package/dist/invite-extensions/registry.d.ts +44 -12
- package/dist/invite-extensions/registry.js +51 -43
- package/dist/invite-extensions/registry.js.map +1 -1
- package/dist/invite-extensions/types.d.ts +59 -34
- package/dist/invite-extensions.d.ts +30 -4
- package/dist/invite-extensions.js +57 -7
- package/dist/invite-extensions.js.map +1 -1
- package/dist/invite-resolution.d.ts +5 -2
- package/dist/invite-resolution.js +16 -46
- package/dist/invite-resolution.js.map +1 -1
- package/dist/invitee-display-name.d.ts +5 -0
- package/dist/invitee-display-name.js +15 -0
- package/dist/invitee-display-name.js.map +1 -0
- package/dist/invites.d.ts +46 -14
- package/dist/invites.js +41 -44
- package/dist/invites.js.map +1 -1
- package/dist/layout-banners.d.ts +68 -0
- package/dist/layout-banners.js +18 -0
- package/dist/layout-banners.js.map +1 -1
- package/dist/notifications/builder.d.ts +3 -1
- package/dist/notifications/builder.js +10 -0
- package/dist/notifications/builder.js.map +1 -1
- package/dist/notifications/index.d.ts +1 -0
- package/dist/notifications/index.js +16 -0
- package/dist/notifications/index.js.map +1 -1
- package/dist/notifications/internal.d.ts +8 -5
- package/dist/notifications/internal.js +6 -0
- package/dist/notifications/internal.js.map +1 -1
- package/dist/notifications/sendable.d.ts +6 -0
- package/dist/notifications/sendable.js +13 -4
- package/dist/notifications/sendable.js.map +1 -1
- package/dist/notifications/types.d.ts +26 -1
- package/dist/page/categories.d.ts +19 -17
- package/dist/page/categories.js +24 -168
- package/dist/page/categories.js.map +1 -1
- package/dist/page/component-tree.d.ts +15 -1
- package/dist/page/component-tree.js +0 -40
- package/dist/page/component-tree.js.map +1 -1
- package/dist/page/controllers.d.ts +135 -0
- package/dist/page/controllers.js +124 -8
- package/dist/page/controllers.js.map +1 -1
- package/dist/page/declaration-conflict.d.ts +9 -0
- package/dist/page/declaration-conflict.js +17 -0
- package/dist/page/declaration-conflict.js.map +1 -0
- package/dist/page/form-page-routes.d.ts +7 -10
- package/dist/page/form-page-routes.js +14 -31
- package/dist/page/form-page-routes.js.map +1 -1
- package/dist/page/internal/categories.d.ts +62 -0
- package/dist/page/internal/categories.js +260 -0
- package/dist/page/internal/categories.js.map +1 -0
- package/dist/page/internal/component-target.d.ts +37 -0
- package/dist/page/{component-target.js → internal/component-target.js} +27 -2
- package/dist/page/internal/component-target.js.map +1 -0
- package/dist/page/internal/component-tree.d.ts +13 -0
- package/dist/page/internal/component-tree.js +61 -0
- package/dist/page/internal/component-tree.js.map +1 -0
- package/dist/page/{extension-assembly.d.ts → internal/extension-assembly.d.ts} +5 -2
- package/dist/page/{extension-assembly.js → internal/extension-assembly.js} +8 -0
- package/dist/page/internal/extension-assembly.js.map +1 -0
- package/dist/page/internal/extension-validation.d.ts +24 -0
- package/dist/page/{extension-validation.js → internal/extension-validation.js} +8 -0
- package/dist/page/internal/extension-validation.js.map +1 -0
- package/dist/page/internal/form-page-routes.d.ts +26 -0
- package/dist/page/internal/form-page-routes.js +40 -0
- package/dist/page/internal/form-page-routes.js.map +1 -0
- package/dist/page/internal/layout-filter.d.ts +21 -0
- package/dist/page/internal/layout-filter.js +101 -0
- package/dist/page/internal/layout-filter.js.map +1 -0
- package/dist/page/{metadata-helpers.d.ts → internal/metadata-helpers.d.ts} +4 -1
- package/dist/page/{metadata-helpers.js → internal/metadata-helpers.js} +19 -2
- package/dist/page/internal/metadata-helpers.js.map +1 -0
- package/dist/page/internal/nav-badges.d.ts +17 -0
- package/dist/page/internal/nav-badges.js +68 -0
- package/dist/page/internal/nav-badges.js.map +1 -0
- package/dist/page/internal/page-registration.d.ts +29 -0
- package/dist/page/internal/page-registration.js +41 -0
- package/dist/page/internal/page-registration.js.map +1 -0
- package/dist/page/internal/registry.d.ts +128 -0
- package/dist/page/internal/registry.js +225 -0
- package/dist/page/internal/registry.js.map +1 -0
- package/dist/page/internal/table-view-ids.d.ts +10 -0
- package/dist/page/internal/table-view-ids.js +39 -0
- package/dist/page/internal/table-view-ids.js.map +1 -0
- package/dist/page/internal/types.d.ts +2 -0
- package/dist/page/internal/types.js +6 -0
- package/dist/page/internal/types.js.map +1 -0
- package/dist/page/layout-filter.d.ts +4 -0
- package/dist/page/layout-filter.js +11 -0
- package/dist/page/layout-filter.js.map +1 -1
- package/dist/page/metadata.d.ts +93 -0
- package/dist/page/metadata.js +236 -28
- package/dist/page/metadata.js.map +1 -1
- package/dist/page/registry.d.ts +17 -36
- package/dist/page/registry.js +25 -127
- package/dist/page/registry.js.map +1 -1
- package/dist/page/roots.d.ts +10 -0
- package/dist/page/roots.js +27 -6
- package/dist/page/roots.js.map +1 -1
- package/dist/page/types.d.ts +186 -1
- package/dist/page/types.js +1 -2
- package/dist/page/types.js.map +1 -1
- package/dist/page.d.ts +23 -1
- package/dist/page.js +24 -2
- package/dist/page.js.map +1 -1
- package/dist/permission-gate.d.ts +14 -0
- package/dist/permission-gate.js +3 -0
- package/dist/permission-gate.js.map +1 -0
- package/dist/permissions-resolver.d.ts +24 -0
- package/dist/permissions-resolver.js +24 -0
- package/dist/permissions-resolver.js.map +1 -1
- package/dist/permissions.d.ts +27 -0
- package/dist/permissions.js +37 -0
- package/dist/permissions.js.map +1 -1
- package/dist/quick-actions.d.ts +27 -0
- package/dist/quick-actions.js +1 -0
- package/dist/quick-actions.js.map +1 -1
- package/dist/realtime.d.ts +29 -0
- package/dist/realtime.js +30 -0
- package/dist/realtime.js.map +1 -1
- package/dist/request-tenant.d.ts +17 -0
- package/dist/request-tenant.js +18 -1
- package/dist/request-tenant.js.map +1 -1
- package/dist/tenant-access.d.ts +38 -6
- package/dist/tenant-access.js +38 -8
- package/dist/tenant-access.js.map +1 -1
- package/dist/tenant-export.d.ts +19 -0
- package/dist/tenant-lifecycle.d.ts +13 -0
- package/dist/tenant-lifecycle.js +22 -1
- package/dist/tenant-lifecycle.js.map +1 -1
- package/dist/tenant-ownership.d.ts +2 -1
- package/dist/tenant-ownership.js +5 -85
- package/dist/tenant-ownership.js.map +1 -1
- package/dist/tenant-scoped-model.d.ts +8 -0
- package/dist/tenant-scoped-model.js +8 -0
- package/dist/tenant-scoped-model.js.map +1 -1
- package/dist/uploads.d.ts +24 -16
- package/dist/uploads.js +24 -0
- package/dist/uploads.js.map +1 -1
- package/dist/utils/fire-and-forget.d.ts +4 -0
- package/dist/utils/fire-and-forget.js +4 -0
- package/dist/utils/fire-and-forget.js.map +1 -1
- package/dist/utils/internal/owned-registry.d.ts +36 -0
- package/dist/utils/internal/owned-registry.js +60 -0
- package/dist/utils/internal/owned-registry.js.map +1 -0
- package/dist/utils/{row-instance.d.ts → internal/row-instance.d.ts} +1 -0
- package/dist/utils/internal/row-instance.js +12 -0
- package/dist/utils/internal/row-instance.js.map +1 -0
- package/dist/utils/internal/saas-mode.d.ts +8 -0
- package/dist/utils/internal/saas-mode.js +3 -0
- package/dist/utils/internal/saas-mode.js.map +1 -0
- package/dist/utils/{time.d.ts → internal/time.d.ts} +4 -0
- package/dist/utils/{time.js → internal/time.js} +4 -0
- package/dist/utils/internal/time.js.map +1 -0
- package/dist/utils/{type-check.d.ts → internal/type-check.d.ts} +12 -0
- package/dist/utils/{type-check.js → internal/type-check.js} +12 -0
- package/dist/utils/internal/type-check.js.map +1 -0
- package/dist/utils/internal/value-parser.d.ts +86 -0
- package/dist/utils/internal/value-parser.js +160 -0
- package/dist/utils/internal/value-parser.js.map +1 -0
- package/dist/utils/saas-mode.d.ts +25 -3
- package/dist/utils/saas-mode.js +24 -0
- package/dist/utils/saas-mode.js.map +1 -1
- package/package.json +3 -3
- package/dist/base/block-registry/describe.d.ts +0 -6
- package/dist/base/block-registry/describe.js.map +0 -1
- package/dist/base/block-registry/ui.d.ts +0 -5
- package/dist/base/block-registry/ui.js +0 -17
- package/dist/base/block-registry/ui.js.map +0 -1
- package/dist/base/table-view/auth.d.ts +0 -9
- package/dist/base/table-view/auth.js.map +0 -1
- package/dist/base/table-view/files.js.map +0 -1
- package/dist/base/table-view/guards.js +0 -85
- package/dist/base/table-view/guards.js.map +0 -1
- package/dist/base/table-view/row-rules.js.map +0 -1
- package/dist/base/tree.d.ts +0 -115
- package/dist/base/tree.js +0 -145
- package/dist/base/tree.js.map +0 -1
- package/dist/db/models/exportJobs.model.js.map +0 -1
- package/dist/db/models/tenantLifecycle.model.js.map +0 -1
- package/dist/db/tables/tenantLifecycle.table.js.map +0 -1
- package/dist/invite-extensions/delivery.d.ts +0 -5
- package/dist/invite-extensions/delivery.js.map +0 -1
- package/dist/invite-extensions/edit.d.ts +0 -4
- package/dist/invite-extensions/edit.js.map +0 -1
- package/dist/invite-extensions/field-ids.d.ts +0 -7
- package/dist/invite-extensions/field-ids.js.map +0 -1
- package/dist/invite-extensions/form-slot.d.ts +0 -2
- package/dist/invite-extensions/form-slot.js.map +0 -1
- package/dist/invite-extensions/internal.d.ts +0 -17
- package/dist/invite-extensions/internal.js +0 -55
- package/dist/invite-extensions/internal.js.map +0 -1
- package/dist/invite-extensions/payload-slices.d.ts +0 -8
- package/dist/invite-extensions/payload-slices.js.map +0 -1
- package/dist/invite-membership.d.ts +0 -3
- package/dist/invite-membership.js.map +0 -1
- package/dist/invite-replacement.d.ts +0 -2
- package/dist/invite-replacement.js.map +0 -1
- package/dist/page/component-target.d.ts +0 -10
- package/dist/page/component-target.js.map +0 -1
- package/dist/page/extension-assembly.js.map +0 -1
- package/dist/page/extension-validation.d.ts +0 -7
- package/dist/page/extension-validation.js.map +0 -1
- package/dist/page/metadata-helpers.js.map +0 -1
- package/dist/page/page-registration.d.ts +0 -13
- package/dist/page/page-registration.js +0 -22
- package/dist/page/page-registration.js.map +0 -1
- package/dist/utils/owned-registry.d.ts +0 -10
- package/dist/utils/owned-registry.js +0 -34
- package/dist/utils/owned-registry.js.map +0 -1
- package/dist/utils/row-instance.js +0 -8
- package/dist/utils/row-instance.js.map +0 -1
- package/dist/utils/time.js.map +0 -1
- package/dist/utils/type-check.js.map +0 -1
- package/dist/utils/value-parser.d.ts +0 -11
- package/dist/utils/value-parser.js +0 -86
- package/dist/utils/value-parser.js.map +0 -1
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolveCategoryInfo = resolveCategoryInfo;
|
|
4
|
+
exports.resolveInheritedLayout = resolveInheritedLayout;
|
|
5
|
+
exports.calculateFullSlug = calculateFullSlug;
|
|
6
|
+
exports.validateNotInsideSettings = validateNotInsideSettings;
|
|
7
|
+
exports.createCategoryFunction = createCategoryFunction;
|
|
8
|
+
exports.applyModuleResolution = applyModuleResolution;
|
|
9
|
+
exports.clearModuleResolution = clearModuleResolution;
|
|
10
|
+
exports.applyPageExtension = applyPageExtension;
|
|
11
|
+
exports.revokePageExtension = revokePageExtension;
|
|
12
|
+
exports.clearPageMetadata = clearPageMetadata;
|
|
13
|
+
exports.RootCategory = RootCategory;
|
|
14
|
+
const interface_core_1 = require("@antelopejs/interface-core");
|
|
15
|
+
const permissions_1 = require("../../permissions");
|
|
16
|
+
// Categories resolve controller classes through their PageMetadata, and the
|
|
17
|
+
// metadata module registers pages through the proxies declared in
|
|
18
|
+
// ../categories: the cycle stays safe because none of these modules
|
|
19
|
+
// dereferences another while it evaluates — only from inside function bodies.
|
|
20
|
+
// oxlint-disable-next-line import/no-cycle
|
|
21
|
+
const metadata_1 = require("../metadata");
|
|
22
|
+
const logging_1 = require("@antelopejs/interface-core/logging");
|
|
23
|
+
const fire_and_forget_1 = require("../../utils/fire-and-forget");
|
|
24
|
+
const registry_1 = require("./registry");
|
|
25
|
+
const types_1 = require("./types");
|
|
26
|
+
// The proxies and isInsideModule are only read inside function bodies; see
|
|
27
|
+
// the matching import in ../categories.
|
|
28
|
+
// oxlint-disable-next-line import/no-cycle
|
|
29
|
+
const categories_1 = require("../categories");
|
|
30
|
+
/**
|
|
31
|
+
* Resolve a category to CategoryInfo
|
|
32
|
+
* @param category A CategoryInfo object or a ControllerClass
|
|
33
|
+
* @returns The resolved CategoryInfo
|
|
34
|
+
*
|
|
35
|
+
* @internal
|
|
36
|
+
*/
|
|
37
|
+
function resolveCategoryInfo(category) {
|
|
38
|
+
if (!category) {
|
|
39
|
+
return undefined;
|
|
40
|
+
}
|
|
41
|
+
if (typeof category === "function") {
|
|
42
|
+
const meta = (0, interface_core_1.GetMetadata)(category, metadata_1.PageMetadata);
|
|
43
|
+
if (!meta.pageInfo) {
|
|
44
|
+
throw new Error(`PageMetadata not initialized for controller class.`);
|
|
45
|
+
}
|
|
46
|
+
return meta.pageInfo;
|
|
47
|
+
}
|
|
48
|
+
return category;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* The default layout a page or category declared under `category` inherits:
|
|
52
|
+
* the `layout` of the nearest ancestor that declares one.
|
|
53
|
+
*
|
|
54
|
+
* @param category The parent the entry is declared under
|
|
55
|
+
* @returns That layout, or undefined when no ancestor declares one
|
|
56
|
+
*
|
|
57
|
+
* @internal
|
|
58
|
+
*/
|
|
59
|
+
function resolveInheritedLayout(category) {
|
|
60
|
+
let current = findCategoryInfo(category);
|
|
61
|
+
while (current) {
|
|
62
|
+
if (current.layout)
|
|
63
|
+
return current.layout;
|
|
64
|
+
current = findCategoryInfo(current.category);
|
|
65
|
+
}
|
|
66
|
+
return undefined;
|
|
67
|
+
}
|
|
68
|
+
// Unlike resolveCategoryInfo, a parent class that is not a registered page
|
|
69
|
+
// ends the walk instead of throwing: the page declaring it reports that when
|
|
70
|
+
// it registers, not while its layout is being chosen.
|
|
71
|
+
function findCategoryInfo(category) {
|
|
72
|
+
if (typeof category !== "function")
|
|
73
|
+
return category;
|
|
74
|
+
return (0, interface_core_1.GetMetadata)(category, metadata_1.PageMetadata).pageInfo;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Calculate the full slug for a page or category
|
|
78
|
+
* @param id The unique identifier
|
|
79
|
+
* @param options Menu options containing urlSlug and category
|
|
80
|
+
* @returns The calculated full slug
|
|
81
|
+
*
|
|
82
|
+
* @internal
|
|
83
|
+
*/
|
|
84
|
+
function calculateFullSlug(id, options) {
|
|
85
|
+
const resolvedCategory = resolveCategoryInfo(options.category);
|
|
86
|
+
const parentSlug = resolvedCategory?.fullSlug || "";
|
|
87
|
+
const urlSlug = options.urlSlug || id;
|
|
88
|
+
let fullSlug = parentSlug ? `${parentSlug}/${urlSlug}` : `/${urlSlug}`;
|
|
89
|
+
fullSlug = fullSlug.replace(/\/+/g, "/");
|
|
90
|
+
if (fullSlug !== "/" && fullSlug.endsWith("/")) {
|
|
91
|
+
fullSlug = fullSlug.slice(0, -1);
|
|
92
|
+
}
|
|
93
|
+
return fullSlug;
|
|
94
|
+
}
|
|
95
|
+
function isCategoryDescendantOf(candidate, ancestorFullId) {
|
|
96
|
+
let current = candidate;
|
|
97
|
+
while (current) {
|
|
98
|
+
const resolved = resolveCategoryInfo(current);
|
|
99
|
+
if (!resolved)
|
|
100
|
+
return false;
|
|
101
|
+
if (resolved.fullId === ancestorFullId)
|
|
102
|
+
return true;
|
|
103
|
+
current = resolved.category;
|
|
104
|
+
}
|
|
105
|
+
return false;
|
|
106
|
+
}
|
|
107
|
+
function resolveCategoryFromOptions(id, options) {
|
|
108
|
+
if (options.category) {
|
|
109
|
+
if (options.module) {
|
|
110
|
+
validateExplicitCategoryMatchesModule(id, options.category, options.module);
|
|
111
|
+
}
|
|
112
|
+
return options.category;
|
|
113
|
+
}
|
|
114
|
+
if (options.module) {
|
|
115
|
+
const moduleRoot = registry_1.moduleRootCategories.get(options.module);
|
|
116
|
+
if (!moduleRoot) {
|
|
117
|
+
throw new Error(`"${id}" references unknown module "${options.module}". Make sure RegisterModule was called before registration.`);
|
|
118
|
+
}
|
|
119
|
+
// Loose pages attach to the module's default category when one is declared,
|
|
120
|
+
// so they render under a controllable heading instead of the generic
|
|
121
|
+
// "Pages" group. Otherwise they sit directly under the module root.
|
|
122
|
+
return registry_1.moduleDefaultCategories.get(options.module) ?? moduleRoot;
|
|
123
|
+
}
|
|
124
|
+
return undefined;
|
|
125
|
+
}
|
|
126
|
+
function validateExplicitCategoryMatchesModule(id, category, moduleId) {
|
|
127
|
+
const moduleRoot = registry_1.moduleRootCategories.get(moduleId);
|
|
128
|
+
if (!moduleRoot) {
|
|
129
|
+
throw new Error(`Page "${id}" references unknown module "${moduleId}". Make sure RegisterModule was called before page registration.`);
|
|
130
|
+
}
|
|
131
|
+
const resolved = resolveCategoryInfo(category);
|
|
132
|
+
if (!isCategoryDescendantOf(resolved, moduleRoot.fullId)) {
|
|
133
|
+
throw new Error(`Page "${id}" declares module "${moduleId}" but its explicit category is not a descendant of that module's root.`);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
// The settings root is compared by its stable fullId, not through the
|
|
137
|
+
// `settingsCategory` object: that object lives in the bootstrap module, which
|
|
138
|
+
// this module underpins — importing it back would make the graph circular for
|
|
139
|
+
// a check that only needs the id.
|
|
140
|
+
const SETTINGS_ROOT_FULL_ID = "settings";
|
|
141
|
+
/** @internal */
|
|
142
|
+
function validateNotInsideSettings(moduleId, resolved) {
|
|
143
|
+
if (!moduleId || !resolved)
|
|
144
|
+
return;
|
|
145
|
+
if (isCategoryDescendantOf(resolved, SETTINGS_ROOT_FULL_ID)) {
|
|
146
|
+
throw new Error(`Pages of module "${moduleId}" cannot use the settings category — declare a settings page inside your module instead.`);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
function createCategoryFunction(id, options) {
|
|
150
|
+
const hasModuleField = "module" in options && options.module !== undefined;
|
|
151
|
+
const effectiveOptions = hasModuleField
|
|
152
|
+
? applyModuleResolution(id, options)
|
|
153
|
+
: options;
|
|
154
|
+
const category = effectiveOptions.category;
|
|
155
|
+
const resolvedCategory = resolveCategoryInfo(category);
|
|
156
|
+
if (hasModuleField) {
|
|
157
|
+
validateNotInsideSettings(effectiveOptions.module, resolvedCategory);
|
|
158
|
+
}
|
|
159
|
+
const parentFullId = resolvedCategory?.fullId || "";
|
|
160
|
+
const fullId = parentFullId ? `${parentFullId}.${id}` : id;
|
|
161
|
+
const fullSlug = calculateFullSlug(id, effectiveOptions);
|
|
162
|
+
const categoryInfo = {
|
|
163
|
+
...effectiveOptions,
|
|
164
|
+
category: resolvedCategory,
|
|
165
|
+
id,
|
|
166
|
+
fullId,
|
|
167
|
+
fullSlug,
|
|
168
|
+
urlTransparent: fullSlug === (resolvedCategory?.fullSlug || types_1.ROOT_SLUG),
|
|
169
|
+
hidden: effectiveOptions.hidden || resolvedCategory?.hidden,
|
|
170
|
+
bypassTenantAccessGate: effectiveOptions.bypassTenantAccessGate ||
|
|
171
|
+
resolvedCategory?.bypassTenantAccessGate,
|
|
172
|
+
};
|
|
173
|
+
categories_1.internal.RegisterCategory.register(categoryInfo);
|
|
174
|
+
// Left exactly as it was, and it is wrong: when `permission` is an Action,
|
|
175
|
+
// the spread copies the action's `id` and `definition` over the category's
|
|
176
|
+
// own and leaves the permission with no title, so the category registers
|
|
177
|
+
// under the action's short id while `resolvePagePermissionId` later looks it
|
|
178
|
+
// up under the full one.
|
|
179
|
+
//
|
|
180
|
+
// Not fixed here. registerPagePermission converts through `toPermission()`
|
|
181
|
+
// and skips registration when it succeeds, but it runs at page-registration
|
|
182
|
+
// time; a category is built at import time, before `permissionMap` holds the
|
|
183
|
+
// component, so `toPermission()` returns undefined and the same spread runs
|
|
184
|
+
// anyway. Making this right means deciding when a category's permission is
|
|
185
|
+
// resolved, which is a design question and not a lint pass.
|
|
186
|
+
const categoryPermission = {
|
|
187
|
+
id: categoryInfo.fullId,
|
|
188
|
+
title: categoryInfo.displayName,
|
|
189
|
+
icon: categoryInfo.icon,
|
|
190
|
+
defaultGranted: categoryInfo.publicAccess || categoryInfo.memberAccess,
|
|
191
|
+
// oxlint-disable-next-line typescript/no-misused-spread
|
|
192
|
+
...categoryInfo.permission,
|
|
193
|
+
};
|
|
194
|
+
if ((0, categories_1.isInsideModule)(categoryInfo)) {
|
|
195
|
+
(0, permissions_1.MarkModuleScopedPermission)(categoryPermission.id);
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
(0, permissions_1.RegisterPermission)(categoryPermission.id, categoryPermission);
|
|
199
|
+
}
|
|
200
|
+
return categoryInfo;
|
|
201
|
+
}
|
|
202
|
+
/** @internal */
|
|
203
|
+
function applyModuleResolution(id, options) {
|
|
204
|
+
const resolvedReference = resolveCategoryFromOptions(id, options);
|
|
205
|
+
return { ...options, category: resolvedReference };
|
|
206
|
+
}
|
|
207
|
+
/** @internal */
|
|
208
|
+
function clearModuleResolution(id) {
|
|
209
|
+
registry_1.moduleRootCategories.delete(id);
|
|
210
|
+
registry_1.moduleDefaultCategories.delete(id);
|
|
211
|
+
}
|
|
212
|
+
/** @internal */
|
|
213
|
+
function applyPageExtension(info) {
|
|
214
|
+
const registered = registry_1.pageExtensions.get(info.targetFullId) ?? [];
|
|
215
|
+
registered.push(info);
|
|
216
|
+
registry_1.pageExtensions.set(info.targetFullId, registered);
|
|
217
|
+
if (!(0, registry_1.acceptsPageExtensions)(info.targetFullId)) {
|
|
218
|
+
logging_1.Logging.Info(`[dms] page extension "${info.extensionName}" is waiting for page "${info.targetFullId}" to finish registering`);
|
|
219
|
+
}
|
|
220
|
+
(0, fire_and_forget_1.fireAndForget)((0, registry_1.syncTargetExtensions)(info.targetFullId), `page extension "${info.extensionName}"`);
|
|
221
|
+
}
|
|
222
|
+
/** @internal */
|
|
223
|
+
function revokePageExtension(info) {
|
|
224
|
+
const registered = registry_1.pageExtensions.get(info.targetFullId);
|
|
225
|
+
if (!registered)
|
|
226
|
+
return;
|
|
227
|
+
// By token: the implementation hands the extension back as a view of
|
|
228
|
+
// itself, and dropping it by reference would revoke nothing.
|
|
229
|
+
const remaining = registered.filter((entry) => !registry_1.pageExtensionIdentity.isSame(entry, info));
|
|
230
|
+
if (remaining.length === 0) {
|
|
231
|
+
registry_1.pageExtensions.delete(info.targetFullId);
|
|
232
|
+
}
|
|
233
|
+
else {
|
|
234
|
+
registry_1.pageExtensions.set(info.targetFullId, remaining);
|
|
235
|
+
}
|
|
236
|
+
(0, fire_and_forget_1.fireAndForget)((0, registry_1.syncTargetExtensions)(info.targetFullId), `page extension "${info.extensionName}" teardown`);
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Take down the metadata registered for a page.
|
|
240
|
+
*
|
|
241
|
+
* `expected` names the registration being unwound. A hot reload registers
|
|
242
|
+
* the replacement before the old one unregisters, so without it the departing
|
|
243
|
+
* page would tear down the live one's metadata, layout handler and
|
|
244
|
+
* permissions.
|
|
245
|
+
*
|
|
246
|
+
* @internal
|
|
247
|
+
*/
|
|
248
|
+
function clearPageMetadata(fullId, expected) {
|
|
249
|
+
const metadata = registry_1.pageMetadataByFullId.get(fullId);
|
|
250
|
+
if (!metadata)
|
|
251
|
+
return;
|
|
252
|
+
if (expected && !(0, registry_1.isSamePageRegistration)(metadata.pageInfo, expected))
|
|
253
|
+
return;
|
|
254
|
+
metadata.Dispose();
|
|
255
|
+
}
|
|
256
|
+
/** @internal */
|
|
257
|
+
function RootCategory(id, options) {
|
|
258
|
+
return createCategoryFunction(id, options);
|
|
259
|
+
}
|
|
260
|
+
//# sourceMappingURL=categories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"categories.js","sourceRoot":"","sources":["../../../src/page/internal/categories.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { type BaseComponentChild, type Component, type ComponentTargetInput } from "../../component";
|
|
2
|
+
/**
|
|
3
|
+
* A component and its resolved position under a page's static root field.
|
|
4
|
+
*
|
|
5
|
+
* @internal
|
|
6
|
+
*/
|
|
7
|
+
export interface ResolvedComponentTarget {
|
|
8
|
+
rootKey: string;
|
|
9
|
+
path: readonly string[];
|
|
10
|
+
component: Component;
|
|
11
|
+
parent?: Component;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Read children that are available synchronously during page registration.
|
|
15
|
+
*
|
|
16
|
+
* @internal
|
|
17
|
+
*/
|
|
18
|
+
export declare function getDeclaredComponentChildren(component: Component): BaseComponentChild[];
|
|
19
|
+
/**
|
|
20
|
+
* Resolve and validate a target against a page's static root components.
|
|
21
|
+
*
|
|
22
|
+
* @internal
|
|
23
|
+
*/
|
|
24
|
+
export declare function resolveComponentTarget(target: ComponentTargetInput, roots: Map<string, Component>): ResolvedComponentTarget | undefined;
|
|
25
|
+
/**
|
|
26
|
+
* Build the id the recursive frontend component renderer assigns to a child,
|
|
27
|
+
* from the id it assigned to the child's parent.
|
|
28
|
+
*
|
|
29
|
+
* @internal
|
|
30
|
+
*/
|
|
31
|
+
export declare function childComponentClientId(parentClientId: string, childId: string): string;
|
|
32
|
+
/**
|
|
33
|
+
* Build the id assigned by the recursive frontend component renderer.
|
|
34
|
+
*
|
|
35
|
+
* @internal
|
|
36
|
+
*/
|
|
37
|
+
export declare function componentTargetClientId(target: ResolvedComponentTarget): string;
|
|
@@ -2,8 +2,14 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getDeclaredComponentChildren = getDeclaredComponentChildren;
|
|
4
4
|
exports.resolveComponentTarget = resolveComponentTarget;
|
|
5
|
+
exports.childComponentClientId = childComponentClientId;
|
|
5
6
|
exports.componentTargetClientId = componentTargetClientId;
|
|
6
|
-
const component_1 = require("
|
|
7
|
+
const component_1 = require("../../component");
|
|
8
|
+
/**
|
|
9
|
+
* Read children that are available synchronously during page registration.
|
|
10
|
+
*
|
|
11
|
+
* @internal
|
|
12
|
+
*/
|
|
7
13
|
function getDeclaredComponentChildren(component) {
|
|
8
14
|
const info = component.componentInfo;
|
|
9
15
|
if (!info || typeof info.then === "function")
|
|
@@ -28,6 +34,11 @@ function resolveDescendant(root, path) {
|
|
|
28
34
|
}
|
|
29
35
|
return { component, parent };
|
|
30
36
|
}
|
|
37
|
+
/**
|
|
38
|
+
* Resolve and validate a target against a page's static root components.
|
|
39
|
+
*
|
|
40
|
+
* @internal
|
|
41
|
+
*/
|
|
31
42
|
function resolveComponentTarget(target, roots) {
|
|
32
43
|
const { root, path } = targetParts(target);
|
|
33
44
|
const rootEntry = [...roots].find(([, component]) => component === root);
|
|
@@ -38,7 +49,21 @@ function resolveComponentTarget(target, roots) {
|
|
|
38
49
|
return undefined;
|
|
39
50
|
return { rootKey: rootEntry[0], path, ...descendant };
|
|
40
51
|
}
|
|
52
|
+
/**
|
|
53
|
+
* Build the id the recursive frontend component renderer assigns to a child,
|
|
54
|
+
* from the id it assigned to the child's parent.
|
|
55
|
+
*
|
|
56
|
+
* @internal
|
|
57
|
+
*/
|
|
58
|
+
function childComponentClientId(parentClientId, childId) {
|
|
59
|
+
return `${parentClientId}-child-${childId}`;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Build the id assigned by the recursive frontend component renderer.
|
|
63
|
+
*
|
|
64
|
+
* @internal
|
|
65
|
+
*/
|
|
41
66
|
function componentTargetClientId(target) {
|
|
42
|
-
return
|
|
67
|
+
return target.path.reduce(childComponentClientId, target.rootKey);
|
|
43
68
|
}
|
|
44
69
|
//# sourceMappingURL=component-target.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"component-target.js","sourceRoot":"","sources":["../../../src/page/internal/component-target.ts"],"names":[],"mappings":";;AAyBA,oEASC;AAmCD,wDAUC;AAQD,wDAKC;AAOD,0DAIC;AAvGD,+CAMyB;AAczB;;;;GAIG;AACH,SAAgB,4BAA4B,CAC1C,SAAoB;IAEpB,MAAM,IAAI,GAAG,SAAS,CAAC,aAAa,CAAC;IACrC,IAAI,CAAC,IAAI,IAAI,OAAQ,IAAyB,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,EAAE,CAAC;IAC9E,OAAO,CACJ,IAA8D,CAAC,QAAQ;QACxE,EAAE,CACH,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,MAA4B;IAC/C,OAAO,MAAM,YAAY,2BAAe;QACtC,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,IAAI,2BAAe,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACtC,CAAC;AAOD,SAAS,iBAAiB,CACxB,IAAe,EACf,IAAuB;IAEvB,IAAI,SAAS,GAAG,IAAI,CAAC;IACrB,IAAI,MAA6B,CAAC;IAClC,KAAK,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC;QACtB,MAAM,KAAK,GAAG,4BAA4B,CAAC,SAAS,CAAC,CAAC,IAAI,CACxD,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAC3B,CAAC;QACF,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAC;QAC7B,MAAM,GAAG,SAAS,CAAC;QACnB,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IAC9B,CAAC;IACD,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;AAC/B,CAAC;AAED;;;;GAIG;AACH,SAAgB,sBAAsB,CACpC,MAA4B,EAC5B,KAA6B;IAE7B,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,SAAS,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC;IACzE,IAAI,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC;IACjC,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACjD,IAAI,CAAC,UAAU;QAAE,OAAO,SAAS,CAAC;IAClC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,UAAU,EAAE,CAAC;AACxD,CAAC;AAED;;;;;GAKG;AACH,SAAgB,sBAAsB,CACpC,cAAsB,EACtB,OAAe;IAEf,OAAO,GAAG,cAAc,UAAU,OAAO,EAAE,CAAC;AAC9C,CAAC;AAED;;;;GAIG;AACH,SAAgB,uBAAuB,CACrC,MAA+B;IAE/B,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,sBAAsB,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;AACpE,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Component } from "../../component";
|
|
2
|
+
import type { ComponentTreeNode } from "../component-tree";
|
|
3
|
+
/**
|
|
4
|
+
* Flatten a page component and everything it nests, in registration order
|
|
5
|
+
* (parents before their children), each with the permission id its position
|
|
6
|
+
* gives it.
|
|
7
|
+
*
|
|
8
|
+
* @param root A component the page declares.
|
|
9
|
+
* @param rootPermissionId `<page fullId>.<component key>`.
|
|
10
|
+
*
|
|
11
|
+
* @internal
|
|
12
|
+
*/
|
|
13
|
+
export declare function collectComponentTree(root: Component, rootPermissionId: string): ComponentTreeNode[];
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
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
|
+
/**
|
|
7
|
+
* A child's id is its parent's followed by its own — and so is an action's, so
|
|
8
|
+
* the two share one namespace. A child colliding with an action is withheld
|
|
9
|
+
* rather than registered: the action's grant would otherwise serve it, and
|
|
10
|
+
* either registration would take the other's entry down.
|
|
11
|
+
*/
|
|
12
|
+
function childAccess(parent, childId) {
|
|
13
|
+
if (parent.actions[childId])
|
|
14
|
+
return "withheld";
|
|
15
|
+
return "own";
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Flatten a page component and everything it nests, in registration order
|
|
19
|
+
* (parents before their children), each with the permission id its position
|
|
20
|
+
* gives it.
|
|
21
|
+
*
|
|
22
|
+
* @param root A component the page declares.
|
|
23
|
+
* @param rootPermissionId `<page fullId>.<component key>`.
|
|
24
|
+
*
|
|
25
|
+
* @internal
|
|
26
|
+
*/
|
|
27
|
+
function collectComponentTree(root, rootPermissionId) {
|
|
28
|
+
const nodes = [];
|
|
29
|
+
const ancestors = new Set();
|
|
30
|
+
const walk = (node) => {
|
|
31
|
+
if (ancestors.has(node.component)) {
|
|
32
|
+
logging_1.Logging.Warn(`[dms] component "${node.permissionId}" nests itself; the cycle is not walked further.`);
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
nodes.push(node);
|
|
36
|
+
// Recorded, so the filter knows to withhold it, but not walked: nothing
|
|
37
|
+
// below a position that is never served can be reached either.
|
|
38
|
+
if (node.access === "withheld") {
|
|
39
|
+
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.`);
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
ancestors.add(node.component);
|
|
43
|
+
for (const child of (0, component_target_1.getDeclaredComponentChildren)(node.component)) {
|
|
44
|
+
walk({
|
|
45
|
+
component: child.component,
|
|
46
|
+
permissionId: `${node.permissionId}.${child.id}`,
|
|
47
|
+
depth: node.depth + 1,
|
|
48
|
+
access: childAccess(node.component, child.id),
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
ancestors.delete(node.component);
|
|
52
|
+
};
|
|
53
|
+
walk({
|
|
54
|
+
component: root,
|
|
55
|
+
permissionId: rootPermissionId,
|
|
56
|
+
depth: 0,
|
|
57
|
+
access: "own",
|
|
58
|
+
});
|
|
59
|
+
return nodes;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=component-tree.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"component-tree.js","sourceRoot":"","sources":["../../../src/page/internal/component-tree.ts"],"names":[],"mappings":";;AA0BA,oDA2CC;AArED,gEAA6D;AAE7D,yDAAkE;AAGlE;;;;;GAKG;AACH,SAAS,WAAW,CAAC,MAAiB,EAAE,OAAe;IACrD,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,UAAU,CAAC;IAC/C,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,oBAAoB,CAClC,IAAe,EACf,gBAAwB;IAExB,MAAM,KAAK,GAAwB,EAAE,CAAC;IACtC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAa,CAAC;IAEvC,MAAM,IAAI,GAAG,CAAC,IAAuB,EAAQ,EAAE;QAC7C,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAClC,iBAAO,CAAC,IAAI,CACV,oBAAoB,IAAI,CAAC,YAAY,kDAAkD,CACxF,CAAC;YACF,OAAO;QACT,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,wEAAwE;QACxE,+DAA+D;QAC/D,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YAC/B,iBAAO,CAAC,KAAK,CACX,UAAU,IAAI,CAAC,YAAY,iIAAiI,CAC7J,CAAC;YACF,OAAO;QACT,CAAC;QAED,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9B,KAAK,MAAM,KAAK,IAAI,IAAA,+CAA4B,EAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YACjE,IAAI,CAAC;gBACH,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,YAAY,EAAE,GAAG,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC,EAAE,EAAE;gBAChD,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC;gBACrB,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC;aAC9C,CAAC,CAAC;QACL,CAAC;QACD,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC,CAAC;IAEF,IAAI,CAAC;QACH,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,gBAAgB;QAC9B,KAAK,EAAE,CAAC;QACR,MAAM,EAAE,KAAK;KACd,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
import type { ComponentInfoSerialized } from "
|
|
2
|
-
import type { PageExtensionComponent } from "
|
|
1
|
+
import type { ComponentInfoSerialized } from "../../component";
|
|
2
|
+
import type { PageExtensionComponent } from "../types";
|
|
3
|
+
/** @internal */
|
|
3
4
|
export interface PageExtensionEntry extends PageExtensionComponent {
|
|
4
5
|
extensionName: string;
|
|
5
6
|
declarationIndex: number;
|
|
7
|
+
/** Unset while the component is being processed, or if processing failed. */
|
|
6
8
|
serialized?: ComponentInfoSerialized;
|
|
7
9
|
}
|
|
10
|
+
/** @internal */
|
|
8
11
|
export declare function assembleLayoutComponents(own: Record<string, ComponentInfoSerialized>, entries: PageExtensionEntry[]): Record<string, ComponentInfoSerialized>;
|
|
@@ -7,6 +7,13 @@ function compareText(a, b) {
|
|
|
7
7
|
return 0;
|
|
8
8
|
return a < b ? -1 : 1;
|
|
9
9
|
}
|
|
10
|
+
// Placement is anchor-relative first; the comparator only breaks ties inside a
|
|
11
|
+
// single anchor group (or the appended tail). Every criterion after `order` is
|
|
12
|
+
// intrinsic to the declaration — never the order the modules were started in —
|
|
13
|
+
// so the same set of extensions always assembles the same page. Comparison is
|
|
14
|
+
// codepoint-wise rather than locale-aware for the same reason. `key` closes the
|
|
15
|
+
// total order: keys are unique on a page, a collision being a registration
|
|
16
|
+
// error.
|
|
10
17
|
function compareExtensionEntries(a, b) {
|
|
11
18
|
return (a.order - b.order ||
|
|
12
19
|
compareText(a.extensionName, b.extensionName) ||
|
|
@@ -76,6 +83,7 @@ function assembleNestedComponent(component, path, entries) {
|
|
|
76
83
|
}
|
|
77
84
|
return { ...component, children: assembled };
|
|
78
85
|
}
|
|
86
|
+
/** @internal */
|
|
79
87
|
function assembleLayoutComponents(own, entries) {
|
|
80
88
|
if (entries.length === 0) {
|
|
81
89
|
return { ...own };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extension-assembly.js","sourceRoot":"","sources":["../../../src/page/internal/extension-assembly.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { ComponentInfoSerialized } from "../../component";
|
|
2
|
+
import type { PageExtensionInfo } from "../types";
|
|
3
|
+
/**
|
|
4
|
+
* The target page as an extension sees it when the injection applies: its own
|
|
5
|
+
* serialized components, and every component key already spoken for on the
|
|
6
|
+
* page — its own fields and the ones earlier extensions injected — mapped to
|
|
7
|
+
* whoever owns it. A page's keys share one namespace because they share one
|
|
8
|
+
* permission subtree.
|
|
9
|
+
*
|
|
10
|
+
* @internal
|
|
11
|
+
*/
|
|
12
|
+
export interface ExtensionTargetView {
|
|
13
|
+
own: Record<string, ComponentInfoSerialized>;
|
|
14
|
+
taken: Map<string, string>;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Everything wrong with an extension, read against the page it is about to be
|
|
18
|
+
* grafted onto. Reported rather than thrown: the extending module declared it
|
|
19
|
+
* against a page id, so nothing could be checked when it was declared, and a
|
|
20
|
+
* mistake there must cost that extension, not the DMS.
|
|
21
|
+
*
|
|
22
|
+
* @internal
|
|
23
|
+
*/
|
|
24
|
+
export declare function collectExtensionErrors(info: PageExtensionInfo, target: ExtensionTargetView): string[];
|
|
@@ -31,6 +31,14 @@ function anchorErrors(info, contribution, own) {
|
|
|
31
31
|
}
|
|
32
32
|
return [];
|
|
33
33
|
}
|
|
34
|
+
/**
|
|
35
|
+
* Everything wrong with an extension, read against the page it is about to be
|
|
36
|
+
* grafted onto. Reported rather than thrown: the extending module declared it
|
|
37
|
+
* against a page id, so nothing could be checked when it was declared, and a
|
|
38
|
+
* mistake there must cost that extension, not the DMS.
|
|
39
|
+
*
|
|
40
|
+
* @internal
|
|
41
|
+
*/
|
|
34
42
|
function collectExtensionErrors(info, target) {
|
|
35
43
|
const errors = [];
|
|
36
44
|
for (const contribution of info.components) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extension-validation.js","sourceRoot":"","sources":["../../../src/page/internal/extension-validation.ts"],"names":[],"mappings":";;AAkEA,wDAeC;AAhED,SAAS,UAAU,CACjB,SAA8C;IAE9C,OAAO,SAAS,EAAE,QAAQ,IAAI,EAAE,CAAC;AACnC,CAAC;AAED,SAAS,aAAa,CACpB,GAA4C,EAC5C,IAAuB;IAEvB,MAAM,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC;IACpC,IAAI,OAAO,GAAwC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IACtE,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;QAC1B,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,CAAC;IAC5E,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,YAAY,CACnB,IAAuB,EACvB,YAAoC,EACpC,GAA4C;IAE5C,MAAM,IAAI,GAAG,YAAY,CAAC,UAAU,CAAC;IACrC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAC1C,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC;QAC9B,OAAO;YACL,mBAAmB,IAAI,CAAC,aAAa,cAAc,YAAY,CAAC,GAAG,SAAS,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,kBAAkB,IAAI,CAAC,YAAY,qBAAqB;SACnJ,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEjC,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;QACtE,OAAO;YACL,mBAAmB,IAAI,CAAC,aAAa,oBAAoB,YAAY,CAAC,GAAG,cAAc,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,YAAY,0EAA0E;SAC/M,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,sBAAsB,CACpC,IAAuB,EACvB,MAA2B;IAE3B,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,YAAY,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACjD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,CAAC,IAAI,CACT,mBAAmB,IAAI,CAAC,aAAa,cAAc,YAAY,CAAC,GAAG,gBAAgB,IAAI,CAAC,YAAY,uCAAuC,KAAK,sBAAsB,CACvK,CAAC;QACJ,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One page-mode form sub-page a table view is about to register.
|
|
3
|
+
*
|
|
4
|
+
* @internal
|
|
5
|
+
*/
|
|
6
|
+
export interface FormPageRouteClaim {
|
|
7
|
+
/** Permission id of the table view registering it. */
|
|
8
|
+
owner: string;
|
|
9
|
+
/** Page carrying the table view. */
|
|
10
|
+
pageFullId: string;
|
|
11
|
+
/** `new`, `edit` or `view`. */
|
|
12
|
+
kind: string;
|
|
13
|
+
fullId: string;
|
|
14
|
+
fullSlug: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Record a form sub-page a table view is about to register, refusing one that
|
|
18
|
+
* another table view already holds.
|
|
19
|
+
*
|
|
20
|
+
* A claim only stands in the way while the page it named is live: the same
|
|
21
|
+
* table view re-registering after a hot reload re-claims what it held, and a
|
|
22
|
+
* page that went away releases its id and its slug through its own teardown.
|
|
23
|
+
*
|
|
24
|
+
* @internal
|
|
25
|
+
*/
|
|
26
|
+
export declare function claimFormPageRoute(claim: FormPageRouteClaim): void;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.claimFormPageRoute = claimFormPageRoute;
|
|
4
|
+
const registry_1 = require("./registry");
|
|
5
|
+
const form_page_routes_1 = require("../form-page-routes");
|
|
6
|
+
const claimsByFullId = new Map();
|
|
7
|
+
const claimsBySlug = new Map();
|
|
8
|
+
function conflict(held, claim, what) {
|
|
9
|
+
throw new form_page_routes_1.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.`);
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Record a form sub-page a table view is about to register, refusing one that
|
|
13
|
+
* another table view already holds.
|
|
14
|
+
*
|
|
15
|
+
* A claim only stands in the way while the page it named is live: the same
|
|
16
|
+
* table view re-registering after a hot reload re-claims what it held, and a
|
|
17
|
+
* page that went away releases its id and its slug through its own teardown.
|
|
18
|
+
*
|
|
19
|
+
* @internal
|
|
20
|
+
*/
|
|
21
|
+
function claimFormPageRoute(claim) {
|
|
22
|
+
const byId = claimsByFullId.get(claim.fullId);
|
|
23
|
+
if (byId &&
|
|
24
|
+
byId.owner !== claim.owner &&
|
|
25
|
+
registry_1.pageMetadataByFullId.has(claim.fullId)) {
|
|
26
|
+
conflict(byId, claim, `under the id "${claim.fullId}"`);
|
|
27
|
+
}
|
|
28
|
+
const bySlug = claimsBySlug.get(claim.fullSlug);
|
|
29
|
+
if (bySlug &&
|
|
30
|
+
bySlug.owner !== claim.owner &&
|
|
31
|
+
registry_1.pageLayoutHandlers.has(claim.fullSlug)) {
|
|
32
|
+
conflict(bySlug, claim, `at "${claim.fullSlug}"`);
|
|
33
|
+
}
|
|
34
|
+
if (byId && byId.fullSlug !== claim.fullSlug) {
|
|
35
|
+
claimsBySlug.delete(byId.fullSlug);
|
|
36
|
+
}
|
|
37
|
+
claimsByFullId.set(claim.fullId, claim);
|
|
38
|
+
claimsBySlug.set(claim.fullSlug, claim);
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=form-page-routes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-page-routes.js","sourceRoot":"","sources":["../../../src/page/internal/form-page-routes.ts"],"names":[],"mappings":";;AA0CA,gDAwBC;AAlED,yCAAsE;AACtE,0DAAiE;AAkBjE,MAAM,cAAc,GAAG,IAAI,GAAG,EAA8B,CAAC;AAC7D,MAAM,YAAY,GAAG,IAAI,GAAG,EAA8B,CAAC;AAE3D,SAAS,QAAQ,CACf,IAAwB,EACxB,KAAyB,EACzB,IAAY;IAEZ,MAAM,IAAI,6CAA0B,CAClC,oBAAoB,IAAI,CAAC,KAAK,oBAAoB,KAAK,CAAC,KAAK,cAAc,KAAK,CAAC,UAAU,0BAA0B,KAAK,CAAC,IAAI,eAAe,IAAI,gEAAgE,KAAK,CAAC,IAAI,WAAW,CACxO,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,kBAAkB,CAAC,KAAyB;IAC1D,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC9C,IACE,IAAI;QACJ,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK;QAC1B,+BAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EACtC,CAAC;QACD,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,iBAAiB,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAChD,IACE,MAAM;QACN,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK;QAC5B,6BAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,EACtC,CAAC;QACD,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC7C,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC;IACD,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACxC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC1C,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { ComponentInfo, ComponentFilterContext, ComponentInfoSerialized } from "../../component";
|
|
2
|
+
/**
|
|
3
|
+
* The page layout (the frame around the components) as one caller may see it:
|
|
4
|
+
* the header buttons whose gate the caller fails are left out — a `permission`
|
|
5
|
+
* names an action of the page, relative to `pagePermissionId` — and those
|
|
6
|
+
* whose `availability` refuses the request are disabled with its reason.
|
|
7
|
+
* `loadPermissions` is only called when a button declares a permission.
|
|
8
|
+
*
|
|
9
|
+
* @internal
|
|
10
|
+
*/
|
|
11
|
+
export declare function filterLayoutHeaderActions<T>(layout: ComponentInfo<T> | undefined, loadPermissions: () => Promise<Set<string>>, context: ComponentFilterContext, pagePermissionId: string | undefined): Promise<ComponentInfo<T> | undefined>;
|
|
12
|
+
/**
|
|
13
|
+
* The layout with, after its own header buttons, those the components of the
|
|
14
|
+
* page place in the header (`placement: "header"`): served as the components
|
|
15
|
+
* were, so a button whose permission the caller lacks is already gone, and a
|
|
16
|
+
* disabled one keeps its reason. The component still runs them: the header
|
|
17
|
+
* names it.
|
|
18
|
+
*
|
|
19
|
+
* @internal
|
|
20
|
+
*/
|
|
21
|
+
export declare function withComponentHeaderButtons<T>(layout: ComponentInfo<T> | undefined, components: Record<string, ComponentInfoSerialized>): ComponentInfo<T> | undefined;
|