@beechcms/api 0.6.0-preview.2 → 0.6.0-preview.4

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 (388) hide show
  1. package/README.md +4 -4
  2. package/assets/dashboard/BeechLogo.svg +18 -18
  3. package/assets/dashboard/BeechLogoLIght.svg +48 -48
  4. package/assets/dashboard/assets/chart-BwlCt-IA.js +39 -0
  5. package/assets/dashboard/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2 +0 -0
  6. package/assets/dashboard/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2 +0 -0
  7. package/assets/dashboard/assets/geist-latin-ext-wght-normal-DC-KSUi6.woff2 +0 -0
  8. package/assets/dashboard/assets/geist-latin-wght-normal-BgDaEnEv.woff2 +0 -0
  9. package/assets/dashboard/assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2 +0 -0
  10. package/assets/dashboard/assets/index-BcVN-DNy.js +642 -0
  11. package/assets/dashboard/assets/index-Cf1yRCqG.css +1 -0
  12. package/assets/dashboard/assets/lora-cyrillic-ext-wght-normal-YcVxMP-u.woff2 +0 -0
  13. package/assets/dashboard/assets/lora-cyrillic-wght-normal-UWPuZLjM.woff2 +0 -0
  14. package/assets/dashboard/assets/lora-latin-ext-wght-normal-C2Wlntb9.woff2 +0 -0
  15. package/assets/dashboard/assets/lora-latin-wght-normal-BiLcIKcI.woff2 +0 -0
  16. package/assets/dashboard/assets/lora-math-wght-normal-sOy7rEfW.woff2 +0 -0
  17. package/assets/dashboard/assets/lora-symbols-wght-normal-DQ5VrUkH.woff2 +0 -0
  18. package/assets/dashboard/assets/lora-vietnamese-wght-normal-CfJ7gtf3.woff2 +0 -0
  19. package/assets/dashboard/assets/pie-chart-recharts-BMWpjFzf.js +1 -0
  20. package/assets/dashboard/assets/timeseries-chart-recharts-8_GwAFR0.js +1 -0
  21. package/assets/dashboard/beechLogoDark.svg +48 -48
  22. package/assets/dashboard/index.html +18 -18
  23. package/assets/dashboard/noResult.svg +42 -42
  24. package/assets/dashboard/sol.svg +3 -3
  25. package/assets/dashboard/undraw_enter_nwx3.svg +36 -36
  26. package/dist/auth/__fixtures__/in-memory-hash-provider.d.ts +5 -0
  27. package/dist/auth/__fixtures__/static-token-service.d.ts +6 -0
  28. package/dist/auth/bcrypt-hash-provider.d.ts +8 -0
  29. package/dist/auth/constants.d.ts +10 -0
  30. package/dist/auth/jose-token-service.d.ts +14 -0
  31. package/dist/auth/login.d.ts +32 -0
  32. package/dist/auth/refresh.d.ts +1 -0
  33. package/dist/factory.d.ts +45 -0
  34. package/dist/features/automations/action-executors/create-entry.executor.d.ts +7 -0
  35. package/dist/features/automations/action-executors/edit-field.executor.d.ts +7 -0
  36. package/dist/features/automations/action-executors/index.d.ts +13 -0
  37. package/dist/features/automations/action-executors/send-mail.executor.d.ts +7 -0
  38. package/dist/features/automations/action-executors/set-variable.executor.d.ts +15 -0
  39. package/dist/features/automations/action-executors/webhook.executor.d.ts +7 -0
  40. package/dist/features/automations/automation-runner.d.ts +13 -0
  41. package/dist/features/automations/automation-runner.utils.d.ts +3 -0
  42. package/dist/features/automations/automations.handler.d.ts +7 -0
  43. package/dist/features/automations/automations.schema.d.ts +191 -0
  44. package/dist/features/automations/context-resolver.d.ts +8 -0
  45. package/dist/features/automations/cron-runner.d.ts +9 -0
  46. package/dist/features/automations/cron-runner.utils.d.ts +1 -0
  47. package/dist/features/automations/filter-translation.d.ts +9 -0
  48. package/dist/features/automations/index.d.ts +7 -0
  49. package/dist/features/automations/template-grammar.d.ts +73 -0
  50. package/dist/features/automations/var-access-resolver.d.ts +6 -0
  51. package/dist/features/automations/when-evaluator.d.ts +3 -0
  52. package/dist/features/automations/when-pushdown.d.ts +2 -0
  53. package/dist/features/backrefs/backrefs.handler.d.ts +3 -0
  54. package/dist/features/backrefs/d1-backref.repository.d.ts +17 -0
  55. package/dist/features/backrefs/index.d.ts +1 -0
  56. package/dist/features/content/constants.d.ts +12 -0
  57. package/dist/features/content/handlers/bulk.handler.d.ts +3 -0
  58. package/dist/features/content/handlers/create.d.ts +3 -0
  59. package/dist/features/content/handlers/delete.d.ts +3 -0
  60. package/dist/features/content/handlers/facets.d.ts +3 -0
  61. package/dist/features/content/handlers/get.d.ts +4 -0
  62. package/dist/features/content/handlers/helpers.d.ts +12 -0
  63. package/dist/features/content/handlers/list.d.ts +3 -0
  64. package/dist/features/content/handlers/update.d.ts +3 -0
  65. package/dist/features/content/index.d.ts +4 -0
  66. package/dist/features/dashboard-layout/dashboard-layout.handler.d.ts +7 -0
  67. package/dist/features/dashboard-layout/index.d.ts +1 -0
  68. package/dist/features/draft/draft.handler.d.ts +4 -0
  69. package/dist/features/draft/draft.middleware.d.ts +9 -0
  70. package/dist/features/draft/index.d.ts +1 -0
  71. package/{src/features/email/email.provider.ts → dist/features/email/email.provider.d.ts} +19 -24
  72. package/dist/features/email/email.service.d.ts +13 -0
  73. package/dist/features/email/email.types.d.ts +94 -0
  74. package/{src/features/email/index.ts → dist/features/email/index.d.ts} +3 -16
  75. package/dist/features/email/providers/resend.d.ts +36 -0
  76. package/dist/features/email/providers/smtp.d.ts +11 -0
  77. package/dist/features/email/templates/automation-mail.d.ts +8 -0
  78. package/dist/features/email/templates/password-changed.d.ts +15 -0
  79. package/dist/features/email/templates/password-reset.d.ts +18 -0
  80. package/dist/features/email/templates/shell.d.ts +58 -0
  81. package/dist/features/notifications/index.d.ts +1 -0
  82. package/dist/features/notifications/notifications.handler.d.ts +15 -0
  83. package/dist/features/password-reset/index.d.ts +6 -0
  84. package/dist/features/password-reset/request.d.ts +10 -0
  85. package/dist/features/password-reset/reset.d.ts +9 -0
  86. package/dist/features/rotate-field/index.d.ts +1 -0
  87. package/dist/features/rotate-field/rotate-field.handler.d.ts +7 -0
  88. package/dist/features/rotate-field/rotate-field.schema.d.ts +11 -0
  89. package/dist/features/schema/schema.handler.d.ts +7 -0
  90. package/dist/features/seeds/index.d.ts +1 -0
  91. package/dist/features/seeds/seeds.handler.d.ts +6 -0
  92. package/dist/features/settings/settings.handler.d.ts +7 -0
  93. package/dist/features/setup/index.d.ts +7 -0
  94. package/dist/features/stats/index.d.ts +1 -0
  95. package/dist/features/stats/stats.handler.d.ts +7 -0
  96. package/dist/features/webhooks/index.d.ts +3 -0
  97. package/dist/index.d.ts +7 -0
  98. package/dist/index.js +9732 -0
  99. package/dist/media-utils.d.ts +25 -0
  100. package/dist/middleware/auth-providers.middleware.d.ts +8 -0
  101. package/dist/middleware/observability.middleware.d.ts +20 -0
  102. package/dist/middleware/queue.middleware.d.ts +11 -0
  103. package/dist/middleware/rate-limit.middleware.d.ts +9 -0
  104. package/dist/middleware/repository.middleware.d.ts +34 -0
  105. package/dist/middleware/seed-registry.middleware.d.ts +10 -0
  106. package/dist/middleware/storage.middleware.d.ts +7 -0
  107. package/dist/middleware.d.ts +11 -0
  108. package/dist/public/access-policy.d.ts +12 -0
  109. package/dist/public/api-key-middleware.d.ts +6 -0
  110. package/dist/public/cache-utils.d.ts +10 -0
  111. package/dist/public/entry-projection.d.ts +2 -0
  112. package/dist/public/idempotency.d.ts +9 -0
  113. package/dist/public/index.d.ts +11 -0
  114. package/dist/public/problem-details.d.ts +31 -0
  115. package/dist/public/public-add.d.ts +3 -0
  116. package/dist/public/public-edit.d.ts +5 -0
  117. package/dist/public/public-errors.d.ts +13 -0
  118. package/dist/public/public-read.d.ts +3 -0
  119. package/dist/public/public-routes.d.ts +3 -0
  120. package/dist/public/query-builder.d.ts +28 -0
  121. package/dist/public/rate-limit-middleware.d.ts +3 -0
  122. package/dist/public/read-list.d.ts +26 -0
  123. package/dist/public/read-single.d.ts +22 -0
  124. package/dist/public/response-builder.d.ts +22 -0
  125. package/dist/public/sanitize.d.ts +23 -0
  126. package/{src/public/slug-utils.ts → dist/public/slug-utils.d.ts} +3 -10
  127. package/dist/rate-limit/cloudflare-rate-limiter.d.ts +6 -0
  128. package/dist/rate-limit/in-memory-rate-limiter.d.ts +7 -0
  129. package/dist/rate-limit/no-op-rate-limiter.d.ts +4 -0
  130. package/dist/search-utils.d.ts +54 -0
  131. package/dist/search.d.ts +6 -0
  132. package/dist/shared/apply-policies.d.ts +10 -0
  133. package/dist/shared/automations.repository.d1.d.ts +12 -0
  134. package/dist/shared/background-notification-service.d.ts +18 -0
  135. package/dist/shared/base.repository.d1.d.ts +18 -0
  136. package/dist/shared/cloudflare-queue-service.d.ts +11 -0
  137. package/dist/shared/content-utils.d.ts +21 -0
  138. package/dist/shared/content.repository.d1.d.ts +68 -0
  139. package/dist/shared/d1-activity-log.repository.d.ts +13 -0
  140. package/dist/shared/d1-activity-logger.d.ts +20 -0
  141. package/dist/shared/d1-analytics.repository.d.ts +20 -0
  142. package/dist/shared/d1-content-scan.repository.d.ts +7 -0
  143. package/dist/shared/d1-notification.repository.d.ts +17 -0
  144. package/dist/shared/d1-password-reset-token.repository.d.ts +10 -0
  145. package/dist/shared/d1-search.repository.d.ts +14 -0
  146. package/dist/shared/d1-session.repository.d.ts +12 -0
  147. package/dist/shared/d1-setup-checklist.repository.d.ts +12 -0
  148. package/dist/shared/d1-user.repository.d.ts +18 -0
  149. package/dist/shared/d1-widget.repository.d.ts +31 -0
  150. package/dist/shared/dashboard-layout.repository.d1.d.ts +9 -0
  151. package/dist/shared/demo-data-sql.d.ts +1 -0
  152. package/dist/shared/demo-data.repository.d1.d.ts +6 -0
  153. package/dist/shared/execution-context-scheduler.d.ts +6 -0
  154. package/dist/shared/fixed-clock.d.ts +13 -0
  155. package/dist/shared/fts-sync.d.ts +1 -0
  156. package/dist/shared/idempotency.repository.d1.d.ts +16 -0
  157. package/dist/shared/in-memory-activity-logger.d.ts +11 -0
  158. package/dist/shared/in-memory-notification-service.d.ts +11 -0
  159. package/dist/shared/in-memory-queue-service.d.ts +16 -0
  160. package/dist/shared/in-memory-seed.repository.d.ts +18 -0
  161. package/dist/shared/media.repository.d1.d.ts +35 -0
  162. package/dist/shared/qstash-notification-service.d.ts +18 -0
  163. package/dist/shared/query-utils.d.ts +36 -0
  164. package/dist/shared/queue-consumer.d.ts +9 -0
  165. package/dist/shared/request-utils.d.ts +13 -0
  166. package/dist/shared/schema-mutator.d1.d.ts +12 -0
  167. package/dist/shared/seed-layout.repository.d1.d.ts +9 -0
  168. package/dist/shared/seed-registry-cache.d.ts +12 -0
  169. package/dist/shared/seed.repository.d1.d.ts +13 -0
  170. package/dist/shared/sequential-id-generator.d.ts +13 -0
  171. package/dist/shared/site-settings.repository.d1.d.ts +7 -0
  172. package/dist/shared/storage/factory.d.ts +8 -0
  173. package/dist/shared/storage/s3-bucket.d.ts +43 -0
  174. package/dist/shared/storage-utils.d.ts +7 -0
  175. package/dist/shared/system-stats.repository.d1.d.ts +25 -0
  176. package/dist/types.d.ts +87 -0
  177. package/dist/upload.d.ts +16 -0
  178. package/dist/widget.d.ts +7 -0
  179. package/migrations/0000_v040_base.sql +265 -265
  180. package/migrations/0029_automations.sql +14 -14
  181. package/migrations/0030_test_seeds.sql +125 -125
  182. package/package.json +28 -18
  183. package/assets/dashboard/assets/chart-BrJFdsGZ.js +0 -39
  184. package/assets/dashboard/assets/index-CIaoMxuB.css +0 -1
  185. package/assets/dashboard/assets/index-wTKgygsg.js +0 -636
  186. package/assets/dashboard/assets/pie-chart-recharts-BEaE1FOE.js +0 -1
  187. package/assets/dashboard/assets/timeseries-chart-recharts-DmWM6imF.js +0 -1
  188. package/src/auth/__fixtures__/in-memory-hash-provider.ts +0 -17
  189. package/src/auth/__fixtures__/static-token-service.ts +0 -22
  190. package/src/auth/bcrypt-hash-provider.ts +0 -24
  191. package/src/auth/constants.ts +0 -14
  192. package/src/auth/generate-refresh-token.test.ts +0 -23
  193. package/src/auth/hash-provider.test.ts +0 -55
  194. package/src/auth/jose-token-service.ts +0 -62
  195. package/src/auth/jwt-claims-passthrough.test.ts +0 -87
  196. package/src/auth/login.test.ts +0 -100
  197. package/src/auth/login.ts +0 -78
  198. package/src/auth/refresh.ts +0 -11
  199. package/src/auth/token-service.test.ts +0 -90
  200. package/src/factory.ts +0 -370
  201. package/src/features/automations/__tests__/action-executors.test.ts +0 -255
  202. package/src/features/automations/__tests__/automation-runner.test.ts +0 -196
  203. package/src/features/automations/__tests__/automation-runner.utils.test.ts +0 -60
  204. package/src/features/automations/__tests__/automations.handler.test.ts +0 -264
  205. package/src/features/automations/__tests__/automations.repository.test.ts +0 -163
  206. package/src/features/automations/__tests__/automations.schema.test.ts +0 -224
  207. package/src/features/automations/__tests__/context-resolver.test.ts +0 -126
  208. package/src/features/automations/__tests__/cron-runner.test.ts +0 -267
  209. package/src/features/automations/__tests__/cron-runner.utils.test.ts +0 -144
  210. package/src/features/automations/__tests__/set-variable.executor.test.ts +0 -383
  211. package/src/features/automations/__tests__/template-grammar.test.ts +0 -308
  212. package/src/features/automations/__tests__/webhook.executor.test.ts +0 -142
  213. package/src/features/automations/__tests__/when-evaluator.test.ts +0 -274
  214. package/src/features/automations/__tests__/when-pushdown.test.ts +0 -281
  215. package/src/features/automations/action-executors/create-entry.executor.ts +0 -27
  216. package/src/features/automations/action-executors/edit-field.executor.ts +0 -26
  217. package/src/features/automations/action-executors/index.ts +0 -37
  218. package/src/features/automations/action-executors/send-mail.executor.ts +0 -53
  219. package/src/features/automations/action-executors/set-variable.executor.ts +0 -159
  220. package/src/features/automations/action-executors/webhook.executor.ts +0 -67
  221. package/src/features/automations/automation-runner.ts +0 -85
  222. package/src/features/automations/automation-runner.utils.ts +0 -47
  223. package/src/features/automations/automations.handler.ts +0 -197
  224. package/src/features/automations/automations.schema.ts +0 -177
  225. package/src/features/automations/context-resolver.ts +0 -152
  226. package/src/features/automations/cron-runner.ts +0 -140
  227. package/src/features/automations/cron-runner.utils.ts +0 -44
  228. package/src/features/automations/filter-translation.ts +0 -46
  229. package/src/features/automations/index.ts +0 -16
  230. package/src/features/automations/template-grammar.ts +0 -245
  231. package/src/features/automations/var-access-resolver.ts +0 -140
  232. package/src/features/automations/when-evaluator.ts +0 -87
  233. package/src/features/automations/when-pushdown.ts +0 -57
  234. package/src/features/backrefs/__tests__/backrefs.handler.test.ts +0 -359
  235. package/src/features/backrefs/backrefs.handler.ts +0 -168
  236. package/src/features/backrefs/d1-backref.repository.ts +0 -84
  237. package/src/features/backrefs/index.ts +0 -5
  238. package/src/features/content/constants.ts +0 -16
  239. package/src/features/content/handlers/bulk.handler.ts +0 -185
  240. package/src/features/content/handlers/create.ts +0 -129
  241. package/src/features/content/handlers/delete.ts +0 -62
  242. package/src/features/content/handlers/facets.ts +0 -49
  243. package/src/features/content/handlers/get.ts +0 -120
  244. package/src/features/content/handlers/helpers.test.ts +0 -180
  245. package/src/features/content/handlers/helpers.ts +0 -93
  246. package/src/features/content/handlers/list.ts +0 -174
  247. package/src/features/content/handlers/update.ts +0 -174
  248. package/src/features/content/index.ts +0 -26
  249. package/src/features/dashboard-layout/__tests__/dashboard-layout.handler.test.ts +0 -388
  250. package/src/features/dashboard-layout/dashboard-layout.handler.ts +0 -206
  251. package/src/features/dashboard-layout/index.ts +0 -5
  252. package/src/features/draft/draft.handler.ts +0 -195
  253. package/src/features/draft/draft.middleware.ts +0 -66
  254. package/src/features/draft/index.ts +0 -5
  255. package/src/features/email/email.service.ts +0 -98
  256. package/src/features/email/email.types.ts +0 -119
  257. package/src/features/email/providers/resend.ts +0 -67
  258. package/src/features/email/providers/smtp.ts +0 -55
  259. package/src/features/email/templates/automation-mail.ts +0 -19
  260. package/src/features/email/templates/password-changed.ts +0 -63
  261. package/src/features/email/templates/password-reset.ts +0 -68
  262. package/src/features/email/templates/shell.ts +0 -96
  263. package/src/features/notifications/index.ts +0 -5
  264. package/src/features/notifications/notifications.handler.ts +0 -105
  265. package/src/features/password-reset/index.ts +0 -19
  266. package/src/features/password-reset/request.ts +0 -92
  267. package/src/features/password-reset/reset.ts +0 -102
  268. package/src/features/rotate-field/index.ts +0 -5
  269. package/src/features/rotate-field/rotate-field.handler.ts +0 -132
  270. package/src/features/rotate-field/rotate-field.schema.ts +0 -17
  271. package/src/features/schema/schema.handler.ts +0 -131
  272. package/src/features/seeds/index.ts +0 -5
  273. package/src/features/seeds/seeds.handler.test.ts +0 -1199
  274. package/src/features/seeds/seeds.handler.ts +0 -558
  275. package/src/features/settings/__tests__/settings.handler.test.ts +0 -555
  276. package/src/features/settings/settings.handler.ts +0 -392
  277. package/src/features/setup/index.ts +0 -288
  278. package/src/features/stats/index.ts +0 -5
  279. package/src/features/stats/stats.handler.ts +0 -420
  280. package/src/features/webhooks/index.ts +0 -63
  281. package/src/index.ts +0 -65
  282. package/src/media-utils.ts +0 -82
  283. package/src/middleware/auth-providers.middleware.test.ts +0 -85
  284. package/src/middleware/auth-providers.middleware.ts +0 -45
  285. package/src/middleware/observability.middleware.test.ts +0 -93
  286. package/src/middleware/observability.middleware.ts +0 -70
  287. package/src/middleware/rate-limit.middleware.ts +0 -45
  288. package/src/middleware/repository.middleware.ts +0 -117
  289. package/src/middleware/seed-registry.middleware.test.ts +0 -97
  290. package/src/middleware/seed-registry.middleware.ts +0 -21
  291. package/src/middleware/storage.middleware.ts +0 -25
  292. package/src/middleware.ts +0 -45
  293. package/src/public/access-policy.ts +0 -27
  294. package/src/public/api-key-middleware.ts +0 -57
  295. package/src/public/cache-utils.ts +0 -38
  296. package/src/public/entry-projection.ts +0 -46
  297. package/src/public/idempotency.ts +0 -23
  298. package/src/public/index.ts +0 -16
  299. package/src/public/problem-details.ts +0 -124
  300. package/src/public/public-add.ts +0 -114
  301. package/src/public/public-edit.ts +0 -163
  302. package/src/public/public-errors.ts +0 -19
  303. package/src/public/public-read.ts +0 -63
  304. package/src/public/public-routes.ts +0 -88
  305. package/src/public/query-builder.test.ts +0 -224
  306. package/src/public/query-builder.ts +0 -156
  307. package/src/public/rate-limit-middleware.ts +0 -34
  308. package/src/public/read-list.ts +0 -54
  309. package/src/public/read-single.ts +0 -48
  310. package/src/public/response-builder.ts +0 -30
  311. package/src/public/sanitize.ts +0 -69
  312. package/src/rate-limit/cloudflare-rate-limiter.test.ts +0 -30
  313. package/src/rate-limit/cloudflare-rate-limiter.ts +0 -15
  314. package/src/rate-limit/in-memory-rate-limiter.test.ts +0 -37
  315. package/src/rate-limit/in-memory-rate-limiter.ts +0 -17
  316. package/src/rate-limit/no-op-rate-limiter.test.ts +0 -22
  317. package/src/rate-limit/no-op-rate-limiter.ts +0 -11
  318. package/src/search-utils.test.ts +0 -211
  319. package/src/search-utils.ts +0 -213
  320. package/src/search.ts +0 -65
  321. package/src/shared/apply-policies.test.ts +0 -81
  322. package/src/shared/apply-policies.ts +0 -67
  323. package/src/shared/automations.repository.d1.ts +0 -150
  324. package/src/shared/background-notification-service.test.ts +0 -62
  325. package/src/shared/background-notification-service.ts +0 -52
  326. package/src/shared/base.repository.d1.ts +0 -32
  327. package/src/shared/content-utils.test.ts +0 -165
  328. package/src/shared/content-utils.ts +0 -86
  329. package/src/shared/content.repository.d1.test.ts +0 -507
  330. package/src/shared/content.repository.d1.ts +0 -851
  331. package/src/shared/d1-activity-log.repository.test.ts +0 -140
  332. package/src/shared/d1-activity-log.repository.ts +0 -105
  333. package/src/shared/d1-activity-logger.test.ts +0 -86
  334. package/src/shared/d1-activity-logger.ts +0 -67
  335. package/src/shared/d1-analytics.repository.test.ts +0 -78
  336. package/src/shared/d1-analytics.repository.ts +0 -85
  337. package/src/shared/d1-content-scan.repository.test.ts +0 -80
  338. package/src/shared/d1-content-scan.repository.ts +0 -37
  339. package/src/shared/d1-notification.repository.test.ts +0 -128
  340. package/src/shared/d1-notification.repository.ts +0 -118
  341. package/src/shared/d1-password-reset-token.repository.test.ts +0 -81
  342. package/src/shared/d1-password-reset-token.repository.ts +0 -56
  343. package/src/shared/d1-search.repository.test.ts +0 -87
  344. package/src/shared/d1-search.repository.ts +0 -88
  345. package/src/shared/d1-session.repository.test.ts +0 -125
  346. package/src/shared/d1-session.repository.ts +0 -102
  347. package/src/shared/d1-setup-checklist.repository.ts +0 -36
  348. package/src/shared/d1-user.repository.test.ts +0 -151
  349. package/src/shared/d1-user.repository.ts +0 -119
  350. package/src/shared/d1-widget.repository.test.ts +0 -267
  351. package/src/shared/d1-widget.repository.ts +0 -385
  352. package/src/shared/dashboard-layout.repository.d1.test.ts +0 -135
  353. package/src/shared/dashboard-layout.repository.d1.ts +0 -58
  354. package/src/shared/demo-data-sql.ts +0 -216
  355. package/src/shared/demo-data.repository.d1.ts +0 -20
  356. package/src/shared/execution-context-scheduler.ts +0 -13
  357. package/src/shared/fixed-clock.ts +0 -25
  358. package/src/shared/fts-sync.ts +0 -8
  359. package/src/shared/idempotency.repository.d1.test.ts +0 -83
  360. package/src/shared/idempotency.repository.d1.ts +0 -60
  361. package/src/shared/in-memory-activity-logger.ts +0 -19
  362. package/src/shared/in-memory-notification-service.ts +0 -19
  363. package/src/shared/in-memory-seed.repository.ts +0 -58
  364. package/src/shared/media.repository.d1.test.ts +0 -107
  365. package/src/shared/media.repository.d1.ts +0 -68
  366. package/src/shared/qstash-notification-service.test.ts +0 -67
  367. package/src/shared/qstash-notification-service.ts +0 -55
  368. package/src/shared/query-utils.ts +0 -141
  369. package/src/shared/request-utils.ts +0 -26
  370. package/src/shared/schema-mutator.d1.test.ts +0 -142
  371. package/src/shared/schema-mutator.d1.ts +0 -64
  372. package/src/shared/seed-layout.repository.d1.test.ts +0 -114
  373. package/src/shared/seed-layout.repository.d1.ts +0 -62
  374. package/src/shared/seed-registry-cache.test.ts +0 -68
  375. package/src/shared/seed-registry-cache.ts +0 -49
  376. package/src/shared/seed.repository.d1.test.ts +0 -143
  377. package/src/shared/seed.repository.d1.ts +0 -98
  378. package/src/shared/sequential-id-generator.ts +0 -33
  379. package/src/shared/site-settings.repository.d1.ts +0 -53
  380. package/src/shared/storage/factory.ts +0 -41
  381. package/src/shared/storage/s3-bucket.ts +0 -195
  382. package/src/shared/storage-utils.ts +0 -40
  383. package/src/shared/system-stats.repository.d1.test.ts +0 -58
  384. package/src/shared/system-stats.repository.d1.ts +0 -48
  385. package/src/types.ts +0 -90
  386. package/src/upload.ts +0 -198
  387. package/src/widget.test.ts +0 -85
  388. package/src/widget.ts +0 -251
