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
package/dist/index.mjs CHANGED
@@ -1,79 +1,94 @@
1
- import { n as getMigrationStatus } from "./runner-DzIpHGND.mjs";
1
+ import { n as getMigrationStatus } from "./runner-BgmttQmD.mjs";
2
2
  import { r as DinewayDatabaseError } from "./connection-CiJWiWya.mjs";
3
- import "./dialect-helpers-fk43GbDb.mjs";
3
+ import { i as currentTimestamp } from "./dialect-helpers-fk43GbDb.mjs";
4
4
  import { n as getI18nConfig, r as isI18nEnabled, t as getFallbackChain } from "./config-CVssduLe.mjs";
5
- import { S as RelationRepository, _ as portableTextToProsemirror, a as SandboxNotAvailableError, b as reference, c as createPluginManager, f as HookPipeline, g as after, h as definePlugin, i as NoopSandboxRunner, l as PluginRouteError, n as NodeSandboxRunner, o as createNoopSandboxRunner, p as createHookPipeline, r as createNodeSandboxRunner, s as PluginManager, t as isStandardPluginDefinition, v as prosemirrorToPortableText, x as image, y as portableText } from "./plugins-DzfqRREq.mjs";
5
+ import { C as portableTextToProsemirror, D as image, E as reference, O as RelationRepository, S as verifyGuestAccessToken, T as portableText, a as createNoopSandboxRunner, b as hashGuestAccessToken, c as PluginSecretStore, f as HookPipeline, g as definePlugin, h as runPluginMigrations, i as SandboxNotAvailableError, l as PluginRouteError, n as createNodeSandboxRunner, o as PluginManager, p as createHookPipeline, r as NoopSandboxRunner, s as createPluginManager, t as NodeSandboxRunner, w as prosemirrorToPortableText, x as issueGuestAccessToken, y as GuestAccessTokenConfigurationError } from "./plugins-CPA2PtfY.mjs";
6
6
  import { getRequestContext, runWithContext } from "./request-context.mjs";
7
7
  import "./base64-F8-DUraK.mjs";
