dineway 0.2.25 → 0.2.27

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 (414) hide show
  1. package/dist/{activity-Bm5x0dik.mjs → activity-DWlF3FUa.mjs} +2 -2
  2. package/dist/{activity-events-DpvhcjTP.mjs → activity-events-BYksOnTL.mjs} +1 -1
  3. package/dist/{adapters-DUVI3Mpc.d.mts → adapters-C-iHnQYy.d.mts} +8 -1
  4. package/dist/{allowed-origins-M5Rcl6XL.mjs → allowed-origins-DeknDs56.mjs} +1 -1
  5. package/dist/api/route-utils.d.mts +10 -10
  6. package/dist/api/route-utils.mjs +16 -15
  7. package/dist/api/schemas/index.d.mts +1 -1
  8. package/dist/api/schemas/index.mjs +5 -4
  9. package/dist/{api-Cod3v4JU.mjs → api-BTrQ7bjs.mjs} +21 -20
  10. package/dist/{api-tokens-BFgXg0l2.mjs → api-tokens-d43xs7C1.mjs} +1 -1
  11. package/dist/{apply-Hodkn7PL.mjs → apply-CS_138du.mjs} +22 -19
  12. package/dist/astro/index.d.mts +11 -11
  13. package/dist/astro/index.mjs +29 -7
  14. package/dist/astro/middleware/auth.d.mts +9 -9
  15. package/dist/astro/middleware/auth.mjs +6 -6
  16. package/dist/astro/middleware/redirect.mjs +5 -5
  17. package/dist/astro/middleware/request-context.mjs +3 -3
  18. package/dist/astro/middleware/seed.d.mts +1 -1
  19. package/dist/astro/middleware/seed.mjs +2 -2
  20. package/dist/astro/middleware/setup.mjs +1 -1
  21. package/dist/astro/middleware.mjs +203 -91
  22. package/dist/astro/routes/api/admin/allowed-domains/_domain_.mjs +7 -6
  23. package/dist/astro/routes/api/admin/allowed-domains/index.mjs +7 -6
  24. package/dist/astro/routes/api/admin/api-tokens/_id_.mjs +4 -4
  25. package/dist/astro/routes/api/admin/api-tokens/index.mjs +6 -6
  26. package/dist/astro/routes/api/admin/briefing.mjs +20 -19
  27. package/dist/astro/routes/api/admin/byline-fields/_slug_/usage.mjs +4 -4
  28. package/dist/astro/routes/api/admin/byline-fields/_slug_.mjs +10 -9
  29. package/dist/astro/routes/api/admin/byline-fields/index.mjs +10 -9
  30. package/dist/astro/routes/api/admin/byline-fields/reorder.mjs +10 -9
  31. package/dist/astro/routes/api/admin/bylines/_id_/index.mjs +17 -16
  32. package/dist/astro/routes/api/admin/bylines/_id_/translations.mjs +17 -16
  33. package/dist/astro/routes/api/admin/bylines/index.mjs +17 -16
  34. package/dist/astro/routes/api/admin/comments/_id_/status.mjs +14 -13
  35. package/dist/astro/routes/api/admin/comments/_id_.mjs +5 -5
  36. package/dist/astro/routes/api/admin/comments/bulk.mjs +11 -10
  37. package/dist/astro/routes/api/admin/comments/counts.mjs +5 -5
  38. package/dist/astro/routes/api/admin/comments/index.mjs +11 -10
  39. package/dist/astro/routes/api/admin/context/_id_/history.mjs +28 -26
  40. package/dist/astro/routes/api/admin/context/_id_/index.mjs +28 -26
  41. package/dist/astro/routes/api/admin/context/_id_/review.mjs +33 -31
  42. package/dist/astro/routes/api/admin/context/_id_/supersede.mjs +33 -31
  43. package/dist/astro/routes/api/admin/context/diff.mjs +32 -30
  44. package/dist/astro/routes/api/admin/context/index.mjs +33 -31
  45. package/dist/astro/routes/api/admin/context/stale.mjs +32 -30
  46. package/dist/astro/routes/api/admin/hitl-requests/_id_/index.mjs +28 -26
  47. package/dist/astro/routes/api/admin/hitl-requests/_id_/resolve.mjs +32 -30
  48. package/dist/astro/routes/api/admin/hitl-requests/index.mjs +32 -30
  49. package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.mjs +29 -27
  50. package/dist/astro/routes/api/admin/hooks/exclusive/index.mjs +3 -3
  51. package/dist/astro/routes/api/admin/oauth-clients/_id_.mjs +6 -6
  52. package/dist/astro/routes/api/admin/oauth-clients/index.mjs +6 -6
  53. package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs +59 -57
  54. package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs +59 -57
  55. package/dist/astro/routes/api/admin/plugins/_id_/index.mjs +51 -49
  56. package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs +58 -56
  57. package/dist/astro/routes/api/admin/plugins/_id_/update.mjs +58 -56
  58. package/dist/astro/routes/api/admin/plugins/index.mjs +51 -49
  59. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.mjs +2 -2
  60. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs +51 -49
  61. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs +58 -56
  62. package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs +51 -49
  63. package/dist/astro/routes/api/admin/plugins/updates.mjs +51 -49
  64. package/dist/astro/routes/api/admin/review-requests/_id_/index.mjs +5 -5
  65. package/dist/astro/routes/api/admin/review-requests/_id_/resolve.mjs +33 -31
  66. package/dist/astro/routes/api/admin/review-requests/index.mjs +33 -31
  67. package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs +51 -49
  68. package/dist/astro/routes/api/admin/themes/marketplace/_id_/thumbnail.mjs +2 -2
  69. package/dist/astro/routes/api/admin/themes/marketplace/index.mjs +51 -49
  70. package/dist/astro/routes/api/admin/users/_id_/disable.mjs +2 -2
  71. package/dist/astro/routes/api/admin/users/_id_/enable.mjs +1 -1
  72. package/dist/astro/routes/api/admin/users/_id_/index.mjs +8 -7
  73. package/dist/astro/routes/api/admin/users/_id_/send-recovery.mjs +3 -3
  74. package/dist/astro/routes/api/admin/users/index.mjs +7 -6
  75. package/dist/astro/routes/api/auth/dev-bypass.mjs +4 -4
  76. package/dist/astro/routes/api/auth/invite/accept.mjs +1 -1
  77. package/dist/astro/routes/api/auth/invite/complete.mjs +12 -11
  78. package/dist/astro/routes/api/auth/invite/index.mjs +9 -8
  79. package/dist/astro/routes/api/auth/invite/register-options.mjs +11 -10
  80. package/dist/astro/routes/api/auth/logout.mjs +2 -2
  81. package/dist/astro/routes/api/auth/magic-link/send.mjs +11 -10
  82. package/dist/astro/routes/api/auth/magic-link/verify.mjs +2 -2
  83. package/dist/astro/routes/api/auth/me.mjs +10 -9
  84. package/dist/astro/routes/api/auth/mode.mjs +1 -1
  85. package/dist/astro/routes/api/auth/oauth/_provider_/callback.mjs +2 -2
  86. package/dist/astro/routes/api/auth/oauth/_provider_.mjs +2 -2
  87. package/dist/astro/routes/api/auth/passkey/_id_.mjs +7 -6
  88. package/dist/astro/routes/api/auth/passkey/index.mjs +1 -1
  89. package/dist/astro/routes/api/auth/passkey/options.mjs +13 -12
  90. package/dist/astro/routes/api/auth/passkey/register/options.mjs +11 -10
  91. package/dist/astro/routes/api/auth/passkey/register/verify.mjs +12 -11
  92. package/dist/astro/routes/api/auth/passkey/verify.mjs +12 -11
  93. package/dist/astro/routes/api/auth/setup-token/index.mjs +5 -5
  94. package/dist/astro/routes/api/auth/setup-token/verify.mjs +2 -2
  95. package/dist/astro/routes/api/auth/signup/complete.mjs +12 -11
  96. package/dist/astro/routes/api/auth/signup/request.mjs +11 -10
  97. package/dist/astro/routes/api/auth/signup/verify.mjs +1 -1
  98. package/dist/astro/routes/api/comments/_collection_/_contentId_/index.mjs +15 -14
  99. package/dist/astro/routes/api/comments/_collection_/_contentId_/reactions.mjs +14 -13
  100. package/dist/astro/routes/api/content/_collection_/_id_/compare.mjs +2 -2
  101. package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs +6 -6
  102. package/dist/astro/routes/api/content/_collection_/_id_/duplicate.mjs +6 -6
  103. package/dist/astro/routes/api/content/_collection_/_id_/permanent.mjs +6 -6
  104. package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs +54 -15
  105. package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs +19 -18
  106. package/dist/astro/routes/api/content/_collection_/_id_/release-readiness.mjs +9 -8
  107. package/dist/astro/routes/api/content/_collection_/_id_/restore.mjs +6 -6
  108. package/dist/astro/routes/api/content/_collection_/_id_/revisions.mjs +2 -2
  109. package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs +19 -18
  110. package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs +16 -14
  111. package/dist/astro/routes/api/content/_collection_/_id_/translations.mjs +2 -2
  112. package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs +6 -6
  113. package/dist/astro/routes/api/content/_collection_/_id_.mjs +12 -11
  114. package/dist/astro/routes/api/content/_collection_/authors.mjs +2 -2
  115. package/dist/astro/routes/api/content/_collection_/index.mjs +12 -11
  116. package/dist/astro/routes/api/content/_collection_/trash.mjs +8 -7
  117. package/dist/astro/routes/api/dashboard.mjs +9 -8
  118. package/dist/astro/routes/api/dev/emails.mjs +2 -2
  119. package/dist/astro/routes/api/health.mjs +1 -1
  120. package/dist/astro/routes/api/import/probe.d.mts +3 -3
  121. package/dist/astro/routes/api/import/probe.mjs +21 -20
  122. package/dist/astro/routes/api/import/wordpress/analyze.mjs +9 -8
  123. package/dist/astro/routes/api/import/wordpress/execute.d.mts +9 -9
  124. package/dist/astro/routes/api/import/wordpress/execute.mjs +38 -36
  125. package/dist/astro/routes/api/import/wordpress/media.d.mts +9 -9
  126. package/dist/astro/routes/api/import/wordpress/media.mjs +13 -12
  127. package/dist/astro/routes/api/import/wordpress/prepare.mjs +37 -35
  128. package/dist/astro/routes/api/import/wordpress/rewrite-urls.d.mts +10 -10
  129. package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs +34 -32
  130. package/dist/astro/routes/api/import/wordpress-plugin/analyze.d.mts +1 -1
  131. package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs +24 -23
  132. package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts +9 -9
  133. package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs +43 -41
  134. package/dist/astro/routes/api/integrations/_provider_.mjs +7 -7
  135. package/dist/astro/routes/api/integrations/index.mjs +6 -6
  136. package/dist/astro/routes/api/manifest.mjs +5 -5
  137. package/dist/astro/routes/api/mcp.mjs +70 -68
  138. package/dist/astro/routes/api/media/_id_/confirm.mjs +11 -10
  139. package/dist/astro/routes/api/media/_id_.mjs +9 -8
  140. package/dist/astro/routes/api/media/file/_...key_.mjs +1 -1
  141. package/dist/astro/routes/api/media/providers/_providerId_/_itemId_.mjs +2 -2
  142. package/dist/astro/routes/api/media/providers/_providerId_/index.mjs +2 -2
  143. package/dist/astro/routes/api/media/providers/index.mjs +2 -2
  144. package/dist/astro/routes/api/media/upload-url.mjs +12 -11
  145. package/dist/astro/routes/api/media.mjs +15 -14
  146. package/dist/astro/routes/api/menus/_name_/items/_id_.mjs +33 -31
  147. package/dist/astro/routes/api/menus/_name_/items.mjs +33 -31
  148. package/dist/astro/routes/api/menus/_name_/reorder.mjs +33 -31
  149. package/dist/astro/routes/api/menus/_name_/translations.mjs +33 -31
  150. package/dist/astro/routes/api/menus/_name_.mjs +33 -31
  151. package/dist/astro/routes/api/menus/index.mjs +33 -31
  152. package/dist/astro/routes/api/oauth/authorize.mjs +7 -7
  153. package/dist/astro/routes/api/oauth/device/authorize.mjs +6 -6
  154. package/dist/astro/routes/api/oauth/device/code.mjs +9 -9
  155. package/dist/astro/routes/api/oauth/device/token.mjs +8 -8
  156. package/dist/astro/routes/api/oauth/register.mjs +4 -4
  157. package/dist/astro/routes/api/oauth/token/refresh.mjs +6 -6
  158. package/dist/astro/routes/api/oauth/token/revoke.mjs +6 -6
  159. package/dist/astro/routes/api/oauth/token.mjs +6 -6
  160. package/dist/astro/routes/api/openapi.json.mjs +5 -4
  161. package/dist/astro/routes/api/plugins/_pluginId_/_...path_.mjs +4 -4
  162. package/dist/astro/routes/api/redirects/404s/index.mjs +12 -11
  163. package/dist/astro/routes/api/redirects/404s/summary.mjs +12 -11
  164. package/dist/astro/routes/api/redirects/_id_.mjs +34 -32
  165. package/dist/astro/routes/api/redirects/index.mjs +34 -32
  166. package/dist/astro/routes/api/revisions/_revisionId_/index.mjs +2 -2
  167. package/dist/astro/routes/api/revisions/_revisionId_/restore.mjs +2 -2
  168. package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs +53 -51
  169. package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs +53 -51
  170. package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs +53 -51
  171. package/dist/astro/routes/api/schema/collections/_slug_/index.mjs +53 -51
  172. package/dist/astro/routes/api/schema/collections/index.mjs +53 -51
  173. package/dist/astro/routes/api/schema/index.mjs +9 -8
  174. package/dist/astro/routes/api/schema/orphans/_slug_.mjs +51 -49
  175. package/dist/astro/routes/api/schema/orphans/index.mjs +51 -49
  176. package/dist/astro/routes/api/search/enable.mjs +12 -11
  177. package/dist/astro/routes/api/search/index.mjs +11 -10
  178. package/dist/astro/routes/api/search/rebuild.mjs +12 -11
  179. package/dist/astro/routes/api/search/stats.mjs +6 -6
  180. package/dist/astro/routes/api/search/suggest.mjs +11 -10
  181. package/dist/astro/routes/api/sections/_slug_.mjs +33 -31
  182. package/dist/astro/routes/api/sections/index.mjs +33 -31
  183. package/dist/astro/routes/api/settings/email.mjs +4 -4
  184. package/dist/astro/routes/api/settings.mjs +33 -31
  185. package/dist/astro/routes/api/setup/admin-verify.mjs +14 -13
  186. package/dist/astro/routes/api/setup/admin.mjs +12 -11
  187. package/dist/astro/routes/api/setup/dev-bypass.mjs +28 -26
  188. package/dist/astro/routes/api/setup/dev-reset.mjs +2 -2
  189. package/dist/astro/routes/api/setup/index.mjs +30 -28
  190. package/dist/astro/routes/api/setup/status.mjs +3 -3
  191. package/dist/astro/routes/api/snapshot.mjs +7 -7
  192. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs +36 -34
  193. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs +36 -34
  194. package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs +36 -34
  195. package/dist/astro/routes/api/taxonomies/index.mjs +36 -34
  196. package/dist/astro/routes/api/themes/preview.mjs +5 -5
  197. package/dist/astro/routes/api/typegen.mjs +4 -4
  198. package/dist/astro/routes/api/well-known/auth.mjs +3 -3
  199. package/dist/astro/routes/api/well-known/oauth-authorization-server.mjs +3 -3
  200. package/dist/astro/routes/api/well-known/oauth-protected-resource.mjs +3 -3
  201. package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs +32 -30
  202. package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs +33 -31
  203. package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs +33 -31
  204. package/dist/astro/routes/api/widget-areas/_name_.mjs +30 -28
  205. package/dist/astro/routes/api/widget-areas/index.mjs +33 -31
  206. package/dist/astro/routes/api/widget-components.mjs +2 -2
  207. package/dist/astro/routes/robots.txt.mjs +7 -7
  208. package/dist/astro/routes/sitemap-_collection_.xml.mjs +14 -13
  209. package/dist/astro/routes/sitemap.xml.mjs +13 -12
  210. package/dist/astro/session-driver.d.mts +1 -1
  211. package/dist/astro/session-driver.mjs +2 -2
  212. package/dist/astro/types.d.mts +13 -12
  213. package/dist/{audit-nenmMR-2.mjs → audit-CmiNnrbj.mjs} +1 -1
  214. package/dist/auth/providers/github.d.mts +1 -1
  215. package/dist/auth/providers/google.d.mts +1 -1
  216. package/dist/{auth-control-guard-B7PdECn6.mjs → auth-control-guard-Bg93z3D6.mjs} +1 -1
  217. package/dist/{authorize-DTvHe9bm.mjs → authorize-Dg75h4BN.mjs} +1 -1
  218. package/dist/{briefing-PxagUoJJ.mjs → briefing-BoIXsh3Y.mjs} +1 -1
  219. package/dist/{briefing-CpU_z8qH.mjs → briefing-Cd2HhhHi.mjs} +7 -7
  220. package/dist/{bundle-dsO2-7eh.mjs → bundle-DicQY2p2.mjs} +2 -2
  221. package/dist/{byline-DEBDPF8R.mjs → byline-MGIfM2Is.mjs} +6 -6
  222. package/dist/{byline-fields-HoyRUnBy.d.mts → byline-fields-BJ5_tYj8.d.mts} +31 -7
  223. package/dist/{byline-fields-BQRx17y_.mjs → byline-fields-C4OeOttq.mjs} +3 -3
  224. package/dist/{byline-fields-DPi4Ri_5.mjs → byline-fields-GoUVaGw4.mjs} +1 -1
  225. package/dist/{byline-registry-BLgrU3dA.mjs → byline-registry-CF9nobxT.mjs} +2 -2
  226. package/dist/{bylines-YK6eGHvV.mjs → bylines-CL8Z6AxI.mjs} +5 -5
  227. package/dist/{bylines-C7hm1-iI.mjs → bylines-t_uHsP44.mjs} +3 -3
  228. package/dist/{cache-BuVpjvBc.mjs → cache-DrNKKDn0.mjs} +2 -2
  229. package/dist/{chunks-B-1_U3oF.mjs → chunks-Bw3_BuVW.mjs} +1 -1
  230. package/dist/cli/index.d.mts +1 -1
  231. package/dist/cli/index.mjs +399 -135
  232. package/dist/cli/plugin-kit.d.mts +9 -9
  233. package/dist/cli/plugin-kit.mjs +2 -2
  234. package/dist/client/external-auth-headers.d.mts +1 -1
  235. package/dist/client/index.d.mts +11 -11
  236. package/dist/client/index.mjs +2 -2
  237. package/dist/{client-factory-Nyp2sznG.mjs → client-factory-DXfeovxp.mjs} +3 -2
  238. package/dist/{comment-BX6H4NF-.mjs → comment-DuDtCn-f.mjs} +1 -1
  239. package/dist/{comment-reaction-QSENU_3S.mjs → comment-reaction-NZjadbiB.mjs} +1 -1
  240. package/dist/{comments-BHSYG53k.mjs → comments-Csi3B9JI.mjs} +1 -1
  241. package/dist/{connection-CiJWiWya.mjs → connection-DJ3GzHVH.mjs} +2 -3
  242. package/dist/{content-Bg_hMt4Q.mjs → content-CzUrmMC3.mjs} +5 -117
  243. package/dist/{content-refresh-CHBBZGwf.mjs → content-refresh-C_jcjzOr.mjs} +5 -5
  244. package/dist/{context-BGt7zfQ-.mjs → context-BET1jeas.mjs} +11 -11
  245. package/dist/{context-BHXgPEPC.mjs → context-D1WiuHGe.mjs} +2 -2
  246. package/dist/{context-route-helpers-SwM-_GT4.mjs → context-route-helpers-CgVXswZ_.mjs} +2 -2
  247. package/dist/{dashboard-ByLUL4c3.mjs → dashboard-CKAH1KwM.mjs} +4 -4
  248. package/dist/db/index.d.mts +4 -4
  249. package/dist/db/index.mjs +10 -2
  250. package/dist/db/libsql-http.d.mts +27 -0
  251. package/dist/db/libsql-http.mjs +29 -0
  252. package/dist/db/libsql.d.mts +1 -1
  253. package/dist/db/libsql.mjs +3 -43
  254. package/dist/db/postgres.d.mts +1 -1
  255. package/dist/db/sqlite.d.mts +1 -1
  256. package/dist/{device-flow-XqdFNsv_.mjs → device-flow-BED7L-O7.mjs} +5 -5
  257. package/dist/{discovery-DvuRcbP-.mjs → discovery-SVnRaAxj.mjs} +9 -49
  258. package/dist/{enrich-Ck9tfMqe.mjs → enrich-Uw_OA9Ve.mjs} +1 -1
  259. package/dist/{field-defs-cache-sSdDeJXP.mjs → field-defs-cache-BIHTU5Yj.mjs} +4 -4
  260. package/dist/{fts-manager-C7pxxk6B.mjs → fts-manager-BB44uXMm.mjs} +1 -1
  261. package/dist/{hitl-requests-D7pfIM6q.mjs → hitl-requests-D117gyhv.mjs} +2 -2
  262. package/dist/{hitl-route-helpers-Br9uvIQs.mjs → hitl-route-helpers-BasbaWwG.mjs} +5 -5
  263. package/dist/{import-CrsquhXj.mjs → import-BCY1k1zB.mjs} +8 -8
  264. package/dist/{index-NdJMMO48.d.mts → index-DNNw5fp0.d.mts} +3 -3
  265. package/dist/index.d.mts +16 -16
  266. package/dist/index.mjs +87 -84
  267. package/dist/{integration-credentials-B7Pj6YCv.mjs → integration-credentials-CTrvXgEc.mjs} +2 -2
  268. package/dist/{jsonld-CfUj_enm.d.mts → jsonld-CxMRDv02.d.mts} +2 -2
  269. package/dist/libsql-dialect-DMqpBfJI.mjs +47 -0
  270. package/dist/{load-Bul8Tk6e.mjs → load-C-cMlsPv.mjs} +1 -1
  271. package/dist/{loader-BCr2VSzt.mjs → loader-CsX5pTud.mjs} +2 -2
  272. package/dist/{manifest-schema-U5qGq-iB.mjs → manifest-schema-owbEUmv1.mjs} +1 -1
  273. package/dist/{mcp-reviewed-executor-C1lIimd0.mjs → mcp-reviewed-executor-BwI0ylf3.mjs} +6 -6
  274. package/dist/media/image-endpoint.mjs +1 -1
  275. package/dist/media/index.d.mts +1 -1
  276. package/dist/media/index.mjs +2 -2
  277. package/dist/media/local-runtime.d.mts +11 -11
  278. package/dist/media/local-runtime.mjs +2 -2
  279. package/dist/{media-D8pQJSug.mjs → media-4xtXwq7L.mjs} +1 -1
  280. package/dist/{media-allowlist-9u_gxMG2.mjs → media-allowlist-BdbIzYO3.mjs} +1 -1
  281. package/dist/{menus-3B-PGTX3.mjs → menus-CRmcWAM5.mjs} +2 -2
  282. package/dist/{menus-DSWeEWXl.mjs → menus-Cu3TUXyl.mjs} +6 -6
  283. package/dist/{oauth-authorization-CMU5kREy.mjs → oauth-authorization-TG2Kxgur.mjs} +5 -5
  284. package/dist/{oauth-clients-CLdR0WyA.mjs → oauth-clients-DLJMG4h7.mjs} +2 -2
  285. package/dist/object-cache/memory.d.mts +1 -1
  286. package/dist/page/index.d.mts +10 -10
  287. package/dist/page/index.mjs +1 -1
  288. package/dist/{parse-DEG06jjr.mjs → parse-CJC9DGe9.mjs} +1 -1
  289. package/dist/plugin-utils.d.mts +9 -9
  290. package/dist/plugins/adapt-sandbox-entry.d.mts +9 -9
  291. package/dist/plugins/adapt-sandbox-entry.mjs +1 -1
  292. package/dist/{plugins-D8YxTh9q.mjs → plugins-BC9Rb6PJ.mjs} +6 -6
  293. package/dist/{preview-Bn59ztjn.mjs → preview-CjL_29aE.mjs} +3 -3
  294. package/dist/{provider-loader-jdkZM6xZ.d.mts → provider-loader-CGoW_-Bs.d.mts} +1 -1
  295. package/dist/public-discovery-CyDzK1-S.mjs +30 -0
  296. package/dist/{public-url-DifBmsDt.d.mts → public-url-BPnL5sTj.d.mts} +1 -1
  297. package/dist/public-url-DjWfilkD.mjs +46 -0
  298. package/dist/{public-url-DFX2c_20.d.mts → public-url-UpDevWVD.d.mts} +17 -2
  299. package/dist/{publication-authorization-BmazS4K0.mjs → publication-authorization-Bq4B0KIL.mjs} +15 -10
  300. package/dist/{query-CrUftarl.mjs → query-BAfn0Uxp.mjs} +13 -13
  301. package/dist/{query-DPC5GT6e.mjs → query-MvFwA1uK.mjs} +3 -3
  302. package/dist/{rate-limit-DvGL45wH.mjs → rate-limit-JhnJUEno.mjs} +2 -2
  303. package/dist/{redirect-8B-gorhg.mjs → redirect-CnG6nJ4H.mjs} +2 -2
  304. package/dist/{redirects-DdPaQiWQ.mjs → redirects-C9pg6Dcg.mjs} +6 -2
  305. package/dist/{redirects-D2SVS1zo.mjs → redirects-lCwNKPUn.mjs} +5 -5
  306. package/dist/{registry-D3n4-yUl.mjs → registry-QxrUJAWY.mjs} +14 -8
  307. package/dist/{request-meta-DZTiCIQR.mjs → request-meta-DnZm9Kbu.mjs} +1 -1
  308. package/dist/{review-payload-BysRWpxS.mjs → review-payload-BuLgXTY6.mjs} +1 -1
  309. package/dist/{review-requests-D5CJ4JCy.mjs → review-requests-DaYnr3XR.mjs} +1 -1
  310. package/dist/{review-requests-BQbmYLnz.mjs → review-requests-uI-yUXcr.mjs} +2 -2
  311. package/dist/{review-route-helpers-DYiujAPM.mjs → review-route-helpers-BvX04ahf.mjs} +2 -2
  312. package/dist/revision-De7OmYVD.mjs +118 -0
  313. package/dist/{runner-BWZ87FK-.mjs → runner-CQnzfBpD.mjs} +475 -461
  314. package/dist/{runner-BITx7yBF.d.mts → runner-o39FihbH.d.mts} +1 -1
  315. package/dist/runtime.d.mts +10 -10
  316. package/dist/runtime.mjs +3 -3
  317. package/dist/schema-CD3EA3nN.mjs +8 -0
  318. package/dist/{search-B_ir6H6m.mjs → search-BtCHwx_Z.mjs} +3 -3
  319. package/dist/{secrets-Dw3lXI42.mjs → secrets-MqvM60s_.mjs} +2 -2
  320. package/dist/{sections-pRy07N5I.mjs → sections-BM88PvRO.mjs} +2 -2
  321. package/dist/seed/index.d.mts +2 -2
  322. package/dist/seed/index.mjs +22 -20
  323. package/dist/seo/index.d.mts +4 -4
  324. package/dist/seo/index.mjs +9 -7
  325. package/dist/{seo-C4nlxiaY.mjs → seo-BhMH6i2e.mjs} +1 -1
  326. package/dist/{seo-DdNntVj-.mjs → seo-CTXMR4YD.mjs} +1 -1
  327. package/dist/{service-D6fJX7D7.mjs → service-evnf21UO.mjs} +2 -2
  328. package/dist/{settings-D-a7uy2z.mjs → settings-CCqefqC9.mjs} +6 -6
  329. package/dist/{settings-C4OMR0zf.mjs → settings-COtVNdOx.mjs} +2 -2
  330. package/dist/{setup-complete-Blqo_adb.mjs → setup-complete-C8LTo8cO.mjs} +1 -1
  331. package/dist/{site-activity-CnrmnFRy.mjs → site-activity-kfZ9X0no.mjs} +1 -1
  332. package/dist/{site-context-Bdsobbh9.mjs → site-context-D2DmqFnD.mjs} +15 -15
  333. package/dist/{site-url-CK5vBdFu.mjs → site-url-AGgA46Lw.mjs} +1 -1
  334. package/dist/storage/local.d.mts +1 -1
  335. package/dist/storage/local.mjs +1 -1
  336. package/dist/storage/s3.d.mts +1 -1
  337. package/dist/storage/s3.mjs +1 -1
  338. package/dist/{store-DerEE3jG.mjs → store-BtCoeap4.mjs} +1 -1
  339. package/dist/{taxonomies-6bWkaa_G.mjs → taxonomies-DxtqEjcj.mjs} +3 -3
  340. package/dist/{taxonomies-FKTevd14.mjs → taxonomies-xvaQ7gVM.mjs} +6 -6
  341. package/dist/{taxonomy-BU0eCfij.mjs → taxonomy--vcXXfwc.mjs} +2 -2
  342. package/dist/{types-C8cUW9dh.d.mts → types-B2W3CeZN.d.mts} +1 -0
  343. package/dist/{types-BkQ-l1Y5.d.mts → types-BcpWwh4c.d.mts} +51 -24
  344. package/dist/{types-C9F2TLQV.mjs → types-CFvpEEOl.mjs} +1 -1
  345. package/dist/{types-B2kbOwSj.d.mts → types-Cd_2Jeqp.d.mts} +12 -1
  346. package/dist/{types-B6r_SMeR.d.mts → types-m37xNtUj.d.mts} +1 -1
  347. package/dist/ui/server-runtime.d.mts +13 -13
  348. package/dist/ui/server-runtime.mjs +23 -22
  349. package/dist/{user-BV02bsWz.mjs → user-Dn3wV227.mjs} +2 -2
  350. package/dist/{utils-BPzpVHqR.mjs → utils-iGiCys50.mjs} +1 -1
  351. package/dist/{validate-Drps_jbV.mjs → validate-BHVQSpUy.mjs} +8 -2
  352. package/dist/{validate-Bc9gaua6.d.mts → validate-BiPYhXNZ.d.mts} +4 -3
  353. package/dist/version-BbuynKOY.mjs +6 -0
  354. package/dist/{widgets-BFqy7PYs.mjs → widgets-CBCHUg_u.mjs} +3 -3
  355. package/dist/{wordpress-slugs-fMvfO22_.mjs → wordpress-slugs-BYW2B_5x.mjs} +1 -1
  356. package/dist/{zod-generator-BlY_vGgR.mjs → zod-generator-DMlY4cI3.mjs} +2 -2
  357. package/package.json +11 -4
  358. package/src/components/DinewayImage.astro +4 -0
  359. package/dist/schema-kk9-6bUd.mjs +0 -8
  360. package/dist/version-BohmuXyf.mjs +0 -6
  361. /package/dist/{actor-D3A5PNkH.mjs → actor-BraTCiOp.mjs} +0 -0
  362. /package/dist/{api-tokens-CbMAy6xF.mjs → api-tokens-CZ472rzA.mjs} +0 -0
  363. /package/dist/{challenge-store-DtdQHXf5.mjs → challenge-store-ugPhBaVf.mjs} +0 -0
  364. /package/dist/{components-DGu-rih7.mjs → components-CINP4h-l.mjs} +0 -0
  365. /package/dist/{context-types-eBuMDAg-.mjs → context-types-fEeyXC1D.mjs} +0 -0
  366. /package/dist/{cron-BjKHo0QD.mjs → cron-DIsnItPn.mjs} +0 -0
  367. /package/dist/{default-CO47mlSA.mjs → default-D8jeKsT3.mjs} +0 -0
  368. /package/dist/{email-console-CFE1ay18.mjs → email-console-DRb6jkoC.mjs} +0 -0
  369. /package/dist/{error-Jz0EtEwI.mjs → error-BPA9T0AW.mjs} +0 -0
  370. /package/dist/{escape-HmHTC1Is.mjs → escape-DgNqnHuj.mjs} +0 -0
  371. /package/dist/{experimental-workflows-EYZRNkRR.mjs → experimental-workflows-DOo7QDRn.mjs} +0 -0
  372. /package/dist/{hash-mxxx2oPW.mjs → hash-CEky-IDp.mjs} +0 -0
  373. /package/dist/{media-url-DVoOhf4X.mjs → media-url-BhbJfG3Y.mjs} +0 -0
  374. /package/dist/{mime-C0vOHFm7.mjs → mime-Bg7yUeHW.mjs} +0 -0
  375. /package/dist/{mode-DqpBaEOy.mjs → mode-CgD_xAEJ.mjs} +0 -0
  376. /package/dist/{normalize-Cyt7JdF7.mjs → normalize-BY2gOygP.mjs} +0 -0
  377. /package/dist/{oauth-state-store-HdGg_nSm.mjs → oauth-state-store-Dbj-J0K5.mjs} +0 -0
  378. /package/dist/{oauth-user-lookup-CP16vyFW.mjs → oauth-user-lookup-D2NAYPjU.mjs} +0 -0
  379. /package/dist/{options-DQPTH5n0.mjs → options-1dBRkoCl.mjs} +0 -0
  380. /package/dist/{output-CXOC3BFr.mjs → output-A4ZfzzA0.mjs} +0 -0
  381. /package/dist/{parser-buoH2frr.mjs → parser-C3ux7a3Y.mjs} +0 -0
  382. /package/dist/{passkey-config-T47FwLtS.mjs → passkey-config-DUc1iP_-.mjs} +0 -0
  383. /package/dist/{patterns-CoqlXUvk.mjs → patterns-CP9gkiCE.mjs} +0 -0
  384. /package/dist/{placeholder-BsYSFPjY.d.mts → placeholder-0cGpMonY.d.mts} +0 -0
  385. /package/dist/{portable-text-Dm0bgrdZ.d.mts → portable-text-Cu4n_8zI.d.mts} +0 -0
  386. /package/dist/{portable-text-DQHE3b5v.mjs → portable-text-U85hOafW.mjs} +0 -0
  387. /package/dist/{process-cache-CCDgti7j.mjs → process-cache-DsMwJ3LM.mjs} +0 -0
  388. /package/dist/{provider-loader-Dxka0BDp.mjs → provider-loader-BPHG3BR5.mjs} +0 -0
  389. /package/dist/{public-url-CIAtNGEg.mjs → public-url-CmBKcpsJ.mjs} +0 -0
  390. /package/dist/{redirect-CzqnLxK-.mjs → redirect-D_bb_Cc3.mjs} +0 -0
  391. /package/dist/{request-cache-CBFjCwSt.mjs → request-cache-DoT2mKBT.mjs} +0 -0
  392. /package/dist/{resolve-CThKf9_X.mjs → resolve-BDWXnk_V.mjs} +0 -0
  393. /package/dist/{seo-contributions-BGBehNCN.mjs → seo-contributions-DzusM9lG.mjs} +0 -0
  394. /package/dist/{service-DOdvCW-9.mjs → service-BB1n90wh.mjs} +0 -0
  395. /package/dist/{session-user-CYjNeJoD.mjs → session-user-BQZHuGOS.mjs} +0 -0
  396. /package/dist/{setup-nonce-CGUTFWgQ.mjs → setup-nonce-220YhE1R.mjs} +0 -0
  397. /package/dist/{sidecar-client-C6ylL-0S.mjs → sidecar-client-SDgPreXV.mjs} +0 -0
  398. /package/dist/{ssrf-Dz2hqAiG.mjs → ssrf-D00lPvtF.mjs} +0 -0
  399. /package/dist/{stable-hash-DshcXvRE.mjs → stable-hash-_A3p1ln2.mjs} +0 -0
  400. /package/dist/{status-xz9JACSX.mjs → status-BdZSXIP_.mjs} +0 -0
  401. /package/dist/{tokens-DiodRT2y.mjs → tokens-ShJZm_QS.mjs} +0 -0
  402. /package/dist/{transaction-Chz7SBGr.mjs → transaction-L0tzAOfM.mjs} +0 -0
  403. /package/dist/{transport-zquJ7Bzm.mjs → transport-DtrY0-hI.mjs} +0 -0
  404. /package/dist/{transport-DKy93p6V.d.mts → transport-SoRbXDM4.d.mts} +0 -0
  405. /package/dist/{trusted-proxy-NySPw95m.mjs → trusted-proxy-9b2fSXK2.mjs} +0 -0
  406. /package/dist/{types-DY9lJRpo.d.mts → types-B-KSspMO.d.mts} +0 -0
  407. /package/dist/{types-ftxcMx5-.mjs → types-B-nDjnzA.mjs} +0 -0
  408. /package/dist/{types-C2LBO0t8.d.mts → types-BdsNqnHA.d.mts} +0 -0
  409. /package/dist/{types-B7TDDFMG.mjs → types-D1l9cCKM.mjs} +0 -0
  410. /package/dist/{types-Gd4kXLsa.d.mts → types-D8iukuuI.d.mts} +0 -0
  411. /package/dist/{types-BaKec6bx.d.mts → types-ZdWRfUsC.d.mts} +0 -0
  412. /package/dist/{types-C1LdZbQb.mjs → types-dgGPmsl_.mjs} +0 -0
  413. /package/dist/{url-guoXQQcV.mjs → url-C_pLSrGZ.mjs} +0 -0
  414. /package/dist/{url-C05Zz4pW.mjs → url-CmjWycVK.mjs} +0 -0
