@antelopejs/interface-dms 0.3.5 → 0.4.0
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 +46 -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
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import { Table } from "@antelopejs/interface-database-decorators";
|
|
2
2
|
import type { DefaultDataTypes } from "../../../base/data-types/default-types";
|
|
3
3
|
export declare const USERS_TABLE_NAME = "users";
|
|
4
|
+
/** First day of the week: 0 Sunday, 1 Monday, 6 Saturday. */
|
|
5
|
+
export type UserWeekStart = 0 | 1 | 6;
|
|
6
|
+
/** `h23`: 24-hour clock (14:05); `h12`: 12-hour clock (2:05 PM). */
|
|
7
|
+
export type UserTimeFormat = "h23" | "h12";
|
|
8
|
+
/** `numeric`: 01/10/2026; `text`: the month as a word (1 Oct 2026). */
|
|
9
|
+
export type UserDateFormat = "numeric" | "text";
|
|
4
10
|
declare const User_base: import("@antelopejs/interface-database-decorators").TableClass<Table & {
|
|
5
11
|
testHash<This extends {}, F extends keyof This>(this: This, field: F, value: This[F]): unknown;
|
|
6
12
|
}, [], object>;
|
|
@@ -10,20 +16,74 @@ export declare class User extends User_base {
|
|
|
10
16
|
updatedAt: Date;
|
|
11
17
|
email: string;
|
|
12
18
|
name: string;
|
|
19
|
+
/**
|
|
20
|
+
* Profile picture as an image value ({ key, alt? }) in the default storage,
|
|
21
|
+
* downscaled client-side to a square of at most 100x100 pixels.
|
|
22
|
+
*/
|
|
13
23
|
avatar: DefaultDataTypes.ImageValue | null;
|
|
24
|
+
/**
|
|
25
|
+
* User's preferred language/locale (e.g., 'en', 'fr')
|
|
26
|
+
*/
|
|
14
27
|
language: string;
|
|
28
|
+
/** IANA time zone dates and times are shown in (`Europe/Brussels`). */
|
|
29
|
+
timeZone?: string | null;
|
|
30
|
+
/** First day of the week in calendars and date pickers. */
|
|
31
|
+
weekStart?: UserWeekStart | null;
|
|
32
|
+
/** Clock used for times. */
|
|
33
|
+
timeFormat?: UserTimeFormat | null;
|
|
34
|
+
/** How full dates are written. */
|
|
35
|
+
dateFormat?: UserDateFormat | null;
|
|
15
36
|
password: string | null;
|
|
37
|
+
/**
|
|
38
|
+
* When the password was last set by the user (change or recovery); null
|
|
39
|
+
* for accounts that never changed it since this field exists.
|
|
40
|
+
*/
|
|
41
|
+
passwordChangedAt: Date | null;
|
|
42
|
+
/**
|
|
43
|
+
* Authentication key used for JWT secret generation
|
|
44
|
+
*/
|
|
16
45
|
authKey: string;
|
|
46
|
+
/**
|
|
47
|
+
* Is the user email validated?
|
|
48
|
+
*/
|
|
17
49
|
isValidated: boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Token for email validation
|
|
52
|
+
*/
|
|
18
53
|
validationToken: string | null;
|
|
54
|
+
/**
|
|
55
|
+
* Date when the validation token was requested
|
|
56
|
+
*/
|
|
19
57
|
validationRequestedAt: Date | null;
|
|
58
|
+
/**
|
|
59
|
+
* Token for password reset
|
|
60
|
+
*/
|
|
20
61
|
forgotPasswordToken: string | null;
|
|
62
|
+
/**
|
|
63
|
+
* Date when the forgot password token was requested
|
|
64
|
+
*/
|
|
21
65
|
forgotPasswordRequestedAt: Date | null;
|
|
66
|
+
/**
|
|
67
|
+
* Is the user an owner with full access to everything?
|
|
68
|
+
*/
|
|
22
69
|
owner: boolean;
|
|
70
|
+
/**
|
|
71
|
+
* Last time the user was seen using the dashboard with a valid access token.
|
|
72
|
+
* Written at most once per `USER_ACTIVITY_WRITE_INTERVAL_MS`, so it is
|
|
73
|
+
* accurate to that interval; `null` until the first authenticated request.
|
|
74
|
+
*/
|
|
75
|
+
lastActiveAt: Date | null;
|
|
23
76
|
twoFactorMethods: string[];
|
|
24
77
|
twoFactorSecret: string | null;
|
|
25
78
|
twoFactorPendingSecret: string | null;
|
|
26
79
|
twoFactorBackupCodes: string[];
|
|
80
|
+
/** When the current set of backup codes was generated. */
|
|
81
|
+
twoFactorBackupCodesGeneratedAt: Date | null;
|
|
82
|
+
/**
|
|
83
|
+
* When the user confirmed they kept the current backup codes (downloaded,
|
|
84
|
+
* copied or acknowledged); null until then.
|
|
85
|
+
*/
|
|
86
|
+
twoFactorBackupCodesSavedAt: Date | null;
|
|
27
87
|
twoFactorEmailCode: string | null;
|
|
28
88
|
twoFactorEmailCodeRequestedAt: Date | null;
|
|
29
89
|
}
|
|
@@ -50,11 +50,31 @@ __decorate([
|
|
|
50
50
|
(0, interface_database_decorators_1.Field)("string"),
|
|
51
51
|
__metadata("design:type", String)
|
|
52
52
|
], User.prototype, "language", void 0);
|
|
53
|
+
__decorate([
|
|
54
|
+
(0, interface_database_decorators_1.Field)("string"),
|
|
55
|
+
__metadata("design:type", Object)
|
|
56
|
+
], User.prototype, "timeZone", void 0);
|
|
57
|
+
__decorate([
|
|
58
|
+
(0, interface_database_decorators_1.Field)("number"),
|
|
59
|
+
__metadata("design:type", Object)
|
|
60
|
+
], User.prototype, "weekStart", void 0);
|
|
61
|
+
__decorate([
|
|
62
|
+
(0, interface_database_decorators_1.Field)("string"),
|
|
63
|
+
__metadata("design:type", Object)
|
|
64
|
+
], User.prototype, "timeFormat", void 0);
|
|
65
|
+
__decorate([
|
|
66
|
+
(0, interface_database_decorators_1.Field)("string"),
|
|
67
|
+
__metadata("design:type", Object)
|
|
68
|
+
], User.prototype, "dateFormat", void 0);
|
|
53
69
|
__decorate([
|
|
54
70
|
(0, interface_database_decorators_1.Hashed)(),
|
|
55
71
|
(0, interface_database_decorators_1.Field)("string"),
|
|
56
72
|
__metadata("design:type", Object)
|
|
57
73
|
], User.prototype, "password", void 0);
|
|
74
|
+
__decorate([
|
|
75
|
+
(0, interface_database_decorators_1.Field)("date"),
|
|
76
|
+
__metadata("design:type", Object)
|
|
77
|
+
], User.prototype, "passwordChangedAt", void 0);
|
|
58
78
|
__decorate([
|
|
59
79
|
(0, interface_database_decorators_1.Field)("string"),
|
|
60
80
|
__metadata("design:type", String)
|
|
@@ -86,6 +106,10 @@ __decorate([
|
|
|
86
106
|
(0, interface_database_decorators_1.Field)("boolean"),
|
|
87
107
|
__metadata("design:type", Boolean)
|
|
88
108
|
], User.prototype, "owner", void 0);
|
|
109
|
+
__decorate([
|
|
110
|
+
(0, interface_database_decorators_1.Field)("date"),
|
|
111
|
+
__metadata("design:type", Object)
|
|
112
|
+
], User.prototype, "lastActiveAt", void 0);
|
|
89
113
|
__decorate([
|
|
90
114
|
(0, interface_database_decorators_1.Field)(["string"]),
|
|
91
115
|
__metadata("design:type", Array)
|
|
@@ -102,6 +126,14 @@ __decorate([
|
|
|
102
126
|
(0, interface_database_decorators_1.Field)(["string"]),
|
|
103
127
|
__metadata("design:type", Array)
|
|
104
128
|
], User.prototype, "twoFactorBackupCodes", void 0);
|
|
129
|
+
__decorate([
|
|
130
|
+
(0, interface_database_decorators_1.Field)("date"),
|
|
131
|
+
__metadata("design:type", Object)
|
|
132
|
+
], User.prototype, "twoFactorBackupCodesGeneratedAt", void 0);
|
|
133
|
+
__decorate([
|
|
134
|
+
(0, interface_database_decorators_1.Field)("date"),
|
|
135
|
+
__metadata("design:type", Object)
|
|
136
|
+
], User.prototype, "twoFactorBackupCodesSavedAt", void 0);
|
|
105
137
|
__decorate([
|
|
106
138
|
(0, interface_database_decorators_1.Field)("string"),
|
|
107
139
|
__metadata("design:type", Object)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"users.table.js","sourceRoot":"","sources":["../../../../src/auth/db/tables/users.table.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6FASmD;AACnD,kDAAsD;AAGzC,QAAA,gBAAgB,GAAG,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"users.table.js","sourceRoot":"","sources":["../../../../src/auth/db/tables/users.table.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6FASmD;AACnD,kDAAsD;AAGzC,QAAA,gBAAgB,GAAG,OAAO,CAAC;AAYjC,IAAM,IAAI,GAAV,MAAM,IAAK,SAAQ,qCAAK,CAAC,IAAI,CAAC,4CAAY,CAAC;CAsJjD,CAAA;AAtJY,oBAAI;AAGP;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;iCACI;AAKZ;IAHP,IAAA,qCAAK,GAAE;IACP,IAAA,4CAAY,GAAE;IACd,IAAA,qCAAK,EAAC,MAAM,CAAC;8BACK,IAAI;uCAAC;AAKhB;IAHP,IAAA,qCAAK,GAAE;IACP,IAAA,0CAAU,GAAE;IACZ,IAAA,qCAAK,EAAC,MAAM,CAAC;8BACK,IAAI;uCAAC;AAKhB;IAFP,IAAA,qCAAK,GAAE;IACP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;mCACM;AAGd;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;kCACK;AAOb;IADP,IAAA,qCAAK,EAAC,KAAK,CAAC;;oCACsC;AAO3C;IAFP,IAAA,qCAAK,GAAE;IACP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;sCACS;AAMjB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;sCACiB;AAIzB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;uCACyB;AAIjC;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;wCAC2B;AAInC;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;wCAC2B;AAKnC;IAFP,IAAA,sCAAM,GAAE;IACR,IAAA,qCAAK,EAAC,QAAQ,CAAC;;sCACgB;AAOxB;IADP,IAAA,qCAAK,EAAC,MAAM,CAAC;;+CACyB;AAQ/B;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;qCACQ;AAOhB;IAFP,IAAA,qCAAK,GAAE;IACP,IAAA,qCAAK,EAAC,SAAS,CAAC;;yCACY;AAOrB;IAFP,IAAA,qCAAK,GAAE;IACP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;6CACuB;AAM/B;IADP,IAAA,qCAAK,EAAC,MAAM,CAAC;;mDAC6B;AAOnC;IAFP,IAAA,qCAAK,GAAE;IACP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;iDAC2B;AAMnC;IADP,IAAA,qCAAK,EAAC,MAAM,CAAC;;uDACiC;AAMvC;IADP,IAAA,qCAAK,EAAC,SAAS,CAAC;;mCACM;AAQf;IADP,IAAA,qCAAK,EAAC,MAAM,CAAC;;0CACoB;AAG1B;IADP,IAAA,qCAAK,EAAC,CAAC,QAAQ,CAAC,CAAC;;8CACiB;AAG3B;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;6CACuB;AAG/B;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;oDAC8B;AAGtC;IADP,IAAA,qCAAK,EAAC,CAAC,QAAQ,CAAC,CAAC;;kDACqB;AAI/B;IADP,IAAA,qCAAK,EAAC,MAAM,CAAC;;6DACuC;AAO7C;IADP,IAAA,qCAAK,EAAC,MAAM,CAAC;;yDACmC;AAGzC;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;gDAC0B;AAGlC;IADP,IAAA,qCAAK,EAAC,MAAM,CAAC;;2DACqC;eArJxC,IAAI;IADhB,IAAA,6CAAa,EAAC,wBAAgB,EAAE,4BAAgB,CAAC;GACrC,IAAI,CAsJhB"}
|
package/dist/auth/index.d.ts
CHANGED
|
@@ -1,25 +1,34 @@
|
|
|
1
1
|
import { type RequestContext } from "@antelopejs/interface-api";
|
|
2
2
|
import { type SessionModel, type User, type UserExternalIdentity, type UserModel } from "./db";
|
|
3
|
-
import
|
|
3
|
+
import type { ParsedUserAgent } from "./internal/user-agent";
|
|
4
4
|
export * from "./request-authenticators";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
5
|
+
/**
|
|
6
|
+
* Sending account e-mails and reading a user agent are DMS behaviour, not
|
|
7
|
+
* contract: the templates, the mailer and the parser are the module's. Declared
|
|
8
|
+
* here because the registration and session flows below need them.
|
|
9
|
+
*
|
|
10
|
+
* @internal
|
|
11
|
+
*/
|
|
13
12
|
export declare const NotifyWelcome: (userId: string, name: string) => Promise<void>;
|
|
13
|
+
/** @internal */
|
|
14
14
|
export declare const NotifyCollaboratorJoined: (ownerIds: string[], name: string, email: string) => Promise<void>;
|
|
15
|
+
/** @internal */
|
|
15
16
|
export declare const ParseUserAgent: (userAgent: string) => Promise<ParsedUserAgent>;
|
|
16
|
-
export declare function authenticateRequestPrincipal(ctx: RequestContext, authenticators?: readonly RequestAuthenticator[]): Promise<RequestPrincipal>;
|
|
17
17
|
export interface TenantTokenInput {
|
|
18
18
|
tenantId: string;
|
|
19
19
|
id: string;
|
|
20
20
|
rawToken: string;
|
|
21
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* Authenticate the request's bearer token and return the validated `User`.
|
|
24
|
+
* Throws 401 when the token is missing or invalid. Building block for
|
|
25
|
+
* authorization guards layered on top of this interface (see
|
|
26
|
+
* `interfaces/dms/guards`).
|
|
27
|
+
*/
|
|
22
28
|
export declare function authenticateRequestUser(ctx: RequestContext): Promise<User>;
|
|
29
|
+
/**
|
|
30
|
+
* @internal
|
|
31
|
+
*/
|
|
23
32
|
export declare namespace internal {
|
|
24
33
|
const AuthUserAuthenticator: (data: string | undefined) => Promise<TenantTokenInput>;
|
|
25
34
|
const IfAuthUserAuthenticator: (data: string | undefined) => Promise<TenantTokenInput | undefined>;
|
|
@@ -28,18 +37,58 @@ export declare namespace internal {
|
|
|
28
37
|
const IfAuthUserValidator: (data: TenantTokenInput | undefined) => Promise<User | undefined>;
|
|
29
38
|
const AuthOwnerOnlyValidator: (data: TenantTokenInput) => Promise<boolean | User>;
|
|
30
39
|
}
|
|
40
|
+
/**
|
|
41
|
+
* Authentication decorator that returns raw user data, ignoring email validation.
|
|
42
|
+
*/
|
|
31
43
|
export declare const AuthRawUser: (validator?: import("@antelopejs/interface-auth").AuthValidator<TenantTokenInput, boolean | User> | undefined) => import("@antelopejs/interface-core/decorators").ClassDecorator<import("@antelopejs/interface-core/decorators").Class<any, any[]>> & import("@antelopejs/interface-core/decorators").PropertyDecorator & import("@antelopejs/interface-core/decorators").ParameterDecorator;
|
|
44
|
+
/**
|
|
45
|
+
* Authentication decorator that provides the `User` instance and enforces email validation
|
|
46
|
+
* if required by the configuration.
|
|
47
|
+
*/
|
|
32
48
|
export declare const AuthUser: (validator?: import("@antelopejs/interface-auth").AuthValidator<TenantTokenInput, boolean | User> | undefined) => import("@antelopejs/interface-core/decorators").ClassDecorator<import("@antelopejs/interface-core/decorators").Class<any, any[]>> & import("@antelopejs/interface-core/decorators").PropertyDecorator & import("@antelopejs/interface-core/decorators").ParameterDecorator;
|
|
49
|
+
/**
|
|
50
|
+
* Optional authentication decorator that returns User | undefined without throwing 401
|
|
51
|
+
* Use this for routes that work both when authenticated and unauthenticated
|
|
52
|
+
*/
|
|
33
53
|
export declare const IfAuthUser: (validator?: import("@antelopejs/interface-auth").AuthValidator<TenantTokenInput | undefined, User | undefined> | undefined) => import("@antelopejs/interface-core/decorators").ClassDecorator<import("@antelopejs/interface-core/decorators").Class<any, any[]>> & import("@antelopejs/interface-core/decorators").PropertyDecorator & import("@antelopejs/interface-core/decorators").ParameterDecorator;
|
|
54
|
+
/**
|
|
55
|
+
* Authentication decorator that requires the authenticated user to be a platform
|
|
56
|
+
* owner (`User.owner === true`). Throws 401 when no token is provided and 403
|
|
57
|
+
* when the user is authenticated but not an owner.
|
|
58
|
+
*
|
|
59
|
+
* Used to gate all module routes (`/module/<id>/...`) per the SaaS security
|
|
60
|
+
* convention: modules are owner-only administration spaces.
|
|
61
|
+
*
|
|
62
|
+
* @returns Authentication decorator
|
|
63
|
+
*/
|
|
34
64
|
export declare const AuthOwnerOnly: () => import("@antelopejs/interface-core/decorators").ClassDecorator<import("@antelopejs/interface-core/decorators").Class<any, any[]>> & import("@antelopejs/interface-core/decorators").PropertyDecorator & import("@antelopejs/interface-core/decorators").ParameterDecorator;
|
|
65
|
+
/**
|
|
66
|
+
* Generate an access token for a user
|
|
67
|
+
* @param tenantId
|
|
68
|
+
* @param user
|
|
69
|
+
* @param sessionId
|
|
70
|
+
* @returns A valid access token for a duration defined in the configuration (`accessTokenLifetime`)
|
|
71
|
+
*/
|
|
35
72
|
export declare const generateAccessToken: (tenantId: string, user: User, sessionId?: string | undefined) => Promise<{
|
|
36
73
|
expiresIn: number;
|
|
37
74
|
token: string;
|
|
38
75
|
}>;
|
|
76
|
+
/**
|
|
77
|
+
* Generate a refresh token for a user
|
|
78
|
+
* @param tenantId
|
|
79
|
+
* @param user
|
|
80
|
+
* @param sessionId
|
|
81
|
+
* @returns A valid refresh token for a duration defined in the configuration (`refreshTokenLifetime`)
|
|
82
|
+
*/
|
|
39
83
|
export declare const generateRefreshToken: (tenantId: string, user: User, sessionId?: string | undefined) => Promise<{
|
|
40
84
|
expiresIn: number;
|
|
41
85
|
token: string;
|
|
42
86
|
}>;
|
|
87
|
+
/**
|
|
88
|
+
* Validate a refresh token and return the user id and tenantId
|
|
89
|
+
* @param token
|
|
90
|
+
* @returns The user id and tenantId
|
|
91
|
+
*/
|
|
43
92
|
export declare const validateRefreshToken: (token: string) => Promise<{
|
|
44
93
|
id: string;
|
|
45
94
|
tenantId: string;
|
|
@@ -66,12 +115,24 @@ export declare const validateTenantAssignmentToken: (token: string) => Promise<{
|
|
|
66
115
|
export declare const send2FAEmail: (user: User, code: string) => Promise<void>;
|
|
67
116
|
export declare const sendEmailValidationEmail: (user: User) => Promise<void>;
|
|
68
117
|
export declare const sendEmailForgotEmail: (user: User) => Promise<void>;
|
|
118
|
+
/**
|
|
119
|
+
* What an invitation email can say about where it leads. Every field is
|
|
120
|
+
* optional: without them the email keeps its generic wording.
|
|
121
|
+
*/
|
|
69
122
|
export interface AdminInviteEmailContext {
|
|
123
|
+
/** The workspace the invitee is joining. */
|
|
70
124
|
workspaceName?: string;
|
|
125
|
+
/** Who sent the invitation. */
|
|
71
126
|
inviterName?: string;
|
|
127
|
+
/** The invitee's language (`en`, `fr`, ...); English when unsupported. */
|
|
72
128
|
language?: string;
|
|
73
129
|
}
|
|
74
130
|
export declare const sendAdminInviteEmail: (email: string, token: string, inviteeName?: string | undefined, context?: AdminInviteEmailContext | undefined) => Promise<void>;
|
|
131
|
+
/**
|
|
132
|
+
* Remove sensitive keys from a user
|
|
133
|
+
* @param user
|
|
134
|
+
* @returns Partial user without sensitive keys
|
|
135
|
+
*/
|
|
75
136
|
export declare const sanitizeUser: (user: User) => Promise<Partial<User>>;
|
|
76
137
|
export interface JwtUserPayload {
|
|
77
138
|
id: string;
|
|
@@ -86,7 +147,50 @@ export interface ExternalIdentityInput {
|
|
|
86
147
|
export interface ExternalIdentityLinkResult {
|
|
87
148
|
wasCreated: boolean;
|
|
88
149
|
}
|
|
150
|
+
/**
|
|
151
|
+
* Bind an external login identity (GitHub, Google, ...) to a user.
|
|
152
|
+
*
|
|
153
|
+
* Idempotent for the owning user: re-linking the same provider account only
|
|
154
|
+
* refreshes its last login. Binding an account already owned by another user
|
|
155
|
+
* throws 409 — a provider account is a single-user credential. Uniqueness is
|
|
156
|
+
* enforced by the row's deterministic primary key, so two concurrent bindings
|
|
157
|
+
* of the same provider account collide instead of duplicating; the loser
|
|
158
|
+
* re-reads and either refreshes or gets the 409.
|
|
159
|
+
*
|
|
160
|
+
* Scoped to authentication. Provider connections powering product features
|
|
161
|
+
* (repository access, deployments) keep their own storage and must never be
|
|
162
|
+
* derived from these rows.
|
|
163
|
+
*
|
|
164
|
+
* @param userId Owning user
|
|
165
|
+
* @param identity Provider account to bind
|
|
166
|
+
* @returns Whether the binding was created by this call, as opposed to an
|
|
167
|
+
* existing one being refreshed
|
|
168
|
+
*/
|
|
89
169
|
export declare function linkExternalIdentity(userId: string, identity: ExternalIdentityInput): Promise<ExternalIdentityLinkResult>;
|
|
170
|
+
/**
|
|
171
|
+
* List the external login identities bound to a user.
|
|
172
|
+
*
|
|
173
|
+
* @param userId Owning user
|
|
174
|
+
* @returns Bound identities, empty when the user only signs in with a password
|
|
175
|
+
*/
|
|
90
176
|
export declare function getExternalIdentities(userId: string): Promise<UserExternalIdentity[]>;
|
|
177
|
+
/**
|
|
178
|
+
* Run everything that must happen once an account has really joined a tenant:
|
|
179
|
+
* the welcome and collaborator notifications, then the `USER_REGISTERED` hook.
|
|
180
|
+
*
|
|
181
|
+
* Shared by every entry point that registers a user — the DMS password signup,
|
|
182
|
+
* a provider login consuming an invitation, and any module owning its own
|
|
183
|
+
* registration flow (a SaaS transactional signup calls it once provisioning
|
|
184
|
+
* committed) — so automations and notifications never depend on which door the
|
|
185
|
+
* account came through.
|
|
186
|
+
*
|
|
187
|
+
* The hook is observational: registration is already complete when it runs, so
|
|
188
|
+
* a failing subscriber is logged rather than allowed to fail the request and
|
|
189
|
+
* strand the user without a valid retry token.
|
|
190
|
+
*
|
|
191
|
+
* @param userModel Users model
|
|
192
|
+
* @param user The registered account
|
|
193
|
+
* @param tenantId Tenant the account joined
|
|
194
|
+
*/
|
|
91
195
|
export declare function announceRegistration(userModel: UserModel, user: User, tenantId: string): Promise<void>;
|
|
92
196
|
export declare function createSession(sessionModel: SessionModel, userId: string, userAgent: string, ip: string): Promise<string>;
|
package/dist/auth/index.js
CHANGED
|
@@ -15,7 +15,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
exports.sanitizeUser = exports.sendAdminInviteEmail = exports.sendEmailForgotEmail = exports.sendEmailValidationEmail = exports.send2FAEmail = exports.validateTenantAssignmentToken = exports.generateTenantAssignmentToken = exports.validateTwoFactorToken = exports.generateTwoFactorToken = exports.validateRefreshToken = exports.generateRefreshToken = exports.generateAccessToken = exports.AuthOwnerOnly = exports.IfAuthUser = exports.AuthUser = exports.AuthRawUser = exports.internal = exports.ParseUserAgent = exports.NotifyCollaboratorJoined = exports.NotifyWelcome = void 0;
|
|
18
|
-
exports.authenticateRequestPrincipal = authenticateRequestPrincipal;
|
|
19
18
|
exports.authenticateRequestUser = authenticateRequestUser;
|
|
20
19
|
exports.linkExternalIdentity = linkExternalIdentity;
|
|
21
20
|
exports.getExternalIdentities = getExternalIdentities;
|
|
@@ -27,27 +26,31 @@ const interface_core_1 = require("@antelopejs/interface-core");
|
|
|
27
26
|
const logging_1 = require("@antelopejs/interface-core/logging");
|
|
28
27
|
const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
|
|
29
28
|
const hooks_1 = require("../hooks");
|
|
30
|
-
const constants_1 = require("../constants");
|
|
31
29
|
const db_1 = require("./db");
|
|
32
|
-
const
|
|
30
|
+
const fire_and_forget_1 = require("../utils/fire-and-forget");
|
|
33
31
|
__exportStar(require("./request-authenticators"), exports);
|
|
32
|
+
/**
|
|
33
|
+
* Sending account e-mails and reading a user agent are DMS behaviour, not
|
|
34
|
+
* contract: the templates, the mailer and the parser are the module's. Declared
|
|
35
|
+
* here because the registration and session flows below need them.
|
|
36
|
+
*
|
|
37
|
+
* @internal
|
|
38
|
+
*/
|
|
34
39
|
exports.NotifyWelcome = (0, interface_core_1.InterfaceFunction)();
|
|
40
|
+
/** @internal */
|
|
35
41
|
exports.NotifyCollaboratorJoined = (0, interface_core_1.InterfaceFunction)();
|
|
42
|
+
/** @internal */
|
|
36
43
|
exports.ParseUserAgent = (0, interface_core_1.InterfaceFunction)();
|
|
37
44
|
const HTTP_UNAUTHORIZED = 401;
|
|
38
45
|
const HTTP_CONFLICT = 409;
|
|
39
46
|
const UNAUTHORIZED_MESSAGE = "Unauthorized";
|
|
40
47
|
const IDENTITY_ALREADY_LINKED_MESSAGE = "error.oauth.identity_already_linked";
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
}
|
|
48
|
-
return { user, tenantId: decoded.tenantId || constants_1.DEFAULT_TENANT_ID };
|
|
49
|
-
});
|
|
50
|
-
}
|
|
48
|
+
/**
|
|
49
|
+
* Authenticate the request's bearer token and return the validated `User`.
|
|
50
|
+
* Throws 401 when the token is missing or invalid. Building block for
|
|
51
|
+
* authorization guards layered on top of this interface (see
|
|
52
|
+
* `interfaces/dms/guards`).
|
|
53
|
+
*/
|
|
51
54
|
async function authenticateRequestUser(ctx) {
|
|
52
55
|
const authHeader = ctx.rawRequest?.headers?.authorization;
|
|
53
56
|
const token = typeof authHeader === "string" ? authHeader.split(" ")[1] : undefined;
|
|
@@ -58,6 +61,9 @@ async function authenticateRequestUser(ctx) {
|
|
|
58
61
|
}
|
|
59
62
|
return validated;
|
|
60
63
|
}
|
|
64
|
+
/**
|
|
65
|
+
* @internal
|
|
66
|
+
*/
|
|
61
67
|
var internal;
|
|
62
68
|
(function (internal) {
|
|
63
69
|
internal.AuthUserAuthenticator = (0, interface_core_1.InterfaceFunction)();
|
|
@@ -67,21 +73,42 @@ var internal;
|
|
|
67
73
|
internal.IfAuthUserValidator = (0, interface_core_1.InterfaceFunction)();
|
|
68
74
|
internal.AuthOwnerOnlyValidator = (0, interface_core_1.InterfaceFunction)();
|
|
69
75
|
})(internal || (exports.internal = internal = {}));
|
|
76
|
+
/**
|
|
77
|
+
* Authentication decorator that returns raw user data, ignoring email validation.
|
|
78
|
+
*/
|
|
70
79
|
exports.AuthRawUser = (0, interface_auth_1.CreateAuthDecorator)({
|
|
71
80
|
source: (req, _) => req.headers.authorization?.split(" ")[1],
|
|
72
81
|
authenticator: internal.AuthUserAuthenticator,
|
|
73
82
|
validator: internal.AuthRawUserValidator,
|
|
74
83
|
});
|
|
84
|
+
/**
|
|
85
|
+
* Authentication decorator that provides the `User` instance and enforces email validation
|
|
86
|
+
* if required by the configuration.
|
|
87
|
+
*/
|
|
75
88
|
exports.AuthUser = (0, interface_auth_1.CreateAuthDecorator)({
|
|
76
89
|
source: (req, _) => req.headers.authorization?.split(" ")[1],
|
|
77
90
|
authenticator: internal.AuthUserAuthenticator,
|
|
78
91
|
validator: internal.AuthUserValidator,
|
|
79
92
|
});
|
|
93
|
+
/**
|
|
94
|
+
* Optional authentication decorator that returns User | undefined without throwing 401
|
|
95
|
+
* Use this for routes that work both when authenticated and unauthenticated
|
|
96
|
+
*/
|
|
80
97
|
exports.IfAuthUser = (0, interface_auth_1.CreateAuthDecorator)({
|
|
81
98
|
source: (req, _) => req.headers.authorization?.split(" ")[1],
|
|
82
99
|
authenticator: internal.IfAuthUserAuthenticator,
|
|
83
100
|
validator: internal.IfAuthUserValidator,
|
|
84
101
|
});
|
|
102
|
+
/**
|
|
103
|
+
* Authentication decorator that requires the authenticated user to be a platform
|
|
104
|
+
* owner (`User.owner === true`). Throws 401 when no token is provided and 403
|
|
105
|
+
* when the user is authenticated but not an owner.
|
|
106
|
+
*
|
|
107
|
+
* Used to gate all module routes (`/module/<id>/...`) per the SaaS security
|
|
108
|
+
* convention: modules are owner-only administration spaces.
|
|
109
|
+
*
|
|
110
|
+
* @returns Authentication decorator
|
|
111
|
+
*/
|
|
85
112
|
const AuthOwnerOnly = () => {
|
|
86
113
|
const decorator = (0, interface_auth_1.CreateAuthDecorator)({
|
|
87
114
|
source: (req, _) => req.headers.authorization?.split(" ")[1],
|
|
@@ -91,8 +118,27 @@ const AuthOwnerOnly = () => {
|
|
|
91
118
|
return decorator();
|
|
92
119
|
};
|
|
93
120
|
exports.AuthOwnerOnly = AuthOwnerOnly;
|
|
121
|
+
/**
|
|
122
|
+
* Generate an access token for a user
|
|
123
|
+
* @param tenantId
|
|
124
|
+
* @param user
|
|
125
|
+
* @param sessionId
|
|
126
|
+
* @returns A valid access token for a duration defined in the configuration (`accessTokenLifetime`)
|
|
127
|
+
*/
|
|
94
128
|
exports.generateAccessToken = (0, interface_core_1.InterfaceFunction)();
|
|
129
|
+
/**
|
|
130
|
+
* Generate a refresh token for a user
|
|
131
|
+
* @param tenantId
|
|
132
|
+
* @param user
|
|
133
|
+
* @param sessionId
|
|
134
|
+
* @returns A valid refresh token for a duration defined in the configuration (`refreshTokenLifetime`)
|
|
135
|
+
*/
|
|
95
136
|
exports.generateRefreshToken = (0, interface_core_1.InterfaceFunction)();
|
|
137
|
+
/**
|
|
138
|
+
* Validate a refresh token and return the user id and tenantId
|
|
139
|
+
* @param token
|
|
140
|
+
* @returns The user id and tenantId
|
|
141
|
+
*/
|
|
96
142
|
exports.validateRefreshToken = (0, interface_core_1.InterfaceFunction)();
|
|
97
143
|
exports.generateTwoFactorToken = (0, interface_core_1.InterfaceFunction)();
|
|
98
144
|
exports.validateTwoFactorToken = (0, interface_core_1.InterfaceFunction)();
|
|
@@ -102,12 +148,36 @@ exports.send2FAEmail = (0, interface_core_1.InterfaceFunction)();
|
|
|
102
148
|
exports.sendEmailValidationEmail = (0, interface_core_1.InterfaceFunction)();
|
|
103
149
|
exports.sendEmailForgotEmail = (0, interface_core_1.InterfaceFunction)();
|
|
104
150
|
exports.sendAdminInviteEmail = (0, interface_core_1.InterfaceFunction)();
|
|
151
|
+
/**
|
|
152
|
+
* Remove sensitive keys from a user
|
|
153
|
+
* @param user
|
|
154
|
+
* @returns Partial user without sensitive keys
|
|
155
|
+
*/
|
|
105
156
|
exports.sanitizeUser = (0, interface_core_1.InterfaceFunction)();
|
|
106
157
|
function assertIdentityOwnedBy(identity, userId) {
|
|
107
158
|
if (identity.userId !== userId) {
|
|
108
159
|
throw new interface_api_1.HTTPResult(HTTP_CONFLICT, IDENTITY_ALREADY_LINKED_MESSAGE);
|
|
109
160
|
}
|
|
110
161
|
}
|
|
162
|
+
/**
|
|
163
|
+
* Bind an external login identity (GitHub, Google, ...) to a user.
|
|
164
|
+
*
|
|
165
|
+
* Idempotent for the owning user: re-linking the same provider account only
|
|
166
|
+
* refreshes its last login. Binding an account already owned by another user
|
|
167
|
+
* throws 409 — a provider account is a single-user credential. Uniqueness is
|
|
168
|
+
* enforced by the row's deterministic primary key, so two concurrent bindings
|
|
169
|
+
* of the same provider account collide instead of duplicating; the loser
|
|
170
|
+
* re-reads and either refreshes or gets the 409.
|
|
171
|
+
*
|
|
172
|
+
* Scoped to authentication. Provider connections powering product features
|
|
173
|
+
* (repository access, deployments) keep their own storage and must never be
|
|
174
|
+
* derived from these rows.
|
|
175
|
+
*
|
|
176
|
+
* @param userId Owning user
|
|
177
|
+
* @param identity Provider account to bind
|
|
178
|
+
* @returns Whether the binding was created by this call, as opposed to an
|
|
179
|
+
* existing one being refreshed
|
|
180
|
+
*/
|
|
111
181
|
async function linkExternalIdentity(userId, identity) {
|
|
112
182
|
const model = (0, interface_database_decorators_1.GetModel)(db_1.UserExternalIdentityModel);
|
|
113
183
|
const id = (0, db_1.buildExternalIdentityId)(identity.provider, identity.providerAccountId);
|
|
@@ -140,26 +210,50 @@ async function linkExternalIdentity(userId, identity) {
|
|
|
140
210
|
return { wasCreated: false };
|
|
141
211
|
}
|
|
142
212
|
}
|
|
213
|
+
/**
|
|
214
|
+
* List the external login identities bound to a user.
|
|
215
|
+
*
|
|
216
|
+
* @param userId Owning user
|
|
217
|
+
* @returns Bound identities, empty when the user only signs in with a password
|
|
218
|
+
*/
|
|
143
219
|
function getExternalIdentities(userId) {
|
|
144
220
|
return (0, interface_database_decorators_1.GetModel)(db_1.UserExternalIdentityModel).getByUserId(userId);
|
|
145
221
|
}
|
|
146
222
|
async function notifyAccountCreation(userModel, user) {
|
|
147
|
-
|
|
223
|
+
(0, fire_and_forget_1.fireAndForget)((0, exports.NotifyWelcome)(user._id, user.name), "welcome notification");
|
|
148
224
|
try {
|
|
149
225
|
const owners = await userModel.getOwners();
|
|
150
226
|
const ownerIds = owners
|
|
151
227
|
.map((owner) => owner._id)
|
|
152
228
|
.filter((id) => id !== user._id);
|
|
153
229
|
if (ownerIds.length > 0) {
|
|
154
|
-
|
|
230
|
+
(0, fire_and_forget_1.fireAndForget)((0, exports.NotifyCollaboratorJoined)(ownerIds, user.name, user.email), "collaborator joined notification");
|
|
155
231
|
}
|
|
156
232
|
}
|
|
157
233
|
catch (error) {
|
|
158
234
|
logging_1.Logging.Error(`[DMS] Failed to notify owners of new collaborator "${user._id}": ${String(error)}`);
|
|
159
235
|
}
|
|
160
236
|
}
|
|
237
|
+
/**
|
|
238
|
+
* Run everything that must happen once an account has really joined a tenant:
|
|
239
|
+
* the welcome and collaborator notifications, then the `USER_REGISTERED` hook.
|
|
240
|
+
*
|
|
241
|
+
* Shared by every entry point that registers a user — the DMS password signup,
|
|
242
|
+
* a provider login consuming an invitation, and any module owning its own
|
|
243
|
+
* registration flow (a SaaS transactional signup calls it once provisioning
|
|
244
|
+
* committed) — so automations and notifications never depend on which door the
|
|
245
|
+
* account came through.
|
|
246
|
+
*
|
|
247
|
+
* The hook is observational: registration is already complete when it runs, so
|
|
248
|
+
* a failing subscriber is logged rather than allowed to fail the request and
|
|
249
|
+
* strand the user without a valid retry token.
|
|
250
|
+
*
|
|
251
|
+
* @param userModel Users model
|
|
252
|
+
* @param user The registered account
|
|
253
|
+
* @param tenantId Tenant the account joined
|
|
254
|
+
*/
|
|
161
255
|
async function announceRegistration(userModel, user, tenantId) {
|
|
162
|
-
|
|
256
|
+
(0, fire_and_forget_1.fireAndForget)(notifyAccountCreation(userModel, user), "account creation notification");
|
|
163
257
|
try {
|
|
164
258
|
await (0, hooks_1.ExecuteHooks)(hooks_1.Hook.USER_REGISTERED, {
|
|
165
259
|
tenantId,
|
|
@@ -182,7 +276,6 @@ async function createSession(sessionModel, userId, userAgent, ip) {
|
|
|
182
276
|
const now = new Date();
|
|
183
277
|
const ids = await sessionModel.insert({
|
|
184
278
|
userId,
|
|
185
|
-
refreshToken: "",
|
|
186
279
|
userAgent: userAgent || "",
|
|
187
280
|
ip: ip || "",
|
|
188
281
|
browser: browser || "Unknown",
|
package/dist/auth/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type RequestContext } from "@antelopejs/interface-api";
|
|
2
|
+
import type { RequestAuthenticator, RequestPrincipal } from "../request-authenticators";
|
|
3
|
+
/** @internal Read only a successfully authenticated, unchanged request's tenant. */
|
|
4
|
+
export declare function getAuthenticatedRequestTenantId(ctx: RequestContext): string | undefined;
|
|
5
|
+
/** @internal Revalidate on every call; failures poison tenant resolution for this request. */
|
|
6
|
+
export declare function resolveRequestPrincipal(ctx: RequestContext, authenticators: readonly RequestAuthenticator[], authenticateJwt: (token: string) => Promise<RequestPrincipal>): Promise<RequestPrincipal>;
|