@cosmicdrift/kumiko-bundled-features 0.374.0 → 0.377.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/account-security/constants.d.ts +1 -0
- package/dist/account-security/constants.js +1 -0
- package/dist/account-security/index.d.ts +1 -1
- package/dist/account-security/index.js +1 -1
- package/dist/admin-shell/web/client-plugin.d.ts +1 -1
- package/dist/audit/web/client-plugin.d.ts +1 -1
- package/dist/auth-email-password/mail-notifications.js +1 -1
- package/dist/auth-email-password/web/auth-client.js +1 -1
- package/dist/auth-email-password/web/auth-form-primitives.js +1 -1
- package/dist/auth-email-password/web/default-topbar-actions.js +1 -1
- package/dist/auth-email-password/web/index.js +1 -1
- package/dist/auth-email-password/web/session.js +1 -1
- package/dist/auth-email-password/web/tenant-menu-items.js +1 -1
- package/dist/auth-email-password/web/tenant-switcher.js +1 -1
- package/dist/auth-email-password/web/user-menu.js +1 -1
- package/dist/auth-foundation/env.d.ts +9 -0
- package/dist/auth-foundation/env.js +21 -0
- package/dist/auth-foundation/index.d.ts +1 -0
- package/dist/auth-foundation/index.js +1 -0
- package/dist/auth-mfa/schema/user-mfa.d.ts +6 -6
- package/dist/billing-foundation/consumer-protection/confirmation-mail.js +1 -1
- package/dist/billing-foundation/consumer-protection/termination-pages.js +1 -1
- package/dist/billing-foundation/contact-card.d.ts +2 -0
- package/dist/billing-foundation/contact-card.js +16 -0
- package/dist/billing-foundation/entities.d.ts +8 -8
- package/dist/billing-foundation/handlers/billing-plans.query.js +1 -1
- package/dist/billing-foundation/index.d.ts +1 -1
- package/dist/billing-foundation/plan-catalog.js +1 -0
- package/dist/billing-foundation/projection.d.ts +8 -8
- package/dist/billing-foundation/types.d.ts +11 -0
- package/dist/billing-foundation/validate-options.js +13 -0
- package/dist/billing-foundation/web/billing-contact-plan.d.ts +5 -0
- package/dist/billing-foundation/web/billing-contact-plan.js +17 -0
- package/dist/billing-foundation/web/billing-plans-panel.js +5 -13
- package/dist/billing-foundation/web/cancel-contract-dialog.js +2 -2
- package/dist/billing-foundation/web/checkout-consent-dialog.d.ts +1 -1
- package/dist/billing-foundation/web/checkout-consent-dialog.js +1 -0
- package/dist/billing-foundation/web/client-plugin.d.ts +1 -1
- package/dist/billing-foundation/web/localized-params.d.ts +1 -0
- package/dist/billing-foundation/web/localized-params.js +11 -0
- package/dist/cap-counter/entity.d.ts +1 -1
- package/dist/cap-overview/web/cap-cards-panel.js +3 -3
- package/dist/cap-overview/web/client-plugin.d.ts +1 -1
- package/dist/channel-email/email-channel.d.ts +2 -1
- package/dist/compliance-profiles/web/client-plugin.d.ts +1 -1
- package/dist/config/feature.js +2 -2
- package/dist/config/table.d.ts +6 -6
- package/dist/custom-fields/entity.d.ts +4 -4
- package/dist/custom-fields/web/client-plugin.d.ts +1 -1
- package/dist/data-retention/schema/tenant-retention-override.d.ts +4 -4
- package/dist/delivery/tables.d.ts +6 -6
- package/dist/delivery/unsubscribe-page.js +1 -1
- package/dist/delivery/web/client-plugin.d.ts +1 -1
- package/dist/delivery/web/delivery-status-cell.js +1 -1
- package/dist/document-ingest-foundation/entity.d.ts +4 -4
- package/dist/feature-toggles/web/client-plugin.d.ts +1 -1
- package/dist/file-provider-s3/env-named-feature.d.ts +17 -0
- package/dist/file-provider-s3/env-named-feature.js +23 -0
- package/dist/file-provider-s3/env-schema.d.ts +7 -0
- package/dist/file-provider-s3/env-schema.js +15 -10
- package/dist/file-provider-s3/index.d.ts +1 -0
- package/dist/file-provider-s3/index.js +1 -0
- package/dist/folders/entity.d.ts +8 -8
- package/dist/folders/web/client-plugin.d.ts +1 -1
- package/dist/form-draft/entity.d.ts +2 -2
- package/dist/host-routing/constants.d.ts +2 -0
- package/dist/host-routing/constants.js +3 -0
- package/dist/host-routing/dispatch.d.ts +1 -1
- package/dist/host-routing/dispatch.js +35 -25
- package/dist/host-routing/feature.js +100 -27
- package/dist/host-routing/host.d.ts +9 -0
- package/dist/host-routing/host.js +24 -2
- package/dist/host-routing/index.d.ts +2 -1
- package/dist/host-routing/index.js +1 -0
- package/dist/host-routing/options.d.ts +14 -0
- package/dist/host-routing/redirects.d.ts +6 -0
- package/dist/host-routing/redirects.js +27 -0
- package/dist/host-routing/tenant-lookup.d.ts +7 -0
- package/dist/host-routing/tenant-lookup.js +39 -0
- package/dist/host-routing/validate-options.js +34 -1
- package/dist/inbound-mail-foundation/entities.d.ts +25 -25
- package/dist/inbound-mail-foundation/feature.js +7 -0
- package/dist/inbound-mail-foundation/i18n.d.ts +3 -0
- package/dist/inbound-mail-foundation/i18n.js +35 -0
- package/dist/inbound-mail-foundation/index.d.ts +1 -0
- package/dist/inbound-mail-foundation/index.js +1 -0
- package/dist/inbound-mail-foundation/projection.d.ts +20 -20
- package/dist/inbound-mail-foundation/screens.d.ts +7 -0
- package/dist/inbound-mail-foundation/screens.js +86 -0
- package/dist/inbound-mail-foundation/types.d.ts +2 -2
- package/dist/jobs/job-run-table.d.ts +6 -6
- package/dist/jobs/web/client-plugin.d.ts +1 -1
- package/dist/ledger/entity.d.ts +13 -13
- package/dist/legal-pages/feature.js +11 -1
- package/dist/legal-pages/layout.d.ts +2 -2
- package/dist/legal-pages/layout.js +4 -4
- package/dist/legal-pages/web/client-plugin.d.ts +1 -1
- package/dist/mail-foundation/feature.d.ts +20 -21
- package/dist/mail-foundation/feature.js +1 -1
- package/dist/managed-pages/table.d.ts +12 -12
- package/dist/managed-pages/web/client-plugin.d.ts +1 -1
- package/dist/notes-history/entity.d.ts +12 -12
- package/dist/notes-history/web/client-plugin.d.ts +1 -1
- package/dist/page-render/branding.js +1 -1
- package/dist/page-render/layout.d.ts +1 -1
- package/dist/page-render/layout.js +2 -2
- package/dist/page-render/markdown.js +1 -1
- package/dist/personal-access-tokens/i18n.js +1 -1
- package/dist/personal-access-tokens/schema/api-token.d.ts +6 -6
- package/dist/personal-access-tokens/screens.js +1 -1
- package/dist/secrets/feature.d.ts +1 -1
- package/dist/secrets/feature.js +3 -3
- package/dist/secrets/table.d.ts +1 -1
- package/dist/seo/sitemap.js +1 -1
- package/dist/sessions/schema/user-session.d.ts +4 -4
- package/dist/shared/mail-template-body.js +1 -1
- package/dist/shared/purge-files-reaching-subject.js +98 -3
- package/dist/tags/entity.d.ts +9 -9
- package/dist/tags/web/client-plugin.d.ts +1 -1
- package/dist/template-resolver/document-blocks.d.ts +5 -0
- package/dist/template-resolver/document-blocks.js +21 -0
- package/dist/template-resolver/document-ops.d.ts +167 -0
- package/dist/template-resolver/document-ops.js +390 -0
- package/dist/template-resolver/document-sanitizer.d.ts +3 -0
- package/dist/template-resolver/document-sanitizer.js +6 -0
- package/dist/template-resolver/feature.d.ts +2 -0
- package/dist/template-resolver/feature.js +4 -0
- package/dist/template-resolver/handlers/bundle-import.js +1 -0
- package/dist/template-resolver/handlers/document-base.d.ts +23 -0
- package/dist/template-resolver/handlers/document-base.js +55 -0
- package/dist/template-resolver/handlers/document-blocks.query.d.ts +22 -0
- package/dist/template-resolver/handlers/document-blocks.query.js +46 -0
- package/dist/template-resolver/handlers/export-bundle.query.d.ts +1 -0
- package/dist/template-resolver/handlers/export-bundle.query.js +9 -2
- package/dist/template-resolver/handlers/import-bundle-system.write.d.ts +1 -0
- package/dist/template-resolver/handlers/import-bundle.write.d.ts +1 -0
- package/dist/template-resolver/handlers/patch-draft.write.d.ts +66 -0
- package/dist/template-resolver/handlers/patch-draft.write.js +105 -0
- package/dist/template-resolver/handlers/preview.query.d.ts +1 -0
- package/dist/template-resolver/handlers/preview.query.js +2 -1
- package/dist/template-resolver/handlers/send-test.write.d.ts +1 -0
- package/dist/template-resolver/handlers/send-test.write.js +2 -1
- package/dist/template-resolver/handlers/template-write.d.ts +2 -0
- package/dist/template-resolver/handlers/template-write.js +14 -2
- package/dist/template-resolver/handlers/validate.query.d.ts +10 -4
- package/dist/template-resolver/handlers/validate.query.js +12 -7
- package/dist/template-resolver/{web/placeholder-text.js → placeholder-text.js} +1 -1
- package/dist/template-resolver/qualified-names.d.ts +2 -0
- package/dist/template-resolver/qualified-names.js +2 -0
- package/dist/template-resolver/seeding.d.ts +1 -0
- package/dist/template-resolver/seeding.js +2 -1
- package/dist/template-resolver/table.d.ts +10 -10
- package/dist/template-resolver/template-bundle.d.ts +1 -0
- package/dist/template-resolver/template-bundle.js +6 -1
- package/dist/template-resolver/template-preview.d.ts +4 -1
- package/dist/template-resolver/template-preview.js +16 -3
- package/dist/template-resolver/template-validation.d.ts +2 -1
- package/dist/template-resolver/template-validation.js +1 -1
- package/dist/template-resolver/user-content-table.d.ts +10 -10
- package/dist/template-resolver/web/client-plugin.d.ts +1 -1
- package/dist/template-resolver/web/client-plugin.js +3 -3
- package/dist/template-resolver/web/document-tiptap-editor.js +1 -1
- package/dist/template-resolver/web/document-toolbar-blocks.d.ts +2 -5
- package/dist/template-resolver/web/document-toolbar-blocks.js +1 -21
- package/dist/template-resolver/web/i18n.js +14 -0
- package/dist/template-resolver/web/placeholder-line-editor.js +2 -2
- package/dist/tenant/invitation-table.d.ts +6 -6
- package/dist/tenant/membership-table.d.ts +4 -4
- package/dist/tenant/schema/tenant.d.ts +6 -6
- package/dist/tenant/web/client-plugin.d.ts +1 -1
- package/dist/tenant/web/member-status-cell.js +1 -1
- package/dist/tier-engine/entity.d.ts +1 -1
- package/dist/tier-engine/tier-resolver.d.ts +1 -1
- package/dist/tier-engine/web/client-plugin.d.ts +1 -1
- package/dist/user/schema/user.d.ts +12 -12
- package/dist/user-data-rights/env.d.ts +5 -0
- package/dist/user-data-rights/env.js +11 -0
- package/dist/user-data-rights/feature.js +4 -2
- package/dist/user-data-rights/index.d.ts +1 -0
- package/dist/user-data-rights/index.js +1 -0
- package/dist/user-data-rights/lib/mail-transport-resolver.js +1 -1
- package/dist/user-data-rights/lib/storage-provider-resolver.js +1 -1
- package/dist/user-data-rights/mail-notifications.js +1 -1
- package/dist/user-data-rights/schema/download-attempt.d.ts +14 -14
- package/dist/user-data-rights/schema/download-token.d.ts +8 -8
- package/dist/user-data-rights/schema/export-job.d.ts +6 -6
- package/dist/user-data-rights/web/client-plugin.d.ts +1 -1
- package/dist/user-data-rights/web/privacy-center-screen.js +2 -2
- package/dist/waitlist/entity.d.ts +14 -14
- package/dist/waitlist/legacy-migrate.d.ts +2 -0
- package/dist/waitlist/legacy-migrate.js +38 -3
- package/package.json +16 -11
- package/src/account-security/changes.json +6 -0
- package/src/auth-foundation/changes.json +6 -0
- package/src/billing-foundation/changes.json +6 -0
- package/src/channel-email/changes.json +6 -0
- package/src/crypto-shredding/changes.json +6 -0
- package/src/file-provider-s3/changes.json +6 -0
- package/src/host-routing/changes.json +6 -0
- package/src/inbound-mail-foundation/changes.json +7 -0
- package/src/legal-pages/changes.json +6 -0
- package/src/template-resolver/changes.json +18 -0
- package/src/user-data-rights/changes.json +6 -0
- package/src/waitlist/changes.json +6 -0
- /package/dist/template-resolver/{web/placeholder-text.d.ts → placeholder-text.d.ts} +0 -0
|
@@ -13,7 +13,7 @@ export declare const downloadAttemptEntity: import("@cosmicdrift/kumiko-types/fi
|
|
|
13
13
|
readonly sensitive?: boolean;
|
|
14
14
|
readonly writeOnly?: boolean;
|
|
15
15
|
readonly readAsInstruction?: boolean;
|
|
16
|
-
readonly format?: "email" | "url" | "phone" | "password";
|
|
16
|
+
readonly format?: "email" | "url" | "phone" | "password" | "month";
|
|
17
17
|
readonly default?: string;
|
|
18
18
|
readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
|
|
19
19
|
readonly multiline?: boolean | {
|
|
@@ -36,7 +36,7 @@ export declare const downloadAttemptEntity: import("@cosmicdrift/kumiko-types/fi
|
|
|
36
36
|
readonly sensitive?: boolean;
|
|
37
37
|
readonly writeOnly?: boolean;
|
|
38
38
|
readonly readAsInstruction?: boolean;
|
|
39
|
-
readonly format?: "email" | "url" | "phone" | "password";
|
|
39
|
+
readonly format?: "email" | "url" | "phone" | "password" | "month";
|
|
40
40
|
readonly default?: string;
|
|
41
41
|
readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
|
|
42
42
|
readonly multiline?: boolean | {
|
|
@@ -59,7 +59,7 @@ export declare const downloadAttemptEntity: import("@cosmicdrift/kumiko-types/fi
|
|
|
59
59
|
readonly sensitive?: boolean;
|
|
60
60
|
readonly writeOnly?: boolean;
|
|
61
61
|
readonly readAsInstruction?: boolean;
|
|
62
|
-
readonly format?: "email" | "url" | "phone" | "password";
|
|
62
|
+
readonly format?: "email" | "url" | "phone" | "password" | "month";
|
|
63
63
|
readonly default?: string;
|
|
64
64
|
readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
|
|
65
65
|
readonly multiline?: boolean | {
|
|
@@ -82,7 +82,7 @@ export declare const downloadAttemptEntity: import("@cosmicdrift/kumiko-types/fi
|
|
|
82
82
|
readonly sensitive?: boolean;
|
|
83
83
|
readonly writeOnly?: boolean;
|
|
84
84
|
readonly readAsInstruction?: boolean;
|
|
85
|
-
readonly format?: "email" | "url" | "phone" | "password";
|
|
85
|
+
readonly format?: "email" | "url" | "phone" | "password" | "month";
|
|
86
86
|
readonly default?: string;
|
|
87
87
|
readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
|
|
88
88
|
readonly multiline?: boolean | {
|
|
@@ -105,7 +105,7 @@ export declare const downloadAttemptEntity: import("@cosmicdrift/kumiko-types/fi
|
|
|
105
105
|
readonly sensitive?: boolean;
|
|
106
106
|
readonly writeOnly?: boolean;
|
|
107
107
|
readonly readAsInstruction?: boolean;
|
|
108
|
-
readonly format?: "email" | "url" | "phone" | "password";
|
|
108
|
+
readonly format?: "email" | "url" | "phone" | "password" | "month";
|
|
109
109
|
readonly default?: string;
|
|
110
110
|
readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
|
|
111
111
|
readonly multiline?: boolean | {
|
|
@@ -128,7 +128,7 @@ export declare const downloadAttemptEntity: import("@cosmicdrift/kumiko-types/fi
|
|
|
128
128
|
readonly sensitive?: boolean;
|
|
129
129
|
readonly writeOnly?: boolean;
|
|
130
130
|
readonly readAsInstruction?: boolean;
|
|
131
|
-
readonly format?: "email" | "url" | "phone" | "password";
|
|
131
|
+
readonly format?: "email" | "url" | "phone" | "password" | "month";
|
|
132
132
|
readonly default?: string;
|
|
133
133
|
readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
|
|
134
134
|
readonly multiline?: boolean | {
|
|
@@ -151,7 +151,7 @@ export declare const downloadAttemptEntity: import("@cosmicdrift/kumiko-types/fi
|
|
|
151
151
|
readonly sensitive?: boolean;
|
|
152
152
|
readonly writeOnly?: boolean;
|
|
153
153
|
readonly readAsInstruction?: boolean;
|
|
154
|
-
readonly format?: "email" | "url" | "phone" | "password";
|
|
154
|
+
readonly format?: "email" | "url" | "phone" | "password" | "month";
|
|
155
155
|
readonly default?: string;
|
|
156
156
|
readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
|
|
157
157
|
readonly multiline?: boolean | {
|
|
@@ -191,7 +191,7 @@ export declare const downloadAttemptsTable: import("@cosmicdrift/kumiko-framewor
|
|
|
191
191
|
readonly sensitive?: boolean;
|
|
192
192
|
readonly writeOnly?: boolean;
|
|
193
193
|
readonly readAsInstruction?: boolean;
|
|
194
|
-
readonly format?: "email" | "url" | "phone" | "password";
|
|
194
|
+
readonly format?: "email" | "url" | "phone" | "password" | "month";
|
|
195
195
|
readonly default?: string;
|
|
196
196
|
readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
|
|
197
197
|
readonly multiline?: boolean | {
|
|
@@ -214,7 +214,7 @@ export declare const downloadAttemptsTable: import("@cosmicdrift/kumiko-framewor
|
|
|
214
214
|
readonly sensitive?: boolean;
|
|
215
215
|
readonly writeOnly?: boolean;
|
|
216
216
|
readonly readAsInstruction?: boolean;
|
|
217
|
-
readonly format?: "email" | "url" | "phone" | "password";
|
|
217
|
+
readonly format?: "email" | "url" | "phone" | "password" | "month";
|
|
218
218
|
readonly default?: string;
|
|
219
219
|
readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
|
|
220
220
|
readonly multiline?: boolean | {
|
|
@@ -237,7 +237,7 @@ export declare const downloadAttemptsTable: import("@cosmicdrift/kumiko-framewor
|
|
|
237
237
|
readonly sensitive?: boolean;
|
|
238
238
|
readonly writeOnly?: boolean;
|
|
239
239
|
readonly readAsInstruction?: boolean;
|
|
240
|
-
readonly format?: "email" | "url" | "phone" | "password";
|
|
240
|
+
readonly format?: "email" | "url" | "phone" | "password" | "month";
|
|
241
241
|
readonly default?: string;
|
|
242
242
|
readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
|
|
243
243
|
readonly multiline?: boolean | {
|
|
@@ -260,7 +260,7 @@ export declare const downloadAttemptsTable: import("@cosmicdrift/kumiko-framewor
|
|
|
260
260
|
readonly sensitive?: boolean;
|
|
261
261
|
readonly writeOnly?: boolean;
|
|
262
262
|
readonly readAsInstruction?: boolean;
|
|
263
|
-
readonly format?: "email" | "url" | "phone" | "password";
|
|
263
|
+
readonly format?: "email" | "url" | "phone" | "password" | "month";
|
|
264
264
|
readonly default?: string;
|
|
265
265
|
readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
|
|
266
266
|
readonly multiline?: boolean | {
|
|
@@ -283,7 +283,7 @@ export declare const downloadAttemptsTable: import("@cosmicdrift/kumiko-framewor
|
|
|
283
283
|
readonly sensitive?: boolean;
|
|
284
284
|
readonly writeOnly?: boolean;
|
|
285
285
|
readonly readAsInstruction?: boolean;
|
|
286
|
-
readonly format?: "email" | "url" | "phone" | "password";
|
|
286
|
+
readonly format?: "email" | "url" | "phone" | "password" | "month";
|
|
287
287
|
readonly default?: string;
|
|
288
288
|
readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
|
|
289
289
|
readonly multiline?: boolean | {
|
|
@@ -306,7 +306,7 @@ export declare const downloadAttemptsTable: import("@cosmicdrift/kumiko-framewor
|
|
|
306
306
|
readonly sensitive?: boolean;
|
|
307
307
|
readonly writeOnly?: boolean;
|
|
308
308
|
readonly readAsInstruction?: boolean;
|
|
309
|
-
readonly format?: "email" | "url" | "phone" | "password";
|
|
309
|
+
readonly format?: "email" | "url" | "phone" | "password" | "month";
|
|
310
310
|
readonly default?: string;
|
|
311
311
|
readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
|
|
312
312
|
readonly multiline?: boolean | {
|
|
@@ -329,7 +329,7 @@ export declare const downloadAttemptsTable: import("@cosmicdrift/kumiko-framewor
|
|
|
329
329
|
readonly sensitive?: boolean;
|
|
330
330
|
readonly writeOnly?: boolean;
|
|
331
331
|
readonly readAsInstruction?: boolean;
|
|
332
|
-
readonly format?: "email" | "url" | "phone" | "password";
|
|
332
|
+
readonly format?: "email" | "url" | "phone" | "password" | "month";
|
|
333
333
|
readonly default?: string;
|
|
334
334
|
readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
|
|
335
335
|
readonly multiline?: boolean | {
|
|
@@ -13,7 +13,7 @@ export declare const exportDownloadTokenEntity: import("@cosmicdrift/kumiko-type
|
|
|
13
13
|
readonly sensitive?: boolean;
|
|
14
14
|
readonly writeOnly?: boolean;
|
|
15
15
|
readonly readAsInstruction?: boolean;
|
|
16
|
-
readonly format?: "email" | "url" | "phone" | "password";
|
|
16
|
+
readonly format?: "email" | "url" | "phone" | "password" | "month";
|
|
17
17
|
readonly default?: string;
|
|
18
18
|
readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
|
|
19
19
|
readonly multiline?: boolean | {
|
|
@@ -36,7 +36,7 @@ export declare const exportDownloadTokenEntity: import("@cosmicdrift/kumiko-type
|
|
|
36
36
|
readonly sensitive?: boolean;
|
|
37
37
|
readonly writeOnly?: boolean;
|
|
38
38
|
readonly readAsInstruction?: boolean;
|
|
39
|
-
readonly format?: "email" | "url" | "phone" | "password";
|
|
39
|
+
readonly format?: "email" | "url" | "phone" | "password" | "month";
|
|
40
40
|
readonly default?: string;
|
|
41
41
|
readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
|
|
42
42
|
readonly multiline?: boolean | {
|
|
@@ -116,7 +116,7 @@ export declare const exportDownloadTokenEntity: import("@cosmicdrift/kumiko-type
|
|
|
116
116
|
readonly sensitive?: boolean;
|
|
117
117
|
readonly writeOnly?: boolean;
|
|
118
118
|
readonly readAsInstruction?: boolean;
|
|
119
|
-
readonly format?: "email" | "url" | "phone" | "password";
|
|
119
|
+
readonly format?: "email" | "url" | "phone" | "password" | "month";
|
|
120
120
|
readonly default?: string;
|
|
121
121
|
readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
|
|
122
122
|
readonly multiline?: boolean | {
|
|
@@ -139,7 +139,7 @@ export declare const exportDownloadTokenEntity: import("@cosmicdrift/kumiko-type
|
|
|
139
139
|
readonly sensitive?: boolean;
|
|
140
140
|
readonly writeOnly?: boolean;
|
|
141
141
|
readonly readAsInstruction?: boolean;
|
|
142
|
-
readonly format?: "email" | "url" | "phone" | "password";
|
|
142
|
+
readonly format?: "email" | "url" | "phone" | "password" | "month";
|
|
143
143
|
readonly default?: string;
|
|
144
144
|
readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
|
|
145
145
|
readonly multiline?: boolean | {
|
|
@@ -164,7 +164,7 @@ export declare const exportDownloadTokensTable: import("@cosmicdrift/kumiko-fram
|
|
|
164
164
|
readonly sensitive?: boolean;
|
|
165
165
|
readonly writeOnly?: boolean;
|
|
166
166
|
readonly readAsInstruction?: boolean;
|
|
167
|
-
readonly format?: "email" | "url" | "phone" | "password";
|
|
167
|
+
readonly format?: "email" | "url" | "phone" | "password" | "month";
|
|
168
168
|
readonly default?: string;
|
|
169
169
|
readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
|
|
170
170
|
readonly multiline?: boolean | {
|
|
@@ -187,7 +187,7 @@ export declare const exportDownloadTokensTable: import("@cosmicdrift/kumiko-fram
|
|
|
187
187
|
readonly sensitive?: boolean;
|
|
188
188
|
readonly writeOnly?: boolean;
|
|
189
189
|
readonly readAsInstruction?: boolean;
|
|
190
|
-
readonly format?: "email" | "url" | "phone" | "password";
|
|
190
|
+
readonly format?: "email" | "url" | "phone" | "password" | "month";
|
|
191
191
|
readonly default?: string;
|
|
192
192
|
readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
|
|
193
193
|
readonly multiline?: boolean | {
|
|
@@ -267,7 +267,7 @@ export declare const exportDownloadTokensTable: import("@cosmicdrift/kumiko-fram
|
|
|
267
267
|
readonly sensitive?: boolean;
|
|
268
268
|
readonly writeOnly?: boolean;
|
|
269
269
|
readonly readAsInstruction?: boolean;
|
|
270
|
-
readonly format?: "email" | "url" | "phone" | "password";
|
|
270
|
+
readonly format?: "email" | "url" | "phone" | "password" | "month";
|
|
271
271
|
readonly default?: string;
|
|
272
272
|
readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
|
|
273
273
|
readonly multiline?: boolean | {
|
|
@@ -290,7 +290,7 @@ export declare const exportDownloadTokensTable: import("@cosmicdrift/kumiko-fram
|
|
|
290
290
|
readonly sensitive?: boolean;
|
|
291
291
|
readonly writeOnly?: boolean;
|
|
292
292
|
readonly readAsInstruction?: boolean;
|
|
293
|
-
readonly format?: "email" | "url" | "phone" | "password";
|
|
293
|
+
readonly format?: "email" | "url" | "phone" | "password" | "month";
|
|
294
294
|
readonly default?: string;
|
|
295
295
|
readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
|
|
296
296
|
readonly multiline?: boolean | {
|
|
@@ -27,7 +27,7 @@ export declare const exportJobEntity: import("@cosmicdrift/kumiko-types/fields")
|
|
|
27
27
|
readonly sensitive?: boolean;
|
|
28
28
|
readonly writeOnly?: boolean;
|
|
29
29
|
readonly readAsInstruction?: boolean;
|
|
30
|
-
readonly format?: "email" | "url" | "phone" | "password";
|
|
30
|
+
readonly format?: "email" | "url" | "phone" | "password" | "month";
|
|
31
31
|
readonly default?: string;
|
|
32
32
|
readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
|
|
33
33
|
readonly multiline?: boolean | {
|
|
@@ -50,7 +50,7 @@ export declare const exportJobEntity: import("@cosmicdrift/kumiko-types/fields")
|
|
|
50
50
|
readonly sensitive?: boolean;
|
|
51
51
|
readonly writeOnly?: boolean;
|
|
52
52
|
readonly readAsInstruction?: boolean;
|
|
53
|
-
readonly format?: "email" | "url" | "phone" | "password";
|
|
53
|
+
readonly format?: "email" | "url" | "phone" | "password" | "month";
|
|
54
54
|
readonly default?: string;
|
|
55
55
|
readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
|
|
56
56
|
readonly multiline?: boolean | {
|
|
@@ -142,7 +142,7 @@ export declare const exportJobEntity: import("@cosmicdrift/kumiko-types/fields")
|
|
|
142
142
|
readonly sensitive?: boolean;
|
|
143
143
|
readonly writeOnly?: boolean;
|
|
144
144
|
readonly readAsInstruction?: boolean;
|
|
145
|
-
readonly format?: "email" | "url" | "phone" | "password";
|
|
145
|
+
readonly format?: "email" | "url" | "phone" | "password" | "month";
|
|
146
146
|
readonly default?: string;
|
|
147
147
|
readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
|
|
148
148
|
readonly multiline?: boolean | {
|
|
@@ -210,7 +210,7 @@ export declare const exportJobsTable: import("@cosmicdrift/kumiko-framework/db")
|
|
|
210
210
|
readonly sensitive?: boolean;
|
|
211
211
|
readonly writeOnly?: boolean;
|
|
212
212
|
readonly readAsInstruction?: boolean;
|
|
213
|
-
readonly format?: "email" | "url" | "phone" | "password";
|
|
213
|
+
readonly format?: "email" | "url" | "phone" | "password" | "month";
|
|
214
214
|
readonly default?: string;
|
|
215
215
|
readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
|
|
216
216
|
readonly multiline?: boolean | {
|
|
@@ -233,7 +233,7 @@ export declare const exportJobsTable: import("@cosmicdrift/kumiko-framework/db")
|
|
|
233
233
|
readonly sensitive?: boolean;
|
|
234
234
|
readonly writeOnly?: boolean;
|
|
235
235
|
readonly readAsInstruction?: boolean;
|
|
236
|
-
readonly format?: "email" | "url" | "phone" | "password";
|
|
236
|
+
readonly format?: "email" | "url" | "phone" | "password" | "month";
|
|
237
237
|
readonly default?: string;
|
|
238
238
|
readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
|
|
239
239
|
readonly multiline?: boolean | {
|
|
@@ -325,7 +325,7 @@ export declare const exportJobsTable: import("@cosmicdrift/kumiko-framework/db")
|
|
|
325
325
|
readonly sensitive?: boolean;
|
|
326
326
|
readonly writeOnly?: boolean;
|
|
327
327
|
readonly readAsInstruction?: boolean;
|
|
328
|
-
readonly format?: "email" | "url" | "phone" | "password";
|
|
328
|
+
readonly format?: "email" | "url" | "phone" | "password" | "month";
|
|
329
329
|
readonly default?: string;
|
|
330
330
|
readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
|
|
331
331
|
readonly multiline?: boolean | {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type TranslationsByLocale } from "@cosmicdrift/kumiko-renderer";
|
|
2
|
-
import type { ClientFeatureDefinition } from "@cosmicdrift/kumiko-renderer
|
|
2
|
+
import type { ClientFeatureDefinition } from "@cosmicdrift/kumiko-renderer/web";
|
|
3
3
|
import { type PublicDeletionRoutes } from "./public-deletion-gate.tsx";
|
|
4
4
|
export type UserDataRightsClientOptions = {
|
|
5
5
|
/** Key-weise Overrides über die Default-Bundles (de/en). */
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { EMPTY_VALUE_PLACEHOLDER } from "@cosmicdrift/kumiko-headless";
|
|
2
|
+
import { EMPTY_VALUE_PLACEHOLDER } from "@cosmicdrift/kumiko-renderer/headless";
|
|
3
3
|
// @runtime client
|
|
4
4
|
// Export section (Art. 20) — the one part of user-data-rights' privacy-center
|
|
5
5
|
// screen that stays custom (fw#2312). Registered as an EditExtensionSection
|
|
@@ -12,7 +12,7 @@ import { EMPTY_VALUE_PLACEHOLDER } from "@cosmicdrift/kumiko-headless";
|
|
|
12
12
|
// Restriction (Art. 18) and Deletion (Art. 17) moved onto the screen's
|
|
13
13
|
// declarative fields/actions instead (feature.ts).
|
|
14
14
|
import { useDispatcher, usePrimitives, useQuery, useTranslation, } from "@cosmicdrift/kumiko-renderer";
|
|
15
|
-
import { postWithDownload } from "@cosmicdrift/kumiko-renderer
|
|
15
|
+
import { postWithDownload } from "@cosmicdrift/kumiko-renderer/web";
|
|
16
16
|
import { propertyOf } from "@cosmicdrift/kumiko-types/type-guards";
|
|
17
17
|
import { useEffect, useState } from "react";
|
|
18
18
|
import { EXPORT_JOB_STATUS, UserDataRightsHandlers, UserDataRightsQueries, } from "../constants.js";
|
|
@@ -14,7 +14,7 @@ export declare const waitlistEntryEntity: import("@cosmicdrift/kumiko-types/fiel
|
|
|
14
14
|
readonly sensitive?: boolean;
|
|
15
15
|
readonly writeOnly?: boolean;
|
|
16
16
|
readonly readAsInstruction?: boolean;
|
|
17
|
-
readonly format?: "email" | "url" | "phone" | "password";
|
|
17
|
+
readonly format?: "email" | "url" | "phone" | "password" | "month";
|
|
18
18
|
readonly default?: string;
|
|
19
19
|
readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
|
|
20
20
|
readonly multiline?: boolean | {
|
|
@@ -37,7 +37,7 @@ export declare const waitlistEntryEntity: import("@cosmicdrift/kumiko-types/fiel
|
|
|
37
37
|
readonly sensitive?: boolean;
|
|
38
38
|
readonly writeOnly?: boolean;
|
|
39
39
|
readonly readAsInstruction?: boolean;
|
|
40
|
-
readonly format?: "email" | "url" | "phone" | "password";
|
|
40
|
+
readonly format?: "email" | "url" | "phone" | "password" | "month";
|
|
41
41
|
readonly default?: string;
|
|
42
42
|
readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
|
|
43
43
|
readonly multiline?: boolean | {
|
|
@@ -60,7 +60,7 @@ export declare const waitlistEntryEntity: import("@cosmicdrift/kumiko-types/fiel
|
|
|
60
60
|
readonly sensitive?: boolean;
|
|
61
61
|
readonly writeOnly?: boolean;
|
|
62
62
|
readonly readAsInstruction?: boolean;
|
|
63
|
-
readonly format?: "email" | "url" | "phone" | "password";
|
|
63
|
+
readonly format?: "email" | "url" | "phone" | "password" | "month";
|
|
64
64
|
readonly default?: string;
|
|
65
65
|
readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
|
|
66
66
|
readonly multiline?: boolean | {
|
|
@@ -83,7 +83,7 @@ export declare const waitlistEntryEntity: import("@cosmicdrift/kumiko-types/fiel
|
|
|
83
83
|
readonly sensitive?: boolean;
|
|
84
84
|
readonly writeOnly?: boolean;
|
|
85
85
|
readonly readAsInstruction?: boolean;
|
|
86
|
-
readonly format?: "email" | "url" | "phone" | "password";
|
|
86
|
+
readonly format?: "email" | "url" | "phone" | "password" | "month";
|
|
87
87
|
readonly default?: string;
|
|
88
88
|
readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
|
|
89
89
|
readonly multiline?: boolean | {
|
|
@@ -122,7 +122,7 @@ export declare const waitlistEntryEntity: import("@cosmicdrift/kumiko-types/fiel
|
|
|
122
122
|
readonly sensitive?: boolean;
|
|
123
123
|
readonly writeOnly?: boolean;
|
|
124
124
|
readonly readAsInstruction?: boolean;
|
|
125
|
-
readonly format?: "email" | "url" | "phone" | "password";
|
|
125
|
+
readonly format?: "email" | "url" | "phone" | "password" | "month";
|
|
126
126
|
readonly default?: string;
|
|
127
127
|
readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
|
|
128
128
|
readonly multiline?: boolean | {
|
|
@@ -199,7 +199,7 @@ export declare const waitlistEntryEntity: import("@cosmicdrift/kumiko-types/fiel
|
|
|
199
199
|
readonly sensitive?: boolean;
|
|
200
200
|
readonly writeOnly?: boolean;
|
|
201
201
|
readonly readAsInstruction?: boolean;
|
|
202
|
-
readonly format?: "email" | "url" | "phone" | "password";
|
|
202
|
+
readonly format?: "email" | "url" | "phone" | "password" | "month";
|
|
203
203
|
readonly default?: string;
|
|
204
204
|
readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
|
|
205
205
|
readonly multiline?: boolean | {
|
|
@@ -237,7 +237,7 @@ export declare const waitlistEntryEntity: import("@cosmicdrift/kumiko-types/fiel
|
|
|
237
237
|
readonly sensitive?: boolean;
|
|
238
238
|
readonly writeOnly?: boolean;
|
|
239
239
|
readonly readAsInstruction?: boolean;
|
|
240
|
-
readonly format?: "email" | "url" | "phone" | "password";
|
|
240
|
+
readonly format?: "email" | "url" | "phone" | "password" | "month";
|
|
241
241
|
readonly default?: string;
|
|
242
242
|
readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
|
|
243
243
|
readonly multiline?: boolean | {
|
|
@@ -262,7 +262,7 @@ export declare const waitlistEntryTable: import("@cosmicdrift/kumiko-framework/d
|
|
|
262
262
|
readonly sensitive?: boolean;
|
|
263
263
|
readonly writeOnly?: boolean;
|
|
264
264
|
readonly readAsInstruction?: boolean;
|
|
265
|
-
readonly format?: "email" | "url" | "phone" | "password";
|
|
265
|
+
readonly format?: "email" | "url" | "phone" | "password" | "month";
|
|
266
266
|
readonly default?: string;
|
|
267
267
|
readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
|
|
268
268
|
readonly multiline?: boolean | {
|
|
@@ -285,7 +285,7 @@ export declare const waitlistEntryTable: import("@cosmicdrift/kumiko-framework/d
|
|
|
285
285
|
readonly sensitive?: boolean;
|
|
286
286
|
readonly writeOnly?: boolean;
|
|
287
287
|
readonly readAsInstruction?: boolean;
|
|
288
|
-
readonly format?: "email" | "url" | "phone" | "password";
|
|
288
|
+
readonly format?: "email" | "url" | "phone" | "password" | "month";
|
|
289
289
|
readonly default?: string;
|
|
290
290
|
readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
|
|
291
291
|
readonly multiline?: boolean | {
|
|
@@ -308,7 +308,7 @@ export declare const waitlistEntryTable: import("@cosmicdrift/kumiko-framework/d
|
|
|
308
308
|
readonly sensitive?: boolean;
|
|
309
309
|
readonly writeOnly?: boolean;
|
|
310
310
|
readonly readAsInstruction?: boolean;
|
|
311
|
-
readonly format?: "email" | "url" | "phone" | "password";
|
|
311
|
+
readonly format?: "email" | "url" | "phone" | "password" | "month";
|
|
312
312
|
readonly default?: string;
|
|
313
313
|
readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
|
|
314
314
|
readonly multiline?: boolean | {
|
|
@@ -331,7 +331,7 @@ export declare const waitlistEntryTable: import("@cosmicdrift/kumiko-framework/d
|
|
|
331
331
|
readonly sensitive?: boolean;
|
|
332
332
|
readonly writeOnly?: boolean;
|
|
333
333
|
readonly readAsInstruction?: boolean;
|
|
334
|
-
readonly format?: "email" | "url" | "phone" | "password";
|
|
334
|
+
readonly format?: "email" | "url" | "phone" | "password" | "month";
|
|
335
335
|
readonly default?: string;
|
|
336
336
|
readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
|
|
337
337
|
readonly multiline?: boolean | {
|
|
@@ -370,7 +370,7 @@ export declare const waitlistEntryTable: import("@cosmicdrift/kumiko-framework/d
|
|
|
370
370
|
readonly sensitive?: boolean;
|
|
371
371
|
readonly writeOnly?: boolean;
|
|
372
372
|
readonly readAsInstruction?: boolean;
|
|
373
|
-
readonly format?: "email" | "url" | "phone" | "password";
|
|
373
|
+
readonly format?: "email" | "url" | "phone" | "password" | "month";
|
|
374
374
|
readonly default?: string;
|
|
375
375
|
readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
|
|
376
376
|
readonly multiline?: boolean | {
|
|
@@ -447,7 +447,7 @@ export declare const waitlistEntryTable: import("@cosmicdrift/kumiko-framework/d
|
|
|
447
447
|
readonly sensitive?: boolean;
|
|
448
448
|
readonly writeOnly?: boolean;
|
|
449
449
|
readonly readAsInstruction?: boolean;
|
|
450
|
-
readonly format?: "email" | "url" | "phone" | "password";
|
|
450
|
+
readonly format?: "email" | "url" | "phone" | "password" | "month";
|
|
451
451
|
readonly default?: string;
|
|
452
452
|
readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
|
|
453
453
|
readonly multiline?: boolean | {
|
|
@@ -485,7 +485,7 @@ export declare const waitlistEntryTable: import("@cosmicdrift/kumiko-framework/d
|
|
|
485
485
|
readonly sensitive?: boolean;
|
|
486
486
|
readonly writeOnly?: boolean;
|
|
487
487
|
readonly readAsInstruction?: boolean;
|
|
488
|
-
readonly format?: "email" | "url" | "phone" | "password";
|
|
488
|
+
readonly format?: "email" | "url" | "phone" | "password" | "month";
|
|
489
489
|
readonly default?: string;
|
|
490
490
|
readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
|
|
491
491
|
readonly multiline?: boolean | {
|
|
@@ -17,6 +17,8 @@ export type LegacyWaitlistMigrateReport = {
|
|
|
17
17
|
readonly created: number;
|
|
18
18
|
readonly skipped: number;
|
|
19
19
|
readonly unreadable: number;
|
|
20
|
+
/** Event streams of the legacy rows (same aggregate type) taken out of projection replay. */
|
|
21
|
+
readonly archivedStreams: number;
|
|
20
22
|
};
|
|
21
23
|
type LegacyRow = Readonly<Record<string, unknown>>;
|
|
22
24
|
export declare function mapOfflotRow(row: LegacyRow): Promise<WaitlistImportEntry | undefined>;
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { configuredPiiSubjectKms, decryptPiiFieldValues, isPiiCiphertext, PII_ERASED_SENTINEL, } from "@cosmicdrift/kumiko-framework/crypto";
|
|
2
|
-
import { createTenantDb, selectMany, table, text as textColumn, timestamp, transaction, uuid, } from "@cosmicdrift/kumiko-framework/db";
|
|
2
|
+
import { countWhere, createTenantDb, selectMany, table, text as textColumn, timestamp, transaction, uuid, } from "@cosmicdrift/kumiko-framework/db";
|
|
3
3
|
import { SYSTEM_TENANT_ID } from "@cosmicdrift/kumiko-framework/engine";
|
|
4
|
+
import { archiveStream, createArchivedStreamsTable, eventsTable, isStreamArchived, } from "@cosmicdrift/kumiko-framework/event-store";
|
|
4
5
|
import { Temporal } from "@cosmicdrift/kumiko-types/temporal";
|
|
5
6
|
import { WAITLIST_STATUS } from "./constants.js";
|
|
6
|
-
import { importWaitlistEntry } from "./import.js";
|
|
7
|
+
import { importWaitlistEntry, waitlistImportId } from "./import.js";
|
|
7
8
|
export const LEGACY_WAITLIST_SOURCES = ["offlot", "publicstatus"];
|
|
8
9
|
export function isLegacyWaitlistSource(value) {
|
|
9
10
|
return LEGACY_WAITLIST_SOURCES.some((known) => known === value);
|
|
@@ -13,6 +14,8 @@ export const DEFAULT_LEGACY_SOURCE_TABLE = {
|
|
|
13
14
|
publicstatus: "marketing_waitlist",
|
|
14
15
|
};
|
|
15
16
|
export const DEFAULT_IMPORT_LOCALE = "en";
|
|
17
|
+
const LEGACY_AGGREGATE_TYPE = "waitlistEntry";
|
|
18
|
+
const LEGACY_STREAM_ARCHIVE_REASON = "migrated to a new waitlist entry id by waitlist-migrate";
|
|
16
19
|
function toInstant(value) {
|
|
17
20
|
if (value === null || value === undefined)
|
|
18
21
|
return undefined;
|
|
@@ -144,6 +147,32 @@ async function readLegacyRows(db, from, sourceTable) {
|
|
|
144
147
|
orderBy: { col: "submittedAt", direction: "asc" },
|
|
145
148
|
});
|
|
146
149
|
}
|
|
150
|
+
// A legacy offlot row is the projection of an event stream of the same aggregate type under the
|
|
151
|
+
// old row id, written in the system tenant like every waitlist entry. The imported entry gets a
|
|
152
|
+
// new id, so a rebuild would replay the old stream next to it and bring every migrated entry back
|
|
153
|
+
// twice; archived streams are excluded from replay. The offlot default source table is the entity
|
|
154
|
+
// table itself, so its row ids are live entries by design and no id check can tell a wrong table.
|
|
155
|
+
async function archiveLegacyStream(db, legacyId, importedId) {
|
|
156
|
+
if (legacyId === importedId)
|
|
157
|
+
return 0;
|
|
158
|
+
if (await isStreamArchived(db, SYSTEM_TENANT_ID, legacyId))
|
|
159
|
+
return 0;
|
|
160
|
+
const legacyEvents = await countWhere(db, eventsTable, {
|
|
161
|
+
tenantId: SYSTEM_TENANT_ID,
|
|
162
|
+
aggregateId: legacyId,
|
|
163
|
+
aggregateType: LEGACY_AGGREGATE_TYPE,
|
|
164
|
+
});
|
|
165
|
+
if (legacyEvents === 0)
|
|
166
|
+
return 0;
|
|
167
|
+
await archiveStream(db, {
|
|
168
|
+
tenantId: SYSTEM_TENANT_ID,
|
|
169
|
+
aggregateId: legacyId,
|
|
170
|
+
aggregateType: LEGACY_AGGREGATE_TYPE,
|
|
171
|
+
archivedBy: "waitlist-migrate",
|
|
172
|
+
reason: LEGACY_STREAM_ARCHIVE_REASON,
|
|
173
|
+
});
|
|
174
|
+
return 1;
|
|
175
|
+
}
|
|
147
176
|
// Idempotent: the new entry id derives from the source row id, so a re-run finds
|
|
148
177
|
// what an earlier run wrote and skips it. Writes go through the waitlist entity
|
|
149
178
|
// executor (events, projection, subject encryption), never into tables directly.
|
|
@@ -152,6 +181,9 @@ export async function migrateLegacyWaitlist(db, options) {
|
|
|
152
181
|
let created = 0;
|
|
153
182
|
let skipped = 0;
|
|
154
183
|
let unreadable = 0;
|
|
184
|
+
let archivedStreams = 0;
|
|
185
|
+
if (!options.dryRun && options.from === "offlot")
|
|
186
|
+
await createArchivedStreamsTable(db);
|
|
155
187
|
for (const row of rows) {
|
|
156
188
|
const entry = options.from === "offlot"
|
|
157
189
|
? await mapOfflotRow(row)
|
|
@@ -168,6 +200,9 @@ export async function migrateLegacyWaitlist(db, options) {
|
|
|
168
200
|
else
|
|
169
201
|
skipped += 1;
|
|
170
202
|
});
|
|
203
|
+
if (!options.dryRun && options.from === "offlot") {
|
|
204
|
+
archivedStreams += await archiveLegacyStream(db, String(row["id"]), waitlistImportId(entry.sourceKey));
|
|
205
|
+
}
|
|
171
206
|
}
|
|
172
|
-
return { read: rows.length, created, skipped, unreadable };
|
|
207
|
+
return { read: rows.length, created, skipped, unreadable, archivedStreams };
|
|
173
208
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cosmicdrift/kumiko-bundled-features",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.377.0",
|
|
4
4
|
"description": "Built-in features — tenant, user, auth, delivery. The stuff you'd rewrite anyway, already typed.",
|
|
5
5
|
"license": "BUSL-1.1",
|
|
6
6
|
"author": "Marc Frost <marc@cosmicdriftgamestudio.com>",
|
|
@@ -482,6 +482,10 @@
|
|
|
482
482
|
"types": "./dist/account-security/index.d.ts",
|
|
483
483
|
"default": "./dist/account-security/index.js"
|
|
484
484
|
},
|
|
485
|
+
"./account-security/constants": {
|
|
486
|
+
"types": "./dist/account-security/constants.d.ts",
|
|
487
|
+
"default": "./dist/account-security/constants.js"
|
|
488
|
+
},
|
|
485
489
|
"./host-routing": {
|
|
486
490
|
"types": "./dist/host-routing/index.d.ts",
|
|
487
491
|
"default": "./dist/host-routing/index.js"
|
|
@@ -536,12 +540,9 @@
|
|
|
536
540
|
}
|
|
537
541
|
},
|
|
538
542
|
"dependencies": {
|
|
539
|
-
"@cosmicdrift/kumiko-
|
|
540
|
-
"@cosmicdrift/kumiko-
|
|
541
|
-
"@cosmicdrift/kumiko-
|
|
542
|
-
"@cosmicdrift/kumiko-renderer": "0.374.0",
|
|
543
|
-
"@cosmicdrift/kumiko-renderer-web": "0.374.0",
|
|
544
|
-
"@cosmicdrift/kumiko-types": "0.374.0",
|
|
543
|
+
"@cosmicdrift/kumiko-framework": "0.377.0",
|
|
544
|
+
"@cosmicdrift/kumiko-renderer": "0.377.0",
|
|
545
|
+
"@cosmicdrift/kumiko-types": "0.377.0",
|
|
545
546
|
"@mollie/api-client": "^4.5.0",
|
|
546
547
|
"@node-rs/argon2": "^2.0.2",
|
|
547
548
|
"@tiptap/core": "3.31.3",
|
|
@@ -1040,6 +1041,10 @@
|
|
|
1040
1041
|
"types": "./dist/account-security/index.d.ts",
|
|
1041
1042
|
"default": "./dist/account-security/index.js"
|
|
1042
1043
|
},
|
|
1044
|
+
"./account-security/constants": {
|
|
1045
|
+
"types": "./dist/account-security/constants.d.ts",
|
|
1046
|
+
"default": "./dist/account-security/constants.js"
|
|
1047
|
+
},
|
|
1043
1048
|
"./host-routing": {
|
|
1044
1049
|
"types": "./dist/host-routing/index.d.ts",
|
|
1045
1050
|
"default": "./dist/host-routing/index.js"
|
|
@@ -1102,12 +1107,12 @@
|
|
|
1102
1107
|
],
|
|
1103
1108
|
"devDependencies": {
|
|
1104
1109
|
"@testing-library/user-event": "^14.6.1",
|
|
1105
|
-
"@cosmicdrift/kumiko-locale-de": "0.
|
|
1106
|
-
"@cosmicdrift/kumiko-locale-es": "0.
|
|
1107
|
-
"@cosmicdrift/kumiko-renderer-mail-html": "0.
|
|
1110
|
+
"@cosmicdrift/kumiko-locale-de": "0.377.0",
|
|
1111
|
+
"@cosmicdrift/kumiko-locale-es": "0.377.0",
|
|
1112
|
+
"@cosmicdrift/kumiko-renderer-mail-html": "0.377.0",
|
|
1108
1113
|
"jsqr": "^1.4.0",
|
|
1109
1114
|
"unpdf": "^1.8.1",
|
|
1110
|
-
"@cosmicdrift/kumiko-testing": "0.
|
|
1115
|
+
"@cosmicdrift/kumiko-testing": "0.377.0"
|
|
1111
1116
|
},
|
|
1112
1117
|
"peerDependencies": {
|
|
1113
1118
|
"@cosmicdrift/kumiko-testing": ">=0.366.0 <1.0.0"
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
[
|
|
2
|
+
{
|
|
3
|
+
"version": "0.376.0",
|
|
4
|
+
"type": "improvement",
|
|
5
|
+
"title": "Client-safe account-security/constants subpath",
|
|
6
|
+
"detail": "\"@cosmicdrift/kumiko-bundled-features/account-security/constants\" exports ACCOUNT_SECURITY_FEATURE, the screen id and QN, the nav label and the new ACCOUNT_SECURITY_SCREEN_TITLE_KEY without importing server code."
|
|
7
|
+
},
|
|
2
8
|
{
|
|
3
9
|
"version": "0.370.0",
|
|
4
10
|
"type": "improvement",
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
[
|
|
2
|
+
{
|
|
3
|
+
"version": "0.376.0",
|
|
4
|
+
"type": "improvement",
|
|
5
|
+
"title": "authEnvSchema for auth.admin and auth.mail",
|
|
6
|
+
"detail": "authEnvSchema declares APP_BASE_URL, AUTH_ADMIN_EMAIL and AUTH_ADMIN_PASSWORD with descriptions and the pulumi secret marker; an app spreads its shape into its env schema."
|
|
7
|
+
},
|
|
2
8
|
{
|
|
3
9
|
"version": "0.371.0",
|
|
4
10
|
"type": "improvement",
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
[
|
|
2
|
+
{
|
|
3
|
+
"version": "0.377.0",
|
|
4
|
+
"type": "improvement",
|
|
5
|
+
"title": "Optional contact card in the billing plan catalog",
|
|
6
|
+
"detail": "catalog.contact takes labelKey, benefits, actionLabelKey and an absolute https: or mailto: href. The billing-plans query returns it as contact, the billing-plans panel renders it as the last card without a price for every viewRole, also when the caller cannot purchase or billing is off. Boot validation rejects empty keys and any other href."
|
|
7
|
+
},
|
|
2
8
|
{
|
|
3
9
|
"version": "0.371.0",
|
|
4
10
|
"type": "improvement",
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
[
|
|
2
|
+
{
|
|
3
|
+
"version": "0.376.0",
|
|
4
|
+
"type": "improvement",
|
|
5
|
+
"title": "resolveEmail receives a typed tenant database",
|
|
6
|
+
"detail": "The context of EmailChannelOptions resolveEmail types db as TenantDb, so resolvers read tables without a cast."
|
|
7
|
+
},
|
|
2
8
|
{
|
|
3
9
|
"version": "0.370.0",
|
|
4
10
|
"type": "improvement",
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
[
|
|
2
|
+
{
|
|
3
|
+
"version": "0.377.0",
|
|
4
|
+
"type": "fix",
|
|
5
|
+
"title": "Forgetting a user also removes their unbound pending uploads",
|
|
6
|
+
"detail": "forget-subject for a user deleted only files bound to a record. Uploads the user made but never attached (file refs without an entity id) stayed behind. They are now removed with their bytes, except refs a record still names in a single-file column."
|
|
7
|
+
},
|
|
2
8
|
{
|
|
3
9
|
"version": "0.372.0",
|
|
4
10
|
"type": "fix",
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
[
|
|
2
|
+
{
|
|
3
|
+
"version": "0.376.0",
|
|
4
|
+
"type": "improvement",
|
|
5
|
+
"title": "Named S3 provider feature",
|
|
6
|
+
"detail": "createFileProviderS3NamedEnvFeature mounts an additional S3 provider under its own name with an env prefix, next to the default one, so a second bucket needs no hand-written wiring."
|
|
7
|
+
},
|
|
2
8
|
{
|
|
3
9
|
"version": "0.371.0",
|
|
4
10
|
"type": "improvement",
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
[
|
|
2
|
+
{
|
|
3
|
+
"version": "0.376.0",
|
|
4
|
+
"type": "improvement",
|
|
5
|
+
"title": "tenantBy resolver, apex path tenants, redirects and anonymous query allowlist",
|
|
6
|
+
"detail": "tenantBy accepts (host, db) => TenantId | null for profile subdomains and custom domains; tenantPathPrefix also works in host and resolver mode for apex path tenants. redirects send fixed 301/302 answers before host classification, apexAnonymousQueryAllowlist limits the anonymous apex anchor to listed query types per host (/api/query and /api/stream), and createHostTenantIdResolver(options, db) maps a Host header to its tenant for managed-pages. Existing \"host\" and \"path\" configs behave as before, except that apexAnonymousQueryAllowlist with tenantBy \"path\" is rejected at boot."
|
|
7
|
+
},
|
|
2
8
|
{
|
|
3
9
|
"version": "0.370.0",
|
|
4
10
|
"type": "improvement",
|