@@ -1,12 +1,12 @@
1
- import "../types-BkQ-l1Y5.mjs";
2
- import "../types-C8cUW9dh.mjs";
3
- import "../runner-BITx7yBF.mjs";
4
- import "../index-NdJMMO48.mjs";
5
- import "../types-C2LBO0t8.mjs";
6
- import "../public-url-DFX2c_20.mjs";
7
- import "../validate-Bc9gaua6.mjs";
8
- import "../byline-fields-HoyRUnBy.mjs";
9
- import "../types-BaKec6bx.mjs";
1
+ import "../types-BcpWwh4c.mjs";
2
+ import "../types-B2W3CeZN.mjs";
3
+ import "../runner-o39FihbH.mjs";
4
+ import "../index-DNNw5fp0.mjs";
5
+ import "../types-BdsNqnHA.mjs";
6
+ import "../public-url-UpDevWVD.mjs";
7
+ import "../validate-BiPYhXNZ.mjs";
8
+ import "../byline-fields-BJ5_tYj8.mjs";
9
+ import "../types-ZdWRfUsC.mjs";
10
10
  import { DinewayClient, PluginRequestOptions } from "../client/index.mjs";
11
11
  import { SubCommandsDef } from "citty";
12
12
 
@@ -1,4 +1,4 @@
1
- import { n as output, t as configureOutputMode } from "../output-CXOC3BFr.mjs";
2
- import { n as connectionArgs, r as createClientFromArgs } from "../client-factory-Nyp2sznG.mjs";
1
+ import { n as output, t as configureOutputMode } from "../output-A4ZfzzA0.mjs";
2
+ import { n as connectionArgs, r as createClientFromArgs } from "../client-factory-DXfeovxp.mjs";
3
3
 
