emdash 0.11.1 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1016) hide show
  1. package/dist/{adapters-BktHA7EO.d.mts → adapters-9DybjTO6.d.mts} +1 -1
  2. package/dist/{adapters-BktHA7EO.d.mts.map → adapters-9DybjTO6.d.mts.map} +1 -1
  3. package/dist/allowed-origins-CDdG-4Gd.mjs +116 -0
  4. package/dist/allowed-origins-CDdG-4Gd.mjs.map +1 -0
  5. package/dist/api/route-utils.d.mts +68 -0
  6. package/dist/api/route-utils.d.mts.map +1 -0
  7. package/dist/api/route-utils.mjs +44 -0
  8. package/dist/api/route-utils.mjs.map +1 -0
  9. package/dist/api/schemas/index.d.mts +2 -0
  10. package/dist/api/schemas/index.mjs +4 -0
  11. package/dist/api-ayIQ7rIe.mjs +3941 -0
  12. package/dist/api-ayIQ7rIe.mjs.map +1 -0
  13. package/dist/api-tokens-D3C9v02m.mjs +3 -0
  14. package/dist/api-tokens-eYymBhIT.mjs +153 -0
  15. package/dist/api-tokens-eYymBhIT.mjs.map +1 -0
  16. package/dist/{apply-Ded_1vng.mjs → apply-v4DBgjPw.mjs} +19 -566
  17. package/dist/apply-v4DBgjPw.mjs.map +1 -0
  18. package/dist/astro/index.d.mts +10 -6
  19. package/dist/astro/index.d.mts.map +1 -1
  20. package/dist/astro/index.mjs +42 -83
  21. package/dist/astro/index.mjs.map +1 -1
  22. package/dist/astro/middleware/auth.d.mts +9 -5
  23. package/dist/astro/middleware/auth.d.mts.map +1 -1
  24. package/dist/astro/middleware/auth.mjs +25 -65
  25. package/dist/astro/middleware/auth.mjs.map +1 -1
  26. package/dist/astro/middleware/redirect.mjs +5 -5
  27. package/dist/astro/middleware/request-context.mjs +4 -4
  28. package/dist/astro/middleware/setup.mjs +1 -1
  29. package/dist/astro/middleware.d.mts.map +1 -1
  30. package/dist/astro/middleware.mjs +146 -71
  31. package/dist/astro/middleware.mjs.map +1 -1
  32. package/dist/astro/routes/PluginRegistry.d.mts +15 -0
  33. package/dist/astro/routes/PluginRegistry.d.mts.map +1 -0
  34. package/dist/astro/routes/PluginRegistry.mjs +25 -0
  35. package/dist/astro/routes/PluginRegistry.mjs.map +1 -0
  36. package/dist/astro/routes/api/admin/allowed-domains/_domain_.d.mts +15 -0
  37. package/dist/astro/routes/api/admin/allowed-domains/_domain_.d.mts.map +1 -0
  38. package/dist/astro/routes/api/admin/allowed-domains/_domain_.mjs +67 -0
  39. package/dist/astro/routes/api/admin/allowed-domains/_domain_.mjs.map +1 -0
  40. package/dist/astro/routes/api/admin/allowed-domains/index.d.mts +15 -0
  41. package/dist/astro/routes/api/admin/allowed-domains/index.d.mts.map +1 -0
  42. package/dist/astro/routes/api/admin/allowed-domains/index.mjs +67 -0
  43. package/dist/astro/routes/api/admin/allowed-domains/index.mjs.map +1 -0
  44. package/dist/astro/routes/api/admin/api-tokens/_id_.d.mts +11 -0
  45. package/dist/astro/routes/api/admin/api-tokens/_id_.d.mts.map +1 -0
  46. package/dist/astro/routes/api/admin/api-tokens/_id_.mjs +33 -0
  47. package/dist/astro/routes/api/admin/api-tokens/_id_.mjs.map +1 -0
  48. package/dist/astro/routes/api/admin/api-tokens/index.d.mts +17 -0
  49. package/dist/astro/routes/api/admin/api-tokens/index.d.mts.map +1 -0
  50. package/dist/astro/routes/api/admin/api-tokens/index.mjs +52 -0
  51. package/dist/astro/routes/api/admin/api-tokens/index.mjs.map +1 -0
  52. package/dist/astro/routes/api/admin/bylines/_id_/index.d.mts +10 -0
  53. package/dist/astro/routes/api/admin/bylines/_id_/index.d.mts.map +1 -0
  54. package/dist/astro/routes/api/admin/bylines/_id_/index.mjs +74 -0
  55. package/dist/astro/routes/api/admin/bylines/_id_/index.mjs.map +1 -0
  56. package/dist/astro/routes/api/admin/bylines/index.d.mts +9 -0
  57. package/dist/astro/routes/api/admin/bylines/index.d.mts.map +1 -0
  58. package/dist/astro/routes/api/admin/bylines/index.mjs +61 -0
  59. package/dist/astro/routes/api/admin/bylines/index.mjs.map +1 -0
  60. package/dist/astro/routes/api/admin/comments/_id_/status.d.mts +8 -0
  61. package/dist/astro/routes/api/admin/comments/_id_/status.d.mts.map +1 -0
  62. package/dist/astro/routes/api/admin/comments/_id_/status.mjs +80 -0
  63. package/dist/astro/routes/api/admin/comments/_id_/status.mjs.map +1 -0
  64. package/dist/astro/routes/api/admin/comments/_id_.d.mts +15 -0
  65. package/dist/astro/routes/api/admin/comments/_id_.d.mts.map +1 -0
  66. package/dist/astro/routes/api/admin/comments/_id_.mjs +47 -0
  67. package/dist/astro/routes/api/admin/comments/_id_.mjs.map +1 -0
  68. package/dist/astro/routes/api/admin/comments/bulk.d.mts +8 -0
  69. package/dist/astro/routes/api/admin/comments/bulk.d.mts.map +1 -0
  70. package/dist/astro/routes/api/admin/comments/bulk.mjs +36 -0
  71. package/dist/astro/routes/api/admin/comments/bulk.mjs.map +1 -0
  72. package/dist/astro/routes/api/admin/comments/counts.d.mts +8 -0
  73. package/dist/astro/routes/api/admin/comments/counts.d.mts.map +1 -0
  74. package/dist/astro/routes/api/admin/comments/counts.mjs +25 -0
  75. package/dist/astro/routes/api/admin/comments/counts.mjs.map +1 -0
  76. package/dist/astro/routes/api/admin/comments/index.d.mts +11 -0
  77. package/dist/astro/routes/api/admin/comments/index.d.mts.map +1 -0
  78. package/dist/astro/routes/api/admin/comments/index.mjs +40 -0
  79. package/dist/astro/routes/api/admin/comments/index.mjs.map +1 -0
  80. package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.d.mts +8 -0
  81. package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.d.mts.map +1 -0
  82. package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.mjs +48 -0
  83. package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.mjs.map +1 -0
  84. package/dist/astro/routes/api/admin/hooks/exclusive/index.d.mts +8 -0
  85. package/dist/astro/routes/api/admin/hooks/exclusive/index.d.mts.map +1 -0
  86. package/dist/astro/routes/api/admin/hooks/exclusive/index.mjs +36 -0
  87. package/dist/astro/routes/api/admin/hooks/exclusive/index.mjs.map +1 -0
  88. package/dist/astro/routes/api/admin/oauth-clients/_id_.d.mts +19 -0
  89. package/dist/astro/routes/api/admin/oauth-clients/_id_.d.mts.map +1 -0
  90. package/dist/astro/routes/api/admin/oauth-clients/_id_.mjs +69 -0
  91. package/dist/astro/routes/api/admin/oauth-clients/_id_.mjs.map +1 -0
  92. package/dist/astro/routes/api/admin/oauth-clients/index.d.mts +15 -0
  93. package/dist/astro/routes/api/admin/oauth-clients/index.d.mts.map +1 -0
  94. package/dist/astro/routes/api/admin/oauth-clients/index.mjs +50 -0
  95. package/dist/astro/routes/api/admin/oauth-clients/index.mjs.map +1 -0
  96. package/dist/astro/routes/api/admin/plugins/_id_/disable.d.mts +8 -0
  97. package/dist/astro/routes/api/admin/plugins/_id_/disable.d.mts.map +1 -0
  98. package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs +56 -0
  99. package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs.map +1 -0
  100. package/dist/astro/routes/api/admin/plugins/_id_/enable.d.mts +8 -0
  101. package/dist/astro/routes/api/admin/plugins/_id_/enable.d.mts.map +1 -0
  102. package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs +59 -0
  103. package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs.map +1 -0
  104. package/dist/astro/routes/api/admin/plugins/_id_/index.d.mts +8 -0
  105. package/dist/astro/routes/api/admin/plugins/_id_/index.d.mts.map +1 -0
  106. package/dist/astro/routes/api/admin/plugins/_id_/index.mjs +51 -0
  107. package/dist/astro/routes/api/admin/plugins/_id_/index.mjs.map +1 -0
  108. package/dist/astro/routes/api/admin/plugins/_id_/uninstall.d.mts +8 -0
  109. package/dist/astro/routes/api/admin/plugins/_id_/uninstall.d.mts.map +1 -0
  110. package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs +58 -0
  111. package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs.map +1 -0
  112. package/dist/astro/routes/api/admin/plugins/_id_/update.d.mts +8 -0
  113. package/dist/astro/routes/api/admin/plugins/_id_/update.d.mts.map +1 -0
  114. package/dist/astro/routes/api/admin/plugins/_id_/update.mjs +66 -0
  115. package/dist/astro/routes/api/admin/plugins/_id_/update.mjs.map +1 -0
  116. package/dist/astro/routes/api/admin/plugins/index.d.mts +8 -0
  117. package/dist/astro/routes/api/admin/plugins/index.d.mts.map +1 -0
  118. package/dist/astro/routes/api/admin/plugins/index.mjs +49 -0
  119. package/dist/astro/routes/api/admin/plugins/index.mjs.map +1 -0
  120. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.d.mts +8 -0
  121. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.d.mts.map +1 -0
  122. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.mjs +39 -0
  123. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.mjs.map +1 -0
  124. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.d.mts +8 -0
  125. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.d.mts.map +1 -0
  126. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs +51 -0
  127. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs.map +1 -0
  128. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.d.mts +8 -0
  129. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.d.mts.map +1 -0
  130. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs +69 -0
  131. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs.map +1 -0
  132. package/dist/astro/routes/api/admin/plugins/marketplace/index.d.mts +8 -0
  133. package/dist/astro/routes/api/admin/plugins/marketplace/index.d.mts.map +1 -0
  134. package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs +58 -0
  135. package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs.map +1 -0
  136. package/dist/astro/routes/api/admin/plugins/registry/install.d.mts +8 -0
  137. package/dist/astro/routes/api/admin/plugins/registry/install.d.mts.map +1 -0
  138. package/dist/astro/routes/api/admin/plugins/registry/install.mjs +72 -0
  139. package/dist/astro/routes/api/admin/plugins/registry/install.mjs.map +1 -0
  140. package/dist/astro/routes/api/admin/plugins/updates.d.mts +8 -0
  141. package/dist/astro/routes/api/admin/plugins/updates.d.mts.map +1 -0
  142. package/dist/astro/routes/api/admin/plugins/updates.mjs +49 -0
  143. package/dist/astro/routes/api/admin/plugins/updates.mjs.map +1 -0
  144. package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.d.mts +8 -0
  145. package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.d.mts.map +1 -0
  146. package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs +51 -0
  147. package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs.map +1 -0
  148. package/dist/astro/routes/api/admin/themes/marketplace/_id_/thumbnail.d.mts +8 -0
  149. package/dist/astro/routes/api/admin/themes/marketplace/_id_/thumbnail.d.mts.map +1 -0
  150. package/dist/astro/routes/api/admin/themes/marketplace/_id_/thumbnail.mjs +39 -0
  151. package/dist/astro/routes/api/admin/themes/marketplace/_id_/thumbnail.mjs.map +1 -0
  152. package/dist/astro/routes/api/admin/themes/marketplace/index.d.mts +8 -0
  153. package/dist/astro/routes/api/admin/themes/marketplace/index.d.mts.map +1 -0
  154. package/dist/astro/routes/api/admin/themes/marketplace/index.mjs +67 -0
  155. package/dist/astro/routes/api/admin/themes/marketplace/index.mjs.map +1 -0
  156. package/dist/astro/routes/api/admin/users/_id_/disable.d.mts +8 -0
  157. package/dist/astro/routes/api/admin/users/_id_/disable.d.mts.map +1 -0
  158. package/dist/astro/routes/api/admin/users/_id_/disable.mjs +43 -0
  159. package/dist/astro/routes/api/admin/users/_id_/disable.mjs.map +1 -0
  160. package/dist/astro/routes/api/admin/users/_id_/enable.d.mts +8 -0
  161. package/dist/astro/routes/api/admin/users/_id_/enable.d.mts.map +1 -0
  162. package/dist/astro/routes/api/admin/users/_id_/enable.mjs +32 -0
  163. package/dist/astro/routes/api/admin/users/_id_/enable.mjs.map +1 -0
  164. package/dist/astro/routes/api/admin/users/_id_/index.d.mts +9 -0
  165. package/dist/astro/routes/api/admin/users/_id_/index.d.mts.map +1 -0
  166. package/dist/astro/routes/api/admin/users/_id_/index.mjs +106 -0
  167. package/dist/astro/routes/api/admin/users/_id_/index.mjs.map +1 -0
  168. package/dist/astro/routes/api/admin/users/_id_/send-recovery.d.mts +8 -0
  169. package/dist/astro/routes/api/admin/users/_id_/send-recovery.d.mts.map +1 -0
  170. package/dist/astro/routes/api/admin/users/_id_/send-recovery.mjs +46 -0
  171. package/dist/astro/routes/api/admin/users/_id_/send-recovery.mjs.map +1 -0
  172. package/dist/astro/routes/api/admin/users/index.d.mts +8 -0
  173. package/dist/astro/routes/api/admin/users/index.d.mts.map +1 -0
  174. package/dist/astro/routes/api/admin/users/index.mjs +56 -0
  175. package/dist/astro/routes/api/admin/users/index.mjs.map +1 -0
  176. package/dist/astro/routes/api/auth/dev-bypass.d.mts +9 -0
  177. package/dist/astro/routes/api/auth/dev-bypass.d.mts.map +1 -0
  178. package/dist/astro/routes/api/auth/dev-bypass.mjs +84 -0
  179. package/dist/astro/routes/api/auth/dev-bypass.mjs.map +1 -0
  180. package/dist/astro/routes/api/auth/invite/accept.d.mts +8 -0
  181. package/dist/astro/routes/api/auth/invite/accept.d.mts.map +1 -0
  182. package/dist/astro/routes/api/auth/invite/accept.mjs +34 -0
  183. package/dist/astro/routes/api/auth/invite/accept.mjs.map +1 -0
  184. package/dist/astro/routes/api/auth/invite/complete.d.mts +8 -0
  185. package/dist/astro/routes/api/auth/invite/complete.d.mts.map +1 -0
  186. package/dist/astro/routes/api/auth/invite/complete.mjs +56 -0
  187. package/dist/astro/routes/api/auth/invite/complete.mjs.map +1 -0
  188. package/dist/astro/routes/api/auth/invite/index.d.mts +8 -0
  189. package/dist/astro/routes/api/auth/invite/index.d.mts.map +1 -0
  190. package/dist/astro/routes/api/auth/invite/index.mjs +53 -0
  191. package/dist/astro/routes/api/auth/invite/index.mjs.map +1 -0
  192. package/dist/astro/routes/api/auth/invite/register-options.d.mts +8 -0
  193. package/dist/astro/routes/api/auth/invite/register-options.d.mts.map +1 -0
  194. package/dist/astro/routes/api/auth/invite/register-options.mjs +46 -0
  195. package/dist/astro/routes/api/auth/invite/register-options.mjs.map +1 -0
  196. package/dist/astro/routes/api/auth/logout.d.mts +8 -0
  197. package/dist/astro/routes/api/auth/logout.d.mts.map +1 -0
  198. package/dist/astro/routes/api/auth/logout.mjs +27 -0
  199. package/dist/astro/routes/api/auth/logout.mjs.map +1 -0
  200. package/dist/astro/routes/api/auth/magic-link/send.d.mts +8 -0
  201. package/dist/astro/routes/api/auth/magic-link/send.d.mts.map +1 -0
  202. package/dist/astro/routes/api/auth/magic-link/send.mjs +50 -0
  203. package/dist/astro/routes/api/auth/magic-link/send.mjs.map +1 -0
  204. package/dist/astro/routes/api/auth/magic-link/verify.d.mts +8 -0
  205. package/dist/astro/routes/api/auth/magic-link/verify.d.mts.map +1 -0
  206. package/dist/astro/routes/api/auth/magic-link/verify.mjs +35 -0
  207. package/dist/astro/routes/api/auth/magic-link/verify.mjs.map +1 -0
  208. package/dist/astro/routes/api/auth/me.d.mts +14 -0
  209. package/dist/astro/routes/api/auth/me.d.mts.map +1 -0
  210. package/dist/astro/routes/api/auth/me.mjs +43 -0
  211. package/dist/astro/routes/api/auth/me.mjs.map +1 -0
  212. package/dist/astro/routes/api/auth/mode.d.mts +8 -0
  213. package/dist/astro/routes/api/auth/mode.d.mts.map +1 -0
  214. package/dist/astro/routes/api/auth/mode.mjs +29 -0
  215. package/dist/astro/routes/api/auth/mode.mjs.map +1 -0
  216. package/dist/astro/routes/api/auth/oauth/_provider_/callback.d.mts +8 -0
  217. package/dist/astro/routes/api/auth/oauth/_provider_/callback.d.mts.map +1 -0
  218. package/dist/astro/routes/api/auth/oauth/_provider_/callback.mjs +130 -0
  219. package/dist/astro/routes/api/auth/oauth/_provider_/callback.mjs.map +1 -0
  220. package/dist/astro/routes/api/auth/oauth/_provider_.d.mts +8 -0
  221. package/dist/astro/routes/api/auth/oauth/_provider_.d.mts.map +1 -0
  222. package/dist/astro/routes/api/auth/oauth/_provider_.mjs +60 -0
  223. package/dist/astro/routes/api/auth/oauth/_provider_.mjs.map +1 -0
  224. package/dist/astro/routes/api/auth/passkey/_id_.d.mts +15 -0
  225. package/dist/astro/routes/api/auth/passkey/_id_.d.mts.map +1 -0
  226. package/dist/astro/routes/api/auth/passkey/_id_.mjs +64 -0
  227. package/dist/astro/routes/api/auth/passkey/_id_.mjs.map +1 -0
  228. package/dist/astro/routes/api/auth/passkey/index.d.mts +8 -0
  229. package/dist/astro/routes/api/auth/passkey/index.d.mts.map +1 -0
  230. package/dist/astro/routes/api/auth/passkey/index.mjs +28 -0
  231. package/dist/astro/routes/api/auth/passkey/index.mjs.map +1 -0
  232. package/dist/astro/routes/api/auth/passkey/options.d.mts +8 -0
  233. package/dist/astro/routes/api/auth/passkey/options.d.mts.map +1 -0
  234. package/dist/astro/routes/api/auth/passkey/options.mjs +48 -0
  235. package/dist/astro/routes/api/auth/passkey/options.mjs.map +1 -0
  236. package/dist/astro/routes/api/auth/passkey/register/options.d.mts +8 -0
  237. package/dist/astro/routes/api/auth/passkey/register/options.d.mts.map +1 -0
  238. package/dist/astro/routes/api/auth/passkey/register/options.mjs +46 -0
  239. package/dist/astro/routes/api/auth/passkey/register/options.mjs.map +1 -0
  240. package/dist/astro/routes/api/auth/passkey/register/verify.d.mts +8 -0
  241. package/dist/astro/routes/api/auth/passkey/register/verify.d.mts.map +1 -0
  242. package/dist/astro/routes/api/auth/passkey/register/verify.mjs +61 -0
  243. package/dist/astro/routes/api/auth/passkey/register/verify.mjs.map +1 -0
  244. package/dist/astro/routes/api/auth/passkey/verify.d.mts +8 -0
  245. package/dist/astro/routes/api/auth/passkey/verify.d.mts.map +1 -0
  246. package/dist/astro/routes/api/auth/passkey/verify.mjs +49 -0
  247. package/dist/astro/routes/api/auth/passkey/verify.mjs.map +1 -0
  248. package/dist/astro/routes/api/auth/signup/complete.d.mts +8 -0
  249. package/dist/astro/routes/api/auth/signup/complete.d.mts.map +1 -0
  250. package/dist/astro/routes/api/auth/signup/complete.mjs +57 -0
  251. package/dist/astro/routes/api/auth/signup/complete.mjs.map +1 -0
  252. package/dist/astro/routes/api/auth/signup/request.d.mts +8 -0
  253. package/dist/astro/routes/api/auth/signup/request.d.mts.map +1 -0
  254. package/dist/astro/routes/api/auth/signup/request.mjs +46 -0
  255. package/dist/astro/routes/api/auth/signup/request.mjs.map +1 -0
  256. package/dist/astro/routes/api/auth/signup/verify.d.mts +8 -0
  257. package/dist/astro/routes/api/auth/signup/verify.d.mts.map +1 -0
  258. package/dist/astro/routes/api/auth/signup/verify.mjs +35 -0
  259. package/dist/astro/routes/api/auth/signup/verify.mjs.map +1 -0
  260. package/dist/astro/routes/api/comments/_collection_/_contentId_/index.d.mts +15 -0
  261. package/dist/astro/routes/api/comments/_collection_/_contentId_/index.d.mts.map +1 -0
  262. package/dist/astro/routes/api/comments/_collection_/_contentId_/index.mjs +193 -0
  263. package/dist/astro/routes/api/comments/_collection_/_contentId_/index.mjs.map +1 -0
  264. package/dist/astro/routes/api/content/_collection_/_id_/compare.d.mts +8 -0
  265. package/dist/astro/routes/api/content/_collection_/_id_/compare.d.mts.map +1 -0
  266. package/dist/astro/routes/api/content/_collection_/_id_/compare.mjs +20 -0
  267. package/dist/astro/routes/api/content/_collection_/_id_/compare.mjs.map +1 -0
  268. package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.d.mts +8 -0
  269. package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.d.mts.map +1 -0
  270. package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs +28 -0
  271. package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs.map +1 -0
  272. package/dist/astro/routes/api/content/_collection_/_id_/duplicate.d.mts +8 -0
  273. package/dist/astro/routes/api/content/_collection_/_id_/duplicate.d.mts.map +1 -0
  274. package/dist/astro/routes/api/content/_collection_/_id_/duplicate.mjs +30 -0
  275. package/dist/astro/routes/api/content/_collection_/_id_/duplicate.mjs.map +1 -0
  276. package/dist/astro/routes/api/content/_collection_/_id_/permanent.d.mts +8 -0
  277. package/dist/astro/routes/api/content/_collection_/_id_/permanent.d.mts.map +1 -0
  278. package/dist/astro/routes/api/content/_collection_/_id_/permanent.mjs +23 -0
  279. package/dist/astro/routes/api/content/_collection_/_id_/permanent.mjs.map +1 -0
  280. package/dist/astro/routes/api/content/_collection_/_id_/preview-url.d.mts +8 -0
  281. package/dist/astro/routes/api/content/_collection_/_id_/preview-url.d.mts.map +1 -0
  282. package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs +78 -0
  283. package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs.map +1 -0
  284. package/dist/astro/routes/api/content/_collection_/_id_/publish.d.mts +8 -0
  285. package/dist/astro/routes/api/content/_collection_/_id_/publish.d.mts.map +1 -0
  286. package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs +48 -0
  287. package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs.map +1 -0
  288. package/dist/astro/routes/api/content/_collection_/_id_/restore.d.mts +8 -0
  289. package/dist/astro/routes/api/content/_collection_/_id_/restore.d.mts.map +1 -0
  290. package/dist/astro/routes/api/content/_collection_/_id_/restore.mjs +28 -0
  291. package/dist/astro/routes/api/content/_collection_/_id_/restore.mjs.map +1 -0
  292. package/dist/astro/routes/api/content/_collection_/_id_/revisions.d.mts +8 -0
  293. package/dist/astro/routes/api/content/_collection_/_id_/revisions.d.mts.map +1 -0
  294. package/dist/astro/routes/api/content/_collection_/_id_/revisions.mjs +22 -0
  295. package/dist/astro/routes/api/content/_collection_/_id_/revisions.mjs.map +1 -0
  296. package/dist/astro/routes/api/content/_collection_/_id_/schedule.d.mts +9 -0
  297. package/dist/astro/routes/api/content/_collection_/_id_/schedule.d.mts.map +1 -0
  298. package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs +58 -0
  299. package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs.map +1 -0
  300. package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.d.mts +15 -0
  301. package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.d.mts.map +1 -0
  302. package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs +85 -0
  303. package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs.map +1 -0
  304. package/dist/astro/routes/api/content/_collection_/_id_/translations.d.mts +8 -0
  305. package/dist/astro/routes/api/content/_collection_/_id_/translations.d.mts.map +1 -0
  306. package/dist/astro/routes/api/content/_collection_/_id_/translations.mjs +43 -0
  307. package/dist/astro/routes/api/content/_collection_/_id_/translations.mjs.map +1 -0
  308. package/dist/astro/routes/api/content/_collection_/_id_/unpublish.d.mts +8 -0
  309. package/dist/astro/routes/api/content/_collection_/_id_/unpublish.d.mts.map +1 -0
  310. package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs +28 -0
  311. package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs.map +1 -0
  312. package/dist/astro/routes/api/content/_collection_/_id_.d.mts +10 -0
  313. package/dist/astro/routes/api/content/_collection_/_id_.d.mts.map +1 -0
  314. package/dist/astro/routes/api/content/_collection_/_id_.mjs +88 -0
  315. package/dist/astro/routes/api/content/_collection_/_id_.mjs.map +1 -0
  316. package/dist/astro/routes/api/content/_collection_/index.d.mts +9 -0
  317. package/dist/astro/routes/api/content/_collection_/index.d.mts.map +1 -0
  318. package/dist/astro/routes/api/content/_collection_/index.mjs +61 -0
  319. package/dist/astro/routes/api/content/_collection_/index.mjs.map +1 -0
  320. package/dist/astro/routes/api/content/_collection_/trash.d.mts +8 -0
  321. package/dist/astro/routes/api/content/_collection_/trash.d.mts.map +1 -0
  322. package/dist/astro/routes/api/content/_collection_/trash.mjs +25 -0
  323. package/dist/astro/routes/api/content/_collection_/trash.mjs.map +1 -0
  324. package/dist/astro/routes/api/dashboard.d.mts +8 -0
  325. package/dist/astro/routes/api/dashboard.d.mts.map +1 -0
  326. package/dist/astro/routes/api/dashboard.mjs +26 -0
  327. package/dist/astro/routes/api/dashboard.mjs.map +1 -0
  328. package/dist/astro/routes/api/dev/emails.d.mts +9 -0
  329. package/dist/astro/routes/api/dev/emails.d.mts.map +1 -0
  330. package/dist/astro/routes/api/dev/emails.mjs +20 -0
  331. package/dist/astro/routes/api/dev/emails.mjs.map +1 -0
  332. package/dist/astro/routes/api/import/probe.d.mts +18 -0
  333. package/dist/astro/routes/api/import/probe.d.mts.map +1 -0
  334. package/dist/astro/routes/api/import/probe.mjs +35 -0
  335. package/dist/astro/routes/api/import/probe.mjs.map +1 -0
  336. package/dist/astro/routes/api/import/wordpress/analyze.d.mts +88 -0
  337. package/dist/astro/routes/api/import/wordpress/analyze.d.mts.map +1 -0
  338. package/dist/astro/routes/api/import/wordpress/analyze.mjs +313 -0
  339. package/dist/astro/routes/api/import/wordpress/analyze.mjs.map +1 -0
  340. package/dist/astro/routes/api/import/wordpress/execute.d.mts +93 -0
  341. package/dist/astro/routes/api/import/wordpress/execute.d.mts.map +1 -0
  342. package/dist/astro/routes/api/import/wordpress/execute.mjs +593 -0
  343. package/dist/astro/routes/api/import/wordpress/execute.mjs.map +1 -0
  344. package/dist/astro/routes/api/import/wordpress/media.d.mts +36 -0
  345. package/dist/astro/routes/api/import/wordpress/media.d.mts.map +1 -0
  346. package/dist/astro/routes/api/import/wordpress/media.mjs +225 -0
  347. package/dist/astro/routes/api/import/wordpress/media.mjs.map +1 -0
  348. package/dist/astro/routes/api/import/wordpress/prepare.d.mts +20 -0
  349. package/dist/astro/routes/api/import/wordpress/prepare.d.mts.map +1 -0
  350. package/dist/astro/routes/api/import/wordpress/prepare.mjs +120 -0
  351. package/dist/astro/routes/api/import/wordpress/prepare.mjs.map +1 -0
  352. package/dist/astro/routes/api/import/wordpress/rewrite-url-helpers.d.mts +49 -0
  353. package/dist/astro/routes/api/import/wordpress/rewrite-url-helpers.d.mts.map +1 -0
  354. package/dist/astro/routes/api/import/wordpress/rewrite-url-helpers.mjs +131 -0
  355. package/dist/astro/routes/api/import/wordpress/rewrite-url-helpers.mjs.map +1 -0
  356. package/dist/astro/routes/api/import/wordpress/rewrite-urls.d.mts +22 -0
  357. package/dist/astro/routes/api/import/wordpress/rewrite-urls.d.mts.map +1 -0
  358. package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs +139 -0
  359. package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs.map +1 -0
  360. package/dist/astro/routes/api/import/wordpress-plugin/analyze.d.mts +16 -0
  361. package/dist/astro/routes/api/import/wordpress-plugin/analyze.d.mts.map +1 -0
  362. package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs +71 -0
  363. package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs.map +1 -0
  364. package/dist/astro/routes/api/import/wordpress-plugin/callback.d.mts +8 -0
  365. package/dist/astro/routes/api/import/wordpress-plugin/callback.d.mts.map +1 -0
  366. package/dist/astro/routes/api/import/wordpress-plugin/callback.mjs +29 -0
  367. package/dist/astro/routes/api/import/wordpress-plugin/callback.mjs.map +1 -0
  368. package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts +20 -0
  369. package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts.map +1 -0
  370. package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs +219 -0
  371. package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs.map +1 -0
  372. package/dist/astro/routes/api/manifest.d.mts +8 -0
  373. package/dist/astro/routes/api/manifest.d.mts.map +1 -0
  374. package/dist/astro/routes/api/manifest.mjs +47 -0
  375. package/dist/astro/routes/api/manifest.mjs.map +1 -0
  376. package/dist/astro/routes/api/mcp.d.mts +16 -0
  377. package/dist/astro/routes/api/mcp.d.mts.map +1 -0
  378. package/dist/astro/routes/api/mcp.mjs +1414 -0
  379. package/dist/astro/routes/api/mcp.mjs.map +1 -0
  380. package/dist/astro/routes/api/media/_id_/confirm.d.mts +11 -0
  381. package/dist/astro/routes/api/media/_id_/confirm.d.mts.map +1 -0
  382. package/dist/astro/routes/api/media/_id_/confirm.mjs +61 -0
  383. package/dist/astro/routes/api/media/_id_/confirm.mjs.map +1 -0
  384. package/dist/astro/routes/api/media/_id_.d.mts +23 -0
  385. package/dist/astro/routes/api/media/_id_.d.mts.map +1 -0
  386. package/dist/astro/routes/api/media/_id_.mjs +83 -0
  387. package/dist/astro/routes/api/media/_id_.mjs.map +1 -0
  388. package/dist/astro/routes/api/media/file/_...key_.d.mts +8 -0
  389. package/dist/astro/routes/api/media/file/_...key_.d.mts.map +1 -0
  390. package/dist/astro/routes/api/media/file/_...key_.mjs +52 -0
  391. package/dist/astro/routes/api/media/file/_...key_.mjs.map +1 -0
  392. package/dist/astro/routes/api/media/providers/_providerId_/_itemId_.d.mts +15 -0
  393. package/dist/astro/routes/api/media/providers/_providerId_/_itemId_.d.mts.map +1 -0
  394. package/dist/astro/routes/api/media/providers/_providerId_/_itemId_.mjs +52 -0
  395. package/dist/astro/routes/api/media/providers/_providerId_/_itemId_.mjs.map +1 -0
  396. package/dist/astro/routes/api/media/providers/_providerId_/index.d.mts +15 -0
  397. package/dist/astro/routes/api/media/providers/_providerId_/index.d.mts.map +1 -0
  398. package/dist/astro/routes/api/media/providers/_providerId_/index.mjs +75 -0
  399. package/dist/astro/routes/api/media/providers/_providerId_/index.mjs.map +1 -0
  400. package/dist/astro/routes/api/media/providers/index.d.mts +11 -0
  401. package/dist/astro/routes/api/media/providers/index.d.mts.map +1 -0
  402. package/dist/astro/routes/api/media/providers/index.mjs +21 -0
  403. package/dist/astro/routes/api/media/providers/index.mjs.map +1 -0
  404. package/dist/astro/routes/api/media/upload-url.d.mts +11 -0
  405. package/dist/astro/routes/api/media/upload-url.d.mts.map +1 -0
  406. package/dist/astro/routes/api/media/upload-url.mjs +82 -0
  407. package/dist/astro/routes/api/media/upload-url.mjs.map +1 -0
  408. package/dist/astro/routes/api/media.d.mts +17 -0
  409. package/dist/astro/routes/api/media.d.mts.map +1 -0
  410. package/dist/astro/routes/api/media.mjs +138 -0
  411. package/dist/astro/routes/api/media.mjs.map +1 -0
  412. package/dist/astro/routes/api/menus/_name_/items/_id_.d.mts +9 -0
  413. package/dist/astro/routes/api/menus/_name_/items/_id_.d.mts.map +1 -0
  414. package/dist/astro/routes/api/menus/_name_/items/_id_.mjs +48 -0
  415. package/dist/astro/routes/api/menus/_name_/items/_id_.mjs.map +1 -0
  416. package/dist/astro/routes/api/menus/_name_/items.d.mts +8 -0
  417. package/dist/astro/routes/api/menus/_name_/items.d.mts.map +1 -0
  418. package/dist/astro/routes/api/menus/_name_/items.mjs +31 -0
  419. package/dist/astro/routes/api/menus/_name_/items.mjs.map +1 -0
  420. package/dist/astro/routes/api/menus/_name_/reorder.d.mts +8 -0
  421. package/dist/astro/routes/api/menus/_name_/reorder.d.mts.map +1 -0
  422. package/dist/astro/routes/api/menus/_name_/reorder.mjs +31 -0
  423. package/dist/astro/routes/api/menus/_name_/reorder.mjs.map +1 -0
  424. package/dist/astro/routes/api/menus/_name_/translations.d.mts +9 -0
  425. package/dist/astro/routes/api/menus/_name_/translations.d.mts.map +1 -0
  426. package/dist/astro/routes/api/menus/_name_/translations.mjs +62 -0
  427. package/dist/astro/routes/api/menus/_name_/translations.mjs.map +1 -0
  428. package/dist/astro/routes/api/menus/_name_.d.mts +10 -0
  429. package/dist/astro/routes/api/menus/_name_.d.mts.map +1 -0
  430. package/dist/astro/routes/api/menus/_name_.mjs +60 -0
  431. package/dist/astro/routes/api/menus/_name_.mjs.map +1 -0
  432. package/dist/astro/routes/api/menus/index.d.mts +9 -0
  433. package/dist/astro/routes/api/menus/index.d.mts.map +1 -0
  434. package/dist/astro/routes/api/menus/index.mjs +40 -0
  435. package/dist/astro/routes/api/menus/index.mjs.map +1 -0
  436. package/dist/astro/routes/api/oauth/authorize.d.mts +9 -0
  437. package/dist/astro/routes/api/oauth/authorize.d.mts.map +1 -0
  438. package/dist/astro/routes/api/oauth/authorize.mjs +260 -0
  439. package/dist/astro/routes/api/oauth/authorize.mjs.map +1 -0
  440. package/dist/astro/routes/api/oauth/device/authorize.d.mts +8 -0
  441. package/dist/astro/routes/api/oauth/device/authorize.d.mts.map +1 -0
  442. package/dist/astro/routes/api/oauth/device/authorize.mjs +32 -0
  443. package/dist/astro/routes/api/oauth/device/authorize.mjs.map +1 -0
  444. package/dist/astro/routes/api/oauth/device/code.d.mts +8 -0
  445. package/dist/astro/routes/api/oauth/device/code.d.mts.map +1 -0
  446. package/dist/astro/routes/api/oauth/device/code.mjs +36 -0
  447. package/dist/astro/routes/api/oauth/device/code.mjs.map +1 -0
  448. package/dist/astro/routes/api/oauth/device/token.d.mts +8 -0
  449. package/dist/astro/routes/api/oauth/device/token.d.mts.map +1 -0
  450. package/dist/astro/routes/api/oauth/device/token.mjs +47 -0
  451. package/dist/astro/routes/api/oauth/device/token.mjs.map +1 -0
  452. package/dist/astro/routes/api/oauth/register.d.mts +9 -0
  453. package/dist/astro/routes/api/oauth/register.d.mts.map +1 -0
  454. package/dist/astro/routes/api/oauth/register.mjs +113 -0
  455. package/dist/astro/routes/api/oauth/register.mjs.map +1 -0
  456. package/dist/astro/routes/api/oauth/token/refresh.d.mts +8 -0
  457. package/dist/astro/routes/api/oauth/token/refresh.d.mts.map +1 -0
  458. package/dist/astro/routes/api/oauth/token/refresh.mjs +30 -0
  459. package/dist/astro/routes/api/oauth/token/refresh.mjs.map +1 -0
  460. package/dist/astro/routes/api/oauth/token/revoke.d.mts +8 -0
  461. package/dist/astro/routes/api/oauth/token/revoke.d.mts.map +1 -0
  462. package/dist/astro/routes/api/oauth/token/revoke.mjs +27 -0
  463. package/dist/astro/routes/api/oauth/token/revoke.mjs.map +1 -0
  464. package/dist/astro/routes/api/oauth/token.d.mts +9 -0
  465. package/dist/astro/routes/api/oauth/token.d.mts.map +1 -0
  466. package/dist/astro/routes/api/oauth/token.mjs +141 -0
  467. package/dist/astro/routes/api/oauth/token.mjs.map +1 -0
  468. package/dist/astro/routes/api/openapi.json.d.mts +8 -0
  469. package/dist/astro/routes/api/openapi.json.d.mts.map +1 -0
  470. package/dist/astro/routes/api/openapi.json.mjs +2642 -0
  471. package/dist/astro/routes/api/openapi.json.mjs.map +1 -0
  472. package/dist/astro/routes/api/plugins/_pluginId_/_...path_.d.mts +12 -0
  473. package/dist/astro/routes/api/plugins/_pluginId_/_...path_.d.mts.map +1 -0
  474. package/dist/astro/routes/api/plugins/_pluginId_/_...path_.mjs +78 -0
  475. package/dist/astro/routes/api/plugins/_pluginId_/_...path_.mjs.map +1 -0
  476. package/dist/astro/routes/api/redirects/404s/index.d.mts +10 -0
  477. package/dist/astro/routes/api/redirects/404s/index.d.mts.map +1 -0
  478. package/dist/astro/routes/api/redirects/404s/index.mjs +62 -0
  479. package/dist/astro/routes/api/redirects/404s/index.mjs.map +1 -0
  480. package/dist/astro/routes/api/redirects/404s/summary.d.mts +8 -0
  481. package/dist/astro/routes/api/redirects/404s/summary.d.mts.map +1 -0
  482. package/dist/astro/routes/api/redirects/404s/summary.mjs +34 -0
  483. package/dist/astro/routes/api/redirects/404s/summary.mjs.map +1 -0
  484. package/dist/astro/routes/api/redirects/_id_.d.mts +10 -0
  485. package/dist/astro/routes/api/redirects/_id_.d.mts.map +1 -0
  486. package/dist/astro/routes/api/redirects/_id_.mjs +71 -0
  487. package/dist/astro/routes/api/redirects/_id_.mjs.map +1 -0
  488. package/dist/astro/routes/api/redirects/index.d.mts +9 -0
  489. package/dist/astro/routes/api/redirects/index.d.mts.map +1 -0
  490. package/dist/astro/routes/api/redirects/index.mjs +52 -0
  491. package/dist/astro/routes/api/redirects/index.mjs.map +1 -0
  492. package/dist/astro/routes/api/revisions/_revisionId_/index.d.mts +8 -0
  493. package/dist/astro/routes/api/revisions/_revisionId_/index.d.mts.map +1 -0
  494. package/dist/astro/routes/api/revisions/_revisionId_/index.mjs +19 -0
  495. package/dist/astro/routes/api/revisions/_revisionId_/index.mjs.map +1 -0
  496. package/dist/astro/routes/api/revisions/_revisionId_/restore.d.mts +8 -0
  497. package/dist/astro/routes/api/revisions/_revisionId_/restore.d.mts.map +1 -0
  498. package/dist/astro/routes/api/revisions/_revisionId_/restore.mjs +26 -0
  499. package/dist/astro/routes/api/revisions/_revisionId_/restore.mjs.map +1 -0
  500. package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.d.mts +10 -0
  501. package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.d.mts.map +1 -0
  502. package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs +75 -0
  503. package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs.map +1 -0
  504. package/dist/astro/routes/api/schema/collections/_slug_/fields/index.d.mts +9 -0
  505. package/dist/astro/routes/api/schema/collections/_slug_/fields/index.d.mts.map +1 -0
  506. package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs +63 -0
  507. package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs.map +1 -0
  508. package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.d.mts +8 -0
  509. package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.d.mts.map +1 -0
  510. package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs +54 -0
  511. package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs.map +1 -0
  512. package/dist/astro/routes/api/schema/collections/_slug_/index.d.mts +10 -0
  513. package/dist/astro/routes/api/schema/collections/_slug_/index.d.mts.map +1 -0
  514. package/dist/astro/routes/api/schema/collections/_slug_/index.mjs +79 -0
  515. package/dist/astro/routes/api/schema/collections/_slug_/index.mjs.map +1 -0
  516. package/dist/astro/routes/api/schema/collections/index.d.mts +9 -0
  517. package/dist/astro/routes/api/schema/collections/index.d.mts.map +1 -0
  518. package/dist/astro/routes/api/schema/collections/index.mjs +63 -0
  519. package/dist/astro/routes/api/schema/collections/index.mjs.map +1 -0
  520. package/dist/astro/routes/api/schema/index.d.mts +8 -0
  521. package/dist/astro/routes/api/schema/index.d.mts.map +1 -0
  522. package/dist/astro/routes/api/schema/index.mjs +82 -0
  523. package/dist/astro/routes/api/schema/index.mjs.map +1 -0
  524. package/dist/astro/routes/api/schema/orphans/_slug_.d.mts +8 -0
  525. package/dist/astro/routes/api/schema/orphans/_slug_.d.mts.map +1 -0
  526. package/dist/astro/routes/api/schema/orphans/_slug_.mjs +55 -0
  527. package/dist/astro/routes/api/schema/orphans/_slug_.mjs.map +1 -0
  528. package/dist/astro/routes/api/schema/orphans/index.d.mts +8 -0
  529. package/dist/astro/routes/api/schema/orphans/index.d.mts.map +1 -0
  530. package/dist/astro/routes/api/schema/orphans/index.mjs +50 -0
  531. package/dist/astro/routes/api/schema/orphans/index.mjs.map +1 -0
  532. package/dist/astro/routes/api/search/enable.d.mts +16 -0
  533. package/dist/astro/routes/api/search/enable.d.mts.map +1 -0
  534. package/dist/astro/routes/api/search/enable.mjs +55 -0
  535. package/dist/astro/routes/api/search/enable.mjs.map +1 -0
  536. package/dist/astro/routes/api/search/index.d.mts +17 -0
  537. package/dist/astro/routes/api/search/index.d.mts.map +1 -0
  538. package/dist/astro/routes/api/search/index.mjs +52 -0
  539. package/dist/astro/routes/api/search/index.mjs.map +1 -0
  540. package/dist/astro/routes/api/search/rebuild.d.mts +14 -0
  541. package/dist/astro/routes/api/search/rebuild.d.mts.map +1 -0
  542. package/dist/astro/routes/api/search/rebuild.mjs +48 -0
  543. package/dist/astro/routes/api/search/rebuild.mjs.map +1 -0
  544. package/dist/astro/routes/api/search/stats.d.mts +11 -0
  545. package/dist/astro/routes/api/search/stats.d.mts.map +1 -0
  546. package/dist/astro/routes/api/search/stats.mjs +29 -0
  547. package/dist/astro/routes/api/search/stats.mjs.map +1 -0
  548. package/dist/astro/routes/api/search/suggest.d.mts +16 -0
  549. package/dist/astro/routes/api/search/suggest.d.mts.map +1 -0
  550. package/dist/astro/routes/api/search/suggest.mjs +43 -0
  551. package/dist/astro/routes/api/search/suggest.mjs.map +1 -0
  552. package/dist/astro/routes/api/sections/_slug_.d.mts +10 -0
  553. package/dist/astro/routes/api/sections/_slug_.d.mts.map +1 -0
  554. package/dist/astro/routes/api/sections/_slug_.mjs +65 -0
  555. package/dist/astro/routes/api/sections/_slug_.mjs.map +1 -0
  556. package/dist/astro/routes/api/sections/index.d.mts +9 -0
  557. package/dist/astro/routes/api/sections/index.d.mts.map +1 -0
  558. package/dist/astro/routes/api/sections/index.mjs +48 -0
  559. package/dist/astro/routes/api/sections/index.mjs.map +1 -0
  560. package/dist/astro/routes/api/settings/email.d.mts +18 -0
  561. package/dist/astro/routes/api/settings/email.d.mts.map +1 -0
  562. package/dist/astro/routes/api/settings/email.mjs +105 -0
  563. package/dist/astro/routes/api/settings/email.mjs.map +1 -0
  564. package/dist/astro/routes/api/settings.d.mts +21 -0
  565. package/dist/astro/routes/api/settings.d.mts.map +1 -0
  566. package/dist/astro/routes/api/settings.mjs +58 -0
  567. package/dist/astro/routes/api/settings.mjs.map +1 -0
  568. package/dist/astro/routes/api/setup/admin-verify.d.mts +8 -0
  569. package/dist/astro/routes/api/setup/admin-verify.d.mts.map +1 -0
  570. package/dist/astro/routes/api/setup/admin-verify.mjs +68 -0
  571. package/dist/astro/routes/api/setup/admin-verify.mjs.map +1 -0
  572. package/dist/astro/routes/api/setup/admin.d.mts +8 -0
  573. package/dist/astro/routes/api/setup/admin.d.mts.map +1 -0
  574. package/dist/astro/routes/api/setup/admin.mjs +69 -0
  575. package/dist/astro/routes/api/setup/admin.mjs.map +1 -0
  576. package/dist/astro/routes/api/setup/dev-bypass.d.mts +9 -0
  577. package/dist/astro/routes/api/setup/dev-bypass.d.mts.map +1 -0
  578. package/dist/astro/routes/api/setup/dev-bypass.mjs +139 -0
  579. package/dist/astro/routes/api/setup/dev-bypass.mjs.map +1 -0
  580. package/dist/astro/routes/api/setup/dev-reset.d.mts +8 -0
  581. package/dist/astro/routes/api/setup/dev-reset.d.mts.map +1 -0
  582. package/dist/astro/routes/api/setup/dev-reset.mjs +25 -0
  583. package/dist/astro/routes/api/setup/dev-reset.mjs.map +1 -0
  584. package/dist/astro/routes/api/setup/index.d.mts +8 -0
  585. package/dist/astro/routes/api/setup/index.d.mts.map +1 -0
  586. package/dist/astro/routes/api/setup/index.mjs +93 -0
  587. package/dist/astro/routes/api/setup/index.mjs.map +1 -0
  588. package/dist/astro/routes/api/setup/status.d.mts +8 -0
  589. package/dist/astro/routes/api/setup/status.d.mts.map +1 -0
  590. package/dist/astro/routes/api/setup/status.mjs +60 -0
  591. package/dist/astro/routes/api/setup/status.mjs.map +1 -0
  592. package/dist/astro/routes/api/snapshot.d.mts +8 -0
  593. package/dist/astro/routes/api/snapshot.d.mts.map +1 -0
  594. package/dist/astro/routes/api/snapshot.mjs +270 -0
  595. package/dist/astro/routes/api/snapshot.mjs.map +1 -0
  596. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.d.mts +9 -0
  597. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.d.mts.map +1 -0
  598. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs +72 -0
  599. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs.map +1 -0
  600. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.d.mts +19 -0
  601. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.d.mts.map +1 -0
  602. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs +80 -0
  603. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs.map +1 -0
  604. package/dist/astro/routes/api/taxonomies/_name_/terms/index.d.mts +15 -0
  605. package/dist/astro/routes/api/taxonomies/_name_/terms/index.d.mts.map +1 -0
  606. package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs +59 -0
  607. package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs.map +1 -0
  608. package/dist/astro/routes/api/taxonomies/index.d.mts +15 -0
  609. package/dist/astro/routes/api/taxonomies/index.d.mts.map +1 -0
  610. package/dist/astro/routes/api/taxonomies/index.mjs +55 -0
  611. package/dist/astro/routes/api/taxonomies/index.mjs.map +1 -0
  612. package/dist/astro/routes/api/themes/preview.d.mts +8 -0
  613. package/dist/astro/routes/api/themes/preview.d.mts.map +1 -0
  614. package/dist/astro/routes/api/themes/preview.mjs +49 -0
  615. package/dist/astro/routes/api/themes/preview.mjs.map +1 -0
  616. package/dist/astro/routes/api/typegen.d.mts +18 -0
  617. package/dist/astro/routes/api/typegen.d.mts.map +1 -0
  618. package/dist/astro/routes/api/typegen.mjs +78 -0
  619. package/dist/astro/routes/api/typegen.mjs.map +1 -0
  620. package/dist/astro/routes/api/well-known/auth.d.mts +8 -0
  621. package/dist/astro/routes/api/well-known/auth.d.mts.map +1 -0
  622. package/dist/astro/routes/api/well-known/auth.mjs +42 -0
  623. package/dist/astro/routes/api/well-known/auth.mjs.map +1 -0
  624. package/dist/astro/routes/api/well-known/oauth-authorization-server.d.mts +8 -0
  625. package/dist/astro/routes/api/well-known/oauth-authorization-server.d.mts.map +1 -0
  626. package/dist/astro/routes/api/well-known/oauth-authorization-server.mjs +32 -0
  627. package/dist/astro/routes/api/well-known/oauth-authorization-server.mjs.map +1 -0
  628. package/dist/astro/routes/api/well-known/oauth-protected-resource.d.mts +8 -0
  629. package/dist/astro/routes/api/well-known/oauth-protected-resource.d.mts.map +1 -0
  630. package/dist/astro/routes/api/well-known/oauth-protected-resource.mjs +21 -0
  631. package/dist/astro/routes/api/well-known/oauth-protected-resource.mjs.map +1 -0
  632. package/dist/astro/routes/api/widget-areas/_name_/reorder.d.mts +8 -0
  633. package/dist/astro/routes/api/widget-areas/_name_/reorder.d.mts.map +1 -0
  634. package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs +36 -0
  635. package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs.map +1 -0
  636. package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.d.mts +9 -0
  637. package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.d.mts.map +1 -0
  638. package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs +62 -0
  639. package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs.map +1 -0
  640. package/dist/astro/routes/api/widget-areas/_name_/widgets.d.mts +8 -0
  641. package/dist/astro/routes/api/widget-areas/_name_/widgets.d.mts.map +1 -0
  642. package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs +49 -0
  643. package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs.map +1 -0
  644. package/dist/astro/routes/api/widget-areas/_name_.d.mts +9 -0
  645. package/dist/astro/routes/api/widget-areas/_name_.d.mts.map +1 -0
  646. package/dist/astro/routes/api/widget-areas/_name_.mjs +49 -0
  647. package/dist/astro/routes/api/widget-areas/_name_.mjs.map +1 -0
  648. package/dist/astro/routes/api/widget-areas/index.d.mts +9 -0
  649. package/dist/astro/routes/api/widget-areas/index.d.mts.map +1 -0
  650. package/dist/astro/routes/api/widget-areas/index.mjs +59 -0
  651. package/dist/astro/routes/api/widget-areas/index.mjs.map +1 -0
  652. package/dist/astro/routes/api/widget-components.d.mts +8 -0
  653. package/dist/astro/routes/api/widget-components.d.mts.map +1 -0
  654. package/dist/astro/routes/api/widget-components.mjs +18 -0
  655. package/dist/astro/routes/api/widget-components.mjs.map +1 -0
  656. package/dist/astro/routes/robots.txt.d.mts +8 -0
  657. package/dist/astro/routes/robots.txt.d.mts.map +1 -0
  658. package/dist/astro/routes/robots.txt.mjs +61 -0
  659. package/dist/astro/routes/robots.txt.mjs.map +1 -0
  660. package/dist/astro/routes/sitemap-_collection_.xml.d.mts +8 -0
  661. package/dist/astro/routes/sitemap-_collection_.xml.d.mts.map +1 -0
  662. package/dist/astro/routes/sitemap-_collection_.xml.mjs +71 -0
  663. package/dist/astro/routes/sitemap-_collection_.xml.mjs.map +1 -0
  664. package/dist/astro/routes/sitemap.xml.d.mts +8 -0
  665. package/dist/astro/routes/sitemap.xml.d.mts.map +1 -0
  666. package/dist/astro/routes/sitemap.xml.mjs +64 -0
  667. package/dist/astro/routes/sitemap.xml.mjs.map +1 -0
  668. package/dist/astro/types.d.mts +48 -9
  669. package/dist/astro/types.d.mts.map +1 -1
  670. package/dist/auth/providers/github.d.mts +13 -0
  671. package/dist/auth/providers/github.d.mts.map +1 -0
  672. package/dist/auth/providers/github.mjs +18 -0
  673. package/dist/auth/providers/github.mjs.map +1 -0
  674. package/dist/auth/providers/google.d.mts +13 -0
  675. package/dist/auth/providers/google.d.mts.map +1 -0
  676. package/dist/auth/providers/google.mjs +18 -0
  677. package/dist/auth/providers/google.mjs.map +1 -0
  678. package/dist/authorize-BlyCH-96.mjs +37 -0
  679. package/dist/authorize-BlyCH-96.mjs.map +1 -0
  680. package/dist/{base64-MBPo9ozB.mjs → base64-CqR-7kqF.mjs} +1 -1
  681. package/dist/{base64-MBPo9ozB.mjs.map → base64-CqR-7kqF.mjs.map} +1 -1
  682. package/dist/{byline-gFn1r0vA.mjs → byline-D09BaS4j.mjs} +4 -4
  683. package/dist/{byline-gFn1r0vA.mjs.map → byline-D09BaS4j.mjs.map} +1 -1
  684. package/dist/{bylines-DTFI8nDM.mjs → bylines-BTM2xtP8.mjs} +6 -6
  685. package/dist/{bylines-DTFI8nDM.mjs.map → bylines-BTM2xtP8.mjs.map} +1 -1
  686. package/dist/bylines-C6eYUWlZ.d.mts +1971 -0
  687. package/dist/bylines-C6eYUWlZ.d.mts.map +1 -0
  688. package/dist/{cache-BAJbeoZ8.mjs → cache-CXCpjWiL.mjs} +3 -3
  689. package/dist/{cache-BAJbeoZ8.mjs.map → cache-CXCpjWiL.mjs.map} +1 -1
  690. package/dist/challenge-store-CJ0OOHOr.mjs +49 -0
  691. package/dist/challenge-store-CJ0OOHOr.mjs.map +1 -0
  692. package/dist/{chunks-BK1oZS-l.mjs → chunks-DyGtu1Bv.mjs} +2 -2
  693. package/dist/{chunks-BK1oZS-l.mjs.map → chunks-DyGtu1Bv.mjs.map} +1 -1
  694. package/dist/cli/index.mjs +23 -18
  695. package/dist/cli/index.mjs.map +1 -1
  696. package/dist/client/cf-access.d.mts +1 -1
  697. package/dist/client/index.d.mts +1 -1
  698. package/dist/client/index.d.mts.map +1 -1
  699. package/dist/client/index.mjs +2 -2
  700. package/dist/client/index.mjs.map +1 -1
  701. package/dist/comment-Dd9MI82-.mjs +247 -0
  702. package/dist/comment-Dd9MI82-.mjs.map +1 -0
  703. package/dist/comments-koGI0FrK.mjs +204 -0
  704. package/dist/comments-koGI0FrK.mjs.map +1 -0
  705. package/dist/components-mZem7pbe.mjs +108 -0
  706. package/dist/components-mZem7pbe.mjs.map +1 -0
  707. package/dist/{content-CERxPUN0.mjs → content-D6YG26WG.mjs} +10 -34
  708. package/dist/content-D6YG26WG.mjs.map +1 -0
  709. package/dist/context-qF8d3IPR.mjs +879 -0
  710. package/dist/context-qF8d3IPR.mjs.map +1 -0
  711. package/dist/cron-H8eJ46dv.mjs +264 -0
  712. package/dist/cron-H8eJ46dv.mjs.map +1 -0
  713. package/dist/dashboard-BmWSIUwY.mjs +105 -0
  714. package/dist/dashboard-BmWSIUwY.mjs.map +1 -0
  715. package/dist/db/index.d.mts +3 -3
  716. package/dist/db/index.mjs +1 -1
  717. package/dist/db/libsql.d.mts +1 -1
  718. package/dist/db/postgres.d.mts +1 -1
  719. package/dist/db/sqlite.d.mts +1 -1
  720. package/dist/{db-errors-B7P2pSCn.mjs → db-errors-CGN9kJfo.mjs} +1 -1
  721. package/dist/{db-errors-B7P2pSCn.mjs.map → db-errors-CGN9kJfo.mjs.map} +1 -1
  722. package/dist/{default-pHuz9WF6.mjs → default-Dbs22Gg4.mjs} +1 -1
  723. package/dist/{default-pHuz9WF6.mjs.map → default-Dbs22Gg4.mjs.map} +1 -1
  724. package/dist/device-flow-BqJRxa0Q.mjs +467 -0
  725. package/dist/device-flow-BqJRxa0Q.mjs.map +1 -0
  726. package/dist/email-console-Dmp5Q-P2.mjs +50 -0
  727. package/dist/email-console-Dmp5Q-P2.mjs.map +1 -0
  728. package/dist/error-tSQWIl5U.mjs +437 -0
  729. package/dist/error-tSQWIl5U.mjs.map +1 -0
  730. package/dist/escape-B8bdIryO.mjs +9 -0
  731. package/dist/escape-B8bdIryO.mjs.map +1 -0
  732. package/dist/fts-manager-B633C-kQ.mjs +339 -0
  733. package/dist/fts-manager-B633C-kQ.mjs.map +1 -0
  734. package/dist/hash-DlUxGhQS.mjs +33 -0
  735. package/dist/hash-DlUxGhQS.mjs.map +1 -0
  736. package/dist/import-CNfLOgDE.mjs +1531 -0
  737. package/dist/import-CNfLOgDE.mjs.map +1 -0
  738. package/dist/index-D2gvztOP.d.mts +262 -0
  739. package/dist/index-D2gvztOP.d.mts.map +1 -0
  740. package/dist/{index-BogfvE-z.d.mts → index-UmOMt9T-.d.mts} +310 -911
  741. package/dist/index-UmOMt9T-.d.mts.map +1 -0
  742. package/dist/index.d.mts +17 -11
  743. package/dist/index.mjs +57 -28
  744. package/dist/{load-DR1VwFXR.mjs → load-QzYRpVN3.mjs} +2 -2
  745. package/dist/{load-DR1VwFXR.mjs.map → load-QzYRpVN3.mjs.map} +1 -1
  746. package/dist/{loader-ou_PXAjg.mjs → loader-Cs6-Bqe6.mjs} +4 -4
  747. package/dist/{loader-ou_PXAjg.mjs.map → loader-Cs6-Bqe6.mjs.map} +1 -1
  748. package/dist/{manifest-schema-CXAbd1vH.mjs → manifest-schema-HCtSh4Jq.mjs} +1 -1
  749. package/dist/{manifest-schema-CXAbd1vH.mjs.map → manifest-schema-HCtSh4Jq.mjs.map} +1 -1
  750. package/dist/media/index.d.mts +1 -1
  751. package/dist/media/index.mjs +2 -1
  752. package/dist/media/index.mjs.map +1 -1
  753. package/dist/media/local-runtime.d.mts +11 -7
  754. package/dist/media/local-runtime.d.mts.map +1 -1
  755. package/dist/media/local-runtime.mjs +9 -3
  756. package/dist/media/local-runtime.mjs.map +1 -1
  757. package/dist/{media-1fFhub9c.mjs → media-Dg7he9uK.mjs} +2 -2
  758. package/dist/{media-1fFhub9c.mjs.map → media-Dg7he9uK.mjs.map} +1 -1
  759. package/dist/media-allowlist-B8EX01DH.mjs +32 -0
  760. package/dist/media-allowlist-B8EX01DH.mjs.map +1 -0
  761. package/dist/menus-DOzIecHi.mjs +723 -0
  762. package/dist/menus-DOzIecHi.mjs.map +1 -0
  763. package/dist/menus-X4Z-eBA1.mjs +2788 -0
  764. package/dist/menus-X4Z-eBA1.mjs.map +1 -0
  765. package/dist/mime-KV5TqkMN.mjs +36 -0
  766. package/dist/mime-KV5TqkMN.mjs.map +1 -0
  767. package/dist/{mode-YhqNVef_.mjs → mode-DPRPvJYm.mjs} +1 -1
  768. package/dist/{mode-YhqNVef_.mjs.map → mode-DPRPvJYm.mjs.map} +1 -1
  769. package/dist/normalize-CN5kRSMC.mjs +151 -0
  770. package/dist/normalize-CN5kRSMC.mjs.map +1 -0
  771. package/dist/oauth-authorization-62GmpGIH.mjs +275 -0
  772. package/dist/oauth-authorization-62GmpGIH.mjs.map +1 -0
  773. package/dist/oauth-clients-D_B0_-Bz.mjs +266 -0
  774. package/dist/oauth-clients-D_B0_-Bz.mjs.map +1 -0
  775. package/dist/oauth-state-store-DpsZViTu.mjs +49 -0
  776. package/dist/oauth-state-store-DpsZViTu.mjs.map +1 -0
  777. package/dist/oauth-user-lookup-meyS2oB1.mjs +26 -0
  778. package/dist/oauth-user-lookup-meyS2oB1.mjs.map +1 -0
  779. package/dist/{options-nPxWnrya.mjs → options-BL4X94qY.mjs} +1 -1
  780. package/dist/{options-nPxWnrya.mjs.map → options-BL4X94qY.mjs.map} +1 -1
  781. package/dist/options-Cq64Wx0O.d.mts +207 -0
  782. package/dist/options-Cq64Wx0O.d.mts.map +1 -0
  783. package/dist/page/index.d.mts +15 -4
  784. package/dist/page/index.d.mts.map +1 -1
  785. package/dist/page/index.mjs +16 -5
  786. package/dist/page/index.mjs.map +1 -1
  787. package/dist/parse-BFTPon-J.mjs +89 -0
  788. package/dist/parse-BFTPon-J.mjs.map +1 -0
  789. package/dist/passkey-config-Cg86_ISa.mjs +46 -0
  790. package/dist/passkey-config-Cg86_ISa.mjs.map +1 -0
  791. package/dist/{patterns-DsUZ4uxI.mjs → patterns-CqG5Ya3i.mjs} +54 -2
  792. package/dist/{patterns-DsUZ4uxI.mjs.map → patterns-CqG5Ya3i.mjs.map} +1 -1
  793. package/dist/{placeholder-CDPtkelt.d.mts → placeholder-D3cFCU9y.d.mts} +2 -1
  794. package/dist/{placeholder-CDPtkelt.d.mts.map → placeholder-D3cFCU9y.d.mts.map} +1 -1
  795. package/dist/placeholder-LqmHqvBw.mjs +143 -0
  796. package/dist/placeholder-LqmHqvBw.mjs.map +1 -0
  797. package/dist/plugin-types.d.mts +122 -0
  798. package/dist/plugin-types.d.mts.map +1 -0
  799. package/dist/plugin-types.mjs +1 -0
  800. package/dist/plugins/adapt-sandbox-entry.d.mts +20 -12
  801. package/dist/plugins/adapt-sandbox-entry.d.mts.map +1 -1
  802. package/dist/plugins/adapt-sandbox-entry.mjs +46 -23
  803. package/dist/plugins/adapt-sandbox-entry.mjs.map +1 -1
  804. package/dist/preview-C1LOEbWZ.mjs +107 -0
  805. package/dist/preview-C1LOEbWZ.mjs.map +1 -0
  806. package/dist/{public-url-B1AxbbbQ.mjs → public-url-CseXl9Fv.mjs} +39 -2
  807. package/dist/{public-url-B1AxbbbQ.mjs.map → public-url-CseXl9Fv.mjs.map} +1 -1
  808. package/dist/{query-8c_meo_K.mjs → query-axZmO6Tn.mjs} +23 -12
  809. package/dist/query-axZmO6Tn.mjs.map +1 -0
  810. package/dist/rate-limit-t5CVjCO6.mjs +120 -0
  811. package/dist/rate-limit-t5CVjCO6.mjs.map +1 -0
  812. package/dist/redirect-DGRsLO2I.mjs +17 -0
  813. package/dist/redirect-DGRsLO2I.mjs.map +1 -0
  814. package/dist/{redirect-C5H7VGIX.mjs → redirect-DkaDxq8e.mjs} +3 -3
  815. package/dist/{redirect-C5H7VGIX.mjs.map → redirect-DkaDxq8e.mjs.map} +1 -1
  816. package/dist/redirects-D1fdd68T.mjs +573 -0
  817. package/dist/redirects-D1fdd68T.mjs.map +1 -0
  818. package/dist/redirects-Dmj6KRU3.mjs +1141 -0
  819. package/dist/redirects-Dmj6KRU3.mjs.map +1 -0
  820. package/dist/{registry-Do34mz_P.mjs → registry-BnCeHYsf.mjs} +8 -300
  821. package/dist/registry-BnCeHYsf.mjs.map +1 -0
  822. package/dist/{request-cache-D4I69LeL.mjs → request-cache-dzCt8TZB.mjs} +1 -1
  823. package/dist/{request-cache-D4I69LeL.mjs.map → request-cache-dzCt8TZB.mjs.map} +1 -1
  824. package/dist/request-meta-CLCwSQOS.mjs +140 -0
  825. package/dist/request-meta-CLCwSQOS.mjs.map +1 -0
  826. package/dist/{runner-Iu3IZSDM.d.mts → runner-DcfZewkO.d.mts} +2 -2
  827. package/dist/{runner-Iu3IZSDM.d.mts.map → runner-DcfZewkO.d.mts.map} +1 -1
  828. package/dist/{runner-DIcU2UCC.mjs → runner-DdnQIwz_.mjs} +436 -187
  829. package/dist/runner-DdnQIwz_.mjs.map +1 -0
  830. package/dist/runtime.d.mts +10 -6
  831. package/dist/runtime.d.mts.map +1 -1
  832. package/dist/runtime.mjs +3 -3
  833. package/dist/schema-BmqagCwG.mjs +41 -0
  834. package/dist/schema-BmqagCwG.mjs.map +1 -0
  835. package/dist/search-CPrvO5u8.mjs +376 -0
  836. package/dist/search-CPrvO5u8.mjs.map +1 -0
  837. package/dist/{secrets-CZ8rxLX3.mjs → secrets-6pgZyq0K.mjs} +3 -3
  838. package/dist/{secrets-CZ8rxLX3.mjs.map → secrets-6pgZyq0K.mjs.map} +1 -1
  839. package/dist/sections-Cm-zb-gZ.mjs +346 -0
  840. package/dist/sections-Cm-zb-gZ.mjs.map +1 -0
  841. package/dist/seed/index.d.mts +2 -2
  842. package/dist/seed/index.mjs +19 -15
  843. package/dist/seo/index.d.mts +1 -1
  844. package/dist/seo-BoR4wCUh.mjs +86 -0
  845. package/dist/seo-BoR4wCUh.mjs.map +1 -0
  846. package/dist/seo-DRq9-EPP.mjs +130 -0
  847. package/dist/seo-DRq9-EPP.mjs.map +1 -0
  848. package/dist/service-vByySp-2.mjs +195 -0
  849. package/dist/service-vByySp-2.mjs.map +1 -0
  850. package/dist/settings-CBBj7HUd.mjs +51 -0
  851. package/dist/settings-CBBj7HUd.mjs.map +1 -0
  852. package/dist/settings-xQKsWnzQ.mjs +235 -0
  853. package/dist/settings-xQKsWnzQ.mjs.map +1 -0
  854. package/dist/setup-BGAJ2uXs.mjs +137 -0
  855. package/dist/setup-BGAJ2uXs.mjs.map +1 -0
  856. package/dist/setup-complete-C6ZCLhKo.mjs +26 -0
  857. package/dist/setup-complete-C6ZCLhKo.mjs.map +1 -0
  858. package/dist/setup-nonce-CY1gQiAU.mjs +25 -0
  859. package/dist/setup-nonce-CY1gQiAU.mjs.map +1 -0
  860. package/dist/site-url-D-M4Fd8O.mjs +13 -0
  861. package/dist/site-url-D-M4Fd8O.mjs.map +1 -0
  862. package/dist/slugify-Cjh1ssOZ.mjs +30 -0
  863. package/dist/slugify-Cjh1ssOZ.mjs.map +1 -0
  864. package/dist/ssrf-CTul4uQi.mjs +1 -0
  865. package/dist/ssrf-DzFN_qV-.mjs +332 -0
  866. package/dist/ssrf-DzFN_qV-.mjs.map +1 -0
  867. package/dist/storage/local.d.mts +1 -1
  868. package/dist/storage/local.mjs +1 -1
  869. package/dist/storage/s3.d.mts +1 -1
  870. package/dist/storage/s3.mjs +1 -1
  871. package/dist/{taxonomies-Bw76xAxo.mjs → taxonomies-Cn9UpaR2.mjs} +7 -7
  872. package/dist/{taxonomies-Bw76xAxo.mjs.map → taxonomies-Cn9UpaR2.mjs.map} +1 -1
  873. package/dist/taxonomies-Dc0mzlms.mjs +508 -0
  874. package/dist/taxonomies-Dc0mzlms.mjs.map +1 -0
  875. package/dist/{taxonomy-D6NvlKo8.mjs → taxonomy-wPfusMK9.mjs} +3 -3
  876. package/dist/{taxonomy-D6NvlKo8.mjs.map → taxonomy-wPfusMK9.mjs.map} +1 -1
  877. package/dist/{tokens-CyRDPVW2.mjs → tokens-DILYNZMi.mjs} +2 -2
  878. package/dist/{tokens-CyRDPVW2.mjs.map → tokens-DILYNZMi.mjs.map} +1 -1
  879. package/dist/{transaction-D44LBXvU.mjs → transaction-NQj4VJ7Z.mjs} +1 -1
  880. package/dist/{transaction-D44LBXvU.mjs.map → transaction-NQj4VJ7Z.mjs.map} +1 -1
  881. package/dist/{transport-DX_5rpsq.d.mts → transport-GeXlLscf.d.mts} +1 -1
  882. package/dist/{transport-DX_5rpsq.d.mts.map → transport-GeXlLscf.d.mts.map} +1 -1
  883. package/dist/{transport-xpzIjCIB.mjs → transport-fw-mKJzT.mjs} +1 -1
  884. package/dist/{transport-xpzIjCIB.mjs.map → transport-fw-mKJzT.mjs.map} +1 -1
  885. package/dist/trusted-proxy-CJhQIk65.mjs +51 -0
  886. package/dist/trusted-proxy-CJhQIk65.mjs.map +1 -0
  887. package/dist/{types-IjUrQMVe.d.mts → types-B05e2naf.d.mts} +151 -60
  888. package/dist/types-B05e2naf.d.mts.map +1 -0
  889. package/dist/{types-BTe41zL6.d.mts → types-BWhaSS7U.d.mts} +2 -71
  890. package/dist/types-BWhaSS7U.d.mts.map +1 -0
  891. package/dist/{types-BQx6ZXpR.d.mts → types-C1KKK4VP.d.mts} +3 -1
  892. package/dist/{types-BQx6ZXpR.d.mts.map → types-C1KKK4VP.d.mts.map} +1 -1
  893. package/dist/types-Cb2UCDJg.d.mts +345 -0
  894. package/dist/types-Cb2UCDJg.d.mts.map +1 -0
  895. package/dist/{types-BIgulNsW.mjs → types-CwXMEPRr.mjs} +10 -3
  896. package/dist/types-CwXMEPRr.mjs.map +1 -0
  897. package/dist/{types-B_CXXnzh.d.mts → types-CzvJd1ND.d.mts} +7 -1
  898. package/dist/{types-B_CXXnzh.d.mts.map → types-CzvJd1ND.d.mts.map} +1 -1
  899. package/dist/types-DFowNO60.d.mts +198 -0
  900. package/dist/types-DFowNO60.d.mts.map +1 -0
  901. package/dist/{types-56BKbld_.mjs → types-DSZl1Dsv.mjs} +1 -1
  902. package/dist/{types-56BKbld_.mjs.map → types-DSZl1Dsv.mjs.map} +1 -1
  903. package/dist/types-DW1l0gCv.d.mts +75 -0
  904. package/dist/types-DW1l0gCv.d.mts.map +1 -0
  905. package/dist/types-Db67HHlU.mjs +3 -0
  906. package/dist/{types-C-aFbqmA.d.mts → types-DmxPPXGf.d.mts} +1 -1
  907. package/dist/{types-C-aFbqmA.d.mts.map → types-DmxPPXGf.d.mts.map} +1 -1
  908. package/dist/{types-K-EkEQCI.mjs → types-Dz9CGX_d.mjs} +1 -1
  909. package/dist/{types-K-EkEQCI.mjs.map → types-Dz9CGX_d.mjs.map} +1 -1
  910. package/dist/user-Dr1bOCqS.mjs +155 -0
  911. package/dist/user-Dr1bOCqS.mjs.map +1 -0
  912. package/dist/utils-_F-rWBTN.mjs +286 -0
  913. package/dist/utils-_F-rWBTN.mjs.map +1 -0
  914. package/dist/{validate-CcVQQpmH.d.mts → validate-BpQGsmd7.d.mts} +5 -4
  915. package/dist/validate-BpQGsmd7.d.mts.map +1 -0
  916. package/dist/{validate-UK4Ja1uo.mjs → validate-DlFxcVVK.mjs} +3 -3
  917. package/dist/{validate-UK4Ja1uo.mjs.map → validate-DlFxcVVK.mjs.map} +1 -1
  918. package/dist/{validation-Vc5DQkJa.mjs → validation-BiFJqUp5.mjs} +6 -5
  919. package/dist/{validation-Vc5DQkJa.mjs.map → validation-BiFJqUp5.mjs.map} +1 -1
  920. package/dist/version-Dw7Z5PVU.mjs +7 -0
  921. package/dist/{version-JjSqv90m.mjs.map → version-Dw7Z5PVU.mjs.map} +1 -1
  922. package/dist/widgets-B9j_yzlk.mjs +106 -0
  923. package/dist/widgets-B9j_yzlk.mjs.map +1 -0
  924. package/dist/zod-generator-DSyz01KE.mjs +234 -0
  925. package/dist/zod-generator-DSyz01KE.mjs.map +1 -0
  926. package/locals.d.ts +1 -1
  927. package/package.json +37 -14
  928. package/src/api/handlers/content.ts +1 -0
  929. package/src/api/handlers/index.ts +7 -0
  930. package/src/api/handlers/marketplace.ts +27 -6
  931. package/src/api/handlers/menus.ts +157 -580
  932. package/src/api/handlers/plugins.ts +77 -31
  933. package/src/api/handlers/registry.ts +1086 -0
  934. package/src/api/openapi/document.ts +10 -4
  935. package/src/api/schemas/content.ts +1 -0
  936. package/src/api/schemas/menus.ts +27 -23
  937. package/src/api/schemas/settings.ts +41 -9
  938. package/src/api/types.ts +6 -0
  939. package/src/astro/integration/index.ts +1 -0
  940. package/src/astro/integration/route-naming.ts +19 -0
  941. package/src/astro/integration/routes.ts +25 -3
  942. package/src/astro/integration/runtime.ts +35 -8
  943. package/src/astro/middleware/auth.ts +8 -2
  944. package/src/astro/middleware/csp.ts +25 -3
  945. package/src/astro/middleware.ts +3 -0
  946. package/src/astro/routes/api/admin/plugins/[id]/enable.ts +10 -0
  947. package/src/astro/routes/api/admin/plugins/registry/install.ts +107 -0
  948. package/src/astro/routes/api/auth/invite/register-options.ts +8 -1
  949. package/src/astro/routes/api/import/wordpress/execute.ts +185 -6
  950. package/src/astro/routes/api/media/[id].ts +2 -1
  951. package/src/astro/routes/api/menus/[name]/items/[id].ts +69 -0
  952. package/src/astro/routes/api/menus/[name]/items.ts +4 -65
  953. package/src/astro/types.ts +38 -0
  954. package/src/cli/wxr/parser.ts +263 -0
  955. package/src/client/index.ts +2 -1
  956. package/src/components/EmDashHead.astro +26 -5
  957. package/src/database/migrations/036_i18n_menus_and_taxonomies.ts +166 -49
  958. package/src/database/migrations/038_registry_plugin_state.ts +130 -0
  959. package/src/database/migrations/039_fix_fts5_triggers.ts +264 -0
  960. package/src/database/migrations/runner.ts +4 -0
  961. package/src/database/repositories/content.ts +5 -1
  962. package/src/database/repositories/index.ts +14 -0
  963. package/src/database/repositories/menu.ts +644 -0
  964. package/src/database/repositories/types.ts +6 -0
  965. package/src/database/types.ts +5 -1
  966. package/src/emdash-runtime.ts +143 -36
  967. package/src/import/sources/wordpress-plugin.ts +9 -2
  968. package/src/import/sources/wxr.ts +16 -2
  969. package/src/import/ssrf.ts +20 -500
  970. package/src/import/wxr-taxonomies.ts +730 -0
  971. package/src/index.ts +3 -10
  972. package/src/media/local-runtime.ts +7 -0
  973. package/src/media/normalize.ts +37 -4
  974. package/src/page/absolute-url.ts +146 -0
  975. package/src/page/jsonld.ts +10 -2
  976. package/src/page/seo-contributions.ts +17 -6
  977. package/src/plugin-types.ts +240 -0
  978. package/src/plugins/adapt-sandbox-entry.ts +115 -39
  979. package/src/plugins/context.ts +11 -1
  980. package/src/plugins/define-plugin.ts +34 -56
  981. package/src/plugins/index.ts +1 -9
  982. package/src/plugins/marketplace.ts +63 -4
  983. package/src/plugins/sandbox/index.ts +1 -1
  984. package/src/plugins/sandbox/noop.ts +2 -2
  985. package/src/plugins/sandbox/types.ts +7 -4
  986. package/src/plugins/state.ts +84 -38
  987. package/src/plugins/types.ts +2 -79
  988. package/src/query.ts +12 -0
  989. package/src/registry/config.ts +311 -0
  990. package/src/registry/plugin-id.ts +116 -0
  991. package/src/registry/types.ts +206 -0
  992. package/src/search/fts-manager.ts +77 -15
  993. package/src/security/ssrf.ts +501 -0
  994. package/src/settings/index.ts +20 -1
  995. package/src/settings/types.ts +12 -8
  996. package/dist/apply-Ded_1vng.mjs.map +0 -1
  997. package/dist/content-CERxPUN0.mjs.map +0 -1
  998. package/dist/error-DqnRMM5z.mjs +0 -27
  999. package/dist/error-DqnRMM5z.mjs.map +0 -1
  1000. package/dist/index-BogfvE-z.d.mts.map +0 -1
  1001. package/dist/placeholder-Ci0RLeCk.mjs +0 -268
  1002. package/dist/placeholder-Ci0RLeCk.mjs.map +0 -1
  1003. package/dist/query-8c_meo_K.mjs.map +0 -1
  1004. package/dist/registry-Do34mz_P.mjs.map +0 -1
  1005. package/dist/runner-DIcU2UCC.mjs.map +0 -1
  1006. package/dist/search-DuWhx4NG.mjs +0 -9897
  1007. package/dist/search-DuWhx4NG.mjs.map +0 -1
  1008. package/dist/types-BIgulNsW.mjs.map +0 -1
  1009. package/dist/types-BTe41zL6.d.mts.map +0 -1
  1010. package/dist/types-DiI8NOG_.mjs +0 -16
  1011. package/dist/types-DiI8NOG_.mjs.map +0 -1
  1012. package/dist/types-IjUrQMVe.d.mts.map +0 -1
  1013. package/dist/validate-CcVQQpmH.d.mts.map +0 -1
  1014. package/dist/version-JjSqv90m.mjs +0 -7
  1015. package/dist/zod-generator-CHnJUP2l.mjs +0 -137
  1016. package/dist/zod-generator-CHnJUP2l.mjs.map +0 -1
