dineway 0.2.39 → 0.2.41

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 (460) hide show
  1. package/dist/{activity-LXZdjKwI.mjs → activity-BuhkMdv8.mjs} +2 -2
  2. package/dist/{activity-events-DoqeOM8x.mjs → activity-events-DkHsy7Y0.mjs} +1 -1
  3. package/dist/{allowed-origins-DiVrMLxh.mjs → allowed-origins-Clitkhiv.mjs} +1 -1
  4. package/dist/api/route-utils.d.mts +15 -12
  5. package/dist/api/route-utils.mjs +27 -20
  6. package/dist/api/schemas/index.d.mts +1 -1
  7. package/dist/api/schemas/index.mjs +10 -5
  8. package/dist/{api-COSxvdOi.mjs → api-CMbsIQ46.mjs} +41 -13
  9. package/dist/{api-tokens-CNHnKO57.mjs → api-tokens-ciHNTdN2.mjs} +1 -1
  10. package/dist/{apply-D4rZHDyg.mjs → apply-B5qoX19G.mjs} +62 -18
  11. package/dist/astro/index.d.mts +16 -13
  12. package/dist/astro/index.mjs +31 -5
  13. package/dist/astro/middleware/auth.d.mts +14 -11
  14. package/dist/astro/middleware/auth.mjs +8 -8
  15. package/dist/astro/middleware/redirect.mjs +10 -6
  16. package/dist/astro/middleware/request-context.mjs +5 -5
  17. package/dist/astro/middleware/seed.d.mts +1 -1
  18. package/dist/astro/middleware/seed.mjs +2 -2
  19. package/dist/astro/middleware/setup.mjs +1 -1
  20. package/dist/astro/middleware.d.mts +2 -2
  21. package/dist/astro/middleware.mjs +266 -176
  22. package/dist/astro/routes/api/admin/allowed-domains/_domain_.mjs +12 -7
  23. package/dist/astro/routes/api/admin/allowed-domains/index.mjs +12 -7
  24. package/dist/astro/routes/api/admin/api-tokens/_id_.mjs +4 -4
  25. package/dist/astro/routes/api/admin/api-tokens/index.mjs +7 -7
  26. package/dist/astro/routes/api/admin/briefing.mjs +41 -22
  27. package/dist/astro/routes/api/admin/byline-fields/_slug_/usage.mjs +4 -4
  28. package/dist/astro/routes/api/admin/byline-fields/_slug_.mjs +14 -10
  29. package/dist/astro/routes/api/admin/byline-fields/index.mjs +14 -10
  30. package/dist/astro/routes/api/admin/byline-fields/reorder.mjs +14 -10
  31. package/dist/astro/routes/api/admin/bylines/_id_/index.mjs +25 -19
  32. package/dist/astro/routes/api/admin/bylines/_id_/translations.mjs +25 -19
  33. package/dist/astro/routes/api/admin/bylines/index.mjs +25 -19
  34. package/dist/astro/routes/api/admin/comments/_id_/status.mjs +20 -16
  35. package/dist/astro/routes/api/admin/comments/_id_.mjs +10 -7
  36. package/dist/astro/routes/api/admin/comments/bulk.mjs +18 -13
  37. package/dist/astro/routes/api/admin/comments/counts.mjs +10 -7
  38. package/dist/astro/routes/api/admin/comments/index.mjs +18 -13
  39. package/dist/astro/routes/api/admin/context/_id_/history.mjs +51 -39
  40. package/dist/astro/routes/api/admin/context/_id_/index.mjs +51 -39
  41. package/dist/astro/routes/api/admin/context/_id_/review.mjs +57 -44
  42. package/dist/astro/routes/api/admin/context/_id_/supersede.mjs +57 -44
  43. package/dist/astro/routes/api/admin/context/diff.mjs +56 -43
  44. package/dist/astro/routes/api/admin/context/index.mjs +57 -44
  45. package/dist/astro/routes/api/admin/context/stale.mjs +56 -43
  46. package/dist/astro/routes/api/admin/hitl-requests/_id_/index.mjs +51 -39
  47. package/dist/astro/routes/api/admin/hitl-requests/_id_/resolve.mjs +56 -43
  48. package/dist/astro/routes/api/admin/hitl-requests/index.mjs +56 -43
  49. package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.mjs +52 -40
  50. package/dist/astro/routes/api/admin/hooks/exclusive/index.mjs +3 -3
  51. package/dist/astro/routes/api/admin/oauth-clients/_id_.mjs +7 -7
  52. package/dist/astro/routes/api/admin/oauth-clients/index.mjs +7 -7
  53. package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs +78 -68
  54. package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs +78 -68
  55. package/dist/astro/routes/api/admin/plugins/_id_/index.mjs +71 -60
  56. package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs +78 -67
  57. package/dist/astro/routes/api/admin/plugins/_id_/update.mjs +78 -67
  58. package/dist/astro/routes/api/admin/plugins/index.mjs +71 -60
  59. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.mjs +2 -2
  60. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs +71 -60
  61. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs +78 -67
  62. package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs +71 -60
  63. package/dist/astro/routes/api/admin/plugins/updates.mjs +71 -60
  64. package/dist/astro/routes/api/admin/review-requests/_id_/image.mjs +38 -23
  65. package/dist/astro/routes/api/admin/review-requests/_id_/index.mjs +46 -36
  66. package/dist/astro/routes/api/admin/review-requests/_id_/resolve.mjs +63 -52
  67. package/dist/astro/routes/api/admin/review-requests/_id_/revoke.mjs +9 -9
  68. package/dist/astro/routes/api/admin/review-requests/index.mjs +61 -50
  69. package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs +71 -60
  70. package/dist/astro/routes/api/admin/themes/marketplace/_id_/thumbnail.mjs +2 -2
  71. package/dist/astro/routes/api/admin/themes/marketplace/index.mjs +71 -60
  72. package/dist/astro/routes/api/admin/users/_id_/disable.mjs +1 -1
  73. package/dist/astro/routes/api/admin/users/_id_/enable.mjs +1 -1
  74. package/dist/astro/routes/api/admin/users/_id_/index.mjs +11 -7
  75. package/dist/astro/routes/api/admin/users/_id_/send-recovery.mjs +3 -3
  76. package/dist/astro/routes/api/admin/users/index.mjs +12 -7
  77. package/dist/astro/routes/api/auth/dev-bypass.mjs +4 -4
  78. package/dist/astro/routes/api/auth/invite/accept.mjs +1 -1
  79. package/dist/astro/routes/api/auth/invite/complete.mjs +17 -12
  80. package/dist/astro/routes/api/auth/invite/index.mjs +14 -9
  81. package/dist/astro/routes/api/auth/invite/register-options.mjs +16 -11
  82. package/dist/astro/routes/api/auth/logout.mjs +2 -2
  83. package/dist/astro/routes/api/auth/magic-link/send.mjs +17 -12
  84. package/dist/astro/routes/api/auth/magic-link/verify.mjs +2 -2
  85. package/dist/astro/routes/api/auth/me.mjs +14 -11
  86. package/dist/astro/routes/api/auth/mode.mjs +1 -1
  87. package/dist/astro/routes/api/auth/oauth/_provider_/callback.mjs +3 -3
  88. package/dist/astro/routes/api/auth/oauth/_provider_.mjs +3 -3
  89. package/dist/astro/routes/api/auth/passkey/_id_.mjs +12 -7
  90. package/dist/astro/routes/api/auth/passkey/index.mjs +1 -1
  91. package/dist/astro/routes/api/auth/passkey/options.mjs +19 -14
  92. package/dist/astro/routes/api/auth/passkey/register/options.mjs +16 -11
  93. package/dist/astro/routes/api/auth/passkey/register/verify.mjs +17 -12
  94. package/dist/astro/routes/api/auth/passkey/verify.mjs +17 -12
  95. package/dist/astro/routes/api/auth/setup-token/index.mjs +6 -6
  96. package/dist/astro/routes/api/auth/setup-token/verify.mjs +2 -2
  97. package/dist/astro/routes/api/auth/signup/complete.mjs +17 -12
  98. package/dist/astro/routes/api/auth/signup/request.mjs +17 -12
  99. package/dist/astro/routes/api/auth/signup/verify.mjs +1 -1
  100. package/dist/astro/routes/api/comments/_collection_/_contentId_/index.d.mts +14 -11
  101. package/dist/astro/routes/api/comments/_collection_/_contentId_/index.mjs +23 -19
  102. package/dist/astro/routes/api/comments/_collection_/_contentId_/reactions.mjs +23 -18
  103. package/dist/astro/routes/api/content/_collection_/_id_/compare.mjs +2 -2
  104. package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs +8 -8
  105. package/dist/astro/routes/api/content/_collection_/_id_/duplicate.mjs +8 -8
  106. package/dist/astro/routes/api/content/_collection_/_id_/permanent.mjs +8 -8
  107. package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs +25 -20
  108. package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs +41 -31
  109. package/dist/astro/routes/api/content/_collection_/_id_/release-readiness.mjs +14 -9
  110. package/dist/astro/routes/api/content/_collection_/_id_/restore.mjs +8 -8
  111. package/dist/astro/routes/api/content/_collection_/_id_/revisions.mjs +2 -2
  112. package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs +41 -31
  113. package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs +30 -20
  114. package/dist/astro/routes/api/content/_collection_/_id_/translations.mjs +2 -2
  115. package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs +8 -8
  116. package/dist/astro/routes/api/content/_collection_/_id_.mjs +25 -14
  117. package/dist/astro/routes/api/content/_collection_/authors.mjs +2 -2
  118. package/dist/astro/routes/api/content/_collection_/index.mjs +25 -14
  119. package/dist/astro/routes/api/content/_collection_/trash.mjs +13 -8
  120. package/dist/astro/routes/api/dashboard.mjs +21 -13
  121. package/dist/astro/routes/api/dev/emails.mjs +2 -2
  122. package/dist/astro/routes/api/health.mjs +1 -1
  123. package/dist/astro/routes/api/import/probe.d.mts +3 -3
  124. package/dist/astro/routes/api/import/probe.mjs +30 -23
  125. package/dist/astro/routes/api/import/wordpress/analyze.mjs +13 -10
  126. package/dist/astro/routes/api/import/wordpress/execute.d.mts +14 -11
  127. package/dist/astro/routes/api/import/wordpress/execute.mjs +58 -47
  128. package/dist/astro/routes/api/import/wordpress/media.d.mts +14 -11
  129. package/dist/astro/routes/api/import/wordpress/media.mjs +17 -14
  130. package/dist/astro/routes/api/import/wordpress/prepare.mjs +61 -48
  131. package/dist/astro/routes/api/import/wordpress/rewrite-urls.d.mts +15 -12
  132. package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs +58 -45
  133. package/dist/astro/routes/api/import/wordpress-plugin/analyze.d.mts +1 -1
  134. package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs +32 -26
  135. package/dist/astro/routes/api/import/wordpress-plugin/callback.mjs +1 -1
  136. package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts +14 -11
  137. package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs +63 -52
  138. package/dist/astro/routes/api/integration/artifact.mjs +9 -9
  139. package/dist/astro/routes/api/integration/dispatch.mjs +14 -14
  140. package/dist/astro/routes/api/integrations/_provider_.mjs +9 -9
  141. package/dist/astro/routes/api/integrations/index.mjs +8 -8
  142. package/dist/astro/routes/api/manifest.mjs +5 -5
  143. package/dist/astro/routes/api/mcp.mjs +141 -93
  144. package/dist/astro/routes/api/media/_id_/confirm.mjs +15 -12
  145. package/dist/astro/routes/api/media/_id_.mjs +14 -9
  146. package/dist/astro/routes/api/media/file/_...key_.mjs +1 -1
  147. package/dist/astro/routes/api/media/providers/_providerId_/_itemId_.mjs +2 -2
  148. package/dist/astro/routes/api/media/providers/_providerId_/index.mjs +2 -2
  149. package/dist/astro/routes/api/media/providers/index.mjs +2 -2
  150. package/dist/astro/routes/api/media/upload-url.mjs +16 -13
  151. package/dist/astro/routes/api/media.mjs +19 -16
  152. package/dist/astro/routes/api/menus/_name_/items/_id_.mjs +57 -44
  153. package/dist/astro/routes/api/menus/_name_/items.mjs +57 -44
  154. package/dist/astro/routes/api/menus/_name_/reorder.mjs +57 -44
  155. package/dist/astro/routes/api/menus/_name_/translations.mjs +57 -44
  156. package/dist/astro/routes/api/menus/_name_.mjs +57 -44
  157. package/dist/astro/routes/api/menus/index.mjs +57 -44
  158. package/dist/astro/routes/api/oauth/authorize.mjs +7 -7
  159. package/dist/astro/routes/api/oauth/device/authorize.mjs +5 -5
  160. package/dist/astro/routes/api/oauth/device/code.mjs +9 -9
  161. package/dist/astro/routes/api/oauth/device/token.mjs +8 -8
  162. package/dist/astro/routes/api/oauth/register.mjs +4 -4
  163. package/dist/astro/routes/api/oauth/token/refresh.mjs +5 -5
  164. package/dist/astro/routes/api/oauth/token/revoke.mjs +5 -5
  165. package/dist/astro/routes/api/oauth/token.mjs +6 -6
  166. package/dist/astro/routes/api/openapi.json.mjs +10 -5
  167. package/dist/astro/routes/api/plugins/_pluginId_/_...path_.mjs +4 -4
  168. package/dist/astro/routes/api/redirects/404s/index.mjs +15 -13
  169. package/dist/astro/routes/api/redirects/404s/summary.mjs +15 -13
  170. package/dist/astro/routes/api/redirects/_id_.mjs +57 -44
  171. package/dist/astro/routes/api/redirects/index.mjs +57 -44
  172. package/dist/astro/routes/api/revisions/_revisionId_/index.mjs +2 -2
  173. package/dist/astro/routes/api/revisions/_revisionId_/restore.mjs +2 -2
  174. package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs +73 -62
  175. package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs +73 -62
  176. package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs +73 -62
  177. package/dist/astro/routes/api/schema/collections/_slug_/index.mjs +73 -62
  178. package/dist/astro/routes/api/schema/collections/index.mjs +73 -62
  179. package/dist/astro/routes/api/schema/index.mjs +13 -10
  180. package/dist/astro/routes/api/schema/orphans/_slug_.mjs +71 -60
  181. package/dist/astro/routes/api/schema/orphans/index.mjs +71 -60
  182. package/dist/astro/routes/api/search/enable.mjs +20 -13
  183. package/dist/astro/routes/api/search/index.mjs +19 -12
  184. package/dist/astro/routes/api/search/rebuild.mjs +20 -13
  185. package/dist/astro/routes/api/search/stats.mjs +12 -7
  186. package/dist/astro/routes/api/search/suggest.mjs +19 -12
  187. package/dist/astro/routes/api/sections/_slug_.mjs +57 -44
  188. package/dist/astro/routes/api/sections/index.mjs +57 -44
  189. package/dist/astro/routes/api/settings/email.mjs +5 -5
  190. package/dist/astro/routes/api/settings/reviews.mjs +11 -11
  191. package/dist/astro/routes/api/settings.mjs +57 -44
  192. package/dist/astro/routes/api/setup/admin-verify.mjs +19 -14
  193. package/dist/astro/routes/api/setup/admin.mjs +17 -12
  194. package/dist/astro/routes/api/setup/dev-bypass.mjs +44 -32
  195. package/dist/astro/routes/api/setup/dev-reset.mjs +2 -2
  196. package/dist/astro/routes/api/setup/index.mjs +47 -34
  197. package/dist/astro/routes/api/setup/status.mjs +3 -3
  198. package/dist/astro/routes/api/snapshot.mjs +9 -9
  199. package/dist/astro/routes/api/system/heartbeat.mjs +2 -2
  200. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs +60 -47
  201. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs +60 -47
  202. package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs +60 -47
  203. package/dist/astro/routes/api/taxonomies/index.mjs +60 -47
  204. package/dist/astro/routes/api/themes/preview.mjs +7 -7
  205. package/dist/astro/routes/api/typegen.mjs +4 -4
  206. package/dist/astro/routes/api/well-known/auth.mjs +3 -3
  207. package/dist/astro/routes/api/well-known/oauth-authorization-server.mjs +3 -3
  208. package/dist/astro/routes/api/well-known/oauth-protected-resource.mjs +3 -3
  209. package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs +56 -43
  210. package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs +57 -44
  211. package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs +57 -44
  212. package/dist/astro/routes/api/widget-areas/_name_.mjs +53 -41
  213. package/dist/astro/routes/api/widget-areas/index.mjs +57 -44
  214. package/dist/astro/routes/api/widget-components.mjs +2 -2
  215. package/dist/astro/routes/robots.txt.mjs +14 -9
  216. package/dist/astro/routes/sitemap-_collection_.xml.mjs +20 -16
  217. package/dist/astro/routes/sitemap.xml.mjs +19 -15
  218. package/dist/astro/session-driver.d.mts +1 -1
  219. package/dist/astro/session-driver.mjs +8 -3
  220. package/dist/astro/types.d.mts +21 -14
  221. package/dist/{atomic-authority-CnBQJ14T.mjs → atomic-authority-Bf5QZboB.mjs} +2 -2
  222. package/dist/{audit-Cl495Ze3.mjs → audit-hXJBTPY0.mjs} +1 -1
  223. package/dist/auth/providers/github.d.mts +1 -1
  224. package/dist/auth/providers/google.d.mts +1 -1
  225. package/dist/{auth-control-guard-DbjgJdlo.mjs → auth-control-guard-DpUP6Fs_.mjs} +1 -1
  226. package/dist/{authorize-DDmgmnW-.mjs → authorize-DWNOqMKq.mjs} +1 -1
  227. package/dist/{briefing-DsD-Ouwc.mjs → briefing-BzvBeIJh.mjs} +1 -1
  228. package/dist/{briefing-COw-WcYz.mjs → briefing-DYiV93rg.mjs} +995 -7
  229. package/dist/{bundle-bhiszAui.mjs → bundle-DWn5eFKz.mjs} +2 -2
  230. package/dist/{byline-TYk2kad6.mjs → byline-3qjp1-oa.mjs} +65 -14
  231. package/dist/{byline-fields-CKhPED5o.d.mts → byline-fields-Bne2v0ti.d.mts} +42 -38
  232. package/dist/{byline-fields-BKj5f3Ub.mjs → byline-fields-DRMCc0V_.mjs} +1 -1
  233. package/dist/{byline-fields-DZ46DF10.mjs → byline-fields-wWu2Cb3l.mjs} +3 -3
  234. package/dist/{byline-registry-CJihchD1.mjs → byline-registry-Caj0_gbU.mjs} +1 -1
  235. package/dist/{bylines-6T9iVC9j.mjs → bylines-BSn9O1Wx.mjs} +3 -3
  236. package/dist/{bylines-CvTSCAw9.mjs → bylines-CGuJi-zu.mjs} +5 -5
  237. package/dist/{patterns-Ay-4KImK.mjs → cache-DsEbwFVE.mjs} +51 -1
  238. package/dist/{chunks-C8vSD_5L.mjs → chunks-Bb56aCtB.mjs} +1 -1
  239. package/dist/cli/index.mjs +488 -58
  240. package/dist/cli/plugin-kit.d.mts +14 -11
  241. package/dist/cli/plugin-kit.mjs +2 -2
  242. package/dist/client/external-auth-headers.d.mts +1 -1
  243. package/dist/client/index.d.mts +16 -13
  244. package/dist/client/index.mjs +2 -2
  245. package/dist/{client-factory-C1ZQCMog.mjs → client-factory-BLbm250o.mjs} +1 -1
  246. package/dist/{comment-DAQfUjqt.mjs → comment-BWDG1nQm.mjs} +2 -2
  247. package/dist/{comment-reaction-Dp3G7UZc.mjs → comment-reaction-B7pLTlQ7.mjs} +1 -1
  248. package/dist/{comments-BrvIaRAx.mjs → comments-xkten8nV.mjs} +1 -1
  249. package/dist/config-6R0bchVE.mjs +125 -0
  250. package/dist/{content-CIKsrvU9.mjs → content-BigS8BAv.mjs} +302 -45
  251. package/dist/content-Dr22fzA_.mjs +390 -0
  252. package/dist/{content-refresh-BilzqcLt.mjs → content-refresh-DJuFIqQ4.mjs} +14 -8
  253. package/dist/content-storage/index.d.mts +180 -0
  254. package/dist/content-storage/index.mjs +29 -0
  255. package/dist/content-storage/store.d.mts +3 -0
  256. package/dist/content-storage/store.mjs +5 -0
  257. package/dist/{review-payload-Bap86e75.mjs → content-write-DAZCNKWl.mjs} +838 -131
  258. package/dist/{context-DAs_MZjJ.mjs → context-0806nV9h.mjs} +292 -23
  259. package/dist/{context-DVTvucNb.mjs → context-CCsI5nTK.mjs} +2 -2
  260. package/dist/{context-route-helpers-BP-UJ4u8.mjs → context-route-helpers-TP3EqxRQ.mjs} +2 -2
  261. package/dist/{dashboard-BAjWCGCP.mjs → dashboard-CSrnhBO6.mjs} +4 -4
  262. package/dist/database/batch.d.mts +1 -1
  263. package/dist/database/batch.mjs +1 -1
  264. package/dist/database/d1/index.d.mts +14 -11
  265. package/dist/database/d1/index.mjs +4 -4
  266. package/dist/database/instrumentation.mjs +3 -2
  267. package/dist/db/index.d.mts +3 -3
  268. package/dist/db/index.mjs +1 -1
  269. package/dist/db/libsql.d.mts +1 -1
  270. package/dist/db/postgres.d.mts +1 -1
  271. package/dist/db/sqlite.d.mts +1 -1
  272. package/dist/{device-flow-Dh0rNlh1.mjs → device-flow-SoZh-HvN.mjs} +3 -3
  273. package/dist/{discovery-V0e0Gg8j.mjs → discovery-49qXmdwv.mjs} +4 -4
  274. package/dist/{enrich-B7PIJ8Iy.mjs → enrich-CAMsD1aT.mjs} +1 -1
  275. package/dist/{error-B5a45Tfb.mjs → error-sL4aemcW.mjs} +2 -0
  276. package/dist/{evidence-Vnp_fQbC.mjs → evidence-B3O9_VKm.mjs} +7 -7
  277. package/dist/{field-defs-cache-aXUeXJdC.mjs → field-defs-cache-dn5Tw79A.mjs} +4 -4
  278. package/dist/{fts-manager-BrPpYtK0.mjs → fts-manager-Zu5ITic0.mjs} +1 -1
  279. package/dist/{hitl-requests-BxMMON3s.mjs → hitl-requests-B5vOPseK.mjs} +2 -2
  280. package/dist/{hitl-route-helpers-sdnjpx2k.mjs → hitl-route-helpers-C3icmGdj.mjs} +5 -5
  281. package/dist/hook-events-BQw73jc7.d.mts +32 -0
  282. package/dist/{import-C2-v4FCs.mjs → import-CKnKQj3f.mjs} +9 -9
  283. package/dist/{index-BVGe04wF.d.mts → index-CLj17kW9.d.mts} +12 -5
  284. package/dist/index.d.mts +19 -16
  285. package/dist/index.mjs +107 -98
  286. package/dist/{integration-credentials-DMEXZU2J.mjs → integration-credentials-DpuRw1kx.mjs} +2 -2
  287. package/dist/{jsonld-XWmmAoVo.d.mts → jsonld-CN91qtDw.d.mts} +2 -2
  288. package/dist/{load-DvCVppOF.mjs → load-CiRTddkJ.mjs} +1 -1
  289. package/dist/{loader-Dp6zLmQm.mjs → loader-CCwWFQSh.mjs} +16 -5
  290. package/dist/{manifest-schema-CCvogfrP.mjs → manifest-schema-DaQpgyTB.mjs} +1 -1
  291. package/dist/{mcp-reviewed-executor-B8Gbin3T.mjs → mcp-reviewed-executor-DA6Q9sDc.mjs} +6 -6
  292. package/dist/media/image-endpoint.mjs +1 -1
  293. package/dist/media/index.d.mts +1 -1
  294. package/dist/media/index.mjs +2 -2
  295. package/dist/media/local-runtime.d.mts +16 -13
  296. package/dist/media/local-runtime.mjs +3 -3
  297. package/dist/{media-C5ba8fvI.mjs → media-BjH5OD-A.mjs} +1 -1
  298. package/dist/{media-allowlist-DQvscVkS.mjs → media-allowlist-C8HJ2O61.mjs} +1 -1
  299. package/dist/{menus-CyNpBQrX.mjs → menus-CbBi7Ad7.mjs} +2 -2
  300. package/dist/{menus-w5xwT-f5.mjs → menus-D0c8CeVg.mjs} +7 -7
  301. package/dist/migration-DJuj7ZwN.mjs +526 -0
  302. package/dist/{migrations-CLlX25HO.mjs → migrations-BAjF60cl.mjs} +1 -1
  303. package/dist/{oauth-authorization-CdqJZUMf.mjs → oauth-authorization-CSSRMOKn.mjs} +4 -4
  304. package/dist/{oauth-clients-CHNb9MAZ.mjs → oauth-clients-DX5HIJJv.mjs} +2 -2
  305. package/dist/object-cache/memory.d.mts +1 -1
  306. package/dist/{object-cache-mxCW-Rpt.mjs → object-cache-DyI1SOBK.mjs} +3 -1
  307. package/dist/owned-metadata-BPmUjZqI.mjs +69 -0
  308. package/dist/page/index.d.mts +15 -12
  309. package/dist/page/index.mjs +1 -1
  310. package/dist/{parse-THHCpJLB.mjs → parse-C6kCR1OT.mjs} +1 -1
  311. package/dist/plugin-utils.d.mts +14 -11
  312. package/dist/plugins/adapt-sandbox-entry.d.mts +14 -11
  313. package/dist/plugins/adapt-sandbox-entry.mjs +1 -1
  314. package/dist/{plugins-pfraURNp.mjs → plugins-V0W65r3v.mjs} +16 -962
  315. package/dist/{policy-B6mVa7ib.mjs → policy-DbceGc4P.mjs} +2 -2
  316. package/dist/{preview-Bh7D7F27.mjs → preview-CWiIjMDi.mjs} +2 -2
  317. package/dist/{provider-loader-DT7vQ5FI.d.mts → provider-loader-oLKm1AU8.d.mts} +1 -1
  318. package/dist/{public-url-Ccv0Xmue.d.mts → public-url-CEC1vj02.d.mts} +2 -2
  319. package/dist/{public-url-BvnTaacI.d.mts → public-url-CKrUov8D.d.mts} +1 -1
  320. package/dist/{publication-authorization-B_HJSnzR.mjs → publication-authorization-wMR-tEQ_.mjs} +43 -17
  321. package/dist/{query-xspvw7Ui.mjs → query-DDi367tF.mjs} +14 -14
  322. package/dist/{query-DLeahg3x.mjs → query-DLnnpEuf.mjs} +4 -4
  323. package/dist/{rate-limit-BsBr_U9g.mjs → rate-limit-DeVLLe4z.mjs} +2 -2
  324. package/dist/{redirect-BQFa1THe.mjs → redirect-CJ-FAbNK.mjs} +2 -2
  325. package/dist/{redirects-DJcsgz_X.mjs → redirects-BKi6mek4.mjs} +4 -5
  326. package/dist/{redirects-CVfxefrz.mjs → redirects-I78-ZYLV.mjs} +5 -386
  327. package/dist/{registry-Dclv9iHv.mjs → registry-zXXZezu-.mjs} +7 -7
  328. package/dist/{release-B3Q-9B7N.mjs → release-Cpi0-Bzq.mjs} +173 -22
  329. package/dist/request-context.d.mts +30 -0
  330. package/dist/{request-meta-CjORiJQ_.mjs → request-meta-DZYuLXx_.mjs} +1 -1
  331. package/dist/review-payload-Bhi52CbI.mjs +112 -0
  332. package/dist/{review-requests-CcSUTm_l.mjs → review-requests-C-ScxD9n.mjs} +2 -2
  333. package/dist/{review-requests-CUVn0RBl.mjs → review-requests-DZYM51yI.mjs} +2 -2
  334. package/dist/{review-route-helpers-CKBfGKCi.mjs → review-route-helpers-DXNDyx_q.mjs} +2 -2
  335. package/dist/{revision-W6FDfDqx.mjs → revision-B_HYO2AE.mjs} +42 -7
  336. package/dist/revisions-CQ7rMP5d.mjs +55 -0
  337. package/dist/{revocation-C_ZQvGRT.mjs → revocation-4we8kfBg.mjs} +2 -2
  338. package/dist/{runner-CRU7BXjr.mjs → runner-CuG8o1uW.mjs} +558 -487
  339. package/dist/{runner-SoP1rphP.d.mts → runner-DXQkyPeX.d.mts} +1 -1
  340. package/dist/{runs-BtaAiLTw.mjs → runs-BjgLfqCn.mjs} +5 -5
  341. package/dist/runtime-Bs2JMbb2.d.mts +45 -0
  342. package/dist/runtime-Ch5G-tnG.mjs +400 -0
  343. package/dist/runtime.d.mts +15 -12
  344. package/dist/runtime.mjs +9 -4
  345. package/dist/schema-BA05k0TN.mjs +8 -0
  346. package/dist/{search-BI9uKr7U.mjs → search-DMrzhfx_.mjs} +4 -98
  347. package/dist/{secrets-D_pergcD.mjs → secrets-CIYcw9T9.mjs} +4 -4
  348. package/dist/{sections-BqqYq9RW.mjs → sections-BTrSEhqB.mjs} +2 -2
  349. package/dist/seed/index.d.mts +2 -2
  350. package/dist/seed/index.mjs +38 -26
  351. package/dist/seo/index.d.mts +3 -3
  352. package/dist/seo/index.mjs +12 -9
  353. package/dist/{seo-Bs_DUxJf.mjs → seo-Cv7ud_m2.mjs} +44 -5
  354. package/dist/{seo-B-5PsaJO.mjs → seo-DkjtBh-y.mjs} +1 -1
  355. package/dist/{service-W2xuGLgw.mjs → service-BBJM08uD.mjs} +2 -2
  356. package/dist/{service-B65aJsN7.mjs → service-CkMuD5AE.mjs} +3 -3
  357. package/dist/{settings-DsBzKeUQ.mjs → settings-BUONaNnG.mjs} +7 -7
  358. package/dist/{settings-CyJ2-MKx.mjs → settings-CI-NtWEc.mjs} +2 -2
  359. package/dist/{setup-complete-DeivSVJi.mjs → setup-complete-DoVbVrHx.mjs} +1 -1
  360. package/dist/{site-activity-DU0UPDji.mjs → site-activity-hpfJkmxQ.mjs} +1 -1
  361. package/dist/{site-context-Dic2jHuw.mjs → site-context-BW3GRCJH.mjs} +15 -15
  362. package/dist/{site-url-Tw6CfBB2.mjs → site-url-CYatfe3q.mjs} +1 -1
  363. package/dist/{state-DM7blWfT.mjs → state-CKkqoA6i.mjs} +1 -1
  364. package/dist/storage/local.d.mts +1 -1
  365. package/dist/storage/local.mjs +1 -1
  366. package/dist/storage/s3.d.mts +1 -1
  367. package/dist/storage/s3.mjs +2 -2
  368. package/dist/{store-32e6dfD-.mjs → store-BzaAtszy.mjs} +3 -3
  369. package/dist/submission-DLgjQ_Ew.mjs +205 -0
  370. package/dist/{taxonomies-BFsUR7kc.mjs → taxonomies-C02-Vuh3.mjs} +3 -3
  371. package/dist/{taxonomies-lWGNLKgn.mjs → taxonomies-D5wO9zmB.mjs} +7 -7
  372. package/dist/{taxonomy-DN6i1upz.mjs → taxonomy-BK7JmHlo.mjs} +53 -3
  373. package/dist/terms-EskuqbKE.mjs +104 -0
  374. package/dist/text-extraction-CdqMGYQK.mjs +96 -0
  375. package/dist/{tokens-D-StaTAQ.mjs → tokens-D8HEH277.mjs} +1 -1
  376. package/dist/{trusted-proxy-hYufGFPK.mjs → trusted-proxy-Dg3U9Lrv.mjs} +1 -1
  377. package/dist/{types-RFzE_V1M.mjs → types-BI3ULB3A.mjs} +2 -2
  378. package/dist/{types-CJynaYg1.d.mts → types-C3jUu4Bc.d.mts} +90 -34
  379. package/dist/{types-B--VyN3n.d.mts → types-Dpv_MvwZ.d.mts} +1 -1
  380. package/dist/{types-CgcOeaiQ.d.mts → types-ex-UrNlz.d.mts} +1 -1
  381. package/dist/types-qOEot0UQ.d.mts +83 -0
  382. package/dist/ui/server-runtime.d.mts +18 -15
  383. package/dist/ui/server-runtime.mjs +29 -25
  384. package/dist/{user-Btai9rl3.mjs → user-Bl2_8rhJ.mjs} +2 -2
  385. package/dist/{utils-CYxGuO_P.mjs → utils-CklSLz9F.mjs} +2 -2
  386. package/dist/{validate-C05z0m7M.mjs → validate-C-yk7mmX.mjs} +3 -3
  387. package/dist/{validate-kmN2lS8H.d.mts → validate-DUscf6VG.d.mts} +3 -3
  388. package/dist/version-BlE1LEPb.mjs +6 -0
  389. package/dist/version-store-BXv2D0de.mjs +208 -0
  390. package/dist/version-store-B_THJCc0.d.mts +98 -0
  391. package/dist/{widgets-BOrDZdQ3.mjs → widgets-9xHBhL_L.mjs} +3 -3
  392. package/dist/{wordpress-slugs-ROzITIBK.mjs → wordpress-slugs-yaeD7cxn.mjs} +1 -1
  393. package/dist/{worker-Bg35R37I.mjs → worker-CC_Rt1pB.mjs} +10 -10
  394. package/dist/write-intent-DuHVqks9.mjs +108 -0
  395. package/dist/{zod-generator-DkrWuID7.mjs → zod-generator-B5Pt8fv0.mjs} +2 -2
  396. package/package.json +16 -4
  397. package/dist/cache-B5NSHhxG.mjs +0 -52
  398. package/dist/cron-C7HCJPPl.mjs +0 -271
  399. package/dist/schema-CosVhHJt.mjs +0 -8
  400. package/dist/submission-DJmRejGR.mjs +0 -411
  401. package/dist/version-BnLdwIT1.mjs +0 -6
  402. /package/dist/{actor-DxUAJgQX.mjs → actor-D0AW80ld.mjs} +0 -0
  403. /package/dist/{adapter-symbols-Bq3JsWGM.d.mts → adapter-symbols-B9mi-BUh.d.mts} +0 -0
  404. /package/dist/{adapters-C8nRpUuj.d.mts → adapters-lDnJjNDz.d.mts} +0 -0
  405. /package/dist/{api-tokens-0N3nafqZ.mjs → api-tokens-CdfsE9PL.mjs} +0 -0
  406. /package/dist/{base64-Cz-aU0X1.mjs → base64-qvSs0Gxy.mjs} +0 -0
  407. /package/dist/{challenge-store-BPn3goP9.mjs → challenge-store-7IZ_NqWg.mjs} +0 -0
  408. /package/dist/{components-rFN8NH3N.mjs → components-JA6tFHmE.mjs} +0 -0
  409. /package/dist/{context-types-CPWAJRs5.mjs → context-types-DDIJhGLs.mjs} +0 -0
  410. /package/dist/{default-BS6VQRkB.mjs → default-C2azCFSB.mjs} +0 -0
  411. /package/dist/{email-console-GqK6hgMJ.mjs → email-console-BYQp_5Qr.mjs} +0 -0
  412. /package/dist/{escape-CE7xOWzJ.mjs → escape-4_NNa6GR.mjs} +0 -0
  413. /package/dist/{experimental-workflows-BbxpWwBy.mjs → experimental-workflows-CPNiI2EL.mjs} +0 -0
  414. /package/dist/{forgeway-account-DcTxh3Gw.mjs → forgeway-account-YzraapbX.mjs} +0 -0
  415. /package/dist/{hash-D2Rqd2J2.mjs → hash-qSYPMJ8w.mjs} +0 -0
  416. /package/dist/{media-url-D9kdpoLS.mjs → media-url-D5E1a47B.mjs} +0 -0
  417. /package/dist/{mime-BnVhH671.mjs → mime-FkfazULS.mjs} +0 -0
  418. /package/dist/{mode-D0gePRtf.mjs → mode-C3RI5Z5t.mjs} +0 -0
  419. /package/dist/{normalize-aTwryvvi.mjs → normalize-DrmlLn40.mjs} +0 -0
  420. /package/dist/{oauth-authority-P5YMSk2z.mjs → oauth-authority-DVlLFhsZ.mjs} +0 -0
  421. /package/dist/{oauth-state-store-CMqLdo4I.mjs → oauth-state-store-nf-78RbK.mjs} +0 -0
  422. /package/dist/{options-JiLWB6Bt.mjs → options-yFkLUuTw.mjs} +0 -0
  423. /package/dist/{output-7HDrYTSQ.mjs → output-ljHaxIHX.mjs} +0 -0
  424. /package/dist/{parser-kettsjWc.mjs → parser-CTlxybRo.mjs} +0 -0
  425. /package/dist/{passkey-config-DVzQ3dv3.mjs → passkey-config-BLon3ct9.mjs} +0 -0
  426. /package/dist/{placeholder-DJLP_HY7.d.mts → placeholder-DdZV3I8x.d.mts} +0 -0
  427. /package/dist/{portable-text-tQhvPLf1.mjs → portable-text-CSbRjM-T.mjs} +0 -0
  428. /package/dist/{portable-text-BE7nszX6.d.mts → portable-text-HNmwL-7L.d.mts} +0 -0
  429. /package/dist/{process-cache-C19OA3am.mjs → process-cache-CMy5M80h.mjs} +0 -0
  430. /package/dist/{provider-loader-DERzBMUz.mjs → provider-loader-DlaT1usE.mjs} +0 -0
  431. /package/dist/{public-discovery-BGyhuD5U.mjs → public-discovery-BnqYofSK.mjs} +0 -0
  432. /package/dist/{public-url-DFXUU6Wp.mjs → public-url-BHjYWuaN.mjs} +0 -0
  433. /package/dist/{public-url-sR8SVmTt.mjs → public-url-GQygrYmg.mjs} +0 -0
  434. /package/dist/{redirect-BxacnBYL.mjs → redirect-CokmLN5o.mjs} +0 -0
  435. /package/dist/{request-cache-8_ifFzVw.mjs → request-cache-CizvDoxV.mjs} +0 -0
  436. /package/dist/{resolve-DEKC4qVa.mjs → resolve-BxFGSKYu.mjs} +0 -0
  437. /package/dist/{runtime-env-CPTzh0mZ.mjs → runtime-env-DpYGy4pT.mjs} +0 -0
  438. /package/dist/{scheduled-publish-BxdShRGs.d.mts → scheduled-publish-eCNGpvNm.d.mts} +0 -0
  439. /package/dist/{seo-contributions-LEFs1d7w.mjs → seo-contributions-ZKqrqsdT.mjs} +0 -0
  440. /package/dist/{service-kQ5ljRzX.mjs → service-DeX1PRNt.mjs} +0 -0
  441. /package/dist/{session-user-eweCNKzW.mjs → session-user-D36BRaZY.mjs} +0 -0
  442. /package/dist/{setup-nonce-B6A5Y1ea.mjs → setup-nonce-B9IO7PbK.mjs} +0 -0
  443. /package/dist/{sidecar-client-BwPhhz-F.mjs → sidecar-client-2hx5G46s.mjs} +0 -0
  444. /package/dist/{slugify-kD31VIv2.mjs → slugify-DvoaEPtL.mjs} +0 -0
  445. /package/dist/{ssrf-C9dyjU8O.mjs → ssrf-DcD8vn3E.mjs} +0 -0
  446. /package/dist/{stable-hash-B9Tbb2f_.mjs → stable-hash-9RDJgfif.mjs} +0 -0
  447. /package/dist/{status-Bjf_uSrW.mjs → status-B2xUokyJ.mjs} +0 -0
  448. /package/dist/{transport-BrU1aDY5.mjs → transport-BHYE4pox.mjs} +0 -0
  449. /package/dist/{transport-CZbtxgKZ.d.mts → transport-CVU5rp7W.d.mts} +0 -0
  450. /package/dist/{types-DNBL-4Sn.mjs → types-B3Uq7Czg.mjs} +0 -0
  451. /package/dist/{types-DsJTXStN.d.mts → types-BJztoTbF.d.mts} +0 -0
  452. /package/dist/{types-COvyXIp7.mjs → types-BgUxCuwu.mjs} +0 -0
  453. /package/dist/{types-KFzuijKE.d.mts → types-C0heD9oI.d.mts} +0 -0
  454. /package/dist/{types-B03h5jt_.d.mts → types-DheoByey.d.mts} +0 -0
  455. /package/dist/{types-SlLXjRpg.d.mts → types-I5LHzk_M.d.mts} +0 -0
  456. /package/dist/{types-PLJ9hlhh.mjs → types-Nm0cMxEh.mjs} +0 -0
  457. /package/dist/{types-CtGSEKEJ.d.mts → types-PxxPTFSl.d.mts} +0 -0
  458. /package/dist/{url-DGG3hw_h.mjs → url-Coamqvs4.mjs} +0 -0
  459. /package/dist/{url-DUz3LbCs.mjs → url-dn4mFfCI.mjs} +0 -0
  460. /package/dist/{workers-build-5UQ4j69Q.mjs → workers-build-4926MPc0.mjs} +0 -0