4
4
  export { configureOutputMode, connectionArgs, createClientFromArgs, output };
@@ -1,4 +1,4 @@
1
- import { t as Interceptor } from "../transport-DKy93p6V.mjs";
1
+ import { t as Interceptor } from "../transport-SoRbXDM4.mjs";
2
2
 
3
3
  //#region src/client/external-auth-headers.d.ts
4
4
  /**
@@ -1,14 +1,14 @@
1
- import { Jt as PublicationReadinessResult, Ut as PublicationPolicyOverride, Xt as PublicationReceipt } from "../types-BkQ-l1Y5.mjs";
2
- import "../types-C8cUW9dh.mjs";
3
- import "../runner-BITx7yBF.mjs";
4
- import "../index-NdJMMO48.mjs";
5
- import "../types-C2LBO0t8.mjs";
6
- import "../public-url-DFX2c_20.mjs";
7
- import "../validate-Bc9gaua6.mjs";
8
- import "../byline-fields-HoyRUnBy.mjs";
9
- import "../types-BaKec6bx.mjs";
10
- import { a as tokenInterceptor, i as devBypassInterceptor, n as createTransport, r as csrfInterceptor, t as Interceptor } from "../transport-DKy93p6V.mjs";
11
- import { n as markdownToPortableText, r as portableTextToMarkdown, t as PortableTextBlock } from "../portable-text-Dm0bgrdZ.mjs";
1
+ import { Jt as PublicationReadinessResult, Ut as PublicationPolicyOverride, Xt as PublicationReceipt } from "../types-BcpWwh4c.mjs";
2
+ import "../types-B2W3CeZN.mjs";
3
+ import "../runner-o39FihbH.mjs";
4
+ import "../index-DNNw5fp0.mjs";
5
+ import "../types-BdsNqnHA.mjs";
6
+ import "../public-url-UpDevWVD.mjs";
7
+ import "../validate-BiPYhXNZ.mjs";
8
+ import "../byline-fields-BJ5_tYj8.mjs";
9
+ import "../types-ZdWRfUsC.mjs";
10
+ import { a as tokenInterceptor, i as devBypassInterceptor, n as createTransport, r as csrfInterceptor, t as Interceptor } from "../transport-SoRbXDM4.mjs";
11
+ import { n as markdownToPortableText, r as portableTextToMarkdown, t as PortableTextBlock } from "../portable-text-Cu4n_8zI.mjs";
12
12
 
13
13
  //#region src/client/index.d.ts
14
14
  interface DinewayClientOptions {
@@ -1,5 +1,5 @@
1
- import { i as portableTextToMarkdown, n as convertDataForWrite, r as markdownToPortableText, t as convertDataForRead } from "../portable-text-DQHE3b5v.mjs";
2
- import { a as tokenInterceptor, i as refreshInterceptor, n as csrfInterceptor, r as devBypassInterceptor, t as createTransport } from "../transport-zquJ7Bzm.mjs";
1
+ import { i as portableTextToMarkdown, n as convertDataForWrite, r as markdownToPortableText, t as convertDataForRead } from "../portable-text-U85hOafW.mjs";
2
+ import { a as tokenInterceptor, i as refreshInterceptor, n as csrfInterceptor, r as devBypassInterceptor, t as createTransport } from "../transport-DtrY0-hI.mjs";
3
3
  import mime from "mime/lite";
4
4
 
5
5
  //#region src/client/index.ts
@@ -1,4 +1,4 @@
1
- import { a as __exportAll } from "./runner-BWZ87FK-.mjs";
1
+ import { a as __exportAll } from "./runner-CQnzfBpD.mjs";
2
2
  import { customHeadersInterceptor, resolveCustomHeaders } from "./client/external-auth-headers.mjs";
3
3
  import { DinewayClient } from "./client/index.mjs";
4
4
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
@@ -161,7 +161,8 @@ const DINEWAY_LOCAL_STATE_GITIGNORE_ENTRIES = [
161
161
  ".dineway/forgeway.json",
162
162
  ".dineway/types.ts",
163
163
  ".dineway/schema.json",
164
- ".dineway/uploads/"
164
+ ".dineway/uploads/",
165
+ ".dineway/sites-deploy.tar.gz"
165
166
  ];
166
167
  const NEWLINE_PATTERN = /\r?\n/g;
167
168
  function parseDotenvValue(value) {
@@ -1,4 +1,4 @@
1
- import { i as encodeCursor, r as decodeCursor } from "./types-C9F2TLQV.mjs";
1
+ import { i as encodeCursor, r as decodeCursor } from "./types-CFvpEEOl.mjs";
2
2
  import { s as invalidateCommentObjectCache } from "./object-cache-D51qOseS.mjs";
3
3
  import { sql } from "kysely";
4
4
  import { ulid } from "ulidx";
@@ -1,4 +1,4 @@
1
- import { n as chunks, t as SQL_BATCH_SIZE } from "./chunks-B-1_U3oF.mjs";
1
+ import { n as chunks, t as SQL_BATCH_SIZE } from "./chunks-Bw3_BuVW.mjs";
2
2
  import { ulid } from "ulidx";
3
3
 
4
4
  //#region src/database/repositories/comment-reaction.ts
@@ -1,4 +1,4 @@
1
- import { t as CommentRepository } from "./comment-BX6H4NF-.mjs";
1
+ import { t as CommentRepository } from "./comment-DuDtCn-f.mjs";
2
2
 
3
3
  //#region src/api/handlers/comments.ts
4
4
  async function handleCommentList(db, collection, contentId, options = {}) {
@@ -17,7 +17,6 @@ var DinewayDatabaseError = class extends Error {
17
17
 
18
18
  //#endregion
19
19
  //#region src/database/native-drivers.ts
20
- const runtimeRequire = createRequire(import.meta.url);
21
20
  function isBetterSqlite3Factory(value) {
22
21
  return typeof value === "function";
23
22
  }
@@ -29,12 +28,12 @@ function loadCjsDefault(module) {
29
28
  return module;
30
29
  }
31
30
  function loadBetterSqlite3() {
32
- const factory = loadCjsDefault(runtimeRequire("better-sqlite3"));
31
+ const factory = loadCjsDefault(createRequire(import.meta.url)("better-sqlite3"));
33
32
  if (!isBetterSqlite3Factory(factory)) throw new Error("Invalid better-sqlite3 module shape");
34
33
  return factory;
35
34
  }
36
35
  function loadLibsqlDialect() {
37
- const module = runtimeRequire("@libsql/kysely-libsql");
36
+ const module = createRequire(import.meta.url)("@libsql/kysely-libsql");
38
37
  const dialect = typeof module === "object" && module !== null && "LibsqlDialect" in module ? module.LibsqlDialect : void 0;
39
38
  if (!isLibsqlDialectConstructor(dialect)) throw new Error("Invalid @libsql/kysely-libsql module shape");
40
39
  return dialect;
@@ -1,124 +1,12 @@
1
- import { a as __exportAll } from "./runner-BWZ87FK-.mjs";
1
+ import { a as __exportAll } from "./runner-CQnzfBpD.mjs";
2
2
  import { t as validateIdentifier } from "./validate-VPnKoIzW.mjs";
3
- import { i as encodeCursor, n as ScheduledNotDueError, r as decodeCursor, t as DinewayValidationError } from "./types-C9F2TLQV.mjs";
3
+ import { i as encodeCursor, n as ScheduledNotDueError, r as decodeCursor, t as DinewayValidationError } from "./types-CFvpEEOl.mjs";
4
4
  import { o as invalidateCollectionCache } from "./object-cache-D51qOseS.mjs";
5
5
  import { n as slugify } from "./slugify-KSsVD_D3.mjs";
6
+ import { t as RevisionRepository } from "./revision-De7OmYVD.mjs";
6
7
  import { sql } from "kysely";
7
- import { monotonicFactory, ulid } from "ulidx";
8
+ import { ulid } from "ulidx";
8
9
 
9
- //#region src/database/repositories/revision.ts
10
- const monotonic = monotonicFactory();
11
- /**
12
- * Revision repository for version history
13
- *
14
- * Each revision stores a JSON snapshot of the content at a point in time.
15
- * Used when collection has `supports: ["revisions"]` enabled.
16
- */
17
- var RevisionRepository = class {
18
- constructor(db) {
19
- this.db = db;
20
- }
21
- /**
22
- * Create a new revision
23
- */
24
- async create(input) {
25
- const id = monotonic();
26
- const row = {
27
- id,
28
- collection: input.collection,
29
- entry_id: input.entryId,
30
- data: JSON.stringify(input.data),
31
- author_id: input.authorId ?? null
32
- };
33
- await this.db.insertInto("revisions").values(row).execute();
34
- const revision = await this.findById(id);
35
- if (!revision) throw new Error("Failed to create revision");
36
- return revision;
37
- }
38
- /**
39
- * Find revision by ID
40
- */
41
- async findById(id) {
42
- const row = await this.db.selectFrom("revisions").selectAll().where("id", "=", id).executeTakeFirst();
43
- return row ? this.rowToRevision(row) : null;
44
- }
45
- /**
46
- * Get all revisions for an entry (newest first)
47
- *
48
- * Orders by monotonic ULID (descending). The monotonic factory
49
- * guarantees strictly increasing IDs even within the same millisecond.
50
- */
51
- async findByEntry(collection, entryId, options = {}) {
52
- let query = this.db.selectFrom("revisions").selectAll().where("collection", "=", collection).where("entry_id", "=", entryId).orderBy("id", "desc");
53
- if (options.limit) query = query.limit(options.limit);
54
- return (await query.execute()).map((row) => this.rowToRevision(row));
55
- }
56
- /**
57
- * Get the most recent revision for an entry
58
- */
59
- async findLatest(collection, entryId) {
60
- const row = await this.db.selectFrom("revisions").selectAll().where("collection", "=", collection).where("entry_id", "=", entryId).orderBy("id", "desc").limit(1).executeTakeFirst();
61
- return row ? this.rowToRevision(row) : null;
62
- }
63
- /**
64
- * Count revisions for an entry
65
- */
66
- async countByEntry(collection, entryId) {
67
- const result = await this.db.selectFrom("revisions").select((eb) => eb.fn.count("id").as("count")).where("collection", "=", collection).where("entry_id", "=", entryId).executeTakeFirst();
68
- return Number(result?.count || 0);
69
- }
70
- /**
71
- * Delete all revisions for an entry (use when entry is deleted)
72
- */
73
- async deleteByEntry(collection, entryId) {
74
- const result = await this.db.deleteFrom("revisions").where("collection", "=", collection).where("entry_id", "=", entryId).executeTakeFirst();
75
- return Number(result.numDeletedRows ?? 0);
76
- }
77
- /**
78
- * Delete old revisions, keeping the most recent N and any revisions
79
- * referenced by the content entry's live or draft pointers.
80
- */
81
- async pruneOldRevisions(collection, entryId, keepCount) {
82
- const keep = await this.db.selectFrom("revisions").select("id").where("collection", "=", collection).where("entry_id", "=", entryId).orderBy("created_at", "desc").orderBy("id", "desc").limit(keepCount).execute();
83
- const keepIds = new Set(keep.map((r) => r.id));
84
- if (keepIds.size === 0) return 0;
85
- if (await this.db.selectFrom("_dineway_collections").select("slug").where("slug", "=", collection).executeTakeFirst()) {
86
- validateIdentifier(collection, "collection slug");
87
- const tableName = `ec_${collection}`;
88
- const row = (await sql`
89
- SELECT live_revision_id, draft_revision_id
90
- FROM ${sql.ref(tableName)}
91
- WHERE id = ${entryId}
92
- `.execute(this.db)).rows[0];
93
- if (row?.live_revision_id) keepIds.add(row.live_revision_id);
94
- if (row?.draft_revision_id) keepIds.add(row.draft_revision_id);
95
- }
96
- const result = await this.db.deleteFrom("revisions").where("collection", "=", collection).where("entry_id", "=", entryId).where("id", "not in", [...keepIds]).executeTakeFirst();
97
- return Number(result.numDeletedRows ?? 0);
98
- }
99
- /**
100
- * Update revision data in place
101
- * Used for autosave to avoid creating many small revisions.
102
- */
103
- async updateData(id, data) {
104
- await this.db.updateTable("revisions").set({ data: JSON.stringify(data) }).where("id", "=", id).execute();
105
- }
106
- /**
107
- * Convert database row to Revision object
108
- */
109
- rowToRevision(row) {
110
- return {
111
- id: row.id,
112
- collection: row.collection,
113
- entryId: row.entry_id,
114
- data: JSON.parse(row.data),
115
- authorId: row.author_id,
116
- createdAt: row.created_at
117
- };
118
- }
119
- };
120
-
121
- //#endregion
122
10
  //#region src/database/repositories/content.ts
