@cosmicdrift/kumiko-bundled-features 0.369.0 → 0.370.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.
Files changed (606) hide show
  1. package/dist/account-security/constants.d.ts +4 -0
  2. package/dist/account-security/constants.js +5 -0
  3. package/dist/account-security/feature.d.ts +14 -0
  4. package/dist/account-security/feature.js +62 -0
  5. package/dist/account-security/i18n.d.ts +6 -0
  6. package/dist/account-security/i18n.js +6 -0
  7. package/dist/account-security/index.d.ts +3 -0
  8. package/dist/account-security/index.js +3 -0
  9. package/dist/admin-shell/feature.d.ts +1 -1
  10. package/dist/admin-shell/index.d.ts +4 -4
  11. package/dist/admin-shell/overview-panels.d.ts +1 -1
  12. package/dist/admin-shell/web/index.d.ts +1 -1
  13. package/dist/agent-tools/agent-manifest.d.ts +1 -1
  14. package/dist/agent-tools/index.d.ts +8 -8
  15. package/dist/agent-tools/manifest-deny-qns.d.ts +1 -1
  16. package/dist/agent-tools/tool-catalog.d.ts +1 -1
  17. package/dist/agent-tools/tool-dispatch.d.ts +1 -1
  18. package/dist/audit/handlers/resolve-audit-tenant.d.ts +1 -1
  19. package/dist/audit/index.d.ts +3 -3
  20. package/dist/audit/web/index.d.ts +1 -1
  21. package/dist/auth-email-password/bootstrap.d.ts +1 -1
  22. package/dist/auth-email-password/feature.d.ts +7 -6
  23. package/dist/auth-email-password/feature.js +3 -1
  24. package/dist/auth-email-password/handlers/confirm-token-flow.d.ts +1 -1
  25. package/dist/auth-email-password/handlers/invite-accept-with-login.write.d.ts +1 -1
  26. package/dist/auth-email-password/handlers/invite-create.write.d.ts +2 -2
  27. package/dist/auth-email-password/handlers/invite-signup-complete.write.d.ts +1 -1
  28. package/dist/auth-email-password/handlers/login.write.d.ts +1 -1
  29. package/dist/auth-email-password/handlers/request-account-unlock.write.d.ts +1 -1
  30. package/dist/auth-email-password/handlers/request-email-verification.write.d.ts +1 -1
  31. package/dist/auth-email-password/handlers/request-password-reset.write.d.ts +1 -1
  32. package/dist/auth-email-password/handlers/signup-confirm.write.d.ts +1 -1
  33. package/dist/auth-email-password/handlers/signup-request.write.d.ts +1 -1
  34. package/dist/auth-email-password/handlers/switch-tenant-mfa-gate.write.d.ts +1 -1
  35. package/dist/auth-email-password/handlers/token-request-handler.d.ts +2 -2
  36. package/dist/auth-email-password/index.d.ts +13 -13
  37. package/dist/auth-email-password/lockout-store.d.ts +1 -1
  38. package/dist/auth-email-password/magic-link-mail.d.ts +1 -1
  39. package/dist/auth-email-password/seeding.d.ts +3 -3
  40. package/dist/auth-email-password/signed-token.d.ts +1 -1
  41. package/dist/auth-email-password/signup-token-store.d.ts +1 -1
  42. package/dist/auth-email-password/testing.d.ts +1 -1
  43. package/dist/auth-email-password/web/auth-gate.d.ts +1 -1
  44. package/dist/auth-email-password/web/client-plugin.d.ts +2 -2
  45. package/dist/auth-email-password/web/index.d.ts +42 -42
  46. package/dist/auth-email-password/web/session-bootstrap-error.d.ts +1 -1
  47. package/dist/auth-email-password/web/session.d.ts +1 -1
  48. package/dist/auth-email-password/web/signup-complete-screen.d.ts +1 -1
  49. package/dist/auth-foundation/feature.d.ts +2 -6
  50. package/dist/auth-foundation/feature.js +0 -2
  51. package/dist/auth-foundation/index.d.ts +3 -3
  52. package/dist/auth-foundation/index.js +1 -1
  53. package/dist/auth-foundation/resolve-anonymous-access.d.ts +1 -1
  54. package/dist/auth-mfa/env.d.ts +13 -0
  55. package/dist/auth-mfa/env.js +24 -0
  56. package/dist/auth-mfa/errors.d.ts +1 -1
  57. package/dist/auth-mfa/feature-exports.d.ts +12 -0
  58. package/dist/auth-mfa/feature-exports.js +72 -0
  59. package/dist/auth-mfa/feature.d.ts +6 -12
  60. package/dist/auth-mfa/feature.js +53 -70
  61. package/dist/auth-mfa/handlers/reencrypt.job.d.ts +1 -1
  62. package/dist/auth-mfa/index.d.ts +12 -9
  63. package/dist/auth-mfa/index.js +4 -2
  64. package/dist/auth-mfa/mfa-challenge-token.d.ts +1 -1
  65. package/dist/auth-mfa/mfa-preauth-setup-token.d.ts +1 -1
  66. package/dist/auth-mfa/mfa-status-checker.d.ts +1 -1
  67. package/dist/auth-mfa/mfa-verify-attempts.d.ts +1 -1
  68. package/dist/auth-mfa/testing.d.ts +1 -1
  69. package/dist/auth-mfa/token-secrets.d.ts +7 -0
  70. package/dist/auth-mfa/token-secrets.js +13 -0
  71. package/dist/auth-mfa/verify-factor.d.ts +1 -1
  72. package/dist/auth-mfa/web/index.d.ts +15 -15
  73. package/dist/auth-mfa/web/mfa-client.d.ts +1 -1
  74. package/dist/auth-mfa-user-data/index.d.ts +0 -4
  75. package/dist/auth-mfa-user-data/index.js +0 -2
  76. package/dist/billing-foundation/checkout-core.d.ts +2 -2
  77. package/dist/billing-foundation/consumer-protection/confirmation-mail.d.ts +2 -2
  78. package/dist/billing-foundation/consumer-protection/consent-gate.d.ts +1 -1
  79. package/dist/billing-foundation/consumer-protection/consent-text.d.ts +2 -2
  80. package/dist/billing-foundation/consumer-protection/issue-confirmation.d.ts +1 -1
  81. package/dist/billing-foundation/consumer-protection/register-consent.d.ts +1 -1
  82. package/dist/billing-foundation/consumer-protection/register-termination.d.ts +1 -1
  83. package/dist/billing-foundation/consumer-protection/termination-mail.d.ts +3 -3
  84. package/dist/billing-foundation/consumer-protection/termination-notify.d.ts +5 -5
  85. package/dist/billing-foundation/consumer-protection/termination-pages.d.ts +2 -2
  86. package/dist/billing-foundation/consumer-protection/termination-record.d.ts +3 -3
  87. package/dist/billing-foundation/consumer-protection/termination-request.d.ts +2 -2
  88. package/dist/billing-foundation/consumer-protection/termination-texts.d.ts +2 -2
  89. package/dist/billing-foundation/feature.d.ts +1 -3
  90. package/dist/billing-foundation/feature.js +0 -2
  91. package/dist/billing-foundation/handlers/billing-plans.query.d.ts +1 -1
  92. package/dist/billing-foundation/handlers/create-checkout-session.write.d.ts +1 -1
  93. package/dist/billing-foundation/handlers/create-portal-session.write.d.ts +1 -1
  94. package/dist/billing-foundation/handlers/start-plan-checkout.write.d.ts +1 -1
  95. package/dist/billing-foundation/handlers/switch-plan.write.d.ts +1 -1
  96. package/dist/billing-foundation/index.d.ts +16 -16
  97. package/dist/billing-foundation/index.js +1 -1
  98. package/dist/billing-foundation/plan-catalog.d.ts +1 -1
  99. package/dist/billing-foundation/subscription-tier-sync.d.ts +3 -1
  100. package/dist/billing-foundation/subscription-tier-sync.js +3 -2
  101. package/dist/billing-foundation/types.d.ts +3 -3
  102. package/dist/billing-foundation/validate-options.d.ts +1 -1
  103. package/dist/billing-foundation/web/checkout-consent-dialog.d.ts +1 -1
  104. package/dist/billing-foundation/web/index.d.ts +6 -6
  105. package/dist/cap-counter/calendar-cap-usage-reservation.d.ts +4 -4
  106. package/dist/cap-counter/cap-reservation.d.ts +1 -1
  107. package/dist/cap-counter/enforce-cap.d.ts +1 -1
  108. package/dist/cap-counter/feature.d.ts +0 -4
  109. package/dist/cap-counter/feature.js +0 -2
  110. package/dist/cap-counter/index.d.ts +13 -13
  111. package/dist/cap-counter/index.js +1 -1
  112. package/dist/cap-counter/value-cap-guard.d.ts +1 -1
  113. package/dist/cap-counter/with-cap-enforcement.d.ts +1 -1
  114. package/dist/cap-overview/feature.d.ts +1 -1
  115. package/dist/cap-overview/handlers/caps-usage.query.d.ts +1 -1
  116. package/dist/cap-overview/handlers/tenant-caps-list.query.d.ts +1 -1
  117. package/dist/cap-overview/index.d.ts +6 -6
  118. package/dist/cap-overview/screens.d.ts +1 -1
  119. package/dist/cap-overview/types.d.ts +1 -1
  120. package/dist/cap-overview/usage-math.d.ts +1 -1
  121. package/dist/cap-overview/web/cap-usage-bar.d.ts +1 -1
  122. package/dist/cap-overview/web/index.d.ts +4 -4
  123. package/dist/channel-discord/discord-channel.d.ts +1 -1
  124. package/dist/channel-discord/feature.d.ts +1 -1
  125. package/dist/channel-discord/index.d.ts +2 -2
  126. package/dist/channel-email/email-channel.d.ts +2 -2
  127. package/dist/channel-email/env.d.ts +14 -0
  128. package/dist/channel-email/env.js +27 -0
  129. package/dist/channel-email/feature.d.ts +14 -3
  130. package/dist/channel-email/feature.js +5 -1
  131. package/dist/channel-email/index.d.ts +6 -5
  132. package/dist/channel-email/index.js +1 -0
  133. package/dist/channel-email/pii-guard.d.ts +1 -1
  134. package/dist/channel-email/smtp-transport.d.ts +1 -1
  135. package/dist/channel-email/types.d.ts +1 -1
  136. package/dist/channel-in-app/in-app-channel.d.ts +1 -1
  137. package/dist/channel-in-app/index.d.ts +4 -4
  138. package/dist/channel-push/feature.d.ts +1 -1
  139. package/dist/channel-push/index.d.ts +3 -3
  140. package/dist/channel-push/push-channel.d.ts +2 -2
  141. package/dist/channel-slack/feature.d.ts +1 -1
  142. package/dist/channel-slack/index.d.ts +2 -2
  143. package/dist/channel-slack/slack-channel.d.ts +1 -1
  144. package/dist/channel-teams/feature.d.ts +1 -1
  145. package/dist/channel-teams/index.d.ts +2 -2
  146. package/dist/channel-teams/teams-channel.d.ts +1 -1
  147. package/dist/channel-telegram/feature.d.ts +1 -1
  148. package/dist/channel-telegram/index.d.ts +2 -2
  149. package/dist/channel-telegram/telegram-channel.d.ts +1 -1
  150. package/dist/compliance-profiles/feature.d.ts +1 -1
  151. package/dist/compliance-profiles/index.d.ts +3 -3
  152. package/dist/compliance-profiles/web/index.d.ts +2 -2
  153. package/dist/compliance-profiles-ops/index.d.ts +0 -8
  154. package/dist/compliance-profiles-ops/index.js +0 -2
  155. package/dist/config/feature.d.ts +1 -1
  156. package/dist/config/handlers/reencrypt.job.d.ts +1 -1
  157. package/dist/config/index.d.ts +8 -8
  158. package/dist/config/web/client-plugin.d.ts +1 -1
  159. package/dist/config/web/index.d.ts +2 -2
  160. package/dist/crypto-shredding/env/index.d.ts +21 -0
  161. package/dist/crypto-shredding/env/index.js +78 -0
  162. package/dist/crypto-shredding/feature.d.ts +17 -2
  163. package/dist/crypto-shredding/feature.js +5 -1
  164. package/dist/crypto-shredding/index.d.ts +4 -3
  165. package/dist/crypto-shredding/index.js +1 -0
  166. package/dist/custom-fields/feature.d.ts +0 -17
  167. package/dist/custom-fields/feature.js +0 -2
  168. package/dist/custom-fields/index.d.ts +10 -10
  169. package/dist/custom-fields/index.js +1 -1
  170. package/dist/custom-fields/lib/define-or-resurrect.d.ts +2 -2
  171. package/dist/custom-fields/lib/field-access.d.ts +1 -1
  172. package/dist/custom-fields/lib/field-definition-row.d.ts +1 -1
  173. package/dist/custom-fields/lib/quota.d.ts +1 -1
  174. package/dist/custom-fields/web/index.d.ts +3 -3
  175. package/dist/data-retention/_internal/parse-override.d.ts +1 -1
  176. package/dist/data-retention/feature.d.ts +7 -7
  177. package/dist/data-retention/handlers/policy-for.query.d.ts +1 -1
  178. package/dist/data-retention/index.d.ts +3 -3
  179. package/dist/data-retention/resolve-for-tenant.d.ts +2 -2
  180. package/dist/data-retention/resolve-tenant-preset.d.ts +1 -1
  181. package/dist/data-retention/resolver.d.ts +1 -1
  182. package/dist/data-retention/run-retention-cleanup.d.ts +2 -2
  183. package/dist/delivery/attachment-ref.d.ts +1 -1
  184. package/dist/delivery/attempt-log.d.ts +1 -1
  185. package/dist/delivery/channel-context.d.ts +2 -2
  186. package/dist/delivery/chat-webhook-channel.d.ts +2 -2
  187. package/dist/delivery/constants.d.ts +1 -1
  188. package/dist/delivery/delivery-service.d.ts +2 -2
  189. package/dist/delivery/feature.js +2 -0
  190. package/dist/delivery/handlers/log.query.d.ts +1 -1
  191. package/dist/delivery/handlers/unsubscribe-page-chrome.query.d.ts +5 -0
  192. package/dist/delivery/handlers/unsubscribe-page-chrome.query.js +44 -0
  193. package/dist/delivery/index.d.ts +20 -20
  194. package/dist/delivery/notify-factory.d.ts +1 -1
  195. package/dist/delivery/public-names.d.ts +1 -0
  196. package/dist/delivery/public-names.js +1 -0
  197. package/dist/delivery/testing.d.ts +3 -3
  198. package/dist/delivery/types.d.ts +3 -3
  199. package/dist/delivery/unsubscribe-link.d.ts +1 -1
  200. package/dist/delivery/unsubscribe-page-strings.d.ts +4 -0
  201. package/dist/delivery/unsubscribe-page-strings.js +4 -0
  202. package/dist/delivery/unsubscribe-page.d.ts +27 -0
  203. package/dist/delivery/unsubscribe-page.js +192 -0
  204. package/dist/delivery/unsubscribe.d.ts +11 -3
  205. package/dist/delivery/unsubscribe.js +146 -64
  206. package/dist/delivery/web/index.d.ts +2 -2
  207. package/dist/derivatives-sharp/feature.d.ts +0 -4
  208. package/dist/derivatives-sharp/feature.js +0 -2
  209. package/dist/derivatives-sharp/index.d.ts +2 -2
  210. package/dist/derivatives-sharp/index.js +1 -1
  211. package/dist/document-ingest-foundation/feature.d.ts +0 -7
  212. package/dist/document-ingest-foundation/feature.js +0 -2
  213. package/dist/document-ingest-foundation/index.d.ts +7 -7
  214. package/dist/document-ingest-foundation/index.js +1 -1
  215. package/dist/document-ingest-foundation/pages.d.ts +1 -1
  216. package/dist/document-ingest-foundation/providers.d.ts +1 -1
  217. package/dist/document-ingest-foundation/write-document-extract.d.ts +1 -1
  218. package/dist/feature-toggles/compose-tier-resolver.d.ts +1 -1
  219. package/dist/feature-toggles/feature.d.ts +5 -5
  220. package/dist/feature-toggles/handlers/set.write.d.ts +1 -1
  221. package/dist/feature-toggles/index.d.ts +3 -3
  222. package/dist/feature-toggles/toggle-sync-signal.d.ts +1 -1
  223. package/dist/feature-toggles/web/index.d.ts +1 -1
  224. package/dist/file-derivatives/feature.d.ts +0 -2
  225. package/dist/file-derivatives/feature.js +0 -2
  226. package/dist/file-derivatives/index.d.ts +4 -4
  227. package/dist/file-derivatives/index.js +1 -1
  228. package/dist/file-foundation/feature.d.ts +0 -6
  229. package/dist/file-foundation/feature.js +0 -2
  230. package/dist/file-foundation/index.d.ts +2 -2
  231. package/dist/file-foundation/index.js +1 -1
  232. package/dist/file-provider-inmemory/feature.d.ts +0 -4
  233. package/dist/file-provider-inmemory/feature.js +0 -2
  234. package/dist/file-provider-inmemory/index.d.ts +1 -1
  235. package/dist/file-provider-inmemory/index.js +1 -1
  236. package/dist/file-provider-s3/env-feature.d.ts +12 -2
  237. package/dist/file-provider-s3/env-feature.js +9 -6
  238. package/dist/file-provider-s3/env-schema.d.ts +38 -0
  239. package/dist/file-provider-s3/env-schema.js +51 -0
  240. package/dist/file-provider-s3/feature.d.ts +1 -14
  241. package/dist/file-provider-s3/feature.js +0 -2
  242. package/dist/file-provider-s3/index.d.ts +2 -1
  243. package/dist/file-provider-s3/index.js +2 -1
  244. package/dist/file-provider-s3/lib/env-helper.d.ts +1 -1
  245. package/dist/file-provider-s3/lib/index.d.ts +3 -3
  246. package/dist/files/index.d.ts +1 -1
  247. package/dist/files-tenant-data/index.d.ts +2 -2
  248. package/dist/folders/feature.d.ts +0 -4
  249. package/dist/folders/feature.js +0 -2
  250. package/dist/folders/index.d.ts +7 -7
  251. package/dist/folders/index.js +1 -1
  252. package/dist/folders/web/folder-manager.d.ts +1 -1
  253. package/dist/folders/web/index.d.ts +5 -5
  254. package/dist/folders-user-data/index.d.ts +0 -4
  255. package/dist/folders-user-data/index.js +0 -2
  256. package/dist/form-draft/db/queries/cleanup.d.ts +1 -1
  257. package/dist/form-draft/feature.d.ts +0 -4
  258. package/dist/form-draft/feature.js +0 -2
  259. package/dist/form-draft/handlers/cleanup.job.d.ts +1 -1
  260. package/dist/form-draft/handlers/get.query.d.ts +1 -1
  261. package/dist/form-draft/index.d.ts +10 -10
  262. package/dist/form-draft/index.js +1 -1
  263. package/dist/form-draft/lookup.d.ts +1 -1
  264. package/dist/form-draft/release-file-refs.d.ts +1 -1
  265. package/dist/form-draft-user-data/index.d.ts +0 -4
  266. package/dist/form-draft-user-data/index.js +0 -2
  267. package/dist/foundation-shared/build-info-env.d.ts +7 -0
  268. package/dist/foundation-shared/build-info-env.js +15 -0
  269. package/dist/foundation-shared/demo-admin-env.d.ts +12 -0
  270. package/dist/foundation-shared/demo-admin-env.js +21 -0
  271. package/dist/foundation-shared/index.d.ts +5 -3
  272. package/dist/foundation-shared/index.js +2 -0
  273. package/dist/host-routing/constants.d.ts +8 -0
  274. package/dist/host-routing/constants.js +19 -0
  275. package/dist/host-routing/dispatch.d.ts +24 -0
  276. package/dist/host-routing/dispatch.js +102 -0
  277. package/dist/host-routing/feature.d.ts +3 -0
  278. package/dist/host-routing/feature.js +102 -0
  279. package/dist/host-routing/host.d.ts +14 -0
  280. package/dist/host-routing/host.js +37 -0
  281. package/dist/host-routing/index.d.ts +5 -0
  282. package/dist/host-routing/index.js +4 -0
  283. package/dist/host-routing/options.d.ts +27 -0
  284. package/dist/host-routing/options.js +1 -0
  285. package/dist/host-routing/validate-options.d.ts +2 -0
  286. package/dist/host-routing/validate-options.js +29 -0
  287. package/dist/inbound-mail-foundation/connect-routes.d.ts +2 -2
  288. package/dist/inbound-mail-foundation/feature.d.ts +0 -4
  289. package/dist/inbound-mail-foundation/feature.js +0 -2
  290. package/dist/inbound-mail-foundation/handlers/account-state.d.ts +1 -1
  291. package/dist/inbound-mail-foundation/index.d.ts +12 -12
  292. package/dist/inbound-mail-foundation/index.js +1 -1
  293. package/dist/inbound-mail-foundation/oauth-access-token.d.ts +1 -1
  294. package/dist/inbound-mail-foundation/provider-factory.d.ts +1 -1
  295. package/dist/inbound-mail-foundation/types.d.ts +1 -1
  296. package/dist/inbound-mail-foundation/watch-supervisor.d.ts +2 -2
  297. package/dist/inbound-provider-imap/feature.d.ts +1 -5
  298. package/dist/inbound-provider-imap/feature.js +0 -2
  299. package/dist/inbound-provider-imap/imap-client.d.ts +1 -1
  300. package/dist/inbound-provider-imap/index.d.ts +3 -3
  301. package/dist/inbound-provider-imap/index.js +1 -1
  302. package/dist/inbound-provider-inmemory/feature.d.ts +0 -4
  303. package/dist/inbound-provider-inmemory/feature.js +0 -2
  304. package/dist/inbound-provider-inmemory/index.d.ts +1 -1
  305. package/dist/inbound-provider-inmemory/index.js +1 -1
  306. package/dist/jobs/handlers/tenant-runs.query.d.ts +1 -1
  307. package/dist/jobs/index.d.ts +9 -9
  308. package/dist/jobs/web/index.d.ts +1 -1
  309. package/dist/ledger/feature.d.ts +0 -4
  310. package/dist/ledger/feature.js +0 -2
  311. package/dist/ledger/index.d.ts +10 -10
  312. package/dist/ledger/index.js +1 -1
  313. package/dist/ledger/recurring.d.ts +2 -2
  314. package/dist/ledger/reports.d.ts +2 -2
  315. package/dist/ledger/web/index.d.ts +3 -3
  316. package/dist/legal-pages/constants.d.ts +12 -0
  317. package/dist/legal-pages/constants.js +16 -0
  318. package/dist/legal-pages/feature.d.ts +6 -3
  319. package/dist/legal-pages/feature.js +5 -2
  320. package/dist/legal-pages/index.d.ts +5 -3
  321. package/dist/legal-pages/index.js +3 -1
  322. package/dist/legal-pages/layout.d.ts +10 -0
  323. package/dist/legal-pages/layout.js +32 -0
  324. package/dist/legal-pages/lib/boot-check.d.ts +1 -1
  325. package/dist/legal-pages/lib/validate-routes.d.ts +1 -1
  326. package/dist/legal-pages/markdown.d.ts +2 -2
  327. package/dist/legal-pages/seed.d.ts +12 -0
  328. package/dist/legal-pages/seed.js +38 -0
  329. package/dist/legal-pages/web/index.d.ts +1 -1
  330. package/dist/mail-foundation/feature.d.ts +0 -7
  331. package/dist/mail-foundation/feature.js +0 -2
  332. package/dist/mail-foundation/index.d.ts +1 -1
  333. package/dist/mail-foundation/index.js +1 -1
  334. package/dist/mail-transport-inmemory/feature.d.ts +0 -4
  335. package/dist/mail-transport-inmemory/feature.js +0 -2
  336. package/dist/mail-transport-inmemory/index.d.ts +1 -1
  337. package/dist/mail-transport-inmemory/index.js +1 -1
  338. package/dist/mail-transport-smtp/feature.d.ts +0 -16
  339. package/dist/mail-transport-smtp/feature.js +0 -2
  340. package/dist/mail-transport-smtp/index.d.ts +1 -1
  341. package/dist/mail-transport-smtp/index.js +1 -1
  342. package/dist/managed-pages/branding.d.ts +1 -1
  343. package/dist/managed-pages/feature.d.ts +1 -1
  344. package/dist/managed-pages/handlers/branding.query.d.ts +1 -1
  345. package/dist/managed-pages/index.d.ts +5 -5
  346. package/dist/managed-pages/web/index.d.ts +2 -2
  347. package/dist/metrics/compute.d.ts +2 -2
  348. package/dist/metrics/default-metrics.d.ts +9 -9
  349. package/dist/metrics/feature.d.ts +1 -1
  350. package/dist/metrics/filters.d.ts +1 -1
  351. package/dist/metrics/index.d.ts +5 -5
  352. package/dist/metrics/types.d.ts +1 -1
  353. package/dist/metrics/validate.d.ts +1 -1
  354. package/dist/metrics/window.d.ts +2 -2
  355. package/dist/notes-history/feature.d.ts +0 -4
  356. package/dist/notes-history/feature.js +0 -2
  357. package/dist/notes-history/handlers/add-note.write.d.ts +1 -1
  358. package/dist/notes-history/index.d.ts +6 -6
  359. package/dist/notes-history/index.js +1 -1
  360. package/dist/notes-history/web/index.d.ts +3 -3
  361. package/dist/notes-history-user-data/index.d.ts +1 -5
  362. package/dist/notes-history-user-data/index.js +0 -2
  363. package/dist/page-render/index.d.ts +7 -7
  364. package/dist/page-render/layout.d.ts +1 -1
  365. package/dist/page-render/web.d.ts +5 -5
  366. package/dist/personal-access-tokens/feature.d.ts +3 -3
  367. package/dist/personal-access-tokens/handlers/available-scopes.query.d.ts +1 -1
  368. package/dist/personal-access-tokens/i18n.d.ts +1 -1
  369. package/dist/personal-access-tokens/index.d.ts +13 -13
  370. package/dist/personal-access-tokens/resolver.d.ts +1 -1
  371. package/dist/personal-access-tokens/screens.d.ts +1 -1
  372. package/dist/presets/dsgvo-self-service.d.ts +3 -1
  373. package/dist/presets/dsgvo-self-service.js +2 -0
  374. package/dist/presets/index.d.ts +2 -2
  375. package/dist/presets/security-baseline.d.ts +2 -0
  376. package/dist/presets/security-baseline.js +2 -0
  377. package/dist/rate-limiting/index.d.ts +2 -2
  378. package/dist/readiness/feature.d.ts +0 -8
  379. package/dist/readiness/feature.js +0 -2
  380. package/dist/readiness/index.d.ts +3 -3
  381. package/dist/readiness/index.js +1 -1
  382. package/dist/renderer-foundation/api.d.ts +2 -2
  383. package/dist/renderer-foundation/constants.d.ts +2 -2
  384. package/dist/renderer-foundation/feature.d.ts +1 -1
  385. package/dist/renderer-foundation/index.d.ts +5 -5
  386. package/dist/renderer-foundation/types.d.ts +24 -2
  387. package/dist/renderer-pdf/feature.d.ts +1 -1
  388. package/dist/renderer-pdf/index.d.ts +2 -2
  389. package/dist/renderer-pdf/render-table-pdf.d.ts +1 -1
  390. package/dist/secrets/constants.d.ts +7 -0
  391. package/dist/secrets/constants.js +7 -0
  392. package/dist/secrets/db/queries/read.d.ts +1 -1
  393. package/dist/secrets/feature.d.ts +4 -3
  394. package/dist/secrets/feature.js +4 -2
  395. package/dist/secrets/handlers/delete.write.js +2 -2
  396. package/dist/secrets/handlers/rotate.job.d.ts +1 -1
  397. package/dist/secrets/handlers/set.write.js +2 -2
  398. package/dist/secrets/index.d.ts +7 -7
  399. package/dist/secrets/index.js +1 -1
  400. package/dist/secrets/secrets-context.d.ts +1 -1
  401. package/dist/seo/feature.d.ts +3 -3
  402. package/dist/seo/index.d.ts +6 -6
  403. package/dist/sessions/feature.d.ts +1 -1
  404. package/dist/sessions/index.d.ts +8 -8
  405. package/dist/sessions/session-callbacks.d.ts +1 -1
  406. package/dist/sessions/testing.d.ts +1 -1
  407. package/dist/shared/index.d.ts +31 -31
  408. package/dist/step-dispatcher/dispatch-payload.d.ts +2 -2
  409. package/dist/step-dispatcher/index.d.ts +3 -3
  410. package/dist/subscription-mollie/feature.d.ts +2 -2
  411. package/dist/subscription-mollie/index.d.ts +3 -3
  412. package/dist/subscription-mollie/verify-webhook.d.ts +1 -1
  413. package/dist/subscription-stripe/feature.d.ts +17 -1
  414. package/dist/subscription-stripe/feature.js +19 -1
  415. package/dist/subscription-stripe/index.d.ts +2 -2
  416. package/dist/subscription-stripe/index.js +1 -1
  417. package/dist/subscription-stripe/plugin-methods.d.ts +1 -1
  418. package/dist/subscription-stripe/verify-webhook.d.ts +1 -1
  419. package/dist/tags/feature.d.ts +0 -4
  420. package/dist/tags/feature.js +0 -2
  421. package/dist/tags/handlers/assign-tag.write.d.ts +1 -1
  422. package/dist/tags/handlers/remove-tag.write.d.ts +1 -1
  423. package/dist/tags/index.d.ts +11 -11
  424. package/dist/tags/index.js +1 -1
  425. package/dist/tags/web/index.d.ts +9 -9
  426. package/dist/template-resolver/api.d.ts +4 -4
  427. package/dist/template-resolver/constants.d.ts +1 -1
  428. package/dist/template-resolver/document-sanitizer.d.ts +1 -1
  429. package/dist/template-resolver/handlers/bundle-import.d.ts +3 -3
  430. package/dist/template-resolver/handlers/collection-shared.d.ts +2 -2
  431. package/dist/template-resolver/handlers/copy-locale.write.d.ts +1 -1
  432. package/dist/template-resolver/handlers/diff-to-system.query.d.ts +1 -1
  433. package/dist/template-resolver/handlers/find-by-id.query.d.ts +1 -1
  434. package/dist/template-resolver/handlers/import-bundle-system.write.d.ts +1 -1
  435. package/dist/template-resolver/handlers/import-bundle.write.d.ts +1 -1
  436. package/dist/template-resolver/handlers/layout-source.query.d.ts +3 -3
  437. package/dist/template-resolver/handlers/override-diff.d.ts +2 -2
  438. package/dist/template-resolver/handlers/overview.query.d.ts +3 -3
  439. package/dist/template-resolver/handlers/preview.query.d.ts +1 -1
  440. package/dist/template-resolver/handlers/resource-link-pdf.write.d.ts +1 -1
  441. package/dist/template-resolver/handlers/resource-upload.write.d.ts +1 -1
  442. package/dist/template-resolver/handlers/send-test.write.d.ts +1 -1
  443. package/dist/template-resolver/handlers/shared.d.ts +1 -1
  444. package/dist/template-resolver/handlers/template-gates.d.ts +4 -4
  445. package/dist/template-resolver/handlers/template-write.d.ts +4 -4
  446. package/dist/template-resolver/handlers/tenant-overrides.query.d.ts +1 -1
  447. package/dist/template-resolver/handlers/toggle-status.write.d.ts +1 -1
  448. package/dist/template-resolver/handlers/upsert-system.write.d.ts +1 -1
  449. package/dist/template-resolver/handlers/upsert-tenant.write.d.ts +1 -1
  450. package/dist/template-resolver/handlers/usage.query.d.ts +1 -1
  451. package/dist/template-resolver/handlers/validate.query.d.ts +3 -3
  452. package/dist/template-resolver/index.d.ts +25 -25
  453. package/dist/template-resolver/layout-appearance.d.ts +1 -1
  454. package/dist/template-resolver/layout-regions.d.ts +2 -2
  455. package/dist/template-resolver/linked-resources.d.ts +1 -1
  456. package/dist/template-resolver/preview-display-html.d.ts +1 -1
  457. package/dist/template-resolver/resource-image.d.ts +1 -1
  458. package/dist/template-resolver/seeding.d.ts +2 -2
  459. package/dist/template-resolver/store-template-resource.d.ts +1 -1
  460. package/dist/template-resolver/template-draft.d.ts +2 -2
  461. package/dist/template-resolver/template-meta.d.ts +2 -2
  462. package/dist/template-resolver/template-preview.d.ts +7 -6
  463. package/dist/template-resolver/template-preview.js +19 -12
  464. package/dist/template-resolver/template-resources.d.ts +1 -1
  465. package/dist/template-resolver/template-usage.d.ts +3 -1
  466. package/dist/template-resolver/template-usage.js +1 -0
  467. package/dist/template-resolver/template-validation.d.ts +1 -1
  468. package/dist/template-resolver/testing.d.ts +1 -1
  469. package/dist/template-resolver/user-content-table.d.ts +1 -1
  470. package/dist/template-resolver/web/document-editor-extensions.d.ts +1 -1
  471. package/dist/template-resolver/web/document-editor-extensions.js +6 -2
  472. package/dist/template-resolver/web/document-editor.d.ts +1 -1
  473. package/dist/template-resolver/web/document-tiptap-editor.d.ts +1 -1
  474. package/dist/template-resolver/web/document-tiptap-editor.js +13 -10
  475. package/dist/template-resolver/web/editor-handle.d.ts +1 -1
  476. package/dist/template-resolver/web/index.d.ts +7 -7
  477. package/dist/template-resolver/web/placeholder-line-editor-lazy.d.ts +2 -2
  478. package/dist/template-resolver/web/placeholder-line-editor.d.ts +1 -1
  479. package/dist/template-resolver-user-data/index.d.ts +0 -4
  480. package/dist/template-resolver-user-data/index.js +0 -2
  481. package/dist/tenant/feature.d.ts +1 -1
  482. package/dist/tenant/index.d.ts +10 -10
  483. package/dist/tenant/is-tenant-serving-public-content.d.ts +1 -1
  484. package/dist/tenant/testing.d.ts +1 -1
  485. package/dist/tenant/web/index.d.ts +3 -3
  486. package/dist/tenant-handover/feature.d.ts +1 -1
  487. package/dist/tenant-handover/index.d.ts +3 -3
  488. package/dist/tenant-handover/signup-handover-provider.d.ts +1 -1
  489. package/dist/tenant-lifecycle/feature.d.ts +2 -2
  490. package/dist/tenant-lifecycle/index.d.ts +3 -3
  491. package/dist/tenant-lifecycle/run-tenant-destroy.d.ts +1 -1
  492. package/dist/tenant-lifecycle/stages.d.ts +1 -1
  493. package/dist/tenant-lifecycle/testing.d.ts +1 -1
  494. package/dist/tenant-settings/feature.d.ts +1 -3
  495. package/dist/tenant-settings/feature.js +0 -2
  496. package/dist/tenant-settings/index.d.ts +4 -4
  497. package/dist/tenant-settings/index.js +1 -1
  498. package/dist/tier-engine/entity.d.ts +1 -1
  499. package/dist/tier-engine/feature.d.ts +2 -4
  500. package/dist/tier-engine/feature.js +0 -2
  501. package/dist/tier-engine/handlers/get-tenant-tier.query.d.ts +1 -1
  502. package/dist/tier-engine/i18n.d.ts +0 -2
  503. package/dist/tier-engine/i18n.js +4 -4
  504. package/dist/tier-engine/index.d.ts +8 -8
  505. package/dist/tier-engine/index.js +1 -1
  506. package/dist/tier-engine/tier-option-gate.d.ts +1 -1
  507. package/dist/tier-engine/tier-resolver.d.ts +1 -1
  508. package/dist/tier-engine/web/client-plugin.js +3 -2
  509. package/dist/tier-engine/web/index.d.ts +1 -1
  510. package/dist/user/index.d.ts +8 -8
  511. package/dist/user/invited-global-roles.d.ts +1 -1
  512. package/dist/user/principal-status.d.ts +1 -1
  513. package/dist/user/seeding.d.ts +1 -1
  514. package/dist/user/testing.d.ts +1 -1
  515. package/dist/user-data-rights/deletion-token.d.ts +1 -1
  516. package/dist/user-data-rights/feature.d.ts +5 -5
  517. package/dist/user-data-rights/handlers/request-deletion.write.d.ts +1 -1
  518. package/dist/user-data-rights/handlers/run-forget-cleanup.write.d.ts +3 -3
  519. package/dist/user-data-rights/index.d.ts +13 -13
  520. package/dist/user-data-rights/lib/default-mailers.d.ts +4 -4
  521. package/dist/user-data-rights/web/client-plugin.d.ts +1 -1
  522. package/dist/user-data-rights/web/index.d.ts +8 -8
  523. package/dist/user-data-rights-defaults/index.d.ts +11 -11
  524. package/dist/user-profile/index.d.ts +2 -2
  525. package/dist/user-profile/web/index.d.ts +2 -2
  526. package/dist/waitlist/constants.d.ts +9 -0
  527. package/dist/waitlist/constants.js +11 -0
  528. package/dist/waitlist/entity.d.ts +38 -6
  529. package/dist/waitlist/entity.js +4 -2
  530. package/dist/waitlist/entries-admin.d.ts +4 -0
  531. package/dist/waitlist/entries-admin.js +42 -0
  532. package/dist/waitlist/feature.d.ts +1 -1
  533. package/dist/waitlist/feature.js +16 -1
  534. package/dist/waitlist/handlers/export-purge.write.d.ts +12 -0
  535. package/dist/waitlist/handlers/export-purge.write.js +61 -0
  536. package/dist/waitlist/handlers/invite.write.d.ts +1 -1
  537. package/dist/waitlist/handlers/submit.write.d.ts +1 -1
  538. package/dist/waitlist/i18n.js +4 -0
  539. package/dist/waitlist/import.d.ts +24 -0
  540. package/dist/waitlist/import.js +51 -0
  541. package/dist/waitlist/index.d.ts +7 -5
  542. package/dist/waitlist/index.js +2 -0
  543. package/dist/waitlist/legacy-migrate.d.ts +27 -0
  544. package/dist/waitlist/legacy-migrate.js +173 -0
  545. package/dist/waitlist/lib.d.ts +2 -2
  546. package/dist/waitlist/link-on-signup.d.ts +3 -0
  547. package/dist/waitlist/link-on-signup.js +83 -0
  548. package/dist/waitlist/options.d.ts +11 -3
  549. package/dist/waitlist/payloads.d.ts +3 -0
  550. package/dist/waitlist/payloads.js +1 -0
  551. package/dist/workflow-runner/feature.d.ts +0 -4
  552. package/dist/workflow-runner/feature.js +0 -2
  553. package/dist/workflow-runner/index.d.ts +4 -4
  554. package/dist/workflow-runner/index.js +1 -1
  555. package/package.json +43 -27
  556. package/src/account-security/changes.json +8 -0
  557. package/src/auth-email-password/changes.json +6 -0
  558. package/src/auth-foundation/changes.json +8 -0
  559. package/src/auth-mfa/changes.json +6 -0
  560. package/src/auth-mfa-user-data/changes.json +10 -1
  561. package/src/billing-foundation/changes.json +8 -0
  562. package/src/cap-counter/changes.json +8 -0
  563. package/src/channel-email/changes.json +6 -0
  564. package/src/compliance-profiles-ops/changes.json +10 -0
  565. package/src/crypto-shredding/changes.json +6 -0
  566. package/src/custom-fields/changes.json +8 -0
  567. package/src/delivery/changes.json +6 -0
  568. package/src/derivatives-sharp/changes.json +8 -0
  569. package/src/document-ingest-foundation/changes.json +8 -0
  570. package/src/file-derivatives/changes.json +8 -0
  571. package/src/file-foundation/changes.json +8 -0
  572. package/src/file-provider-inmemory/changes.json +10 -1
  573. package/src/file-provider-s3/changes.json +22 -0
  574. package/src/folders/changes.json +8 -0
  575. package/src/folders-user-data/changes.json +10 -1
  576. package/src/form-draft/changes.json +8 -0
  577. package/src/form-draft-user-data/changes.json +10 -1
  578. package/src/foundation-shared/changes.json +8 -1
  579. package/src/host-routing/changes.json +8 -0
  580. package/src/inbound-mail-foundation/changes.json +8 -0
  581. package/src/inbound-provider-imap/changes.json +8 -0
  582. package/src/inbound-provider-inmemory/changes.json +10 -1
  583. package/src/ledger/changes.json +8 -0
  584. package/src/legal-pages/changes.json +6 -0
  585. package/src/mail-foundation/changes.json +10 -1
  586. package/src/mail-transport-inmemory/changes.json +10 -1
  587. package/src/mail-transport-smtp/changes.json +8 -0
  588. package/src/notes-history/changes.json +8 -0
  589. package/src/notes-history-user-data/changes.json +8 -0
  590. package/src/presets/changes.json +6 -0
  591. package/src/readiness/changes.json +10 -1
  592. package/src/secrets/changes.json +12 -0
  593. package/src/subscription-stripe/changes.json +6 -0
  594. package/src/tags/changes.json +8 -0
  595. package/src/template-resolver/changes.json +6 -0
  596. package/src/template-resolver-user-data/changes.json +10 -0
  597. package/src/tenant-settings/changes.json +10 -1
  598. package/src/tier-engine/changes.json +8 -0
  599. package/src/waitlist/changes.json +7 -0
  600. package/src/workflow-runner/changes.json +8 -0
  601. package/dist/file-provider-s3-env/index.d.ts +0 -8
  602. package/dist/file-provider-s3-env/index.js +0 -7
  603. package/dist/files-provider-s3/index.d.ts +0 -5
  604. package/dist/files-provider-s3/index.js +0 -5
  605. package/src/file-provider-s3-env/changes.json +0 -1
  606. package/src/files-provider-s3/changes.json +0 -1
