dineway 0.1.11 → 0.1.13

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 (334) hide show
  1. package/dist/{allowed-origins-DG86sH8U.mjs → allowed-origins-C1AKK9AT.mjs} +1 -1
  2. package/dist/api/route-utils.d.mts +10 -9
  3. package/dist/api/route-utils.mjs +7 -7
  4. package/dist/api/schemas/index.d.mts +1 -1
  5. package/dist/api/schemas/index.mjs +2 -2
  6. package/dist/{api-Cmy8Rjk5.mjs → api-Lyjc8wqZ.mjs} +4 -4
  7. package/dist/{api-tokens-Bu3ez1MO.mjs → api-tokens-D7UjLbdt.mjs} +1 -1
  8. package/dist/{apply-Co5imxxT.mjs → apply-Bm5QgdrE.mjs} +5 -5
  9. package/dist/astro/index.d.mts +11 -10
  10. package/dist/astro/index.mjs +3 -3
  11. package/dist/astro/middleware/auth.d.mts +10 -9
  12. package/dist/astro/middleware/auth.mjs +5 -5
  13. package/dist/astro/middleware/request-context.mjs +2 -2
  14. package/dist/astro/middleware/setup.mjs +1 -1
  15. package/dist/astro/middleware.mjs +42 -40
  16. package/dist/astro/routes/api/admin/allowed-domains/_domain_.mjs +4 -4
  17. package/dist/astro/routes/api/admin/allowed-domains/index.mjs +4 -4
  18. package/dist/astro/routes/api/admin/api-tokens/_id_.mjs +4 -4
  19. package/dist/astro/routes/api/admin/api-tokens/index.mjs +6 -6
  20. package/dist/astro/routes/api/admin/briefing.mjs +7 -7
  21. package/dist/astro/routes/api/admin/bylines/_id_/index.mjs +6 -6
  22. package/dist/astro/routes/api/admin/bylines/index.mjs +6 -6
  23. package/dist/astro/routes/api/admin/comments/_id_/status.mjs +8 -8
  24. package/dist/astro/routes/api/admin/comments/_id_.mjs +3 -3
  25. package/dist/astro/routes/api/admin/comments/bulk.mjs +6 -6
  26. package/dist/astro/routes/api/admin/comments/counts.mjs +3 -3
  27. package/dist/astro/routes/api/admin/comments/index.mjs +6 -6
  28. package/dist/astro/routes/api/admin/context/_id_/history.mjs +11 -10
  29. package/dist/astro/routes/api/admin/context/_id_/index.mjs +11 -10
  30. package/dist/astro/routes/api/admin/context/_id_/review.mjs +15 -14
  31. package/dist/astro/routes/api/admin/context/_id_/supersede.mjs +15 -14
  32. package/dist/astro/routes/api/admin/context/diff.mjs +14 -13
  33. package/dist/astro/routes/api/admin/context/index.mjs +15 -14
  34. package/dist/astro/routes/api/admin/context/stale.mjs +14 -13
  35. package/dist/astro/routes/api/admin/hitl-requests/_id_/index.mjs +11 -10
  36. package/dist/astro/routes/api/admin/hitl-requests/_id_/resolve.mjs +14 -13
  37. package/dist/astro/routes/api/admin/hitl-requests/index.mjs +14 -13
  38. package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.mjs +12 -11
  39. package/dist/astro/routes/api/admin/hooks/exclusive/index.mjs +2 -2
  40. package/dist/astro/routes/api/admin/oauth-clients/_id_.mjs +6 -6
  41. package/dist/astro/routes/api/admin/oauth-clients/index.mjs +6 -6
  42. package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs +24 -23
  43. package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs +24 -23
  44. package/dist/astro/routes/api/admin/plugins/_id_/index.mjs +18 -17
  45. package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs +23 -22
  46. package/dist/astro/routes/api/admin/plugins/_id_/update.mjs +23 -22
  47. package/dist/astro/routes/api/admin/plugins/index.mjs +18 -17
  48. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.mjs +2 -2
  49. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs +18 -17
  50. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs +23 -22
  51. package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs +18 -17
  52. package/dist/astro/routes/api/admin/plugins/updates.mjs +18 -17
  53. package/dist/astro/routes/api/admin/review-requests/_id_/index.mjs +2 -2
  54. package/dist/astro/routes/api/admin/review-requests/_id_/resolve.mjs +13 -12
  55. package/dist/astro/routes/api/admin/review-requests/index.mjs +5 -5
  56. package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs +18 -17
  57. package/dist/astro/routes/api/admin/themes/marketplace/_id_/thumbnail.mjs +2 -2
  58. package/dist/astro/routes/api/admin/themes/marketplace/index.mjs +18 -17
  59. package/dist/astro/routes/api/admin/users/_id_/disable.mjs +1 -1
  60. package/dist/astro/routes/api/admin/users/_id_/enable.mjs +1 -1
  61. package/dist/astro/routes/api/admin/users/_id_/index.mjs +4 -4
  62. package/dist/astro/routes/api/admin/users/_id_/send-recovery.mjs +2 -2
  63. package/dist/astro/routes/api/admin/users/index.mjs +4 -4
  64. package/dist/astro/routes/api/auth/dev-bypass.mjs +3 -3
  65. package/dist/astro/routes/api/auth/invite/accept.mjs +1 -1
  66. package/dist/astro/routes/api/auth/invite/complete.mjs +8 -8
  67. package/dist/astro/routes/api/auth/invite/index.mjs +5 -5
  68. package/dist/astro/routes/api/auth/invite/register-options.mjs +7 -7
  69. package/dist/astro/routes/api/auth/logout.mjs +2 -2
  70. package/dist/astro/routes/api/auth/magic-link/send.mjs +7 -7
  71. package/dist/astro/routes/api/auth/magic-link/verify.mjs +2 -2
  72. package/dist/astro/routes/api/auth/me.mjs +4 -4
  73. package/dist/astro/routes/api/auth/mode.mjs +1 -1
  74. package/dist/astro/routes/api/auth/oauth/_provider_/callback.mjs +2 -2
  75. package/dist/astro/routes/api/auth/oauth/_provider_.mjs +2 -2
  76. package/dist/astro/routes/api/auth/passkey/_id_.mjs +4 -4
  77. package/dist/astro/routes/api/auth/passkey/index.mjs +1 -1
  78. package/dist/astro/routes/api/auth/passkey/options.mjs +9 -9
  79. package/dist/astro/routes/api/auth/passkey/register/options.mjs +7 -7
  80. package/dist/astro/routes/api/auth/passkey/register/verify.mjs +8 -8
  81. package/dist/astro/routes/api/auth/passkey/verify.mjs +8 -8
  82. package/dist/astro/routes/api/auth/signup/complete.mjs +8 -8
  83. package/dist/astro/routes/api/auth/signup/request.mjs +7 -7
  84. package/dist/astro/routes/api/auth/signup/verify.mjs +1 -1
  85. package/dist/astro/routes/api/comments/_collection_/_contentId_/index.mjs +9 -9
  86. package/dist/astro/routes/api/content/_collection_/_id_/compare.mjs +2 -2
  87. package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs +3 -3
  88. package/dist/astro/routes/api/content/_collection_/_id_/duplicate.mjs +3 -3
  89. package/dist/astro/routes/api/content/_collection_/_id_/permanent.mjs +3 -3
  90. package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs +8 -8
  91. package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs +13 -12
  92. package/dist/astro/routes/api/content/_collection_/_id_/restore.mjs +3 -3
  93. package/dist/astro/routes/api/content/_collection_/_id_/revisions.mjs +2 -2
  94. package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs +6 -6
  95. package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs +6 -6
  96. package/dist/astro/routes/api/content/_collection_/_id_/translations.mjs +2 -2
  97. package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs +3 -3
  98. package/dist/astro/routes/api/content/_collection_/_id_.mjs +6 -6
  99. package/dist/astro/routes/api/content/_collection_/index.mjs +6 -6
  100. package/dist/astro/routes/api/content/_collection_/trash.mjs +5 -5
  101. package/dist/astro/routes/api/dashboard.mjs +2 -2
  102. package/dist/astro/routes/api/dev/emails.mjs +2 -2
  103. package/dist/astro/routes/api/health.mjs +1 -1
  104. package/dist/astro/routes/api/import/probe.d.mts +3 -3
  105. package/dist/astro/routes/api/import/probe.mjs +8 -8
  106. package/dist/astro/routes/api/import/wordpress/analyze.mjs +3 -3
  107. package/dist/astro/routes/api/import/wordpress/execute.mjs +12 -11
  108. package/dist/astro/routes/api/import/wordpress/media.mjs +6 -6
  109. package/dist/astro/routes/api/import/wordpress/prepare.mjs +15 -14
  110. package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs +14 -13
  111. package/dist/astro/routes/api/import/wordpress-plugin/analyze.d.mts +1 -1
  112. package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs +8 -8
  113. package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts +1 -1
  114. package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs +16 -15
  115. package/dist/astro/routes/api/manifest.mjs +4 -4
  116. package/dist/astro/routes/api/mcp.mjs +22 -21
  117. package/dist/astro/routes/api/media/_id_/confirm.mjs +5 -5
  118. package/dist/astro/routes/api/media/_id_.mjs +5 -5
  119. package/dist/astro/routes/api/media/file/_...key_.mjs +1 -1
  120. package/dist/astro/routes/api/media/providers/_providerId_/_itemId_.mjs +2 -2
  121. package/dist/astro/routes/api/media/providers/_providerId_/index.mjs +2 -2
  122. package/dist/astro/routes/api/media/providers/index.mjs +2 -2
  123. package/dist/astro/routes/api/media/upload-url.mjs +5 -5
  124. package/dist/astro/routes/api/media.mjs +5 -5
  125. package/dist/astro/routes/api/menus/_name_/items.mjs +15 -14
  126. package/dist/astro/routes/api/menus/_name_/reorder.mjs +15 -14
  127. package/dist/astro/routes/api/menus/_name_.mjs +15 -14
  128. package/dist/astro/routes/api/menus/index.mjs +15 -14
  129. package/dist/astro/routes/api/oauth/authorize.mjs +7 -7
  130. package/dist/astro/routes/api/oauth/device/authorize.mjs +6 -6
  131. package/dist/astro/routes/api/oauth/device/code.mjs +9 -9
  132. package/dist/astro/routes/api/oauth/device/token.mjs +8 -8
  133. package/dist/astro/routes/api/oauth/register.mjs +4 -4
  134. package/dist/astro/routes/api/oauth/token/refresh.mjs +6 -6
  135. package/dist/astro/routes/api/oauth/token/revoke.mjs +6 -6
  136. package/dist/astro/routes/api/oauth/token.mjs +6 -6
  137. package/dist/astro/routes/api/openapi.json.mjs +3 -3
  138. package/dist/astro/routes/api/plugins/_pluginId_/_...path_.mjs +3 -3
  139. package/dist/astro/routes/api/redirects/404s/index.mjs +6 -6
  140. package/dist/astro/routes/api/redirects/404s/summary.mjs +6 -6
  141. package/dist/astro/routes/api/redirects/_id_.mjs +15 -14
  142. package/dist/astro/routes/api/redirects/index.mjs +15 -14
  143. package/dist/astro/routes/api/revisions/_revisionId_/index.mjs +2 -2
  144. package/dist/astro/routes/api/revisions/_revisionId_/restore.mjs +2 -2
  145. package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs +19 -18
  146. package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs +19 -18
  147. package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs +19 -18
  148. package/dist/astro/routes/api/schema/collections/_slug_/index.mjs +19 -18
  149. package/dist/astro/routes/api/schema/collections/index.mjs +19 -18
  150. package/dist/astro/routes/api/schema/index.mjs +2 -2
  151. package/dist/astro/routes/api/schema/orphans/_slug_.mjs +18 -17
  152. package/dist/astro/routes/api/schema/orphans/index.mjs +18 -17
  153. package/dist/astro/routes/api/search/enable.mjs +6 -6
  154. package/dist/astro/routes/api/search/index.mjs +5 -5
  155. package/dist/astro/routes/api/search/rebuild.mjs +6 -6
  156. package/dist/astro/routes/api/search/stats.mjs +3 -3
  157. package/dist/astro/routes/api/search/suggest.mjs +5 -5
  158. package/dist/astro/routes/api/sections/_slug_.mjs +15 -14
  159. package/dist/astro/routes/api/sections/index.mjs +15 -14
  160. package/dist/astro/routes/api/settings/email.mjs +3 -3
  161. package/dist/astro/routes/api/settings.mjs +15 -14
  162. package/dist/astro/routes/api/setup/admin-verify.mjs +10 -10
  163. package/dist/astro/routes/api/setup/admin.mjs +8 -8
  164. package/dist/astro/routes/api/setup/dev-bypass.mjs +11 -11
  165. package/dist/astro/routes/api/setup/dev-reset.mjs +1 -1
  166. package/dist/astro/routes/api/setup/index.mjs +11 -11
  167. package/dist/astro/routes/api/setup/status.mjs +3 -3
  168. package/dist/astro/routes/api/snapshot.mjs +5 -5
  169. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs +16 -15
  170. package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs +16 -15
  171. package/dist/astro/routes/api/taxonomies/index.mjs +16 -15
  172. package/dist/astro/routes/api/themes/preview.mjs +4 -4
  173. package/dist/astro/routes/api/typegen.mjs +1 -1
  174. package/dist/astro/routes/api/well-known/auth.mjs +2 -2
  175. package/dist/astro/routes/api/well-known/oauth-authorization-server.mjs +3 -3
  176. package/dist/astro/routes/api/well-known/oauth-protected-resource.mjs +3 -3
  177. package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs +14 -13
  178. package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs +15 -14
  179. package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs +15 -14
  180. package/dist/astro/routes/api/widget-areas/_name_.mjs +13 -12
  181. package/dist/astro/routes/api/widget-areas/index.mjs +15 -14
  182. package/dist/astro/routes/api/widget-components.mjs +2 -2
  183. package/dist/astro/routes/robots.txt.mjs +2 -2
  184. package/dist/astro/routes/sitemap-_collection_.xml.mjs +2 -2
  185. package/dist/astro/routes/sitemap.xml.mjs +3 -3
  186. package/dist/astro/types.d.mts +13 -12
  187. package/dist/auth/providers/github.d.mts +1 -1
  188. package/dist/auth/providers/google.d.mts +1 -1
  189. package/dist/{auth-control-guard-DKUe_1oa.mjs → auth-control-guard-DOZ3UCsP.mjs} +1 -1
  190. package/dist/{authorize-BBj8C6Y8.mjs → authorize-BAdbMCwC.mjs} +1 -1
  191. package/dist/{briefing-BrXCuMEE.mjs → briefing-MVYe_Uyf.mjs} +1 -1
  192. package/dist/{briefing-ClWw4mc9.mjs → briefing-rty4O-wa.mjs} +1 -1
  193. package/dist/{bylines-BcOPh6Ej.mjs → bylines-C4LIBOOO.mjs} +1 -1
  194. package/dist/{bylines-HfUKum_j.d.mts → bylines-DCvz5gtm.d.mts} +13 -13
  195. package/dist/cli/index.mjs +7 -7
  196. package/dist/client/external-auth-headers.d.mts +1 -1
  197. package/dist/client/index.d.mts +1 -1
  198. package/dist/client/index.mjs +1 -1
  199. package/dist/{context-nxMyOe3p.mjs → context-CNIkMzot.mjs} +2 -2
  200. package/dist/{context-bE5Kyvcj.mjs → context-DNfcm853.mjs} +2 -2
  201. package/dist/{context-route-helpers-D-6uCQ0S.mjs → context-route-helpers-MurhoxWF.mjs} +1 -1
  202. package/dist/db/index.d.mts +3 -3
  203. package/dist/db/libsql.d.mts +1 -1
  204. package/dist/db/postgres.d.mts +1 -1
  205. package/dist/db/sqlite.d.mts +1 -1
  206. package/dist/{device-flow-7AhWNwCK.mjs → device-flow-BGEH5jfn.mjs} +4 -4
  207. package/dist/{hitl-requests-Bx3Bkk9l.mjs → hitl-requests-ChT32Ilo.mjs} +2 -2
  208. package/dist/{hitl-route-helpers-DMmJRS7B.mjs → hitl-route-helpers-CSit54Ru.mjs} +4 -4
  209. package/dist/{import-DVZcYlDp.mjs → import-BHRLhXAn.mjs} +2 -2
  210. package/dist/{import-DD3f2jkc.mjs → import-CNcKWTbp.mjs} +1 -1
  211. package/dist/{index-CkljPf5F.d.mts → index-CYfhYgXd.d.mts} +2 -2
  212. package/dist/index-EUAWaIxW.d.mts +835 -0
  213. package/dist/index.d.mts +16 -14
  214. package/dist/index.mjs +35 -32
  215. package/dist/jsonld-D2gUY4kA.d.mts +141 -0
  216. package/dist/media/index.d.mts +2 -1
  217. package/dist/media/local-runtime.d.mts +12 -11
  218. package/dist/menus-DYW_UHjv.mjs +256 -0
  219. package/dist/{oauth-authorization-C1qiw4hd.mjs → oauth-authorization-DxGjiWKL.mjs} +4 -4
  220. package/dist/{oauth-clients-CvWatf5p.mjs → oauth-clients-DxO_NO7k.mjs} +2 -2
  221. package/dist/page/index.d.mts +2 -139
  222. package/dist/page/index.mjs +1 -427
  223. package/dist/{parse-BeQXIt1U.mjs → parse-C9106ehs.mjs} +1 -1
  224. package/dist/placeholder-Bh1dfUOd.d.mts +40 -0
  225. package/dist/plugins/adapt-sandbox-entry.d.mts +10 -9
  226. package/dist/plugins/adapt-sandbox-entry.mjs +1 -1
  227. package/dist/{menus-CrzHokKj.mjs → plugins-D7-ILNib.mjs} +4 -257
  228. package/dist/{preview-C_4DyVox.mjs → preview-DvYRU-Oy.mjs} +2 -2
  229. package/dist/provider-loader-BiQ6lNmf.d.mts +20 -0
  230. package/dist/provider-loader-C21b9OpH.mjs +36 -0
  231. package/dist/{query-RiobVwB5.mjs → query-B9BO5goQ.mjs} +3 -3
  232. package/dist/{schema-BNpI53of.mjs → query-CsbOywSY.mjs} +1 -6
  233. package/dist/{rate-limit-CbJoj_fT.mjs → rate-limit-DmVTHI5v.mjs} +2 -2
  234. package/dist/{redirects-CqaxraTO.mjs → redirects-lrlmYXVE.mjs} +2 -49
  235. package/dist/{request-meta-Bd0mQfiS.mjs → request-meta-DixlNKKa.mjs} +1 -1
  236. package/dist/{runner-9eIQXuc2.d.mts → runner-BU6Lo1ZS.d.mts} +1 -1
  237. package/dist/{runtime-C4-7y7xK.d.mts → runtime-QuuFSlc6.d.mts} +104 -932
  238. package/dist/runtime.d.mts +11 -28
  239. package/dist/runtime.mjs +1 -35
  240. package/dist/schema-BECjUhP8.mjs +8 -0
  241. package/dist/seed/index.d.mts +2 -2
  242. package/dist/seed/index.mjs +6 -6
  243. package/dist/seo/index.d.mts +1 -1
  244. package/dist/seo-contributions-B1fWCnqY.mjs +429 -0
  245. package/dist/{service-CSfcQguB.mjs → service-CyOsm0R6.mjs} +1 -1
  246. package/dist/{settings-4XnpVMOS.mjs → settings-DGtLLSaz.mjs} +15 -1
  247. package/dist/{settings-Bw93cLfe.mjs → settings-Dzgswvg4.mjs} +1 -1
  248. package/dist/{site-context-Bpu_Paur.mjs → site-context-WBxoD99D.mjs} +6 -6
  249. package/dist/storage/local.d.mts +1 -1
  250. package/dist/storage/local.mjs +1 -1
  251. package/dist/storage/s3.d.mts +1 -1
  252. package/dist/storage/s3.mjs +1 -1
  253. package/dist/{taxonomies-BvBgfzn3.mjs → taxonomies-D2aZGuns.mjs} +2 -2
  254. package/dist/{taxonomies-CpqGcIJD.mjs → taxonomies-z6Lz91BC.mjs} +1 -1
  255. package/dist/{placeholder-CHkLckzK.d.mts → types-OPs5Q_sX.d.mts} +1 -38
  256. package/dist/{types-DgfUZqcd.d.mts → types-Q616b2Hn.d.mts} +1 -1
  257. package/dist/ui/client-runtime.d.mts +12 -0
  258. package/dist/ui/client-runtime.mjs +32 -0
  259. package/dist/ui/server-runtime.d.mts +33 -0
  260. package/dist/ui/server-runtime.mjs +80 -0
  261. package/dist/url-DNjT2abR.mjs +49 -0
  262. package/dist/{validate-JCZihRIa.d.mts → validate-BwmQEbu8.d.mts} +3 -3
  263. package/dist/version-C5JkNvmb.mjs +6 -0
  264. package/dist/{widgets-B7Q_7bxN.mjs → widgets-B7DRpZvy.mjs} +1 -1
  265. package/package.json +19 -5
  266. package/src/components/Button.astro +1 -1
  267. package/src/components/CommentForm.astro +1 -1
  268. package/src/components/Comments.astro +1 -3
  269. package/src/components/DinewayBodyEnd.astro +5 -3
  270. package/src/components/DinewayBodyStart.astro +5 -3
  271. package/src/components/DinewayHead.astro +9 -7
  272. package/src/components/DinewayImage.astro +6 -4
  273. package/src/components/DinewayMedia.astro +7 -4
  274. package/src/components/Embed.astro +1 -2
  275. package/src/components/File.astro +1 -1
  276. package/src/components/Gallery.astro +1 -1
  277. package/src/components/HtmlBlock.astro +1 -1
  278. package/src/components/Image.astro +5 -3
  279. package/src/components/InlinePortableTextEditor.tsx +1 -2
  280. package/src/components/PortableText.astro +1 -1
  281. package/src/components/WidgetArea.astro +1 -1
  282. package/src/components/WidgetRenderer.astro +1 -3
  283. package/src/components/marks/Link.astro +1 -1
  284. package/src/components/widgets/Archives.astro +1 -1
  285. package/src/components/widgets/Categories.astro +1 -1
  286. package/src/components/widgets/RecentPosts.astro +1 -1
  287. package/src/components/widgets/Tags.astro +1 -1
  288. package/dist/version-DH53KCQd.mjs +0 -6
  289. /package/dist/{activity-events-BsMaXdJa.mjs → activity-events-B4wp7CrU.mjs} +0 -0
  290. /package/dist/{adapters-BLDldpJg.d.mts → adapters-DuLQZhRY.d.mts} +0 -0
  291. /package/dist/{api-tokens-DzloJxuh.mjs → api-tokens-CPjC3zf8.mjs} +0 -0
  292. /package/dist/{challenge-store-DHMgBGOq.mjs → challenge-store-DDTbisbf.mjs} +0 -0
  293. /package/dist/{comments-Gy3zLBaP.mjs → comments--BsZ9pqA.mjs} +0 -0
  294. /package/dist/{components-DND2rd3D.mjs → components-BPknylYg.mjs} +0 -0
  295. /package/dist/{cron-DGzVTtJp.mjs → cron-CKxvBrRT.mjs} +0 -0
  296. /package/dist/{db-errors-DKUg_NgF.mjs → db-errors-DyZkswzF.mjs} +0 -0
  297. /package/dist/{default-C3PZN-bz.mjs → default-D4ngTpW8.mjs} +0 -0
  298. /package/dist/{email-console-CgLVZbcn.mjs → email-console-CuefUXfX.mjs} +0 -0
  299. /package/dist/{error-DEGjx2Xw.mjs → error-BMUPwxgx.mjs} +0 -0
  300. /package/dist/{escape-mNZr4t2A.mjs → escape-BRVaw1Ai.mjs} +0 -0
  301. /package/dist/{experimental-workflows-DldxJlqV.mjs → experimental-workflows-C9X7yblQ.mjs} +0 -0
  302. /package/dist/{load-D-9NhLmF.mjs → load-B2XtDw__.mjs} +0 -0
  303. /package/dist/{manifest-schema-DYoCQ5np.mjs → manifest-schema-CgFJAp0H.mjs} +0 -0
  304. /package/dist/{menus-BacxVCCo.mjs → menus-DS3_5nWY.mjs} +0 -0
  305. /package/dist/{mode-C80mAZQv.mjs → mode-DUhxwUhv.mjs} +0 -0
  306. /package/dist/{oauth-state-store-hSdzxsEe.mjs → oauth-state-store-C5UFhzwD.mjs} +0 -0
  307. /package/dist/{oauth-user-lookup-B4OcmsLV.mjs → oauth-user-lookup-Bi0ek9eM.mjs} +0 -0
  308. /package/dist/{passkey-config-Daqs5fjq.mjs → passkey-config-BRSZx4pW.mjs} +0 -0
  309. /package/dist/{public-url-BB_umF5G.mjs → public-url-Cun8N3NU.mjs} +0 -0
  310. /package/dist/{redirect-ClSmMOtC.mjs → redirect-COZy-3iY.mjs} +0 -0
  311. /package/dist/{redirects-B69T59hK.mjs → redirects-Cgi_cZfN.mjs} +0 -0
  312. /package/dist/{search-DM6CVti3.mjs → search-DqTHQqtV.mjs} +0 -0
  313. /package/dist/{secrets-dI8zzTV7.mjs → secrets-CkoJ9zN0.mjs} +0 -0
  314. /package/dist/{sections-DZFyAQXd.mjs → sections-B61OxnfB.mjs} +0 -0
  315. /package/dist/{seo-BBgTCOYU.mjs → seo-C007Luwn.mjs} +0 -0
  316. /package/dist/{setup-complete-DidsDQ1e.mjs → setup-complete-ChilE-da.mjs} +0 -0
  317. /package/dist/{setup-nonce-pml1PMKo.mjs → setup-nonce-BpmLXAuu.mjs} +0 -0
  318. /package/dist/{sidecar-client-vzwV98K4.mjs → sidecar-client-B1C6Cf80.mjs} +0 -0
  319. /package/dist/{site-url-CYIcO0Tj.mjs → site-url-BP7k7OCe.mjs} +0 -0
  320. /package/dist/{ssrf-CmM76lLV.mjs → ssrf-DDwRxF6B.mjs} +0 -0
  321. /package/dist/{tokens-DLTo4dO2.mjs → tokens-BOJw-D9F.mjs} +0 -0
  322. /package/dist/{transport-6RefuBdV.d.mts → transport-BXe1AM79.d.mts} +0 -0
  323. /package/dist/{transport-C9e_h-BF.mjs → transport-D3i4yWRE.mjs} +0 -0
  324. /package/dist/{trusted-proxy-Bi0Cuk5n.mjs → trusted-proxy-BbaZfkT9.mjs} +0 -0
  325. /package/dist/{types-C982qI5I.d.mts → types-0Vr68fc2.d.mts} +0 -0
  326. /package/dist/{types-B9qVtiHb.d.mts → types-B7kpsMJ3.d.mts} +0 -0
  327. /package/dist/{types-D4XVOt01.d.mts → types-BFmjniC2.d.mts} +0 -0
  328. /package/dist/{types-IPACEM14.d.mts → types-C0mmVRJN.d.mts} +0 -0
  329. /package/dist/{types-Djdp0cZO.d.mts → types-DJlpx5Ay.d.mts} +0 -0
  330. /package/dist/{types-Du8jreyC.d.mts → types-DZPw8Rru.d.mts} +0 -0
  331. /package/dist/{types-B9gKVOHk.mjs → types-fAInWQDO.mjs} +0 -0
  332. /package/dist/{utils-D2in-zwy.mjs → utils-C0ONdBul.mjs} +0 -0
  333. /package/dist/{validate-BJgA6TW_.mjs → validate-C7TzfamJ.mjs} +0 -0
  334. /package/dist/{wordpress-slugs-BevajWrC.mjs → wordpress-slugs-CnporCYH.mjs} +0 -0