123
11
  var content_exports = /* @__PURE__ */ __exportAll({ ContentRepository: () => ContentRepository });
124
12
  const ULID_PATTERN = /^[0-9A-Z]{26}$/;
@@ -975,4 +863,4 @@ var ContentRepository = class {
975
863
  };
976
864
 
977
865
  //#endregion
978
- export { content_exports as n, RevisionRepository as r, ContentRepository as t };
866
+ export { content_exports as n, ContentRepository as t };
@@ -1,10 +1,10 @@
1
1
  import { t as validateIdentifier } from "./validate-VPnKoIzW.mjs";
2
2
  import { r as isI18nEnabled } from "./config-CVssduLe.mjs";
3
- import { i as encodeCursor, r as decodeCursor } from "./types-C9F2TLQV.mjs";
4
- import { n as chunks, t as SQL_BATCH_SIZE } from "./chunks-B-1_U3oF.mjs";
5
- import { t as withTransaction } from "./transaction-Chz7SBGr.mjs";
6
- import { n as normalizeMime } from "./mime-C0vOHFm7.mjs";
7
- import { n as hashString } from "./hash-mxxx2oPW.mjs";
3
+ import { i as encodeCursor, r as decodeCursor } from "./types-CFvpEEOl.mjs";
4
+ import { n as chunks, t as SQL_BATCH_SIZE } from "./chunks-Bw3_BuVW.mjs";
5
+ import { t as withTransaction } from "./transaction-L0tzAOfM.mjs";
6
+ import { n as normalizeMime } from "./mime-Bg7yUeHW.mjs";
7
+ import { n as hashString } from "./hash-CEky-IDp.mjs";
8
8
  import { sql } from "kysely";
