dineway 0.1.49 → 0.2.1

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 (434) hide show
  1. package/dist/activity-DUaz_w7p.mjs +79 -0
  2. package/dist/{activity-events-CwM7yxPW.mjs → activity-events-CJDvE2uc.mjs} +5 -113
  3. package/dist/actor-0QJ1Gbtf.mjs +37 -0
  4. package/dist/after-BfniwgIf.mjs +9 -0
  5. package/dist/{allowed-origins-CyGnbgBd.mjs → allowed-origins--OwHHiY8.mjs} +1 -1
  6. package/dist/api/route-utils.d.mts +9 -10
  7. package/dist/api/route-utils.mjs +16 -13
  8. package/dist/api/schemas/index.d.mts +2 -2
  9. package/dist/api/schemas/index.mjs +5 -4
  10. package/dist/{api-BMIxRIEN.mjs → api-B4PHIF4V.mjs} +93 -41
  11. package/dist/{api-tokens-DtvdtIkm.mjs → api-tokens-tbK_sORH.mjs} +6 -2
  12. package/dist/{apply-D_RlTYtC.mjs → apply-DjTqq6Ae.mjs} +117 -77
  13. package/dist/astro/image-endpoint.d.mts +7 -0
  14. package/dist/astro/image-endpoint.mjs +54 -0
  15. package/dist/astro/index.d.mts +34 -11
  16. package/dist/astro/index.mjs +163 -24
  17. package/dist/astro/integration/shims/use-sync-external-store-with-selector.js +71 -0
  18. package/dist/astro/integration/shims/use-sync-external-store.js +1 -0
  19. package/dist/astro/middleware/auth.d.mts +8 -18
  20. package/dist/astro/middleware/auth.mjs +42 -24
  21. package/dist/astro/middleware/redirect.mjs +13 -4
  22. package/dist/astro/middleware/request-context.mjs +8 -5
  23. package/dist/astro/middleware/seed.d.mts +1 -1
  24. package/dist/astro/middleware/seed.mjs +2 -2
  25. package/dist/astro/middleware/setup.mjs +1 -1
  26. package/dist/astro/middleware.mjs +389 -206
  27. package/dist/astro/routes/admin.astro +6 -1
  28. package/dist/astro/routes/api/admin/allowed-domains/_domain_.mjs +7 -6
  29. package/dist/astro/routes/api/admin/allowed-domains/index.mjs +7 -6
  30. package/dist/astro/routes/api/admin/api-tokens/_id_.mjs +4 -4
  31. package/dist/astro/routes/api/admin/api-tokens/index.mjs +6 -6
  32. package/dist/astro/routes/api/admin/briefing.mjs +21 -17
  33. package/dist/astro/routes/api/admin/byline-fields/_slug_/usage.mjs +4 -4
  34. package/dist/astro/routes/api/admin/byline-fields/_slug_.mjs +9 -8
  35. package/dist/astro/routes/api/admin/byline-fields/index.mjs +9 -8
  36. package/dist/astro/routes/api/admin/byline-fields/reorder.mjs +9 -8
  37. package/dist/astro/routes/api/admin/bylines/_id_/index.mjs +17 -14
  38. package/dist/astro/routes/api/admin/bylines/_id_/translations.mjs +17 -14
  39. package/dist/astro/routes/api/admin/bylines/index.mjs +17 -14
  40. package/dist/astro/routes/api/admin/comments/_id_/status.mjs +14 -12
  41. package/dist/astro/routes/api/admin/comments/_id_.mjs +6 -5
  42. package/dist/astro/routes/api/admin/comments/bulk.mjs +11 -9
  43. package/dist/astro/routes/api/admin/comments/counts.mjs +6 -5
  44. package/dist/astro/routes/api/admin/comments/index.mjs +11 -9
  45. package/dist/astro/routes/api/admin/context/_id_/history.mjs +27 -24
  46. package/dist/astro/routes/api/admin/context/_id_/index.mjs +27 -24
  47. package/dist/astro/routes/api/admin/context/_id_/review.mjs +32 -28
  48. package/dist/astro/routes/api/admin/context/_id_/supersede.mjs +32 -28
  49. package/dist/astro/routes/api/admin/context/diff.mjs +31 -27
  50. package/dist/astro/routes/api/admin/context/index.mjs +32 -28
  51. package/dist/astro/routes/api/admin/context/stale.mjs +31 -27
  52. package/dist/astro/routes/api/admin/hitl-requests/_id_/index.mjs +27 -24
  53. package/dist/astro/routes/api/admin/hitl-requests/_id_/resolve.mjs +31 -27
  54. package/dist/astro/routes/api/admin/hitl-requests/index.mjs +31 -27
  55. package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.mjs +28 -25
  56. package/dist/astro/routes/api/admin/hooks/exclusive/index.mjs +3 -3
  57. package/dist/astro/routes/api/admin/oauth-clients/_id_.mjs +6 -6
  58. package/dist/astro/routes/api/admin/oauth-clients/index.mjs +6 -6
  59. package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs +56 -51
  60. package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs +56 -51
  61. package/dist/astro/routes/api/admin/plugins/_id_/index.mjs +47 -43
  62. package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs +54 -49
  63. package/dist/astro/routes/api/admin/plugins/_id_/update.mjs +53 -48
  64. package/dist/astro/routes/api/admin/plugins/index.mjs +47 -43
  65. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.mjs +2 -2
  66. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs +46 -42
  67. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs +53 -48
  68. package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs +46 -42
  69. package/dist/astro/routes/api/admin/plugins/updates.mjs +46 -42
  70. package/dist/astro/routes/api/admin/review-requests/_id_/index.mjs +5 -5
  71. package/dist/astro/routes/api/admin/review-requests/_id_/resolve.mjs +32 -63
  72. package/dist/astro/routes/api/admin/review-requests/index.d.mts +2 -1
  73. package/dist/astro/routes/api/admin/review-requests/index.mjs +58 -10
  74. package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs +46 -42
  75. package/dist/astro/routes/api/admin/themes/marketplace/_id_/thumbnail.mjs +2 -2
  76. package/dist/astro/routes/api/admin/themes/marketplace/index.mjs +46 -42
  77. package/dist/astro/routes/api/admin/users/_id_/disable.mjs +3 -3
  78. package/dist/astro/routes/api/admin/users/_id_/enable.mjs +2 -2
  79. package/dist/astro/routes/api/admin/users/_id_/index.mjs +8 -7
  80. package/dist/astro/routes/api/admin/users/_id_/send-recovery.mjs +4 -4
  81. package/dist/astro/routes/api/admin/users/index.mjs +7 -6
  82. package/dist/astro/routes/api/auth/dev-bypass.mjs +4 -4
  83. package/dist/astro/routes/api/auth/invite/accept.mjs +2 -2
  84. package/dist/astro/routes/api/auth/invite/complete.mjs +12 -11
  85. package/dist/astro/routes/api/auth/invite/index.mjs +9 -8
  86. package/dist/astro/routes/api/auth/invite/register-options.mjs +11 -10
  87. package/dist/astro/routes/api/auth/logout.mjs +2 -2
  88. package/dist/astro/routes/api/auth/magic-link/send.mjs +11 -10
  89. package/dist/astro/routes/api/auth/magic-link/verify.mjs +3 -3
  90. package/dist/astro/routes/api/auth/me.mjs +9 -8
  91. package/dist/astro/routes/api/auth/mode.mjs +1 -1
  92. package/dist/astro/routes/api/auth/oauth/_provider_/callback.mjs +3 -3
  93. package/dist/astro/routes/api/auth/oauth/_provider_.mjs +2 -2
  94. package/dist/astro/routes/api/auth/passkey/_id_.mjs +6 -5
  95. package/dist/astro/routes/api/auth/passkey/index.mjs +1 -1
  96. package/dist/astro/routes/api/auth/passkey/options.mjs +12 -11
  97. package/dist/astro/routes/api/auth/passkey/register/options.mjs +10 -9
  98. package/dist/astro/routes/api/auth/passkey/register/verify.mjs +11 -10
  99. package/dist/astro/routes/api/auth/passkey/verify.mjs +11 -10
  100. package/dist/astro/routes/api/auth/setup-token/index.mjs +5 -5
  101. package/dist/astro/routes/api/auth/setup-token/verify.mjs +2 -2
  102. package/dist/astro/routes/api/auth/signup/complete.mjs +12 -11
  103. package/dist/astro/routes/api/auth/signup/request.mjs +11 -10
  104. package/dist/astro/routes/api/auth/signup/verify.mjs +2 -2
  105. package/dist/astro/routes/api/comments/_collection_/_contentId_/index.mjs +15 -13
  106. package/dist/astro/routes/api/comments/_collection_/_contentId_/reactions.d.mts +8 -0
  107. package/dist/astro/routes/api/comments/_collection_/_contentId_/reactions.mjs +160 -0
  108. package/dist/astro/routes/api/content/_collection_/_id_/compare.mjs +2 -2
  109. package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs +6 -5
  110. package/dist/astro/routes/api/content/_collection_/_id_/duplicate.mjs +6 -5
  111. package/dist/astro/routes/api/content/_collection_/_id_/permanent.mjs +6 -5
  112. package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs +11 -10
  113. package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs +49 -20
  114. package/dist/astro/routes/api/content/_collection_/_id_/restore.mjs +6 -5
  115. package/dist/astro/routes/api/content/_collection_/_id_/revisions.mjs +2 -2
  116. package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs +67 -32
  117. package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs +16 -14
  118. package/dist/astro/routes/api/content/_collection_/_id_/translations.mjs +2 -2
  119. package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs +6 -5
  120. package/dist/astro/routes/api/content/_collection_/_id_.mjs +11 -9
  121. package/dist/astro/routes/api/content/_collection_/authors.mjs +2 -2
  122. package/dist/astro/routes/api/content/_collection_/index.mjs +11 -9
  123. package/dist/astro/routes/api/content/_collection_/trash.mjs +7 -6
  124. package/dist/astro/routes/api/dashboard.mjs +9 -8
  125. package/dist/astro/routes/api/dev/emails.mjs +2 -2
  126. package/dist/astro/routes/api/health.mjs +1 -1
  127. package/dist/astro/routes/api/import/probe.d.mts +3 -3
  128. package/dist/astro/routes/api/import/probe.mjs +22 -10
  129. package/dist/astro/routes/api/import/wordpress/analyze.mjs +9 -6
  130. package/dist/astro/routes/api/import/wordpress/execute.d.mts +18 -1
  131. package/dist/astro/routes/api/import/wordpress/execute.mjs +85 -37
  132. package/dist/astro/routes/api/import/wordpress/media.d.mts +12 -1
  133. package/dist/astro/routes/api/import/wordpress/media.mjs +20 -14
  134. package/dist/astro/routes/api/import/wordpress/prepare.mjs +36 -32
  135. package/dist/astro/routes/api/import/wordpress/rewrite-urls.d.mts +17 -1
  136. package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs +121 -100
  137. package/dist/astro/routes/api/import/wordpress-plugin/analyze.d.mts +1 -1
  138. package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs +24 -12
  139. package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts +55 -2
  140. package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs +284 -55
  141. package/dist/astro/routes/api/manifest.mjs +14 -5
  142. package/dist/astro/routes/api/mcp.mjs +753 -170
  143. package/dist/astro/routes/api/media/_id_/confirm.mjs +38 -10
  144. package/dist/astro/routes/api/media/_id_.mjs +11 -7
  145. package/dist/astro/routes/api/media/file/_...key_.mjs +1 -1
  146. package/dist/astro/routes/api/media/providers/_providerId_/_itemId_.mjs +2 -2
  147. package/dist/astro/routes/api/media/providers/_providerId_/index.mjs +2 -2
  148. package/dist/astro/routes/api/media/providers/index.mjs +2 -2
  149. package/dist/astro/routes/api/media/upload-url.mjs +11 -10
  150. package/dist/astro/routes/api/media.mjs +28 -35
  151. package/dist/astro/routes/api/menus/_name_/items/_id_.mjs +32 -28
  152. package/dist/astro/routes/api/menus/_name_/items.mjs +32 -28
  153. package/dist/astro/routes/api/menus/_name_/reorder.mjs +32 -28
  154. package/dist/astro/routes/api/menus/_name_/translations.mjs +32 -28
  155. package/dist/astro/routes/api/menus/_name_.mjs +32 -28
  156. package/dist/astro/routes/api/menus/index.mjs +32 -28
  157. package/dist/astro/routes/api/oauth/authorize.mjs +7 -7
  158. package/dist/astro/routes/api/oauth/device/authorize.mjs +6 -6
  159. package/dist/astro/routes/api/oauth/device/code.mjs +9 -9
  160. package/dist/astro/routes/api/oauth/device/token.mjs +8 -8
  161. package/dist/astro/routes/api/oauth/register.mjs +4 -4
  162. package/dist/astro/routes/api/oauth/token/refresh.mjs +6 -6
  163. package/dist/astro/routes/api/oauth/token/revoke.mjs +6 -6
  164. package/dist/astro/routes/api/oauth/token.mjs +6 -6
  165. package/dist/astro/routes/api/openapi.json.mjs +4 -3
  166. package/dist/astro/routes/api/plugins/_pluginId_/_...path_.mjs +46 -31
  167. package/dist/astro/routes/api/redirects/404s/index.mjs +11 -10
  168. package/dist/astro/routes/api/redirects/404s/summary.mjs +11 -10
  169. package/dist/astro/routes/api/redirects/_id_.mjs +33 -29
  170. package/dist/astro/routes/api/redirects/index.mjs +33 -29
  171. package/dist/astro/routes/api/revisions/_revisionId_/index.mjs +2 -2
  172. package/dist/astro/routes/api/revisions/_revisionId_/restore.mjs +2 -2
  173. package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs +48 -43
  174. package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs +48 -43
  175. package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs +48 -43
  176. package/dist/astro/routes/api/schema/collections/_slug_/index.mjs +48 -43
  177. package/dist/astro/routes/api/schema/collections/index.mjs +48 -43
  178. package/dist/astro/routes/api/schema/index.mjs +14 -15
  179. package/dist/astro/routes/api/schema/orphans/_slug_.mjs +46 -42
  180. package/dist/astro/routes/api/schema/orphans/index.mjs +46 -42
  181. package/dist/astro/routes/api/search/enable.mjs +11 -10
  182. package/dist/astro/routes/api/search/index.mjs +10 -9
  183. package/dist/astro/routes/api/search/rebuild.mjs +11 -10
  184. package/dist/astro/routes/api/search/stats.mjs +6 -6
  185. package/dist/astro/routes/api/search/suggest.mjs +10 -9
  186. package/dist/astro/routes/api/sections/_slug_.mjs +32 -28
  187. package/dist/astro/routes/api/sections/index.mjs +32 -28
  188. package/dist/astro/routes/api/settings/email.mjs +4 -4
  189. package/dist/astro/routes/api/settings.mjs +32 -28
  190. package/dist/astro/routes/api/setup/admin-verify.mjs +14 -13
  191. package/dist/astro/routes/api/setup/admin.mjs +12 -11
  192. package/dist/astro/routes/api/setup/dev-bypass.mjs +31 -25
  193. package/dist/astro/routes/api/setup/dev-reset.mjs +2 -2
  194. package/dist/astro/routes/api/setup/index.mjs +29 -25
  195. package/dist/astro/routes/api/setup/status.mjs +3 -3
  196. package/dist/astro/routes/api/snapshot.mjs +8 -7
  197. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs +35 -31
  198. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs +35 -31
  199. package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs +35 -31
  200. package/dist/astro/routes/api/taxonomies/index.mjs +35 -31
  201. package/dist/astro/routes/api/themes/preview.mjs +5 -5
  202. package/dist/astro/routes/api/typegen.mjs +4 -4
  203. package/dist/astro/routes/api/well-known/auth.mjs +3 -3
  204. package/dist/astro/routes/api/well-known/oauth-authorization-server.mjs +3 -3
  205. package/dist/astro/routes/api/well-known/oauth-protected-resource.mjs +3 -3
  206. package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs +31 -27
  207. package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs +32 -28
  208. package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs +32 -28
  209. package/dist/astro/routes/api/widget-areas/_name_.mjs +29 -26
  210. package/dist/astro/routes/api/widget-areas/index.mjs +32 -28
  211. package/dist/astro/routes/api/widget-components.mjs +2 -2
  212. package/dist/astro/routes/robots.txt.mjs +8 -7
  213. package/dist/astro/routes/sitemap-_collection_.xml.mjs +23 -14
  214. package/dist/astro/routes/sitemap.xml.mjs +9 -8
  215. package/dist/astro/session-driver.d.mts +1 -1
  216. package/dist/astro/session-driver.mjs +2 -2
  217. package/dist/astro/types.d.mts +22 -13
  218. package/dist/{audit-BeNsSyfU.mjs → audit-B2pRxZ20.mjs} +1 -1
  219. package/dist/auth/providers/github.d.mts +1 -1
  220. package/dist/auth/providers/google.d.mts +1 -1
  221. package/dist/{auth-control-guard-Dr14I98m.mjs → auth-control-guard-D71jourk.mjs} +1 -1
  222. package/dist/{authorize-BLO0m7fW.mjs → authorize-ZXPGPwKn.mjs} +1 -1
  223. package/dist/{briefing-CkTee1ex.mjs → briefing-0rf-su3-.mjs} +90 -28
  224. package/dist/{briefing-DJX6irto.mjs → briefing-kRhegBoF.mjs} +2 -1
  225. package/dist/bundle-CEcdUa1s.mjs +602 -0
  226. package/dist/{byline-BVC1lV6G.mjs → byline-7xR185Ly.mjs} +30 -62
  227. package/dist/{byline-fields-Cj39WhXC.mjs → byline-fields-BKzA0fJU.mjs} +1 -1
  228. package/dist/{byline-fields-uJlygdzM.d.mts → byline-fields-Ckeqd1OY.d.mts} +88 -35
  229. package/dist/{byline-fields-cNrLJVRs.mjs → byline-fields-WN7RQT4q.mjs} +10 -4
  230. package/dist/{byline-registry-4v6tXMNX.mjs → byline-registry-Ba54M74c.mjs} +2 -2
  231. package/dist/{bylines-LN9XISRo.mjs → bylines-C-EL6dh3.mjs} +9 -3
  232. package/dist/{bylines-DwokOFj6.mjs → bylines-CmZFCMr0.mjs} +5 -5
  233. package/dist/{cache-Bac05gBd.mjs → cache-DkVCKGio.mjs} +2 -2
  234. package/dist/{chunks-CuUt7K50.mjs → chunks-ChGNDY8r.mjs} +1 -1
  235. package/dist/cli/index.d.mts +29 -1
  236. package/dist/cli/index.mjs +1466 -1763
  237. package/dist/cli/plugin-kit.d.mts +75 -0
  238. package/dist/cli/plugin-kit.mjs +4 -0
  239. package/dist/client/external-auth-headers.d.mts +1 -1
  240. package/dist/client/index.d.mts +27 -52
  241. package/dist/client/index.mjs +34 -6
  242. package/dist/client-factory-BDD9azPJ.mjs +233 -0
  243. package/dist/{comment-Beue8-15.mjs → comment-DFALgsJD.mjs} +13 -3
  244. package/dist/comment-reaction-C37bf99u.mjs +58 -0
  245. package/dist/{comments-DcjFIfqX.mjs → comments-B3NwDBxl.mjs} +1 -1
  246. package/dist/{content-CBxYGWfL.mjs → content-DJcAYFhz.mjs} +51 -34
  247. package/dist/content-refresh-B4ZCmxgd.mjs +1576 -0
  248. package/dist/{context-Df1xVYyr.mjs → context-DnpXcp6Y.mjs} +2 -2
  249. package/dist/{context-CQVNZaR8.mjs → context-fSCYLL3c.mjs} +125 -53
  250. package/dist/{context-route-helpers-B9wj8Rmh.mjs → context-route-helpers-CI8XzcsK.mjs} +2 -1
  251. package/dist/{cron-DxCAU_Sn.mjs → cron-B1SL_lsb.mjs} +7 -3
  252. package/dist/{dashboard-B7ZUNuyF.mjs → dashboard-D0nj5oWg.mjs} +4 -4
  253. package/dist/db/index.d.mts +3 -3
  254. package/dist/db/index.mjs +1 -1
  255. package/dist/db/libsql.d.mts +1 -1
  256. package/dist/db/postgres.d.mts +1 -1
  257. package/dist/db/sqlite.d.mts +1 -1
  258. package/dist/{device-flow-BZVGftqi.mjs → device-flow-BJe6VEhP.mjs} +5 -5
  259. package/dist/{placeholder-d54Qr_7n.mjs → enrich-Ck9tfMqe.mjs} +36 -9
  260. package/dist/{error-DCSuUAZW.mjs → error-CSVaQNZy.mjs} +5 -0
  261. package/dist/{experimental-workflows-CSMffP6q.mjs → experimental-workflows-GVhUgzEs.mjs} +1 -1
  262. package/dist/field-defs-cache-DL-T2XVS.mjs +49 -0
  263. package/dist/forgeway-seo-client-G5ddhVHd.mjs +456 -0
  264. package/dist/{fts-manager-B5l_qwrA.mjs → fts-manager-ewTGohf4.mjs} +1 -1
  265. package/dist/{hitl-requests-7NlzVeUA.mjs → hitl-requests-DEFj8e6u.mjs} +2 -2
  266. package/dist/{hitl-route-helpers-k---_H3-.mjs → hitl-route-helpers-C23JHaWz.mjs} +5 -4
  267. package/dist/import-CXXL5pip.mjs +1354 -0
  268. package/dist/index-DcnOCD1e.d.mts +375 -0
  269. package/dist/index.d.mts +15 -16
  270. package/dist/index.mjs +85 -70
  271. package/dist/{jsonld-DZ67souc.d.mts → jsonld-DzKbhRZ4.d.mts} +8 -4
  272. package/dist/{load-D9OiGr2m.mjs → load-CFtJRT3c.mjs} +1 -1
  273. package/dist/{loader--GOYux8M.mjs → loader-aWkkc1_o.mjs} +117 -31
  274. package/dist/{manifest-schema-qh2P7RDX.mjs → manifest-schema-uA6pRFXi.mjs} +38 -1
  275. package/dist/mcp-reviewed-executor-Dn52L_yY.mjs +558 -0
  276. package/dist/media/image-endpoint.d.mts +32 -0
  277. package/dist/media/image-endpoint.mjs +111 -0
  278. package/dist/media/index.d.mts +27 -2
  279. package/dist/media/index.mjs +5 -3
  280. package/dist/media/local-runtime.d.mts +15 -11
  281. package/dist/media/local-runtime.mjs +9 -7
  282. package/dist/{media-CbKyYukG.mjs → media-CVMOoywq.mjs} +3 -1
  283. package/dist/{media-allowlist-BYxJIcTO.mjs → media-allowlist-zDNJmXCo.mjs} +1 -1
  284. package/dist/media-url-BdoLPvg8.mjs +20 -0
  285. package/dist/{menus-C7F0sCrC.mjs → menus-CCG2z5um.mjs} +80 -15
  286. package/dist/{menus-BZbXf-ej.mjs → menus-CmyIkRG5.mjs} +19 -5
  287. package/dist/{normalize-ByemhhfW.mjs → normalize-Cyt7JdF7.mjs} +8 -1
  288. package/dist/{oauth-authorization-DF-LCsIA.mjs → oauth-authorization-B9H7X85L.mjs} +5 -5
  289. package/dist/{oauth-clients-Du-V0fEm.mjs → oauth-clients-Dwl32-Uj.mjs} +2 -2
  290. package/dist/object-cache/memory.d.mts +14 -0
  291. package/dist/object-cache/memory.mjs +55 -0
  292. package/dist/object-cache-D51qOseS.mjs +419 -0
  293. package/dist/output-DhBe5_Pi.mjs +68 -0
  294. package/dist/page/index.d.mts +10 -3
  295. package/dist/page/index.mjs +2 -2
  296. package/dist/{parse-CneSgl7-.mjs → parse-i15EFSAE.mjs} +1 -1
  297. package/dist/{parser-DxfsARXL.mjs → parser-06LLLL4E.mjs} +151 -9
  298. package/dist/{placeholder-CXfoCtCd.d.mts → placeholder-DkWkXfDI.d.mts} +12 -4
  299. package/dist/plugin-utils.d.mts +8 -9
  300. package/dist/plugins/adapt-sandbox-entry.d.mts +8 -9
  301. package/dist/plugins/adapt-sandbox-entry.mjs +13 -2
  302. package/dist/{plugins-DzfqRREq.mjs → plugins-CPA2PtfY.mjs} +919 -66
  303. package/dist/{transport-LSdZVXHF.mjs → portable-text-BASHceim.mjs} +1 -134
  304. package/dist/portable-text-E79LyjGo.d.mts +45 -0
  305. package/dist/{preview-C-3YTX2U.mjs → preview-BjedZm8G.mjs} +4 -3
  306. package/dist/process-cache-CCDgti7j.mjs +106 -0
  307. package/dist/project-env-DKibmuP8.mjs +95 -0
  308. package/dist/{provider-loader-9it4vd6L.d.mts → provider-loader-DC2JdWeO.d.mts} +1 -1
  309. package/dist/{public-url-B4xV4rGa.d.mts → public-url-DQJCnYi9.d.mts} +1 -1
  310. package/dist/publication-authorization-RKiHXKtq.mjs +985 -0
  311. package/dist/{query-CZ3TH_Uu.mjs → query-C2U5u5_p.mjs} +11 -6
  312. package/dist/{query-Ds0EnMFX.mjs → query-DEv5x6yB.mjs} +281 -76
  313. package/dist/{rate-limit-i0G3IAOX.mjs → rate-limit-DglsAJSw.mjs} +2 -2
  314. package/dist/{redirect-CEACczxo.mjs → redirect-ubhEqQCQ.mjs} +2 -2
  315. package/dist/{redirects-ocRJmQHP.mjs → redirects-Bhpm8bRe.mjs} +35 -19
  316. package/dist/{redirects-DYj1yPxs.mjs → redirects-xs2yahLq.mjs} +47 -24
  317. package/dist/{registry-D7HACema.mjs → registry-BYYyb2tF.mjs} +148 -81
  318. package/dist/request-context.d.mts +2 -0
  319. package/dist/{request-meta-DAb6xaP9.mjs → request-meta-CFe1tW2M.mjs} +1 -1
  320. package/dist/review-payload-BysRWpxS.mjs +111 -0
  321. package/dist/{review-requests-BW2NxY-l.mjs → review-requests-CTWGnWUt.mjs} +1 -1
  322. package/dist/review-requests-D42VEP1l.mjs +142 -0
  323. package/dist/review-route-helpers-C31vO6SI.mjs +41 -0
  324. package/dist/runner-BgmttQmD.mjs +7444 -0
  325. package/dist/{runner-09sTqtv0.d.mts → runner-D6hzs8L9.d.mts} +1 -1
  326. package/dist/runtime.d.mts +9 -10
  327. package/dist/runtime.mjs +3 -3
  328. package/dist/schema-DUtnZxjZ.mjs +8 -0
  329. package/dist/{search-Gdrqj582.mjs → search-DUKgZUlm.mjs} +5 -3
  330. package/dist/{secrets-CeGpBFV2.mjs → secrets-ZV5rd8yV.mjs} +14 -11
  331. package/dist/{sections-BOjU13Y-.mjs → sections-DvFgsnda.mjs} +2 -2
  332. package/dist/seed/index.d.mts +2 -2
  333. package/dist/seed/index.mjs +21 -18
  334. package/dist/seo/index.d.mts +1 -1
  335. package/dist/seo/index.mjs +3 -12
  336. package/dist/{seo-5lJOtB5J.mjs → seo-BLszyJxd.mjs} +22 -4
  337. package/dist/{seo-CLj8lS7Q.mjs → seo-BU8MLCS9.mjs} +5 -2
  338. package/dist/{seo-contributions-CqVvReEj.mjs → seo-contributions-GnCuL1ML.mjs} +11 -3
  339. package/dist/{service-jGlhrICs.mjs → service-FL3fB0Rx.mjs} +2 -2
  340. package/dist/session-user-Ct6GBLvn.mjs +22 -0
  341. package/dist/{settings-CUXOxzsT.mjs → settings-BECcAIRH.mjs} +28 -55
  342. package/dist/{settings-DlBsT2VS.mjs → settings-EzADu-dd.mjs} +2 -2
  343. package/dist/{setup-complete-BRrdPYjZ.mjs → setup-complete-Da0axZEE.mjs} +1 -1
  344. package/dist/{site-activity-DONFrMBJ.mjs → site-activity-h8smOlYI.mjs} +1 -1
  345. package/dist/{site-context-C8Az_P_I.mjs → site-context-B8T1kpUP.mjs} +337 -530
  346. package/dist/{site-url-DIMD68go.mjs → site-url-DJEid0ml.mjs} +1 -1
  347. package/dist/stable-hash-DshcXvRE.mjs +19 -0
  348. package/dist/status-NqWOSFAD.mjs +21 -0
  349. package/dist/storage/local.d.mts +1 -1
  350. package/dist/storage/local.mjs +1 -1
  351. package/dist/storage/s3.d.mts +1 -1
  352. package/dist/storage/s3.mjs +1 -1
  353. package/dist/{taxonomies-D9Sw4wWM.mjs → taxonomies-BiM9NtgW.mjs} +36 -29
  354. package/dist/taxonomies-DSnY5nOa.mjs +443 -0
  355. package/dist/{taxonomy-B169Nm6B.mjs → taxonomy-0k_vRVsD.mjs} +44 -9
  356. package/dist/transport-C46KHLMP.mjs +134 -0
  357. package/dist/types-A8fPOJnl.mjs +69 -0
  358. package/dist/types-BLQCz46p.d.mts +118 -0
  359. package/dist/{types-CwawBUTa.d.mts → types-B_FlxIIl.d.mts} +4 -1
  360. package/dist/{types-CSgR9nQB.mjs → types-ChxYDRvx.mjs} +1 -1
  361. package/dist/{types-GaCtZ1k9.d.mts → types-Cw0PeCT_.d.mts} +18 -0
  362. package/dist/types-DuQn1G7-.d.mts +2973 -0
  363. package/dist/{runtime-C4-2lSFg.d.mts → types-DwoUifGE.d.mts} +5668 -3000
  364. package/dist/{types-DRIKLmJI.d.mts → types-opjX_kz6.d.mts} +17 -2
  365. package/dist/ui/server-runtime.d.mts +13 -15
  366. package/dist/ui/server-runtime.mjs +24 -20
  367. package/dist/url-guoXQQcV.mjs +33 -0
  368. package/dist/{user-DTLoZs16.mjs → user-BH-n01y3.mjs} +2 -2
  369. package/dist/{utils-B8hBJ9Oz.mjs → utils-D1SrKGtP.mjs} +129 -7
  370. package/dist/{validate-DzjCdy6v.d.mts → validate-CbVFoJgc.d.mts} +65 -8
  371. package/dist/{validate-DWmPO6oj.mjs → validate-D1HL-oLR.mjs} +11 -6
  372. package/dist/version-C3iVRuaF.mjs +6 -0
  373. package/dist/{widgets-BpJ8EpPd.mjs → widgets-BZrLrNgS.mjs} +46 -43
  374. package/dist/{wordpress-slugs-DHNR9LpG.mjs → wordpress-slugs-C3PWcowq.mjs} +1 -1
  375. package/dist/{zod-generator-K91-g665.mjs → zod-generator-C7AsLpSB.mjs} +42 -14
  376. package/package.json +38 -8
  377. package/src/components/Block.astro +50 -0
  378. package/src/components/Comments.astro +143 -1
  379. package/src/components/DinewayHead.astro +19 -2
  380. package/src/components/DinewayImage.astro +66 -33
  381. package/src/components/DinewayMedia.astro +1 -2
  382. package/src/components/Image.astro +85 -40
  383. package/src/components/InlinePortableTextEditor.tsx +12 -2
  384. package/src/components/JsonLdScript.astro +9 -0
  385. package/src/components/LiveSearch.astro +40 -4
  386. package/src/components/index.ts +4 -0
  387. package/src/components/live-search-routing.ts +30 -0
  388. package/src/components/portable-text-text-align.ts +15 -0
  389. package/src/ui.ts +2 -0
  390. package/dist/entity-aliases-4y93Yjuc.mjs +0 -51
  391. package/dist/import-4YBXbDkI.mjs +0 -684
  392. package/dist/index-CZiWCQDp.d.mts +0 -227
  393. package/dist/review-requests-Qum4713s.mjs +0 -79
  394. package/dist/runner-DzIpHGND.mjs +0 -2836
  395. package/dist/schema-Bsi-VpYv.mjs +0 -8
  396. package/dist/taxonomies-CZ-_DitR.mjs +0 -327
  397. package/dist/types-CuJOqHfM.d.mts +0 -758
  398. package/dist/types-DSPGWjxO.d.mts +0 -1247
  399. package/dist/types-nP9vGUFq.d.mts +0 -56
  400. package/dist/version-C4gfn0PJ.mjs +0 -6
  401. /package/dist/{adapters-OQCImOL7.d.mts → adapters-BiRymx02.d.mts} +0 -0
  402. /package/dist/{api-tokens-CYUoFGo7.mjs → api-tokens-Ypaly90d.mjs} +0 -0
  403. /package/dist/{challenge-store-DFxX0_15.mjs → challenge-store-D5pSY2S1.mjs} +0 -0
  404. /package/dist/{components--pg6zBvu.mjs → components-DImzlLhb.mjs} +0 -0
  405. /package/dist/{context-types-r8oFvyOq.mjs → context-types-eBuMDAg-.mjs} +0 -0
  406. /package/dist/{default-B6iaLvP7.mjs → default-D4Vygcy_.mjs} +0 -0
  407. /package/dist/{email-console-BOVqIYpB.mjs → email-console-Bp0r68iF.mjs} +0 -0
  408. /package/dist/{escape-BDgouFFY.mjs → escape-DN4Qmjsl.mjs} +0 -0
  409. /package/dist/{hash-BPmX6P8I.mjs → hash-mxxx2oPW.mjs} +0 -0
  410. /package/dist/{mime-CbKsKDCB.mjs → mime-C0vOHFm7.mjs} +0 -0
  411. /package/dist/{mode-CZqCF9dZ.mjs → mode-C8yZnIlR.mjs} +0 -0
  412. /package/dist/{oauth-state-store-qncPB_IU.mjs → oauth-state-store-CndT35iw.mjs} +0 -0
  413. /package/dist/{oauth-user-lookup-BFjWF8wK.mjs → oauth-user-lookup-CMehAaKs.mjs} +0 -0
  414. /package/dist/{options-LsPjZlqD.mjs → options-DQPTH5n0.mjs} +0 -0
  415. /package/dist/{passkey-config-DzHQK90v.mjs → passkey-config-NYukYGed.mjs} +0 -0
  416. /package/dist/{patterns-DKAX6oqN.mjs → patterns-CoqlXUvk.mjs} +0 -0
  417. /package/dist/{provider-loader-DzUxejk7.mjs → provider-loader-BtfrrzfD.mjs} +0 -0
  418. /package/dist/{public-url-B_m9IwdV.mjs → public-url-Cp6hyjVR.mjs} +0 -0
  419. /package/dist/{redirect-BjIBtDWY.mjs → redirect-DrbEmU9a.mjs} +0 -0
  420. /package/dist/{request-cache-ho99schz.mjs → request-cache-CBFjCwSt.mjs} +0 -0
  421. /package/dist/{resolve-DTuDyYKs.mjs → resolve-DE71WcL9.mjs} +0 -0
  422. /package/dist/{setup-nonce-pyGfc9hV.mjs → setup-nonce-BtkKnvxQ.mjs} +0 -0
  423. /package/dist/{sidecar-client-mJxwayYN.mjs → sidecar-client-Ctzfyyp-.mjs} +0 -0
  424. /package/dist/{slugify-BqebcqBg.mjs → slugify-KSsVD_D3.mjs} +0 -0
  425. /package/dist/{ssrf-DiKqWd3N.mjs → ssrf-FJqwQzj4.mjs} +0 -0
  426. /package/dist/{tokens-SLmgowfd.mjs → tokens-BDQU29Vd.mjs} +0 -0
  427. /package/dist/{transaction-CFLhEOuH.mjs → transaction-0LEAAy8R.mjs} +0 -0
  428. /package/dist/{transport-BnsNxh2l.d.mts → transport-D9pKAzFP.d.mts} +0 -0
  429. /package/dist/{trusted-proxy-BgIIcbsN.mjs → trusted-proxy-Dm7Mxvt6.mjs} +0 -0
  430. /package/dist/{types-CJ8DkL0q.mjs → types-B7TDDFMG.mjs} +0 -0
  431. /package/dist/{types-Dryvv7LH.d.mts → types-g0zMtraY.d.mts} +0 -0
  432. /package/dist/{types-Cg276-3z.mjs → types-mVVgRPaU.mjs} +0 -0
  433. /package/dist/{types-DZpT-PnG.d.mts → types-wFu80FrO.d.mts} +0 -0
  434. /package/dist/{url-w7Mp5qAD.mjs → url-EMAguGVk.mjs} +0 -0