@@ -1,12 +1,7 @@
1
- import { t as validateIdentifier } from "./validate-VPnKoIzW.mjs";
2
- import { t as CommentRepository } from "./comment-DFO-gWDH.mjs";
3
1
  import { t as OptionsRepository } from "./options-z8VVg1Ll.mjs";
4
- import { n as createPluginContext, t as PluginContextFactory } from "./context-nxMyOe3p.mjs";
5
- import { r as getDb } from "./loader-PZnPxFLc.mjs";
6
- import { n as requestCached } from "./request-cache-DHMRr2Lf.mjs";
7
- import { lt as sanitizeHref } from "./redirects-CqaxraTO.mjs";
8
- import { t as extractRequestMeta } from "./request-meta-Bd0mQfiS.mjs";
9
- import { r as setCronTasksEnabled } from "./cron-DGzVTtJp.mjs";
2
+ import { n as createPluginContext, t as PluginContextFactory } from "./context-CNIkMzot.mjs";
3
+ import { t as extractRequestMeta } from "./request-meta-DixlNKKa.mjs";
4
+ import { r as setCronTasksEnabled } from "./cron-CKxvBrRT.mjs";
10
5
  import { sql } from "kysely";
11
6
  import { AsyncLocalStorage } from "node:async_hooks";