@@ -0,0 +1,208 @@
1
+ import { atomicBatch, ensureAtomicBatchSchema, rowUnchanged } from "./database/batch.mjs";
2
+ import { n as contentDigest, o as ContentStorageError, t as canonicalContentJson } from "./config-6R0bchVE.mjs";
3
+ import { sql } from "kysely";
4
+ import { z } from "zod";
5
+
6
+ //#region src/content-storage/version-store.ts
7
+ const CONTENT_NAME = /^[a-z][a-z0-9_]{0,62}$/;
8
+ const locationSchema = z.object({
9
+ collection: z.string().regex(CONTENT_NAME),
10
+ entryId: z.string().min(1).max(128),
11
+ store: z.string().min(1).max(63),
12
+ partition: z.string().min(1).max(256),
13
+ routingVersion: z.string().min(1).max(128),
14
+ version: z.string().min(1).max(128),
15
+ digest: z.string().regex(/^[a-f0-9]{64}$/)
16
+ });
17
+ const contentStoreCollectionSchema = z.object({ fields: z.record(z.string().regex(/^[a-z][a-z0-9_]{0,62}$/).refine((name) => name !== "id"), z.enum([
18
+ "text",
19
+ "integer",
20
+ "real",
21
+ "json"
22
+ ])).refine((fields) => Object.keys(fields).length <= 98, "Content stores support at most 98 data columns.") }).strict();
23
+ const storedMetadata = z.object({
24
+ fields: z.record(z.string(), z.enum([
25
+ "text",
26
+ "integer",
27
+ "real",
28
+ "json",
29
+ "boolean"
30
+ ])),
31
+ extra: z.record(z.string(), z.json())
32
+ }).strict();
33
+ const contentVersionSchema = z.object({
34
+ command: locationSchema.extend({
35
+ partitionEpoch: z.number().int().positive().optional(),
36
+ kind: z.enum(["content", "revision"]).optional(),
37
+ operationId: z.string().min(1).max(128),
38
+ principalId: z.string().min(1).max(128),
39
+ expectedVersion: z.string().min(1).max(128).nullable()
40
+ }).strict(),
41
+ data: z.record(z.string(), z.json())
42
+ }).strict();
43
+ const contentStoreRequestSchema = z.discriminatedUnion("action", [z.object({
44
+ action: z.literal("prepare"),
45
+ value: contentVersionSchema
46
+ }).strict(), z.object({
47
+ action: z.literal("read"),
48
+ locations: z.array(locationSchema.strict()).min(1).max(16),
49
+ fields: z.array(z.string().regex(CONTENT_NAME)).max(98).optional()
50
+ }).strict()]);
51
+ /** Install on content databases explicitly; never called from a content request. */
52
+ async function installContentVersionStore(db, identity, collections, options = {}) {
53
+ if (!identity || identity.length > 128) throw new ContentStorageError("INVALID_CONFIG", "A physical content database identity is required.");
54
+ await ensureAtomicBatchSchema(db);
55
+ await db.schema.createTable("_dineway_content_store_identity").ifNotExists().addColumn("id", "integer", (c) => c.primaryKey()).addColumn("identity", "text", (c) => c.notNull()).addColumn("schema_version", "integer", (c) => c.notNull()).execute();
56
+ await atomicBatch(db, {
57
+ checks: [sql`NOT EXISTS (SELECT 1 FROM _dineway_content_store_identity WHERE id = 1 AND (identity <> ${identity} OR schema_version <> 1))`],
58
+ statements: [sql`INSERT INTO _dineway_content_store_identity (id, identity, schema_version) VALUES (1, ${identity}, 1) ON CONFLICT (id) DO NOTHING`.compile(db)]
59
+ });
60
+ await db.schema.createTable("_dineway_content_versions").ifNotExists().addColumn("collection", "text", (c) => c.notNull()).addColumn("entry_id", "text", (c) => c.notNull()).addColumn("version", "text", (c) => c.notNull()).addColumn("operation_id", "text", (c) => c.notNull().unique()).addColumn("digest", "text", (c) => c.notNull()).addColumn("command", "text", (c) => c.notNull()).addColumn("data", "text", (c) => c.notNull()).addColumn("created_at", "text", (c) => c.notNull()).addPrimaryKeyConstraint("pk_content_versions", [
61
+ "collection",
62
+ "entry_id",
63
+ "version"
64
+ ]).execute();
65
+ await db.schema.createIndex("idx_content_versions_created_at").ifNotExists().on("_dineway_content_versions").column("created_at").execute();
66
+ await db.schema.createTable("_dineway_content_store_collections").ifNotExists().addColumn("collection", "text", (c) => c.primaryKey()).addColumn("schema", "text", (c) => c.notNull()).addColumn("physical_schema", "text", (c) => c.notNull()).addColumn("digest", "text", (c) => c.notNull()).execute();
67
+ await db.schema.createTable("_dineway_content_store_schema_history").ifNotExists().addColumn("collection", "text", (c) => c.notNull()).addColumn("digest", "text", (c) => c.notNull()).addColumn("schema", "text", (c) => c.notNull()).addColumn("installed_at", "text", (c) => c.notNull()).addPrimaryKeyConstraint("pk_content_store_schema_history", ["collection", "digest"]).execute();
68
+ for (const [collection, input] of Object.entries(collections)) {
69
+ if (!CONTENT_NAME.test(collection)) throw new ContentStorageError("INVALID_CONFIG", "Invalid content type name.");
70
+ const definition = contentStoreCollectionSchema.parse(input);
71
+ const serialized = canonicalContentJson(definition);
72
+ const digest = await contentDigest(definition);
73
+ const previous = (await sql`SELECT collection,schema,physical_schema,digest FROM _dineway_content_store_collections WHERE collection=${collection}`.execute(db)).rows[0];
74
+ if (previous && previous.digest !== digest && !options.upgrade) throw new ContentStorageError("INVALID_CONFIG", "Content store schema changes require the explicit schema upgrade command.");
75
+ const physical = previous ? contentStoreCollectionSchema.parse(JSON.parse(previous.physical_schema)) : { fields: {} };
76
+ const added = Object.entries(definition.fields).filter(([field]) => !Object.hasOwn(physical.fields, field));
77
+ for (const [field, type] of Object.entries(definition.fields)) if (Object.hasOwn(physical.fields, field) && physical.fields[field] !== type) throw new ContentStorageError("INVALID_CONFIG", `Changing the stored type of ${collection}.${field} requires a separate data migration. Use a new field name.`);
78
+ const nextPhysical = contentStoreCollectionSchema.parse({ fields: {
79
+ ...physical.fields,
80
+ ...definition.fields
81
+ } });
82
+ const statements = [];
83
+ if (previous) for (const [field, type] of added) statements.push(db.schema.alterTable(`ec_${collection}`).addColumn(field, type === "json" ? "text" : type).compile());
84
+ else {
85
+ let table = db.schema.createTable(`ec_${collection}`).addColumn("id", "text", (c) => c.notNull()).addColumn("_dineway_storage_version", "text", (c) => c.notNull());
86
+ for (const [field, type] of Object.entries(definition.fields)) table = table.addColumn(field, type === "json" ? "text" : type);
87
+ statements.push(table.addPrimaryKeyConstraint(`pk_ec_${collection}_version`, ["id", "_dineway_storage_version"]).compile());
88
+ }
89
+ statements.push(sql`INSERT INTO _dineway_content_store_collections (collection,schema,physical_schema,digest) VALUES (${collection},${serialized},${canonicalContentJson(nextPhysical)},${digest}) ON CONFLICT (collection) DO UPDATE SET schema=excluded.schema,physical_schema=excluded.physical_schema,digest=excluded.digest`.compile(db), sql`INSERT INTO _dineway_content_store_schema_history (collection,digest,schema,installed_at) VALUES (${collection},${digest},${serialized},${(/* @__PURE__ */ new Date()).toISOString()}) ON CONFLICT (collection,digest) DO NOTHING`.compile(db));
90
+ await atomicBatch(db, {
91
+ checks: [previous ? rowUnchanged("_dineway_content_store_collections", previous) : sql`NOT EXISTS (SELECT 1 FROM _dineway_content_store_collections WHERE collection=${collection})`],
92
+ statements
93
+ });
94
+ }
95
+ }
96
+ /** Validate the physical binding and deployed schema once at request entry. */
97
+ async function assertContentVersionStore(db, identity) {
98
+ const result = await sql`SELECT identity, schema_version FROM _dineway_content_store_identity WHERE id = 1`.execute(db);
99
+ if (result.rows[0]?.identity !== identity || result.rows[0]?.schema_version !== 1) throw new ContentStorageError("UNAVAILABLE", "Content database identity or schema does not match the deployed content service.");
100
+ }
101
+ /** Immutable staging versions; only the primary directory can make one visible. */
102
+ var ContentVersionStore = class {
103
+ schemas = /* @__PURE__ */ new Map();
104
+ constructor(db, name, routingVersion) {
105
+ this.db = db;
106
+ this.name = name;
107
+ this.routingVersion = routingVersion;
108
+ }
109
+ async prepare(input) {
110
+ const { command, data } = contentVersionSchema.parse(input);
111
+ this.assertTarget(command, true);
112
+ const serialized = canonicalContentJson(command);
113
+ const payload = canonicalContentJson(data);
114
+ const definition = await this.schema(command.collection);
115
+ const fields = {};
116
+ const extra = {};
117
+ const columns = ["id", "_dineway_storage_version"];
118
+ const values = [command.entryId, command.version];
119
+ for (const [field, value] of Object.entries(data)) {
120
+ if (field.startsWith("_")) {
121
+ extra[field] = value;
122
+ continue;
123
+ }
124
+ const type = definition.fields[field];
125
+ if (!type && command.kind === "revision") {
126
+ extra[field] = value;
127
+ continue;
128
+ }
129
+ if (!type) throw new ContentStorageError("INVALID_CONFIG", `Content field ${field} is absent from the deployed store schema.`);
130
+ let encoded = value;
131
+ let codec = type;
132
+ if (value !== null) {
133
+ if (type === "json") encoded = canonicalContentJson(value);
134
+ else if (type === "integer" && typeof value === "boolean") {
135
+ encoded = Number(value);
136
+ codec = "boolean";
137
+ } else if (type === "text" ? typeof value !== "string" : typeof value !== "number" || !Number.isFinite(value) || type === "integer" && !Number.isSafeInteger(value)) throw new ContentStorageError("CONFLICT", `Content field ${field} does not match its deployed column type.`);
138
+ }
139
+ fields[field] = codec;
140
+ columns.push(field);
141
+ values.push(encoded);
142
+ }
143
+ const metadata = canonicalContentJson({
144
+ fields,
145
+ extra
146
+ });
147
+ if (await contentDigest(data) !== command.digest) throw new ContentStorageError("CONFLICT", "The prepared content digest does not match.");
148
+ if (new TextEncoder().encode(payload + serialized + command.collection + command.entryId + command.version + command.operationId + command.digest).length > 1999e3) throw new ContentStorageError("CONFLICT", "The content version exceeds the D1 row size limit; no data was truncated.");
149
+ await atomicBatch(this.db, {
150
+ checks: [sql`NOT EXISTS (SELECT 1 FROM _dineway_content_versions WHERE operation_id = ${command.operationId} AND command <> ${serialized})`, sql`NOT EXISTS (SELECT 1 FROM _dineway_content_versions WHERE collection = ${command.collection} AND entry_id = ${command.entryId} AND version = ${command.version} AND (command <> ${serialized} OR data <> ${metadata}))`],
151
+ statements: [sql`INSERT INTO ${sql.table(`ec_${command.collection}`)} (${sql.join(columns.map((column) => sql.ref(column)))}) VALUES (${sql.join(values)}) ON CONFLICT (id, _dineway_storage_version) DO NOTHING`.compile(this.db), sql`INSERT INTO _dineway_content_versions (collection, entry_id, version, operation_id, digest, command, data, created_at) VALUES (${command.collection}, ${command.entryId}, ${command.version}, ${command.operationId}, ${command.digest}, ${serialized}, ${metadata}, ${(/* @__PURE__ */ new Date()).toISOString()}) ON CONFLICT (collection, entry_id, version) DO NOTHING`.compile(this.db)]
152
+ });
153
+ }
154
+ async read(locations, fields) {
155
+ if (!locations.length) return [];
156
+ if (locations.length > 16) throw new ContentStorageError("CONFLICT", "Content reads must be split into batches of at most 16 versions.");
157
+ for (const location of locations) this.assertTarget(locationSchema.parse(location));
158
+ const versions = [];
159
+ for (const collection of new Set(locations.map((location) => location.collection))) {
160
+ const schema = await this.schema(collection);
161
+ const columns = fields?.filter((field) => Object.hasOwn(schema.physicalFields, field));
162
+ const clauses = locations.filter((location) => location.collection === collection).map((location) => sql`(v.entry_id = ${location.entryId} AND v.version = ${location.version} AND v.digest = ${location.digest})`);
163
+ const result = await sql`SELECT ${columns ? sql.join([
164
+ ...columns.map((field) => sql.ref(`c.${field}`)),
165
+ sql`v.command AS _command`,
166
+ sql`v.data AS _metadata`
167
+ ]) : sql`c.*, v.command AS _command, v.data AS _metadata`} FROM _dineway_content_versions v JOIN ${sql.table(`ec_${collection}`)} c ON c.id = v.entry_id AND c._dineway_storage_version = v.version WHERE v.collection = ${collection} AND (${sql.join(clauses, sql` OR `)})`.execute(this.db);
168
+ for (const row of result.rows) {
169
+ const metadata = storedMetadata.parse(JSON.parse(row._metadata));
170
+ const data = fields ? Object.fromEntries(Object.entries(metadata.extra).filter(([field]) => fields.includes(field))) : { ...metadata.extra };
171
+ for (const [field, type] of Object.entries(metadata.fields)) {
172
+ if (fields && !fields.includes(field)) continue;
173
+ if (!Object.hasOwn(row, field)) throw new ContentStorageError("UNAVAILABLE", "A stored content field is missing from its physical table.");
174
+ const value = row[field];
175
+ data[field] = value === null ? null : type === "json" ? JSON.parse(z.string().parse(value)) : type === "boolean" ? value === 1 : value;
176
+ }
177
+ versions.push(contentVersionSchema.parse({
178
+ command: JSON.parse(row._command),
179
+ data
180
+ }));
181
+ }
182
+ }
183
+ return versions;
184
+ }
185
+ schema(collection) {
186
+ let pending = this.schemas.get(collection);
187
+ if (!pending) {
188
+ pending = sql`SELECT schema,physical_schema, digest FROM _dineway_content_store_collections WHERE collection = ${collection}`.execute(this.db).then(async (result) => {
189
+ const row = result.rows[0];
190
+ if (!row) throw new ContentStorageError("INVALID_CONFIG", "Content type schema is not installed in this store.");
191
+ const definition = contentStoreCollectionSchema.parse(JSON.parse(row.schema));
192
+ if (await contentDigest(definition) !== row.digest) throw new ContentStorageError("UNAVAILABLE", "Content store schema fingerprint does not match.");
193
+ return {
194
+ ...definition,
195
+ physicalFields: contentStoreCollectionSchema.parse(JSON.parse(row.physical_schema)).fields
196
+ };
197
+ });
198
+ this.schemas.set(collection, pending);
199
+ }
200
+ return pending;
201
+ }
202
+ assertTarget(location, write = false) {
203
+ if (location.store !== this.name || write && location.routingVersion !== this.routingVersion) throw new ContentStorageError("ROUTE_CHANGED", "The content request targets a different store or routing version.");
204
+ }
205
+ };
206
+
207
+ //#endregion
208
+ export { contentVersionSchema as a, contentStoreRequestSchema as i, assertContentVersionStore as n, installContentVersionStore as o, contentStoreCollectionSchema as r, ContentVersionStore as t };
@@ -0,0 +1,98 @@
1
+ import { d as ContentStore, n as ContentPartitionContext, p as PreparedContentVersion, r as ContentPartitionResolver, s as ContentStorageConfig, t as ContentLocation } from "./types-qOEot0UQ.mjs";
2
+ import { Kysely } from "kysely";
3
+ import { z } from "zod";
4
+
5
+ //#region src/content-storage/config.d.ts
6
+ declare function canonicalContentJson(value: unknown): string;
7
+ declare function contentDigest(value: unknown): Promise<string>;
8
+ declare function validateContentStorage(config: ContentStorageConfig): void;
9
+ declare function resolveContentPartition(config: ContentStorageConfig, context: ContentPartitionContext, resolvers?: Readonly<Record<string, ContentPartitionResolver>>): Promise<{
10
+ store: string;
11
+ partition: string;
12
+ } | null>;
13
+ //#endregion
14
+ //#region src/content-storage/version-store.d.ts
15
+ declare const contentStoreCollectionSchema: z.ZodObject<{
16
+ fields: z.ZodRecord<z.ZodString, z.ZodEnum<{
17
+ json: "json";
18
+ text: "text";
19
+ integer: "integer";
20
+ real: "real";
21
+ }>>;
22
+ }, z.core.$strict>;
23
+ type ContentStoreCollection = z.infer<typeof contentStoreCollectionSchema>;
24
+ declare const contentVersionSchema: z.ZodObject<{
25
+ command: z.ZodObject<{
26
+ collection: z.ZodString;
27
+ entryId: z.ZodString;
28
+ store: z.ZodString;
29
+ partition: z.ZodString;
30
+ routingVersion: z.ZodString;
31
+ version: z.ZodString;
32
+ digest: z.ZodString;
33
+ partitionEpoch: z.ZodOptional<z.ZodNumber>;
34
+ kind: z.ZodOptional<z.ZodEnum<{
35
+ content: "content";
36
+ revision: "revision";
37
+ }>>;
38
+ operationId: z.ZodString;
39
+ principalId: z.ZodString;
40
+ expectedVersion: z.ZodNullable<z.ZodString>;
41
+ }, z.core.$strict>;
42
+ data: z.ZodRecord<z.ZodString, z.ZodJSONSchema>;
43
+ }, z.core.$strict>;
44
+ declare const contentStoreRequestSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
45
+ action: z.ZodLiteral<"prepare">;
46
+ value: z.ZodObject<{
47
+ command: z.ZodObject<{
48
+ collection: z.ZodString;
49
+ entryId: z.ZodString;
50
+ store: z.ZodString;
51
+ partition: z.ZodString;
52
+ routingVersion: z.ZodString;
53
+ version: z.ZodString;
54
+ digest: z.ZodString;
55
+ partitionEpoch: z.ZodOptional<z.ZodNumber>;
56
+ kind: z.ZodOptional<z.ZodEnum<{
57
+ content: "content";
58
+ revision: "revision";
59
+ }>>;
60
+ operationId: z.ZodString;
61
+ principalId: z.ZodString;
62
+ expectedVersion: z.ZodNullable<z.ZodString>;
63
+ }, z.core.$strict>;
64
+ data: z.ZodRecord<z.ZodString, z.ZodJSONSchema>;
65
+ }, z.core.$strict>;
66
+ }, z.core.$strict>, z.ZodObject<{
67
+ action: z.ZodLiteral<"read">;
68
+ locations: z.ZodArray<z.ZodObject<{
69
+ collection: z.ZodString;
70
+ entryId: z.ZodString;
71
+ store: z.ZodString;
72
+ partition: z.ZodString;
73
+ routingVersion: z.ZodString;
74
+ version: z.ZodString;
75
+ digest: z.ZodString;
76
+ }, z.core.$strict>>;
77
+ fields: z.ZodOptional<z.ZodArray<z.ZodString>>;
78
+ }, z.core.$strict>], "action">;
79
+ /** Install on content databases explicitly; never called from a content request. */
80
+ declare function installContentVersionStore<DB>(db: Kysely<DB>, identity: string, collections: Record<string, ContentStoreCollection>, options?: {
81
+ upgrade?: boolean;
82
+ }): Promise<void>;
83
+ /** Validate the physical binding and deployed schema once at request entry. */
84
+ declare function assertContentVersionStore<DB>(db: Kysely<DB>, identity: string): Promise<void>;
85
+ /** Immutable staging versions; only the primary directory can make one visible. */
86
+ declare class ContentVersionStore<DB> implements ContentStore {
87
+ private readonly db;
88
+ private readonly name;
89
+ private readonly routingVersion;
90
+ private readonly schemas;
91
+ constructor(db: Kysely<DB>, name: string, routingVersion: string);
92
+ prepare(input: PreparedContentVersion): Promise<void>;
93
+ read(locations: readonly ContentLocation[], fields?: readonly string[]): Promise<PreparedContentVersion[]>;
94
+ private schema;
95
+ private assertTarget;
96
+ }
97
+ //#endregion
98
+ export { contentStoreRequestSchema as a, canonicalContentJson as c, validateContentStorage as d, contentStoreCollectionSchema as i, contentDigest as l, ContentVersionStore as n, contentVersionSchema as o, assertContentVersionStore as r, installContentVersionStore as s, ContentStoreCollection as t, resolveContentPartition as u };
@@ -1,6 +1,6 @@
1
- import { r as getDb } from "./loader-Dp6zLmQm.mjs";
2
- import { r as requestCached } from "./request-cache-8_ifFzVw.mjs";
3
- import { t as getWidgetComponents$1 } from "./components-rFN8NH3N.mjs";
1
+ import { r as getDb } from "./loader-CCwWFQSh.mjs";
2
+ import { r as requestCached } from "./request-cache-CizvDoxV.mjs";
3
+ import { t as getWidgetComponents$1 } from "./components-JA6tFHmE.mjs";
4
4
 