9
9
  import { ulid } from "ulidx";
10
10
 
@@ -1,16 +1,16 @@
1
1
  import { n as validateJsonFieldName } from "./validate-VPnKoIzW.mjs";
2
2
  import { c as jsonExtractExpr } from "./dialect-helpers-fk43GbDb.mjs";
3
- import { i as encodeCursor, r as decodeCursor } from "./types-C9F2TLQV.mjs";
4
- import { t as ContentRepository } from "./content-Bg_hMt4Q.mjs";
5
- import { t as MediaRepository } from "./media-D8pQJSug.mjs";
6
- import { t as UserRepository } from "./user-BV02bsWz.mjs";
7
- import { t as OptionsRepository } from "./options-DQPTH5n0.mjs";
8
- import { t as withTransaction } from "./transaction-Chz7SBGr.mjs";
9
- import { t as enrichImageMetadata } from "./enrich-Ck9tfMqe.mjs";
10
- import { t as SeoRepository } from "./seo-C4nlxiaY.mjs";
11
- import { a as markContentMediaUsageCollectionStaleSafely } from "./content-refresh-CHBBZGwf.mjs";
12
- import { a as validateExternalUrl, i as stripCredentialHeaders, t as SsrfError } from "./ssrf-Dz2hqAiG.mjs";
13
- import { t as CronAccessImpl } from "./cron-BjKHo0QD.mjs";
3
+ import { i as encodeCursor, r as decodeCursor } from "./types-CFvpEEOl.mjs";
4
+ import { t as ContentRepository } from "./content-CzUrmMC3.mjs";
5
+ import { t as MediaRepository } from "./media-4xtXwq7L.mjs";
6
+ import { t as UserRepository } from "./user-Dn3wV227.mjs";
7
+ import { t as OptionsRepository } from "./options-1dBRkoCl.mjs";
8
+ import { t as withTransaction } from "./transaction-L0tzAOfM.mjs";
9
+ import { t as enrichImageMetadata } from "./enrich-Uw_OA9Ve.mjs";
10
+ import { t as SeoRepository } from "./seo-BhMH6i2e.mjs";
11
+ import { a as markContentMediaUsageCollectionStaleSafely } from "./content-refresh-C_jcjzOr.mjs";
12
+ import { a as validateExternalUrl, i as stripCredentialHeaders, t as SsrfError } from "./ssrf-D00lPvtF.mjs";
13
+ import { t as CronAccessImpl } from "./cron-DIsnItPn.mjs";
14
14
  import { sql } from "kysely";