12
7
  import { ulid } from "ulidx";
@@ -3251,252 +3246,4 @@ function isStandardPluginDefinition(value) {
3251
3246
  }
3252
3247
 
3253
3248
  //#endregion
3254
- //#region src/comments/query.ts
3255
- /**
3256
- * Get approved comments for a content item.
3257
- *
3258
- * @example
3259
- * ```ts
3260
- * import { getComments } from "dineway";
3261
- *
3262
- * const { items, total } = await getComments({
3263
- * collection: "posts",
3264
- * contentId: post.id,
3265
- * threaded: true,
3266
- * });
3267
- * ```
3268
- */
3269
- async function getComments(options) {
3270
- return getCommentsWithDb(await getDb(), options);
3271
- }
3272
- /**
3273
- * Get approved comments with an explicit db handle.
3274
- *
3275
- * @internal Use `getComments()` in templates. This variant is for routes
3276
- * that already have a database handle.
3277
- */
3278
- async function getCommentsWithDb(db, options) {
3279
- const repo = new CommentRepository(db);
3280
- const total = await repo.countByContent(options.collection, options.contentId, "approved");
3281
- const result = await repo.findByContent(options.collection, options.contentId, {
3282
- status: "approved",
3283
- limit: 500
3284
- });
3285
- if (options.threaded) return {
3286
- items: CommentRepository.assembleThreads(result.items).map((c) => CommentRepository.toPublicComment(c)),
3287
- total
3288
- };
3289
- return {
3290
- items: result.items.map((c) => CommentRepository.toPublicComment(c)),
3291
- total
3292
- };
3293
- }
3294
- /**
3295
- * Get the count of approved comments for a content item.
3296
- *
3297
- * @example
3298
- * ```ts
3299
- * import { getCommentCount } from "dineway";
3300
- *
3301
- * const count = await getCommentCount("posts", post.id);
3302
- * ```
3303
- */
3304
- async function getCommentCount(collection, contentId) {
3305
- return getCommentCountWithDb(await getDb(), collection, contentId);
3306
- }
3307
- /**
3308
- * Get comment count with an explicit db handle.
3309
- *
3310
- * @internal Use `getCommentCount()` in templates.
3311
- */
3312
- async function getCommentCountWithDb(db, collection, contentId) {
3313
- return new CommentRepository(db).countByContent(collection, contentId, "approved");
3314
- }
3315
-
3316
- //#endregion
3317
- //#region src/menus/index.ts
3318
- /**
3319
- * Get menu by name with resolved URLs
3320
- *
3321
- * @example
3322
- * ```ts
3323
- * import { getMenu } from "dineway";
3324
- *
3325
- * const menu = await getMenu("primary");
3326
- * if (menu) {
3327
- * console.log(menu.items); // Array of MenuItem with resolved URLs
3328
- * }
3329
- * ```
3330
- */
3331
- function getMenu(name) {
3332
- return requestCached(`menu:${name}`, async () => {
3333
- return getMenuWithDb(name, await getDb());
3334
- });
3335
- }
3336
- /**
3337
- * Get menu by name with resolved URLs (with explicit db)
3338
- *
3339
- * @internal Use `getMenu()` in templates. This variant is for admin routes
3340
- * that already have a database handle.
3341
- */
3342
- async function getMenuWithDb(name, db) {
3343
- const menuRow = await db.selectFrom("_dineway_menus").selectAll().where("name", "=", name).executeTakeFirst();
3344
- if (!menuRow) return null;
3345
- const items = await buildMenuTree(await db.selectFrom("_dineway_menu_items").selectAll().$castTo().where("menu_id", "=", menuRow.id).orderBy("sort_order", "asc").execute(), db);
3346
- return {
3347
- id: menuRow.id,
3348
- name: menuRow.name,
3349
- label: menuRow.label,
3350
- items
3351
- };
3352
- }
3353
- /**
3354
- * Get all menus (without items - for admin list)
3355
- *
3356
- * @example
3357
- * ```ts
3358
- * import { getMenus } from "dineway";
3359
- *
3360
- * const menus = await getMenus();
3361
- * console.log(menus); // [{ id, name, label }]
3362
- * ```
3363
- */
3364
- async function getMenus() {
3365
- return getMenusWithDb(await getDb());
3366
- }
3367
- /**
3368
- * Get all menus (with explicit db)
3369
- *
3370
- * @internal Use `getMenus()` in templates. This variant is for admin routes
3371
- * that already have a database handle.
3372
- */
3373
- async function getMenusWithDb(db) {
3374
- return await db.selectFrom("_dineway_menus").select([
3375
- "id",
3376
- "name",
3377
- "label"
3378
- ]).orderBy("name", "asc").execute();
3379
- }
3380
- /**
3381
- * Build hierarchical menu tree from flat array of items
3382
- */
3383
- async function buildMenuTree(items, db) {
3384
- const collectionSlugs = /* @__PURE__ */ new Set();
3385
- for (const item of items) {
3386
- if (item.reference_collection) collectionSlugs.add(item.reference_collection);
3387
- if (item.type === "page" || item.type === "post") collectionSlugs.add(item.reference_collection || `${item.type}s`);
3388
- }
3389
- const urlPatterns = /* @__PURE__ */ new Map();
3390
- if (collectionSlugs.size > 0) {
3391
- const rows = await db.selectFrom("_dineway_collections").select(["slug", "url_pattern"]).where("slug", "in", [...collectionSlugs]).execute();
3392
- for (const row of rows) urlPatterns.set(row.slug, row.url_pattern);
3393
- }
3394
- const validItems = (await Promise.all(items.map((item) => resolveMenuItem(item, db, urlPatterns)))).filter((item) => item !== null);
3395
- const itemMap = /* @__PURE__ */ new Map();
3396
- const rootItems = [];
3397
- for (const item of validItems) itemMap.set(item.id, {
3398
- ...item,
3399
- children: []
3400
- });
3401
- for (const item of items) {
3402
- const menuItem = itemMap.get(item.id);
3403
- if (!menuItem) continue;
3404
- if (item.parent_id) {
3405
- const parent = itemMap.get(item.parent_id);
3406
- if (parent) parent.children.push(menuItem);
3407
- else rootItems.push(menuItem);
3408
- } else rootItems.push(menuItem);
3409
- }
3410
- return rootItems;
3411
- }
3412
- /**
3413
- * Resolve a single menu item's URL
3414
- *
3415
- * Returns null if the referenced content no longer exists (item should be skipped)
3416
- */
3417
- async function resolveMenuItem(item, db, urlPatterns) {
3418
- let url;
3419
- try {
3420
- switch (item.type) {
3421
- case "custom":
3422
- url = item.custom_url || "#";
3423
- break;
3424
- case "page":
3425
- case "post":
3426
- url = await resolveContentUrl(item.reference_collection || `${item.type}s`, item.reference_id, db, urlPatterns);
3427
- if (url === null) return null;
3428
- break;
3429
- case "taxonomy":
3430
- url = await resolveTaxonomyUrl(item.reference_id, db);
3431
- if (url === null) return null;
3432
- break;
3433
- case "collection":
3434
- url = `/${item.reference_collection}/`;
3435
- break;
3436
- default: if (item.reference_collection && item.reference_id) {
3437
- url = await resolveContentUrl(item.reference_collection, item.reference_id, db, urlPatterns);
3438
- if (url === null) return null;
3439
- } else url = "#";
3440
- }
3441
- } catch (error) {
3442
- console.error(`Failed to resolve menu item ${item.id}:`, error);
3443
- return null;
3444
- }
3445
- return {
3446
- id: item.id,
3447
- label: item.label,
3448
- url: sanitizeHref(url),
3449
- target: item.target || void 0,
3450
- titleAttr: item.title_attr || void 0,
3451
- cssClasses: item.css_classes || void 0,
3452
- children: []
3453
- };
3454
- }
3455
- const SLUG_PLACEHOLDER = /\{slug\}/g;
3456
- const ID_PLACEHOLDER = /\{id\}/g;
3457
- /**
3458
- * Interpolate a URL pattern with entry data
3459
- *
3460
- * Replaces `{slug}` and `{id}` placeholders.
3461
- */
3462
- function interpolateUrlPattern(pattern, slug, id) {
3463
- return pattern.replace(SLUG_PLACEHOLDER, slug).replace(ID_PLACEHOLDER, id);
3464
- }
3465
- /**
3466
- * Resolve URL for a content entry (page/post)
3467
- *
3468
- * Uses the collection's url_pattern if set, otherwise falls back to /{collection}/{slug}.
3469
- * Returns null if content not found (item should be skipped).
3470
- */
3471
- async function resolveContentUrl(collection, entryId, db, urlPatterns) {
3472
- if (!entryId) return null;
3473
- try {
3474
- validateIdentifier(collection, "menu item collection");
3475
- const row = (await sql`
3476
- SELECT slug FROM ${sql.ref(`ec_${collection}`)} WHERE id = ${entryId} LIMIT 1
3477
- `.execute(db)).rows[0];
3478
- if (row) {
3479
- const pattern = urlPatterns.get(collection);
3480
- if (pattern) return interpolateUrlPattern(pattern, row.slug, entryId);
3481
- return `/${collection}/${row.slug}`;
3482
- }
3483
- return null;
3484
- } catch (error) {
3485
- console.error(`Failed to resolve content URL for ${collection}/${entryId}:`, error);
3486
- return null;
3487
- }
3488
- }
3489
- /**
3490
- * Resolve URL for a taxonomy term
3491
- *
3492
- * Returns null if taxonomy not found (item should be skipped)
3493
- */
3494
- async function resolveTaxonomyUrl(taxonomyId, db) {
3495
- if (!taxonomyId) return null;
3496
- const taxonomy = await db.selectFrom("taxonomies").select(["name", "slug"]).where("id", "=", taxonomyId).executeTakeFirst();
3497
- if (!taxonomy) return null;
3498
- return `/${taxonomy.name}/${taxonomy.slug}`;
3499
- }
3500
-
3501
- //#endregion
3502
- export { portableText as C, prosemirrorToPortableText as S, image as T, createHookPipeline as _, isStandardPluginDefinition as a, after as b, NoopSandboxRunner as c, PluginManager as d, createPluginManager as f, HookPipeline as g, EmailPipeline as h, getComments as i, SandboxNotAvailableError as l, PluginRouteRegistry as m, getMenus as n, NodeSandboxRunner as o, PluginRouteError as p, getCommentCount as r, createNodeSandboxRunner as s, getMenu as t, createNoopSandboxRunner as u, resolveExclusiveHooks as v, reference as w, portableTextToProsemirror as x, definePlugin as y };
3249
+ export { portableTextToProsemirror as _, SandboxNotAvailableError as a, reference as b, createPluginManager as c, EmailPipeline as d, HookPipeline as f, after as g, definePlugin as h, NoopSandboxRunner as i, PluginRouteError as l, resolveExclusiveHooks as m, NodeSandboxRunner as n, createNoopSandboxRunner as o, createHookPipeline as p, createNodeSandboxRunner as r, PluginManager as s, isStandardPluginDefinition as t, PluginRouteRegistry as u, prosemirrorToPortableText as v, image as x, portableText as y };
@@ -1,7 +1,7 @@
1
1
  import { runWithContext } from "./request-context.mjs";