5
5
  //#region src/widgets/index.ts
6
6
  /**
@@ -1,4 +1,4 @@
1
- import { a as RESERVED_COLLECTION_SLUGS } from "./types-COvyXIp7.mjs";
1
+ import { a as RESERVED_COLLECTION_SLUGS } from "./types-BgUxCuwu.mjs";
2
2
 
3
3
  //#region src/import/wordpress-slugs.ts
4
4
  const INVALID_SLUG_CHARS = /[^a-z0-9_]/g;
@@ -1,15 +1,15 @@
1
1
  import { getRequestContext, runWithContext } from "./request-context.mjs";
2
2
  import { AtomicWriteConflict, atomicBatch, isD1Database, rowUnchanged } from "./database/batch.mjs";
3
- import { t as ContentRepository } from "./content-CIKsrvU9.mjs";
4
- import { t as SiteActivityRepository } from "./site-activity-DU0UPDji.mjs";
5
- import { t as buildStableHash } from "./stable-hash-B9Tbb2f_.mjs";
6
- import { r as ReviewRequestRepository } from "./review-requests-CUVn0RBl.mjs";
7
- import { t as PublicationAuthorizationError } from "./publication-authorization-B_HJSnzR.mjs";
8
- import { t as ReviewPayloadBuilder } from "./review-payload-Bap86e75.mjs";
9
- import { t as DinewayToolsError } from "./service-kQ5ljRzX.mjs";
10
- import { i as REVIEW_MODEL, o as matchesDecisionModel } from "./runs-BtaAiLTw.mjs";
11
- import { i as reviewDraft, n as loadReviewContext, r as loadReviewImages, t as ReviewEvidenceError } from "./evidence-Vnp_fQbC.mjs";
12
- import { a as reviewQuestions, n as classifyReview, r as getReviewPolicy, t as REVIEW_THRESHOLDS } from "./policy-B6mVa7ib.mjs";
3
+ import { t as ContentRepository } from "./content-BigS8BAv.mjs";
4
+ import { t as SiteActivityRepository } from "./site-activity-hpfJkmxQ.mjs";
5
+ import { t as buildStableHash } from "./stable-hash-9RDJgfif.mjs";
6
+ import { r as ReviewRequestRepository } from "./review-requests-DZYM51yI.mjs";
7
+ import { t as PublicationAuthorizationError } from "./publication-authorization-wMR-tEQ_.mjs";
8
+ import { t as ReviewPayloadBuilder } from "./review-payload-Bhi52CbI.mjs";
9
+ import { t as DinewayToolsError } from "./service-DeX1PRNt.mjs";
10
+ import { i as REVIEW_MODEL, o as matchesDecisionModel } from "./runs-BjgLfqCn.mjs";
11
+ import { i as reviewDraft, n as loadReviewContext, r as loadReviewImages, t as ReviewEvidenceError } from "./evidence-B3O9_VKm.mjs";
12
+ import { a as reviewQuestions, n as classifyReview, r as getReviewPolicy, t as REVIEW_THRESHOLDS } from "./policy-DbceGc4P.mjs";
13
13
  import { sql } from "kysely";
14
14
  import { z } from "zod";
15
15
 
@@ -0,0 +1,108 @@
1
+ import { getRequestContext, runWithContext } from "./request-context.mjs";
2
+ import { atomicBatch } from "./database/batch.mjs";
3
+ import { n as contentDigest, o as ContentStorageError, s as ContentStorageReplay } from "./config-6R0bchVE.mjs";
4
+ import { r as getContentStorage } from "./runtime-Ch5G-tnG.mjs";
5
+ import { t as contentWriteChecks } from "./atomic-authority-Bf5QZboB.mjs";
6
+ import { a as contentVersionSchema } from "./version-store-BXv2D0de.mjs";
7
+ import { sql } from "kysely";
8
+ import { ulid } from "ulidx";
9
+ import { z } from "zod";
10
+
11
+ //#region src/content-storage/write-intent.ts
12
+ const seedSchema = z.object({
13
+ entryId: z.string(),
14
+ revisionId: z.string(),
15
+ rootVersion: z.string(),
16
+ now: z.string(),
17
+ publishAuthority: z.boolean()
18
+ });
19
+ /** Persist generated identities before staging, so a process restart can resume the same write. */
20
+ async function beginContentWriteIntent(db, collection, input, request) {
21
+ const principal = getRequestContext()?.writePrincipal?.id ?? "system";
22
+ const key = input.operationId ?? ulid();
23
+ if (!key || key.length > 256) throw new ContentStorageError("CONFLICT", "Content operation identifiers must contain 1 to 256 characters.");
24
+ const operationId = await contentDigest({
25
+ principal,
26
+ collection,
27
+ key
28
+ });
29
+ const context = getRequestContext()?.contentWriteRequest;
30
+ const requestDigest = context && context.operationId === input.operationId ? context.digest : await contentDigest(request);
31
+ const generated = {
32
+ entryId: input.id ?? ulid(),
33
+ revisionId: ulid(),
34
+ rootVersion: ulid(),
35
+ now: (/* @__PURE__ */ new Date()).toISOString(),
36
+ publishAuthority: !!(input.publish || input.unpublish)
37
+ };
38
+ await atomicBatch(db, {
39
+ checks: [sql`NOT EXISTS (SELECT 1 FROM _dineway_content_write_intents WHERE id=${operationId} AND request_digest<>${requestDigest})`],
40
+ statements: [sql`INSERT INTO _dineway_content_write_intents (id,collection,entry_id,principal_id,request_digest,seed,created_at) VALUES (${operationId},${collection},${generated.entryId},${principal},${requestDigest},${JSON.stringify(generated)},${generated.now}) ON CONFLICT (id) DO NOTHING`.compile(db)]
41
+ });
42
+ const row = (await sql`SELECT seed FROM _dineway_content_write_intents WHERE id=${operationId}`.execute(db)).rows[0];
43
+ const seed = seedSchema.parse(JSON.parse(row.seed));
44
+ const operation = (await sql`SELECT state,command FROM _dineway_content_operations WHERE id=${operationId}`.execute(db)).rows[0];
45
+ if (operation?.state === "committed") {
46
+ await atomicBatch(db, {
47
+ checks: [...contentWriteChecks(collection, seed.entryId, "edit"), ...input.publish || input.unpublish ? contentWriteChecks(collection, seed.entryId, "publish") : []],
48
+ statements: []
49
+ });
50
+ throw new ContentStorageReplay(contentVersionSchema.shape.command.parse(JSON.parse(operation.command)));
51
+ }
52
+ if (operation?.state === "aborted") throw new ContentStorageError("ROUTE_CHANGED", "This save was interrupted by a routing migration. Reload the entry before saving again.");
53
+ return {
54
+ ...seed,
55
+ operationId
56
+ };
57
+ }
58
+ const REPLAYS = Symbol.for("dineway:content-write-replays");
59
+ const shared = globalThis;
60
+ const replayResults = shared[REPLAYS] ??= /* @__PURE__ */ new WeakSet();
61
+ function markContentWriteReplay(result) {
62
+ replayResults.add(result);
63
+ return result;
64
+ }
65
+ function isContentWriteReplay(result) {
66
+ return replayResults.has(result);
67
+ }
68
+ /** A committed retry returns the current entry without rerunning hooks or business actions. */
69
+ async function runIdempotentContentWrite(db, collection, key, request, operation, read) {
70
+ if (!key || !getContentStorage(db, collection)) return operation();
71
+ try {
72
+ if (key.length > 256) throw new ContentStorageError("CONFLICT", "Content operation identifiers must contain 1 to 256 characters.");
73
+ const operationId = await contentDigest({
74
+ principal: getRequestContext()?.writePrincipal?.id ?? "system",
75
+ collection,
76
+ key
77
+ });
78
+ const digest = await contentDigest(JSON.parse(JSON.stringify(request)));
79
+ const previous = (await sql`SELECT i.entry_id,i.request_digest,o.state,i.seed FROM _dineway_content_write_intents i LEFT JOIN _dineway_content_operations o ON o.id=i.id WHERE i.id=${operationId}`.execute(db)).rows[0];
80
+ if (previous && previous.request_digest !== digest) throw new ContentStorageError("CONFLICT", "This operation identifier belongs to a different save.");
81
+ if (previous?.state === "committed") {
82
+ await atomicBatch(db, {
83
+ checks: [...contentWriteChecks(collection, previous.entry_id, "edit"), ...seedSchema.parse(JSON.parse(previous.seed)).publishAuthority ? contentWriteChecks(collection, previous.entry_id, "publish") : []],
84
+ statements: []
85
+ });
86
+ return markContentWriteReplay(await read(previous.entry_id));
87
+ }
88
+ return await runWithContext({
89
+ editMode: false,
90
+ ...getRequestContext(),
91
+ contentWriteRequest: {
92
+ operationId: key,
93
+ digest
94
+ }
95
+ }, operation);
96
+ } catch (error) {
97
+ return {
98
+ success: false,
99
+ error: {
100
+ code: error instanceof ContentStorageError ? error.code : "CONFLICT",
101
+ message: error instanceof ContentStorageError ? error.message : "The save could not be resumed. Reload the entry and retry."
102
+ }
103
+ };
104
+ }
105
+ }
106
+
107
+ //#endregion
108
+ export { runIdempotentContentWrite as i, isContentWriteReplay as n, markContentWriteReplay as r, beginContentWriteIntent as t };
@@ -1,5 +1,5 @@
1
- import { c as __exportAll } from "./runner-CRU7BXjr.mjs";
2
- import { n as hashString } from "./hash-D2Rqd2J2.mjs";
1
+ import { c as __exportAll } from "./runner-CuG8o1uW.mjs";
2
+ import { n as hashString } from "./hash-qSYPMJ8w.mjs";
3
3
  import { z } from "zod";
