dineway 0.1.8 → 0.1.11

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