2
2
  import { n as createDatabase } from "./connection-BCNICDWN.mjs";
3
- import { a as verifyPreviewSignature, t as buildPreviewSignatureHeader } from "./sidecar-client-vzwV98K4.mjs";
4
- import { t as generatePreviewToken } from "./tokens-DLTo4dO2.mjs";
3
+ import { a as verifyPreviewSignature, t as buildPreviewSignatureHeader } from "./sidecar-client-B1C6Cf80.mjs";
4
+ import { t as generatePreviewToken } from "./tokens-BOJw-D9F.mjs";
5
5
  import BetterSqlite3 from "better-sqlite3";
6
6
  import { sql } from "kysely";
7
7
  import { ulid } from "ulidx";
@@ -0,0 +1,20 @@
1
+ import { l as MediaProvider } from "./types-OPs5Q_sX.mjs";
2
+
3
+ //#region src/media/provider-loader.d.ts
4
+ /**
5
+ * Get a media provider by ID.
6
+ *
7
+ * Used by DinewayMedia component for frontend rendering.
8
+ * Providers are lazy-loaded from virtual module and cached.
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * const provider = await getMediaProvider("image-cdn");
13
+ * if (provider) {
14
+ * const embed = provider.getEmbed(mediaValue, { width: 800 });
15
+ * }
16
+ * ```
17
+ */
18
+ declare function getMediaProvider(providerId: string): Promise<MediaProvider | undefined>;
19
+ //#endregion
20
+ export { getMediaProvider as t };
@@ -0,0 +1,36 @@
1
+ //#region src/media/provider-loader.ts
2
+ let virtualMediaProviders;
3
+ const mediaProviderInstances = /* @__PURE__ */ new Map();
4
+ /**
5
+ * Load media providers from virtual module
6
+ */
7
+ async function loadMediaProviders() {
8
+ if (virtualMediaProviders === void 0) virtualMediaProviders = (await import("virtual:dineway/media-providers")).mediaProviders || [];
9
+ }
10
+ /**
11
+ * Get a media provider by ID.
12
+ *
13
+ * Used by DinewayMedia component for frontend rendering.
14
+ * Providers are lazy-loaded from virtual module and cached.
15
+ *
16
+ * @example
17
+ * ```ts
18
+ * const provider = await getMediaProvider("image-cdn");
19
+ * if (provider) {
20
+ * const embed = provider.getEmbed(mediaValue, { width: 800 });
21
+ * }
22
+ * ```
23
+ */
24
+ async function getMediaProvider(providerId) {
25
+ const cached = mediaProviderInstances.get(providerId);
26
+ if (cached) return cached;
27
+ await loadMediaProviders();
28
+ const entry = virtualMediaProviders?.find((p) => p.id === providerId);
29
+ if (!entry) return;
30
+ const provider = entry.createProvider({});
31
+ mediaProviderInstances.set(providerId, provider);
32
+ return provider;
33
+ }
34
+
35
+ //#endregion
36
+ export { getMediaProvider as t };
@@ -4,7 +4,7 @@ import { r as encodeCursor } from "./types-Bs6lTBBW.mjs";
4
4
  import { n as getI18nConfig, r as isI18nEnabled, t as getFallbackChain } from "./config-CAMFxGaV.mjs";