4
4
 
5
5
  //#region src/schema/zod-generator.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dineway",
3
- "version": "0.2.39",
3
+ "version": "0.2.41",
4
4
  "description": "Agentic Website builder for restaurants — structured content meets AI via the Model Context Protocol",
5
5
  "type": "module",
6
6
  "publishConfig": {
@@ -198,6 +198,10 @@
198
198
  "types": "./dist/database/batch.d.mts",
199
199
  "default": "./dist/database/batch.mjs"
200
200
  },
201
+ "./content-storage": {
202
+ "types": "./dist/content-storage/index.d.mts",
203
+ "default": "./dist/content-storage/index.mjs"
204
+ },
201
205
  "./db/d1-migrations": {
202
206
  "types": "./dist/database/d1/index.d.mts",
203
207
  "default": "./dist/database/d1/index.mjs"
@@ -205,6 +209,10 @@
205
209
  "./after": {
206
210
  "types": "./dist/after.d.mts",
207
211
  "default": "./dist/after.mjs"
212
+ },
213
+ "./content-storage/store": {
214
+ "types": "./dist/content-storage/store.d.mts",
215
+ "default": "./dist/content-storage/store.mjs"
208
216
  }
209
217
  },
210
218
  "imports": {
@@ -234,6 +242,7 @@
234
242
  "#dineway-tools/*": "./src/dineway-tools/*",
235
243
  "#integration-credentials/*": "./src/integration-credentials/*",
236
244
  "#comments/*": "./src/comments/*",
245
+ "#content-storage/*": "./src/content-storage/*",
237
246
  "#config/*": "./src/config/*",
238
247
  "#site-context/*": "./src/site-context/*",
239
248
  "#types": "./src/astro/types.js"
@@ -363,6 +372,9 @@
363
372
  "db/batch": [
364
373
  "dist/database/batch.d.mts"
365
374
  ],
375
+ "content-storage": [
376
+ "dist/content-storage/index.d.mts"
377
+ ],
366
378
  "db/d1-migrations": [
367
379
  "dist/database/d1/index.d.mts"
368
380
  ],
@@ -401,7 +413,7 @@
401
413
  "jose": "^6.1.3",
402
414
  "jiti": "^2.6.1",
403
415
  "jpeg-js": "^0.4.4",
404
- "kysely": "^0.27.0",
416
+ "kysely": "0.28.17",
405
417
  "mime": "^4.1.0",
406
418
  "minisearch": "^7.2.0",
407
419
  "modern-tar": "^0.7.5",
@@ -412,9 +424,9 @@
412
424
  "ulidx": "^2.4.1",
413
425
  "upng-js": "^2.1.0",
414
426
  "zod": "^4.4.1",
415
- "@dineway-ai/admin": "^0.2.13",
427
+ "@dineway-ai/admin": "^0.2.14",
416
428
  "@dineway-ai/gutenberg-to-portable-text": "^0.2.3",
417
- "@dineway-ai/auth": "^0.2.6"
429
+ "@dineway-ai/auth": "^0.2.7"
418
430
  },
