dineway 0.1.9 → 0.1.12

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 (720) hide show
  1. package/README.md +63 -17
  2. package/dist/activity-events-B4wp7CrU.mjs +540 -0
  3. package/dist/allowed-origins-C1AKK9AT.mjs +68 -0
  4. package/dist/api/route-utils.d.mts +42 -0
  5. package/dist/api/route-utils.mjs +26 -0
  6. package/dist/api/schemas/index.d.mts +3 -0
  7. package/dist/api/schemas/index.mjs +6 -0
  8. package/dist/api/schemas/setup.d.mts +42 -0
  9. package/dist/api/schemas/setup.mjs +39 -0
  10. package/dist/api-BR7Y0GBo.mjs +2704 -0
  11. package/dist/api-tokens-CPjC3zf8.mjs +3 -0
  12. package/dist/api-tokens-D7UjLbdt.mjs +153 -0
  13. package/dist/{apply-iVSqz2qs.mjs → apply-Bm5QgdrE.mjs} +15 -689
  14. package/dist/astro/index.d.mts +11 -6
  15. package/dist/astro/index.mjs +86 -11
  16. package/dist/astro/middleware/auth.d.mts +11 -7
  17. package/dist/astro/middleware/auth.mjs +19 -104
  18. package/dist/astro/middleware/redirect.mjs +24 -14
  19. package/dist/astro/middleware/request-context.mjs +9 -6
  20. package/dist/astro/middleware/setup.mjs +1 -1
  21. package/dist/astro/middleware.mjs +88 -145
  22. package/dist/astro/routes/PluginRegistry.d.mts +14 -0
  23. package/dist/astro/routes/PluginRegistry.mjs +24 -0
  24. package/dist/astro/routes/api/admin/allowed-domains/_domain_.d.mts +14 -0
  25. package/dist/astro/routes/api/admin/allowed-domains/_domain_.mjs +65 -0
  26. package/dist/astro/routes/api/admin/allowed-domains/index.d.mts +14 -0
  27. package/dist/astro/routes/api/admin/allowed-domains/index.mjs +65 -0
  28. package/dist/astro/routes/api/admin/api-tokens/_id_.d.mts +10 -0
  29. package/dist/astro/routes/api/admin/api-tokens/_id_.mjs +33 -0
  30. package/dist/astro/routes/api/admin/api-tokens/index.d.mts +16 -0
  31. package/dist/astro/routes/api/admin/api-tokens/index.mjs +59 -0
  32. package/dist/astro/routes/api/admin/briefing.d.mts +7 -0
  33. package/dist/astro/routes/api/admin/briefing.mjs +71 -0
  34. package/dist/astro/routes/api/admin/bylines/_id_/index.d.mts +9 -0
  35. package/dist/astro/routes/api/admin/bylines/_id_/index.mjs +74 -0
  36. package/dist/astro/routes/api/admin/bylines/index.d.mts +8 -0
  37. package/dist/astro/routes/api/admin/bylines/index.mjs +61 -0
  38. package/dist/astro/routes/api/admin/comments/_id_/status.d.mts +7 -0
  39. package/dist/astro/routes/api/admin/comments/_id_/status.mjs +80 -0
  40. package/dist/astro/routes/api/admin/comments/_id_.d.mts +14 -0
  41. package/dist/astro/routes/api/admin/comments/_id_.mjs +46 -0
  42. package/dist/astro/routes/api/admin/comments/bulk.d.mts +7 -0
  43. package/dist/astro/routes/api/admin/comments/bulk.mjs +36 -0
  44. package/dist/astro/routes/api/admin/comments/counts.d.mts +7 -0
  45. package/dist/astro/routes/api/admin/comments/counts.mjs +24 -0
  46. package/dist/astro/routes/api/admin/comments/index.d.mts +10 -0
  47. package/dist/astro/routes/api/admin/comments/index.mjs +40 -0
  48. package/dist/astro/routes/api/admin/context/_id_/history.d.mts +7 -0
  49. package/dist/astro/routes/api/admin/context/_id_/history.mjs +46 -0
  50. package/dist/astro/routes/api/admin/context/_id_/index.d.mts +7 -0
  51. package/dist/astro/routes/api/admin/context/_id_/index.mjs +46 -0
  52. package/dist/astro/routes/api/admin/context/_id_/review.d.mts +7 -0
  53. package/dist/astro/routes/api/admin/context/_id_/review.mjs +61 -0
  54. package/dist/astro/routes/api/admin/context/_id_/supersede.d.mts +7 -0
  55. package/dist/astro/routes/api/admin/context/_id_/supersede.mjs +64 -0
  56. package/dist/astro/routes/api/admin/context/diff.d.mts +7 -0
  57. package/dist/astro/routes/api/admin/context/diff.mjs +50 -0
  58. package/dist/astro/routes/api/admin/context/index.d.mts +8 -0
  59. package/dist/astro/routes/api/admin/context/index.mjs +72 -0
  60. package/dist/astro/routes/api/admin/context/stale.d.mts +7 -0
  61. package/dist/astro/routes/api/admin/context/stale.mjs +50 -0
  62. package/dist/astro/routes/api/admin/hitl-requests/_id_/index.d.mts +7 -0
  63. package/dist/astro/routes/api/admin/hitl-requests/_id_/index.mjs +52 -0
  64. package/dist/astro/routes/api/admin/hitl-requests/_id_/resolve.d.mts +7 -0
  65. package/dist/astro/routes/api/admin/hitl-requests/_id_/resolve.mjs +68 -0
  66. package/dist/astro/routes/api/admin/hitl-requests/index.d.mts +7 -0
  67. package/dist/astro/routes/api/admin/hitl-requests/index.mjs +56 -0
  68. package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.d.mts +7 -0
  69. package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.mjs +99 -0
  70. package/dist/astro/routes/api/admin/hooks/exclusive/index.d.mts +7 -0
  71. package/dist/astro/routes/api/admin/hooks/exclusive/index.mjs +33 -0
  72. package/dist/astro/routes/api/admin/oauth-clients/_id_.d.mts +18 -0
  73. package/dist/astro/routes/api/admin/oauth-clients/_id_.mjs +79 -0
  74. package/dist/astro/routes/api/admin/oauth-clients/index.d.mts +14 -0
  75. package/dist/astro/routes/api/admin/oauth-clients/index.mjs +58 -0
  76. package/dist/astro/routes/api/admin/plugins/_id_/disable.d.mts +7 -0
  77. package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs +90 -0
  78. package/dist/astro/routes/api/admin/plugins/_id_/enable.d.mts +7 -0
  79. package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs +90 -0
  80. package/dist/astro/routes/api/admin/plugins/_id_/index.d.mts +7 -0
  81. package/dist/astro/routes/api/admin/plugins/_id_/index.mjs +55 -0
  82. package/dist/astro/routes/api/admin/plugins/_id_/uninstall.d.mts +7 -0
  83. package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs +99 -0
  84. package/dist/astro/routes/api/admin/plugins/_id_/update.d.mts +7 -0
  85. package/dist/astro/routes/api/admin/plugins/_id_/update.mjs +132 -0
  86. package/dist/astro/routes/api/admin/plugins/index.d.mts +7 -0
  87. package/dist/astro/routes/api/admin/plugins/index.mjs +53 -0
  88. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.d.mts +7 -0
  89. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.mjs +36 -0
  90. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.d.mts +7 -0
  91. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs +55 -0
  92. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.d.mts +7 -0
  93. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs +129 -0
  94. package/dist/astro/routes/api/admin/plugins/marketplace/index.d.mts +7 -0
  95. package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs +62 -0
  96. package/dist/astro/routes/api/admin/plugins/updates.d.mts +7 -0
  97. package/dist/astro/routes/api/admin/plugins/updates.mjs +53 -0
  98. package/dist/astro/routes/api/admin/review-requests/_id_/index.d.mts +7 -0
  99. package/dist/astro/routes/api/admin/review-requests/_id_/index.mjs +26 -0
  100. package/dist/astro/routes/api/admin/review-requests/_id_/resolve.d.mts +7 -0
  101. package/dist/astro/routes/api/admin/review-requests/_id_/resolve.mjs +98 -0
  102. package/dist/astro/routes/api/admin/review-requests/index.d.mts +7 -0
  103. package/dist/astro/routes/api/admin/review-requests/index.mjs +31 -0
  104. package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.d.mts +7 -0
  105. package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs +55 -0
  106. package/dist/astro/routes/api/admin/themes/marketplace/_id_/thumbnail.d.mts +7 -0
  107. package/dist/astro/routes/api/admin/themes/marketplace/_id_/thumbnail.mjs +36 -0
  108. package/dist/astro/routes/api/admin/themes/marketplace/index.d.mts +7 -0
  109. package/dist/astro/routes/api/admin/themes/marketplace/index.mjs +71 -0
  110. package/dist/astro/routes/api/admin/users/_id_/disable.d.mts +7 -0
  111. package/dist/astro/routes/api/admin/users/_id_/disable.mjs +38 -0
  112. package/dist/astro/routes/api/admin/users/_id_/enable.d.mts +7 -0
  113. package/dist/astro/routes/api/admin/users/_id_/enable.mjs +29 -0
  114. package/dist/astro/routes/api/admin/users/_id_/index.d.mts +8 -0
  115. package/dist/astro/routes/api/admin/users/_id_/index.mjs +104 -0
  116. package/dist/astro/routes/api/admin/users/_id_/send-recovery.d.mts +7 -0
  117. package/dist/astro/routes/api/admin/users/_id_/send-recovery.mjs +43 -0
  118. package/dist/astro/routes/api/admin/users/index.d.mts +7 -0
  119. package/dist/astro/routes/api/admin/users/index.mjs +54 -0
  120. package/dist/astro/routes/api/auth/dev-bypass.d.mts +8 -0
  121. package/dist/astro/routes/api/auth/dev-bypass.mjs +81 -0
  122. package/dist/astro/routes/api/auth/invite/accept.d.mts +7 -0
  123. package/dist/astro/routes/api/auth/invite/accept.mjs +31 -0
  124. package/dist/astro/routes/api/auth/invite/complete.d.mts +7 -0
  125. package/dist/astro/routes/api/auth/invite/complete.mjs +54 -0
  126. package/dist/astro/routes/api/auth/invite/index.d.mts +7 -0
  127. package/dist/astro/routes/api/auth/invite/index.mjs +51 -0
  128. package/dist/astro/routes/api/auth/invite/register-options.d.mts +7 -0
  129. package/dist/astro/routes/api/auth/invite/register-options.mjs +44 -0
  130. package/dist/astro/routes/api/auth/logout.d.mts +7 -0
  131. package/dist/astro/routes/api/auth/logout.mjs +24 -0
  132. package/dist/astro/routes/api/auth/magic-link/send.d.mts +7 -0
  133. package/dist/astro/routes/api/auth/magic-link/send.mjs +48 -0
  134. package/dist/astro/routes/api/auth/magic-link/verify.d.mts +7 -0
  135. package/dist/astro/routes/api/auth/magic-link/verify.mjs +32 -0
  136. package/dist/astro/routes/api/auth/me.d.mts +13 -0
  137. package/dist/astro/routes/api/auth/me.mjs +41 -0
  138. package/dist/astro/routes/api/auth/mode.d.mts +7 -0
  139. package/dist/astro/routes/api/auth/mode.mjs +28 -0
  140. package/dist/astro/routes/api/auth/oauth/_provider_/callback.d.mts +7 -0
  141. package/dist/astro/routes/api/auth/oauth/_provider_/callback.mjs +114 -0
  142. package/dist/astro/routes/api/auth/oauth/_provider_.d.mts +7 -0
  143. package/dist/astro/routes/api/auth/oauth/_provider_.mjs +58 -0
  144. package/dist/astro/routes/api/auth/passkey/_id_.d.mts +14 -0
  145. package/dist/astro/routes/api/auth/passkey/_id_.mjs +62 -0
  146. package/dist/astro/routes/api/auth/passkey/index.d.mts +7 -0
  147. package/dist/astro/routes/api/auth/passkey/index.mjs +25 -0
  148. package/dist/astro/routes/api/auth/passkey/options.d.mts +7 -0
  149. package/dist/astro/routes/api/auth/passkey/options.mjs +46 -0
  150. package/dist/astro/routes/api/auth/passkey/register/options.d.mts +7 -0
  151. package/dist/astro/routes/api/auth/passkey/register/options.mjs +44 -0
  152. package/dist/astro/routes/api/auth/passkey/register/verify.d.mts +7 -0
  153. package/dist/astro/routes/api/auth/passkey/register/verify.mjs +59 -0
  154. package/dist/astro/routes/api/auth/passkey/verify.d.mts +7 -0
  155. package/dist/astro/routes/api/auth/passkey/verify.mjs +47 -0
  156. package/dist/astro/routes/api/auth/signup/complete.d.mts +7 -0
  157. package/dist/astro/routes/api/auth/signup/complete.mjs +55 -0
  158. package/dist/astro/routes/api/auth/signup/request.d.mts +7 -0
  159. package/dist/astro/routes/api/auth/signup/request.mjs +44 -0
  160. package/dist/astro/routes/api/auth/signup/verify.d.mts +7 -0
  161. package/dist/astro/routes/api/auth/signup/verify.mjs +32 -0
  162. package/dist/astro/routes/api/comments/_collection_/_contentId_/index.d.mts +14 -0
  163. package/dist/astro/routes/api/comments/_collection_/_contentId_/index.mjs +193 -0
  164. package/dist/astro/routes/api/content/_collection_/_id_/compare.d.mts +7 -0
  165. package/dist/astro/routes/api/content/_collection_/_id_/compare.mjs +17 -0
  166. package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.d.mts +7 -0
  167. package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs +36 -0
  168. package/dist/astro/routes/api/content/_collection_/_id_/duplicate.d.mts +7 -0
  169. package/dist/astro/routes/api/content/_collection_/_id_/duplicate.mjs +39 -0
  170. package/dist/astro/routes/api/content/_collection_/_id_/permanent.d.mts +7 -0
  171. package/dist/astro/routes/api/content/_collection_/_id_/permanent.mjs +31 -0
  172. package/dist/astro/routes/api/content/_collection_/_id_/preview-url.d.mts +7 -0
  173. package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs +78 -0
  174. package/dist/astro/routes/api/content/_collection_/_id_/publish.d.mts +7 -0
  175. package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs +93 -0
  176. package/dist/astro/routes/api/content/_collection_/_id_/restore.d.mts +7 -0
  177. package/dist/astro/routes/api/content/_collection_/_id_/restore.mjs +36 -0
  178. package/dist/astro/routes/api/content/_collection_/_id_/revisions.d.mts +7 -0
  179. package/dist/astro/routes/api/content/_collection_/_id_/revisions.mjs +19 -0
  180. package/dist/astro/routes/api/content/_collection_/_id_/schedule.d.mts +8 -0
  181. package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs +75 -0
  182. package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.d.mts +14 -0
  183. package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs +85 -0
  184. package/dist/astro/routes/api/content/_collection_/_id_/translations.d.mts +7 -0
  185. package/dist/astro/routes/api/content/_collection_/_id_/translations.mjs +40 -0
  186. package/dist/astro/routes/api/content/_collection_/_id_/unpublish.d.mts +7 -0
  187. package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs +36 -0
  188. package/dist/astro/routes/api/content/_collection_/_id_.d.mts +9 -0
  189. package/dist/astro/routes/api/content/_collection_/_id_.mjs +114 -0
  190. package/dist/astro/routes/api/content/_collection_/index.d.mts +8 -0
  191. package/dist/astro/routes/api/content/_collection_/index.mjs +74 -0
  192. package/dist/astro/routes/api/content/_collection_/trash.d.mts +7 -0
  193. package/dist/astro/routes/api/content/_collection_/trash.mjs +23 -0
  194. package/dist/astro/routes/api/dashboard.d.mts +7 -0
  195. package/dist/astro/routes/api/dashboard.mjs +26 -0
  196. package/dist/astro/routes/api/dev/emails.d.mts +8 -0
  197. package/dist/astro/routes/api/dev/emails.mjs +17 -0
  198. package/dist/astro/routes/api/health.d.mts +7 -0
  199. package/dist/astro/routes/api/health.mjs +34 -0
  200. package/dist/astro/routes/api/import/probe.d.mts +17 -0
  201. package/dist/astro/routes/api/import/probe.mjs +33 -0
  202. package/dist/astro/routes/api/import/wordpress/analyze.d.mts +87 -0
  203. package/dist/astro/routes/api/import/wordpress/analyze.mjs +305 -0
  204. package/dist/astro/routes/api/import/wordpress/execute.d.mts +37 -0
  205. package/dist/astro/routes/api/import/wordpress/execute.mjs +198 -0
  206. package/dist/astro/routes/api/import/wordpress/media.d.mts +35 -0
  207. package/dist/astro/routes/api/import/wordpress/media.mjs +222 -0
  208. package/dist/astro/routes/api/import/wordpress/prepare.d.mts +19 -0
  209. package/dist/astro/routes/api/import/wordpress/prepare.mjs +156 -0
  210. package/dist/astro/routes/api/import/wordpress/rewrite-urls.d.mts +21 -0
  211. package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs +290 -0
  212. package/dist/astro/routes/api/import/wordpress-plugin/analyze.d.mts +15 -0
  213. package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs +69 -0
  214. package/dist/astro/routes/api/import/wordpress-plugin/callback.d.mts +7 -0
  215. package/dist/astro/routes/api/import/wordpress-plugin/callback.mjs +28 -0
  216. package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts +19 -0
  217. package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs +269 -0
  218. package/dist/astro/routes/api/manifest.d.mts +7 -0
  219. package/dist/astro/routes/api/manifest.mjs +50 -0
  220. package/dist/astro/routes/api/mcp.d.mts +15 -0
  221. package/dist/astro/routes/api/mcp.mjs +2701 -0
  222. package/dist/astro/routes/api/media/_id_/confirm.d.mts +10 -0
  223. package/dist/astro/routes/api/media/_id_/confirm.mjs +59 -0
  224. package/dist/astro/routes/api/media/_id_.d.mts +22 -0
  225. package/dist/astro/routes/api/media/_id_.mjs +81 -0
  226. package/dist/astro/routes/api/media/file/_...key_.d.mts +7 -0
  227. package/dist/astro/routes/api/media/file/_...key_.mjs +49 -0
  228. package/dist/astro/routes/api/media/providers/_providerId_/_itemId_.d.mts +14 -0
  229. package/dist/astro/routes/api/media/providers/_providerId_/_itemId_.mjs +49 -0
  230. package/dist/astro/routes/api/media/providers/_providerId_/index.d.mts +14 -0
  231. package/dist/astro/routes/api/media/providers/_providerId_/index.mjs +72 -0
  232. package/dist/astro/routes/api/media/providers/index.d.mts +10 -0
  233. package/dist/astro/routes/api/media/providers/index.mjs +18 -0
  234. package/dist/astro/routes/api/media/upload-url.d.mts +10 -0
  235. package/dist/astro/routes/api/media/upload-url.mjs +82 -0
  236. package/dist/astro/routes/api/media.d.mts +16 -0
  237. package/dist/astro/routes/api/media.mjs +137 -0
  238. package/dist/astro/routes/api/menus/_name_/items.d.mts +9 -0
  239. package/dist/astro/routes/api/menus/_name_/items.mjs +165 -0
  240. package/dist/astro/routes/api/menus/_name_/reorder.d.mts +7 -0
  241. package/dist/astro/routes/api/menus/_name_/reorder.mjs +78 -0
  242. package/dist/astro/routes/api/menus/_name_.d.mts +9 -0
  243. package/dist/astro/routes/api/menus/_name_.mjs +124 -0
  244. package/dist/astro/routes/api/menus/index.d.mts +8 -0
  245. package/dist/astro/routes/api/menus/index.mjs +85 -0
  246. package/dist/astro/routes/api/oauth/authorize.d.mts +8 -0
  247. package/dist/astro/routes/api/oauth/authorize.mjs +265 -0
  248. package/dist/astro/routes/api/oauth/device/authorize.d.mts +7 -0
  249. package/dist/astro/routes/api/oauth/device/authorize.mjs +30 -0
  250. package/dist/astro/routes/api/oauth/device/code.d.mts +7 -0
  251. package/dist/astro/routes/api/oauth/device/code.mjs +34 -0
  252. package/dist/astro/routes/api/oauth/device/token.d.mts +7 -0
  253. package/dist/astro/routes/api/oauth/device/token.mjs +45 -0
  254. package/dist/astro/routes/api/oauth/register.d.mts +8 -0
  255. package/dist/astro/routes/api/oauth/register.mjs +115 -0
  256. package/dist/astro/routes/api/oauth/token/refresh.d.mts +7 -0
  257. package/dist/astro/routes/api/oauth/token/refresh.mjs +28 -0
  258. package/dist/astro/routes/api/oauth/token/revoke.d.mts +7 -0
  259. package/dist/astro/routes/api/oauth/token/revoke.mjs +25 -0
  260. package/dist/astro/routes/api/oauth/token.d.mts +8 -0
  261. package/dist/astro/routes/api/oauth/token.mjs +138 -0
  262. package/dist/astro/routes/api/openapi.json.d.mts +7 -0
  263. package/dist/astro/routes/api/openapi.json.mjs +2638 -0
  264. package/dist/astro/routes/api/plugins/_pluginId_/_...path_.d.mts +11 -0
  265. package/dist/astro/routes/api/plugins/_pluginId_/_...path_.mjs +77 -0
  266. package/dist/astro/routes/api/redirects/404s/index.d.mts +9 -0
  267. package/dist/astro/routes/api/redirects/404s/index.mjs +62 -0
  268. package/dist/astro/routes/api/redirects/404s/summary.d.mts +7 -0
  269. package/dist/astro/routes/api/redirects/404s/summary.mjs +34 -0
  270. package/dist/astro/routes/api/redirects/_id_.d.mts +9 -0
  271. package/dist/astro/routes/api/redirects/_id_.mjs +153 -0
  272. package/dist/astro/routes/api/redirects/index.d.mts +8 -0
  273. package/dist/astro/routes/api/redirects/index.mjs +98 -0
  274. package/dist/astro/routes/api/revisions/_revisionId_/index.d.mts +7 -0
  275. package/dist/astro/routes/api/revisions/_revisionId_/index.mjs +16 -0
  276. package/dist/astro/routes/api/revisions/_revisionId_/restore.d.mts +7 -0
  277. package/dist/astro/routes/api/revisions/_revisionId_/restore.mjs +23 -0
  278. package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.d.mts +9 -0
  279. package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs +99 -0
  280. package/dist/astro/routes/api/schema/collections/_slug_/fields/index.d.mts +8 -0
  281. package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs +81 -0
  282. package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.d.mts +7 -0
  283. package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs +68 -0
  284. package/dist/astro/routes/api/schema/collections/_slug_/index.d.mts +9 -0
  285. package/dist/astro/routes/api/schema/collections/_slug_/index.mjs +98 -0
  286. package/dist/astro/routes/api/schema/collections/index.d.mts +8 -0
  287. package/dist/astro/routes/api/schema/collections/index.mjs +78 -0
  288. package/dist/astro/routes/api/schema/index.d.mts +7 -0
  289. package/dist/astro/routes/api/schema/index.mjs +79 -0
  290. package/dist/astro/routes/api/schema/orphans/_slug_.d.mts +7 -0
  291. package/dist/astro/routes/api/schema/orphans/_slug_.mjs +59 -0
  292. package/dist/astro/routes/api/schema/orphans/index.d.mts +7 -0
  293. package/dist/astro/routes/api/schema/orphans/index.mjs +54 -0
  294. package/dist/astro/routes/api/search/enable.d.mts +15 -0
  295. package/dist/astro/routes/api/search/enable.mjs +55 -0
  296. package/dist/astro/routes/api/search/index.d.mts +16 -0
  297. package/dist/astro/routes/api/search/index.mjs +52 -0
  298. package/dist/astro/routes/api/search/rebuild.d.mts +13 -0
  299. package/dist/astro/routes/api/search/rebuild.mjs +48 -0
  300. package/dist/astro/routes/api/search/stats.d.mts +10 -0
  301. package/dist/astro/routes/api/search/stats.mjs +28 -0
  302. package/dist/astro/routes/api/search/suggest.d.mts +15 -0
  303. package/dist/astro/routes/api/search/suggest.mjs +43 -0
  304. package/dist/astro/routes/api/sections/_slug_.d.mts +9 -0
  305. package/dist/astro/routes/api/sections/_slug_.mjs +157 -0
  306. package/dist/astro/routes/api/sections/index.d.mts +8 -0
  307. package/dist/astro/routes/api/sections/index.mjs +100 -0
  308. package/dist/astro/routes/api/settings/email.d.mts +17 -0
  309. package/dist/astro/routes/api/settings/email.mjs +102 -0
  310. package/dist/astro/routes/api/settings.d.mts +20 -0
  311. package/dist/astro/routes/api/settings.mjs +102 -0
  312. package/dist/astro/routes/api/setup/admin-verify.d.mts +7 -0
  313. package/dist/astro/routes/api/setup/admin-verify.mjs +67 -0
  314. package/dist/astro/routes/api/setup/admin.d.mts +7 -0
  315. package/dist/astro/routes/api/setup/admin.mjs +68 -0
  316. package/dist/astro/routes/api/setup/dev-bypass.d.mts +8 -0
  317. package/dist/astro/routes/api/setup/dev-bypass.mjs +137 -0
  318. package/dist/astro/routes/api/setup/dev-reset.d.mts +7 -0
  319. package/dist/astro/routes/api/setup/dev-reset.mjs +22 -0
  320. package/dist/astro/routes/api/setup/index.d.mts +7 -0
  321. package/dist/astro/routes/api/setup/index.mjs +93 -0
  322. package/dist/astro/routes/api/setup/status.d.mts +7 -0
  323. package/dist/astro/routes/api/setup/status.mjs +57 -0
  324. package/dist/astro/routes/api/snapshot.d.mts +7 -0
  325. package/dist/astro/routes/api/snapshot.mjs +227 -0
  326. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.d.mts +18 -0
  327. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs +190 -0
  328. package/dist/astro/routes/api/taxonomies/_name_/terms/index.d.mts +14 -0
  329. package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs +114 -0
  330. package/dist/astro/routes/api/taxonomies/index.d.mts +14 -0
  331. package/dist/astro/routes/api/taxonomies/index.mjs +104 -0
  332. package/dist/astro/routes/api/themes/preview.d.mts +7 -0
  333. package/dist/astro/routes/api/themes/preview.mjs +47 -0
  334. package/dist/astro/routes/api/typegen.d.mts +17 -0
  335. package/dist/astro/routes/api/typegen.mjs +75 -0
  336. package/dist/astro/routes/api/well-known/auth.d.mts +7 -0
  337. package/dist/astro/routes/api/well-known/auth.mjs +42 -0
  338. package/dist/astro/routes/api/well-known/oauth-authorization-server.d.mts +7 -0
  339. package/dist/astro/routes/api/well-known/oauth-authorization-server.mjs +33 -0
  340. package/dist/astro/routes/api/well-known/oauth-protected-resource.d.mts +7 -0
  341. package/dist/astro/routes/api/well-known/oauth-protected-resource.mjs +21 -0
  342. package/dist/astro/routes/api/widget-areas/_name_/reorder.d.mts +7 -0
  343. package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs +89 -0
  344. package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.d.mts +8 -0
  345. package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs +159 -0
  346. package/dist/astro/routes/api/widget-areas/_name_/widgets.d.mts +7 -0
  347. package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs +105 -0
  348. package/dist/astro/routes/api/widget-areas/_name_.d.mts +8 -0
  349. package/dist/astro/routes/api/widget-areas/_name_.mjs +100 -0
  350. package/dist/astro/routes/api/widget-areas/index.d.mts +8 -0
  351. package/dist/astro/routes/api/widget-areas/index.mjs +109 -0
  352. package/dist/astro/routes/api/widget-components.d.mts +7 -0
  353. package/dist/astro/routes/api/widget-components.mjs +15 -0
  354. package/dist/astro/routes/robots.txt.d.mts +7 -0
  355. package/dist/astro/routes/robots.txt.mjs +60 -0
  356. package/dist/astro/routes/sitemap-_collection_.xml.d.mts +7 -0
  357. package/dist/astro/routes/sitemap-_collection_.xml.mjs +70 -0
  358. package/dist/astro/routes/sitemap.xml.d.mts +7 -0
  359. package/dist/astro/routes/sitemap.xml.mjs +63 -0
  360. package/dist/astro/types.d.mts +42 -9
  361. package/dist/auth/providers/github-admin.d.mts +9 -0
  362. package/dist/auth/providers/github-admin.mjs +27 -0
  363. package/dist/auth/providers/github.d.mts +12 -0
  364. package/dist/auth/providers/github.mjs +17 -0
  365. package/dist/auth/providers/google-admin.d.mts +9 -0
  366. package/dist/auth/providers/google-admin.mjs +43 -0
  367. package/dist/auth/providers/google.d.mts +12 -0
  368. package/dist/auth/providers/google.mjs +17 -0
  369. package/dist/auth-control-guard-DOZ3UCsP.mjs +13 -0
  370. package/dist/authorize-BAdbMCwC.mjs +36 -0
  371. package/dist/briefing-MVYe_Uyf.mjs +1294 -0
  372. package/dist/briefing-rty4O-wa.mjs +29 -0
  373. package/dist/{byline-OhH2dlRu.mjs → byline-naZxOPSa.mjs} +3 -3
  374. package/dist/{bylines-BGpD9_hy.mjs → bylines-C4LIBOOO.mjs} +20 -53
  375. package/dist/bylines-eVVCuOe4.d.mts +2023 -0
  376. package/dist/{cache-BdSY-gQN.mjs → cache-DEbQ13c9.mjs} +21 -11
  377. package/dist/challenge-store-DDTbisbf.mjs +48 -0
  378. package/dist/cli/index.mjs +142 -22
  379. package/dist/client/external-auth-headers.d.mts +1 -1
  380. package/dist/client/index.d.mts +1 -1
  381. package/dist/client/index.mjs +3 -3
  382. package/dist/comment-DFO-gWDH.mjs +246 -0
  383. package/dist/comments--BsZ9pqA.mjs +186 -0
  384. package/dist/components-BPknylYg.mjs +107 -0
  385. package/dist/{content-DWi4d0rT.mjs → content-CyLkb-qH.mjs} +33 -44
  386. package/dist/context-CNIkMzot.mjs +849 -0
  387. package/dist/context-DNfcm853.mjs +184 -0
  388. package/dist/context-route-helpers-MurhoxWF.mjs +45 -0
  389. package/dist/context-types-C-LwdAxx.mjs +23 -0
  390. package/dist/cron-CKxvBrRT.mjs +263 -0
  391. package/dist/dashboard-DqnYU8EU.mjs +120 -0
  392. package/dist/db/index.d.mts +3 -3
  393. package/dist/db/libsql.d.mts +1 -1
  394. package/dist/db/libsql.mjs +3 -3
  395. package/dist/db/postgres.d.mts +1 -1
  396. package/dist/db/sqlite.d.mts +1 -1
  397. package/dist/db/sqlite.mjs +1 -2
  398. package/dist/device-flow-BGEH5jfn.mjs +487 -0
  399. package/dist/email-console-CuefUXfX.mjs +36 -0
  400. package/dist/entity-aliases-C0v-yNET.mjs +51 -0
  401. package/dist/error-BMUPwxgx.mjs +435 -0
  402. package/dist/escape-BRVaw1Ai.mjs +8 -0
  403. package/dist/experimental-workflows-C9X7yblQ.mjs +38 -0
  404. package/dist/fts-manager-B1pTNEG_.mjs +297 -0
  405. package/dist/hash-CDX7M0ze.mjs +32 -0
  406. package/dist/hitl-requests-ChT32Ilo.mjs +118 -0
  407. package/dist/hitl-route-helpers-CSit54Ru.mjs +96 -0
  408. package/dist/import-BHRLhXAn.mjs +1323 -0
  409. package/dist/import-CNcKWTbp.mjs +243 -0
  410. package/dist/index-CYfhYgXd.d.mts +227 -0
  411. package/dist/index-EUAWaIxW.d.mts +835 -0
  412. package/dist/index.d.mts +17 -11
  413. package/dist/index.mjs +63 -22
  414. package/dist/jsonld-D2gUY4kA.d.mts +141 -0
  415. package/dist/{loader-sMG4TZ-u.mjs → loader-PZnPxFLc.mjs} +42 -5
  416. package/dist/{manifest-schema-D1MSVnoI.mjs → manifest-schema-CgFJAp0H.mjs} +22 -10
  417. package/dist/media/index.d.mts +2 -1
  418. package/dist/media/index.mjs +2 -1
  419. package/dist/media/local-runtime.d.mts +12 -7
  420. package/dist/media/local-runtime.mjs +3 -3
  421. package/dist/{media-DMTr80Gv.mjs → media-_7Fxdu45.mjs} +1 -1
  422. package/dist/menus-DS3_5nWY.mjs +312 -0
  423. package/dist/menus-DYW_UHjv.mjs +256 -0
  424. package/dist/normalize-C49G_o1k.mjs +126 -0
  425. package/dist/oauth-authorization-DxGjiWKL.mjs +283 -0
  426. package/dist/oauth-clients-DxO_NO7k.mjs +298 -0
  427. package/dist/oauth-state-store-C5UFhzwD.mjs +48 -0
  428. package/dist/oauth-user-lookup-Bi0ek9eM.mjs +25 -0
  429. package/dist/options-z8VVg1Ll.mjs +114 -0
  430. package/dist/page/index.d.mts +2 -139
  431. package/dist/page/index.mjs +1 -427
  432. package/dist/parse-C9106ehs.mjs +88 -0
  433. package/dist/passkey-config-BRSZx4pW.mjs +42 -0
  434. package/dist/{patterns-CrCYkMBb.mjs → patterns-K0DLqWir.mjs} +53 -1
  435. package/dist/placeholder-Bh1dfUOd.d.mts +40 -0
  436. package/dist/{placeholder-Cp8g5Emj.mjs → placeholder-C2P5fKa4.mjs} +1 -126
  437. package/dist/plugins/adapt-sandbox-entry.d.mts +10 -5
  438. package/dist/plugins/adapt-sandbox-entry.mjs +4 -4
  439. package/dist/plugins-D7-ILNib.mjs +3249 -0
  440. package/dist/preview-DvYRU-Oy.mjs +788 -0
  441. package/dist/provider-loader-BiQ6lNmf.d.mts +20 -0
  442. package/dist/provider-loader-C21b9OpH.mjs +36 -0
  443. package/dist/public-url-Cun8N3NU.mjs +71 -0
  444. package/dist/{query-kDmwCsHh.mjs → query-B9BO5goQ.mjs} +93 -19
  445. package/dist/query-CsbOywSY.mjs +35 -0
  446. package/dist/rate-limit-DmVTHI5v.mjs +112 -0
  447. package/dist/{redirect-DnEWAkVg.mjs → redirect-CGl64yOX.mjs} +9 -5
  448. package/dist/redirect-COZy-3iY.mjs +16 -0
  449. package/dist/redirects-Cgi_cZfN.mjs +499 -0
  450. package/dist/redirects-lrlmYXVE.mjs +1023 -0
  451. package/dist/{registry-C0zjeB9P.mjs → registry-C-_hxLqa.mjs} +26 -294
  452. package/dist/request-meta-DixlNKKa.mjs +130 -0
  453. package/dist/review-requests-C2DIHwlJ.mjs +148 -0
  454. package/dist/review-requests-DIyjw-K_.mjs +79 -0
  455. package/dist/{runner-CFI6B6J2.d.mts → runner-BU6Lo1ZS.d.mts} +1 -1
  456. package/dist/{index-yvc6E_17.d.mts → runtime-Db4LbNVZ.d.mts} +1188 -2484
  457. package/dist/runtime.d.mts +11 -24
  458. package/dist/runtime.mjs +4 -38
  459. package/dist/schema-BECjUhP8.mjs +8 -0
  460. package/dist/search-DqTHQqtV.mjs +337 -0
  461. package/dist/secrets-CkoJ9zN0.mjs +160 -0
  462. package/dist/sections-B61OxnfB.mjs +338 -0
  463. package/dist/seed/index.d.mts +2 -2
  464. package/dist/seed/index.mjs +18 -13
  465. package/dist/seo/index.d.mts +1 -1
  466. package/dist/seo-C007Luwn.mjs +85 -0
  467. package/dist/seo-CUQctrog.mjs +129 -0
  468. package/dist/seo-contributions-B1fWCnqY.mjs +429 -0
  469. package/dist/service-CyOsm0R6.mjs +194 -0
  470. package/dist/settings-DGtLLSaz.mjs +237 -0
  471. package/dist/settings-Dzgswvg4.mjs +50 -0
  472. package/dist/setup-complete-ChilE-da.mjs +21 -0
  473. package/dist/setup-nonce-BpmLXAuu.mjs +17 -0
  474. package/dist/sidecar-client-B1C6Cf80.mjs +66 -0
  475. package/dist/site-activity-B8FjLIVh.mjs +104 -0
  476. package/dist/site-context-WBxoD99D.mjs +4122 -0
  477. package/dist/site-url-BP7k7OCe.mjs +12 -0
  478. package/dist/slugify-PDTDtMXp.mjs +30 -0
  479. package/dist/ssrf-DDwRxF6B.mjs +248 -0
  480. package/dist/storage/local.d.mts +1 -1
  481. package/dist/storage/local.mjs +1 -1
  482. package/dist/storage/s3.d.mts +1 -1
  483. package/dist/storage/s3.mjs +2 -2
  484. package/dist/{taxonomies-1s5PaS_8.mjs → taxonomies-D2aZGuns.mjs} +11 -7
  485. package/dist/taxonomies-z6Lz91BC.mjs +355 -0
  486. package/dist/taxonomy-D5cbhc8u.mjs +165 -0
  487. package/dist/{tokens-CJz9ubV6.mjs → tokens-BOJw-D9F.mjs} +1 -1
  488. package/dist/{transport-DB5eDN4x.mjs → transport-D3i4yWRE.mjs} +5 -4
  489. package/dist/trusted-proxy-BbaZfkT9.mjs +30 -0
  490. package/dist/types-0Vr68fc2.d.mts +344 -0
  491. package/dist/types-BFmjniC2.d.mts +165 -0
  492. package/dist/{types-BawVha09.mjs → types-Bs6lTBBW.mjs} +1 -1
  493. package/dist/{types-BuMDPy5C.d.mts → types-C0mmVRJN.d.mts} +6 -0
  494. package/dist/{placeholder--wOi4TbO.d.mts → types-OPs5Q_sX.d.mts} +1 -38
  495. package/dist/{types-Cj0KMIZV.d.mts → types-Q616b2Hn.d.mts} +54 -16
  496. package/dist/ui/client-runtime.d.mts +12 -0
  497. package/dist/ui/client-runtime.mjs +32 -0
  498. package/dist/ui/server-runtime.d.mts +33 -0
  499. package/dist/ui/server-runtime.mjs +80 -0
  500. package/dist/url-DNjT2abR.mjs +49 -0
  501. package/dist/user-CcXq-zoL.mjs +154 -0
  502. package/dist/utils-C0ONdBul.mjs +285 -0
  503. package/dist/{validate-IPf8n4Fj.d.mts → validate-BwmQEbu8.d.mts} +3 -3
  504. package/dist/{validate-BZ5wnLLp.mjs → validate-C7TzfamJ.mjs} +1 -1
  505. package/dist/version-D3vDb22n.mjs +6 -0
  506. package/dist/widgets-B7DRpZvy.mjs +104 -0
  507. package/dist/wordpress-slugs-CnporCYH.mjs +14 -0
  508. package/dist/zod-generator-DBVP8D0P.mjs +132 -0
  509. package/locals.d.ts +1 -6
  510. package/package.json +81 -11
  511. package/src/components/Button.astro +1 -1
  512. package/src/components/CommentForm.astro +1 -1
  513. package/src/components/Comments.astro +1 -3
  514. package/src/components/DinewayBodyEnd.astro +5 -3
  515. package/src/components/DinewayBodyStart.astro +5 -3
  516. package/src/components/DinewayHead.astro +15 -9
  517. package/src/components/DinewayImage.astro +12 -8
  518. package/src/components/DinewayMedia.astro +15 -6
  519. package/src/components/Embed.astro +1 -2
  520. package/src/components/File.astro +1 -1
  521. package/src/components/Gallery.astro +5 -3
  522. package/src/components/HtmlBlock.astro +1 -1
  523. package/src/components/Image.astro +9 -3
  524. package/src/components/InlinePortableTextEditor.tsx +69 -20
  525. package/src/components/PortableText.astro +1 -1
  526. package/src/components/WidgetArea.astro +1 -1
  527. package/src/components/WidgetRenderer.astro +1 -3
  528. package/src/components/marks/Link.astro +1 -1
  529. package/src/components/widgets/Archives.astro +1 -1
  530. package/src/components/widgets/Categories.astro +1 -1
  531. package/src/components/widgets/RecentPosts.astro +1 -1
  532. package/src/components/widgets/Tags.astro +1 -1
  533. package/dist/error-BmL6QipT.mjs +0 -30
  534. package/dist/search-DxopAWxs.mjs +0 -11200
  535. package/dist/version-BPz1imu2.mjs +0 -6
  536. package/src/astro/routes/PluginRegistry.tsx +0 -21
  537. package/src/astro/routes/api/admin/allowed-domains/[domain].ts +0 -112
  538. package/src/astro/routes/api/admin/allowed-domains/index.ts +0 -108
  539. package/src/astro/routes/api/admin/api-tokens/[id].ts +0 -44
  540. package/src/astro/routes/api/admin/api-tokens/index.ts +0 -90
  541. package/src/astro/routes/api/admin/briefing.ts +0 -76
  542. package/src/astro/routes/api/admin/bylines/[id]/index.ts +0 -90
  543. package/src/astro/routes/api/admin/bylines/index.ts +0 -74
  544. package/src/astro/routes/api/admin/comments/[id]/status.ts +0 -120
  545. package/src/astro/routes/api/admin/comments/[id].ts +0 -64
  546. package/src/astro/routes/api/admin/comments/bulk.ts +0 -42
  547. package/src/astro/routes/api/admin/comments/counts.ts +0 -30
  548. package/src/astro/routes/api/admin/comments/index.ts +0 -46
  549. package/src/astro/routes/api/admin/context/[id]/history.ts +0 -35
  550. package/src/astro/routes/api/admin/context/[id]/index.ts +0 -35
  551. package/src/astro/routes/api/admin/context/[id]/review.ts +0 -57
  552. package/src/astro/routes/api/admin/context/[id]/supersede.ts +0 -58
  553. package/src/astro/routes/api/admin/context/diff.ts +0 -35
  554. package/src/astro/routes/api/admin/context/index.ts +0 -69
  555. package/src/astro/routes/api/admin/context/stale.ts +0 -35
  556. package/src/astro/routes/api/admin/hitl-requests/[id]/index.ts +0 -38
  557. package/src/astro/routes/api/admin/hitl-requests/[id]/resolve.ts +0 -54
  558. package/src/astro/routes/api/admin/hitl-requests/index.ts +0 -38
  559. package/src/astro/routes/api/admin/hooks/exclusive/[hookName].ts +0 -132
  560. package/src/astro/routes/api/admin/hooks/exclusive/index.ts +0 -51
  561. package/src/astro/routes/api/admin/oauth-clients/[id].ts +0 -137
  562. package/src/astro/routes/api/admin/oauth-clients/index.ts +0 -95
  563. package/src/astro/routes/api/admin/plugins/[id]/disable.ts +0 -91
  564. package/src/astro/routes/api/admin/plugins/[id]/enable.ts +0 -91
  565. package/src/astro/routes/api/admin/plugins/[id]/index.ts +0 -38
  566. package/src/astro/routes/api/admin/plugins/[id]/uninstall.ts +0 -98
  567. package/src/astro/routes/api/admin/plugins/[id]/update.ts +0 -154
  568. package/src/astro/routes/api/admin/plugins/index.ts +0 -32
  569. package/src/astro/routes/api/admin/plugins/marketplace/[id]/icon.ts +0 -62
  570. package/src/astro/routes/api/admin/plugins/marketplace/[id]/index.ts +0 -33
  571. package/src/astro/routes/api/admin/plugins/marketplace/[id]/install.ts +0 -135
  572. package/src/astro/routes/api/admin/plugins/marketplace/index.ts +0 -38
  573. package/src/astro/routes/api/admin/plugins/updates.ts +0 -28
  574. package/src/astro/routes/api/admin/review-requests/[id]/index.ts +0 -35
  575. package/src/astro/routes/api/admin/review-requests/[id]/resolve.ts +0 -52
  576. package/src/astro/routes/api/admin/review-requests/index.ts +0 -35
  577. package/src/astro/routes/api/admin/themes/marketplace/[id]/index.ts +0 -33
  578. package/src/astro/routes/api/admin/themes/marketplace/[id]/thumbnail.ts +0 -62
  579. package/src/astro/routes/api/admin/themes/marketplace/index.ts +0 -45
  580. package/src/astro/routes/api/admin/users/[id]/disable.ts +0 -72
  581. package/src/astro/routes/api/admin/users/[id]/enable.ts +0 -48
  582. package/src/astro/routes/api/admin/users/[id]/index.ts +0 -166
  583. package/src/astro/routes/api/admin/users/[id]/send-recovery.ts +0 -72
  584. package/src/astro/routes/api/admin/users/index.ts +0 -66
  585. package/src/astro/routes/api/auth/dev-bypass.ts +0 -139
  586. package/src/astro/routes/api/auth/invite/accept.ts +0 -52
  587. package/src/astro/routes/api/auth/invite/complete.ts +0 -86
  588. package/src/astro/routes/api/auth/invite/index.ts +0 -99
  589. package/src/astro/routes/api/auth/invite/register-options.ts +0 -73
  590. package/src/astro/routes/api/auth/logout.ts +0 -40
  591. package/src/astro/routes/api/auth/magic-link/send.ts +0 -90
  592. package/src/astro/routes/api/auth/magic-link/verify.ts +0 -71
  593. package/src/astro/routes/api/auth/me.ts +0 -60
  594. package/src/astro/routes/api/auth/oauth/[provider]/callback.ts +0 -221
  595. package/src/astro/routes/api/auth/oauth/[provider].ts +0 -120
  596. package/src/astro/routes/api/auth/passkey/[id].ts +0 -124
  597. package/src/astro/routes/api/auth/passkey/index.ts +0 -54
  598. package/src/astro/routes/api/auth/passkey/options.ts +0 -85
  599. package/src/astro/routes/api/auth/passkey/register/options.ts +0 -88
  600. package/src/astro/routes/api/auth/passkey/register/verify.ts +0 -119
  601. package/src/astro/routes/api/auth/passkey/verify.ts +0 -72
  602. package/src/astro/routes/api/auth/signup/complete.ts +0 -87
  603. package/src/astro/routes/api/auth/signup/request.ts +0 -89
  604. package/src/astro/routes/api/auth/signup/verify.ts +0 -53
  605. package/src/astro/routes/api/comments/[collection]/[contentId]/index.ts +0 -310
  606. package/src/astro/routes/api/content/[collection]/[id]/compare.ts +0 -28
  607. package/src/astro/routes/api/content/[collection]/[id]/discard-draft.ts +0 -68
  608. package/src/astro/routes/api/content/[collection]/[id]/duplicate.ts +0 -77
  609. package/src/astro/routes/api/content/[collection]/[id]/permanent.ts +0 -42
  610. package/src/astro/routes/api/content/[collection]/[id]/preview-url.ts +0 -107
  611. package/src/astro/routes/api/content/[collection]/[id]/publish.ts +0 -100
  612. package/src/astro/routes/api/content/[collection]/[id]/restore.ts +0 -64
  613. package/src/astro/routes/api/content/[collection]/[id]/revisions.ts +0 -31
  614. package/src/astro/routes/api/content/[collection]/[id]/schedule.ts +0 -129
  615. package/src/astro/routes/api/content/[collection]/[id]/terms/[taxonomy].ts +0 -143
  616. package/src/astro/routes/api/content/[collection]/[id]/translations.ts +0 -50
  617. package/src/astro/routes/api/content/[collection]/[id]/unpublish.ts +0 -69
  618. package/src/astro/routes/api/content/[collection]/[id].ts +0 -173
  619. package/src/astro/routes/api/content/[collection]/index.ts +0 -103
  620. package/src/astro/routes/api/content/[collection]/trash.ts +0 -33
  621. package/src/astro/routes/api/dashboard.ts +0 -32
  622. package/src/astro/routes/api/dev/emails.ts +0 -36
  623. package/src/astro/routes/api/health.ts +0 -54
  624. package/src/astro/routes/api/import/probe.ts +0 -47
  625. package/src/astro/routes/api/import/wordpress/analyze.ts +0 -523
  626. package/src/astro/routes/api/import/wordpress/execute.ts +0 -330
  627. package/src/astro/routes/api/import/wordpress/media.ts +0 -338
  628. package/src/astro/routes/api/import/wordpress/prepare.ts +0 -212
  629. package/src/astro/routes/api/import/wordpress/rewrite-urls.ts +0 -425
  630. package/src/astro/routes/api/import/wordpress-plugin/analyze.ts +0 -111
  631. package/src/astro/routes/api/import/wordpress-plugin/callback.ts +0 -58
  632. package/src/astro/routes/api/import/wordpress-plugin/execute.ts +0 -399
  633. package/src/astro/routes/api/manifest.ts +0 -75
  634. package/src/astro/routes/api/mcp.ts +0 -125
  635. package/src/astro/routes/api/media/[id]/confirm.ts +0 -93
  636. package/src/astro/routes/api/media/[id].ts +0 -145
  637. package/src/astro/routes/api/media/file/[...key].ts +0 -79
  638. package/src/astro/routes/api/media/providers/[providerId]/[itemId].ts +0 -91
  639. package/src/astro/routes/api/media/providers/[providerId]/index.ts +0 -111
  640. package/src/astro/routes/api/media/providers/index.ts +0 -30
  641. package/src/astro/routes/api/media/upload-url.ts +0 -146
  642. package/src/astro/routes/api/media.ts +0 -204
  643. package/src/astro/routes/api/menus/[name]/items.ts +0 -206
  644. package/src/astro/routes/api/menus/[name]/reorder.ts +0 -79
  645. package/src/astro/routes/api/menus/[name].ts +0 -145
  646. package/src/astro/routes/api/menus/index.ts +0 -91
  647. package/src/astro/routes/api/oauth/authorize.ts +0 -430
  648. package/src/astro/routes/api/oauth/device/authorize.ts +0 -45
  649. package/src/astro/routes/api/oauth/device/code.ts +0 -56
  650. package/src/astro/routes/api/oauth/device/token.ts +0 -70
  651. package/src/astro/routes/api/oauth/register.ts +0 -182
  652. package/src/astro/routes/api/oauth/token/refresh.ts +0 -38
  653. package/src/astro/routes/api/oauth/token/revoke.ts +0 -38
  654. package/src/astro/routes/api/oauth/token.ts +0 -195
  655. package/src/astro/routes/api/openapi.json.ts +0 -33
  656. package/src/astro/routes/api/plugins/[pluginId]/[...path].ts +0 -109
  657. package/src/astro/routes/api/redirects/404s/index.ts +0 -72
  658. package/src/astro/routes/api/redirects/404s/summary.ts +0 -33
  659. package/src/astro/routes/api/redirects/[id].ts +0 -183
  660. package/src/astro/routes/api/redirects/index.ts +0 -100
  661. package/src/astro/routes/api/revisions/[revisionId]/index.ts +0 -29
  662. package/src/astro/routes/api/revisions/[revisionId]/restore.ts +0 -62
  663. package/src/astro/routes/api/schema/collections/[slug]/fields/[fieldSlug].ts +0 -104
  664. package/src/astro/routes/api/schema/collections/[slug]/fields/index.ts +0 -67
  665. package/src/astro/routes/api/schema/collections/[slug]/fields/reorder.ts +0 -45
  666. package/src/astro/routes/api/schema/collections/[slug]/index.ts +0 -107
  667. package/src/astro/routes/api/schema/collections/index.ts +0 -61
  668. package/src/astro/routes/api/schema/index.ts +0 -109
  669. package/src/astro/routes/api/schema/orphans/[slug].ts +0 -36
  670. package/src/astro/routes/api/schema/orphans/index.ts +0 -26
  671. package/src/astro/routes/api/search/enable.ts +0 -64
  672. package/src/astro/routes/api/search/index.ts +0 -52
  673. package/src/astro/routes/api/search/rebuild.ts +0 -72
  674. package/src/astro/routes/api/search/stats.ts +0 -35
  675. package/src/astro/routes/api/search/suggest.ts +0 -50
  676. package/src/astro/routes/api/sections/[slug].ts +0 -203
  677. package/src/astro/routes/api/sections/index.ts +0 -107
  678. package/src/astro/routes/api/settings/email.ts +0 -150
  679. package/src/astro/routes/api/settings.ts +0 -116
  680. package/src/astro/routes/api/setup/admin-verify.ts +0 -122
  681. package/src/astro/routes/api/setup/admin.ts +0 -104
  682. package/src/astro/routes/api/setup/dev-bypass.ts +0 -200
  683. package/src/astro/routes/api/setup/dev-reset.ts +0 -40
  684. package/src/astro/routes/api/setup/index.ts +0 -128
  685. package/src/astro/routes/api/setup/status.ts +0 -122
  686. package/src/astro/routes/api/snapshot.ts +0 -76
  687. package/src/astro/routes/api/taxonomies/[name]/terms/[slug].ts +0 -232
  688. package/src/astro/routes/api/taxonomies/[name]/terms/index.ts +0 -131
  689. package/src/astro/routes/api/taxonomies/index.ts +0 -114
  690. package/src/astro/routes/api/themes/preview.ts +0 -78
  691. package/src/astro/routes/api/typegen.ts +0 -114
  692. package/src/astro/routes/api/well-known/auth.ts +0 -71
  693. package/src/astro/routes/api/well-known/oauth-authorization-server.ts +0 -48
  694. package/src/astro/routes/api/well-known/oauth-protected-resource.ts +0 -39
  695. package/src/astro/routes/api/widget-areas/[name]/reorder.ts +0 -114
  696. package/src/astro/routes/api/widget-areas/[name]/widgets/[id].ts +0 -213
  697. package/src/astro/routes/api/widget-areas/[name]/widgets.ts +0 -126
  698. package/src/astro/routes/api/widget-areas/[name].ts +0 -135
  699. package/src/astro/routes/api/widget-areas/index.ts +0 -149
  700. package/src/astro/routes/api/widget-components.ts +0 -22
  701. package/src/astro/routes/robots.txt.ts +0 -81
  702. package/src/astro/routes/sitemap-[collection].xml.ts +0 -104
  703. package/src/astro/routes/sitemap.xml.ts +0 -92
  704. /package/dist/{adapters-C2ypTrZZ.d.mts → adapters-DuLQZhRY.d.mts} +0 -0
  705. /package/{src → dist}/astro/routes/admin.astro +0 -0
  706. /package/dist/{base64-F8-DUraK.mjs → base64-Cz-aU0X1.mjs} +0 -0
  707. /package/dist/{chunks--4F8ddV4.mjs → chunks-D_jVet6z.mjs} +0 -0
  708. /package/dist/{config-BXwuX8Bx.mjs → config-CAMFxGaV.mjs} +0 -0
  709. /package/dist/{db-errors-CEqD7qH9.mjs → db-errors-DyZkswzF.mjs} +0 -0
  710. /package/dist/{default-VjJyuuG9.mjs → default-D4ngTpW8.mjs} +0 -0
  711. /package/dist/{load-Coc9HpHH.mjs → load-B2XtDw__.mjs} +0 -0
  712. /package/dist/{mode-47goXBBK.mjs → mode-DUhxwUhv.mjs} +0 -0
  713. /package/dist/{request-cache-Dk5qPSOx.mjs → request-cache-DHMRr2Lf.mjs} +0 -0
  714. /package/dist/{transaction-Cn2rjY78.mjs → transaction-x2tJQ-A1.mjs} +0 -0
  715. /package/dist/{transport-Wge_IzKl.d.mts → transport-BXe1AM79.d.mts} +0 -0
  716. /package/dist/{types-CWbdtiux.d.mts → types-B7kpsMJ3.d.mts} +0 -0
  717. /package/dist/{types-BzcUjoqg.d.mts → types-DJlpx5Ay.d.mts} +0 -0
  718. /package/dist/{types-COeOq9nK.mjs → types-DL7Y8D_t.mjs} +0 -0
  719. /package/dist/{types-DOrVigru.d.mts → types-DZPw8Rru.d.mts} +0 -0
  720. /package/dist/{types-griIBQOQ.mjs → types-fAInWQDO.mjs} +0 -0