5
5
  import { t as CURSOR_RAW_VALUES } from "./loader-PZnPxFLc.mjs";
6
6
  import { n as requestCached } from "./request-cache-DHMRr2Lf.mjs";
7
- import { t as isMissingTableError } from "./db-errors-DKUg_NgF.mjs";
7
+ import { t as isMissingTableError } from "./db-errors-DyZkswzF.mjs";
8
8
 
9
9
  //#region src/visual-editing/editable.ts
10
10
  /**
@@ -436,7 +436,7 @@ async function getDinewayEntry(type, id, options) {
436
436
  async function hydrateEntryBylines(type, entries) {
437
437
  if (entries.length === 0) return;
438
438
  try {
439
- const { getBylinesForEntries } = await import("./bylines-BcOPh6Ej.mjs").then((n) => n.t);
439
+ const { getBylinesForEntries } = await import("./bylines-C4LIBOOO.mjs").then((n) => n.t);
440
440
  const refs = entries.map((entry) => {
441
441
  const data = entryData(entry);
442
442
  const id = dataStr(data, "id");
@@ -465,7 +465,7 @@ async function hydrateEntryBylines(type, entries) {
465
465
  async function hydrateEntryTerms(type, entries) {
466
466
  if (entries.length === 0) return;
467
467
  try {
468
- const { getAllTermsForEntries } = await import("./taxonomies-BvBgfzn3.mjs").then((n) => n.l);
468
+ const { getAllTermsForEntries } = await import("./taxonomies-D2aZGuns.mjs").then((n) => n.l);
469
469
  const ids = entries.map((entry) => dataStr(entryData(entry), "id")).filter(Boolean);
470
470
  if (ids.length === 0) return;
471
471
  const termsMap = await getAllTermsForEntries(type, ids);
@@ -1,4 +1,3 @@
1
- import { t as __exportAll } from "./chunk-ClPoSABd.mjs";
2
1
  import { n as SchemaRegistry } from "./registry-C-_hxLqa.mjs";
3
2
  import { r as getDb } from "./loader-PZnPxFLc.mjs";
4
3
  import { n as requestCached } from "./request-cache-DHMRr2Lf.mjs";
@@ -33,8 +32,4 @@ async function getCollectionInfoWithDb(db, slug) {
33
32
  }
34
33
 
35
34
  //#endregion
36
- //#region src/schema/index.ts
37
- var schema_exports = /* @__PURE__ */ __exportAll({ SchemaRegistry: () => SchemaRegistry });
38
-
39
- //#endregion
40
- export { getCollectionInfo as n, schema_exports as t };
35
+ export { getCollectionInfo as t };
@@ -1,5 +1,5 @@
1
- import { t as apiError } from "./error-DEGjx2Xw.mjs";
2
- import { n as normalizeTrustedHeaders } from "./trusted-proxy-Bi0Cuk5n.mjs";
1
+ import { t as apiError } from "./error-BMUPwxgx.mjs";
2
+ import { n as normalizeTrustedHeaders } from "./trusted-proxy-BbaZfkT9.mjs";
3
3
  import { sql } from "kysely";
