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,1085 @@
1
+ #!/usr/bin/env node
2
+ import { defineCommand, runMain } from 'citty';
3
+ import { spawnSync } from 'node:child_process';
4
+ import { existsSync, mkdirSync, writeFileSync, readdirSync, statSync, readFileSync } from 'node:fs';
5
+ import { loadNuxtConfig } from '@nuxt/kit';
6
+ import { resolve, join } from 'pathe';
7
+ import { f as findSchemaFiles, r as resolveBinaryPath, e as ensurePackage, g as getLocalDatabaseContext, a as getJiti, b as resolveProjectName, c as checkDrizzleVersion, d as findLocalD1Database } from '../chunks/wrangler.mjs';
8
+ import { reset, seed } from 'drizzle-seed';
9
+ import 'node:module';
10
+ import 'drizzle-orm/node-sqlite';
11
+ import 'node:process';
12
+ import 'node:readline/promises';
13
+ import 'node:url';
14
+ import 'node:fs/promises';
15
+ import 'defu';
16
+
17
+ const generate = defineCommand({
18
+ meta: {
19
+ name: "generate",
20
+ description: "Generate SQL migrations from your Drizzle database schema"
21
+ },
22
+ args: {
23
+ name: {
24
+ type: "string",
25
+ description: "Migration file name (e.g. --name add_users)"
26
+ },
27
+ custom: {
28
+ type: "boolean",
29
+ description: "Create an empty custom SQL migration file",
30
+ default: false
31
+ },
32
+ cwd: {
33
+ type: "string",
34
+ description: "Working directory",
35
+ default: "."
36
+ }
37
+ },
38
+ async run({ args }) {
39
+ const cwd = resolve(process.cwd(), args.cwd);
40
+ console.log("\u26A1 [qarpeo] Preparing database schema for migration generation...");
41
+ const nuxtConfig = await loadNuxtConfig({ cwd });
42
+ const layers = nuxtConfig._layers || [{ cwd, config: nuxtConfig }];
43
+ const schemaFiles = findSchemaFiles(layers);
44
+ if (schemaFiles.length === 0) {
45
+ console.error(
46
+ "\u274C [qarpeo] No database schema files found. Create a schema file at server/db/schema.ts first."
47
+ );
48
+ process.exit(1);
49
+ }
50
+ const qarpeoDir = resolve(cwd, ".qarpeo");
51
+ const schemaPath = resolve(qarpeoDir, "schema.ts");
52
+ if (!existsSync(qarpeoDir)) {
53
+ mkdirSync(qarpeoDir, { recursive: true });
54
+ }
55
+ const schemaLines = ["// Auto-generated by qarpeo across all Nuxt layers"];
56
+ const nuxtDir = resolve(cwd, ".nuxt/qarpeo");
57
+ const builtInSchemas = [
58
+ { name: "auth", path: resolve(nuxtDir, "auth-schema.ts") },
59
+ { name: "cms", path: resolve(nuxtDir, "cms-schema.ts") },
60
+ { name: "payments", path: resolve(nuxtDir, "payments-schema.ts") },
61
+ { name: "tenants", path: resolve(nuxtDir, "tenants-schema.ts") }
62
+ ];
63
+ for (const s of builtInSchemas) {
64
+ if (existsSync(s.path)) {
65
+ schemaLines.push(`export * from "${s.path.replace(/\\/g, "/").replace(/\.ts$/, "")}";`);
66
+ }
67
+ }
68
+ for (const f of schemaFiles) {
69
+ schemaLines.push(`export * from "${f.replace(/\\/g, "/").replace(/\.ts$/, "")}";`);
70
+ }
71
+ const schemaContent = schemaLines.join("\n");
72
+ writeFileSync(schemaPath, schemaContent, "utf-8");
73
+ const serverDir = nuxtConfig.serverDir || resolve(nuxtConfig.rootDir || cwd, "server");
74
+ const migrationsDir = resolve(serverDir, "db/migrations");
75
+ if (!existsSync(migrationsDir)) {
76
+ mkdirSync(migrationsDir, { recursive: true });
77
+ }
78
+ console.log(`\u{1F4E6} [qarpeo] Discovered ${schemaFiles.length} schema file(s):`);
79
+ for (const f of schemaFiles) {
80
+ console.log(` - ${f}`);
81
+ }
82
+ const drizzleKitArgs = [
83
+ "generate",
84
+ "--dialect",
85
+ "sqlite",
86
+ "--schema",
87
+ schemaPath,
88
+ "--out",
89
+ migrationsDir
90
+ ];
91
+ if (args.name) {
92
+ drizzleKitArgs.push("--name", args.name);
93
+ }
94
+ if (args.custom) {
95
+ drizzleKitArgs.push("--custom");
96
+ }
97
+ let execPath = resolveBinaryPath("drizzle-kit", cwd);
98
+ if (!execPath) {
99
+ const ok = await ensurePackage("drizzle-kit@1.0.0-rc.5", {
100
+ cwd,
101
+ dev: true,
102
+ purpose: "generating database migrations"
103
+ });
104
+ if (!ok) {
105
+ process.exit(1);
106
+ }
107
+ execPath = resolveBinaryPath("drizzle-kit", cwd) || (process.platform === "win32" ? "drizzle-kit.cmd" : "drizzle-kit");
108
+ }
109
+ console.log("\u{1F680} [qarpeo] Running drizzle-kit generate...");
110
+ const result = spawnSync(execPath, drizzleKitArgs, {
111
+ cwd,
112
+ stdio: "inherit",
113
+ shell: process.platform === "win32"
114
+ // .cmd files require shell:true on Windows
115
+ });
116
+ if (result.status !== 0) {
117
+ process.exit(result.status ?? 1);
118
+ }
119
+ console.log(`\u2705 [qarpeo] Migrations successfully generated in: ${migrationsDir}`);
120
+ }
121
+ });
122
+
123
+ const cleanCommand = defineCommand({
124
+ meta: {
125
+ name: "clean",
126
+ description: "Clean/truncate all tables in local Cloudflare D1 database (reset data)"
127
+ },
128
+ args: {
129
+ remote: {
130
+ type: "boolean",
131
+ description: "Restricted \u2014 database cleaning is blocked on production to prevent data loss",
132
+ default: false
133
+ },
134
+ cwd: {
135
+ type: "string",
136
+ description: "Working directory",
137
+ default: "."
138
+ }
139
+ },
140
+ async run({ args }) {
141
+ if (args.remote) {
142
+ console.error(
143
+ "\u274C [qarpeo] `qp db:clean` is restricted to local development to protect production data (Decision 15)."
144
+ );
145
+ process.exit(1);
146
+ }
147
+ const cwd = resolve(process.cwd(), args.cwd);
148
+ const nuxtConfig = await loadNuxtConfig({ cwd });
149
+ console.log("\u23F3 [qarpeo] Connecting to local D1 database...");
150
+ let ctx;
151
+ try {
152
+ ctx = await getLocalDatabaseContext(cwd, nuxtConfig);
153
+ } catch (err) {
154
+ console.error(`\u274C [qarpeo] ${err?.message || err}`);
155
+ process.exit(1);
156
+ }
157
+ const { db, schema, sqlitePath } = ctx;
158
+ try {
159
+ console.log("\u23F3 [qarpeo] Resetting tables with drizzle-seed...");
160
+ await reset(db, schema);
161
+ console.log(
162
+ `\u2705 [qarpeo] Local D1 database cleanly reset (0 rows across all tables): ${sqlitePath}`
163
+ );
164
+ } catch (err) {
165
+ console.error(`\u274C [qarpeo] Failed to reset database: ${err?.message || err}`);
166
+ process.exit(1);
167
+ }
168
+ }
169
+ });
170
+
171
+ const migrate = defineCommand({
172
+ meta: {
173
+ name: "migrate",
174
+ description: "Apply database migrations to Cloudflare D1 (local or remote)"
175
+ },
176
+ args: {
177
+ remote: {
178
+ type: "boolean",
179
+ description: "Apply migrations to remote Cloudflare D1 database (production)",
180
+ default: false
181
+ },
182
+ prune: {
183
+ type: "boolean",
184
+ description: "Safely drop deprecated _qarpeo_* auth tables when corresponding features are disabled in nuxt.config.ts",
185
+ default: false
186
+ },
187
+ cwd: {
188
+ type: "string",
189
+ description: "Working directory",
190
+ default: "."
191
+ }
192
+ },
193
+ async run({ args }) {
194
+ const cwd = resolve(process.cwd(), args.cwd);
195
+ const nuxtConfig = await loadNuxtConfig({ cwd });
196
+ const qarpeoOpts = nuxtConfig.qarpeo || {};
197
+ const dbOpts = typeof qarpeoOpts.db === "object" ? qarpeoOpts.db : {};
198
+ const dbBinding = dbOpts.binding || process.env.QARPEO_DB_BINDING || "DB";
199
+ const dbName = dbBinding;
200
+ console.log(
201
+ `\u26A1 [qarpeo] Applying migrations to Cloudflare D1 (${args.remote ? "remote" : "local dev"})...`
202
+ );
203
+ let execPath = resolveBinaryPath("wrangler", cwd);
204
+ if (!execPath) {
205
+ const ok = await ensurePackage("wrangler", {
206
+ cwd,
207
+ dev: true,
208
+ purpose: "applying Cloudflare D1 migrations"
209
+ });
210
+ if (!ok) {
211
+ process.exit(1);
212
+ }
213
+ execPath = resolveBinaryPath("wrangler", cwd) || (process.platform === "win32" ? "wrangler.cmd" : "wrangler");
214
+ }
215
+ let wranglerConfigPath = null;
216
+ if (existsSync(resolve(cwd, "wrangler.jsonc"))) {
217
+ wranglerConfigPath = resolve(cwd, "wrangler.jsonc");
218
+ } else if (existsSync(resolve(cwd, "wrangler.json"))) {
219
+ wranglerConfigPath = resolve(cwd, "wrangler.json");
220
+ } else if (existsSync(resolve(cwd, ".nuxt/wrangler.json"))) {
221
+ wranglerConfigPath = resolve(cwd, ".nuxt/wrangler.json");
222
+ } else {
223
+ const { generateDevWranglerConfig } = await import('../chunks/wrangler.mjs').then(function (n) { return n.w; });
224
+ const buildDir = resolve(cwd, ".nuxt");
225
+ wranglerConfigPath = await generateDevWranglerConfig(
226
+ {
227
+ options: {
228
+ ...nuxtConfig,
229
+ rootDir: cwd,
230
+ buildDir
231
+ }
232
+ },
233
+ {
234
+ ...qarpeoOpts,
235
+ db: qarpeoOpts.db ?? true
236
+ }
237
+ );
238
+ }
239
+ const wranglerArgs = ["d1", "migrations", "apply", dbName];
240
+ if (wranglerConfigPath) {
241
+ wranglerArgs.push("-c", wranglerConfigPath);
242
+ }
243
+ if (args.remote) {
244
+ wranglerArgs.push("--remote");
245
+ } else {
246
+ wranglerArgs.push("--local", "--persist-to", resolve(cwd, ".wrangler/state"));
247
+ }
248
+ console.log(`\u{1F680} [qarpeo] Running: wrangler ${wranglerArgs.join(" ")}`);
249
+ const result = spawnSync(execPath, wranglerArgs, {
250
+ cwd,
251
+ stdio: "inherit",
252
+ shell: process.platform === "win32"
253
+ // .cmd files require shell:true on Windows
254
+ });
255
+ if (result.status !== 0) {
256
+ process.exit(result.status ?? 1);
257
+ }
258
+ console.log(`\u2705 [qarpeo] Migrations applied successfully!`);
259
+ if (args.prune) {
260
+ const { getActiveAuthTableNames, ALL_AUTH_TABLE_NAMES } = await import('../chunks/auth-schema.mjs');
261
+ const { findLocalD1Database } = await import('../chunks/wrangler.mjs').then(function (n) { return n.n; });
262
+ const authConfig = nuxtConfig.qarpeo?.auth || nuxtConfig.auth;
263
+ const activeTables = getActiveAuthTableNames(authConfig);
264
+ const deprecatedTables = ALL_AUTH_TABLE_NAMES.filter(
265
+ (tbl) => !activeTables.includes(tbl)
266
+ );
267
+ if (deprecatedTables.length > 0) {
268
+ console.log(`
269
+ \u{1F9F9} [qarpeo] Checking for deprecated auth tables to prune...`);
270
+ if (!args.remote) {
271
+ const sqlitePath = findLocalD1Database(cwd);
272
+ if (sqlitePath) {
273
+ try {
274
+ const { DatabaseSync } = await import('node:sqlite');
275
+ const sqlite = new DatabaseSync(sqlitePath);
276
+ for (const tbl of deprecatedTables) {
277
+ try {
278
+ sqlite.exec(`DROP TABLE IF EXISTS ${tbl};`);
279
+ console.log(` \u2713 Dropped table: ${tbl}`);
280
+ } catch {
281
+ }
282
+ }
283
+ sqlite.close();
284
+ console.log(`\u2705 [qarpeo] Local auth tables pruned successfully.`);
285
+ } catch (err) {
286
+ console.warn(` \u26A0\uFE0F Could not prune local tables: ${err.message}`);
287
+ }
288
+ }
289
+ } else {
290
+ for (const tbl of deprecatedTables) {
291
+ const dropArgs = [
292
+ "d1",
293
+ "execute",
294
+ dbName,
295
+ "--remote",
296
+ `--command=DROP TABLE IF EXISTS ${tbl};`
297
+ ];
298
+ if (wranglerConfigPath) dropArgs.push("-c", wranglerConfigPath);
299
+ spawnSync(execPath, dropArgs, { cwd, stdio: "inherit", shell: process.platform === "win32" });
300
+ console.log(` \u2713 Dropped remote table: ${tbl}`);
301
+ }
302
+ console.log(`\u2705 [qarpeo] Remote auth tables pruned successfully.`);
303
+ }
304
+ } else {
305
+ console.log(`\u2728 [qarpeo] All auth tables are active. Nothing to prune.`);
306
+ }
307
+ }
308
+ }
309
+ });
310
+
311
+ const push = defineCommand({
312
+ meta: {
313
+ name: "push",
314
+ description: "Directly push schema changes to local D1 SQLite database (prototyping)"
315
+ },
316
+ args: {
317
+ force: {
318
+ type: "boolean",
319
+ description: "Auto-approve all statements",
320
+ default: false
321
+ },
322
+ cwd: {
323
+ type: "string",
324
+ description: "Working directory",
325
+ default: "."
326
+ }
327
+ },
328
+ async run({ args }) {
329
+ const cwd = resolve(process.cwd(), args.cwd);
330
+ console.log("\u26A1 [qarpeo] Preparing database schema for push...");
331
+ const nuxtConfig = await loadNuxtConfig({ cwd });
332
+ const layers = nuxtConfig._layers || [{ cwd, config: nuxtConfig }];
333
+ const schemaFiles = findSchemaFiles(layers);
334
+ if (schemaFiles.length === 0) {
335
+ console.error("\u274C [qarpeo] No schema files found in server/db/schema.ts");
336
+ process.exit(1);
337
+ }
338
+ const qarpeoDir = resolve(cwd, ".qarpeo");
339
+ const schemaPath = resolve(qarpeoDir, "schema.ts");
340
+ if (!existsSync(qarpeoDir)) {
341
+ mkdirSync(qarpeoDir, { recursive: true });
342
+ }
343
+ const schemaContent = [
344
+ "// Auto-generated by qarpeo across all Nuxt layers",
345
+ ...schemaFiles.map((f) => `export * from "${f.replace(/\\/g, "/").replace(/\.ts$/, "")}";`)
346
+ ].join("\n");
347
+ writeFileSync(schemaPath, schemaContent, "utf-8");
348
+ let execPath = resolveBinaryPath("drizzle-kit", cwd);
349
+ if (!execPath) {
350
+ const ok = await ensurePackage("drizzle-kit@1.0.0-rc.5", {
351
+ cwd,
352
+ dev: true,
353
+ purpose: "pushing schema changes to SQLite"
354
+ });
355
+ if (!ok) {
356
+ process.exit(1);
357
+ }
358
+ execPath = resolveBinaryPath("drizzle-kit", cwd) || (process.platform === "win32" ? "drizzle-kit.cmd" : "drizzle-kit");
359
+ }
360
+ const drizzleArgs = ["push", "--dialect", "sqlite", "--schema", schemaPath];
361
+ if (args.force) {
362
+ drizzleArgs.push("--force");
363
+ }
364
+ console.log("\u{1F680} [qarpeo] Running drizzle-kit push...");
365
+ const result = spawnSync(execPath, drizzleArgs, {
366
+ cwd,
367
+ stdio: "inherit",
368
+ shell: process.platform === "win32"
369
+ // .cmd files require shell:true on Windows
370
+ });
371
+ if (result.status !== 0) {
372
+ process.exit(result.status ?? 1);
373
+ }
374
+ console.log("\u2705 [qarpeo] Schema push completed!");
375
+ }
376
+ });
377
+
378
+ const seedCommand = defineCommand({
379
+ meta: {
380
+ name: "seed",
381
+ description: "Seed local Cloudflare D1 database with mock data or custom seed script"
382
+ },
383
+ args: {
384
+ clean: {
385
+ type: "boolean",
386
+ description: "Clean/truncate existing records before seeding",
387
+ default: false
388
+ },
389
+ reset: {
390
+ type: "boolean",
391
+ description: "Alias for --clean",
392
+ default: false
393
+ },
394
+ count: {
395
+ type: "string",
396
+ description: "Number of mock rows to generate per table (defaults to 10)",
397
+ default: "10"
398
+ },
399
+ seedNumber: {
400
+ type: "string",
401
+ description: "Optional deterministic seed number for reproducible data"
402
+ },
403
+ remote: {
404
+ type: "boolean",
405
+ description: "Restricted \u2014 seeding is blocked on production to prevent data loss",
406
+ default: false
407
+ },
408
+ cwd: {
409
+ type: "string",
410
+ description: "Working directory",
411
+ default: "."
412
+ }
413
+ },
414
+ async run({ args }) {
415
+ if (args.remote) {
416
+ console.error(
417
+ "\u274C [qarpeo] `qp db:seed` is restricted to local development to protect production data (Decision 15)."
418
+ );
419
+ process.exit(1);
420
+ }
421
+ const cwd = resolve(process.cwd(), args.cwd);
422
+ const nuxtConfig = await loadNuxtConfig({ cwd });
423
+ console.log("\u{1F331} [qarpeo] Preparing database for seeding...");
424
+ let ctx;
425
+ try {
426
+ ctx = await getLocalDatabaseContext(cwd, nuxtConfig);
427
+ } catch (err) {
428
+ console.error(`\u274C [qarpeo] ${err?.message || err}`);
429
+ process.exit(1);
430
+ }
431
+ const { db, schema, customSeedPath, sqlitePath } = ctx;
432
+ const shouldClean = Boolean(args.clean || args.reset);
433
+ if (shouldClean) {
434
+ console.log("\u23F3 [qarpeo] Resetting existing records...");
435
+ await reset(db, schema);
436
+ console.log("\u2714 [qarpeo] Existing tables cleanly truncated.");
437
+ }
438
+ if (customSeedPath) {
439
+ console.log(`\u{1F680} [qarpeo] Running custom seed script: ${customSeedPath}`);
440
+ try {
441
+ const jiti = await getJiti(cwd);
442
+ const userSeed = await jiti.import(customSeedPath);
443
+ const seedFn = userSeed.default || userSeed.seed || userSeed;
444
+ if (typeof seedFn === "function") {
445
+ await seedFn({ db, schema, seed, reset });
446
+ console.log("\u2705 [qarpeo] Custom seed script completed successfully!");
447
+ return;
448
+ } else {
449
+ console.log(
450
+ "\u2139 [qarpeo] Custom seed script does not export a default function. Falling back to drizzle-seed."
451
+ );
452
+ }
453
+ } catch (err) {
454
+ console.error(`\u274C [qarpeo] Error running custom seed script: ${err?.message || err}`);
455
+ process.exit(1);
456
+ }
457
+ }
458
+ const count = parseInt(args.count || "10", 10);
459
+ const seedNumber = args.seedNumber ? parseInt(args.seedNumber, 10) : void 0;
460
+ console.log(`\u{1F331} [qarpeo] Generating mock data with drizzle-seed (${count} rows per table)...`);
461
+ try {
462
+ await seed(db, schema, {
463
+ count,
464
+ seed: seedNumber
465
+ });
466
+ console.log(`\u2705 [qarpeo] Successfully seeded local D1 database: ${sqlitePath}`);
467
+ } catch (err) {
468
+ console.error(`\u274C [qarpeo] Error during drizzle-seed: ${err?.message || err}`);
469
+ process.exit(1);
470
+ }
471
+ }
472
+ });
473
+
474
+ const db = defineCommand({
475
+ meta: {
476
+ name: "db",
477
+ description: "Manage Cloudflare D1 database, Drizzle ORM migrations, and seeding"
478
+ },
479
+ subCommands: {
480
+ generate,
481
+ migrate,
482
+ push,
483
+ seed: seedCommand,
484
+ clean: cleanCommand,
485
+ reset: cleanCommand
486
+ }
487
+ });
488
+
489
+ function loadDotEnv(cwd) {
490
+ const envPath = join(cwd, ".env");
491
+ if (!existsSync(envPath)) return;
492
+ try {
493
+ const raw = readFileSync(envPath, "utf8");
494
+ for (const line of raw.split(/\r?\n/)) {
495
+ const trimmed = line.trim();
496
+ if (!trimmed || trimmed.startsWith("#")) continue;
497
+ const eqIdx = trimmed.indexOf("=");
498
+ if (eqIdx === -1) continue;
499
+ const key = trimmed.slice(0, eqIdx).trim();
500
+ let val = trimmed.slice(eqIdx + 1).trim();
501
+ if (val.startsWith('"') && val.endsWith('"') || val.startsWith("'") && val.endsWith("'")) {
502
+ val = val.slice(1, -1);
503
+ }
504
+ if (process.env[key] === void 0) {
505
+ process.env[key] = val;
506
+ }
507
+ }
508
+ } catch {
509
+ }
510
+ }
511
+ const doctor = defineCommand({
512
+ meta: {
513
+ name: "doctor",
514
+ description: "Validate Wrangler config, Cloudflare bindings, migrations, and security before deploy"
515
+ },
516
+ args: {
517
+ remote: {
518
+ type: "boolean",
519
+ description: "Validate against Cloudflare production/remote deployment criteria",
520
+ default: false
521
+ },
522
+ cwd: {
523
+ type: "string",
524
+ description: "Working directory",
525
+ default: "."
526
+ }
527
+ },
528
+ async run({ args }) {
529
+ const cwd = resolve(process.cwd(), args.cwd);
530
+ loadDotEnv(cwd);
531
+ const isRemote = Boolean(args.remote);
532
+ const categories = [];
533
+ console.log(`
534
+ \u26A1 Qarpeo Doctor \u2014 System & Deployment Readiness`);
535
+ console.log(` Working directory: ${cwd}`);
536
+ console.log(
537
+ ` Target mode: ${isRemote ? "\u2601\uFE0F Production (--remote)" : "\u{1F4BB} Local Development"}
538
+ `
539
+ );
540
+ const envItems = [];
541
+ const nodeVer = process.version;
542
+ const major = parseInt(nodeVer.replace(/^v/, "").split(".")[0] || "0", 10);
543
+ if (major >= 20) {
544
+ envItems.push({
545
+ status: "pass",
546
+ title: "Node.js Version",
547
+ message: `${nodeVer} (compatible)`
548
+ });
549
+ } else if (major >= 18) {
550
+ envItems.push({
551
+ status: "warn",
552
+ title: "Node.js Version",
553
+ message: `${nodeVer} (Node 20+ strongly recommended for Cloudflare Workers compatibility)`
554
+ });
555
+ } else {
556
+ envItems.push({
557
+ status: "fail",
558
+ title: "Node.js Version",
559
+ message: `${nodeVer} (unsupported \u2014 requires Node 18.20.0+ or Node 20+)`,
560
+ help: "Upgrade your Node.js runtime."
561
+ });
562
+ }
563
+ const wranglerBin = resolveBinaryPath("wrangler", cwd);
564
+ if (wranglerBin) {
565
+ try {
566
+ const proc = process.platform === "win32" ? spawnSync(`"${wranglerBin}" --version`, {
567
+ cwd,
568
+ encoding: "utf8",
569
+ shell: true
570
+ }) : spawnSync(wranglerBin, ["--version"], {
571
+ cwd,
572
+ encoding: "utf8"
573
+ });
574
+ const out = proc.stdout ? proc.stdout.trim() : "";
575
+ envItems.push({
576
+ status: "pass",
577
+ title: "Wrangler CLI",
578
+ message: out || "installed"
579
+ });
580
+ } catch {
581
+ envItems.push({
582
+ status: "pass",
583
+ title: "Wrangler CLI",
584
+ message: "installed"
585
+ });
586
+ }
587
+ } else {
588
+ envItems.push({
589
+ status: isRemote ? "fail" : "warn",
590
+ title: "Wrangler CLI",
591
+ message: "Not found locally in node_modules or PATH",
592
+ help: "Install wrangler as a dev dependency: pnpm add -D wrangler"
593
+ });
594
+ }
595
+ categories.push({
596
+ title: "Environment & Tooling",
597
+ icon: "\u{1F6E0}\uFE0F ",
598
+ items: envItems
599
+ });
600
+ const configItems = [];
601
+ let nuxtConfig = null;
602
+ try {
603
+ nuxtConfig = await loadNuxtConfig({ cwd });
604
+ configItems.push({
605
+ status: "pass",
606
+ title: "Nuxt Configuration",
607
+ message: "nuxt.config successfully loaded"
608
+ });
609
+ } catch (err) {
610
+ configItems.push({
611
+ status: "fail",
612
+ title: "Nuxt Configuration",
613
+ message: `Failed to load nuxt.config: ${err.message}`,
614
+ help: "Check nuxt.config.ts for syntax errors or invalid imports."
615
+ });
616
+ }
617
+ const qarpeoConfig = nuxtConfig?.qarpeo || {};
618
+ const modules = nuxtConfig?.modules || [];
619
+ const hasQarpeo = modules.some(
620
+ (m) => typeof m === "string" ? m === "qarpeo" || m.includes("qarpeo") || m.includes("src/module") || m.includes("dist/module") : m?.name === "qarpeo" || m?.name?.includes("qarpeo")
621
+ ) || Boolean(nuxtConfig?.qarpeo);
622
+ if (hasQarpeo) {
623
+ configItems.push({
624
+ status: "pass",
625
+ title: "Module Registration",
626
+ message: "'qarpeo' is registered in nuxt.config modules"
627
+ });
628
+ } else {
629
+ configItems.push({
630
+ status: "fail",
631
+ title: "Module Registration",
632
+ message: "'qarpeo' is not registered in modules array",
633
+ help: "Add 'qarpeo' to the `modules` list in nuxt.config.ts."
634
+ });
635
+ }
636
+ if (qarpeoConfig.cf) {
637
+ configItems.push({
638
+ status: "warn",
639
+ title: "Legacy Config: `cf`",
640
+ message: "Deprecated 'qarpeo.cf' object detected. Options have moved directly to top-level 'qarpeo: {}'",
641
+ help: "Replace 'qarpeo: { cf: { ... } }' with top-level keys like 'qarpeo: { db: true, kv: true }'."
642
+ });
643
+ }
644
+ if (qarpeoConfig.storage) {
645
+ configItems.push({
646
+ status: "warn",
647
+ title: "Deprecated Option: `storage`",
648
+ message: "'storage' option is deprecated. Use 'blob' instead.",
649
+ help: "Replace 'qarpeo: { storage: true }' with 'qarpeo: { blob: true }'."
650
+ });
651
+ }
652
+ const featureKeys = [
653
+ "db",
654
+ "blob",
655
+ "kv",
656
+ "auth",
657
+ "cms",
658
+ "realtime",
659
+ "payments",
660
+ "ai",
661
+ "vectorize",
662
+ "queue",
663
+ "analytics",
664
+ "ratelimit",
665
+ "hyperdrive",
666
+ "browser",
667
+ "do",
668
+ "cron",
669
+ "email",
670
+ "multitenant"
671
+ ];
672
+ const enabledFeatures = featureKeys.filter((k) => Boolean(qarpeoConfig[k]));
673
+ configItems.push({
674
+ status: "info",
675
+ title: "Active Features",
676
+ message: enabledFeatures.length > 0 ? enabledFeatures.join(", ") : "None explicitly enabled (running bare runtime)"
677
+ });
678
+ const projectName = resolveProjectName({ options: { ...nuxtConfig, rootDir: cwd } }, qarpeoConfig);
679
+ configItems.push({
680
+ status: "info",
681
+ title: "Project / Worker Name",
682
+ message: projectName
683
+ });
684
+ categories.push({
685
+ title: "Nuxt & Qarpeo Configuration",
686
+ icon: "\u2699\uFE0F ",
687
+ items: configItems
688
+ });
689
+ const bindingItems = [];
690
+ let wranglerPath = null;
691
+ for (const f of ["wrangler.jsonc", "wrangler.json", ".nuxt/wrangler.json"]) {
692
+ const p = resolve(cwd, f);
693
+ if (existsSync(p)) {
694
+ wranglerPath = p;
695
+ break;
696
+ }
697
+ }
698
+ if (wranglerPath) {
699
+ bindingItems.push({
700
+ status: "pass",
701
+ title: "Wrangler Configuration",
702
+ message: `Found ${join(".", wranglerPath.replace(cwd, "")).replace(/^[\\/]/, "")}`
703
+ });
704
+ } else {
705
+ bindingItems.push({
706
+ status: "info",
707
+ title: "Wrangler Configuration",
708
+ message: "No root wrangler.json found; Qarpeo generates .nuxt/wrangler.json automatically on dev/build"
709
+ });
710
+ }
711
+ const cfAccountId = process.env.CLOUDFLARE_ACCOUNT_ID || process.env.CF_ACCOUNT_ID;
712
+ if (cfAccountId && cfAccountId !== "dummy-dev-account-id") {
713
+ bindingItems.push({
714
+ status: "pass",
715
+ title: "Cloudflare Account ID",
716
+ message: `Configured (${cfAccountId.slice(0, 6)}...${cfAccountId.slice(-4)})`
717
+ });
718
+ } else if (isRemote) {
719
+ bindingItems.push({
720
+ status: "fail",
721
+ title: "Cloudflare Account ID",
722
+ message: "CLOUDFLARE_ACCOUNT_ID is missing or set to a placeholder",
723
+ help: "Set CLOUDFLARE_ACCOUNT_ID in your environment or .env file before deploying to production."
724
+ });
725
+ } else {
726
+ bindingItems.push({
727
+ status: "info",
728
+ title: "Cloudflare Account ID",
729
+ message: "Local dev uses Miniflare emulation (no account ID required)"
730
+ });
731
+ }
732
+ const isDbEnabled = Boolean(qarpeoConfig.db || qarpeoConfig.d1 || qarpeoConfig.cms || qarpeoConfig.auth || qarpeoConfig.payments);
733
+ if (isDbEnabled) {
734
+ const dbBinding = typeof qarpeoConfig.db === "object" && qarpeoConfig.db?.binding ? qarpeoConfig.db.binding : process.env.QARPEO_DB_BINDING || "DB";
735
+ const dbId = typeof qarpeoConfig.db === "object" && qarpeoConfig.db?.databaseId || process.env.QARPEO_DB_ID || process.env.DATABASE_ID || process.env.DB_ID;
736
+ if (isRemote) {
737
+ if (!dbId || dbId.includes("LOCAL_DEV")) {
738
+ bindingItems.push({
739
+ status: "fail",
740
+ title: "D1 Database ID",
741
+ message: `Remote deploy requires a real Cloudflare D1 UUID for binding '${dbBinding}'`,
742
+ help: "Create a D1 database via `wrangler d1 create <name>` and set QARPEO_DB_ID or DATABASE_ID in .env."
743
+ });
744
+ } else {
745
+ bindingItems.push({
746
+ status: "pass",
747
+ title: "D1 Database Binding",
748
+ message: `Binding '${dbBinding}' bound to remote ID ${dbId}`
749
+ });
750
+ }
751
+ } else {
752
+ bindingItems.push({
753
+ status: "pass",
754
+ title: "D1 Database Binding",
755
+ message: `Binding '${dbBinding}' active (Miniflare emulation)`
756
+ });
757
+ }
758
+ }
759
+ const isBlobEnabled = Boolean(qarpeoConfig.blob || qarpeoConfig.r2 || qarpeoConfig.cms || qarpeoConfig.storage);
760
+ if (isBlobEnabled) {
761
+ const blobBucket = process.env.QARPEO_BLOB_BUCKET || process.env.BLOB_NAME || typeof qarpeoConfig.blob === "object" && qarpeoConfig.blob?.bucket;
762
+ if (isRemote && (!blobBucket || blobBucket.includes("local-dev"))) {
763
+ bindingItems.push({
764
+ status: "warn",
765
+ title: "R2 Bucket Name",
766
+ message: "No custom R2 bucket configured for remote deployment",
767
+ help: "Create an R2 bucket via `wrangler r2 bucket create <name>` and set QARPEO_BLOB_BUCKET in .env."
768
+ });
769
+ } else {
770
+ bindingItems.push({
771
+ status: "pass",
772
+ title: "R2 Blob Storage",
773
+ message: `Bucket: ${blobBucket || "local simulation bucket"}`
774
+ });
775
+ }
776
+ }
777
+ if (qarpeoConfig.ai || qarpeoConfig.agents) {
778
+ const cfApiToken = process.env.CLOUDFLARE_API_TOKEN;
779
+ if (!cfApiToken || cfApiToken === "dummy-dev-api-token") {
780
+ bindingItems.push({
781
+ status: isRemote ? "fail" : "warn",
782
+ title: "Workers AI Credentials",
783
+ message: "CLOUDFLARE_API_TOKEN is required for Workers AI inference",
784
+ help: "Obtain an API token from Cloudflare dashboard with Workers AI permissions and set CLOUDFLARE_API_TOKEN."
785
+ });
786
+ } else {
787
+ bindingItems.push({
788
+ status: "pass",
789
+ title: "Workers AI Credentials",
790
+ message: "CLOUDFLARE_API_TOKEN detected"
791
+ });
792
+ }
793
+ }
794
+ categories.push({
795
+ title: "Cloudflare & Wrangler Bindings",
796
+ icon: "\u2601\uFE0F ",
797
+ items: bindingItems
798
+ });
799
+ if (isDbEnabled) {
800
+ const dbItems = [];
801
+ const drizzleCheck = checkDrizzleVersion(cwd);
802
+ if (drizzleCheck.installed) {
803
+ if (drizzleCheck.isRC) {
804
+ dbItems.push({
805
+ status: "pass",
806
+ title: "Drizzle ORM",
807
+ message: `v${drizzleCheck.version} (v1.0.0 RC compliant)`
808
+ });
809
+ } else {
810
+ dbItems.push({
811
+ status: "fail",
812
+ title: "Drizzle ORM",
813
+ message: drizzleCheck.error || `Outdated version v${drizzleCheck.version}`,
814
+ help: "Upgrade drizzle-orm to v1.0.0 RC: pnpm add drizzle-orm@rc"
815
+ });
816
+ }
817
+ } else {
818
+ dbItems.push({
819
+ status: "pass",
820
+ title: "Drizzle ORM",
821
+ message: "Bundled directly by Qarpeo runtime"
822
+ });
823
+ }
824
+ const layers = nuxtConfig?._layers || [{ cwd }];
825
+ const schemaFiles = findSchemaFiles(layers);
826
+ if (schemaFiles.length > 0) {
827
+ dbItems.push({
828
+ status: "pass",
829
+ title: "Schema Definitions",
830
+ message: `Found ${schemaFiles.length} schema file(s)`
831
+ });
832
+ } else {
833
+ dbItems.push({
834
+ status: "warn",
835
+ title: "Schema Definitions",
836
+ message: "No custom Drizzle schema files found in server/db/schema/",
837
+ help: "Create table definitions in server/db/schema/ (e.g. server/db/schema/users.ts)."
838
+ });
839
+ }
840
+ const migrationsDir = resolve(cwd, "server/db/migrations");
841
+ if (existsSync(migrationsDir)) {
842
+ try {
843
+ const migrationEntries = readdirSync(migrationsDir).filter((e) => {
844
+ const p = join(migrationsDir, e);
845
+ return statSync(p).isDirectory() || e.endsWith(".sql");
846
+ });
847
+ if (migrationEntries.length === 0) {
848
+ dbItems.push({
849
+ status: schemaFiles.length > 0 ? "warn" : "info",
850
+ title: "D1 Migrations",
851
+ message: "Migrations directory exists but contains no migration files",
852
+ help: "Run `qp generate` to create initial D1 SQL migrations."
853
+ });
854
+ } else {
855
+ let latestMigrationMtime = 0;
856
+ for (const entry of migrationEntries) {
857
+ const mtime = statSync(join(migrationsDir, entry)).mtimeMs;
858
+ if (mtime > latestMigrationMtime) latestMigrationMtime = mtime;
859
+ }
860
+ let newestSchemaMtime = 0;
861
+ for (const s of schemaFiles) {
862
+ const mtime = statSync(s).mtimeMs;
863
+ if (mtime > newestSchemaMtime) newestSchemaMtime = mtime;
864
+ }
865
+ if (newestSchemaMtime > latestMigrationMtime + 3e3) {
866
+ dbItems.push({
867
+ status: "warn",
868
+ title: "D1 Migrations Freshness",
869
+ message: `${migrationEntries.length} migration(s) found, but schema files were modified more recently`,
870
+ help: "Run `qp generate` to generate new migrations for the latest schema changes."
871
+ });
872
+ } else {
873
+ dbItems.push({
874
+ status: "pass",
875
+ title: "D1 Migrations",
876
+ message: `${migrationEntries.length} migration(s) generated and up to date with schemas`
877
+ });
878
+ }
879
+ }
880
+ } catch {
881
+ dbItems.push({
882
+ status: "info",
883
+ title: "D1 Migrations",
884
+ message: "Unable to inspect migrations directory"
885
+ });
886
+ }
887
+ } else if (schemaFiles.length > 0) {
888
+ dbItems.push({
889
+ status: "warn",
890
+ title: "D1 Migrations",
891
+ message: "No server/db/migrations directory found",
892
+ help: "Run `qp generate` to generate D1 migrations from your schema files."
893
+ });
894
+ }
895
+ if (!isRemote) {
896
+ const localDbPath = findLocalD1Database(cwd);
897
+ if (localDbPath) {
898
+ dbItems.push({
899
+ status: "pass",
900
+ title: "Local Database File",
901
+ message: `Found: ${join(".", localDbPath.replace(cwd, "")).replace(/^[\\/]/, "")}`
902
+ });
903
+ } else {
904
+ dbItems.push({
905
+ status: "info",
906
+ title: "Local Database File",
907
+ message: "No local SQLite file yet (Miniflare initializes it automatically on `nuxt dev`)"
908
+ });
909
+ }
910
+ }
911
+ categories.push({
912
+ title: "Database & Migrations",
913
+ icon: "\u{1F5C4}\uFE0F ",
914
+ items: dbItems
915
+ });
916
+ }
917
+ if (qarpeoConfig.auth) {
918
+ const authItems = [];
919
+ const secret = process.env.NUXT_APP_SECRET || process.env.NUXT_SESSION_PASSWORD;
920
+ const isDummySecret = secret === "dev-app-secret-must-be-at-least-32-chars-long" || secret === "dev-session-password-must-be-at-least-32-chars-long";
921
+ if (!secret) {
922
+ authItems.push({
923
+ status: isRemote ? "fail" : "warn",
924
+ title: "Application Secret",
925
+ message: "NUXT_APP_SECRET is not set in environment or .env",
926
+ help: "Generate a 32+ character random secret and set NUXT_APP_SECRET in .env."
927
+ });
928
+ } else if (isDummySecret) {
929
+ if (isRemote) {
930
+ authItems.push({
931
+ status: "fail",
932
+ title: "Application Secret",
933
+ message: "Cannot deploy default development dummy secret to production!",
934
+ help: "Replace NUXT_APP_SECRET with a cryptographically secure random 32+ char secret for production."
935
+ });
936
+ } else {
937
+ authItems.push({
938
+ status: "warn",
939
+ title: "Application Secret",
940
+ message: "Using default local development dummy secret",
941
+ help: "Remember to set a unique NUXT_APP_SECRET before deploying to production."
942
+ });
943
+ }
944
+ } else if (secret.length < 32) {
945
+ authItems.push({
946
+ status: "fail",
947
+ title: "Application Secret Length",
948
+ message: `NUXT_APP_SECRET is only ${secret.length} characters (minimum 32 required for AES-256 seal)`,
949
+ help: "Generate a 32+ character secret: `openssl rand -base64 32`."
950
+ });
951
+ } else {
952
+ authItems.push({
953
+ status: "pass",
954
+ title: "Application Secret",
955
+ message: `Configured (${secret.length} chars)`
956
+ });
957
+ }
958
+ const authOpts = typeof qarpeoConfig.auth === "object" ? qarpeoConfig.auth : {};
959
+ const providers = Array.isArray(authOpts.providers) ? authOpts.providers : [];
960
+ for (const provider of providers) {
961
+ const envPrefix = `NUXT_OAUTH_${provider.toUpperCase().replace(/[^A-Z0-9]/g, "_")}`;
962
+ const clientId = process.env[`${envPrefix}_CLIENT_ID`];
963
+ const clientSecret = process.env[`${envPrefix}_CLIENT_SECRET`];
964
+ if (!clientId || !clientSecret) {
965
+ authItems.push({
966
+ status: isRemote ? "fail" : "warn",
967
+ title: `OAuth: ${provider}`,
968
+ message: `Missing ${envPrefix}_CLIENT_ID or ${envPrefix}_CLIENT_SECRET`,
969
+ help: `Add ${envPrefix}_CLIENT_ID and ${envPrefix}_CLIENT_SECRET to .env.`
970
+ });
971
+ } else {
972
+ authItems.push({
973
+ status: "pass",
974
+ title: `OAuth: ${provider}`,
975
+ message: "Credentials configured"
976
+ });
977
+ }
978
+ }
979
+ categories.push({
980
+ title: "Authentication & Security",
981
+ icon: "\u{1F510}",
982
+ items: authItems
983
+ });
984
+ }
985
+ if (qarpeoConfig.payments) {
986
+ const paymentItems = [];
987
+ const paymentsOpts = typeof qarpeoConfig.payments === "object" ? qarpeoConfig.payments : {};
988
+ const provider = paymentsOpts.provider || "stripe";
989
+ if (provider === "stripe") {
990
+ const stripeKey = process.env.STRIPE_SECRET_KEY;
991
+ const stripeWebhook = process.env.STRIPE_WEBHOOK_SECRET;
992
+ if (!stripeKey) {
993
+ paymentItems.push({
994
+ status: isRemote ? "fail" : "warn",
995
+ title: "Stripe Secret Key",
996
+ message: "STRIPE_SECRET_KEY is not set",
997
+ help: "Set STRIPE_SECRET_KEY in your .env file."
998
+ });
999
+ } else {
1000
+ paymentItems.push({
1001
+ status: "pass",
1002
+ title: "Stripe Secret Key",
1003
+ message: `Configured (${stripeKey.slice(0, 7)}...)`
1004
+ });
1005
+ }
1006
+ if (!stripeWebhook && isRemote) {
1007
+ paymentItems.push({
1008
+ status: "warn",
1009
+ title: "Stripe Webhook Secret",
1010
+ message: "STRIPE_WEBHOOK_SECRET is not set for signature verification",
1011
+ help: "Set STRIPE_WEBHOOK_SECRET from your Stripe dashboard webhooks settings."
1012
+ });
1013
+ }
1014
+ }
1015
+ categories.push({
1016
+ title: "Payments",
1017
+ icon: "\u{1F4B3}",
1018
+ items: paymentItems
1019
+ });
1020
+ }
1021
+ let passCount = 0;
1022
+ let warnCount = 0;
1023
+ let failCount = 0;
1024
+ for (const cat of categories) {
1025
+ console.log(`
1026
+ ${cat.icon} ${cat.title}`);
1027
+ console.log("\u2500".repeat(50));
1028
+ for (const item of cat.items) {
1029
+ let badge = "";
1030
+ if (item.status === "pass") {
1031
+ badge = " \u2713";
1032
+ passCount++;
1033
+ } else if (item.status === "warn") {
1034
+ badge = " \u26A0\uFE0F ";
1035
+ warnCount++;
1036
+ } else if (item.status === "fail") {
1037
+ badge = " \u274C";
1038
+ failCount++;
1039
+ } else {
1040
+ badge = " \u2139 ";
1041
+ }
1042
+ console.log(`${badge} [${item.title}] ${item.message}`);
1043
+ if (item.help && (item.status === "warn" || item.status === "fail")) {
1044
+ console.log(` \u{1F449} ${item.help}`);
1045
+ }
1046
+ }
1047
+ }
1048
+ console.log(`
1049
+ ` + "\u2550".repeat(50));
1050
+ console.log(
1051
+ `\u{1F4CA} Doctor Summary: ${passCount} passed, ${warnCount} warning(s), ${failCount} error(s)`
1052
+ );
1053
+ if (failCount > 0) {
1054
+ console.log(
1055
+ `
1056
+ \u274C [qarpeo doctor] Found ${failCount} critical error(s) that should be resolved before deployment.`
1057
+ );
1058
+ process.exit(1);
1059
+ } else if (warnCount > 0) {
1060
+ console.log(
1061
+ `
1062
+ \u26A0\uFE0F [qarpeo doctor] System is operational with ${warnCount} recommendation(s). Review above.`
1063
+ );
1064
+ } else {
1065
+ console.log(`
1066
+ \u2728 [qarpeo doctor] Everything is healthy and ready to go!`);
1067
+ }
1068
+ }
1069
+ });
1070
+
1071
+ const main = defineCommand({
1072
+ meta: {
1073
+ name: "qp",
1074
+ version: "0.0.1",
1075
+ description: "Cloudflare-native powerhouse module for Nuxt"
1076
+ },
1077
+ subCommands: {
1078
+ db,
1079
+ doctor,
1080
+ generate,
1081
+ migrate,
1082
+ push
1083
+ }
1084
+ });
1085
+ void runMain(main);