@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,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getAuthenticatedRequestTenantId = getAuthenticatedRequestTenantId;
|
|
4
|
+
exports.resolveRequestPrincipal = resolveRequestPrincipal;
|
|
5
|
+
const interface_api_1 = require("@antelopejs/interface-api");
|
|
6
|
+
const HTTP_UNAUTHORIZED = 401;
|
|
7
|
+
const requestPrincipals = new WeakMap();
|
|
8
|
+
const pendingAuthentications = new WeakMap();
|
|
9
|
+
function unauthorized() {
|
|
10
|
+
return new interface_api_1.HTTPResult(HTTP_UNAUTHORIZED, "Unauthorized");
|
|
11
|
+
}
|
|
12
|
+
/** @internal Read only a successfully authenticated, unchanged request's tenant. */
|
|
13
|
+
function getAuthenticatedRequestTenantId(ctx) {
|
|
14
|
+
const state = requestPrincipals.get(ctx.rawRequest);
|
|
15
|
+
if (!state)
|
|
16
|
+
return undefined;
|
|
17
|
+
if (!state.principal ||
|
|
18
|
+
state.authorization !== ctx.rawRequest.headers.authorization) {
|
|
19
|
+
throw unauthorized();
|
|
20
|
+
}
|
|
21
|
+
return state.principal.tenantId;
|
|
22
|
+
}
|
|
23
|
+
function readBearerToken(authorization) {
|
|
24
|
+
const match = authorization?.match(/^Bearer\s+(\S+)$/i);
|
|
25
|
+
if (!match)
|
|
26
|
+
throw unauthorized();
|
|
27
|
+
return match[1];
|
|
28
|
+
}
|
|
29
|
+
function assertPrincipal(principal, previous) {
|
|
30
|
+
if (typeof principal?.user?._id !== "string" ||
|
|
31
|
+
!principal?.user?._id ||
|
|
32
|
+
typeof principal.tenantId !== "string" ||
|
|
33
|
+
!principal.tenantId) {
|
|
34
|
+
throw unauthorized();
|
|
35
|
+
}
|
|
36
|
+
if (previous &&
|
|
37
|
+
(previous.userId !== principal.user._id ||
|
|
38
|
+
previous.tenantId !== principal.tenantId)) {
|
|
39
|
+
throw unauthorized();
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/** @internal Revalidate on every call; failures poison tenant resolution for this request. */
|
|
43
|
+
async function resolveRequestPrincipal(ctx, authenticators, authenticateJwt) {
|
|
44
|
+
const pending = pendingAuthentications.get(ctx.rawRequest) ?? Promise.resolve();
|
|
45
|
+
const result = pending.then(() => verifyRequestPrincipal(ctx, authenticators, authenticateJwt));
|
|
46
|
+
pendingAuthentications.set(ctx.rawRequest, result);
|
|
47
|
+
try {
|
|
48
|
+
return await result;
|
|
49
|
+
}
|
|
50
|
+
finally {
|
|
51
|
+
if (pendingAuthentications.get(ctx.rawRequest) === result) {
|
|
52
|
+
pendingAuthentications.delete(ctx.rawRequest);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
async function verifyRequestPrincipal(ctx, authenticators, authenticateJwt) {
|
|
57
|
+
const request = ctx.rawRequest;
|
|
58
|
+
const authorization = request.headers.authorization;
|
|
59
|
+
const previous = requestPrincipals.get(request);
|
|
60
|
+
const state = { authorization };
|
|
61
|
+
requestPrincipals.set(request, state);
|
|
62
|
+
if (previous &&
|
|
63
|
+
(!previous.principal || previous.authorization !== authorization)) {
|
|
64
|
+
throw unauthorized();
|
|
65
|
+
}
|
|
66
|
+
const token = readBearerToken(authorization);
|
|
67
|
+
const handlers = authenticators.filter((handler) => handler.recognizes(token));
|
|
68
|
+
if (handlers.length > 1)
|
|
69
|
+
throw unauthorized();
|
|
70
|
+
const principal = handlers.length
|
|
71
|
+
? await handlers[0].authenticate(token)
|
|
72
|
+
: await authenticateJwt(token);
|
|
73
|
+
assertPrincipal(principal, previous?.principal);
|
|
74
|
+
if (requestPrincipals.get(request) !== state ||
|
|
75
|
+
request.headers.authorization !== authorization) {
|
|
76
|
+
throw unauthorized();
|
|
77
|
+
}
|
|
78
|
+
const snapshot = { tenantId: principal.tenantId, userId: principal.user._id };
|
|
79
|
+
requestPrincipals.set(request, { authorization, principal: snapshot });
|
|
80
|
+
return principal;
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=request-authenticators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-authenticators.js","sourceRoot":"","sources":["../../../src/auth/internal/request-authenticators.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type RequestContext } from "@antelopejs/interface-api";
|
|
2
|
+
import type { RequestAuthenticator, RequestPrincipal } from "../request-authenticators";
|
|
3
|
+
/**
|
|
4
|
+
* Authenticate with route-local credential handlers, otherwise the existing JWT interfaces.
|
|
5
|
+
* Recognized failures and ambiguous handlers never fall back to JWT. Every call revalidates;
|
|
6
|
+
* repeat calls must retain the same credential, user and tenant. No permissions are granted.
|
|
7
|
+
*
|
|
8
|
+
* @internal
|
|
9
|
+
*/
|
|
10
|
+
export declare function authenticateRequestPrincipal(ctx: RequestContext, authenticators?: readonly RequestAuthenticator[]): Promise<RequestPrincipal>;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.authenticateRequestPrincipal = authenticateRequestPrincipal;
|
|
4
|
+
const interface_api_1 = require("@antelopejs/interface-api");
|
|
5
|
+
const constants_1 = require("../../constants");
|
|
6
|
+
const request_authenticators_1 = require("./request-authenticators");
|
|
7
|
+
const auth_1 = require("../../auth");
|
|
8
|
+
const HTTP_UNAUTHORIZED = 401;
|
|
9
|
+
const UNAUTHORIZED_MESSAGE = "Unauthorized";
|
|
10
|
+
/**
|
|
11
|
+
* Authenticate with route-local credential handlers, otherwise the existing JWT interfaces.
|
|
12
|
+
* Recognized failures and ambiguous handlers never fall back to JWT. Every call revalidates;
|
|
13
|
+
* repeat calls must retain the same credential, user and tenant. No permissions are granted.
|
|
14
|
+
*
|
|
15
|
+
* @internal
|
|
16
|
+
*/
|
|
17
|
+
async function authenticateRequestPrincipal(ctx, authenticators = []) {
|
|
18
|
+
return (0, request_authenticators_1.resolveRequestPrincipal)(ctx, authenticators, async (token) => {
|
|
19
|
+
const decoded = await auth_1.internal.AuthUserAuthenticator(token);
|
|
20
|
+
const user = await auth_1.internal.AuthUserValidator(decoded);
|
|
21
|
+
if (!user || typeof user === "boolean") {
|
|
22
|
+
throw new interface_api_1.HTTPResult(HTTP_UNAUTHORIZED, UNAUTHORIZED_MESSAGE);
|
|
23
|
+
}
|
|
24
|
+
return { user, tenantId: decoded.tenantId || constants_1.DEFAULT_TENANT_ID };
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=request-principal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-principal.js","sourceRoot":"","sources":["../../../src/auth/internal/request-principal.ts"],"names":[],"mappings":";;AAmBA,oEAYC;AA/BD,6DAA4E;AAC5E,+CAAoD;AAKpD,qEAAmE;AACnE,qCAAsC;AAEtC,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAC9B,MAAM,oBAAoB,GAAG,cAAc,CAAC;AAE5C;;;;;;GAMG;AACI,KAAK,UAAU,4BAA4B,CAChD,GAAmB,EACnB,iBAAkD,EAAE;IAEpD,OAAO,IAAA,gDAAuB,EAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;QAClE,MAAM,OAAO,GAAG,MAAM,eAAQ,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAC5D,MAAM,IAAI,GAAG,MAAM,eAAQ,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QACvD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,SAAS,EAAE,CAAC;YACvC,MAAM,IAAI,0BAAU,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,CAAC;QAChE,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,6BAAiB,EAAE,CAAC;IACnE,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-agent.js","sourceRoot":"","sources":["../../../src/auth/internal/user-agent.ts"],"names":[],"mappings":""}
|
package/dist/auth/password.d.ts
CHANGED
|
@@ -1,3 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The DMS password policy, shared by every flow that sets a password: the DMS
|
|
3
|
+
* signup, admin onboarding and password recovery, and any module owning its
|
|
4
|
+
* own registration flow (a SaaS public signup, for instance). Plain values and
|
|
5
|
+
* a pure function: nothing here needs the DMS to be loaded.
|
|
6
|
+
*/
|
|
7
|
+
/** Minimum number of characters a password must have. */
|
|
1
8
|
export declare const PASSWORD_MIN_LENGTH = 8;
|
|
9
|
+
/**
|
|
10
|
+
* The character rules of the policy, without the length: at least one
|
|
11
|
+
* uppercase letter, one digit and one of `@$!%*?&`, and only ASCII letters,
|
|
12
|
+
* digits and those special characters.
|
|
13
|
+
*/
|
|
2
14
|
export declare const PASSWORD_PATTERN: RegExp;
|
|
15
|
+
/**
|
|
16
|
+
* Whether a password satisfies the DMS password policy: at least
|
|
17
|
+
* `PASSWORD_MIN_LENGTH` characters and every rule of `PASSWORD_PATTERN`.
|
|
18
|
+
*
|
|
19
|
+
* @param password Candidate password, in clear
|
|
20
|
+
* @returns True when the DMS would accept the password
|
|
21
|
+
*/
|
|
3
22
|
export declare function isPasswordCompliant(password: string): boolean;
|
package/dist/auth/password.js
CHANGED
|
@@ -1,10 +1,33 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* The DMS password policy, shared by every flow that sets a password: the DMS
|
|
4
|
+
* signup, admin onboarding and password recovery, and any module owning its
|
|
5
|
+
* own registration flow (a SaaS public signup, for instance). Plain values and
|
|
6
|
+
* a pure function: nothing here needs the DMS to be loaded.
|
|
7
|
+
*/
|
|
2
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
9
|
exports.PASSWORD_PATTERN = exports.PASSWORD_MIN_LENGTH = void 0;
|
|
4
10
|
exports.isPasswordCompliant = isPasswordCompliant;
|
|
11
|
+
/** Minimum number of characters a password must have. */
|
|
5
12
|
exports.PASSWORD_MIN_LENGTH = 8;
|
|
13
|
+
/**
|
|
14
|
+
* The special characters a password may contain. A password needs at least
|
|
15
|
+
* one of them, and no other non-alphanumeric character is allowed.
|
|
16
|
+
*/
|
|
6
17
|
const ALLOWED_SPECIAL_CHARS = "@$!%*?&";
|
|
18
|
+
/**
|
|
19
|
+
* The character rules of the policy, without the length: at least one
|
|
20
|
+
* uppercase letter, one digit and one of `@$!%*?&`, and only ASCII letters,
|
|
21
|
+
* digits and those special characters.
|
|
22
|
+
*/
|
|
7
23
|
exports.PASSWORD_PATTERN = new RegExp(`^(?=.*[A-Z])(?=.*\\d)(?=.*[${ALLOWED_SPECIAL_CHARS}])[A-Za-z\\d${ALLOWED_SPECIAL_CHARS}]+$`);
|
|
24
|
+
/**
|
|
25
|
+
* Whether a password satisfies the DMS password policy: at least
|
|
26
|
+
* `PASSWORD_MIN_LENGTH` characters and every rule of `PASSWORD_PATTERN`.
|
|
27
|
+
*
|
|
28
|
+
* @param password Candidate password, in clear
|
|
29
|
+
* @returns True when the DMS would accept the password
|
|
30
|
+
*/
|
|
8
31
|
function isPasswordCompliant(password) {
|
|
9
32
|
return (password.length >= exports.PASSWORD_MIN_LENGTH && exports.PASSWORD_PATTERN.test(password));
|
|
10
33
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"password.js","sourceRoot":"","sources":["../../src/auth/password.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"password.js","sourceRoot":"","sources":["../../src/auth/password.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AA2BH,kDAIC;AA7BD,yDAAyD;AAC5C,QAAA,mBAAmB,GAAG,CAAC,CAAC;AAErC;;;GAGG;AACH,MAAM,qBAAqB,GAAG,SAAS,CAAC;AAExC;;;;GAIG;AACU,QAAA,gBAAgB,GAAG,IAAI,MAAM,CACxC,8BAA8B,qBAAqB,eAAe,qBAAqB,KAAK,CAC7F,CAAC;AAEF;;;;;;GAMG;AACH,SAAgB,mBAAmB,CAAC,QAAgB;IAClD,OAAO,CACL,QAAQ,CAAC,MAAM,IAAI,2BAAmB,IAAI,wBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAC1E,CAAC;AACJ,CAAC"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import { type RequestContext } from "@antelopejs/interface-api";
|
|
2
1
|
import type { User } from "./db";
|
|
2
|
+
/** Identity and tenant established together by a verified credential, not authorization. */
|
|
3
3
|
export interface RequestPrincipal {
|
|
4
4
|
user: User;
|
|
5
5
|
tenantId: string;
|
|
6
6
|
}
|
|
7
|
+
/** A route-local credential handler. Recognition must include malformed owned credentials. */
|
|
7
8
|
export interface RequestAuthenticator {
|
|
9
|
+
/** Claim this credential family without treating its contents as trusted. */
|
|
8
10
|
recognizes(token: string): boolean;
|
|
11
|
+
/** Verify the credential and reload its user; throw on invalid, expired or revoked credentials. */
|
|
9
12
|
authenticate(token: string): Promise<RequestPrincipal>;
|
|
10
13
|
}
|
|
11
|
-
export declare function getAuthenticatedRequestTenantId(ctx: RequestContext): string | undefined;
|
|
12
|
-
export declare function resolveRequestPrincipal(ctx: RequestContext, authenticators: readonly RequestAuthenticator[], authenticateJwt: (token: string) => Promise<RequestPrincipal>): Promise<RequestPrincipal>;
|
|
@@ -1,80 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getAuthenticatedRequestTenantId = getAuthenticatedRequestTenantId;
|
|
4
|
-
exports.resolveRequestPrincipal = resolveRequestPrincipal;
|
|
5
|
-
const interface_api_1 = require("@antelopejs/interface-api");
|
|
6
|
-
const HTTP_UNAUTHORIZED = 401;
|
|
7
|
-
const requestPrincipals = new WeakMap();
|
|
8
|
-
const pendingAuthentications = new WeakMap();
|
|
9
|
-
function unauthorized() {
|
|
10
|
-
return new interface_api_1.HTTPResult(HTTP_UNAUTHORIZED, "Unauthorized");
|
|
11
|
-
}
|
|
12
|
-
function getAuthenticatedRequestTenantId(ctx) {
|
|
13
|
-
const state = requestPrincipals.get(ctx.rawRequest);
|
|
14
|
-
if (!state)
|
|
15
|
-
return undefined;
|
|
16
|
-
if (!state.principal ||
|
|
17
|
-
state.authorization !== ctx.rawRequest.headers.authorization) {
|
|
18
|
-
throw unauthorized();
|
|
19
|
-
}
|
|
20
|
-
return state.principal.tenantId;
|
|
21
|
-
}
|
|
22
|
-
function readBearerToken(authorization) {
|
|
23
|
-
const match = authorization?.match(/^Bearer\s+(\S+)$/i);
|
|
24
|
-
if (!match)
|
|
25
|
-
throw unauthorized();
|
|
26
|
-
return match[1];
|
|
27
|
-
}
|
|
28
|
-
function assertPrincipal(principal, previous) {
|
|
29
|
-
if (typeof principal?.user?._id !== "string" ||
|
|
30
|
-
!principal?.user?._id ||
|
|
31
|
-
typeof principal.tenantId !== "string" ||
|
|
32
|
-
!principal.tenantId) {
|
|
33
|
-
throw unauthorized();
|
|
34
|
-
}
|
|
35
|
-
if (previous &&
|
|
36
|
-
(previous.userId !== principal.user._id ||
|
|
37
|
-
previous.tenantId !== principal.tenantId)) {
|
|
38
|
-
throw unauthorized();
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
async function resolveRequestPrincipal(ctx, authenticators, authenticateJwt) {
|
|
42
|
-
const pending = pendingAuthentications.get(ctx.rawRequest) ?? Promise.resolve();
|
|
43
|
-
const result = pending.then(() => verifyRequestPrincipal(ctx, authenticators, authenticateJwt));
|
|
44
|
-
pendingAuthentications.set(ctx.rawRequest, result);
|
|
45
|
-
try {
|
|
46
|
-
return await result;
|
|
47
|
-
}
|
|
48
|
-
finally {
|
|
49
|
-
if (pendingAuthentications.get(ctx.rawRequest) === result) {
|
|
50
|
-
pendingAuthentications.delete(ctx.rawRequest);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
async function verifyRequestPrincipal(ctx, authenticators, authenticateJwt) {
|
|
55
|
-
const request = ctx.rawRequest;
|
|
56
|
-
const authorization = request.headers.authorization;
|
|
57
|
-
const previous = requestPrincipals.get(request);
|
|
58
|
-
const state = { authorization };
|
|
59
|
-
requestPrincipals.set(request, state);
|
|
60
|
-
if (previous &&
|
|
61
|
-
(!previous.principal || previous.authorization !== authorization)) {
|
|
62
|
-
throw unauthorized();
|
|
63
|
-
}
|
|
64
|
-
const token = readBearerToken(authorization);
|
|
65
|
-
const handlers = authenticators.filter((handler) => handler.recognizes(token));
|
|
66
|
-
if (handlers.length > 1)
|
|
67
|
-
throw unauthorized();
|
|
68
|
-
const principal = handlers.length
|
|
69
|
-
? await handlers[0].authenticate(token)
|
|
70
|
-
: await authenticateJwt(token);
|
|
71
|
-
assertPrincipal(principal, previous?.principal);
|
|
72
|
-
if (requestPrincipals.get(request) !== state ||
|
|
73
|
-
request.headers.authorization !== authorization) {
|
|
74
|
-
throw unauthorized();
|
|
75
|
-
}
|
|
76
|
-
const snapshot = { tenantId: principal.tenantId, userId: principal.user._id };
|
|
77
|
-
requestPrincipals.set(request, { authorization, principal: snapshot });
|
|
78
|
-
return principal;
|
|
79
|
-
}
|
|
80
3
|
//# sourceMappingURL=request-authenticators.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-authenticators.js","sourceRoot":"","sources":["../../src/auth/request-authenticators.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"request-authenticators.js","sourceRoot":"","sources":["../../src/auth/request-authenticators.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
import { ComponentBuilder } from "../component";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { type BlockItemsSource, type BlockLinkAction } from "./display";
|
|
4
|
+
import type { BaseComponentProps } from "./types";
|
|
5
|
+
import { type Tone } from "./types/tone";
|
|
6
|
+
/** One entry of an activity feed. */
|
|
7
|
+
export interface ActivityFeedItem {
|
|
8
|
+
id?: string;
|
|
9
|
+
/** Icon of the entry's well, e.g. `i-ph-check-circle`. */
|
|
10
|
+
icon?: string;
|
|
11
|
+
tone?: Tone;
|
|
12
|
+
/** Title (i18n key with `$` or literal). */
|
|
13
|
+
title: string;
|
|
14
|
+
/** Details under the title, joined by "·". */
|
|
15
|
+
meta?: string[];
|
|
16
|
+
/**
|
|
17
|
+
* Values the title and the details interpolate (`{device}`) when they are
|
|
18
|
+
* i18n keys. A value written as a `$`-prefixed key is translated first,
|
|
19
|
+
* with the item's other values: `{ device: "$…device", browser: "Chrome",
|
|
20
|
+
* os: "Windows" }`.
|
|
21
|
+
*/
|
|
22
|
+
params?: Record<string, string>;
|
|
23
|
+
/** ISO date: files the entry under its day and gives its time. */
|
|
24
|
+
date?: string;
|
|
25
|
+
/** Literal trailing text, in place of the formatted time. */
|
|
26
|
+
time?: string;
|
|
27
|
+
/** Accent dot after the time. */
|
|
28
|
+
unread?: boolean;
|
|
29
|
+
/** Path the entry links to. */
|
|
30
|
+
to?: string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* The options `ActivityFeed` takes. Its `fetchUrl` answers `{ items }`, newest
|
|
34
|
+
* first, like every list block.
|
|
35
|
+
*/
|
|
36
|
+
export interface ActivityFeedProps extends BaseComponentProps, BlockItemsSource {
|
|
37
|
+
/** Eyebrow title of the card head. */
|
|
38
|
+
title?: string;
|
|
39
|
+
/** Entries shown when no data source is set, newest first. */
|
|
40
|
+
items?: ActivityFeedItem[];
|
|
41
|
+
/**
|
|
42
|
+
* Files the entries under day separators ("Today · Sep 29") with their time.
|
|
43
|
+
* Off, each entry says how long ago it happened. Defaults to `true`.
|
|
44
|
+
*/
|
|
45
|
+
groupByDay?: boolean;
|
|
46
|
+
/** Shows at most this many entries; `skeletonCount` never exceeds it. */
|
|
47
|
+
maxItems?: number;
|
|
48
|
+
/** Link buttons in the card head ("View all"). */
|
|
49
|
+
actions?: BlockLinkAction[];
|
|
50
|
+
/** Mono titles and details (paths, queries, request logs). */
|
|
51
|
+
mono?: boolean;
|
|
52
|
+
/** Card frame with a head. Defaults to `true`. */
|
|
53
|
+
card?: boolean;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* ActivityFeed - a feed of events, grouped by day.
|
|
57
|
+
*
|
|
58
|
+
* Static entries or a data source; each entry has a tinted icon well, a title,
|
|
59
|
+
* dimmed details and its time. Shows a skeleton while loading, an empty state
|
|
60
|
+
* and a retry on error.
|
|
61
|
+
*
|
|
62
|
+
* @example
|
|
63
|
+
* ```typescript
|
|
64
|
+
* ActivityFeed({
|
|
65
|
+
* title: "Activity",
|
|
66
|
+
* fetchUrl: "/api/activity",
|
|
67
|
+
* maxItems: 8,
|
|
68
|
+
* actions: [{ label: "View all", to: "/audit" }],
|
|
69
|
+
* })
|
|
70
|
+
* ```
|
|
71
|
+
*/
|
|
72
|
+
export declare function ActivityFeed(options?: ActivityFeedProps): ComponentBuilder<ActivityFeedProps>;
|
|
73
|
+
/** The options `ActivityFeed` accepts. */
|
|
74
|
+
export declare const ActivityFeedSchema: z.ZodObject<{
|
|
75
|
+
mono: z.ZodOptional<z.ZodBoolean>;
|
|
76
|
+
card: z.ZodDefault<z.ZodBoolean>;
|
|
77
|
+
fetchUrl: z.ZodOptional<z.ZodString>;
|
|
78
|
+
fetchUrlMethod: z.ZodOptional<z.ZodNativeEnum<typeof import("./types").HttpMethod>>;
|
|
79
|
+
empty: z.ZodOptional<z.ZodObject<{
|
|
80
|
+
title: z.ZodString;
|
|
81
|
+
description: z.ZodOptional<z.ZodString>;
|
|
82
|
+
}, "strip", z.ZodTypeAny, {
|
|
83
|
+
title: string;
|
|
84
|
+
description?: string | undefined;
|
|
85
|
+
}, {
|
|
86
|
+
title: string;
|
|
87
|
+
description?: string | undefined;
|
|
88
|
+
}>>;
|
|
89
|
+
skeletonCount: z.ZodOptional<z.ZodNumber>;
|
|
90
|
+
title: z.ZodOptional<z.ZodString>;
|
|
91
|
+
items: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
92
|
+
id: z.ZodOptional<z.ZodString>;
|
|
93
|
+
icon: z.ZodOptional<z.ZodString>;
|
|
94
|
+
tone: z.ZodOptional<z.ZodEnum<["primary" | "secondary" | "success" | "info" | "warning" | "error" | "neutral", ...("primary" | "secondary" | "success" | "info" | "warning" | "error" | "neutral")[]]>>;
|
|
95
|
+
title: z.ZodString;
|
|
96
|
+
meta: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
97
|
+
params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
98
|
+
date: z.ZodOptional<z.ZodString>;
|
|
99
|
+
time: z.ZodOptional<z.ZodString>;
|
|
100
|
+
unread: z.ZodOptional<z.ZodBoolean>;
|
|
101
|
+
to: z.ZodOptional<z.ZodString>;
|
|
102
|
+
}, "strip", z.ZodTypeAny, {
|
|
103
|
+
title: string;
|
|
104
|
+
date?: string | undefined;
|
|
105
|
+
time?: string | undefined;
|
|
106
|
+
params?: Record<string, string> | undefined;
|
|
107
|
+
id?: string | undefined;
|
|
108
|
+
icon?: string | undefined;
|
|
109
|
+
meta?: string[] | undefined;
|
|
110
|
+
to?: string | undefined;
|
|
111
|
+
tone?: "primary" | "secondary" | "success" | "info" | "warning" | "error" | "neutral" | undefined;
|
|
112
|
+
unread?: boolean | undefined;
|
|
113
|
+
}, {
|
|
114
|
+
title: string;
|
|
115
|
+
date?: string | undefined;
|
|
116
|
+
time?: string | undefined;
|
|
117
|
+
params?: Record<string, string> | undefined;
|
|
118
|
+
id?: string | undefined;
|
|
119
|
+
icon?: string | undefined;
|
|
120
|
+
meta?: string[] | undefined;
|
|
121
|
+
to?: string | undefined;
|
|
122
|
+
tone?: "primary" | "secondary" | "success" | "info" | "warning" | "error" | "neutral" | undefined;
|
|
123
|
+
unread?: boolean | undefined;
|
|
124
|
+
}>, "many">>;
|
|
125
|
+
groupByDay: z.ZodOptional<z.ZodBoolean>;
|
|
126
|
+
maxItems: z.ZodOptional<z.ZodNumber>;
|
|
127
|
+
actions: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
128
|
+
label: z.ZodString;
|
|
129
|
+
to: z.ZodString;
|
|
130
|
+
icon: z.ZodOptional<z.ZodString>;
|
|
131
|
+
variant: z.ZodOptional<z.ZodEnum<["solid", "outline", "soft", "subtle", "ghost", "link"]>>;
|
|
132
|
+
color: z.ZodOptional<z.ZodEnum<["primary" | "secondary" | "success" | "info" | "warning" | "error" | "neutral", ...("primary" | "secondary" | "success" | "info" | "warning" | "error" | "neutral")[]]>>;
|
|
133
|
+
}, "strip", z.ZodTypeAny, {
|
|
134
|
+
label: string;
|
|
135
|
+
to: string;
|
|
136
|
+
icon?: string | undefined;
|
|
137
|
+
variant?: "link" | "solid" | "outline" | "soft" | "ghost" | "subtle" | undefined;
|
|
138
|
+
color?: "primary" | "secondary" | "success" | "info" | "warning" | "error" | "neutral" | undefined;
|
|
139
|
+
}, {
|
|
140
|
+
label: string;
|
|
141
|
+
to: string;
|
|
142
|
+
icon?: string | undefined;
|
|
143
|
+
variant?: "link" | "solid" | "outline" | "soft" | "ghost" | "subtle" | undefined;
|
|
144
|
+
color?: "primary" | "secondary" | "success" | "info" | "warning" | "error" | "neutral" | undefined;
|
|
145
|
+
}>, "many">>;
|
|
146
|
+
}, "strip", z.ZodTypeAny, {
|
|
147
|
+
card: boolean;
|
|
148
|
+
items?: {
|
|
149
|
+
title: string;
|
|
150
|
+
date?: string | undefined;
|
|
151
|
+
time?: string | undefined;
|
|
152
|
+
params?: Record<string, string> | undefined;
|
|
153
|
+
id?: string | undefined;
|
|
154
|
+
icon?: string | undefined;
|
|
155
|
+
meta?: string[] | undefined;
|
|
156
|
+
to?: string | undefined;
|
|
157
|
+
tone?: "primary" | "secondary" | "success" | "info" | "warning" | "error" | "neutral" | undefined;
|
|
158
|
+
unread?: boolean | undefined;
|
|
159
|
+
}[] | undefined;
|
|
160
|
+
maxItems?: number | undefined;
|
|
161
|
+
title?: string | undefined;
|
|
162
|
+
fetchUrl?: string | undefined;
|
|
163
|
+
fetchUrlMethod?: import("./types").HttpMethod | undefined;
|
|
164
|
+
mono?: boolean | undefined;
|
|
165
|
+
actions?: {
|
|
166
|
+
label: string;
|
|
167
|
+
to: string;
|
|
168
|
+
icon?: string | undefined;
|
|
169
|
+
variant?: "link" | "solid" | "outline" | "soft" | "ghost" | "subtle" | undefined;
|
|
170
|
+
color?: "primary" | "secondary" | "success" | "info" | "warning" | "error" | "neutral" | undefined;
|
|
171
|
+
}[] | undefined;
|
|
172
|
+
groupByDay?: boolean | undefined;
|
|
173
|
+
empty?: {
|
|
174
|
+
title: string;
|
|
175
|
+
description?: string | undefined;
|
|
176
|
+
} | undefined;
|
|
177
|
+
skeletonCount?: number | undefined;
|
|
178
|
+
}, {
|
|
179
|
+
items?: {
|
|
180
|
+
title: string;
|
|
181
|
+
date?: string | undefined;
|
|
182
|
+
time?: string | undefined;
|
|
183
|
+
params?: Record<string, string> | undefined;
|
|
184
|
+
id?: string | undefined;
|
|
185
|
+
icon?: string | undefined;
|
|
186
|
+
meta?: string[] | undefined;
|
|
187
|
+
to?: string | undefined;
|
|
188
|
+
tone?: "primary" | "secondary" | "success" | "info" | "warning" | "error" | "neutral" | undefined;
|
|
189
|
+
unread?: boolean | undefined;
|
|
190
|
+
}[] | undefined;
|
|
191
|
+
maxItems?: number | undefined;
|
|
192
|
+
title?: string | undefined;
|
|
193
|
+
fetchUrl?: string | undefined;
|
|
194
|
+
fetchUrlMethod?: import("./types").HttpMethod | undefined;
|
|
195
|
+
card?: boolean | undefined;
|
|
196
|
+
mono?: boolean | undefined;
|
|
197
|
+
actions?: {
|
|
198
|
+
label: string;
|
|
199
|
+
to: string;
|
|
200
|
+
icon?: string | undefined;
|
|
201
|
+
variant?: "link" | "solid" | "outline" | "soft" | "ghost" | "subtle" | undefined;
|
|
202
|
+
color?: "primary" | "secondary" | "success" | "info" | "warning" | "error" | "neutral" | undefined;
|
|
203
|
+
}[] | undefined;
|
|
204
|
+
groupByDay?: boolean | undefined;
|
|
205
|
+
empty?: {
|
|
206
|
+
title: string;
|
|
207
|
+
description?: string | undefined;
|
|
208
|
+
} | undefined;
|
|
209
|
+
skeletonCount?: number | undefined;
|
|
210
|
+
}>;
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ActivityFeedSchema = void 0;
|
|
4
|
+
exports.ActivityFeed = ActivityFeed;
|
|
5
|
+
const component_1 = require("../component");
|
|
6
|
+
const zod_1 = require("zod");
|
|
7
|
+
const block_registry_1 = require("./block-registry");
|
|
8
|
+
const display_1 = require("./display");
|
|
9
|
+
const display_2 = require("./internal/display");
|
|
10
|
+
const tone_1 = require("./types/tone");
|
|
11
|
+
const ACTIVITY_FEED_COMPONENT_NAME = "dms-activity-feed-block";
|
|
12
|
+
const DEFAULT_ICON = "i-ph-pulse";
|
|
13
|
+
/**
|
|
14
|
+
* ActivityFeed - a feed of events, grouped by day.
|
|
15
|
+
*
|
|
16
|
+
* Static entries or a data source; each entry has a tinted icon well, a title,
|
|
17
|
+
* dimmed details and its time. Shows a skeleton while loading, an empty state
|
|
18
|
+
* and a retry on error.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```typescript
|
|
22
|
+
* ActivityFeed({
|
|
23
|
+
* title: "Activity",
|
|
24
|
+
* fetchUrl: "/api/activity",
|
|
25
|
+
* maxItems: 8,
|
|
26
|
+
* actions: [{ label: "View all", to: "/audit" }],
|
|
27
|
+
* })
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
function ActivityFeed(options) {
|
|
31
|
+
return new component_1.ComponentBuilder(ACTIVITY_FEED_COMPONENT_NAME)
|
|
32
|
+
.options({ ...options })
|
|
33
|
+
.meta({
|
|
34
|
+
name: options?.title || "Activity feed",
|
|
35
|
+
icon: DEFAULT_ICON,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
const ActivityFeedItemSchema = zod_1.z.object({
|
|
39
|
+
id: zod_1.z.string().optional(),
|
|
40
|
+
icon: (0, block_registry_1.ui)(zod_1.z.string().optional(), { label: "Icon", widget: "icon" }),
|
|
41
|
+
tone: (0, block_registry_1.ui)((0, display_2.toneEnum)(tone_1.TONES).optional(), {
|
|
42
|
+
label: "Tone",
|
|
43
|
+
widget: "select",
|
|
44
|
+
}),
|
|
45
|
+
title: (0, block_registry_1.ui)(zod_1.z.string(), { label: "Title" }),
|
|
46
|
+
meta: (0, block_registry_1.ui)(zod_1.z.array(zod_1.z.string()).optional(), { label: "Details" }),
|
|
47
|
+
params: (0, block_registry_1.ui)(zod_1.z.record(zod_1.z.string(), zod_1.z.string()).optional(), {
|
|
48
|
+
label: "Text values",
|
|
49
|
+
widget: "json",
|
|
50
|
+
}),
|
|
51
|
+
date: (0, block_registry_1.ui)(zod_1.z.string().optional().describe("ISO date of the event."), {
|
|
52
|
+
label: "Date",
|
|
53
|
+
}),
|
|
54
|
+
time: (0, block_registry_1.ui)(zod_1.z.string().optional(), { label: "Time text" }),
|
|
55
|
+
unread: (0, block_registry_1.ui)(zod_1.z.boolean().optional(), { label: "Unread", widget: "switch" }),
|
|
56
|
+
to: (0, block_registry_1.ui)(zod_1.z.string().optional(), { label: "Link", widget: "url" }),
|
|
57
|
+
});
|
|
58
|
+
/** The options `ActivityFeed` accepts. */
|
|
59
|
+
exports.ActivityFeedSchema = zod_1.z.object({
|
|
60
|
+
title: (0, block_registry_1.ui)(zod_1.z.string().optional().describe("Eyebrow title of the card."), {
|
|
61
|
+
label: "Title",
|
|
62
|
+
group: "content",
|
|
63
|
+
}),
|
|
64
|
+
items: (0, block_registry_1.ui)(zod_1.z.array(ActivityFeedItemSchema).optional(), {
|
|
65
|
+
label: "Static entries",
|
|
66
|
+
group: "content",
|
|
67
|
+
widget: "json",
|
|
68
|
+
}),
|
|
69
|
+
groupByDay: (0, block_registry_1.ui)(zod_1.z
|
|
70
|
+
.boolean()
|
|
71
|
+
.optional()
|
|
72
|
+
.describe("Day separators with times, rather than relative times."), {
|
|
73
|
+
label: "Group by day",
|
|
74
|
+
group: "appearance",
|
|
75
|
+
widget: "switch",
|
|
76
|
+
initial: true,
|
|
77
|
+
}),
|
|
78
|
+
maxItems: (0, block_registry_1.ui)(zod_1.z.number().int().optional(), {
|
|
79
|
+
label: "Maximum entries",
|
|
80
|
+
group: "appearance",
|
|
81
|
+
widget: "number",
|
|
82
|
+
min: 1,
|
|
83
|
+
}),
|
|
84
|
+
actions: (0, display_1.blockActionsOption)("Link buttons in the card head."),
|
|
85
|
+
...(0, display_1.blockItemsSourceOptions)(),
|
|
86
|
+
mono: (0, block_registry_1.ui)(zod_1.z.boolean().optional(), {
|
|
87
|
+
label: "Mono text",
|
|
88
|
+
group: "appearance",
|
|
89
|
+
widget: "switch",
|
|
90
|
+
}),
|
|
91
|
+
card: (0, display_1.blockCardOption)(true),
|
|
92
|
+
});
|
|
93
|
+
(0, block_registry_1.RegisterBlockType)({
|
|
94
|
+
type: "ActivityFeed",
|
|
95
|
+
componentName: ACTIVITY_FEED_COMPONENT_NAME,
|
|
96
|
+
schema: exports.ActivityFeedSchema,
|
|
97
|
+
meta: {
|
|
98
|
+
name: "Activity feed",
|
|
99
|
+
icon: DEFAULT_ICON,
|
|
100
|
+
description: "Recent events, grouped by day, from a list or a source.",
|
|
101
|
+
group: "data",
|
|
102
|
+
},
|
|
103
|
+
});
|
|
104
|
+
//# sourceMappingURL=activity-feed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activity-feed.js","sourceRoot":"","sources":["../../src/base/activity-feed.ts"],"names":[],"mappings":"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"}
|