@@ -0,0 +1,1023 @@
1
+ import { t as isSafeHref } from "./url-DNjT2abR.mjs";
2
+ import { z } from "zod";
3
+
4
+ //#region src/api/schemas/common.ts
5
+ /** Valid role level values */
6
+ const VALID_ROLE_LEVELS = new Set([
7
+ 10,
8
+ 20,
9
+ 30,
10
+ 40,
11
+ 50
12
+ ]);
13
+ /** Role level — coerces string/number to valid RoleLevel (10|20|30|40|50) */
14
+ 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" });
15
+ /** Pagination query params — cursor-based */
16
+ const cursorPaginationQuery = z.object({
17
+ cursor: z.string().optional().meta({ description: "Opaque cursor for pagination" }),
18
+ limit: z.coerce.number().int().min(1).max(100).optional().default(50).meta({ description: "Maximum number of items to return (1-100, default 50)" })
19
+ }).meta({ id: "CursorPaginationQuery" });
20
+ /** Pagination query params — offset-based */
21
+ const offsetPaginationQuery = z.object({
22
+ limit: z.coerce.number().int().min(1).max(100).optional().default(50),
23
+ offset: z.coerce.number().int().min(0).optional().default(0)
24
+ }).meta({ id: "OffsetPaginationQuery" });
25
+ /** Slug pattern: lowercase letters, digits, underscores; starts with letter */
26
+ const slugPattern = /^[a-z][a-z0-9_]*$/;
27
+ /** Matches http(s) scheme at start of URL */
28
+ const HTTP_SCHEME_RE = /^https?:\/\//i;
29
+ /** Validates that a URL string uses http or https scheme. Rejects javascript:/data: URI XSS vectors. */
30
+ const httpUrl = z.string().url().refine((url) => HTTP_SCHEME_RE.test(url), "URL must use http or https");
31
+ /** BCP 47 locale code — language with optional script/region subtags (e.g. en, en-US, pt-BR, es-419, zh-Hant) */
32
+ const localeCode = z.string().regex(/^[a-z]{2,3}(-[a-z0-9]{2,8})*$/i, "Invalid locale code").transform((v) => v.toLowerCase());
33
+ /** Standard API error response */
34
+ const apiErrorSchema = z.object({ error: z.object({
35
+ code: z.string().meta({
36
+ description: "Machine-readable error code",
37
+ example: "NOT_FOUND"
38
+ }),
39
+ message: z.string().meta({ description: "Human-readable error message" })
40
+ }) }).meta({ id: "ApiError" });
41
+ /** Wrap a data schema in the standard success envelope: { data: T } */
42
+ function successEnvelope(dataSchema) {
43
+ return z.object({ data: dataSchema });
44
+ }
45
+ /** Standard delete response */
46
+ const deleteResponseSchema = z.object({ deleted: z.literal(true) }).meta({ id: "DeleteResponse" });
47
+ /** Standard count response */
48
+ const countResponseSchema = z.object({ count: z.number().int().min(0) }).meta({ id: "CountResponse" });
49
+
50
+ //#endregion
51
+ //#region src/api/schemas/bylines.ts
52
+ /** Slug pattern: lowercase letters, digits, and hyphens; must start with a letter */
53
+ const bylineSlugPattern = /^[a-z][a-z0-9-]*$/;
54
+ const bylineSummarySchema = z.object({
55
+ id: z.string(),
56
+ slug: z.string(),
57
+ displayName: z.string(),
58
+ bio: z.string().nullable(),
59
+ avatarMediaId: z.string().nullable(),
60
+ websiteUrl: z.string().nullable(),
61
+ userId: z.string().nullable(),
62
+ isGuest: z.boolean(),
63
+ createdAt: z.string(),
64
+ updatedAt: z.string()
65
+ }).meta({ id: "BylineSummary" });
66
+ const bylineCreditSchema = z.object({
67
+ byline: bylineSummarySchema,
68
+ sortOrder: z.number().int(),
69
+ roleLabel: z.string().nullable(),
70
+ source: z.enum(["explicit", "inferred"]).optional().meta({ description: "Whether this credit was explicitly assigned or inferred from authorId" })
71
+ }).meta({ id: "BylineCredit" });
72
+ const contentBylineInputSchema = z.object({
73
+ bylineId: z.string().min(1),
74
+ roleLabel: z.string().nullish()
75
+ }).meta({ id: "ContentBylineInput" });
76
+ const bylinesListQuery = cursorPaginationQuery.extend({
77
+ search: z.string().optional(),
78
+ isGuest: z.coerce.boolean().optional(),
79
+ userId: z.string().optional()
80
+ }).meta({ id: "BylinesListQuery" });
81
+ const bylineCreateBody = z.object({
82
+ slug: z.string().min(1).regex(bylineSlugPattern, "Slug must contain only lowercase letters, digits, and hyphens"),
83
+ displayName: z.string().min(1),
84
+ bio: z.string().nullish(),
85
+ avatarMediaId: z.string().nullish(),
86
+ websiteUrl: httpUrl.nullish(),
87
+ userId: z.string().nullish(),
88
+ isGuest: z.boolean().optional()
89
+ }).meta({ id: "BylineCreateBody" });
90
+ const bylineUpdateBody = z.object({
91
+ slug: z.string().min(1).regex(bylineSlugPattern, "Slug must contain only lowercase letters, digits, and hyphens").optional(),
92
+ displayName: z.string().min(1).optional(),
93
+ bio: z.string().nullish(),
94
+ avatarMediaId: z.string().nullish(),
95
+ websiteUrl: httpUrl.nullish(),
96
+ userId: z.string().nullish(),
97
+ isGuest: z.boolean().optional()
98
+ }).meta({ id: "BylineUpdateBody" });
99
+ const bylineListResponseSchema = z.object({
100
+ items: z.array(bylineSummarySchema),
101
+ nextCursor: z.string().optional()
102
+ }).meta({ id: "BylineListResponse" });
103
+
104
+ //#endregion
105
+ //#region src/api/schemas/content.ts
106
+ /** SEO input — per-content meta fields */
107
+ const contentSeoInput = z.object({
108
+ title: z.string().max(200).nullish(),
109
+ description: z.string().max(500).nullish(),
110
+ image: z.string().nullish(),
111
+ canonical: httpUrl.nullish(),
112
+ noIndex: z.boolean().optional()
113
+ }).meta({ id: "ContentSeoInput" });
114
+ const contentListQuery = cursorPaginationQuery.extend({
115
+ status: z.string().optional(),
116
+ orderBy: z.string().optional(),
117
+ order: z.enum(["asc", "desc"]).optional(),
118
+ locale: localeCode.optional()
119
+ }).meta({ id: "ContentListQuery" });
120
+ const contentDateOverride = z.iso.datetime({
121
+ offset: true,
122
+ message: "must be an ISO 8601 datetime"
123
+ }).nullish();
124
+ const contentCreateBody = z.object({
125
+ data: z.record(z.string(), z.unknown()),
126
+ slug: z.string().nullish(),
127
+ status: z.enum(["draft"]).optional(),
128
+ bylines: z.array(contentBylineInputSchema).optional(),
129
+ locale: localeCode.optional(),
130
+ translationOf: z.string().optional(),
131
+ seo: contentSeoInput.optional(),
132
+ publishedAt: contentDateOverride,
133
+ createdAt: contentDateOverride
134
+ }).meta({ id: "ContentCreateBody" });
135
+ const contentUpdateBody = z.object({
136
+ data: z.record(z.string(), z.unknown()).optional(),
137
+ slug: z.string().nullish(),
138
+ status: z.enum(["draft"]).optional(),
139
+ authorId: z.string().nullish(),
140
+ bylines: z.array(contentBylineInputSchema).optional(),
141
+ _rev: z.string().optional().meta({ description: "Opaque revision token for optimistic concurrency" }),
142
+ skipRevision: z.boolean().optional(),
143
+ seo: contentSeoInput.optional(),
144
+ publishedAt: contentDateOverride
145
+ }).meta({ id: "ContentUpdateBody" });
146
+ const contentScheduleBody = z.object({ scheduledAt: z.string().min(1, "scheduledAt is required").meta({
147
+ description: "ISO 8601 datetime for scheduled publishing",
148
+ example: "2025-06-15T09:00:00Z"
149
+ }) }).meta({ id: "ContentScheduleBody" });
150
+ const contentPublishBody = z.object({
151
+ publishedAt: z.iso.datetime({
152
+ offset: true,
153
+ message: "must be an ISO 8601 datetime"
154
+ }).optional().meta({ description: "Optional ISO 8601 datetime to backdate the publish. Requires content:publish_any permission. Without this, existing published_at is preserved on re-publish." }),
155
+ reviewRequestId: z.string().optional().meta({ description: "Approved review request ID for token-authenticated publish execution." }),
156
+ review_request_id: z.string().optional().meta({ description: "Snake-case alias for reviewRequestId." })
157
+ }).meta({ id: "ContentPublishBody" });
158
+ const contentPreviewUrlBody = z.object({
159
+ expiresIn: z.union([z.string(), z.number()]).optional(),
160
+ pathPattern: z.string().optional()
161
+ }).meta({ id: "ContentPreviewUrlBody" });
162
+ const contentTermsBody = z.object({ termIds: z.array(z.string()) }).meta({ id: "ContentTermsBody" });
163
+ const contentTrashQuery = cursorPaginationQuery;
164
+ /** SEO metadata on a content item */
165
+ const contentSeoSchema = z.object({
166
+ title: z.string().nullable(),
167
+ description: z.string().nullable(),
168
+ image: z.string().nullable(),
169
+ canonical: z.string().nullable(),
170
+ noIndex: z.boolean()
171
+ }).meta({ id: "ContentSeo" });
172
+ /** A single content item as returned by the API */
173
+ const contentItemSchema = z.object({
174
+ id: z.string(),
175
+ type: z.string().meta({ description: "Collection slug this item belongs to" }),
176
+ slug: z.string().nullable(),
177
+ status: z.string().meta({ description: "draft, published, or scheduled" }),
178
+ data: z.record(z.string(), z.unknown()).meta({ description: "User-defined field values" }),
179
+ authorId: z.string().nullable(),
180
+ primaryBylineId: z.string().nullable(),
181
+ byline: bylineSummarySchema.nullable().optional(),
182
+ bylines: z.array(bylineCreditSchema).optional(),
183
+ createdAt: z.string(),
184
+ updatedAt: z.string(),
185
+ publishedAt: z.string().nullable(),
186
+ scheduledAt: z.string().nullable(),
187
+ liveRevisionId: z.string().nullable(),
188
+ draftRevisionId: z.string().nullable(),
189
+ version: z.number().int(),
190
+ locale: z.string().nullable(),
191
+ translationGroup: z.string().nullable(),
192
+ seo: contentSeoSchema.optional()
193
+ }).meta({ id: "ContentItem" });
194
+ /** Response for single content item endpoints (get, create, update) */
195
+ const contentResponseSchema = z.object({
196
+ item: contentItemSchema,
197
+ _rev: z.string().optional().meta({ description: "Opaque revision token for optimistic concurrency" })
198
+ }).meta({ id: "ContentResponse" });
199
+ /** Response for content list endpoints */
200
+ const contentListResponseSchema = z.object({
201
+ items: z.array(contentItemSchema),
202
+ nextCursor: z.string().optional()
203
+ }).meta({ id: "ContentListResponse" });
204
+ /** Trashed content item */
205
+ const trashedContentItemSchema = z.object({
206
+ id: z.string(),
207
+ type: z.string(),
208
+ slug: z.string().nullable(),
209
+ status: z.string(),
210
+ data: z.record(z.string(), z.unknown()),
211
+ authorId: z.string().nullable(),
212
+ createdAt: z.string(),
213
+ updatedAt: z.string(),
214
+ publishedAt: z.string().nullable(),
215
+ deletedAt: z.string()
216
+ }).meta({ id: "TrashedContentItem" });
217
+ /** Response for trashed content list */
218
+ const trashedContentListResponseSchema = z.object({
219
+ items: z.array(trashedContentItemSchema),
220
+ nextCursor: z.string().optional()
221
+ }).meta({ id: "TrashedContentListResponse" });
222
+ /** Response for content compare (live vs draft) */
223
+ const contentCompareResponseSchema = z.object({
224
+ hasChanges: z.boolean(),
225
+ live: z.record(z.string(), z.unknown()).nullable(),
226
+ draft: z.record(z.string(), z.unknown()).nullable()
227
+ }).meta({ id: "ContentCompareResponse" });
228
+ /** Translation summary for a content item */
229
+ const contentTranslationSchema = z.object({
230
+ id: z.string(),
231
+ locale: z.string().nullable(),
232
+ slug: z.string().nullable(),
233
+ status: z.string(),
234
+ updatedAt: z.string()
235
+ });
236
+ /** Response for content translations endpoint */
237
+ const contentTranslationsResponseSchema = z.object({
238
+ translationGroup: z.string(),
239
+ translations: z.array(contentTranslationSchema)
240
+ }).meta({ id: "ContentTranslationsResponse" });
241
+
242
+ //#endregion
243
+ //#region src/api/schemas/media.ts
244
+ const mediaListQuery = cursorPaginationQuery.extend({ mimeType: z.string().optional() }).meta({ id: "MediaListQuery" });
245
+ const mediaUpdateBody = z.object({
246
+ alt: z.string().optional(),
247
+ caption: z.string().optional(),
248
+ width: z.number().int().positive().optional(),
249
+ height: z.number().int().positive().optional()
250
+ }).meta({ id: "MediaUpdateBody" });
251
+ /** Default maximum allowed file upload size (50 MB). */
252
+ const DEFAULT_MAX_UPLOAD_SIZE = 50 * 1024 * 1024;
253
+ function formatFileSize(bytes) {
254
+ if (bytes < 1024) return `${bytes}B`;
255
+ if (bytes < 1024 * 1024) return `${Math.floor(bytes / 1024)}KB`;
256
+ return `${Math.floor(bytes / 1024 / 1024)}MB`;
257
+ }
258
+ function mediaUploadUrlBody(maxSize) {
259
+ if (!Number.isFinite(maxSize) || maxSize <= 0) throw new Error(`Dineway: maxUploadSize must be a positive finite number, got ${maxSize}`);
260
+ return z.object({
261
+ filename: z.string().min(1, "filename is required"),
262
+ contentType: z.string().min(1, "contentType is required"),
263
+ size: z.number().int().positive().max(maxSize, `File size must not exceed ${formatFileSize(maxSize)}`),
264
+ contentHash: z.string().optional()
265
+ }).meta({ id: "MediaUploadUrlBody" });
266
+ }
267
+ const mediaConfirmBody = z.object({
268
+ size: z.number().int().positive().optional(),
269
+ width: z.number().int().positive().optional(),
270
+ height: z.number().int().positive().optional()
271
+ }).meta({ id: "MediaConfirmBody" });
272
+ const mediaProviderListQuery = cursorPaginationQuery.extend({
273
+ query: z.string().optional(),
274
+ mimeType: z.string().optional()
275
+ }).meta({ id: "MediaProviderListQuery" });
276
+ const mediaStatusSchema = z.enum([
277
+ "pending",
278
+ "ready",
279
+ "failed"
280
+ ]);
281
+ const mediaItemSchema = z.object({
282
+ id: z.string(),
283
+ filename: z.string(),
284
+ mimeType: z.string(),
285
+ size: z.number().nullable(),
286
+ width: z.number().nullable(),
287
+ height: z.number().nullable(),
288
+ alt: z.string().nullable(),
289
+ caption: z.string().nullable(),
290
+ storageKey: z.string(),
291
+ status: mediaStatusSchema,
292
+ contentHash: z.string().nullable(),
293
+ blurhash: z.string().nullable(),
294
+ dominantColor: z.string().nullable(),
295
+ createdAt: z.string(),
296
+ authorId: z.string().nullable()
297
+ }).meta({ id: "MediaItem" });
298
+ const mediaResponseSchema = z.object({ item: mediaItemSchema }).meta({ id: "MediaResponse" });
299
+ const mediaListResponseSchema = z.object({
300
+ items: z.array(mediaItemSchema),
301
+ nextCursor: z.string().optional()
302
+ }).meta({ id: "MediaListResponse" });
303
+ const mediaUploadUrlResponseSchema = z.object({
304
+ uploadUrl: z.string(),
305
+ method: z.literal("PUT"),
306
+ headers: z.record(z.string(), z.string()),
307
+ mediaId: z.string(),
308
+ storageKey: z.string(),
309
+ expiresAt: z.string()
310
+ }).meta({ id: "MediaUploadUrlResponse" });
311
+ const mediaExistingResponseSchema = z.object({
312
+ existing: z.literal(true),
313
+ mediaId: z.string(),
314
+ storageKey: z.string(),
315
+ url: z.string()
316
+ }).meta({ id: "MediaExistingResponse" });
317
+ const mediaConfirmResponseSchema = z.object({ item: mediaItemSchema.extend({ url: z.string() }) }).meta({ id: "MediaConfirmResponse" });
318
+
319
+ //#endregion
320
+ //#region src/api/schemas/schema.ts
321
+ const collectionSupportValues = z.enum([
322
+ "drafts",
323
+ "revisions",
324
+ "preview",
325
+ "scheduling",
326
+ "search"
327
+ ]);
328
+ const collectionSourcePattern = /^(template:.+|import:.+|manual|discovered|seed)$/;
329
+ const urlPatternSchema = z.string().refine((value) => !value || value.includes("{slug}"), "URL pattern must include a {slug} placeholder");
330
+ const fieldTypeValues = z.enum([
331
+ "string",
332
+ "text",
333
+ "url",
334
+ "number",
335
+ "integer",
336
+ "boolean",
337
+ "datetime",
338
+ "select",
339
+ "multiSelect",
340
+ "portableText",
341
+ "image",
342
+ "file",
343
+ "reference",
344
+ "json",
345
+ "slug",
346
+ "repeater"
347
+ ]);
348
+ const repeaterSubFieldSchema = z.object({
349
+ slug: z.string().min(1).max(63).regex(slugPattern, "Invalid slug format"),
350
+ type: z.enum([
351
+ "string",
352
+ "text",
353
+ "url",
354
+ "number",
355
+ "integer",
356
+ "boolean",
357
+ "datetime",
358
+ "select"
359
+ ]),
360
+ label: z.string().min(1),
361
+ required: z.boolean().optional(),
362
+ options: z.array(z.string()).optional()
363
+ });
364
+ const fieldValidation = z.object({
365
+ required: z.boolean().optional(),
366
+ min: z.number().optional(),
367
+ max: z.number().optional(),
368
+ minLength: z.number().int().min(0).optional(),
369
+ maxLength: z.number().int().min(0).optional(),
370
+ pattern: z.string().optional(),
371
+ options: z.array(z.string()).optional(),
372
+ subFields: z.array(repeaterSubFieldSchema).min(1).optional(),
373
+ minItems: z.number().int().min(0).optional(),
374
+ maxItems: z.number().int().min(1).optional()
375
+ }).optional();
376
+ const fieldWidgetOptions = z.record(z.string(), z.unknown()).optional();
377
+ const createCollectionBody = z.object({
378
+ slug: z.string().min(1).max(63).regex(slugPattern, "Invalid slug format"),
379
+ label: z.string().min(1),
380
+ labelSingular: z.string().optional(),
381
+ description: z.string().optional(),
382
+ icon: z.string().optional(),
383
+ supports: z.array(collectionSupportValues).optional(),
384
+ source: z.string().regex(collectionSourcePattern).optional(),
385
+ urlPattern: urlPatternSchema.optional(),
386
+ hasSeo: z.boolean().optional()
387
+ }).meta({ id: "CreateCollectionBody" });
388
+ const updateCollectionBody = z.object({
389
+ label: z.string().min(1).optional(),
390
+ labelSingular: z.string().optional(),
391
+ description: z.string().optional(),
392
+ icon: z.string().optional(),
393
+ supports: z.array(collectionSupportValues).optional(),
394
+ urlPattern: urlPatternSchema.nullish(),
395
+ hasSeo: z.boolean().optional(),
396
+ commentsEnabled: z.boolean().optional(),
397
+ commentsModeration: z.enum([
398
+ "all",
399
+ "first_time",
400
+ "none"
401
+ ]).optional(),
402
+ commentsClosedAfterDays: z.number().int().min(0).optional(),
403
+ commentsAutoApproveUsers: z.boolean().optional()
404
+ }).meta({ id: "UpdateCollectionBody" });
405
+ const createFieldBody = z.object({
406
+ slug: z.string().min(1).max(63).regex(slugPattern, "Invalid slug format"),
407
+ label: z.string().min(1),
408
+ type: fieldTypeValues,
409
+ required: z.boolean().optional(),
410
+ unique: z.boolean().optional(),
411
+ defaultValue: z.unknown().optional(),
412
+ validation: fieldValidation,
413
+ widget: z.string().optional(),
414
+ options: fieldWidgetOptions,
415
+ sortOrder: z.number().int().min(0).optional(),
416
+ searchable: z.boolean().optional(),
417
+ translatable: z.boolean().optional()
418
+ }).meta({ id: "CreateFieldBody" });
419
+ const updateFieldBody = z.object({
420
+ label: z.string().min(1).optional(),
421
+ required: z.boolean().optional(),
422
+ unique: z.boolean().optional(),
423
+ defaultValue: z.unknown().optional(),
424
+ validation: fieldValidation,
425
+ widget: z.string().optional(),
426
+ options: fieldWidgetOptions,
427
+ sortOrder: z.number().int().min(0).optional(),
428
+ searchable: z.boolean().optional(),
429
+ translatable: z.boolean().optional()
430
+ }).meta({ id: "UpdateFieldBody" });
431
+ const fieldReorderBody = z.object({ fieldSlugs: z.array(z.string().min(1)) }).meta({ id: "FieldReorderBody" });
432
+ const orphanRegisterBody = z.object({
433
+ label: z.string().optional(),
434
+ labelSingular: z.string().optional(),
435
+ description: z.string().optional()
436
+ }).meta({ id: "OrphanRegisterBody" });
437
+ const schemaExportQuery = z.object({ format: z.string().optional() });
438
+ const collectionGetQuery = z.object({ includeFields: z.string().transform((v) => v === "true").optional() });
439
+ const collectionSchema = z.object({
440
+ id: z.string(),
441
+ slug: z.string(),
442
+ label: z.string(),
443
+ labelSingular: z.string().nullable(),
444
+ description: z.string().nullable(),
445
+ icon: z.string().nullable(),
446
+ supports: z.array(z.string()),
447
+ source: z.string().nullable(),
448
+ urlPattern: z.string().nullable(),
449
+ hasSeo: z.boolean(),
450
+ createdAt: z.string(),
451
+ updatedAt: z.string()
452
+ }).meta({ id: "Collection" });
453
+ const fieldSchema = z.object({
454
+ id: z.string(),
455
+ collectionId: z.string(),
456
+ slug: z.string(),
457
+ label: z.string(),
458
+ type: fieldTypeValues,
459
+ required: z.boolean(),
460
+ unique: z.boolean(),
461
+ defaultValue: z.unknown().nullable(),
462
+ validation: z.record(z.string(), z.unknown()).nullable(),
463
+ widget: z.string().nullable(),
464
+ options: z.record(z.string(), z.unknown()).nullable(),
465
+ sortOrder: z.number().int(),
466
+ searchable: z.boolean(),
467
+ translatable: z.boolean(),
468
+ createdAt: z.string(),
469
+ updatedAt: z.string()
470
+ }).meta({ id: "Field" });
471
+ const collectionResponseSchema = z.object({ item: collectionSchema }).meta({ id: "CollectionResponse" });
472
+ const collectionWithFieldsResponseSchema = z.object({ item: collectionSchema.extend({ fields: z.array(fieldSchema) }) }).meta({ id: "CollectionWithFieldsResponse" });
473
+ const collectionListResponseSchema = z.object({ items: z.array(collectionSchema) }).meta({ id: "CollectionListResponse" });
474
+ const fieldResponseSchema = z.object({ item: fieldSchema }).meta({ id: "FieldResponse" });
475
+ const fieldListResponseSchema = z.object({ items: z.array(fieldSchema) }).meta({ id: "FieldListResponse" });
476
+ const orphanedTableSchema = z.object({
477
+ slug: z.string(),
478
+ tableName: z.string(),
479
+ rowCount: z.number().int()
480
+ }).meta({ id: "OrphanedTable" });
481
+ const orphanedTableListResponseSchema = z.object({ items: z.array(orphanedTableSchema) }).meta({ id: "OrphanedTableListResponse" });
482
+
483
+ //#endregion
484
+ //#region src/api/schemas/comments.ts
485
+ const createCommentBody = z.object({
486
+ authorName: z.string().min(1).max(100),
487
+ authorEmail: z.string().email(),
488
+ body: z.string().min(1).max(5e3),
489
+ parentId: z.string().optional(),
490
+ website_url: z.string().optional()
491
+ }).meta({ id: "CreateCommentBody" });
492
+ const commentStatusBody = z.object({ status: z.enum([
493
+ "approved",
494
+ "pending",
495
+ "spam",
496
+ "trash"
497
+ ]) }).meta({ id: "CommentStatusBody" });
498
+ const commentBulkBody = z.object({
499
+ ids: z.array(z.string().min(1)).min(1).max(100),
500
+ action: z.enum([
501
+ "approve",
502
+ "spam",
503
+ "trash",
504
+ "delete"
505
+ ])
506
+ }).meta({ id: "CommentBulkBody" });
507
+ const commentListQuery = z.object({
508
+ status: z.enum([
509
+ "pending",
510
+ "approved",
511
+ "spam",
512
+ "trash"
513
+ ]).optional(),
514
+ collection: z.string().optional(),
515
+ search: z.string().optional(),
516
+ limit: z.coerce.number().int().min(1).max(100).optional().default(50),
517
+ cursor: z.string().max(2048).optional()
518
+ }).meta({ id: "CommentListQuery" });
519
+ const commentStatusValues = z.enum([
520
+ "pending",
521
+ "approved",
522
+ "spam",
523
+ "trash"
524
+ ]);
525
+ /**
526
+ * Public-facing comment (no email/IP).
527
+ *
528
+ * `replies` is recursive in practice (each reply can have replies), but we
529
+ * model it as a single level here to avoid circular type inference issues
530
+ * with tsgo. OpenAPI consumers should treat replies as the same shape.
531
+ */
532
+ const publicCommentSchema = z.object({
533
+ id: z.string(),
534
+ authorName: z.string(),
535
+ isRegisteredUser: z.boolean(),
536
+ body: z.string(),
537
+ parentId: z.string().nullable(),
538
+ createdAt: z.string(),
539
+ replies: z.array(z.any()).optional()
540
+ }).meta({ id: "PublicComment" });
541
+ /** Admin comment with full details */
542
+ const commentSchema = z.object({
543
+ id: z.string(),
544
+ collection: z.string(),
545
+ contentId: z.string(),
546
+ authorName: z.string(),
547
+ authorEmail: z.string(),
548
+ body: z.string(),
549
+ status: commentStatusValues,
550
+ parentId: z.string().nullable(),
551
+ ipHash: z.string().nullable(),
552
+ createdAt: z.string(),
553
+ updatedAt: z.string()
554
+ }).meta({ id: "Comment" });
555
+ const publicCommentListResponseSchema = z.object({
556
+ items: z.array(publicCommentSchema),
557
+ nextCursor: z.string().optional(),
558
+ total: z.number().int()
559
+ }).meta({ id: "PublicCommentListResponse" });
560
+ const adminCommentListResponseSchema = z.object({
561
+ items: z.array(commentSchema),
562
+ nextCursor: z.string().optional()
563
+ }).meta({ id: "AdminCommentListResponse" });
564
+ const commentCountsResponseSchema = z.object({
565
+ pending: z.number().int(),
566
+ approved: z.number().int(),
567
+ spam: z.number().int(),
568
+ trash: z.number().int()
569
+ }).meta({ id: "CommentCountsResponse" });
570
+ const commentBulkResponseSchema = z.object({ affected: z.number().int() }).meta({ id: "CommentBulkResponse" });
571
+
572
+ //#endregion
573
+ //#region src/api/schemas/menus.ts
574
+ const menuItemType = z.string().min(1);
575
+ const safeHref = z.string().trim().refine(isSafeHref, "URL must use http, https, mailto, tel, a relative path, or a fragment identifier");
576
+ const createMenuBody = z.object({
577
+ name: z.string().min(1),
578
+ label: z.string().min(1)
579
+ }).meta({ id: "CreateMenuBody" });
580
+ const updateMenuBody = z.object({ label: z.string().min(1).optional() }).meta({ id: "UpdateMenuBody" });
581
+ const createMenuItemBody = z.object({
582
+ type: menuItemType,
583
+ label: z.string().min(1),
584
+ referenceCollection: z.string().optional(),
585
+ referenceId: z.string().optional(),
586
+ customUrl: safeHref.optional(),
587
+ target: z.string().optional(),
588
+ titleAttr: z.string().optional(),
589
+ cssClasses: z.string().optional(),
590
+ parentId: z.string().optional(),
591
+ sortOrder: z.number().int().min(0).optional()
592
+ }).meta({ id: "CreateMenuItemBody" });
593
+ const updateMenuItemBody = z.object({
594
+ label: z.string().min(1).optional(),
595
+ customUrl: safeHref.optional(),
596
+ target: z.string().optional(),
597
+ titleAttr: z.string().optional(),
598
+ cssClasses: z.string().optional(),
599
+ parentId: z.string().nullish(),
600
+ sortOrder: z.number().int().min(0).optional()
601
+ }).meta({ id: "UpdateMenuItemBody" });
602
+ const menuItemDeleteQuery = z.object({ id: z.string().min(1) });
603
+ const menuItemUpdateQuery = z.object({ id: z.string().min(1) });
604
+ const reorderMenuItemsBody = z.object({ items: z.array(z.object({
605
+ id: z.string().min(1),
606
+ parentId: z.string().nullable(),
607
+ sortOrder: z.number().int().min(0)
608
+ })) }).meta({ id: "ReorderMenuItemsBody" });
609
+ const menuSchema = z.object({
610
+ id: z.string(),
611
+ name: z.string(),
612
+ label: z.string(),
613
+ created_at: z.string(),
614
+ updated_at: z.string()
615
+ }).meta({ id: "Menu" });
616
+ const menuItemSchema = z.object({
617
+ id: z.string(),
618
+ menu_id: z.string(),
619
+ parent_id: z.string().nullable(),
620
+ sort_order: z.number().int(),
621
+ type: z.string(),
622
+ reference_collection: z.string().nullable(),
623
+ reference_id: z.string().nullable(),
624
+ custom_url: z.string().nullable(),
625
+ label: z.string(),
626
+ title_attr: z.string().nullable(),
627
+ target: z.string().nullable(),
628
+ css_classes: z.string().nullable(),
629
+ created_at: z.string()
630
+ }).meta({ id: "MenuItem" });
631
+ const menuListItemSchema = menuSchema.extend({ itemCount: z.number().int() }).meta({ id: "MenuListItem" });
632
+ const menuWithItemsSchema = menuSchema.extend({ items: z.array(menuItemSchema) }).meta({ id: "MenuWithItems" });
633
+
634
+ //#endregion
635
+ //#region src/api/schemas/taxonomies.ts
636
+ /** Collection slug format: lowercase alphanumeric + underscores, starts with letter */
637
+ const collectionSlugPattern = /^[a-z][a-z0-9_]*$/;
638
+ const createTaxonomyDefBody = z.object({
639
+ name: z.string().min(1).max(63).regex(/^[a-z][a-z0-9_]*$/, "Name must be lowercase alphanumeric with underscores"),
640
+ label: z.string().min(1).max(200),
641
+ hierarchical: z.boolean().optional().default(false),
642
+ collections: z.array(z.string().min(1).max(63).regex(collectionSlugPattern, "Invalid collection slug format")).max(100).optional().default([])
643
+ }).meta({ id: "CreateTaxonomyDefBody" });
644
+ const createTermBody = z.object({
645
+ slug: z.string().min(1),
646
+ label: z.string().min(1),
647
+ parentId: z.string().nullish(),
648
+ description: z.string().optional()
649
+ }).meta({ id: "CreateTermBody" });
650
+ const updateTermBody = z.object({
651
+ slug: z.string().min(1).optional(),
652
+ label: z.string().min(1).optional(),
653
+ parentId: z.string().nullish(),
654
+ description: z.string().optional()
655
+ }).meta({ id: "UpdateTermBody" });
656
+ const taxonomyDefSchema = z.object({
657
+ id: z.string(),
658
+ name: z.string(),
659
+ label: z.string(),
660
+ labelSingular: z.string().optional(),
661
+ hierarchical: z.boolean(),
662
+ collections: z.array(z.string())
663
+ }).meta({ id: "TaxonomyDef" });
664
+ const taxonomyListResponseSchema = z.object({ taxonomies: z.array(taxonomyDefSchema) }).meta({ id: "TaxonomyListResponse" });
665
+ const termSchema = z.object({
666
+ id: z.string(),
667
+ name: z.string(),
668
+ slug: z.string(),
669
+ label: z.string(),
670
+ parentId: z.string().nullable(),
671
+ description: z.string().optional()
672
+ }).meta({ id: "Term" });
673
+ const termWithCountSchema = z.object({
674
+ id: z.string(),
675
+ name: z.string(),
676
+ slug: z.string(),
677
+ label: z.string(),
678
+ parentId: z.string().nullable(),
679
+ description: z.string().optional(),
680
+ count: z.number().int(),
681
+ children: z.array(z.lazy(() => termWithCountSchema))
682
+ }).meta({ id: "TermWithCount" });
683
+ const termListResponseSchema = z.object({ terms: z.array(termWithCountSchema) }).meta({ id: "TermListResponse" });
684
+ const termResponseSchema = z.object({ term: termSchema }).meta({ id: "TermResponse" });
685
+ const termGetResponseSchema = z.object({ term: termSchema.extend({
686
+ count: z.number().int(),
687
+ children: z.array(z.object({
688
+ id: z.string(),
689
+ slug: z.string(),
690
+ label: z.string()
691
+ }))
692
+ }) }).meta({ id: "TermGetResponse" });
693
+
694
+ //#endregion
695
+ //#region src/api/schemas/sections.ts
696
+ const sectionSource = z.enum([
697
+ "theme",
698
+ "user",
699
+ "import"
700
+ ]);
701
+ const sectionsListQuery = z.object({
702
+ source: sectionSource.optional(),
703
+ search: z.string().optional(),
704
+ limit: z.coerce.number().int().min(1).max(100).optional().default(50),
705
+ cursor: z.string().max(2048).optional()
706
+ }).meta({ id: "SectionsListQuery" });
707
+ const createSectionBody = z.object({
708
+ slug: z.string().min(1),
709
+ title: z.string().min(1),
710
+ description: z.string().optional(),
711
+ keywords: z.array(z.string()).optional(),
712
+ content: z.array(z.record(z.string(), z.unknown())),
713
+ previewMediaId: z.string().optional(),
714
+ source: z.enum(["user", "import"]).optional(),
715
+ themeId: z.string().optional()
716
+ }).meta({ id: "CreateSectionBody" });
717
+ const updateSectionBody = z.object({
718
+ slug: z.string().min(1).optional(),
719
+ title: z.string().min(1).optional(),
720
+ description: z.string().optional(),
721
+ keywords: z.array(z.string()).optional(),
722
+ content: z.array(z.record(z.string(), z.unknown())).optional(),
723
+ previewMediaId: z.string().nullish()
724
+ }).meta({ id: "UpdateSectionBody" });
725
+ const sectionSchema = z.object({
726
+ id: z.string(),
727
+ slug: z.string(),
728
+ title: z.string(),
729
+ description: z.string().nullable(),
730
+ keywords: z.array(z.string()).nullable(),
731
+ content: z.array(z.record(z.string(), z.unknown())),
732
+ previewMediaId: z.string().nullable(),
733
+ source: z.string(),
734
+ themeId: z.string().nullable(),
735
+ createdAt: z.string(),
736
+ updatedAt: z.string()
737
+ }).meta({ id: "Section" });
738
+ const sectionListResponseSchema = z.object({
739
+ items: z.array(sectionSchema),
740
+ nextCursor: z.string().optional()
741
+ }).meta({ id: "SectionListResponse" });
742
+
743
+ //#endregion
744
+ //#region src/api/schemas/settings.ts
745
+ const mediaReference = z.object({
746
+ mediaId: z.string(),
747
+ alt: z.string().optional()
748
+ });
749
+ const resolvedMediaReference = mediaReference.extend({
750
+ url: z.string().optional(),
751
+ contentType: z.string().optional(),
752
+ width: z.number().optional(),
753
+ height: z.number().optional()
754
+ });
755
+ const socialSettings = z.object({
756
+ twitter: z.string().optional(),
757
+ github: z.string().optional(),
758
+ facebook: z.string().optional(),
759
+ instagram: z.string().optional(),
760
+ linkedin: z.string().optional(),
761
+ youtube: z.string().optional()
762
+ });
763
+ const seoSettings = z.object({
764
+ titleSeparator: z.string().max(10).optional(),
765
+ defaultOgImage: mediaReference.optional(),
766
+ robotsTxt: z.string().max(5e3).optional(),
767
+ googleVerification: z.string().max(100).optional(),
768
+ bingVerification: z.string().max(100).optional()
769
+ });
770
+ const settingsUpdateBody = z.object({
771
+ title: z.string().optional(),
772
+ tagline: z.string().optional(),
773
+ logo: mediaReference.optional(),
774
+ favicon: mediaReference.optional(),
775
+ url: z.union([httpUrl, z.literal("")]).optional(),
776
+ postsPerPage: z.number().int().min(1).max(100).optional(),
777
+ dateFormat: z.string().optional(),
778
+ timezone: z.string().optional(),
779
+ social: socialSettings.optional(),
780
+ seo: seoSettings.optional()
781
+ }).meta({ id: "SettingsUpdateBody" });
782
+ const siteSettingsSchema = z.object({
783
+ title: z.string().optional(),
784
+ tagline: z.string().optional(),
785
+ logo: resolvedMediaReference.optional(),
786
+ favicon: resolvedMediaReference.optional(),
787
+ url: z.string().optional(),
788
+ postsPerPage: z.number().int().optional(),
789
+ dateFormat: z.string().optional(),
790
+ timezone: z.string().optional(),
791
+ social: socialSettings.optional(),
792
+ seo: seoSettings.optional()
793
+ }).meta({ id: "SiteSettings" });
794
+
795
+ //#endregion
796
+ //#region src/api/schemas/search.ts
797
+ const searchQuery = z.object({
798
+ q: z.string().min(1),
799
+ collections: z.string().optional(),
800
+ status: z.string().optional(),
801
+ locale: localeCode.optional(),
802
+ limit: z.coerce.number().int().min(1).max(100).optional()
803
+ }).meta({ id: "SearchQuery" });
804
+ const searchSuggestQuery = z.object({
805
+ q: z.string().min(1),
806
+ collections: z.string().optional(),
807
+ locale: localeCode.optional(),
808
+ limit: z.coerce.number().int().min(1).max(20).optional()
809
+ }).meta({ id: "SearchSuggestQuery" });
810
+ const searchRebuildBody = z.object({ collection: z.string().min(1) }).meta({ id: "SearchRebuildBody" });
811
+ const searchEnableBody = z.object({
812
+ collection: z.string().min(1),
813
+ enabled: z.boolean(),
814
+ weights: z.record(z.string(), z.number()).optional()
815
+ }).meta({ id: "SearchEnableBody" });
816
+ const searchResultSchema = z.object({
817
+ collection: z.string(),
818
+ id: z.string(),
819
+ slug: z.string().nullable(),
820
+ locale: z.string(),
821
+ title: z.string().optional(),
822
+ snippet: z.string().optional(),
823
+ score: z.number()
824
+ }).meta({ id: "SearchResult" });
825
+ const searchResponseSchema = z.object({
826
+ items: z.array(searchResultSchema),
827
+ nextCursor: z.string().optional()
828
+ }).meta({ id: "SearchResponse" });
829
+
830
+ //#endregion
831
+ //#region src/api/schemas/users.ts
832
+ const usersListQuery = z.object({
833
+ search: z.string().optional(),
834
+ role: z.string().optional(),
835
+ cursor: z.string().max(2048).optional(),
836
+ limit: z.coerce.number().int().min(1).max(100).optional().default(50)
837
+ }).meta({ id: "UsersListQuery" });
838
+ const userUpdateBody = z.object({
839
+ name: z.string().optional(),
840
+ email: z.string().email().optional(),
841
+ role: roleLevel.optional()
842
+ }).meta({ id: "UserUpdateBody" });
843
+ const allowedDomainCreateBody = z.object({
844
+ domain: z.string().min(1),
845
+ defaultRole: roleLevel
846
+ }).meta({ id: "AllowedDomainCreateBody" });
847
+ const allowedDomainUpdateBody = z.object({
848
+ enabled: z.boolean().optional(),
849
+ defaultRole: roleLevel.optional()
850
+ }).meta({ id: "AllowedDomainUpdateBody" });
851
+ const userSchema = z.object({
852
+ id: z.string(),
853
+ email: z.string(),
854
+ name: z.string().nullable(),
855
+ avatarUrl: z.string().nullable(),
856
+ role: z.number().int(),
857
+ emailVerified: z.boolean(),
858
+ disabled: z.boolean(),
859
+ createdAt: z.string(),
860
+ updatedAt: z.string(),
861
+ lastLogin: z.string().nullable(),
862
+ credentialCount: z.number().int().optional(),
863
+ oauthProviders: z.array(z.string()).optional()
864
+ }).meta({ id: "User" });
865
+ const userListResponseSchema = z.object({
866
+ items: z.array(userSchema),
867
+ nextCursor: z.string().optional()
868
+ }).meta({ id: "UserListResponse" });
869
+ const userDetailSchema = z.object({
870
+ id: z.string(),
871
+ email: z.string(),
872
+ name: z.string().nullable(),
873
+ avatarUrl: z.string().nullable(),
874
+ role: z.number().int(),
875
+ emailVerified: z.boolean(),
876
+ disabled: z.boolean(),
877
+ createdAt: z.string(),
878
+ updatedAt: z.string(),
879
+ lastLogin: z.string().nullable(),
880
+ credentials: z.array(z.object({
881
+ id: z.string(),
882
+ name: z.string().nullable(),
883
+ deviceType: z.string().nullable(),
884
+ createdAt: z.string(),
885
+ lastUsedAt: z.string()
886
+ })),
887
+ oauthAccounts: z.array(z.object({
888
+ provider: z.string(),
889
+ createdAt: z.string()
890
+ }))
891
+ }).meta({ id: "UserDetail" });
892
+
893
+ //#endregion
894
+ //#region src/api/schemas/widgets.ts
895
+ const widgetType = z.enum([
896
+ "content",
897
+ "menu",
898
+ "component"
899
+ ]);
900
+ const createWidgetAreaBody = z.object({
901
+ name: z.string().min(1),
902
+ label: z.string().min(1),
903
+ description: z.string().optional()
904
+ }).meta({ id: "CreateWidgetAreaBody" });
905
+ const createWidgetBody = z.object({
906
+ type: widgetType,
907
+ title: z.string().optional(),
908
+ content: z.array(z.record(z.string(), z.unknown())).optional(),
909
+ menuName: z.string().optional(),
910
+ componentId: z.string().optional(),
911
+ componentProps: z.record(z.string(), z.unknown()).optional()
912
+ }).meta({ id: "CreateWidgetBody" });
913
+ const updateWidgetBody = z.object({
914
+ type: widgetType.optional(),
915
+ title: z.string().optional(),
916
+ content: z.array(z.record(z.string(), z.unknown())).optional(),
917
+ menuName: z.string().optional(),
918
+ componentId: z.string().optional(),
919
+ componentProps: z.record(z.string(), z.unknown()).optional()
920
+ }).meta({ id: "UpdateWidgetBody" });
921
+ const reorderWidgetsBody = z.object({ widgetIds: z.array(z.string().min(1)) }).meta({ id: "ReorderWidgetsBody" });
922
+ const widgetAreaSchema = z.object({
923
+ id: z.string(),
924
+ name: z.string(),
925
+ label: z.string(),
926
+ description: z.string().nullable(),
927
+ created_at: z.string(),
928
+ updated_at: z.string()
929
+ }).meta({ id: "WidgetArea" });
930
+ const widgetSchema = z.object({
931
+ id: z.string(),
932
+ type: widgetType,
933
+ title: z.string().optional(),
934
+ content: z.array(z.record(z.string(), z.unknown())).optional(),
935
+ menuName: z.string().optional(),
936
+ componentId: z.string().optional(),
937
+ componentProps: z.record(z.string(), z.unknown()).optional()
938
+ }).meta({ id: "Widget" });
939
+ const widgetAreaWithWidgetsSchema = widgetAreaSchema.extend({ widgets: z.array(widgetSchema) }).meta({ id: "WidgetAreaWithWidgets" });
940
+ const widgetAreaWithWidgetsAndCountSchema = widgetAreaWithWidgetsSchema.extend({ widgetCount: z.number().int() }).meta({ id: "WidgetAreaWithWidgetsAndCount" });
941
+
942
+ //#endregion
943
+ //#region src/api/schemas/redirects.ts
944
+ const redirectType = z.coerce.number().int().refine((n) => [
945
+ 301,
946
+ 302,
947
+ 307,
948
+ 308
949
+ ].includes(n), { message: "Redirect type must be 301, 302, 307, or 308" });
950
+ /** Matches CR or LF characters */
951
+ const CRLF = /[\r\n]/;
952
+ /** Path must start with / and not be protocol-relative, contain no CRLF, and no path traversal */
953
+ 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) => {
954
+ try {
955
+ return !decodeURIComponent(s).split("/").includes("..");
956
+ } catch {
957
+ return false;
958
+ }
959
+ }, { message: "URL must not contain path traversal segments" });
960
+ const createRedirectBody = z.object({
961
+ source: urlPath,
962
+ destination: urlPath,
963
+ type: redirectType.optional().default(301),
964
+ enabled: z.boolean().optional().default(true),
965
+ groupName: z.string().nullish()
966
+ }).meta({ id: "CreateRedirectBody" });
967
+ const updateRedirectBody = z.object({
968
+ source: urlPath.optional(),
969
+ destination: urlPath.optional(),
970
+ type: redirectType.optional(),
971
+ enabled: z.boolean().optional(),
972
+ groupName: z.string().nullish()
973
+ }).refine((o) => Object.values(o).some((v) => v !== void 0), { message: "At least one field must be provided" }).meta({ id: "UpdateRedirectBody" });
974
+ const redirectsListQuery = cursorPaginationQuery.extend({
975
+ search: z.string().optional(),
976
+ group: z.string().optional(),
977
+ enabled: z.enum(["true", "false"]).transform((v) => v === "true").optional(),
978
+ auto: z.enum(["true", "false"]).transform((v) => v === "true").optional()
979
+ }).meta({ id: "RedirectsListQuery" });
980
+ const notFoundListQuery = cursorPaginationQuery.extend({ search: z.string().optional() }).meta({ id: "NotFoundListQuery" });
981
+ const notFoundSummaryQuery = z.object({ limit: z.coerce.number().int().min(1).max(100).optional().default(50) });
982
+ const notFoundPruneBody = z.object({ olderThan: z.string().datetime({ message: "olderThan must be an ISO 8601 datetime" }) }).meta({ id: "NotFoundPruneBody" });
983
+ const redirectSchema = z.object({
984
+ id: z.string(),
985
+ source: z.string(),
986
+ destination: z.string(),
987
+ type: z.number().int(),
988
+ isPattern: z.boolean(),
989
+ enabled: z.boolean(),
990
+ hits: z.number().int(),
991
+ lastHitAt: z.string().nullable(),
992
+ groupName: z.string().nullable(),
993
+ auto: z.boolean(),
994
+ createdAt: z.string(),
995
+ updatedAt: z.string()
996
+ }).meta({ id: "Redirect" });
997
+ const redirectListResponseSchema = z.object({
998
+ items: z.array(redirectSchema),
999
+ nextCursor: z.string().optional(),
1000
+ loopRedirectIds: z.array(z.string()).optional()
1001
+ }).meta({ id: "RedirectListResponse" });
1002
+ const notFoundEntrySchema = z.object({
1003
+ id: z.string(),
1004
+ path: z.string(),
1005
+ referrer: z.string().nullable(),
1006
+ userAgent: z.string().nullable(),
1007
+ ip: z.string().nullable(),
1008
+ createdAt: z.string()
1009
+ }).meta({ id: "NotFoundEntry" });
1010
+ const notFoundListResponseSchema = z.object({
1011
+ items: z.array(notFoundEntrySchema),
1012
+ nextCursor: z.string().optional()
1013
+ }).meta({ id: "NotFoundListResponse" });
1014
+ const notFoundSummarySchema = z.object({
1015
+ path: z.string(),
1016
+ count: z.number().int(),
1017
+ lastSeen: z.string(),
1018
+ topReferrer: z.string().nullable()
1019
+ }).meta({ id: "NotFoundSummary" });
1020
+ const notFoundSummaryResponseSchema = z.object({ items: z.array(notFoundSummarySchema) }).meta({ id: "NotFoundSummaryResponse" });
1021
+
1022
+ //#endregion
1023
+ export { menuItemDeleteQuery as $, contentPreviewUrlBody as $t, searchRebuildBody as A, orphanedTableListResponseSchema as At, updateSectionBody as B, mediaItemSchema as Bt, userDetailSchema as C, deleteResponseSchema as Cn, createCollectionBody as Ct, usersListQuery as D, roleLevel as Dn, fieldResponseSchema as Dt, userUpdateBody as E, offsetPaginationQuery as En, fieldReorderBody as Et, siteSettingsSchema as F, DEFAULT_MAX_UPLOAD_SIZE as Ft, termGetResponseSchema as G, mediaUpdateBody as Gt, createTermBody as H, mediaListResponseSchema as Ht, createSectionBody as I, formatFileSize as It, termSchema as J, contentCompareResponseSchema as Jt, termListResponseSchema as K, mediaUploadUrlBody as Kt, sectionListResponseSchema as L, mediaConfirmBody as Lt, searchResultSchema as M, schemaExportQuery as Mt, searchSuggestQuery as N, updateCollectionBody as Nt, searchEnableBody as O, slugPattern as On, fieldSchema as Ot, settingsUpdateBody as P, updateFieldBody as Pt, createMenuItemBody as Q, contentListResponseSchema as Qt, sectionSchema as R, mediaConfirmResponseSchema as Rt, allowedDomainUpdateBody as S, cursorPaginationQuery as Sn, collectionWithFieldsResponseSchema as St, userSchema as T, localeCode as Tn, fieldListResponseSchema as Tt, taxonomyDefSchema as U, mediaProviderListQuery as Ut, createTaxonomyDefBody as V, mediaListQuery as Vt, taxonomyListResponseSchema as W, mediaResponseSchema as Wt, updateTermBody as X, contentItemSchema as Xt, termWithCountSchema as Y, contentCreateBody as Yt, createMenuBody as Z, contentListQuery as Zt, widgetAreaSchema as _, bylinesListQuery as _n, publicCommentSchema as _t, notFoundPruneBody as a, contentTermsBody as an, reorderMenuItemsBody as at, widgetSchema as b, apiErrorSchema as bn, collectionResponseSchema as bt, notFoundSummarySchema as c, contentTrashQuery as cn, adminCommentListResponseSchema as ct, redirectsListQuery as d, trashedContentListResponseSchema as dn, commentCountsResponseSchema as dt, contentPublishBody as en, menuItemSchema as et, updateRedirectBody as f, bylineCreateBody as fn, commentListQuery as ft, updateWidgetBody as g, bylineUpdateBody as gn, publicCommentListResponseSchema as gt, reorderWidgetsBody as h, bylineSummarySchema as hn, createCommentBody as ht, notFoundListResponseSchema as i, contentSeoSchema as in, menuWithItemsSchema as it, searchResponseSchema as j, orphanedTableSchema as jt, searchQuery as k, successEnvelope as kn, orphanRegisterBody as kt, redirectListResponseSchema as l, contentUpdateBody as ln, commentBulkBody as lt, createWidgetBody as m, bylineListResponseSchema as mn, commentStatusBody as mt, notFoundEntrySchema as n, contentScheduleBody as nn, menuListItemSchema as nt, notFoundSummaryQuery as o, contentTranslationSchema as on, updateMenuBody as ot, createWidgetAreaBody as p, bylineCreditSchema as pn, commentSchema as pt, termResponseSchema as q, mediaUploadUrlResponseSchema as qt, notFoundListQuery as r, contentSeoInput as rn, menuSchema as rt, notFoundSummaryResponseSchema as s, contentTranslationsResponseSchema as sn, updateMenuItemBody as st, createRedirectBody as t, contentResponseSchema as tn, menuItemUpdateQuery as tt, redirectSchema as u, trashedContentItemSchema as un, commentBulkResponseSchema as ut, widgetAreaWithWidgetsAndCountSchema as v, contentBylineInputSchema as vn, collectionGetQuery as vt, userListResponseSchema as w, httpUrl as wn, createFieldBody as wt, allowedDomainCreateBody as x, countResponseSchema as xn, collectionSchema as xt, widgetAreaWithWidgetsSchema as y, VALID_ROLE_LEVELS as yn, collectionListResponseSchema as yt, sectionsListQuery as z, mediaExistingResponseSchema as zt };