emdash 0.37.0 → 0.39.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1445) hide show
  1. package/dist/action-token-On1sot_c.mjs +26 -0
  2. package/dist/action-token-On1sot_c.mjs.map +1 -0
  3. package/dist/activation-CaMfdBt1.mjs +382 -0
  4. package/dist/activation-CaMfdBt1.mjs.map +1 -0
  5. package/dist/adapters-Cq10K4_c.d.mts +171 -0
  6. package/dist/adapters-Cq10K4_c.d.mts.map +1 -0
  7. package/dist/after-PcEvMY_6.mjs +96 -0
  8. package/dist/after-PcEvMY_6.mjs.map +1 -0
  9. package/dist/allowed-origins-1Sa-2wZK.mjs +116 -0
  10. package/dist/allowed-origins-1Sa-2wZK.mjs.map +1 -0
  11. package/dist/api/route-utils.d.mts +4 -3
  12. package/dist/api/route-utils.d.mts.map +1 -1
  13. package/dist/api/route-utils.mjs +45 -29
  14. package/dist/api/route-utils.mjs.map +1 -1
  15. package/dist/api/schemas/index.d.mts +2 -2
  16. package/dist/api/schemas/index.mjs +7 -6
  17. package/dist/api-DmjKxPCY.mjs +4831 -0
  18. package/dist/api-DmjKxPCY.mjs.map +1 -0
  19. package/dist/api-tokens-BIXItFKV.mjs +163 -0
  20. package/dist/api-tokens-BIXItFKV.mjs.map +1 -0
  21. package/dist/apply-drpfmqrR.mjs +1005 -0
  22. package/dist/apply-drpfmqrR.mjs.map +1 -0
  23. package/dist/artifact-fetch-COiMhVgk.mjs +813 -0
  24. package/dist/artifact-fetch-COiMhVgk.mjs.map +1 -0
  25. package/dist/astro/index.d.mts +14 -12
  26. package/dist/astro/index.d.mts.map +1 -1
  27. package/dist/astro/index.mjs +123 -13
  28. package/dist/astro/index.mjs.map +1 -1
  29. package/dist/astro/middleware/auth.d.mts +12 -10
  30. package/dist/astro/middleware/auth.d.mts.map +1 -1
  31. package/dist/astro/middleware/auth.mjs +20 -11
  32. package/dist/astro/middleware/auth.mjs.map +1 -1
  33. package/dist/astro/middleware/media-usage-write-fence.mjs +5 -5
  34. package/dist/astro/middleware/redirect.mjs +11 -9
  35. package/dist/astro/middleware/redirect.mjs.map +1 -1
  36. package/dist/astro/middleware/request-context.d.mts +1 -1
  37. package/dist/astro/middleware/request-context.d.mts.map +1 -1
  38. package/dist/astro/middleware/request-context.mjs +154 -28
  39. package/dist/astro/middleware/request-context.mjs.map +1 -1
  40. package/dist/astro/middleware/setup.mjs +1 -1
  41. package/dist/astro/middleware.d.mts +13 -10
  42. package/dist/astro/middleware.d.mts.map +1 -1
  43. package/dist/astro/middleware.mjs +122 -3041
  44. package/dist/astro/middleware.mjs.map +1 -1
  45. package/dist/astro/routes/api/admin/allowed-domains/_domain_.mjs +10 -9
  46. package/dist/astro/routes/api/admin/allowed-domains/_domain_.mjs.map +1 -1
  47. package/dist/astro/routes/api/admin/allowed-domains/index.mjs +10 -9
  48. package/dist/astro/routes/api/admin/allowed-domains/index.mjs.map +1 -1
  49. package/dist/astro/routes/api/admin/api-tokens/_id_.mjs +5 -5
  50. package/dist/astro/routes/api/admin/api-tokens/index.mjs +6 -6
  51. package/dist/astro/routes/api/admin/byline-fields/_slug_/usage.mjs +6 -6
  52. package/dist/astro/routes/api/admin/byline-fields/_slug_.mjs +13 -12
  53. package/dist/astro/routes/api/admin/byline-fields/_slug_.mjs.map +1 -1
  54. package/dist/astro/routes/api/admin/byline-fields/index.mjs +13 -12
  55. package/dist/astro/routes/api/admin/byline-fields/index.mjs.map +1 -1
  56. package/dist/astro/routes/api/admin/byline-fields/reorder.mjs +13 -12
  57. package/dist/astro/routes/api/admin/byline-fields/reorder.mjs.map +1 -1
  58. package/dist/astro/routes/api/admin/bylines/_id_/index.mjs +22 -21
  59. package/dist/astro/routes/api/admin/bylines/_id_/index.mjs.map +1 -1
  60. package/dist/astro/routes/api/admin/bylines/_id_/translations.mjs +22 -21
  61. package/dist/astro/routes/api/admin/bylines/_id_/translations.mjs.map +1 -1
  62. package/dist/astro/routes/api/admin/bylines/index.mjs +22 -21
  63. package/dist/astro/routes/api/admin/bylines/index.mjs.map +1 -1
  64. package/dist/astro/routes/api/admin/comments/_id_/status.d.mts.map +1 -1
  65. package/dist/astro/routes/api/admin/comments/_id_/status.mjs +21 -54
  66. package/dist/astro/routes/api/admin/comments/_id_/status.mjs.map +1 -1
  67. package/dist/astro/routes/api/admin/comments/_id_.mjs +8 -8
  68. package/dist/astro/routes/api/admin/comments/bulk.mjs +15 -14
  69. package/dist/astro/routes/api/admin/comments/bulk.mjs.map +1 -1
  70. package/dist/astro/routes/api/admin/comments/counts.mjs +8 -8
  71. package/dist/astro/routes/api/admin/comments/index.mjs +15 -14
  72. package/dist/astro/routes/api/admin/comments/index.mjs.map +1 -1
  73. package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.mjs +6 -6
  74. package/dist/astro/routes/api/admin/hooks/exclusive/index.mjs +5 -5
  75. package/dist/astro/routes/api/admin/media-usage/activation.mjs +17 -16
  76. package/dist/astro/routes/api/admin/media-usage/activation.mjs.map +1 -1
  77. package/dist/astro/routes/api/admin/media-usage/collection-deletions/index.mjs +19 -18
  78. package/dist/astro/routes/api/admin/media-usage/collection-deletions/index.mjs.map +1 -1
  79. package/dist/astro/routes/api/admin/media-usage/collection-deletions/retry.mjs +19 -18
  80. package/dist/astro/routes/api/admin/media-usage/collection-deletions/retry.mjs.map +1 -1
  81. package/dist/astro/routes/api/admin/media-usage/progress.mjs +17 -17
  82. package/dist/astro/routes/api/admin/media-usage/repair.mjs +21 -20
  83. package/dist/astro/routes/api/admin/media-usage/repair.mjs.map +1 -1
  84. package/dist/astro/routes/api/admin/media-usage/work/index.mjs +19 -18
  85. package/dist/astro/routes/api/admin/media-usage/work/index.mjs.map +1 -1
  86. package/dist/astro/routes/api/admin/media-usage/work/retry.mjs +19 -18
  87. package/dist/astro/routes/api/admin/media-usage/work/retry.mjs.map +1 -1
  88. package/dist/astro/routes/api/admin/oauth-clients/_id_.mjs +5 -5
  89. package/dist/astro/routes/api/admin/oauth-clients/index.mjs +5 -5
  90. package/dist/astro/routes/api/admin/plugins/_id_/disable.d.mts.map +1 -1
  91. package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs +9 -66
  92. package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs.map +1 -1
  93. package/dist/astro/routes/api/admin/plugins/_id_/enable.d.mts.map +1 -1
  94. package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs +9 -69
  95. package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs.map +1 -1
  96. package/dist/astro/routes/api/admin/plugins/_id_/index.mjs +66 -59
  97. package/dist/astro/routes/api/admin/plugins/_id_/index.mjs.map +1 -1
  98. package/dist/astro/routes/api/admin/plugins/_id_/mcp.mjs +6 -6
  99. package/dist/astro/routes/api/admin/plugins/_id_/settings.mjs +65 -59
  100. package/dist/astro/routes/api/admin/plugins/_id_/settings.mjs.map +1 -1
  101. package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs +70 -61
  102. package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs.map +1 -1
  103. package/dist/astro/routes/api/admin/plugins/_id_/update.d.mts.map +1 -1
  104. package/dist/astro/routes/api/admin/plugins/_id_/update.mjs +87 -63
  105. package/dist/astro/routes/api/admin/plugins/_id_/update.mjs.map +1 -1
  106. package/dist/astro/routes/api/admin/plugins/index.mjs +66 -59
  107. package/dist/astro/routes/api/admin/plugins/index.mjs.map +1 -1
  108. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.mjs +4 -4
  109. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs +65 -59
  110. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs.map +1 -1
  111. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.d.mts.map +1 -1
  112. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs +85 -63
  113. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs.map +1 -1
  114. package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs +65 -59
  115. package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs.map +1 -1
  116. package/dist/astro/routes/api/admin/plugins/registry/_id_/uninstall.mjs +70 -61
  117. package/dist/astro/routes/api/admin/plugins/registry/_id_/uninstall.mjs.map +1 -1
  118. package/dist/astro/routes/api/admin/plugins/registry/_id_/update.d.mts.map +1 -1
  119. package/dist/astro/routes/api/admin/plugins/registry/_id_/update.mjs +90 -66
  120. package/dist/astro/routes/api/admin/plugins/registry/_id_/update.mjs.map +1 -1
  121. package/dist/astro/routes/api/admin/plugins/registry/artifact.d.mts.map +1 -1
  122. package/dist/astro/routes/api/admin/plugins/registry/artifact.mjs +9 -7
  123. package/dist/astro/routes/api/admin/plugins/registry/artifact.mjs.map +1 -1
  124. package/dist/astro/routes/api/admin/plugins/registry/install.d.mts.map +1 -1
  125. package/dist/astro/routes/api/admin/plugins/registry/install.mjs +77 -63
  126. package/dist/astro/routes/api/admin/plugins/registry/install.mjs.map +1 -1
  127. package/dist/astro/routes/api/admin/plugins/registry/verify.d.mts.map +1 -1
  128. package/dist/astro/routes/api/admin/plugins/registry/verify.mjs +67 -61
  129. package/dist/astro/routes/api/admin/plugins/registry/verify.mjs.map +1 -1
  130. package/dist/astro/routes/api/admin/plugins/updates.d.mts.map +1 -1
  131. package/dist/astro/routes/api/admin/plugins/updates.mjs +66 -60
  132. package/dist/astro/routes/api/admin/plugins/updates.mjs.map +1 -1
  133. package/dist/astro/routes/api/admin/scheduled-policy-rejections/_collection_/_id_.d.mts +8 -0
  134. package/dist/astro/routes/api/admin/scheduled-policy-rejections/_collection_/_id_.d.mts.map +1 -0
  135. package/dist/astro/routes/api/admin/scheduled-policy-rejections/_collection_/_id_.mjs +27 -0
  136. package/dist/astro/routes/api/admin/scheduled-policy-rejections/_collection_/_id_.mjs.map +1 -0
  137. package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs +65 -59
  138. package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs.map +1 -1
  139. package/dist/astro/routes/api/admin/themes/marketplace/_id_/thumbnail.mjs +4 -4
  140. package/dist/astro/routes/api/admin/themes/marketplace/index.mjs +65 -59
  141. package/dist/astro/routes/api/admin/themes/marketplace/index.mjs.map +1 -1
  142. package/dist/astro/routes/api/admin/users/_id_/disable.mjs +4 -4
  143. package/dist/astro/routes/api/admin/users/_id_/enable.mjs +3 -3
  144. package/dist/astro/routes/api/admin/users/_id_/index.mjs +11 -10
  145. package/dist/astro/routes/api/admin/users/_id_/index.mjs.map +1 -1
  146. package/dist/astro/routes/api/admin/users/_id_/send-recovery.mjs +5 -5
  147. package/dist/astro/routes/api/admin/users/index.mjs +10 -9
  148. package/dist/astro/routes/api/admin/users/index.mjs.map +1 -1
  149. package/dist/astro/routes/api/auth/dev-bypass.mjs +5 -5
  150. package/dist/astro/routes/api/auth/invite/accept.mjs +3 -3
  151. package/dist/astro/routes/api/auth/invite/complete.mjs +15 -14
  152. package/dist/astro/routes/api/auth/invite/complete.mjs.map +1 -1
  153. package/dist/astro/routes/api/auth/invite/index.mjs +12 -11
  154. package/dist/astro/routes/api/auth/invite/index.mjs.map +1 -1
  155. package/dist/astro/routes/api/auth/invite/register-options.mjs +14 -13
  156. package/dist/astro/routes/api/auth/invite/register-options.mjs.map +1 -1
  157. package/dist/astro/routes/api/auth/logout.mjs +4 -4
  158. package/dist/astro/routes/api/auth/magic-link/send.mjs +14 -13
  159. package/dist/astro/routes/api/auth/magic-link/send.mjs.map +1 -1
  160. package/dist/astro/routes/api/auth/magic-link/verify.mjs +4 -4
  161. package/dist/astro/routes/api/auth/me.mjs +11 -10
  162. package/dist/astro/routes/api/auth/me.mjs.map +1 -1
  163. package/dist/astro/routes/api/auth/mode.mjs +4 -4
  164. package/dist/astro/routes/api/auth/oauth/_provider_/callback.mjs +4 -4
  165. package/dist/astro/routes/api/auth/oauth/_provider_.mjs +2 -2
  166. package/dist/astro/routes/api/auth/passkey/_id_.mjs +10 -9
  167. package/dist/astro/routes/api/auth/passkey/_id_.mjs.map +1 -1
  168. package/dist/astro/routes/api/auth/passkey/index.mjs +3 -3
  169. package/dist/astro/routes/api/auth/passkey/options.mjs +16 -15
  170. package/dist/astro/routes/api/auth/passkey/options.mjs.map +1 -1
  171. package/dist/astro/routes/api/auth/passkey/register/options.mjs +14 -13
  172. package/dist/astro/routes/api/auth/passkey/register/options.mjs.map +1 -1
  173. package/dist/astro/routes/api/auth/passkey/register/verify.mjs +15 -14
  174. package/dist/astro/routes/api/auth/passkey/register/verify.mjs.map +1 -1
  175. package/dist/astro/routes/api/auth/passkey/verify.mjs +15 -14
  176. package/dist/astro/routes/api/auth/passkey/verify.mjs.map +1 -1
  177. package/dist/astro/routes/api/auth/signup/complete.mjs +15 -14
  178. package/dist/astro/routes/api/auth/signup/complete.mjs.map +1 -1
  179. package/dist/astro/routes/api/auth/signup/request.mjs +14 -13
  180. package/dist/astro/routes/api/auth/signup/request.mjs.map +1 -1
  181. package/dist/astro/routes/api/auth/signup/verify.mjs +3 -3
  182. package/dist/astro/routes/api/comments/_collection_/_contentId_/index.d.mts.map +1 -1
  183. package/dist/astro/routes/api/comments/_collection_/_contentId_/index.mjs +15 -211
  184. package/dist/astro/routes/api/comments/_collection_/_contentId_/index.mjs.map +1 -1
  185. package/dist/astro/routes/api/comments/_collection_/_contentId_/reactions.mjs +18 -17
  186. package/dist/astro/routes/api/comments/_collection_/_contentId_/reactions.mjs.map +1 -1
  187. package/dist/astro/routes/api/content/_collection_/_id_/compare.mjs +4 -4
  188. package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.d.mts.map +1 -1
  189. package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs +17 -11
  190. package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs.map +1 -1
  191. package/dist/astro/routes/api/content/_collection_/_id_/duplicate.mjs +5 -5
  192. package/dist/astro/routes/api/content/_collection_/_id_/lock.d.mts +10 -0
  193. package/dist/astro/routes/api/content/_collection_/_id_/lock.d.mts.map +1 -0
  194. package/dist/astro/routes/api/content/_collection_/_id_/lock.mjs +67 -0
  195. package/dist/astro/routes/api/content/_collection_/_id_/lock.mjs.map +1 -0
  196. package/dist/astro/routes/api/content/_collection_/_id_/permanent.mjs +4 -4
  197. package/dist/astro/routes/api/content/_collection_/_id_/plugin-extensions/_pluginId_/_kind_/_extensionId_.d.mts +8 -0
  198. package/dist/astro/routes/api/content/_collection_/_id_/plugin-extensions/_pluginId_/_kind_/_extensionId_.d.mts.map +1 -0
  199. package/dist/astro/routes/api/content/_collection_/_id_/plugin-extensions/_pluginId_/_kind_/_extensionId_.mjs +35 -0
  200. package/dist/astro/routes/api/content/_collection_/_id_/plugin-extensions/_pluginId_/_kind_/_extensionId_.mjs.map +1 -0
  201. package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs +16 -15
  202. package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs.map +1 -1
  203. package/dist/astro/routes/api/content/_collection_/_id_/publish.d.mts +9 -2
  204. package/dist/astro/routes/api/content/_collection_/_id_/publish.d.mts.map +1 -1
  205. package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs +28 -16
  206. package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs.map +1 -1
  207. package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/children.mjs +27 -23
  208. package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/children.mjs.map +1 -1
  209. package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/parents.mjs +27 -23
  210. package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/parents.mjs.map +1 -1
  211. package/dist/astro/routes/api/content/_collection_/_id_/restore.mjs +5 -5
  212. package/dist/astro/routes/api/content/_collection_/_id_/revisions.mjs +4 -4
  213. package/dist/astro/routes/api/content/_collection_/_id_/schedule.d.mts.map +1 -1
  214. package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs +27 -12
  215. package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs.map +1 -1
  216. package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs +23 -20
  217. package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs.map +1 -1
  218. package/dist/astro/routes/api/content/_collection_/_id_/translations.mjs +4 -4
  219. package/dist/astro/routes/api/content/_collection_/_id_/unpublish.d.mts.map +1 -1
  220. package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs +25 -12
  221. package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs.map +1 -1
  222. package/dist/astro/routes/api/content/_collection_/_id_.d.mts.map +1 -1
  223. package/dist/astro/routes/api/content/_collection_/_id_.mjs +27 -14
  224. package/dist/astro/routes/api/content/_collection_/_id_.mjs.map +1 -1
  225. package/dist/astro/routes/api/content/_collection_/authors.mjs +4 -4
  226. package/dist/astro/routes/api/content/_collection_/index.mjs +18 -12
  227. package/dist/astro/routes/api/content/_collection_/index.mjs.map +1 -1
  228. package/dist/astro/routes/api/content/_collection_/trash.mjs +11 -10
  229. package/dist/astro/routes/api/content/_collection_/trash.mjs.map +1 -1
  230. package/dist/astro/routes/api/dashboard.mjs +14 -12
  231. package/dist/astro/routes/api/dashboard.mjs.map +1 -1
  232. package/dist/astro/routes/api/dev/emails.mjs +4 -4
  233. package/dist/astro/routes/api/health.d.mts +8 -0
  234. package/dist/astro/routes/api/health.d.mts.map +1 -0
  235. package/dist/astro/routes/api/health.mjs +21 -0
  236. package/dist/astro/routes/api/health.mjs.map +1 -0
  237. package/dist/astro/routes/api/import/probe.d.mts +3 -3
  238. package/dist/astro/routes/api/import/probe.mjs +25 -23
  239. package/dist/astro/routes/api/import/probe.mjs.map +1 -1
  240. package/dist/astro/routes/api/import/wordpress/analyze.mjs +5 -5
  241. package/dist/astro/routes/api/import/wordpress/execute.d.mts +13 -11
  242. package/dist/astro/routes/api/import/wordpress/execute.d.mts.map +1 -1
  243. package/dist/astro/routes/api/import/wordpress/execute.mjs +20 -19
  244. package/dist/astro/routes/api/import/wordpress/execute.mjs.map +1 -1
  245. package/dist/astro/routes/api/import/wordpress/media.d.mts +12 -10
  246. package/dist/astro/routes/api/import/wordpress/media.d.mts.map +1 -1
  247. package/dist/astro/routes/api/import/wordpress/media.mjs +15 -14
  248. package/dist/astro/routes/api/import/wordpress/media.mjs.map +1 -1
  249. package/dist/astro/routes/api/import/wordpress/prepare.mjs +14 -13
  250. package/dist/astro/routes/api/import/wordpress/prepare.mjs.map +1 -1
  251. package/dist/astro/routes/api/import/wordpress/rewrite-urls.d.mts +13 -11
  252. package/dist/astro/routes/api/import/wordpress/rewrite-urls.d.mts.map +1 -1
  253. package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs +18 -17
  254. package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs.map +1 -1
  255. package/dist/astro/routes/api/import/wordpress-plugin/analyze.d.mts +1 -1
  256. package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs +25 -23
  257. package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs.map +1 -1
  258. package/dist/astro/routes/api/import/wordpress-plugin/callback.mjs +1 -1
  259. package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts +13 -11
  260. package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts.map +1 -1
  261. package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs +36 -33
  262. package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs.map +1 -1
  263. package/dist/astro/routes/api/manifest.mjs +17 -9
  264. package/dist/astro/routes/api/manifest.mjs.map +1 -1
  265. package/dist/astro/routes/api/mcp.d.mts.map +1 -1
  266. package/dist/astro/routes/api/mcp.mjs +192 -110
  267. package/dist/astro/routes/api/mcp.mjs.map +1 -1
  268. package/dist/astro/routes/api/media/_id_/confirm.mjs +15 -14
  269. package/dist/astro/routes/api/media/_id_/confirm.mjs.map +1 -1
  270. package/dist/astro/routes/api/media/_id_/replace.mjs +12 -11
  271. package/dist/astro/routes/api/media/_id_/replace.mjs.map +1 -1
  272. package/dist/astro/routes/api/media/_id_/upload.mjs +8 -8
  273. package/dist/astro/routes/api/media/_id_/usage.mjs +23 -22
  274. package/dist/astro/routes/api/media/_id_/usage.mjs.map +1 -1
  275. package/dist/astro/routes/api/media/_id_.mjs +22 -21
  276. package/dist/astro/routes/api/media/_id_.mjs.map +1 -1
  277. package/dist/astro/routes/api/media/asset/_id_/_filename_.d.mts +8 -0
  278. package/dist/astro/routes/api/media/asset/_id_/_filename_.d.mts.map +1 -0
  279. package/dist/astro/routes/api/media/asset/_id_/_filename_.mjs +52 -0
  280. package/dist/astro/routes/api/media/asset/_id_/_filename_.mjs.map +1 -0
  281. package/dist/astro/routes/api/media/file/_...key_.mjs +3 -3
  282. package/dist/astro/routes/api/media/folders/_id_.mjs +12 -11
  283. package/dist/astro/routes/api/media/folders/_id_.mjs.map +1 -1
  284. package/dist/astro/routes/api/media/folders/index.mjs +12 -11
  285. package/dist/astro/routes/api/media/folders/index.mjs.map +1 -1
  286. package/dist/astro/routes/api/media/providers/_providerId_/_itemId_.mjs +4 -4
  287. package/dist/astro/routes/api/media/providers/_providerId_/index.mjs +4 -4
  288. package/dist/astro/routes/api/media/providers/index.mjs +4 -4
  289. package/dist/astro/routes/api/media/upload-url.mjs +14 -13
  290. package/dist/astro/routes/api/media/upload-url.mjs.map +1 -1
  291. package/dist/astro/routes/api/media.mjs +26 -25
  292. package/dist/astro/routes/api/media.mjs.map +1 -1
  293. package/dist/astro/routes/api/menus/_name_/items/_id_.mjs +15 -14
  294. package/dist/astro/routes/api/menus/_name_/items/_id_.mjs.map +1 -1
  295. package/dist/astro/routes/api/menus/_name_/items.mjs +15 -14
  296. package/dist/astro/routes/api/menus/_name_/items.mjs.map +1 -1
  297. package/dist/astro/routes/api/menus/_name_/reorder.mjs +15 -14
  298. package/dist/astro/routes/api/menus/_name_/reorder.mjs.map +1 -1
  299. package/dist/astro/routes/api/menus/_name_/translations.mjs +15 -14
  300. package/dist/astro/routes/api/menus/_name_/translations.mjs.map +1 -1
  301. package/dist/astro/routes/api/menus/_name_.mjs +15 -14
  302. package/dist/astro/routes/api/menus/_name_.mjs.map +1 -1
  303. package/dist/astro/routes/api/menus/index.mjs +15 -14
  304. package/dist/astro/routes/api/menus/index.mjs.map +1 -1
  305. package/dist/astro/routes/api/oauth/authorize.mjs +6 -6
  306. package/dist/astro/routes/api/oauth/device/authorize.mjs +7 -7
  307. package/dist/astro/routes/api/oauth/device/code.mjs +10 -10
  308. package/dist/astro/routes/api/oauth/device/token.mjs +9 -9
  309. package/dist/astro/routes/api/oauth/register.mjs +4 -4
  310. package/dist/astro/routes/api/oauth/token/refresh.mjs +7 -7
  311. package/dist/astro/routes/api/oauth/token/revoke.mjs +7 -7
  312. package/dist/astro/routes/api/oauth/token.mjs +7 -7
  313. package/dist/astro/routes/api/openapi.json.mjs +95 -24
  314. package/dist/astro/routes/api/openapi.json.mjs.map +1 -1
  315. package/dist/astro/routes/api/plugins/_pluginId_/_...path_.d.mts +2 -1
  316. package/dist/astro/routes/api/plugins/_pluginId_/_...path_.d.mts.map +1 -1
  317. package/dist/astro/routes/api/plugins/_pluginId_/_...path_.mjs +22 -40
  318. package/dist/astro/routes/api/plugins/_pluginId_/_...path_.mjs.map +1 -1
  319. package/dist/astro/routes/api/redirects/404s/index.mjs +18 -14
  320. package/dist/astro/routes/api/redirects/404s/index.mjs.map +1 -1
  321. package/dist/astro/routes/api/redirects/404s/summary.mjs +18 -14
  322. package/dist/astro/routes/api/redirects/404s/summary.mjs.map +1 -1
  323. package/dist/astro/routes/api/redirects/_id_.d.mts.map +1 -1
  324. package/dist/astro/routes/api/redirects/_id_.mjs +20 -22
  325. package/dist/astro/routes/api/redirects/_id_.mjs.map +1 -1
  326. package/dist/astro/routes/api/redirects/index.d.mts.map +1 -1
  327. package/dist/astro/routes/api/redirects/index.mjs +19 -19
  328. package/dist/astro/routes/api/redirects/index.mjs.map +1 -1
  329. package/dist/astro/routes/api/relations/_id_/index.mjs +27 -23
  330. package/dist/astro/routes/api/relations/_id_/index.mjs.map +1 -1
  331. package/dist/astro/routes/api/relations/_id_/translations.mjs +21 -18
  332. package/dist/astro/routes/api/relations/_id_/translations.mjs.map +1 -1
  333. package/dist/astro/routes/api/relations/index.mjs +27 -23
  334. package/dist/astro/routes/api/relations/index.mjs.map +1 -1
  335. package/dist/astro/routes/api/revisions/_revisionId_/index.mjs +4 -4
  336. package/dist/astro/routes/api/revisions/_revisionId_/restore.mjs +5 -5
  337. package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs +65 -59
  338. package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs.map +1 -1
  339. package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs +65 -59
  340. package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs.map +1 -1
  341. package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs +65 -59
  342. package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs.map +1 -1
  343. package/dist/astro/routes/api/schema/collections/_slug_/index.mjs +65 -59
  344. package/dist/astro/routes/api/schema/collections/_slug_/index.mjs.map +1 -1
  345. package/dist/astro/routes/api/schema/collections/index.mjs +65 -59
  346. package/dist/astro/routes/api/schema/collections/index.mjs.map +1 -1
  347. package/dist/astro/routes/api/schema/collections/reorder.mjs +65 -59
  348. package/dist/astro/routes/api/schema/collections/reorder.mjs.map +1 -1
  349. package/dist/astro/routes/api/schema/index.mjs +16 -14
  350. package/dist/astro/routes/api/schema/index.mjs.map +1 -1
  351. package/dist/astro/routes/api/schema/orphans/_slug_.mjs +65 -59
  352. package/dist/astro/routes/api/schema/orphans/_slug_.mjs.map +1 -1
  353. package/dist/astro/routes/api/schema/orphans/index.mjs +65 -59
  354. package/dist/astro/routes/api/schema/orphans/index.mjs.map +1 -1
  355. package/dist/astro/routes/api/search/enable.mjs +16 -14
  356. package/dist/astro/routes/api/search/enable.mjs.map +1 -1
  357. package/dist/astro/routes/api/search/index.mjs +17 -14
  358. package/dist/astro/routes/api/search/index.mjs.map +1 -1
  359. package/dist/astro/routes/api/search/rebuild.mjs +16 -14
  360. package/dist/astro/routes/api/search/rebuild.mjs.map +1 -1
  361. package/dist/astro/routes/api/search/stats.mjs +10 -9
  362. package/dist/astro/routes/api/search/stats.mjs.map +1 -1
  363. package/dist/astro/routes/api/search/suggest.mjs +15 -13
  364. package/dist/astro/routes/api/search/suggest.mjs.map +1 -1
  365. package/dist/astro/routes/api/sections/_slug_.mjs +15 -13
  366. package/dist/astro/routes/api/sections/_slug_.mjs.map +1 -1
  367. package/dist/astro/routes/api/sections/index.mjs +15 -13
  368. package/dist/astro/routes/api/sections/index.mjs.map +1 -1
  369. package/dist/astro/routes/api/settings/backups/archives/_name_.mjs +9 -8
  370. package/dist/astro/routes/api/settings/backups/archives/_name_.mjs.map +1 -1
  371. package/dist/astro/routes/api/settings/backups/archives/index.mjs +8 -7
  372. package/dist/astro/routes/api/settings/backups/archives/index.mjs.map +1 -1
  373. package/dist/astro/routes/api/settings/backups/export.mjs +9 -8
  374. package/dist/astro/routes/api/settings/backups/export.mjs.map +1 -1
  375. package/dist/astro/routes/api/settings/backups/index.mjs +10 -9
  376. package/dist/astro/routes/api/settings/backups/index.mjs.map +1 -1
  377. package/dist/astro/routes/api/settings/email.mjs +6 -6
  378. package/dist/astro/routes/api/settings.mjs +22 -20
  379. package/dist/astro/routes/api/settings.mjs.map +1 -1
  380. package/dist/astro/routes/api/setup/admin-verify.mjs +16 -15
  381. package/dist/astro/routes/api/setup/admin-verify.mjs.map +1 -1
  382. package/dist/astro/routes/api/setup/admin.mjs +15 -14
  383. package/dist/astro/routes/api/setup/admin.mjs.map +1 -1
  384. package/dist/astro/routes/api/setup/dev-bypass.mjs +42 -38
  385. package/dist/astro/routes/api/setup/dev-bypass.mjs.map +1 -1
  386. package/dist/astro/routes/api/setup/dev-reset.mjs +4 -4
  387. package/dist/astro/routes/api/setup/index.mjs +43 -38
  388. package/dist/astro/routes/api/setup/index.mjs.map +1 -1
  389. package/dist/astro/routes/api/setup/status.mjs +5 -5
  390. package/dist/astro/routes/api/snapshot.mjs +11 -10
  391. package/dist/astro/routes/api/snapshot.mjs.map +1 -1
  392. package/dist/astro/routes/api/taxonomies/_name_/reorder.mjs +23 -21
  393. package/dist/astro/routes/api/taxonomies/_name_/reorder.mjs.map +1 -1
  394. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs +23 -21
  395. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs.map +1 -1
  396. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs +23 -21
  397. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs.map +1 -1
  398. package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs +23 -21
  399. package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs.map +1 -1
  400. package/dist/astro/routes/api/taxonomies/_name_/translations.mjs +22 -20
  401. package/dist/astro/routes/api/taxonomies/_name_/translations.mjs.map +1 -1
  402. package/dist/astro/routes/api/taxonomies/_name_.mjs +23 -21
  403. package/dist/astro/routes/api/taxonomies/_name_.mjs.map +1 -1
  404. package/dist/astro/routes/api/taxonomies/index.mjs +23 -21
  405. package/dist/astro/routes/api/taxonomies/index.mjs.map +1 -1
  406. package/dist/astro/routes/api/themes/preview.mjs +8 -8
  407. package/dist/astro/routes/api/typegen.mjs +6 -6
  408. package/dist/astro/routes/api/visual-editing/action-token.d.mts +8 -0
  409. package/dist/astro/routes/api/visual-editing/action-token.d.mts.map +1 -0
  410. package/dist/astro/routes/api/visual-editing/action-token.mjs +25 -0
  411. package/dist/astro/routes/api/visual-editing/action-token.mjs.map +1 -0
  412. package/dist/astro/routes/api/visual-editing/content/_collection_/_id_/publish.d.mts +8 -0
  413. package/dist/astro/routes/api/visual-editing/content/_collection_/_id_/publish.d.mts.map +1 -0
  414. package/dist/astro/routes/api/visual-editing/content/_collection_/_id_/publish.mjs +37 -0
  415. package/dist/astro/routes/api/visual-editing/content/_collection_/_id_/publish.mjs.map +1 -0
  416. package/dist/astro/routes/api/visual-editing/toolbar-labels.d.mts +8 -0
  417. package/dist/astro/routes/api/visual-editing/toolbar-labels.d.mts.map +1 -0
  418. package/dist/astro/routes/api/visual-editing/toolbar-labels.mjs +20 -0
  419. package/dist/astro/routes/api/visual-editing/toolbar-labels.mjs.map +1 -0
  420. package/dist/astro/routes/api/well-known/auth.mjs +2 -2
  421. package/dist/astro/routes/api/well-known/oauth-authorization-server.mjs +2 -2
  422. package/dist/astro/routes/api/well-known/oauth-protected-resource.mjs +2 -2
  423. package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs +12 -11
  424. package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs.map +1 -1
  425. package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs +16 -15
  426. package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs.map +1 -1
  427. package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs +16 -15
  428. package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs.map +1 -1
  429. package/dist/astro/routes/api/widget-areas/_name_.mjs +10 -10
  430. package/dist/astro/routes/api/widget-areas/index.mjs +16 -15
  431. package/dist/astro/routes/api/widget-areas/index.mjs.map +1 -1
  432. package/dist/astro/routes/api/widget-components.mjs +4 -4
  433. package/dist/astro/routes/robots.txt.mjs +13 -12
  434. package/dist/astro/routes/robots.txt.mjs.map +1 -1
  435. package/dist/astro/routes/sitemap-_collection_.xml.d.mts.map +1 -1
  436. package/dist/astro/routes/sitemap-_collection_.xml.mjs +24 -19
  437. package/dist/astro/routes/sitemap-_collection_.xml.mjs.map +1 -1
  438. package/dist/astro/routes/sitemap.xml.mjs +14 -13
  439. package/dist/astro/routes/sitemap.xml.mjs.map +1 -1
  440. package/dist/astro/types.d.mts +79 -26
  441. package/dist/astro/types.d.mts.map +1 -1
  442. package/dist/auth/providers/github.d.mts +1 -1
  443. package/dist/auth/providers/google.d.mts +1 -1
  444. package/dist/authoritative-records-DbqshfKD.mjs +5172 -0
  445. package/dist/authoritative-records-DbqshfKD.mjs.map +1 -0
  446. package/dist/authorize-BXpfMpp0.mjs +40 -0
  447. package/dist/authorize-BXpfMpp0.mjs.map +1 -0
  448. package/dist/backup-BsPQdwnS.mjs +246 -0
  449. package/dist/backup-BsPQdwnS.mjs.map +1 -0
  450. package/dist/base64-DvnNgP7e.mjs +63 -0
  451. package/dist/base64-DvnNgP7e.mjs.map +1 -0
  452. package/dist/byline-Doh-wt99.mjs +906 -0
  453. package/dist/byline-Doh-wt99.mjs.map +1 -0
  454. package/dist/byline-fields-CsrdvaLV.mjs +123 -0
  455. package/dist/byline-fields-CsrdvaLV.mjs.map +1 -0
  456. package/dist/byline-registry-D6lWzXk6.mjs +406 -0
  457. package/dist/byline-registry-D6lWzXk6.mjs.map +1 -0
  458. package/dist/bylines-Cop0hkoy.mjs +214 -0
  459. package/dist/bylines-Cop0hkoy.mjs.map +1 -0
  460. package/dist/bylines-kpBzHPr8.mjs +232 -0
  461. package/dist/bylines-kpBzHPr8.mjs.map +1 -0
  462. package/dist/cache-B0pOlXdM.mjs +108 -0
  463. package/dist/cache-B0pOlXdM.mjs.map +1 -0
  464. package/dist/capture-triggers-gxQxnxrJ.mjs +362 -0
  465. package/dist/capture-triggers-gxQxnxrJ.mjs.map +1 -0
  466. package/dist/challenge-store-CkRdSdd8.mjs +51 -0
  467. package/dist/challenge-store-CkRdSdd8.mjs.map +1 -0
  468. package/dist/checksum-Bsi2D9M1.mjs +162 -0
  469. package/dist/checksum-Bsi2D9M1.mjs.map +1 -0
  470. package/dist/chrome-tags-D7LGB91U.mjs +24 -0
  471. package/dist/chrome-tags-D7LGB91U.mjs.map +1 -0
  472. package/dist/chunks-BmWyou79.mjs +25 -0
  473. package/dist/chunks-BmWyou79.mjs.map +1 -0
  474. package/dist/cli/index.mjs +921 -106
  475. package/dist/cli/index.mjs.map +1 -1
  476. package/dist/client/cf-access.d.mts +1 -1
  477. package/dist/client/index.d.mts +17 -7
  478. package/dist/client/index.d.mts.map +1 -1
  479. package/dist/client/index.mjs +17 -12
  480. package/dist/client/index.mjs.map +1 -1
  481. package/dist/collection-deletion-C3Xixmkx.mjs +436 -0
  482. package/dist/collection-deletion-C3Xixmkx.mjs.map +1 -0
  483. package/dist/collection-slugs-cache-D9auiKmI.mjs +85 -0
  484. package/dist/collection-slugs-cache-D9auiKmI.mjs.map +1 -0
  485. package/dist/comment-DcT8qdPK.mjs +313 -0
  486. package/dist/comment-DcT8qdPK.mjs.map +1 -0
  487. package/dist/comment-reaction-DY5-y8Y5.mjs +85 -0
  488. package/dist/comment-reaction-DY5-y8Y5.mjs.map +1 -0
  489. package/dist/comments-B67VRNGw.mjs +204 -0
  490. package/dist/comments-B67VRNGw.mjs.map +1 -0
  491. package/dist/comments-BVzzt6x5.mjs +99 -0
  492. package/dist/comments-BVzzt6x5.mjs.map +1 -0
  493. package/dist/components-DIl9Qzh6.mjs +108 -0
  494. package/dist/components-DIl9Qzh6.mjs.map +1 -0
  495. package/dist/config-B2acLeC5.mjs +242 -0
  496. package/dist/config-B2acLeC5.mjs.map +1 -0
  497. package/dist/config-CGVeT8Hc.mjs +73 -0
  498. package/dist/config-CGVeT8Hc.mjs.map +1 -0
  499. package/dist/config-D3HhLON3.d.mts +39 -0
  500. package/dist/config-D3HhLON3.d.mts.map +1 -0
  501. package/dist/config-DS7e4EZ9.d.mts +6387 -0
  502. package/dist/config-DS7e4EZ9.d.mts.map +1 -0
  503. package/dist/content-DZ3B5qtA.mjs +2216 -0
  504. package/dist/content-DZ3B5qtA.mjs.map +1 -0
  505. package/dist/content-list-query-CbPdzsna.d.mts +26 -0
  506. package/dist/content-list-query-CbPdzsna.d.mts.map +1 -0
  507. package/dist/content-policy-CM4skrNi.mjs +46 -0
  508. package/dist/content-policy-CM4skrNi.mjs.map +1 -0
  509. package/dist/content-refresh-BHLHJgyt.mjs +3599 -0
  510. package/dist/content-refresh-BHLHJgyt.mjs.map +1 -0
  511. package/dist/content-repair-BVll5WNl.mjs +440 -0
  512. package/dist/content-repair-BVll5WNl.mjs.map +1 -0
  513. package/dist/context-B195kjqZ.mjs +1835 -0
  514. package/dist/context-B195kjqZ.mjs.map +1 -0
  515. package/dist/cron-BcR3RN4K.mjs +282 -0
  516. package/dist/cron-BcR3RN4K.mjs.map +1 -0
  517. package/dist/dashboard-CZD4G7k_.mjs +151 -0
  518. package/dist/dashboard-CZD4G7k_.mjs.map +1 -0
  519. package/dist/database/migration-lock.d.mts +37 -0
  520. package/dist/database/migration-lock.d.mts.map +1 -0
  521. package/dist/database/migration-lock.mjs +76 -0
  522. package/dist/database/migration-lock.mjs.map +1 -0
  523. package/dist/database/pg-migration-lock.d.mts +1 -1
  524. package/dist/database/pg-migration-lock.mjs +1 -1
  525. package/dist/database/pg-migration-lock.mjs.map +1 -1
  526. package/dist/datetime-normalization-PeiEdcRY.mjs +187 -0
  527. package/dist/datetime-normalization-PeiEdcRY.mjs.map +1 -0
  528. package/dist/db/index.d.mts +3 -3
  529. package/dist/db/index.mjs +4 -3
  530. package/dist/db/index.mjs.map +1 -1
  531. package/dist/db/libsql-migrations.d.mts +1 -1
  532. package/dist/db/libsql-migrations.mjs +7 -6
  533. package/dist/db/libsql-migrations.mjs.map +1 -1
  534. package/dist/db/libsql.d.mts +1 -1
  535. package/dist/db/postgres-migrations.d.mts +1 -1
  536. package/dist/db/postgres-migrations.mjs +7 -6
  537. package/dist/db/postgres-migrations.mjs.map +1 -1
  538. package/dist/db/postgres.d.mts +1 -1
  539. package/dist/db/sqlite-migrations.d.mts +1 -1
  540. package/dist/db/sqlite-migrations.mjs +7 -6
  541. package/dist/db/sqlite-migrations.mjs.map +1 -1
  542. package/dist/db/sqlite.d.mts +1 -1
  543. package/dist/db/sqlite.mjs +1 -1
  544. package/dist/db-errors-CBD5yMro.mjs +55 -0
  545. package/dist/db-errors-CBD5yMro.mjs.map +1 -0
  546. package/dist/default-BtlxWgh9.mjs +81 -0
  547. package/dist/default-BtlxWgh9.mjs.map +1 -0
  548. package/dist/deferred-tasks-Ba9fphlE.d.mts +9 -0
  549. package/dist/deferred-tasks-Ba9fphlE.d.mts.map +1 -0
  550. package/dist/dev-typegen-CZaPLl3V.mjs +29 -0
  551. package/dist/dev-typegen-CZaPLl3V.mjs.map +1 -0
  552. package/dist/device-flow-3E5l0fpH.mjs +466 -0
  553. package/dist/device-flow-3E5l0fpH.mjs.map +1 -0
  554. package/dist/dialect-helpers-CtYdsX4W.mjs +307 -0
  555. package/dist/dialect-helpers-CtYdsX4W.mjs.map +1 -0
  556. package/dist/direct-executor-ZI8E01Yt.mjs +104 -0
  557. package/dist/direct-executor-ZI8E01Yt.mjs.map +1 -0
  558. package/dist/dist-2hDLsLeq.mjs +810 -0
  559. package/dist/dist-2hDLsLeq.mjs.map +1 -0
  560. package/dist/email-console-gc-E3Eqj.mjs +50 -0
  561. package/dist/email-console-gc-E3Eqj.mjs.map +1 -0
  562. package/dist/emdash-runtime-DZGinqTL.mjs +4041 -0
  563. package/dist/emdash-runtime-DZGinqTL.mjs.map +1 -0
  564. package/dist/enrich-C2Mk0lwE.mjs +194 -0
  565. package/dist/enrich-C2Mk0lwE.mjs.map +1 -0
  566. package/dist/entry-lock-D3C99MXS.mjs +1520 -0
  567. package/dist/entry-lock-D3C99MXS.mjs.map +1 -0
  568. package/dist/entry-lock-D9rnj2Lu.mjs +163 -0
  569. package/dist/entry-lock-D9rnj2Lu.mjs.map +1 -0
  570. package/dist/entry-lock-DX7QkqEg.d.mts +3503 -0
  571. package/dist/entry-lock-DX7QkqEg.d.mts.map +1 -0
  572. package/dist/entry-locks-CO_KaoU5.mjs +167 -0
  573. package/dist/entry-locks-CO_KaoU5.mjs.map +1 -0
  574. package/dist/error-CCTCskie.mjs +90 -0
  575. package/dist/error-CCTCskie.mjs.map +1 -0
  576. package/dist/errors-W3PA8HqB.mjs +447 -0
  577. package/dist/errors-W3PA8HqB.mjs.map +1 -0
  578. package/dist/escape-DN4Qmjsl.mjs +9 -0
  579. package/dist/escape-DN4Qmjsl.mjs.map +1 -0
  580. package/dist/field-defs-cache-B337z8UJ.mjs +77 -0
  581. package/dist/field-defs-cache-B337z8UJ.mjs.map +1 -0
  582. package/dist/focal-point-Gr34o-4o.mjs +23 -0
  583. package/dist/focal-point-Gr34o-4o.mjs.map +1 -0
  584. package/dist/fts-manager-DMb0sbIQ.mjs +413 -0
  585. package/dist/fts-manager-DMb0sbIQ.mjs.map +1 -0
  586. package/dist/hash-CLVFzWvx.mjs +37 -0
  587. package/dist/hash-CLVFzWvx.mjs.map +1 -0
  588. package/dist/hook-result-KY1jq21o.d.mts +31 -0
  589. package/dist/hook-result-KY1jq21o.d.mts.map +1 -0
  590. package/dist/hreflang-BgS2FqhH.d.mts +50 -0
  591. package/dist/hreflang-BgS2FqhH.d.mts.map +1 -0
  592. package/dist/hreflang-CrJwqoeb.mjs +105 -0
  593. package/dist/hreflang-CrJwqoeb.mjs.map +1 -0
  594. package/dist/http-route-dispatch-DAKlanXb.mjs +339 -0
  595. package/dist/http-route-dispatch-DAKlanXb.mjs.map +1 -0
  596. package/dist/identity-DRGSHEEr.mjs +35 -0
  597. package/dist/identity-DRGSHEEr.mjs.map +1 -0
  598. package/dist/import-DFr5B_hC.mjs +2020 -0
  599. package/dist/import-DFr5B_hC.mjs.map +1 -0
  600. package/dist/index-CDwKDkTq.d.mts +623 -0
  601. package/dist/index-CDwKDkTq.d.mts.map +1 -0
  602. package/dist/index.d.mts +27 -22
  603. package/dist/index.mjs +101 -86
  604. package/dist/init-lock-4eRRB4Le.mjs +56 -0
  605. package/dist/init-lock-4eRRB4Le.mjs.map +1 -0
  606. package/dist/install-finalization-5Os-QZ-2.mjs +58 -0
  607. package/dist/install-finalization-5Os-QZ-2.mjs.map +1 -0
  608. package/dist/lifecycle-7e-Lt_kX.mjs +25 -0
  609. package/dist/lifecycle-7e-Lt_kX.mjs.map +1 -0
  610. package/dist/load-Cu5bvCZh.mjs +28 -0
  611. package/dist/load-Cu5bvCZh.mjs.map +1 -0
  612. package/dist/loader-t4TxaFiQ.mjs +1004 -0
  613. package/dist/loader-t4TxaFiQ.mjs.map +1 -0
  614. package/dist/manifest-builder-D31UoJCu.mjs +189 -0
  615. package/dist/manifest-builder-D31UoJCu.mjs.map +1 -0
  616. package/dist/manifest-schema-Bkh8SeHd.mjs +491 -0
  617. package/dist/manifest-schema-Bkh8SeHd.mjs.map +1 -0
  618. package/dist/media/image-endpoint.mjs +1 -1
  619. package/dist/media/index.d.mts +1 -1
  620. package/dist/media/index.mjs +4 -4
  621. package/dist/media/local-runtime.d.mts +14 -12
  622. package/dist/media/local-runtime.d.mts.map +1 -1
  623. package/dist/media/local-runtime.mjs +12 -11
  624. package/dist/media/local-runtime.mjs.map +1 -1
  625. package/dist/media-TBlKCwo7.mjs +334 -0
  626. package/dist/media-TBlKCwo7.mjs.map +1 -0
  627. package/dist/media-allowlist-s60eAIf6.mjs +44 -0
  628. package/dist/media-allowlist-s60eAIf6.mjs.map +1 -0
  629. package/dist/media-folders-ClIRLUQv.mjs +210 -0
  630. package/dist/media-folders-ClIRLUQv.mjs.map +1 -0
  631. package/dist/media-url-DY_ijO3B.mjs +43 -0
  632. package/dist/media-url-DY_ijO3B.mjs.map +1 -0
  633. package/dist/media-usage-C4NolTpQ.mjs +1833 -0
  634. package/dist/media-usage-C4NolTpQ.mjs.map +1 -0
  635. package/dist/media-usage-activation-CAhmb14O.mjs +78 -0
  636. package/dist/media-usage-activation-CAhmb14O.mjs.map +1 -0
  637. package/dist/media-usage-work-Cu5DqewW.mjs +586 -0
  638. package/dist/media-usage-work-Cu5DqewW.mjs.map +1 -0
  639. package/dist/media-usage-work-DJr3rOEN.mjs +152 -0
  640. package/dist/media-usage-work-DJr3rOEN.mjs.map +1 -0
  641. package/dist/media-usage-write-fence-DW5oHT7q.mjs +42 -0
  642. package/dist/media-usage-write-fence-DW5oHT7q.mjs.map +1 -0
  643. package/dist/menus-DbgU9z5Q.mjs +3732 -0
  644. package/dist/menus-DbgU9z5Q.mjs.map +1 -0
  645. package/dist/menus-Wy8m5NcH.mjs +753 -0
  646. package/dist/menus-Wy8m5NcH.mjs.map +1 -0
  647. package/dist/migrations/index.d.mts +2 -2
  648. package/dist/migrations/index.d.mts.map +1 -1
  649. package/dist/migrations/index.mjs +6 -5
  650. package/dist/mime-CCYRC4r1.mjs +36 -0
  651. package/dist/mime-CCYRC4r1.mjs.map +1 -0
  652. package/dist/mode-CkmOhFqj.mjs +23 -0
  653. package/dist/mode-CkmOhFqj.mjs.map +1 -0
  654. package/dist/node-sqlite-compat-vpVaILnb.mjs +46 -0
  655. package/dist/node-sqlite-compat-vpVaILnb.mjs.map +1 -0
  656. package/dist/normalize-dChXQjwS.mjs +191 -0
  657. package/dist/normalize-dChXQjwS.mjs.map +1 -0
  658. package/dist/oauth-authorization-DZ-R-hmx.mjs +274 -0
  659. package/dist/oauth-authorization-DZ-R-hmx.mjs.map +1 -0
  660. package/dist/oauth-clients-BMPA8vjl.mjs +266 -0
  661. package/dist/oauth-clients-BMPA8vjl.mjs.map +1 -0
  662. package/dist/oauth-state-store-0gIdb48-.mjs +50 -0
  663. package/dist/oauth-state-store-0gIdb48-.mjs.map +1 -0
  664. package/dist/oauth-user-lookup-ChVW4UWu.mjs +26 -0
  665. package/dist/oauth-user-lookup-ChVW4UWu.mjs.map +1 -0
  666. package/dist/object-cache/memory.d.mts +1 -1
  667. package/dist/object-cache-DlSVbn5Y.mjs +534 -0
  668. package/dist/object-cache-DlSVbn5Y.mjs.map +1 -0
  669. package/dist/options-D5WcorD5.mjs +200 -0
  670. package/dist/options-D5WcorD5.mjs.map +1 -0
  671. package/dist/options-DAknChnw.d.mts +77 -0
  672. package/dist/options-DAknChnw.d.mts.map +1 -0
  673. package/dist/page/index.d.mts +2 -2
  674. package/dist/page/index.d.mts.map +1 -1
  675. package/dist/page/index.mjs +13 -0
  676. package/dist/page/index.mjs.map +1 -1
  677. package/dist/parse-Cr379Av9.mjs +81 -0
  678. package/dist/parse-Cr379Av9.mjs.map +1 -0
  679. package/dist/parse-tj9XLNO_.d.mts +165 -0
  680. package/dist/parse-tj9XLNO_.d.mts.map +1 -0
  681. package/dist/passkey-config-BD-wMaCf.mjs +46 -0
  682. package/dist/passkey-config-BD-wMaCf.mjs.map +1 -0
  683. package/dist/patterns-Do3iqi7N.mjs +145 -0
  684. package/dist/patterns-Do3iqi7N.mjs.map +1 -0
  685. package/dist/placeholder-CubPFn_L.d.mts +306 -0
  686. package/dist/placeholder-CubPFn_L.d.mts.map +1 -0
  687. package/dist/plugin-test-runtime.d.mts +97 -0
  688. package/dist/plugin-test-runtime.d.mts.map +1 -0
  689. package/dist/plugin-test-runtime.mjs +105 -0
  690. package/dist/plugin-types.d.mts +53 -15
  691. package/dist/plugin-types.d.mts.map +1 -1
  692. package/dist/plugin-types.mjs +18 -1
  693. package/dist/plugin-types.mjs.map +1 -0
  694. package/dist/plugin-utils.d.mts +12 -10
  695. package/dist/plugin-utils.d.mts.map +1 -1
  696. package/dist/plugins/adapt-sandbox-entry.d.mts +12 -10
  697. package/dist/plugins/adapt-sandbox-entry.d.mts.map +1 -1
  698. package/dist/plugins/adapt-sandbox-entry.mjs +18 -13
  699. package/dist/plugins/adapt-sandbox-entry.mjs.map +1 -1
  700. package/dist/plugins/host.d.mts +7 -0
  701. package/dist/plugins/host.mjs +45 -0
  702. package/dist/plugins/http-wire.d.mts +25 -0
  703. package/dist/plugins/http-wire.d.mts.map +1 -0
  704. package/dist/plugins/http-wire.mjs +148 -0
  705. package/dist/plugins/http-wire.mjs.map +1 -0
  706. package/dist/plugins/secret-redactor.d.mts +9 -0
  707. package/dist/plugins/secret-redactor.d.mts.map +1 -0
  708. package/dist/plugins/secret-redactor.mjs +51 -0
  709. package/dist/plugins/secret-redactor.mjs.map +1 -0
  710. package/dist/plugins-DHurtdXQ.mjs +277 -0
  711. package/dist/plugins-DHurtdXQ.mjs.map +1 -0
  712. package/dist/policy-lyZnjpwz.mjs +45 -0
  713. package/dist/policy-lyZnjpwz.mjs.map +1 -0
  714. package/dist/portable-text-oAwodbPS.mjs +286 -0
  715. package/dist/portable-text-oAwodbPS.mjs.map +1 -0
  716. package/dist/preview-Cup2bj8c.mjs +107 -0
  717. package/dist/preview-Cup2bj8c.mjs.map +1 -0
  718. package/dist/protocol-C1CNiKX4.d.mts +61 -0
  719. package/dist/protocol-C1CNiKX4.d.mts.map +1 -0
  720. package/dist/public-submission-Cs-pFMQK.mjs +245 -0
  721. package/dist/public-submission-Cs-pFMQK.mjs.map +1 -0
  722. package/dist/public-url-BWVHsfQv.mjs +101 -0
  723. package/dist/public-url-BWVHsfQv.mjs.map +1 -0
  724. package/dist/query-D-lxiOgn.mjs +890 -0
  725. package/dist/query-D-lxiOgn.mjs.map +1 -0
  726. package/dist/query-D7kHKOws.mjs +41 -0
  727. package/dist/query-D7kHKOws.mjs.map +1 -0
  728. package/dist/rate-limit-CqJn-w4h.mjs +120 -0
  729. package/dist/rate-limit-CqJn-w4h.mjs.map +1 -0
  730. package/dist/redirect-BrChFPIu.mjs +17 -0
  731. package/dist/redirect-BrChFPIu.mjs.map +1 -0
  732. package/dist/redirect-D2Yo-b6S.mjs +415 -0
  733. package/dist/redirect-D2Yo-b6S.mjs.map +1 -0
  734. package/dist/redirects-BCiTaIQ-.mjs +146 -0
  735. package/dist/redirects-BCiTaIQ-.mjs.map +1 -0
  736. package/dist/redirects-ByItliuu.mjs +644 -0
  737. package/dist/redirects-ByItliuu.mjs.map +1 -0
  738. package/dist/registry/testing.d.mts +14 -0
  739. package/dist/registry/testing.d.mts.map +1 -0
  740. package/dist/registry/testing.mjs +255 -0
  741. package/dist/registry/testing.mjs.map +1 -0
  742. package/dist/registry-CkuPoZs7.mjs +1222 -0
  743. package/dist/registry-CkuPoZs7.mjs.map +1 -0
  744. package/dist/relation-XTAtOpJO.mjs +334 -0
  745. package/dist/relation-XTAtOpJO.mjs.map +1 -0
  746. package/dist/relations-B4w-G5U9.mjs +309 -0
  747. package/dist/relations-B4w-G5U9.mjs.map +1 -0
  748. package/dist/relations-O63JWBRj.mjs +403 -0
  749. package/dist/relations-O63JWBRj.mjs.map +1 -0
  750. package/dist/request-cache-DaMhSQdx.mjs +104 -0
  751. package/dist/request-cache-DaMhSQdx.mjs.map +1 -0
  752. package/dist/request-context.d.mts +1 -1
  753. package/dist/request-meta-C8yl_sIs.mjs +141 -0
  754. package/dist/request-meta-C8yl_sIs.mjs.map +1 -0
  755. package/dist/resolve-BJIS8wKr.mjs +199 -0
  756. package/dist/resolve-BJIS8wKr.mjs.map +1 -0
  757. package/dist/route-wire-D66L2oaZ.mjs +197 -0
  758. package/dist/route-wire-D66L2oaZ.mjs.map +1 -0
  759. package/dist/routes-DYsTe-oR.mjs +321 -0
  760. package/dist/routes-DYsTe-oR.mjs.map +1 -0
  761. package/dist/runner-3gfxRsJG.d.mts +68 -0
  762. package/dist/runner-3gfxRsJG.d.mts.map +1 -0
  763. package/dist/runner-ClrleR8A.mjs +5502 -0
  764. package/dist/runner-ClrleR8A.mjs.map +1 -0
  765. package/dist/runtime.d.mts +13 -11
  766. package/dist/runtime.d.mts.map +1 -1
  767. package/dist/runtime.mjs +6 -5
  768. package/dist/runtime.mjs.map +1 -1
  769. package/dist/schema-CPhPM9Do.mjs +420 -0
  770. package/dist/schema-CPhPM9Do.mjs.map +1 -0
  771. package/dist/schema-DEERRrKS.mjs +9 -0
  772. package/dist/schema-DEERRrKS.mjs.map +1 -0
  773. package/dist/scopes-Bn8_rCSt.mjs +27 -0
  774. package/dist/scopes-Bn8_rCSt.mjs.map +1 -0
  775. package/dist/search-lami_Ota.mjs +448 -0
  776. package/dist/search-lami_Ota.mjs.map +1 -0
  777. package/dist/secrets-DNgVgz_e.mjs +341 -0
  778. package/dist/secrets-DNgVgz_e.mjs.map +1 -0
  779. package/dist/sections-BIpd4Cxf.mjs +346 -0
  780. package/dist/sections-BIpd4Cxf.mjs.map +1 -0
  781. package/dist/seed/index.d.mts +2 -2
  782. package/dist/seed/index.mjs +35 -31
  783. package/dist/seo/index.d.mts +3 -3
  784. package/dist/seo/index.d.mts.map +1 -1
  785. package/dist/seo/index.mjs +27 -26
  786. package/dist/seo/index.mjs.map +1 -1
  787. package/dist/seo-BtU70b7l.mjs +114 -0
  788. package/dist/seo-BtU70b7l.mjs.map +1 -0
  789. package/dist/seo-_4qmazxz.mjs +133 -0
  790. package/dist/seo-_4qmazxz.mjs.map +1 -0
  791. package/dist/service-Bpy5iTX0.mjs +150 -0
  792. package/dist/service-Bpy5iTX0.mjs.map +1 -0
  793. package/dist/session-user-BQeS2Mrb.mjs +51 -0
  794. package/dist/session-user-BQeS2Mrb.mjs.map +1 -0
  795. package/dist/settings-DmroR53o.mjs +420 -0
  796. package/dist/settings-DmroR53o.mjs.map +1 -0
  797. package/dist/settings-g2F2a3Ub.mjs +51 -0
  798. package/dist/settings-g2F2a3Ub.mjs.map +1 -0
  799. package/dist/setup-complete-BrZaXpVV.mjs +26 -0
  800. package/dist/setup-complete-BrZaXpVV.mjs.map +1 -0
  801. package/dist/setup-nonce-Cb9-884O.mjs +25 -0
  802. package/dist/setup-nonce-Cb9-884O.mjs.map +1 -0
  803. package/dist/single-flight-cache-B5O2qhO1.mjs +104 -0
  804. package/dist/single-flight-cache-B5O2qhO1.mjs.map +1 -0
  805. package/dist/site-url-DjhYCaep.mjs +16 -0
  806. package/dist/site-url-DjhYCaep.mjs.map +1 -0
  807. package/dist/slugify-T5GHH42D.mjs +17 -0
  808. package/dist/slugify-T5GHH42D.mjs.map +1 -0
  809. package/dist/snapshot-C32Xuv3o.mjs +233 -0
  810. package/dist/snapshot-C32Xuv3o.mjs.map +1 -0
  811. package/dist/ssrf-Co1GGFZz.mjs +406 -0
  812. package/dist/ssrf-Co1GGFZz.mjs.map +1 -0
  813. package/dist/state-C7gCoiHr.mjs +153 -0
  814. package/dist/state-C7gCoiHr.mjs.map +1 -0
  815. package/dist/status-DLoBmcDz.mjs +30 -0
  816. package/dist/status-DLoBmcDz.mjs.map +1 -0
  817. package/dist/storage/local.d.mts +1 -1
  818. package/dist/storage/local.mjs +1 -1
  819. package/dist/storage/s3.d.mts +1 -1
  820. package/dist/storage/s3.mjs +1 -1
  821. package/dist/storage-query-CPctdMKX.d.mts +1519 -0
  822. package/dist/storage-query-CPctdMKX.d.mts.map +1 -0
  823. package/dist/target-CUKlGrXb.mjs +27 -0
  824. package/dist/target-CUKlGrXb.mjs.map +1 -0
  825. package/dist/taxonomies-BpqpXJUE.mjs +707 -0
  826. package/dist/taxonomies-BpqpXJUE.mjs.map +1 -0
  827. package/dist/taxonomies-ClCo4IGO.mjs +899 -0
  828. package/dist/taxonomies-ClCo4IGO.mjs.map +1 -0
  829. package/dist/taxonomy-Dj1vpw5E.mjs +508 -0
  830. package/dist/taxonomy-Dj1vpw5E.mjs.map +1 -0
  831. package/dist/tokens-Ns02GAma.mjs +171 -0
  832. package/dist/tokens-Ns02GAma.mjs.map +1 -0
  833. package/dist/transaction-BcJO4Tmc.mjs +29 -0
  834. package/dist/transaction-BcJO4Tmc.mjs.map +1 -0
  835. package/dist/transport-B8P1xsqk.mjs +136 -0
  836. package/dist/transport-B8P1xsqk.mjs.map +1 -0
  837. package/dist/transport-BLHZZcD_.d.mts +42 -0
  838. package/dist/transport-BLHZZcD_.d.mts.map +1 -0
  839. package/dist/trusted-proxy-Cg7SuD15.mjs +51 -0
  840. package/dist/trusted-proxy-Cg7SuD15.mjs.map +1 -0
  841. package/dist/turnstile-DWCSh_Qc.mjs +53 -0
  842. package/dist/turnstile-DWCSh_Qc.mjs.map +1 -0
  843. package/dist/types-B3RkqvDW.mjs +156 -0
  844. package/dist/types-B3RkqvDW.mjs.map +1 -0
  845. package/dist/types-BkUg2yHx.mjs +92 -0
  846. package/dist/types-BkUg2yHx.mjs.map +1 -0
  847. package/dist/types-BtuppOTV.mjs +16 -0
  848. package/dist/types-BtuppOTV.mjs.map +1 -0
  849. package/dist/types-CCR3ivXE.d.mts +363 -0
  850. package/dist/types-CCR3ivXE.d.mts.map +1 -0
  851. package/dist/types-CSHgU_-_.mjs +18 -0
  852. package/dist/types-CSHgU_-_.mjs.map +1 -0
  853. package/dist/types-CbwqGOXm.d.mts +766 -0
  854. package/dist/types-CbwqGOXm.d.mts.map +1 -0
  855. package/dist/types-D4RGIc2I.d.mts +198 -0
  856. package/dist/types-D4RGIc2I.d.mts.map +1 -0
  857. package/dist/types-DEHidMEk.d.mts +1637 -0
  858. package/dist/types-DEHidMEk.d.mts.map +1 -0
  859. package/dist/types-DQeU2SR7.d.mts +279 -0
  860. package/dist/types-DQeU2SR7.d.mts.map +1 -0
  861. package/dist/types-DxQWoQLA.d.mts +264 -0
  862. package/dist/types-DxQWoQLA.d.mts.map +1 -0
  863. package/dist/types-FBBnGZ2Y.d.mts +198 -0
  864. package/dist/types-FBBnGZ2Y.d.mts.map +1 -0
  865. package/dist/types-ZCnlropY.mjs +69 -0
  866. package/dist/types-ZCnlropY.mjs.map +1 -0
  867. package/dist/types-_Qtyawiy.d.mts +124 -0
  868. package/dist/types-_Qtyawiy.d.mts.map +1 -0
  869. package/dist/types-gC6FAoa_.d.mts +75 -0
  870. package/dist/types-gC6FAoa_.d.mts.map +1 -0
  871. package/dist/types-k--LneIF.mjs +22 -0
  872. package/dist/types-k--LneIF.mjs.map +1 -0
  873. package/dist/upload-attempts-2xdnoKGe.mjs +27 -0
  874. package/dist/upload-attempts-2xdnoKGe.mjs.map +1 -0
  875. package/dist/url-pattern-3m3reMzr.mjs +33 -0
  876. package/dist/url-pattern-3m3reMzr.mjs.map +1 -0
  877. package/dist/user-DroRntkx.mjs +171 -0
  878. package/dist/user-DroRntkx.mjs.map +1 -0
  879. package/dist/utils-CC2oNGV8.mjs +435 -0
  880. package/dist/utils-CC2oNGV8.mjs.map +1 -0
  881. package/dist/validate-BCP9HNDn.mjs +384 -0
  882. package/dist/validate-BCP9HNDn.mjs.map +1 -0
  883. package/dist/validate-CyQ7I3xF.d.mts +410 -0
  884. package/dist/validate-CyQ7I3xF.d.mts.map +1 -0
  885. package/dist/validate-DANX1-Qi.mjs +120 -0
  886. package/dist/validate-DANX1-Qi.mjs.map +1 -0
  887. package/dist/validation-DBy6WF94.mjs +216 -0
  888. package/dist/validation-DBy6WF94.mjs.map +1 -0
  889. package/dist/version-B57E4Uo7.mjs +7 -0
  890. package/dist/version-B57E4Uo7.mjs.map +1 -0
  891. package/dist/widgets-wQ7Xcgq8.mjs +126 -0
  892. package/dist/widgets-wQ7Xcgq8.mjs.map +1 -0
  893. package/dist/wxr-taxonomies-DIHfvEDt.mjs +406 -0
  894. package/dist/wxr-taxonomies-DIHfvEDt.mjs.map +1 -0
  895. package/dist/wxr-taxonomies-DU2ZSiGc.d.mts +34 -0
  896. package/dist/wxr-taxonomies-DU2ZSiGc.d.mts.map +1 -0
  897. package/dist/zod-generator-D_yHIWfs.mjs +329 -0
  898. package/dist/zod-generator-D_yHIWfs.mjs.map +1 -0
  899. package/package.json +39 -12
  900. package/src/api/errors.ts +23 -0
  901. package/src/api/handlers/backup.ts +11 -5
  902. package/src/api/handlers/content.ts +226 -85
  903. package/src/api/handlers/dashboard.ts +31 -1
  904. package/src/api/handlers/entry-lock.ts +206 -0
  905. package/src/api/handlers/index.ts +3 -0
  906. package/src/api/handlers/manifest.ts +5 -6
  907. package/src/api/handlers/marketplace.ts +126 -34
  908. package/src/api/handlers/media-upload.ts +31 -4
  909. package/src/api/handlers/menus.ts +9 -0
  910. package/src/api/handlers/plugin-settings.ts +35 -3
  911. package/src/api/handlers/redirects.ts +221 -138
  912. package/src/api/handlers/registry.ts +75 -29
  913. package/src/api/handlers/revision.ts +16 -27
  914. package/src/api/handlers/seo.ts +10 -1
  915. package/src/api/handlers/snapshot.ts +87 -72
  916. package/src/api/handlers/taxonomies.ts +79 -5
  917. package/src/api/handlers/validation.ts +120 -19
  918. package/src/api/openapi/document.ts +133 -11
  919. package/src/api/schemas/content.ts +32 -12
  920. package/src/api/schemas/entry-lock.ts +57 -0
  921. package/src/api/schemas/index.ts +1 -0
  922. package/src/api/schemas/schema.ts +10 -1
  923. package/src/api/schemas/search.ts +4 -0
  924. package/src/api/types.ts +4 -0
  925. package/src/astro/integration/index.ts +22 -6
  926. package/src/astro/integration/routes.ts +89 -0
  927. package/src/astro/integration/runtime.ts +40 -24
  928. package/src/astro/integration/virtual-modules.ts +4 -0
  929. package/src/astro/integration/vite-config.ts +31 -0
  930. package/src/astro/middleware/auth.ts +25 -4
  931. package/src/astro/middleware/request-context.ts +28 -10
  932. package/src/astro/middleware.ts +33 -1
  933. package/src/astro/prefetch.ts +2 -2
  934. package/src/astro/routes/api/admin/comments/[id]/status.ts +22 -58
  935. package/src/astro/routes/api/admin/plugins/[id]/disable.ts +2 -15
  936. package/src/astro/routes/api/admin/plugins/[id]/enable.ts +2 -25
  937. package/src/astro/routes/api/admin/plugins/[id]/uninstall.ts +1 -0
  938. package/src/astro/routes/api/admin/plugins/[id]/update.ts +23 -4
  939. package/src/astro/routes/api/admin/plugins/marketplace/[id]/install.ts +12 -2
  940. package/src/astro/routes/api/admin/plugins/registry/[id]/uninstall.ts +1 -0
  941. package/src/astro/routes/api/admin/plugins/registry/[id]/update.ts +29 -10
  942. package/src/astro/routes/api/admin/plugins/registry/artifact.ts +8 -2
  943. package/src/astro/routes/api/admin/plugins/registry/install.ts +15 -4
  944. package/src/astro/routes/api/admin/plugins/registry/verify.ts +2 -1
  945. package/src/astro/routes/api/admin/plugins/updates.ts +6 -1
  946. package/src/astro/routes/api/admin/scheduled-policy-rejections/[collection]/[id].ts +34 -0
  947. package/src/astro/routes/api/comments/[collection]/[contentId]/index.ts +4 -259
  948. package/src/astro/routes/api/content/[collection]/[id]/discard-draft.ts +10 -0
  949. package/src/astro/routes/api/content/[collection]/[id]/lock.ts +133 -0
  950. package/src/astro/routes/api/content/[collection]/[id]/plugin-extensions/[pluginId]/[kind]/[extensionId].ts +29 -0
  951. package/src/astro/routes/api/content/[collection]/[id]/publish.ts +21 -4
  952. package/src/astro/routes/api/content/[collection]/[id]/schedule.ts +30 -1
  953. package/src/astro/routes/api/content/[collection]/[id]/unpublish.ts +15 -1
  954. package/src/astro/routes/api/content/[collection]/[id].ts +27 -2
  955. package/src/astro/routes/api/content/[collection]/index.ts +3 -0
  956. package/src/astro/routes/api/health.ts +23 -0
  957. package/src/astro/routes/api/manifest.ts +14 -4
  958. package/src/astro/routes/api/mcp.ts +2 -1
  959. package/src/astro/routes/api/media/asset/[id]/[filename].ts +50 -0
  960. package/src/astro/routes/api/plugins/[pluginId]/[...path].ts +13 -81
  961. package/src/astro/routes/api/redirects/[id].ts +0 -3
  962. package/src/astro/routes/api/redirects/index.ts +0 -2
  963. package/src/astro/routes/api/search/index.ts +1 -0
  964. package/src/astro/routes/api/visual-editing/action-token.ts +36 -0
  965. package/src/astro/routes/api/visual-editing/content/[collection]/[id]/publish.ts +32 -0
  966. package/src/astro/routes/api/visual-editing/toolbar-labels.ts +16 -0
  967. package/src/astro/routes/sitemap-[collection].xml.ts +11 -4
  968. package/src/astro/types.ts +83 -12
  969. package/src/cli/commands/bundle-utils.ts +19 -19
  970. package/src/cli/commands/bundle.ts +9 -6
  971. package/src/cli/commands/content.ts +32 -6
  972. package/src/cli/commands/doctor.ts +25 -0
  973. package/src/cli/commands/export-seed.ts +195 -56
  974. package/src/cli/commands/migrate.ts +71 -23
  975. package/src/cli/commands/publish.ts +2 -2
  976. package/src/client/index.ts +34 -7
  977. package/src/comments/public-submission.ts +246 -0
  978. package/src/comments/service.ts +59 -12
  979. package/src/components/EmDashBodyEnd.astro +4 -1
  980. package/src/components/EmDashBodyStart.astro +4 -1
  981. package/src/components/EmDashHead.astro +36 -16
  982. package/src/components/Gallery.astro +18 -4
  983. package/src/components/InlineEditor.astro +3 -1
  984. package/src/components/InlinePortableTextEditor.tsx +106 -11
  985. package/src/components/PortableText.astro +4 -0
  986. package/src/components/Table.astro +147 -62
  987. package/src/components/widgets/Archives.astro +6 -5
  988. package/src/config/errors.ts +13 -0
  989. package/src/config/secrets.ts +25 -11
  990. package/src/content/converters/portable-text-to-prosemirror.ts +26 -2
  991. package/src/content/converters/prosemirror-to-portable-text.ts +35 -6
  992. package/src/content/converters/types.ts +10 -0
  993. package/src/content/known-fields.ts +44 -0
  994. package/src/database/connection.ts +5 -1
  995. package/src/database/content-datetime.ts +123 -0
  996. package/src/database/datetime-storage.ts +452 -0
  997. package/src/database/dialect-helpers.ts +161 -1
  998. package/src/database/migration-lock.ts +140 -0
  999. package/src/database/migrations/075_entry_edit_locks.ts +44 -0
  1000. package/src/database/migrations/076_collection_nav_group.ts +22 -0
  1001. package/src/database/migrations/077_plugin_storage_revisions.ts +89 -0
  1002. package/src/database/migrations/078_menu_item_translation_groups.ts +15 -0
  1003. package/src/database/migrations/079_datetime_normalization.ts +13 -0
  1004. package/src/database/migrations/080_content_translation_locale_unique.ts +88 -0
  1005. package/src/database/migrations/081_redirect_write_guards.ts +257 -0
  1006. package/src/database/migrations/082_taxonomy_translation_locale_unique.ts +49 -0
  1007. package/src/database/migrations/runner.ts +63 -15
  1008. package/src/database/pg-migration-lock.ts +2 -2
  1009. package/src/database/repositories/byline.ts +9 -0
  1010. package/src/database/repositories/comment.ts +86 -0
  1011. package/src/database/repositories/content.ts +560 -69
  1012. package/src/database/repositories/entry-locks.ts +257 -0
  1013. package/src/database/repositories/media.ts +35 -4
  1014. package/src/database/repositories/menu.ts +1 -0
  1015. package/src/database/repositories/options.ts +113 -7
  1016. package/src/database/repositories/plugin-storage.ts +159 -0
  1017. package/src/database/repositories/redirect.ts +262 -56
  1018. package/src/database/repositories/revision.ts +116 -17
  1019. package/src/database/repositories/taxonomy.ts +42 -0
  1020. package/src/database/repositories/types.ts +5 -0
  1021. package/src/database/types.ts +26 -1
  1022. package/src/datetime-normalization.ts +311 -0
  1023. package/src/db/node-sqlite-compat.ts +3 -2
  1024. package/src/emdash-runtime.ts +1994 -424
  1025. package/src/fields/image.ts +2 -0
  1026. package/src/i18n/config.ts +6 -6
  1027. package/src/i18n/resolve.ts +98 -15
  1028. package/src/index.ts +101 -0
  1029. package/src/loader.ts +49 -4
  1030. package/src/mcp/server.ts +216 -68
  1031. package/src/media/responsive.ts +23 -0
  1032. package/src/media/usage/content-refresh.ts +2 -1
  1033. package/src/media/usage/extractor.ts +50 -15
  1034. package/src/media/usage/types.ts +1 -1
  1035. package/src/menus/index.ts +64 -35
  1036. package/src/migrations/direct-executor.ts +40 -2
  1037. package/src/migrations/index.ts +1 -0
  1038. package/src/migrations/protocol.ts +11 -1
  1039. package/src/page/seo-contributions.ts +78 -1
  1040. package/src/page/seo-panel.ts +47 -0
  1041. package/src/plugin-test-runtime.ts +17 -0
  1042. package/src/plugin-types.ts +128 -21
  1043. package/src/plugins/adapt-sandbox-entry.ts +34 -27
  1044. package/src/plugins/conditional-storage.ts +30 -0
  1045. package/src/plugins/content-access.ts +170 -0
  1046. package/src/plugins/content-policy.ts +74 -0
  1047. package/src/plugins/context.ts +790 -166
  1048. package/src/plugins/cron.ts +18 -10
  1049. package/src/plugins/define-plugin.ts +55 -54
  1050. package/src/plugins/editor-draft.ts +257 -0
  1051. package/src/plugins/hooks.ts +136 -3
  1052. package/src/plugins/host.ts +29 -0
  1053. package/src/plugins/http-route-dispatch.ts +389 -0
  1054. package/src/plugins/http-wire.ts +180 -0
  1055. package/src/plugins/index.ts +97 -3
  1056. package/src/plugins/install-finalization.ts +77 -0
  1057. package/src/plugins/lifecycle.ts +47 -0
  1058. package/src/plugins/manager.ts +5 -2
  1059. package/src/plugins/manifest-schema.ts +314 -58
  1060. package/src/plugins/media.ts +166 -0
  1061. package/src/plugins/request-meta.ts +12 -2
  1062. package/src/plugins/route-wire.ts +304 -0
  1063. package/src/plugins/routes.ts +38 -5
  1064. package/src/plugins/sandbox/index.ts +4 -0
  1065. package/src/plugins/sandbox/proxy.ts +129 -0
  1066. package/src/plugins/sandbox/types.ts +83 -7
  1067. package/src/plugins/secret-redactor.ts +65 -0
  1068. package/src/plugins/settings.ts +303 -0
  1069. package/src/plugins/state.ts +26 -0
  1070. package/src/plugins/storage-query.ts +45 -0
  1071. package/src/plugins/storage-update.ts +96 -0
  1072. package/src/plugins/types.ts +602 -15
  1073. package/src/query.ts +84 -4
  1074. package/src/registry/authoritative-records.ts +26 -0
  1075. package/src/registry/config.ts +182 -31
  1076. package/src/registry/testing.ts +100 -0
  1077. package/src/registry/types.ts +12 -70
  1078. package/src/scheduled-publish.ts +70 -3
  1079. package/src/schema/collection-slugs-cache.ts +157 -0
  1080. package/src/schema/index.ts +1 -0
  1081. package/src/schema/registry.ts +64 -1
  1082. package/src/schema/types.ts +32 -6
  1083. package/src/schema/zod-generator.ts +5 -13
  1084. package/src/search/fts-manager.ts +3 -3
  1085. package/src/search/query.ts +32 -5
  1086. package/src/search/types.ts +8 -0
  1087. package/src/security/ssrf.ts +167 -141
  1088. package/src/seed/apply.ts +41 -3
  1089. package/src/seed/types.ts +13 -3
  1090. package/src/seed/validate.ts +18 -1
  1091. package/src/seo/hreflang.ts +10 -6
  1092. package/src/seo/index.ts +5 -10
  1093. package/src/seo/media-url.ts +26 -0
  1094. package/src/settings/index.ts +53 -11
  1095. package/src/taxonomies/term-counts.ts +22 -5
  1096. package/src/visual-editing/action-token.ts +31 -0
  1097. package/src/visual-editing/toolbar-bootstrap.ts +31 -6
  1098. package/src/visual-editing/toolbar.ts +103 -12
  1099. package/src/widgets/archives.ts +10 -9
  1100. package/src/widgets/index.ts +11 -1
  1101. package/dist/activation-K0kGBWuJ.mjs +0 -382
  1102. package/dist/activation-K0kGBWuJ.mjs.map +0 -1
  1103. package/dist/adapters-BDQwg236.d.mts +0 -171
  1104. package/dist/adapters-BDQwg236.d.mts.map +0 -1
  1105. package/dist/after-CBU2vkoO.mjs +0 -96
  1106. package/dist/after-CBU2vkoO.mjs.map +0 -1
  1107. package/dist/allowed-origins-BGglilcs.mjs +0 -116
  1108. package/dist/allowed-origins-BGglilcs.mjs.map +0 -1
  1109. package/dist/api-Dz6rgoa3.mjs +0 -10040
  1110. package/dist/api-Dz6rgoa3.mjs.map +0 -1
  1111. package/dist/api-tokens-BSsQACNe.mjs +0 -163
  1112. package/dist/api-tokens-BSsQACNe.mjs.map +0 -1
  1113. package/dist/apply-B4SIOxR1.mjs +0 -980
  1114. package/dist/apply-B4SIOxR1.mjs.map +0 -1
  1115. package/dist/authorize-Bkf_UHhD.mjs +0 -40
  1116. package/dist/authorize-Bkf_UHhD.mjs.map +0 -1
  1117. package/dist/backup-rwVAl9NI.mjs +0 -241
  1118. package/dist/backup-rwVAl9NI.mjs.map +0 -1
  1119. package/dist/base64-CvLhUKQv.mjs +0 -63
  1120. package/dist/base64-CvLhUKQv.mjs.map +0 -1
  1121. package/dist/bundle-C8S2Zl6U.mjs +0 -663
  1122. package/dist/bundle-C8S2Zl6U.mjs.map +0 -1
  1123. package/dist/byline-DuhF7NWl.mjs +0 -902
  1124. package/dist/byline-DuhF7NWl.mjs.map +0 -1
  1125. package/dist/byline-fields-BovY4KYM.mjs +0 -123
  1126. package/dist/byline-fields-BovY4KYM.mjs.map +0 -1
  1127. package/dist/byline-registry-Bpu9-MVs.mjs +0 -406
  1128. package/dist/byline-registry-Bpu9-MVs.mjs.map +0 -1
  1129. package/dist/bylines-CJ5nd6Lw.mjs +0 -232
  1130. package/dist/bylines-CJ5nd6Lw.mjs.map +0 -1
  1131. package/dist/bylines-RwBAeOF1.mjs +0 -214
  1132. package/dist/bylines-RwBAeOF1.mjs.map +0 -1
  1133. package/dist/cache-BF5Kvn59.mjs +0 -108
  1134. package/dist/cache-BF5Kvn59.mjs.map +0 -1
  1135. package/dist/capture-triggers-CNW1q3HK.mjs +0 -362
  1136. package/dist/capture-triggers-CNW1q3HK.mjs.map +0 -1
  1137. package/dist/challenge-store-DQN_Yrck.mjs +0 -51
  1138. package/dist/challenge-store-DQN_Yrck.mjs.map +0 -1
  1139. package/dist/chrome-tags-D8fiZG94.mjs +0 -24
  1140. package/dist/chrome-tags-D8fiZG94.mjs.map +0 -1
  1141. package/dist/chunks-C4szrD8o.mjs +0 -25
  1142. package/dist/chunks-C4szrD8o.mjs.map +0 -1
  1143. package/dist/collection-deletion-Bj07NHbj.mjs +0 -436
  1144. package/dist/collection-deletion-Bj07NHbj.mjs.map +0 -1
  1145. package/dist/comment-reaction-BhrvSHml.mjs +0 -85
  1146. package/dist/comment-reaction-BhrvSHml.mjs.map +0 -1
  1147. package/dist/comment-vxOzWbZN.mjs +0 -255
  1148. package/dist/comment-vxOzWbZN.mjs.map +0 -1
  1149. package/dist/comments-Ct4ensnf.mjs +0 -204
  1150. package/dist/comments-Ct4ensnf.mjs.map +0 -1
  1151. package/dist/components-DJbo1z0S.mjs +0 -108
  1152. package/dist/components-DJbo1z0S.mjs.map +0 -1
  1153. package/dist/config-B9eZ340f.d.mts +0 -34
  1154. package/dist/config-B9eZ340f.d.mts.map +0 -1
  1155. package/dist/config-C3EBstHi.mjs +0 -72
  1156. package/dist/config-C3EBstHi.mjs.map +0 -1
  1157. package/dist/config-it29yDLA.mjs +0 -1163
  1158. package/dist/config-it29yDLA.mjs.map +0 -1
  1159. package/dist/content-DjvM0T92.mjs +0 -1725
  1160. package/dist/content-DjvM0T92.mjs.map +0 -1
  1161. package/dist/content-list-query-Btqd4uV2.d.mts +0 -26
  1162. package/dist/content-list-query-Btqd4uV2.d.mts.map +0 -1
  1163. package/dist/content-refresh-Bwp-8yGy.mjs +0 -3588
  1164. package/dist/content-refresh-Bwp-8yGy.mjs.map +0 -1
  1165. package/dist/content-repair-Czdp7jz5.mjs +0 -440
  1166. package/dist/content-repair-Czdp7jz5.mjs.map +0 -1
  1167. package/dist/context-CX6gxOLW.mjs +0 -1068
  1168. package/dist/context-CX6gxOLW.mjs.map +0 -1
  1169. package/dist/cron-C6o7VppJ.mjs +0 -277
  1170. package/dist/cron-C6o7VppJ.mjs.map +0 -1
  1171. package/dist/dashboard-C2kTeeRI.mjs +0 -140
  1172. package/dist/dashboard-C2kTeeRI.mjs.map +0 -1
  1173. package/dist/db-errors-Cl-sKYTm.mjs +0 -55
  1174. package/dist/db-errors-Cl-sKYTm.mjs.map +0 -1
  1175. package/dist/default-Clra32mw.mjs +0 -81
  1176. package/dist/default-Clra32mw.mjs.map +0 -1
  1177. package/dist/deferred-tasks-CvDETTJO.d.mts +0 -9
  1178. package/dist/deferred-tasks-CvDETTJO.d.mts.map +0 -1
  1179. package/dist/dev-typegen-DzOPfsNj.mjs +0 -29
  1180. package/dist/dev-typegen-DzOPfsNj.mjs.map +0 -1
  1181. package/dist/device-flow-D2oCWvLJ.mjs +0 -466
  1182. package/dist/device-flow-D2oCWvLJ.mjs.map +0 -1
  1183. package/dist/dialect-helpers-BSbfaO3F.mjs +0 -202
  1184. package/dist/dialect-helpers-BSbfaO3F.mjs.map +0 -1
  1185. package/dist/direct-executor-Bfa5_ToE.mjs +0 -85
  1186. package/dist/direct-executor-Bfa5_ToE.mjs.map +0 -1
  1187. package/dist/dist-89xCrGqi.mjs +0 -810
  1188. package/dist/dist-89xCrGqi.mjs.map +0 -1
  1189. package/dist/email-console-Dzb6uGYa.mjs +0 -50
  1190. package/dist/email-console-Dzb6uGYa.mjs.map +0 -1
  1191. package/dist/enrich-BX0IDp4z.mjs +0 -194
  1192. package/dist/enrich-BX0IDp4z.mjs.map +0 -1
  1193. package/dist/error-DFrQjppn.mjs +0 -90
  1194. package/dist/error-DFrQjppn.mjs.map +0 -1
  1195. package/dist/errors-DsVoDUjJ.mjs +0 -427
  1196. package/dist/errors-DsVoDUjJ.mjs.map +0 -1
  1197. package/dist/escape-HmHTC1Is.mjs +0 -9
  1198. package/dist/escape-HmHTC1Is.mjs.map +0 -1
  1199. package/dist/field-defs-cache-BM4SIRqH.mjs +0 -77
  1200. package/dist/field-defs-cache-BM4SIRqH.mjs.map +0 -1
  1201. package/dist/focal-point-BeWFo6Xx.mjs +0 -23
  1202. package/dist/focal-point-BeWFo6Xx.mjs.map +0 -1
  1203. package/dist/fts-manager-Do1BlW2r.mjs +0 -413
  1204. package/dist/fts-manager-Do1BlW2r.mjs.map +0 -1
  1205. package/dist/hash-3JJPlHF2.mjs +0 -37
  1206. package/dist/hash-3JJPlHF2.mjs.map +0 -1
  1207. package/dist/hook-result-DCh2WUpe.d.mts +0 -31
  1208. package/dist/hook-result-DCh2WUpe.d.mts.map +0 -1
  1209. package/dist/hreflang-B6hbAuuO.d.mts +0 -48
  1210. package/dist/hreflang-B6hbAuuO.d.mts.map +0 -1
  1211. package/dist/hreflang-DQbPZliA.mjs +0 -102
  1212. package/dist/hreflang-DQbPZliA.mjs.map +0 -1
  1213. package/dist/identity-DksvEazf.mjs +0 -35
  1214. package/dist/identity-DksvEazf.mjs.map +0 -1
  1215. package/dist/import-CJpaBBBT.mjs +0 -2020
  1216. package/dist/import-CJpaBBBT.mjs.map +0 -1
  1217. package/dist/index-BJNMCWmu.d.mts +0 -6562
  1218. package/dist/index-BJNMCWmu.d.mts.map +0 -1
  1219. package/dist/index-Du8K7bWa.d.mts +0 -278
  1220. package/dist/index-Du8K7bWa.d.mts.map +0 -1
  1221. package/dist/init-lock-DJkX6Hto.mjs +0 -56
  1222. package/dist/init-lock-DJkX6Hto.mjs.map +0 -1
  1223. package/dist/load-CawHjTOH.mjs +0 -28
  1224. package/dist/load-CawHjTOH.mjs.map +0 -1
  1225. package/dist/loader-Z8vl7zTq.mjs +0 -966
  1226. package/dist/loader-Z8vl7zTq.mjs.map +0 -1
  1227. package/dist/manifest-builder-COtzuca2.mjs +0 -189
  1228. package/dist/manifest-builder-COtzuca2.mjs.map +0 -1
  1229. package/dist/manifest-schema-BNWwR8Vd.mjs +0 -301
  1230. package/dist/manifest-schema-BNWwR8Vd.mjs.map +0 -1
  1231. package/dist/media-BBm8Wg3f.mjs +0 -318
  1232. package/dist/media-BBm8Wg3f.mjs.map +0 -1
  1233. package/dist/media-BHjus86Y.mjs +0 -464
  1234. package/dist/media-BHjus86Y.mjs.map +0 -1
  1235. package/dist/media-allowlist-CoTBWoDp.mjs +0 -44
  1236. package/dist/media-allowlist-CoTBWoDp.mjs.map +0 -1
  1237. package/dist/media-folders-BGkATs8n.mjs +0 -210
  1238. package/dist/media-folders-BGkATs8n.mjs.map +0 -1
  1239. package/dist/media-upload-BCidR-EY.mjs +0 -147
  1240. package/dist/media-upload-BCidR-EY.mjs.map +0 -1
  1241. package/dist/media-url-DHoPr0hq.mjs +0 -26
  1242. package/dist/media-url-DHoPr0hq.mjs.map +0 -1
  1243. package/dist/media-usage-CdY5jhSR.mjs +0 -1833
  1244. package/dist/media-usage-CdY5jhSR.mjs.map +0 -1
  1245. package/dist/media-usage-activation-BgeMtK5C.mjs +0 -78
  1246. package/dist/media-usage-activation-BgeMtK5C.mjs.map +0 -1
  1247. package/dist/media-usage-work-CnGCdHxx.mjs +0 -152
  1248. package/dist/media-usage-work-CnGCdHxx.mjs.map +0 -1
  1249. package/dist/media-usage-work-D6D9sMCA.mjs +0 -586
  1250. package/dist/media-usage-work-D6D9sMCA.mjs.map +0 -1
  1251. package/dist/media-usage-write-fence-hjeD4u7s.mjs +0 -42
  1252. package/dist/media-usage-write-fence-hjeD4u7s.mjs.map +0 -1
  1253. package/dist/menus-6qSwTNxG.mjs +0 -4010
  1254. package/dist/menus-6qSwTNxG.mjs.map +0 -1
  1255. package/dist/menus-uvPLXMZf.mjs +0 -744
  1256. package/dist/menus-uvPLXMZf.mjs.map +0 -1
  1257. package/dist/mime-CUIG6x84.mjs +0 -36
  1258. package/dist/mime-CUIG6x84.mjs.map +0 -1
  1259. package/dist/mode-DN_WneRx.mjs +0 -23
  1260. package/dist/mode-DN_WneRx.mjs.map +0 -1
  1261. package/dist/node-sqlite-compat-BuJXIeMz.mjs +0 -46
  1262. package/dist/node-sqlite-compat-BuJXIeMz.mjs.map +0 -1
  1263. package/dist/normalize-C2xNjTSG.mjs +0 -191
  1264. package/dist/normalize-C2xNjTSG.mjs.map +0 -1
  1265. package/dist/oauth-authorization-Dj6Kwc21.mjs +0 -274
  1266. package/dist/oauth-authorization-Dj6Kwc21.mjs.map +0 -1
  1267. package/dist/oauth-clients-FD7I0J8m.mjs +0 -266
  1268. package/dist/oauth-clients-FD7I0J8m.mjs.map +0 -1
  1269. package/dist/oauth-state-store-DkmDOmHs.mjs +0 -50
  1270. package/dist/oauth-state-store-DkmDOmHs.mjs.map +0 -1
  1271. package/dist/oauth-user-lookup-CvIwGpYd.mjs +0 -26
  1272. package/dist/oauth-user-lookup-CvIwGpYd.mjs.map +0 -1
  1273. package/dist/object-cache-DVKnyOfy.mjs +0 -534
  1274. package/dist/object-cache-DVKnyOfy.mjs.map +0 -1
  1275. package/dist/options-BHPeIbBd.mjs +0 -117
  1276. package/dist/options-BHPeIbBd.mjs.map +0 -1
  1277. package/dist/options-CYb4y7hM.d.mts +0 -221
  1278. package/dist/options-CYb4y7hM.d.mts.map +0 -1
  1279. package/dist/parse-Ckpg-Qfp.mjs +0 -81
  1280. package/dist/parse-Ckpg-Qfp.mjs.map +0 -1
  1281. package/dist/passkey-config-O_lj3y0k.mjs +0 -46
  1282. package/dist/passkey-config-O_lj3y0k.mjs.map +0 -1
  1283. package/dist/patterns-D9iDO3j8.mjs +0 -145
  1284. package/dist/patterns-D9iDO3j8.mjs.map +0 -1
  1285. package/dist/placeholder-4X9BrRrp.d.mts +0 -306
  1286. package/dist/placeholder-4X9BrRrp.d.mts.map +0 -1
  1287. package/dist/policy-Dhtwntrt.mjs +0 -45
  1288. package/dist/policy-Dhtwntrt.mjs.map +0 -1
  1289. package/dist/portable-text-U85hOafW.mjs +0 -286
  1290. package/dist/portable-text-U85hOafW.mjs.map +0 -1
  1291. package/dist/preview-B_vJLvf8.mjs +0 -107
  1292. package/dist/preview-B_vJLvf8.mjs.map +0 -1
  1293. package/dist/protocol-JdD2YhY9.d.mts +0 -52
  1294. package/dist/protocol-JdD2YhY9.d.mts.map +0 -1
  1295. package/dist/public-url-CarhZJgf.mjs +0 -101
  1296. package/dist/public-url-CarhZJgf.mjs.map +0 -1
  1297. package/dist/query-BZKZcG5b.mjs +0 -881
  1298. package/dist/query-BZKZcG5b.mjs.map +0 -1
  1299. package/dist/query-BndaFxxp.mjs +0 -41
  1300. package/dist/query-BndaFxxp.mjs.map +0 -1
  1301. package/dist/rate-limit-BZmATC6W.mjs +0 -120
  1302. package/dist/rate-limit-BZmATC6W.mjs.map +0 -1
  1303. package/dist/redirect-CZkbozu9.mjs +0 -313
  1304. package/dist/redirect-CZkbozu9.mjs.map +0 -1
  1305. package/dist/redirect-CzqnLxK-.mjs +0 -17
  1306. package/dist/redirect-CzqnLxK-.mjs.map +0 -1
  1307. package/dist/redirects-BLNOWQTn.mjs +0 -1238
  1308. package/dist/redirects-BLNOWQTn.mjs.map +0 -1
  1309. package/dist/redirects-CqzNM0KM.mjs +0 -579
  1310. package/dist/redirects-CqzNM0KM.mjs.map +0 -1
  1311. package/dist/registry-AZAsRsor.mjs +0 -1179
  1312. package/dist/registry-AZAsRsor.mjs.map +0 -1
  1313. package/dist/relation-04DfKRTO.mjs +0 -334
  1314. package/dist/relation-04DfKRTO.mjs.map +0 -1
  1315. package/dist/relations-C4htk5sb.mjs +0 -309
  1316. package/dist/relations-C4htk5sb.mjs.map +0 -1
  1317. package/dist/relations-CcFwDJdJ.mjs +0 -403
  1318. package/dist/relations-CcFwDJdJ.mjs.map +0 -1
  1319. package/dist/relations-DnRK4YIT.d.mts +0 -3354
  1320. package/dist/relations-DnRK4YIT.d.mts.map +0 -1
  1321. package/dist/request-cache-DH9zdCOD.mjs +0 -104
  1322. package/dist/request-cache-DH9zdCOD.mjs.map +0 -1
  1323. package/dist/request-meta-DYxLlnmz.mjs +0 -140
  1324. package/dist/request-meta-DYxLlnmz.mjs.map +0 -1
  1325. package/dist/resolve-prZ3mP7l.mjs +0 -143
  1326. package/dist/resolve-prZ3mP7l.mjs.map +0 -1
  1327. package/dist/runner-BLIDKpmA.mjs +0 -4676
  1328. package/dist/runner-BLIDKpmA.mjs.map +0 -1
  1329. package/dist/runner-YKfIMnaF.d.mts +0 -67
  1330. package/dist/runner-YKfIMnaF.d.mts.map +0 -1
  1331. package/dist/schema-CGnBeLiW.mjs +0 -9
  1332. package/dist/schema-CGnBeLiW.mjs.map +0 -1
  1333. package/dist/schema-DYr-Vd-L.mjs +0 -420
  1334. package/dist/schema-DYr-Vd-L.mjs.map +0 -1
  1335. package/dist/scopes-BhWvBavj.mjs +0 -27
  1336. package/dist/scopes-BhWvBavj.mjs.map +0 -1
  1337. package/dist/search-C-qDk4kx.mjs +0 -439
  1338. package/dist/search-C-qDk4kx.mjs.map +0 -1
  1339. package/dist/secrets-rEtHt-6z.mjs +0 -330
  1340. package/dist/secrets-rEtHt-6z.mjs.map +0 -1
  1341. package/dist/sections-B_nYvlwn.mjs +0 -346
  1342. package/dist/sections-B_nYvlwn.mjs.map +0 -1
  1343. package/dist/seo-926NRIgt.mjs +0 -133
  1344. package/dist/seo-926NRIgt.mjs.map +0 -1
  1345. package/dist/seo-CVWkdv6x.mjs +0 -113
  1346. package/dist/seo-CVWkdv6x.mjs.map +0 -1
  1347. package/dist/service-CJl3ZAYs.mjs +0 -195
  1348. package/dist/service-CJl3ZAYs.mjs.map +0 -1
  1349. package/dist/session-user-BlMgqCHS.mjs +0 -51
  1350. package/dist/session-user-BlMgqCHS.mjs.map +0 -1
  1351. package/dist/settings--wobrkkC.mjs +0 -258
  1352. package/dist/settings--wobrkkC.mjs.map +0 -1
  1353. package/dist/settings-Cwm6o2jY.mjs +0 -51
  1354. package/dist/settings-Cwm6o2jY.mjs.map +0 -1
  1355. package/dist/setup-complete-DQbClIN2.mjs +0 -26
  1356. package/dist/setup-complete-DQbClIN2.mjs.map +0 -1
  1357. package/dist/setup-nonce-DZCFS2sn.mjs +0 -25
  1358. package/dist/setup-nonce-DZCFS2sn.mjs.map +0 -1
  1359. package/dist/single-flight-cache-BPuGPdcN.mjs +0 -104
  1360. package/dist/single-flight-cache-BPuGPdcN.mjs.map +0 -1
  1361. package/dist/site-url-BrxA_E9H.mjs +0 -16
  1362. package/dist/site-url-BrxA_E9H.mjs.map +0 -1
  1363. package/dist/slugify-B994zkXC.mjs +0 -17
  1364. package/dist/slugify-B994zkXC.mjs.map +0 -1
  1365. package/dist/snapshot--OCDTqdb.mjs +0 -216
  1366. package/dist/snapshot--OCDTqdb.mjs.map +0 -1
  1367. package/dist/ssrf-5sIM5jzl.mjs +0 -349
  1368. package/dist/ssrf-5sIM5jzl.mjs.map +0 -1
  1369. package/dist/state-BpFVsJZB.mjs +0 -136
  1370. package/dist/state-BpFVsJZB.mjs.map +0 -1
  1371. package/dist/status-B777-dXz.mjs +0 -30
  1372. package/dist/status-B777-dXz.mjs.map +0 -1
  1373. package/dist/target-BmR0iTwz.mjs +0 -27
  1374. package/dist/target-BmR0iTwz.mjs.map +0 -1
  1375. package/dist/taxonomies-DkAkMupr.mjs +0 -837
  1376. package/dist/taxonomies-DkAkMupr.mjs.map +0 -1
  1377. package/dist/taxonomies-Wfy_Lg12.mjs +0 -698
  1378. package/dist/taxonomies-Wfy_Lg12.mjs.map +0 -1
  1379. package/dist/taxonomy-tJepplLL.mjs +0 -484
  1380. package/dist/taxonomy-tJepplLL.mjs.map +0 -1
  1381. package/dist/tokens-BCO1oruF.mjs +0 -171
  1382. package/dist/tokens-BCO1oruF.mjs.map +0 -1
  1383. package/dist/transaction-0KOpOyMu.mjs +0 -29
  1384. package/dist/transaction-0KOpOyMu.mjs.map +0 -1
  1385. package/dist/transport-Dr3qtwXC.mjs +0 -136
  1386. package/dist/transport-Dr3qtwXC.mjs.map +0 -1
  1387. package/dist/transport-xh6YKW2G.d.mts +0 -42
  1388. package/dist/transport-xh6YKW2G.d.mts.map +0 -1
  1389. package/dist/trusted-proxy-BR5F1Otp.mjs +0 -51
  1390. package/dist/trusted-proxy-BR5F1Otp.mjs.map +0 -1
  1391. package/dist/types-3qNFPlci.mjs +0 -16
  1392. package/dist/types-3qNFPlci.mjs.map +0 -1
  1393. package/dist/types-75KIqzL9.mjs +0 -142
  1394. package/dist/types-75KIqzL9.mjs.map +0 -1
  1395. package/dist/types-B6GrPic4.d.mts +0 -1335
  1396. package/dist/types-B6GrPic4.d.mts.map +0 -1
  1397. package/dist/types-BuHW4xDE.d.mts +0 -259
  1398. package/dist/types-BuHW4xDE.d.mts.map +0 -1
  1399. package/dist/types-C00oyCZp.d.mts +0 -198
  1400. package/dist/types-C00oyCZp.d.mts.map +0 -1
  1401. package/dist/types-CDtkNSFQ.d.mts +0 -75
  1402. package/dist/types-CDtkNSFQ.d.mts.map +0 -1
  1403. package/dist/types-CPeXo1wF.d.mts +0 -124
  1404. package/dist/types-CPeXo1wF.d.mts.map +0 -1
  1405. package/dist/types-CQPWhPxE.mjs +0 -92
  1406. package/dist/types-CQPWhPxE.mjs.map +0 -1
  1407. package/dist/types-CXFkwEGC.d.mts +0 -198
  1408. package/dist/types-CXFkwEGC.d.mts.map +0 -1
  1409. package/dist/types-DM3vioBY.mjs +0 -18
  1410. package/dist/types-DM3vioBY.mjs.map +0 -1
  1411. package/dist/types-DczELMop.d.mts +0 -363
  1412. package/dist/types-DczELMop.d.mts.map +0 -1
  1413. package/dist/types-DfuTR6dL.mjs +0 -3
  1414. package/dist/types-FV23hEoW.d.mts +0 -743
  1415. package/dist/types-FV23hEoW.d.mts.map +0 -1
  1416. package/dist/types-xDMtUFnO.d.mts +0 -257
  1417. package/dist/types-xDMtUFnO.d.mts.map +0 -1
  1418. package/dist/upload-attempts-BsqoQ1fn.mjs +0 -27
  1419. package/dist/upload-attempts-BsqoQ1fn.mjs.map +0 -1
  1420. package/dist/url-pattern-D4c2czpJ.mjs +0 -33
  1421. package/dist/url-pattern-D4c2czpJ.mjs.map +0 -1
  1422. package/dist/user-BTZ40aq6.mjs +0 -171
  1423. package/dist/user-BTZ40aq6.mjs.map +0 -1
  1424. package/dist/utils-BKvNjjhY.mjs +0 -435
  1425. package/dist/utils-BKvNjjhY.mjs.map +0 -1
  1426. package/dist/validate-BpwoDOgt.mjs +0 -120
  1427. package/dist/validate-BpwoDOgt.mjs.map +0 -1
  1428. package/dist/validate-DE_LRwo9.mjs +0 -379
  1429. package/dist/validate-DE_LRwo9.mjs.map +0 -1
  1430. package/dist/validate-DUP27OYD.d.mts +0 -400
  1431. package/dist/validate-DUP27OYD.d.mts.map +0 -1
  1432. package/dist/validation-BMImFJ11.mjs +0 -153
  1433. package/dist/validation-BMImFJ11.mjs.map +0 -1
  1434. package/dist/version-Bii3suaO.mjs +0 -7
  1435. package/dist/version-Bii3suaO.mjs.map +0 -1
  1436. package/dist/widgets-D3gJ10xU.mjs +0 -122
  1437. package/dist/widgets-D3gJ10xU.mjs.map +0 -1
  1438. package/dist/wxr-taxonomies-B2Og_6rU.d.mts +0 -34
  1439. package/dist/wxr-taxonomies-B2Og_6rU.d.mts.map +0 -1
  1440. package/dist/wxr-taxonomies-Cxngsjwo.mjs +0 -406
  1441. package/dist/wxr-taxonomies-Cxngsjwo.mjs.map +0 -1
  1442. package/dist/zod-generator-BuYSQJB7.mjs +0 -331
  1443. package/dist/zod-generator-BuYSQJB7.mjs.map +0 -1
  1444. /package/dist/{api-tokens-BfYts-sq.mjs → api-tokens-DS1VzN7_.mjs} +0 -0
  1445. /package/dist/{ssrf-Dg3cIT-b.mjs → ssrf-BRpTDMV6.mjs} +0 -0