419
431
  "optionalDependencies": {
420
432
  "@aws-sdk/client-s3": "^3.1049.0",
@@ -1,52 +0,0 @@
1
- import { c as __exportAll } from "./runner-CRU7BXjr.mjs";
2
- import { i as matchPattern, n as interpolateDestination, t as compilePattern } from "./patterns-Ay-4KImK.mjs";
3
-
4
- //#region src/redirects/cache.ts
5
- var cache_exports = /* @__PURE__ */ __exportAll({
6
- compileRedirectRules: () => compileRedirectRules,
7
- getCachedRedirects: () => getCachedRedirects,
8
- invalidateRedirectCache: () => invalidateRedirectCache,
9
- matchCachedPatterns: () => matchCachedPatterns,
10
- setCachedRedirects: () => setCachedRedirects
11
- });
12
- let cachedRedirects = null;
13
- function invalidateRedirectCache() {
14
- cachedRedirects = null;
15
- }
16
- function getCachedRedirects() {
17
- return cachedRedirects;
18
- }
19
- function compileRedirectRules(redirects) {
20
- return redirects.map((redirect) => ({
21
- redirect,
22
- compiled: compilePattern(redirect.source)
23
- }));
24
- }
25
- function setCachedRedirects(redirects) {
26
- const exact = /* @__PURE__ */ new Map();
27
- const patterns = [];
28
- for (const redirect of redirects) if (redirect.isPattern) patterns.push({
29
- redirect,
30
- compiled: compilePattern(redirect.source)
31
- });
32
- else exact.set(redirect.source, redirect);
33
- cachedRedirects = {
34
- exact,
35
- patterns
36
- };
37
- return cachedRedirects;
38
- }
39
- function matchCachedPatterns(rules, pathname) {
40
- for (const { redirect, compiled } of rules) {
41
- const params = matchPattern(compiled, pathname);
42
- if (!params) continue;
43
- return {
44
- redirect,
45
- destination: interpolateDestination(redirect.destination, params)
46
- };
47
- }
48
- return null;
49
- }
50
-
51
- //#endregion
52
- export { matchCachedPatterns as a, invalidateRedirectCache as i, compileRedirectRules as n, setCachedRedirects as o, getCachedRedirects as r, cache_exports as t };