@@ -0,0 +1,419 @@
1
+ import { getRequestContext } from "./request-context.mjs";
2
+ import { t as after } from "./after-BfniwgIf.mjs";
3
+
4
+ //#region src/object-cache/codec.ts
5
+ /**
6
+ * Object-cache serialization codec.
7
+ *
8
+ * Cached values are JSON, with one extension: `Date` instances are preserved
9
+ * across the round-trip. Dineway content entries carry `Date` objects for the
10
+ * system timestamp columns (`createdAt`, `updatedAt`, `publishedAt`,
11
+ * `scheduledAt`) and on `cacheHint.lastModified`; plain `JSON.stringify` would
12
+ * silently flatten those to ISO strings, so a value read from cache would no
13
+ * longer be `=== instanceof Date` and downstream `value instanceof Date`
14
+ * branches (cursor encoding, scheduled-visibility checks) would diverge from a
15
+ * fresh database read.
16
+ *
17
+ * Functions and symbol-keyed properties are NOT preserved — callers that cache
18
+ * values carrying either (e.g. content entries with their `.edit` proxy and
19
+ * the non-enumerable `CURSOR_RAW_VALUES` symbol) must reduce to a serializable
20
+ * snapshot before caching and rebuild the non-serializable parts on read. See
21
+ * `query.ts` content snapshot helpers.
22
+ */
23
+ /** Tag used to mark a serialized `Date`. Deliberately unlikely to collide. */
24
+ const DATE_TAG = "$$dinewayDate";
25
+ function isTaggedDate(value) {
26
+ if (typeof value !== "object" || value === null) return false;
27
+ return Object.keys(value).length === 1 && typeof value[DATE_TAG] === "string";
28
+ }
29
+ /**
30
+ * Serialize a value to a cache string, preserving `Date` instances.
31
+ *
32
+ * Uses the JSON replacer's `this` binding to inspect the *original* property
33
+ * value: `JSON.stringify` invokes `Date.prototype.toJSON` before the replacer
34
+ * sees it, so by the time `value` arrives it is already an ISO string. Reading
35
+ * `this[key]` recovers the live `Date` so we can tag it.
36
+ */
37
+ function encode(value) {
38
+ return JSON.stringify(value, function(key, val) {
39
+ const original = this[key];
40
+ if (original instanceof Date) return { [DATE_TAG]: original.toISOString() };
41
+ return val;
42
+ });
43
+ }
44
+ /**
45
+ * Parse a cache string produced by {@link encode}, rehydrating tagged `Date`s.
46
+ *
47
+ * Returns `undefined` if the input is not valid JSON (treated as a cache miss
48
+ * by the read-through layer rather than throwing).
49
+ */
50
+ function decode(raw) {
51
+ try {
52
+ return JSON.parse(raw, (_key, value) => {
53
+ if (isTaggedDate(value)) return new Date(value[DATE_TAG]);
54
+ return value;
55
+ });
56
+ } catch {
57
+ return;
58
+ }
59
+ }
60
+
61
+ //#endregion
62
+ //#region src/object-cache/index.ts
63
+ /**
64
+ * Object cache — distributed read-through query cache.
65
+ *
66
+ * Layering (per query):
67
+ *
68
+ * requestCached → in-request dedupe (per render, WeakMap on ALS context)
69
+ * cachedQuery → THIS layer: object-cache L2, epoch-keyed
70
+ * database → source of truth
71
+ *
72
+ * Optional and off by default: when no `objectCache` descriptor is configured,
73
+ * `virtual:dineway/object-cache` exports `createObjectCache = undefined`,
74
+ * {@link getBackend} resolves to `null`, and {@link cachedQuery} is a
75
+ * transparent passthrough to its `load` function. Configure with
76
+ * `memoryCache()` (Node/local) or another compatible backend descriptor from an
77
+ * extension package.
78
+ *
79
+ * Invalidation is epoch-based: each cache key embeds a per-namespace epoch
80
+ * ("last changed" marker) read from the backend. A write calls
81
+ * {@link invalidateObjectCache}, which stamps the namespace epoch to
82
+ * `Date.now()`; every previously-stored key for that namespace is instantly
83
+ * orphaned and reclaimed by its TTL. This is O(1) and needs no key
84
+ * enumeration.
85
+ *
86
+ * The singleton backend/config and the per-isolate epoch cache live on
87
+ * `globalThis` behind `Symbol.for` keys so Vite SSR chunk duplication can't
88
+ * fork them (same pattern as `request-context.ts`).
89
+ */
90
+ const DEFAULT_KEY_PREFIX = "dineway";
91
+ const DEFAULT_TTL_SECONDS = 3600;
92
+ const DEFAULT_REVALIDATE_MS = 1e3;
93
+ const DEFAULT_TIMEOUT_MS = 2e3;
94
+ /**
95
+ * Race a backend operation against a timeout so a stalled call that never
96
+ * resolves *and* never rejects degrades to a rejection instead of hanging the
97
+ * isolate. A rejection is benign: callers already treat a failed read as a
98
+ * cache miss / last-known epoch.
99
+ */
100
+ function withTimeout(promise, ms, label) {
101
+ if (!(ms > 0)) return promise;
102
+ let timer;
103
+ const timeout = new Promise((_resolve, reject) => {
104
+ timer = setTimeout(() => {
105
+ reject(/* @__PURE__ */ new Error(`object-cache ${label} timed out after ${ms}ms`));
106
+ }, ms);
107
+ });
108
+ return Promise.race([promise, timeout]).finally(() => clearTimeout(timer));
109
+ }
110
+ function isMissingVirtualObjectCache(error) {
111
+ return error instanceof Error && error.message.includes("virtual:dineway/object-cache");
112
+ }
113
+ /**
114
+ * Extra time past the configured read timeout before an in-flight epoch read
115
+ * is presumed dead. A live owner's read settles within `timeout` (enforced by
116
+ * {@link withTimeout}), so the grace only needs to absorb scheduling jitter.
117
+ */
118
+ const EPOCH_READ_GRACE_MS = 1e3;
119
+ /**
120
+ * How long an in-flight epoch read may be trusted. A read older than this can
121
+ * only exist because its owning request was cancelled mid-await — on workerd
122
+ * a cancelled request's continuations never run, *including the timeout's own
123
+ * `setTimeout` callback*, so the shared promise never settles and is never
124
+ * replaced. With the timeout disabled (`timeout: 0`) the default is used as
125
+ * the deadline; the worst case of guessing too short is one duplicate
126
+ * backend read.
127
+ */
128
+ function epochReadDeadline() {
129
+ return (holder.config.timeout > 0 ? holder.config.timeout : DEFAULT_TIMEOUT_MS) + EPOCH_READ_GRACE_MS;
130
+ }
131
+ /**
132
+ * Await another request's in-flight epoch read, bounded by the waiter's own
133
+ * timer. The bare promise must never be awaited across requests: if the
134
+ * owning request is cancelled, the promise never settles (see
135
+ * {@link epochReadDeadline}) and an unguarded waiter hangs until the isolate
136
+ * is evicted. The race timer below belongs to the *waiter's* request context
137
+ * and therefore always fires; on timeout the waiter degrades to `fallback`
138
+ * (the last known epoch), the same contract as a failed backend read.
139
+ */
140
+ function raceInFlightEpochRead(promise, ms, fallback) {
141
+ let timer;
142
+ const timeout = new Promise((resolve) => {
143
+ timer = setTimeout(resolve, Math.max(ms, 1), fallback);
144
+ });
145
+ return Promise.race([promise, timeout]).finally(() => clearTimeout(timer));
146
+ }
147
+ const BACKEND_KEY = Symbol.for("dineway:object-cache:backend");
148
+ const EPOCH_KEY = Symbol.for("dineway:object-cache:epochs");
149
+ const PENDING_KEY = Symbol.for("dineway:object-cache:pending-bumps");
150
+ const g = globalThis;
151
+ const holder = g[BACKEND_KEY] ?? (() => {
152
+ const h = {
153
+ initialized: false,
154
+ backend: null,
155
+ initPromise: null,
156
+ config: {
157
+ keyPrefix: DEFAULT_KEY_PREFIX,
158
+ defaultTtl: DEFAULT_TTL_SECONDS,
159
+ revalidate: DEFAULT_REVALIDATE_MS,
160
+ timeout: DEFAULT_TIMEOUT_MS
161
+ }
162
+ };
163
+ g[BACKEND_KEY] = h;
164
+ return h;
165
+ })();
166
+ const epochCache = g[EPOCH_KEY] ?? (() => {
167
+ const m = /* @__PURE__ */ new Map();
168
+ g[EPOCH_KEY] = m;
169
+ return m;
170
+ })();
171
+ /** Namespaces with a backend epoch write already scheduled this tick. */
172
+ const pendingBumps = g[PENDING_KEY] ?? (() => {
173
+ const s = /* @__PURE__ */ new Set();
174
+ g[PENDING_KEY] = s;
175
+ return s;
176
+ })();
177
+ /**
178
+ * Resolve (once per isolate) the configured object-cache backend.
179
+ *
180
+ * Loads `virtual:dineway/object-cache`, which exports `createObjectCache`
181
+ * (`undefined` when no cache is configured) and the serialized
182
+ * `objectCacheConfig`. Returns `null` when the cache is disabled.
183
+ */
184
+ async function getBackend() {
185
+ if (holder.initialized) return holder.backend;
186
+ if (holder.initPromise) return holder.initPromise;
187
+ holder.initPromise = (async () => {
188
+ try {
189
+ const mod = await import("virtual:dineway/object-cache");
190
+ const config = mod.objectCacheConfig ?? {};
191
+ holder.config = {
192
+ keyPrefix: typeof config.keyPrefix === "string" && config.keyPrefix.length > 0 ? config.keyPrefix : DEFAULT_KEY_PREFIX,
193
+ defaultTtl: typeof config.defaultTtl === "number" && config.defaultTtl > 0 ? config.defaultTtl : DEFAULT_TTL_SECONDS,
194
+ revalidate: typeof config.revalidate === "number" && config.revalidate >= 0 ? config.revalidate : DEFAULT_REVALIDATE_MS,
195
+ timeout: typeof config.timeout === "number" && config.timeout >= 0 ? config.timeout : DEFAULT_TIMEOUT_MS
196
+ };
197
+ holder.backend = typeof mod.createObjectCache === "function" ? mod.createObjectCache(config) : null;
198
+ } catch (error) {
199
+ if (import.meta.env?.DEV && !isMissingVirtualObjectCache(error)) console.warn("[object-cache] backend unavailable:", error);
200
+ holder.backend = null;
201
+ }
202
+ holder.initialized = true;
203
+ holder.initPromise = null;
204
+ return holder.backend;
205
+ })();
206
+ return holder.initPromise;
207
+ }
208
+ /** Build the backend key for a namespace's epoch anchor. */
209
+ function epochKey(namespace) {
210
+ return `${holder.config.keyPrefix}:epoch:${namespace}`;
211
+ }
212
+ /**
213
+ * Build the (epoch-independent) backend key for a cached value.
214
+ *
215
+ * The key is stable across invalidations — the namespace epochs are stored
216
+ * *inside* the value envelope and validated on read, not baked into the key.
217
+ * This lets the value and the epochs be fetched in one parallel round-trip
218
+ * (instead of "read epoch, then read value"), and means an invalidated value
219
+ * is overwritten in place rather than orphaned under a dead epoch-keyed name.
220
+ */
221
+ function valueKey(namespaces, key) {
222
+ return `${holder.config.keyPrefix}:${namespaces.join(",")}:${key}`;
223
+ }
224
+ function epochsMatch(stored, current) {
225
+ if (stored.length !== current.length) return false;
226
+ for (let i = 0; i < stored.length; i++) if (stored[i] !== current[i]) return false;
227
+ return true;
228
+ }
229
+ /**
230
+ * Requests that must always read live data and never populate the cache:
231
+ * visual edit mode, preview tokens, and isolated databases (playground / DO
232
+ * preview, whose schema and content diverge from the configured site).
233
+ */
234
+ function shouldBypass() {
235
+ const ctx = getRequestContext();
236
+ if (!ctx) return false;
237
+ return ctx.editMode === true || ctx.preview !== void 0 || ctx.dbIsIsolated === true;
238
+ }
239
+ /**
240
+ * Read the current epoch for `namespace`, reusing an isolate-cached value for
241
+ * up to `revalidate` ms. A missing epoch (never bumped) is treated as `0`.
242
+ *
243
+ * Backend errors and stalls are non-fatal: the read is bounded by a timeout,
244
+ * and on failure we fall back to the last known epoch (or `0`), so a flaky or
245
+ * hung cache degrades to "serve whatever's keyed" rather than throwing or
246
+ * hanging.
247
+ */
248
+ async function getEpoch(namespace, backend) {
249
+ const now = Date.now();
250
+ const cached = epochCache.get(namespace);
251
+ if (cached && now - cached.at < holder.config.revalidate) return cached.value;
252
+ if (cached?.promise) {
253
+ const age = now - (cached.promiseAt ?? 0);
254
+ const deadline = epochReadDeadline();
255
+ if (age < deadline) return raceInFlightEpochRead(cached.promise, deadline - age, cached.value);
256
+ }
257
+ const promise = (async () => {
258
+ let value;
259
+ try {
260
+ const raw = await withTimeout(backend.get(epochKey(namespace)), holder.config.timeout, "epoch read");
261
+ const parsed = raw === null ? 0 : Number(raw);
262
+ value = Number.isFinite(parsed) ? parsed : 0;
263
+ } catch {
264
+ value = cached?.value ?? 0;
265
+ }
266
+ const merged = Math.max(value, epochCache.get(namespace)?.value ?? 0);
267
+ epochCache.set(namespace, {
268
+ value: merged,
269
+ at: Date.now()
270
+ });
271
+ return merged;
272
+ })();
273
+ after(() => promise.then(() => void 0, () => void 0));
274
+ epochCache.set(namespace, {
275
+ value: cached?.value ?? 0,
276
+ at: cached?.at ?? 0,
277
+ promise,
278
+ promiseAt: now
279
+ });
280
+ return promise;
281
+ }
282
+ /**
283
+ * Distributed read-through cache around `load`.
284
+ *
285
+ * `T` must be the value as it should be *stored* — i.e. JSON-serializable with
286
+ * the codec's `Date` support, carrying no functions or symbol-keyed props.
287
+ * Callers caching richer objects (content entries) reduce to a serializable
288
+ * snapshot here and rebuild on the way out; see `query.ts`.
289
+ *
290
+ * On a miss or when the cache is disabled/bypassed, this is equivalent to
291
+ * `await load()`. Backend errors never propagate: a failing `get` is a miss, a
292
+ * failing `set` is dropped.
293
+ */
294
+ async function cachedQuery(options) {
295
+ const backend = await getBackend();
296
+ if (!backend || shouldBypass()) return options.load();
297
+ const namespaces = typeof options.namespace === "string" ? [options.namespace] : options.namespace;
298
+ const fullKey = valueKey(namespaces, options.key);
299
+ const epochsPromise = Promise.all(namespaces.map((ns) => getEpoch(ns, backend)));
300
+ const rawPromise = withTimeout(backend.get(fullKey), holder.config.timeout, "read").catch(() => null);
301
+ const currentEpochs = await epochsPromise;
302
+ const raw = await rawPromise;
303
+ if (raw !== null) {
304
+ const decoded = decode(raw);
305
+ if (decoded !== void 0) {
306
+ const envelope = decoded;
307
+ if (epochsMatch(envelope.e, currentEpochs)) return envelope.v;
308
+ }
309
+ }
310
+ const value = await options.load();
311
+ if (options.cacheable ? options.cacheable(value) : true) {
312
+ const ttl = options.ttl ?? holder.config.defaultTtl;
313
+ after(async () => {
314
+ try {
315
+ const encoded = encode({
316
+ e: currentEpochs,
317
+ v: value
318
+ });
319
+ await backend.set(fullKey, encoded, ttl);
320
+ } catch (error) {
321
+ if (import.meta.env?.DEV) console.warn("[object-cache] set failed:", error);
322
+ }
323
+ });
324
+ }
325
+ return value;
326
+ }
327
+ /** Whether object-cache reads are active for the current request. */
328
+ async function isObjectCacheActive() {
329
+ return await getBackend() !== null && !shouldBypass();
330
+ }
331
+ /**
332
+ * Invalidate every cached value in `namespace` by bumping its epoch.
333
+ *
334
+ * Sync and non-blocking: the local epoch is stamped immediately (so the
335
+ * writing isolate is instantly consistent) and the backend write is deferred
336
+ * via `after`. Other isolates pick up the new epoch within their `revalidate`
337
+ * window. No-ops when the cache is disabled.
338
+ */
339
+ function invalidateObjectCache(namespace) {
340
+ const prev = epochCache.get(namespace)?.value ?? 0;
341
+ const stamp = Math.max(prev + 1, Date.now());
342
+ epochCache.set(namespace, {
343
+ value: stamp,
344
+ at: stamp
345
+ });
346
+ if (pendingBumps.has(namespace)) return;
347
+ pendingBumps.add(namespace);
348
+ after(async () => {
349
+ pendingBumps.delete(namespace);
350
+ try {
351
+ const backend = await getBackend();
352
+ if (!backend) return;
353
+ const latest = epochCache.get(namespace)?.value ?? stamp;
354
+ await backend.set(epochKey(namespace), String(latest));
355
+ } catch (error) {
356
+ console.error("[object-cache] epoch bump failed for", namespace, error);
357
+ }
358
+ });
359
+ }
360
+ /**
361
+ * Fixed namespaces for data shared across collections. Content reads fold the
362
+ * `BYLINES` and `TAXONOMIES` epochs into their keys (via {@link cachedQuery})
363
+ * because entries hydrate byline and taxonomy-term data — so renaming an
364
+ * author or a category correctly invalidates every cached entry that displays
365
+ * it, without tracking which collections reference it.
366
+ */
367
+ const CacheNamespace = {
368
+ SETTINGS: "settings",
369
+ MENUS: "menus",
370
+ TAXONOMIES: "taxonomies",
371
+ BYLINES: "bylines",
372
+ SCHEMA: "schema",
373
+ COMMENTS: "comments"
374
+ };
375
+ /** Namespace for a content collection's cached queries. */
376
+ function contentNamespace(collection) {
377
+ return `content:${collection}`;
378
+ }
379
+ /**
380
+ * Namespaces a content read depends on: the collection itself plus the shared
381
+ * byline/taxonomy data folded into each entry.
382
+ */
383
+ function contentNamespaces(collection) {
384
+ return [
385
+ contentNamespace(collection),
386
+ CacheNamespace.BYLINES,
387
+ CacheNamespace.TAXONOMIES
388
+ ];
389
+ }
390
+ /**
391
+ * Invalidate all cached reads (list + entry) for a content collection.
392
+ * Call from every write path that mutates rows in `ec_<collection>`.
393
+ */
394
+ function invalidateCollectionCache(collection) {
395
+ invalidateObjectCache(contentNamespace(collection));
396
+ }
397
+ /** Invalidate cached taxonomy definitions/terms and all content that hydrates them. */
398
+ function invalidateTaxonomyObjectCache() {
399
+ invalidateObjectCache(CacheNamespace.TAXONOMIES);
400
+ }
401
+ /** Invalidate cached bylines and all content that hydrates them. */
402
+ function invalidateBylineObjectCache() {
403
+ invalidateObjectCache(CacheNamespace.BYLINES);
404
+ }
405
+ /** Invalidate cached navigation menus. */
406
+ function invalidateMenuObjectCache() {
407
+ invalidateObjectCache(CacheNamespace.MENUS);
408
+ }
409
+ /** Invalidate cached collection schema/metadata reads (e.g. getCollectionInfo). */
410
+ function invalidateSchemaObjectCache() {
411
+ invalidateObjectCache(CacheNamespace.SCHEMA);
412
+ }
413
+ /** Invalidate cached public comment reads. */
414
+ function invalidateCommentObjectCache() {
415
+ invalidateObjectCache(CacheNamespace.COMMENTS);
416
+ }
417
+
418
+ //#endregion
419
+ export { invalidateBylineObjectCache as a, invalidateMenuObjectCache as c, invalidateTaxonomyObjectCache as d, isObjectCacheActive as f, contentNamespaces as i, invalidateObjectCache as l, cachedQuery as n, invalidateCollectionCache as o, contentNamespace as r, invalidateCommentObjectCache as s, CacheNamespace as t, invalidateSchemaObjectCache as u };
@@ -0,0 +1,68 @@
1
+ import { consola as consola$1 } from "consola";
2
+
3
+ //#region src/cli/output.ts
4
+ /**
5
+ * Redirect consola output to stderr so it doesn't pollute JSON on stdout.
6
+ *
7
+ * Call this early in any command that uses `output()` with `--json`.
8
+ * Safe to call multiple times — only applies the redirect once.
9
+ */
10
+ function configureOutputMode(args) {
11
+ if (args.json || !process.stdout.isTTY) {
12
+ consola$1.options.stdout = process.stderr;
13
+ consola$1.options.stderr = process.stderr;
14
+ }
15
+ }
16
+ /**
17
+ * Output data as JSON or pretty-printed.
18
+ *
19
+ * If stdout is not a TTY or --json is set, outputs JSON.
20
+ * Otherwise, outputs a formatted representation.
21
+ */
22
+ function output(data, args) {
23
+ if (args.json || !process.stdout.isTTY) process.stdout.write(JSON.stringify(data, null, 2) + "\n");
24
+ else prettyPrint(data);
25
+ }
26
+ function prettyPrint(data, indent = 0) {
27
+ if (data === null || data === void 0) {
28
+ consola$1.log("(empty)");
29
+ return;
30
+ }
31
+ if (Array.isArray(data)) {
32
+ if (data.length === 0) {
33
+ consola$1.log("(no items)");
34
+ return;
35
+ }
36
+ for (const item of data) {
37
+ prettyPrint(item, indent);
38
+ if (indent === 0) consola$1.log("---");
39
+ }
40
+ return;
41
+ }
42
+ if (typeof data === "object") {
43
+ const obj = Object(data);
44
+ if ("items" in obj && Array.isArray(obj.items)) {
45
+ prettyPrint(obj.items, indent);
46
+ if (typeof obj.nextCursor === "string") consola$1.log(`\nNext cursor: ${obj.nextCursor}`);
47
+ return;
48
+ }
49
+ const prefix = " ".repeat(indent);
50
+ for (const [key, value] of Object.entries(obj)) {
51
+ if (value === null || value === void 0) continue;
52
+ if (typeof value === "object" && !Array.isArray(value)) {
53
+ consola$1.log(`${prefix}${key}:`);
54
+ prettyPrint(value, indent + 1);
55
+ } else if (Array.isArray(value)) consola$1.log(`${prefix}${key}: [${value.length} items]`);
56
+ else {
57
+ const str = typeof value === "string" ? value : JSON.stringify(value);
58
+ const display = str.length > 80 ? str.slice(0, 77) + "..." : str;
59
+ consola$1.log(`${prefix}${key}: ${display}`);
60
+ }
61
+ }
62
+ return;
63
+ }
64
+ consola$1.log(typeof data === "string" ? data : JSON.stringify(data));
65
+ }
66
+
67
+ //#endregion
68
+ export { output as n, configureOutputMode as t };
@@ -1,5 +1,12 @@
1
- import { A as PageMetadataContribution, D as PageFragmentContribution, q as PublicPageContext } from "../types-DSPGWjxO.mjs";
2
- import { a as generateSiteSeoContributions, c as ResolvedPageMetadata, d as resolvePageMetadata, f as safeJsonLdSerialize, i as generateBaseSeoContributions, l as escapeHtmlAttr, m as createPublicPageContext, n as buildWebSiteJsonLd, o as renderFragments, p as CreatePublicPageContextInput, r as cleanJsonLd, s as resolveFragments, t as buildBlogPostingJsonLd, u as renderPageMetadata } from "../jsonld-DZ67souc.mjs";
1
+ import { D as PageMetadataContribution, gt as PublicPageContext, w as PageFragmentContribution } from "../types-DwoUifGE.mjs";
2
+ import "../types-DuQn1G7-.mjs";
3
+ import "../runner-D6hzs8L9.mjs";
4
+ import "../index-DcnOCD1e.mjs";
5
+ import "../types-g0zMtraY.mjs";
6
+ import "../validate-CbVFoJgc.mjs";
7
+ import "../byline-fields-Ckeqd1OY.mjs";
8
+ import "../types-Cw0PeCT_.mjs";
9
+ import { a as generateSiteSeoContributions, c as ResolvedPageMetadata, d as renderPageMetadata, f as resolvePageMetadata, h as createPublicPageContext, i as generateBaseSeoContributions, l as createSha256CspHash, m as CreatePublicPageContextInput, n as buildWebSiteJsonLd, o as renderFragments, p as safeJsonLdSerialize, r as cleanJsonLd, s as resolveFragments, t as buildBlogPostingJsonLd, u as escapeHtmlAttr } from "../jsonld-DzKbhRZ4.mjs";
3
10
 