@@ -0,0 +1,6 @@
1
+ import type { ParsedKey } from './template-grammar';
2
+ type VarAccessParsed = Extract<ParsedKey, {
3
+ kind: 'var_access';
4
+ }>;
5
+ export declare function resolveVarAccess(parsed: VarAccessParsed, variables: Record<string, unknown>, onMissing?: (field: string) => void): unknown;
6
+ export {};
@@ -0,0 +1,3 @@
1
+ import type { WhenNode } from '@beechcms/core';
2
+ import type { ResolvedContext } from './context-resolver';
3
+ export declare function evaluateWhen(node: WhenNode | null, context: ResolvedContext): boolean;
@@ -0,0 +1,2 @@
1
+ import type { WhenNode, FilterGroup, Seed } from '@beechcms/core';
2
+ export declare function extractPushdownFilters(node: WhenNode | null, seed: Seed): FilterGroup[];
@@ -0,0 +1,3 @@
1
+ import { Hono } from 'hono';
2
+ import type { AppEnv } from '../../types';
3
+ export declare const backrefsApp: Hono<AppEnv, import("hono/types").BlankSchema, "/">;
@@ -0,0 +1,17 @@
1
+ import type { BackrefSource, Seed } from '@beechcms/core';
2
+ export interface BackrefItem {
3
+ id: string;
4
+ displayName: string | null;
5
+ status: string;
6
+ updated_at: number | null;
7
+ }
8
+ export interface QueryGroupResult {
9
+ items: BackrefItem[];
10
+ total: number;
11
+ }
12
+ export declare class D1BackrefRepository {
13
+ private readonly db;
14
+ constructor(db: D1Database);
15
+ entryExists(slug: string, id: string): Promise<boolean>;
16
+ queryGroup(source: BackrefSource, sourceSeed: Seed, targetId: string, limit: number, offset: number): Promise<QueryGroupResult>;
17
+ }
@@ -0,0 +1 @@
1
+ export { backrefsApp } from './backrefs.handler';
@@ -0,0 +1,12 @@
1
+ export declare const CONTENT_ERRORS: {
2
+ readonly INVALID_SLUG: "Invalid slug";
3
+ readonly INVALID_SLUG_OR_ID: "Invalid slug or id";
4
+ readonly INVALID_JSON_BODY: "Invalid JSON body";
5
+ readonly NOT_FOUND: "Not found";
6
+ readonly SEED_NOT_FOUND: "Seed not found";
7
+ readonly DATABASE_ERROR: "Database error";
8
+ readonly SLUG_CONFLICT: "Slug already exists for this schema";
9
+ readonly SENSITIVE_FIELD_EDIT: "Cannot edit sensitive fields";
10
+ readonly BULK_SIZE_EXCEEDED: "Cannot edit more than 500 entries at once";
11
+ readonly FIELD_NOT_BULK_EDITABLE: "Field cannot be bulk-edited";
12
+ };
@@ -0,0 +1,3 @@
1
+ import { Context } from 'hono';
2
+ import { AppEnv } from '../../../types';
3
+ export declare function bulkHandler(context: Context<AppEnv>): Promise<Response>;
@@ -0,0 +1,3 @@
1
+ import { Context } from 'hono';
2
+ import { AppEnv } from '../../../types';
3
+ export declare function createHandler(context: Context<AppEnv>): Promise<Response>;
@@ -0,0 +1,3 @@
1
+ import { Context } from 'hono';
2
+ import { AppEnv } from '../../../types';
3
+ export declare function deleteHandler(context: Context<AppEnv>): Promise<Response>;
@@ -0,0 +1,3 @@
1
+ import { Context } from 'hono';
2
+ import { AppEnv } from '../../../types';
3
+ export declare function facetsHandler(context: Context<AppEnv>): Promise<Response>;
@@ -0,0 +1,4 @@
1
+ import { Context } from 'hono';
2
+ import { AppEnv } from '../../../types';
3
+ export declare function getByIdHandler(context: Context<AppEnv>): Promise<Response>;
4
+ export declare function getBySlugHandler(context: Context<AppEnv>): Promise<Response>;
@@ -0,0 +1,12 @@
1
+ import { Context } from 'hono';
2
+ import { AppEnv } from '../../../types';
3
+ export declare function normalizeBody(raw: unknown): Record<string, unknown>;
4
+ export declare function contentValidationProblem(context: Context, details: Array<{
5
+ field: string;
6
+ expected: string;
7
+ received: string;
8
+ message: string;
9
+ }>): Response;
10
+ export declare function logContentActivity(context: Context<AppEnv>, action: 'create' | 'update' | 'delete', id: string, slug: string, title: string): void;
11
+ export declare function dispatchContentAutomation(context: Context<AppEnv>, seedSlug: string, event: 'create' | 'update' | 'delete', entry: Record<string, unknown>): void;
12
+ export declare function handleContentDatabaseError(context: Context<AppEnv>, error: unknown): Response;
@@ -0,0 +1,3 @@
1
+ import { Context } from 'hono';
2
+ import { AppEnv } from '../../../types';
3
+ export declare function listHandler(context: Context<AppEnv>): Promise<Response>;
@@ -0,0 +1,3 @@
1
+ import { Context } from 'hono';
2
+ import { AppEnv } from '../../../types';
3
+ export declare function updateHandler(context: Context<AppEnv>): Promise<Response>;
@@ -0,0 +1,4 @@
1
+ import { Hono } from 'hono';
2
+ import { AppEnv } from '../../types';
3
+ declare const content: Hono<AppEnv, import("hono/types").BlankSchema, "/">;
4
+ export default content;
@@ -0,0 +1,7 @@
1
+ import { Hono } from 'hono';
2
+ import type { Env, Variables } from '../../types';
3
+ declare const dashboardLayoutApp: Hono<{
4
+ Bindings: Env;
5
+ Variables: Variables;
6
+ }, import("hono/types").BlankSchema, "/">;
7
+ export { dashboardLayoutApp };
@@ -0,0 +1 @@
1
+ export { dashboardLayoutApp } from './dashboard-layout.handler';
@@ -0,0 +1,4 @@
1
+ import { Hono } from 'hono';
2
+ import { AppEnv } from '../../types';
3
+ declare const draftApp: Hono<AppEnv, import("hono/types").BlankSchema, "/">;
4
+ export { draftApp };
@@ -0,0 +1,9 @@
1
+ import type { AppEnv } from '../../types';
2
+ /**
3
+ * Middleware that guards draft-related endpoints.
4
+ * Responsibilities:
5
+ * 1. Validates that the targeted Seed schema exists.
6
+ * 2. Ensures the Seed configuration explicitly allows drafts.
7
+ * 3. Confirms that the main live content entry exists in the repository.
8
+ */
9
+ export declare const draftGuard: import("hono").MiddlewareHandler<AppEnv, string, {}, Response>;
@@ -0,0 +1 @@
1
+ export { draftApp } from './draft.handler';
@@ -1,9 +1,4 @@
1
- // SPDX-License-Identifier: BUSL-1.1
2
- // Copyright (c) 2024–2026 Flavio De Musso. All rights reserved.
3
- // See LICENSE in the repository root for license terms.
4
-
5
- import type { OutboundEmail } from './email.types'
6
-
1
+ import type { OutboundEmail } from './email.types';
7
2
  /**
8
3
  * EmailProvider — formal contract for email sending providers.
9
4
  *
@@ -21,22 +16,22 @@ import type { OutboundEmail } from './email.types'
21
16
  * ─────────────────────────────────────────────────────────────────────────────
22
17
  */
