dineway 0.1.48 → 0.2.0

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 (420) hide show
  1. package/dist/{activity-events-C9u37D5z.mjs → activity-events-y6eT8UW6.mjs} +6 -38
  2. package/dist/actor-CrObAPV0.mjs +37 -0
  3. package/dist/after-BfniwgIf.mjs +9 -0
  4. package/dist/{allowed-origins-DhipQNLb.mjs → allowed-origins-_oeyP6x-.mjs} +1 -1
  5. package/dist/api/route-utils.d.mts +10 -10
  6. package/dist/api/route-utils.mjs +17 -14
  7. package/dist/api/schemas/index.d.mts +2 -2
  8. package/dist/api/schemas/index.mjs +5 -4
  9. package/dist/{api-Eiy8_zVZ.mjs → api-ByrU2q-Z.mjs} +61 -37
  10. package/dist/{api-tokens-DtvdtIkm.mjs → api-tokens-CjVMQT-X.mjs} +6 -2
  11. package/dist/{apply-CX3no7XE.mjs → apply-bZswmZPm.mjs} +117 -77
  12. package/dist/astro/image-endpoint.d.mts +7 -0
  13. package/dist/astro/image-endpoint.mjs +54 -0
  14. package/dist/astro/index.d.mts +35 -11
  15. package/dist/astro/index.mjs +157 -23
  16. package/dist/astro/integration/shims/use-sync-external-store-with-selector.js +71 -0
  17. package/dist/astro/integration/shims/use-sync-external-store.js +1 -0
  18. package/dist/astro/middleware/auth.d.mts +10 -10
  19. package/dist/astro/middleware/auth.mjs +42 -24
  20. package/dist/astro/middleware/redirect.mjs +14 -5
  21. package/dist/astro/middleware/request-context.mjs +9 -6
  22. package/dist/astro/middleware/seed.d.mts +1 -1
  23. package/dist/astro/middleware/seed.mjs +2 -2
  24. package/dist/astro/middleware/setup.mjs +1 -1
  25. package/dist/astro/middleware.mjs +334 -193
  26. package/dist/astro/routes/admin.astro +6 -1
  27. package/dist/astro/routes/api/admin/allowed-domains/_domain_.mjs +7 -6
  28. package/dist/astro/routes/api/admin/allowed-domains/index.mjs +7 -6
  29. package/dist/astro/routes/api/admin/api-tokens/_id_.mjs +4 -4
  30. package/dist/astro/routes/api/admin/api-tokens/index.mjs +6 -6
  31. package/dist/astro/routes/api/admin/briefing.mjs +22 -18
  32. package/dist/astro/routes/api/admin/byline-fields/_slug_/usage.mjs +4 -4
  33. package/dist/astro/routes/api/admin/byline-fields/_slug_.mjs +9 -8
  34. package/dist/astro/routes/api/admin/byline-fields/index.mjs +9 -8
  35. package/dist/astro/routes/api/admin/byline-fields/reorder.mjs +9 -8
  36. package/dist/astro/routes/api/admin/bylines/_id_/index.mjs +18 -15
  37. package/dist/astro/routes/api/admin/bylines/_id_/translations.mjs +18 -15
  38. package/dist/astro/routes/api/admin/bylines/index.mjs +18 -15
  39. package/dist/astro/routes/api/admin/comments/_id_/status.mjs +15 -13
  40. package/dist/astro/routes/api/admin/comments/_id_.mjs +7 -6
  41. package/dist/astro/routes/api/admin/comments/bulk.mjs +12 -10
  42. package/dist/astro/routes/api/admin/comments/counts.mjs +7 -6
  43. package/dist/astro/routes/api/admin/comments/index.mjs +12 -10
  44. package/dist/astro/routes/api/admin/context/_id_/history.mjs +27 -25
  45. package/dist/astro/routes/api/admin/context/_id_/index.mjs +27 -25
  46. package/dist/astro/routes/api/admin/context/_id_/review.mjs +32 -29
  47. package/dist/astro/routes/api/admin/context/_id_/supersede.mjs +32 -29
  48. package/dist/astro/routes/api/admin/context/diff.mjs +31 -28
  49. package/dist/astro/routes/api/admin/context/index.mjs +32 -29
  50. package/dist/astro/routes/api/admin/context/stale.mjs +31 -28
  51. package/dist/astro/routes/api/admin/hitl-requests/_id_/index.mjs +27 -25
  52. package/dist/astro/routes/api/admin/hitl-requests/_id_/resolve.mjs +31 -28
  53. package/dist/astro/routes/api/admin/hitl-requests/index.mjs +31 -28
  54. package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.mjs +28 -26
  55. package/dist/astro/routes/api/admin/hooks/exclusive/index.mjs +3 -3
  56. package/dist/astro/routes/api/admin/oauth-clients/_id_.mjs +6 -6
  57. package/dist/astro/routes/api/admin/oauth-clients/index.mjs +6 -6
  58. package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs +56 -52
  59. package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs +56 -52
  60. package/dist/astro/routes/api/admin/plugins/_id_/index.mjs +48 -44
  61. package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs +54 -50
  62. package/dist/astro/routes/api/admin/plugins/_id_/update.mjs +53 -49
  63. package/dist/astro/routes/api/admin/plugins/index.mjs +48 -44
  64. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.mjs +2 -2
  65. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs +47 -43
  66. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs +53 -49
  67. package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs +47 -43
  68. package/dist/astro/routes/api/admin/plugins/updates.mjs +47 -43
  69. package/dist/astro/routes/api/admin/review-requests/_id_/index.mjs +6 -6
  70. package/dist/astro/routes/api/admin/review-requests/_id_/resolve.mjs +32 -28
  71. package/dist/astro/routes/api/admin/review-requests/index.mjs +11 -10
  72. package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs +47 -43
  73. package/dist/astro/routes/api/admin/themes/marketplace/_id_/thumbnail.mjs +2 -2
  74. package/dist/astro/routes/api/admin/themes/marketplace/index.mjs +47 -43
  75. package/dist/astro/routes/api/admin/users/_id_/disable.mjs +3 -3
  76. package/dist/astro/routes/api/admin/users/_id_/enable.mjs +2 -2
  77. package/dist/astro/routes/api/admin/users/_id_/index.mjs +8 -7
  78. package/dist/astro/routes/api/admin/users/_id_/send-recovery.mjs +4 -4
  79. package/dist/astro/routes/api/admin/users/index.mjs +7 -6
  80. package/dist/astro/routes/api/auth/dev-bypass.mjs +4 -4
  81. package/dist/astro/routes/api/auth/invite/accept.mjs +2 -2
  82. package/dist/astro/routes/api/auth/invite/complete.mjs +12 -11
  83. package/dist/astro/routes/api/auth/invite/index.mjs +9 -8
  84. package/dist/astro/routes/api/auth/invite/register-options.mjs +11 -10
  85. package/dist/astro/routes/api/auth/logout.mjs +2 -2
  86. package/dist/astro/routes/api/auth/magic-link/send.mjs +11 -10
  87. package/dist/astro/routes/api/auth/magic-link/verify.mjs +3 -3
  88. package/dist/astro/routes/api/auth/me.mjs +10 -9
  89. package/dist/astro/routes/api/auth/mode.mjs +1 -1
  90. package/dist/astro/routes/api/auth/oauth/_provider_/callback.mjs +3 -3
  91. package/dist/astro/routes/api/auth/oauth/_provider_.mjs +2 -2
  92. package/dist/astro/routes/api/auth/passkey/_id_.mjs +6 -5
  93. package/dist/astro/routes/api/auth/passkey/index.mjs +1 -1
  94. package/dist/astro/routes/api/auth/passkey/options.mjs +12 -11
  95. package/dist/astro/routes/api/auth/passkey/register/options.mjs +10 -9
  96. package/dist/astro/routes/api/auth/passkey/register/verify.mjs +11 -10
  97. package/dist/astro/routes/api/auth/passkey/verify.mjs +11 -10
  98. package/dist/astro/routes/api/auth/setup-token/index.mjs +6 -6
  99. package/dist/astro/routes/api/auth/setup-token/verify.mjs +2 -2
  100. package/dist/astro/routes/api/auth/signup/complete.mjs +12 -11
  101. package/dist/astro/routes/api/auth/signup/request.mjs +11 -10
  102. package/dist/astro/routes/api/auth/signup/verify.mjs +2 -2
  103. package/dist/astro/routes/api/comments/_collection_/_contentId_/index.mjs +16 -14
  104. package/dist/astro/routes/api/comments/_collection_/_contentId_/reactions.d.mts +8 -0
  105. package/dist/astro/routes/api/comments/_collection_/_contentId_/reactions.mjs +160 -0
  106. package/dist/astro/routes/api/content/_collection_/_id_/compare.mjs +2 -2
  107. package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs +6 -6
  108. package/dist/astro/routes/api/content/_collection_/_id_/duplicate.mjs +6 -6
  109. package/dist/astro/routes/api/content/_collection_/_id_/permanent.mjs +6 -6
  110. package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs +12 -11
  111. package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs +11 -10
  112. package/dist/astro/routes/api/content/_collection_/_id_/restore.mjs +6 -6
  113. package/dist/astro/routes/api/content/_collection_/_id_/revisions.mjs +2 -2
  114. package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs +11 -10
  115. package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs +17 -15
  116. package/dist/astro/routes/api/content/_collection_/_id_/translations.mjs +2 -2
  117. package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs +6 -6
  118. package/dist/astro/routes/api/content/_collection_/_id_.mjs +11 -10
  119. package/dist/astro/routes/api/content/_collection_/authors.mjs +2 -2
  120. package/dist/astro/routes/api/content/_collection_/index.mjs +11 -10
  121. package/dist/astro/routes/api/content/_collection_/trash.mjs +7 -6
  122. package/dist/astro/routes/api/dashboard.mjs +10 -9
  123. package/dist/astro/routes/api/dev/emails.mjs +2 -2
  124. package/dist/astro/routes/api/health.mjs +1 -1
  125. package/dist/astro/routes/api/import/probe.d.mts +3 -3
  126. package/dist/astro/routes/api/import/probe.mjs +23 -11
  127. package/dist/astro/routes/api/import/wordpress/analyze.mjs +9 -6
  128. package/dist/astro/routes/api/import/wordpress/execute.d.mts +19 -1
  129. package/dist/astro/routes/api/import/wordpress/execute.mjs +85 -38
  130. package/dist/astro/routes/api/import/wordpress/media.d.mts +13 -1
  131. package/dist/astro/routes/api/import/wordpress/media.mjs +20 -14
  132. package/dist/astro/routes/api/import/wordpress/prepare.mjs +36 -33
  133. package/dist/astro/routes/api/import/wordpress/rewrite-urls.d.mts +18 -1
  134. package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs +121 -101
  135. package/dist/astro/routes/api/import/wordpress-plugin/analyze.d.mts +1 -1
  136. package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs +25 -13
  137. package/dist/astro/routes/api/import/wordpress-plugin/callback.mjs +1 -1
  138. package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts +56 -2
  139. package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs +284 -56
  140. package/dist/astro/routes/api/manifest.mjs +14 -5
  141. package/dist/astro/routes/api/mcp.mjs +266 -70
  142. package/dist/astro/routes/api/media/_id_/confirm.mjs +39 -11
  143. package/dist/astro/routes/api/media/_id_.mjs +11 -7
  144. package/dist/astro/routes/api/media/file/_...key_.mjs +1 -1
  145. package/dist/astro/routes/api/media/providers/_providerId_/_itemId_.mjs +2 -2
  146. package/dist/astro/routes/api/media/providers/_providerId_/index.mjs +2 -2
  147. package/dist/astro/routes/api/media/providers/index.mjs +2 -2
  148. package/dist/astro/routes/api/media/upload-url.mjs +12 -11
  149. package/dist/astro/routes/api/media.mjs +28 -35
  150. package/dist/astro/routes/api/menus/_name_/items/_id_.mjs +32 -29
  151. package/dist/astro/routes/api/menus/_name_/items.mjs +32 -29
  152. package/dist/astro/routes/api/menus/_name_/reorder.mjs +32 -29
  153. package/dist/astro/routes/api/menus/_name_/translations.mjs +32 -29
  154. package/dist/astro/routes/api/menus/_name_.mjs +32 -29
  155. package/dist/astro/routes/api/menus/index.mjs +32 -29
  156. package/dist/astro/routes/api/oauth/authorize.mjs +7 -7
  157. package/dist/astro/routes/api/oauth/device/authorize.mjs +6 -6
  158. package/dist/astro/routes/api/oauth/device/code.mjs +9 -9
  159. package/dist/astro/routes/api/oauth/device/token.mjs +8 -8
  160. package/dist/astro/routes/api/oauth/register.mjs +4 -4
  161. package/dist/astro/routes/api/oauth/token/refresh.mjs +6 -6
  162. package/dist/astro/routes/api/oauth/token/revoke.mjs +6 -6
  163. package/dist/astro/routes/api/oauth/token.mjs +6 -6
  164. package/dist/astro/routes/api/openapi.json.mjs +4 -3
  165. package/dist/astro/routes/api/plugins/_pluginId_/_...path_.mjs +30 -30
  166. package/dist/astro/routes/api/redirects/404s/index.mjs +12 -11
  167. package/dist/astro/routes/api/redirects/404s/summary.mjs +12 -11
  168. package/dist/astro/routes/api/redirects/_id_.mjs +33 -30
  169. package/dist/astro/routes/api/redirects/index.mjs +33 -30
  170. package/dist/astro/routes/api/revisions/_revisionId_/index.mjs +2 -2
  171. package/dist/astro/routes/api/revisions/_revisionId_/restore.mjs +2 -2
  172. package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs +48 -44
  173. package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs +48 -44
  174. package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs +48 -44
  175. package/dist/astro/routes/api/schema/collections/_slug_/index.mjs +48 -44
  176. package/dist/astro/routes/api/schema/collections/index.mjs +48 -44
  177. package/dist/astro/routes/api/schema/index.mjs +13 -14
  178. package/dist/astro/routes/api/schema/orphans/_slug_.mjs +47 -43
  179. package/dist/astro/routes/api/schema/orphans/index.mjs +47 -43
  180. package/dist/astro/routes/api/search/enable.mjs +12 -11
  181. package/dist/astro/routes/api/search/index.mjs +11 -10
  182. package/dist/astro/routes/api/search/rebuild.mjs +12 -11
  183. package/dist/astro/routes/api/search/stats.mjs +7 -7
  184. package/dist/astro/routes/api/search/suggest.mjs +11 -10
  185. package/dist/astro/routes/api/sections/_slug_.mjs +32 -29
  186. package/dist/astro/routes/api/sections/index.mjs +32 -29
  187. package/dist/astro/routes/api/settings/email.mjs +4 -4
  188. package/dist/astro/routes/api/settings.mjs +32 -29
  189. package/dist/astro/routes/api/setup/admin-verify.mjs +14 -13
  190. package/dist/astro/routes/api/setup/admin.mjs +12 -11
  191. package/dist/astro/routes/api/setup/dev-bypass.mjs +32 -26
  192. package/dist/astro/routes/api/setup/dev-reset.mjs +2 -2
  193. package/dist/astro/routes/api/setup/index.mjs +30 -26
  194. package/dist/astro/routes/api/setup/status.mjs +3 -3
  195. package/dist/astro/routes/api/snapshot.mjs +9 -8
  196. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs +35 -32
  197. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs +35 -32
  198. package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs +35 -32
  199. package/dist/astro/routes/api/taxonomies/index.mjs +35 -32
  200. package/dist/astro/routes/api/themes/preview.mjs +6 -6
  201. package/dist/astro/routes/api/typegen.mjs +4 -4
  202. package/dist/astro/routes/api/well-known/auth.mjs +3 -3
  203. package/dist/astro/routes/api/well-known/oauth-authorization-server.mjs +3 -3
  204. package/dist/astro/routes/api/well-known/oauth-protected-resource.mjs +3 -3
  205. package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs +31 -28
  206. package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs +32 -29
  207. package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs +32 -29
  208. package/dist/astro/routes/api/widget-areas/_name_.mjs +29 -27
  209. package/dist/astro/routes/api/widget-areas/index.mjs +32 -29
  210. package/dist/astro/routes/api/widget-components.mjs +2 -2
  211. package/dist/astro/routes/robots.txt.mjs +9 -8
  212. package/dist/astro/routes/sitemap-_collection_.xml.mjs +24 -15
  213. package/dist/astro/routes/sitemap.xml.mjs +10 -9
  214. package/dist/astro/session-driver.d.mts +1 -1
  215. package/dist/astro/session-driver.mjs +3 -3
  216. package/dist/astro/types.d.mts +21 -13
  217. package/dist/{audit-D1cbG7xH.mjs → audit-ByVKIwWF.mjs} +1 -1
  218. package/dist/auth/providers/github.d.mts +1 -1
  219. package/dist/auth/providers/google.d.mts +1 -1
  220. package/dist/{auth-control-guard-Dr14I98m.mjs → auth-control-guard-CqeUmQsv.mjs} +1 -1
  221. package/dist/{authorize-BLO0m7fW.mjs → authorize-CcBxcHtz.mjs} +1 -1
  222. package/dist/{briefing-CObXGOGz.mjs → briefing-BJaJI8dm.mjs} +2 -1
  223. package/dist/{briefing-gKWiGLt1.mjs → briefing-CawZ59CY.mjs} +90 -28
  224. package/dist/bundle-7C_DpkEq.mjs +602 -0
  225. package/dist/{byline-1ntDwv8c.mjs → byline-e51-fWRs.mjs} +30 -62
  226. package/dist/{byline-fields-BX7rWKNU.d.mts → byline-fields-CUvbslGc.d.mts} +49 -6
  227. package/dist/{byline-fields-C9_iaPaM.mjs → byline-fields-D-N5qVIG.mjs} +1 -1
  228. package/dist/{byline-fields-B-ZkoVft.mjs → byline-fields-DOJO16Gm.mjs} +3 -3
  229. package/dist/{byline-registry-CUSvkasJ.mjs → byline-registry-87nNnYl4.mjs} +2 -2
  230. package/dist/{bylines-bC15ZqAv.mjs → bylines-CMQNCNFh.mjs} +9 -3
  231. package/dist/{bylines-DtxChhN_.mjs → bylines-y4LO-dTj.mjs} +5 -5
  232. package/dist/{cache-DbKyr60Q.mjs → cache-C-FNTFYK.mjs} +2 -2
  233. package/dist/{chunks-C5zp2xir.mjs → chunks-CxBt-GxR.mjs} +1 -1
  234. package/dist/cli/index.mjs +820 -1276
  235. package/dist/client/external-auth-headers.d.mts +1 -1
  236. package/dist/client/index.d.mts +1 -1
  237. package/dist/client/index.mjs +2 -1
  238. package/dist/{comment-CXDOQ93N.mjs → comment-DlA4iChg.mjs} +13 -3
  239. package/dist/comment-reaction-DfFao1ST.mjs +58 -0
  240. package/dist/{comments-hK-rdzJ9.mjs → comments-DApFGMsP.mjs} +1 -1
  241. package/dist/{content-QaryevFO.mjs → content-Bh4BDjv8.mjs} +51 -34
  242. package/dist/content-refresh-CgutSUfO.mjs +1576 -0
  243. package/dist/{context-CoYb_fvK.mjs → context-C5W3G18y.mjs} +111 -50
  244. package/dist/{context-DBL1ib4v.mjs → context-CK4ym2Sf.mjs} +2 -2
  245. package/dist/{context-route-helpers-CYQVmbIm.mjs → context-route-helpers-MASyGgWf.mjs} +2 -1
  246. package/dist/{cron-DxCAU_Sn.mjs → cron-cKcNTix_.mjs} +7 -3
  247. package/dist/{dashboard-DNlqsknJ.mjs → dashboard-DQkVT7Ei.mjs} +4 -4
  248. package/dist/db/index.d.mts +3 -3
  249. package/dist/db/index.mjs +1 -1
  250. package/dist/db/libsql.d.mts +1 -1
  251. package/dist/db/postgres.d.mts +1 -1
  252. package/dist/db/sqlite.d.mts +1 -1
  253. package/dist/{device-flow-DygsFPGL.mjs → device-flow-BnqRH-T9.mjs} +5 -5
  254. package/dist/{placeholder-BDo81Is5.mjs → enrich-DIFIFA8O.mjs} +36 -9
  255. package/dist/{error-DCSuUAZW.mjs → error-CytFlgcd.mjs} +5 -0
  256. package/dist/field-defs-cache-DRNdhBJv.mjs +49 -0
  257. package/dist/{fts-manager-CIZlScg5.mjs → fts-manager-Crzypjqu.mjs} +1 -1
  258. package/dist/hitl-Hw1RmWOq.mjs +677 -0
  259. package/dist/{hitl-requests-CGQwOEiq.mjs → hitl-requests-B4Vbcmaq.mjs} +2 -2
  260. package/dist/{hitl-route-helpers-GSDLNPpN.mjs → hitl-route-helpers-hEVzvP8l.mjs} +5 -4
  261. package/dist/import-Bh9biJfx.mjs +1354 -0
  262. package/dist/{index-CwRuZ-u8.d.mts → index-D4y6NGiy.d.mts} +75 -3
  263. package/dist/index.d.mts +17 -16
  264. package/dist/index.mjs +81 -69
  265. package/dist/{jsonld-DZ67souc.d.mts → jsonld-Dq0gsnOH.d.mts} +8 -4
  266. package/dist/{load-xE01Jm0V.mjs → load-DmYeniXl.mjs} +1 -1
  267. package/dist/{loader-tg63WSY2.mjs → loader-CjWqjweO.mjs} +117 -31
  268. package/dist/{manifest-schema-qh2P7RDX.mjs → manifest-schema-BxVPYMJR.mjs} +34 -1
  269. package/dist/mcp-reviewed-executor-TwVbMzG6.mjs +555 -0
  270. package/dist/media/image-endpoint.d.mts +32 -0
  271. package/dist/media/image-endpoint.mjs +111 -0
  272. package/dist/media/index.d.mts +27 -2
  273. package/dist/media/index.mjs +5 -3
  274. package/dist/media/local-runtime.d.mts +16 -11
  275. package/dist/media/local-runtime.mjs +10 -8
  276. package/dist/{media-DUAjMfvR.mjs → media-DMj0grzC.mjs} +3 -1
  277. package/dist/{media-allowlist-BsXkT9RK.mjs → media-allowlist-BlVCSzHx.mjs} +1 -1
  278. package/dist/media-url-lEKSrpr9.mjs +20 -0
  279. package/dist/{menus-WpFRMXjz.mjs → menus-TaW1gKnk.mjs} +19 -5
  280. package/dist/{menus-DU1eZqw_.mjs → menus-xvsnVZXw.mjs} +80 -15
  281. package/dist/{normalize-DUnoXAa9.mjs → normalize-5ek_z7de.mjs} +8 -1
  282. package/dist/{oauth-authorization-D-1p52Je.mjs → oauth-authorization-DiaGvRVz.mjs} +5 -5
  283. package/dist/{oauth-clients-CzeMGyUU.mjs → oauth-clients-Dl9E8dEM.mjs} +2 -2
  284. package/dist/object-cache/memory.d.mts +14 -0
  285. package/dist/object-cache/memory.mjs +55 -0
  286. package/dist/object-cache-D51qOseS.mjs +419 -0
  287. package/dist/page/index.d.mts +4 -3
  288. package/dist/page/index.mjs +2 -2
  289. package/dist/{parse-CneSgl7-.mjs → parse-CbymENaR.mjs} +1 -1
  290. package/dist/{parser-DxfsARXL.mjs → parser-C1nYd-81.mjs} +151 -9
  291. package/dist/{placeholder-CXfoCtCd.d.mts → placeholder-uvNRZBX9.d.mts} +12 -4
  292. package/dist/plugin-utils.d.mts +9 -9
  293. package/dist/plugins/adapt-sandbox-entry.d.mts +9 -9
  294. package/dist/plugins/adapt-sandbox-entry.mjs +11 -2
  295. package/dist/{plugins-C57YQi4l.mjs → plugins-BolVa-tl.mjs} +832 -64
  296. package/dist/{transport-LSdZVXHF.mjs → portable-text-dA_UlJwW.mjs} +1 -134
  297. package/dist/{preview-D5rvDhRt.mjs → preview-vSVg6fwG.mjs} +4 -3
  298. package/dist/process-cache-7xgAO9JY.mjs +106 -0
  299. package/dist/{provider-loader-9it4vd6L.d.mts → provider-loader-MD8zAbnH.d.mts} +1 -1
  300. package/dist/{public-url-DLUM5OOv.mjs → public-url-BEz_sM9n.mjs} +24 -18
  301. package/dist/{public-url-B5HaoGzj.d.mts → public-url-gsp3oUbu.d.mts} +5 -4
  302. package/dist/{query-BYc3oruA.mjs → query-CfRCdaL3.mjs} +281 -76
  303. package/dist/{query-DKEwzobh.mjs → query-jaAmw8E1.mjs} +11 -6
  304. package/dist/{rate-limit-i0G3IAOX.mjs → rate-limit-ZLdyWoZF.mjs} +2 -2
  305. package/dist/{redirect-C2zXRj3c.mjs → redirect-BAjt4Z6b.mjs} +2 -2
  306. package/dist/{redirects-YZo_znWG.mjs → redirects-BTdwpQtE.mjs} +47 -24
  307. package/dist/{redirects-ocRJmQHP.mjs → redirects-CA-xylPG.mjs} +19 -11
  308. package/dist/{registry-CTkbIDB9.mjs → registry-CtyVedcN.mjs} +130 -77
  309. package/dist/request-context.d.mts +2 -0
  310. package/dist/{request-meta-DAb6xaP9.mjs → request-meta-CUypToDJ.mjs} +1 -1
  311. package/dist/{review-requests-C0un5kdV.mjs → review-requests-C9Ff11Vq.mjs} +1 -1
  312. package/dist/{review-requests-gGMyYYhy.mjs → review-requests-DUyEmtmG.mjs} +1 -1
  313. package/dist/{runner-D4FL9usy.d.mts → runner-1tC2tIRV.d.mts} +1 -1
  314. package/dist/runner-DB7CRfOF.mjs +6740 -0
  315. package/dist/{runtime-DEWQpZ-4.d.mts → runtime-BOeiQsCv.d.mts} +2028 -1564
  316. package/dist/runtime.d.mts +10 -10
  317. package/dist/runtime.mjs +4 -4
  318. package/dist/schema-DXdYj4R3.mjs +8 -0
  319. package/dist/{search-axGQ1KY3.mjs → search-DSaLgEFI.mjs} +5 -3
  320. package/dist/{secrets-062Izo8i.mjs → secrets-CDZo2k8L.mjs} +15 -12
  321. package/dist/{sections-OLKgXL10.mjs → sections-PVVXHGfp.mjs} +2 -2
  322. package/dist/seed/index.d.mts +2 -2
  323. package/dist/seed/index.mjs +22 -19
  324. package/dist/seo/index.d.mts +1 -1
  325. package/dist/seo/index.mjs +3 -12
  326. package/dist/{seo-Cd45Po8L.mjs → seo-CQG3GCHQ.mjs} +5 -2
  327. package/dist/{seo-contributions-CqVvReEj.mjs → seo-contributions-C1EnikHB.mjs} +11 -3
  328. package/dist/{seo-5lJOtB5J.mjs → seo-qa7Dn0jK.mjs} +22 -4
  329. package/dist/{service-Bwad8s5h.mjs → service-DiN4ZuPp.mjs} +2 -2
  330. package/dist/session-user-CAKImna3.mjs +22 -0
  331. package/dist/{settings-yLjz_I4T.mjs → settings-BbqgHWpU.mjs} +28 -55
  332. package/dist/{settings-lAHjaUit.mjs → settings-i4VPP8bT.mjs} +2 -2
  333. package/dist/{setup-complete--PradA4R.mjs → setup-complete-B8fl-mjV.mjs} +1 -1
  334. package/dist/{site-activity-D7Xyropw.mjs → site-activity-Dy3FROs0.mjs} +1 -1
  335. package/dist/{site-context-DaN9Z91j.mjs → site-context-DQiL8Fl5.mjs} +23 -652
  336. package/dist/{site-url-DpGZo9Z6.mjs → site-url-BML3GQYm.mjs} +1 -1
  337. package/dist/status-DANd8ERo.mjs +21 -0
  338. package/dist/storage/local.d.mts +1 -1
  339. package/dist/storage/local.mjs +1 -1
  340. package/dist/storage/s3.d.mts +1 -1
  341. package/dist/storage/s3.mjs +1 -1
  342. package/dist/{taxonomies-uXVEoQso.mjs → taxonomies-9s-v03H-.mjs} +36 -29
  343. package/dist/taxonomies-DRiixp_E.mjs +443 -0
  344. package/dist/{taxonomy-CBmkmMuU.mjs → taxonomy-Dvsw6BOs.mjs} +44 -9
  345. package/dist/{tokens-CjSgb0AC.mjs → tokens-1RK1n6ED.mjs} +1 -1
  346. package/dist/transport-BNmCqLu7.mjs +134 -0
  347. package/dist/types-4garmdWa.mjs +66 -0
  348. package/dist/{types-DSPGWjxO.d.mts → types-C8XW6L19.d.mts} +225 -4
  349. package/dist/{types-GaCtZ1k9.d.mts → types-CDpH6MA4.d.mts} +18 -0
  350. package/dist/{types-DRIKLmJI.d.mts → types-C_ly5eTp.d.mts} +17 -2
  351. package/dist/types-DF7ZuGGk.d.mts +118 -0
  352. package/dist/types-DU0bU2Wu.d.mts +2392 -0
  353. package/dist/{types-CwawBUTa.d.mts → types-DW_-sFyz.d.mts} +2 -1
  354. package/dist/{types-DfuD0Afl.mjs → types-Dq1qT19x.mjs} +2 -2
  355. package/dist/ui/server-runtime.d.mts +15 -15
  356. package/dist/ui/server-runtime.mjs +25 -21
  357. package/dist/url-Cac7a9QZ.mjs +33 -0
  358. package/dist/{user-DtNmjNYt.mjs → user-BIZPzCb9.mjs} +2 -2
  359. package/dist/{utils-wv-zvC-Y.mjs → utils-CMDhr5Xd.mjs} +129 -7
  360. package/dist/{validate-BMs11tan.d.mts → validate-CZvb-BKB.d.mts} +10 -7
  361. package/dist/{validate-7SYRbz2f.mjs → validate-DNs0pTSc.mjs} +11 -6
  362. package/dist/version-BTvfRGc6.mjs +6 -0
  363. package/dist/{widgets-DR8EHuRO.mjs → widgets-f0ibZUIq.mjs} +46 -43
  364. package/dist/{wordpress-slugs-Dvhxh4cl.mjs → wordpress-slugs-BhHJX8XE.mjs} +1 -1
  365. package/dist/{zod-generator-BS9-umbk.mjs → zod-generator-B7TMjyFJ.mjs} +41 -13
  366. package/package.json +31 -8
  367. package/src/components/Block.astro +50 -0
  368. package/src/components/Comments.astro +143 -1
  369. package/src/components/DinewayHead.astro +19 -2
  370. package/src/components/DinewayImage.astro +66 -33
  371. package/src/components/DinewayMedia.astro +1 -2
  372. package/src/components/Image.astro +85 -40
  373. package/src/components/InlinePortableTextEditor.tsx +12 -2
  374. package/src/components/JsonLdScript.astro +9 -0
  375. package/src/components/LiveSearch.astro +40 -4
  376. package/src/components/index.ts +4 -0
  377. package/src/components/live-search-routing.ts +30 -0
  378. package/src/components/portable-text-text-align.ts +15 -0
  379. package/src/ui.ts +2 -0
  380. package/dist/entity-aliases-Egjmqc7I.mjs +0 -51
  381. package/dist/import-CvHY6sf5.mjs +0 -684
  382. package/dist/runner-B-tbV751.mjs +0 -2741
  383. package/dist/schema-B6zyB-Xn.mjs +0 -8
  384. package/dist/taxonomies-CNOGeC-3.mjs +0 -327
  385. package/dist/types-eu5UDgHN.d.mts +0 -652
  386. package/dist/version-xlzMSXF2.mjs +0 -6
  387. /package/dist/{adapters-OQCImOL7.d.mts → adapters-NVSs4UH7.d.mts} +0 -0
  388. /package/dist/{api-tokens-CYUoFGo7.mjs → api-tokens-2r7OWi_I.mjs} +0 -0
  389. /package/dist/{base64-C1Q9yr0B.mjs → base64-F8-DUraK.mjs} +0 -0
  390. /package/dist/{challenge-store-CRSz-Xim.mjs → challenge-store-Bjlepa2E.mjs} +0 -0
  391. /package/dist/{components--pg6zBvu.mjs → components-Bclf98Be.mjs} +0 -0
  392. /package/dist/{context-types-DQh_XKkn.mjs → context-types-DqTo6C79.mjs} +0 -0
  393. /package/dist/{default-B6iaLvP7.mjs → default--K40jqm0.mjs} +0 -0
  394. /package/dist/{email-console-BOVqIYpB.mjs → email-console-ChgKFO8-.mjs} +0 -0
  395. /package/dist/{escape-BDgouFFY.mjs → escape-Bd4P_xKg.mjs} +0 -0
  396. /package/dist/{experimental-workflows-Dh4DUoD_.mjs → experimental-workflows-BMsUnIAw.mjs} +0 -0
  397. /package/dist/{mime-8pAB8-77.mjs → mime-CA7Lgovc.mjs} +0 -0
  398. /package/dist/{mode-CpyEz8pe.mjs → mode-C4CIyjtR.mjs} +0 -0
  399. /package/dist/{oauth-state-store-qncPB_IU.mjs → oauth-state-store-CNoXafF7.mjs} +0 -0
  400. /package/dist/{oauth-user-lookup-BFjWF8wK.mjs → oauth-user-lookup-Ygw4bNyt.mjs} +0 -0
  401. /package/dist/{options-BvJoSSJR.mjs → options-DQPTH5n0.mjs} +0 -0
  402. /package/dist/{passkey-config-DzHQK90v.mjs → passkey-config-BUwu8BA3.mjs} +0 -0
  403. /package/dist/{patterns-r-0n824Y.mjs → patterns-BhAvqO0S.mjs} +0 -0
  404. /package/dist/{provider-loader-DzUxejk7.mjs → provider-loader-D0w9dqjm.mjs} +0 -0
  405. /package/dist/{redirect-BjIBtDWY.mjs → redirect-wphRBv4y.mjs} +0 -0
  406. /package/dist/{request-cache-CYMbwZc6.mjs → request-cache-D9GQBxMP.mjs} +0 -0
  407. /package/dist/{resolve-DTuDyYKs.mjs → resolve-Cb6Dbz-C.mjs} +0 -0
  408. /package/dist/{setup-nonce-pyGfc9hV.mjs → setup-nonce-CoyjILvW.mjs} +0 -0
  409. /package/dist/{sidecar-client-mJxwayYN.mjs → sidecar-client-C3mqXg4C.mjs} +0 -0
  410. /package/dist/{slugify-BzGxlOFx.mjs → slugify-KSsVD_D3.mjs} +0 -0
  411. /package/dist/{ssrf-DiKqWd3N.mjs → ssrf-DWe8jwAp.mjs} +0 -0
  412. /package/dist/{transaction-CShMWIej.mjs → transaction-C2EOMTJA.mjs} +0 -0
  413. /package/dist/{transport-BnsNxh2l.d.mts → transport-CcJu3Co8.d.mts} +0 -0
  414. /package/dist/{trusted-proxy-BgIIcbsN.mjs → trusted-proxy-DTXQ2IMv.mjs} +0 -0
  415. /package/dist/{types-BO8TGjS8.mjs → types-B3t5cxhU.mjs} +0 -0
  416. /package/dist/{types-nP9vGUFq.d.mts → types-C46EvNdc.d.mts} +0 -0
  417. /package/dist/{types-Cg276-3z.mjs → types-C5CVgwsV.mjs} +0 -0
  418. /package/dist/{types-DZpT-PnG.d.mts → types-POH8PQZh.d.mts} +0 -0
  419. /package/dist/{types-Dryvv7LH.d.mts → types-Rc3gQqqw.d.mts} +0 -0
  420. /package/dist/{url-w7Mp5qAD.mjs → url-CpyFDFpO.mjs} +0 -0