4
4
 
5
5
  //#region src/auth/rate-limit.ts
@@ -1,3 +1,4 @@
1
+ import { t as isSafeHref } from "./url-DNjT2abR.mjs";
1
2
  import { z } from "zod";
2
3
 
3
4
  //#region src/api/schemas/common.ts
@@ -568,54 +569,6 @@ const commentCountsResponseSchema = z.object({
568
569
  }).meta({ id: "CommentCountsResponse" });
569
570
  const commentBulkResponseSchema = z.object({ affected: z.number().int() }).meta({ id: "CommentBulkResponse" });
570
571
 
571
- //#endregion
572
- //#region src/utils/url.ts
573
- /**
574
- * URL scheme validation utilities
575
- *
576
- * Prevents XSS via dangerous URL schemes (javascript:, data:, vbscript:, etc.)
577
- * by allowlisting known-safe schemes before rendering into href attributes.
578
- */
579
- /**
580
- * Matches URLs that are safe to render in href attributes.
581
- *
582
- * Allowed:
583
- * - http:// and https://
584
- * - mailto: and tel:
585
- * - Relative paths (starting with /)
586
- * - Fragment links (starting with #)
587
- * - Protocol-relative URLs are NOT allowed (starting with //) as they can
588
- * redirect to attacker-controlled hosts.
589
- */
590
- const SAFE_URL_SCHEME_RE = /^(https?:|mailto:|tel:|\/(?!\/)|#)/i;
591
- /**
592
- * Returns the URL unchanged if it uses a safe scheme, otherwise returns "#".
593
- *
594
- * Use this at the render layer as the primary defense against XSS via
595
- * dangerous URL schemes like `javascript:`, `data:`, or `vbscript:`.
596
- *
597
- * @example
598
- * ```ts
599
- * sanitizeHref("https://example.com") // "https://example.com"
600
- * sanitizeHref("/about") // "/about"
601
- * sanitizeHref("#section") // "#section"
602
- * sanitizeHref("mailto:a@b.com") // "mailto:a@b.com"
603
- * sanitizeHref("javascript:alert(1)") // "#"
604
- * sanitizeHref("data:text/html,<script>") // "#"
605
- * sanitizeHref("") // "#"
606
- * ```
607
- */
608
- function sanitizeHref(url) {
609
- if (!url) return "#";
610
- return SAFE_URL_SCHEME_RE.test(url) ? url : "#";
611
- }
612
- /**
613
- * Returns true if the URL uses a safe scheme for rendering in href attributes.
614
- */
615
- function isSafeHref(url) {
616
- return SAFE_URL_SCHEME_RE.test(url);
617
- }
618
-
619
572
  //#endregion
620
573
  //#region src/api/schemas/menus.ts
621
574
  const menuItemType = z.string().min(1);
@@ -1067,4 +1020,4 @@ const notFoundSummarySchema = z.object({
1067
1020
  const notFoundSummaryResponseSchema = z.object({ items: z.array(notFoundSummarySchema) }).meta({ id: "NotFoundSummaryResponse" });
1068
1021
 
1069
1022
  //#endregion
1070
- export { menuItemDeleteQuery as $, contentListQuery as $t, searchRebuildBody as A, slugPattern as An, fieldSchema as At, updateSectionBody as B, mediaConfirmResponseSchema as Bt, userDetailSchema as C, countResponseSchema as Cn, collectionSchema as Ct, usersListQuery as D, localeCode as Dn, fieldListResponseSchema as Dt, userUpdateBody as E, httpUrl as En, createFieldBody as Et, siteSettingsSchema as F, updateCollectionBody as Ft, termGetResponseSchema as G, mediaProviderListQuery as Gt, createTermBody as H, mediaItemSchema as Ht, createSectionBody as I, updateFieldBody as It, termSchema as J, mediaUploadUrlBody as Jt, termListResponseSchema as K, mediaResponseSchema as Kt, sectionListResponseSchema as L, DEFAULT_MAX_UPLOAD_SIZE as Lt, searchResultSchema as M, orphanedTableListResponseSchema as Mt, searchSuggestQuery as N, orphanedTableSchema as Nt, searchEnableBody as O, offsetPaginationQuery as On, fieldReorderBody as Ot, settingsUpdateBody as P, schemaExportQuery as Pt, createMenuItemBody as Q, contentItemSchema as Qt, sectionSchema as R, formatFileSize as Rt, allowedDomainUpdateBody as S, apiErrorSchema as Sn, collectionResponseSchema as St, userSchema as T, deleteResponseSchema as Tn, createCollectionBody as Tt, taxonomyDefSchema as U, mediaListQuery as Ut, createTaxonomyDefBody as V, mediaExistingResponseSchema as Vt, taxonomyListResponseSchema as W, mediaListResponseSchema as Wt, updateTermBody as X, contentCompareResponseSchema as Xt, termWithCountSchema as Y, mediaUploadUrlResponseSchema as Yt, createMenuBody as Z, contentCreateBody as Zt, widgetAreaSchema as _, bylineSummarySchema as _n, createCommentBody as _t, notFoundPruneBody as a, contentSeoInput as an, reorderMenuItemsBody as at, widgetSchema as b, contentBylineInputSchema as bn, collectionGetQuery as bt, notFoundSummarySchema as c, contentTranslationSchema as cn, isSafeHref as ct, redirectsListQuery as d, contentUpdateBody as dn, commentBulkBody as dt, contentListResponseSchema as en, menuItemSchema as et, updateRedirectBody as f, trashedContentItemSchema as fn, commentBulkResponseSchema as ft, updateWidgetBody as g, bylineListResponseSchema as gn, commentStatusBody as gt, reorderWidgetsBody as h, bylineCreditSchema as hn, commentSchema as ht, notFoundListResponseSchema as i, contentScheduleBody as in, menuWithItemsSchema as it, searchResponseSchema as j, successEnvelope as jn, orphanRegisterBody as jt, searchQuery as k, roleLevel as kn, fieldResponseSchema as kt, redirectListResponseSchema as l, contentTranslationsResponseSchema as ln, sanitizeHref as lt, createWidgetBody as m, bylineCreateBody as mn, commentListQuery as mt, notFoundEntrySchema as n, contentPublishBody as nn, menuListItemSchema as nt, notFoundSummaryQuery as o, contentSeoSchema as on, updateMenuBody as ot, createWidgetAreaBody as p, trashedContentListResponseSchema as pn, commentCountsResponseSchema as pt, termResponseSchema as q, mediaUpdateBody as qt, notFoundListQuery as r, contentResponseSchema as rn, menuSchema as rt, notFoundSummaryResponseSchema as s, contentTermsBody as sn, updateMenuItemBody as st, createRedirectBody as t, contentPreviewUrlBody as tn, menuItemUpdateQuery as tt, redirectSchema as u, contentTrashQuery as un, adminCommentListResponseSchema as ut, widgetAreaWithWidgetsAndCountSchema as v, bylineUpdateBody as vn, publicCommentListResponseSchema as vt, userListResponseSchema as w, cursorPaginationQuery as wn, collectionWithFieldsResponseSchema as wt, allowedDomainCreateBody as x, VALID_ROLE_LEVELS as xn, collectionListResponseSchema as xt, widgetAreaWithWidgetsSchema as y, bylinesListQuery as yn, publicCommentSchema as yt, sectionsListQuery as z, mediaConfirmBody as zt };
1023
+ export { menuItemDeleteQuery as $, contentPreviewUrlBody as $t, searchRebuildBody as A, orphanedTableListResponseSchema as At, updateSectionBody as B, mediaItemSchema as Bt, userDetailSchema as C, deleteResponseSchema as Cn, createCollectionBody as Ct, usersListQuery as D, roleLevel as Dn, fieldResponseSchema as Dt, userUpdateBody as E, offsetPaginationQuery as En, fieldReorderBody as Et, siteSettingsSchema as F, DEFAULT_MAX_UPLOAD_SIZE as Ft, termGetResponseSchema as G, mediaUpdateBody as Gt, createTermBody as H, mediaListResponseSchema as Ht, createSectionBody as I, formatFileSize as It, termSchema as J, contentCompareResponseSchema as Jt, termListResponseSchema as K, mediaUploadUrlBody as Kt, sectionListResponseSchema as L, mediaConfirmBody as Lt, searchResultSchema as M, schemaExportQuery as Mt, searchSuggestQuery as N, updateCollectionBody as Nt, searchEnableBody as O, slugPattern as On, fieldSchema as Ot, settingsUpdateBody as P, updateFieldBody as Pt, createMenuItemBody as Q, contentListResponseSchema as Qt, sectionSchema as R, mediaConfirmResponseSchema as Rt, allowedDomainUpdateBody as S, cursorPaginationQuery as Sn, collectionWithFieldsResponseSchema as St, userSchema as T, localeCode as Tn, fieldListResponseSchema as Tt, taxonomyDefSchema as U, mediaProviderListQuery as Ut, createTaxonomyDefBody as V, mediaListQuery as Vt, taxonomyListResponseSchema as W, mediaResponseSchema as Wt, updateTermBody as X, contentItemSchema as Xt, termWithCountSchema as Y, contentCreateBody as Yt, createMenuBody as Z, contentListQuery as Zt, widgetAreaSchema as _, bylinesListQuery as _n, publicCommentSchema as _t, notFoundPruneBody as a, contentTermsBody as an, reorderMenuItemsBody as at, widgetSchema as b, apiErrorSchema as bn, collectionResponseSchema as bt, notFoundSummarySchema as c, contentTrashQuery as cn, adminCommentListResponseSchema as ct, redirectsListQuery as d, trashedContentListResponseSchema as dn, commentCountsResponseSchema as dt, contentPublishBody as en, menuItemSchema as et, updateRedirectBody as f, bylineCreateBody as fn, commentListQuery as ft, updateWidgetBody as g, bylineUpdateBody as gn, publicCommentListResponseSchema as gt, reorderWidgetsBody as h, bylineSummarySchema as hn, createCommentBody as ht, notFoundListResponseSchema as i, contentSeoSchema as in, menuWithItemsSchema as it, searchResponseSchema as j, orphanedTableSchema as jt, searchQuery as k, successEnvelope as kn, orphanRegisterBody as kt, redirectListResponseSchema as l, contentUpdateBody as ln, commentBulkBody as lt, createWidgetBody as m, bylineListResponseSchema as mn, commentStatusBody as mt, notFoundEntrySchema as n, contentScheduleBody as nn, menuListItemSchema as nt, notFoundSummaryQuery as o, contentTranslationSchema as on, updateMenuBody as ot, createWidgetAreaBody as p, bylineCreditSchema as pn, commentSchema as pt, termResponseSchema as q, mediaUploadUrlResponseSchema as qt, notFoundListQuery as r, contentSeoInput as rn, menuSchema as rt, notFoundSummaryResponseSchema as s, contentTranslationsResponseSchema as sn, updateMenuItemBody as st, createRedirectBody as t, contentResponseSchema as tn, menuItemUpdateQuery as tt, redirectSchema as u, trashedContentItemSchema as un, commentBulkResponseSchema as ut, widgetAreaWithWidgetsAndCountSchema as v, contentBylineInputSchema as vn, collectionGetQuery as vt, userListResponseSchema as w, httpUrl as wn, createFieldBody as wt, allowedDomainCreateBody as x, countResponseSchema as xn, collectionSchema as xt, widgetAreaWithWidgetsSchema as y, VALID_ROLE_LEVELS as yn, collectionListResponseSchema as yt, sectionsListQuery as z, mediaExistingResponseSchema as zt };
@@ -1,4 +1,4 @@
1
- import { n as normalizeTrustedHeaders, t as getTrustedProxyHeaders } from "./trusted-proxy-Bi0Cuk5n.mjs";
1
+ import { n as normalizeTrustedHeaders, t as getTrustedProxyHeaders } from "./trusted-proxy-BbaZfkT9.mjs";
2
2
 
3
3
  //#region src/plugins/request-meta.ts
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { t as Database } from "./types-Du8jreyC.mjs";
1
+ import { t as Database } from "./types-DZPw8Rru.mjs";
2
2
  import { Kysely } from "kysely";
3
3
 
4
4
  //#region src/database/migrations/runner.d.ts