qarpeo 0.0.0-alpha.10

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 (599) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +102 -0
  3. package/dist/chunks/auth-schema.mjs +219 -0
  4. package/dist/chunks/wrangler.mjs +783 -0
  5. package/dist/cli/index.mjs +1085 -0
  6. package/dist/dev/env.d.ts +12 -0
  7. package/dist/dev/wrangler.d.ts +18 -0
  8. package/dist/module.d.ts +16 -0
  9. package/dist/module.mjs +4436 -0
  10. package/dist/runtime/ai.d.ts +25 -0
  11. package/dist/runtime/ai.mjs +106 -0
  12. package/dist/runtime/analytics.d.ts +24 -0
  13. package/dist/runtime/analytics.mjs +38 -0
  14. package/dist/runtime/app/components/BlobImage.vue +100 -0
  15. package/dist/runtime/app/components/CMSBlocks.vue +93 -0
  16. package/dist/runtime/app/components/CMSContent.vue +23 -0
  17. package/dist/runtime/app/components/CMSImage.vue +49 -0
  18. package/dist/runtime/app/components/CMSLocaleSwitcher.vue +110 -0
  19. package/dist/runtime/app/components/CMSPreviewBanner.vue +79 -0
  20. package/dist/runtime/app/components/CMSVersionBanner.vue +49 -0
  21. package/dist/runtime/app/components/CMSVersionSwitcher.vue +126 -0
  22. package/dist/runtime/app/components/ContentRenderer.vue +80 -0
  23. package/dist/runtime/app/components/FileUpload.vue +196 -0
  24. package/dist/runtime/app/components/ImpersonationBanner.vue +57 -0
  25. package/dist/runtime/app/components/SignedIn.vue +13 -0
  26. package/dist/runtime/app/components/SignedOut.vue +13 -0
  27. package/dist/runtime/app/components/shiki.css +34 -0
  28. package/dist/runtime/app/composables/analytics.d.ts +125 -0
  29. package/dist/runtime/app/composables/analytics.mjs +81 -0
  30. package/dist/runtime/app/composables/api-tokens.d.ts +49 -0
  31. package/dist/runtime/app/composables/api-tokens.mjs +61 -0
  32. package/dist/runtime/app/composables/auth.d.ts +50 -0
  33. package/dist/runtime/app/composables/auth.mjs +101 -0
  34. package/dist/runtime/app/composables/chat.d.ts +69 -0
  35. package/dist/runtime/app/composables/chat.mjs +159 -0
  36. package/dist/runtime/app/composables/cms-preview.d.ts +33 -0
  37. package/dist/runtime/app/composables/cms-preview.mjs +83 -0
  38. package/dist/runtime/app/composables/cms.d.ts +307 -0
  39. package/dist/runtime/app/composables/cms.mjs +355 -0
  40. package/dist/runtime/app/composables/docs-version.d.ts +35 -0
  41. package/dist/runtime/app/composables/docs-version.mjs +70 -0
  42. package/dist/runtime/app/composables/impersonation.d.ts +14 -0
  43. package/dist/runtime/app/composables/impersonation.mjs +44 -0
  44. package/dist/runtime/app/composables/notifications.d.ts +35 -0
  45. package/dist/runtime/app/composables/notifications.mjs +139 -0
  46. package/dist/runtime/app/composables/organization.d.ts +127 -0
  47. package/dist/runtime/app/composables/organization.mjs +138 -0
  48. package/dist/runtime/app/composables/passkey.d.ts +6 -0
  49. package/dist/runtime/app/composables/passkey.mjs +105 -0
  50. package/dist/runtime/app/composables/passwordless.d.ts +7 -0
  51. package/dist/runtime/app/composables/passwordless.mjs +67 -0
  52. package/dist/runtime/app/composables/payments.d.ts +43 -0
  53. package/dist/runtime/app/composables/payments.mjs +74 -0
  54. package/dist/runtime/app/composables/realtime.d.ts +96 -0
  55. package/dist/runtime/app/composables/realtime.mjs +432 -0
  56. package/dist/runtime/app/composables/site.d.ts +35 -0
  57. package/dist/runtime/app/composables/site.mjs +36 -0
  58. package/dist/runtime/app/composables/storage.d.ts +60 -0
  59. package/dist/runtime/app/composables/storage.mjs +294 -0
  60. package/dist/runtime/app/composables/tenant.d.ts +82 -0
  61. package/dist/runtime/app/composables/tenant.mjs +120 -0
  62. package/dist/runtime/app/composables/turnstile.d.ts +3 -0
  63. package/dist/runtime/app/composables/turnstile.mjs +10 -0
  64. package/dist/runtime/app/composables/two-factor.d.ts +12 -0
  65. package/dist/runtime/app/composables/two-factor.mjs +65 -0
  66. package/dist/runtime/app/middleware/auth.global.d.ts +2 -0
  67. package/dist/runtime/app/middleware/auth.global.mjs +44 -0
  68. package/dist/runtime/app/pages/cms.vue +2249 -0
  69. package/dist/runtime/app/pages/devtools/agents.vue +717 -0
  70. package/dist/runtime/app/pages/devtools/analytics.vue +618 -0
  71. package/dist/runtime/app/pages/devtools/auth.vue +351 -0
  72. package/dist/runtime/app/pages/devtools/blob.vue +745 -0
  73. package/dist/runtime/app/pages/devtools/db.vue +546 -0
  74. package/dist/runtime/app/pages/devtools/domains.vue +772 -0
  75. package/dist/runtime/app/pages/devtools/kv.vue +829 -0
  76. package/dist/runtime/app/pages/devtools/logs.vue +655 -0
  77. package/dist/runtime/app/pages/devtools/mail.vue +389 -0
  78. package/dist/runtime/app/pages/devtools/overview.vue +390 -0
  79. package/dist/runtime/app/pages/devtools/settings.vue +560 -0
  80. package/dist/runtime/app/pages/devtools.vue +165 -0
  81. package/dist/runtime/app/plugins/seo.d.ts +2 -0
  82. package/dist/runtime/app/plugins/seo.mjs +105 -0
  83. package/dist/runtime/app/plugins/shortcuts.client.d.ts +6 -0
  84. package/dist/runtime/app/plugins/shortcuts.client.mjs +19 -0
  85. package/dist/runtime/app/public/sw-notifications.mjs +52 -0
  86. package/dist/runtime/auth.d.ts +25 -0
  87. package/dist/runtime/auth.mjs +11 -0
  88. package/dist/runtime/bindings.d.ts +27 -0
  89. package/dist/runtime/bindings.mjs +38 -0
  90. package/dist/runtime/blob.d.ts +26 -0
  91. package/dist/runtime/blob.mjs +334 -0
  92. package/dist/runtime/bots.d.ts +1 -0
  93. package/dist/runtime/bots.mjs +1 -0
  94. package/dist/runtime/browser.d.ts +21 -0
  95. package/dist/runtime/browser.mjs +64 -0
  96. package/dist/runtime/cache.d.ts +19 -0
  97. package/dist/runtime/cache.mjs +12 -0
  98. package/dist/runtime/cms.d.ts +2 -0
  99. package/dist/runtime/cms.mjs +0 -0
  100. package/dist/runtime/db.d.ts +21 -0
  101. package/dist/runtime/db.mjs +36 -0
  102. package/dist/runtime/drizzle.d.ts +11 -0
  103. package/dist/runtime/drizzle.mjs +18 -0
  104. package/dist/runtime/email.d.ts +51 -0
  105. package/dist/runtime/email.mjs +245 -0
  106. package/dist/runtime/hyperdrive.d.ts +21 -0
  107. package/dist/runtime/hyperdrive.mjs +49 -0
  108. package/dist/runtime/index.d.ts +23 -0
  109. package/dist/runtime/index.mjs +23 -0
  110. package/dist/runtime/kv.d.ts +16 -0
  111. package/dist/runtime/kv.mjs +126 -0
  112. package/dist/runtime/payments.d.ts +2 -0
  113. package/dist/runtime/payments.mjs +0 -0
  114. package/dist/runtime/queue.d.ts +21 -0
  115. package/dist/runtime/queue.mjs +41 -0
  116. package/dist/runtime/rag.d.ts +1 -0
  117. package/dist/runtime/rag.mjs +1 -0
  118. package/dist/runtime/ratelimit.d.ts +21 -0
  119. package/dist/runtime/ratelimit.mjs +38 -0
  120. package/dist/runtime/realtime.d.ts +6 -0
  121. package/dist/runtime/realtime.mjs +13 -0
  122. package/dist/runtime/server/db/cms-schema.d.ts +651 -0
  123. package/dist/runtime/server/db/cms-schema.mjs +74 -0
  124. package/dist/runtime/server/durable-objects/agent.d.ts +14 -0
  125. package/dist/runtime/server/durable-objects/agent.mjs +571 -0
  126. package/dist/runtime/server/durable-objects/room.d.ts +34 -0
  127. package/dist/runtime/server/durable-objects/room.mjs +514 -0
  128. package/dist/runtime/server/middleware/auth.d.ts +2 -0
  129. package/dist/runtime/server/middleware/auth.mjs +108 -0
  130. package/dist/runtime/server/middleware/devtools.d.ts +2 -0
  131. package/dist/runtime/server/middleware/devtools.mjs +61 -0
  132. package/dist/runtime/server/middleware/ratelimit.d.ts +2 -0
  133. package/dist/runtime/server/middleware/ratelimit.mjs +49 -0
  134. package/dist/runtime/server/middleware/tenancy.d.ts +6 -0
  135. package/dist/runtime/server/middleware/tenancy.mjs +15 -0
  136. package/dist/runtime/server/middleware/tracker.d.ts +7 -0
  137. package/dist/runtime/server/middleware/tracker.mjs +9 -0
  138. package/dist/runtime/server/plugins/agents.d.ts +7 -0
  139. package/dist/runtime/server/plugins/agents.mjs +3 -0
  140. package/dist/runtime/server/plugins/cms.d.ts +7 -0
  141. package/dist/runtime/server/plugins/cms.mjs +16 -0
  142. package/dist/runtime/server/plugins/dev-logs.d.ts +1 -0
  143. package/dist/runtime/server/plugins/dev-logs.mjs +58 -0
  144. package/dist/runtime/server/plugins/dev-proxy.d.ts +3 -0
  145. package/dist/runtime/server/plugins/dev-proxy.mjs +21 -0
  146. package/dist/runtime/server/plugins/env.d.ts +6 -0
  147. package/dist/runtime/server/plugins/env.mjs +17 -0
  148. package/dist/runtime/server/plugins/queue.d.ts +6 -0
  149. package/dist/runtime/server/plugins/queue.mjs +8 -0
  150. package/dist/runtime/server/routes/__qarpeo/agents/chat.post.d.ts +20 -0
  151. package/dist/runtime/server/routes/__qarpeo/agents/chat.post.mjs +110 -0
  152. package/dist/runtime/server/routes/__qarpeo/agents/clear.post.d.ts +7 -0
  153. package/dist/runtime/server/routes/__qarpeo/agents/clear.post.mjs +15 -0
  154. package/dist/runtime/server/routes/__qarpeo/agents/create.post.d.ts +17 -0
  155. package/dist/runtime/server/routes/__qarpeo/agents/create.post.mjs +47 -0
  156. package/dist/runtime/server/routes/__qarpeo/agents/history.get.d.ts +15 -0
  157. package/dist/runtime/server/routes/__qarpeo/agents/history.get.mjs +24 -0
  158. package/dist/runtime/server/routes/__qarpeo/agents/list.get.d.ts +5 -0
  159. package/dist/runtime/server/routes/__qarpeo/agents/list.get.mjs +63 -0
  160. package/dist/runtime/server/routes/__qarpeo/analytics/events.get.d.ts +64 -0
  161. package/dist/runtime/server/routes/__qarpeo/analytics/events.get.mjs +55 -0
  162. package/dist/runtime/server/routes/__qarpeo/analytics/summary.get.d.ts +30 -0
  163. package/dist/runtime/server/routes/__qarpeo/analytics/summary.get.mjs +73 -0
  164. package/dist/runtime/server/routes/__qarpeo/auth/revoke-session.post.d.ts +6 -0
  165. package/dist/runtime/server/routes/__qarpeo/auth/revoke-session.post.mjs +26 -0
  166. package/dist/runtime/server/routes/__qarpeo/auth/sessions.get.d.ts +6 -0
  167. package/dist/runtime/server/routes/__qarpeo/auth/sessions.get.mjs +46 -0
  168. package/dist/runtime/server/routes/__qarpeo/auth/users.get.d.ts +7 -0
  169. package/dist/runtime/server/routes/__qarpeo/auth/users.get.mjs +65 -0
  170. package/dist/runtime/server/routes/__qarpeo/blob/files.get.d.ts +22 -0
  171. package/dist/runtime/server/routes/__qarpeo/blob/files.get.mjs +36 -0
  172. package/dist/runtime/server/routes/__qarpeo/db/query.post.d.ts +23 -0
  173. package/dist/runtime/server/routes/__qarpeo/db/query.post.mjs +34 -0
  174. package/dist/runtime/server/routes/__qarpeo/db/tables.get.d.ts +31 -0
  175. package/dist/runtime/server/routes/__qarpeo/db/tables.get.mjs +81 -0
  176. package/dist/runtime/server/routes/__qarpeo/kv/delete.post.d.ts +11 -0
  177. package/dist/runtime/server/routes/__qarpeo/kv/delete.post.mjs +18 -0
  178. package/dist/runtime/server/routes/__qarpeo/kv/get.get.d.ts +11 -0
  179. package/dist/runtime/server/routes/__qarpeo/kv/get.get.mjs +20 -0
  180. package/dist/runtime/server/routes/__qarpeo/kv/keys.get.d.ts +8 -0
  181. package/dist/runtime/server/routes/__qarpeo/kv/keys.get.mjs +27 -0
  182. package/dist/runtime/server/routes/__qarpeo/kv/set.post.d.ts +14 -0
  183. package/dist/runtime/server/routes/__qarpeo/kv/set.post.mjs +24 -0
  184. package/dist/runtime/server/routes/__qarpeo/logs.delete.d.ts +5 -0
  185. package/dist/runtime/server/routes/__qarpeo/logs.delete.mjs +6 -0
  186. package/dist/runtime/server/routes/__qarpeo/logs.get.d.ts +5 -0
  187. package/dist/runtime/server/routes/__qarpeo/logs.get.mjs +26 -0
  188. package/dist/runtime/server/routes/__qarpeo/logs.post.d.ts +6 -0
  189. package/dist/runtime/server/routes/__qarpeo/logs.post.mjs +17 -0
  190. package/dist/runtime/server/routes/__qarpeo/mail/bounce.post.d.ts +5 -0
  191. package/dist/runtime/server/routes/__qarpeo/mail/bounce.post.mjs +37 -0
  192. package/dist/runtime/server/routes/__qarpeo/mail/clear.post.d.ts +4 -0
  193. package/dist/runtime/server/routes/__qarpeo/mail/clear.post.mjs +6 -0
  194. package/dist/runtime/server/routes/__qarpeo/mail/inbox.get.d.ts +5 -0
  195. package/dist/runtime/server/routes/__qarpeo/mail/inbox.get.mjs +7 -0
  196. package/dist/runtime/server/routes/__qarpeo/mail/send-test.post.d.ts +4 -0
  197. package/dist/runtime/server/routes/__qarpeo/mail/send-test.post.mjs +29 -0
  198. package/dist/runtime/server/routes/__qarpeo/mail/track/click/[id].get.d.ts +2 -0
  199. package/dist/runtime/server/routes/__qarpeo/mail/track/click/[id].get.mjs +23 -0
  200. package/dist/runtime/server/routes/__qarpeo/mail/track/open/[id].get.d.ts +2 -0
  201. package/dist/runtime/server/routes/__qarpeo/mail/track/open/[id].get.mjs +31 -0
  202. package/dist/runtime/server/routes/__qarpeo/overview/health.get.d.ts +8 -0
  203. package/dist/runtime/server/routes/__qarpeo/overview/health.get.mjs +46 -0
  204. package/dist/runtime/server/routes/__qarpeo/overview.get.d.ts +32 -0
  205. package/dist/runtime/server/routes/__qarpeo/overview.get.mjs +38 -0
  206. package/dist/runtime/server/routes/__qarpeo/settings/reset-dev-data.post.d.ts +11 -0
  207. package/dist/runtime/server/routes/__qarpeo/settings/reset-dev-data.post.mjs +84 -0
  208. package/dist/runtime/server/routes/__qarpeo/settings.get.d.ts +124 -0
  209. package/dist/runtime/server/routes/__qarpeo/settings.get.mjs +145 -0
  210. package/dist/runtime/server/routes/__qarpeo/tenants/create.post.d.ts +7 -0
  211. package/dist/runtime/server/routes/__qarpeo/tenants/create.post.mjs +26 -0
  212. package/dist/runtime/server/routes/__qarpeo/tenants/domain-add.post.d.ts +6 -0
  213. package/dist/runtime/server/routes/__qarpeo/tenants/domain-add.post.mjs +29 -0
  214. package/dist/runtime/server/routes/__qarpeo/tenants/domain-delete.post.d.ts +7 -0
  215. package/dist/runtime/server/routes/__qarpeo/tenants/domain-delete.post.mjs +21 -0
  216. package/dist/runtime/server/routes/__qarpeo/tenants/domain-verify.post.d.ts +9 -0
  217. package/dist/runtime/server/routes/__qarpeo/tenants/domain-verify.post.mjs +21 -0
  218. package/dist/runtime/server/routes/__qarpeo/tenants/list.get.d.ts +15 -0
  219. package/dist/runtime/server/routes/__qarpeo/tenants/list.get.mjs +22 -0
  220. package/dist/runtime/server/routes/agents/[agent]/chat.post.d.ts +2 -0
  221. package/dist/runtime/server/routes/agents/[agent]/chat.post.mjs +35 -0
  222. package/dist/runtime/server/routes/agents/[agent]/clear.post.d.ts +4 -0
  223. package/dist/runtime/server/routes/agents/[agent]/clear.post.mjs +27 -0
  224. package/dist/runtime/server/routes/agents/[agent]/history.get.d.ts +4 -0
  225. package/dist/runtime/server/routes/agents/[agent]/history.get.mjs +27 -0
  226. package/dist/runtime/server/routes/analytics/events.get.d.ts +3 -0
  227. package/dist/runtime/server/routes/analytics/events.get.mjs +17 -0
  228. package/dist/runtime/server/routes/analytics/pageviews.get.d.ts +3 -0
  229. package/dist/runtime/server/routes/analytics/pageviews.get.mjs +15 -0
  230. package/dist/runtime/server/routes/analytics/summary.get.d.ts +6 -0
  231. package/dist/runtime/server/routes/analytics/summary.get.mjs +15 -0
  232. package/dist/runtime/server/routes/atom.xml.get.d.ts +2 -0
  233. package/dist/runtime/server/routes/atom.xml.get.mjs +76 -0
  234. package/dist/runtime/server/routes/auth/2fa/disable.post.d.ts +4 -0
  235. package/dist/runtime/server/routes/auth/2fa/disable.post.mjs +44 -0
  236. package/dist/runtime/server/routes/auth/2fa/setup.post.d.ts +6 -0
  237. package/dist/runtime/server/routes/auth/2fa/setup.post.mjs +32 -0
  238. package/dist/runtime/server/routes/auth/2fa/verify.post.d.ts +6 -0
  239. package/dist/runtime/server/routes/auth/2fa/verify.post.mjs +92 -0
  240. package/dist/runtime/server/routes/auth/[provider]/callback.d.ts +1 -0
  241. package/dist/runtime/server/routes/auth/[provider]/callback.mjs +1 -0
  242. package/dist/runtime/server/routes/auth/[provider].d.ts +3 -0
  243. package/dist/runtime/server/routes/auth/[provider].mjs +95 -0
  244. package/dist/runtime/server/routes/auth/account.delete.d.ts +5 -0
  245. package/dist/runtime/server/routes/auth/account.delete.mjs +52 -0
  246. package/dist/runtime/server/routes/auth/impersonate/start.post.d.ts +5 -0
  247. package/dist/runtime/server/routes/auth/impersonate/start.post.mjs +14 -0
  248. package/dist/runtime/server/routes/auth/impersonate/stop.post.d.ts +5 -0
  249. package/dist/runtime/server/routes/auth/impersonate/stop.post.mjs +5 -0
  250. package/dist/runtime/server/routes/auth/logout-all.post.d.ts +4 -0
  251. package/dist/runtime/server/routes/auth/logout-all.post.mjs +16 -0
  252. package/dist/runtime/server/routes/auth/logout-others.post.d.ts +4 -0
  253. package/dist/runtime/server/routes/auth/logout-others.post.mjs +11 -0
  254. package/dist/runtime/server/routes/auth/logout.post.d.ts +4 -0
  255. package/dist/runtime/server/routes/auth/logout.post.mjs +17 -0
  256. package/dist/runtime/server/routes/auth/magic-link/send.post.d.ts +10 -0
  257. package/dist/runtime/server/routes/auth/magic-link/send.post.mjs +29 -0
  258. package/dist/runtime/server/routes/auth/magic-link/verify.get.d.ts +2 -0
  259. package/dist/runtime/server/routes/auth/magic-link/verify.get.mjs +81 -0
  260. package/dist/runtime/server/routes/auth/organization/create.post.d.ts +5 -0
  261. package/dist/runtime/server/routes/auth/organization/create.post.mjs +10 -0
  262. package/dist/runtime/server/routes/auth/organization/invite.post.d.ts +9 -0
  263. package/dist/runtime/server/routes/auth/organization/invite.post.mjs +27 -0
  264. package/dist/runtime/server/routes/auth/organization/join.post.d.ts +6 -0
  265. package/dist/runtime/server/routes/auth/organization/join.post.mjs +15 -0
  266. package/dist/runtime/server/routes/auth/organization/list.get.d.ts +5 -0
  267. package/dist/runtime/server/routes/auth/organization/list.get.mjs +7 -0
  268. package/dist/runtime/server/routes/auth/organization/members/[id].delete.d.ts +4 -0
  269. package/dist/runtime/server/routes/auth/organization/members/[id].delete.mjs +33 -0
  270. package/dist/runtime/server/routes/auth/organization/members/index.get.d.ts +6 -0
  271. package/dist/runtime/server/routes/auth/organization/members/index.get.mjs +18 -0
  272. package/dist/runtime/server/routes/auth/organization/mfa.post.d.ts +6 -0
  273. package/dist/runtime/server/routes/auth/organization/mfa.post.mjs +33 -0
  274. package/dist/runtime/server/routes/auth/organization/sso/[id].delete.d.ts +4 -0
  275. package/dist/runtime/server/routes/auth/organization/sso/[id].delete.mjs +28 -0
  276. package/dist/runtime/server/routes/auth/organization/sso/index.get.d.ts +2 -0
  277. package/dist/runtime/server/routes/auth/organization/sso/index.get.mjs +23 -0
  278. package/dist/runtime/server/routes/auth/organization/sso/index.post.d.ts +5 -0
  279. package/dist/runtime/server/routes/auth/organization/sso/index.post.mjs +84 -0
  280. package/dist/runtime/server/routes/auth/organization/switch.post.d.ts +6 -0
  281. package/dist/runtime/server/routes/auth/organization/switch.post.mjs +14 -0
  282. package/dist/runtime/server/routes/auth/otp/send.post.d.ts +10 -0
  283. package/dist/runtime/server/routes/auth/otp/send.post.mjs +29 -0
  284. package/dist/runtime/server/routes/auth/otp/verify.post.d.ts +6 -0
  285. package/dist/runtime/server/routes/auth/otp/verify.post.mjs +95 -0
  286. package/dist/runtime/server/routes/auth/sessions/[id].delete.d.ts +5 -0
  287. package/dist/runtime/server/routes/auth/sessions/[id].delete.mjs +24 -0
  288. package/dist/runtime/server/routes/auth/sessions.get.d.ts +2 -0
  289. package/dist/runtime/server/routes/auth/sessions.get.mjs +11 -0
  290. package/dist/runtime/server/routes/auth/sso/login.get.d.ts +2 -0
  291. package/dist/runtime/server/routes/auth/sso/login.get.mjs +94 -0
  292. package/dist/runtime/server/routes/auth/sso/oidc/callback.get.d.ts +2 -0
  293. package/dist/runtime/server/routes/auth/sso/oidc/callback.get.mjs +113 -0
  294. package/dist/runtime/server/routes/auth/sso/saml/acs.post.d.ts +2 -0
  295. package/dist/runtime/server/routes/auth/sso/saml/acs.post.mjs +95 -0
  296. package/dist/runtime/server/routes/auth/tokens/[id].delete.d.ts +4 -0
  297. package/dist/runtime/server/routes/auth/tokens/[id].delete.mjs +13 -0
  298. package/dist/runtime/server/routes/auth/tokens/create.post.d.ts +9 -0
  299. package/dist/runtime/server/routes/auth/tokens/create.post.mjs +17 -0
  300. package/dist/runtime/server/routes/auth/tokens/index.get.d.ts +9 -0
  301. package/dist/runtime/server/routes/auth/tokens/index.get.mjs +5 -0
  302. package/dist/runtime/server/routes/auth/turnstile/verify.post.d.ts +2 -0
  303. package/dist/runtime/server/routes/auth/turnstile/verify.post.mjs +15 -0
  304. package/dist/runtime/server/routes/auth/user.get.d.ts +2 -0
  305. package/dist/runtime/server/routes/auth/user.get.mjs +6 -0
  306. package/dist/runtime/server/routes/auth/webauthn/login/options.post.d.ts +2 -0
  307. package/dist/runtime/server/routes/auth/webauthn/login/options.post.mjs +17 -0
  308. package/dist/runtime/server/routes/auth/webauthn/login/verify.post.d.ts +6 -0
  309. package/dist/runtime/server/routes/auth/webauthn/login/verify.post.mjs +127 -0
  310. package/dist/runtime/server/routes/auth/webauthn/register/options.post.d.ts +2 -0
  311. package/dist/runtime/server/routes/auth/webauthn/register/options.post.mjs +47 -0
  312. package/dist/runtime/server/routes/auth/webauthn/register/verify.post.d.ts +5 -0
  313. package/dist/runtime/server/routes/auth/webauthn/register/verify.post.mjs +88 -0
  314. package/dist/runtime/server/routes/cms/[collection]/[id]/preview-token.post.d.ts +8 -0
  315. package/dist/runtime/server/routes/cms/[collection]/[id]/preview-token.post.mjs +27 -0
  316. package/dist/runtime/server/routes/cms/[collection]/[id]/publish.post.d.ts +6 -0
  317. package/dist/runtime/server/routes/cms/[collection]/[id]/publish.post.mjs +19 -0
  318. package/dist/runtime/server/routes/cms/[collection]/[id]/review.post.d.ts +6 -0
  319. package/dist/runtime/server/routes/cms/[collection]/[id]/review.post.mjs +33 -0
  320. package/dist/runtime/server/routes/cms/[collection]/[id].delete.d.ts +4 -0
  321. package/dist/runtime/server/routes/cms/[collection]/[id].delete.mjs +17 -0
  322. package/dist/runtime/server/routes/cms/[collection]/[id].put.d.ts +4 -0
  323. package/dist/runtime/server/routes/cms/[collection]/[id].put.mjs +18 -0
  324. package/dist/runtime/server/routes/cms/[collection]/[slug].get.d.ts +4 -0
  325. package/dist/runtime/server/routes/cms/[collection]/[slug].get.mjs +19 -0
  326. package/dist/runtime/server/routes/cms/[collection]/atom.xml.get.d.ts +2 -0
  327. package/dist/runtime/server/routes/cms/[collection]/atom.xml.get.mjs +69 -0
  328. package/dist/runtime/server/routes/cms/[collection]/by-path.get.d.ts +8 -0
  329. package/dist/runtime/server/routes/cms/[collection]/by-path.get.mjs +23 -0
  330. package/dist/runtime/server/routes/cms/[collection]/feed.xml.get.d.ts +2 -0
  331. package/dist/runtime/server/routes/cms/[collection]/feed.xml.get.mjs +65 -0
  332. package/dist/runtime/server/routes/cms/[collection]/index.get.d.ts +7 -0
  333. package/dist/runtime/server/routes/cms/[collection]/index.get.mjs +15 -0
  334. package/dist/runtime/server/routes/cms/[collection]/index.post.d.ts +4 -0
  335. package/dist/runtime/server/routes/cms/[collection]/index.post.mjs +23 -0
  336. package/dist/runtime/server/routes/cms/[collection]/references.get.d.ts +19 -0
  337. package/dist/runtime/server/routes/cms/[collection]/references.get.mjs +47 -0
  338. package/dist/runtime/server/routes/cms/[collection]/surroundings.get.d.ts +10 -0
  339. package/dist/runtime/server/routes/cms/[collection]/surroundings.get.mjs +12 -0
  340. package/dist/runtime/server/routes/cms/collections/[id].delete.d.ts +4 -0
  341. package/dist/runtime/server/routes/cms/collections/[id].delete.mjs +10 -0
  342. package/dist/runtime/server/routes/cms/collections/[id].put.d.ts +4 -0
  343. package/dist/runtime/server/routes/cms/collections/[id].put.mjs +11 -0
  344. package/dist/runtime/server/routes/cms/collections/index.get.d.ts +4 -0
  345. package/dist/runtime/server/routes/cms/collections/index.get.mjs +6 -0
  346. package/dist/runtime/server/routes/cms/collections/index.post.d.ts +4 -0
  347. package/dist/runtime/server/routes/cms/collections/index.post.mjs +19 -0
  348. package/dist/runtime/server/routes/cms/components/index.get.d.ts +17 -0
  349. package/dist/runtime/server/routes/cms/components/index.get.mjs +16 -0
  350. package/dist/runtime/server/routes/cms/deploy.post.d.ts +4 -0
  351. package/dist/runtime/server/routes/cms/deploy.post.mjs +46 -0
  352. package/dist/runtime/server/routes/cms/export.post.d.ts +10 -0
  353. package/dist/runtime/server/routes/cms/export.post.mjs +55 -0
  354. package/dist/runtime/server/routes/cms/navigation.get.d.ts +8 -0
  355. package/dist/runtime/server/routes/cms/navigation.get.mjs +36 -0
  356. package/dist/runtime/server/routes/cms/preview/disable.get.d.ts +9 -0
  357. package/dist/runtime/server/routes/cms/preview/disable.get.mjs +9 -0
  358. package/dist/runtime/server/routes/cms/preview/enable.get.d.ts +14 -0
  359. package/dist/runtime/server/routes/cms/preview/enable.get.mjs +42 -0
  360. package/dist/runtime/server/routes/cms/publish-scheduled.post.d.ts +11 -0
  361. package/dist/runtime/server/routes/cms/publish-scheduled.post.mjs +35 -0
  362. package/dist/runtime/server/routes/cms/search.get.d.ts +13 -0
  363. package/dist/runtime/server/routes/cms/search.get.mjs +137 -0
  364. package/dist/runtime/server/routes/cms/sync.post.d.ts +7 -0
  365. package/dist/runtime/server/routes/cms/sync.post.mjs +18 -0
  366. package/dist/runtime/server/routes/cms/webhooks/[provider].post.d.ts +150 -0
  367. package/dist/runtime/server/routes/cms/webhooks/[provider].post.mjs +213 -0
  368. package/dist/runtime/server/routes/docs/search.get.d.ts +15 -0
  369. package/dist/runtime/server/routes/docs/search.get.mjs +20 -0
  370. package/dist/runtime/server/routes/feed.xml.get.d.ts +2 -0
  371. package/dist/runtime/server/routes/feed.xml.get.mjs +73 -0
  372. package/dist/runtime/server/routes/mail/bounce.post.d.ts +14 -0
  373. package/dist/runtime/server/routes/mail/bounce.post.mjs +56 -0
  374. package/dist/runtime/server/routes/mail/inbox/[id].get.d.ts +2 -0
  375. package/dist/runtime/server/routes/mail/inbox/[id].get.mjs +9 -0
  376. package/dist/runtime/server/routes/mail/inbox.get.d.ts +4 -0
  377. package/dist/runtime/server/routes/mail/inbox.get.mjs +7 -0
  378. package/dist/runtime/server/routes/mail/suppressions/[email].delete.d.ts +11 -0
  379. package/dist/runtime/server/routes/mail/suppressions/[email].delete.mjs +18 -0
  380. package/dist/runtime/server/routes/mail/suppressions/index.get.d.ts +12 -0
  381. package/dist/runtime/server/routes/mail/suppressions/index.get.mjs +23 -0
  382. package/dist/runtime/server/routes/mail/suppressions/index.post.d.ts +10 -0
  383. package/dist/runtime/server/routes/mail/suppressions/index.post.mjs +23 -0
  384. package/dist/runtime/server/routes/mail/unsubscribe.d.ts +13 -0
  385. package/dist/runtime/server/routes/mail/unsubscribe.mjs +91 -0
  386. package/dist/runtime/server/routes/mail/webhooks.post.d.ts +12 -0
  387. package/dist/runtime/server/routes/mail/webhooks.post.mjs +71 -0
  388. package/dist/runtime/server/routes/notifications/[id]/read.post.d.ts +4 -0
  389. package/dist/runtime/server/routes/notifications/[id]/read.post.mjs +13 -0
  390. package/dist/runtime/server/routes/notifications/[id].delete.d.ts +4 -0
  391. package/dist/runtime/server/routes/notifications/[id].delete.mjs +13 -0
  392. package/dist/runtime/server/routes/notifications/[id].get.d.ts +2 -0
  393. package/dist/runtime/server/routes/notifications/[id].get.mjs +15 -0
  394. package/dist/runtime/server/routes/notifications/index.get.d.ts +6 -0
  395. package/dist/runtime/server/routes/notifications/index.get.mjs +18 -0
  396. package/dist/runtime/server/routes/notifications/push/subscribe.post.d.ts +4 -0
  397. package/dist/runtime/server/routes/notifications/push/subscribe.post.mjs +20 -0
  398. package/dist/runtime/server/routes/notifications/push/unsubscribe.post.d.ts +4 -0
  399. package/dist/runtime/server/routes/notifications/push/unsubscribe.post.mjs +15 -0
  400. package/dist/runtime/server/routes/notifications/read-all.post.d.ts +4 -0
  401. package/dist/runtime/server/routes/notifications/read-all.post.mjs +11 -0
  402. package/dist/runtime/server/routes/payments/cancel.post.d.ts +7 -0
  403. package/dist/runtime/server/routes/payments/cancel.post.mjs +9 -0
  404. package/dist/runtime/server/routes/payments/change-plan.post.d.ts +7 -0
  405. package/dist/runtime/server/routes/payments/change-plan.post.mjs +12 -0
  406. package/dist/runtime/server/routes/payments/checkout.post.d.ts +9 -0
  407. package/dist/runtime/server/routes/payments/checkout.post.mjs +16 -0
  408. package/dist/runtime/server/routes/payments/pause.post.d.ts +7 -0
  409. package/dist/runtime/server/routes/payments/pause.post.mjs +9 -0
  410. package/dist/runtime/server/routes/payments/portal.post.d.ts +5 -0
  411. package/dist/runtime/server/routes/payments/portal.post.mjs +9 -0
  412. package/dist/runtime/server/routes/payments/subscription.get.d.ts +6 -0
  413. package/dist/runtime/server/routes/payments/subscription.get.mjs +9 -0
  414. package/dist/runtime/server/routes/payments/usage.get.d.ts +12 -0
  415. package/dist/runtime/server/routes/payments/usage.get.mjs +18 -0
  416. package/dist/runtime/server/routes/payments/usage.post.d.ts +6 -0
  417. package/dist/runtime/server/routes/payments/usage.post.mjs +24 -0
  418. package/dist/runtime/server/routes/payments/webhook.post.d.ts +14 -0
  419. package/dist/runtime/server/routes/payments/webhook.post.mjs +21 -0
  420. package/dist/runtime/server/routes/realtime/broadcast.post.d.ts +4 -0
  421. package/dist/runtime/server/routes/realtime/broadcast.post.mjs +26 -0
  422. package/dist/runtime/server/routes/realtime/history.delete.d.ts +13 -0
  423. package/dist/runtime/server/routes/realtime/history.delete.mjs +12 -0
  424. package/dist/runtime/server/routes/realtime/history.get.d.ts +16 -0
  425. package/dist/runtime/server/routes/realtime/history.get.mjs +15 -0
  426. package/dist/runtime/server/routes/realtime/presence.get.d.ts +6 -0
  427. package/dist/runtime/server/routes/realtime/presence.get.mjs +27 -0
  428. package/dist/runtime/server/routes/realtime/state.get.d.ts +5 -0
  429. package/dist/runtime/server/routes/realtime/state.get.mjs +26 -0
  430. package/dist/runtime/server/routes/realtime/state.post.d.ts +6 -0
  431. package/dist/runtime/server/routes/realtime/state.post.mjs +37 -0
  432. package/dist/runtime/server/routes/realtime/ws.get.d.ts +2 -0
  433. package/dist/runtime/server/routes/realtime/ws.get.mjs +73 -0
  434. package/dist/runtime/server/routes/robots.txt.get.d.ts +2 -0
  435. package/dist/runtime/server/routes/robots.txt.get.mjs +41 -0
  436. package/dist/runtime/server/routes/rss.xml.get.d.ts +2 -0
  437. package/dist/runtime/server/routes/rss.xml.get.mjs +2 -0
  438. package/dist/runtime/server/routes/sitemap.xml.get.d.ts +2 -0
  439. package/dist/runtime/server/routes/sitemap.xml.get.mjs +84 -0
  440. package/dist/runtime/server/routes/storage/file/[...key].delete.d.ts +4 -0
  441. package/dist/runtime/server/routes/storage/file/[...key].delete.mjs +23 -0
  442. package/dist/runtime/server/routes/storage/file/[...key].get.d.ts +2 -0
  443. package/dist/runtime/server/routes/storage/file/[...key].get.mjs +23 -0
  444. package/dist/runtime/server/routes/storage/files.get.d.ts +14 -0
  445. package/dist/runtime/server/routes/storage/files.get.mjs +11 -0
  446. package/dist/runtime/server/routes/storage/presigned.post.d.ts +8 -0
  447. package/dist/runtime/server/routes/storage/presigned.post.mjs +39 -0
  448. package/dist/runtime/server/routes/storage/sign.post.d.ts +6 -0
  449. package/dist/runtime/server/routes/storage/sign.post.mjs +24 -0
  450. package/dist/runtime/server/routes/storage/upload.post.d.ts +22 -0
  451. package/dist/runtime/server/routes/storage/upload.post.mjs +96 -0
  452. package/dist/runtime/server/routes/tenants/[tenant]/domains/[domain]/index.delete.d.ts +8 -0
  453. package/dist/runtime/server/routes/tenants/[tenant]/domains/[domain]/index.delete.mjs +39 -0
  454. package/dist/runtime/server/routes/tenants/[tenant]/domains/[domain]/verify.post.d.ts +8 -0
  455. package/dist/runtime/server/routes/tenants/[tenant]/domains/[domain]/verify.post.mjs +39 -0
  456. package/dist/runtime/server/routes/tenants/[tenant]/domains/index.get.d.ts +8 -0
  457. package/dist/runtime/server/routes/tenants/[tenant]/domains/index.get.mjs +20 -0
  458. package/dist/runtime/server/routes/tenants/[tenant]/domains/index.post.d.ts +8 -0
  459. package/dist/runtime/server/routes/tenants/[tenant]/domains/index.post.mjs +44 -0
  460. package/dist/runtime/server/routes/tenants/current.get.d.ts +8 -0
  461. package/dist/runtime/server/routes/tenants/current.get.mjs +6 -0
  462. package/dist/runtime/server/tasks/cms/publish.d.ts +4 -0
  463. package/dist/runtime/server/tasks/cms/publish.mjs +18 -0
  464. package/dist/runtime/server/utils/agent-store.d.ts +24 -0
  465. package/dist/runtime/server/utils/agent-store.mjs +53 -0
  466. package/dist/runtime/server/utils/agents-registry-fallback.d.ts +1 -0
  467. package/dist/runtime/server/utils/agents-registry-fallback.mjs +1 -0
  468. package/dist/runtime/server/utils/ai.d.ts +119 -0
  469. package/dist/runtime/server/utils/ai.mjs +607 -0
  470. package/dist/runtime/server/utils/analytics-query.d.ts +109 -0
  471. package/dist/runtime/server/utils/analytics-query.mjs +234 -0
  472. package/dist/runtime/server/utils/auth.d.ts +60 -0
  473. package/dist/runtime/server/utils/auth.mjs +361 -0
  474. package/dist/runtime/server/utils/blob-store.d.ts +13 -0
  475. package/dist/runtime/server/utils/blob-store.mjs +60 -0
  476. package/dist/runtime/server/utils/bots.d.ts +21 -0
  477. package/dist/runtime/server/utils/bots.mjs +491 -0
  478. package/dist/runtime/server/utils/cache.d.ts +33 -0
  479. package/dist/runtime/server/utils/cache.mjs +128 -0
  480. package/dist/runtime/server/utils/cms-events.d.ts +17 -0
  481. package/dist/runtime/server/utils/cms-events.mjs +80 -0
  482. package/dist/runtime/server/utils/cms-filter.d.ts +3 -0
  483. package/dist/runtime/server/utils/cms-filter.mjs +34 -0
  484. package/dist/runtime/server/utils/cms.d.ts +278 -0
  485. package/dist/runtime/server/utils/cms.mjs +3268 -0
  486. package/dist/runtime/server/utils/config.d.ts +27 -0
  487. package/dist/runtime/server/utils/config.mjs +38 -0
  488. package/dist/runtime/server/utils/context.d.ts +13 -0
  489. package/dist/runtime/server/utils/context.mjs +98 -0
  490. package/dist/runtime/server/utils/crypto.d.ts +16 -0
  491. package/dist/runtime/server/utils/crypto.mjs +56 -0
  492. package/dist/runtime/server/utils/dev-logs.d.ts +21 -0
  493. package/dist/runtime/server/utils/dev-logs.mjs +41 -0
  494. package/dist/runtime/server/utils/dev-proxy.d.ts +1 -0
  495. package/dist/runtime/server/utils/dev-proxy.mjs +69 -0
  496. package/dist/runtime/server/utils/domains.d.ts +46 -0
  497. package/dist/runtime/server/utils/domains.mjs +318 -0
  498. package/dist/runtime/server/utils/drizzle.d.ts +10 -0
  499. package/dist/runtime/server/utils/drizzle.mjs +36 -0
  500. package/dist/runtime/server/utils/email-templates.d.ts +44 -0
  501. package/dist/runtime/server/utils/email-templates.mjs +373 -0
  502. package/dist/runtime/server/utils/feed.d.ts +42 -0
  503. package/dist/runtime/server/utils/feed.mjs +161 -0
  504. package/dist/runtime/server/utils/impersonation.d.ts +67 -0
  505. package/dist/runtime/server/utils/impersonation.mjs +298 -0
  506. package/dist/runtime/server/utils/jobs.d.ts +70 -0
  507. package/dist/runtime/server/utils/jobs.mjs +125 -0
  508. package/dist/runtime/server/utils/kv-store.d.ts +9 -0
  509. package/dist/runtime/server/utils/kv-store.mjs +32 -0
  510. package/dist/runtime/server/utils/mail-suppression.d.ts +62 -0
  511. package/dist/runtime/server/utils/mail-suppression.mjs +328 -0
  512. package/dist/runtime/server/utils/mail.d.ts +90 -0
  513. package/dist/runtime/server/utils/mail.mjs +366 -0
  514. package/dist/runtime/server/utils/notifications.d.ts +51 -0
  515. package/dist/runtime/server/utils/notifications.mjs +215 -0
  516. package/dist/runtime/server/utils/organization.d.ts +54 -0
  517. package/dist/runtime/server/utils/organization.mjs +354 -0
  518. package/dist/runtime/server/utils/passwordless.d.ts +48 -0
  519. package/dist/runtime/server/utils/passwordless.mjs +179 -0
  520. package/dist/runtime/server/utils/payments.d.ts +121 -0
  521. package/dist/runtime/server/utils/payments.mjs +1067 -0
  522. package/dist/runtime/server/utils/queue-fallback.d.ts +2 -0
  523. package/dist/runtime/server/utils/queue-fallback.mjs +2 -0
  524. package/dist/runtime/server/utils/queue.d.ts +4 -0
  525. package/dist/runtime/server/utils/queue.mjs +3 -0
  526. package/dist/runtime/server/utils/rag.d.ts +25 -0
  527. package/dist/runtime/server/utils/rag.mjs +333 -0
  528. package/dist/runtime/server/utils/ratelimit.d.ts +45 -0
  529. package/dist/runtime/server/utils/ratelimit.mjs +182 -0
  530. package/dist/runtime/server/utils/realtime.d.ts +110 -0
  531. package/dist/runtime/server/utils/realtime.mjs +197 -0
  532. package/dist/runtime/server/utils/schema-fallback.d.ts +3 -0
  533. package/dist/runtime/server/utils/schema-fallback.mjs +2 -0
  534. package/dist/runtime/server/utils/session.d.ts +72 -0
  535. package/dist/runtime/server/utils/session.mjs +287 -0
  536. package/dist/runtime/server/utils/sso.d.ts +49 -0
  537. package/dist/runtime/server/utils/sso.mjs +131 -0
  538. package/dist/runtime/server/utils/storage.d.ts +111 -0
  539. package/dist/runtime/server/utils/storage.mjs +654 -0
  540. package/dist/runtime/server/utils/tenant.d.ts +44 -0
  541. package/dist/runtime/server/utils/tenant.mjs +285 -0
  542. package/dist/runtime/server/utils/totp.d.ts +33 -0
  543. package/dist/runtime/server/utils/totp.mjs +112 -0
  544. package/dist/runtime/server/utils/tracker.d.ts +72 -0
  545. package/dist/runtime/server/utils/tracker.mjs +139 -0
  546. package/dist/runtime/server/utils/turnstile.d.ts +17 -0
  547. package/dist/runtime/server/utils/turnstile.mjs +68 -0
  548. package/dist/runtime/server/utils/vapid.d.ts +35 -0
  549. package/dist/runtime/server/utils/vapid.mjs +211 -0
  550. package/dist/runtime/storage.d.ts +1 -0
  551. package/dist/runtime/storage.mjs +0 -0
  552. package/dist/runtime/types/ai.d.ts +68 -0
  553. package/dist/runtime/types/ai.mjs +0 -0
  554. package/dist/runtime/types/analytics.d.ts +30 -0
  555. package/dist/runtime/types/analytics.mjs +0 -0
  556. package/dist/runtime/types/auth-globals.d.ts +14 -0
  557. package/dist/runtime/types/auth.d.ts +153 -0
  558. package/dist/runtime/types/auth.mjs +0 -0
  559. package/dist/runtime/types/browser.d.ts +29 -0
  560. package/dist/runtime/types/browser.mjs +0 -0
  561. package/dist/runtime/types/d1.d.ts +44 -0
  562. package/dist/runtime/types/d1.mjs +0 -0
  563. package/dist/runtime/types/drizzle.d.ts +13 -0
  564. package/dist/runtime/types/drizzle.mjs +0 -0
  565. package/dist/runtime/types/durable-object.d.ts +51 -0
  566. package/dist/runtime/types/durable-object.mjs +0 -0
  567. package/dist/runtime/types/email.d.ts +66 -0
  568. package/dist/runtime/types/email.mjs +0 -0
  569. package/dist/runtime/types/hyperdrive.d.ts +18 -0
  570. package/dist/runtime/types/hyperdrive.mjs +0 -0
  571. package/dist/runtime/types/imports.d.ts +58 -0
  572. package/dist/runtime/types/index.d.ts +156 -0
  573. package/dist/runtime/types/index.mjs +13 -0
  574. package/dist/runtime/types/queue.d.ts +67 -0
  575. package/dist/runtime/types/queue.mjs +0 -0
  576. package/dist/runtime/types/r2.d.ts +108 -0
  577. package/dist/runtime/types/r2.mjs +0 -0
  578. package/dist/runtime/types/ratelimit.d.ts +21 -0
  579. package/dist/runtime/types/ratelimit.mjs +0 -0
  580. package/dist/runtime/types/vectorize.d.ts +74 -0
  581. package/dist/runtime/types/vectorize.mjs +0 -0
  582. package/dist/runtime/vectorize.d.ts +21 -0
  583. package/dist/runtime/vectorize.mjs +53 -0
  584. package/dist/types.d.ts +2750 -0
  585. package/dist/types.mjs +1 -0
  586. package/dist/utils/agents.d.ts +8 -0
  587. package/dist/utils/auth-schema.d.ts +11 -0
  588. package/dist/utils/bindings.d.ts +16 -0
  589. package/dist/utils/cms-schema.d.ts +1 -0
  590. package/dist/utils/cms-sources.d.ts +62 -0
  591. package/dist/utils/drizzle.d.ts +42 -0
  592. package/dist/utils/jobs.d.ts +8 -0
  593. package/dist/utils/local-db.d.ts +28 -0
  594. package/dist/utils/notifications-schema.d.ts +15 -0
  595. package/dist/utils/payments-schema.d.ts +11 -0
  596. package/dist/utils/pkg.d.ts +15 -0
  597. package/dist/utils/queue.d.ts +8 -0
  598. package/dist/utils/tenants-schema.d.ts +11 -0
  599. package/package.json +104 -0