15
15
  import { ulid } from "ulidx";
16
16
 
@@ -1,5 +1,5 @@
1
- import { _ as toPublicContextDiff, v as toPublicContextEntry, y as toPublicContextEntryPage } from "./site-context-Bdsobbh9.mjs";
2
- import { a as ContextRepository, i as parseSiteBriefingScope, n as SiteBriefingError } from "./briefing-CpU_z8qH.mjs";
1
+ import { _ as toPublicContextDiff, v as toPublicContextEntry, y as toPublicContextEntryPage } from "./site-context-D2DmqFnD.mjs";
2
+ import { a as ContextRepository, i as parseSiteBriefingScope, n as SiteBriefingError } from "./briefing-Cd2HhhHi.mjs";
3
3
 
4
4
  //#region src/api/handlers/context.ts
5
5
  async function handleContextEntryList(db, input = {}) {
@@ -1,5 +1,5 @@
1
- import { n as resolveActorIdentity } from "./actor-D3A5PNkH.mjs";
2
- import { p as logSiteActivitySafely } from "./activity-events-DpvhcjTP.mjs";
1
+ import { n as resolveActorIdentity } from "./actor-BraTCiOp.mjs";
2
+ import { p as logSiteActivitySafely } from "./activity-events-BYksOnTL.mjs";
3
3
 
4
4
  //#region src/api/context-route-helpers.ts
5
5
  function resolveContextRouteActor(locals) {
@@ -1,8 +1,8 @@
1
1
  import { t as validateIdentifier } from "./validate-VPnKoIzW.mjs";
2
- import { t as ContentRepository } from "./content-Bg_hMt4Q.mjs";
3
- import { t as MediaRepository } from "./media-D8pQJSug.mjs";
4
- import { t as UserRepository } from "./user-BV02bsWz.mjs";
5
- import { t as ReviewRequestRepository } from "./review-requests-D5CJ4JCy.mjs";
2
+ import { t as ContentRepository } from "./content-CzUrmMC3.mjs";
3
+ import { t as MediaRepository } from "./media-4xtXwq7L.mjs";
4
+ import { t as UserRepository } from "./user-Dn3wV227.mjs";
5
+ import { t as ReviewRequestRepository } from "./review-requests-DaYnr3XR.mjs";
6
6
  import { sql } from "kysely";
7
7
 
8
8
  //#region src/api/handlers/dashboard.ts
@@ -1,4 +1,4 @@
1
- import "../types-C8cUW9dh.mjs";
2
- import { i as runMigrations, n as getMigrationStatus, r as rollbackMigration, t as MigrationStatus } from "../runner-BITx7yBF.mjs";
3
- import { a as SqliteConfig, c as sqlite, i as PostgresConfig, n as DatabaseDialectType, o as libsql, r as LibsqlConfig, s as postgres, t as DatabaseDescriptor } from "../adapters-DUVI3Mpc.mjs";
4
- export { type DatabaseDescriptor, type DatabaseDialectType, type LibsqlConfig, type MigrationStatus, type PostgresConfig, type SqliteConfig, getMigrationStatus, libsql, postgres, rollbackMigration, runMigrations, sqlite };
1
+ import "../types-B2W3CeZN.mjs";
2
+ import { i as runMigrations, n as getMigrationStatus, r as rollbackMigration, t as MigrationStatus } from "../runner-o39FihbH.mjs";
3
+ import { a as PostgresConfig, c as libsqlHttp, i as LibsqlHttpConfig, l as postgres, n as DatabaseDialectType, o as SqliteConfig, r as LibsqlConfig, s as libsql, t as DatabaseDescriptor, u as sqlite } from "../adapters-C-iHnQYy.mjs";
4
+ export { type DatabaseDescriptor, type DatabaseDialectType, type LibsqlConfig, type LibsqlHttpConfig, type MigrationStatus, type PostgresConfig, type SqliteConfig, getMigrationStatus, libsql, libsqlHttp, postgres, rollbackMigration, runMigrations, sqlite };
package/dist/db/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { i as runMigrations, n as getMigrationStatus, r as rollbackMigration } from "../runner-BWZ87FK-.mjs";
1
+ import { i as runMigrations, n as getMigrationStatus, r as rollbackMigration } from "../runner-CQnzfBpD.mjs";
2
2
  import "../dialect-helpers-fk43GbDb.mjs";
3
3
 
4
4
  //#region src/db/adapters.ts
@@ -40,6 +40,14 @@ function libsql(config) {
40
40
  type: "sqlite"
41
41
  };
42
42
  }
43
+ /** Remote libSQL over HTTP, suitable for Cloudflare Workers and ChatGPT Sites. */
44
+ function libsqlHttp(config = {}) {
45
+ return {
46
+ entrypoint: "dineway/db/libsql-http",
47
+ config,
48
+ type: "sqlite"
49
+ };
50
+ }
43
51
  /**
44
52
  * PostgreSQL database adapter
45
53
  *
@@ -59,4 +67,4 @@ function postgres(config) {
59
67
  }
60
68
 
61
69
  //#endregion
62
- export { getMigrationStatus, libsql, postgres, rollbackMigration, runMigrations, sqlite };
70
+ export { getMigrationStatus, libsql, libsqlHttp, postgres, rollbackMigration, runMigrations, sqlite };
@@ -0,0 +1,27 @@
1
+ import { i as LibsqlHttpConfig } from "../adapters-C-iHnQYy.mjs";
2
+ import { Kysely, MigrationLockOptions, SqliteAdapter } from "kysely";
3
+ import { LibsqlDialect } from "@libsql/kysely-libsql";
4
+
5
+ //#region src/db/libsql-dialect.d.ts
6
+ interface MigrationLockRow {
7
+ id: string;
8
+ is_locked: number;
9
+ }
10
+ type MigrationLockDatabase = Record<string, MigrationLockRow>;
11
+ declare class LibsqlMigrationLockAdapter extends SqliteAdapter {
12
+ #private;
13
+ acquireMigrationLock(db: Kysely<MigrationLockDatabase>, options: MigrationLockOptions): Promise<void>;
14
+ releaseMigrationLock(db: Kysely<MigrationLockDatabase>, options: MigrationLockOptions): Promise<void>;
15
+ }
16
+ declare class LibsqlDialect$1 extends LibsqlDialect {
17
+ createAdapter(): LibsqlMigrationLockAdapter;
18
+ }
19
+ //#endregion
20
+ //#region src/db/libsql-http.d.ts
21
+ declare function resolveLibsqlHttpConfig(config: LibsqlHttpConfig): {
22
+ url: string;
23
+ authToken?: string;
24
+ };
25
+ declare function createDialect(config: LibsqlHttpConfig): LibsqlDialect$1;
26
+ //#endregion
27
+ export { createDialect, resolveLibsqlHttpConfig };
@@ -0,0 +1,29 @@
1
+ import { t as LibsqlDialect } from "../libsql-dialect-DMqpBfJI.mjs";
2
+
3
+ //#region src/db/libsql-http.ts
4
+ const LIBSQL_SCHEME = /^libsql:/;
5
+ function resolveLibsqlHttpConfig(config) {
6
+ const url = config.url || process.env.DINEWAY_DATABASE_URL;
7
+ if (!url) throw new Error("libsqlHttp requires DINEWAY_DATABASE_URL at runtime.");
8
+ let parsed;
9
+ try {
10
+ parsed = new URL(url);
11
+ } catch {
12
+ throw new Error("libsqlHttp requires a remote libsql:// or HTTP(S) database URL.");
13
+ }
14
+ if (![
15
+ "libsql:",
16
+ "http:",
17
+ "https:"
18
+ ].includes(parsed.protocol) || !parsed.hostname || parsed.username || parsed.password) throw new Error("libsqlHttp requires a remote libsql:// or HTTP(S) database URL without embedded credentials.");
19
+ return {
20
+ url: parsed.protocol === "libsql:" ? url.replace(LIBSQL_SCHEME, "https:") : url,
21
+ authToken: config.authToken || process.env.DINEWAY_DATABASE_AUTH_TOKEN
22
+ };
23
+ }
24
+ function createDialect(config) {
25
+ return new LibsqlDialect(resolveLibsqlHttpConfig(config));
26
+ }
27
+
28
+ //#endregion
29
+ export { createDialect, resolveLibsqlHttpConfig };
@@ -1,4 +1,4 @@
1
- import { r as LibsqlConfig } from "../adapters-DUVI3Mpc.mjs";
1
+ import { r as LibsqlConfig } from "../adapters-C-iHnQYy.mjs";
2
2
  import { Dialect } from "kysely";
3
3
 
4
4
  //#region src/db/libsql.d.ts
@@ -1,5 +1,5 @@
1
- import { SqliteAdapter, SqliteDialect } from "kysely";
2
- import { LibsqlDialect } from "@libsql/kysely-libsql";
1
+ import { t as LibsqlDialect } from "../libsql-dialect-DMqpBfJI.mjs";
2
+ import { SqliteDialect } from "kysely";
3
3
  import BetterSqlite3 from "better-sqlite3";
4
4
 
5
5
  //#region src/db/libsql.ts
@@ -12,52 +12,12 @@ import BetterSqlite3 from "better-sqlite3";
12
12
  * remote libSQL deployments.
13
13
  * Loaded at runtime via virtual module.
14
14
  */
15
- const MIGRATION_LOCK_LEASE_MS = 5 * 6e4;
16
- const MIGRATION_LOCK_WAIT_MS = 3e4;
17
- const MIGRATION_LOCK_POLL_MS = 50;
18
- function sleep(ms) {
19
- return new Promise((resolve) => setTimeout(resolve, ms));
20
- }
21
- var LibsqlMigrationLockAdapter = class extends SqliteAdapter {
22
- #claims = /* @__PURE__ */ new Map();
23
- async acquireMigrationLock(db, options) {
24
- const queryDb = options.lockTableSchema ? db.withSchema(options.lockTableSchema) : db;
25
- const claimKey = `${options.lockTableSchema ?? ""}.${options.lockTable}:${options.lockRowId}`;
26
- const waitDeadline = Date.now() + MIGRATION_LOCK_WAIT_MS;
27
- for (;;) {
28
- const now = Date.now();
29
- const claim = now + MIGRATION_LOCK_LEASE_MS;
30
- if ((await queryDb.updateTable(options.lockTable).set({ is_locked: claim }).where("id", "=", options.lockRowId).where((expression) => expression.or([expression("is_locked", "=", 0), expression("is_locked", "<=", now)])).executeTakeFirst()).numUpdatedRows === 1n) {
31
- this.#claims.set(claimKey, claim);
32
- return;
33
- }
34
- if (now >= waitDeadline) throw new Error("Timed out waiting for the libSQL migration lock");
35
- await sleep(MIGRATION_LOCK_POLL_MS);
36
- }
37
- }
38
- async releaseMigrationLock(db, options) {
39
- const claimKey = `${options.lockTableSchema ?? ""}.${options.lockTable}:${options.lockRowId}`;
40
- const claim = this.#claims.get(claimKey);
41
- if (claim === void 0) return;
42
- const queryDb = options.lockTableSchema ? db.withSchema(options.lockTableSchema) : db;
43
- try {
44
- await queryDb.updateTable(options.lockTable).set({ is_locked: 0 }).where("id", "=", options.lockRowId).where("is_locked", "=", claim).execute();
45
- } finally {
46
- this.#claims.delete(claimKey);
47
- }
48
- }
49
- };
50
- var LibsqlDialect$1 = class extends LibsqlDialect {
51
- createAdapter() {
52
- return new LibsqlMigrationLockAdapter();
53
- }
54
- };
55
15
  /**
56
16
  * Create a libSQL dialect from config
57
17
  */
58
18
  function createDialect(config) {
59
19
  if (config.url === ":memory:" || config.url.startsWith("file:")) return new SqliteDialect({ database: new BetterSqlite3(config.url === ":memory:" ? config.url : config.url.slice(5)) });
60
- return new LibsqlDialect$1({
20
+ return new LibsqlDialect({
61
21
  url: config.url,
62
22
  authToken: config.authToken
63
23
  });
@@ -1,4 +1,4 @@
1
- import { i as PostgresConfig } from "../adapters-DUVI3Mpc.mjs";
1
+ import { a as PostgresConfig } from "../adapters-C-iHnQYy.mjs";
2
2
  import { PostgresDialect } from "kysely";
3
3
 
4
4
  //#region src/db/postgres.d.ts
@@ -1,4 +1,4 @@
1
- import { a as SqliteConfig } from "../adapters-DUVI3Mpc.mjs";
1
+ import { o as SqliteConfig } from "../adapters-C-iHnQYy.mjs";
2
2
  import { Dialect } from "kysely";
3
3
 
4
4
  //#region src/db/sqlite.d.ts
@@ -1,8 +1,8 @@
1
- import { t as withTransaction } from "./transaction-Chz7SBGr.mjs";
2
- import { a as hashApiToken, n as TOKEN_PREFIXES, r as generatePrefixedToken, t as ALL_VALID_SCOPES } from "./api-tokens-CbMAy6xF.mjs";
3
- import { a as filterExperimentalSiteContextWorkflowScopes, i as experimentalSiteContextWorkflowsEnabled, o as getExperimentalSiteContextWorkflowScopesDisabledMessage, r as disabledExperimentalSiteContextWorkflowScopes } from "./experimental-workflows-EYZRNkRR.mjs";
4
- import { o as lookupOAuthClient } from "./oauth-clients-CLdR0WyA.mjs";
5
- import { t as lookupUserRoleAndStatus } from "./oauth-user-lookup-CP16vyFW.mjs";
1
+ import { t as withTransaction } from "./transaction-L0tzAOfM.mjs";
2
+ import { a as hashApiToken, n as TOKEN_PREFIXES, r as generatePrefixedToken, t as ALL_VALID_SCOPES } from "./api-tokens-CZ472rzA.mjs";
3
+ import { a as filterExperimentalSiteContextWorkflowScopes, i as experimentalSiteContextWorkflowsEnabled, o as getExperimentalSiteContextWorkflowScopesDisabledMessage, r as disabledExperimentalSiteContextWorkflowScopes } from "./experimental-workflows-DOo7QDRn.mjs";
4
+ import { o as lookupOAuthClient } from "./oauth-clients-DLJMG4h7.mjs";
5
+ import { t as lookupUserRoleAndStatus } from "./oauth-user-lookup-D2NAYPjU.mjs";
6
6
  import { clampScopes } from "@dineway-ai/auth";
7
7
  import { generateCodeVerifier } from "arctic";
8
8
 
@@ -1,6 +1,8 @@
1
1
  import { t as validateIdentifier } from "./validate-VPnKoIzW.mjs";
2
- import { i as encodeCursor, r as decodeCursor } from "./types-C9F2TLQV.mjs";
3
- import { n as SchemaRegistry } from "./registry-D3n4-yUl.mjs";
2
+ import { i as encodeCursor, r as decodeCursor } from "./types-CFvpEEOl.mjs";
3
+ import { n as publicDiscoveryExclusions } from "./public-discovery-CyDzK1-S.mjs";
4
+ import { n as SchemaRegistry } from "./registry-QxrUJAWY.mjs";
5
+ import { t as resolveContentUrl } from "./public-url-DjWfilkD.mjs";
4
6
  import { sql } from "kysely";
5
7
 
6
8
  //#region src/seo/canonical-url.ts
@@ -18,51 +20,6 @@ function resolveCanonicalUrl(value, siteUrl) {
18
20
  }
19
21
  }
20
22
 
21
- //#endregion
22
- //#region src/seo/public-url.ts
23
- const PLACEHOLDER_RE = /\{[^}]+\}/;
24
- const MULTIPLE_SLASHES_RE = /\/+/g;
25
- const UNSAFE_SLUG_RE = /[\\/?#\s]/;
26
- const UNSAFE_PATH_RE = /[\\?#\s]/;
27
- const DOT_SEGMENT_RE = /(?:^|\/)\.{1,2}(?:\/|$)/;
28
- /**
29
- * Returns a same-origin public URL, or null when the collection has no usable route.
30
- * urlField paths are authoritative, including case, trailing slash and locale prefix.
31
- * Pattern routes add locale prefixes and preserve the declared slash convention. Never infer a route from
32
- * a collection name when the site has not declared one.
33
- */
34
- function resolveContentUrl(input) {
35
- const { cfg, urlField, urlPattern } = input;
36
- const locale = input.locale || cfg?.defaultLocale;
37
- if (cfg && (!locale || !cfg.locales.includes(locale))) return null;
38
- let path;
39
- if (urlField) {
40
- const value = input.data?.[urlField];
41
- if (typeof value !== "string" || !value) return null;
42
- path = value;
43
- } else {
44
- if (!urlPattern?.includes("{slug}") || !input.slug || UNSAFE_SLUG_RE.test(input.slug)) return null;
45
- if (input.slug === "." || input.slug === "..") return null;
46
- path = urlPattern.replaceAll("{slug}", encodeURIComponent(input.slug));
47
- if (PLACEHOLDER_RE.test(path)) return null;
48
- if (!path.startsWith("/")) path = `/${path}`;
49
- if (path.startsWith("//")) return null;
50
- path = path.replace(MULTIPLE_SLASHES_RE, "/");
51
- if (cfg && (locale !== cfg.defaultLocale || cfg.prefixDefaultLocale)) path = `/${locale}${path}`;
52
- }
53
- if (!path.startsWith("/") || path.startsWith("//") || UNSAFE_PATH_RE.test(path)) return null;
54
- try {
55
- if (DOT_SEGMENT_RE.test(decodeURIComponent(path))) return null;
56
- const origin = new URL(input.siteUrl);
57
- if (!["http:", "https:"].includes(origin.protocol) || origin.username || origin.password) return null;
58
- const url = new URL(path, origin.origin);
59
- if (url.origin !== origin.origin) return null;
60
- return url.href;
61
- } catch {
62
- return null;
63
- }
64
- }
65
-
66
23
  //#endregion
67
24
  //#region src/seo/discovery.ts
68
25
  /**
@@ -85,6 +42,9 @@ async function listPublicContent(db, options) {
85
42
  for (let index = 0; index < collections.length; index++) {
86
43
  const collection = collections[index];
87
44
  validateIdentifier(collection.slug, "collection slug");
45
+ const exclusions = publicDiscoveryExclusions(collection);
46
+ const visibilityClauses = [...collection.publicDiscovery?.requireLiveRevision ? [sql`AND c.live_revision_id IS NOT NULL`] : [], ...exclusions.map((field) => sql`AND coalesce(${sql.ref(`c.${field}`)}, 0) = 0`)];
47
+ const visibility = visibilityClauses.length ? sql.join(visibilityClauses, sql` `) : sql``;
88
48
  const textFields = new Set(collection.fields.filter((field) => [
89
49
  "string",
90
50
  "text",
@@ -114,7 +74,7 @@ async function listPublicContent(db, options) {
114
74
  s.seo_title, s.seo_description, s.seo_canonical, s.seo_image ${projection}
115
75
  FROM ${sql.ref(`ec_${collection.slug}`)} c
116
76
  LEFT JOIN _dineway_seo s ON s.collection = ${collection.slug} AND s.content_id = c.id
117
- WHERE c.status = 'published' AND c.deleted_at IS NULL
77
+ WHERE c.status = 'published' AND c.deleted_at IS NULL ${visibility}
118
78
  AND (s.seo_no_index IS NULL OR s.seo_no_index = 0) ${after} ${identities} ${group} ${localeFilter} ${pathFilter} ${prefixFilter} ${searchFilter}
119
79
  ORDER BY c.id ASC LIMIT ${remaining + 1}
120
80
  `.execute(db)).rows;
@@ -175,4 +135,4 @@ function escapeLike(value) {
175
135
  }
176
136
 
177
137
  //#endregion
178
- export { resolveContentUrl as n, resolveCanonicalUrl as r, listPublicContent as t };
138
+ export { resolveCanonicalUrl as n, listPublicContent as t };