package/src/index.ts CHANGED
@@ -164,6 +164,7 @@ export type {
164
164
  WxrAttachment,
165
165
  WxrCategory,
166
166
  WxrTag,
167
+ WxrTerm,
167
168
  WxrAuthor,
168
169
  } from "./cli/wxr/parser.js";
169
170
 
@@ -188,7 +189,6 @@ export { EmDashStorageError } from "./storage/types.js";
188
189
  export {
189
190
  definePlugin,
190
191
  adaptSandboxEntry,
191
- isStandardPluginDefinition,
192
192
  pluginManifestSchema,
193
193
  createHookPipeline,
194
194
  HookPipeline,
@@ -243,16 +243,9 @@ export type {
243
243
  CollectionCommentSettings,
244
244
  StoredComment,
245
245
 
246
- // Standard plugin format
247
- StandardPluginDefinition,
248
- StandardHookHandler,
249
- StandardHookEntry,
250
- StandardRouteHandler,
251
- StandardRouteEntry,
252
-
253
- // Sandbox types
246
+ // Sandbox runtime types
254
247
  SandboxRunner,
255
- SandboxedPlugin,
248
+ SandboxedPluginInstance,
256
249
  SandboxRunnerFactory,
257
250
  SandboxOptions,
258
251
  SandboxEmailMessage,
@@ -14,6 +14,7 @@ import type { Kysely } from "kysely";
14
14
  import { MediaRepository } from "../database/repositories/media.js";
15
15
  import type { Database } from "../database/types.js";
16
16
  import type { Storage } from "../index.js";
17
+ import { invalidateSiteSettingsCache } from "../settings/index.js";
17
18
  import type {
18
19
  CreateMediaProviderFn,
19
20
  MediaProvider,
@@ -120,6 +121,12 @@ export const createMediaProvider: CreateMediaProviderFn<LocalMediaRuntimeConfig>
120
121
  }
121
122
 
122
123
  await repo.delete(id);
124
+
125
+ // If this row was referenced by `logo`, `favicon`, or
126
+ // `seo.defaultOgImage`, the worker-scoped settings cache now
127
+ // holds a stale URL. The provider routes (and any future caller)
128
+ // bypass `handleMediaDelete`, so we invalidate here too.
129
+ invalidateSiteSettingsCache();
123
130
  },
124
131
 
125
132
  getEmbed(value: MediaValue, _options?: EmbedOptions): EmbedResult {
@@ -20,6 +20,7 @@ const URL_PATTERN = /^https?:\/\//;
20
20
  * - `null`/`undefined` → `null`
21
21
  * - Bare URL string → `{ provider: "external", id: "", src: url }`
22
22
  * - Bare internal media URL → resolved via local provider's `get()`
23
+ * - Bare local media ID → resolved via local provider's `get()`
23
24
  * - Object with `provider` + `id` → enriched with missing fields from provider
24
25
  */
25
26
  export async function normalizeMediaValue(
@@ -79,7 +80,7 @@ export async function normalizeMediaValue(
79
80
  return mergeProviderData(result, providerItem);
80
81
  }
81
82
 
82
- function normalizeStringUrl(
83
+ async function normalizeStringUrl(
83
84
  url: string,
84
85
  getProvider: (id: string) => MediaProvider | undefined,
85
86
  ): Promise<MediaValue | null> {
@@ -97,12 +98,15 @@ function normalizeStringUrl(
97
98
  });
98
99
  }
99
100
 
100
- // Unrecognized string treat as external
101
- return Promise.resolve({
101
+ const localMedia = await resolveLocalId(url, getProvider);
102
+ if (localMedia) return localMedia;
103
+
104
+ // Unrecognized string — preserve legacy behavior and treat as external
105
+ return {
102
106
  provider: "external",
103
107
  id: "",
104
108
  src: url,
105
- });
109
+ };
106
110
  }
107
111
 
108
112
  async function resolveInternalUrl(
@@ -139,6 +143,35 @@ async function resolveInternalUrl(
139
143
  };
140
144
  }
141
145
 
146
+ async function resolveLocalId(
147
+ id: string,
148
+ getProvider: (id: string) => MediaProvider | undefined,
149
+ ): Promise<MediaValue | null> {
150
+ const localProvider = getProvider("local");
151
+
152
+ if (!localProvider?.get) return null;
153
+
154
+ let item: MediaProviderItem | null;
155
+ try {
156
+ item = await localProvider.get(id);
157
+ } catch {
158
+ return null;
159
+ }
160
+
161
+ if (!item) return null;
162
+
163
+ return {
164
+ provider: "local",
165
+ id: item.id,
166
+ filename: item.filename,
167
+ mimeType: item.mimeType,
168
+ width: item.width,
169
+ height: item.height,
170
+ alt: item.alt,
171
+ meta: item.meta,
172
+ };
173
+ }
174
+
142
175
  /**
143
176
  * Merge provider data into an existing MediaValue, preserving caller-supplied fields.
144
177
  * Caller `alt` takes priority over provider `alt` (per-usage, not per-image).
@@ -0,0 +1,146 @@
1
+ /**
2
+ * Helpers for resolving relative media URLs to absolute URLs for SEO output.
3
+ *
4
+ * Social-card scrapers (Facebook, LinkedIn, Slack, Twitter) and JSON-LD
5
+ * consumers expect absolute URLs in `og:image`, `twitter:image`, and
6
+ * structured-data `image` fields. EmDash's media file route returns a
7
+ * site-relative path (`/_emdash/api/media/file/...`), so anywhere the
8
+ * resolved URL feeds into crawler-facing markup we have to join it with
9
+ * the public site origin.
10
+ */
11
+
12
+ import type { PublicPageContext } from "../plugins/types.js";
13
+
14
+ const HTTP_URL_RE = /^https?:\/\//i;
15
+ /**
16
+ * Protocol-relative URLs (`//cdn.example.com/x.png`) are dropped outright.
17
+ * They have no legitimate use in `og:image` (scrapers want a full URL) and
18
+ * are a well-known SSRF vector when reflected through server-side
19
+ * fetchers. Anything starting with `//` returns `null`.
20
+ */
21
+ const PROTOCOL_RELATIVE_RE = /^\/\//;
22
+ /**
23
+ * URL schemes we pass through unchanged because they are legitimately
24
+ * useful as OG image values. `data:image/*` is sometimes used for inline
25
+ * social cards (rare, but legal). Everything else with a scheme
26
+ * (`mailto:`, `tel:`, `file:`, `blob:`, custom protocols) would be garbage
27
+ * in an `og:image`; we return `null` so the caller can decide whether to
28
+ * fall back or drop the tag.
29
+ */
30
+ const PASSTHROUGH_SCHEME_RE = /^data:image\//i;
31
+ /**
32
+ * Detects URLs that have a scheme other than http/https (and other than
33
+ * the data:image/ form we pass through). Used to short-circuit garbage
34
+ * input rather than treating it as a relative path.
35
+ */
36
+ const OTHER_SCHEME_RE = /^[a-z][a-z0-9+.-]*:/i;
37
+ /**
38
+ * Any ASCII whitespace or C0/C1 control character anywhere in the URL is
39
+ * an injection signal — legitimate media URLs never contain them. Without
40
+ * this guard, an input like `" https://attacker/x"` would slip past the
41
+ * scheme regexes (which are anchored at offset 0) and get joined as a
42
+ * relative path with the site origin, producing
43
+ * `https://site.example/ https://attacker/x` — confusing but not
44
+ * exploitable, plus more pathological shapes like leading newlines that
45
+ * could inject across header boundaries downstream.
46
+ */
47
+ // eslint-disable-next-line eslint(no-control-regex) -- intentional: rejecting control chars is the whole point of this regex
48
+ const WHITESPACE_OR_CONTROL_RE = /[\s\u0000-\u001f\u007f-\u009f]/;
49
+ const TRAILING_SLASH_RE = /\/$/;
50
+
51
+ /**
52
+ * `URL.origin` returns the literal string `"null"` (not the `null` value)
53
+ * for opaque origins like `data:`, `blob:`, and `about:blank`. Treating
54
+ * that as a valid origin would produce `null/og.png` in the output.
55
+ */
56
+ function isUsableOrigin(origin: string): boolean {
57
+ return origin !== "null" && origin !== "";
58
+ }
59
+
60
+ /**
61
+ * Resolve the public origin to use when absolutizing a media URL.
62
+ *
63
+ * Precedence:
64
+ * 1. The configured `SiteSettings.url` (admin-controlled, canonical).
65
+ * 2. `PublicPageContext.siteUrl` (set by themes that override the origin,
66
+ * e.g. when running behind a reverse proxy).
67
+ * 3. The origin parsed from `page.url`, which is the live request URL.
68
+ *
69
+ * Only `http:` and `https:` candidates count — anything else (e.g. `file:`,
70
+ * `data:`, `blob:`) would yield an unusable origin and is skipped. Returns
71
+ * `null` if no candidate parses to a usable HTTP(S) origin; callers should
72
+ * treat that as "leave the URL relative" rather than throw.
73
+ */
74
+ export function resolveSiteOrigin(
75
+ configuredSiteUrl: string | undefined,
76
+ page: PublicPageContext,
77
+ ): string | null {
78
+ const candidates = [configuredSiteUrl, page.siteUrl, page.url];
79
+ for (const candidate of candidates) {
80
+ if (!candidate || typeof candidate !== "string") continue;
81
+ try {
82
+ const parsed = new URL(candidate);
83
+ if (parsed.protocol !== "http:" && parsed.protocol !== "https:") continue;
84
+ if (!isUsableOrigin(parsed.origin)) continue;
85
+ return parsed.origin;
86
+ } catch {
87
+ // Fall through to the next candidate. Configured URLs and page
88
+ // URLs can be malformed (e.g. an admin pasted "example.com"
89
+ // without a scheme); we don't want a bad config to break head
90
+ // rendering.
91
+ }
92
+ }
93
+ return null;
94
+ }
95
+
96
+ /**
97
+ * Absolutize a media URL using the best available site origin.
98
+ *
99
+ * - Returns `null` for missing/empty input.
100
+ * - Passes through already-absolute `http(s):` URLs unchanged.
101
+ * - Passes through `data:image/*` URLs unchanged (rare but legal as OG
102
+ * image content).
103
+ * - Returns `null` for protocol-relative URLs (`//cdn.com/x`): no
104
+ * legitimate `og:image` use case, and a known SSRF vector when reflected
105
+ * through server-side fetchers.
106
+ * - Returns `null` for any other scheme (`mailto:`, `blob:`, `file:`,
107
+ * custom protocols): emitting those into `og:image` is worse than
108
+ * omitting the tag.
109
+ * - Returns the original (relative) URL when no origin can be resolved —
110
+ * preferable to dropping `og:image` outright because scrapers that follow
111
+ * relative URLs are better off than ones that get nothing.
112
+ *
113
+ * @param url - The (possibly relative) media URL, e.g. `/_emdash/api/media/file/abc.jpg`.
114
+ * @param configuredSiteUrl - `SiteSettings.url` value (admin-controlled).
115
+ * @param page - The page context providing `siteUrl` and `url` fallbacks.
116
+ */
117
+ export function absolutizeMediaUrl(
118
+ url: string | undefined,
119
+ configuredSiteUrl: string | undefined,
120
+ page: PublicPageContext,
121
+ ): string | null {
122
+ if (!url) return null;
123
+
124
+ // Any whitespace or control character means this isn't a real media URL.
125
+ // Rejecting up front prevents scheme-regex evasion (` https://x` would
126
+ // otherwise fall through to the relative-path join below).
127
+ if (WHITESPACE_OR_CONTROL_RE.test(url)) return null;
128
+
129
+ if (HTTP_URL_RE.test(url)) return url;
130
+ if (PASSTHROUGH_SCHEME_RE.test(url)) return url;
131
+
132
+ // Reject protocol-relative URLs before any other handling. Order
133
+ // matters: `OTHER_SCHEME_RE` wouldn't match `//x` (no leading scheme),
134
+ // so a missing check here would fall through to the relative-path
135
+ // join below and produce `https://site.example//cdn.evil.com/x`.
136
+ if (PROTOCOL_RELATIVE_RE.test(url)) return null;
137
+
138
+ // Any remaining `<scheme>:` form is something we'd silently mangle by
139
+ // prepending an origin. Drop it.
140
+ if (OTHER_SCHEME_RE.test(url)) return null;
141
+
142
+ const origin = resolveSiteOrigin(configuredSiteUrl, page);
143
+ if (!origin) return url;
144
+ const safePath = url.startsWith("/") ? url : `/${url}`;
145
+ return `${origin.replace(TRAILING_SLASH_RE, "")}${safePath}`;
146
+ }
@@ -29,13 +29,21 @@ export function cleanJsonLd(obj: Record<string, unknown>): Record<string, unknow
29
29
  /**
30
30
  * Build a BlogPosting JSON-LD graph from page context.
31
31
  * Used for article-type content pages.
32
+ *
33
+ * @param page - Page context for the current request.
34
+ * @param defaultOgImage - Optional site-wide fallback image URL, used when
35
+ * the page has no own OG image. Matches the fallback applied to `og:image`
36
+ * in `generateBaseSeoContributions`.
32
37
  */
33
- export function buildBlogPostingJsonLd(page: PublicPageContext): Record<string, unknown> | null {
38
+ export function buildBlogPostingJsonLd(
39
+ page: PublicPageContext,
40
+ defaultOgImage?: string | null,
41
+ ): Record<string, unknown> | null {
34
42
  if (page.pageType !== "article" || !page.canonical) return null;
35
43
 
36
44
  const ogTitle = page.seo?.ogTitle ?? page.pageTitle ?? page.title;
37
45
  const description = page.seo?.ogDescription || page.description;
38
- const ogImage = page.seo?.ogImage || page.image;
46
+ const ogImage = page.seo?.ogImage || page.image || defaultOgImage || null;
39
47
  const publishedTime = page.articleMeta?.publishedTime;
40
48
  const modifiedTime = page.articleMeta?.modifiedTime;
41
49
  const author = page.articleMeta?.author;
@@ -1,9 +1,11 @@
1
1
  /**
2
2
  * Generate base SEO metadata contributions from PublicPageContext.
3
3
  *
4
- * These contributions are prepended BEFORE plugin contributions in
5
- * resolvePageMetadata(), which uses first-wins dedup. This means
6
- * plugins can override any base SEO tag by contributing the same key.
4
+ * EmDashHead.astro composes the final contribution list as
5
+ * `[...plugin, ...site, ...base]` and feeds it to `resolvePageMetadata()`,
6
+ * which is first-wins. That ordering means plugin contributions override
7
+ * site-level ones override base ones for any given key — base values are
8
+ * the fallback, not the source of truth.
7
9
  *
8
10
  * This replaces the per-template SEO.astro components, eliminating
9
11
  * the class of XSS bugs where templates hand-rolled JSON-LD serialization.
@@ -15,15 +17,24 @@ import { buildBlogPostingJsonLd, buildWebSiteJsonLd } from "./jsonld.js";
15
17
 
16
18
  /**
17
19
  * Generate base metadata contributions from a page context's SEO data.
20
+ *
21
+ * @param page - Page context produced by the runtime for the current request.
22
+ * @param defaultOgImage - Optional site-wide fallback OG image URL, used when
23
+ * the page has no own OG image (i.e., neither `seo.ogImage` nor `image`).
24
+ * Sourced from `SiteSettings.seo.defaultOgImage` by `EmDashHead`.
25
+ *
18
26
  * Returns an empty array if no SEO-relevant data is present.
19
27
  */
20
- export function generateBaseSeoContributions(page: PublicPageContext): PageMetadataContribution[] {
28
+ export function generateBaseSeoContributions(
29
+ page: PublicPageContext,
30
+ defaultOgImage?: string | null,
31
+ ): PageMetadataContribution[] {
21
32
  const contributions: PageMetadataContribution[] = [];
22
33
 
23
34
  const description = page.description;
24
35
  const ogTitle = page.seo?.ogTitle ?? page.pageTitle ?? page.title;
25
36
  const ogDescription = page.seo?.ogDescription || description;
26
- const ogImage = page.seo?.ogImage || page.image;
37
+ const ogImage = page.seo?.ogImage || page.image || defaultOgImage || null;
27
38
  const robots = page.seo?.robots;
28
39
  const canonical = page.canonical;
29
40
  const siteName = page.siteName;
@@ -122,7 +133,7 @@ export function generateBaseSeoContributions(page: PublicPageContext): PageMetad
122
133
  // -- JSON-LD --
123
134
 
124
135
  if (page.pageType === "article") {
125
- const blogPosting = buildBlogPostingJsonLd(page);
136
+ const blogPosting = buildBlogPostingJsonLd(page, defaultOgImage ?? null);
126
137
  if (blogPosting) {
127
138
  contributions.push({ kind: "jsonld", id: "primary", graph: blogPosting });
128
139
  }
@@ -0,0 +1,240 @@
1
+ /**
2
+ * `emdash/plugin` — types for authoring sandboxed plugins.
3
+ *
4
+ * This is a **type-only** subpath. The package.json export map only
5
+ * declares a `types` condition, so the bundler erases `import type`
6
+ * statements against this entry and the build never tries to resolve a
7
+ * JavaScript module. That's how a sandboxed plugin can import these
8
+ * types without dragging the `emdash` runtime into its bundle.
9
+ *
10
+ * Recommended authoring pattern:
11
+ *
12
+ * ```ts
13
+ * import type { SandboxedPlugin } from "emdash/plugin";
14
+ *
15
+ * export default {
16
+ * hooks: {
17
+ * "content:beforeSave": async (event, ctx) => {
18
+ * // event: ContentHookEvent, ctx: PluginContext — both inferred.
19
+ * return event.content;
20
+ * },
21
+ * },
22
+ * routes: {
23
+ * health: async (routeCtx, ctx) => ({ ok: true }),
24
+ * },
25
+ * } satisfies SandboxedPlugin;
26
+ * ```
27
+ *
28
+ * The `satisfies SandboxedPlugin` annotation drives full inference on
29
+ * every hook handler. Authors should not need to annotate handler
30
+ * params — TypeScript reads the event type from the hook name. The
31
+ * runtime probe at build time reads `default.hooks` and `default.routes`
32
+ * directly; the shape declared here mirrors what the probe consumes.
33
+ *
34
+ * Return types matter: `content:beforeSave` may return a mutated
35
+ * `content` to override the saved fields; `content:beforeDelete` and
36
+ * `comment:beforeCreate` may return `false` to veto; `page:metadata`
37
+ * returns the metadata contribution. The mapped type captures these
38
+ * per-hook return contracts so misuse fails at compile time.
39
+ */
40
+
41
+ import type {
42
+ CommentAfterCreateEvent,
43
+ CommentAfterCreateHandler,
44
+ CommentAfterModerateEvent,
45
+ CommentAfterModerateHandler,
46
+ CommentBeforeCreateEvent,
47
+ CommentBeforeCreateHandler,
48
+ CommentModerateEvent,
49
+ CommentModerateHandler,
50
+ ContentAfterDeleteHandler,
51
+ ContentAfterPublishHandler,
52
+ ContentAfterSaveHandler,
53
+ ContentAfterUnpublishHandler,
54
+ ContentBeforeDeleteHandler,
55
+ ContentBeforeSaveHandler,
56
+ ContentDeleteEvent,
57
+ ContentHookEvent,
58
+ ContentPublishStateChangeEvent,
59
+ CronEvent,
60
+ CronHandler,
61
+ EmailAfterSendEvent,
62
+ EmailAfterSendHandler,
63
+ EmailBeforeSendEvent,
64
+ EmailBeforeSendHandler,
65
+ EmailDeliverEvent,
66
+ EmailDeliverHandler,
67
+ LifecycleEvent,
68
+ LifecycleHandler,
69
+ MediaAfterUploadEvent,
70
+ MediaAfterUploadHandler,
71
+ MediaBeforeUploadHandler,
72
+ MediaUploadEvent,
73
+ PageFragmentEvent,
74
+ PageFragmentHandler,
75
+ PageMetadataEvent,
76
+ PageMetadataHandler,
77
+ PluginContext,
78
+ UninstallEvent,
79
+ UninstallHandler,
80
+ } from "./plugins/types.js";
81
+
82
+ /**
83
+ * Map from hook name to its handler signature. Adding or changing a
84
+ * hook signature in the runtime means updating this map; the rest of
85
+ * the type story flows from it. Authors writing
86
+ * `"content:beforeSave": async (event, ctx) => { ... }` get `event`
87
+ * typed as `ContentHookEvent` and `ctx` as `PluginContext` for free.
88
+ */
89
+ export interface HookHandlers {
90
+ "plugin:install": LifecycleHandler;
91
+ "plugin:activate": LifecycleHandler;
92
+ "plugin:deactivate": LifecycleHandler;
93
+ "plugin:uninstall": UninstallHandler;
94
+ "content:beforeSave": ContentBeforeSaveHandler;
95
+ "content:afterSave": ContentAfterSaveHandler;
96
+ "content:beforeDelete": ContentBeforeDeleteHandler;
97
+ "content:afterDelete": ContentAfterDeleteHandler;
98
+ "content:afterPublish": ContentAfterPublishHandler;
99
+ "content:afterUnpublish": ContentAfterUnpublishHandler;
100
+ "media:beforeUpload": MediaBeforeUploadHandler;
101
+ "media:afterUpload": MediaAfterUploadHandler;
102
+ cron: CronHandler;
103
+ "email:beforeSend": EmailBeforeSendHandler;
104
+ "email:deliver": EmailDeliverHandler;
105
+ "email:afterSend": EmailAfterSendHandler;
106
+ "comment:beforeCreate": CommentBeforeCreateHandler;
107
+ "comment:moderate": CommentModerateHandler;
108
+ "comment:afterCreate": CommentAfterCreateHandler;
109
+ "comment:afterModerate": CommentAfterModerateHandler;
110
+ "page:metadata": PageMetadataHandler;
111
+ "page:fragments": PageFragmentHandler;
112
+ }
113
+
114
+ /**
115
+ * Hook-handler config form. The bare-function form is also accepted
116
+ * (see `HookEntry`) — this is the long form that lets authors override
117
+ * priority, timeout, exclusivity. `errorPolicy` and `dependencies` are
118
+ * read by the host but rarely set by authors.
119
+ */
120
+ export interface HookConfig<K extends keyof HookHandlers> {
121
+ handler: HookHandlers[K];
122
+ priority?: number;
123
+ timeout?: number;
124
+ dependencies?: string[];
125
+ errorPolicy?: "continue" | "abort";
126
+ exclusive?: boolean;
127
+ }
128
+
129
+ /**
130
+ * Either a bare handler or the config form. The build probe accepts
131
+ * both shapes and the runtime normalises to the config form before
132
+ * dispatch.
133
+ */
134
+ export type HookEntry<K extends keyof HookHandlers> = HookHandlers[K] | HookConfig<K>;
135
+
136
+ /**
137
+ * Request fields a route handler can rely on across both trusted and
138
+ * sandboxed execution. Trusted handlers receive a real `Request`
139
+ * (which is structurally compatible — has `url`, `method`, `headers`);
140
+ * sandboxed handlers receive a serialised `{ url, method, headers }`
141
+ * record because Worker Loader can't pass `Request` objects across
142
+ * the boundary. The shared shape is what's actually portable.
143
+ *
144
+ * `headers` is intentionally `Record<string, string>` rather than
145
+ * `Headers` so the sandboxed serialised form (which is a plain
146
+ * record) typechecks. Trusted handlers receiving a real `Headers`
147
+ * object can still call `.get(...)`, but reading via this type's
148
+ * indexing requires the lookup to be lowercased and exact. Authors
149
+ * iterating headers in a portable way should use `Object.entries`.
150
+ */
151
+ export interface SandboxedRequest {
152
+ url: string;
153
+ method: string;
154
+ headers: Record<string, string>;
155
+ }
156
+
157
+ /**
158
+ * Context passed to a route handler. Routes get an extra `routeCtx`
159
+ * argument with the call-site input + the originating request, in
160
+ * addition to the standard `PluginContext`.
161
+ *
162
+ * `input` is `unknown` because plugins validate it themselves — no
163
+ * central schema for route payloads.
164
+ */
165
+ export interface SandboxedRouteContext {
166
+ input: unknown;
167
+ request: SandboxedRequest;
168
+ requestMeta?: unknown;
169
+ }
170
+
171
+ /**
172
+ * Route handler. The two-arg shape (`routeCtx`, `pluginCtx`) matches
173
+ * how the standard-format runtime invokes routes — distinct from
174
+ * native plugins, where routes take a single context with the input
175
+ * merged in.
176
+ *
177
+ * Return type is `unknown` because routes serialise their return value
178
+ * to JSON for the caller; authors define their own response shape.
179
+ */
180
+ export type RouteHandler = (
181
+ routeCtx: SandboxedRouteContext,
182
+ ctx: PluginContext,
183
+ ) => Promise<unknown>;
184
+
185
+ /**
186
+ * Route entry — either a bare handler or the config form with
187
+ * `public`, `input` schema, and so on. The build probe accepts both.
188
+ */
189
+ export type RouteEntry =
190
+ | RouteHandler
191
+ | {
192
+ handler: RouteHandler;
193
+ public?: boolean;
194
+ input?: unknown;
195
+ };
196
+
197
+ /**
198
+ * The shape of a sandboxed plugin's default export.
199
+ *
200
+ * Both `hooks` and `routes` are optional — a plugin that only declares
201
+ * one is valid. Hook keys are constrained to the runtime's hook
202
+ * vocabulary so a typo (`"content:beforSave"`) is a compile error.
203
+ * Route keys are open because route names are author-chosen URL path
204
+ * segments.
205
+ */
206
+ export interface SandboxedPlugin {
207
+ hooks?: {
208
+ [K in keyof HookHandlers]?: HookEntry<K>;
209
+ };
210
+ routes?: Record<string, RouteEntry>;
211
+ }
212
+
213
+ /**
214
+ * Re-export of event types so plugin authors can reference them
215
+ * explicitly when needed (helper functions, type predicates). Most
216
+ * authors won't need these — the mapped type infers them at handler
217
+ * call sites. But the default-export's inferred type also needs them
218
+ * publicly nameable so `satisfies SandboxedPlugin` can produce a
219
+ * portable `.d.mts`.
220
+ */
221
+ export type {
222
+ CommentAfterCreateEvent,
223
+ CommentAfterModerateEvent,
224
+ CommentBeforeCreateEvent,
225
+ CommentModerateEvent,
226
+ ContentDeleteEvent,
227
+ ContentHookEvent,
228
+ ContentPublishStateChangeEvent,
229
+ CronEvent,
230
+ EmailAfterSendEvent,
231
+ EmailBeforeSendEvent,
232
+ EmailDeliverEvent,
233
+ LifecycleEvent,
234
+ MediaAfterUploadEvent,
235
+ MediaUploadEvent,
236
+ PageFragmentEvent,
237
+ PageMetadataEvent,
238
+ PluginContext,
239
+ UninstallEvent,
240
+ };