23
18
  export interface EmailProvider {
24
- /**
25
- * Sends a single transactional email.
26
- *
27
- * @param email - The fully resolved message: sender, recipient,
28
- * subject, and HTML body. Use the builders in `templates/` to
29
- * construct this object correctly.
30
- *
31
- * @returns Promise that resolves when the provider has **accepted** the
32
- * message for delivery. Acceptance does not guarantee delivery
33
- * to the inbox — that depends on the recipient's server and the
34
- * provider's deliverability.
35
- *
36
- * @throws {Error} If the provider rejects the request (failed authentication,
37
- * network error, invalid payload). The caller
38
- * (`email.service.ts`) is responsible for catching and handling
39
- * this error appropriately.
40
- */
41
- send(email: OutboundEmail): Promise<void>
19
+ /**
20
+ * Sends a single transactional email.
21
+ *
22
+ * @param email - The fully resolved message: sender, recipient,
23
+ * subject, and HTML body. Use the builders in `templates/` to
24
+ * construct this object correctly.
25
+ *
26
+ * @returns Promise that resolves when the provider has **accepted** the
27
+ * message for delivery. Acceptance does not guarantee delivery
28
+ * to the inbox — that depends on the recipient's server and the
29
+ * provider's deliverability.
30
+ *
31
+ * @throws {Error} If the provider rejects the request (failed authentication,
32
+ * network error, invalid payload). The caller
33
+ * (`email.service.ts`) is responsible for catching and handling
34
+ * this error appropriately.
35
+ */
36
+ send(email: OutboundEmail): Promise<void>;
42
37
  }