@@ -0,0 +1,1520 @@
1
+ import { a as MAX_COLLECTION_LIST_COLUMNS, i as MAX_COLLECTION_GROUP_LENGTH } from "./types-B3RkqvDW.mjs";
2
+ import { t as SQL_BATCH_SIZE } from "./chunks-BmWyou79.mjs";
3
+ import { t as isValidFocalPointUpdate } from "./focal-point-Gr34o-4o.mjs";
4
+ import { t as SEARCH_TOKENIZERS } from "./types-CSHgU_-_.mjs";
5
+ import { C as slugPattern, S as roleLevel, g as cursorPaginationQuery, v as httpUrl, y as localeCode } from "./redirects-BCiTaIQ-.mjs";
6
+ import { t as compileUrlPattern } from "./url-pattern-3m3reMzr.mjs";
7
+ import { z } from "zod";
8
+
9
+ //#region src/api/schemas/bylines.ts
10
+ /** Slug pattern: lowercase letters, digits, and hyphens; must start with a letter */
11
+ const bylineSlugPattern = /^[a-z][a-z0-9-]*$/;
12
+ const bylineSummarySchema = z.object({
13
+ id: z.string(),
14
+ slug: z.string(),
15
+ displayName: z.string(),
16
+ bio: z.string().nullable(),
17
+ avatarMediaId: z.string().nullable(),
18
+ avatarStorageKey: z.string().nullish(),
19
+ avatarAlt: z.string().nullish(),
20
+ avatarBlurhash: z.string().nullish(),
21
+ avatarDominantColor: z.string().nullish(),
22
+ websiteUrl: z.string().nullable(),
23
+ userId: z.string().nullable(),
24
+ isGuest: z.boolean(),
25
+ createdAt: z.string(),
26
+ updatedAt: z.string(),
27
+ locale: z.string(),
28
+ translationGroup: z.string().nullable(),
29
+ customFields: z.record(z.string(), z.union([
30
+ z.string(),
31
+ z.boolean(),
32
+ z.null()
33
+ ])).optional()
34
+ }).meta({ id: "BylineSummary" });
35
+ const bylineCreditSchema = z.object({
36
+ byline: bylineSummarySchema,
37
+ sortOrder: z.number().int(),
38
+ roleLabel: z.string().nullable(),
39
+ source: z.enum(["explicit", "inferred"]).optional().meta({ description: "Whether this credit was explicitly assigned or inferred from authorId" })
40
+ }).meta({ id: "BylineCredit" });
41
+ const contentBylineInputSchema = z.object({
42
+ bylineId: z.string().min(1),
43
+ roleLabel: z.string().nullish()
44
+ }).meta({ id: "ContentBylineInput" });
45
+ const bylinesListQuery = cursorPaginationQuery.extend({
46
+ search: z.string().optional(),
47
+ isGuest: z.coerce.boolean().optional(),
48
+ userId: z.string().optional(),
49
+ locale: localeCode.optional()
50
+ }).meta({ id: "BylinesListQuery" });
51
+ const bylineCreateBody = z.object({
52
+ slug: z.string().min(1).regex(bylineSlugPattern, "Slug must contain only lowercase letters, digits, and hyphens"),
53
+ displayName: z.string().min(1),
54
+ bio: z.string().nullish(),
55
+ avatarMediaId: z.string().nullish(),
56
+ websiteUrl: httpUrl.nullish(),
57
+ userId: z.string().nullish(),
58
+ isGuest: z.boolean().optional(),
59
+ locale: localeCode.optional(),
60
+ translationOf: z.string().min(1).optional(),
61
+ customFields: z.record(z.string(), z.unknown()).optional()
62
+ }).meta({ id: "BylineCreateBody" });
63
+ const bylineTranslationCreateBody = z.object({
64
+ locale: localeCode,
65
+ slug: z.string().min(1).regex(bylineSlugPattern, "Slug must contain only lowercase letters, digits, and hyphens").optional(),
66
+ displayName: z.string().min(1).optional(),
67
+ bio: z.string().nullish(),
68
+ avatarMediaId: z.string().nullish(),
69
+ websiteUrl: httpUrl.nullish()
70
+ }).meta({ id: "BylineTranslationCreateBody" });
71
+ const bylineTranslationsResponseSchema = z.object({ items: z.array(bylineSummarySchema) }).meta({ id: "BylineTranslationsResponse" });
72
+ const bylineUpdateBody = z.object({
73
+ slug: z.string().min(1).regex(bylineSlugPattern, "Slug must contain only lowercase letters, digits, and hyphens").optional(),
74
+ displayName: z.string().min(1).optional(),
75
+ bio: z.string().nullish(),
76
+ avatarMediaId: z.string().nullish(),
77
+ websiteUrl: httpUrl.nullish(),
78
+ userId: z.string().nullish(),
79
+ isGuest: z.boolean().optional(),
80
+ customFields: z.record(z.string(), z.unknown()).optional()
81
+ }).meta({ id: "BylineUpdateBody" });
82
+ const bylineListResponseSchema = z.object({
83
+ items: z.array(bylineSummarySchema),
84
+ nextCursor: z.string().optional()
85
+ }).meta({ id: "BylineListResponse" });
86
+
87
+ //#endregion
88
+ //#region src/api/schemas/content.ts
89
+ const contentDateTime = z.iso.datetime({
90
+ offset: true,
91
+ message: "must be an ISO 8601 datetime"
92
+ }).or(z.iso.datetime({
93
+ offset: true,
94
+ precision: -1,
95
+ message: "must be an ISO 8601 datetime"
96
+ }));
97
+ /** SEO input — per-content meta fields */
98
+ const contentSeoInput = z.object({
99
+ title: z.string().max(200).nullish(),
100
+ description: z.string().max(500).nullish(),
101
+ image: z.string().nullish(),
102
+ canonical: httpUrl.nullish(),
103
+ noIndex: z.boolean().optional()
104
+ }).meta({ id: "ContentSeoInput" });
105
+ /** ISO 8601 date or datetime bound for the content-list date range filter. */
106
+ const contentDateBound = z.union([contentDateTime, z.iso.date({ message: "must be an ISO 8601 date" })]).optional();
107
+ /**
108
+ * Byline ids for the content-list filter: either the literal `none` or a
109
+ * comma-separated list, parsed into an array.
110
+ *
111
+ * The 25-id cap keeps the `IN (...)` clause clear of D1's bound-parameter
112
+ * ceiling once the rest of the list query's placeholders are counted
113
+ * (`SQL_BATCH_SIZE` is 50 for a query binding nothing else).
114
+ */
115
+ const bylineFilterParam = z.string().trim().min(1).max(2e3).optional().transform((value) => value === void 0 ? void 0 : value === "none" ? "none" : [...new Set(value.split(",").map((id) => id.trim()))].filter((id) => id.length > 0)).refine((value) => value === void 0 || value === "none" || value.length <= 25, { message: "at most 25 bylines may be selected" }).refine((value) => value === void 0 || value === "none" || value.length > 0, { message: "must contain at least one byline id" });
116
+ /** Query-string boolean. Explicit values only — `z.coerce.boolean()` reads "false" as true. */
117
+ const booleanParam = z.enum([
118
+ "1",
119
+ "0",
120
+ "true",
121
+ "false"
122
+ ]).optional().transform((value) => value === "1" || value === "true");
123
+ const contentFieldComparable = z.union([z.string().max(2048), z.number()]);
124
+ const contentFieldFilterScalar = z.union([
125
+ contentFieldComparable,
126
+ z.boolean(),
127
+ z.null()
128
+ ]);
129
+ const contentFieldFilterValue = z.union([
130
+ contentFieldFilterScalar,
131
+ z.object({ in: z.array(z.union([contentFieldComparable, z.boolean()])).min(1).max(SQL_BATCH_SIZE) }).strict(),
132
+ z.object({
133
+ gt: contentFieldComparable.optional(),
134
+ gte: contentFieldComparable.optional(),
135
+ lt: contentFieldComparable.optional(),
136
+ lte: contentFieldComparable.optional()
137
+ }).strict().refine((value) => Object.values(value).some((bound) => bound !== void 0), { message: "Range filter must include at least one bound" })
138
+ ]);
139
+ function contentFieldFilterOperandCount(value) {
140
+ if (value === null) return 0;
141
+ if (!value || typeof value !== "object" || Array.isArray(value)) return 1;
142
+ if ("in" in value && Array.isArray(value.in)) return value.in.length;
143
+ return Object.values(value).filter((bound) => bound !== void 0).length;
144
+ }
145
+ /** AND-combined filters over custom fields explicitly marked as indexed. */
146
+ const contentFieldFiltersSchema = z.record(z.string().max(128).regex(/^[a-z][a-z0-9_]*$/, "must be a safe field identifier"), contentFieldFilterValue).refine((filters) => Object.keys(filters).length <= 20, { message: "At most 20 indexed field filters are allowed" }).refine((filters) => Object.values(filters).reduce((total, value) => total + contentFieldFilterOperandCount(value), 0) <= SQL_BATCH_SIZE, { message: `Indexed field filters have a total operand budget of ${SQL_BATCH_SIZE}` });
147
+ const contentFieldFiltersQuery = z.string().max(8192).transform((value, ctx) => {
148
+ try {
149
+ return JSON.parse(value);
150
+ } catch {
151
+ ctx.addIssue({
152
+ code: "custom",
153
+ message: "must be valid JSON"
154
+ });
155
+ return z.NEVER;
156
+ }
157
+ }).pipe(contentFieldFiltersSchema);
158
+ const contentListQuery = cursorPaginationQuery.extend({
159
+ status: z.string().optional(),
160
+ orderBy: z.string().optional(),
161
+ order: z.enum(["asc", "desc"]).optional(),
162
+ locale: localeCode.optional(),
163
+ q: z.string().trim().min(1).max(200).optional(),
164
+ authorId: z.string().min(1).max(64).optional(),
165
+ dateField: z.enum([
166
+ "createdAt",
167
+ "updatedAt",
168
+ "publishedAt"
169
+ ]).optional(),
170
+ dateFrom: contentDateBound,
171
+ dateTo: contentDateBound,
172
+ bylines: bylineFilterParam,
173
+ includeInferredBylines: booleanParam,
174
+ fieldFilters: contentFieldFiltersQuery.optional()
175
+ }).transform(({ bylines, ...rest }) => ({
176
+ ...rest,
177
+ bylinesNone: bylines === "none",
178
+ bylines: bylines === "none" ? void 0 : bylines
179
+ })).meta({ id: "ContentListQuery" });
180
+ /** ISO 8601 datetime for `publishedAt` / `createdAt`. Routes gate writes behind `content:publish_any`. */
181
+ const contentDateOverride = contentDateTime.nullish();
182
+ const overrideLockFlag = z.boolean().optional().meta({ description: "Write even though another editor holds this entry's edit lock. Without it the write is refused with 409 ENTRY_LOCKED." });
183
+ const contentCreateBody = z.object({
184
+ data: z.record(z.string(), z.unknown()),
185
+ slug: z.string().nullish(),
186
+ status: z.enum(["draft"]).optional(),
187
+ bylines: z.array(contentBylineInputSchema).optional(),
188
+ locale: localeCode.optional(),
189
+ translationOf: z.string().optional(),
190
+ seo: contentSeoInput.optional(),
191
+ taxonomies: z.record(z.string(), z.array(z.string())).optional().meta({ description: "Taxonomy term assignments as { taxonomyName: [termSlug, ...] }, resolved in the entry's locale." }),
192
+ publishedAt: contentDateOverride,
193
+ createdAt: contentDateOverride
194
+ }).meta({ id: "ContentCreateBody" });
195
+ const contentUpdateBody = z.object({
196
+ data: z.record(z.string(), z.unknown()).optional(),
197
+ slug: z.string().nullish(),
198
+ status: z.enum(["draft"]).optional(),
199
+ authorId: z.string().nullish(),
200
+ bylines: z.array(contentBylineInputSchema).optional(),
201
+ _rev: z.string().optional().meta({ description: "Opaque revision token for optimistic concurrency" }),
202
+ skipRevision: z.boolean().optional(),
203
+ overrideLock: overrideLockFlag,
204
+ seo: contentSeoInput.optional(),
205
+ taxonomies: z.record(z.string(), z.array(z.string())).optional().meta({ description: "Replace taxonomy assignments as { taxonomyName: [termSlug, ...] }. Only named taxonomies are touched; pass an empty array to clear a taxonomy." }),
206
+ publishedAt: contentDateOverride
207
+ }).meta({ id: "ContentUpdateBody" });
208
+ const contentScheduleBody = z.object({
209
+ scheduledAt: contentDateTime.meta({
210
+ description: "ISO 8601 datetime with Z or an explicit offset for scheduled publishing",
211
+ examples: ["2025-06-15T09:00:00Z"]
212
+ }),
213
+ overrideLock: overrideLockFlag,
214
+ _rev: z.string().optional().meta({ description: "Opaque revision token for optimistic concurrency" })
215
+ }).meta({ id: "ContentScheduleBody" });
216
+ const contentRevisionConditionBody = z.object({
217
+ _rev: z.string().optional().meta({ description: "Opaque revision token for optimistic concurrency" }),
218
+ overrideLock: overrideLockFlag
219
+ }).meta({ id: "ContentRevisionConditionBody" });
220
+ const contentPublishBody = contentRevisionConditionBody.extend({ publishedAt: contentDateTime.optional().meta({ description: "Optional ISO 8601 datetime to backdate the publish (e.g. when migrating content). Requires content:publish_any permission. Without this, existing published_at is preserved on re-publish." }) }).meta({ id: "ContentPublishBody" });
221
+ const contentPreviewUrlBody = z.object({
222
+ expiresIn: z.union([z.string(), z.number()]).optional(),
223
+ pathPattern: z.string().optional()
224
+ }).meta({ id: "ContentPreviewUrlBody" });
225
+ const contentTermsBody = z.object({ termIds: z.array(z.string()) }).meta({ id: "ContentTermsBody" });
226
+ /** A single term variant returned as part of an entry's term assignments. */
227
+ const contentEntryTermSchema = z.object({
228
+ id: z.string(),
229
+ name: z.string().meta({ description: "Taxonomy name" }),
230
+ slug: z.string(),
231
+ label: z.string(),
232
+ parentId: z.string().nullable(),
233
+ locale: localeCode,
234
+ translationGroup: z.string().nullable()
235
+ }).meta({ id: "ContentEntryTerm" });
236
+ /** Term assignments response for the content terms endpoint. */
237
+ const contentTermsResponseSchema = z.object({
238
+ terms: z.array(contentEntryTermSchema),
239
+ unresolved: z.array(z.object({
240
+ translationGroup: z.string(),
241
+ availableLocales: z.array(localeCode),
242
+ translations: z.array(z.object({
243
+ id: z.string(),
244
+ slug: z.string(),
245
+ locale: localeCode
246
+ }))
247
+ })),
248
+ entryLocale: localeCode,
249
+ defaultLocale: localeCode,
250
+ implicitDefaultLocale: z.boolean()
251
+ }).meta({ id: "ContentTermsResponse" });
252
+ const contentTrashQuery = cursorPaginationQuery.extend({ locale: localeCode.optional().meta({ description: "Restrict the trash listing to entries in this locale" }) }).meta({ id: "ContentTrashQuery" });
253
+ /** SEO metadata on a content item */
254
+ const contentSeoSchema = z.object({
255
+ title: z.string().nullable(),
256
+ description: z.string().nullable(),
257
+ image: z.string().nullable(),
258
+ canonical: z.string().nullable(),
259
+ noIndex: z.boolean()
260
+ }).meta({ id: "ContentSeo" });
261
+ /** A single content item as returned by the API */
262
+ const contentItemSchema = z.object({
263
+ id: z.string(),
264
+ type: z.string().meta({ description: "Collection slug this item belongs to" }),
265
+ slug: z.string().nullable(),
266
+ status: z.string().meta({ description: "draft, published, or scheduled" }),
267
+ data: z.record(z.string(), z.unknown()).meta({ description: "User-defined field values" }),
268
+ authorId: z.string().nullable(),
269
+ primaryBylineId: z.string().nullable(),
270
+ byline: bylineSummarySchema.nullable().optional(),
271
+ bylines: z.array(bylineCreditSchema).optional(),
272
+ createdAt: z.string(),
273
+ updatedAt: z.string(),
274
+ publishedAt: z.string().nullable(),
275
+ scheduledAt: z.string().nullable(),
276
+ liveRevisionId: z.string().nullable(),
277
+ draftRevisionId: z.string().nullable(),
278
+ version: z.number().int(),
279
+ locale: z.string().nullable(),
280
+ translationGroup: z.string().nullable(),
281
+ seo: contentSeoSchema.optional()
282
+ }).meta({ id: "ContentItem" });
283
+ /** Response for single content item endpoints (get, create, update) */
284
+ const contentResponseSchema = z.object({
285
+ item: contentItemSchema,
286
+ _rev: z.string().optional().meta({ description: "Opaque revision token for optimistic concurrency" })
287
+ }).meta({ id: "ContentResponse" });
288
+ /** Response for restoring an item from trash */
289
+ const contentRestoreResponseSchema = z.object({
290
+ restored: z.literal(true),
291
+ item: contentItemSchema,
292
+ _rev: z.string().meta({ description: "Opaque revision token for optimistic concurrency" })
293
+ }).meta({ id: "ContentRestoreResponse" });
294
+ /** Response for content list endpoints */
295
+ const contentListResponseSchema = z.object({
296
+ items: z.array(contentItemSchema),
297
+ nextCursor: z.string().optional(),
298
+ total: z.number().int().nonnegative().optional()
299
+ }).meta({ id: "ContentListResponse" });
300
+ /** A distinct content author for the admin author filter */
301
+ const contentAuthorSchema = z.object({
302
+ id: z.string(),
303
+ name: z.string().nullable(),
304
+ email: z.string(),
305
+ avatarUrl: z.string().nullable()
306
+ }).meta({ id: "ContentAuthor" });
307
+ /** Response for the content authors endpoint */
308
+ const contentAuthorsResponseSchema = z.object({ items: z.array(contentAuthorSchema) }).meta({ id: "ContentAuthorsResponse" });
309
+ /** Trashed content item */
310
+ const trashedContentItemSchema = z.object({
311
+ id: z.string(),
312
+ type: z.string(),
313
+ slug: z.string().nullable(),
314
+ status: z.string(),
315
+ locale: z.string().nullable(),
316
+ translationGroup: z.string().nullable(),
317
+ data: z.record(z.string(), z.unknown()),
318
+ authorId: z.string().nullable(),
319
+ createdAt: z.string(),
320
+ updatedAt: z.string(),
321
+ publishedAt: z.string().nullable(),
322
+ deletedAt: z.string()
323
+ }).meta({ id: "TrashedContentItem" });
324
+ /** Response for trashed content list */
325
+ const trashedContentListResponseSchema = z.object({
326
+ items: z.array(trashedContentItemSchema),
327
+ nextCursor: z.string().optional()
328
+ }).meta({ id: "TrashedContentListResponse" });
329
+ /** Response for content compare (live vs draft) */
330
+ const contentCompareResponseSchema = z.object({
331
+ hasChanges: z.boolean(),
332
+ live: z.record(z.string(), z.unknown()).nullable(),
333
+ draft: z.record(z.string(), z.unknown()).nullable()
334
+ }).meta({ id: "ContentCompareResponse" });
335
+ /** Translation summary for a content item */
336
+ const contentTranslationSchema = z.object({
337
+ id: z.string(),
338
+ locale: z.string().nullable(),
339
+ slug: z.string().nullable(),
340
+ status: z.string(),
341
+ updatedAt: z.string()
342
+ });
343
+ /** Response for content translations endpoint */
344
+ const contentTranslationsResponseSchema = z.object({
345
+ translationGroup: z.string(),
346
+ translations: z.array(contentTranslationSchema)
347
+ }).meta({ id: "ContentTranslationsResponse" });
348
+
349
+ //#endregion
350
+ //#region src/api/schemas/media-usage.ts
351
+ const mediaUsageCoverageStatusSchema = z.enum([
352
+ "complete",
353
+ "never",
354
+ "running",
355
+ "partial",
356
+ "failed",
357
+ "stale",
358
+ "unknown"
359
+ ]).meta({ id: "MediaUsageCoverageStatus" });
360
+ const mediaUsageCoverageSchema = z.object({
361
+ scope: z.literal("all_content_collections"),
362
+ status: mediaUsageCoverageStatusSchema
363
+ }).meta({ id: "MediaUsageCoverage" });
364
+ const mediaUsageProgressSchema = z.object({
365
+ status: z.enum([
366
+ "indexing",
367
+ "ready",
368
+ "needs_attention"
369
+ ]),
370
+ readyCollections: z.number().int().min(0),
371
+ totalCollections: z.number().int().min(0)
372
+ }).meta({ id: "MediaUsageProgress" });
373
+ const mediaUsageSummarySchema = z.object({
374
+ count: z.number().int().min(0).nullable(),
375
+ coverage: mediaUsageCoverageSchema
376
+ }).meta({ id: "MediaUsageSummary" });
377
+ const mediaUsageDetailsQuery = z.object({
378
+ cursor: z.string().min(1).max(2048).optional().meta({ description: "Opaque content-entry-group cursor" }),
379
+ limit: z.coerce.number().int().min(1).max(100).optional().default(50).meta({ description: "Maximum number of content entry groups to return (1-100, default 50)" })
380
+ });
381
+ const mediaUsageOccurrenceDetailSchema = z.object({
382
+ fieldSlug: z.string(),
383
+ fieldPath: z.string(),
384
+ occurrenceIndex: z.number().int().min(0),
385
+ referenceType: z.enum([
386
+ "image_field",
387
+ "file_field",
388
+ "portable_text_image",
389
+ "unknown"
390
+ ])
391
+ }).meta({ id: "MediaUsageOccurrenceDetail" });
392
+ const mediaUsageSourceDetailSchema = z.object({
393
+ variant: z.enum(["columns", "draft_overlay"]),
394
+ occurrences: z.array(mediaUsageOccurrenceDetailSchema)
395
+ }).meta({ id: "MediaUsageSourceDetail" });
396
+ const mediaUsageEntryDetailSchema = z.object({
397
+ collection: z.string(),
398
+ contentId: z.string(),
399
+ title: z.string().nullable(),
400
+ slug: z.string().nullable(),
401
+ locale: z.string().nullable(),
402
+ status: z.string().nullable(),
403
+ scheduledAt: z.string().nullable(),
404
+ deletedAt: z.string().nullable(),
405
+ sources: z.array(mediaUsageSourceDetailSchema)
406
+ }).meta({ id: "MediaUsageEntryDetail" });
407
+ const mediaUsageDetailsResponseSchema = z.object({
408
+ items: z.array(mediaUsageEntryDetailSchema),
409
+ nextCursor: z.string().optional(),
410
+ coverage: mediaUsageCoverageSchema
411
+ }).meta({ id: "MediaUsageDetailsResponse" });
412
+ const mediaUsageRepairStatusSchema = z.enum([
413
+ "complete",
414
+ "partial",
415
+ "failed",
416
+ "stale"
417
+ ]).meta({ id: "MediaUsageRepairStatus" });
418
+ const mediaUsageRepairCollectionBody = z.object({
419
+ scope: z.literal("collection"),
420
+ collection: z.string().min(1).max(63).regex(slugPattern, "Invalid collection slug")
421
+ }).strict();
422
+ const mediaUsageRepairAllBody = z.object({ scope: z.literal("all") }).strict();
423
+ const mediaUsageRepairBody = z.discriminatedUnion("scope", [mediaUsageRepairCollectionBody, mediaUsageRepairAllBody]).meta({ id: "MediaUsageRepairBody" });
424
+ const mediaUsageRepairCollectionSummarySchema = z.object({
425
+ collection: z.string(),
426
+ status: mediaUsageRepairStatusSchema,
427
+ indexedSourceCount: z.number().int().min(0),
428
+ failedSourceCount: z.number().int().min(0),
429
+ skippedSourceCount: z.number().int().min(0),
430
+ deletedSourceCount: z.number().int().min(0),
431
+ lastErrorCode: z.string().nullable(),
432
+ startedAt: z.string(),
433
+ completedAt: z.string().nullable()
434
+ }).meta({ id: "MediaUsageRepairCollectionSummary" });
435
+ const mediaUsageRepairResponseSchema = z.object({
436
+ status: mediaUsageRepairStatusSchema,
437
+ indexedSourceCount: z.number().int().min(0),
438
+ failedSourceCount: z.number().int().min(0),
439
+ skippedSourceCount: z.number().int().min(0),
440
+ deletedSourceCount: z.number().int().min(0),
441
+ collections: z.array(mediaUsageRepairCollectionSummarySchema)
442
+ }).meta({ id: "MediaUsageRepairResponse" });
443
+ const mediaUsageWorkStateSchema = z.enum([
444
+ "pending",
445
+ "retry",
446
+ "leased",
447
+ "failed"
448
+ ]).meta({ id: "MediaUsageWorkState" });
449
+ const mediaUsageWorkListQuery = z.object({
450
+ collection: z.string().min(1).max(63).regex(slugPattern, "Invalid collection slug"),
451
+ state: mediaUsageWorkStateSchema.optional(),
452
+ cursor: z.string().min(1).max(2048).optional().meta({ description: "Opaque work-page cursor" }),
453
+ limit: z.coerce.number().int().min(1).max(100).optional().default(50).meta({ description: "Maximum number of work items to return (1-100, default 50)" })
454
+ });
455
+ const mediaUsageWorkItemSchema = z.object({
456
+ collectionId: z.string(),
457
+ collectionSlug: z.string(),
458
+ contentId: z.string(),
459
+ state: mediaUsageWorkStateSchema,
460
+ attemptCount: z.number().int().min(0),
461
+ nextAttemptAt: z.string(),
462
+ leaseExpiresAt: z.string().nullable(),
463
+ lastAttemptedAt: z.string().nullable(),
464
+ lastErrorCode: z.string().nullable(),
465
+ updatedAt: z.string()
466
+ }).meta({ id: "MediaUsageWorkItem" });
467
+ const mediaUsageWorkListResponseSchema = z.object({
468
+ items: z.array(mediaUsageWorkItemSchema),
469
+ nextCursor: z.string().optional()
470
+ }).meta({ id: "MediaUsageWorkListResponse" });
471
+ const boundedOpaqueMediaUsageId = z.string().min(1).max(2048);
472
+ const mediaUsageWorkRetryBody = z.object({
473
+ collectionId: boundedOpaqueMediaUsageId.meta({ description: "Current immutable collection identity" }),
474
+ contentId: boundedOpaqueMediaUsageId.meta({ description: "Content entry identity, including a deleted entry" })
475
+ }).strict().meta({ id: "MediaUsageWorkRetryBody" });
476
+ const mediaUsageWorkRetryResponseSchema = z.object({
477
+ changed: z.boolean(),
478
+ item: mediaUsageWorkItemSchema
479
+ }).meta({ id: "MediaUsageWorkRetryResponse" });
480
+ const mediaUsageWorkRetryConflictSchema = z.object({
481
+ success: z.literal(false),
482
+ error: z.discriminatedUnion("code", [z.object({
483
+ code: z.literal("WORK_LEASE_ACTIVE"),
484
+ message: z.string(),
485
+ details: z.object({ leaseExpiresAt: z.string() })
486
+ }), z.object({
487
+ code: z.literal("WORK_CHANGED"),
488
+ message: z.string()
489
+ })])
490
+ });
491
+ const mediaUsageActivationStateSchema = z.enum([
492
+ "expanded",
493
+ "activating",
494
+ "active"
495
+ ]).meta({ id: "MediaUsageActivationState" });
496
+ const mediaUsageActivationStatusSchema = z.object({
497
+ state: mediaUsageActivationStateSchema,
498
+ collectionCursor: z.string().nullable(),
499
+ attemptCount: z.number().int().min(0),
500
+ drainConfirmedAt: z.string().nullable(),
501
+ lastAttemptedAt: z.string().nullable(),
502
+ lastErrorCode: z.literal("MEDIA_USAGE_ACTIVATION_FAILED").nullable(),
503
+ leaseExpiresAt: z.string().nullable(),
504
+ activatedAt: z.string().nullable(),
505
+ updatedAt: z.string()
506
+ }).meta({ id: "MediaUsageActivationStatus" });
507
+ const mediaUsageActivationAdvanceBody = z.object({ writersDrained: z.literal(true) }).strict().meta({ id: "MediaUsageActivationAdvanceBody" });
508
+ const mediaUsageActivationAdvanceResponseSchema = z.object({
509
+ outcome: z.enum(["activating", "active"]),
510
+ processedCollections: z.number().int().min(0).max(1),
511
+ activation: mediaUsageActivationStatusSchema
512
+ }).meta({ id: "MediaUsageActivationAdvanceResponse" });
513
+ const mediaUsageProgressAdvanceResponseSchema = z.object({
514
+ activation: mediaUsageActivationStatusSchema,
515
+ progress: mediaUsageProgressSchema.nullable(),
516
+ nextRequestInMs: z.union([
517
+ z.literal(0),
518
+ z.literal(3e4),
519
+ z.null()
520
+ ])
521
+ }).meta({ id: "MediaUsageProgressAdvanceResponse" });
522
+ const mediaUsageActivationConflictSchema = z.object({
523
+ success: z.literal(false),
524
+ error: z.discriminatedUnion("code", [
525
+ z.object({
526
+ code: z.literal("MEDIA_USAGE_ACTIVATION_BUSY"),
527
+ message: z.string(),
528
+ details: z.object({ leaseExpiresAt: z.string() })
529
+ }),
530
+ z.object({
531
+ code: z.literal("MEDIA_USAGE_ACTIVATION_CONFLICT"),
532
+ message: z.string()
533
+ }),
534
+ z.object({
535
+ code: z.literal("MEDIA_USAGE_ACTIVATION_VERSION_MISMATCH"),
536
+ message: z.string()
537
+ })
538
+ ])
539
+ });
540
+ const mediaUsageCollectionDeletionStateSchema = z.enum([
541
+ "pending",
542
+ "retry",
543
+ "leased",
544
+ "failed"
545
+ ]).meta({ id: "MediaUsageCollectionDeletionState" });
546
+ const mediaUsageCollectionDeletionPhaseSchema = z.enum([
547
+ "fence",
548
+ "registry",
549
+ "table",
550
+ "work",
551
+ "sources",
552
+ "status",
553
+ "finalize"
554
+ ]).meta({ id: "MediaUsageCollectionDeletionPhase" });
555
+ const mediaUsageCollectionDeletionListQuery = z.object({
556
+ state: mediaUsageCollectionDeletionStateSchema.optional().default("failed"),
557
+ cursor: z.string().min(1).max(2048).optional(),
558
+ limit: z.coerce.number().int().min(1).max(100).optional().default(50)
559
+ }).meta({ id: "MediaUsageCollectionDeletionListQuery" });
560
+ const mediaUsageCollectionDeletionItemSchema = z.object({
561
+ collectionId: z.string(),
562
+ collectionSlug: z.string(),
563
+ state: mediaUsageCollectionDeletionStateSchema,
564
+ phase: mediaUsageCollectionDeletionPhaseSchema,
565
+ attemptCount: z.number().int().min(0),
566
+ nextAttemptAt: z.string(),
567
+ leaseExpiresAt: z.string().nullable(),
568
+ lastErrorCode: z.string().nullable(),
569
+ updatedAt: z.string()
570
+ }).meta({ id: "MediaUsageCollectionDeletionItem" });
571
+ const mediaUsageCollectionDeletionListResponseSchema = z.object({
572
+ items: z.array(mediaUsageCollectionDeletionItemSchema),
573
+ nextCursor: z.string().optional()
574
+ }).meta({ id: "MediaUsageCollectionDeletionListResponse" });
575
+ const mediaUsageCollectionDeletionRetryBody = z.object({ collectionId: boundedOpaqueMediaUsageId }).strict().meta({ id: "MediaUsageCollectionDeletionRetryBody" });
576
+ const mediaUsageCollectionDeletionRetryResponseSchema = z.object({
577
+ changed: z.boolean(),
578
+ item: mediaUsageCollectionDeletionItemSchema
579
+ }).meta({ id: "MediaUsageCollectionDeletionRetryResponse" });
580
+
581
+ //#endregion
582
+ //#region src/api/schemas/media.ts
583
+ /**
584
+ * Accepts a comma-separated string (from URL query params) or an array of
585
+ * strings (from JSON body or programmatic use) and normalises to string[].
586
+ */
587
+ const mimeTypeFilter = z.union([z.string(), z.array(z.string())]).transform((v) => {
588
+ return (Array.isArray(v) ? v : v.split(",")).map((s) => s.trim()).filter((s) => s.length > 0);
589
+ }).optional();
590
+ const mediaListQuery = cursorPaginationQuery.extend({
591
+ page: z.coerce.number().int().min(1).max(Number.MAX_SAFE_INTEGER).optional(),
592
+ mimeType: mimeTypeFilter,
593
+ folderId: z.union([z.literal("unfiled"), z.string().min(1).max(64)]).optional().meta({ description: "Filter by a media folder ID. Use `unfiled` for the Main library; omit for all media." }),
594
+ q: z.string().trim().min(1).max(200).optional(),
595
+ includeUsage: z.literal("1").optional().meta({ description: "Include a coverage-aware usage summary on each media item" })
596
+ }).refine(({ cursor, page }) => cursor === void 0 || page === void 0, {
597
+ message: "cursor and page cannot be used together",
598
+ path: ["page"]
599
+ }).meta({ id: "MediaListQuery" });
600
+ const mediaGetQuery = z.object({ includeUsage: z.literal("1").optional().meta({ description: "Include a coverage-aware usage summary on the media item" }) }).meta({ id: "MediaGetQuery" });
601
+ const mediaUpdateBody = z.object({
602
+ alt: z.string().optional(),
603
+ caption: z.string().optional(),
604
+ width: z.number().int().positive().optional(),
605
+ height: z.number().int().positive().optional(),
606
+ folderId: z.union([z.literal("unfiled"), z.string().min(1).max(64)]).nullable().optional().transform((value) => value === "unfiled" ? null : value).meta({ description: "Assign a media folder ID, or use null or `unfiled` to return the item to the Main library." }),
607
+ focalX: z.number().min(0).max(1).nullable().optional(),
608
+ focalY: z.number().min(0).max(1).nullable().optional()
609
+ }).superRefine((value, context) => {
610
+ if (!isValidFocalPointUpdate(value)) context.addIssue({
611
+ code: "custom",
612
+ message: "focalX and focalY must both be numbers or both be null",
613
+ path: ["focalX"]
614
+ });
615
+ }).meta({ id: "MediaUpdateBody" });
616
+ const mediaFolderIdSchema = z.string().min(1).max(64);
617
+ const mediaFolderListQuery = cursorPaginationQuery.extend({ q: z.string().trim().min(1).max(200).optional() }).meta({ id: "MediaFolderListQuery" });
618
+ const mediaFolderNameSchema = z.string().refine((value) => {
619
+ const length = value.trim().length;
620
+ return length >= 1 && length <= 200;
621
+ }, { message: "Folder name must be between 1 and 200 characters" });
622
+ const mediaFolderBody = z.object({ name: mediaFolderNameSchema }).meta({ id: "MediaFolderBody" });
623
+ /** Default maximum allowed file upload size (50 MB). */
624
+ const DEFAULT_MAX_UPLOAD_SIZE = 50 * 1024 * 1024;
625
+ function formatFileSize(bytes) {
626
+ if (bytes < 1024) return `${bytes}B`;
627
+ if (bytes < 1024 * 1024) return `${Math.floor(bytes / 1024)}KB`;
628
+ return `${Math.floor(bytes / 1024 / 1024)}MB`;
629
+ }
630
+ const CONTENT_TYPE_RE = /^[a-z0-9][a-z0-9!#$&^_+\-.]*\/[a-z0-9!#$&^_+\-.]+(\s*;[^\r\n]*)?$/i;
631
+ function mediaUploadUrlBody(maxSize) {
632
+ if (!Number.isFinite(maxSize) || maxSize <= 0) throw new Error(`EmDash: maxUploadSize must be a positive finite number, got ${maxSize}`);
633
+ return z.object({
634
+ filename: z.string().min(1, "filename is required"),
635
+ contentType: z.string().min(1, "contentType is required").regex(CONTENT_TYPE_RE, "Invalid content type"),
636
+ size: z.number().int().nonnegative().max(maxSize, `File size must not exceed ${formatFileSize(maxSize)}`),
637
+ contentHash: z.string().optional(),
638
+ fieldId: z.string().optional(),
639
+ deduplicate: z.boolean().optional(),
640
+ ensureUniqueFilename: z.boolean().optional(),
641
+ folderId: mediaFolderIdSchema.nullable().optional()
642
+ }).meta({ id: "MediaUploadUrlBody" });
643
+ }
644
+ const mediaUploadDeduplicateForm = z.enum(["true", "false"]).default("true").transform((value) => value === "true");
645
+ const mediaUploadEnsureUniqueFilenameForm = z.enum(["true", "false"]).default("false").transform((value) => value === "true");
646
+ const mediaReplaceMetadataForm = z.object({
647
+ width: z.coerce.number().int().positive().max(Number.MAX_SAFE_INTEGER),
648
+ height: z.coerce.number().int().positive().max(Number.MAX_SAFE_INTEGER)
649
+ });
650
+ const binaryFileSchema = z.string().meta({ format: "binary" });
651
+ const mediaDirectUploadBody = z.object({
652
+ file: binaryFileSchema,
653
+ width: z.string().optional(),
654
+ height: z.string().optional(),
655
+ thumbnail: binaryFileSchema.optional(),
656
+ fieldId: z.string().optional(),
657
+ deduplicate: z.enum(["true", "false"]).optional(),
658
+ ensureUniqueFilename: z.enum(["true", "false"]).optional(),
659
+ folderId: z.union([mediaFolderIdSchema, z.literal("unfiled")]).optional()
660
+ }).meta({ id: "MediaDirectUploadBody" });
661
+ const mediaReplaceBody = z.object({
662
+ file: binaryFileSchema,
663
+ width: z.number().int().positive(),
664
+ height: z.number().int().positive()
665
+ }).meta({ id: "MediaReplaceBody" });
666
+ const mediaConfirmBody = z.object({
667
+ size: z.number().int().nonnegative().optional(),
668
+ width: z.number().int().positive().optional(),
669
+ height: z.number().int().positive().optional()
670
+ }).meta({ id: "MediaConfirmBody" });
671
+ const mediaProviderListQuery = cursorPaginationQuery.extend({
672
+ query: z.string().optional(),
673
+ mimeType: mimeTypeFilter
674
+ }).meta({ id: "MediaProviderListQuery" });
675
+ const mediaStatusSchema = z.enum([
676
+ "pending",
677
+ "ready",
678
+ "failed"
679
+ ]);
680
+ const mediaItemSchema = z.object({
681
+ id: z.string(),
682
+ filename: z.string(),
683
+ mimeType: z.string(),
684
+ size: z.number().nullable(),
685
+ width: z.number().nullable(),
686
+ height: z.number().nullable(),
687
+ focalX: z.number().nullable(),
688
+ focalY: z.number().nullable(),
689
+ alt: z.string().nullable(),
690
+ caption: z.string().nullable(),
691
+ storageKey: z.string(),
692
+ status: mediaStatusSchema,
693
+ contentHash: z.string().nullable(),
694
+ blurhash: z.string().nullable(),
695
+ dominantColor: z.string().nullable(),
696
+ createdAt: z.string(),
697
+ authorId: z.string().nullable(),
698
+ folderId: z.string().nullable()
699
+ }).meta({ id: "MediaItem" });
700
+ const mediaFolderSchema = z.object({
701
+ id: z.string(),
702
+ name: z.string()
703
+ }).meta({ id: "MediaFolder" });
704
+ const mediaFolderResponseSchema = z.object({ item: mediaFolderSchema }).meta({ id: "MediaFolderResponse" });
705
+ const mediaFolderListResponseSchema = z.object({
706
+ items: z.array(mediaFolderSchema),
707
+ nextCursor: z.string().optional()
708
+ }).meta({ id: "MediaFolderListResponse" });
709
+ const mediaResponseSchema = z.object({ item: mediaItemSchema }).meta({ id: "MediaResponse" });
710
+ const mediaReadItemSchema = mediaItemSchema.extend({ usage: mediaUsageSummarySchema.optional() }).meta({ id: "MediaReadItem" });
711
+ const mediaReadResponseSchema = z.object({ item: mediaReadItemSchema }).meta({ id: "MediaReadResponse" });
712
+ const mediaListReadItemSchema = mediaReadItemSchema.extend({ url: z.string() }).meta({ id: "MediaListReadItem" });
713
+ const mediaListReadResponseSchema = z.object({
714
+ items: z.array(mediaListReadItemSchema),
715
+ nextCursor: z.string().optional(),
716
+ totalCount: z.number().int().nonnegative().optional()
717
+ }).meta({ id: "MediaListReadResponse" });
718
+ const mediaListResponseSchema = z.object({
719
+ items: z.array(mediaItemSchema),
720
+ nextCursor: z.string().optional(),
721
+ totalCount: z.number().int().nonnegative().optional()
722
+ }).meta({ id: "MediaListResponse" });
723
+ const mediaUploadUrlResponseSchema = z.object({
724
+ uploadUrl: z.string(),
725
+ method: z.literal("PUT"),
726
+ headers: z.record(z.string(), z.string()),
727
+ mediaId: z.string(),
728
+ storageKey: z.string(),
729
+ expiresAt: z.string()
730
+ }).meta({ id: "MediaUploadUrlResponse" });
731
+ const mediaExistingResponseSchema = z.object({
732
+ existing: z.literal(true),
733
+ mediaId: z.string(),
734
+ storageKey: z.string(),
735
+ url: z.string()
736
+ }).meta({ id: "MediaExistingResponse" });
737
+ const mediaConfirmResponseSchema = z.object({ item: mediaItemSchema.extend({ url: z.string() }) }).meta({ id: "MediaConfirmResponse" });
738
+ const mediaUploadResponseSchema = z.object({
739
+ item: mediaItemSchema.extend({ url: z.string() }),
740
+ deduplicated: z.literal(true).optional()
741
+ }).meta({ id: "MediaUploadResponse" });
742
+ const mediaReplaceResponseSchema = z.object({ item: mediaItemSchema.extend({ url: z.string() }) }).meta({ id: "MediaReplaceResponse" });
743
+ const mediaStreamUploadResponseSchema = z.object({
744
+ uploaded: z.literal(true),
745
+ size: z.number().int().nonnegative()
746
+ }).meta({ id: "MediaStreamUploadResponse" });
747
+
748
+ //#endregion
749
+ //#region src/api/schemas/schema.ts
750
+ const collectionSupportValues = z.enum([
751
+ "drafts",
752
+ "revisions",
753
+ "preview",
754
+ "scheduling",
755
+ "search",
756
+ "seo"
757
+ ]);
758
+ const collectionSourcePattern = /^(template:.+|import:.+|manual|discovered|seed)$/;
759
+ const collectionListColumns = z.array(z.string().min(1).max(63).regex(slugPattern, "Invalid field slug format"));
760
+ const collectionAdminInputConfig = z.object({ listColumns: collectionListColumns.max(MAX_COLLECTION_LIST_COLUMNS, `At most ${MAX_COLLECTION_LIST_COLUMNS} list columns are allowed`).optional() });
761
+ const collectionAdminResponseConfig = z.object({ listColumns: collectionListColumns.optional() });
762
+ const fieldTypeValues = z.enum([
763
+ "string",
764
+ "text",
765
+ "url",
766
+ "number",
767
+ "integer",
768
+ "boolean",
769
+ "datetime",
770
+ "select",
771
+ "multiSelect",
772
+ "portableText",
773
+ "image",
774
+ "file",
775
+ "reference",
776
+ "json",
777
+ "slug",
778
+ "repeater"
779
+ ]);
780
+ const repeaterSubFieldSchema = z.object({
781
+ slug: z.string().min(1).max(63).regex(slugPattern, "Invalid slug format"),
782
+ type: z.enum([
783
+ "string",
784
+ "text",
785
+ "url",
786
+ "number",
787
+ "integer",
788
+ "boolean",
789
+ "datetime",
790
+ "select",
791
+ "image"
792
+ ]),
793
+ label: z.string().min(1),
794
+ required: z.boolean().optional(),
795
+ options: z.array(z.string()).optional()
796
+ });
797
+ const urlPatternValue = z.string().superRefine((pattern, ctx) => {
798
+ try {
799
+ compileUrlPattern(pattern);
800
+ } catch {
801
+ ctx.addIssue({
802
+ code: "custom",
803
+ message: "Invalid URL pattern"
804
+ });
805
+ }
806
+ });
807
+ const fieldValidation = z.object({
808
+ required: z.boolean().optional(),
809
+ min: z.number().optional(),
810
+ max: z.number().optional(),
811
+ minLength: z.number().int().min(0).optional(),
812
+ maxLength: z.number().int().min(0).optional(),
813
+ pattern: z.string().optional(),
814
+ options: z.array(z.string()).optional(),
815
+ subFields: z.array(repeaterSubFieldSchema).min(1).optional(),
816
+ minItems: z.number().int().min(0).optional(),
817
+ maxItems: z.number().int().min(1).optional(),
818
+ allowedMimeTypes: z.array(z.string().regex(/^[a-z0-9][a-z0-9!#$&^_+\-.]*\/[a-z0-9!#$&^_+\-.]*$/i, "Invalid MIME type")).min(1, "allowedMimeTypes must not be empty — omit the field to allow all types").max(64, "allowedMimeTypes may contain at most 64 entries").optional()
819
+ }).superRefine((validation, ctx) => {
820
+ for (const [minimum, maximum] of [
821
+ ["min", "max"],
822
+ ["minLength", "maxLength"],
823
+ ["minItems", "maxItems"]
824
+ ]) {
825
+ const minimumValue = validation[minimum];
826
+ const maximumValue = validation[maximum];
827
+ if (minimumValue !== void 0 && maximumValue !== void 0 && minimumValue > maximumValue) ctx.addIssue({
828
+ code: "custom",
829
+ path: [maximum],
830
+ message: `${maximum} must be greater than or equal to ${minimum}`
831
+ });
832
+ }
833
+ if (validation.pattern !== void 0) try {
834
+ RegExp(validation.pattern);
835
+ } catch {
836
+ ctx.addIssue({
837
+ code: "custom",
838
+ path: ["pattern"],
839
+ message: "Invalid validation pattern"
840
+ });
841
+ }
842
+ }).optional();
843
+ const fieldWidgetOptions = z.record(z.string(), z.unknown()).optional();
844
+ /** Admin sidebar folder label; an empty string clears it like `null`. */
845
+ const navGroupValue = z.string().trim().max(MAX_COLLECTION_GROUP_LENGTH);
846
+ const createCollectionBody = z.object({
847
+ slug: z.string().min(1).max(63).regex(slugPattern, "Invalid slug format"),
848
+ label: z.string().min(1),
849
+ labelSingular: z.string().optional(),
850
+ description: z.string().optional(),
851
+ icon: z.string().optional(),
852
+ admin: collectionAdminInputConfig.optional(),
853
+ supports: z.array(collectionSupportValues).optional(),
854
+ source: z.string().regex(collectionSourcePattern).optional(),
855
+ urlPattern: urlPatternValue.optional(),
856
+ routable: z.boolean().optional(),
857
+ hasSeo: z.boolean().optional(),
858
+ hidden: z.boolean().optional(),
859
+ sortOrder: z.number().int().nullish(),
860
+ editLocking: z.boolean().optional(),
861
+ group: navGroupValue.nullish()
862
+ }).meta({ id: "CreateCollectionBody" });
863
+ const updateCollectionBody = z.object({
864
+ label: z.string().min(1).optional(),
865
+ labelSingular: z.string().optional(),
866
+ description: z.string().optional(),
867
+ icon: z.string().optional(),
868
+ admin: collectionAdminInputConfig.optional(),
869
+ supports: z.array(collectionSupportValues).optional(),
870
+ urlPattern: urlPatternValue.nullish(),
871
+ routable: z.boolean().optional(),
872
+ hasSeo: z.boolean().optional(),
873
+ hidden: z.boolean().optional(),
874
+ sortOrder: z.number().int().nullish(),
875
+ group: navGroupValue.nullish(),
876
+ commentsEnabled: z.boolean().optional(),
877
+ commentsModeration: z.enum([
878
+ "all",
879
+ "first_time",
880
+ "none"
881
+ ]).optional(),
882
+ commentsClosedAfterDays: z.number().int().min(0).optional(),
883
+ commentsAutoApproveUsers: z.boolean().optional(),
884
+ editLocking: z.boolean().optional(),
885
+ titleField: z.string().min(1).max(63).regex(slugPattern, "Invalid field slug format").nullish(),
886
+ dateField: z.string().min(1).max(63).regex(slugPattern, "Invalid field slug format").nullish()
887
+ }).meta({ id: "UpdateCollectionBody" });
888
+ const createFieldBody = z.object({
889
+ slug: z.string().min(1).max(63).regex(slugPattern, "Invalid slug format"),
890
+ label: z.string().min(1),
891
+ type: fieldTypeValues,
892
+ required: z.boolean().optional(),
893
+ unique: z.boolean().optional(),
894
+ defaultValue: z.unknown().optional(),
895
+ validation: fieldValidation.nullable(),
896
+ widget: z.string().optional(),
897
+ options: fieldWidgetOptions,
898
+ sortOrder: z.number().int().min(0).optional(),
899
+ searchable: z.boolean().optional(),
900
+ indexed: z.boolean().optional(),
901
+ translatable: z.boolean().optional()
902
+ }).meta({ id: "CreateFieldBody" });
903
+ const updateFieldBody = z.object({
904
+ label: z.string().min(1).optional(),
905
+ type: fieldTypeValues.optional(),
906
+ required: z.boolean().optional(),
907
+ unique: z.boolean().optional(),
908
+ defaultValue: z.unknown().optional(),
909
+ validation: fieldValidation.nullable(),
910
+ widget: z.string().optional(),
911
+ options: fieldWidgetOptions,
912
+ sortOrder: z.number().int().min(0).optional(),
913
+ searchable: z.boolean().optional(),
914
+ indexed: z.boolean().optional(),
915
+ translatable: z.boolean().optional()
916
+ }).meta({ id: "UpdateFieldBody" });
917
+ const fieldReorderBody = z.object({ fieldSlugs: z.array(z.string().min(1)) }).meta({ id: "FieldReorderBody" });
918
+ const collectionReorderBody = z.object({ slugs: z.array(z.string().min(1)) }).meta({ id: "CollectionReorderBody" });
919
+ const orphanRegisterBody = z.object({
920
+ label: z.string().optional(),
921
+ labelSingular: z.string().optional(),
922
+ description: z.string().optional()
923
+ }).meta({ id: "OrphanRegisterBody" });
924
+ const schemaExportQuery = z.object({ format: z.string().optional() });
925
+ const collectionGetQuery = z.object({ includeFields: z.string().transform((v) => v === "true").optional() });
926
+ const collectionSchema = z.object({
927
+ id: z.string(),
928
+ slug: z.string(),
929
+ label: z.string(),
930
+ labelSingular: z.string().nullable(),
931
+ description: z.string().nullable(),
932
+ icon: z.string().nullable(),
933
+ admin: collectionAdminResponseConfig.optional(),
934
+ supports: z.array(z.string()),
935
+ source: z.string().nullable(),
936
+ urlPattern: z.string().nullable(),
937
+ routable: z.boolean(),
938
+ hasSeo: z.boolean(),
939
+ hidden: z.boolean(),
940
+ sortOrder: z.number().int().nullable(),
941
+ editLocking: z.boolean(),
942
+ group: z.string().nullish(),
943
+ createdAt: z.string(),
944
+ updatedAt: z.string(),
945
+ titleField: z.string().nullish(),
946
+ dateField: z.string().nullish()
947
+ }).meta({ id: "Collection" });
948
+ const fieldSchema = z.object({
949
+ id: z.string(),
950
+ collectionId: z.string(),
951
+ slug: z.string(),
952
+ label: z.string(),
953
+ type: fieldTypeValues,
954
+ required: z.boolean(),
955
+ unique: z.boolean(),
956
+ defaultValue: z.unknown().nullable(),
957
+ validation: z.record(z.string(), z.unknown()).nullable(),
958
+ widget: z.string().nullable(),
959
+ options: z.record(z.string(), z.unknown()).nullable(),
960
+ sortOrder: z.number().int(),
961
+ searchable: z.boolean(),
962
+ indexed: z.boolean(),
963
+ translatable: z.boolean(),
964
+ createdAt: z.string(),
965
+ updatedAt: z.string()
966
+ }).meta({ id: "Field" });
967
+ const collectionResponseSchema = z.object({ item: collectionSchema }).meta({ id: "CollectionResponse" });
968
+ const collectionWithFieldsResponseSchema = z.object({ item: collectionSchema.extend({ fields: z.array(fieldSchema) }) }).meta({ id: "CollectionWithFieldsResponse" });
969
+ const collectionListResponseSchema = z.object({ items: z.array(collectionSchema) }).meta({ id: "CollectionListResponse" });
970
+ const fieldResponseSchema = z.object({ item: fieldSchema }).meta({ id: "FieldResponse" });
971
+ const fieldListResponseSchema = z.object({ items: z.array(fieldSchema) }).meta({ id: "FieldListResponse" });
972
+ const orphanedTableSchema = z.object({
973
+ slug: z.string(),
974
+ tableName: z.string(),
975
+ rowCount: z.number().int()
976
+ }).meta({ id: "OrphanedTable" });
977
+ const orphanedTableListResponseSchema = z.object({ items: z.array(orphanedTableSchema) }).meta({ id: "OrphanedTableListResponse" });
978
+
979
+ //#endregion
980
+ //#region src/utils/url.ts
981
+ /**
982
+ * URL scheme validation utilities
983
+ *
984
+ * Prevents XSS via dangerous URL schemes (javascript:, data:, vbscript:, etc.)
985
+ * by allowlisting known-safe schemes before rendering into href attributes.
986
+ */
987
+ /**
988
+ * Matches URLs that are safe to render in href attributes.
989
+ *
990
+ * Allowed:
991
+ * - http:// and https://
992
+ * - mailto: and tel:
993
+ * - Relative paths (starting with /)
994
+ * - Fragment links (starting with #)
995
+ * - Protocol-relative URLs are NOT allowed (starting with //) as they can
996
+ * redirect to attacker-controlled hosts.
997
+ */
998
+ const SAFE_URL_SCHEME_RE = /^(https?:|mailto:|tel:|\/(?!\/)|#)/i;
999
+ /**
1000
+ * Returns the URL unchanged if it uses a safe scheme, otherwise returns "#".
1001
+ *
1002
+ * Use this at the render layer as the primary defense against XSS via
1003
+ * dangerous URL schemes like `javascript:`, `data:`, or `vbscript:`.
1004
+ *
1005
+ * @example
1006
+ * ```ts
1007
+ * sanitizeHref("https://example.com") // "https://example.com"
1008
+ * sanitizeHref("/about") // "/about"
1009
+ * sanitizeHref("#section") // "#section"
1010
+ * sanitizeHref("mailto:a@b.com") // "mailto:a@b.com"
1011
+ * sanitizeHref("javascript:alert(1)") // "#"
1012
+ * sanitizeHref("data:text/html,<script>") // "#"
1013
+ * sanitizeHref("") // "#"
1014
+ * ```
1015
+ */
1016
+ function sanitizeHref(url) {
1017
+ if (!url) return "#";
1018
+ return SAFE_URL_SCHEME_RE.test(url) ? url : "#";
1019
+ }
1020
+ /**
1021
+ * Returns true if the URL uses a safe scheme for rendering in href attributes.
1022
+ */
1023
+ function isSafeHref(url) {
1024
+ return SAFE_URL_SCHEME_RE.test(url);
1025
+ }
1026
+
1027
+ //#endregion
1028
+ //#region src/api/schemas/menus.ts
1029
+ /**
1030
+ * Allowed menu item types. `custom` uses `customUrl`; the others resolve a URL
1031
+ * from `referenceCollection` + `referenceId` (a translation_group id).
1032
+ */
1033
+ const menuItemTypeEnum = z.enum([
1034
+ "custom",
1035
+ "page",
1036
+ "post",
1037
+ "taxonomy",
1038
+ "collection"
1039
+ ]);
1040
+ const safeHref = z.string().trim().refine(isSafeHref, "URL must use http, https, mailto, tel, a relative path, or a fragment identifier");
1041
+ const createMenuBody = z.object({
1042
+ name: z.string().min(1),
1043
+ label: z.string().min(1),
1044
+ locale: localeCode.optional(),
1045
+ translationOf: z.string().min(1).optional()
1046
+ }).strict().meta({ id: "CreateMenuBody" });
1047
+ const updateMenuBody = z.object({ label: z.string().min(1).optional() }).strict().meta({ id: "UpdateMenuBody" });
1048
+ const createMenuItemBody = z.object({
1049
+ type: menuItemTypeEnum,
1050
+ label: z.string().min(1),
1051
+ referenceCollection: z.string().optional(),
1052
+ referenceId: z.string().optional(),
1053
+ customUrl: safeHref.optional(),
1054
+ target: z.string().optional(),
1055
+ titleAttr: z.string().optional(),
1056
+ cssClasses: z.string().optional(),
1057
+ parentId: z.string().optional(),
1058
+ sortOrder: z.number().int().min(0).optional()
1059
+ }).strict().meta({ id: "CreateMenuItemBody" });
1060
+ const updateMenuItemBody = z.object({
1061
+ label: z.string().min(1).optional(),
1062
+ customUrl: safeHref.optional(),
1063
+ target: z.string().optional(),
1064
+ titleAttr: z.string().optional(),
1065
+ cssClasses: z.string().optional(),
1066
+ parentId: z.string().nullish(),
1067
+ sortOrder: z.number().int().min(0).optional()
1068
+ }).strict().meta({ id: "UpdateMenuItemBody" });
1069
+ const reorderMenuItemsBody = z.object({ items: z.array(z.object({
1070
+ id: z.string().min(1),
1071
+ parentId: z.string().nullable(),
1072
+ sortOrder: z.number().int().min(0)
1073
+ })) }).meta({ id: "ReorderMenuItemsBody" });
1074
+ const menuSchema = z.object({
1075
+ id: z.string(),
1076
+ name: z.string(),
1077
+ label: z.string(),
1078
+ createdAt: z.string(),
1079
+ updatedAt: z.string(),
1080
+ locale: z.string(),
1081
+ translationGroup: z.string().nullable()
1082
+ }).meta({ id: "Menu" });
1083
+ const menuItemSchema = z.object({
1084
+ id: z.string(),
1085
+ menuId: z.string(),
1086
+ parentId: z.string().nullable(),
1087
+ sortOrder: z.number().int(),
1088
+ type: z.string(),
1089
+ referenceCollection: z.string().nullable(),
1090
+ referenceId: z.string().nullable(),
1091
+ customUrl: z.string().nullable(),
1092
+ label: z.string(),
1093
+ titleAttr: z.string().nullable(),
1094
+ target: z.string().nullable(),
1095
+ cssClasses: z.string().nullable(),
1096
+ createdAt: z.string(),
1097
+ locale: z.string(),
1098
+ translationGroup: z.string().nullable()
1099
+ }).meta({ id: "MenuItem" });
1100
+ const menuTranslationsSchema = z.object({
1101
+ translationGroup: z.string().nullable(),
1102
+ translations: z.array(z.object({
1103
+ id: z.string(),
1104
+ name: z.string(),
1105
+ label: z.string(),
1106
+ locale: z.string(),
1107
+ updatedAt: z.string()
1108
+ }))
1109
+ }).meta({ id: "MenuTranslations" });
1110
+ const menuListItemSchema = menuSchema.extend({ itemCount: z.number().int() }).meta({ id: "MenuListItem" });
1111
+ const menuWithItemsSchema = menuSchema.extend({ items: z.array(menuItemSchema) }).meta({ id: "MenuWithItems" });
1112
+
1113
+ //#endregion
1114
+ //#region src/api/schemas/taxonomies.ts
1115
+ const collectionSlug = z.string().min(1).max(63).regex(/^[a-z][a-z0-9_]*$/, "Invalid collection slug format");
1116
+ const createTaxonomyDefBody = z.object({
1117
+ name: z.string().min(1).max(63).regex(/^[a-z][a-z0-9_]*$/, "Name must be lowercase alphanumeric with underscores"),
1118
+ label: z.string().min(1).max(200),
1119
+ labelSingular: z.string().min(1).max(200).optional(),
1120
+ hierarchical: z.boolean().optional(),
1121
+ collections: z.array(collectionSlug).max(100).optional(),
1122
+ locale: localeCode.optional(),
1123
+ translationOf: z.string().min(1).optional()
1124
+ }).meta({ id: "CreateTaxonomyDefBody" });
1125
+ /**
1126
+ * `name` and `locale` are absent on purpose: both identify the definition row
1127
+ * being written, and `.strict()` turns an attempt to change either into a 400
1128
+ * rather than a silently ignored field.
1129
+ */
1130
+ const updateTaxonomyDefBody = z.object({
1131
+ label: z.string().min(1).max(200).optional(),
1132
+ labelSingular: z.string().min(1).max(200).nullish(),
1133
+ hierarchical: z.boolean().optional(),
1134
+ collections: z.array(collectionSlug).max(100).optional()
1135
+ }).strict().meta({ id: "UpdateTaxonomyDefBody" });
1136
+ const createTermBody = z.object({
1137
+ slug: z.string().min(1).optional().meta({ description: "Term slug. Omit to derive a unique slug from the label." }),
1138
+ label: z.string().min(1),
1139
+ parentId: z.string().nullish(),
1140
+ description: z.string().optional(),
1141
+ locale: localeCode.optional(),
1142
+ translationOf: z.string().min(1).optional()
1143
+ }).meta({ id: "CreateTermBody" });
1144
+ const updateTermBody = z.object({
1145
+ slug: z.string().min(1).optional(),
1146
+ label: z.string().min(1).optional(),
1147
+ parentId: z.string().nullish(),
1148
+ description: z.string().optional()
1149
+ }).meta({ id: "UpdateTermBody" });
1150
+ const reorderTermsBody = z.object({
1151
+ parentId: z.string().min(1).nullish().meta({ description: "Parent term whose children are being ordered (translation_group or row id). Omit or null for the top level, which for a flat taxonomy is every term." }),
1152
+ ids: z.array(z.string().min(1)).max(100).meta({ description: "Terms to move, in the desired order — each a row id or translation_group. May be a subset of the group: the listed terms are permuted within the positions they already occupy and every other member keeps its place. An id outside the group is rejected with REORDER_MISMATCH." })
1153
+ }).strict().meta({ id: "ReorderTermsBody" });
1154
+ const termListQuery = z.object({
1155
+ locale: localeCode.optional(),
1156
+ includeCounts: z.enum(["true", "false"]).transform((v) => v === "true").optional().default(true).meta({ description: "Include each term's visible-usage count. Pass false to skip the aggregate; `count` is then absent from every term." }),
1157
+ resolveFallback: z.enum(["true", "false"]).transform((value) => value === "true").optional().default(false).meta({ description: "Resolve one term per translation group, preferring the requested locale and then the configured default locale." })
1158
+ }).meta({ id: "TermListQuery" });
1159
+ const taxonomyDefSchema = z.object({
1160
+ id: z.string(),
1161
+ name: z.string(),
1162
+ label: z.string(),
1163
+ labelSingular: z.string().optional(),
1164
+ hierarchical: z.boolean(),
1165
+ collections: z.array(z.string()),
1166
+ locale: z.string(),
1167
+ translationGroup: z.string().nullable()
1168
+ }).meta({ id: "TaxonomyDef" });
1169
+ const taxonomyDefTranslationsSchema = z.object({
1170
+ translationGroup: z.string().nullable(),
1171
+ translations: z.array(z.object({
1172
+ id: z.string(),
1173
+ name: z.string(),
1174
+ label: z.string(),
1175
+ locale: z.string()
1176
+ }))
1177
+ }).meta({ id: "TaxonomyDefTranslations" });
1178
+ const taxonomyListResponseSchema = z.object({ taxonomies: z.array(taxonomyDefSchema) }).meta({ id: "TaxonomyListResponse" });
1179
+ const taxonomyResponseSchema = z.object({ taxonomy: taxonomyDefSchema }).meta({ id: "TaxonomyResponse" });
1180
+ const termSchema = z.object({
1181
+ id: z.string(),
1182
+ name: z.string(),
1183
+ slug: z.string(),
1184
+ label: z.string(),
1185
+ parentId: z.string().nullable(),
1186
+ description: z.string().optional(),
1187
+ locale: z.string(),
1188
+ translationGroup: z.string().nullable()
1189
+ }).meta({ id: "Term" });
1190
+ const termTranslationsSchema = z.object({
1191
+ translationGroup: z.string().nullable(),
1192
+ translations: z.array(z.object({
1193
+ id: z.string(),
1194
+ slug: z.string(),
1195
+ label: z.string(),
1196
+ locale: z.string()
1197
+ }))
1198
+ }).meta({ id: "TermTranslations" });
1199
+ const termWithCountSchema = z.object({
1200
+ id: z.string(),
1201
+ name: z.string(),
1202
+ slug: z.string(),
1203
+ label: z.string(),
1204
+ parentId: z.string().nullable(),
1205
+ description: z.string().optional(),
1206
+ count: z.number().int().optional(),
1207
+ children: z.array(z.lazy(() => termWithCountSchema)),
1208
+ locale: z.string(),
1209
+ translationGroup: z.string().nullable()
1210
+ }).meta({ id: "TermWithCount" });
1211
+ const termListResponseSchema = z.object({ terms: z.array(termWithCountSchema) }).meta({ id: "TermListResponse" });
1212
+ const termResponseSchema = z.object({ term: termSchema }).meta({ id: "TermResponse" });
1213
+ const termReorderResponseSchema = z.object({ reordered: z.literal(true) }).meta({ id: "TermReorderResponse" });
1214
+ const termGetResponseSchema = z.object({ term: termSchema.extend({
1215
+ count: z.number().int(),
1216
+ children: z.array(z.object({
1217
+ id: z.string(),
1218
+ slug: z.string(),
1219
+ label: z.string()
1220
+ }))
1221
+ }) }).meta({ id: "TermGetResponse" });
1222
+
1223
+ //#endregion
1224
+ //#region src/api/schemas/sections.ts
1225
+ const sectionSource = z.enum([
1226
+ "theme",
1227
+ "user",
1228
+ "import"
1229
+ ]);
1230
+ const sectionsListQuery = z.object({
1231
+ source: sectionSource.optional(),
1232
+ search: z.string().optional(),
1233
+ limit: z.coerce.number().int().min(1).max(100).optional().default(50),
1234
+ cursor: z.string().max(2048).optional()
1235
+ }).meta({ id: "SectionsListQuery" });
1236
+ const createSectionBody = z.object({
1237
+ slug: z.string().min(1),
1238
+ title: z.string().min(1),
1239
+ description: z.string().optional(),
1240
+ keywords: z.array(z.string()).optional(),
1241
+ content: z.array(z.record(z.string(), z.unknown())),
1242
+ previewMediaId: z.string().optional(),
1243
+ source: z.enum(["user", "import"]).optional(),
1244
+ themeId: z.string().optional()
1245
+ }).meta({ id: "CreateSectionBody" });
1246
+ const updateSectionBody = z.object({
1247
+ slug: z.string().min(1).optional(),
1248
+ title: z.string().min(1).optional(),
1249
+ description: z.string().optional(),
1250
+ keywords: z.array(z.string()).optional(),
1251
+ content: z.array(z.record(z.string(), z.unknown())).optional(),
1252
+ previewMediaId: z.string().nullish()
1253
+ }).meta({ id: "UpdateSectionBody" });
1254
+ const sectionSchema = z.object({
1255
+ id: z.string(),
1256
+ slug: z.string(),
1257
+ title: z.string(),
1258
+ description: z.string().nullable(),
1259
+ keywords: z.array(z.string()).nullable(),
1260
+ content: z.array(z.record(z.string(), z.unknown())),
1261
+ previewMediaId: z.string().nullable(),
1262
+ source: z.string(),
1263
+ themeId: z.string().nullable(),
1264
+ createdAt: z.string(),
1265
+ updatedAt: z.string()
1266
+ }).meta({ id: "Section" });
1267
+ const sectionListResponseSchema = z.object({
1268
+ items: z.array(sectionSchema),
1269
+ nextCursor: z.string().optional()
1270
+ }).meta({ id: "SectionListResponse" });
1271
+
1272
+ //#endregion
1273
+ //#region src/api/schemas/settings.ts
1274
+ const mediaReferenceInput = z.object({
1275
+ mediaId: z.string(),
1276
+ alt: z.string().optional()
1277
+ });
1278
+ const socialSettings = z.object({
1279
+ twitter: z.string().optional(),
1280
+ github: z.string().optional(),
1281
+ facebook: z.string().optional(),
1282
+ instagram: z.string().optional(),
1283
+ linkedin: z.string().optional(),
1284
+ youtube: z.string().optional()
1285
+ });
1286
+ const seoSettingsInput = z.object({
1287
+ titleSeparator: z.string().max(10).optional(),
1288
+ defaultOgImage: mediaReferenceInput.optional(),
1289
+ robotsTxt: z.string().max(5e3).optional(),
1290
+ googleVerification: z.string().max(100).optional(),
1291
+ bingVerification: z.string().max(100).optional()
1292
+ });
1293
+ const settingsUpdateBody = z.object({
1294
+ title: z.string().optional(),
1295
+ tagline: z.string().optional(),
1296
+ logo: mediaReferenceInput.optional(),
1297
+ favicon: mediaReferenceInput.optional(),
1298
+ url: z.union([httpUrl, z.literal("")]).optional(),
1299
+ postsPerPage: z.number().int().min(1).max(100).optional(),
1300
+ dateFormat: z.string().optional(),
1301
+ timezone: z.string().optional(),
1302
+ social: socialSettings.optional(),
1303
+ seo: seoSettingsInput.optional()
1304
+ }).meta({ id: "SettingsUpdateBody" });
1305
+ const mediaReferenceResponse = z.object({
1306
+ mediaId: z.string(),
1307
+ alt: z.string().optional(),
1308
+ url: z.string().optional(),
1309
+ contentType: z.string().optional(),
1310
+ width: z.number().int().optional(),
1311
+ height: z.number().int().optional()
1312
+ });
1313
+ const seoSettingsResponse = z.object({
1314
+ titleSeparator: z.string().max(10).optional(),
1315
+ defaultOgImage: mediaReferenceResponse.optional(),
1316
+ robotsTxt: z.string().max(5e3).optional(),
1317
+ googleVerification: z.string().max(100).optional(),
1318
+ bingVerification: z.string().max(100).optional()
1319
+ });
1320
+ const siteSettingsSchema = z.object({
1321
+ title: z.string().optional(),
1322
+ tagline: z.string().optional(),
1323
+ logo: mediaReferenceResponse.optional(),
1324
+ favicon: mediaReferenceResponse.optional(),
1325
+ url: z.string().optional(),
1326
+ postsPerPage: z.number().int().optional(),
1327
+ dateFormat: z.string().optional(),
1328
+ timezone: z.string().optional(),
1329
+ social: socialSettings.optional(),
1330
+ seo: seoSettingsResponse.optional()
1331
+ }).meta({ id: "SiteSettings" });
1332
+
1333
+ //#endregion
1334
+ //#region src/api/schemas/search.ts
1335
+ const searchQuery = z.object({
1336
+ q: z.string().min(1),
1337
+ collections: z.string().optional(),
1338
+ status: z.string().optional(),
1339
+ locale: localeCode.optional(),
1340
+ limit: z.coerce.number().int().min(1).max(100).optional(),
1341
+ cursor: z.string().optional(),
1342
+ scope: z.enum(["all", "title"]).optional().meta({ description: "Which indexed fields to match against. 'title' matches only the collection's title field; collections without an indexed title field return no results. Defaults to 'all'." })
1343
+ }).meta({ id: "SearchQuery" });
1344
+ const searchSuggestQuery = z.object({
1345
+ q: z.string().min(1),
1346
+ collections: z.string().optional(),
1347
+ locale: localeCode.optional(),
1348
+ limit: z.coerce.number().int().min(1).max(20).optional()
1349
+ }).meta({ id: "SearchSuggestQuery" });
1350
+ const searchRebuildBody = z.object({ collection: z.string().min(1) }).meta({ id: "SearchRebuildBody" });
1351
+ const searchEnableBody = z.object({
1352
+ collection: z.string().min(1),
1353
+ enabled: z.boolean(),
1354
+ weights: z.record(z.string(), z.number()).optional(),
1355
+ tokenize: z.enum(SEARCH_TOKENIZERS).optional()
1356
+ }).meta({ id: "SearchEnableBody" });
1357
+ const searchResultSchema = z.object({
1358
+ collection: z.string(),
1359
+ id: z.string(),
1360
+ slug: z.string().nullable(),
1361
+ locale: z.string(),
1362
+ title: z.string().optional(),
1363
+ snippet: z.string().optional(),
1364
+ score: z.number()
1365
+ }).meta({ id: "SearchResult" });
1366
+ const searchResponseSchema = z.object({
1367
+ items: z.array(searchResultSchema),
1368
+ nextCursor: z.string().optional()
1369
+ }).meta({ id: "SearchResponse" });
1370
+
1371
+ //#endregion
1372
+ //#region src/api/schemas/users.ts
1373
+ const usersListQuery = z.object({
1374
+ search: z.string().optional(),
1375
+ role: z.string().optional(),
1376
+ cursor: z.string().max(2048).optional(),
1377
+ limit: z.coerce.number().int().min(1).max(100).optional().default(50)
1378
+ }).meta({ id: "UsersListQuery" });
1379
+ const userUpdateBody = z.object({
1380
+ name: z.string().optional(),
1381
+ email: z.email().optional(),
1382
+ role: roleLevel.optional()
1383
+ }).meta({ id: "UserUpdateBody" });
1384
+ const allowedDomainCreateBody = z.object({
1385
+ domain: z.string().min(1),
1386
+ defaultRole: roleLevel
1387
+ }).meta({ id: "AllowedDomainCreateBody" });
1388
+ const allowedDomainUpdateBody = z.object({
1389
+ enabled: z.boolean().optional(),
1390
+ defaultRole: roleLevel.optional()
1391
+ }).meta({ id: "AllowedDomainUpdateBody" });
1392
+ const userSchema = z.object({
1393
+ id: z.string(),
1394
+ email: z.string(),
1395
+ name: z.string().nullable(),
1396
+ avatarUrl: z.string().nullable(),
1397
+ role: z.number().int(),
1398
+ emailVerified: z.boolean(),
1399
+ disabled: z.boolean(),
1400
+ createdAt: z.string(),
1401
+ updatedAt: z.string(),
1402
+ lastLogin: z.string().nullable(),
1403
+ credentialCount: z.number().int().optional(),
1404
+ oauthProviders: z.array(z.string()).optional()
1405
+ }).meta({ id: "User" });
1406
+ const userListResponseSchema = z.object({
1407
+ items: z.array(userSchema),
1408
+ nextCursor: z.string().optional()
1409
+ }).meta({ id: "UserListResponse" });
1410
+ const userDetailSchema = z.object({
1411
+ id: z.string(),
1412
+ email: z.string(),
1413
+ name: z.string().nullable(),
1414
+ avatarUrl: z.string().nullable(),
1415
+ role: z.number().int(),
1416
+ emailVerified: z.boolean(),
1417
+ disabled: z.boolean(),
1418
+ createdAt: z.string(),
1419
+ updatedAt: z.string(),
1420
+ lastLogin: z.string().nullable(),
1421
+ credentials: z.array(z.object({
1422
+ id: z.string(),
1423
+ name: z.string().nullable(),
1424
+ deviceType: z.string().nullable(),
1425
+ createdAt: z.string(),
1426
+ lastUsedAt: z.string()
1427
+ })),
1428
+ oauthAccounts: z.array(z.object({
1429
+ provider: z.string(),
1430
+ createdAt: z.string()
1431
+ }))
1432
+ }).meta({ id: "UserDetail" });
1433
+
1434
+ //#endregion
1435
+ //#region src/api/schemas/widgets.ts
1436
+ const widgetType = z.enum([
1437
+ "content",
1438
+ "menu",
1439
+ "component"
1440
+ ]);
1441
+ const createWidgetAreaBody = z.object({
1442
+ name: z.string().min(1),
1443
+ label: z.string().min(1),
1444
+ description: z.string().optional()
1445
+ }).meta({ id: "CreateWidgetAreaBody" });
1446
+ const createWidgetBody = z.object({
1447
+ type: widgetType,
1448
+ title: z.string().optional(),
1449
+ content: z.array(z.record(z.string(), z.unknown())).optional(),
1450
+ menuName: z.string().optional(),
1451
+ componentId: z.string().optional(),
1452
+ componentProps: z.record(z.string(), z.unknown()).optional()
1453
+ }).meta({ id: "CreateWidgetBody" });
1454
+ const updateWidgetBody = z.object({
1455
+ type: widgetType.optional(),
1456
+ title: z.string().optional(),
1457
+ content: z.array(z.record(z.string(), z.unknown())).optional(),
1458
+ menuName: z.string().optional(),
1459
+ componentId: z.string().optional(),
1460
+ componentProps: z.record(z.string(), z.unknown()).optional()
1461
+ }).meta({ id: "UpdateWidgetBody" });
1462
+ const reorderWidgetsBody = z.object({ widgetIds: z.array(z.string().min(1)) }).meta({ id: "ReorderWidgetsBody" });
1463
+ const widgetAreaSchema = z.object({
1464
+ id: z.string(),
1465
+ name: z.string(),
1466
+ label: z.string(),
1467
+ description: z.string().nullable(),
1468
+ created_at: z.string(),
1469
+ updated_at: z.string()
1470
+ }).meta({ id: "WidgetArea" });
1471
+ const widgetSchema = z.object({
1472
+ id: z.string(),
1473
+ type: widgetType,
1474
+ title: z.string().optional(),
1475
+ content: z.array(z.record(z.string(), z.unknown())).optional(),
1476
+ menuName: z.string().optional(),
1477
+ componentId: z.string().optional(),
1478
+ componentProps: z.record(z.string(), z.unknown()).optional()
1479
+ }).meta({ id: "Widget" });
1480
+ const widgetAreaWithWidgetsSchema = widgetAreaSchema.extend({ widgets: z.array(widgetSchema) }).meta({ id: "WidgetAreaWithWidgets" });
1481
+ const widgetAreaWithWidgetsAndCountSchema = widgetAreaWithWidgetsSchema.extend({ widgetCount: z.number().int() }).meta({ id: "WidgetAreaWithWidgetsAndCount" });
1482
+
1483
+ //#endregion
1484
+ //#region src/api/schemas/entry-lock.ts
1485
+ const entryLockAcquireBody = z.object({
1486
+ takeover: z.boolean().optional().meta({ description: "Take the lock from whoever holds it. Their next heartbeat or save reports the new holder." }),
1487
+ token: z.string().min(1).max(128).optional().meta({ description: "Identifies the caller's editing session. Send the same value on DELETE so a release from one tab does not drop a lock another tab of the same account still relies on." })
1488
+ }).meta({ id: "EntryLockAcquireBody" });
1489
+ const entryLockHolderSchema = z.object({
1490
+ userId: z.string(),
1491
+ userName: z.string().nullable(),
1492
+ acquiredAt: z.string(),
1493
+ expiresAt: z.string()
1494
+ }).meta({ id: "EntryLockHolder" });
1495
+ const entryLockStatusSchema = z.object({
1496
+ enabled: z.boolean().meta({ description: "Whether the collection takes edit locks at all" }),
1497
+ holder: entryLockHolderSchema.nullable(),
1498
+ heldByCaller: z.boolean()
1499
+ }).meta({ id: "EntryLockStatus" });
1500
+ const entryLockReleaseResponseSchema = z.object({ released: z.boolean() }).meta({ id: "EntryLockReleaseResponse" });
1501
+ const entryLockConflictSchema = z.object({
1502
+ success: z.literal(false),
1503
+ error: z.object({
1504
+ code: z.literal("ENTRY_LOCKED"),
1505
+ message: z.string(),
1506
+ details: entryLockHolderSchema
1507
+ })
1508
+ });
1509
+ const entryMutationConflictSchema = z.object({
1510
+ success: z.literal(false),
1511
+ error: z.object({
1512
+ code: z.string().meta({ examples: ["CONFLICT", "ENTRY_LOCKED"] }),
1513
+ message: z.string(),
1514
+ details: entryLockHolderSchema.optional()
1515
+ })
1516
+ });
1517
+
1518
+ //#endregion
1519
+ export { createMenuItemBody as $, contentRevisionConditionBody as $n, mediaReplaceResponseSchema as $t, createSectionBody as A, mediaUsageRepairResponseSchema as An, DEFAULT_MAX_UPLOAD_SIZE as At, taxonomyListResponseSchema as B, mediaUsageWorkStateSchema as Bn, mediaFolderResponseSchema as Bt, searchQuery as C, mediaUsageDetailsResponseSchema as Cn, orphanRegisterBody as Ct, searchSuggestQuery as D, mediaUsageProgressSchema as Dn, updateCollectionBody as Dt, searchResultSchema as E, mediaUsageProgressAdvanceResponseSchema as En, schemaExportQuery as Et, createTaxonomyDefBody as F, mediaUsageWorkListQuery as Fn, mediaExistingResponseSchema as Ft, termReorderResponseSchema as G, contentFieldFiltersSchema as Gn, mediaListReadItemSchema as Gt, termGetResponseSchema as H, contentAuthorsResponseSchema as Hn, mediaGetQuery as Ht, createTermBody as I, mediaUsageWorkListResponseSchema as In, mediaFolderBody as It, termTranslationsSchema as J, contentListResponseSchema as Jn, mediaProviderListQuery as Jt, termResponseSchema as K, contentItemSchema as Kn, mediaListReadResponseSchema as Kt, reorderTermsBody as L, mediaUsageWorkRetryBody as Ln, mediaFolderIdSchema as Lt, sectionSchema as M, mediaUsageSourceDetailSchema as Mn, mediaConfirmBody as Mt, sectionsListQuery as N, mediaUsageSummarySchema as Nn, mediaConfirmResponseSchema as Nt, settingsUpdateBody as O, mediaUsageRepairBody as On, updateFieldBody as Ot, updateSectionBody as P, mediaUsageWorkItemSchema as Pn, mediaDirectUploadBody as Pt, createMenuBody as Q, contentRestoreResponseSchema as Qn, mediaReplaceMetadataForm as Qt, taxonomyDefSchema as R, mediaUsageWorkRetryConflictSchema as Rn, mediaFolderListQuery as Rt, searchEnableBody as S, mediaUsageDetailsQuery as Sn, fieldSchema as St, searchResponseSchema as T, mediaUsageOccurrenceDetailSchema as Tn, orphanedTableSchema as Tt, termListQuery as U, contentCompareResponseSchema as Un, mediaItemSchema as Ut, taxonomyResponseSchema as V, contentAuthorSchema as Vn, mediaFolderSchema as Vt, termListResponseSchema as W, contentCreateBody as Wn, mediaListQuery as Wt, updateTaxonomyDefBody as X, contentPublishBody as Xn, mediaReadResponseSchema as Xt, termWithCountSchema as Y, contentPreviewUrlBody as Yn, mediaReadItemSchema as Yt, updateTermBody as Z, contentResponseSchema as Zn, mediaReplaceBody as Zt, userDetailSchema as _, mediaUsageCollectionDeletionRetryBody as _n, bylineUpdateBody as _r, createCollectionBody as _t, entryLockStatusSchema as a, mediaUploadResponseSchema as an, contentTranslationSchema as ar, menuWithItemsSchema as at, userUpdateBody as b, mediaUsageCoverageSchema as bn, fieldReorderBody as bt, createWidgetBody as c, mediaUsageActivationAdvanceBody as cn, contentUpdateBody as cr, updateMenuItemBody as ct, widgetAreaSchema as d, mediaUsageActivationStateSchema as dn, bylineCreateBody as dr, collectionGetQuery as dt, mediaResponseSchema as en, contentScheduleBody as er, menuItemSchema as et, widgetAreaWithWidgetsAndCountSchema as f, mediaUsageActivationStatusSchema as fn, bylineCreditSchema as fr, collectionListResponseSchema as ft, allowedDomainUpdateBody as g, mediaUsageCollectionDeletionPhaseSchema as gn, bylineTranslationsResponseSchema as gr, collectionWithFieldsResponseSchema as gt, allowedDomainCreateBody as h, mediaUsageCollectionDeletionListResponseSchema as hn, bylineTranslationCreateBody as hr, collectionSchema as ht, entryLockReleaseResponseSchema as i, mediaUploadEnsureUniqueFilenameForm as in, contentTermsResponseSchema as ir, menuTranslationsSchema as it, sectionListResponseSchema as j, mediaUsageRepairStatusSchema as jn, formatFileSize as jt, siteSettingsSchema as k, mediaUsageRepairCollectionSummarySchema as kn, CONTENT_TYPE_RE as kt, reorderWidgetsBody as l, mediaUsageActivationAdvanceResponseSchema as ln, trashedContentItemSchema as lr, isSafeHref as lt, widgetSchema as m, mediaUsageCollectionDeletionListQuery as mn, bylineSummarySchema as mr, collectionResponseSchema as mt, entryLockConflictSchema as n, mediaUpdateBody as nn, contentSeoSchema as nr, menuListItemSchema as nt, entryMutationConflictSchema as o, mediaUploadUrlBody as on, contentTranslationsResponseSchema as or, reorderMenuItemsBody as ot, widgetAreaWithWidgetsSchema as p, mediaUsageCollectionDeletionItemSchema as pn, bylineListResponseSchema as pr, collectionReorderBody as pt, termSchema as q, contentListQuery as qn, mediaListResponseSchema as qt, entryLockHolderSchema as r, mediaUploadDeduplicateForm as rn, contentTermsBody as rr, menuSchema as rt, createWidgetAreaBody as s, mediaUploadUrlResponseSchema as sn, contentTrashQuery as sr, updateMenuBody as st, entryLockAcquireBody as t, mediaStreamUploadResponseSchema as tn, contentSeoInput as tr, menuItemTypeEnum as tt, updateWidgetBody as u, mediaUsageActivationConflictSchema as un, trashedContentListResponseSchema as ur, sanitizeHref as ut, userListResponseSchema as v, mediaUsageCollectionDeletionRetryResponseSchema as vn, bylinesListQuery as vr, createFieldBody as vt, searchRebuildBody as w, mediaUsageEntryDetailSchema as wn, orphanedTableListResponseSchema as wt, usersListQuery as x, mediaUsageCoverageStatusSchema as xn, fieldResponseSchema as xt, userSchema as y, mediaUsageCollectionDeletionStateSchema as yn, contentBylineInputSchema as yr, fieldListResponseSchema as yt, taxonomyDefTranslationsSchema as z, mediaUsageWorkRetryResponseSchema as zn, mediaFolderListResponseSchema as zt };
1520
+ //# sourceMappingURL=entry-lock-D3C99MXS.mjs.map