@@ -10,7 +10,7 @@ export { tierAssignmentAggregateId } from "./aggregate-id.js";
10
10
  export { composeApp, } from "./compose-app.js";
11
11
  export { isTierAssignmentSource, TIER_ENGINE_FEATURE, TierAssignmentSources, TierEngineHandlers, TierEngineQueries, } from "./constants.js";
12
12
  export { tierAssignmentEntity } from "./entity.js";
13
- export { createTierEngineFeature, tierEngineFeature, } from "./feature.js";
13
+ export { createTierEngineFeature, } from "./feature.js";
14
14
  export { createTierOptionGate, } from "./tier-option-gate.js";
15
15
  export { createTierResolver, } from "./tier-resolver.js";
16
16
  export { isTrialActive } from "./trial.js";
@@ -1,7 +1,7 @@
1
1
  import type { EntityTableMeta, SchemaTable, TenantDb } from "@cosmicdrift/kumiko-framework/db";
2
2
  import type { WriteHandlerDef } from "@cosmicdrift/kumiko-framework/engine";
3
3
  import { type WriteFailure } from "@cosmicdrift/kumiko-framework/errors";
4
- import { type CapGuardContext, type CapLimitContext } from "../cap-counter/index.js";
4
+ import { type CapGuardContext, type CapLimitContext } from "../cap-counter/index.ts";
5
5
  export type TierOptionSpec<TCaps> = {
6
6
  readonly field: string;
7
7
  readonly options: readonly string[];
@@ -1,5 +1,5 @@
1
1
  import { type TenantDb } from "@cosmicdrift/kumiko-framework/db";
2
- import type { CapLimitContext } from "../cap-counter/index.js";
2
+ import type { CapLimitContext } from "../cap-counter/index.ts";
3
3
  export type TierResolverDeps<TTier extends string, TCaps> = {
4
4
  readonly capsForTier: (tier: TTier, context: CapLimitContext) => TCaps | Promise<TCaps>;
5
5
  readonly isTierName: (value: string) => value is TTier;
@@ -2,9 +2,10 @@
2
2
  // Client-feature factory for tier-engine. Supplies the default translations
3
3
  // for the declarative tier-admin actionForm (registered server-side via
4
4
  // r.screen in the feature); the app places the screen only via r.nav.
5
- import { mergeTranslations } from "@cosmicdrift/kumiko-renderer";
5
+ import { mergeTranslations, translationsByLocaleFromKeys, } from "@cosmicdrift/kumiko-renderer";
6
6
  import { TIER_ENGINE_FEATURE } from "../constants.js";
7
- import { defaultTranslations } from "../i18n.js";
7
+ import { TIER_ENGINE_I18N } from "../i18n.js";
8
+ const defaultTranslations = translationsByLocaleFromKeys(TIER_ENGINE_I18N);
8
9
  export function tierEngineClient(options) {
9
10
  return {
10
11
  name: TIER_ENGINE_FEATURE,
@@ -1 +1 @@
1
- export { type TierEngineClientOptions, tierEngineClient } from "./client-plugin.js";
1
+ export { type TierEngineClientOptions, tierEngineClient } from "./client-plugin.tsx";
@@ -1,8 +1,8 @@
1
- export { UserCommandSchemas } from "./command-schemas.js";
2
- export { USER_FEATURE, UserErrors, UserHandlers, UserQueries } from "./constants.js";
3
- export { backfillUserStreamTenants, type UserStreamBackfillResult, } from "./db/queries/stream-tenant-backfill.js";
4
- export { createUserFeature } from "./feature.js";
5
- export { isPrincipalBlocked, isPrincipalRowBlocked, principalStatusPlugin, } from "./principal-status.js";
6
- export { resolveUserDisplayNames } from "./resolve-display-names.js";
7
- export type { UserStatus } from "./schema/user.js";
8
- export { USER_ANONYMIZED_DISPLAY_NAME, USER_ANONYMIZED_EMAIL_DOMAIN, USER_ANONYMIZED_EMAIL_PREFIX, USER_DELETED_DISPLAY_NAME, USER_DELETED_EMAIL_PREFIX, USER_STATUS, userEntity, userTable, } from "./schema/user.js";
1
+ export { UserCommandSchemas } from "./command-schemas.ts";
2
+ export { USER_FEATURE, UserErrors, UserHandlers, UserQueries } from "./constants.ts";
3
+ export { backfillUserStreamTenants, type UserStreamBackfillResult, } from "./db/queries/stream-tenant-backfill.ts";
4
+ export { createUserFeature } from "./feature.ts";
5
+ export { isPrincipalBlocked, isPrincipalRowBlocked, principalStatusPlugin, } from "./principal-status.ts";
6
+ export { resolveUserDisplayNames } from "./resolve-display-names.ts";
7
+ export type { UserStatus } from "./schema/user.ts";
8
+ export { USER_ANONYMIZED_DISPLAY_NAME, USER_ANONYMIZED_EMAIL_DOMAIN, USER_ANONYMIZED_EMAIL_PREFIX, USER_DELETED_DISPLAY_NAME, USER_DELETED_EMAIL_PREFIX, USER_STATUS, userEntity, userTable, } from "./schema/user.ts";
@@ -1,5 +1,5 @@
1
1
  import { type DbRunner } from "@cosmicdrift/kumiko-framework/db";
2
- import { type GlobalRole } from "./constants.js";
2
+ import { type GlobalRole } from "./constants.ts";
3
3
  export declare function parseInvitedGlobalRoles(raw: unknown): readonly GlobalRole[];
4
4
  export declare function grantInvitedGlobalRoles(db: DbRunner, options: {
5
5
  readonly userId: string;
@@ -1,5 +1,5 @@
1
1
  import type { PrincipalStatusPlugin } from "@cosmicdrift/kumiko-framework/engine";
2
- import { type UserStatus } from "./schema/user.js";
2
+ import { type UserStatus } from "./schema/user.ts";
3
3
  export declare function isPrincipalBlocked(status: UserStatus): boolean;
4
4
  export declare function isPrincipalRowBlocked(row: {
5
5
  readonly status: UserStatus;
@@ -1,6 +1,6 @@
1
1
  import { type DbConnection } from "@cosmicdrift/kumiko-framework/db";
2
2
  import type { SessionUser } from "@cosmicdrift/kumiko-framework/engine";
3
- import { type SeedTenantHooks } from "../tenant/seeding.js";
3
+ import { type SeedTenantHooks } from "../tenant/seeding.ts";
4
4
  export type SeedUserOptions = {
5
5
  readonly email: string;
6
6
  readonly displayName: string;
@@ -1 +1 @@
1
- export * from "./seeding.js";
1
+ export * from "./seeding.ts";
@@ -1,5 +1,5 @@
1
1
  import type { Temporal } from "@cosmicdrift/kumiko-types/temporal";
2
- import { type RowBoundGrantResult } from "../shared/index.js";
2
+ import { type RowBoundGrantResult } from "../shared/index.ts";
3
3
  export declare function signDeletionToken(userId: string, requestId: string, ttlMinutes: number, secret: string, now?: Temporal.Instant): {
4
4
  readonly token: string;
5
5
  readonly expiresAt: Temporal.Instant;
@@ -1,9 +1,9 @@
1
1
  import { type FeatureDefinition } from "@cosmicdrift/kumiko-framework/engine";
2
- import { type SendDeletionRequestedEmailFn } from "./handlers/request-deletion.write.js";
3
- import { type SendDeletionVerificationEmailFn } from "./handlers/request-deletion-by-email.write.js";
4
- import { type GdprMailDefaults } from "./lib/default-mailers.js";
5
- import { type SendExportFailedEmailFn, type SendExportReadyEmailFn } from "./run-export-jobs.js";
6
- import { type SendDeletionExecutedEmailFn } from "./run-forget-cleanup.js";
2
+ import { type SendDeletionRequestedEmailFn } from "./handlers/request-deletion.write.ts";
3
+ import { type SendDeletionVerificationEmailFn } from "./handlers/request-deletion-by-email.write.ts";
4
+ import { type GdprMailDefaults } from "./lib/default-mailers.ts";
5
+ import { type SendExportFailedEmailFn, type SendExportReadyEmailFn } from "./run-export-jobs.ts";
6
+ import { type SendDeletionExecutedEmailFn } from "./run-forget-cleanup.ts";
7
7
  /**
8
8
  * Options fuer createUserDataRightsFeature. Notification-Callbacks
9
9
  * (Atom 5) folgen dem password-reset-Pattern aus auth-routes.ts.
@@ -1,5 +1,5 @@
1
1
  import * as z from "zod";
2
- import { type GdprMailDefaults } from "../lib/default-mailers.js";
2
+ import { type GdprMailDefaults } from "../lib/default-mailers.ts";
3
3
  export type SendDeletionRequestedEmailFn = (args: {
4
4
  readonly userId: string;
5
5
  readonly userEmail: string;
@@ -1,5 +1,5 @@
1
1
  import * as z from "zod";
2
- import { type SendDeletionExecutedEmailFn } from "../run-forget-cleanup.js";
2
+ import { type SendDeletionExecutedEmailFn } from "../run-forget-cleanup.ts";
3
3
  export type RunForgetCleanupOptions = {
4
4
  readonly sendDeletionExecutedEmail?: SendDeletionExecutedEmailFn;
5
5
  };
@@ -7,7 +7,7 @@ export declare function createRunForgetCleanupHandler(opts?: RunForgetCleanupOpt
7
7
  processedUserIds: readonly string[];
8
8
  hookCallsAttempted: number;
9
9
  errorCount: number;
10
- errors: readonly import("../run-forget-cleanup.js").ForgetCleanupError[];
10
+ errors: readonly import("../run-forget-cleanup.ts").ForgetCleanupError[];
11
11
  incompleteCount: number;
12
- incomplete: readonly import("../run-forget-cleanup.js").ForgetCleanupIncomplete[];
12
+ incomplete: readonly import("../run-forget-cleanup.ts").ForgetCleanupIncomplete[];
13
13
  }, import("@cosmicdrift/kumiko-types/event-type-map").KumikoEventTypeMap, undefined>;
@@ -1,13 +1,13 @@
1
- export { TENANT_MODEL_CONFIG_KEY } from "./constants.js";
2
- export { createUserDataRightsFeature, type UserDataRightsOptions } from "./feature.js";
3
- export type { SendDeletionVerificationEmailFn } from "./handlers/request-deletion-by-email.write.js";
4
- export { denyIfTargetOutsideAdminTenant, TARGET_USER_NOT_IN_ADMIN_TENANT, } from "./lib/deny-if-target-outside-admin-tenant.js";
5
- export { isSystemAdminActor } from "./lib/is-admin-actor.js";
6
- export { backfillUserLifecycleEvents, updateUserLifecycle } from "./lib/update-user-lifecycle.js";
7
- export type { SendExportFailedEmailFn, SendExportReadyEmailFn, } from "./run-export-jobs.js";
8
- export type { SendDeletionExecutedEmailFn } from "./run-forget-cleanup.js";
9
- export { policyToStrategy, runForgetCleanup } from "./run-forget-cleanup.js";
10
- export type { UserExportBundle } from "./run-user-export.js";
11
- export { runUserExport } from "./run-user-export.js";
12
- export { downloadAttemptEntity, downloadAttemptsTable } from "./schema/download-attempt.js";
13
- export { ACTIVE_JOB_CONSTRAINT, EXPORT_JOB_STATUS, type ExportJobStatus, exportJobEntity, exportJobsTable, } from "./schema/export-job.js";
1
+ export { TENANT_MODEL_CONFIG_KEY } from "./constants.ts";
2
+ export { createUserDataRightsFeature, type UserDataRightsOptions } from "./feature.ts";
3
+ export type { SendDeletionVerificationEmailFn } from "./handlers/request-deletion-by-email.write.ts";
4
+ export { denyIfTargetOutsideAdminTenant, TARGET_USER_NOT_IN_ADMIN_TENANT, } from "./lib/deny-if-target-outside-admin-tenant.ts";
5
+ export { isSystemAdminActor } from "./lib/is-admin-actor.ts";
6
+ export { backfillUserLifecycleEvents, updateUserLifecycle } from "./lib/update-user-lifecycle.ts";
7
+ export type { SendExportFailedEmailFn, SendExportReadyEmailFn, } from "./run-export-jobs.ts";
8
+ export type { SendDeletionExecutedEmailFn } from "./run-forget-cleanup.ts";
9
+ export { policyToStrategy, runForgetCleanup } from "./run-forget-cleanup.ts";
10
+ export type { UserExportBundle } from "./run-user-export.ts";
11
+ export { runUserExport } from "./run-user-export.ts";
12
+ export { downloadAttemptEntity, downloadAttemptsTable } from "./schema/download-attempt.ts";
13
+ export { ACTIVE_JOB_CONSTRAINT, EXPORT_JOB_STATUS, type ExportJobStatus, exportJobEntity, exportJobsTable, } from "./schema/export-job.ts";
@@ -2,10 +2,10 @@ import type { EmailTransport } from "@cosmicdrift/kumiko-bundled-features/channe
2
2
  import type { DbConnection } from "@cosmicdrift/kumiko-framework/db";
3
3
  import type { ConfigAccessor, NotifyFn, Registry, TenantId } from "@cosmicdrift/kumiko-framework/engine";
4
4
  import type { SecretsContext } from "@cosmicdrift/kumiko-framework/secrets";
5
- import { type GdprMailLocale } from "../email-templates.js";
6
- import type { SendDeletionRequestedEmailFn } from "../handlers/request-deletion.write.js";
7
- import type { SendExportFailedEmailFn, SendExportReadyEmailFn } from "../run-export-jobs.js";
8
- import type { SendDeletionExecutedEmailFn } from "../run-forget-cleanup.js";
5
+ import { type GdprMailLocale } from "../email-templates.ts";
6
+ import type { SendDeletionRequestedEmailFn } from "../handlers/request-deletion.write.ts";
7
+ import type { SendExportFailedEmailFn, SendExportReadyEmailFn } from "../run-export-jobs.ts";
8
+ import type { SendDeletionExecutedEmailFn } from "../run-forget-cleanup.ts";
9
9
  export type GdprMailDefaults = {
10
10
  readonly locale?: GdprMailLocale;
11
11
  readonly appName?: string;
@@ -1,6 +1,6 @@
1
1
  import { type TranslationsByLocale } from "@cosmicdrift/kumiko-renderer";
2
2
  import type { ClientFeatureDefinition } from "@cosmicdrift/kumiko-renderer-web";
3
- import { type PublicDeletionRoutes } from "./public-deletion-gate.js";
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). */
6
6
  readonly translations?: TranslationsByLocale;
@@ -1,8 +1,8 @@
1
- export { type UserDataRightsClientOptions, userDataRightsClient } from "./client-plugin.js";
2
- export type { ConfirmAccountDeletionScreenProps } from "./confirm-deletion-screen.js";
3
- export { ConfirmAccountDeletionScreen } from "./confirm-deletion-screen.js";
4
- export { defaultTranslations } from "./i18n.js";
5
- export { formatDate } from "./privacy-center-screen.js";
6
- export { makePublicDeletionGate, type PublicDeletionRoutes } from "./public-deletion-gate.js";
7
- export type { RequestAccountDeletionScreenProps } from "./request-deletion-screen.js";
8
- export { RequestAccountDeletionScreen } from "./request-deletion-screen.js";
1
+ export { type UserDataRightsClientOptions, userDataRightsClient } from "./client-plugin.tsx";
2
+ export type { ConfirmAccountDeletionScreenProps } from "./confirm-deletion-screen.tsx";
3
+ export { ConfirmAccountDeletionScreen } from "./confirm-deletion-screen.tsx";
4
+ export { defaultTranslations } from "./i18n.ts";
5
+ export { formatDate } from "./privacy-center-screen.tsx";
6
+ export { makePublicDeletionGate, type PublicDeletionRoutes } from "./public-deletion-gate.tsx";
7
+ export type { RequestAccountDeletionScreenProps } from "./request-deletion-screen.tsx";
8
+ export { RequestAccountDeletionScreen } from "./request-deletion-screen.tsx";
@@ -1,11 +1,11 @@
1
- export { createUserDataRightsDefaultsFeature } from "./feature.js";
2
- export { apiTokenDeleteHook, apiTokenExportHook } from "./hooks/api-token.userdata-hook.js";
3
- export { configValueDeleteHook, configValueExportHook, } from "./hooks/config-value.userdata-hook.js";
4
- export { deliveryAttemptDeleteHook, deliveryAttemptExportHook, } from "./hooks/delivery-attempt.userdata-hook.js";
5
- export { fileRefDeleteHook, fileRefExportHook, } from "./hooks/file-ref.userdata-hook.js";
6
- export { inAppMessageDeleteHook, inAppMessageExportHook, } from "./hooks/in-app-message.userdata-hook.js";
7
- export { jobRunDeleteHook, jobRunExportHook } from "./hooks/job-run.userdata-hook.js";
8
- export { notificationPreferenceDeleteHook, notificationPreferenceExportHook, } from "./hooks/notification-preference.userdata-hook.js";
9
- export { tenantInvitationDeleteHook, tenantInvitationExportHook, } from "./hooks/tenant-invitation.userdata-hook.js";
10
- export { userDeleteHook, userExportHook } from "./hooks/user.userdata-hook.js";
11
- export { userSessionDeleteHook, userSessionExportHook, } from "./hooks/user-session.userdata-hook.js";
1
+ export { createUserDataRightsDefaultsFeature } from "./feature.ts";
2
+ export { apiTokenDeleteHook, apiTokenExportHook } from "./hooks/api-token.userdata-hook.ts";
3
+ export { configValueDeleteHook, configValueExportHook, } from "./hooks/config-value.userdata-hook.ts";
4
+ export { deliveryAttemptDeleteHook, deliveryAttemptExportHook, } from "./hooks/delivery-attempt.userdata-hook.ts";
5
+ export { fileRefDeleteHook, fileRefExportHook, } from "./hooks/file-ref.userdata-hook.ts";
6
+ export { inAppMessageDeleteHook, inAppMessageExportHook, } from "./hooks/in-app-message.userdata-hook.ts";
7
+ export { jobRunDeleteHook, jobRunExportHook } from "./hooks/job-run.userdata-hook.ts";
8
+ export { notificationPreferenceDeleteHook, notificationPreferenceExportHook, } from "./hooks/notification-preference.userdata-hook.ts";
9
+ export { tenantInvitationDeleteHook, tenantInvitationExportHook, } from "./hooks/tenant-invitation.userdata-hook.ts";
10
+ export { userDeleteHook, userExportHook } from "./hooks/user.userdata-hook.ts";
11
+ export { userSessionDeleteHook, userSessionExportHook, } from "./hooks/user-session.userdata-hook.ts";
@@ -1,2 +1,2 @@
1
- export { USER_PROFILE_FEATURE, UserDataRightsHandlers, UserProfileErrors, UserProfileHandlers, UserProfileQueries, } from "./constants.js";
2
- export { createUserProfileFeature, type UserProfileFeatureOptions } from "./feature.js";
1
+ export { USER_PROFILE_FEATURE, UserDataRightsHandlers, UserProfileErrors, UserProfileHandlers, UserProfileQueries, } from "./constants.ts";
2
+ export { createUserProfileFeature, type UserProfileFeatureOptions } from "./feature.ts";
@@ -1,2 +1,2 @@
1
- export { type UserProfileClientFeature, type UserProfileClientOptions, userProfileClient, } from "./client-plugin.js";
2
- export { ChangeEmailSection, ChangePasswordSection } from "./profile-screen.js";
1
+ export { type UserProfileClientFeature, type UserProfileClientOptions, userProfileClient, } from "./client-plugin.ts";
2
+ export { ChangeEmailSection, ChangePasswordSection } from "./profile-screen.tsx";
@@ -2,6 +2,7 @@ export declare const WAITLIST_FEATURE: "waitlist";
2
2
  export declare const WAITLIST_STATUS: {
3
3
  readonly Pending: "pending";
4
4
  readonly Invited: "invited";
5
+ readonly Provisioned: "provisioned";
5
6
  readonly Rejected: "rejected";
6
7
  };
7
8
  export type WaitlistStatus = (typeof WAITLIST_STATUS)[keyof typeof WAITLIST_STATUS];
@@ -9,6 +10,8 @@ export declare const WaitlistHandlers: {
9
10
  readonly submit: "waitlist:write:submit";
10
11
  readonly invite: "waitlist:write:invite";
11
12
  readonly reject: "waitlist:write:reject";
13
+ readonly export: "waitlist:write:export";
14
+ readonly purge: "waitlist:write:purge";
12
15
  };
13
16
  export declare const WaitlistQueries: {
14
17
  readonly list: "waitlist:query:waitlist-entry:list";
@@ -16,6 +19,7 @@ export declare const WaitlistQueries: {
16
19
  export declare const WaitlistErrors: {
17
20
  readonly notInvitable: "waitlist_not_invitable";
18
21
  readonly notRejectable: "waitlist_not_rejectable";
22
+ readonly confirmCountMismatch: "waitlist_confirm_count_mismatch";
19
23
  };
20
24
  export declare const WAITLIST_NOTIFICATION_TYPES: {
21
25
  readonly confirmation: "waitlist:notify:confirmation";
@@ -31,3 +35,8 @@ export declare const WAITLIST_FIELD_LIMITS: {
31
35
  readonly locale: 35;
32
36
  readonly honeypot: 500;
33
37
  };
38
+ export declare const WAITLIST_EXPORTED_EVENT_SHORT: "exported";
39
+ export declare const WAITLIST_PURGED_EVENT_SHORT: "purged";
40
+ export declare const WAITLIST_EXPORTED_EVENT_QN: "waitlist:event:exported";
41
+ export declare const WAITLIST_PURGED_EVENT_QN: "waitlist:event:purged";
42
+ export declare const WAITLIST_AUDIT_AGGREGATE_TYPE: "waitlist-audit";
@@ -4,12 +4,15 @@ export const WAITLIST_FEATURE = "waitlist";
4
4
  export const WAITLIST_STATUS = {
5
5
  Pending: "pending",
6
6
  Invited: "invited",
7
+ Provisioned: "provisioned",
7
8
  Rejected: "rejected",
8
9
  };
9
10
  export const WaitlistHandlers = {
10
11
  submit: "waitlist:write:submit",
11
12
  invite: "waitlist:write:invite",
12
13
  reject: "waitlist:write:reject",
14
+ export: "waitlist:write:export",
15
+ purge: "waitlist:write:purge",
13
16
  };
14
17
  // Entity-convention list QN: entityList screens resolve their query by this shape.
15
18
  export const WaitlistQueries = {
@@ -18,6 +21,7 @@ export const WaitlistQueries = {
18
21
  export const WaitlistErrors = {
19
22
  notInvitable: "waitlist_not_invitable",
20
23
  notRejectable: "waitlist_not_rejectable",
24
+ confirmCountMismatch: "waitlist_confirm_count_mismatch",
21
25
  };
22
26
  export const WAITLIST_NOTIFICATION_TYPES = {
23
27
  confirmation: "waitlist:notify:confirmation",
@@ -33,3 +37,10 @@ export const WAITLIST_FIELD_LIMITS = {
33
37
  locale: 35,
34
38
  honeypot: 500,
35
39
  };
40
+ // Audit trail for the export/purge handlers: own aggregate per occurrence, payload
41
+ // carries counts only (never addresses).
42
+ export const WAITLIST_EXPORTED_EVENT_SHORT = "exported";
43
+ export const WAITLIST_PURGED_EVENT_SHORT = "purged";
44
+ export const WAITLIST_EXPORTED_EVENT_QN = "waitlist:event:exported";
45
+ export const WAITLIST_PURGED_EVENT_QN = "waitlist:event:purged";
46
+ export const WAITLIST_AUDIT_AGGREGATE_TYPE = "waitlist-audit";
@@ -134,23 +134,24 @@ export declare const waitlistEntryEntity: import("@cosmicdrift/kumiko-types/fiel
134
134
  status: {
135
135
  readonly type: "select";
136
136
  readonly description?: string;
137
- readonly options: readonly ["pending", "invited", "rejected"];
137
+ readonly options: readonly ["pending", "invited", "provisioned", "rejected"];
138
138
  readonly required?: boolean;
139
139
  readonly sortable?: boolean;
140
140
  readonly filterable?: boolean;
141
141
  readonly sensitive?: boolean;
142
- readonly default?: "invited" | "pending" | "rejected" | undefined;
142
+ readonly default?: "invited" | "pending" | "provisioned" | "rejected" | undefined;
143
143
  readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
144
144
  readonly display?: "radio" | "dropdown";
145
145
  readonly optionTones?: {
146
146
  readonly invited?: "bad" | "neutral" | "ok" | "warn" | undefined;
147
147
  readonly pending?: "bad" | "neutral" | "ok" | "warn" | undefined;
148
+ readonly provisioned?: "bad" | "neutral" | "ok" | "warn" | undefined;
148
149
  readonly rejected?: "bad" | "neutral" | "ok" | "warn" | undefined;
149
150
  } | undefined;
150
151
  readonly optionsQuery?: string;
151
152
  readonly optionsQueryPayload?: import("@cosmicdrift/kumiko-types/fields").OptionsQueryPayload;
152
153
  readonly optionsAvailabilityQuery?: string;
153
- readonly conditionalOptions?: readonly import("@cosmicdrift/kumiko-types/fields").SelectConditionalOptions<"invited" | "pending" | "rejected">[] | undefined;
154
+ readonly conditionalOptions?: readonly import("@cosmicdrift/kumiko-types/fields").SelectConditionalOptions<"invited" | "pending" | "provisioned" | "rejected">[] | undefined;
154
155
  } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
155
156
  required: true;
156
157
  };
@@ -207,6 +208,21 @@ export declare const waitlistEntryEntity: import("@cosmicdrift/kumiko-types/fiel
207
208
  } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
208
209
  required: false;
209
210
  };
211
+ provisionedAt: {
212
+ readonly type: "timestamp";
213
+ readonly description?: string;
214
+ readonly required?: boolean;
215
+ readonly sortable?: boolean;
216
+ readonly filterable?: boolean;
217
+ readonly sensitive?: boolean;
218
+ readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
219
+ readonly locatedBy?: string;
220
+ readonly min?: string;
221
+ readonly max?: string;
222
+ readonly locale?: string;
223
+ } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
224
+ required: false;
225
+ };
210
226
  linkedTenantId: {
211
227
  readonly type: "text";
212
228
  readonly description?: string;
@@ -366,23 +382,24 @@ export declare const waitlistEntryTable: import("@cosmicdrift/kumiko-framework/d
366
382
  status: {
367
383
  readonly type: "select";
368
384
  readonly description?: string;
369
- readonly options: readonly ["pending", "invited", "rejected"];
385
+ readonly options: readonly ["pending", "invited", "provisioned", "rejected"];
370
386
  readonly required?: boolean;
371
387
  readonly sortable?: boolean;
372
388
  readonly filterable?: boolean;
373
389
  readonly sensitive?: boolean;
374
- readonly default?: "invited" | "pending" | "rejected" | undefined;
390
+ readonly default?: "invited" | "pending" | "provisioned" | "rejected" | undefined;
375
391
  readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
376
392
  readonly display?: "radio" | "dropdown";
377
393
  readonly optionTones?: {
378
394
  readonly invited?: "bad" | "neutral" | "ok" | "warn" | undefined;
379
395
  readonly pending?: "bad" | "neutral" | "ok" | "warn" | undefined;
396
+ readonly provisioned?: "bad" | "neutral" | "ok" | "warn" | undefined;
380
397
  readonly rejected?: "bad" | "neutral" | "ok" | "warn" | undefined;
381
398
  } | undefined;
382
399
  readonly optionsQuery?: string;
383
400
  readonly optionsQueryPayload?: import("@cosmicdrift/kumiko-types/fields").OptionsQueryPayload;
384
401
  readonly optionsAvailabilityQuery?: string;
385
- readonly conditionalOptions?: readonly import("@cosmicdrift/kumiko-types/fields").SelectConditionalOptions<"invited" | "pending" | "rejected">[] | undefined;
402
+ readonly conditionalOptions?: readonly import("@cosmicdrift/kumiko-types/fields").SelectConditionalOptions<"invited" | "pending" | "provisioned" | "rejected">[] | undefined;
386
403
  } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
387
404
  required: true;
388
405
  };
@@ -439,6 +456,21 @@ export declare const waitlistEntryTable: import("@cosmicdrift/kumiko-framework/d
439
456
  } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
440
457
  required: false;
441
458
  };
459
+ provisionedAt: {
460
+ readonly type: "timestamp";
461
+ readonly description?: string;
462
+ readonly required?: boolean;
463
+ readonly sortable?: boolean;
464
+ readonly filterable?: boolean;
465
+ readonly sensitive?: boolean;
466
+ readonly access?: import("@cosmicdrift/kumiko-types/fields").FieldAccess;
467
+ readonly locatedBy?: string;
468
+ readonly min?: string;
469
+ readonly max?: string;
470
+ readonly locale?: string;
471
+ } & import("@cosmicdrift/kumiko-types/fields").ResolvedPiiFlags & {
472
+ required: false;
473
+ };
442
474
  linkedTenantId: {
443
475
  readonly type: "text";
444
476
  readonly description?: string;
@@ -4,13 +4,14 @@ import { WAITLIST_STATUS } from "./constants.js";
4
4
  const WAITLIST_STATUS_OPTIONS = [
5
5
  WAITLIST_STATUS.Pending,
6
6
  WAITLIST_STATUS.Invited,
7
+ WAITLIST_STATUS.Provisioned,
7
8
  WAITLIST_STATUS.Rejected,
8
9
  ];
9
10
  const OPEN_WAITLIST_STATUSES = [
10
11
  WAITLIST_STATUS.Pending,
11
12
  WAITLIST_STATUS.Invited,
12
13
  ];
13
- // Entries still awaiting a decision; rejected is terminal.
14
+ // Entries still awaiting a decision; provisioned and rejected are terminal.
14
15
  export function isOpenWaitlistStatus(status) {
15
16
  return OPEN_WAITLIST_STATUSES.some((open) => open === status);
16
17
  }
@@ -22,7 +23,7 @@ export function isOpenWaitlistStatus(status) {
22
23
  // SYSTEM_TENANT_ID, which also lets the per-tenant GDPR hooks read them.
23
24
  export const waitlistEntryEntity = createEntity({
24
25
  table: "read_waitlist_entries",
25
- description: "A prospect's signup on the platform waitlist, tracked through pending, invited and rejected status as admins process it; name, email and message are the entry's own personal data.",
26
+ description: "A prospect's signup on the platform waitlist, tracked through pending, invited, provisioned and rejected status as admins process it; name, email and message are the entry's own personal data.",
26
27
  systemStream: true,
27
28
  tenancy: "global",
28
29
  fields: {
@@ -57,6 +58,7 @@ export const waitlistEntryEntity = createEntity({
57
58
  }),
58
59
  invitedAt: createTimestampField(),
59
60
  invitedBy: createTextField({ personal: false, reason: "is_admin_audit_id" }),
61
+ provisionedAt: createTimestampField(),
60
62
  // Not named tenantId: that is the framework's physical tenant column.
61
63
  linkedTenantId: createTextField({ personal: false, reason: "is_tenant_reference" }),
62
64
  },
@@ -0,0 +1,4 @@
1
+ import type { TenantDb } from "@cosmicdrift/kumiko-framework/db";
2
+ export type WaitlistRow = Record<string, unknown>;
3
+ export declare function listAllWaitlistRows(db: TenantDb): Promise<readonly WaitlistRow[]>;
4
+ export declare function purgeWaitlistRows(db: TenantDb, rows: readonly WaitlistRow[], requestedBy: string): Promise<void>;
@@ -0,0 +1,42 @@
1
+ import { configuredPiiSubjectKms } from "@cosmicdrift/kumiko-framework/crypto";
2
+ import { collectErasureFailure, throwIfErasureFailed } from "../shared/index.js";
3
+ import { platformActor, waitlistExecutor } from "./lib.js";
4
+ const PAGE_SIZE = 200;
5
+ const PURGE_REASON = "waitlist:purge";
6
+ // Pages by offset on a stable sort; the list is small (a marketing waitlist) and
7
+ // the callers hold the whole result anyway.
8
+ export async function listAllWaitlistRows(db) {
9
+ const rows = [];
10
+ for (let offset = 0;; offset += PAGE_SIZE) {
11
+ const page = await waitlistExecutor.list({ sort: "submittedAt", sortDirection: "asc", limit: PAGE_SIZE, offset }, platformActor(), db);
12
+ rows.push(...page.rows);
13
+ if (page.rows.length < PAGE_SIZE)
14
+ return rows;
15
+ }
16
+ }
17
+ // Same two-step erasure as the user-data delete hook: the executor forgets the
18
+ // row (replays on rebuild), then the record subject key is shredded so the event
19
+ // log's ciphertext becomes unreadable. Keys are shredded only after every forget
20
+ // succeeded: a thrown failure rolls the handler transaction back, and a shredded
21
+ // key cannot be restored.
22
+ export async function purgeWaitlistRows(db, rows, requestedBy) {
23
+ const failures = [];
24
+ const forgottenIds = [];
25
+ for (const row of rows) {
26
+ const id = row["id"];
27
+ if (typeof id !== "string")
28
+ continue;
29
+ const forgotten = await waitlistExecutor.forget({ id }, platformActor(), db);
30
+ collectErasureFailure(forgotten, "waitlistEntry", id, failures);
31
+ if (forgotten.isSuccess)
32
+ forgottenIds.push(id);
33
+ }
34
+ throwIfErasureFailed(failures);
35
+ const kms = configuredPiiSubjectKms();
36
+ // skip: no PII key service configured, so there are no record keys to shred.
37
+ if (!kms)
38
+ return;
39
+ for (const id of forgottenIds) {
40
+ await kms.eraseKey({ kind: "record", entity: "waitlistEntry", id }, { requestId: PURGE_REASON, userId: requestedBy, eraseReason: PURGE_REASON });
41
+ }
42
+ }
@@ -1,3 +1,3 @@
1
1
  import { type FeatureDefinition } from "@cosmicdrift/kumiko-framework/engine";
2
- import type { WaitlistOptions } from "./options.js";
2
+ import type { WaitlistOptions } from "./options.ts";
3
3
  export declare function createWaitlistFeature(opts?: WaitlistOptions): FeatureDefinition;
@@ -1,13 +1,16 @@
1
1
  import { defineFeature, EXT_USER_DATA, i18nKey, } from "@cosmicdrift/kumiko-framework/engine";
2
- import { WAITLIST_FEATURE } from "./constants.js";
2
+ import { WAITLIST_EXPORTED_EVENT_SHORT, WAITLIST_FEATURE, WAITLIST_PURGED_EVENT_SHORT, } from "./constants.js";
3
3
  import { waitlistEntryEntity } from "./entity.js";
4
+ import { exportHandler, purgeHandler } from "./handlers/export-purge.write.js";
4
5
  import { createInviteHandler } from "./handlers/invite.write.js";
5
6
  import { listQuery } from "./handlers/list.query.js";
6
7
  import { rejectHandler } from "./handlers/reject.write.js";
7
8
  import { createSubmitHandler } from "./handlers/submit.write.js";
8
9
  import { WAITLIST_I18N } from "./i18n.js";
9
10
  import { adminAccess } from "./lib.js";
11
+ import { linkWaitlistOnSignup, WAITLIST_MEMBERSHIP_CREATED_EVENT } from "./link-on-signup.js";
10
12
  import { WAITLIST_ADMIN_NOTICE_RECORD, WAITLIST_ADMIN_NOTICE_VARIABLES, WAITLIST_CONFIRMATION_VARIABLES, waitlistAdminNoticeTemplate, waitlistConfirmationTemplate, } from "./mail.js";
13
+ import { WaitlistAuditEventSchema } from "./payloads.js";
11
14
  import { waitlistListScreen } from "./screens.js";
12
15
  import { waitlistEntryDeleteHook, waitlistEntryExportHook } from "./user-data-hooks.js";
13
16
  export function createWaitlistFeature(opts = {}) {
@@ -31,6 +34,18 @@ export function createWaitlistFeature(opts = {}) {
31
34
  r.writeHandler(createInviteHandler(opts.invite));
32
35
  r.writeHandler(rejectHandler);
33
36
  r.queryHandler(listQuery);
37
+ if (opts.exportPurge !== false) {
38
+ r.defineEvent(WAITLIST_EXPORTED_EVENT_SHORT, WaitlistAuditEventSchema, { piiFields: "none" });
39
+ r.defineEvent(WAITLIST_PURGED_EVENT_SHORT, WaitlistAuditEventSchema, { piiFields: "none" });
40
+ r.writeHandler(exportHandler);
41
+ r.writeHandler(purgeHandler);
42
+ }
43
+ if (opts.linkOnSignup === true) {
44
+ r.multiStreamProjection({
45
+ name: "link-on-signup",
46
+ apply: { [WAITLIST_MEMBERSHIP_CREATED_EVENT]: linkWaitlistOnSignup },
47
+ });
48
+ }
34
49
  r.screen(waitlistListScreen);
35
50
  r.nav({
36
51
  id: "waitlist",
@@ -0,0 +1,12 @@
1
+ import * as z from "zod";
2
+ export type WaitlistExportData = {
3
+ readonly count: number;
4
+ readonly entries: readonly Record<string, unknown>[];
5
+ };
6
+ export type WaitlistPurgeData = {
7
+ readonly purged: number;
8
+ };
9
+ export declare const exportHandler: import("@cosmicdrift/kumiko-types/define-handler").WriteHandlerDefinition<"export", z.ZodObject<{}, z.core.$strict>, WaitlistExportData, import("@cosmicdrift/kumiko-types/event-type-map").KumikoEventTypeMap, undefined>;
10
+ export declare const purgeHandler: import("@cosmicdrift/kumiko-types/define-handler").WriteHandlerDefinition<"purge", z.ZodObject<{
11
+ confirmCount: z.ZodNumber;
12
+ }, z.core.$strict>, WaitlistPurgeData, import("@cosmicdrift/kumiko-types/event-type-map").KumikoEventTypeMap, undefined>;