8
- import { n as ScheduledNotDueError, t as DinewayValidationError } from "./types-CSgR9nQB.mjs";
9
- import { r as getDb } from "./loader--GOYux8M.mjs";
10
- import { t as decodeSlug } from "./slugify-BqebcqBg.mjs";
11
- import { t as ContentRepository } from "./content-CBxYGWfL.mjs";
12
- import { t as MediaRepository } from "./media-CbKyYukG.mjs";
13
- import "./user-DTLoZs16.mjs";
14
- import "./taxonomy-B169Nm6B.mjs";
15
- import "./comment-Beue8-15.mjs";
16
- import "./options-LsPjZlqD.mjs";
17
- import "./audit-BeNsSyfU.mjs";
18
- import "./site-activity-DONFrMBJ.mjs";
19
- import "./review-requests-BW2NxY-l.mjs";
20
- import "./entity-aliases-4y93Yjuc.mjs";
21
- import "./context-CQVNZaR8.mjs";
22
- import "./menus-BZbXf-ej.mjs";
23
- import "./redirect-CEACczxo.mjs";
24
- import "./request-cache-ho99schz.mjs";
25
- import { a as RESERVED_COLLECTION_SLUGS, o as RESERVED_FIELD_SLUGS, r as FIELD_TYPE_TO_COLUMN } from "./types-CJ8DkL0q.mjs";
26
- import "./byline-registry-4v6tXMNX.mjs";
27
- import "./byline-BVC1lV6G.mjs";
28
- import { n as normalizeMediaValue } from "./normalize-ByemhhfW.mjs";
29
- import { t as generatePlaceholder } from "./placeholder-d54Qr_7n.mjs";
30
- import "./seo-CLj8lS7Q.mjs";
31
- import { $ as handleContentUpdate, A as handleRevisionGet, B as handleContentDiscardDraft, D as handleMediaGet, E as handleMediaDelete, F as handleContentCompare, G as handleContentListTrashed, H as handleContentGet, I as handleContentCountScheduled, J as handleContentRestore, K as handleContentPermanentDelete, L as handleContentCountTrashed, M as handleRevisionRestore, N as generateManifest, O as handleMediaList, P as handleContentAuthors, Q as handleContentUnschedule, R as handleContentCreate, T as handleMediaCreate, U as handleContentGetIncludingTrashed, V as handleContentDuplicate, W as handleContentList, X as handleContentTranslations, Y as handleContentSchedule, Z as handleContentUnpublish, j as handleRevisionList, k as handleMediaUpdate, q as handleContentPublish, z as handleContentDelete } from "./api-BMIxRIEN.mjs";
32
- import "./dashboard-B7ZUNuyF.mjs";
33
- import "./briefing-CkTee1ex.mjs";
34
- import "./context-types-r8oFvyOq.mjs";
35
- import { t as FTSManager } from "./fts-manager-B5l_qwrA.mjs";
36
- import { n as SchemaRegistry, t as SchemaError } from "./registry-D7HACema.mjs";
37
- import { i as getSiteSettings, n as getPluginSettings, o as setSiteSettings, r as getSiteSetting, t as getPluginSetting } from "./settings-CUXOxzsT.mjs";
38
- import "./briefing-DJX6irto.mjs";
39
- import "./review-requests-Qum4713s.mjs";
40
- import { n as hashString, t as computeContentHash } from "./hash-BPmX6P8I.mjs";
41
- import { t as getCollectionInfo } from "./query-CZ3TH_Uu.mjs";
42
- import "./zod-generator-K91-g665.mjs";
43
- import "./schema-Bsi-VpYv.mjs";
44
- import "./seo-5lJOtB5J.mjs";
45
- import "./bylines-LN9XISRo.mjs";
46
- import "./byline-fields-Cj39WhXC.mjs";
47
- import { o as getSection, s as getSections } from "./sections-BOjU13Y-.mjs";
48
- import "./settings-DlBsT2VS.mjs";
49
- import "./resolve-DTuDyYKs.mjs";
50
- import { a as getTaxonomyTerms, i as getTaxonomyDefs, n as getEntryTerms, o as getTerm, r as getTaxonomyDef, s as getTermsForEntries, t as getEntriesByTerm } from "./taxonomies-CZ-_DitR.mjs";
51
- import "./taxonomies-D9Sw4wWM.mjs";
52
- import { i as pluginManifestSchema } from "./manifest-schema-qh2P7RDX.mjs";
53
- import { t as DinewayStorageError } from "./types-Cg276-3z.mjs";
54
- import "./parse-CneSgl7-.mjs";
55
- import "./redirects-ocRJmQHP.mjs";
56
- import "./byline-fields-cNrLJVRs.mjs";
57
- import { n as sanitizeHref, t as isSafeHref } from "./url-w7Mp5qAD.mjs";
58
- import { c as createEditable, i as getTranslations, l as createNoop, n as getDinewayEntry, r as getEditMeta, s as resolveDinewayPath, t as getDinewayCollection } from "./query-Ds0EnMFX.mjs";
59
- import { a as verifyPreviewSignature, i as signPreviewUrl, n as defaultPreviewSidecarClient, r as parsePreviewSignatureHeader, t as buildPreviewSignatureHeader } from "./sidecar-client-mJxwayYN.mjs";
60
- import { a as createFilePreviewMiddleware, c as dropSessionDatabaseTables, d as SessionDatabaseLimitError, f as isBlockedInPreview, i as getPreviewUrl, l as getAppliedSnapshotMeta, n as isPreviewRequest, o as renderPreviewToolbar, p as renderPreviewLoadingPage, r as buildPreviewUrl, s as applySnapshotToDatabase, t as getPreviewToken, u as FileSessionDatabaseFactory } from "./preview-C-3YTX2U.mjs";
61
- import { n as parseWxrString, t as parseWxr } from "./parser-DxfsARXL.mjs";
8
+ import { i as encodeCursor, n as ScheduledNotDueError, r as decodeCursor, t as DinewayValidationError } from "./types-ChxYDRvx.mjs";
9
+ import { r as getDb } from "./loader-aWkkc1_o.mjs";
10
+ import { t as after } from "./after-BfniwgIf.mjs";
11
+ import { a as invalidateBylineObjectCache, c as invalidateMenuObjectCache, d as invalidateTaxonomyObjectCache, f as isObjectCacheActive, i as contentNamespaces, l as invalidateObjectCache, n as cachedQuery, o as invalidateCollectionCache, r as contentNamespace, s as invalidateCommentObjectCache, t as CacheNamespace, u as invalidateSchemaObjectCache } from "./object-cache-D51qOseS.mjs";
12
+ import { t as decodeSlug } from "./slugify-KSsVD_D3.mjs";
13
+ import { r as RevisionRepository, t as ContentRepository } from "./content-DJcAYFhz.mjs";
14
+ import { t as MediaRepository } from "./media-CVMOoywq.mjs";
15
+ import "./user-BH-n01y3.mjs";
16
+ import "./taxonomy-0k_vRVsD.mjs";
17
+ import "./comment-DFALgsJD.mjs";
18
+ import "./options-DQPTH5n0.mjs";
19
+ import "./audit-B2pRxZ20.mjs";
20
+ import { t as SiteActivityRepository } from "./site-activity-h8smOlYI.mjs";
21
+ import "./review-requests-CTWGnWUt.mjs";
22
+ import "./publication-authorization-RKiHXKtq.mjs";
23
+ import { n as AssignmentService, r as HandoffSnapshotStore, w as AssignmentRepository } from "./site-context-B8T1kpUP.mjs";
24
+ import "./context-fSCYLL3c.mjs";
25
+ import "./menus-CmyIkRG5.mjs";
26
+ import "./redirect-ubhEqQCQ.mjs";
27
+ import "./request-cache-CBFjCwSt.mjs";
28
+ import { a as RESERVED_COLLECTION_SLUGS, o as RESERVED_FIELD_SLUGS, r as FIELD_TYPE_TO_COLUMN } from "./types-B7TDDFMG.mjs";
29
+ import "./byline-registry-Ba54M74c.mjs";
30
+ import "./field-defs-cache-DL-T2XVS.mjs";
31
+ import { t as BylineRepository } from "./byline-7xR185Ly.mjs";
32
+ import { n as normalizeMediaValue } from "./normalize-Cyt7JdF7.mjs";
33
+ import { n as generatePlaceholder } from "./enrich-Ck9tfMqe.mjs";
34
+ import "./seo-BU8MLCS9.mjs";
35
+ import { $ as handleContentUpdate, A as handleRevisionGet, B as handleContentDiscardDraft, D as handleMediaGet, E as handleMediaDelete, F as handleContentCompare, G as handleContentListTrashed, H as handleContentGet, I as handleContentCountScheduled, J as handleContentRestore, K as handleContentPermanentDelete, L as handleContentCountTrashed, M as handleRevisionRestore, N as generateManifest, O as handleMediaList, P as handleContentAuthors, Q as handleContentUnschedule, R as handleContentCreate, T as handleMediaCreate, U as handleContentGetIncludingTrashed, V as handleContentDuplicate, W as handleContentList, X as handleContentTranslations, Y as handleContentSchedule, Z as handleContentUnpublish, j as handleRevisionList, k as handleMediaUpdate, q as handleContentPublish, z as handleContentDelete } from "./api-B4PHIF4V.mjs";
36
+ import "./dashboard-D0nj5oWg.mjs";
37
+ import "./briefing-0rf-su3-.mjs";
38
+ import "./context-types-eBuMDAg-.mjs";
39
+ import "./content-refresh-B4ZCmxgd.mjs";
40
+ import { n as hashString, t as computeContentHash } from "./hash-mxxx2oPW.mjs";
41
+ import { t as FTSManager } from "./fts-manager-ewTGohf4.mjs";
42
+ import { n as SchemaRegistry, t as SchemaError } from "./registry-BYYyb2tF.mjs";
43
+ import { i as getSiteSettings, n as getPluginSettings, r as getSiteSetting, s as setSiteSettings, t as getPluginSetting } from "./settings-BECcAIRH.mjs";
44
+ import "./briefing-kRhegBoF.mjs";
45
+ import { n as buildStableActionHash } from "./review-payload-BysRWpxS.mjs";
46
+ import "./review-requests-D42VEP1l.mjs";
47
+ import { t as getCollectionInfo } from "./query-C2U5u5_p.mjs";
48
+ import "./zod-generator-C7AsLpSB.mjs";
49
+ import "./schema-DUtnZxjZ.mjs";
50
+ import "./seo-BLszyJxd.mjs";
51
+ import "./bylines-C-EL6dh3.mjs";
52
+ import "./byline-fields-BKzA0fJU.mjs";
53
+ import { o as getSection, s as getSections } from "./sections-DvFgsnda.mjs";
54
+ import "./settings-EzADu-dd.mjs";
55
+ import "./resolve-DE71WcL9.mjs";
56
+ import { a as getTaxonomyTerms, i as getTaxonomyDefs, n as getEntryTerms, o as getTerm, r as getTaxonomyDef, s as getTermsForEntries, t as getEntriesByTerm } from "./taxonomies-DSnY5nOa.mjs";
57
+ import "./taxonomies-BiM9NtgW.mjs";
58
+ import { r as isStandardPluginDefinition } from "./types-A8fPOJnl.mjs";
59
+ import { i as pluginManifestSchema } from "./manifest-schema-uA6pRFXi.mjs";
60
+ import { t as DinewayStorageError } from "./types-mVVgRPaU.mjs";
61
+ import "./parse-i15EFSAE.mjs";
62
+ import "./redirects-Bhpm8bRe.mjs";
63
+ import "./byline-fields-WN7RQT4q.mjs";
64
+ import { n as sanitizeHref, t as isSafeHref } from "./url-EMAguGVk.mjs";
65
+ import "./status-NqWOSFAD.mjs";
66
+ import { t as checkRateLimit } from "./rate-limit-DglsAJSw.mjs";
67
+ import { c as createEditable, i as getTranslations, l as createNoop, n as getDinewayEntry, r as getEditMeta, s as resolveDinewayPath, t as getDinewayCollection } from "./query-DEv5x6yB.mjs";
68
+ import { a as verifyPreviewSignature, i as signPreviewUrl, n as defaultPreviewSidecarClient, r as parsePreviewSignatureHeader, t as buildPreviewSignatureHeader } from "./sidecar-client-Ctzfyyp-.mjs";
69
+ import { a as createFilePreviewMiddleware, c as dropSessionDatabaseTables, d as SessionDatabaseLimitError, f as isBlockedInPreview, i as getPreviewUrl, l as getAppliedSnapshotMeta, n as isPreviewRequest, o as renderPreviewToolbar, p as renderPreviewLoadingPage, r as buildPreviewUrl, s as applySnapshotToDatabase, t as getPreviewToken, u as FileSessionDatabaseFactory } from "./preview-BjedZm8G.mjs";
70
+ import { n as parseWxrString, t as parseWxr } from "./parser-06LLLL4E.mjs";
62
71
  import { adaptSandboxEntry } from "./plugins/adapt-sandbox-entry.mjs";