@@ -0,0 +1,13 @@
1
+ import type { PasswordResetEmailParams, PasswordChangedEmailParams, AutomationMailParams } from './email.types';
2
+ export interface EmailProviderEnv {
3
+ /** "smtp" | "resend"; default "resend" if absent */
4
+ provider?: string;
5
+ /** Resend API key, used when provider is "resend" */
6
+ apiKey?: string;
7
+ /** Mailpit base URL (e.g. http://localhost:8025), used when provider is "smtp" */
8
+ smtpBaseUrl?: string;
9
+ isDev?: boolean;
10
+ }
11
+ export declare function sendPasswordResetEmail(params: PasswordResetEmailParams): Promise<void>;
12
+ export declare function sendPasswordChangedEmail(params: PasswordChangedEmailParams): Promise<void>;
13
+ export declare function sendAutomationMail(params: AutomationMailParams): Promise<void>;
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Shared types for the Beech CMS email module.
3
+ *
4
+ * All types used across provider, service, and templates are defined here
5
+ * so that each layer remains decoupled from the others.
6
+ */
7
+ /**
8
+ * Supported languages for the email template system.
9
+ *
10
+ * To add a new language:
11
+ * 1. Add the ISO code here (e.g., `'fr'`).
12
+ * 2. Add the corresponding translation in the `COPY` object of every
13
+ * file in `templates/`. TypeScript will flag missing keys.
14
+ */
15
+ export declare const SUPPORTED_EMAIL_LOCALES: readonly ["en", "it"];
16
+ export type EmailLocale = (typeof SUPPORTED_EMAIL_LOCALES)[number];
17
+ /**
18
+ * Resolves an unverified locale string (e.g., from a request body)
19
+ * to a supported `EmailLocale` value. Any unknown value
20
+ * safely falls back to `'en'`.
21
+ *
22
+ * @param raw - Raw value from the client (can be anything).
23
+ * @returns A valid `EmailLocale`, always.
24
+ */
25
+ export declare function resolveEmailLocale(raw: unknown): EmailLocale;
26
+ /**
27
+ * The resolved email message that the provider receives and sends.
28
+ * It is constructed by the service by combining the call parameters
29
+ * with the template builder output.
30
+ */
31
+ export interface OutboundEmail {
32
+ /** Sender address in RFC 5321 format (e.g., "Beech CMS <noreply@beechcms.dev>"). */
33
+ from: string;
34
+ /** List of recipient addresses. Must contain at least one element. */
35
+ to: string[];
36
+ subject: string;
37
+ /** Complete HTML body. Must be a valid HTML document (see `templates/shell.ts`). */
38
+ html: string;
39
+ }
40
+ /**
41
+ * Shared parameters for every email sending function in `email.service.ts`.
42
+ * Specific functions extend this type with the additional fields
43
+ * required for their respective templates.
44
+ */
45
+ export interface BaseEmailParams {
46
+ /** Main recipient address. */
47
+ to: string;
48
+ /** Email body language. Use `resolveEmailLocale()` before passing it here. */
49
+ locale: EmailLocale;
50
+ /**
51
+ * Resend API key (or the active provider's key). Must be non-empty —
52
+ * the caller is responsible for validating it before invoking the service.
53
+ */
54
+ apiKey: string;
55
+ /**
56
+ * Sender address in RFC 5321 format.
57
+ * Default: "Beech CMS <onboarding@resend.dev>" (Resend test sender).
58
+ * In production, set a verified address via the
59
+ * `EMAIL_FROM` environment variable.
60
+ */
61
+ from?: string;
62
+ /**
63
+ * When `true`, provider errors are logged to the console.
64
+ * Set to `false` in production to avoid exposing internal details.
65
+ */
66
+ isDev?: boolean;
67
+ }
68
+ /** Parameters for the password reset email — adds the reset URL. */
69
+ export interface PasswordResetEmailParams extends BaseEmailParams {
70
+ /**
71
+ * Complete URL that the user clicks to set the new password.
72
+ * Contains the token in plain text as a query param `?token=<uuid>`.
73
+ * Constructed by the caller as `${APP_URL}/reset-password?token=${token}`.
74
+ */
75
+ resetUrl: string;
76
+ provider?: 'smtp' | 'resend';
77
+ smtpBaseUrl?: string;
78
+ }
79
+ /** Parameters for the "password changed" notification. No additional fields. */
80
+ export interface PasswordChangedEmailParams extends BaseEmailParams {
81
+ provider?: 'smtp' | 'resend';
82
+ smtpBaseUrl?: string;
83
+ }
84
+ export interface AutomationMailParams {
85
+ to: string;
86
+ subject: string;
87
+ /** Plain text or HTML — passed verbatim to provider. */
88
+ body: string;
89
+ apiKey?: string;
90
+ resendApiKey?: string;
91
+ from?: string;
92
+ provider?: 'smtp' | 'resend';
93
+ smtpBaseUrl?: string;
94
+ }
@@ -1,7 +1,3 @@
1
- // SPDX-License-Identifier: BUSL-1.1
2
- // Copyright (c) 2024–2026 Flavio De Musso. All rights reserved.
3
- // See LICENSE in the repository root for license terms.
4
-
5
1
  /**
6
2
  * Public API — modulo email di Beech CMS
7
3
  *
@@ -19,15 +15,6 @@
19
15
  * PasswordResetEmailParams — shape dei parametri per sendPasswordResetEmail
20
16
  * PasswordChangedEmailParams — shape dei parametri per sendPasswordChangedEmail
21
17
  */
