emdash 0.12.0 → 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 (1003) 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-C1ZORgcy.mjs → apply-v4DBgjPw.mjs} +19 -346
  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 +140 -69
  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 -8
  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-Dlkzhb4C.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-Bp6d4d4n.mjs → manifest-schema-HCtSh4Jq.mjs} +1 -1
  749. package/dist/{manifest-schema-Bp6d4d4n.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 +7 -6
  756. package/dist/media/local-runtime.mjs.map +1 -1
  757. package/dist/media-Dg7he9uK.mjs +209 -0
  758. package/dist/media-Dg7he9uK.mjs.map +1 -0
  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 +2 -2
  784. package/dist/parse-BFTPon-J.mjs +89 -0
  785. package/dist/parse-BFTPon-J.mjs.map +1 -0
  786. package/dist/passkey-config-Cg86_ISa.mjs +46 -0
  787. package/dist/passkey-config-Cg86_ISa.mjs.map +1 -0
  788. package/dist/{patterns-DsUZ4uxI.mjs → patterns-CqG5Ya3i.mjs} +54 -2
  789. package/dist/{patterns-DsUZ4uxI.mjs.map → patterns-CqG5Ya3i.mjs.map} +1 -1
  790. package/dist/{placeholder-CDPtkelt.d.mts → placeholder-D3cFCU9y.d.mts} +2 -1
  791. package/dist/{placeholder-CDPtkelt.d.mts.map → placeholder-D3cFCU9y.d.mts.map} +1 -1
  792. package/dist/placeholder-LqmHqvBw.mjs +143 -0
  793. package/dist/placeholder-LqmHqvBw.mjs.map +1 -0
  794. package/dist/plugin-types.d.mts +122 -0
  795. package/dist/plugin-types.d.mts.map +1 -0
  796. package/dist/plugin-types.mjs +1 -0
  797. package/dist/plugins/adapt-sandbox-entry.d.mts +20 -12
  798. package/dist/plugins/adapt-sandbox-entry.d.mts.map +1 -1
  799. package/dist/plugins/adapt-sandbox-entry.mjs +46 -23
  800. package/dist/plugins/adapt-sandbox-entry.mjs.map +1 -1
  801. package/dist/preview-C1LOEbWZ.mjs +107 -0
  802. package/dist/preview-C1LOEbWZ.mjs.map +1 -0
  803. package/dist/{public-url-B1AxbbbQ.mjs → public-url-CseXl9Fv.mjs} +39 -2
  804. package/dist/{public-url-B1AxbbbQ.mjs.map → public-url-CseXl9Fv.mjs.map} +1 -1
  805. package/dist/{query-yA3-rFji.mjs → query-axZmO6Tn.mjs} +12 -12
  806. package/dist/{query-yA3-rFji.mjs.map → query-axZmO6Tn.mjs.map} +1 -1
  807. package/dist/rate-limit-t5CVjCO6.mjs +120 -0
  808. package/dist/rate-limit-t5CVjCO6.mjs.map +1 -0
  809. package/dist/redirect-DGRsLO2I.mjs +17 -0
  810. package/dist/redirect-DGRsLO2I.mjs.map +1 -0
  811. package/dist/{redirect-C5H7VGIX.mjs → redirect-DkaDxq8e.mjs} +3 -3
  812. package/dist/{redirect-C5H7VGIX.mjs.map → redirect-DkaDxq8e.mjs.map} +1 -1
  813. package/dist/redirects-D1fdd68T.mjs +573 -0
  814. package/dist/redirects-D1fdd68T.mjs.map +1 -0
  815. package/dist/redirects-Dmj6KRU3.mjs +1141 -0
  816. package/dist/redirects-Dmj6KRU3.mjs.map +1 -0
  817. package/dist/{registry-Do34mz_P.mjs → registry-BnCeHYsf.mjs} +8 -300
  818. package/dist/registry-BnCeHYsf.mjs.map +1 -0
  819. package/dist/{request-cache-D4I69LeL.mjs → request-cache-dzCt8TZB.mjs} +1 -1
  820. package/dist/{request-cache-D4I69LeL.mjs.map → request-cache-dzCt8TZB.mjs.map} +1 -1
  821. package/dist/request-meta-CLCwSQOS.mjs +140 -0
  822. package/dist/request-meta-CLCwSQOS.mjs.map +1 -0
  823. package/dist/{runner-Iu3IZSDM.d.mts → runner-DcfZewkO.d.mts} +2 -2
  824. package/dist/{runner-Iu3IZSDM.d.mts.map → runner-DcfZewkO.d.mts.map} +1 -1
  825. package/dist/{runner-DIcU2UCC.mjs → runner-DdnQIwz_.mjs} +436 -187
  826. package/dist/runner-DdnQIwz_.mjs.map +1 -0
  827. package/dist/runtime.d.mts +10 -6
  828. package/dist/runtime.d.mts.map +1 -1
  829. package/dist/runtime.mjs +3 -3
  830. package/dist/schema-BmqagCwG.mjs +41 -0
  831. package/dist/schema-BmqagCwG.mjs.map +1 -0
  832. package/dist/search-CPrvO5u8.mjs +376 -0
  833. package/dist/search-CPrvO5u8.mjs.map +1 -0
  834. package/dist/{secrets-CZ8rxLX3.mjs → secrets-6pgZyq0K.mjs} +3 -3
  835. package/dist/{secrets-CZ8rxLX3.mjs.map → secrets-6pgZyq0K.mjs.map} +1 -1
  836. package/dist/sections-Cm-zb-gZ.mjs +346 -0
  837. package/dist/sections-Cm-zb-gZ.mjs.map +1 -0
  838. package/dist/seed/index.d.mts +2 -2
  839. package/dist/seed/index.mjs +19 -15
  840. package/dist/seo/index.d.mts +1 -1
  841. package/dist/seo-BoR4wCUh.mjs +86 -0
  842. package/dist/seo-BoR4wCUh.mjs.map +1 -0
  843. package/dist/seo-DRq9-EPP.mjs +130 -0
  844. package/dist/seo-DRq9-EPP.mjs.map +1 -0
  845. package/dist/service-vByySp-2.mjs +195 -0
  846. package/dist/service-vByySp-2.mjs.map +1 -0
  847. package/dist/settings-CBBj7HUd.mjs +51 -0
  848. package/dist/settings-CBBj7HUd.mjs.map +1 -0
  849. package/dist/settings-xQKsWnzQ.mjs +235 -0
  850. package/dist/settings-xQKsWnzQ.mjs.map +1 -0
  851. package/dist/setup-BGAJ2uXs.mjs +137 -0
  852. package/dist/setup-BGAJ2uXs.mjs.map +1 -0
  853. package/dist/setup-complete-C6ZCLhKo.mjs +26 -0
  854. package/dist/setup-complete-C6ZCLhKo.mjs.map +1 -0
  855. package/dist/setup-nonce-CY1gQiAU.mjs +25 -0
  856. package/dist/setup-nonce-CY1gQiAU.mjs.map +1 -0
  857. package/dist/site-url-D-M4Fd8O.mjs +13 -0
  858. package/dist/site-url-D-M4Fd8O.mjs.map +1 -0
  859. package/dist/slugify-Cjh1ssOZ.mjs +30 -0
  860. package/dist/slugify-Cjh1ssOZ.mjs.map +1 -0
  861. package/dist/ssrf-CTul4uQi.mjs +1 -0
  862. package/dist/ssrf-DzFN_qV-.mjs +332 -0
  863. package/dist/ssrf-DzFN_qV-.mjs.map +1 -0
  864. package/dist/storage/local.d.mts +1 -1
  865. package/dist/storage/local.mjs +1 -1
  866. package/dist/storage/s3.d.mts +1 -1
  867. package/dist/storage/s3.mjs +1 -1
  868. package/dist/{taxonomies-JmQQZiG1.mjs → taxonomies-Cn9UpaR2.mjs} +7 -7
  869. package/dist/{taxonomies-JmQQZiG1.mjs.map → taxonomies-Cn9UpaR2.mjs.map} +1 -1
  870. package/dist/taxonomies-Dc0mzlms.mjs +508 -0
  871. package/dist/taxonomies-Dc0mzlms.mjs.map +1 -0
  872. package/dist/{taxonomy-D6NvlKo8.mjs → taxonomy-wPfusMK9.mjs} +3 -3
  873. package/dist/{taxonomy-D6NvlKo8.mjs.map → taxonomy-wPfusMK9.mjs.map} +1 -1
  874. package/dist/{tokens-CyRDPVW2.mjs → tokens-DILYNZMi.mjs} +2 -2
  875. package/dist/{tokens-CyRDPVW2.mjs.map → tokens-DILYNZMi.mjs.map} +1 -1
  876. package/dist/{transaction-D44LBXvU.mjs → transaction-NQj4VJ7Z.mjs} +1 -1
  877. package/dist/{transaction-D44LBXvU.mjs.map → transaction-NQj4VJ7Z.mjs.map} +1 -1
  878. package/dist/{transport-DX_5rpsq.d.mts → transport-GeXlLscf.d.mts} +1 -1
  879. package/dist/{transport-DX_5rpsq.d.mts.map → transport-GeXlLscf.d.mts.map} +1 -1
  880. package/dist/{transport-xpzIjCIB.mjs → transport-fw-mKJzT.mjs} +1 -1
  881. package/dist/{transport-xpzIjCIB.mjs.map → transport-fw-mKJzT.mjs.map} +1 -1
  882. package/dist/trusted-proxy-CJhQIk65.mjs +51 -0
  883. package/dist/trusted-proxy-CJhQIk65.mjs.map +1 -0
  884. package/dist/{types-DgSc9Rpc.d.mts → types-B05e2naf.d.mts} +5 -59
  885. package/dist/types-B05e2naf.d.mts.map +1 -0
  886. package/dist/{types-B1gLSAH2.d.mts → types-BWhaSS7U.d.mts} +2 -75
  887. package/dist/types-BWhaSS7U.d.mts.map +1 -0
  888. package/dist/{types-BQx6ZXpR.d.mts → types-C1KKK4VP.d.mts} +3 -1
  889. package/dist/{types-BQx6ZXpR.d.mts.map → types-C1KKK4VP.d.mts.map} +1 -1
  890. package/dist/types-Cb2UCDJg.d.mts +345 -0
  891. package/dist/types-Cb2UCDJg.d.mts.map +1 -0
  892. package/dist/{types-BIgulNsW.mjs → types-CwXMEPRr.mjs} +10 -3
  893. package/dist/types-CwXMEPRr.mjs.map +1 -0
  894. package/dist/{types-B_CXXnzh.d.mts → types-CzvJd1ND.d.mts} +7 -1
  895. package/dist/{types-B_CXXnzh.d.mts.map → types-CzvJd1ND.d.mts.map} +1 -1
  896. package/dist/types-DFowNO60.d.mts +198 -0
  897. package/dist/types-DFowNO60.d.mts.map +1 -0
  898. package/dist/{types-56BKbld_.mjs → types-DSZl1Dsv.mjs} +1 -1
  899. package/dist/{types-56BKbld_.mjs.map → types-DSZl1Dsv.mjs.map} +1 -1
  900. package/dist/types-DW1l0gCv.d.mts +75 -0
  901. package/dist/types-DW1l0gCv.d.mts.map +1 -0
  902. package/dist/types-Db67HHlU.mjs +3 -0
  903. package/dist/{types-C-aFbqmA.d.mts → types-DmxPPXGf.d.mts} +1 -1
  904. package/dist/{types-C-aFbqmA.d.mts.map → types-DmxPPXGf.d.mts.map} +1 -1
  905. package/dist/{types-PafqtQuM.mjs → types-Dz9CGX_d.mjs} +1 -1
  906. package/dist/{types-PafqtQuM.mjs.map → types-Dz9CGX_d.mjs.map} +1 -1
  907. package/dist/user-Dr1bOCqS.mjs +155 -0
  908. package/dist/user-Dr1bOCqS.mjs.map +1 -0
  909. package/dist/utils-_F-rWBTN.mjs +286 -0
  910. package/dist/utils-_F-rWBTN.mjs.map +1 -0
  911. package/dist/{validate-BcC3m2O7.d.mts → validate-BpQGsmd7.d.mts} +5 -4
  912. package/dist/validate-BpQGsmd7.d.mts.map +1 -0
  913. package/dist/{validate-UK4Ja1uo.mjs → validate-DlFxcVVK.mjs} +3 -3
  914. package/dist/{validate-UK4Ja1uo.mjs.map → validate-DlFxcVVK.mjs.map} +1 -1
  915. package/dist/{validation-Vc5DQkJa.mjs → validation-BiFJqUp5.mjs} +6 -5
  916. package/dist/{validation-Vc5DQkJa.mjs.map → validation-BiFJqUp5.mjs.map} +1 -1
  917. package/dist/version-Dw7Z5PVU.mjs +7 -0
  918. package/dist/{version-BdP--J1g.mjs.map → version-Dw7Z5PVU.mjs.map} +1 -1
  919. package/dist/widgets-B9j_yzlk.mjs +106 -0
  920. package/dist/widgets-B9j_yzlk.mjs.map +1 -0
  921. package/dist/zod-generator-DSyz01KE.mjs +234 -0
  922. package/dist/zod-generator-DSyz01KE.mjs.map +1 -0
  923. package/locals.d.ts +1 -1
  924. package/package.json +37 -14
  925. package/src/api/handlers/content.ts +1 -0
  926. package/src/api/handlers/index.ts +7 -0
  927. package/src/api/handlers/marketplace.ts +27 -6
  928. package/src/api/handlers/menus.ts +157 -580
  929. package/src/api/handlers/plugins.ts +77 -31
  930. package/src/api/handlers/registry.ts +1086 -0
  931. package/src/api/openapi/document.ts +10 -4
  932. package/src/api/schemas/content.ts +1 -0
  933. package/src/api/schemas/menus.ts +27 -23
  934. package/src/api/types.ts +6 -0
  935. package/src/astro/integration/index.ts +1 -0
  936. package/src/astro/integration/route-naming.ts +19 -0
  937. package/src/astro/integration/routes.ts +25 -3
  938. package/src/astro/integration/runtime.ts +35 -8
  939. package/src/astro/middleware/auth.ts +8 -2
  940. package/src/astro/middleware/csp.ts +25 -3
  941. package/src/astro/middleware.ts +3 -0
  942. package/src/astro/routes/api/admin/plugins/[id]/enable.ts +10 -0
  943. package/src/astro/routes/api/admin/plugins/registry/install.ts +107 -0
  944. package/src/astro/routes/api/auth/invite/register-options.ts +8 -1
  945. package/src/astro/routes/api/import/wordpress/execute.ts +185 -6
  946. package/src/astro/routes/api/menus/[name]/items/[id].ts +69 -0
  947. package/src/astro/routes/api/menus/[name]/items.ts +4 -65
  948. package/src/astro/types.ts +38 -0
  949. package/src/cli/wxr/parser.ts +263 -0
  950. package/src/client/index.ts +2 -1
  951. package/src/database/migrations/036_i18n_menus_and_taxonomies.ts +166 -49
  952. package/src/database/migrations/038_registry_plugin_state.ts +130 -0
  953. package/src/database/migrations/039_fix_fts5_triggers.ts +264 -0
  954. package/src/database/migrations/runner.ts +4 -0
  955. package/src/database/repositories/content.ts +5 -1
  956. package/src/database/repositories/index.ts +14 -0
  957. package/src/database/repositories/menu.ts +644 -0
  958. package/src/database/repositories/types.ts +6 -0
  959. package/src/database/types.ts +5 -1
  960. package/src/emdash-runtime.ts +122 -34
  961. package/src/import/sources/wordpress-plugin.ts +9 -2
  962. package/src/import/sources/wxr.ts +16 -2
  963. package/src/import/ssrf.ts +20 -500
  964. package/src/import/wxr-taxonomies.ts +730 -0
  965. package/src/index.ts +3 -10
  966. package/src/media/normalize.ts +37 -4
  967. package/src/plugin-types.ts +240 -0
  968. package/src/plugins/adapt-sandbox-entry.ts +115 -39
  969. package/src/plugins/define-plugin.ts +34 -56
  970. package/src/plugins/index.ts +1 -9
  971. package/src/plugins/marketplace.ts +63 -4
  972. package/src/plugins/sandbox/index.ts +1 -1
  973. package/src/plugins/sandbox/noop.ts +2 -2
  974. package/src/plugins/sandbox/types.ts +7 -4
  975. package/src/plugins/state.ts +84 -38
  976. package/src/plugins/types.ts +2 -79
  977. package/src/registry/config.ts +311 -0
  978. package/src/registry/plugin-id.ts +116 -0
  979. package/src/registry/types.ts +206 -0
  980. package/src/search/fts-manager.ts +77 -15
  981. package/src/security/ssrf.ts +501 -0
  982. package/dist/apply-C1ZORgcy.mjs.map +0 -1
  983. package/dist/content-CERxPUN0.mjs.map +0 -1
  984. package/dist/error-D6LuHLw9.mjs +0 -27
  985. package/dist/error-D6LuHLw9.mjs.map +0 -1
  986. package/dist/index-Dlkzhb4C.d.mts.map +0 -1
  987. package/dist/placeholder-Ci0RLeCk.mjs +0 -268
  988. package/dist/placeholder-Ci0RLeCk.mjs.map +0 -1
  989. package/dist/registry-Do34mz_P.mjs.map +0 -1
  990. package/dist/runner-DIcU2UCC.mjs.map +0 -1
  991. package/dist/search-n-ZCMfr3.mjs +0 -9914
  992. package/dist/search-n-ZCMfr3.mjs.map +0 -1
  993. package/dist/settings-nTXPRi3D.mjs +0 -440
  994. package/dist/settings-nTXPRi3D.mjs.map +0 -1
  995. package/dist/types-B1gLSAH2.d.mts.map +0 -1
  996. package/dist/types-BIgulNsW.mjs.map +0 -1
  997. package/dist/types-Cug_RO3W.mjs +0 -16
  998. package/dist/types-Cug_RO3W.mjs.map +0 -1
  999. package/dist/types-DgSc9Rpc.d.mts.map +0 -1
  1000. package/dist/validate-BcC3m2O7.d.mts.map +0 -1
  1001. package/dist/version-BdP--J1g.mjs +0 -7
  1002. package/dist/zod-generator-CHnJUP2l.mjs +0 -137
  1003. package/dist/zod-generator-CHnJUP2l.mjs.map +0 -1
@@ -0,0 +1,1141 @@
1
+ import { z } from "zod";
2
+
3
+ //#region src/api/schemas/common.ts
4
+ /** Valid role level values */
5
+ const VALID_ROLE_LEVELS = new Set([
6
+ 10,
7
+ 20,
8
+ 30,
9
+ 40,
10
+ 50
11
+ ]);
12
+ /** Role level — coerces string/number to valid RoleLevel (10|20|30|40|50) */
13
+ const roleLevel = z.coerce.number().int().refine((n) => VALID_ROLE_LEVELS.has(n), { message: "Invalid role level. Must be 10, 20, 30, 40, or 50" });
14
+ /** Pagination query params — cursor-based */
15
+ const cursorPaginationQuery = z.object({
16
+ cursor: z.string().max(2048).optional().meta({ description: "Opaque cursor for pagination" }),
17
+ limit: z.coerce.number().int().min(1).max(100).optional().default(50).meta({ description: "Maximum number of items to return (1-100, default 50)" })
18
+ }).meta({ id: "CursorPaginationQuery" });
19
+ /** Pagination query params — offset-based */
20
+ const offsetPaginationQuery = z.object({
21
+ limit: z.coerce.number().int().min(1).max(100).optional().default(50),
22
+ offset: z.coerce.number().int().min(0).optional().default(0)
23
+ }).meta({ id: "OffsetPaginationQuery" });
24
+ /** Slug pattern: lowercase letters, digits, underscores; starts with letter */
25
+ const slugPattern = /^[a-z][a-z0-9_]*$/;
26
+ /** Matches http(s) scheme at start of URL */
27
+ const HTTP_SCHEME_RE = /^https?:\/\//i;
28
+ /** Validates that a URL string uses http or https scheme. Rejects javascript:/data: URI XSS vectors. */
29
+ const httpUrl = z.string().url().refine((url) => HTTP_SCHEME_RE.test(url), "URL must use http or https");
30
+ /** BCP 47 locale code — language with optional script/region subtags (e.g. en, en-US, pt-BR, es-419, zh-Hant) */
31
+ const localeCode = z.string().regex(/^[a-z]{2,3}(-[a-z0-9]{2,8})*$/i, "Invalid locale code").transform((v) => v.toLowerCase());
32
+ /** Shared `?locale=xx` query shape for endpoints that filter by locale. */
33
+ const localeFilterQuery = z.object({ locale: z.string().min(1).optional() }).meta({ id: "LocaleFilterQuery" });
34
+ /** Standard API error response */
35
+ const apiErrorSchema = z.object({ error: z.object({
36
+ code: z.string().meta({
37
+ description: "Machine-readable error code",
38
+ example: "NOT_FOUND"
39
+ }),
40
+ message: z.string().meta({ description: "Human-readable error message" })
41
+ }) }).meta({ id: "ApiError" });
42
+ /** Wrap a data schema in the standard success envelope: { data: T } */
43
+ function successEnvelope(dataSchema) {
44
+ return z.object({ data: dataSchema });
45
+ }
46
+ /** Standard delete response */
47
+ const deleteResponseSchema = z.object({ deleted: z.literal(true) }).meta({ id: "DeleteResponse" });
48
+ /** Standard count response */
49
+ const countResponseSchema = z.object({ count: z.number().int().min(0) }).meta({ id: "CountResponse" });
50
+
51
+ //#endregion
52
+ //#region src/api/schemas/bylines.ts
53
+ /** Slug pattern: lowercase letters, digits, and hyphens; must start with a letter */
54
+ const bylineSlugPattern = /^[a-z][a-z0-9-]*$/;
55
+ const bylineSummarySchema = z.object({
56
+ id: z.string(),
57
+ slug: z.string(),
58
+ displayName: z.string(),
59
+ bio: z.string().nullable(),
60
+ avatarMediaId: z.string().nullable(),
61
+ websiteUrl: z.string().nullable(),
62
+ userId: z.string().nullable(),
63
+ isGuest: z.boolean(),
64
+ createdAt: z.string(),
65
+ updatedAt: z.string()
66
+ }).meta({ id: "BylineSummary" });
67
+ const bylineCreditSchema = z.object({
68
+ byline: bylineSummarySchema,
69
+ sortOrder: z.number().int(),
70
+ roleLabel: z.string().nullable(),
71
+ source: z.enum(["explicit", "inferred"]).optional().meta({ description: "Whether this credit was explicitly assigned or inferred from authorId" })
72
+ }).meta({ id: "BylineCredit" });
73
+ const contentBylineInputSchema = z.object({
74
+ bylineId: z.string().min(1),
75
+ roleLabel: z.string().nullish()
76
+ }).meta({ id: "ContentBylineInput" });
77
+ const bylinesListQuery = cursorPaginationQuery.extend({
78
+ search: z.string().optional(),
79
+ isGuest: z.coerce.boolean().optional(),
80
+ userId: z.string().optional()
81
+ }).meta({ id: "BylinesListQuery" });
82
+ const bylineCreateBody = z.object({
83
+ slug: z.string().min(1).regex(bylineSlugPattern, "Slug must contain only lowercase letters, digits, and hyphens"),
84
+ displayName: z.string().min(1),
85
+ bio: z.string().nullish(),
86
+ avatarMediaId: z.string().nullish(),
87
+ websiteUrl: httpUrl.nullish(),
88
+ userId: z.string().nullish(),
89
+ isGuest: z.boolean().optional()
90
+ }).meta({ id: "BylineCreateBody" });
91
+ const bylineUpdateBody = z.object({
92
+ slug: z.string().min(1).regex(bylineSlugPattern, "Slug must contain only lowercase letters, digits, and hyphens").optional(),
93
+ displayName: z.string().min(1).optional(),
94
+ bio: z.string().nullish(),
95
+ avatarMediaId: z.string().nullish(),
96
+ websiteUrl: httpUrl.nullish(),
97
+ userId: z.string().nullish(),
98
+ isGuest: z.boolean().optional()
99
+ }).meta({ id: "BylineUpdateBody" });
100
+ const bylineListResponseSchema = z.object({
101
+ items: z.array(bylineSummarySchema),
102
+ nextCursor: z.string().optional()
103
+ }).meta({ id: "BylineListResponse" });
104
+
105
+ //#endregion
106
+ //#region src/api/schemas/content.ts
107
+ /** SEO input — per-content meta fields */
108
+ const contentSeoInput = z.object({
109
+ title: z.string().max(200).nullish(),
110
+ description: z.string().max(500).nullish(),
111
+ image: z.string().nullish(),
112
+ canonical: httpUrl.nullish(),
113
+ noIndex: z.boolean().optional()
114
+ }).meta({ id: "ContentSeoInput" });
115
+ const contentListQuery = cursorPaginationQuery.extend({
116
+ status: z.string().optional(),
117
+ orderBy: z.string().optional(),
118
+ order: z.enum(["asc", "desc"]).optional(),
119
+ locale: localeCode.optional()
120
+ }).meta({ id: "ContentListQuery" });
121
+ /** ISO 8601 datetime for `publishedAt` / `createdAt`. Routes gate writes behind `content:publish_any`. */
122
+ const contentDateOverride = z.iso.datetime({
123
+ offset: true,
124
+ message: "must be an ISO 8601 datetime"
125
+ }).nullish();
126
+ const contentCreateBody = z.object({
127
+ data: z.record(z.string(), z.unknown()),
128
+ slug: z.string().nullish(),
129
+ status: z.enum(["draft"]).optional(),
130
+ bylines: z.array(contentBylineInputSchema).optional(),
131
+ locale: localeCode.optional(),
132
+ translationOf: z.string().optional(),
133
+ seo: contentSeoInput.optional(),
134
+ publishedAt: contentDateOverride,
135
+ createdAt: contentDateOverride
136
+ }).meta({ id: "ContentCreateBody" });
137
+ const contentUpdateBody = z.object({
138
+ data: z.record(z.string(), z.unknown()).optional(),
139
+ slug: z.string().nullish(),
140
+ status: z.enum(["draft"]).optional(),
141
+ authorId: z.string().nullish(),
142
+ bylines: z.array(contentBylineInputSchema).optional(),
143
+ _rev: z.string().optional().meta({ description: "Opaque revision token for optimistic concurrency" }),
144
+ skipRevision: z.boolean().optional(),
145
+ seo: contentSeoInput.optional(),
146
+ publishedAt: contentDateOverride
147
+ }).meta({ id: "ContentUpdateBody" });
148
+ const contentScheduleBody = z.object({ scheduledAt: z.string().min(1, "scheduledAt is required").meta({
149
+ description: "ISO 8601 datetime for scheduled publishing",
150
+ example: "2025-06-15T09:00:00Z"
151
+ }) }).meta({ id: "ContentScheduleBody" });
152
+ const contentPublishBody = z.object({ publishedAt: z.iso.datetime({
153
+ offset: true,
154
+ message: "must be an ISO 8601 datetime"
155
+ }).optional().meta({ description: "Optional ISO 8601 datetime to backdate the publish (e.g. when migrating content). Requires content:publish_any permission. Without this, existing published_at is preserved on re-publish." }) }).meta({ id: "ContentPublishBody" });
156
+ const contentPreviewUrlBody = z.object({
157
+ expiresIn: z.union([z.string(), z.number()]).optional(),
158
+ pathPattern: z.string().optional()
159
+ }).meta({ id: "ContentPreviewUrlBody" });
160
+ const contentTermsBody = z.object({ termIds: z.array(z.string()) }).meta({ id: "ContentTermsBody" });
161
+ const contentTrashQuery = cursorPaginationQuery;
162
+ /** SEO metadata on a content item */
163
+ const contentSeoSchema = z.object({
164
+ title: z.string().nullable(),
165
+ description: z.string().nullable(),
166
+ image: z.string().nullable(),
167
+ canonical: z.string().nullable(),
168
+ noIndex: z.boolean()
169
+ }).meta({ id: "ContentSeo" });
170
+ /** A single content item as returned by the API */
171
+ const contentItemSchema = z.object({
172
+ id: z.string(),
173
+ type: z.string().meta({ description: "Collection slug this item belongs to" }),
174
+ slug: z.string().nullable(),
175
+ status: z.string().meta({ description: "draft, published, or scheduled" }),
176
+ data: z.record(z.string(), z.unknown()).meta({ description: "User-defined field values" }),
177
+ authorId: z.string().nullable(),
178
+ primaryBylineId: z.string().nullable(),
179
+ byline: bylineSummarySchema.nullable().optional(),
180
+ bylines: z.array(bylineCreditSchema).optional(),
181
+ createdAt: z.string(),
182
+ updatedAt: z.string(),
183
+ publishedAt: z.string().nullable(),
184
+ scheduledAt: z.string().nullable(),
185
+ liveRevisionId: z.string().nullable(),
186
+ draftRevisionId: z.string().nullable(),
187
+ version: z.number().int(),
188
+ locale: z.string().nullable(),
189
+ translationGroup: z.string().nullable(),
190
+ seo: contentSeoSchema.optional()
191
+ }).meta({ id: "ContentItem" });
192
+ /** Response for single content item endpoints (get, create, update) */
193
+ const contentResponseSchema = z.object({
194
+ item: contentItemSchema,
195
+ _rev: z.string().optional().meta({ description: "Opaque revision token for optimistic concurrency" })
196
+ }).meta({ id: "ContentResponse" });
197
+ /** Response for content list endpoints */
198
+ const contentListResponseSchema = z.object({
199
+ items: z.array(contentItemSchema),
200
+ nextCursor: z.string().optional(),
201
+ total: z.number().int().nonnegative().optional()
202
+ }).meta({ id: "ContentListResponse" });
203
+ /** Trashed content item */
204
+ const trashedContentItemSchema = z.object({
205
+ id: z.string(),
206
+ type: z.string(),
207
+ slug: z.string().nullable(),
208
+ status: z.string(),
209
+ data: z.record(z.string(), z.unknown()),
210
+ authorId: z.string().nullable(),
211
+ createdAt: z.string(),
212
+ updatedAt: z.string(),
213
+ publishedAt: z.string().nullable(),
214
+ deletedAt: z.string()
215
+ }).meta({ id: "TrashedContentItem" });
216
+ /** Response for trashed content list */
217
+ const trashedContentListResponseSchema = z.object({
218
+ items: z.array(trashedContentItemSchema),
219
+ nextCursor: z.string().optional()
220
+ }).meta({ id: "TrashedContentListResponse" });
221
+ /** Response for content compare (live vs draft) */
222
+ const contentCompareResponseSchema = z.object({
223
+ hasChanges: z.boolean(),
224
+ live: z.record(z.string(), z.unknown()).nullable(),
225
+ draft: z.record(z.string(), z.unknown()).nullable()
226
+ }).meta({ id: "ContentCompareResponse" });
227
+ /** Translation summary for a content item */
228
+ const contentTranslationSchema = z.object({
229
+ id: z.string(),
230
+ locale: z.string().nullable(),
231
+ slug: z.string().nullable(),
232
+ status: z.string(),
233
+ updatedAt: z.string()
234
+ });
235
+ /** Response for content translations endpoint */
236
+ const contentTranslationsResponseSchema = z.object({
237
+ translationGroup: z.string(),
238
+ translations: z.array(contentTranslationSchema)
239
+ }).meta({ id: "ContentTranslationsResponse" });
240
+
241
+ //#endregion
242
+ //#region src/api/schemas/media.ts
243
+ /**
244
+ * Accepts a comma-separated string (from URL query params) or an array of
245
+ * strings (from JSON body or programmatic use) and normalises to string[].
246
+ */
247
+ const mimeTypeFilter = z.union([z.string(), z.array(z.string())]).transform((v) => {
248
+ return (Array.isArray(v) ? v : v.split(",")).map((s) => s.trim()).filter((s) => s.length > 0);
249
+ }).optional();
250
+ const mediaListQuery = cursorPaginationQuery.extend({ mimeType: mimeTypeFilter }).meta({ id: "MediaListQuery" });
251
+ const mediaUpdateBody = z.object({
252
+ alt: z.string().optional(),
253
+ caption: z.string().optional(),
254
+ width: z.number().int().positive().optional(),
255
+ height: z.number().int().positive().optional()
256
+ }).meta({ id: "MediaUpdateBody" });
257
+ /** Default maximum allowed file upload size (50 MB). */
258
+ const DEFAULT_MAX_UPLOAD_SIZE = 50 * 1024 * 1024;
259
+ function formatFileSize(bytes) {
260
+ if (bytes < 1024) return `${bytes}B`;
261
+ if (bytes < 1024 * 1024) return `${Math.floor(bytes / 1024)}KB`;
262
+ return `${Math.floor(bytes / 1024 / 1024)}MB`;
263
+ }
264
+ const CONTENT_TYPE_RE = /^[a-z0-9][a-z0-9!#$&^_+\-.]*\/[a-z0-9!#$&^_+\-.]+(\s*;[^\r\n]*)?$/i;
265
+ function mediaUploadUrlBody(maxSize) {
266
+ if (!Number.isFinite(maxSize) || maxSize <= 0) throw new Error(`EmDash: maxUploadSize must be a positive finite number, got ${maxSize}`);
267
+ return z.object({
268
+ filename: z.string().min(1, "filename is required"),
269
+ contentType: z.string().min(1, "contentType is required").regex(CONTENT_TYPE_RE, "Invalid content type"),
270
+ size: z.number().int().positive().max(maxSize, `File size must not exceed ${formatFileSize(maxSize)}`),
271
+ contentHash: z.string().optional(),
272
+ fieldId: z.string().optional()
273
+ }).meta({ id: "MediaUploadUrlBody" });
274
+ }
275
+ const mediaConfirmBody = z.object({
276
+ size: z.number().int().positive().optional(),
277
+ width: z.number().int().positive().optional(),
278
+ height: z.number().int().positive().optional()
279
+ }).meta({ id: "MediaConfirmBody" });
280
+ const mediaProviderListQuery = cursorPaginationQuery.extend({
281
+ query: z.string().optional(),
282
+ mimeType: mimeTypeFilter
283
+ }).meta({ id: "MediaProviderListQuery" });
284
+ const mediaStatusSchema = z.enum([
285
+ "pending",
286
+ "ready",
287
+ "failed"
288
+ ]);
289
+ const mediaItemSchema = z.object({
290
+ id: z.string(),
291
+ filename: z.string(),
292
+ mimeType: z.string(),
293
+ size: z.number().nullable(),
294
+ width: z.number().nullable(),
295
+ height: z.number().nullable(),
296
+ alt: z.string().nullable(),
297
+ caption: z.string().nullable(),
298
+ storageKey: z.string(),
299
+ status: mediaStatusSchema,
300
+ contentHash: z.string().nullable(),
301
+ blurhash: z.string().nullable(),
302
+ dominantColor: z.string().nullable(),
303
+ createdAt: z.string(),
304
+ authorId: z.string().nullable()
305
+ }).meta({ id: "MediaItem" });
306
+ const mediaResponseSchema = z.object({ item: mediaItemSchema }).meta({ id: "MediaResponse" });
307
+ const mediaListResponseSchema = z.object({
308
+ items: z.array(mediaItemSchema),
309
+ nextCursor: z.string().optional()
310
+ }).meta({ id: "MediaListResponse" });
311
+ const mediaUploadUrlResponseSchema = z.object({
312
+ uploadUrl: z.string(),
313
+ method: z.literal("PUT"),
314
+ headers: z.record(z.string(), z.string()),
315
+ mediaId: z.string(),
316
+ storageKey: z.string(),
317
+ expiresAt: z.string()
318
+ }).meta({ id: "MediaUploadUrlResponse" });
319
+ const mediaExistingResponseSchema = z.object({
320
+ existing: z.literal(true),
321
+ mediaId: z.string(),
322
+ storageKey: z.string(),
323
+ url: z.string()
324
+ }).meta({ id: "MediaExistingResponse" });
325
+ const mediaConfirmResponseSchema = z.object({ item: mediaItemSchema.extend({ url: z.string() }) }).meta({ id: "MediaConfirmResponse" });
326
+
327
+ //#endregion
328
+ //#region src/api/schemas/schema.ts
329
+ const collectionSupportValues = z.enum([
330
+ "drafts",
331
+ "revisions",
332
+ "preview",
333
+ "scheduling",
334
+ "search"
335
+ ]);
336
+ const collectionSourcePattern = /^(template:.+|import:.+|manual|discovered|seed)$/;
337
+ const fieldTypeValues = z.enum([
338
+ "string",
339
+ "text",
340
+ "url",
341
+ "number",
342
+ "integer",
343
+ "boolean",
344
+ "datetime",
345
+ "select",
346
+ "multiSelect",
347
+ "portableText",
348
+ "image",
349
+ "file",
350
+ "reference",
351
+ "json",
352
+ "slug",
353
+ "repeater"
354
+ ]);
355
+ const repeaterSubFieldSchema = z.object({
356
+ slug: z.string().min(1).max(63).regex(slugPattern, "Invalid slug format"),
357
+ type: z.enum([
358
+ "string",
359
+ "text",
360
+ "number",
361
+ "integer",
362
+ "boolean",
363
+ "datetime",
364
+ "select"
365
+ ]),
366
+ label: z.string().min(1),
367
+ required: z.boolean().optional(),
368
+ options: z.array(z.string()).optional()
369
+ });
370
+ const fieldValidation = z.object({
371
+ required: z.boolean().optional(),
372
+ min: z.number().optional(),
373
+ max: z.number().optional(),
374
+ minLength: z.number().int().min(0).optional(),
375
+ maxLength: z.number().int().min(0).optional(),
376
+ pattern: z.string().optional(),
377
+ options: z.array(z.string()).optional(),
378
+ subFields: z.array(repeaterSubFieldSchema).min(1).optional(),
379
+ minItems: z.number().int().min(0).optional(),
380
+ maxItems: z.number().int().min(1).optional(),
381
+ allowedMimeTypes: z.array(z.string().regex(/^[a-z0-9][a-z0-9!#$&^_+\-.]*\/[a-z0-9!#$&^_+\-.]*$/i, "Invalid MIME type")).min(1, "allowedMimeTypes must not be empty — omit the field to allow all types").max(64, "allowedMimeTypes may contain at most 64 entries").optional()
382
+ }).optional();
383
+ const fieldWidgetOptions = z.record(z.string(), z.unknown()).optional();
384
+ const createCollectionBody = z.object({
385
+ slug: z.string().min(1).max(63).regex(slugPattern, "Invalid slug format"),
386
+ label: z.string().min(1),
387
+ labelSingular: z.string().optional(),
388
+ description: z.string().optional(),
389
+ icon: z.string().optional(),
390
+ supports: z.array(collectionSupportValues).optional(),
391
+ source: z.string().regex(collectionSourcePattern).optional(),
392
+ urlPattern: z.string().optional(),
393
+ hasSeo: z.boolean().optional()
394
+ }).meta({ id: "CreateCollectionBody" });
395
+ const updateCollectionBody = z.object({
396
+ label: z.string().min(1).optional(),
397
+ labelSingular: z.string().optional(),
398
+ description: z.string().optional(),
399
+ icon: z.string().optional(),
400
+ supports: z.array(collectionSupportValues).optional(),
401
+ urlPattern: z.string().nullish(),
402
+ hasSeo: z.boolean().optional(),
403
+ commentsEnabled: z.boolean().optional(),
404
+ commentsModeration: z.enum([
405
+ "all",
406
+ "first_time",
407
+ "none"
408
+ ]).optional(),
409
+ commentsClosedAfterDays: z.number().int().min(0).optional(),
410
+ commentsAutoApproveUsers: z.boolean().optional()
411
+ }).meta({ id: "UpdateCollectionBody" });
412
+ const createFieldBody = z.object({
413
+ slug: z.string().min(1).max(63).regex(slugPattern, "Invalid slug format"),
414
+ label: z.string().min(1),
415
+ type: fieldTypeValues,
416
+ required: z.boolean().optional(),
417
+ unique: z.boolean().optional(),
418
+ defaultValue: z.unknown().optional(),
419
+ validation: fieldValidation.nullable(),
420
+ widget: z.string().optional(),
421
+ options: fieldWidgetOptions,
422
+ sortOrder: z.number().int().min(0).optional(),
423
+ searchable: z.boolean().optional(),
424
+ translatable: z.boolean().optional()
425
+ }).meta({ id: "CreateFieldBody" });
426
+ const updateFieldBody = z.object({
427
+ label: z.string().min(1).optional(),
428
+ required: z.boolean().optional(),
429
+ unique: z.boolean().optional(),
430
+ defaultValue: z.unknown().optional(),
431
+ validation: fieldValidation.nullable(),
432
+ widget: z.string().optional(),
433
+ options: fieldWidgetOptions,
434
+ sortOrder: z.number().int().min(0).optional(),
435
+ searchable: z.boolean().optional(),
436
+ translatable: z.boolean().optional()
437
+ }).meta({ id: "UpdateFieldBody" });
438
+ const fieldReorderBody = z.object({ fieldSlugs: z.array(z.string().min(1)) }).meta({ id: "FieldReorderBody" });
439
+ const orphanRegisterBody = z.object({
440
+ label: z.string().optional(),
441
+ labelSingular: z.string().optional(),
442
+ description: z.string().optional()
443
+ }).meta({ id: "OrphanRegisterBody" });
444
+ const schemaExportQuery = z.object({ format: z.string().optional() });
445
+ const collectionGetQuery = z.object({ includeFields: z.string().transform((v) => v === "true").optional() });
446
+ const collectionSchema = z.object({
447
+ id: z.string(),
448
+ slug: z.string(),
449
+ label: z.string(),
450
+ labelSingular: z.string().nullable(),
451
+ description: z.string().nullable(),
452
+ icon: z.string().nullable(),
453
+ supports: z.array(z.string()),
454
+ source: z.string().nullable(),
455
+ urlPattern: z.string().nullable(),
456
+ hasSeo: z.boolean(),
457
+ createdAt: z.string(),
458
+ updatedAt: z.string()
459
+ }).meta({ id: "Collection" });
460
+ const fieldSchema = z.object({
461
+ id: z.string(),
462
+ collectionId: z.string(),
463
+ slug: z.string(),
464
+ label: z.string(),
465
+ type: fieldTypeValues,
466
+ required: z.boolean(),
467
+ unique: z.boolean(),
468
+ defaultValue: z.unknown().nullable(),
469
+ validation: z.record(z.string(), z.unknown()).nullable(),
470
+ widget: z.string().nullable(),
471
+ options: z.record(z.string(), z.unknown()).nullable(),
472
+ sortOrder: z.number().int(),
473
+ searchable: z.boolean(),
474
+ translatable: z.boolean(),
475
+ createdAt: z.string(),
476
+ updatedAt: z.string()
477
+ }).meta({ id: "Field" });
478
+ const collectionResponseSchema = z.object({ item: collectionSchema }).meta({ id: "CollectionResponse" });
479
+ const collectionWithFieldsResponseSchema = z.object({ item: collectionSchema.extend({ fields: z.array(fieldSchema) }) }).meta({ id: "CollectionWithFieldsResponse" });
480
+ const collectionListResponseSchema = z.object({ items: z.array(collectionSchema) }).meta({ id: "CollectionListResponse" });
481
+ const fieldResponseSchema = z.object({ item: fieldSchema }).meta({ id: "FieldResponse" });
482
+ const fieldListResponseSchema = z.object({ items: z.array(fieldSchema) }).meta({ id: "FieldListResponse" });
483
+ const orphanedTableSchema = z.object({
484
+ slug: z.string(),
485
+ tableName: z.string(),
486
+ rowCount: z.number().int()
487
+ }).meta({ id: "OrphanedTable" });
488
+ const orphanedTableListResponseSchema = z.object({ items: z.array(orphanedTableSchema) }).meta({ id: "OrphanedTableListResponse" });
489
+
490
+ //#endregion
491
+ //#region src/api/schemas/comments.ts
492
+ const createCommentBody = z.object({
493
+ authorName: z.string().min(1).max(100),
494
+ authorEmail: z.string().email(),
495
+ body: z.string().min(1).max(5e3),
496
+ parentId: z.string().optional(),
497
+ website_url: z.string().optional()
498
+ }).meta({ id: "CreateCommentBody" });
499
+ const commentStatusBody = z.object({ status: z.enum([
500
+ "approved",
501
+ "pending",
502
+ "spam",
503
+ "trash"
504
+ ]) }).meta({ id: "CommentStatusBody" });
505
+ const commentBulkBody = z.object({
506
+ ids: z.array(z.string().min(1)).min(1).max(100),
507
+ action: z.enum([
508
+ "approve",
509
+ "spam",
510
+ "trash",
511
+ "delete"
512
+ ])
513
+ }).meta({ id: "CommentBulkBody" });
514
+ const commentListQuery = z.object({
515
+ status: z.enum([
516
+ "pending",
517
+ "approved",
518
+ "spam",
519
+ "trash"
520
+ ]).optional(),
521
+ collection: z.string().optional(),
522
+ search: z.string().optional(),
523
+ limit: z.coerce.number().int().min(1).max(100).optional().default(50),
524
+ cursor: z.string().max(2048).optional()
525
+ }).meta({ id: "CommentListQuery" });
526
+ const commentStatusValues = z.enum([
527
+ "pending",
528
+ "approved",
529
+ "spam",
530
+ "trash"
531
+ ]);
532
+ /**
533
+ * Public-facing comment (no email/IP).
534
+ *
535
+ * `replies` is recursive in practice (each reply can have replies), but we
536
+ * model it as a single level here to avoid circular type inference issues
537
+ * with tsgo. OpenAPI consumers should treat replies as the same shape.
538
+ */
539
+ const publicCommentSchema = z.object({
540
+ id: z.string(),
541
+ authorName: z.string(),
542
+ isRegisteredUser: z.boolean(),
543
+ body: z.string(),
544
+ parentId: z.string().nullable(),
545
+ createdAt: z.string(),
546
+ replies: z.array(z.any()).optional()
547
+ }).meta({ id: "PublicComment" });
548
+ /** Admin comment with full details */
549
+ const commentSchema = z.object({
550
+ id: z.string(),
551
+ collection: z.string(),
552
+ contentId: z.string(),
553
+ authorName: z.string(),
554
+ authorEmail: z.string(),
555
+ body: z.string(),
556
+ status: commentStatusValues,
557
+ parentId: z.string().nullable(),
558
+ ipHash: z.string().nullable(),
559
+ createdAt: z.string(),
560
+ updatedAt: z.string()
561
+ }).meta({ id: "Comment" });
562
+ const publicCommentListResponseSchema = z.object({
563
+ items: z.array(publicCommentSchema),
564
+ nextCursor: z.string().optional(),
565
+ total: z.number().int()
566
+ }).meta({ id: "PublicCommentListResponse" });
567
+ const adminCommentListResponseSchema = z.object({
568
+ items: z.array(commentSchema),
569
+ nextCursor: z.string().optional()
570
+ }).meta({ id: "AdminCommentListResponse" });
571
+ const commentCountsResponseSchema = z.object({
572
+ pending: z.number().int(),
573
+ approved: z.number().int(),
574
+ spam: z.number().int(),
575
+ trash: z.number().int()
576
+ }).meta({ id: "CommentCountsResponse" });
577
+ const commentBulkResponseSchema = z.object({ affected: z.number().int() }).meta({ id: "CommentBulkResponse" });
578
+
579
+ //#endregion
580
+ //#region src/utils/url.ts
581
+ /**
582
+ * URL scheme validation utilities
583
+ *
584
+ * Prevents XSS via dangerous URL schemes (javascript:, data:, vbscript:, etc.)
585
+ * by allowlisting known-safe schemes before rendering into href attributes.
586
+ */
587
+ /**
588
+ * Matches URLs that are safe to render in href attributes.
589
+ *
590
+ * Allowed:
591
+ * - http:// and https://
592
+ * - mailto: and tel:
593
+ * - Relative paths (starting with /)
594
+ * - Fragment links (starting with #)
595
+ * - Protocol-relative URLs are NOT allowed (starting with //) as they can
596
+ * redirect to attacker-controlled hosts.
597
+ */
598
+ const SAFE_URL_SCHEME_RE = /^(https?:|mailto:|tel:|\/(?!\/)|#)/i;
599
+ /**
600
+ * Returns the URL unchanged if it uses a safe scheme, otherwise returns "#".
601
+ *
602
+ * Use this at the render layer as the primary defense against XSS via
603
+ * dangerous URL schemes like `javascript:`, `data:`, or `vbscript:`.
604
+ *
605
+ * @example
606
+ * ```ts
607
+ * sanitizeHref("https://example.com") // "https://example.com"
608
+ * sanitizeHref("/about") // "/about"
609
+ * sanitizeHref("#section") // "#section"
610
+ * sanitizeHref("mailto:a@b.com") // "mailto:a@b.com"
611
+ * sanitizeHref("javascript:alert(1)") // "#"
612
+ * sanitizeHref("data:text/html,<script>") // "#"
613
+ * sanitizeHref("") // "#"
614
+ * ```
615
+ */
616
+ function sanitizeHref(url) {
617
+ if (!url) return "#";
618
+ return SAFE_URL_SCHEME_RE.test(url) ? url : "#";
619
+ }
620
+ /**
621
+ * Returns true if the URL uses a safe scheme for rendering in href attributes.
622
+ */
623
+ function isSafeHref(url) {
624
+ return SAFE_URL_SCHEME_RE.test(url);
625
+ }
626
+
627
+ //#endregion
628
+ //#region src/api/schemas/menus.ts
629
+ /**
630
+ * Allowed menu item types. `custom` uses `customUrl`; the others resolve a URL
631
+ * from `referenceCollection` + `referenceId` (a translation_group id).
632
+ */
633
+ const menuItemTypeEnum = z.enum([
634
+ "custom",
635
+ "page",
636
+ "post",
637
+ "taxonomy",
638
+ "collection"
639
+ ]);
640
+ const safeHref = z.string().trim().refine(isSafeHref, "URL must use http, https, mailto, tel, a relative path, or a fragment identifier");
641
+ const createMenuBody = z.object({
642
+ name: z.string().min(1),
643
+ label: z.string().min(1),
644
+ locale: z.string().min(1).optional(),
645
+ translationOf: z.string().min(1).optional()
646
+ }).strict().meta({ id: "CreateMenuBody" });
647
+ const updateMenuBody = z.object({ label: z.string().min(1).optional() }).strict().meta({ id: "UpdateMenuBody" });
648
+ const createMenuItemBody = z.object({
649
+ type: menuItemTypeEnum,
650
+ label: z.string().min(1),
651
+ referenceCollection: z.string().optional(),
652
+ referenceId: z.string().optional(),
653
+ customUrl: safeHref.optional(),
654
+ target: z.string().optional(),
655
+ titleAttr: z.string().optional(),
656
+ cssClasses: z.string().optional(),
657
+ parentId: z.string().optional(),
658
+ sortOrder: z.number().int().min(0).optional()
659
+ }).strict().meta({ id: "CreateMenuItemBody" });
660
+ const updateMenuItemBody = z.object({
661
+ label: z.string().min(1).optional(),
662
+ customUrl: safeHref.optional(),
663
+ target: z.string().optional(),
664
+ titleAttr: z.string().optional(),
665
+ cssClasses: z.string().optional(),
666
+ parentId: z.string().nullish(),
667
+ sortOrder: z.number().int().min(0).optional()
668
+ }).strict().meta({ id: "UpdateMenuItemBody" });
669
+ const reorderMenuItemsBody = z.object({ items: z.array(z.object({
670
+ id: z.string().min(1),
671
+ parentId: z.string().nullable(),
672
+ sortOrder: z.number().int().min(0)
673
+ })) }).meta({ id: "ReorderMenuItemsBody" });
674
+ const menuSchema = z.object({
675
+ id: z.string(),
676
+ name: z.string(),
677
+ label: z.string(),
678
+ createdAt: z.string(),
679
+ updatedAt: z.string(),
680
+ locale: z.string(),
681
+ translationGroup: z.string().nullable()
682
+ }).meta({ id: "Menu" });
683
+ const menuItemSchema = z.object({
684
+ id: z.string(),
685
+ menuId: z.string(),
686
+ parentId: z.string().nullable(),
687
+ sortOrder: z.number().int(),
688
+ type: z.string(),
689
+ referenceCollection: z.string().nullable(),
690
+ referenceId: z.string().nullable(),
691
+ customUrl: z.string().nullable(),
692
+ label: z.string(),
693
+ titleAttr: z.string().nullable(),
694
+ target: z.string().nullable(),
695
+ cssClasses: z.string().nullable(),
696
+ createdAt: z.string(),
697
+ locale: z.string(),
698
+ translationGroup: z.string().nullable()
699
+ }).meta({ id: "MenuItem" });
700
+ const menuTranslationsSchema = z.object({
701
+ translationGroup: z.string().nullable(),
702
+ translations: z.array(z.object({
703
+ id: z.string(),
704
+ name: z.string(),
705
+ label: z.string(),
706
+ locale: z.string(),
707
+ updatedAt: z.string()
708
+ }))
709
+ }).meta({ id: "MenuTranslations" });
710
+ const menuListItemSchema = menuSchema.extend({ itemCount: z.number().int() }).meta({ id: "MenuListItem" });
711
+ const menuWithItemsSchema = menuSchema.extend({ items: z.array(menuItemSchema) }).meta({ id: "MenuWithItems" });
712
+
713
+ //#endregion
714
+ //#region src/api/schemas/taxonomies.ts
715
+ /** Collection slug format: lowercase alphanumeric + underscores, starts with letter */
716
+ const collectionSlugPattern = /^[a-z][a-z0-9_]*$/;
717
+ const createTaxonomyDefBody = z.object({
718
+ name: z.string().min(1).max(63).regex(/^[a-z][a-z0-9_]*$/, "Name must be lowercase alphanumeric with underscores"),
719
+ label: z.string().min(1).max(200),
720
+ labelSingular: z.string().min(1).max(200).optional(),
721
+ hierarchical: z.boolean().optional().default(false),
722
+ collections: z.array(z.string().min(1).max(63).regex(collectionSlugPattern, "Invalid collection slug format")).max(100).optional().default([]),
723
+ locale: z.string().min(1).optional(),
724
+ translationOf: z.string().min(1).optional()
725
+ }).meta({ id: "CreateTaxonomyDefBody" });
726
+ const createTermBody = z.object({
727
+ slug: z.string().min(1),
728
+ label: z.string().min(1),
729
+ parentId: z.string().nullish(),
730
+ description: z.string().optional(),
731
+ locale: z.string().min(1).optional(),
732
+ translationOf: z.string().min(1).optional()
733
+ }).meta({ id: "CreateTermBody" });
734
+ const updateTermBody = z.object({
735
+ slug: z.string().min(1).optional(),
736
+ label: z.string().min(1).optional(),
737
+ parentId: z.string().nullish(),
738
+ description: z.string().optional()
739
+ }).meta({ id: "UpdateTermBody" });
740
+ const taxonomyDefSchema = z.object({
741
+ id: z.string(),
742
+ name: z.string(),
743
+ label: z.string(),
744
+ labelSingular: z.string().optional(),
745
+ hierarchical: z.boolean(),
746
+ collections: z.array(z.string()),
747
+ locale: z.string(),
748
+ translationGroup: z.string().nullable()
749
+ }).meta({ id: "TaxonomyDef" });
750
+ const taxonomyDefTranslationsSchema = z.object({
751
+ translationGroup: z.string().nullable(),
752
+ translations: z.array(z.object({
753
+ id: z.string(),
754
+ name: z.string(),
755
+ label: z.string(),
756
+ locale: z.string()
757
+ }))
758
+ }).meta({ id: "TaxonomyDefTranslations" });
759
+ const taxonomyListResponseSchema = z.object({ taxonomies: z.array(taxonomyDefSchema) }).meta({ id: "TaxonomyListResponse" });
760
+ const termSchema = z.object({
761
+ id: z.string(),
762
+ name: z.string(),
763
+ slug: z.string(),
764
+ label: z.string(),
765
+ parentId: z.string().nullable(),
766
+ description: z.string().optional(),
767
+ locale: z.string(),
768
+ translationGroup: z.string().nullable()
769
+ }).meta({ id: "Term" });
770
+ const termTranslationsSchema = z.object({
771
+ translationGroup: z.string().nullable(),
772
+ translations: z.array(z.object({
773
+ id: z.string(),
774
+ slug: z.string(),
775
+ label: z.string(),
776
+ locale: z.string()
777
+ }))
778
+ }).meta({ id: "TermTranslations" });
779
+ const termWithCountSchema = z.object({
780
+ id: z.string(),
781
+ name: z.string(),
782
+ slug: z.string(),
783
+ label: z.string(),
784
+ parentId: z.string().nullable(),
785
+ description: z.string().optional(),
786
+ count: z.number().int(),
787
+ children: z.array(z.lazy(() => termWithCountSchema)),
788
+ locale: z.string(),
789
+ translationGroup: z.string().nullable()
790
+ }).meta({ id: "TermWithCount" });
791
+ const termListResponseSchema = z.object({ terms: z.array(termWithCountSchema) }).meta({ id: "TermListResponse" });
792
+ const termResponseSchema = z.object({ term: termSchema }).meta({ id: "TermResponse" });
793
+ const termGetResponseSchema = z.object({ term: termSchema.extend({
794
+ count: z.number().int(),
795
+ children: z.array(z.object({
796
+ id: z.string(),
797
+ slug: z.string(),
798
+ label: z.string()
799
+ }))
800
+ }) }).meta({ id: "TermGetResponse" });
801
+
802
+ //#endregion
803
+ //#region src/api/schemas/sections.ts
804
+ const sectionSource = z.enum([
805
+ "theme",
806
+ "user",
807
+ "import"
808
+ ]);
809
+ const sectionsListQuery = z.object({
810
+ source: sectionSource.optional(),
811
+ search: z.string().optional(),
812
+ limit: z.coerce.number().int().min(1).max(100).optional().default(50),
813
+ cursor: z.string().max(2048).optional()
814
+ }).meta({ id: "SectionsListQuery" });
815
+ const createSectionBody = z.object({
816
+ slug: z.string().min(1),
817
+ title: z.string().min(1),
818
+ description: z.string().optional(),
819
+ keywords: z.array(z.string()).optional(),
820
+ content: z.array(z.record(z.string(), z.unknown())),
821
+ previewMediaId: z.string().optional(),
822
+ source: z.enum(["user", "import"]).optional(),
823
+ themeId: z.string().optional()
824
+ }).meta({ id: "CreateSectionBody" });
825
+ const updateSectionBody = z.object({
826
+ slug: z.string().min(1).optional(),
827
+ title: z.string().min(1).optional(),
828
+ description: z.string().optional(),
829
+ keywords: z.array(z.string()).optional(),
830
+ content: z.array(z.record(z.string(), z.unknown())).optional(),
831
+ previewMediaId: z.string().nullish()
832
+ }).meta({ id: "UpdateSectionBody" });
833
+ const sectionSchema = z.object({
834
+ id: z.string(),
835
+ slug: z.string(),
836
+ title: z.string(),
837
+ description: z.string().nullable(),
838
+ keywords: z.array(z.string()).nullable(),
839
+ content: z.array(z.record(z.string(), z.unknown())),
840
+ previewMediaId: z.string().nullable(),
841
+ source: z.string(),
842
+ themeId: z.string().nullable(),
843
+ createdAt: z.string(),
844
+ updatedAt: z.string()
845
+ }).meta({ id: "Section" });
846
+ const sectionListResponseSchema = z.object({
847
+ items: z.array(sectionSchema),
848
+ nextCursor: z.string().optional()
849
+ }).meta({ id: "SectionListResponse" });
850
+
851
+ //#endregion
852
+ //#region src/api/schemas/settings.ts
853
+ const mediaReferenceInput = z.object({
854
+ mediaId: z.string(),
855
+ alt: z.string().optional()
856
+ });
857
+ const socialSettings = z.object({
858
+ twitter: z.string().optional(),
859
+ github: z.string().optional(),
860
+ facebook: z.string().optional(),
861
+ instagram: z.string().optional(),
862
+ linkedin: z.string().optional(),
863
+ youtube: z.string().optional()
864
+ });
865
+ const seoSettingsInput = z.object({
866
+ titleSeparator: z.string().max(10).optional(),
867
+ defaultOgImage: mediaReferenceInput.optional(),
868
+ robotsTxt: z.string().max(5e3).optional(),
869
+ googleVerification: z.string().max(100).optional(),
870
+ bingVerification: z.string().max(100).optional()
871
+ });
872
+ const settingsUpdateBody = z.object({
873
+ title: z.string().optional(),
874
+ tagline: z.string().optional(),
875
+ logo: mediaReferenceInput.optional(),
876
+ favicon: mediaReferenceInput.optional(),
877
+ url: z.union([httpUrl, z.literal("")]).optional(),
878
+ postsPerPage: z.number().int().min(1).max(100).optional(),
879
+ dateFormat: z.string().optional(),
880
+ timezone: z.string().optional(),
881
+ social: socialSettings.optional(),
882
+ seo: seoSettingsInput.optional()
883
+ }).meta({ id: "SettingsUpdateBody" });
884
+ const mediaReferenceResponse = z.object({
885
+ mediaId: z.string(),
886
+ alt: z.string().optional(),
887
+ url: z.string().optional(),
888
+ contentType: z.string().optional(),
889
+ width: z.number().int().optional(),
890
+ height: z.number().int().optional()
891
+ });
892
+ const seoSettingsResponse = z.object({
893
+ titleSeparator: z.string().max(10).optional(),
894
+ defaultOgImage: mediaReferenceResponse.optional(),
895
+ robotsTxt: z.string().max(5e3).optional(),
896
+ googleVerification: z.string().max(100).optional(),
897
+ bingVerification: z.string().max(100).optional()
898
+ });
899
+ const siteSettingsSchema = z.object({
900
+ title: z.string().optional(),
901
+ tagline: z.string().optional(),
902
+ logo: mediaReferenceResponse.optional(),
903
+ favicon: mediaReferenceResponse.optional(),
904
+ url: z.string().optional(),
905
+ postsPerPage: z.number().int().optional(),
906
+ dateFormat: z.string().optional(),
907
+ timezone: z.string().optional(),
908
+ social: socialSettings.optional(),
909
+ seo: seoSettingsResponse.optional()
910
+ }).meta({ id: "SiteSettings" });
911
+
912
+ //#endregion
913
+ //#region src/api/schemas/search.ts
914
+ const searchQuery = z.object({
915
+ q: z.string().min(1),
916
+ collections: z.string().optional(),
917
+ status: z.string().optional(),
918
+ locale: localeCode.optional(),
919
+ limit: z.coerce.number().int().min(1).max(100).optional()
920
+ }).meta({ id: "SearchQuery" });
921
+ const searchSuggestQuery = z.object({
922
+ q: z.string().min(1),
923
+ collections: z.string().optional(),
924
+ locale: localeCode.optional(),
925
+ limit: z.coerce.number().int().min(1).max(20).optional()
926
+ }).meta({ id: "SearchSuggestQuery" });
927
+ const searchRebuildBody = z.object({ collection: z.string().min(1) }).meta({ id: "SearchRebuildBody" });
928
+ const searchEnableBody = z.object({
929
+ collection: z.string().min(1),
930
+ enabled: z.boolean(),
931
+ weights: z.record(z.string(), z.number()).optional()
932
+ }).meta({ id: "SearchEnableBody" });
933
+ const searchResultSchema = z.object({
934
+ collection: z.string(),
935
+ id: z.string(),
936
+ slug: z.string().nullable(),
937
+ locale: z.string(),
938
+ title: z.string().optional(),
939
+ snippet: z.string().optional(),
940
+ score: z.number()
941
+ }).meta({ id: "SearchResult" });
942
+ const searchResponseSchema = z.object({
943
+ items: z.array(searchResultSchema),
944
+ nextCursor: z.string().optional()
945
+ }).meta({ id: "SearchResponse" });
946
+
947
+ //#endregion
948
+ //#region src/api/schemas/users.ts
949
+ const usersListQuery = z.object({
950
+ search: z.string().optional(),
951
+ role: z.string().optional(),
952
+ cursor: z.string().max(2048).optional(),
953
+ limit: z.coerce.number().int().min(1).max(100).optional().default(50)
954
+ }).meta({ id: "UsersListQuery" });
955
+ const userUpdateBody = z.object({
956
+ name: z.string().optional(),
957
+ email: z.string().email().optional(),
958
+ role: roleLevel.optional()
959
+ }).meta({ id: "UserUpdateBody" });
960
+ const allowedDomainCreateBody = z.object({
961
+ domain: z.string().min(1),
962
+ defaultRole: roleLevel
963
+ }).meta({ id: "AllowedDomainCreateBody" });
964
+ const allowedDomainUpdateBody = z.object({
965
+ enabled: z.boolean().optional(),
966
+ defaultRole: roleLevel.optional()
967
+ }).meta({ id: "AllowedDomainUpdateBody" });
968
+ const userSchema = z.object({
969
+ id: z.string(),
970
+ email: z.string(),
971
+ name: z.string().nullable(),
972
+ avatarUrl: z.string().nullable(),
973
+ role: z.number().int(),
974
+ emailVerified: z.boolean(),
975
+ disabled: z.boolean(),
976
+ createdAt: z.string(),
977
+ updatedAt: z.string(),
978
+ lastLogin: z.string().nullable(),
979
+ credentialCount: z.number().int().optional(),
980
+ oauthProviders: z.array(z.string()).optional()
981
+ }).meta({ id: "User" });
982
+ const userListResponseSchema = z.object({
983
+ items: z.array(userSchema),
984
+ nextCursor: z.string().optional()
985
+ }).meta({ id: "UserListResponse" });
986
+ const userDetailSchema = z.object({
987
+ id: z.string(),
988
+ email: z.string(),
989
+ name: z.string().nullable(),
990
+ avatarUrl: z.string().nullable(),
991
+ role: z.number().int(),
992
+ emailVerified: z.boolean(),
993
+ disabled: z.boolean(),
994
+ createdAt: z.string(),
995
+ updatedAt: z.string(),
996
+ lastLogin: z.string().nullable(),
997
+ credentials: z.array(z.object({
998
+ id: z.string(),
999
+ name: z.string().nullable(),
1000
+ deviceType: z.string().nullable(),
1001
+ createdAt: z.string(),
1002
+ lastUsedAt: z.string()
1003
+ })),
1004
+ oauthAccounts: z.array(z.object({
1005
+ provider: z.string(),
1006
+ createdAt: z.string()
1007
+ }))
1008
+ }).meta({ id: "UserDetail" });
1009
+
1010
+ //#endregion
1011
+ //#region src/api/schemas/widgets.ts
1012
+ const widgetType = z.enum([
1013
+ "content",
1014
+ "menu",
1015
+ "component"
1016
+ ]);
1017
+ const createWidgetAreaBody = z.object({
1018
+ name: z.string().min(1),
1019
+ label: z.string().min(1),
1020
+ description: z.string().optional()
1021
+ }).meta({ id: "CreateWidgetAreaBody" });
1022
+ const createWidgetBody = z.object({
1023
+ type: widgetType,
1024
+ title: z.string().optional(),
1025
+ content: z.array(z.record(z.string(), z.unknown())).optional(),
1026
+ menuName: z.string().optional(),
1027
+ componentId: z.string().optional(),
1028
+ componentProps: z.record(z.string(), z.unknown()).optional()
1029
+ }).meta({ id: "CreateWidgetBody" });
1030
+ const updateWidgetBody = z.object({
1031
+ type: widgetType.optional(),
1032
+ title: z.string().optional(),
1033
+ content: z.array(z.record(z.string(), z.unknown())).optional(),
1034
+ menuName: z.string().optional(),
1035
+ componentId: z.string().optional(),
1036
+ componentProps: z.record(z.string(), z.unknown()).optional()
1037
+ }).meta({ id: "UpdateWidgetBody" });
1038
+ const reorderWidgetsBody = z.object({ widgetIds: z.array(z.string().min(1)) }).meta({ id: "ReorderWidgetsBody" });
1039
+ const widgetAreaSchema = z.object({
1040
+ id: z.string(),
1041
+ name: z.string(),
1042
+ label: z.string(),
1043
+ description: z.string().nullable(),
1044
+ created_at: z.string(),
1045
+ updated_at: z.string()
1046
+ }).meta({ id: "WidgetArea" });
1047
+ const widgetSchema = z.object({
1048
+ id: z.string(),
1049
+ type: widgetType,
1050
+ title: z.string().optional(),
1051
+ content: z.array(z.record(z.string(), z.unknown())).optional(),
1052
+ menuName: z.string().optional(),
1053
+ componentId: z.string().optional(),
1054
+ componentProps: z.record(z.string(), z.unknown()).optional()
1055
+ }).meta({ id: "Widget" });
1056
+ const widgetAreaWithWidgetsSchema = widgetAreaSchema.extend({ widgets: z.array(widgetSchema) }).meta({ id: "WidgetAreaWithWidgets" });
1057
+ const widgetAreaWithWidgetsAndCountSchema = widgetAreaWithWidgetsSchema.extend({ widgetCount: z.number().int() }).meta({ id: "WidgetAreaWithWidgetsAndCount" });
1058
+
1059
+ //#endregion
1060
+ //#region src/api/schemas/redirects.ts
1061
+ const redirectType = z.coerce.number().int().refine((n) => [
1062
+ 301,
1063
+ 302,
1064
+ 307,
1065
+ 308
1066
+ ].includes(n), { message: "Redirect type must be 301, 302, 307, or 308" });
1067
+ /** Matches CR or LF characters */
1068
+ const CRLF = /[\r\n]/;
1069
+ /** Path must start with / and not be protocol-relative, contain no CRLF, and no path traversal */
1070
+ const urlPath = z.string().min(1).refine((s) => s.startsWith("/") && !s.startsWith("//"), { message: "Must be a path starting with / (no protocol-relative URLs)" }).refine((s) => !CRLF.test(s), { message: "URL must not contain newline characters" }).refine((s) => {
1071
+ try {
1072
+ return !decodeURIComponent(s).split("/").includes("..");
1073
+ } catch {
1074
+ return false;
1075
+ }
1076
+ }, { message: "URL must not contain path traversal segments" });
1077
+ const createRedirectBody = z.object({
1078
+ source: urlPath,
1079
+ destination: urlPath,
1080
+ type: redirectType.optional().default(301),
1081
+ enabled: z.boolean().optional().default(true),
1082
+ groupName: z.string().nullish()
1083
+ }).meta({ id: "CreateRedirectBody" });
1084
+ const updateRedirectBody = z.object({
1085
+ source: urlPath.optional(),
1086
+ destination: urlPath.optional(),
1087
+ type: redirectType.optional(),
1088
+ enabled: z.boolean().optional(),
1089
+ groupName: z.string().nullish()
1090
+ }).refine((o) => Object.values(o).some((v) => v !== void 0), { message: "At least one field must be provided" }).meta({ id: "UpdateRedirectBody" });
1091
+ const redirectsListQuery = cursorPaginationQuery.extend({
1092
+ search: z.string().optional(),
1093
+ group: z.string().optional(),
1094
+ enabled: z.enum(["true", "false"]).transform((v) => v === "true").optional(),
1095
+ auto: z.enum(["true", "false"]).transform((v) => v === "true").optional()
1096
+ }).meta({ id: "RedirectsListQuery" });
1097
+ const notFoundListQuery = cursorPaginationQuery.extend({ search: z.string().optional() }).meta({ id: "NotFoundListQuery" });
1098
+ const notFoundSummaryQuery = z.object({ limit: z.coerce.number().int().min(1).max(100).optional().default(50) });
1099
+ const notFoundPruneBody = z.object({ olderThan: z.string().datetime({ message: "olderThan must be an ISO 8601 datetime" }) }).meta({ id: "NotFoundPruneBody" });
1100
+ const redirectSchema = z.object({
1101
+ id: z.string(),
1102
+ source: z.string(),
1103
+ destination: z.string(),
1104
+ type: z.number().int(),
1105
+ isPattern: z.boolean(),
1106
+ enabled: z.boolean(),
1107
+ hits: z.number().int(),
1108
+ lastHitAt: z.string().nullable(),
1109
+ groupName: z.string().nullable(),
1110
+ auto: z.boolean(),
1111
+ createdAt: z.string(),
1112
+ updatedAt: z.string()
1113
+ }).meta({ id: "Redirect" });
1114
+ const redirectListResponseSchema = z.object({
1115
+ items: z.array(redirectSchema),
1116
+ nextCursor: z.string().optional(),
1117
+ loopRedirectIds: z.array(z.string()).optional()
1118
+ }).meta({ id: "RedirectListResponse" });
1119
+ const notFoundEntrySchema = z.object({
1120
+ id: z.string(),
1121
+ path: z.string(),
1122
+ referrer: z.string().nullable(),
1123
+ userAgent: z.string().nullable(),
1124
+ ip: z.string().nullable(),
1125
+ createdAt: z.string()
1126
+ }).meta({ id: "NotFoundEntry" });
1127
+ const notFoundListResponseSchema = z.object({
1128
+ items: z.array(notFoundEntrySchema),
1129
+ nextCursor: z.string().optional()
1130
+ }).meta({ id: "NotFoundListResponse" });
1131
+ const notFoundSummarySchema = z.object({
1132
+ path: z.string(),
1133
+ count: z.number().int(),
1134
+ lastSeen: z.string(),
1135
+ topReferrer: z.string().nullable()
1136
+ }).meta({ id: "NotFoundSummary" });
1137
+ const notFoundSummaryResponseSchema = z.object({ items: z.array(notFoundSummarySchema) }).meta({ id: "NotFoundSummaryResponse" });
1138
+
1139
+ //#endregion
1140
+ export { createMenuBody as $, contentCreateBody as $t, searchRebuildBody as A, localeFilterQuery as An, fieldReorderBody as At, updateSectionBody as B, formatFileSize as Bt, userDetailSchema as C, VALID_ROLE_LEVELS as Cn, collectionListResponseSchema as Ct, usersListQuery as D, deleteResponseSchema as Dn, createCollectionBody as Dt, userUpdateBody as E, cursorPaginationQuery as En, collectionWithFieldsResponseSchema as Et, siteSettingsSchema as F, orphanedTableSchema as Ft, taxonomyListResponseSchema as G, mediaListQuery as Gt, createTermBody as H, mediaConfirmResponseSchema as Ht, createSectionBody as I, schemaExportQuery as It, termResponseSchema as J, mediaResponseSchema as Jt, termGetResponseSchema as K, mediaListResponseSchema as Kt, sectionListResponseSchema as L, updateCollectionBody as Lt, searchResultSchema as M, roleLevel as Mn, fieldSchema as Mt, searchSuggestQuery as N, slugPattern as Nn, orphanRegisterBody as Nt, searchEnableBody as O, httpUrl as On, createFieldBody as Ot, settingsUpdateBody as P, successEnvelope as Pn, orphanedTableListResponseSchema as Pt, updateTermBody as Q, contentCompareResponseSchema as Qt, sectionSchema as R, updateFieldBody as Rt, allowedDomainUpdateBody as S, contentBylineInputSchema as Sn, collectionGetQuery as St, userSchema as T, countResponseSchema as Tn, collectionSchema as Tt, taxonomyDefSchema as U, mediaExistingResponseSchema as Ut, createTaxonomyDefBody as V, mediaConfirmBody as Vt, taxonomyDefTranslationsSchema as W, mediaItemSchema as Wt, termTranslationsSchema as X, mediaUploadUrlBody as Xt, termSchema as Y, mediaUpdateBody as Yt, termWithCountSchema as Z, mediaUploadUrlResponseSchema as Zt, widgetAreaSchema as _, bylineCreditSchema as _n, commentSchema as _t, notFoundPruneBody as a, contentResponseSchema as an, menuTranslationsSchema as at, widgetSchema as b, bylineUpdateBody as bn, publicCommentListResponseSchema as bt, notFoundSummarySchema as c, contentSeoSchema as cn, updateMenuBody as ct, redirectsListQuery as d, contentTranslationsResponseSchema as dn, sanitizeHref as dt, contentItemSchema as en, createMenuItemBody as et, updateRedirectBody as f, contentTrashQuery as fn, adminCommentListResponseSchema as ft, updateWidgetBody as g, bylineCreateBody as gn, commentListQuery as gt, reorderWidgetsBody as h, trashedContentListResponseSchema as hn, commentCountsResponseSchema as ht, notFoundListResponseSchema as i, contentPublishBody as in, menuSchema as it, searchResponseSchema as j, offsetPaginationQuery as jn, fieldResponseSchema as jt, searchQuery as k, localeCode as kn, fieldListResponseSchema as kt, redirectListResponseSchema as l, contentTermsBody as ln, updateMenuItemBody as lt, createWidgetBody as m, trashedContentItemSchema as mn, commentBulkResponseSchema as mt, notFoundEntrySchema as n, contentListResponseSchema as nn, menuItemTypeEnum as nt, notFoundSummaryQuery as o, contentScheduleBody as on, menuWithItemsSchema as ot, createWidgetAreaBody as p, contentUpdateBody as pn, commentBulkBody as pt, termListResponseSchema as q, mediaProviderListQuery as qt, notFoundListQuery as r, contentPreviewUrlBody as rn, menuListItemSchema as rt, notFoundSummaryResponseSchema as s, contentSeoInput as sn, reorderMenuItemsBody as st, createRedirectBody as t, contentListQuery as tn, menuItemSchema as tt, redirectSchema as u, contentTranslationSchema as un, isSafeHref as ut, widgetAreaWithWidgetsAndCountSchema as v, bylineListResponseSchema as vn, commentStatusBody as vt, userListResponseSchema as w, apiErrorSchema as wn, collectionResponseSchema as wt, allowedDomainCreateBody as x, bylinesListQuery as xn, publicCommentSchema as xt, widgetAreaWithWidgetsSchema as y, bylineSummarySchema as yn, createCommentBody as yt, sectionsListQuery as z, DEFAULT_MAX_UPLOAD_SIZE as zt };
1141
+ //# sourceMappingURL=redirects-Dmj6KRU3.mjs.map