@@ -1,4 +1,5 @@
1
- import { t as isSafeHref } from "./url-w7Mp5qAD.mjs";
1
+ import { t as isSafeHref } from "./url-CpyFDFpO.mjs";
2
+ import { n as isTerminalStatus, t as REDIRECT_RULE_STATUSES } from "./status-DANd8ERo.mjs";
2
3
  import { z } from "zod";
3
4
 
4
5
  //#region src/api/schemas/common.ts
@@ -67,6 +68,8 @@ const bylineSummarySchema = z.object({
67
68
  avatarMediaId: z.string().nullable(),
68
69
  avatarStorageKey: z.string().nullish(),
69
70
  avatarAlt: z.string().nullish(),
71
+ avatarBlurhash: z.string().nullish(),
72
+ avatarDominantColor: z.string().nullish(),
70
73
  websiteUrl: z.string().nullable(),
71
74
  userId: z.string().nullable(),
72
75
  isGuest: z.boolean(),
@@ -463,10 +466,11 @@ const createFieldBody = z.object({
463
466
  }).meta({ id: "CreateFieldBody" });
464
467
  const updateFieldBody = z.object({
465
468
  label: z.string().min(1).optional(),
469
+ type: fieldTypeValues.optional(),
466
470
  required: z.boolean().optional(),
467
471
  unique: z.boolean().optional(),
468
472
  defaultValue: z.unknown().optional(),
469
- validation: fieldValidation,
473
+ validation: fieldValidation.nullable(),
470
474
  widget: z.string().optional(),
471
475
  options: fieldWidgetOptions,
472
476
  sortOrder: z.number().int().min(0).optional(),
@@ -534,6 +538,11 @@ const createCommentBody = z.object({
534
538
  parentId: z.string().optional(),
535
539
  website_url: z.string().optional()
536
540
  }).meta({ id: "CreateCommentBody" });
541
+ const createReactionBody = z.object({
542
+ commentId: z.string().min(1),
543
+ reaction: z.string().min(1).max(20).default("like"),
544
+ website_url: z.string().optional()
545
+ }).meta({ id: "CreateReactionBody" });
537
546
  const commentStatusBody = z.object({ status: z.enum([
538
547
  "approved",
539
548
  "pending",
@@ -581,6 +590,7 @@ const publicCommentSchema = z.object({
581
590
  body: z.string(),
582
591
  parentId: z.string().nullable(),
583
592
  createdAt: z.string(),
593
+ reactions: z.record(z.string(), z.number().int()).optional(),
584
594
  replies: z.array(z.any()).optional()
585
595
  }).meta({ id: "PublicComment" });
586
596
  /** Admin comment with full details */
@@ -1039,12 +1049,7 @@ const widgetAreaWithWidgetsAndCountSchema = widgetAreaWithWidgetsSchema.extend({
1039
1049
 
1040
1050
  //#endregion
1041
1051
  //#region src/api/schemas/redirects.ts
1042
- const redirectType = z.coerce.number().int().refine((n) => [
1043
- 301,
1044
- 302,
1045
- 307,
1046
- 308
1047
- ].includes(n), { message: "Redirect type must be 301, 302, 307, or 308" });
1052
+ const redirectType = z.coerce.number().int().refine((n) => REDIRECT_RULE_STATUSES.includes(n), { message: "Redirect type must be 301, 302, 307, 308, 410, or 451" });
1048
1053
  /** Matches CR or LF characters */
1049
1054
  const CRLF = /[\r\n]/;
1050
1055
  /** Path must start with / and not be protocol-relative, contain no CRLF, and no path traversal */
@@ -1057,14 +1062,17 @@ const urlPath = z.string().min(1).refine((s) => s.startsWith("/") && !s.startsWi
1057
1062
  }, { message: "URL must not contain path traversal segments" });
1058
1063
  const createRedirectBody = z.object({
1059
1064
  source: urlPath,
1060
- destination: urlPath,
1065
+ destination: z.union([urlPath, z.literal("")]).optional(),
1061
1066
  type: redirectType.optional().default(301),
1062
1067
  enabled: z.boolean().optional().default(true),
1063
1068
  groupName: z.string().nullish()
1069
+ }).refine((o) => isTerminalStatus(o.type) || !!o.destination, {
1070
+ message: "destination is required for redirect types (301, 302, 307, 308)",
1071
+ path: ["destination"]
1064
1072
  }).meta({ id: "CreateRedirectBody" });
1065
1073
  const updateRedirectBody = z.object({
1066
1074
  source: urlPath.optional(),
1067
- destination: urlPath.optional(),
1075
+ destination: z.union([urlPath, z.literal("")]).optional(),
1068
1076
  type: redirectType.optional(),
1069
1077
  enabled: z.boolean().optional(),
1070
1078
  groupName: z.string().nullish()
@@ -1118,4 +1126,4 @@ const notFoundSummarySchema = z.object({
1118
1126
  const notFoundSummaryResponseSchema = z.object({ items: z.array(notFoundSummarySchema) }).meta({ id: "NotFoundSummaryResponse" });
1119
1127
 
1120
1128
  //#endregion
1121
- export { createMenuBody as $, contentCreateBody as $t, searchRebuildBody as A, localeFilterQuery as An, fieldSchema as At, updateSectionBody as B, mediaConfirmResponseSchema as Bt, userDetailSchema as C, VALID_ROLE_LEVELS as Cn, collectionSchema as Ct, usersListQuery as D, deleteResponseSchema as Dn, fieldListResponseSchema as Dt, userUpdateBody as E, cursorPaginationQuery as En, createFieldBody as Et, siteSettingsSchema as F, updateCollectionBody as Ft, taxonomyListResponseSchema as G, mediaProviderListQuery as Gt, createTermBody as H, mediaItemSchema as Ht, createSectionBody as I, updateFieldBody as It, termResponseSchema as J, mediaUploadUrlBody as Jt, termGetResponseSchema as K, mediaResponseSchema as Kt, sectionListResponseSchema as L, DEFAULT_MAX_UPLOAD_SIZE as Lt, searchResultSchema as M, roleLevel as Mn, orphanedTableListResponseSchema as Mt, searchSuggestQuery as N, slugPattern as Nn, orphanedTableSchema as Nt, searchEnableBody as O, httpUrl as On, fieldReorderBody as Ot, settingsUpdateBody as P, successEnvelope as Pn, schemaExportQuery as Pt, updateTermBody as Q, contentCompareResponseSchema as Qt, sectionSchema as R, formatFileSize as Rt, allowedDomainUpdateBody as S, contentBylineInputSchema as Sn, collectionResponseSchema as St, userSchema as T, countResponseSchema as Tn, createCollectionBody as Tt, taxonomyDefSchema as U, mediaListQuery as Ut, createTaxonomyDefBody as V, mediaExistingResponseSchema as Vt, taxonomyDefTranslationsSchema as W, mediaListResponseSchema as Wt, termTranslationsSchema as X, contentAuthorSchema as Xt, termSchema as Y, mediaUploadUrlResponseSchema as Yt, termWithCountSchema as Z, contentAuthorsResponseSchema as Zt, widgetAreaSchema as _, bylineCreditSchema as _n, createCommentBody as _t, notFoundPruneBody as a, contentResponseSchema as an, menuTranslationsSchema as at, widgetSchema as b, bylineUpdateBody as bn, collectionGetQuery as bt, notFoundSummarySchema as c, contentSeoSchema as cn, updateMenuBody as ct, redirectsListQuery as d, contentTranslationsResponseSchema as dn, commentBulkBody as dt, contentItemSchema as en, createMenuItemBody as et, updateRedirectBody as f, contentTrashQuery as fn, commentBulkResponseSchema as ft, updateWidgetBody as g, bylineCreateBody as gn, commentStatusBody as gt, reorderWidgetsBody as h, trashedContentListResponseSchema as hn, commentSchema as ht, notFoundListResponseSchema as i, contentPublishBody as in, menuSchema as it, searchResponseSchema as j, offsetPaginationQuery as jn, orphanRegisterBody as jt, searchQuery as k, localeCode as kn, fieldResponseSchema as kt, redirectListResponseSchema as l, contentTermsBody as ln, updateMenuItemBody as lt, createWidgetBody as m, trashedContentItemSchema as mn, commentListQuery as mt, notFoundEntrySchema as n, contentListResponseSchema as nn, menuItemTypeEnum as nt, notFoundSummaryQuery as o, contentScheduleBody as on, menuWithItemsSchema as ot, createWidgetAreaBody as p, contentUpdateBody as pn, commentCountsResponseSchema as pt, termListResponseSchema as q, mediaUpdateBody as qt, notFoundListQuery as r, contentPreviewUrlBody as rn, menuListItemSchema as rt, notFoundSummaryResponseSchema as s, contentSeoInput as sn, reorderMenuItemsBody as st, createRedirectBody as t, contentListQuery as tn, menuItemSchema as tt, redirectSchema as u, contentTranslationSchema as un, adminCommentListResponseSchema as ut, widgetAreaWithWidgetsAndCountSchema as v, bylineListResponseSchema as vn, publicCommentListResponseSchema as vt, userListResponseSchema as w, apiErrorSchema as wn, collectionWithFieldsResponseSchema as wt, allowedDomainCreateBody as x, bylinesListQuery as xn, collectionListResponseSchema as xt, widgetAreaWithWidgetsSchema as y, bylineSummarySchema as yn, publicCommentSchema as yt, sectionsListQuery as z, mediaConfirmBody as zt };
1129
+ export { createMenuBody as $, contentCompareResponseSchema as $t, searchRebuildBody as A, localeCode as An, fieldResponseSchema as At, updateSectionBody as B, mediaConfirmBody as Bt, userDetailSchema as C, contentBylineInputSchema as Cn, collectionResponseSchema as Ct, usersListQuery as D, cursorPaginationQuery as Dn, createFieldBody as Dt, userUpdateBody as E, countResponseSchema as En, createCollectionBody as Et, siteSettingsSchema as F, successEnvelope as Fn, schemaExportQuery as Ft, taxonomyListResponseSchema as G, mediaListResponseSchema as Gt, createTermBody as H, mediaExistingResponseSchema as Ht, createSectionBody as I, updateCollectionBody as It, termResponseSchema as J, mediaUpdateBody as Jt, termGetResponseSchema as K, mediaProviderListQuery as Kt, sectionListResponseSchema as L, updateFieldBody as Lt, searchResultSchema as M, offsetPaginationQuery as Mn, orphanRegisterBody as Mt, searchSuggestQuery as N, roleLevel as Nn, orphanedTableListResponseSchema as Nt, searchEnableBody as O, deleteResponseSchema as On, fieldListResponseSchema as Ot, settingsUpdateBody as P, slugPattern as Pn, orphanedTableSchema as Pt, updateTermBody as Q, contentAuthorsResponseSchema as Qt, sectionSchema as R, DEFAULT_MAX_UPLOAD_SIZE as Rt, allowedDomainUpdateBody as S, bylinesListQuery as Sn, collectionListResponseSchema as St, userSchema as T, apiErrorSchema as Tn, collectionWithFieldsResponseSchema as Tt, taxonomyDefSchema as U, mediaItemSchema as Ut, createTaxonomyDefBody as V, mediaConfirmResponseSchema as Vt, taxonomyDefTranslationsSchema as W, mediaListQuery as Wt, termTranslationsSchema as X, mediaUploadUrlResponseSchema as Xt, termSchema as Y, mediaUploadUrlBody as Yt, termWithCountSchema as Z, contentAuthorSchema as Zt, widgetAreaSchema as _, bylineCreateBody as _n, createCommentBody as _t, notFoundPruneBody as a, contentPublishBody as an, menuTranslationsSchema as at, widgetSchema as b, bylineSummarySchema as bn, publicCommentSchema as bt, notFoundSummarySchema as c, contentSeoInput as cn, updateMenuBody as ct, redirectsListQuery as d, contentTranslationSchema as dn, commentBulkBody as dt, contentCreateBody as en, createMenuItemBody as et, updateRedirectBody as f, contentTranslationsResponseSchema as fn, commentBulkResponseSchema as ft, updateWidgetBody as g, trashedContentListResponseSchema as gn, commentStatusBody as gt, reorderWidgetsBody as h, trashedContentItemSchema as hn, commentSchema as ht, notFoundListResponseSchema as i, contentPreviewUrlBody as in, menuSchema as it, searchResponseSchema as j, localeFilterQuery as jn, fieldSchema as jt, searchQuery as k, httpUrl as kn, fieldReorderBody as kt, redirectListResponseSchema as l, contentSeoSchema as ln, updateMenuItemBody as lt, createWidgetBody as m, contentUpdateBody as mn, commentListQuery as mt, notFoundEntrySchema as n, contentListQuery as nn, menuItemTypeEnum as nt, notFoundSummaryQuery as o, contentResponseSchema as on, menuWithItemsSchema as ot, createWidgetAreaBody as p, contentTrashQuery as pn, commentCountsResponseSchema as pt, termListResponseSchema as q, mediaResponseSchema as qt, notFoundListQuery as r, contentListResponseSchema as rn, menuListItemSchema as rt, notFoundSummaryResponseSchema as s, contentScheduleBody as sn, reorderMenuItemsBody as st, createRedirectBody as t, contentItemSchema as tn, menuItemSchema as tt, redirectSchema as u, contentTermsBody as un, adminCommentListResponseSchema as ut, widgetAreaWithWidgetsAndCountSchema as v, bylineCreditSchema as vn, createReactionBody as vt, userListResponseSchema as w, VALID_ROLE_LEVELS as wn, collectionSchema as wt, allowedDomainCreateBody as x, bylineUpdateBody as xn, collectionGetQuery as xt, widgetAreaWithWidgetsSchema as y, bylineListResponseSchema as yn, publicCommentListResponseSchema as yt, sectionsListQuery as z, formatFileSize as zt };
@@ -1,11 +1,12 @@
1
- import { a as __exportAll } from "./runner-B-tbV751.mjs";
1
+ import { a as __exportAll } from "./runner-DB7CRfOF.mjs";
2
2
  import { t as validateIdentifier } from "./validate-VPnKoIzW.mjs";
3
3
  import { i as currentTimestamp, l as listTablesLike, n as columnExists, u as tableExists } from "./dialect-helpers-fk43GbDb.mjs";
4
4
  import { n as contentLocaleUpdatedIndexName, t as contentLocaleCreatedIndexName } from "./content-index-names-Bbu1FY1r.mjs";
5
- import { n as chunks, t as SQL_BATCH_SIZE } from "./chunks-C5zp2xir.mjs";
6
- import { t as withTransaction } from "./transaction-CShMWIej.mjs";
7
- import { a as RESERVED_COLLECTION_SLUGS, o as RESERVED_FIELD_SLUGS, r as FIELD_TYPE_TO_COLUMN } from "./types-BO8TGjS8.mjs";
8
- import { t as FTSManager } from "./fts-manager-CIZlScg5.mjs";
5
+ import { n as chunks, t as SQL_BATCH_SIZE } from "./chunks-CxBt-GxR.mjs";
6
+ import { t as withTransaction } from "./transaction-C2EOMTJA.mjs";
7
+ import { a as RESERVED_COLLECTION_SLUGS, o as RESERVED_FIELD_SLUGS, r as FIELD_TYPE_TO_COLUMN } from "./types-B3t5cxhU.mjs";
8
+ import { a as markContentMediaUsageCollectionStaleSafely, n as deleteContentMediaUsageCollection } from "./content-refresh-CgutSUfO.mjs";
9
+ import { t as FTSManager } from "./fts-manager-Crzypjqu.mjs";
9
10
  import { sql } from "kysely";
10
11
  import { ulid } from "ulidx";
11
12
 
@@ -226,11 +227,19 @@ var SchemaRegistry = class {
226
227
  if (!options?.force) {
227
228
  if (await this.collectionHasContent(slug)) throw new SchemaError(`Collection "${slug}" has content. Use force: true to delete.`, "COLLECTION_HAS_CONTENT");
228
229
  }
229
- await withTransaction(this.db, async (trx) => {
230
- await new FTSManager(trx).dropFtsTable(slug);
231
- await this.dropContentTable(slug, trx);
232
- await trx.deleteFrom("_dineway_collections").where("id", "=", existing.id).execute();
233
- });
230
+ let contentTableDropped = false;
231
+ try {
232
+ await withTransaction(this.db, async (trx) => {
233
+ await new FTSManager(trx).dropFtsTable(slug);
234
+ await this.dropContentTable(slug, trx);
235
+ contentTableDropped = true;
236
+ await trx.deleteFrom("_dineway_collections").where("id", "=", existing.id).execute();
237
+ });
238
+ await deleteContentMediaUsageCollection(this.db, slug);
239
+ } catch (error) {
240
+ if (contentTableDropped && !await tableExists(this.db, this.getTableName(slug))) await deleteContentMediaUsageCollection(this.db, slug);
241
+ throw error;
242
+ }
234
243
  }
235
244
  /**
236
245
  * List fields for a collection
@@ -260,34 +269,43 @@ var SchemaRegistry = class {
260
269
  const columnType = FIELD_TYPE_TO_COLUMN[input.type];
261
270
  const maxSort = await this.db.selectFrom("_dineway_fields").where("collection_id", "=", collection.id).select((eb) => eb.fn.max("sort_order").as("max")).executeTakeFirst();
262
271
  const sortOrder = input.sortOrder ?? (maxSort?.max ?? -1) + 1;
263
- return withTransaction(this.db, async (trx) => {
264
- await trx.insertInto("_dineway_fields").values({
265
- id,
266
- collection_id: collection.id,
267
- slug: input.slug,
268
- label: input.label,
269
- type: input.type,
270
- column_type: columnType,
271
- required: input.required ? 1 : 0,
272
- unique: input.unique ? 1 : 0,
273
- default_value: input.defaultValue !== void 0 ? JSON.stringify(input.defaultValue) : null,
274
- validation: input.validation ? JSON.stringify(input.validation) : null,
275
- widget: input.widget ?? null,
276
- options: input.options ? JSON.stringify(input.options) : null,
277
- sort_order: sortOrder,
278
- searchable: input.searchable ? 1 : 0,
279
- translatable: input.translatable === false ? 0 : 1
280
- }).execute();
281
- await this.addColumn(collectionSlug, input.slug, input.type, {
282
- required: input.required,
283
- defaultValue: input.defaultValue
284
- }, trx);
285
- const fieldRow = await trx.selectFrom("_dineway_fields").where("collection_id", "=", collection.id).where("slug", "=", input.slug).selectAll().executeTakeFirst();
286
- if (!fieldRow) throw new SchemaError("Failed to create field", "CREATE_FAILED");
287
- const field = this.mapFieldRow(fieldRow);
288
- if (input.searchable) await this.syncSearchState(collectionSlug, trx);
289
- return field;
290
- });
272
+ let schemaMutated = false;
273
+ try {
274
+ const created = await withTransaction(this.db, async (trx) => {
275
+ await trx.insertInto("_dineway_fields").values({
276
+ id,
277
+ collection_id: collection.id,
278
+ slug: input.slug,
279
+ label: input.label,
280
+ type: input.type,
281
+ column_type: columnType,
282
+ required: input.required ? 1 : 0,
283
+ unique: input.unique ? 1 : 0,
284
+ default_value: input.defaultValue !== void 0 ? JSON.stringify(input.defaultValue) : null,
285
+ validation: input.validation ? JSON.stringify(input.validation) : null,
286
+ widget: input.widget ?? null,
287
+ options: input.options ? JSON.stringify(input.options) : null,
288
+ sort_order: sortOrder,
289
+ searchable: input.searchable ? 1 : 0,
290
+ translatable: input.translatable === false ? 0 : 1
291
+ }).execute();
292
+ schemaMutated = true;
293
+ await this.addColumn(collectionSlug, input.slug, input.type, {
294
+ required: input.required,
295
+ defaultValue: input.defaultValue
296
+ }, trx);
297
+ const fieldRow = await trx.selectFrom("_dineway_fields").where("collection_id", "=", collection.id).where("slug", "=", input.slug).selectAll().executeTakeFirst();
298
+ if (!fieldRow) throw new SchemaError("Failed to create field", "CREATE_FAILED");
299
+ const field = this.mapFieldRow(fieldRow);
300
+ if (input.searchable) await this.syncSearchState(collectionSlug, trx);
301
+ return field;
302
+ });
303
+ await markContentMediaUsageCollectionStaleSafely(this.db, collectionSlug, "CONTENT_USAGE_STALE");
304
+ return created;
305
+ } catch (error) {
306
+ if (schemaMutated) await markContentMediaUsageCollectionStaleSafely(this.db, collectionSlug, "CONTENT_USAGE_STALE");
307
+ throw error;
308
+ }
291
309
  }
292
310
  /**
293
311
  * Ensure the content table for an existing collection exists.
@@ -327,25 +345,44 @@ var SchemaRegistry = class {
327
345
  async updateField(collectionSlug, fieldSlug, input) {
328
346
  const field = await this.getField(collectionSlug, fieldSlug);
329
347
  if (!field) throw new SchemaError(`Field "${fieldSlug}" not found in collection "${collectionSlug}"`, "FIELD_NOT_FOUND");
330
- return withTransaction(this.db, async (trx) => {
331
- await trx.updateTable("_dineway_fields").set({
332
- label: input.label ?? field.label,
333
- required: input.required !== void 0 ? input.required ? 1 : 0 : field.required ? 1 : 0,
334
- unique: input.unique !== void 0 ? input.unique ? 1 : 0 : field.unique ? 1 : 0,
335
- searchable: input.searchable !== void 0 ? input.searchable ? 1 : 0 : field.searchable ? 1 : 0,
336
- translatable: input.translatable !== void 0 ? input.translatable ? 1 : 0 : field.translatable ? 1 : 0,
337
- default_value: input.defaultValue !== void 0 ? JSON.stringify(input.defaultValue) : field.defaultValue !== void 0 ? JSON.stringify(field.defaultValue) : null,
338
- validation: input.validation ? JSON.stringify(input.validation) : field.validation ? JSON.stringify(field.validation) : null,
339
- widget: input.widget ?? field.widget ?? null,
340
- options: input.options ? JSON.stringify(input.options) : field.options ? JSON.stringify(field.options) : null,
341
- sort_order: input.sortOrder ?? field.sortOrder
342
- }).where("id", "=", field.id).execute();
343
- const updatedRow = await trx.selectFrom("_dineway_fields").where("collection_id", "=", field.collectionId).where("slug", "=", fieldSlug).selectAll().executeTakeFirst();
344
- if (!updatedRow) throw new SchemaError("Failed to update field", "UPDATE_FAILED");
345
- const updated = this.mapFieldRow(updatedRow);
346
- if (input.searchable !== void 0 && input.searchable !== field.searchable) await this.syncSearchState(collectionSlug, trx);
347
- return updated;
348
- });
348
+ let nextType = field.type;
349
+ let nextColumnType = field.columnType;
350
+ if (input.type !== void 0 && input.type !== field.type) {
351
+ nextColumnType = FIELD_TYPE_TO_COLUMN[input.type];
352
+ if (nextColumnType !== field.columnType) throw new SchemaError(`Cannot change field "${fieldSlug}" in collection "${collectionSlug}" from type "${field.type}" to "${input.type}" because the underlying column type would change from ${field.columnType} to ${nextColumnType}`, "FIELD_TYPE_COLUMN_CHANGE");
353
+ nextType = input.type;
354
+ }
355
+ const nextValidation = input.validation === void 0 ? field.validation : input.validation;
356
+ let schemaMutated = false;
357
+ try {
358
+ const updatedField = await withTransaction(this.db, async (trx) => {
359
+ await trx.updateTable("_dineway_fields").set({
360
+ label: input.label ?? field.label,
361
+ type: nextType,
362
+ column_type: nextColumnType,
363
+ required: input.required !== void 0 ? input.required ? 1 : 0 : field.required ? 1 : 0,
364
+ unique: input.unique !== void 0 ? input.unique ? 1 : 0 : field.unique ? 1 : 0,
365
+ searchable: input.searchable !== void 0 ? input.searchable ? 1 : 0 : field.searchable ? 1 : 0,
366
+ translatable: input.translatable !== void 0 ? input.translatable ? 1 : 0 : field.translatable ? 1 : 0,
367
+ default_value: input.defaultValue !== void 0 ? JSON.stringify(input.defaultValue) : field.defaultValue !== void 0 ? JSON.stringify(field.defaultValue) : null,
368
+ validation: nextValidation ? JSON.stringify(nextValidation) : null,
369
+ widget: input.widget ?? field.widget ?? null,
370
+ options: input.options ? JSON.stringify(input.options) : field.options ? JSON.stringify(field.options) : null,
371
+ sort_order: input.sortOrder ?? field.sortOrder
372
+ }).where("id", "=", field.id).execute();
373
+ schemaMutated = true;
374
+ const updatedRow = await trx.selectFrom("_dineway_fields").where("collection_id", "=", field.collectionId).where("slug", "=", fieldSlug).selectAll().executeTakeFirst();
375
+ if (!updatedRow) throw new SchemaError("Failed to update field", "UPDATE_FAILED");
376
+ const updated = this.mapFieldRow(updatedRow);
377
+ if (input.searchable !== void 0 && input.searchable !== field.searchable) await this.syncSearchState(collectionSlug, trx);
378
+ return updated;
379
+ });
380
+ await markContentMediaUsageCollectionStaleSafely(this.db, collectionSlug, "CONTENT_USAGE_STALE");
381
+ return updatedField;
382
+ } catch (error) {
383
+ if (schemaMutated) await markContentMediaUsageCollectionStaleSafely(this.db, collectionSlug, "CONTENT_USAGE_STALE");
384
+ throw error;
385
+ }
349
386
  }
350
387
  /**
351
388
  * Synchronize an existing FTS index with the collection's current state.
@@ -371,11 +408,19 @@ var SchemaRegistry = class {
371
408
  async deleteField(collectionSlug, fieldSlug) {
372
409
  const field = await this.getField(collectionSlug, fieldSlug);
373
410
  if (!field) throw new SchemaError(`Field "${fieldSlug}" not found in collection "${collectionSlug}"`, "FIELD_NOT_FOUND");
374
- await withTransaction(this.db, async (trx) => {
375
- await trx.deleteFrom("_dineway_fields").where("id", "=", field.id).execute();
376
- if (field.searchable) await this.syncSearchState(collectionSlug, trx);
377
- await this.dropColumn(collectionSlug, fieldSlug, trx);
378
- });
411
+ let schemaMutated = false;
412
+ try {
413
+ await withTransaction(this.db, async (trx) => {
414
+ await trx.deleteFrom("_dineway_fields").where("id", "=", field.id).execute();
415
+ schemaMutated = true;
416
+ if (field.searchable) await this.syncSearchState(collectionSlug, trx);
417
+ await this.dropColumn(collectionSlug, fieldSlug, trx);
418
+ });
419
+ await markContentMediaUsageCollectionStaleSafely(this.db, collectionSlug, "CONTENT_USAGE_STALE");
420
+ } catch (error) {
421
+ if (schemaMutated) await markContentMediaUsageCollectionStaleSafely(this.db, collectionSlug, "CONTENT_USAGE_STALE");
422
+ throw error;
423
+ }
379
424
  }
380
425
  /**
381
426
  * Reorder fields
@@ -664,21 +709,29 @@ var SchemaRegistry = class {
664
709
  if (await this.getCollection(slug)) throw new SchemaError(`Collection "${slug}" is already registered`, "COLLECTION_EXISTS");
665
710
  const id = ulid();
666
711
  const label = options?.label || this.slugToLabel(slug);
667
- await this.db.insertInto("_dineway_collections").values({
668
- id,
669
- slug,
670
- label,
671
- label_singular: options?.labelSingular ?? null,
672
- description: options?.description ?? null,
673
- icon: null,
674
- supports: JSON.stringify([]),
675
- source: "discovered",
676
- has_seo: 0,
677
- url_pattern: null
678
- }).execute();
679
- const collection = await this.getCollection(slug);
680
- if (!collection) throw new SchemaError("Failed to register orphaned table", "REGISTER_FAILED");
681
- return collection;
712
+ let collectionRegistered = false;
713
+ try {
714
+ await this.db.insertInto("_dineway_collections").values({
715
+ id,
716
+ slug,
717
+ label,
718
+ label_singular: options?.labelSingular ?? null,
719
+ description: options?.description ?? null,
720
+ icon: null,
721
+ supports: JSON.stringify([]),
722
+ source: "discovered",
723
+ has_seo: 0,
724
+ url_pattern: null
725
+ }).execute();
726
+ collectionRegistered = true;
727
+ const collection = await this.getCollection(slug);
728
+ if (!collection) throw new SchemaError("Failed to register orphaned table", "REGISTER_FAILED");
729
+ await markContentMediaUsageCollectionStaleSafely(this.db, slug, "CONTENT_USAGE_STALE");
730
+ return collection;
731
+ } catch (error) {
732
+ if (collectionRegistered) await markContentMediaUsageCollectionStaleSafely(this.db, slug, "CONTENT_USAGE_STALE");
733
+ throw error;
734
+ }
682
735
  }
683
736
  /**
684
737
  * Convert slug to human-readable label
@@ -36,6 +36,8 @@ interface DinewayRequestContext {
36
36
  * playground sidecar flows.
37
37
  */
38
38
  db?: unknown;
39
+ /** Whether `db` points at an isolated session database instead of the site database. */
40
+ dbIsIsolated?: boolean;
39
41
  /** Optional query recorder for per-request instrumentation. */
40
42
  queryRecorder?: QueryRecorder;
41
43
  /** Optional metrics collector for Server-Timing request counters. */
@@ -1,4 +1,4 @@
1
- import { n as normalizeTrustedHeaders, t as getTrustedProxyHeaders } from "./trusted-proxy-BgIIcbsN.mjs";
1
+ import { n as normalizeTrustedHeaders, t as getTrustedProxyHeaders } from "./trusted-proxy-DTXQ2IMv.mjs";
2
2
 
3
3
  //#region src/plugins/request-meta.ts
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { t as ReviewRequestRepository } from "./review-requests-gGMyYYhy.mjs";
1
+ import { t as ReviewRequestRepository } from "./review-requests-DUyEmtmG.mjs";
2
2
 
3
3
  //#region src/api/handlers/review-requests.ts
4
4
  async function handleReviewRequestList(db, query) {
@@ -1,4 +1,4 @@
1
- import { i as encodeCursor, r as decodeCursor } from "./types-DfuD0Afl.mjs";
1
+ import { i as encodeCursor, r as decodeCursor } from "./types-Dq1qT19x.mjs";
2
2
  import { ulid } from "ulidx";
3
3
 
4
4
  //#region src/database/repositories/review-requests.ts
@@ -1,4 +1,4 @@
1
- import { t as Database } from "./types-eu5UDgHN.mjs";
1
+ import { t as Database } from "./types-DU0bU2Wu.mjs";
2
2
  import { Kysely } from "kysely";
3
3
 
4
4
  //#region src/database/migrations/runner.d.ts