22
-
23
- export { sendPasswordResetEmail, sendPasswordChangedEmail, sendAutomationMail } from './email.service'
24
- export {
25
- resolveEmailLocale,
26
- SUPPORTED_EMAIL_LOCALES,
27
- } from './email.types'
28
- export type {
29
- EmailLocale,
30
- PasswordResetEmailParams,
31
- PasswordChangedEmailParams,
32
- AutomationMailParams,
33
- } from './email.types'
18
+ export { sendPasswordResetEmail, sendPasswordChangedEmail, sendAutomationMail } from './email.service';
19
+ export { resolveEmailLocale, SUPPORTED_EMAIL_LOCALES, } from './email.types';
20
+ export type { EmailLocale, PasswordResetEmailParams, PasswordChangedEmailParams, AutomationMailParams, } from './email.types';
@@ -0,0 +1,36 @@
1
+ import type { EmailProvider } from '../email.provider';
2
+ import type { OutboundEmail } from '../email.types';
3
+ /**
4
+ * Resend implementation of EmailProvider.
5
+ *
6
+ * This is the ONLY file in the email module that knows about Resend.
7
+ * Every other file is completely unaware of which provider is active.
8
+ *
9
+ * ─── HOW TO REPLACE THIS PROVIDER ──────────────────────────────────────────
10
+ * 1. Create a new file in `providers/` (e.g., `providers/sendgrid.ts`).
11
+ * 2. Export a class that implements `EmailProvider` (a single method: `send`).
12
+ * 3. In `email.service.ts`, replace `new ResendEmailProvider(...)` with
13
+ * your new class in the `createProvider()` function.
14
+ * 4. Update the environment variables in `types.ts` and `wrangler.jsonc`.
15
+ * 5. No other file in the project needs to be modified.
16
+ *
17
+ * Resend API Documentation: https://resend.com/docs/api-reference/emails/send-email
18
+ * ─────────────────────────────────────────────────────────────────────────────
19
+ */
20
+ export declare class ResendEmailProvider implements EmailProvider {
21
+ private readonly apiKey;
22
+ /** When `true`, errors are logged to the console (development only). */
23
+ private readonly isDev;
24
+ constructor(apiKey: string, isDev?: boolean);
25
+ /**
26
+ * Sends the email via the Resend REST API (`POST /emails`).
27
+ *
28
+ * Throws an exception if Resend responds with a non-2xx status, so that
29
+ * the caller (`email.service.ts`) can decide whether to propagate the error
30
+ * or handle it silently (fire-and-forget).
31
+ *
32
+ * The response body is read for logging only in the development environment,
33
+ * to avoid unnecessarily consuming the body stream in production.
34
+ */
35
+ send(email: OutboundEmail): Promise<void>;
36
+ }
@@ -0,0 +1,11 @@
1
+ import type { EmailProvider } from '../email.provider';
2
+ import type { OutboundEmail } from '../email.types';
3
+ export interface SmtpProviderConfig {
4
+ /** Base URL of the Mailpit HTTP API, e.g. http://localhost:8025 */
5
+ baseUrl: string;
6
+ }
7
+ export declare class SmtpEmailProvider implements EmailProvider {
8
+ private readonly endpoint;
9
+ constructor(config: SmtpProviderConfig);
10
+ send(email: OutboundEmail): Promise<void>;
11
+ }
@@ -0,0 +1,8 @@
1
+ import type { AutomationMailParams } from '../email.types';
2
+ /** Identity builder: automation payloads are already user-authored. */
3
+ export declare function buildAutomationEmail(params: AutomationMailParams): {
4
+ to: string;
5
+ subject: string;
6
+ html: string;
7
+ text: string;
8
+ };
@@ -0,0 +1,15 @@
1
+ import type { EmailLocale } from '../email.types';
2
+ /**
3
+ * Builds the "password changed" notification email.
4
+ *
5
+ * This email does not have a CTA button — it is a pure security notification.
6
+ * The `warning` block (red text) warns the user to take action if they
7
+ * were not the one who changed the password.
8
+ *
9
+ * @param locale - Language for the email subject and body.
10
+ * @returns Object with `subject` (string) and `html` (complete HTML document).
11
+ */
12
+ export declare function buildPasswordChangedEmail(locale: EmailLocale): {
13
+ subject: string;
14
+ html: string;
15
+ };
@@ -0,0 +1,18 @@
1
+ import type { EmailLocale } from '../email.types';
2
+ /**
3
+ * Builds the email with the password reset link.
4
+ *
5
+ * Composes the localized content with the base layout (`buildEmailShell`)
6
+ * injecting the CTA button pointing to the reset URL.
7
+ *
8
+ * @param resetUrl - Complete URL with the token in plain text, e.g.
9
+ * `https://dashboard.beechcms.dev/reset-password?token=<uuid>`.
10
+ * It is directly embedded in the CTA button — do not sanitize
11
+ * further: the token is an internally generated UUID.
12
+ * @param locale - Language for the email subject and body.
13
+ * @returns Object with `subject` (string) and `html` (complete HTML document).
14
+ */
15
+ export declare function buildPasswordResetEmail(resetUrl: string, locale: EmailLocale): {
16
+ subject: string;
17
+ html: string;
18
+ };
@@ -0,0 +1,58 @@
1
+ import type { EmailLocale } from '../email.types';
2
+ /**
3
+ * Content slots that every template must provide to compose a complete email.
4
+ * Each slot corresponds to a visual block in the email card layout.
5
+ */
6
+ export interface EmailShellSlots {
7
+ /**
8
+ * H2 heading shown at the top of the card. Keep it under ~50 characters
9
+ * to ensure good readability on mobile clients.
10
+ */
11
+ title: string;
12
+ /**
13
+ * Main body text. Rendered as a paragraph.
14
+ * Safe inline HTML is allowed (e.g., `<strong>`, `<a href="...">`),
15
+ * but avoid block elements (`<p>`, `<div>`) that could break
16
+ * the layout structure in rigid email clients (Outlook, Gmail).
17
+ */
18
+ body: string;
19
+ /**
20
+ * Optional call-to-action button, rendered as a dark link-button.
21
+ * Omit for notification-only emails that do not require user action.
22
+ */
23
+ cta?: {
24
+ label: string;
25
+ href: string;
26
+ };
27
+ /**
28
+ * Optional warning paragraph. Rendered in red (#ef4444) to attract
29
+ * attention. Use it for security alerts
30
+ * ("if it wasn't you, act immediately").
31
+ */
32
+ warning?: string;
33
+ /**
34
+ * Small gray text at the bottom of the card.
35
+ * Used for notes like "automated notification, do not reply".
36
+ */
37
+ footer: string;
38
+ }
39
+ /**
40
+ * Builds the base HTML layout shared by all Beech CMS transactional emails.
41
+ *
42
+ * ─── SINGLE SOURCE OF TRUTH FOR BRANDING ─────────────────────────────────────
43
+ * Modifying this function changes the visual appearance of ALL outgoing emails
44
+ * simultaneously:
45
+ * - background and card color
46
+ * - border style and border-radius
47
+ * - typographic scale and spacing
48
+ * - CTA button style
49
+ *
50
+ * To change the text or structure of a specific email, instead modify
51
+ * the corresponding template file (`templates/password-reset.ts`, etc.).
52
+ * ─────────────────────────────────────────────────────────────────────────────
53
+ *
54
+ * @param locale - Used for the `lang` attribute of the `<html>` tag.
55
+ * @param slots - Content blocks injected into the layout.
56
+ * @returns A complete and self-contained HTML document ready to be sent.
57
+ */
58
+ export declare function buildEmailShell(locale: EmailLocale, slots: EmailShellSlots): string;
@@ -0,0 +1 @@
1
+ export { notificationsApp } from './notifications.handler';
@@ -0,0 +1,15 @@
1
+ import { Hono } from 'hono';
2
+ import type { Env, Variables } from '../../types';
3
+ /**
4
+ * Notifications Feature Handler.
5
+ *
6
+ * Manages retrieval, mark read/unread, and deletion of system notifications.
7
+ * All persistence goes through the {@link INotificationRepository} injected
8
+ * by `repositoryMiddleware`. The handler owns the HTTP concerns only:
9
+ * ETag negotiation, status codes, error mapping.
10
+ */
11
+ declare const notificationsApp: Hono<{
12
+ Bindings: Env;
13
+ Variables: Variables;
14
+ }, import("hono/types").BlankSchema, "/">;
15
+ export { notificationsApp };
@@ -0,0 +1,6 @@
1
+ import { Hono } from 'hono';
2
+ import type { Env, Variables } from '../../types';
3
+ export declare const passwordResetApp: Hono<{
4
+ Bindings: Env;
5
+ Variables: Variables;
6
+ }, import("hono/types").BlankSchema, "/">;
@@ -0,0 +1,10 @@
1
+ import type { Context } from 'hono';
2
+ import type { Env, Variables } from '../../types';
3
+ /**
4
+ * Handles the password reset request.
5
+ * Generates a reset token, stores its hash in the database, and sends an email to the user.
6
+ */
7
+ export declare function requestPasswordReset(context: Context<{
8
+ Bindings: Env;
9
+ Variables: Variables;
10
+ }>): Promise<Response>;
@@ -0,0 +1,9 @@
1
+ import type { Context } from 'hono';
2
+ import type { Env, Variables } from '../../types';
3
+ /**
4
+ * Handles the actual password reset process using a valid token.
5
+ */
6
+ export declare function resetPassword(context: Context<{
7
+ Bindings: Env;
8
+ Variables: Variables;
9
+ }>): Promise<Response>;
@@ -0,0 +1 @@
1
+ export { rotateFieldApp } from './rotate-field.handler';
@@ -0,0 +1,7 @@
1
+ import { Hono } from 'hono';
2
+ import type { Env, Variables } from '../../types';
3
+ declare const rotateFieldApp: Hono<{
4
+ Bindings: Env;
5
+ Variables: Variables;
6
+ }, import("hono/types").BlankSchema, "/">;
7
+ export { rotateFieldApp };
@@ -0,0 +1,11 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Schema for rotating a hashed field value.
4
+ * Used to update fields that have 'hash' privacy (e.g., passwords, PINs).
5
+ */
6
+ export declare const rotateFieldRequestSchema: z.ZodObject<{
7
+ fieldAlias: z.ZodString;
8
+ currentValue: z.ZodString;
9
+ nextValue: z.ZodString;
10
+ }, z.core.$strip>;
11
+ export type RotateFieldRequest = z.infer<typeof rotateFieldRequestSchema>;
@@ -0,0 +1,7 @@
1
+ import { Hono } from 'hono';
2
+ import type { Env, Variables } from '../../types';
3
+ declare const schemaApp: Hono<{
4
+ Bindings: Env;
5
+ Variables: Variables;
6
+ }, import("hono/types").BlankSchema, "/">;
7
+ export { schemaApp };
@@ -0,0 +1 @@
1
+ export { seedsApp } from './seeds.handler';
@@ -0,0 +1,6 @@
1
+ import { Hono } from 'hono';
2
+ import type { Env, Variables } from '../../types';
3
+ export declare const seedsApp: Hono<{
4
+ Bindings: Env;
5
+ Variables: Variables;
6
+ }, import("hono/types").BlankSchema, "/">;
@@ -0,0 +1,7 @@
1
+ import { Hono } from 'hono';
2
+ import type { Env, Variables } from '../../types';
3
+ declare const settingsApp: Hono<{
4
+ Bindings: Env;
5
+ Variables: Variables;
6
+ }, import("hono/types").BlankSchema, "/">;
7
+ export { settingsApp };
@@ -0,0 +1,7 @@
1
+ import { Hono } from 'hono';
2
+ import type { Env, Variables } from '../../types';
3
+ declare const setupApp: Hono<{
4
+ Bindings: Env;
5
+ Variables: Variables;
6
+ }, import("hono/types").BlankSchema, "/">;
7
+ export { setupApp };
@@ -0,0 +1 @@
1
+ export { statsApp } from './stats.handler';
@@ -0,0 +1,7 @@
1
+ import { Hono } from 'hono';
2
+ import type { Env, Variables } from '../../types';
3
+ declare const statsApp: Hono<{
4
+ Bindings: Env;
5
+ Variables: Variables;
6
+ }, import("hono/types").BlankSchema, "/">;
7
+ export { statsApp };
@@ -0,0 +1,3 @@
1
+ import { Hono } from 'hono';
2
+ import type { AppEnv } from '../../types';
3
+ export declare const webhooksApp: Hono<AppEnv, import("hono/types").BlankSchema, "/">;
@@ -0,0 +1,7 @@
1
+ import type { Env } from './types';
2
+ declare const _default: {
3
+ fetch(request: Request, env: Env, ctx: ExecutionContext): Response | Promise<Response>;
4
+ queue(batch: MessageBatch<unknown>, env: Env, ctx: ExecutionContext): Promise<void>;
5
+ scheduled(controller: ScheduledController, env: Env, ctx: ExecutionContext): Promise<void>;
6
+ };
7
+ export default _default;