63
- import "./ssrf-DiKqWd3N.mjs";
64
- import "./cron-DxCAU_Sn.mjs";
65
- import { a as getAllSources, c as getUrlSources, d as importReusableBlocksAsSections, i as clearSources, l as probeUrl, n as parseWxrDate, o as getFileSources, r as wxrSource, s as getSource, t as wordpressRestSource, u as registerSource } from "./import-4YBXbDkI.mjs";
66
- import "./utils-B8hBJ9Oz.mjs";
67
- import { n as parseContentId, r as verifyPreviewToken, t as generatePreviewToken } from "./tokens-SLmgowfd.mjs";
72
+ import "./ssrf-FJqwQzj4.mjs";
73
+ import "./cron-B1SL_lsb.mjs";
74
+ import "./secrets-ZV5rd8yV.mjs";
75
+ import "./api-tokens-Ypaly90d.mjs";
76
+ import { t as createReviewedPluginMcpCommandExecutor } from "./mcp-reviewed-executor-Dn52L_yY.mjs";
77
+ import "./activity-DUaz_w7p.mjs";
78
+ import "./activity-events-CJDvE2uc.mjs";
79
+ import "./utils-D1SrKGtP.mjs";
80
+ import { a as getSuggestions, c as searchWithDb, i as getSearchStats, n as extractPlainText, o as search, r as extractSearchableFields, s as searchCollection } from "./search-DUKgZUlm.mjs";
81
+ import { _ as probeUrl, d as wxrSource, f as clearSources, g as getUrlSources, h as getSource, i as wordpressRestSource, m as getFileSources, p as getAllSources, u as parseWxrDate, v as registerSource, x as importReusableBlocksAsSections } from "./import-CXXL5pip.mjs";
82
+ import { n as parseContentId, r as verifyPreviewToken, t as generatePreviewToken } from "./tokens-BDQU29Vd.mjs";
68
83
  import { getContentSeo, getSeoMeta } from "./seo/index.mjs";
69
- import { i as getComments, n as getMenus, r as getCommentCount, t as getMenu } from "./menus-C7F0sCrC.mjs";
70
- import { i as getEntriesByByline, n as getByline, r as getBylineBySlug } from "./bylines-DwokOFj6.mjs";
71
- import { n as getWidgetAreas, r as getWidgetComponents, t as getWidgetArea } from "./widgets-BpJ8EpPd.mjs";
72
- import { t as validateSeed } from "./validate-DWmPO6oj.mjs";
73
- import { t as applySeed } from "./apply-D_RlTYtC.mjs";
74
- import "./load-D9OiGr2m.mjs";
84
+ import "./comment-reaction-C37bf99u.mjs";
85
+ import { i as getComments, n as getMenus, r as getCommentCount, t as getMenu } from "./menus-CCG2z5um.mjs";
86
+ import { i as getEntriesByByline, n as getByline, r as getBylineBySlug } from "./bylines-CmZFCMr0.mjs";
87
+ import { n as getWidgetAreas, r as getWidgetComponents, t as getWidgetArea } from "./widgets-BZrLrNgS.mjs";
88
+ import { t as validateSeed } from "./validate-D1HL-oLR.mjs";
89
+ import { t as applySeed } from "./apply-DjTqq6Ae.mjs";
90
+ import "./load-CFtJRT3c.mjs";
75
91
  import "./seed/index.mjs";
76
- import { a as getSuggestions, c as searchWithDb, i as getSearchStats, n as extractPlainText, o as search, r as extractSearchableFields, s as searchCollection } from "./search-Gdrqj582.mjs";
77
92
  import { ulid } from "ulidx";
78
93
 