@@ -0,0 +1,298 @@
1
+ import { useNitroApp } from "nitro/app";
2
+ import { createError } from "nuxt/server";
3
+ import { getD1Binding } from "../../db.mjs";
4
+ import { ensureAuthTables } from "./auth.mjs";
5
+ import { hashSessionToken, getAuthSession, setAuthSession } from "./session.mjs";
6
+ function getD1(event) {
7
+ const bindingName = globalThis.process?.env?.QARPEO_DEFAULT_DB_BINDING || "DB";
8
+ return getD1Binding(bindingName, event);
9
+ }
10
+ const TOKEN_PREFIX = "qp_live_";
11
+ export async function startImpersonation(event, targetUserId) {
12
+ const session = await getAuthSession(event);
13
+ const adminUser = session?.user;
14
+ if (!adminUser?.id) {
15
+ throw createError({ statusCode: 401, statusMessage: "Unauthorized" });
16
+ }
17
+ if (adminUser.role !== "admin" && adminUser.role !== "super_admin") {
18
+ throw createError({
19
+ statusCode: 403,
20
+ statusMessage: "Forbidden",
21
+ message: "Only admins can impersonate users"
22
+ });
23
+ }
24
+ if (session?.impersonator) {
25
+ throw createError({
26
+ statusCode: 400,
27
+ statusMessage: "Bad Request",
28
+ message: "Already in an impersonation session. Stop the current session first."
29
+ });
30
+ }
31
+ if (targetUserId === adminUser.id) {
32
+ throw createError({
33
+ statusCode: 400,
34
+ statusMessage: "Bad Request",
35
+ message: "Cannot impersonate yourself"
36
+ });
37
+ }
38
+ const d1 = getD1(event);
39
+ await ensureAuthTables(d1);
40
+ const dbTarget = await d1.prepare(
41
+ "SELECT id, email, name, avatar_url, role, email_verified FROM _qarpeo_users WHERE id = ? LIMIT 1"
42
+ ).bind(targetUserId).first();
43
+ if (!dbTarget) {
44
+ throw createError({
45
+ statusCode: 404,
46
+ statusMessage: "Not Found",
47
+ message: "Target user not found"
48
+ });
49
+ }
50
+ if (dbTarget.role === "admin" || dbTarget.role === "super_admin") {
51
+ throw createError({
52
+ statusCode: 403,
53
+ statusMessage: "Forbidden",
54
+ message: "Cannot impersonate another admin"
55
+ });
56
+ }
57
+ const targetUser = {
58
+ id: dbTarget.id,
59
+ email: dbTarget.email,
60
+ name: dbTarget.name,
61
+ avatarUrl: dbTarget.avatar_url,
62
+ role: dbTarget.role,
63
+ emailVerified: Boolean(dbTarget.email_verified)
64
+ };
65
+ await setAuthSession(event, {
66
+ ...session,
67
+ user: targetUser,
68
+ impersonator: adminUser,
69
+ // Strip org context when impersonating
70
+ currentOrganizationId: null,
71
+ currentOrganization: null,
72
+ currentRole: null
73
+ });
74
+ const timestamp = Date.now();
75
+ try {
76
+ const nitroApp = useNitroApp();
77
+ await nitroApp.hooks?.callHook("qarpeo:auth:impersonation:start", {
78
+ adminId: adminUser.id,
79
+ targetUserId,
80
+ timestamp
81
+ });
82
+ } catch (hookErr) {
83
+ console.warn(
84
+ "[qarpeo:auth] Error calling qarpeo:auth:impersonation:start hook:",
85
+ hookErr?.message || hookErr
86
+ );
87
+ }
88
+ console.log(
89
+ `[qarpeo:audit] impersonation:start admin=${adminUser.id} target=${targetUserId} at=${timestamp}`
90
+ );
91
+ return { success: true, user: targetUser };
92
+ }
93
+ export async function stopImpersonation(event) {
94
+ const session = await getAuthSession(event);
95
+ const impersonator = session?.impersonator;
96
+ if (!impersonator) {
97
+ throw createError({
98
+ statusCode: 400,
99
+ statusMessage: "Bad Request",
100
+ message: "No active impersonation session"
101
+ });
102
+ }
103
+ const targetUserId = session?.user?.id || "";
104
+ const adminId = impersonator.id;
105
+ await setAuthSession(event, {
106
+ ...session,
107
+ user: impersonator,
108
+ impersonator: null,
109
+ currentOrganizationId: null,
110
+ currentOrganization: null,
111
+ currentRole: null
112
+ });
113
+ const timestamp = Date.now();
114
+ try {
115
+ const nitroApp = useNitroApp();
116
+ await nitroApp.hooks?.callHook("qarpeo:auth:impersonation:stop", {
117
+ adminId,
118
+ targetUserId,
119
+ timestamp
120
+ });
121
+ } catch (hookErr) {
122
+ console.warn(
123
+ "[qarpeo:auth] Error calling qarpeo:auth:impersonation:stop hook:",
124
+ hookErr?.message || hookErr
125
+ );
126
+ }
127
+ console.log(
128
+ `[qarpeo:audit] impersonation:stop admin=${adminId} target=${targetUserId} at=${timestamp}`
129
+ );
130
+ return { success: true, user: impersonator };
131
+ }
132
+ export async function createApiToken(event, input) {
133
+ const session = await getAuthSession(event);
134
+ const user = session?.user;
135
+ if (!user?.id) {
136
+ throw createError({ statusCode: 401, statusMessage: "Unauthorized" });
137
+ }
138
+ const name = input.name?.trim();
139
+ if (!name) {
140
+ throw createError({
141
+ statusCode: 400,
142
+ statusMessage: "Bad Request",
143
+ message: "Token name is required"
144
+ });
145
+ }
146
+ const d1 = getD1(event);
147
+ await ensureAuthTables(d1);
148
+ const randomBytes = new Uint8Array(32);
149
+ crypto.getRandomValues(randomBytes);
150
+ const rawSecret = Array.from(randomBytes).map((b) => b.toString(16).padStart(2, "0")).join("");
151
+ const rawToken = `${TOKEN_PREFIX}${rawSecret}`;
152
+ const tokenHash = await hashSessionToken(rawToken);
153
+ const scopes = input.scopes && input.scopes.length > 0 ? input.scopes : ["*"];
154
+ const now = Date.now();
155
+ const expiresAt = input.expiresInDays ? now + input.expiresInDays * 24 * 60 * 60 * 1e3 : null;
156
+ const id = crypto.randomUUID();
157
+ await d1.prepare(`
158
+ INSERT INTO _qarpeo_api_tokens (id, user_id, name, token_hash, scopes, expires_at, created_at)
159
+ VALUES (?, ?, ?, ?, ?, ?, ?)
160
+ `).bind(id, user.id, name, tokenHash, JSON.stringify(scopes), expiresAt, now).run();
161
+ return { id, token: rawToken, name, scopes, expiresAt, createdAt: now };
162
+ }
163
+ export async function listApiTokens(event) {
164
+ const session = await getAuthSession(event);
165
+ const user = session?.user;
166
+ if (!user?.id) {
167
+ throw createError({ statusCode: 401, statusMessage: "Unauthorized" });
168
+ }
169
+ const d1 = getD1(event);
170
+ await ensureAuthTables(d1);
171
+ const results = await d1.prepare(`
172
+ SELECT id, name, scopes, last_used_at as lastUsedAt, expires_at as expiresAt, created_at as createdAt
173
+ FROM _qarpeo_api_tokens
174
+ WHERE user_id = ?
175
+ ORDER BY created_at DESC
176
+ `).bind(user.id).all();
177
+ return (results.results || []).map((row) => ({
178
+ id: row.id,
179
+ name: row.name,
180
+ scopes: row.scopes ? JSON.parse(row.scopes) : ["*"],
181
+ lastUsedAt: row.lastUsedAt || null,
182
+ expiresAt: row.expiresAt || null,
183
+ createdAt: row.createdAt
184
+ }));
185
+ }
186
+ export async function revokeApiToken(event, tokenId) {
187
+ const session = await getAuthSession(event);
188
+ const user = session?.user;
189
+ if (!user?.id) {
190
+ throw createError({ statusCode: 401, statusMessage: "Unauthorized" });
191
+ }
192
+ const d1 = getD1(event);
193
+ await ensureAuthTables(d1);
194
+ const existing = await d1.prepare("SELECT user_id FROM _qarpeo_api_tokens WHERE id = ? LIMIT 1").bind(tokenId).first();
195
+ if (!existing) {
196
+ throw createError({ statusCode: 404, statusMessage: "Not Found", message: "Token not found" });
197
+ }
198
+ const isOwner = existing.user_id === user.id;
199
+ const isAdmin = user.role === "admin" || user.role === "super_admin";
200
+ if (!isOwner && !isAdmin) {
201
+ throw createError({ statusCode: 403, statusMessage: "Forbidden", message: "Permission denied" });
202
+ }
203
+ await d1.prepare("DELETE FROM _qarpeo_api_tokens WHERE id = ?").bind(tokenId).run();
204
+ return { success: true };
205
+ }
206
+ export async function verifyApiToken(event, rawToken) {
207
+ if (!rawToken.startsWith(TOKEN_PREFIX)) {
208
+ throw createError({
209
+ statusCode: 401,
210
+ statusMessage: "Unauthorized",
211
+ message: "Invalid token format"
212
+ });
213
+ }
214
+ let d1;
215
+ try {
216
+ d1 = getD1(event);
217
+ } catch {
218
+ throw createError({
219
+ statusCode: 500,
220
+ statusMessage: "Internal Server Error",
221
+ message: "Database unavailable"
222
+ });
223
+ }
224
+ const tokenHash = await hashSessionToken(rawToken);
225
+ const tokenRecord = await d1.prepare(
226
+ "SELECT id, user_id, scopes, expires_at FROM _qarpeo_api_tokens WHERE token_hash = ? LIMIT 1"
227
+ ).bind(tokenHash).first();
228
+ if (!tokenRecord) {
229
+ throw createError({
230
+ statusCode: 401,
231
+ statusMessage: "Unauthorized",
232
+ message: "Invalid or revoked token"
233
+ });
234
+ }
235
+ if (tokenRecord.expires_at && Date.now() > tokenRecord.expires_at) {
236
+ await d1.prepare("DELETE FROM _qarpeo_api_tokens WHERE id = ?").bind(tokenRecord.id).run();
237
+ throw createError({
238
+ statusCode: 401,
239
+ statusMessage: "Unauthorized",
240
+ message: "Token has expired"
241
+ });
242
+ }
243
+ try {
244
+ const ctx = event.context?.cloudflare?.ctx;
245
+ if (ctx?.waitUntil) {
246
+ ctx.waitUntil(
247
+ d1.prepare("UPDATE _qarpeo_api_tokens SET last_used_at = ? WHERE id = ?").bind(Date.now(), tokenRecord.id).run()
248
+ );
249
+ } else {
250
+ await d1.prepare("UPDATE _qarpeo_api_tokens SET last_used_at = ? WHERE id = ?").bind(Date.now(), tokenRecord.id).run();
251
+ }
252
+ } catch {
253
+ }
254
+ const dbUser = await d1.prepare(
255
+ "SELECT id, email, name, avatar_url, role, email_verified FROM _qarpeo_users WHERE id = ? LIMIT 1"
256
+ ).bind(tokenRecord.user_id).first();
257
+ if (!dbUser) {
258
+ throw createError({
259
+ statusCode: 401,
260
+ statusMessage: "Unauthorized",
261
+ message: "Token user not found"
262
+ });
263
+ }
264
+ const user = {
265
+ id: dbUser.id,
266
+ email: dbUser.email,
267
+ name: dbUser.name,
268
+ avatarUrl: dbUser.avatar_url,
269
+ role: dbUser.role,
270
+ emailVerified: Boolean(dbUser.email_verified)
271
+ };
272
+ const scopes = tokenRecord.scopes ? JSON.parse(tokenRecord.scopes) : ["*"];
273
+ return { user, tokenId: tokenRecord.id, scopes, userId: tokenRecord.user_id };
274
+ }
275
+ export function hasApiTokenScope(scopes, required) {
276
+ if (scopes.includes("*")) return true;
277
+ return scopes.includes(required);
278
+ }
279
+ export async function requireApiToken(event, options = {}) {
280
+ const authHeader = event.headers?.get?.("authorization") || "";
281
+ const raw = authHeader.startsWith("Bearer ") ? authHeader.slice(7).trim() : "";
282
+ if (!raw) {
283
+ throw createError({
284
+ statusCode: 401,
285
+ statusMessage: "Unauthorized",
286
+ message: "Authorization: Bearer <token> header is required"
287
+ });
288
+ }
289
+ const context = await verifyApiToken(event, raw);
290
+ if (options.scope && !hasApiTokenScope(context.scopes, options.scope)) {
291
+ throw createError({
292
+ statusCode: 403,
293
+ statusMessage: "Forbidden",
294
+ message: `Token does not have required scope: ${options.scope}`
295
+ });
296
+ }
297
+ return context;
298
+ }
@@ -0,0 +1,70 @@
1
+ import type { CFEvent } from "../../types/index";
2
+ export interface JobContext {
3
+ /** Unique message/job ID */
4
+ id: string;
5
+ /** Timestamp when the job was dispatched */
6
+ timestamp: Date;
7
+ /** Delivery attempt count (starts at 1) */
8
+ attempts: number;
9
+ /** Name of the job being executed */
10
+ jobName: string;
11
+ /** Manually request a retry for this message */
12
+ retry: () => void;
13
+ /** Manually acknowledge this message */
14
+ ack: () => void;
15
+ }
16
+ export type JobHandler<T = any> = (data: T, context: JobContext) => Promise<void> | void;
17
+ export interface JobDefinitionOptions {
18
+ /**
19
+ * Cloudflare Queue binding name override.
20
+ *
21
+ * @default "QUEUE"
22
+ */
23
+ binding?: string;
24
+ /**
25
+ * Maximum retry attempts before discarding or dead-lettering.
26
+ *
27
+ * @default 3
28
+ */
29
+ maxRetries?: number;
30
+ }
31
+ export interface JobDefinition<T = any> {
32
+ name: string;
33
+ handler: JobHandler<T>;
34
+ options?: JobDefinitionOptions;
35
+ }
36
+ export interface JobEnvelope<T = any> {
37
+ __jobName: string;
38
+ data: T;
39
+ id: string;
40
+ timestamp: number;
41
+ }
42
+ /**
43
+ * Define a typed background job handler.
44
+ *
45
+ * @example
46
+ * // server/jobs/send-welcome-email.ts
47
+ * export default defineJob("send-welcome-email", async (data: { userId: string }, ctx) => {
48
+ * // Background work here...
49
+ * })
50
+ */
51
+ export declare function defineJob<T = any>(nameOrHandler: string | JobHandler<T>, handlerOrOptions?: JobHandler<T> | JobDefinitionOptions, options?: JobDefinitionOptions): JobDefinition<T>;
52
+ /**
53
+ * Dispatch a background job for asynchronous processing on Cloudflare Queues.
54
+ *
55
+ * @example
56
+ * await dispatchJob("send-welcome-email", { userId: "user_123" })
57
+ */
58
+ export declare function dispatchJob<T = any>(name: string, data: T, options?: {
59
+ binding?: string;
60
+ delaySeconds?: number;
61
+ event?: CFEvent;
62
+ }): Promise<void>;
63
+ /**
64
+ * Dispatches an incoming Cloudflare Queue batch to registered job handlers. Used internally by the
65
+ * Qarpeo queue consumer plugin.
66
+ */
67
+ export declare function runJobsBatch(batch: any, jobModules: Record<string, any>, options?: {
68
+ customQueueHandler?: any;
69
+ maxRetries?: number;
70
+ }): Promise<void>;
@@ -0,0 +1,125 @@
1
+ import { useQueue } from "../../queue.mjs";
2
+ export function defineJob(nameOrHandler, handlerOrOptions, options) {
3
+ if (typeof nameOrHandler === "string") {
4
+ const handler2 = typeof handlerOrOptions === "function" ? handlerOrOptions : () => {
5
+ };
6
+ const opts2 = typeof handlerOrOptions === "object" ? handlerOrOptions : options;
7
+ return {
8
+ name: nameOrHandler,
9
+ handler: handler2,
10
+ options: opts2
11
+ };
12
+ }
13
+ const handler = nameOrHandler;
14
+ const opts = typeof handlerOrOptions === "object" ? handlerOrOptions : options;
15
+ return {
16
+ name: "",
17
+ handler,
18
+ options: opts
19
+ };
20
+ }
21
+ export async function dispatchJob(name, data, options) {
22
+ const bindingName = options?.binding || (typeof process !== "undefined" ? process.env.QARPEO_DEFAULT_QUEUE_BINDING : void 0) || "QUEUE";
23
+ const queueClient = useQueue(bindingName, options?.event);
24
+ const id = typeof crypto !== "undefined" && typeof crypto.randomUUID === "function" ? crypto.randomUUID() : `job_${Date.now()}_${Math.random().toString(36).slice(2, 9)}`;
25
+ const payload = {
26
+ __jobName: name,
27
+ data,
28
+ id,
29
+ timestamp: Date.now()
30
+ };
31
+ await queueClient.send(payload, {
32
+ delaySeconds: options?.delaySeconds
33
+ });
34
+ }
35
+ export async function runJobsBatch(batch, jobModules, options) {
36
+ if (!batch || !Array.isArray(batch.messages)) return;
37
+ const defaultMaxRetries = options?.maxRetries ?? 3;
38
+ const nonJobMessages = [];
39
+ for (const msg of batch.messages) {
40
+ const body = msg.body;
41
+ if (!body || typeof body !== "object" || !body.__jobName) {
42
+ nonJobMessages.push(msg);
43
+ continue;
44
+ }
45
+ const jobName = body.__jobName;
46
+ const rawExport = jobModules[jobName];
47
+ let jobDef = rawExport?.default || rawExport;
48
+ if (!jobDef) {
49
+ for (const key of Object.keys(jobModules)) {
50
+ const mod = jobModules[key]?.default || jobModules[key];
51
+ if (mod && (mod.name === jobName || key === jobName)) {
52
+ jobDef = mod;
53
+ break;
54
+ }
55
+ }
56
+ }
57
+ const handler = typeof jobDef === "function" ? jobDef : typeof jobDef?.handler === "function" ? jobDef.handler : null;
58
+ if (!handler) {
59
+ console.warn(
60
+ `[qarpeo:jobs] No handler registered for job "${jobName}". Discarding message ID: ${msg.id}`
61
+ );
62
+ try {
63
+ msg.ack?.();
64
+ } catch {
65
+ }
66
+ continue;
67
+ }
68
+ const maxRetries = jobDef?.options?.maxRetries ?? defaultMaxRetries;
69
+ const attempts = msg.attempts || 1;
70
+ let acknowledged = false;
71
+ let retried = false;
72
+ const context = {
73
+ id: msg.id || body.id || `msg_${Date.now()}`,
74
+ timestamp: msg.timestamp ? new Date(msg.timestamp) : new Date(body.timestamp || Date.now()),
75
+ attempts,
76
+ jobName,
77
+ retry: () => {
78
+ retried = true;
79
+ msg.retry?.();
80
+ },
81
+ ack: () => {
82
+ acknowledged = true;
83
+ msg.ack?.();
84
+ }
85
+ };
86
+ try {
87
+ await handler(body.data, context);
88
+ if (!acknowledged && !retried) {
89
+ msg.ack?.();
90
+ }
91
+ } catch (err) {
92
+ console.error(
93
+ `[qarpeo:jobs] Error processing job "${jobName}" (attempt ${attempts}/${maxRetries}):`,
94
+ err
95
+ );
96
+ if (!acknowledged && !retried) {
97
+ if (attempts < maxRetries) {
98
+ msg.retry?.();
99
+ } else {
100
+ console.error(
101
+ `[qarpeo:jobs] Job "${jobName}" failed after ${attempts} attempts. Discarding.`
102
+ );
103
+ msg.ack?.();
104
+ }
105
+ }
106
+ }
107
+ }
108
+ if (nonJobMessages.length > 0 && typeof options?.customQueueHandler === "function") {
109
+ try {
110
+ const subBatch = {
111
+ ...batch,
112
+ messages: nonJobMessages
113
+ };
114
+ await options.customQueueHandler(subBatch);
115
+ } catch (err) {
116
+ console.error("[qarpeo:queue] Error in custom queueHandler:", err);
117
+ for (const msg of nonJobMessages) {
118
+ try {
119
+ msg.retry?.();
120
+ } catch {
121
+ }
122
+ }
123
+ }
124
+ }
125
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Shared in-memory KV store for local development and preview mode. Attached to globalThis to
3
+ * ensure cross-chunk persistence in Nitro/Vite.
4
+ */
5
+ export interface DevMockKvEntry {
6
+ value: string;
7
+ expiration?: number;
8
+ }
9
+ export declare function getDevMockKvStore(): Map<string, DevMockKvEntry>;
@@ -0,0 +1,32 @@
1
+ const GLOBAL_KV_KEY = "__qarpeo_dev_mock_kv__";
2
+ export function getDevMockKvStore() {
3
+ const g = globalThis;
4
+ if (!g[GLOBAL_KV_KEY]) {
5
+ g[GLOBAL_KV_KEY] = /* @__PURE__ */ new Map([
6
+ [
7
+ "session:sess_usr_9921",
8
+ {
9
+ value: JSON.stringify({ userId: "usr_1", role: "admin" }),
10
+ expiration: Math.floor(Date.now() / 1e3) + 86400
11
+ }
12
+ ],
13
+ [
14
+ "cache:swr:navigation",
15
+ {
16
+ value: JSON.stringify({ items: ["/docs", "/blog", "/pricing"] }),
17
+ expiration: Math.floor(Date.now() / 1e3) + 3600
18
+ }
19
+ ],
20
+ ["ratelimit:ip:127.0.0.1", { value: "14", expiration: Math.floor(Date.now() / 1e3) + 42 }],
21
+ [
22
+ "domain:acme.qarpeo.dev",
23
+ { value: "tenant_acme_corp", expiration: Math.floor(Date.now() / 1e3) + 86400 * 7 }
24
+ ],
25
+ [
26
+ "domain:portal.example.com",
27
+ { value: "tenant_acme_corp", expiration: Math.floor(Date.now() / 1e3) + 86400 * 7 }
28
+ ]
29
+ ]);
30
+ }
31
+ return g[GLOBAL_KV_KEY];
32
+ }
@@ -0,0 +1,62 @@
1
+ import type { MailSuppressionReason, MailSuppressionRecord, MailSuppressionType, MailUnsubscribeOptions } from "../../../types";
2
+ export declare function ensureMailSuppressionsTable(db: any): Promise<void>;
3
+ /**
4
+ * Generates an HMAC-signed one-click unsubscribe token.
5
+ */
6
+ export declare function generateUnsubscribeToken(email: string, secret?: string): Promise<string>;
7
+ /**
8
+ * Verifies an HMAC-signed unsubscribe token and extracts the email address.
9
+ */
10
+ export declare function verifyUnsubscribeToken(token: string, secret?: string): Promise<string | null>;
11
+ /**
12
+ * Builds RFC 2369 and RFC 8058 compliant `List-Unsubscribe` headers.
13
+ */
14
+ export declare function buildListUnsubscribeHeaders(options: {
15
+ to: string;
16
+ baseUrl: string;
17
+ config?: MailUnsubscribeOptions;
18
+ secret?: string;
19
+ }): Promise<Record<string, string>>;
20
+ /**
21
+ * Adds an email address to the suppression list.
22
+ */
23
+ export declare function suppressEmail(event: any, options: {
24
+ email: string;
25
+ reason?: MailSuppressionReason;
26
+ type?: MailSuppressionType;
27
+ source?: string;
28
+ metadata?: Record<string, any>;
29
+ }): Promise<MailSuppressionRecord>;
30
+ /**
31
+ * Checks whether an email address is suppressed.
32
+ */
33
+ export declare function isEmailSuppressed(event: any, email: string): Promise<{
34
+ suppressed: boolean;
35
+ reason?: MailSuppressionReason;
36
+ type?: MailSuppressionType;
37
+ record?: MailSuppressionRecord;
38
+ }>;
39
+ /**
40
+ * Removes an email address from the suppression list.
41
+ */
42
+ export declare function unsuppressEmail(event: any, email: string): Promise<boolean>;
43
+ /**
44
+ * Lists suppressed emails with pagination and optional search filter.
45
+ */
46
+ export declare function listSuppressedEmails(event: any, options?: {
47
+ limit?: number;
48
+ offset?: number;
49
+ search?: string;
50
+ type?: string;
51
+ reason?: string;
52
+ }): Promise<{
53
+ items: MailSuppressionRecord[];
54
+ total: number;
55
+ }>;
56
+ /**
57
+ * Tracks soft bounces and promotes to suppression if threshold is reached.
58
+ */
59
+ export declare function recordSoftBounce(event: any, email: string, threshold?: number): Promise<{
60
+ suppressed: boolean;
61
+ count: number;
62
+ }>;