4
11
  //#region src/page/index.d.ts
5
12
  /**
@@ -16,4 +23,4 @@ interface DinewayPageRuntime {
16
23
  */
17
24
  declare function getPageRuntime(locals: Record<string, unknown>): DinewayPageRuntime | undefined;
18
25
  //#endregion
19
- export { type CreatePublicPageContextInput, DinewayPageRuntime, type ResolvedPageMetadata, buildBlogPostingJsonLd, buildWebSiteJsonLd, cleanJsonLd, createPublicPageContext, escapeHtmlAttr, generateBaseSeoContributions, generateSiteSeoContributions, getPageRuntime, renderFragments, renderPageMetadata, resolveFragments, resolvePageMetadata, safeJsonLdSerialize };
26
+ export { type CreatePublicPageContextInput, DinewayPageRuntime, type ResolvedPageMetadata, buildBlogPostingJsonLd, buildWebSiteJsonLd, cleanJsonLd, createPublicPageContext, createSha256CspHash, escapeHtmlAttr, generateBaseSeoContributions, generateSiteSeoContributions, getPageRuntime, renderFragments, renderPageMetadata, resolveFragments, resolvePageMetadata, safeJsonLdSerialize };
@@ -1,4 +1,4 @@
1
- import { a as cleanJsonLd, c as escapeHtmlAttr, d as safeJsonLdSerialize, f as createPublicPageContext, i as buildWebSiteJsonLd, l as renderPageMetadata, n as generateSiteSeoContributions, o as renderFragments, r as buildBlogPostingJsonLd, s as resolveFragments, t as generateBaseSeoContributions, u as resolvePageMetadata } from "../seo-contributions-CqVvReEj.mjs";
1
+ import { a as cleanJsonLd, c as createSha256CspHash, d as resolvePageMetadata, f as safeJsonLdSerialize, i as buildWebSiteJsonLd, l as escapeHtmlAttr, n as generateSiteSeoContributions, o as renderFragments, p as createPublicPageContext, r as buildBlogPostingJsonLd, s as resolveFragments, t as generateBaseSeoContributions, u as renderPageMetadata } from "../seo-contributions-GnCuL1ML.mjs";
2
2
 
3
3
  //#region src/page/index.ts
4
4
  /**
@@ -11,4 +11,4 @@ function getPageRuntime(locals) {
11
11
  }
12
12
 
13
13
  //#endregion
14
- export { buildBlogPostingJsonLd, buildWebSiteJsonLd, cleanJsonLd, createPublicPageContext, escapeHtmlAttr, generateBaseSeoContributions, generateSiteSeoContributions, getPageRuntime, renderFragments, renderPageMetadata, resolveFragments, resolvePageMetadata, safeJsonLdSerialize };
14
+ export { buildBlogPostingJsonLd, buildWebSiteJsonLd, cleanJsonLd, createPublicPageContext, createSha256CspHash, escapeHtmlAttr, generateBaseSeoContributions, generateSiteSeoContributions, getPageRuntime, renderFragments, renderPageMetadata, resolveFragments, resolvePageMetadata, safeJsonLdSerialize };
@@ -1,4 +1,4 @@
1
- import { t as apiError } from "./error-DCSuUAZW.mjs";
1
+ import { t as apiError } from "./error-CSVaQNZy.mjs";
2
2
  import { z } from "zod";
3
3
 
4
4
  //#region src/api/parse.ts