79
- export { ContentRepository, DinewayDatabaseError, DinewayStorageError, DinewayValidationError, FIELD_TYPE_TO_COLUMN, FTSManager, FileSessionDatabaseFactory, HookPipeline, MediaRepository, NodeSandboxRunner, NoopSandboxRunner, PluginManager, PluginRouteError, RESERVED_COLLECTION_SLUGS, RESERVED_FIELD_SLUGS, RelationRepository, SandboxNotAvailableError, ScheduledNotDueError, SchemaError, SchemaRegistry, SessionDatabaseLimitError, adaptSandboxEntry, after, applySeed, applySnapshotToDatabase, buildPreviewSignatureHeader, buildPreviewUrl, clearSources, computeContentHash, createEditable, createFilePreviewMiddleware, createHookPipeline, createNodeSandboxRunner, createNoop, createNoopSandboxRunner, createPluginManager, decodeSlug, defaultPreviewSidecarClient, definePlugin, dropSessionDatabaseTables, extractPlainText, extractSearchableFields, generateManifest, generatePlaceholder, generatePreviewToken, getAllSources, getAppliedSnapshotMeta, getByline, getBylineBySlug, getCollectionInfo, getCommentCount, getComments, getContentSeo, getDb, getDinewayCollection, getDinewayEntry, getEditMeta, getEntriesByByline, getEntriesByTerm, getEntryTerms, getFallbackChain, getFileSources, getI18nConfig, getMenu, getMenus, getMigrationStatus, getPluginSetting, getPluginSettings, getPreviewToken, getPreviewUrl, getRequestContext, getSearchStats, getSection, getSections, getSeoMeta, getSiteSetting, getSiteSettings, getSource, getSuggestions, getTaxonomyDef, getTaxonomyDefs, getTaxonomyTerms, getTerm, getTermsForEntries, getTranslations, getUrlSources, getWidgetArea, getWidgetAreas, getWidgetComponents, handleContentAuthors, handleContentCompare, handleContentCountScheduled, handleContentCountTrashed, handleContentCreate, handleContentDelete, handleContentDiscardDraft, handleContentDuplicate, handleContentGet, handleContentGetIncludingTrashed, handleContentList, handleContentListTrashed, handleContentPermanentDelete, handleContentPublish, handleContentRestore, handleContentSchedule, handleContentTranslations, handleContentUnpublish, handleContentUnschedule, handleContentUpdate, handleMediaCreate, handleMediaDelete, handleMediaGet, handleMediaList, handleMediaUpdate, handleRevisionGet, handleRevisionList, handleRevisionRestore, hashString, image, importReusableBlocksAsSections, isBlockedInPreview, isI18nEnabled, isPreviewRequest, isSafeHref, isStandardPluginDefinition, normalizeMediaValue, parseContentId, parsePreviewSignatureHeader, parseWxr, parseWxrDate, parseWxrString, pluginManifestSchema, portableText, portableTextToProsemirror, probeUrl, prosemirrorToPortableText, reference, registerSource, renderPreviewLoadingPage, renderPreviewToolbar, resolveDinewayPath, runWithContext, sanitizeHref, search, searchCollection, searchWithDb, setSiteSettings, signPreviewUrl, ulid, validateSeed, verifyPreviewSignature, verifyPreviewToken, wordpressRestSource, wxrSource };
94
+ export { AssignmentRepository, AssignmentService, BylineRepository, CacheNamespace, ContentRepository, DinewayDatabaseError, DinewayStorageError, DinewayValidationError, FIELD_TYPE_TO_COLUMN, FTSManager, FileSessionDatabaseFactory, GuestAccessTokenConfigurationError, HandoffSnapshotStore, HookPipeline, MediaRepository, NodeSandboxRunner, NoopSandboxRunner, PluginManager, PluginRouteError, PluginSecretStore, RESERVED_COLLECTION_SLUGS, RESERVED_FIELD_SLUGS, RelationRepository, RevisionRepository, SandboxNotAvailableError, ScheduledNotDueError, SchemaError, SchemaRegistry, SessionDatabaseLimitError, SiteActivityRepository, adaptSandboxEntry, after, applySeed, applySnapshotToDatabase, buildPreviewSignatureHeader, buildPreviewUrl, buildStableActionHash, cachedQuery, checkRateLimit, clearSources, computeContentHash, contentNamespace, contentNamespaces, createEditable, createFilePreviewMiddleware, createHookPipeline, createNodeSandboxRunner, createNoop, createNoopSandboxRunner, createPluginManager, createReviewedPluginMcpCommandExecutor, currentTimestamp, decodeCursor, decodeSlug, defaultPreviewSidecarClient, definePlugin, dropSessionDatabaseTables, encodeCursor, extractPlainText, extractSearchableFields, generateManifest, generatePlaceholder, generatePreviewToken, getAllSources, getAppliedSnapshotMeta, getByline, getBylineBySlug, getCollectionInfo, getCommentCount, getComments, getContentSeo, getDb, getDinewayCollection, getDinewayEntry, getEditMeta, getEntriesByByline, getEntriesByTerm, getEntryTerms, getFallbackChain, getFileSources, getI18nConfig, getMenu, getMenus, getMigrationStatus, getPluginSetting, getPluginSettings, getPreviewToken, getPreviewUrl, getRequestContext, getSearchStats, getSection, getSections, getSeoMeta, getSiteSetting, getSiteSettings, getSource, getSuggestions, getTaxonomyDef, getTaxonomyDefs, getTaxonomyTerms, getTerm, getTermsForEntries, getTranslations, getUrlSources, getWidgetArea, getWidgetAreas, getWidgetComponents, handleContentAuthors, handleContentCompare, handleContentCountScheduled, handleContentCountTrashed, handleContentCreate, handleContentDelete, handleContentDiscardDraft, handleContentDuplicate, handleContentGet, handleContentGetIncludingTrashed, handleContentList, handleContentListTrashed, handleContentPermanentDelete, handleContentPublish, handleContentRestore, handleContentSchedule, handleContentTranslations, handleContentUnpublish, handleContentUnschedule, handleContentUpdate, handleMediaCreate, handleMediaDelete, handleMediaGet, handleMediaList, handleMediaUpdate, handleRevisionGet, handleRevisionList, handleRevisionRestore, hashGuestAccessToken, hashString, image, importReusableBlocksAsSections, invalidateBylineObjectCache, invalidateCollectionCache, invalidateCommentObjectCache, invalidateMenuObjectCache, invalidateObjectCache, invalidateSchemaObjectCache, invalidateTaxonomyObjectCache, isBlockedInPreview, isI18nEnabled, isObjectCacheActive, isPreviewRequest, isSafeHref, isStandardPluginDefinition, issueGuestAccessToken, normalizeMediaValue, parseContentId, parsePreviewSignatureHeader, parseWxr, parseWxrDate, parseWxrString, pluginManifestSchema, portableText, portableTextToProsemirror, probeUrl, prosemirrorToPortableText, reference, registerSource, renderPreviewLoadingPage, renderPreviewToolbar, resolveDinewayPath, runPluginMigrations, runWithContext, sanitizeHref, search, searchCollection, searchWithDb, setSiteSettings, signPreviewUrl, ulid, validateSeed, verifyGuestAccessToken, verifyPreviewSignature, verifyPreviewToken, wordpressRestSource, wxrSource };
@@ -1,5 +1,5 @@
1
- import { A as PageMetadataContribution, D as PageFragmentContribution, N as PageMetadataLinkRel, P as PagePlacement, q as PublicPageContext, t as BreadcrumbItem } from "./types-DSPGWjxO.mjs";
2
- import { n as SeoSettings } from "./types-nP9vGUFq.mjs";
1
+ import { A as PageMetadataLinkRel, D as PageMetadataContribution, gt as PublicPageContext, j as PagePlacement, t as BreadcrumbItem, w as PageFragmentContribution } from "./types-DwoUifGE.mjs";
2
+ import { S as SeoSettings } from "./validate-CbVFoJgc.mjs";
3
3
 
