@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
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,51 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## v0.4.0
|
|
4
|
+
|
|
5
|
+
[compare changes](https://github.com/AntelopeJS/dms/compare/interface-v0.3.6...v0.4.0)
|
|
6
|
+
|
|
7
|
+
### 🩹 Fixes
|
|
8
|
+
|
|
9
|
+
- **interface-dms:** ⚠️ Release the breaking changes of #119 as 0.4.0 ([#166](https://github.com/AntelopeJS/dms/pull/166), [#119](https://github.com/AntelopeJS/dms/issues/119))
|
|
10
|
+
|
|
11
|
+
#### ⚠️ Breaking Changes
|
|
12
|
+
|
|
13
|
+
- **interface-dms:** ⚠️ Release the breaking changes of #119 as 0.4.0 ([#166](https://github.com/AntelopeJS/dms/pull/166), [#119](https://github.com/AntelopeJS/dms/issues/119))
|
|
14
|
+
|
|
15
|
+
### ❤️ Contributors
|
|
16
|
+
|
|
17
|
+
- Antony Rizzitelli <rizzitelli.antony@pm.me>
|
|
18
|
+
|
|
19
|
+
## v0.3.6
|
|
20
|
+
|
|
21
|
+
[compare changes](https://github.com/AntelopeJS/dms/compare/interface-v0.3.5...v0.3.6)
|
|
22
|
+
|
|
23
|
+
> [!WARNING]
|
|
24
|
+
> 0.3.6 was unpublished from npm: it shipped the breaking changes of [#119](https://github.com/AntelopeJS/dms/pull/119) under a patch version: changelogen 0.5 only reads a breaking change from a `!` in the commit header, not from a `BREAKING CHANGE:` footer. Use 0.4.0.
|
|
25
|
+
|
|
26
|
+
### 🚀 Enhancements
|
|
27
|
+
|
|
28
|
+
- **dms:** Port the v2 design across the dashboard ([#119](https://github.com/AntelopeJS/dms/pull/119))
|
|
29
|
+
|
|
30
|
+
### 🩹 Fixes
|
|
31
|
+
|
|
32
|
+
- **layout:** Hold the in-flight modules listing fetch on the DMS app ([#121](https://github.com/AntelopeJS/dms/pull/121))
|
|
33
|
+
- **tab:** Space the blocks of a tab like the page spaces its own ([#98](https://github.com/AntelopeJS/dms/pull/98))
|
|
34
|
+
- **dev-reload:** End the reload streams when the module stops ([#125](https://github.com/AntelopeJS/dms/pull/125))
|
|
35
|
+
|
|
36
|
+
### 🏡 Chore
|
|
37
|
+
|
|
38
|
+
- **release:** @antelopejs/dms v0.5.4 ([a301255](https://github.com/AntelopeJS/dms/commit/a301255))
|
|
39
|
+
- **release:** @antelopejs/dms v0.5.5 ([2eb0e86](https://github.com/AntelopeJS/dms/commit/2eb0e86))
|
|
40
|
+
- **release:** @antelopejs/dms v0.5.6 ([76d9ee3](https://github.com/AntelopeJS/dms/commit/76d9ee3))
|
|
41
|
+
|
|
42
|
+
### ❤️ Contributors
|
|
43
|
+
|
|
44
|
+
- Maxime Westhoven ([@mwesto](http://github.com/mwesto))
|
|
45
|
+
- Antony Rizzitelli <rizzitelli.antony@pm.me>
|
|
46
|
+
- Glastis ([@Glastis](http://github.com/Glastis))
|
|
47
|
+
- Alessandro Aloisio ([@alessaloisio](http://github.com/alessaloisio))
|
|
48
|
+
|
|
3
49
|
## v0.3.5
|
|
4
50
|
|
|
5
51
|
[compare changes](https://github.com/AntelopeJS/dms/compare/interface-v0.3.4...v0.3.5)
|
package/README.md
CHANGED
|
@@ -64,8 +64,8 @@ be used as a key: `RegisteringProxy` looks its entries up by object reference,
|
|
|
64
64
|
so unregistering with the view a module holds matches nothing and leaves the
|
|
65
65
|
registration live -- silently, exactly like a second copy would. `RegisterPage`
|
|
66
66
|
and `RegisterCategory` resolve their argument through `RegistrationIdentity`
|
|
67
|
-
(`page/registry`) for that reason; anything else keyed on a value
|
|
68
|
-
the boundary has to do the same. The same trap catches structural comparisons:
|
|
67
|
+
(`page/internal/registry`) for that reason; anything else keyed on a value
|
|
68
|
+
that crossed the boundary has to do the same. The same trap catches structural comparisons:
|
|
69
69
|
`isDeepStrictEqual` and `assert.deepStrictEqual` both refuse two views that hold
|
|
70
70
|
equal values, so compare plain data, field by field or after a JSON round trip.
|
|
71
71
|
|
package/dist/attachments.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { RequestContext } from "@antelopejs/interface-api";
|
|
2
|
-
import type { DataControllerCallback } from "@antelopejs/interface-data-api";
|
|
3
2
|
import type { FileMetadata, UploadConstraints } from "@antelopejs/interface-file-storage";
|
|
3
|
+
import type { TableViewAttachmentSaveRequest } from "./internal/attachments";
|
|
4
|
+
/** A server-declared file field; ids must match the form's attachmentField. */
|
|
4
5
|
export interface AttachmentField {
|
|
5
6
|
id: string;
|
|
6
7
|
key: string;
|
|
@@ -9,10 +10,12 @@ export interface AttachmentField {
|
|
|
9
10
|
visibility?: "private" | "public";
|
|
10
11
|
constraints?: UploadConstraints;
|
|
11
12
|
}
|
|
13
|
+
/** The actual saved values used to clean removed native files. */
|
|
12
14
|
export interface AttachmentSaveResult<T> {
|
|
13
15
|
document: Record<string, unknown>;
|
|
14
16
|
result: T;
|
|
15
17
|
}
|
|
18
|
+
/** Context supplied by an authorized server-side write route, never by its client. */
|
|
16
19
|
export interface AttachmentSaveRequest {
|
|
17
20
|
context: RequestContext;
|
|
18
21
|
componentIds: string[];
|
|
@@ -20,19 +23,25 @@ export interface AttachmentSaveRequest {
|
|
|
20
23
|
submitted: Record<string, unknown>;
|
|
21
24
|
before: Record<string, unknown>;
|
|
22
25
|
}
|
|
23
|
-
|
|
24
|
-
controller: unknown;
|
|
25
|
-
route: DataControllerCallback;
|
|
26
|
-
context: RequestContext;
|
|
27
|
-
params: unknown;
|
|
28
|
-
args: unknown[];
|
|
29
|
-
mode: "save" | "delete";
|
|
30
|
-
componentIds: string[];
|
|
31
|
-
}
|
|
26
|
+
/** @internal */
|
|
32
27
|
export declare namespace internal {
|
|
33
28
|
const SaveTableViewAttachments: (request: TableViewAttachmentSaveRequest) => Promise<unknown>;
|
|
34
29
|
}
|
|
35
30
|
type AttachmentSaver = <T>(request: AttachmentSaveRequest, save: (promoted: Record<string, unknown>) => Promise<AttachmentSaveResult<T>>) => Promise<T>;
|
|
31
|
+
/**
|
|
32
|
+
* Validate native-file provenance, promote staging keys, then save once.
|
|
33
|
+
* Call after write authorization with the trusted component identity and fields.
|
|
34
|
+
* Staged retries require trusted provider promotion replay; canonical metadata
|
|
35
|
+
* is validated before save. Failed saves never move or delete promoted objects:
|
|
36
|
+
* another save may reference them. Retained objects keep their declared visibility.
|
|
37
|
+
* Removed files are deleted after successful persistence; cleanup errors are logged.
|
|
38
|
+
* This is not reference-counted cleanup: callers own the risk of shared keys.
|
|
39
|
+
*/
|
|
36
40
|
export declare const SaveComponentFiles: AttachmentSaver;
|
|
41
|
+
/**
|
|
42
|
+
* Resolve prepared metadata for field validators; unknown references return undefined.
|
|
43
|
+
*
|
|
44
|
+
* @internal
|
|
45
|
+
*/
|
|
37
46
|
export declare const GetAttachmentValidationMetadata: (key: string, storage?: string | undefined) => Promise<FileMetadata | undefined>;
|
|
38
47
|
export {};
|
package/dist/attachments.js
CHANGED
|
@@ -2,10 +2,25 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.GetAttachmentValidationMetadata = exports.SaveComponentFiles = exports.internal = void 0;
|
|
4
4
|
const interface_core_1 = require("@antelopejs/interface-core");
|
|
5
|
+
/** @internal */
|
|
5
6
|
var internal;
|
|
6
7
|
(function (internal) {
|
|
7
8
|
internal.SaveTableViewAttachments = (0, interface_core_1.InterfaceFunction)();
|
|
8
9
|
})(internal || (exports.internal = internal = {}));
|
|
10
|
+
/**
|
|
11
|
+
* Validate native-file provenance, promote staging keys, then save once.
|
|
12
|
+
* Call after write authorization with the trusted component identity and fields.
|
|
13
|
+
* Staged retries require trusted provider promotion replay; canonical metadata
|
|
14
|
+
* is validated before save. Failed saves never move or delete promoted objects:
|
|
15
|
+
* another save may reference them. Retained objects keep their declared visibility.
|
|
16
|
+
* Removed files are deleted after successful persistence; cleanup errors are logged.
|
|
17
|
+
* This is not reference-counted cleanup: callers own the risk of shared keys.
|
|
18
|
+
*/
|
|
9
19
|
exports.SaveComponentFiles = (0, interface_core_1.InterfaceFunction)();
|
|
20
|
+
/**
|
|
21
|
+
* Resolve prepared metadata for field validators; unknown references return undefined.
|
|
22
|
+
*
|
|
23
|
+
* @internal
|
|
24
|
+
*/
|
|
10
25
|
exports.GetAttachmentValidationMetadata = (0, interface_core_1.InterfaceFunction)();
|
|
11
26
|
//# sourceMappingURL=attachments.js.map
|
package/dist/attachments.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attachments.js","sourceRoot":"","sources":["../src/attachments.ts"],"names":[],"mappings":";;;AACA,+DAA+D;
|
|
1
|
+
{"version":3,"file":"attachments.js","sourceRoot":"","sources":["../src/attachments.ts"],"names":[],"mappings":";;;AACA,+DAA+D;AAgC/D,gBAAgB;AAChB,IAAiB,QAAQ,CAKxB;AALD,WAAiB,QAAQ;IACV,iCAAwB,GACnC,IAAA,kCAAiB,GAEd,CAAC;AACR,CAAC,EALgB,QAAQ,wBAAR,QAAQ,QAKxB;AAOD;;;;;;;;GAQG;AACU,QAAA,kBAAkB,GAC7B,IAAA,kCAAiB,GAAsC,CAAC;AAE1D;;;;GAIG;AACU,QAAA,+BAA+B,GAC1C,IAAA,kCAAiB,GAEd,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Session } from "../tables/sessions.table";
|
|
2
|
+
/** @internal */
|
|
3
|
+
export declare function hashRefreshToken(token: string): string;
|
|
4
|
+
/** @internal */
|
|
5
|
+
export declare function hashesMatch(left: string, right: string): boolean;
|
|
6
|
+
/** @internal */
|
|
7
|
+
export declare const REFRESH_TOKEN_PREDECESSOR_GRACE_MS = 15000;
|
|
8
|
+
/** @internal */
|
|
9
|
+
export declare function isImmediateRefreshTokenPredecessor(session: Session, presentedToken: string, now: Date): boolean;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.REFRESH_TOKEN_PREDECESSOR_GRACE_MS = void 0;
|
|
4
|
+
exports.hashRefreshToken = hashRefreshToken;
|
|
5
|
+
exports.hashesMatch = hashesMatch;
|
|
6
|
+
exports.isImmediateRefreshTokenPredecessor = isImmediateRefreshTokenPredecessor;
|
|
7
|
+
const node_crypto_1 = require("node:crypto");
|
|
8
|
+
/** @internal */
|
|
9
|
+
function hashRefreshToken(token) {
|
|
10
|
+
return (0, node_crypto_1.createHash)("sha256").update(token).digest("hex");
|
|
11
|
+
}
|
|
12
|
+
/** @internal */
|
|
13
|
+
function hashesMatch(left, right) {
|
|
14
|
+
const leftBuffer = Buffer.from(left, "hex");
|
|
15
|
+
const rightBuffer = Buffer.from(right, "hex");
|
|
16
|
+
return (leftBuffer.length === rightBuffer.length &&
|
|
17
|
+
(0, node_crypto_1.timingSafeEqual)(leftBuffer, rightBuffer));
|
|
18
|
+
}
|
|
19
|
+
/** @internal */
|
|
20
|
+
exports.REFRESH_TOKEN_PREDECESSOR_GRACE_MS = 15_000;
|
|
21
|
+
/** @internal */
|
|
22
|
+
function isImmediateRefreshTokenPredecessor(session, presentedToken, now) {
|
|
23
|
+
if (!session.previousRefreshTokenHash || !session.refreshTokenRotatedAt) {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
const age = now.getTime() - session.refreshTokenRotatedAt.getTime();
|
|
27
|
+
if (Math.abs(age) > exports.REFRESH_TOKEN_PREDECESSOR_GRACE_MS)
|
|
28
|
+
return false;
|
|
29
|
+
return hashesMatch(session.previousRefreshTokenHash, hashRefreshToken(presentedToken));
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=sessions.model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessions.model.js","sourceRoot":"","sources":["../../../../src/auth/db/internal/sessions.model.ts"],"names":[],"mappings":";;;AAIA,4CAEC;AAGD,kCAOC;AAMD,gFAcC;AApCD,6CAA0D;AAG1D,gBAAgB;AAChB,SAAgB,gBAAgB,CAAC,KAAa;IAC5C,OAAO,IAAA,wBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1D,CAAC;AAED,gBAAgB;AAChB,SAAgB,WAAW,CAAC,IAAY,EAAE,KAAa;IACrD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC5C,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC9C,OAAO,CACL,UAAU,CAAC,MAAM,KAAK,WAAW,CAAC,MAAM;QACxC,IAAA,6BAAe,EAAC,UAAU,EAAE,WAAW,CAAC,CACzC,CAAC;AACJ,CAAC;AAED,gBAAgB;AACH,QAAA,kCAAkC,GAAG,MAAM,CAAC;AAEzD,gBAAgB;AAChB,SAAgB,kCAAkC,CAChD,OAAgB,EAChB,cAAsB,EACtB,GAAS;IAET,IAAI,CAAC,OAAO,CAAC,wBAAwB,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;QACxE,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,qBAAqB,CAAC,OAAO,EAAE,CAAC;IACpE,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,0CAAkC;QAAE,OAAO,KAAK,CAAC;IACrE,OAAO,WAAW,CAChB,OAAO,CAAC,wBAAwB,EAChC,gBAAgB,CAAC,cAAc,CAAC,CACjC,CAAC;AACJ,CAAC"}
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import { Session } from "../tables/sessions.table";
|
|
2
|
-
|
|
2
|
+
/**
|
|
3
|
+
* Whether a presented refresh token is the session's current one.
|
|
4
|
+
*
|
|
5
|
+
* @param session The session the token claims
|
|
6
|
+
* @param presentedToken Token the client presented
|
|
7
|
+
* @returns True when the token is the session's current refresh token
|
|
8
|
+
*/
|
|
3
9
|
export declare function isCurrentRefreshToken(session: Session, presentedToken: string): boolean;
|
|
4
|
-
export declare function isImmediateRefreshTokenPredecessor(session: Session, presentedToken: string, now: Date): boolean;
|
|
5
10
|
declare const SessionModel_base: {
|
|
6
11
|
new (database: import("@antelopejs/interface-database").SchemaInstance<any>): {
|
|
7
12
|
readonly table: import("@antelopejs/interface-database").Table<Session>;
|
|
@@ -21,8 +26,17 @@ declare const SessionModel_base: {
|
|
|
21
26
|
validate(obj: unknown, options?: import("@antelopejs/interface-database-decorators").ValidateInputOptions): import("@antelopejs/interface-database-decorators").ValidationResult;
|
|
22
27
|
};
|
|
23
28
|
export declare class SessionModel extends SessionModel_base {
|
|
29
|
+
/** Atomically rotates a token or resolves its immediate predecessor. */
|
|
24
30
|
rotateRefreshToken(sessionId: string, presentedToken: string, refreshToken: string, rotatedAt?: Date): Promise<string | null>;
|
|
31
|
+
/** Replaces a refresh token without retaining predecessor eligibility. */
|
|
25
32
|
replaceRefreshToken(sessionId: string, refreshToken: string): Promise<void>;
|
|
33
|
+
/**
|
|
34
|
+
* Deletes the sessions nobody has used since a date. A session's current
|
|
35
|
+
* refresh token is issued no later than its last activity, so once that
|
|
36
|
+
* activity is older than the refresh token lifetime, no token can revive it.
|
|
37
|
+
*
|
|
38
|
+
* @param threshold Sessions last active before this date are deleted
|
|
39
|
+
*/
|
|
26
40
|
deleteInactiveSince(threshold: Date): Promise<void>;
|
|
27
41
|
getByUserId(userId: string): Promise<Session[]>;
|
|
28
42
|
deleteByUserId(userId: string): Promise<void>;
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SessionModel =
|
|
3
|
+
exports.SessionModel = void 0;
|
|
4
4
|
exports.isCurrentRefreshToken = isCurrentRefreshToken;
|
|
5
|
-
exports.isImmediateRefreshTokenPredecessor = isImmediateRefreshTokenPredecessor;
|
|
6
5
|
const node_crypto_1 = require("node:crypto");
|
|
7
6
|
const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
|
|
8
7
|
const sessions_table_1 = require("../tables/sessions.table");
|
|
9
|
-
|
|
8
|
+
const sessions_model_1 = require("../internal/sessions.model");
|
|
10
9
|
function updatedRows(result) {
|
|
11
10
|
if (typeof result === "number")
|
|
12
11
|
return result;
|
|
@@ -20,15 +19,11 @@ const SEAL_SEPARATOR = ".";
|
|
|
20
19
|
const SEAL_KEY_DOMAIN = "dms-refresh-successor:";
|
|
21
20
|
const LAST_ACTIVE_AT_INDEX = "lastActiveAt";
|
|
22
21
|
const EPOCH_LOWER_BOUND = new Date(0);
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
const rightBuffer = Buffer.from(right, "hex");
|
|
29
|
-
return (leftBuffer.length === rightBuffer.length &&
|
|
30
|
-
(0, node_crypto_1.timingSafeEqual)(leftBuffer, rightBuffer));
|
|
31
|
-
}
|
|
22
|
+
// The grace window must hand the current token back to a client that still
|
|
23
|
+
// holds its predecessor, so the current token is sealed under a key derived
|
|
24
|
+
// from that predecessor. Only a holder of the predecessor can derive it: the
|
|
25
|
+
// stored `previousRefreshTokenHash` is a hash of the bare token, and the domain
|
|
26
|
+
// prefix keeps the two derivations apart, so the database alone opens nothing.
|
|
32
27
|
function sealKey(predecessor) {
|
|
33
28
|
return (0, node_crypto_1.createHash)("sha256")
|
|
34
29
|
.update(SEAL_KEY_DOMAIN + predecessor)
|
|
@@ -60,42 +55,32 @@ function openRefreshToken(sealed, predecessor) {
|
|
|
60
55
|
return null;
|
|
61
56
|
}
|
|
62
57
|
}
|
|
58
|
+
/**
|
|
59
|
+
* Whether a presented refresh token is the session's current one.
|
|
60
|
+
*
|
|
61
|
+
* @param session The session the token claims
|
|
62
|
+
* @param presentedToken Token the client presented
|
|
63
|
+
* @returns True when the token is the session's current refresh token
|
|
64
|
+
*/
|
|
63
65
|
function isCurrentRefreshToken(session, presentedToken) {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
return hashesMatch(session.refreshTokenHash, presentedHash);
|
|
67
|
-
}
|
|
68
|
-
return (!!session.refreshToken &&
|
|
69
|
-
hashesMatch(hashRefreshToken(session.refreshToken), presentedHash));
|
|
70
|
-
}
|
|
71
|
-
function isImmediateRefreshTokenPredecessor(session, presentedToken, now) {
|
|
72
|
-
if (!session.previousRefreshTokenHash || !session.refreshTokenRotatedAt) {
|
|
73
|
-
return false;
|
|
74
|
-
}
|
|
75
|
-
const age = now.getTime() - session.refreshTokenRotatedAt.getTime();
|
|
76
|
-
if (Math.abs(age) > exports.REFRESH_TOKEN_PREDECESSOR_GRACE_MS)
|
|
77
|
-
return false;
|
|
78
|
-
return hashesMatch(session.previousRefreshTokenHash, hashRefreshToken(presentedToken));
|
|
66
|
+
return (!!session.refreshTokenHash &&
|
|
67
|
+
(0, sessions_model_1.hashesMatch)(session.refreshTokenHash, (0, sessions_model_1.hashRefreshToken)(presentedToken)));
|
|
79
68
|
}
|
|
80
69
|
function recoverSuccessor(session, presentedToken) {
|
|
81
|
-
if (session.sealedRefreshToken)
|
|
82
|
-
return
|
|
83
|
-
|
|
84
|
-
return session.refreshToken || null;
|
|
70
|
+
if (!session.sealedRefreshToken)
|
|
71
|
+
return null;
|
|
72
|
+
return openRefreshToken(session.sealedRefreshToken, presentedToken);
|
|
85
73
|
}
|
|
86
74
|
class SessionModel extends (0, interface_database_decorators_1.BasicDataModel)(sessions_table_1.Session, sessions_table_1.SESSIONS_TABLE_NAME) {
|
|
75
|
+
/** Atomically rotates a token or resolves its immediate predecessor. */
|
|
87
76
|
async rotateRefreshToken(sessionId, presentedToken, refreshToken, rotatedAt = new Date()) {
|
|
88
77
|
const result = await this.table
|
|
89
78
|
.getAll(sessionId)
|
|
90
|
-
.filter((row) => row
|
|
91
|
-
.key("refreshTokenHash")
|
|
92
|
-
.eq(hashRefreshToken(presentedToken))
|
|
93
|
-
.or(row.key("refreshToken").eq(presentedToken)))
|
|
79
|
+
.filter((row) => row.key("refreshTokenHash").eq((0, sessions_model_1.hashRefreshToken)(presentedToken)))
|
|
94
80
|
.update({
|
|
95
|
-
|
|
96
|
-
refreshTokenHash: hashRefreshToken(refreshToken),
|
|
81
|
+
refreshTokenHash: (0, sessions_model_1.hashRefreshToken)(refreshToken),
|
|
97
82
|
sealedRefreshToken: sealRefreshToken(refreshToken, presentedToken),
|
|
98
|
-
previousRefreshTokenHash: hashRefreshToken(presentedToken),
|
|
83
|
+
previousRefreshTokenHash: (0, sessions_model_1.hashRefreshToken)(presentedToken),
|
|
99
84
|
refreshTokenRotatedAt: rotatedAt,
|
|
100
85
|
lastActiveAt: rotatedAt,
|
|
101
86
|
})
|
|
@@ -104,20 +89,27 @@ class SessionModel extends (0, interface_database_decorators_1.BasicDataModel)(s
|
|
|
104
89
|
return refreshToken;
|
|
105
90
|
const session = await this.get(sessionId);
|
|
106
91
|
if (!session ||
|
|
107
|
-
!isImmediateRefreshTokenPredecessor(session, presentedToken, rotatedAt)) {
|
|
92
|
+
!(0, sessions_model_1.isImmediateRefreshTokenPredecessor)(session, presentedToken, rotatedAt)) {
|
|
108
93
|
return null;
|
|
109
94
|
}
|
|
110
95
|
return recoverSuccessor(session, presentedToken);
|
|
111
96
|
}
|
|
97
|
+
/** Replaces a refresh token without retaining predecessor eligibility. */
|
|
112
98
|
async replaceRefreshToken(sessionId, refreshToken) {
|
|
113
99
|
await this.update(sessionId, {
|
|
114
|
-
|
|
115
|
-
refreshTokenHash: hashRefreshToken(refreshToken),
|
|
100
|
+
refreshTokenHash: (0, sessions_model_1.hashRefreshToken)(refreshToken),
|
|
116
101
|
sealedRefreshToken: null,
|
|
117
102
|
previousRefreshTokenHash: null,
|
|
118
103
|
refreshTokenRotatedAt: null,
|
|
119
104
|
});
|
|
120
105
|
}
|
|
106
|
+
/**
|
|
107
|
+
* Deletes the sessions nobody has used since a date. A session's current
|
|
108
|
+
* refresh token is issued no later than its last activity, so once that
|
|
109
|
+
* activity is older than the refresh token lifetime, no token can revive it.
|
|
110
|
+
*
|
|
111
|
+
* @param threshold Sessions last active before this date are deleted
|
|
112
|
+
*/
|
|
121
113
|
async deleteInactiveSince(threshold) {
|
|
122
114
|
await this.table
|
|
123
115
|
.between(LAST_ACTIVE_AT_INDEX, EPOCH_LOWER_BOUND, threshold)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessions.model.js","sourceRoot":"","sources":["../../../../src/auth/db/models/sessions.model.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"sessions.model.js","sourceRoot":"","sources":["../../../../src/auth/db/models/sessions.model.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
import { UserExternalIdentity } from "../tables/userExternalIdentities.table";
|
|
2
|
+
/**
|
|
3
|
+
* Deterministic row id of a provider account binding. Being the primary key,
|
|
4
|
+
* it is what makes the binding unique — see the table's TSDoc.
|
|
5
|
+
*/
|
|
2
6
|
export declare function buildExternalIdentityId(provider: string, providerAccountId: string): string;
|
|
3
7
|
declare const UserExternalIdentityModel_base: {
|
|
4
8
|
new (database: import("@antelopejs/interface-database").SchemaInstance<any>): {
|
|
@@ -19,6 +23,13 @@ declare const UserExternalIdentityModel_base: {
|
|
|
19
23
|
validate(obj: unknown, options?: import("@antelopejs/interface-database-decorators").ValidateInputOptions): import("@antelopejs/interface-database-decorators").ValidationResult;
|
|
20
24
|
};
|
|
21
25
|
export declare class UserExternalIdentityModel extends UserExternalIdentityModel_base {
|
|
26
|
+
/**
|
|
27
|
+
* Resolve the identity a provider account is bound to.
|
|
28
|
+
*
|
|
29
|
+
* @param provider Provider identifier
|
|
30
|
+
* @param providerAccountId Account identifier on the provider side
|
|
31
|
+
* @returns The bound identity, or undefined when the account is unknown
|
|
32
|
+
*/
|
|
22
33
|
getByProviderAccount(provider: string, providerAccountId: string): Promise<UserExternalIdentity | undefined>;
|
|
23
34
|
getByUserId(userId: string): Promise<UserExternalIdentity[]>;
|
|
24
35
|
deleteByUserId(userId: string): Promise<void>;
|
|
@@ -4,10 +4,21 @@ exports.UserExternalIdentityModel = void 0;
|
|
|
4
4
|
exports.buildExternalIdentityId = buildExternalIdentityId;
|
|
5
5
|
const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
|
|
6
6
|
const userExternalIdentities_table_1 = require("../tables/userExternalIdentities.table");
|
|
7
|
+
/**
|
|
8
|
+
* Deterministic row id of a provider account binding. Being the primary key,
|
|
9
|
+
* it is what makes the binding unique — see the table's TSDoc.
|
|
10
|
+
*/
|
|
7
11
|
function buildExternalIdentityId(provider, providerAccountId) {
|
|
8
12
|
return `${provider}:${providerAccountId}`;
|
|
9
13
|
}
|
|
10
14
|
class UserExternalIdentityModel extends (0, interface_database_decorators_1.BasicDataModel)(userExternalIdentities_table_1.UserExternalIdentity, userExternalIdentities_table_1.USER_EXTERNAL_IDENTITIES_TABLE_NAME) {
|
|
15
|
+
/**
|
|
16
|
+
* Resolve the identity a provider account is bound to.
|
|
17
|
+
*
|
|
18
|
+
* @param provider Provider identifier
|
|
19
|
+
* @param providerAccountId Account identifier on the provider side
|
|
20
|
+
* @returns The bound identity, or undefined when the account is unknown
|
|
21
|
+
*/
|
|
11
22
|
async getByProviderAccount(provider, providerAccountId) {
|
|
12
23
|
return await this.get(buildExternalIdentityId(provider, providerAccountId));
|
|
13
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"userExternalIdentities.model.js","sourceRoot":"","sources":["../../../../src/auth/db/models/userExternalIdentities.model.ts"],"names":[],"mappings":";;;AAUA,0DAKC;AAfD,6FAA2E;AAC3E,yFAGgD;
|
|
1
|
+
{"version":3,"file":"userExternalIdentities.model.js","sourceRoot":"","sources":["../../../../src/auth/db/models/userExternalIdentities.model.ts"],"names":[],"mappings":";;;AAUA,0DAKC;AAfD,6FAA2E;AAC3E,yFAGgD;AAEhD;;;GAGG;AACH,SAAgB,uBAAuB,CACrC,QAAgB,EAChB,iBAAyB;IAEzB,OAAO,GAAG,QAAQ,IAAI,iBAAiB,EAAE,CAAC;AAC5C,CAAC;AAED,MAAa,yBAA0B,SAAQ,IAAA,8CAAc,EAC3D,mDAAoB,EACpB,kEAAmC,CACpC;IACC;;;;;;OAMG;IACH,KAAK,CAAC,oBAAoB,CACxB,QAAgB,EAChB,iBAAyB;QAEzB,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,uBAAuB,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,WAAW,CAAC,MAAc;QACxB,OAAO,IAAI,CAAC,KAAK;aACd,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC;aACxB,GAAG,EAAE;aACL,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CACb,IAAI;aACD,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,yBAAyB,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;aACzD,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,KAAK,SAAS,CAAC,CAChD,CAAC;IACN,CAAC;IAED,cAAc,CAAC,MAAc;QAC3B,OAAO,IAAI,CAAC,KAAK;aACd,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC;aACxB,MAAM,EAAE;aACR,GAAG,EAAE;aACL,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC3B,CAAC;CACF;AApCD,8DAoCC"}
|
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
import { User } from "../tables/users.table";
|
|
2
|
+
/**
|
|
3
|
+
* Canonical form of an e-mail address as stored and looked up: accounts are
|
|
4
|
+
* written lowercased, so a lookup must not depend on the caller's casing.
|
|
5
|
+
*
|
|
6
|
+
* @param email The e-mail as typed
|
|
7
|
+
* @returns The trimmed, lowercased e-mail
|
|
8
|
+
*/
|
|
2
9
|
export declare function normalizeEmail(email: string): string;
|
|
3
10
|
declare const UserModel_base: {
|
|
4
11
|
new (database: import("@antelopejs/interface-database").SchemaInstance<any>): {
|
|
@@ -19,6 +26,12 @@ declare const UserModel_base: {
|
|
|
19
26
|
validate(obj: unknown, options?: import("@antelopejs/interface-database-decorators").ValidateInputOptions): import("@antelopejs/interface-database-decorators").ValidationResult;
|
|
20
27
|
};
|
|
21
28
|
export declare class UserModel extends UserModel_base {
|
|
29
|
+
/**
|
|
30
|
+
* Get the user by their email
|
|
31
|
+
*
|
|
32
|
+
* @param email The email of the user
|
|
33
|
+
* @returns The user or undefined if not found
|
|
34
|
+
*/
|
|
22
35
|
getByEmail(email: string): Promise<User | undefined>;
|
|
23
36
|
getOwners(): Promise<User[]>;
|
|
24
37
|
countOwnersExcluding(excludedIds: string[]): Promise<number>;
|
|
@@ -5,10 +5,23 @@ exports.normalizeEmail = normalizeEmail;
|
|
|
5
5
|
const interface_database_1 = require("@antelopejs/interface-database");
|
|
6
6
|
const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
|
|
7
7
|
const users_table_1 = require("../tables/users.table");
|
|
8
|
+
/**
|
|
9
|
+
* Canonical form of an e-mail address as stored and looked up: accounts are
|
|
10
|
+
* written lowercased, so a lookup must not depend on the caller's casing.
|
|
11
|
+
*
|
|
12
|
+
* @param email The e-mail as typed
|
|
13
|
+
* @returns The trimmed, lowercased e-mail
|
|
14
|
+
*/
|
|
8
15
|
function normalizeEmail(email) {
|
|
9
16
|
return email.trim().toLowerCase();
|
|
10
17
|
}
|
|
11
18
|
class UserModel extends (0, interface_database_decorators_1.BasicDataModel)(users_table_1.User, users_table_1.USERS_TABLE_NAME) {
|
|
19
|
+
/**
|
|
20
|
+
* Get the user by their email
|
|
21
|
+
*
|
|
22
|
+
* @param email The email of the user
|
|
23
|
+
* @returns The user or undefined if not found
|
|
24
|
+
*/
|
|
12
25
|
getByEmail(email) {
|
|
13
26
|
return this.table
|
|
14
27
|
.getAll(normalizeEmail(email), "email")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"users.model.js","sourceRoot":"","sources":["../../../../src/auth/db/models/users.model.ts"],"names":[],"mappings":";;;AAWA,wCAEC;AAbD,uEAA4D;AAC5D,6FAA2E;AAC3E,uDAA+D;
|
|
1
|
+
{"version":3,"file":"users.model.js","sourceRoot":"","sources":["../../../../src/auth/db/models/users.model.ts"],"names":[],"mappings":";;;AAWA,wCAEC;AAbD,uEAA4D;AAC5D,6FAA2E;AAC3E,uDAA+D;AAE/D;;;;;;GAMG;AACH,SAAgB,cAAc,CAAC,KAAa;IAC1C,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AACpC,CAAC;AAED,MAAa,SAAU,SAAQ,IAAA,8CAAc,EAAC,kBAAI,EAAE,8BAAgB,CAAC;IACnE;;;;;OAKG;IACH,UAAU,CAAC,KAAa;QACtB,OAAO,IAAI,CAAC,KAAK;aACd,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;aACtC,GAAG,CAAC,CAAC,CAAC;aACN,OAAO,CAAC,SAAS,CAAC;aAClB,GAAG,EAAE;aACL,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,SAAS;QACb,OAAO,MAAM,IAAI,CAAC,KAAK;aACpB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;aAC5C,GAAG,EAAE;aACL,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CACZ,GAAG;aACA,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;aAC3C,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CACxC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,WAAqB;QAC9C,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC,KAAK;iBACd,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;iBAC5C,KAAK,EAAE;iBACP,GAAG,EAAE,CAAC;QACX,CAAC;QACD,OAAO,IAAI,CAAC,KAAK;aACd,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CACf,IAAI;aACD,GAAG,CAAC,OAAO,CAAC;aACZ,EAAE,CAAC,IAAI,CAAC;aACR,GAAG,CACF,+BAAU,CAAC,QAAQ,CAAW,WAAW,CAAC;aACvC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;aACzB,GAAG,EAAE,CACT,CACJ;aACA,KAAK,EAAE;aACP,GAAG,EAAE,CAAC;IACX,CAAC;CACF;AAhDD,8BAgDC"}
|
|
@@ -3,8 +3,13 @@ export declare const SESSIONS_TABLE_NAME = "sessions";
|
|
|
3
3
|
export declare class Session extends Table {
|
|
4
4
|
_id: string;
|
|
5
5
|
userId: string;
|
|
6
|
-
|
|
6
|
+
/** sha256 of the current refresh token: the token itself is never stored. */
|
|
7
7
|
refreshTokenHash?: string | null;
|
|
8
|
+
/**
|
|
9
|
+
* The current refresh token sealed under a key only its predecessor
|
|
10
|
+
* derives, so the rotation grace window can hand it back to a client that
|
|
11
|
+
* still holds the predecessor without the token being readable at rest.
|
|
12
|
+
*/
|
|
8
13
|
sealedRefreshToken?: string | null;
|
|
9
14
|
previousRefreshTokenHash?: string | null;
|
|
10
15
|
refreshTokenRotatedAt?: Date | null;
|
|
@@ -27,10 +27,6 @@ __decorate([
|
|
|
27
27
|
(0, interface_database_decorators_1.Relation)({ to: () => users_table_1.User }),
|
|
28
28
|
__metadata("design:type", String)
|
|
29
29
|
], Session.prototype, "userId", void 0);
|
|
30
|
-
__decorate([
|
|
31
|
-
(0, interface_database_decorators_1.Field)("string"),
|
|
32
|
-
__metadata("design:type", String)
|
|
33
|
-
], Session.prototype, "refreshToken", void 0);
|
|
34
30
|
__decorate([
|
|
35
31
|
(0, interface_database_decorators_1.Field)("string"),
|
|
36
32
|
__metadata("design:type", Object)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessions.table.js","sourceRoot":"","sources":["../../../../src/auth/db/tables/sessions.table.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6FAOmD;AACnD,kDAAsD;AACtD,+CAAqC;AAExB,QAAA,mBAAmB,GAAG,UAAU,CAAC;AAGvC,IAAM,OAAO,GAAb,MAAM,OAAQ,SAAQ,qCAAK;
|
|
1
|
+
{"version":3,"file":"sessions.table.js","sourceRoot":"","sources":["../../../../src/auth/db/tables/sessions.table.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6FAOmD;AACnD,kDAAsD;AACtD,+CAAqC;AAExB,QAAA,mBAAmB,GAAG,UAAU,CAAC;AAGvC,IAAM,OAAO,GAAb,MAAM,OAAQ,SAAQ,qCAAK;CAqDjC,CAAA;AArDY,0BAAO;AAEV;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;oCACI;AAKZ;IAHP,IAAA,qCAAK,GAAE;IACP,IAAA,qCAAK,EAAC,QAAQ,CAAC;IACf,IAAA,wCAAQ,EAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,kBAAI,EAAE,CAAC;;uCACN;AAIf;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;iDACyB;AAQjC;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;mDAC2B;AAGnC;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;yDACiC;AAGzC;IADP,IAAA,qCAAK,EAAC,MAAM,CAAC;;sDAC8B;AAGpC;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;0CACU;AAGlB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;mCACG;AAGX;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;wCACQ;AAGhB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;mCACG;AAGX;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;2CACW;AAGnB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;yCACS;AAKjB;IAHP,IAAA,qCAAK,GAAE;IACP,IAAA,4CAAY,GAAE;IACd,IAAA,qCAAK,EAAC,MAAM,CAAC;8BACK,IAAI;0CAAC;AAIhB;IAFP,IAAA,qCAAK,GAAE;IACP,IAAA,qCAAK,EAAC,MAAM,CAAC;8BACQ,IAAI;6CAAC;kBApDhB,OAAO;IADnB,IAAA,6CAAa,EAAC,2BAAmB,EAAE,4BAAgB,CAAC;GACxC,OAAO,CAqDnB"}
|
|
@@ -1,10 +1,34 @@
|
|
|
1
1
|
import { Table } from "@antelopejs/interface-database-decorators";
|
|
2
2
|
export declare const USER_EXTERNAL_IDENTITIES_TABLE_NAME = "user_external_identities";
|
|
3
|
+
/**
|
|
4
|
+
* An identity a user owns on an external login provider (GitHub, Google, ...).
|
|
5
|
+
*
|
|
6
|
+
* The row id is the deterministic `<provider>:<providerAccountId>`, so the
|
|
7
|
+
* primary key is what guarantees one row per provider account — the schema
|
|
8
|
+
* layer offers no unique secondary index, and concurrent logins for the same
|
|
9
|
+
* account must collide instead of duplicating (same pattern as
|
|
10
|
+
* `TenantMember`).
|
|
11
|
+
*
|
|
12
|
+
* Scoped to authentication only: integrations that connect a provider for
|
|
13
|
+
* product features (repository access, deployments) own their own storage and
|
|
14
|
+
* must never be inferred from this table.
|
|
15
|
+
*/
|
|
3
16
|
export declare class UserExternalIdentity extends Table {
|
|
4
17
|
_id: string;
|
|
5
18
|
userId: string;
|
|
19
|
+
/**
|
|
20
|
+
* Provider identifier, as declared in the instance OAuth configuration.
|
|
21
|
+
*/
|
|
6
22
|
provider: string;
|
|
23
|
+
/**
|
|
24
|
+
* Immutable account identifier on the provider side. Never the e-mail: users
|
|
25
|
+
* change their provider e-mail without changing account.
|
|
26
|
+
*/
|
|
7
27
|
providerAccountId: string;
|
|
28
|
+
/**
|
|
29
|
+
* E-mail reported by the provider at the last successful login, kept for
|
|
30
|
+
* support and audit only. Account resolution never reads it back.
|
|
31
|
+
*/
|
|
8
32
|
email: string;
|
|
9
33
|
createdAt: Date;
|
|
10
34
|
lastLoginAt: Date;
|
|
@@ -14,6 +14,19 @@ const interface_database_decorators_1 = require("@antelopejs/interface-database-
|
|
|
14
14
|
const constants_1 = require("../../../constants");
|
|
15
15
|
const users_table_1 = require("./users.table");
|
|
16
16
|
exports.USER_EXTERNAL_IDENTITIES_TABLE_NAME = "user_external_identities";
|
|
17
|
+
/**
|
|
18
|
+
* An identity a user owns on an external login provider (GitHub, Google, ...).
|
|
19
|
+
*
|
|
20
|
+
* The row id is the deterministic `<provider>:<providerAccountId>`, so the
|
|
21
|
+
* primary key is what guarantees one row per provider account — the schema
|
|
22
|
+
* layer offers no unique secondary index, and concurrent logins for the same
|
|
23
|
+
* account must collide instead of duplicating (same pattern as
|
|
24
|
+
* `TenantMember`).
|
|
25
|
+
*
|
|
26
|
+
* Scoped to authentication only: integrations that connect a provider for
|
|
27
|
+
* product features (repository access, deployments) own their own storage and
|
|
28
|
+
* must never be inferred from this table.
|
|
29
|
+
*/
|
|
17
30
|
let UserExternalIdentity = class UserExternalIdentity extends interface_database_decorators_1.Table {
|
|
18
31
|
};
|
|
19
32
|
exports.UserExternalIdentity = UserExternalIdentity;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"userExternalIdentities.table.js","sourceRoot":"","sources":["../../../../src/auth/db/tables/userExternalIdentities.table.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6FAOmD;AACnD,kDAAsD;AACtD,+CAAqC;AAExB,QAAA,mCAAmC,GAAG,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"userExternalIdentities.table.js","sourceRoot":"","sources":["../../../../src/auth/db/tables/userExternalIdentities.table.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6FAOmD;AACnD,kDAAsD;AACtD,+CAAqC;AAExB,QAAA,mCAAmC,GAAG,0BAA0B,CAAC;AAE9E;;;;;;;;;;;;GAYG;AAEI,IAAM,oBAAoB,GAA1B,MAAM,oBAAqB,SAAQ,qCAAK;CAoC9C,CAAA;AApCY,oDAAoB;AAEvB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;iDACI;AAKZ;IAHP,IAAA,qCAAK,GAAE;IACP,IAAA,qCAAK,EAAC,QAAQ,CAAC;IACf,IAAA,wCAAQ,EAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,kBAAI,EAAE,CAAC;;oDACN;AAMf;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;sDACS;AAOjB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;+DACkB;AAO1B;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;mDACM;AAKd;IAHP,IAAA,qCAAK,GAAE;IACP,IAAA,4CAAY,GAAE;IACd,IAAA,qCAAK,EAAC,MAAM,CAAC;8BACK,IAAI;uDAAC;AAGhB;IADP,IAAA,qCAAK,EAAC,MAAM,CAAC;8BACO,IAAI;yDAAC;+BAnCf,oBAAoB;IADhC,IAAA,6CAAa,EAAC,2CAAmC,EAAE,4BAAgB,CAAC;GACxD,oBAAoB,CAoChC"}
|