@cosmicdrift/kumiko-bundled-features 0.362.0 → 0.364.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/dist/admin-shell/feature.d.ts +3 -0
- package/dist/admin-shell/feature.js +6 -1
- package/dist/agent-tools/agent-manifest.js +2 -1
- package/dist/agent-tools/filter-ops.d.ts +1 -1
- package/dist/agent-tools/filter-ops.js +1 -3
- package/dist/agent-tools/tool-dispatch.js +2 -1
- package/dist/audit/handlers/list.query.js +9 -5
- package/dist/auth-email-password/bootstrap.d.ts +8 -5
- package/dist/auth-email-password/bootstrap.js +12 -4
- package/dist/auth-email-password/email-rate-limits.d.ts +4 -0
- package/dist/auth-email-password/email-rate-limits.js +13 -0
- package/dist/auth-email-password/email-templates.d.ts +4 -26
- package/dist/auth-email-password/email-templates.js +9 -101
- package/dist/auth-email-password/feature.js +24 -6
- package/dist/auth-email-password/handlers/change-password.write.d.ts +1 -1
- package/dist/auth-email-password/handlers/change-password.write.js +6 -2
- package/dist/auth-email-password/handlers/confirm-account-unlock.write.d.ts +1 -1
- package/dist/auth-email-password/handlers/invite-accept-with-login.write.d.ts +1 -1
- package/dist/auth-email-password/handlers/invite-accept.write.d.ts +1 -1
- package/dist/auth-email-password/handlers/invite-create.write.d.ts +2 -2
- package/dist/auth-email-password/handlers/invite-create.write.js +4 -4
- package/dist/auth-email-password/handlers/invite-signup-complete.write.d.ts +1 -1
- package/dist/auth-email-password/handlers/login.write.d.ts +1 -1
- package/dist/auth-email-password/handlers/logout.write.d.ts +1 -1
- package/dist/auth-email-password/handlers/logout.write.js +6 -2
- package/dist/auth-email-password/handlers/request-account-unlock.write.d.ts +1 -1
- package/dist/auth-email-password/handlers/request-account-unlock.write.js +2 -4
- package/dist/auth-email-password/handlers/request-email-verification.write.d.ts +1 -1
- package/dist/auth-email-password/handlers/request-email-verification.write.js +2 -4
- package/dist/auth-email-password/handlers/request-password-reset.write.d.ts +1 -1
- package/dist/auth-email-password/handlers/request-password-reset.write.js +2 -4
- package/dist/auth-email-password/handlers/reset-password.write.d.ts +1 -1
- package/dist/auth-email-password/handlers/signup-confirm.write.d.ts +1 -1
- package/dist/auth-email-password/handlers/signup-confirm.write.js +3 -4
- package/dist/auth-email-password/handlers/signup-request.write.d.ts +1 -1
- package/dist/auth-email-password/handlers/signup-request.write.js +2 -1
- package/dist/auth-email-password/handlers/switch-tenant-mfa-gate.write.d.ts +1 -1
- package/dist/auth-email-password/handlers/token-request-handler.d.ts +2 -3
- package/dist/auth-email-password/handlers/token-request-handler.js +2 -2
- package/dist/auth-email-password/handlers/verify-email.write.d.ts +1 -1
- package/dist/auth-email-password/index.d.ts +2 -2
- package/dist/auth-email-password/index.js +1 -1
- package/dist/auth-email-password/magic-link-mail.d.ts +3 -2
- package/dist/auth-email-password/magic-link-mail.js +19 -14
- package/dist/auth-email-password/mail-notifications.d.ts +32 -0
- package/dist/auth-email-password/mail-notifications.js +116 -0
- package/dist/auth-email-password/signup-activation.d.ts +1 -1
- package/dist/auth-email-password/signup-activation.js +2 -3
- package/dist/auth-email-password/web/auth-gate.js +16 -4
- package/dist/auth-foundation/types.js +2 -8
- package/dist/auth-mfa/feature.js +4 -4
- package/dist/auth-mfa/handlers/disable.write.d.ts +1 -1
- package/dist/auth-mfa/handlers/enable-confirm-preauth.write.d.ts +1 -1
- package/dist/auth-mfa/handlers/enable-confirm.write.d.ts +1 -1
- package/dist/auth-mfa/handlers/enable-start-preauth.write.d.ts +1 -1
- package/dist/auth-mfa/handlers/enable-start.write.d.ts +1 -1
- package/dist/auth-mfa/handlers/regenerate-recovery.write.d.ts +1 -1
- package/dist/auth-mfa/handlers/verify.write.d.ts +1 -1
- package/dist/auth-mfa/hmac-token-codec.js +4 -4
- package/dist/auth-mfa/mfa-challenge-token.js +3 -3
- package/dist/auth-mfa/mfa-preauth-setup-token.js +3 -3
- package/dist/auth-mfa/mfa-setup-token.js +8 -8
- package/dist/billing-foundation/constants.d.ts +3 -3
- package/dist/billing-foundation/constants.js +5 -4
- package/dist/billing-foundation/consumer-protection/confirmation-mail.d.ts +32 -14
- package/dist/billing-foundation/consumer-protection/confirmation-mail.js +74 -32
- package/dist/billing-foundation/consumer-protection/consent-gate.d.ts +3 -0
- package/dist/billing-foundation/consumer-protection/consent-gate.js +21 -2
- package/dist/billing-foundation/consumer-protection/issue-confirmation.js +3 -3
- package/dist/billing-foundation/consumer-protection/mail-notifications.d.ts +8 -0
- package/dist/billing-foundation/consumer-protection/mail-notifications.js +95 -0
- package/dist/billing-foundation/consumer-protection/register-consent.js +2 -0
- package/dist/billing-foundation/consumer-protection/register-termination.js +11 -1
- package/dist/billing-foundation/consumer-protection/termination-mail.d.ts +25 -13
- package/dist/billing-foundation/consumer-protection/termination-mail.js +11 -23
- package/dist/billing-foundation/consumer-protection/termination-notify.js +2 -2
- package/dist/billing-foundation/consumer-protection/termination-pages.js +1 -3
- package/dist/billing-foundation/consumer-protection/termination-receipt-limit.d.ts +6 -0
- package/dist/billing-foundation/consumer-protection/termination-receipt-limit.js +34 -0
- package/dist/billing-foundation/consumer-protection/termination-record.d.ts +2 -0
- package/dist/billing-foundation/consumer-protection/termination-record.js +7 -1
- package/dist/billing-foundation/consumer-protection/termination-request.js +31 -21
- package/dist/billing-foundation/consumer-protection/termination-texts.d.ts +1 -1
- package/dist/billing-foundation/consumer-protection/termination-texts.js +6 -0
- package/dist/billing-foundation/consumer-protection/withdrawal-period.d.ts +10 -0
- package/dist/billing-foundation/consumer-protection/withdrawal-period.js +26 -0
- package/dist/billing-foundation/handlers/create-checkout-session.write.js +11 -5
- package/dist/billing-foundation/handlers/process-event.write.js +12 -8
- package/dist/billing-foundation/handlers/process-payment-event.write.js +1 -1
- package/dist/billing-foundation/i18n.js +3 -0
- package/dist/billing-foundation/subscription-tier-sync.d.ts +7 -1
- package/dist/billing-foundation/subscription-tier-sync.js +16 -9
- package/dist/billing-foundation/types.d.ts +7 -2
- package/dist/cap-counter/calendar-cap-usage-reservation.js +2 -0
- package/dist/cap-counter/enforce-cap.d.ts +18 -1
- package/dist/cap-counter/enforce-cap.js +49 -6
- package/dist/cap-counter/index.d.ts +1 -1
- package/dist/cap-counter/index.js +1 -1
- package/dist/cap-counter/with-cap-enforcement.d.ts +2 -0
- package/dist/cap-overview/handlers/tenant-caps-list.query.js +2 -1
- package/dist/cap-overview/web/cap-usage-cell.js +5 -4
- package/dist/channel-email/email-channel.d.ts +2 -2
- package/dist/channel-email/email-channel.js +101 -26
- package/dist/channel-email/feature.js +3 -3
- package/dist/channel-email/index.d.ts +1 -1
- package/dist/channel-email/index.js +1 -1
- package/dist/channel-email/pii-guard.js +10 -0
- package/dist/channel-email/smtp-transport.js +13 -0
- package/dist/channel-email/types.d.ts +8 -0
- package/dist/channel-in-app/handlers/mark-all-read.write.d.ts +1 -1
- package/dist/channel-in-app/handlers/mark-read.write.d.ts +1 -1
- package/dist/compliance-profiles/handlers/set-profile.write.d.ts +1 -1
- package/dist/config/handlers/reset.write.d.ts +1 -1
- package/dist/config/handlers/set.write.d.ts +1 -1
- package/dist/config/handlers/set.write.js +3 -4
- package/dist/config/resolver.d.ts +1 -0
- package/dist/config/resolver.js +11 -14
- package/dist/config/write-helpers.d.ts +2 -0
- package/dist/config/write-helpers.js +19 -0
- package/dist/crypto-shredding/handlers/forget-subject.write.d.ts +1 -1
- package/dist/crypto-shredding/handlers/forget-subject.write.js +29 -19
- package/dist/custom-fields/handlers/update-tenant-field.write.js +0 -1
- package/dist/custom-fields/lib/value-schema.js +10 -11
- package/dist/custom-fields/wire-user-data-rights.js +7 -6
- package/dist/data-retention/index.d.ts +1 -0
- package/dist/data-retention/index.js +1 -0
- package/dist/data-retention/run-retention-cleanup.js +6 -6
- package/dist/delivery/attachment-ref.d.ts +41 -0
- package/dist/delivery/attachment-ref.js +78 -0
- package/dist/delivery/channel-context.d.ts +8 -4
- package/dist/delivery/channel-context.js +94 -2
- package/dist/delivery/constants.d.ts +1 -0
- package/dist/delivery/constants.js +1 -0
- package/dist/delivery/delivery-service.d.ts +4 -1
- package/dist/delivery/delivery-service.js +38 -32
- package/dist/delivery/feature.js +1 -1
- package/dist/delivery/handlers/resubscribe-address.write.d.ts +1 -1
- package/dist/delivery/handlers/resubscribe-user.write.d.ts +1 -1
- package/dist/delivery/handlers/set-preference.write.d.ts +1 -1
- package/dist/delivery/handlers/unsubscribe-address.write.d.ts +1 -1
- package/dist/delivery/handlers/unsubscribe-user.write.d.ts +1 -1
- package/dist/delivery/index.d.ts +5 -2
- package/dist/delivery/index.js +4 -1
- package/dist/delivery/jobs.js +66 -14
- package/dist/delivery/notify-factory.js +4 -1
- package/dist/delivery/testing.d.ts +4 -1
- package/dist/delivery/types.d.ts +26 -14
- package/dist/delivery/unsubscribe.js +4 -1
- package/dist/derivatives-sharp/render.js +1 -18
- package/dist/document-ingest-foundation/pages.js +4 -4
- package/dist/feature-toggles/handlers/set.write.d.ts +1 -1
- package/dist/feature-toggles/toggle-sync-signal.js +4 -4
- package/dist/file-derivatives/handlers/public-variant.query.js +1 -1
- package/dist/file-foundation/index.d.ts +1 -0
- package/dist/file-foundation/index.js +1 -0
- package/dist/file-foundation/read-file-ref-content.d.ts +27 -0
- package/dist/file-foundation/read-file-ref-content.js +51 -0
- package/dist/files-tenant-data/hooks.js +4 -0
- package/dist/folders/web/folder-manager.js +3 -2
- package/dist/form-draft/db/queries/cleanup.js +4 -4
- package/dist/form-draft/db/queries/draft-count.js +2 -2
- package/dist/form-draft/db/queries/owned-file-refs.js +2 -2
- package/dist/form-draft/handlers/discard.write.d.ts +1 -1
- package/dist/form-draft/handlers/save.write.d.ts +1 -1
- package/dist/form-draft/release-file-refs.js +3 -2
- package/dist/inbound-mail-foundation/handlers/connect-account.write.js +1 -1
- package/dist/inbound-mail-foundation/handlers/ingest-message.write.js +6 -6
- package/dist/inbound-mail-foundation/handlers/scope-visibility.d.ts +1 -1
- package/dist/inbound-mail-foundation/oauth-access-token.js +8 -3
- package/dist/inbound-mail-foundation/oauth-state.js +7 -7
- package/dist/inbound-mail-foundation/types.js +4 -4
- package/dist/inbound-mail-foundation/watch-supervisor.js +24 -13
- package/dist/inbound-provider-imap/imap-client.js +4 -3
- package/dist/jobs/db/queries/stale-run-sweep.d.ts +1 -1
- package/dist/jobs/db/queries/stale-run-sweep.js +12 -5
- package/dist/jobs/feature.js +5 -3
- package/dist/jobs/handlers/list.query.js +3 -1
- package/dist/jobs/handlers/retry.write.d.ts +1 -1
- package/dist/jobs/handlers/stale-run-sweep.job.d.ts +1 -1
- package/dist/jobs/handlers/stale-run-sweep.job.js +2 -2
- package/dist/jobs/handlers/trigger.write.d.ts +1 -1
- package/dist/jobs/job-run-logger.js +32 -10
- package/dist/jobs/tenant-job-run-table.js +3 -2
- package/dist/ledger/entity.js +3 -1
- package/dist/ledger/recurring.js +1 -3
- package/dist/managed-pages/branding.d.ts +2 -0
- package/dist/managed-pages/branding.js +24 -2
- package/dist/managed-pages/feature.js +1 -0
- package/dist/managed-pages/handlers/set.write.d.ts +1 -1
- package/dist/managed-pages/i18n.js +1 -0
- package/dist/managed-pages/screens/branding-screen.js +8 -1
- package/dist/page-render/branding.d.ts +1 -0
- package/dist/page-render/branding.js +1 -0
- package/dist/page-render/markdown.js +1 -1
- package/dist/personal-access-tokens/feature.js +1 -1
- package/dist/personal-access-tokens/handlers/create.write.d.ts +1 -1
- package/dist/personal-access-tokens/handlers/list.query.js +2 -1
- package/dist/personal-access-tokens/handlers/revoke.write.d.ts +1 -1
- package/dist/personal-access-tokens/revoke-for-user.js +2 -1
- package/dist/renderer-foundation/api.d.ts +13 -13
- package/dist/renderer-foundation/api.js +1 -1
- package/dist/renderer-foundation/constants.js +2 -4
- package/dist/renderer-foundation/feature.js +7 -7
- package/dist/renderer-foundation/index.d.ts +2 -1
- package/dist/renderer-foundation/index.js +1 -0
- package/dist/renderer-foundation/types.d.ts +94 -32
- package/dist/renderer-pdf/feature.js +7 -1
- package/dist/renderer-pdf/render-table-pdf.d.ts +27 -33
- package/dist/renderer-pdf/render-table-pdf.js +95 -34
- package/dist/secrets/feature.js +4 -3
- package/dist/secrets/handlers/delete.write.d.ts +1 -1
- package/dist/secrets/handlers/set.write.d.ts +1 -1
- package/dist/secrets/secrets-context.js +15 -3
- package/dist/sessions/db/queries/cleanup.js +2 -2
- package/dist/sessions/feature.js +1 -1
- package/dist/sessions/handlers/list.query.js +2 -1
- package/dist/sessions/handlers/revoke-all-for-user.write.d.ts +1 -1
- package/dist/sessions/handlers/revoke-all-others.write.d.ts +1 -1
- package/dist/sessions/handlers/revoke.write.d.ts +1 -1
- package/dist/shared/attachment-file-name.d.ts +3 -0
- package/dist/shared/attachment-file-name.js +35 -0
- package/dist/shared/chunked-entity-migration.d.ts +1 -0
- package/dist/shared/chunked-entity-migration.js +1 -1
- package/dist/shared/index.d.ts +3 -0
- package/dist/shared/index.js +3 -0
- package/dist/shared/is-tenant-db.js +1 -1
- package/dist/shared/mail-template-body.d.ts +7 -0
- package/dist/shared/mail-template-body.js +27 -0
- package/dist/shared/sharp-input-limits.d.ts +6 -0
- package/dist/shared/sharp-input-limits.js +22 -0
- package/dist/shared/signup-handover.js +2 -2
- package/dist/subscription-stripe/plugin-methods.js +18 -8
- package/dist/subscription-stripe/verify-webhook.d.ts +1 -1
- package/dist/tags/handlers/assign-tag.write.js +3 -1
- package/dist/tags/web/tag-chip.js +2 -0
- package/dist/template-resolver/api.d.ts +30 -2
- package/dist/template-resolver/api.js +42 -6
- package/dist/template-resolver/compile-document-body.d.ts +12 -0
- package/dist/template-resolver/compile-document-body.js +205 -0
- package/dist/template-resolver/constants.d.ts +13 -4
- package/dist/template-resolver/constants.js +32 -10
- package/dist/template-resolver/document-sanitizer.d.ts +32 -0
- package/dist/template-resolver/document-sanitizer.js +201 -0
- package/dist/template-resolver/document-schema.d.ts +21 -0
- package/dist/template-resolver/document-schema.js +316 -0
- package/dist/template-resolver/feature.d.ts +20 -0
- package/dist/template-resolver/feature.js +53 -6
- package/dist/template-resolver/handlers/bundle-import.d.ts +20 -0
- package/dist/template-resolver/handlers/bundle-import.js +147 -0
- package/dist/template-resolver/handlers/collection-set.write.d.ts +1 -1
- package/dist/template-resolver/handlers/collection-set.write.js +25 -2
- package/dist/template-resolver/handlers/copy-locale.write.d.ts +19 -0
- package/dist/template-resolver/handlers/copy-locale.write.js +134 -0
- package/dist/template-resolver/handlers/diff-to-system.query.d.ts +22 -0
- package/dist/template-resolver/handlers/diff-to-system.query.js +30 -0
- package/dist/template-resolver/handlers/discard-draft.write.d.ts +13 -0
- package/dist/template-resolver/handlers/discard-draft.write.js +37 -0
- package/dist/template-resolver/handlers/export-bundle.query.d.ts +35 -0
- package/dist/template-resolver/handlers/export-bundle.query.js +118 -0
- package/dist/template-resolver/handlers/find-by-id.query.d.ts +2 -0
- package/dist/template-resolver/handlers/find-by-id.query.js +9 -6
- package/dist/template-resolver/handlers/import-bundle-system.write.d.ts +39 -0
- package/dist/template-resolver/handlers/import-bundle-system.write.js +36 -0
- package/dist/template-resolver/handlers/import-bundle.write.d.ts +40 -0
- package/dist/template-resolver/handlers/import-bundle.write.js +19 -0
- package/dist/template-resolver/handlers/layout-source.query.d.ts +31 -0
- package/dist/template-resolver/handlers/layout-source.query.js +87 -0
- package/dist/template-resolver/handlers/list.query.d.ts +4 -1
- package/dist/template-resolver/handlers/list.query.js +9 -8
- package/dist/template-resolver/handlers/override-diff.d.ts +20 -0
- package/dist/template-resolver/handlers/override-diff.js +41 -0
- package/dist/template-resolver/handlers/overview.query.d.ts +65 -0
- package/dist/template-resolver/handlers/overview.query.js +205 -0
- package/dist/template-resolver/handlers/preview.query.d.ts +12 -0
- package/dist/template-resolver/handlers/preview.query.js +24 -0
- package/dist/template-resolver/handlers/reset-to-system.write.d.ts +8 -0
- package/dist/template-resolver/handlers/reset-to-system.write.js +50 -0
- package/dist/template-resolver/handlers/resource-link-pdf.write.d.ts +8 -0
- package/dist/template-resolver/handlers/resource-link-pdf.write.js +32 -0
- package/dist/template-resolver/handlers/resource-remove.write.d.ts +9 -0
- package/dist/template-resolver/handlers/resource-remove.write.js +44 -0
- package/dist/template-resolver/handlers/resource-shared.d.ts +9 -0
- package/dist/template-resolver/handlers/resource-shared.js +14 -0
- package/dist/template-resolver/handlers/resource-upload.write.d.ts +13 -0
- package/dist/template-resolver/handlers/resource-upload.write.js +98 -0
- package/dist/template-resolver/handlers/send-test.write.d.ts +13 -0
- package/dist/template-resolver/handlers/send-test.write.js +108 -0
- package/dist/template-resolver/handlers/set.write.d.ts +5 -2
- package/dist/template-resolver/handlers/set.write.js +25 -3
- package/dist/template-resolver/handlers/shared.d.ts +9 -5
- package/dist/template-resolver/handlers/shared.js +6 -2
- package/dist/template-resolver/handlers/template-gates.d.ts +36 -0
- package/dist/template-resolver/handlers/template-gates.js +142 -0
- package/dist/template-resolver/handlers/template-write.d.ts +45 -0
- package/dist/template-resolver/handlers/template-write.js +141 -0
- package/dist/template-resolver/handlers/tenant-overrides.query.d.ts +49 -0
- package/dist/template-resolver/handlers/tenant-overrides.query.js +112 -0
- package/dist/template-resolver/handlers/toggle-status.write.d.ts +27 -2
- package/dist/template-resolver/handlers/toggle-status.write.js +47 -15
- package/dist/template-resolver/handlers/upsert-system.write.d.ts +5 -8
- package/dist/template-resolver/handlers/upsert-system.write.js +14 -59
- package/dist/template-resolver/handlers/upsert-tenant.write.d.ts +5 -8
- package/dist/template-resolver/handlers/upsert-tenant.write.js +11 -62
- package/dist/template-resolver/handlers/usage.query.d.ts +17 -0
- package/dist/template-resolver/handlers/usage.query.js +24 -0
- package/dist/template-resolver/handlers/validate.query.d.ts +74 -0
- package/dist/template-resolver/handlers/validate.query.js +80 -0
- package/dist/template-resolver/index.d.ts +19 -1
- package/dist/template-resolver/index.js +17 -1
- package/dist/template-resolver/layout-appearance.d.ts +10 -0
- package/dist/template-resolver/layout-appearance.js +26 -0
- package/dist/template-resolver/layout-regions.d.ts +23 -0
- package/dist/template-resolver/layout-regions.js +125 -0
- package/dist/template-resolver/linked-resources.d.ts +17 -0
- package/dist/template-resolver/linked-resources.js +75 -0
- package/dist/template-resolver/pdf-constants.d.ts +7 -0
- package/dist/template-resolver/pdf-constants.js +8 -0
- package/dist/template-resolver/preview-display-html.d.ts +7 -0
- package/dist/template-resolver/preview-display-html.js +27 -0
- package/dist/template-resolver/print-document.d.ts +1 -0
- package/dist/template-resolver/print-document.js +55 -0
- package/dist/template-resolver/qualified-names.d.ts +34 -0
- package/dist/template-resolver/qualified-names.js +34 -0
- package/dist/template-resolver/record-mapping.d.ts +2 -0
- package/dist/template-resolver/record-mapping.js +21 -0
- package/dist/template-resolver/resource-image.d.ts +15 -0
- package/dist/template-resolver/resource-image.js +34 -0
- package/dist/template-resolver/seeding.d.ts +14 -1
- package/dist/template-resolver/seeding.js +125 -18
- package/dist/template-resolver/store-template-resource.d.ts +64 -0
- package/dist/template-resolver/store-template-resource.js +264 -0
- package/dist/template-resolver/table.d.ts +150 -8
- package/dist/template-resolver/table.js +20 -2
- package/dist/template-resolver/template-bundle.d.ts +36 -0
- package/dist/template-resolver/template-bundle.js +60 -0
- package/dist/template-resolver/template-diff.d.ts +7 -0
- package/dist/template-resolver/template-diff.js +68 -0
- package/dist/template-resolver/template-draft.d.ts +51 -0
- package/dist/template-resolver/template-draft.js +72 -0
- package/dist/template-resolver/template-meta.d.ts +85 -0
- package/dist/template-resolver/template-meta.js +145 -0
- package/dist/template-resolver/template-preview.d.ts +103 -0
- package/dist/template-resolver/template-preview.js +418 -0
- package/dist/template-resolver/template-resources.d.ts +19 -0
- package/dist/template-resolver/template-resources.js +73 -0
- package/dist/template-resolver/template-usage.d.ts +16 -0
- package/dist/template-resolver/template-usage.js +35 -0
- package/dist/template-resolver/template-validation.d.ts +22 -0
- package/dist/template-resolver/template-validation.js +173 -0
- package/dist/template-resolver/testing.js +5 -5
- package/dist/template-resolver/user-content-table.d.ts +14 -8
- package/dist/template-resolver/web/client-plugin.d.ts +1 -0
- package/dist/template-resolver/web/client-plugin.js +12 -7
- package/dist/template-resolver/web/document-editor-extensions.d.ts +18 -0
- package/dist/template-resolver/web/document-editor-extensions.js +145 -0
- package/dist/template-resolver/web/document-editor.d.ts +4 -0
- package/dist/template-resolver/web/document-editor.js +17 -0
- package/dist/template-resolver/web/document-tiptap-editor.d.ts +3 -0
- package/dist/template-resolver/web/document-tiptap-editor.js +492 -0
- package/dist/template-resolver/web/document-toolbar-blocks.d.ts +41 -0
- package/dist/template-resolver/web/document-toolbar-blocks.js +19 -0
- package/dist/template-resolver/web/editor-handle.d.ts +3 -0
- package/dist/template-resolver/web/editor-handle.js +24 -0
- package/dist/template-resolver/web/i18n.js +91 -0
- package/dist/template-resolver/web/index.d.ts +5 -0
- package/dist/template-resolver/web/index.js +5 -0
- package/dist/template-resolver/web/placeholder-line-editor-lazy.d.ts +4 -0
- package/dist/template-resolver/web/placeholder-line-editor-lazy.js +16 -0
- package/dist/template-resolver/web/placeholder-line-editor.d.ts +17 -0
- package/dist/template-resolver/web/placeholder-line-editor.js +94 -0
- package/dist/template-resolver/web/placeholder-text.d.ts +4 -0
- package/dist/template-resolver/web/placeholder-text.js +34 -0
- package/dist/template-resolver/web/use-stable-by-key.d.ts +1 -0
- package/dist/template-resolver/web/use-stable-by-key.js +13 -0
- package/dist/tenant/handlers/add-member.write.d.ts +1 -1
- package/dist/tenant/handlers/cancel-invitation.write.d.ts +1 -1
- package/dist/tenant/handlers/create.write.d.ts +1 -1
- package/dist/tenant/handlers/remove-member.write.d.ts +1 -1
- package/dist/tenant/handlers/team-list.query.js +3 -2
- package/dist/tenant/handlers/toggle-enabled.write.d.ts +2 -2
- package/dist/tenant/handlers/update-member-roles.write.d.ts +1 -1
- package/dist/tenant/handlers/update.write.d.ts +1 -1
- package/dist/tenant/seeding.js +31 -6
- package/dist/tenant-handover/handlers/claim.write.d.ts +1 -1
- package/dist/tenant-lifecycle/handlers/cancel-destruction.write.d.ts +2 -2
- package/dist/tenant-lifecycle/handlers/cancel-destruction.write.js +2 -1
- package/dist/tenant-lifecycle/handlers/request-destruction.write.d.ts +1 -1
- package/dist/tier-engine/feature.js +9 -3
- package/dist/tier-engine/handlers/set-tenant-tier.write.d.ts +1 -1
- package/dist/user/db/queries/stream-tenant-backfill.js +4 -4
- package/dist/user/handlers/create.write.d.ts +1 -1
- package/dist/user/handlers/detail.query.js +2 -1
- package/dist/user/handlers/update.write.d.ts +1 -1
- package/dist/user/resolve-display-names.js +5 -9
- package/dist/user/seeding.js +20 -1
- package/dist/user-data-rights/db/queries/forget-cleanup.d.ts +2 -2
- package/dist/user-data-rights/email-templates.d.ts +1 -29
- package/dist/user-data-rights/email-templates.js +5 -106
- package/dist/user-data-rights/feature.js +53 -35
- package/dist/user-data-rights/handlers/cancel-deletion.write.d.ts +2 -2
- package/dist/user-data-rights/handlers/cancel-deletion.write.js +2 -1
- package/dist/user-data-rights/handlers/confirm-deletion-by-token.write.d.ts +1 -1
- package/dist/user-data-rights/handlers/lift-restriction.write.d.ts +1 -1
- package/dist/user-data-rights/handlers/request-deletion-by-email.write.d.ts +1 -1
- package/dist/user-data-rights/handlers/request-deletion.write.d.ts +1 -1
- package/dist/user-data-rights/handlers/request-deletion.write.js +5 -7
- package/dist/user-data-rights/handlers/request-export.write.d.ts +1 -1
- package/dist/user-data-rights/handlers/restrict-account.write.d.ts +1 -1
- package/dist/user-data-rights/handlers/run-forget-cleanup.write.d.ts +1 -1
- package/dist/user-data-rights/lib/default-mailers.d.ts +15 -7
- package/dist/user-data-rights/lib/default-mailers.js +100 -48
- package/dist/user-data-rights/lib/update-user-lifecycle.js +1 -1
- package/dist/user-data-rights/mail-notifications.d.ts +13 -0
- package/dist/user-data-rights/mail-notifications.js +118 -0
- package/dist/user-data-rights/web/privacy-center-screen.js +2 -1
- package/dist/user-profile/handlers/change-email.write.d.ts +1 -1
- package/dist/user-profile/web/profile-screen.js +2 -1
- package/dist/waitlist/feature.js +10 -0
- package/dist/waitlist/handlers/invite.write.d.ts +1 -1
- package/dist/waitlist/handlers/reject.write.d.ts +1 -1
- package/dist/waitlist/handlers/submit.write.d.ts +1 -1
- package/dist/waitlist/handlers/submit.write.js +3 -4
- package/dist/waitlist/mail.d.ts +19 -6
- package/dist/waitlist/mail.js +50 -14
- package/dist/waitlist/options.js +1 -1
- package/dist/workflow-runner/event-trigger.js +2 -2
- package/dist/workflow-runner/handlers/resume-run.write.js +7 -2
- package/package.json +37 -17
- package/src/admin-shell/changes.json +6 -0
- package/src/audit/changes.json +6 -0
- package/src/auth-email-password/changes.json +51 -0
- package/src/billing-foundation/changes.json +43 -0
- package/src/cap-counter/changes.json +6 -0
- package/src/channel-email/changes.json +19 -0
- package/src/config/changes.json +6 -0
- package/src/crypto-shredding/changes.json +6 -0
- package/src/custom-fields/changes.json +6 -0
- package/src/data-retention/changes.json +6 -0
- package/src/delivery/changes.json +66 -0
- package/src/file-foundation/changes.json +6 -0
- package/src/files-tenant-data/changes.json +6 -0
- package/src/inbound-mail-foundation/changes.json +6 -0
- package/src/jobs/changes.json +19 -0
- package/src/ledger/changes.json +7 -0
- package/src/managed-pages/changes.json +6 -0
- package/src/renderer-foundation/changes.json +39 -0
- package/src/renderer-pdf/changes.json +12 -0
- package/src/secrets/changes.json +6 -0
- package/src/shared/changes.json +6 -0
- package/src/subscription-stripe/changes.json +6 -0
- package/src/template-resolver/changes.json +186 -0
- package/src/tier-engine/changes.json +6 -0
- package/src/user/changes.json +6 -0
- package/src/user-data-rights/changes.json +13 -0
- package/src/user-profile/changes.json +1 -1
- package/src/waitlist/changes.json +7 -0
- package/src/workflow-runner/changes.json +6 -0
- package/dist/renderer-simple/feature.d.ts +0 -10
- package/dist/renderer-simple/feature.js +0 -42
- package/dist/renderer-simple/index.d.ts +0 -3
- package/dist/renderer-simple/index.js +0 -2
- package/dist/renderer-simple/mail-blocks.d.ts +0 -21
- package/dist/renderer-simple/mail-blocks.js +0 -107
- package/dist/renderer-simple/resolve-variables.d.ts +0 -7
- package/dist/renderer-simple/resolve-variables.js +0 -47
- package/dist/renderer-simple/simple-renderer.d.ts +0 -24
- package/dist/renderer-simple/simple-renderer.js +0 -200
- package/src/renderer-simple/changes.json +0 -27
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { AUTH_VERIFY_DEFAULT_TTL_MINUTES, AuthErrors } from "../constants.js";
|
|
2
|
-
import {
|
|
2
|
+
import { AuthMailNotificationTypes } from "../mail-notifications.js";
|
|
3
3
|
import { signVerificationToken } from "../verification-token.js";
|
|
4
4
|
import { createTokenRequestHandler, } from "./token-request-handler.js";
|
|
5
|
-
const VERIFY_NOTIFICATION_TYPE = "auth-email-password:email-verification";
|
|
6
5
|
// @wrapper-known semantic-alias
|
|
7
6
|
export function createRequestEmailVerificationHandler(opts) {
|
|
8
7
|
return createTokenRequestHandler({
|
|
@@ -17,7 +16,6 @@ export function createRequestEmailVerificationHandler(opts) {
|
|
|
17
16
|
// unknown/deleted to keep the enumeration surface symmetric — the
|
|
18
17
|
// caller sees the same 200 regardless of whether a token was minted.
|
|
19
18
|
extraSilentSkip: (user) => user.emailVerified === true,
|
|
20
|
-
notificationType:
|
|
21
|
-
renderContent: renderVerifyEmail,
|
|
19
|
+
notificationType: AuthMailNotificationTypes.emailVerification,
|
|
22
20
|
}, opts);
|
|
23
21
|
}
|
|
@@ -3,4 +3,4 @@ export type RequestPasswordResetOptions = TokenRequestOptions;
|
|
|
3
3
|
export type RequestResetData = TokenRequestData<"reset-requested">;
|
|
4
4
|
export declare function createRequestPasswordResetHandler(opts: RequestPasswordResetOptions): import("@cosmicdrift/kumiko-types/define-handler").WriteHandlerDefinition<"request-password-reset", import("zod").ZodObject<{
|
|
5
5
|
email: import("zod").ZodEmail;
|
|
6
|
-
}, import("zod/v4/core").$strip>, TokenRequestData<"reset-requested">, import("@cosmicdrift/kumiko-types/event-type-map").KumikoEventTypeMap>;
|
|
6
|
+
}, import("zod/v4/core").$strip>, TokenRequestData<"reset-requested">, import("@cosmicdrift/kumiko-types/event-type-map").KumikoEventTypeMap, undefined>;
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { AUTH_RESET_DEFAULT_TTL_MINUTES, AuthErrors } from "../constants.js";
|
|
2
|
-
import {
|
|
2
|
+
import { AuthMailNotificationTypes } from "../mail-notifications.js";
|
|
3
3
|
import { signResetToken } from "../reset-token.js";
|
|
4
4
|
import { createTokenRequestHandler, } from "./token-request-handler.js";
|
|
5
|
-
const RESET_NOTIFICATION_TYPE = "auth-email-password:password-reset";
|
|
6
5
|
// @wrapper-known semantic-alias
|
|
7
6
|
export function createRequestPasswordResetHandler(opts) {
|
|
8
7
|
return createTokenRequestHandler({
|
|
@@ -17,7 +16,6 @@ export function createRequestPasswordResetHandler(opts) {
|
|
|
17
16
|
// non-deleted user can initiate a reset regardless of verification
|
|
18
17
|
// state. The sessions feature handles the post-change revocation.
|
|
19
18
|
extraSilentSkip: () => false,
|
|
20
|
-
notificationType:
|
|
21
|
-
renderContent: renderResetPasswordEmail,
|
|
19
|
+
notificationType: AuthMailNotificationTypes.passwordReset,
|
|
22
20
|
}, opts);
|
|
23
21
|
}
|
|
@@ -7,4 +7,4 @@ export declare function createResetPasswordHandler(opts: ResetPasswordOptions):
|
|
|
7
7
|
newPassword: z.ZodString;
|
|
8
8
|
}, z.core.$strip>, {
|
|
9
9
|
kind: "password-reset";
|
|
10
|
-
}, import("@cosmicdrift/kumiko-types/event-type-map").KumikoEventTypeMap>;
|
|
10
|
+
}, import("@cosmicdrift/kumiko-types/event-type-map").KumikoEventTypeMap, undefined>;
|
|
@@ -27,5 +27,5 @@ type ClaimedHandover = {
|
|
|
27
27
|
export declare function createSignupConfirmHandler(opts?: SignupConfirmOptions): import("@cosmicdrift/kumiko-types/define-handler").WriteHandlerDefinition<"signup-confirm", z.ZodObject<{
|
|
28
28
|
token: z.ZodString;
|
|
29
29
|
password: z.ZodString;
|
|
30
|
-
}, z.core.$strip>, SignupConfirmData, import("@cosmicdrift/kumiko-types/event-type-map").KumikoEventTypeMap>;
|
|
30
|
+
}, z.core.$strip>, SignupConfirmData, import("@cosmicdrift/kumiko-types/event-type-map").KumikoEventTypeMap, undefined>;
|
|
31
31
|
export {};
|
|
@@ -23,6 +23,7 @@ import { defineWriteHandler, } from "@cosmicdrift/kumiko-framework/engine";
|
|
|
23
23
|
import { ConflictError, InternalError, reraiseAsKumikoError, writeFailure, } from "@cosmicdrift/kumiko-framework/errors";
|
|
24
24
|
import { generateUniqueName } from "@cosmicdrift/kumiko-framework/random";
|
|
25
25
|
import { generateId } from "@cosmicdrift/kumiko-framework/utils";
|
|
26
|
+
import { isPlainObject } from "@cosmicdrift/kumiko-types/type-guards";
|
|
26
27
|
import * as z from "zod";
|
|
27
28
|
import { findSignupHandoverProvider, registrationLocaleFromRequest, SIGNUP_HANDOVER_BENIGN_CLAIM_REJECTION_CODE, } from "../../shared/index.js";
|
|
28
29
|
// kumiko-lint-ignore cross-feature-import signup-confirm reads tenants.key for slug-uniqueness check (TOCTOU + DB-unique-index zusammen)
|
|
@@ -44,10 +45,8 @@ const SIGNUP_CONFIRM_PROVISION_REASON = "provisions a new tenant, its first user
|
|
|
44
45
|
// directly against SIGNUP_HANDOVER_BENIGN_CLAIM_REJECTION_CODE would never
|
|
45
46
|
// match; this reads the same field the framework itself uses.
|
|
46
47
|
function isBenignClaimRejection(error) {
|
|
47
|
-
return (
|
|
48
|
-
error.details
|
|
49
|
-
error.details["reason"] ===
|
|
50
|
-
SIGNUP_HANDOVER_BENIGN_CLAIM_REJECTION_CODE);
|
|
48
|
+
return (isPlainObject(error.details) &&
|
|
49
|
+
error.details["reason"] === SIGNUP_HANDOVER_BENIGN_CLAIM_REJECTION_CODE);
|
|
51
50
|
}
|
|
52
51
|
// Rides the caller's tx. A benign claim rejection (nothing was written) logs
|
|
53
52
|
// and yields undefined; any other failure — including a real DB error, which
|
|
@@ -29,4 +29,4 @@ export declare function createSignupRequestHandler(opts: SignupRequestOptions):
|
|
|
29
29
|
entityType: z.ZodString;
|
|
30
30
|
token: z.ZodString;
|
|
31
31
|
}, z.core.$strip>>;
|
|
32
|
-
}, z.core.$strip>, SignupRequestData, import("@cosmicdrift/kumiko-types/event-type-map").KumikoEventTypeMap>;
|
|
32
|
+
}, z.core.$strip>, SignupRequestData, import("@cosmicdrift/kumiko-types/event-type-map").KumikoEventTypeMap, undefined>;
|
|
@@ -24,6 +24,7 @@ import { defineWriteHandler } from "@cosmicdrift/kumiko-framework/engine";
|
|
|
24
24
|
import { InternalError, writeFailure } from "@cosmicdrift/kumiko-framework/errors";
|
|
25
25
|
import * as z from "zod";
|
|
26
26
|
import { findSignupHandoverProvider } from "../../shared/index.js";
|
|
27
|
+
import { AUTH_EMAIL_PAYLOAD_RATE_LIMITS } from "../email-rate-limits.js";
|
|
27
28
|
import { resolveHandlerMailLocale } from "../magic-link-mail.js";
|
|
28
29
|
import { AUTH_SELF_REGISTRATION_FEATURE } from "../self-registration-toggle.js";
|
|
29
30
|
import { issueSignupActivation } from "../signup-activation.js";
|
|
@@ -48,7 +49,7 @@ export function createSignupRequestHandler(opts) {
|
|
|
48
49
|
schema: SignupRequestSchema,
|
|
49
50
|
access: { roles: ["anonymous"] },
|
|
50
51
|
rateLimit: { per: "ip+handler", limit: 10, windowSeconds: 60 },
|
|
51
|
-
additionalRateLimits:
|
|
52
|
+
additionalRateLimits: AUTH_EMAIL_PAYLOAD_RATE_LIMITS,
|
|
52
53
|
description: "Starts magic-link self-registration by mailing a fresh activation link to an address and invalidating any link still outstanding for it; the answer looks the same whether or not the address is already registered.",
|
|
53
54
|
escapeHatch: { reason: HANDOVER_GRANT_VERIFY_REASON, grants: ["unsafeRaw"] },
|
|
54
55
|
handler: async (event, ctx) => {
|
|
@@ -6,4 +6,4 @@ export type SwitchTenantMfaGateData = {
|
|
|
6
6
|
export declare function createSwitchTenantMfaGateHandler(opts: Pick<LoginHandlerOptions, "mfaStatusChecker">): import("@cosmicdrift/kumiko-types/define-handler").WriteHandlerDefinition<"switch-tenant-mfa-gate", z.ZodObject<{
|
|
7
7
|
userId: z.ZodString;
|
|
8
8
|
tenantId: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
|
|
9
|
-
}, z.core.$strip>, SwitchTenantMfaGateData, import("@cosmicdrift/kumiko-types/event-type-map").KumikoEventTypeMap>;
|
|
9
|
+
}, z.core.$strip>, SwitchTenantMfaGateData, import("@cosmicdrift/kumiko-types/event-type-map").KumikoEventTypeMap, undefined>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Temporal } from "@cosmicdrift/kumiko-types/temporal";
|
|
2
2
|
import * as z from "zod";
|
|
3
3
|
import { type AuthUserRow } from "../auth-user-row.js";
|
|
4
|
-
import type {
|
|
4
|
+
import type { AuthMailLocale } from "../email-templates.js";
|
|
5
5
|
export type TokenRequestSuccess<K extends string> = {
|
|
6
6
|
readonly kind: K;
|
|
7
7
|
readonly email: string;
|
|
@@ -25,7 +25,6 @@ export type TokenRequestSpec<TName extends string, TSuccessKind extends string>
|
|
|
25
25
|
readonly notConfiguredI18nKey: string;
|
|
26
26
|
readonly extraSilentSkip: (user: AuthUserRow) => boolean;
|
|
27
27
|
readonly notificationType: string;
|
|
28
|
-
readonly renderContent: (args: RenderTokenContentArgs) => AuthMailContent;
|
|
29
28
|
};
|
|
30
29
|
export type TokenRequestOptions = {
|
|
31
30
|
readonly hmacSecret: string;
|
|
@@ -42,4 +41,4 @@ export type TokenRequestOptions = {
|
|
|
42
41
|
};
|
|
43
42
|
export declare function createTokenRequestHandler<TName extends string, TSuccessKind extends string>(spec: TokenRequestSpec<TName, TSuccessKind>, opts: TokenRequestOptions): import("@cosmicdrift/kumiko-types/define-handler").WriteHandlerDefinition<TName, z.ZodObject<{
|
|
44
43
|
email: z.ZodEmail;
|
|
45
|
-
}, z.core.$strip>, TokenRequestData<TSuccessKind>, import("@cosmicdrift/kumiko-types/event-type-map").KumikoEventTypeMap>;
|
|
44
|
+
}, z.core.$strip>, TokenRequestData<TSuccessKind>, import("@cosmicdrift/kumiko-types/event-type-map").KumikoEventTypeMap, undefined>;
|
|
@@ -17,6 +17,7 @@ import { isValidIanaTimeZone } from "@cosmicdrift/kumiko-framework/time";
|
|
|
17
17
|
import * as z from "zod";
|
|
18
18
|
import { UserQueries } from "../../user/index.js";
|
|
19
19
|
import { parseAuthUserRow } from "../auth-user-row.js";
|
|
20
|
+
import { AUTH_EMAIL_PAYLOAD_RATE_LIMITS } from "../email-rate-limits.js";
|
|
20
21
|
import { dispatchMagicLinkMail, resolveHandlerMailLocale } from "../magic-link-mail.js";
|
|
21
22
|
const RequestTokenSchema = z.object({
|
|
22
23
|
email: z.email(),
|
|
@@ -33,7 +34,7 @@ export function createTokenRequestHandler(spec, opts) {
|
|
|
33
34
|
schema: RequestTokenSchema,
|
|
34
35
|
access: { roles: ["anonymous"] },
|
|
35
36
|
rateLimit: { per: "ip+handler", limit: 10, windowSeconds: 60 },
|
|
36
|
-
additionalRateLimits:
|
|
37
|
+
additionalRateLimits: AUTH_EMAIL_PAYLOAD_RATE_LIMITS,
|
|
37
38
|
escapeHatch: {
|
|
38
39
|
grants: ["systemIdentity"],
|
|
39
40
|
reason: "Anonymous requester has no session — looks up the target user by email via " +
|
|
@@ -67,7 +68,6 @@ export function createTokenRequestHandler(spec, opts) {
|
|
|
67
68
|
await dispatchMagicLinkMail(ctx.notify, {
|
|
68
69
|
handlerName: spec.handlerName,
|
|
69
70
|
notificationType: spec.notificationType,
|
|
70
|
-
renderContent: spec.renderContent,
|
|
71
71
|
}, {
|
|
72
72
|
// Row value is ciphertext with an active KMS; the byte-exact
|
|
73
73
|
// lookup above guarantees the payload IS the stored plaintext.
|
|
@@ -9,4 +9,4 @@ export type VerifyEmailData = {
|
|
|
9
9
|
};
|
|
10
10
|
export declare function createVerifyEmailHandler(opts: VerifyEmailOptions): import("@cosmicdrift/kumiko-types/define-handler").WriteHandlerDefinition<"verify-email", z.ZodObject<{
|
|
11
11
|
token: z.ZodString;
|
|
12
|
-
}, z.core.$strip>, VerifyEmailData, import("@cosmicdrift/kumiko-types/event-type-map").KumikoEventTypeMap>;
|
|
12
|
+
}, z.core.$strip>, VerifyEmailData, import("@cosmicdrift/kumiko-types/event-type-map").KumikoEventTypeMap, undefined>;
|
|
@@ -3,10 +3,10 @@ export { type AuthPath, type AuthPaths, DEFAULT_AUTH_PATHS, makeAuthPaths } from
|
|
|
3
3
|
export type { BootstrapConfigValue, BootstrapDeps, BootstrapInvite, BootstrapInviteOutcome, BootstrapPlan, BootstrapReport, BootstrapSeedDeps, BootstrapSystemAdmin, BootstrapTenant, BootstrapTenantOutcome, } from "./bootstrap.js";
|
|
4
4
|
export { BootstrapPlanError, BootstrapWriteError, bootstrapTenants } from "./bootstrap.js";
|
|
5
5
|
export { AUTH_EMAIL_PASSWORD_FEATURE, AuthErrors, AuthHandlers, AuthQueries } from "./constants.js";
|
|
6
|
-
export type {
|
|
7
|
-
export { renderActivationEmail, renderInviteEmail, renderResetPasswordEmail, renderUnlockAccountEmail, renderVerifyEmail, } from "./email-templates.js";
|
|
6
|
+
export type { AuthMailLocale } from "./email-templates.js";
|
|
8
7
|
export type { AccountLockoutOptions, AccountUnlockOptions, AuthEmailPasswordOptions, EmailVerificationOptions, InviteOptions, PasswordResetOptions, SignupOptions, } from "./feature.js";
|
|
9
8
|
export { authEmailPasswordEnvSchema, createAuthEmailPasswordFeature } from "./feature.js";
|
|
9
|
+
export { AuthMailNotificationTypes } from "./mail-notifications.js";
|
|
10
10
|
export { AUTH_SELF_REGISTRATION_FEATURE, createAuthSelfRegistrationToggleFeature, } from "./self-registration-toggle.js";
|
|
11
11
|
export { signToken, TokenPurpose, type VerifyResult, verifyToken } from "./signed-token.js";
|
|
12
12
|
export { type IssuedSignupActivation, type IssueSignupActivationArgs, issueSignupActivation, SIGNUP_ACTIVATION_NOTIFICATION_TYPE, } from "./signup-activation.js";
|
|
@@ -8,8 +8,8 @@ export { hashPassword, verifyPassword } from "../shared/password-hashing.js";
|
|
|
8
8
|
export { DEFAULT_AUTH_PATHS, makeAuthPaths } from "./auth-paths.js";
|
|
9
9
|
export { BootstrapPlanError, BootstrapWriteError, bootstrapTenants } from "./bootstrap.js";
|
|
10
10
|
export { AUTH_EMAIL_PASSWORD_FEATURE, AuthErrors, AuthHandlers, AuthQueries } from "./constants.js";
|
|
11
|
-
export { renderActivationEmail, renderInviteEmail, renderResetPasswordEmail, renderUnlockAccountEmail, renderVerifyEmail, } from "./email-templates.js";
|
|
12
11
|
export { authEmailPasswordEnvSchema, createAuthEmailPasswordFeature } from "./feature.js";
|
|
12
|
+
export { AuthMailNotificationTypes } from "./mail-notifications.js";
|
|
13
13
|
export { AUTH_SELF_REGISTRATION_FEATURE, createAuthSelfRegistrationToggleFeature, } from "./self-registration-toggle.js";
|
|
14
14
|
// Generic HMAC-signed single-purpose token helpers. Re-exported damit
|
|
15
15
|
// app-spezifische out-of-band-Flows (subscriber-confirm, magic-links,
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { NotifyFn } from "@cosmicdrift/kumiko-framework/engine";
|
|
2
|
-
import
|
|
2
|
+
import { type AuthMailLocale } from "./email-templates.js";
|
|
3
3
|
export type MagicLinkMailSpec = {
|
|
4
4
|
readonly handlerName: string;
|
|
5
5
|
readonly notificationType: string;
|
|
6
|
-
readonly
|
|
6
|
+
readonly fallbackAppName?: string;
|
|
7
7
|
};
|
|
8
8
|
export type MagicLinkMailParams = {
|
|
9
9
|
readonly email: string;
|
|
@@ -14,6 +14,7 @@ export type MagicLinkMailParams = {
|
|
|
14
14
|
readonly locale?: AuthMailLocale;
|
|
15
15
|
readonly issuedAt?: string;
|
|
16
16
|
readonly timeZone?: string;
|
|
17
|
+
readonly role?: string;
|
|
17
18
|
};
|
|
18
19
|
export declare function resolveHandlerMailLocale(ctx: {
|
|
19
20
|
readonly locale?: string;
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
// Shared dispatch for the magic-link mails (password-reset, email-verification,
|
|
2
|
-
// signup-activation). All
|
|
3
|
-
// token to the app page
|
|
4
|
-
//
|
|
5
|
-
//
|
|
6
|
-
//
|
|
7
|
-
//
|
|
2
|
+
// account-unlock, signup-activation, invite). All follow the same delivery
|
|
3
|
+
// shape: append the token to the app page and notify the recipient email
|
|
4
|
+
// directly (route:{email} skips preferences — the recipient may not have a user
|
|
5
|
+
// account yet — and critical priority keeps a security mail non-unsubscribable).
|
|
6
|
+
// Each mail type is a trigger-less r.notification whose stored template renders
|
|
7
|
+
// from the variables passed here.
|
|
8
8
|
import { requestContext } from "@cosmicdrift/kumiko-framework/api";
|
|
9
9
|
import { InternalError } from "@cosmicdrift/kumiko-framework/errors";
|
|
10
|
-
import { resolveMailLocale } from "@cosmicdrift/kumiko-framework/i18n";
|
|
10
|
+
import { mailT, resolveMailLocale } from "@cosmicdrift/kumiko-framework/i18n";
|
|
11
|
+
import { tokenMailExpiry } from "./email-templates.js";
|
|
12
|
+
import { authMailTemplateLocale } from "./mail-notifications.js";
|
|
11
13
|
function resolveAppUrl(appUrl, locale) {
|
|
12
14
|
return typeof appUrl === "function" ? appUrl(locale) : appUrl;
|
|
13
15
|
}
|
|
@@ -35,18 +37,21 @@ export async function dispatchMagicLinkMail(notify, spec, params) {
|
|
|
35
37
|
// mailT already root-falls-back; appUrl must use the same negotiated tag
|
|
36
38
|
// or language-in-path apps 404 on e.g. /de-AT/activate.
|
|
37
39
|
const urlLocale = resolveMailLocale(locale);
|
|
38
|
-
const
|
|
39
|
-
url: appendToken(resolveAppUrl(params.appUrl, urlLocale), params.token),
|
|
40
|
+
const { validFor, validUntil } = tokenMailExpiry({
|
|
40
41
|
expiresAt: params.expiresAt,
|
|
41
|
-
...(params.locale !== undefined && { locale: params.locale }),
|
|
42
|
-
...(params.appName !== undefined && { appName: params.appName }),
|
|
43
42
|
...(params.issuedAt !== undefined && { issuedAt: params.issuedAt }),
|
|
44
43
|
...(params.timeZone !== undefined && { timeZone: params.timeZone }),
|
|
45
|
-
});
|
|
44
|
+
}, locale);
|
|
46
45
|
await notify(spec.notificationType, {
|
|
47
46
|
route: { email: params.email },
|
|
48
|
-
data:
|
|
49
|
-
|
|
47
|
+
data: {
|
|
48
|
+
appName: params.appName ?? spec.fallbackAppName ?? mailT(locale, "auth.mail.appNameDefault"),
|
|
49
|
+
actionUrl: appendToken(resolveAppUrl(params.appUrl, urlLocale), params.token),
|
|
50
|
+
validFor,
|
|
51
|
+
validUntil,
|
|
52
|
+
...(params.role !== undefined && { role: params.role }),
|
|
53
|
+
},
|
|
54
|
+
locale: authMailTemplateLocale(spec.notificationType, locale),
|
|
50
55
|
priority: "critical",
|
|
51
56
|
});
|
|
52
57
|
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { type NotificationLocalizedTemplate, type TemplateVariables } from "@cosmicdrift/kumiko-framework/engine";
|
|
2
|
+
export declare const AUTH_MAIL_KINDS: {
|
|
3
|
+
readonly passwordReset: {
|
|
4
|
+
readonly name: "password-reset";
|
|
5
|
+
readonly translationKey: "reset";
|
|
6
|
+
};
|
|
7
|
+
readonly accountUnlock: {
|
|
8
|
+
readonly name: "account-unlock";
|
|
9
|
+
readonly translationKey: "unlock";
|
|
10
|
+
};
|
|
11
|
+
readonly emailVerification: {
|
|
12
|
+
readonly name: "email-verification";
|
|
13
|
+
readonly translationKey: "verify";
|
|
14
|
+
};
|
|
15
|
+
readonly signupActivation: {
|
|
16
|
+
readonly name: "signup-activation";
|
|
17
|
+
readonly translationKey: "activation";
|
|
18
|
+
};
|
|
19
|
+
readonly invite: {
|
|
20
|
+
readonly name: "invite";
|
|
21
|
+
readonly translationKey: "invite";
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
export type AuthMailKind = keyof typeof AUTH_MAIL_KINDS;
|
|
25
|
+
type MagicLinkFlowOptions = Partial<Record<"passwordReset" | "emailVerification" | "signup" | "invite" | "accountUnlock", unknown>>;
|
|
26
|
+
export declare function sendsMagicLinkMail(flows: MagicLinkFlowOptions): boolean;
|
|
27
|
+
export declare const AuthMailNotificationTypes: Readonly<Record<AuthMailKind, string>>;
|
|
28
|
+
export declare function authMailTemplateLocale(notificationType: string, requestedLocale: string): string;
|
|
29
|
+
export declare const AUTH_MAIL_VARIABLES: TemplateVariables;
|
|
30
|
+
export declare const INVITE_MAIL_VARIABLES: TemplateVariables;
|
|
31
|
+
export declare function authMailLocalizedTemplate(kind: AuthMailKind): () => NotificationLocalizedTemplate;
|
|
32
|
+
export {};
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { QnTypes, qn, templateVariable, } from "@cosmicdrift/kumiko-framework/engine";
|
|
2
|
+
import { hasMailTranslationKey, listMailLocales, mailT, resolveMailLocale, } from "@cosmicdrift/kumiko-framework/i18n";
|
|
3
|
+
import { escapeHtml, escapeHtmlAttr } from "@cosmicdrift/kumiko-headless";
|
|
4
|
+
import { AUTH_EMAIL_PASSWORD_FEATURE } from "./constants.js";
|
|
5
|
+
export const AUTH_MAIL_KINDS = {
|
|
6
|
+
passwordReset: { name: "password-reset", translationKey: "reset" },
|
|
7
|
+
accountUnlock: { name: "account-unlock", translationKey: "unlock" },
|
|
8
|
+
emailVerification: { name: "email-verification", translationKey: "verify" },
|
|
9
|
+
signupActivation: { name: "signup-activation", translationKey: "activation" },
|
|
10
|
+
invite: { name: "invite", translationKey: "invite" },
|
|
11
|
+
};
|
|
12
|
+
export function sendsMagicLinkMail(flows) {
|
|
13
|
+
return Boolean(flows.passwordReset ||
|
|
14
|
+
flows.emailVerification ||
|
|
15
|
+
flows.signup ||
|
|
16
|
+
flows.invite ||
|
|
17
|
+
flows.accountUnlock);
|
|
18
|
+
}
|
|
19
|
+
function authMailType(kind) {
|
|
20
|
+
return qn(AUTH_EMAIL_PASSWORD_FEATURE, QnTypes.notify, AUTH_MAIL_KINDS[kind].name);
|
|
21
|
+
}
|
|
22
|
+
export const AuthMailNotificationTypes = {
|
|
23
|
+
passwordReset: authMailType("passwordReset"),
|
|
24
|
+
accountUnlock: authMailType("accountUnlock"),
|
|
25
|
+
emailVerification: authMailType("emailVerification"),
|
|
26
|
+
signupActivation: authMailType("signupActivation"),
|
|
27
|
+
invite: authMailType("invite"),
|
|
28
|
+
};
|
|
29
|
+
function subjectKey(kind) {
|
|
30
|
+
return `auth.mail.${AUTH_MAIL_KINDS[kind].translationKey}.subject`;
|
|
31
|
+
}
|
|
32
|
+
const ALL_AUTH_MAIL_KINDS = [
|
|
33
|
+
"passwordReset",
|
|
34
|
+
"accountUnlock",
|
|
35
|
+
"emailVerification",
|
|
36
|
+
"signupActivation",
|
|
37
|
+
"invite",
|
|
38
|
+
];
|
|
39
|
+
const SUBJECT_KEY_BY_TYPE = new Map(ALL_AUTH_MAIL_KINDS.map((kind) => [AuthMailNotificationTypes[kind], subjectKey(kind)]));
|
|
40
|
+
// A registered locale whose bundle lacks the subject key has no template (see
|
|
41
|
+
// authMailLocalizedTemplate); the renderer has no locale fallback, so the
|
|
42
|
+
// sender must pick a locale that has one or the mail would not go out at all.
|
|
43
|
+
export function authMailTemplateLocale(notificationType, requestedLocale) {
|
|
44
|
+
const locale = resolveMailLocale(requestedLocale);
|
|
45
|
+
const key = SUBJECT_KEY_BY_TYPE.get(notificationType);
|
|
46
|
+
return key !== undefined && hasMailTranslationKey(locale, key) ? locale : "en";
|
|
47
|
+
}
|
|
48
|
+
export const AUTH_MAIL_VARIABLES = {
|
|
49
|
+
appName: templateVariable.text({ required: true }),
|
|
50
|
+
actionUrl: templateVariable.link({ required: true }),
|
|
51
|
+
validFor: templateVariable.text({ required: true }),
|
|
52
|
+
validUntil: templateVariable.text({ required: true }),
|
|
53
|
+
};
|
|
54
|
+
export const INVITE_MAIL_VARIABLES = {
|
|
55
|
+
...AUTH_MAIL_VARIABLES,
|
|
56
|
+
role: templateVariable.text({ required: true }),
|
|
57
|
+
};
|
|
58
|
+
// Translation placeholder -> template variable. The markers survive HTML
|
|
59
|
+
// escaping, so only the translated text is escaped, never the placeholders.
|
|
60
|
+
const PLACEHOLDER_VARIABLES = {
|
|
61
|
+
app: "appName",
|
|
62
|
+
duration: "validFor",
|
|
63
|
+
when: "validUntil",
|
|
64
|
+
role: "role",
|
|
65
|
+
};
|
|
66
|
+
const MARKER_OPEN = "\uE000";
|
|
67
|
+
const MARKER_CLOSE = "\uE001";
|
|
68
|
+
const MARKER_PATTERN = new RegExp(`${MARKER_OPEN}(\\w+)${MARKER_CLOSE}`, "g");
|
|
69
|
+
function markers() {
|
|
70
|
+
return Object.fromEntries(Object.keys(PLACEHOLDER_VARIABLES).map((name) => [
|
|
71
|
+
name,
|
|
72
|
+
`${MARKER_OPEN}${name}${MARKER_CLOSE}`,
|
|
73
|
+
]));
|
|
74
|
+
}
|
|
75
|
+
function translatedHtml(locale, key) {
|
|
76
|
+
return escapeHtml(mailT(locale, key, markers())).replace(MARKER_PATTERN, (_, name) => {
|
|
77
|
+
const variable = PLACEHOLDER_VARIABLES[name];
|
|
78
|
+
return variable === undefined
|
|
79
|
+
? ""
|
|
80
|
+
: `<span data-variable="${escapeHtmlAttr(variable)}"></span>`;
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
function mailBody(locale, translationKey) {
|
|
84
|
+
const html = (part) => translatedHtml(locale, `auth.mail.${translationKey}.${part}`);
|
|
85
|
+
return [
|
|
86
|
+
`<p>${html("greeting")}</p>`,
|
|
87
|
+
`<p>${html("intro")}</p>`,
|
|
88
|
+
`<p><a data-button href="{{actionUrl}}">${html("button")}</a></p>`,
|
|
89
|
+
`<p>${html("expiry")}</p>`,
|
|
90
|
+
`<p>${html("ignore")}</p>`,
|
|
91
|
+
].join("");
|
|
92
|
+
}
|
|
93
|
+
// Evaluated when the registry is built, after every locale feature has
|
|
94
|
+
// registered its mail translations. English always ships; another locale only
|
|
95
|
+
// gets a template when it has its own subject, so a missing translation never
|
|
96
|
+
// silently becomes an English mail in that locale's slot.
|
|
97
|
+
export function authMailLocalizedTemplate(kind) {
|
|
98
|
+
const { translationKey } = AUTH_MAIL_KINDS[kind];
|
|
99
|
+
const kindSubjectKey = subjectKey(kind);
|
|
100
|
+
return () => {
|
|
101
|
+
const locales = [
|
|
102
|
+
"en",
|
|
103
|
+
...listMailLocales().filter((locale) => locale !== "en" && hasMailTranslationKey(locale, kindSubjectKey)),
|
|
104
|
+
];
|
|
105
|
+
return Object.fromEntries(locales.map((locale) => [
|
|
106
|
+
locale,
|
|
107
|
+
{
|
|
108
|
+
body: mailBody(locale, translationKey),
|
|
109
|
+
meta: {
|
|
110
|
+
subject: mailT(locale, kindSubjectKey, { app: "{{appName}}" }),
|
|
111
|
+
category: "transactional",
|
|
112
|
+
},
|
|
113
|
+
},
|
|
114
|
+
]));
|
|
115
|
+
};
|
|
116
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { NotifyFn } from "@cosmicdrift/kumiko-framework/engine";
|
|
2
2
|
import type { Redis } from "ioredis";
|
|
3
|
-
export declare const SIGNUP_ACTIVATION_NOTIFICATION_TYPE
|
|
3
|
+
export declare const SIGNUP_ACTIVATION_NOTIFICATION_TYPE: string;
|
|
4
4
|
export type IssueSignupActivationArgs = {
|
|
5
5
|
readonly redis: Redis;
|
|
6
6
|
readonly notify: NotifyFn | undefined;
|
|
@@ -6,10 +6,10 @@
|
|
|
6
6
|
import { generateToken } from "@cosmicdrift/kumiko-framework/api";
|
|
7
7
|
import { Temporal } from "@cosmicdrift/kumiko-types/temporal";
|
|
8
8
|
import { AUTH_SIGNUP_DEFAULT_TTL_MINUTES } from "./constants.js";
|
|
9
|
-
import { renderActivationEmail } from "./email-templates.js";
|
|
10
9
|
import { dispatchMagicLinkMail } from "./magic-link-mail.js";
|
|
10
|
+
import { AuthMailNotificationTypes } from "./mail-notifications.js";
|
|
11
11
|
import { invalidateExistingSignupToken, normalizeEmail, storeSignupToken, } from "./signup-token-store.js";
|
|
12
|
-
export const SIGNUP_ACTIVATION_NOTIFICATION_TYPE =
|
|
12
|
+
export const SIGNUP_ACTIVATION_NOTIFICATION_TYPE = AuthMailNotificationTypes.signupActivation;
|
|
13
13
|
export async function issueSignupActivation(args) {
|
|
14
14
|
const ttlSeconds = (args.tokenTtlMinutes ?? AUTH_SIGNUP_DEFAULT_TTL_MINUTES) * 60;
|
|
15
15
|
// At most one live signup token per email.
|
|
@@ -26,7 +26,6 @@ export async function issueSignupActivation(args) {
|
|
|
26
26
|
await dispatchMagicLinkMail(args.notify, {
|
|
27
27
|
handlerName: "signup-request",
|
|
28
28
|
notificationType: SIGNUP_ACTIVATION_NOTIFICATION_TYPE,
|
|
29
|
-
renderContent: renderActivationEmail,
|
|
30
29
|
}, {
|
|
31
30
|
email,
|
|
32
31
|
appUrl: args.appUrl,
|
|
@@ -10,7 +10,7 @@ import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
|
|
|
10
10
|
// (nur `{ children }`-Prop). Der Sample kann so einen eigenen Login-
|
|
11
11
|
// Screen rein konfigurieren, ohne den Gate selbst ersetzen zu müssen.
|
|
12
12
|
import { useLocale } from "@cosmicdrift/kumiko-renderer";
|
|
13
|
-
import { useEffect, useState } from "react";
|
|
13
|
+
import { useEffect, useMemo, useState } from "react";
|
|
14
14
|
import { assertNavigableUrl, buildLoginRedirectUrl, followNextOrLandingAfterLogin, } from "./auth-redirect.js";
|
|
15
15
|
import { LoginScreen } from "./login-screen.js";
|
|
16
16
|
import { SessionProvider, useSession } from "./session.js";
|
|
@@ -102,6 +102,17 @@ export function resolveLoginRedirect(loginUrl, locale, { origin, pathname, searc
|
|
|
102
102
|
url: typeof loginUrl === "function" ? target : buildLoginRedirectUrl(target, returnPath, origin),
|
|
103
103
|
};
|
|
104
104
|
}
|
|
105
|
+
// A throwing loginUrl builder must not take the whole app tree down in render;
|
|
106
|
+
// null falls through to the built-in login screen.
|
|
107
|
+
function resolveLoginRedirectOrNull(loginUrl, locale, location) {
|
|
108
|
+
try {
|
|
109
|
+
return resolveLoginRedirect(loginUrl, locale, location);
|
|
110
|
+
}
|
|
111
|
+
catch (error) {
|
|
112
|
+
console.error("Auth gate: loginUrl could not be resolved, showing the built-in login", error);
|
|
113
|
+
return null;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
105
116
|
export function makeAuthGate(opts = {}) {
|
|
106
117
|
const { loginUrl } = opts;
|
|
107
118
|
if (typeof loginUrl === "string")
|
|
@@ -110,9 +121,10 @@ export function makeAuthGate(opts = {}) {
|
|
|
110
121
|
function AuthGate({ children }) {
|
|
111
122
|
const { status } = useSession();
|
|
112
123
|
const locale = useLocale().locale();
|
|
113
|
-
const
|
|
114
|
-
|
|
115
|
-
|
|
124
|
+
const { origin, pathname, search, hash } = window.location;
|
|
125
|
+
const loginRedirect = useMemo(() => loginUrl !== undefined && status === "unauthenticated"
|
|
126
|
+
? resolveLoginRedirectOrNull(loginUrl, locale, { origin, pathname, search, hash })
|
|
127
|
+
: null, [status, locale, origin, pathname, search, hash]);
|
|
116
128
|
const redirectUrl = loginRedirect?.kind === "redirect" ? loginRedirect.url : null;
|
|
117
129
|
// kumiko-lint-ignore no-raw-hooks Phase-3 conversion tracked in #2312
|
|
118
130
|
useEffect(() => {
|
|
@@ -47,10 +47,7 @@ export function tokenShapeKey(shape) {
|
|
|
47
47
|
// exactly one implementation must be registered (boot-fails on 0 or ≥2).
|
|
48
48
|
export const EXT_SESSION_STORE = "sessionStore";
|
|
49
49
|
export function isSessionStoreProvider(o) {
|
|
50
|
-
return
|
|
51
|
-
o !== null &&
|
|
52
|
-
"build" in o &&
|
|
53
|
-
typeof o.build === "function");
|
|
50
|
+
return typeof o === "object" && o !== null && "build" in o && typeof o.build === "function";
|
|
54
51
|
}
|
|
55
52
|
// Tenant-resolution extension points (#1373). Both are single-provider and
|
|
56
53
|
// optional — zero registered means today's single-tenant / header-cookie
|
|
@@ -69,8 +66,5 @@ export function isTenantResolverProvider(o) {
|
|
|
69
66
|
isTenantResolverTrust(o.trust));
|
|
70
67
|
}
|
|
71
68
|
export function isTenantExistenceProvider(o) {
|
|
72
|
-
return
|
|
73
|
-
o !== null &&
|
|
74
|
-
"build" in o &&
|
|
75
|
-
typeof o.build === "function");
|
|
69
|
+
return typeof o === "object" && o !== null && "build" in o && typeof o.build === "function";
|
|
76
70
|
}
|
package/dist/auth-mfa/feature.js
CHANGED
|
@@ -25,7 +25,7 @@ export function bindMfaRevokeAllOtherSessionsFromFeature(feature) {
|
|
|
25
25
|
if (exports && typeof exports === "object" && "bindRevokeAllOtherSessions" in exports) {
|
|
26
26
|
const { bindRevokeAllOtherSessions } = exports;
|
|
27
27
|
if (typeof bindRevokeAllOtherSessions === "function") {
|
|
28
|
-
// @cast-boundary exports
|
|
28
|
+
// @cast-boundary feature-exports — feature.exports is untyped by design
|
|
29
29
|
return bindRevokeAllOtherSessions;
|
|
30
30
|
}
|
|
31
31
|
}
|
|
@@ -38,7 +38,7 @@ export function mfaStatusCheckerFromFeature(feature) {
|
|
|
38
38
|
if (exports && typeof exports === "object" && "checkMfaStatus" in exports) {
|
|
39
39
|
const { checkMfaStatus } = exports;
|
|
40
40
|
if (typeof checkMfaStatus === "function") {
|
|
41
|
-
// @cast-boundary exports
|
|
41
|
+
// @cast-boundary feature-exports — feature.exports is untyped by design
|
|
42
42
|
return checkMfaStatus;
|
|
43
43
|
}
|
|
44
44
|
}
|
|
@@ -53,7 +53,7 @@ export function mfaVerifierFromFeature(feature) {
|
|
|
53
53
|
if (exports && typeof exports === "object" && "verifyMfaCode" in exports) {
|
|
54
54
|
const { verifyMfaCode } = exports;
|
|
55
55
|
if (typeof verifyMfaCode === "function") {
|
|
56
|
-
// @cast-boundary exports
|
|
56
|
+
// @cast-boundary feature-exports — feature.exports is untyped by design
|
|
57
57
|
return verifyMfaCode;
|
|
58
58
|
}
|
|
59
59
|
}
|
|
@@ -68,7 +68,7 @@ export function bindRevokeAllPatTokensFromFeature(feature) {
|
|
|
68
68
|
if (exports && typeof exports === "object" && "bindRevokeAllPatTokens" in exports) {
|
|
69
69
|
const { bindRevokeAllPatTokens } = exports;
|
|
70
70
|
if (typeof bindRevokeAllPatTokens === "function") {
|
|
71
|
-
// @cast-boundary exports
|
|
71
|
+
// @cast-boundary feature-exports — feature.exports is untyped by design
|
|
72
72
|
return bindRevokeAllPatTokens;
|
|
73
73
|
}
|
|
74
74
|
}
|
|
@@ -7,4 +7,4 @@ export declare function createDisableHandler(opts: DisableOptions): import("@cos
|
|
|
7
7
|
code: z.ZodString;
|
|
8
8
|
}, z.core.$strip>, {
|
|
9
9
|
disabled: boolean;
|
|
10
|
-
}, import("@cosmicdrift/kumiko-types/event-type-map").KumikoEventTypeMap>;
|
|
10
|
+
}, import("@cosmicdrift/kumiko-types/event-type-map").KumikoEventTypeMap, undefined>;
|
|
@@ -13,4 +13,4 @@ export declare function createEnableConfirmPreauthHandler(opts: EnableConfirmPre
|
|
|
13
13
|
}, z.core.$strip>, {
|
|
14
14
|
kind: string;
|
|
15
15
|
session: SessionUser;
|
|
16
|
-
}, import("@cosmicdrift/kumiko-types/event-type-map").KumikoEventTypeMap>;
|
|
16
|
+
}, import("@cosmicdrift/kumiko-types/event-type-map").KumikoEventTypeMap, undefined>;
|
|
@@ -9,4 +9,4 @@ export declare function createEnableConfirmHandler(opts: EnableConfirmOptions):
|
|
|
9
9
|
code: z.ZodString;
|
|
10
10
|
}, z.core.$strip>, {
|
|
11
11
|
enabled: boolean;
|
|
12
|
-
}, import("@cosmicdrift/kumiko-types/event-type-map").KumikoEventTypeMap>;
|
|
12
|
+
}, import("@cosmicdrift/kumiko-types/event-type-map").KumikoEventTypeMap, undefined>;
|
|
@@ -11,4 +11,4 @@ export declare function createEnableStartPreauthHandler(opts: EnableStartPreauth
|
|
|
11
11
|
setupToken: string;
|
|
12
12
|
otpauthUri: string;
|
|
13
13
|
recoveryCodes: string[];
|
|
14
|
-
}, import("@cosmicdrift/kumiko-types/event-type-map").KumikoEventTypeMap>;
|
|
14
|
+
}, import("@cosmicdrift/kumiko-types/event-type-map").KumikoEventTypeMap, undefined>;
|
|
@@ -10,4 +10,4 @@ export declare function createEnableStartHandler(opts: EnableStartOptions): impo
|
|
|
10
10
|
otpauthUri: string;
|
|
11
11
|
totpSecret: string;
|
|
12
12
|
recoveryCodes: string[];
|
|
13
|
-
}, import("@cosmicdrift/kumiko-types/event-type-map").KumikoEventTypeMap>;
|
|
13
|
+
}, import("@cosmicdrift/kumiko-types/event-type-map").KumikoEventTypeMap, undefined>;
|
|
@@ -6,4 +6,4 @@ export declare function createRegenerateRecoveryHandler(opts: RegenerateRecovery
|
|
|
6
6
|
code: z.ZodString;
|
|
7
7
|
}, z.core.$strip>, {
|
|
8
8
|
recoveryCodes: string[];
|
|
9
|
-
}, import("@cosmicdrift/kumiko-types/event-type-map").KumikoEventTypeMap>;
|
|
9
|
+
}, import("@cosmicdrift/kumiko-types/event-type-map").KumikoEventTypeMap, undefined>;
|
|
@@ -11,4 +11,4 @@ export declare function createMfaVerifyHandler(opts: MfaVerifyOptions): import("
|
|
|
11
11
|
}, z.core.$strip>, {
|
|
12
12
|
kind: string;
|
|
13
13
|
session: SessionUser;
|
|
14
|
-
}, import("@cosmicdrift/kumiko-types/event-type-map").KumikoEventTypeMap>;
|
|
14
|
+
}, import("@cosmicdrift/kumiko-types/event-type-map").KumikoEventTypeMap, undefined>;
|