4
4
  //#region src/page/context.d.ts
5
5
  /** Fields shared by both input forms */
@@ -78,6 +78,9 @@ interface ResolvedPageMetadata {
78
78
  json: string;
79
79
  }>;
80
80
  }
81
+ interface RenderPageMetadataOptions {
82
+ includeJsonLd?: boolean;
83
+ }
81
84
  /** Escape a string for safe use in an HTML attribute value */
82
85
  declare function escapeHtmlAttr(value: string): string;
83
86
  /**
@@ -89,13 +92,14 @@ declare function escapeHtmlAttr(value: string): string;
89
92
  * - U+2028/U+2029 are line terminators in some JS engines
90
93
  */
91
94
  declare function safeJsonLdSerialize(value: unknown): string;
95
+ declare function createSha256CspHash(value: string): Promise<string>;
92
96
  /**
93
97
  * Resolve a flat list of contributions into deduplicated metadata.
94
98
  * First contribution wins for any given dedupe key.
95
99
  */
96
100
  declare function resolvePageMetadata(contributions: PageMetadataContribution[]): ResolvedPageMetadata;
97
101
  /** Render resolved metadata to an HTML string for embedding in <head> */
98
- declare function renderPageMetadata(metadata: ResolvedPageMetadata): string;
102
+ declare function renderPageMetadata(metadata: ResolvedPageMetadata, options?: RenderPageMetadataOptions): string;
99
103
  //#endregion
100
104
  //#region src/page/fragments.d.ts
101
105
  /**
@@ -138,4 +142,4 @@ declare function buildBlogPostingJsonLd(page: PublicPageContext, defaultOgImage?
138
142
  */
139
143
  declare function buildWebSiteJsonLd(page: PublicPageContext): Record<string, unknown> | null;
140
144
  //#endregion
141
- export { generateSiteSeoContributions as a, ResolvedPageMetadata as c, resolvePageMetadata as d, safeJsonLdSerialize as f, generateBaseSeoContributions as i, escapeHtmlAttr as l, createPublicPageContext as m, buildWebSiteJsonLd as n, renderFragments as o, CreatePublicPageContextInput as p, cleanJsonLd as r, resolveFragments as s, buildBlogPostingJsonLd as t, renderPageMetadata as u };
145
+ export { generateSiteSeoContributions as a, ResolvedPageMetadata as c, renderPageMetadata as d, resolvePageMetadata as f, createPublicPageContext as h, generateBaseSeoContributions as i, createSha256CspHash as l, CreatePublicPageContextInput as m, buildWebSiteJsonLd as n, renderFragments as o, safeJsonLdSerialize as p, cleanJsonLd as r, resolveFragments as s, buildBlogPostingJsonLd as t, escapeHtmlAttr as u };
@@ -1,4 +1,4 @@
1
- import { a as __exportAll } from "./runner-DzIpHGND.mjs";
1
+ import { a as __exportAll } from "./runner-BgmttQmD.mjs";
2
2
 
3
3
  //#region src/seed/load.ts
