@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,16 @@
1
+ import { IdempotencyRepository, IdempotencyRecord } from '@beechcms/core';
2
+ import { BaseD1Repository } from './base.repository.d1.js';
3
+ export declare class D1IdempotencyRepository extends BaseD1Repository implements IdempotencyRepository {
4
+ /**
5
+ * Looks up an idempotency record by its key.
6
+ */
7
+ lookup(idempotencyKey: string): Promise<IdempotencyRecord | null>;
8
+ /**
9
+ * Stores or updates an idempotency record.
10
+ */
11
+ store(idempotencyData: IdempotencyRecord): Promise<void>;
12
+ /**
13
+ * Cleans up expired idempotency records.
14
+ */
15
+ cleanup(expirationTimestamp: number): Promise<void>;
16
+ }
@@ -0,0 +1,11 @@
1
+ import type { IActivityLogger, ActivityLogEntry } from '@beechcms/core';
2
+ /**
3
+ * Test double for {@link IActivityLogger}.
4
+ *
5
+ * Captures every call into a public array so test assertions can verify
6
+ * audit-trail side effects without touching D1. Preserves insertion order.
7
+ */
8
+ export declare class InMemoryActivityLogger implements IActivityLogger {
9
+ readonly entries: ActivityLogEntry[];
10
+ log(entry: ActivityLogEntry): void;
11
+ }
@@ -0,0 +1,11 @@
1
+ import type { INotificationService, CreateNotificationInput } from '@beechcms/core';
2
+ /**
3
+ * Test double for {@link INotificationService}.
4
+ *
5
+ * Captures every call into a public array so tests can assert what would have
6
+ * been delivered without touching D1.
7
+ */
8
+ export declare class InMemoryNotificationService implements INotificationService {
9
+ readonly receivedNotifications: CreateNotificationInput[];
10
+ notify(input: CreateNotificationInput): void;
11
+ }
@@ -0,0 +1,16 @@
1
+ import type { IQueueService, JobRegistry, JobContext } from '@beechcms/core';
2
+ type ScheduleBackgroundTask = (task: Promise<unknown>) => void;
3
+ /**
4
+ * Dev/offline + test fallback used when the QUEUE binding is absent. Runs the
5
+ * matching handler in-process. In production this is never selected. Uses
6
+ * executionCtx.waitUntil when available so enqueue stays non-blocking; falls
7
+ * back to awaiting inline (tests) otherwise.
8
+ */
9
+ export declare class InMemoryQueueService implements IQueueService {
10
+ private readonly jobs;
11
+ private readonly context;
12
+ private readonly scheduleBackgroundTask?;
13
+ constructor(jobs: JobRegistry, context: JobContext, scheduleBackgroundTask?: ScheduleBackgroundTask | undefined);
14
+ enqueue<T>(name: string, payload: T): Promise<void>;
15
+ }
16
+ export {};
@@ -0,0 +1,18 @@
1
+ import type { ISeedRepository, Seed, SeedRecord } from '@beechcms/core';
2
+ /**
3
+ * In-memory ISeedRepository for testing and for the config.seeds back-compat shim.
4
+ * Returns a fixed seed list with a static version token.
5
+ */
6
+ export declare class InMemorySeedRepository implements ISeedRepository {
7
+ private readonly seeds;
8
+ private version;
9
+ constructor(seeds: Seed[]);
10
+ listActive(): Promise<Seed[]>;
11
+ listAll(): Promise<SeedRecord[]>;
12
+ get(slug: string): Promise<SeedRecord | null>;
13
+ upsert(_slug: string, _definition: Seed, _source?: 'code' | 'runtime'): Promise<void>;
14
+ softDelete(_slug: string): Promise<void>;
15
+ hardDelete(_slug: string): Promise<void>;
16
+ getRegistryVersion(): Promise<number>;
17
+ bumpRegistryVersion(): Promise<number>;
18
+ }
@@ -0,0 +1,35 @@
1
+ import { MediaRepository, MediaObject } from '@beechcms/core';
2
+ /**
3
+ * Implementation of MediaRepository using Cloudflare D1.
4
+ * Provides methods to track media uploads, retrieve media metadata, and manage the media library state in the database.
5
+ */
6
+ export declare class D1MediaRepository implements MediaRepository {
7
+ private database;
8
+ constructor(database: D1Database);
9
+ /**
10
+ * Registers a new media upload in the database.
11
+ */
12
+ trackUpload(mediaObject: Omit<MediaObject, 'created_at'>): Promise<void>;
13
+ /**
14
+ * Retrieves a media object's metadata by its unique key.
15
+ */
16
+ getByKey(mediaKey: string): Promise<MediaObject | null>;
17
+ /**
18
+ * Removes the metadata tracking for a specific media key.
19
+ */
20
+ untrack(mediaKey: string): Promise<void>;
21
+ /**
22
+ * Lists media objects with pagination support.
23
+ */
24
+ list(paginationOptions: {
25
+ limit: number;
26
+ offset: number;
27
+ }): Promise<{
28
+ items: MediaObject[];
29
+ total: number;
30
+ }>;
31
+ /**
32
+ * Returns the total number of media objects in the database.
33
+ */
34
+ count(): Promise<number>;
35
+ }
@@ -0,0 +1,18 @@
1
+ import type { INotificationService, CreateNotificationInput } from '@beechcms/core';
2
+ type ScheduleBackgroundTask = (task: Promise<unknown>) => void;
3
+ /**
4
+ * QStash implementation of {@link INotificationService}.
5
+ *
6
+ * This service acts as a publisher, sending the notification payload to Upstash QStash,
7
+ * which guarantees delivery and retries. QStash will then forward the payload to the
8
+ * local webhook endpoint where it is actually inserted into D1.
9
+ */
10
+ export declare class QStashNotificationService implements INotificationService {
11
+ private readonly scheduleBackgroundTask?;
12
+ private readonly client;
13
+ private readonly webhookUrl;
14
+ constructor(token: string, appUrl: string, scheduleBackgroundTask?: ScheduleBackgroundTask | undefined, qstashUrl?: string);
15
+ notify(input: CreateNotificationInput): Promise<void> | void;
16
+ private runPublish;
17
+ }
18
+ export {};
@@ -0,0 +1,36 @@
1
+ import type { FilterGroup, FilterType } from '@beechcms/core';
2
+ /** Entry parsata per le risposte API — contratto immutabile (C7). */
3
+ export interface ContentEntry {
4
+ id: string;
5
+ schema_slug: string;
6
+ slug: string | null;
7
+ status: string;
8
+ data: Record<string, unknown>;
9
+ hasPendingDraft: boolean;
10
+ created_at: number | null;
11
+ updated_at: number | null;
12
+ }
13
+ export type QueryFilterType = FilterType;
14
+ export type QueryFilterOperator = 'eq' | 'gt' | 'gte' | 'lt' | 'lte' | 'contains' | 'is_empty' | 'is_not_empty';
15
+ export interface QueryFilterCondition {
16
+ id?: string;
17
+ op: QueryFilterOperator;
18
+ value: string | number | boolean | null;
19
+ }
20
+ /** Formato inviato dalla dashboard (usa columnId). */
21
+ export interface QueryFilterGroup {
22
+ columnId: string;
23
+ label?: string;
24
+ type: QueryFilterType;
25
+ conditions: QueryFilterCondition[];
26
+ }
27
+ export declare function cleanStr(val: unknown): string | null;
28
+ export declare function safeParseJson(data: unknown): Record<string, unknown>;
29
+ export declare function parsePositiveInt(value: string | undefined, fallback: number): number;
30
+ /** Parse sicuro dei filtri da query-string (formato dashboard con columnId). */
31
+ export declare function parseQueryFilters(raw: string | undefined): QueryFilterGroup[];
32
+ /**
33
+ * Converte QueryFilterGroup[] (formato dashboard, columnId) in FilterGroup[]
34
+ * compatibile con buildSelectQuery del Botanical Engine.
35
+ */
36
+ export declare function toEngineFilters(groups: QueryFilterGroup[]): FilterGroup[];
@@ -0,0 +1,9 @@
1
+ import type { JobRegistry, QueueMessage } from '@beechcms/core';
2
+ import type { Env } from '../types';
3
+ /**
4
+ * Consumer-side dispatch. Mirrors index.ts `scheduled()`: builds an
5
+ * engine-mediated JobContext from bindings (NEVER exposes env.DB to jobs) and
6
+ * routes each message to its handler. ack() on success/unknown-name (drop),
7
+ * retry() on throw so Cloudflare re-delivers.
8
+ */
9
+ export declare function dispatchQueueBatch(batch: MessageBatch<QueueMessage>, env: Env, _ctx: ExecutionContext, jobs: JobRegistry): Promise<void>;
@@ -0,0 +1,13 @@
1
+ import type { HonoRequest } from "hono";
2
+ /**
3
+ * Extracts the real client IP address from a Cloudflare Worker request.
4
+ *
5
+ * Cloudflare injects the cf-connecting-ip header on every request that
6
+ * passes through the edge. In local development (wrangler dev) or in
7
+ * unit tests the header may be absent, in which case the string "unknown"
8
+ * is returned so that rate-limiter keys remain non-empty and safe to use.
9
+ *
10
+ * Never derive security decisions from this value alone; treat it as a
11
+ * best-effort hint for rate-limiting and logging purposes only.
12
+ */
13
+ export declare function getClientIp(request: HonoRequest): string;
@@ -0,0 +1,12 @@
1
+ import type { ISchemaMutator } from '@beechcms/core';
2
+ export declare class D1SchemaMutator implements ISchemaMutator {
3
+ private readonly db;
4
+ constructor(db: D1Database);
5
+ getColumns(table: string): Promise<Set<string> | null>;
6
+ execDdl(statements: string[]): Promise<void>;
7
+ private static assertIdentifier;
8
+ dropTable(table: string): Promise<void>;
9
+ dropColumn(table: string, column: string): Promise<void>;
10
+ renameColumn(table: string, from: string, to: string): Promise<void>;
11
+ execDestructive(statements: string[]): Promise<void>;
12
+ }
@@ -0,0 +1,9 @@
1
+ import type { ISeedLayoutRepository, SeedLayoutRecord, FormLayout } from '@beechcms/core';
2
+ export declare class D1SeedLayoutRepository implements ISeedLayoutRepository {
3
+ private readonly db;
4
+ constructor(db: D1Database);
5
+ get(slug: string): Promise<SeedLayoutRecord | null>;
6
+ getAllAsMap(): Promise<Map<string, FormLayout>>;
7
+ upsert(slug: string, layout: FormLayout, updatedBy: string): Promise<void>;
8
+ remove(slug: string): Promise<void>;
9
+ }
@@ -0,0 +1,12 @@
1
+ import type { ISeedRegistry, BackrefMap, ISeedRepository } from '@beechcms/core';
2
+ /**
3
+ * Returns a fresh-enough { registry, backrefMap }. Reads the version token once per
4
+ * request (cheap indexed D1 read); rebuilds from listActive() only when the token
5
+ * changed or TTL lapsed.
6
+ */
7
+ export declare function getHydratedRegistry(repo: ISeedRepository): Promise<{
8
+ registry: ISeedRegistry;
9
+ backrefMap: BackrefMap;
10
+ }>;
11
+ /** Test seam: drop the isolate cache. */
12
+ export declare function __resetSeedRegistryCache(): void;
@@ -0,0 +1,13 @@
1
+ import type { ISeedRepository, SeedRecord, Seed } from '@beechcms/core';
2
+ export declare class D1SeedRepository implements ISeedRepository {
3
+ private readonly db;
4
+ constructor(db: D1Database);
5
+ listActive(): Promise<Seed[]>;
6
+ listAll(): Promise<SeedRecord[]>;
7
+ get(slug: string): Promise<SeedRecord | null>;
8
+ upsert(slug: string, definition: Seed, source?: 'code' | 'runtime'): Promise<void>;
9
+ softDelete(slug: string): Promise<void>;
10
+ hardDelete(slug: string): Promise<void>;
11
+ getRegistryVersion(): Promise<number>;
12
+ bumpRegistryVersion(): Promise<number>;
13
+ }
@@ -0,0 +1,13 @@
1
+ import type { IIdGenerator } from '@beechcms/core';
2
+ /**
3
+ * Test-only IIdGenerator implementation. Each call returns a stable,
4
+ * monotonically increasing identifier (`test-id-0001`, `test-id-0002`, …)
5
+ * so snapshot assertions and insert-order checks remain deterministic
6
+ * across runs.
7
+ */
8
+ export declare class SequentialIdGenerator implements IIdGenerator {
9
+ private counter;
10
+ uuid(): string;
11
+ isValid(value: unknown): value is string;
12
+ reset(): void;
13
+ }
@@ -0,0 +1,7 @@
1
+ import type { ISiteSettingsRepository, SiteSettings } from '@beechcms/core';
2
+ export declare class D1SiteSettingsRepository implements ISiteSettingsRepository {
3
+ private readonly db;
4
+ constructor(db: D1Database);
5
+ getAll(): Promise<SiteSettings>;
6
+ setMany(values: Partial<SiteSettings>): Promise<void>;
7
+ }
@@ -0,0 +1,8 @@
1
+ import { BeechBucket } from '@beechcms/core';
2
+ import { Env } from '../../types';
3
+ /**
4
+ * Single storage path: S3-compatible HTTP API.
5
+ * Prod → Cloudflare R2 with S3 API token.
6
+ * Dev → MinIO container (or R2 staging bucket).
7
+ */
8
+ export declare function createBucketProvider(env: Env, baseUrl: string): BeechBucket;
@@ -0,0 +1,43 @@
1
+ import { BeechBucket, PutBucketOptions, GetBucketResult, PresignOptions } from '@beechcms/core';
2
+ /**
3
+ * Implementation of BeechBucket using S3-compatible API (AWS SDK).
4
+ * Used for production when connecting to R2 or any other S3 provider via HTTP.
5
+ */
6
+ export declare class S3Bucket implements BeechBucket {
7
+ private client;
8
+ private bucketName;
9
+ private baseUrl;
10
+ private cdnUrl;
11
+ constructor(config: {
12
+ endpoint: string;
13
+ accessKeyId: string;
14
+ secretAccessKey: string;
15
+ bucketName: string;
16
+ baseUrl: string;
17
+ cdnUrl?: string;
18
+ });
19
+ put(key: string, body: ArrayBuffer | Uint8Array | ReadableStream, options?: PutBucketOptions): Promise<void>;
20
+ private streamToUint8Array;
21
+ get(key: string): Promise<GetBucketResult | null>;
22
+ delete(key: string): Promise<void>;
23
+ head(key: string): Promise<{
24
+ size: number;
25
+ contentType?: string;
26
+ metadata?: Record<string, string>;
27
+ } | null>;
28
+ getUrl(key: string): string;
29
+ getTotalSize(): Promise<number>;
30
+ presignPut(key: string, options: PresignOptions): Promise<string>;
31
+ presignGet(key: string, options: PresignOptions): Promise<string>;
32
+ list(options?: {
33
+ prefix?: string;
34
+ limit?: number;
35
+ cursor?: string;
36
+ }): Promise<{
37
+ objects: Array<{
38
+ key: string;
39
+ size: number;
40
+ }>;
41
+ cursor?: string;
42
+ }>;
43
+ }
@@ -0,0 +1,7 @@
1
+ import { S3Client } from '@aws-sdk/client-s3';
2
+ /**
3
+ * Calcola la dimensione totale occupata in un bucket R2 (in byte).
4
+ * Nota: esegue una scansione completa del bucket. Per bucket molto grandi
5
+ * andrebbe implementata una cache o usato Cloudflare Logpush/Analytics.
6
+ */
7
+ export declare function getBucketSize(client: S3Client, bucketName: string): Promise<number>;
@@ -0,0 +1,25 @@
1
+ import { SystemStatsRepository } from '@beechcms/core';
2
+ /**
3
+ * Implementation of SystemStatsRepository using Cloudflare D1.
4
+ * Manages global system statistics such as total storage usage.
5
+ */
6
+ export declare class D1SystemStatsRepository implements SystemStatsRepository {
7
+ private database;
8
+ constructor(database: D1Database);
9
+ /**
10
+ * Increments the total storage usage count.
11
+ */
12
+ incrementStorage(byteCount: number): Promise<void>;
13
+ /**
14
+ * Decrements the total storage usage count, ensuring it doesn't fall below zero.
15
+ */
16
+ decrementStorage(byteCount: number): Promise<void>;
17
+ /**
18
+ * Sets the total storage usage count to a specific value.
19
+ */
20
+ setStorage(byteCount: number): Promise<void>;
21
+ /**
22
+ * Retrieves the current total storage usage in bytes.
23
+ */
24
+ getStorageUsage(): Promise<number>;
25
+ }
@@ -0,0 +1,87 @@
1
+ import type { Seed, ContentRepository, IdempotencyRepository, BeechBucket, MediaRepository, SystemStatsRepository, IHashProvider, ITokenService, IUserRepository, ISessionRepository, IPasswordResetTokenRepository, IActivityLogger, IActivityLogRepository, INotificationRepository, INotificationService, IWidgetRepository, ISearchRepository, IAnalyticsRepository, IContentScanRepository, ISeedRegistry, IClock, IIdGenerator, IAutomationRunner, IAutomationRepository, IScheduler, BackrefMap, ISiteSettingsRepository, IDemoDataRepository, JwtClaims, ISeedLayoutRepository, ISeedRepository, ISchemaMutator, IDashboardLayoutRepository, IQueueService } from '@beechcms/core';
2
+ import type { IRateLimiterRegistry } from './middleware/rate-limit.middleware';
3
+ import type { ISetupChecklistRepository } from './shared/d1-setup-checklist.repository';
4
+ export interface Env {
5
+ DB: D1Database;
6
+ JWT_SECRET: string;
7
+ JWT_ISSUER?: string;
8
+ JWT_AUDIENCE?: string;
9
+ R2_ACCESS_KEY_ID?: string;
10
+ R2_SECRET_ACCESS_KEY?: string;
11
+ R2_ENDPOINT?: string;
12
+ R2_BUCKET_NAME?: string;
13
+ LOGIN_RATE_LIMITER?: RateLimit;
14
+ REFRESH_RATE_LIMITER?: RateLimit;
15
+ PUBLIC_READ_RATE_LIMITER?: RateLimit;
16
+ PUBLIC_WRITE_RATE_LIMITER?: RateLimit;
17
+ CORS_ORIGINS?: string;
18
+ PUBLIC_READ_API_KEY?: string;
19
+ PUBLIC_WRITE_API_KEY?: string;
20
+ PUBLIC_PUBLISHED_ONLY?: string;
21
+ PUBLIC_IDEMPOTENCY_TTL_SECONDS?: string;
22
+ MEDIA_BASE_URL?: string;
23
+ MEDIA_CDN_URL?: string;
24
+ MAX_UPLOAD_BYTES?: string;
25
+ RESEND_API_KEY?: string;
26
+ EMAIL_API_KEY?: string;
27
+ APP_URL?: string;
28
+ EMAIL_FROM?: string;
29
+ EMAIL_PROVIDER?: string;
30
+ SMTP_HOST?: string;
31
+ SMTP_PORT?: string;
32
+ WEBHOOK_TESTER_URL?: string;
33
+ FORGOT_PASSWORD_RATE_LIMITER?: RateLimit;
34
+ RESET_PASSWORD_RATE_LIMITER?: RateLimit;
35
+ ENV?: string;
36
+ DATE_FORMAT?: string;
37
+ ASSETS?: Fetcher;
38
+ QUEUE?: Queue;
39
+ QSTASH_TOKEN?: string;
40
+ QSTASH_URL?: string;
41
+ /** Public base URL the worker is reachable at, used by QStash to call back the webhook (e.g. an ngrok tunnel in dev). Falls back to APP_URL. */
42
+ QSTASH_CALLBACK_URL?: string;
43
+ QSTASH_CURRENT_SIGNING_KEY?: string;
44
+ QSTASH_NEXT_SIGNING_KEY?: string;
45
+ }
46
+ export interface Variables {
47
+ jwtPayload: JwtClaims;
48
+ getSeed: (slug: string) => Seed | null;
49
+ seedRegistry: ISeedRegistry;
50
+ repository: ContentRepository;
51
+ idempotencyRepository: IdempotencyRepository;
52
+ bucket: BeechBucket;
53
+ mediaRepository: MediaRepository;
54
+ systemStatsRepository: SystemStatsRepository;
55
+ hashProvider: IHashProvider;
56
+ tokenService: ITokenService;
57
+ userRepository: IUserRepository;
58
+ sessionRepository: ISessionRepository;
59
+ passwordResetTokenRepository: IPasswordResetTokenRepository;
60
+ rateLimiters: IRateLimiterRegistry;
61
+ activityLogger: IActivityLogger;
62
+ activityLogRepository: IActivityLogRepository;
63
+ notificationRepository: INotificationRepository;
64
+ notificationService: INotificationService;
65
+ widgetRepository: IWidgetRepository;
66
+ searchRepository: ISearchRepository;
67
+ analyticsRepository: IAnalyticsRepository;
68
+ contentScanRepository: IContentScanRepository;
69
+ clock: IClock;
70
+ idGenerator: IIdGenerator;
71
+ automationRepository: IAutomationRepository;
72
+ automationRunner: IAutomationRunner;
73
+ scheduler: IScheduler;
74
+ queue: IQueueService;
75
+ backrefMap: BackrefMap;
76
+ siteSettingsRepository: ISiteSettingsRepository;
77
+ demoDataRepository: IDemoDataRepository;
78
+ setupChecklistRepository: ISetupChecklistRepository;
79
+ seedLayoutRepository: ISeedLayoutRepository;
80
+ seedRepository: ISeedRepository;
81
+ schemaMutator: ISchemaMutator;
82
+ dashboardLayoutRepository: IDashboardLayoutRepository;
83
+ }
84
+ export type AppEnv = {
85
+ Bindings: Env;
86
+ Variables: Variables;
87
+ };
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Media Engine — Single-path presigned uploads.
3
+ * Il Worker non riceve mai i bytes: agisce solo da gatekeeper (auth, validazione, firma).
4
+ */
5
+ import { Hono } from 'hono';
6
+ import { AppEnv } from './types';
7
+ export declare function deleteR2Objects(c: {
8
+ var: {
9
+ bucket: any;
10
+ mediaRepository: any;
11
+ systemStatsRepository: any;
12
+ };
13
+ }, objectKeys: string[]): Promise<void>;
14
+ export declare const uploadRoutes: Hono<AppEnv, import("hono/types").BlankSchema, "/">;
15
+ /** Serve un file dallo storage (usato dalla rotta pubblica /api/media/:key). */
16
+ export declare function serveMediaHandler(c: any): Promise<Response>;
@@ -0,0 +1,7 @@
1
+ import { Hono } from 'hono';
2
+ import type { Env, Variables } from './types';
3
+ declare const widgetApp: Hono<{
4
+ Bindings: Env;
5
+ Variables: Variables;
6
+ }, import("hono/types").BlankSchema, "/">;
7
+ export { widgetApp };