4
4
  var load_exports = /* @__PURE__ */ __exportAll({
@@ -1,9 +1,9 @@
1
- import { a as __exportAll } from "./runner-DzIpHGND.mjs";
1
+ import { a as __exportAll } from "./runner-BgmttQmD.mjs";
2
2
  import { t as validateIdentifier } from "./validate-VPnKoIzW.mjs";
3
3
  import { o as isPostgres, r as currentIsoTimestampValue } from "./dialect-helpers-fk43GbDb.mjs";
4
4
  import { getRequestContext } from "./request-context.mjs";
5
5
  import { kyselyLogOption } from "./database/instrumentation.mjs";
6
- import { i as encodeCursor, r as decodeCursor } from "./types-CSgR9nQB.mjs";
6
+ import { i as encodeCursor, r as decodeCursor } from "./types-ChxYDRvx.mjs";
7
7
  import { Kysely, sql } from "kysely";
8
8
 
9
9
  //#region src/live-collection-meta.ts
@@ -82,14 +82,19 @@ function isMissingColumnError(error) {
82
82
  //#region src/loader.ts
83
83
  var loader_exports = /* @__PURE__ */ __exportAll({
84
84
  CURSOR_RAW_VALUES: () => CURSOR_RAW_VALUES,
85
+ FOLDED_BYLINES: () => FOLDED_BYLINES,
86
+ FOLDED_TERMS: () => FOLDED_TERMS,
85
87
  dinewayLoader: () => dinewayLoader,
86
- getDb: () => getDb
88
+ getDb: () => getDb,
89
+ resetTaxonomyNamesCache: () => resetTaxonomyNamesCache
87
90
  });
88
91
  const FIELD_NAME_PATTERN = /^[a-zA-Z_][a-zA-Z0-9_]*$/;
89
92
  const LIKE_WILDCARD_RE = /[\\%_]/g;
90
93
  /**
91
- * SEO columns joined from `_dineway_seo` on the single-entry path.
92
- * The leading underscore in aliases prevents collisions with user field slugs.
94
+ * SEO values are folded into one `_dineway_seo` JSON result column, then
95
+ * expanded onto these aliases for extractSeo(). Keeping SEO to one result
96
+ * column prevents wide flat-schema collections from crossing result-set column
97
+ * limits while preserving the public `entry.data.seo` shape.
93
98
  */
94
99
  const SEO_COLUMN_ALIASES = {
95
100
  seo_title: "_dineway_seo_title",
@@ -99,6 +104,7 @@ const SEO_COLUMN_ALIASES = {
99
104
  seo_no_index: "_dineway_seo_no_index"
100
105
  };
101
106
  const SEO_ALIAS_COLUMNS = Object.values(SEO_COLUMN_ALIASES);
107
+ const SEO_FOLDED_COLUMN = "_dineway_seo";
102
108
  /**
103
109
  * System columns excluded from entry.data
104
110
  * Note: slug is intentionally NOT excluded - it's useful as data.slug in templates
@@ -118,8 +124,76 @@ const SYSTEM_COLUMNS = new Set([
118
124
  "draft_revision_id",
119
125
  "locale",
120
126
  "translation_group",
121
- ...SEO_ALIAS_COLUMNS
127
+ ...SEO_ALIAS_COLUMNS,
128
+ "_dineway_terms",
129
+ "_dineway_bylines",
130
+ SEO_FOLDED_COLUMN
122
131
  ]);
132
+ /** Markers for byline/taxonomy hydration folded into the content query. */
133
+ const FOLDED_TERMS = Symbol.for("dineway:foldedTerms");
134
+ const FOLDED_BYLINES = Symbol.for("dineway:foldedBylines");
135
+ /**
136
+ * Correlated JSON-array subqueries that fold taxonomy-term and byline hydration
137
+ * into the content query without join fan-out. `outer` is the content table
138
+ * alias/name, and each subquery correlates on `<outer>.id`.
139
+ */
140
+ function foldedHydrationSelects(db, type, outer) {
141
+ const o = sql.ref(outer);
142
+ const pg = isPostgres(db);
143
+ const obj = (pairs) => pg ? sql.raw(`json_build_object(${pairs})`) : sql.raw(`json_object(${pairs})`);
144
+ const agg = (inner) => pg ? sql`coalesce(json_agg(${inner}), '[]'::json)` : sql`json_group_array(${inner})`;
145
+ const foldJoin = pg ? sql`JOIN` : sql`CROSS JOIN`;
146
+ const terms = sql`(SELECT ${agg(obj("'id', t.id, 'name', t.name, 'slug', t.slug, 'label', t.label, 'parent_id', t.parent_id, 'locale', t.locale, 'translation_group', t.translation_group"))} FROM ${sql.ref("content_taxonomies")} AS ct ${foldJoin} ${sql.ref("taxonomies")} AS t ON t.translation_group = ct.taxonomy_id WHERE ct.collection = ${type} AND ct.entry_id = ${o}.id AND t.locale = ${o}.locale) AS ${sql.ref("_dineway_terms")}`;
147
+ const bylineInner = obj("'id', b.id, 'slug', b.slug, 'displayName', b.display_name, 'bio', b.bio, 'avatarMediaId', b.avatar_media_id, 'avatarStorageKey', m.storage_key, 'avatarAlt', m.alt, 'avatarBlurhash', m.blurhash, 'avatarDominantColor', m.dominant_color, 'websiteUrl', b.website_url, 'userId', b.user_id, 'isGuest', b.is_guest, 'createdAt', b.created_at, 'updatedAt', b.updated_at, 'locale', b.locale, 'translationGroup', b.translation_group");
148
+ return {
149
+ terms,
150
+ bylines: sql`(SELECT ${agg(sql`${pg ? sql.raw("json_build_object('roleLabel', cb.role_label, 'sortOrder', cb.sort_order, 'byline', ") : sql.raw("json_object('roleLabel', cb.role_label, 'sortOrder', cb.sort_order, 'byline', ")}${bylineInner})`)} FROM ${sql.ref("_dineway_content_bylines")} AS cb ${foldJoin} ${sql.ref("_dineway_bylines")} AS b ON b.translation_group = cb.byline_id LEFT JOIN ${sql.ref("media")} AS m ON m.id = b.avatar_media_id WHERE cb.collection_slug = ${type} AND cb.content_id = ${o}.id AND b.locale = ${o}.locale) AS ${sql.ref("_dineway_bylines")}`
151
+ };
152
+ }
153
+ function foldedSeoSelect(db, type, outer) {
154
+ const o = sql.ref(outer);
155
+ const pairs = "'seo_title', s.seo_title, 'seo_description', s.seo_description, 'seo_image', s.seo_image, 'seo_canonical', s.seo_canonical, 'seo_no_index', s.seo_no_index";
156
+ return sql`(SELECT ${isPostgres(db) ? sql.raw(`json_build_object(${pairs})`) : sql.raw(`json_object(${pairs})`)} FROM ${sql.ref("_dineway_seo")} AS s WHERE s.collection = ${type} AND s.content_id = ${o}.id LIMIT 1) AS ${sql.ref(SEO_FOLDED_COLUMN)}`;
157
+ }
158
+ function isPlainObject(value) {
159
+ return !!value && typeof value === "object" && !Array.isArray(value);
160
+ }
161
+ function expandFoldedSeo(row) {
162
+ const raw = row[SEO_FOLDED_COLUMN];
163
+ delete row[SEO_FOLDED_COLUMN];
164
+ let parsed = null;
165
+ if (typeof raw === "string") try {
166
+ const candidate = JSON.parse(raw);
167
+ if (isPlainObject(candidate)) parsed = candidate;
168
+ } catch {
169
+ return;
170
+ }
171
+ else if (isPlainObject(raw)) parsed = raw;
172
+ if (!parsed) return;
173
+ for (const [column, alias] of Object.entries(SEO_COLUMN_ALIASES)) row[alias] = parsed[column] ?? null;
174
+ }
175
+ /**
176
+ * Stash folded hydration JSON for query.ts fast paths. SQLite returns a JSON
177
+ * string; Postgres drivers return parsed JSON for json/jsonb.
178
+ */
179
+ function stashFolded(data, row) {
180
+ for (const [column, symbol] of [["_dineway_terms", FOLDED_TERMS], ["_dineway_bylines", FOLDED_BYLINES]]) {
181
+ const raw = row[column];
182
+ let value;
183
+ if (typeof raw === "string") try {
184
+ value = JSON.parse(raw);
185
+ } catch {
186
+ continue;
187
+ }
188
+ else if (Array.isArray(raw)) value = raw;
189
+ else continue;
190
+ Object.defineProperty(data, symbol, {
191
+ value,
192
+ enumerable: false,
193
+ configurable: true
194
+ });
195
+ }
196
+ }
123
197
  function extractSeo(row) {
124
198
  const noIndex = row[SEO_COLUMN_ALIASES.seo_no_index];
125
199
  if (noIndex === null || noIndex === void 0) return null;
@@ -165,6 +239,9 @@ async function getTaxonomyNames(db) {
165
239
  return empty;
166
240
  }
167
241
  }
242
+ function resetTaxonomyNamesCache() {
243
+ taxonomyNames = null;
244
+ }
168
245
  /**
169
246
  * System columns to include in data (mapped to camelCase where needed)
170
247
  */
@@ -451,9 +528,11 @@ function dinewayLoader() {
451
528
  const orderBy = filter?.orderBy;
452
529
  const locale = filter?.locale;
453
530
  const fetchLimit = limit ? limit + 1 : void 0;
531
+ const rawOffset = cursor ? void 0 : filter?.offset;
532
+ const offset = typeof rawOffset === "number" && Number.isInteger(rawOffset) && rawOffset > 0 ? rawOffset : void 0;
454
533
  const cursorCondition = cursor ? buildCursorCondition(cursor, orderBy) : null;
455
534
  let result;
456
- let taxonomyFilter = null;
535
+ const taxonomyFilters = [];
457
536
  let bylineFilter = null;
458
537
  const fieldFilters = {};
459
538
  if (where && Object.keys(where).length > 0) {
@@ -473,20 +552,17 @@ function dinewayLoader() {
473
552
  console.warn(`[dineway] where filter: range operators are not supported on taxonomy "${key}", ignored`);
474
553
  continue;
475
554
  }
476
- if (taxonomyFilter) {
477
- console.warn(`[dineway] where filter: only one taxonomy is supported per query, "${key}" ignored`);
478
- continue;
479
- }
480
- taxonomyFilter = {
555
+ const slugs = Array.isArray(value) ? value : [value];
556
+ taxonomyFilters.push({
481
557
  name: key,
482
- slugs: Array.isArray(value) ? value : [value]
483
- };
558
+ slugs
559
+ });
484
560
  continue;
485
561
  }
486
562
  fieldFilters[key] = value;
487
563
  }
488
564
  }
489
- if (taxonomyFilter && taxonomyFilter.slugs.length === 0 || bylineFilter && bylineFilter.ids.length === 0) {
565
+ if (taxonomyFilters.some((taxonomyFilter) => taxonomyFilter.slugs.length === 0) || bylineFilter && bylineFilter.ids.length === 0) {
490
566
  setCollectionMeta(filter, { total: 0 });
491
567
  return {
492
568
  entries: [],
@@ -502,14 +578,20 @@ function dinewayLoader() {
502
578
  const fieldConditionsSql = fieldConditions.length > 0 ? sql`${sql.join(fieldConditions, sql` AND `)}` : null;
503
579
  const searchCondition = buildSearchCondition(q, searchColumns);
504
580
  const searchConditionSql = searchCondition ? sql`AND ${searchCondition}` : sql``;
505
- const taxonomyCondition = taxonomyFilter ? sql`AND EXISTS (
581
+ const { terms: termsSelect, bylines: bylinesSelect } = foldedHydrationSelects(db, type, tableName);
582
+ let limitOffsetClause = sql``;
583
+ if (fetchLimit != null && offset != null) limitOffsetClause = sql`LIMIT ${fetchLimit} OFFSET ${offset}`;
584
+ else if (fetchLimit != null) limitOffsetClause = sql`LIMIT ${fetchLimit}`;
585
+ else if (offset != null) limitOffsetClause = isPostgres(db) ? sql`OFFSET ${offset}` : sql`LIMIT -1 OFFSET ${offset}`;
586
+ const taxonomyCondition = taxonomyFilters.length > 0 ? sql`${sql.join(taxonomyFilters.map((taxonomyFilter) => sql`AND EXISTS (
506
587
  SELECT 1 FROM content_taxonomies ct
507
- INNER JOIN taxonomies t ON t.id = ct.taxonomy_id
588
+ INNER JOIN taxonomies t ON t.translation_group = ct.taxonomy_id
508
589
  WHERE ct.collection = ${type}
509
590
  AND ct.entry_id = ${sql.ref(tableName)}.id
510
591
  AND t.name = ${taxonomyFilter.name}
511
592
  AND t.slug IN (${sql.join(taxonomyFilter.slugs.map((slug) => sql`${slug}`))})
512
- )` : sql``;
593
+ ${locale ? sql`AND t.locale = ${locale}` : sql``}
594
+ )`), sql` `)}` : sql``;
513
595
  const bylineCondition = bylineFilter ? sql`AND EXISTS (
514
596
  SELECT 1 FROM _dineway_content_bylines cb
515
597
  WHERE cb.collection_slug = ${type}
@@ -524,7 +606,7 @@ function dinewayLoader() {
524
606
  )
525
607
  )` : sql``;
526
608
  const [entriesResult, totalResult] = await Promise.all([sql`
527
- SELECT * FROM ${sql.ref(tableName)}
609
+ SELECT *, ${termsSelect}, ${bylinesSelect} FROM ${sql.ref(tableName)}
528
610
  WHERE deleted_at IS NULL
529
611
  AND ${statusCondition}
530
612
  ${localeFilter}
@@ -534,7 +616,7 @@ function dinewayLoader() {
534
616
  ${fieldConditionsSql ? sql`AND ${fieldConditionsSql}` : sql``}
535
617
  ${searchConditionSql}
536
618
  ${orderByClause}
537
- ${fetchLimit ? sql`LIMIT ${fetchLimit}` : sql``}
619
+ ${limitOffsetClause}
538
620
  `.execute(db), sql`
539
621
  SELECT COUNT(*) AS total FROM ${sql.ref(tableName)}
540
622
  WHERE deleted_at IS NULL
@@ -554,11 +636,14 @@ function dinewayLoader() {
554
636
  const entries = rows.map((row) => {
555
637
  const slug = rowStr(row, "slug") || rowStr(row, "id");
556
638
  const rowLocale = rowStr(row, "locale");
639
+ const id = i18nEnabled && rowLocale !== "" && (rowLocale !== i18nConfig.defaultLocale || i18nConfig.prefixDefaultLocale) ? `${rowLocale}/${slug}` : slug;
640
+ const data = mapRowToData(row);
641
+ stashFolded(data, row);
557
642
  return {
558
- id: i18nEnabled && rowLocale !== "" && (rowLocale !== i18nConfig.defaultLocale || i18nConfig.prefixDefaultLocale) ? `${rowLocale}/${slug}` : slug,
643
+ id,
559
644
  slug: rowStr(row, "slug"),
560
645
  status: rowStr(row, "status", "draft"),
561
- data: mapRowToData(row),
646
+ data,
562
647
  cacheHint: {
563
648
  tags: [rowStr(row, "id")],
564
649
  lastModified: row.updated_at ? new Date(rowStr(row, "updated_at")) : void 0
@@ -579,12 +664,14 @@ function dinewayLoader() {
579
664
  }
580
665
  setCollectionMeta(filter, {
581
666
  nextCursor,
582
- total
667
+ total,
668
+ hasMore
583
669
  });
584
670
  return {
585
671
  entries,
586
672
  nextCursor,
587
673
  total,
674
+ hasMore,
588
675
  cacheHint: {
589
676
  tags: [type],
590
677
  lastModified: collectionLastModified
@@ -611,25 +698,23 @@ function dinewayLoader() {
611
698
  if (!type || !id) return { error: /* @__PURE__ */ new Error("type and id filters are required. Use getDinewayEntry() instead of getLiveEntry() directly.") };
612
699
  const tableName = getTableName(type);
613
700
  const locale = filter?.locale;
614
- const seoSelect = sql.join(Object.entries(SEO_COLUMN_ALIASES).map(([column, alias]) => sql`${sql.ref(`s.${column}`)} AS ${sql.ref(alias)}`));
701
+ const { terms: termsSelect, bylines: bylinesSelect } = foldedHydrationSelects(db, type, "c");
702
+ const seoSelect = foldedSeoSelect(db, type, "c");
615
703
  const row = (locale ? await sql`
616
- SELECT c.*, ${seoSelect}
704
+ SELECT c.*, ${seoSelect}, ${termsSelect}, ${bylinesSelect}
617
705
  FROM ${sql.ref(tableName)} AS c
618
- LEFT JOIN ${sql.ref("_dineway_seo")} AS s
619
- ON s.collection = ${type} AND s.content_id = c.id
620
706
  WHERE c.deleted_at IS NULL
621
707
  AND ((c.slug = ${id} AND c.locale = ${locale}) OR c.id = ${id})
622
708
  LIMIT 1
623
709
  `.execute(db) : await sql`
624
- SELECT c.*, ${seoSelect}
710
+ SELECT c.*, ${seoSelect}, ${termsSelect}, ${bylinesSelect}
625
711
  FROM ${sql.ref(tableName)} AS c
626
- LEFT JOIN ${sql.ref("_dineway_seo")} AS s
627
- ON s.collection = ${type} AND s.content_id = c.id
628
712
  WHERE c.deleted_at IS NULL
629
713
  AND (c.slug = ${id} OR c.id = ${id})
630
714
  LIMIT 1
631
715
  `.execute(db)).rows[0];
632
716
  if (!row) return;
717
+ expandFoldedSeo(row);
633
718
  const i18nConfig = virtualConfig?.i18n;
634
719
  const i18nEnabled = i18nConfig && i18nConfig.locales.length > 1;
635
720
  const entrySlug = rowStr(row, "slug") || rowStr(row, "id");
@@ -673,6 +758,7 @@ function dinewayLoader() {
673
758
  const entryData = mapRowToData(row);
674
759
  const entrySeo = extractSeo(row);
675
760
  if (entrySeo) entryData.seo = entrySeo;
761
+ stashFolded(entryData, row);
676
762
  return {
677
763
  id: entryId,
678
764
  slug: rowStr(row, "slug"),
@@ -694,4 +780,4 @@ function dinewayLoader() {
694
780
  }
695
781
 
696
782
  //#endregion
697
- export { isMissingTableError as a, loader_exports as i, dinewayLoader as n, takeLiveCollectionMeta as o, getDb as r, CURSOR_RAW_VALUES as t };
783
+ export { resetTaxonomyNamesCache as a, loader_exports as i, dinewayLoader as n, isMissingTableError as o, getDb as r, takeLiveCollectionMeta as s, CURSOR_RAW_VALUES as t };
@@ -1,3 +1,4 @@
1
+ import { n as declaredAccessToCapabilities, t as capabilitiesToDeclaredAccess } from "./types-A8fPOJnl.mjs";
1
2
  import { z } from "zod";
2
3
 
3
4
  //#region src/plugins/manifest-schema.ts
@@ -13,6 +14,7 @@ import { z } from "zod";
13
14
  const PLUGIN_CAPABILITIES = [
14
15
  "network:request",
15
16
  "network:request:unrestricted",
17
+ "network:request:development-loopback",
16
18
  "content:read",
17
19
  "content:write",
18
20
  "media:read",
@@ -52,6 +54,9 @@ const HOOK_NAMES = [
52
54
  "content:afterDelete",
53
55
  "content:afterPublish",
54
56
  "content:afterUnpublish",
57
+ "content:afterRestore",
58
+ "content:afterSchedule",
59
+ "content:afterUnschedule",
55
60
  "media:beforeUpload",
56
61
  "media:afterUpload",
57
62
  "cron",
@@ -171,6 +176,28 @@ const pluginAdminConfigSchema = z.object({
171
176
  }).passthrough()).optional()
172
177
  })).optional()
173
178
  });
179
+ const accessConstraints = z.record(z.string(), z.unknown());
180
+ const declaredAccessSchema = z.object({
181
+ content: z.object({
182
+ read: accessConstraints.optional(),
183
+ write: accessConstraints.optional()
184
+ }).optional(),
185
+ media: z.object({
186
+ read: accessConstraints.optional(),
187
+ write: accessConstraints.optional()
188
+ }).optional(),
189
+ network: z.object({ request: z.object({
190
+ allowedHosts: z.array(z.string()).min(1).optional(),
191
+ developmentLoopback: z.boolean().optional()
192
+ }).optional() }).optional(),
193
+ email: z.object({
194
+ send: accessConstraints.optional(),
195
+ events: accessConstraints.optional(),
196
+ transport: accessConstraints.optional()
197
+ }).optional(),
198
+ page: z.object({ fragments: accessConstraints.optional() }).optional(),
199
+ users: z.object({ read: accessConstraints.optional() }).optional()
200
+ });
174
201
  /**
175
202
  * Zod schema matching the PluginManifest interface from types.ts.
176
203
  *
@@ -179,6 +206,7 @@ const pluginAdminConfigSchema = z.object({
179
206
  const pluginManifestSchema = z.object({
180
207
  id: z.string().min(1),
181
208
  version: z.string().min(1),
209
+ declaredAccess: declaredAccessSchema.optional(),
182
210
  capabilities: z.array(z.enum(PLUGIN_CAPABILITIES)),
183
211
  allowedHosts: z.array(z.string()),
184
212
  storage: z.record(z.string(), storageCollectionSchema),
@@ -186,6 +214,15 @@ const pluginManifestSchema = z.object({
186
214
  routes: z.array(z.union([z.string().min(1).regex(routeNamePattern, "Route name must be a safe path segment"), manifestRouteEntrySchema])),
187
215
  admin: pluginAdminConfigSchema
188
216
  });
217
+ function reconcileManifestAccess(manifest) {
218
+ return manifest.declaredAccess ? {
219
+ ...manifest,
220
+ ...declaredAccessToCapabilities(manifest.declaredAccess)
221
+ } : {
222
+ ...manifest,
223
+ declaredAccess: capabilitiesToDeclaredAccess(manifest.capabilities, manifest.allowedHosts)
224
+ };
225
+ }
189
226
  /**
190
227
  * Normalize a manifest route entry — plain strings become `{ name }` objects.
191
228
  */
@@ -195,4 +232,4 @@ function normalizeManifestRoute(entry) {
195
232
  }
196
233
 
197
234
  //#endregion
198
- export { pluginManifestSchema as i, PLUGIN_CAPABILITIES as n, normalizeManifestRoute as r, HOOK_NAMES as t };
235
+ export { reconcileManifestAccess as a, pluginManifestSchema as i, PLUGIN_CAPABILITIES as n, normalizeManifestRoute as r, HOOK_NAMES as t };