emdash 0.36.0 → 0.37.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 (809) hide show
  1. package/dist/{adapters-CzL3H752.d.mts → adapters-BDQwg236.d.mts} +4 -2
  2. package/dist/{adapters-CzL3H752.d.mts.map → adapters-BDQwg236.d.mts.map} +1 -1
  3. package/dist/{allowed-origins-maylGaHv.mjs → allowed-origins-BGglilcs.mjs} +2 -2
  4. package/dist/{allowed-origins-maylGaHv.mjs.map → allowed-origins-BGglilcs.mjs.map} +1 -1
  5. package/dist/api/route-utils.d.mts +3 -3
  6. package/dist/api/route-utils.mjs +17 -17
  7. package/dist/api/schemas/index.d.mts +2 -2
  8. package/dist/api/schemas/index.mjs +5 -5
  9. package/dist/api-Dz6rgoa3.mjs +10040 -0
  10. package/dist/api-Dz6rgoa3.mjs.map +1 -0
  11. package/dist/{api-tokens-9YrrCoE6.mjs → api-tokens-BSsQACNe.mjs} +2 -2
  12. package/dist/{api-tokens-9YrrCoE6.mjs.map → api-tokens-BSsQACNe.mjs.map} +1 -1
  13. package/dist/{apply-B_VMpJ2P.mjs → apply-B4SIOxR1.mjs} +18 -18
  14. package/dist/{apply-B_VMpJ2P.mjs.map → apply-B4SIOxR1.mjs.map} +1 -1
  15. package/dist/astro/image-endpoint.mjs +2 -2
  16. package/dist/astro/image-endpoint.mjs.map +1 -1
  17. package/dist/astro/index.d.mts +12 -12
  18. package/dist/astro/index.d.mts.map +1 -1
  19. package/dist/astro/index.mjs +110 -37
  20. package/dist/astro/index.mjs.map +1 -1
  21. package/dist/astro/middleware/auth.d.mts +10 -10
  22. package/dist/astro/middleware/auth.mjs +6 -6
  23. package/dist/astro/middleware/media-usage-write-fence.mjs +2 -2
  24. package/dist/astro/middleware/redirect.mjs +3 -3
  25. package/dist/astro/middleware/request-context.mjs +2 -2
  26. package/dist/astro/middleware/setup.mjs +1 -1
  27. package/dist/astro/middleware.d.mts +10 -10
  28. package/dist/astro/middleware.d.mts.map +1 -1
  29. package/dist/astro/middleware.mjs +157 -195
  30. package/dist/astro/middleware.mjs.map +1 -1
  31. package/dist/astro/routes/api/admin/allowed-domains/_domain_.mjs +6 -6
  32. package/dist/astro/routes/api/admin/allowed-domains/index.mjs +6 -6
  33. package/dist/astro/routes/api/admin/api-tokens/_id_.mjs +3 -3
  34. package/dist/astro/routes/api/admin/api-tokens/index.d.mts.map +1 -1
  35. package/dist/astro/routes/api/admin/api-tokens/index.mjs +5 -5
  36. package/dist/astro/routes/api/admin/api-tokens/index.mjs.map +1 -1
  37. package/dist/astro/routes/api/admin/byline-fields/_slug_/usage.mjs +3 -3
  38. package/dist/astro/routes/api/admin/byline-fields/_slug_.mjs +8 -8
  39. package/dist/astro/routes/api/admin/byline-fields/index.mjs +8 -8
  40. package/dist/astro/routes/api/admin/byline-fields/reorder.mjs +8 -8
  41. package/dist/astro/routes/api/admin/bylines/_id_/index.mjs +14 -14
  42. package/dist/astro/routes/api/admin/bylines/_id_/translations.mjs +14 -14
  43. package/dist/astro/routes/api/admin/bylines/index.mjs +14 -14
  44. package/dist/astro/routes/api/admin/comments/_id_/status.mjs +12 -12
  45. package/dist/astro/routes/api/admin/comments/_id_.mjs +5 -5
  46. package/dist/astro/routes/api/admin/comments/bulk.mjs +10 -10
  47. package/dist/astro/routes/api/admin/comments/counts.mjs +5 -5
  48. package/dist/astro/routes/api/admin/comments/index.mjs +10 -10
  49. package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.mjs +3 -3
  50. package/dist/astro/routes/api/admin/hooks/exclusive/index.mjs +2 -2
  51. package/dist/astro/routes/api/admin/media-usage/activation.mjs +10 -10
  52. package/dist/astro/routes/api/admin/media-usage/collection-deletions/index.mjs +13 -13
  53. package/dist/astro/routes/api/admin/media-usage/collection-deletions/retry.mjs +13 -13
  54. package/dist/astro/routes/api/admin/media-usage/progress.mjs +11 -11
  55. package/dist/astro/routes/api/admin/media-usage/repair.mjs +14 -14
  56. package/dist/astro/routes/api/admin/media-usage/work/index.mjs +13 -13
  57. package/dist/astro/routes/api/admin/media-usage/work/retry.mjs +13 -13
  58. package/dist/astro/routes/api/admin/oauth-clients/_id_.mjs +4 -4
  59. package/dist/astro/routes/api/admin/oauth-clients/_id_.mjs.map +1 -1
  60. package/dist/astro/routes/api/admin/oauth-clients/index.mjs +4 -4
  61. package/dist/astro/routes/api/admin/oauth-clients/index.mjs.map +1 -1
  62. package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs +49 -49
  63. package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs +49 -49
  64. package/dist/astro/routes/api/admin/plugins/_id_/index.mjs +47 -47
  65. package/dist/astro/routes/api/admin/plugins/_id_/mcp.mjs +4 -4
  66. package/dist/astro/routes/api/admin/plugins/_id_/settings.mjs +47 -47
  67. package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs +48 -48
  68. package/dist/astro/routes/api/admin/plugins/_id_/update.mjs +48 -48
  69. package/dist/astro/routes/api/admin/plugins/index.mjs +47 -47
  70. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.mjs +2 -2
  71. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs +47 -47
  72. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs +48 -48
  73. package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs +47 -47
  74. package/dist/astro/routes/api/admin/plugins/registry/_id_/uninstall.mjs +48 -48
  75. package/dist/astro/routes/api/admin/plugins/registry/_id_/update.d.mts.map +1 -1
  76. package/dist/astro/routes/api/admin/plugins/registry/_id_/update.mjs +54 -50
  77. package/dist/astro/routes/api/admin/plugins/registry/_id_/update.mjs.map +1 -1
  78. package/dist/astro/routes/api/admin/plugins/registry/artifact.mjs +17 -16
  79. package/dist/astro/routes/api/admin/plugins/registry/artifact.mjs.map +1 -1
  80. package/dist/astro/routes/api/admin/plugins/registry/install.d.mts.map +1 -1
  81. package/dist/astro/routes/api/admin/plugins/registry/install.mjs +55 -51
  82. package/dist/astro/routes/api/admin/plugins/registry/install.mjs.map +1 -1
  83. package/dist/astro/routes/api/admin/plugins/registry/verify.d.mts +8 -0
  84. package/dist/astro/routes/api/admin/plugins/registry/verify.d.mts.map +1 -0
  85. package/dist/astro/routes/api/admin/plugins/registry/verify.mjs +93 -0
  86. package/dist/astro/routes/api/admin/plugins/registry/verify.mjs.map +1 -0
  87. package/dist/astro/routes/api/admin/plugins/updates.mjs +47 -47
  88. package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs +47 -47
  89. package/dist/astro/routes/api/admin/themes/marketplace/_id_/thumbnail.mjs +2 -2
  90. package/dist/astro/routes/api/admin/themes/marketplace/index.mjs +47 -47
  91. package/dist/astro/routes/api/admin/users/_id_/disable.mjs +1 -1
  92. package/dist/astro/routes/api/admin/users/_id_/enable.mjs +1 -1
  93. package/dist/astro/routes/api/admin/users/_id_/index.mjs +6 -6
  94. package/dist/astro/routes/api/admin/users/_id_/send-recovery.mjs +2 -2
  95. package/dist/astro/routes/api/admin/users/index.mjs +6 -6
  96. package/dist/astro/routes/api/auth/dev-bypass.mjs +3 -3
  97. package/dist/astro/routes/api/auth/invite/accept.mjs +1 -1
  98. package/dist/astro/routes/api/auth/invite/complete.mjs +10 -10
  99. package/dist/astro/routes/api/auth/invite/index.mjs +7 -7
  100. package/dist/astro/routes/api/auth/invite/register-options.mjs +9 -9
  101. package/dist/astro/routes/api/auth/logout.mjs +2 -2
  102. package/dist/astro/routes/api/auth/magic-link/send.mjs +9 -9
  103. package/dist/astro/routes/api/auth/magic-link/verify.mjs +2 -2
  104. package/dist/astro/routes/api/auth/me.mjs +7 -7
  105. package/dist/astro/routes/api/auth/mode.mjs +2 -2
  106. package/dist/astro/routes/api/auth/oauth/_provider_/callback.mjs +3 -3
  107. package/dist/astro/routes/api/auth/oauth/_provider_.mjs +2 -2
  108. package/dist/astro/routes/api/auth/passkey/_id_.mjs +6 -6
  109. package/dist/astro/routes/api/auth/passkey/index.mjs +1 -1
  110. package/dist/astro/routes/api/auth/passkey/options.mjs +11 -11
  111. package/dist/astro/routes/api/auth/passkey/register/options.mjs +9 -9
  112. package/dist/astro/routes/api/auth/passkey/register/verify.mjs +10 -10
  113. package/dist/astro/routes/api/auth/passkey/verify.mjs +10 -10
  114. package/dist/astro/routes/api/auth/signup/complete.mjs +10 -10
  115. package/dist/astro/routes/api/auth/signup/request.mjs +9 -9
  116. package/dist/astro/routes/api/auth/signup/verify.mjs +1 -1
  117. package/dist/astro/routes/api/comments/_collection_/_contentId_/index.mjs +13 -13
  118. package/dist/astro/routes/api/comments/_collection_/_contentId_/reactions.mjs +12 -12
  119. package/dist/astro/routes/api/content/_collection_/_id_/compare.mjs +2 -2
  120. package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.d.mts.map +1 -1
  121. package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs +14 -5
  122. package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs.map +1 -1
  123. package/dist/astro/routes/api/content/_collection_/_id_/duplicate.mjs +3 -3
  124. package/dist/astro/routes/api/content/_collection_/_id_/permanent.mjs +2 -2
  125. package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs +10 -10
  126. package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs +13 -10
  127. package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs.map +1 -1
  128. package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/children.mjs +15 -15
  129. package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/parents.mjs +15 -15
  130. package/dist/astro/routes/api/content/_collection_/_id_/restore.mjs +3 -3
  131. package/dist/astro/routes/api/content/_collection_/_id_/revisions.mjs +2 -2
  132. package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs +8 -8
  133. package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs +13 -13
  134. package/dist/astro/routes/api/content/_collection_/_id_/translations.mjs +2 -2
  135. package/dist/astro/routes/api/content/_collection_/_id_/unpublish.d.mts.map +1 -1
  136. package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs +14 -5
  137. package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs.map +1 -1
  138. package/dist/astro/routes/api/content/_collection_/_id_.mjs +8 -8
  139. package/dist/astro/routes/api/content/_collection_/authors.mjs +2 -2
  140. package/dist/astro/routes/api/content/_collection_/index.mjs +8 -8
  141. package/dist/astro/routes/api/content/_collection_/trash.mjs +7 -7
  142. package/dist/astro/routes/api/dashboard.mjs +7 -7
  143. package/dist/astro/routes/api/dev/emails.mjs +2 -2
  144. package/dist/astro/routes/api/import/probe.d.mts +3 -3
  145. package/dist/astro/routes/api/import/probe.mjs +15 -15
  146. package/dist/astro/routes/api/import/wordpress/analyze.mjs +2 -2
  147. package/dist/astro/routes/api/import/wordpress/execute.d.mts +11 -11
  148. package/dist/astro/routes/api/import/wordpress/execute.mjs +11 -11
  149. package/dist/astro/routes/api/import/wordpress/media.d.mts +10 -10
  150. package/dist/astro/routes/api/import/wordpress/media.mjs +9 -9
  151. package/dist/astro/routes/api/import/wordpress/prepare.mjs +9 -9
  152. package/dist/astro/routes/api/import/wordpress/rewrite-urls.d.mts +11 -11
  153. package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs +10 -10
  154. package/dist/astro/routes/api/import/wordpress-plugin/analyze.d.mts +1 -1
  155. package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs +15 -15
  156. package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts +11 -11
  157. package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs +22 -22
  158. package/dist/astro/routes/api/manifest.mjs +3 -3
  159. package/dist/astro/routes/api/manifest.mjs.map +1 -1
  160. package/dist/astro/routes/api/mcp.mjs +188 -65
  161. package/dist/astro/routes/api/mcp.mjs.map +1 -1
  162. package/dist/astro/routes/api/media/_id_/confirm.mjs +9 -9
  163. package/dist/astro/routes/api/media/_id_/replace.d.mts +8 -0
  164. package/dist/astro/routes/api/media/_id_/replace.d.mts.map +1 -0
  165. package/dist/astro/routes/api/media/_id_/replace.mjs +91 -0
  166. package/dist/astro/routes/api/media/_id_/replace.mjs.map +1 -0
  167. package/dist/astro/routes/api/media/_id_/upload.mjs +5 -5
  168. package/dist/astro/routes/api/media/_id_/usage.mjs +16 -16
  169. package/dist/astro/routes/api/media/_id_.mjs +15 -15
  170. package/dist/astro/routes/api/media/file/_...key_.d.mts.map +1 -1
  171. package/dist/astro/routes/api/media/file/_...key_.mjs +3 -2
  172. package/dist/astro/routes/api/media/file/_...key_.mjs.map +1 -1
  173. package/dist/astro/routes/api/media/folders/_id_.mjs +8 -8
  174. package/dist/astro/routes/api/media/folders/index.mjs +8 -8
  175. package/dist/astro/routes/api/media/providers/_providerId_/_itemId_.mjs +2 -2
  176. package/dist/astro/routes/api/media/providers/_providerId_/index.mjs +2 -2
  177. package/dist/astro/routes/api/media/providers/index.mjs +2 -2
  178. package/dist/astro/routes/api/media/upload-url.mjs +15 -13
  179. package/dist/astro/routes/api/media/upload-url.mjs.map +1 -1
  180. package/dist/astro/routes/api/media.d.mts.map +1 -1
  181. package/dist/astro/routes/api/media.mjs +47 -24
  182. package/dist/astro/routes/api/media.mjs.map +1 -1
  183. package/dist/astro/routes/api/menus/_name_/items/_id_.d.mts.map +1 -1
  184. package/dist/astro/routes/api/menus/_name_/items/_id_.mjs +20 -13
  185. package/dist/astro/routes/api/menus/_name_/items/_id_.mjs.map +1 -1
  186. package/dist/astro/routes/api/menus/_name_/items.d.mts.map +1 -1
  187. package/dist/astro/routes/api/menus/_name_/items.mjs +15 -11
  188. package/dist/astro/routes/api/menus/_name_/items.mjs.map +1 -1
  189. package/dist/astro/routes/api/menus/_name_/reorder.d.mts.map +1 -1
  190. package/dist/astro/routes/api/menus/_name_/reorder.mjs +15 -11
  191. package/dist/astro/routes/api/menus/_name_/reorder.mjs.map +1 -1
  192. package/dist/astro/routes/api/menus/_name_/translations.d.mts.map +1 -1
  193. package/dist/astro/routes/api/menus/_name_/translations.mjs +16 -12
  194. package/dist/astro/routes/api/menus/_name_/translations.mjs.map +1 -1
  195. package/dist/astro/routes/api/menus/_name_.d.mts.map +1 -1
  196. package/dist/astro/routes/api/menus/_name_.mjs +21 -14
  197. package/dist/astro/routes/api/menus/_name_.mjs.map +1 -1
  198. package/dist/astro/routes/api/menus/index.d.mts.map +1 -1
  199. package/dist/astro/routes/api/menus/index.mjs +15 -11
  200. package/dist/astro/routes/api/menus/index.mjs.map +1 -1
  201. package/dist/astro/routes/api/oauth/authorize.mjs +6 -6
  202. package/dist/astro/routes/api/oauth/device/authorize.mjs +5 -5
  203. package/dist/astro/routes/api/oauth/device/code.mjs +8 -8
  204. package/dist/astro/routes/api/oauth/device/token.mjs +7 -7
  205. package/dist/astro/routes/api/oauth/register.mjs +2 -2
  206. package/dist/astro/routes/api/oauth/token/refresh.mjs +5 -5
  207. package/dist/astro/routes/api/oauth/token/revoke.mjs +5 -5
  208. package/dist/astro/routes/api/oauth/token.mjs +5 -5
  209. package/dist/astro/routes/api/openapi.json.mjs +104 -38
  210. package/dist/astro/routes/api/openapi.json.mjs.map +1 -1
  211. package/dist/astro/routes/api/plugins/_pluginId_/_...path_.mjs +4 -4
  212. package/dist/astro/routes/api/redirects/404s/index.mjs +8 -8
  213. package/dist/astro/routes/api/redirects/404s/summary.mjs +8 -8
  214. package/dist/astro/routes/api/redirects/_id_.mjs +9 -9
  215. package/dist/astro/routes/api/redirects/index.mjs +9 -9
  216. package/dist/astro/routes/api/relations/_id_/index.mjs +15 -15
  217. package/dist/astro/routes/api/relations/_id_/translations.mjs +10 -10
  218. package/dist/astro/routes/api/relations/index.mjs +15 -15
  219. package/dist/astro/routes/api/revisions/_revisionId_/index.mjs +2 -2
  220. package/dist/astro/routes/api/revisions/_revisionId_/restore.mjs +3 -3
  221. package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs +47 -47
  222. package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs +47 -47
  223. package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs +47 -47
  224. package/dist/astro/routes/api/schema/collections/_slug_/index.mjs +47 -47
  225. package/dist/astro/routes/api/schema/collections/index.mjs +47 -47
  226. package/dist/astro/routes/api/schema/collections/reorder.mjs +47 -47
  227. package/dist/astro/routes/api/schema/index.mjs +8 -8
  228. package/dist/astro/routes/api/schema/orphans/_slug_.mjs +47 -47
  229. package/dist/astro/routes/api/schema/orphans/index.mjs +47 -47
  230. package/dist/astro/routes/api/search/enable.mjs +10 -10
  231. package/dist/astro/routes/api/search/index.mjs +9 -9
  232. package/dist/astro/routes/api/search/rebuild.mjs +10 -10
  233. package/dist/astro/routes/api/search/stats.mjs +5 -5
  234. package/dist/astro/routes/api/search/suggest.mjs +9 -9
  235. package/dist/astro/routes/api/sections/_slug_.mjs +9 -9
  236. package/dist/astro/routes/api/sections/index.mjs +9 -9
  237. package/dist/astro/routes/api/settings/backups/archives/_name_.mjs +5 -5
  238. package/dist/astro/routes/api/settings/backups/archives/index.mjs +4 -4
  239. package/dist/astro/routes/api/settings/backups/export.mjs +5 -5
  240. package/dist/astro/routes/api/settings/backups/index.mjs +6 -6
  241. package/dist/astro/routes/api/settings/email.mjs +4 -4
  242. package/dist/astro/routes/api/settings/email.mjs.map +1 -1
  243. package/dist/astro/routes/api/settings.d.mts.map +1 -1
  244. package/dist/astro/routes/api/settings.mjs +18 -14
  245. package/dist/astro/routes/api/settings.mjs.map +1 -1
  246. package/dist/astro/routes/api/setup/admin-verify.mjs +11 -11
  247. package/dist/astro/routes/api/setup/admin.mjs +10 -10
  248. package/dist/astro/routes/api/setup/dev-bypass.mjs +25 -25
  249. package/dist/astro/routes/api/setup/dev-reset.mjs +1 -1
  250. package/dist/astro/routes/api/setup/index.mjs +25 -25
  251. package/dist/astro/routes/api/setup/status.mjs +3 -3
  252. package/dist/astro/routes/api/snapshot.mjs +6 -6
  253. package/dist/astro/routes/api/taxonomies/_name_/reorder.d.mts.map +1 -1
  254. package/dist/astro/routes/api/taxonomies/_name_/reorder.mjs +19 -15
  255. package/dist/astro/routes/api/taxonomies/_name_/reorder.mjs.map +1 -1
  256. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.d.mts.map +1 -1
  257. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs +20 -16
  258. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs.map +1 -1
  259. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.d.mts.map +1 -1
  260. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs +24 -17
  261. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs.map +1 -1
  262. package/dist/astro/routes/api/taxonomies/_name_/terms/index.d.mts.map +1 -1
  263. package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs +19 -15
  264. package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs.map +1 -1
  265. package/dist/astro/routes/api/taxonomies/_name_/translations.mjs +13 -13
  266. package/dist/astro/routes/api/taxonomies/_name_.d.mts.map +1 -1
  267. package/dist/astro/routes/api/taxonomies/_name_.mjs +25 -18
  268. package/dist/astro/routes/api/taxonomies/_name_.mjs.map +1 -1
  269. package/dist/astro/routes/api/taxonomies/index.d.mts.map +1 -1
  270. package/dist/astro/routes/api/taxonomies/index.mjs +19 -15
  271. package/dist/astro/routes/api/taxonomies/index.mjs.map +1 -1
  272. package/dist/astro/routes/api/themes/preview.mjs +4 -4
  273. package/dist/astro/routes/api/typegen.mjs +4 -4
  274. package/dist/astro/routes/api/well-known/auth.mjs +1 -1
  275. package/dist/astro/routes/api/well-known/oauth-authorization-server.mjs +2 -2
  276. package/dist/astro/routes/api/well-known/oauth-protected-resource.mjs +2 -2
  277. package/dist/astro/routes/api/widget-areas/_name_/reorder.d.mts.map +1 -1
  278. package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs +10 -8
  279. package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs.map +1 -1
  280. package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.d.mts.map +1 -1
  281. package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs +16 -12
  282. package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs.map +1 -1
  283. package/dist/astro/routes/api/widget-areas/_name_/widgets.d.mts.map +1 -1
  284. package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs +14 -11
  285. package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs.map +1 -1
  286. package/dist/astro/routes/api/widget-areas/_name_.d.mts.map +1 -1
  287. package/dist/astro/routes/api/widget-areas/_name_.mjs +7 -5
  288. package/dist/astro/routes/api/widget-areas/_name_.mjs.map +1 -1
  289. package/dist/astro/routes/api/widget-areas/index.d.mts.map +1 -1
  290. package/dist/astro/routes/api/widget-areas/index.mjs +14 -11
  291. package/dist/astro/routes/api/widget-areas/index.mjs.map +1 -1
  292. package/dist/astro/routes/api/widget-components.mjs +2 -2
  293. package/dist/astro/routes/robots.txt.mjs +5 -5
  294. package/dist/astro/routes/sitemap-_collection_.xml.mjs +8 -8
  295. package/dist/astro/routes/sitemap.xml.mjs +6 -6
  296. package/dist/astro/types.d.mts +32 -17
  297. package/dist/astro/types.d.mts.map +1 -1
  298. package/dist/auth/providers/github.d.mts +1 -1
  299. package/dist/auth/providers/google.d.mts +1 -1
  300. package/dist/{authorize-ByYs-Uxs.mjs → authorize-Bkf_UHhD.mjs} +2 -2
  301. package/dist/{authorize-ByYs-Uxs.mjs.map → authorize-Bkf_UHhD.mjs.map} +1 -1
  302. package/dist/{backup-ChyHfIoX.mjs → backup-rwVAl9NI.mjs} +4 -4
  303. package/dist/{backup-ChyHfIoX.mjs.map → backup-rwVAl9NI.mjs.map} +1 -1
  304. package/dist/{bundle-DZFhFurR.mjs → bundle-C8S2Zl6U.mjs} +3 -3
  305. package/dist/{bundle-DZFhFurR.mjs.map → bundle-C8S2Zl6U.mjs.map} +1 -1
  306. package/dist/{byline-Cpnwrje1.mjs → byline-DuhF7NWl.mjs} +25 -12
  307. package/dist/byline-DuhF7NWl.mjs.map +1 -0
  308. package/dist/{byline-fields-CAyA_Umd.mjs → byline-fields-BovY4KYM.mjs} +1 -1
  309. package/dist/{byline-fields-CAyA_Umd.mjs.map → byline-fields-BovY4KYM.mjs.map} +1 -1
  310. package/dist/{bylines-BSo9B9RX.mjs → bylines-CJ5nd6Lw.mjs} +6 -6
  311. package/dist/{bylines-BSo9B9RX.mjs.map → bylines-CJ5nd6Lw.mjs.map} +1 -1
  312. package/dist/{bylines-CHjvehVX.mjs → bylines-RwBAeOF1.mjs} +3 -3
  313. package/dist/{bylines-CHjvehVX.mjs.map → bylines-RwBAeOF1.mjs.map} +1 -1
  314. package/dist/{cache-5VirJ2Cn.mjs → cache-BF5Kvn59.mjs} +2 -2
  315. package/dist/{cache-5VirJ2Cn.mjs.map → cache-BF5Kvn59.mjs.map} +1 -1
  316. package/dist/{challenge-store-D5pSY2S1.mjs → challenge-store-DQN_Yrck.mjs} +5 -3
  317. package/dist/challenge-store-DQN_Yrck.mjs.map +1 -0
  318. package/dist/chrome-tags-D8fiZG94.mjs +24 -0
  319. package/dist/chrome-tags-D8fiZG94.mjs.map +1 -0
  320. package/dist/{chunks-bNiX6_DR.mjs → chunks-C4szrD8o.mjs} +2 -2
  321. package/dist/{chunks-bNiX6_DR.mjs.map → chunks-C4szrD8o.mjs.map} +1 -1
  322. package/dist/cli/index.mjs +26 -26
  323. package/dist/client/cf-access.d.mts +1 -1
  324. package/dist/client/index.d.mts +2 -2
  325. package/dist/client/index.mjs +2 -2
  326. package/dist/{collection-deletion-m_oi2c0N.mjs → collection-deletion-Bj07NHbj.mjs} +2 -2
  327. package/dist/{collection-deletion-m_oi2c0N.mjs.map → collection-deletion-Bj07NHbj.mjs.map} +1 -1
  328. package/dist/{comment-reaction-CRuItEjt.mjs → comment-reaction-BhrvSHml.mjs} +2 -2
  329. package/dist/{comment-reaction-CRuItEjt.mjs.map → comment-reaction-BhrvSHml.mjs.map} +1 -1
  330. package/dist/{comment-DhvLEdhQ.mjs → comment-vxOzWbZN.mjs} +2 -2
  331. package/dist/{comment-DhvLEdhQ.mjs.map → comment-vxOzWbZN.mjs.map} +1 -1
  332. package/dist/{comments-CLj4bi8I.mjs → comments-Ct4ensnf.mjs} +2 -2
  333. package/dist/{comments-CLj4bi8I.mjs.map → comments-Ct4ensnf.mjs.map} +1 -1
  334. package/dist/{components-v4U4DT2y.mjs → components-DJbo1z0S.mjs} +1 -1
  335. package/dist/{components-v4U4DT2y.mjs.map → components-DJbo1z0S.mjs.map} +1 -1
  336. package/dist/{config-DrfghTPe.d.mts → config-B9eZ340f.d.mts} +1 -1
  337. package/dist/{config-DrfghTPe.d.mts.map → config-B9eZ340f.d.mts.map} +1 -1
  338. package/dist/config-it29yDLA.mjs +1163 -0
  339. package/dist/config-it29yDLA.mjs.map +1 -0
  340. package/dist/{content-CP-SeXNa.mjs → content-DjvM0T92.mjs} +84 -44
  341. package/dist/content-DjvM0T92.mjs.map +1 -0
  342. package/dist/{content-list-query-BhejKVqb.d.mts → content-list-query-Btqd4uV2.d.mts} +1 -1
  343. package/dist/{content-list-query-BhejKVqb.d.mts.map → content-list-query-Btqd4uV2.d.mts.map} +1 -1
  344. package/dist/{content-refresh-DLOfIhYc.mjs → content-refresh-Bwp-8yGy.mjs} +48 -21
  345. package/dist/content-refresh-Bwp-8yGy.mjs.map +1 -0
  346. package/dist/{content-repair-BCxzy0r4.mjs → content-repair-Czdp7jz5.mjs} +4 -4
  347. package/dist/{content-repair-BCxzy0r4.mjs.map → content-repair-Czdp7jz5.mjs.map} +1 -1
  348. package/dist/{context-BR5hRWiK.mjs → context-CX6gxOLW.mjs} +52 -17
  349. package/dist/context-CX6gxOLW.mjs.map +1 -0
  350. package/dist/{cron-CWfWrWKG.mjs → cron-C6o7VppJ.mjs} +1 -1
  351. package/dist/{cron-CWfWrWKG.mjs.map → cron-C6o7VppJ.mjs.map} +1 -1
  352. package/dist/{dashboard-CkIV2rnQ.mjs → dashboard-C2kTeeRI.mjs} +4 -4
  353. package/dist/{dashboard-CkIV2rnQ.mjs.map → dashboard-C2kTeeRI.mjs.map} +1 -1
  354. package/dist/db/index.d.mts +3 -3
  355. package/dist/db/index.mjs +1 -1
  356. package/dist/db/index.mjs.map +1 -1
  357. package/dist/db/libsql-migrations.d.mts +1 -1
  358. package/dist/db/libsql-migrations.mjs +4 -4
  359. package/dist/db/libsql.d.mts +1 -1
  360. package/dist/db/postgres-migrations.d.mts +1 -1
  361. package/dist/db/postgres-migrations.mjs +4 -4
  362. package/dist/db/postgres.d.mts +1 -1
  363. package/dist/db/postgres.d.mts.map +1 -1
  364. package/dist/db/postgres.mjs +19 -3
  365. package/dist/db/postgres.mjs.map +1 -1
  366. package/dist/db/sqlite-migrations.d.mts +1 -1
  367. package/dist/db/sqlite-migrations.mjs +4 -4
  368. package/dist/db/sqlite.d.mts +1 -1
  369. package/dist/db/sqlite.mjs +1 -1
  370. package/dist/{default-YMEfcQUx.mjs → default-Clra32mw.mjs} +1 -1
  371. package/dist/{default-YMEfcQUx.mjs.map → default-Clra32mw.mjs.map} +1 -1
  372. package/dist/{deferred-tasks-DfqxH5Xf.d.mts → deferred-tasks-CvDETTJO.d.mts} +1 -1
  373. package/dist/{deferred-tasks-DfqxH5Xf.d.mts.map → deferred-tasks-CvDETTJO.d.mts.map} +1 -1
  374. package/dist/dev-typegen-DzOPfsNj.mjs +29 -0
  375. package/dist/dev-typegen-DzOPfsNj.mjs.map +1 -0
  376. package/dist/{device-flow-CojjSBwb.mjs → device-flow-D2oCWvLJ.mjs} +4 -4
  377. package/dist/{device-flow-CojjSBwb.mjs.map → device-flow-D2oCWvLJ.mjs.map} +1 -1
  378. package/dist/{direct-executor-BWeWiRYB.mjs → direct-executor-Bfa5_ToE.mjs} +3 -3
  379. package/dist/{direct-executor-BWeWiRYB.mjs.map → direct-executor-Bfa5_ToE.mjs.map} +1 -1
  380. package/dist/{email-console-CEJgR_LB.mjs → email-console-Dzb6uGYa.mjs} +1 -1
  381. package/dist/{email-console-CEJgR_LB.mjs.map → email-console-Dzb6uGYa.mjs.map} +1 -1
  382. package/dist/{error-D9w94fjV.mjs → error-DFrQjppn.mjs} +2 -2
  383. package/dist/{error-D9w94fjV.mjs.map → error-DFrQjppn.mjs.map} +1 -1
  384. package/dist/{errors-n2j49uNf.mjs → errors-DsVoDUjJ.mjs} +3 -1
  385. package/dist/errors-DsVoDUjJ.mjs.map +1 -0
  386. package/dist/{escape-DN4Qmjsl.mjs → escape-HmHTC1Is.mjs} +1 -1
  387. package/dist/{escape-DN4Qmjsl.mjs.map → escape-HmHTC1Is.mjs.map} +1 -1
  388. package/dist/{field-defs-cache-Bh4q6oar.mjs → field-defs-cache-BM4SIRqH.mjs} +2 -2
  389. package/dist/{field-defs-cache-Bh4q6oar.mjs.map → field-defs-cache-BM4SIRqH.mjs.map} +1 -1
  390. package/dist/{fts-manager-BhOdW0bi.mjs → fts-manager-Do1BlW2r.mjs} +2 -2
  391. package/dist/{fts-manager-BhOdW0bi.mjs.map → fts-manager-Do1BlW2r.mjs.map} +1 -1
  392. package/dist/{hash-CTcngWvj.mjs → hash-3JJPlHF2.mjs} +1 -1
  393. package/dist/{hash-CTcngWvj.mjs.map → hash-3JJPlHF2.mjs.map} +1 -1
  394. package/dist/hook-result-DCh2WUpe.d.mts +31 -0
  395. package/dist/hook-result-DCh2WUpe.d.mts.map +1 -0
  396. package/dist/{hreflang-7pTHsLZJ.d.mts → hreflang-B6hbAuuO.d.mts} +2 -2
  397. package/dist/{hreflang-7pTHsLZJ.d.mts.map → hreflang-B6hbAuuO.d.mts.map} +1 -1
  398. package/dist/{hreflang-Huc6O5wa.mjs → hreflang-DQbPZliA.mjs} +6 -6
  399. package/dist/{hreflang-Huc6O5wa.mjs.map → hreflang-DQbPZliA.mjs.map} +1 -1
  400. package/dist/{identity-DXmb4aVp.mjs → identity-DksvEazf.mjs} +3 -3
  401. package/dist/{identity-DXmb4aVp.mjs.map → identity-DksvEazf.mjs.map} +1 -1
  402. package/dist/{import-C4_O3KXU.mjs → import-CJpaBBBT.mjs} +5 -5
  403. package/dist/{import-C4_O3KXU.mjs.map → import-CJpaBBBT.mjs.map} +1 -1
  404. package/dist/{index-DWbJrsAg.d.mts → index-BJNMCWmu.d.mts} +158 -49
  405. package/dist/index-BJNMCWmu.d.mts.map +1 -0
  406. package/dist/{index-6bRee8zb.d.mts → index-Du8K7bWa.d.mts} +3 -3
  407. package/dist/{index-6bRee8zb.d.mts.map → index-Du8K7bWa.d.mts.map} +1 -1
  408. package/dist/index.d.mts +22 -21
  409. package/dist/index.mjs +70 -70
  410. package/dist/{load-Bo7fZAbg.mjs → load-CawHjTOH.mjs} +2 -2
  411. package/dist/{load-Bo7fZAbg.mjs.map → load-CawHjTOH.mjs.map} +1 -1
  412. package/dist/{loader-ZsjE4paL.mjs → loader-Z8vl7zTq.mjs} +48 -13
  413. package/dist/loader-Z8vl7zTq.mjs.map +1 -0
  414. package/dist/{manifest-builder-QXuqvVMP.mjs → manifest-builder-COtzuca2.mjs} +2 -2
  415. package/dist/{manifest-builder-QXuqvVMP.mjs.map → manifest-builder-COtzuca2.mjs.map} +1 -1
  416. package/dist/{manifest-schema-CUYPfCEH.mjs → manifest-schema-BNWwR8Vd.mjs} +5 -5
  417. package/dist/manifest-schema-BNWwR8Vd.mjs.map +1 -0
  418. package/dist/media/image-endpoint.d.mts +4 -2
  419. package/dist/media/image-endpoint.d.mts.map +1 -1
  420. package/dist/media/image-endpoint.mjs +6 -4
  421. package/dist/media/image-endpoint.mjs.map +1 -1
  422. package/dist/media/index.d.mts +1 -1
  423. package/dist/media/index.mjs +1 -1
  424. package/dist/media/local-runtime.d.mts +12 -12
  425. package/dist/media/local-runtime.mjs +4 -4
  426. package/dist/{media-D6SeAfBl.mjs → media-BBm8Wg3f.mjs} +30 -2
  427. package/dist/media-BBm8Wg3f.mjs.map +1 -0
  428. package/dist/{media-BjwNuLEu.mjs → media-BHjus86Y.mjs} +35 -5
  429. package/dist/media-BHjus86Y.mjs.map +1 -0
  430. package/dist/{media-allowlist-D35v7bmL.mjs → media-allowlist-CoTBWoDp.mjs} +1 -1
  431. package/dist/{media-allowlist-D35v7bmL.mjs.map → media-allowlist-CoTBWoDp.mjs.map} +1 -1
  432. package/dist/{media-folders-D-0CmRZj.mjs → media-folders-BGkATs8n.mjs} +1 -1
  433. package/dist/{media-folders-D-0CmRZj.mjs.map → media-folders-BGkATs8n.mjs.map} +1 -1
  434. package/dist/{media-upload-C7bLXGcI.mjs → media-upload-BCidR-EY.mjs} +6 -6
  435. package/dist/{media-upload-C7bLXGcI.mjs.map → media-upload-BCidR-EY.mjs.map} +1 -1
  436. package/dist/{media-url-DH7giMx_.mjs → media-url-DHoPr0hq.mjs} +1 -1
  437. package/dist/{media-url-DH7giMx_.mjs.map → media-url-DHoPr0hq.mjs.map} +1 -1
  438. package/dist/{media-usage-BTRJvS6V.mjs → media-usage-CdY5jhSR.mjs} +8 -8
  439. package/dist/{media-usage-BTRJvS6V.mjs.map → media-usage-CdY5jhSR.mjs.map} +1 -1
  440. package/dist/{media-usage-activation-Dx0kPV6b.mjs → media-usage-activation-BgeMtK5C.mjs} +2 -2
  441. package/dist/{media-usage-activation-Dx0kPV6b.mjs.map → media-usage-activation-BgeMtK5C.mjs.map} +1 -1
  442. package/dist/{media-usage-work-DWb2XPMI.mjs → media-usage-work-CnGCdHxx.mjs} +4 -4
  443. package/dist/{media-usage-work-DWb2XPMI.mjs.map → media-usage-work-CnGCdHxx.mjs.map} +1 -1
  444. package/dist/{media-usage-work-C-fhM30c.mjs → media-usage-work-D6D9sMCA.mjs} +1 -1
  445. package/dist/{media-usage-work-C-fhM30c.mjs.map → media-usage-work-D6D9sMCA.mjs.map} +1 -1
  446. package/dist/{media-usage-write-fence-BwoJVRDC.mjs → media-usage-write-fence-hjeD4u7s.mjs} +2 -2
  447. package/dist/{media-usage-write-fence-BwoJVRDC.mjs.map → media-usage-write-fence-hjeD4u7s.mjs.map} +1 -1
  448. package/dist/{menus-CNg0QlDt.mjs → menus-6qSwTNxG.mjs} +346 -94
  449. package/dist/menus-6qSwTNxG.mjs.map +1 -0
  450. package/dist/{menus-CD7EFLwz.mjs → menus-uvPLXMZf.mjs} +3 -3
  451. package/dist/{menus-CD7EFLwz.mjs.map → menus-uvPLXMZf.mjs.map} +1 -1
  452. package/dist/migrations/index.d.mts +1 -1
  453. package/dist/migrations/index.mjs +3 -3
  454. package/dist/{mode-DaUM_MB2.mjs → mode-DN_WneRx.mjs} +1 -1
  455. package/dist/{mode-DaUM_MB2.mjs.map → mode-DN_WneRx.mjs.map} +1 -1
  456. package/dist/{node-sqlite-compat-Udb4Y-rs.mjs → node-sqlite-compat-BuJXIeMz.mjs} +1 -1
  457. package/dist/{node-sqlite-compat-Udb4Y-rs.mjs.map → node-sqlite-compat-BuJXIeMz.mjs.map} +1 -1
  458. package/dist/{normalize-CSxdKBVa.mjs → normalize-C2xNjTSG.mjs} +15 -5
  459. package/dist/normalize-C2xNjTSG.mjs.map +1 -0
  460. package/dist/{oauth-authorization-Dpsb-fMJ.mjs → oauth-authorization-Dj6Kwc21.mjs} +4 -4
  461. package/dist/{oauth-authorization-Dpsb-fMJ.mjs.map → oauth-authorization-Dj6Kwc21.mjs.map} +1 -1
  462. package/dist/{oauth-clients-Bxnoe_67.mjs → oauth-clients-FD7I0J8m.mjs} +1 -1
  463. package/dist/{oauth-clients-Bxnoe_67.mjs.map → oauth-clients-FD7I0J8m.mjs.map} +1 -1
  464. package/dist/{oauth-state-store-0C4s0K6w.mjs → oauth-state-store-DkmDOmHs.mjs} +1 -1
  465. package/dist/{oauth-state-store-0C4s0K6w.mjs.map → oauth-state-store-DkmDOmHs.mjs.map} +1 -1
  466. package/dist/{oauth-user-lookup-wlGYSeqX.mjs → oauth-user-lookup-CvIwGpYd.mjs} +1 -1
  467. package/dist/{oauth-user-lookup-wlGYSeqX.mjs.map → oauth-user-lookup-CvIwGpYd.mjs.map} +1 -1
  468. package/dist/object-cache/memory.d.mts +1 -1
  469. package/dist/{object-cache-71tPfV4A.mjs → object-cache-DVKnyOfy.mjs} +19 -3
  470. package/dist/object-cache-DVKnyOfy.mjs.map +1 -0
  471. package/dist/{options-BhZIeFY1.d.mts → options-CYb4y7hM.d.mts} +24 -11
  472. package/dist/options-CYb4y7hM.d.mts.map +1 -0
  473. package/dist/page/index.d.mts +2 -2
  474. package/dist/{parse-BRJg1kz8.mjs → parse-Ckpg-Qfp.mjs} +2 -2
  475. package/dist/{parse-BRJg1kz8.mjs.map → parse-Ckpg-Qfp.mjs.map} +1 -1
  476. package/dist/{passkey-config-B3P0nHRR.mjs → passkey-config-O_lj3y0k.mjs} +1 -1
  477. package/dist/{passkey-config-B3P0nHRR.mjs.map → passkey-config-O_lj3y0k.mjs.map} +1 -1
  478. package/dist/{placeholder-BR4ZhVJl.d.mts → placeholder-4X9BrRrp.d.mts} +1 -1
  479. package/dist/{placeholder-BR4ZhVJl.d.mts.map → placeholder-4X9BrRrp.d.mts.map} +1 -1
  480. package/dist/plugin-types.d.mts +8 -3
  481. package/dist/plugin-types.d.mts.map +1 -1
  482. package/dist/plugin-utils.d.mts +10 -10
  483. package/dist/plugins/adapt-sandbox-entry.d.mts +10 -10
  484. package/dist/plugins/adapt-sandbox-entry.mjs +2 -2
  485. package/dist/{policy-BVRganJQ.mjs → policy-Dhtwntrt.mjs} +2 -2
  486. package/dist/{policy-BVRganJQ.mjs.map → policy-Dhtwntrt.mjs.map} +1 -1
  487. package/dist/{portable-text-C8Tvp4_g.mjs → portable-text-U85hOafW.mjs} +1 -1
  488. package/dist/{portable-text-C8Tvp4_g.mjs.map → portable-text-U85hOafW.mjs.map} +1 -1
  489. package/dist/{preview-dn2dUyM0.mjs → preview-B_vJLvf8.mjs} +2 -2
  490. package/dist/{preview-dn2dUyM0.mjs.map → preview-B_vJLvf8.mjs.map} +1 -1
  491. package/dist/{protocol-CuBEsqgE.d.mts → protocol-JdD2YhY9.d.mts} +2 -2
  492. package/dist/{protocol-CuBEsqgE.d.mts.map → protocol-JdD2YhY9.d.mts.map} +1 -1
  493. package/dist/{public-url-DRz_AinV.mjs → public-url-CarhZJgf.mjs} +1 -1
  494. package/dist/{public-url-DRz_AinV.mjs.map → public-url-CarhZJgf.mjs.map} +1 -1
  495. package/dist/{query-D18vTdha.mjs → query-BZKZcG5b.mjs} +14 -14
  496. package/dist/{query-D18vTdha.mjs.map → query-BZKZcG5b.mjs.map} +1 -1
  497. package/dist/{query-tZDEdtCN.mjs → query-BndaFxxp.mjs} +4 -4
  498. package/dist/{query-tZDEdtCN.mjs.map → query-BndaFxxp.mjs.map} +1 -1
  499. package/dist/{rate-limit-on7KPo-v.mjs → rate-limit-BZmATC6W.mjs} +2 -2
  500. package/dist/{rate-limit-on7KPo-v.mjs.map → rate-limit-BZmATC6W.mjs.map} +1 -1
  501. package/dist/{redirect-DrbEmU9a.mjs → redirect-CzqnLxK-.mjs} +1 -1
  502. package/dist/{redirect-DrbEmU9a.mjs.map → redirect-CzqnLxK-.mjs.map} +1 -1
  503. package/dist/{redirects-CRIM55KH.mjs → redirects-BLNOWQTn.mjs} +63 -28
  504. package/dist/redirects-BLNOWQTn.mjs.map +1 -0
  505. package/dist/{redirects-BahWiu8Z.mjs → redirects-CqzNM0KM.mjs} +2 -2
  506. package/dist/{redirects-BahWiu8Z.mjs.map → redirects-CqzNM0KM.mjs.map} +1 -1
  507. package/dist/{registry-Cx-jEJOS.mjs → registry-AZAsRsor.mjs} +27 -9
  508. package/dist/registry-AZAsRsor.mjs.map +1 -0
  509. package/dist/{relation-A6wLF_DS.mjs → relation-04DfKRTO.mjs} +2 -2
  510. package/dist/{relation-A6wLF_DS.mjs.map → relation-04DfKRTO.mjs.map} +1 -1
  511. package/dist/{relations-BTPM2saV.mjs → relations-C4htk5sb.mjs} +7 -7
  512. package/dist/relations-C4htk5sb.mjs.map +1 -0
  513. package/dist/{relations-Cj5hZ6Zg.mjs → relations-CcFwDJdJ.mjs} +4 -4
  514. package/dist/{relations-Cj5hZ6Zg.mjs.map → relations-CcFwDJdJ.mjs.map} +1 -1
  515. package/dist/{relations-C7B46bcU.d.mts → relations-DnRK4YIT.d.mts} +175 -41
  516. package/dist/relations-DnRK4YIT.d.mts.map +1 -0
  517. package/dist/request-context.d.mts +1 -1
  518. package/dist/{request-meta-DRp5ENd_.mjs → request-meta-DYxLlnmz.mjs} +2 -2
  519. package/dist/{request-meta-DRp5ENd_.mjs.map → request-meta-DYxLlnmz.mjs.map} +1 -1
  520. package/dist/{resolve-DxUpTMmE.mjs → resolve-prZ3mP7l.mjs} +1 -1
  521. package/dist/{resolve-DxUpTMmE.mjs.map → resolve-prZ3mP7l.mjs.map} +1 -1
  522. package/dist/{runner-77GOZCnH.mjs → runner-BLIDKpmA.mjs} +351 -294
  523. package/dist/runner-BLIDKpmA.mjs.map +1 -0
  524. package/dist/{runner-zgqA_CqP.d.mts → runner-YKfIMnaF.d.mts} +3 -2
  525. package/dist/runner-YKfIMnaF.d.mts.map +1 -0
  526. package/dist/runtime.d.mts +11 -11
  527. package/dist/runtime.mjs +1 -1
  528. package/dist/{schema-BY-oVntF.mjs → schema-CGnBeLiW.mjs} +3 -3
  529. package/dist/{schema-BY-oVntF.mjs.map → schema-CGnBeLiW.mjs.map} +1 -1
  530. package/dist/{schema-Cw9kVK0I.mjs → schema-DYr-Vd-L.mjs} +5 -5
  531. package/dist/{schema-Cw9kVK0I.mjs.map → schema-DYr-Vd-L.mjs.map} +1 -1
  532. package/dist/{scopes-vMR1uIbt.mjs → scopes-BhWvBavj.mjs} +3 -3
  533. package/dist/{scopes-vMR1uIbt.mjs.map → scopes-BhWvBavj.mjs.map} +1 -1
  534. package/dist/{search-CfT3KxO5.mjs → search-C-qDk4kx.mjs} +4 -4
  535. package/dist/{search-CfT3KxO5.mjs.map → search-C-qDk4kx.mjs.map} +1 -1
  536. package/dist/{secrets-BH2Qow1-.mjs → secrets-rEtHt-6z.mjs} +1 -1
  537. package/dist/{secrets-BH2Qow1-.mjs.map → secrets-rEtHt-6z.mjs.map} +1 -1
  538. package/dist/{sections-DTfjyf1z.mjs → sections-B_nYvlwn.mjs} +2 -2
  539. package/dist/{sections-DTfjyf1z.mjs.map → sections-B_nYvlwn.mjs.map} +1 -1
  540. package/dist/seed/index.d.mts +2 -2
  541. package/dist/seed/index.mjs +18 -18
  542. package/dist/seo/index.d.mts +3 -3
  543. package/dist/seo/index.mjs +13 -13
  544. package/dist/{seo-Cm-dtvgk.mjs → seo-926NRIgt.mjs} +3 -3
  545. package/dist/{seo-Cm-dtvgk.mjs.map → seo-926NRIgt.mjs.map} +1 -1
  546. package/dist/{seo-BSiTIXzd.mjs → seo-CVWkdv6x.mjs} +1 -1
  547. package/dist/{seo-BSiTIXzd.mjs.map → seo-CVWkdv6x.mjs.map} +1 -1
  548. package/dist/{service-DYsDHEKe.mjs → service-CJl3ZAYs.mjs} +3 -3
  549. package/dist/{service-DYsDHEKe.mjs.map → service-CJl3ZAYs.mjs.map} +1 -1
  550. package/dist/{session-user-CNAfvsdw.mjs → session-user-BlMgqCHS.mjs} +1 -1
  551. package/dist/{session-user-CNAfvsdw.mjs.map → session-user-BlMgqCHS.mjs.map} +1 -1
  552. package/dist/{settings-BgN-0DT-.mjs → settings--wobrkkC.mjs} +18 -5
  553. package/dist/settings--wobrkkC.mjs.map +1 -0
  554. package/dist/{settings-DjtkUo__.mjs → settings-Cwm6o2jY.mjs} +3 -3
  555. package/dist/{settings-DjtkUo__.mjs.map → settings-Cwm6o2jY.mjs.map} +1 -1
  556. package/dist/{setup-complete-CcpXaPU7.mjs → setup-complete-DQbClIN2.mjs} +1 -1
  557. package/dist/{setup-complete-CcpXaPU7.mjs.map → setup-complete-DQbClIN2.mjs.map} +1 -1
  558. package/dist/{setup-nonce-Reyw30jg.mjs → setup-nonce-DZCFS2sn.mjs} +1 -1
  559. package/dist/{setup-nonce-Reyw30jg.mjs.map → setup-nonce-DZCFS2sn.mjs.map} +1 -1
  560. package/dist/{site-url-Cs_V9n3V.mjs → site-url-BrxA_E9H.mjs} +2 -2
  561. package/dist/{site-url-Cs_V9n3V.mjs.map → site-url-BrxA_E9H.mjs.map} +1 -1
  562. package/dist/{snapshot-DSB8P7Lm.mjs → snapshot--OCDTqdb.mjs} +1 -1
  563. package/dist/{snapshot-DSB8P7Lm.mjs.map → snapshot--OCDTqdb.mjs.map} +1 -1
  564. package/dist/{ssrf-DqebVE34.mjs → ssrf-5sIM5jzl.mjs} +4 -3
  565. package/dist/{ssrf-DqebVE34.mjs.map → ssrf-5sIM5jzl.mjs.map} +1 -1
  566. package/dist/{state-BJfU9Uzw.mjs → state-BpFVsJZB.mjs} +1 -1
  567. package/dist/{state-BJfU9Uzw.mjs.map → state-BpFVsJZB.mjs.map} +1 -1
  568. package/dist/{status-DDu8HIQl.mjs → status-B777-dXz.mjs} +1 -1
  569. package/dist/{status-DDu8HIQl.mjs.map → status-B777-dXz.mjs.map} +1 -1
  570. package/dist/storage/local.d.mts +2 -1
  571. package/dist/storage/local.d.mts.map +1 -1
  572. package/dist/storage/local.mjs +1 -1
  573. package/dist/storage/local.mjs.map +1 -1
  574. package/dist/storage/s3.d.mts +2 -1
  575. package/dist/storage/s3.d.mts.map +1 -1
  576. package/dist/storage/s3.mjs +3 -2
  577. package/dist/storage/s3.mjs.map +1 -1
  578. package/dist/{target-D0o26Azo.mjs → target-BmR0iTwz.mjs} +1 -1
  579. package/dist/{target-D0o26Azo.mjs.map → target-BmR0iTwz.mjs.map} +1 -1
  580. package/dist/{taxonomies-CPGxo-bn.mjs → taxonomies-DkAkMupr.mjs} +16 -13
  581. package/dist/taxonomies-DkAkMupr.mjs.map +1 -0
  582. package/dist/{taxonomies-kmyudNGP.mjs → taxonomies-Wfy_Lg12.mjs} +42 -16
  583. package/dist/taxonomies-Wfy_Lg12.mjs.map +1 -0
  584. package/dist/{taxonomy-8X09dLN5.mjs → taxonomy-tJepplLL.mjs} +4 -4
  585. package/dist/{taxonomy-8X09dLN5.mjs.map → taxonomy-tJepplLL.mjs.map} +1 -1
  586. package/dist/{tokens-gTS-IVUp.mjs → tokens-BCO1oruF.mjs} +1 -1
  587. package/dist/{tokens-gTS-IVUp.mjs.map → tokens-BCO1oruF.mjs.map} +1 -1
  588. package/dist/{transport-fX59xaJz.mjs → transport-Dr3qtwXC.mjs} +1 -1
  589. package/dist/{transport-fX59xaJz.mjs.map → transport-Dr3qtwXC.mjs.map} +1 -1
  590. package/dist/{transport-_6R1ub7t.d.mts → transport-xh6YKW2G.d.mts} +1 -1
  591. package/dist/{transport-_6R1ub7t.d.mts.map → transport-xh6YKW2G.d.mts.map} +1 -1
  592. package/dist/{trusted-proxy-fe6nEgR4.mjs → trusted-proxy-BR5F1Otp.mjs} +1 -1
  593. package/dist/{trusted-proxy-fe6nEgR4.mjs.map → trusted-proxy-BR5F1Otp.mjs.map} +1 -1
  594. package/dist/{types-BXUmsINL.mjs → types-3qNFPlci.mjs} +1 -1
  595. package/dist/{types-BXUmsINL.mjs.map → types-3qNFPlci.mjs.map} +1 -1
  596. package/dist/{types-Vg6f5i3s.d.mts → types-B6GrPic4.d.mts} +9 -3
  597. package/dist/{types-Vg6f5i3s.d.mts.map → types-B6GrPic4.d.mts.map} +1 -1
  598. package/dist/{types-DJQxln7q.d.mts → types-BuHW4xDE.d.mts} +11 -10
  599. package/dist/types-BuHW4xDE.d.mts.map +1 -0
  600. package/dist/{types-BzBd3PeX.d.mts → types-C00oyCZp.d.mts} +1 -1
  601. package/dist/{types-BzBd3PeX.d.mts.map → types-C00oyCZp.d.mts.map} +1 -1
  602. package/dist/{types-Blb-MRC3.d.mts → types-CDtkNSFQ.d.mts} +1 -1
  603. package/dist/{types-Blb-MRC3.d.mts.map → types-CDtkNSFQ.d.mts.map} +1 -1
  604. package/dist/{types-D5VVLr7J.d.mts → types-CPeXo1wF.d.mts} +1 -1
  605. package/dist/{types-D5VVLr7J.d.mts.map → types-CPeXo1wF.d.mts.map} +1 -1
  606. package/dist/types-CQPWhPxE.mjs.map +1 -1
  607. package/dist/{types-D_DWe7k9.d.mts → types-CXFkwEGC.d.mts} +3 -2
  608. package/dist/types-CXFkwEGC.d.mts.map +1 -0
  609. package/dist/{types-CLqvnd05.d.mts → types-DczELMop.d.mts} +1 -1
  610. package/dist/{types-CLqvnd05.d.mts.map → types-DczELMop.d.mts.map} +1 -1
  611. package/dist/types-DfuTR6dL.mjs +3 -0
  612. package/dist/{types-DHxzBjbD.d.mts → types-FV23hEoW.d.mts} +1 -1
  613. package/dist/{types-DHxzBjbD.d.mts.map → types-FV23hEoW.d.mts.map} +1 -1
  614. package/dist/{types-Br-ERaxh.d.mts → types-xDMtUFnO.d.mts} +1 -1
  615. package/dist/{types-Br-ERaxh.d.mts.map → types-xDMtUFnO.d.mts.map} +1 -1
  616. package/dist/{upload-attempts-CNyGSepg.mjs → upload-attempts-BsqoQ1fn.mjs} +1 -1
  617. package/dist/{upload-attempts-CNyGSepg.mjs.map → upload-attempts-BsqoQ1fn.mjs.map} +1 -1
  618. package/dist/{url-pattern-K-KdXcSe.mjs → url-pattern-D4c2czpJ.mjs} +1 -1
  619. package/dist/{url-pattern-K-KdXcSe.mjs.map → url-pattern-D4c2czpJ.mjs.map} +1 -1
  620. package/dist/{user-CtYY0tp2.mjs → user-BTZ40aq6.mjs} +2 -2
  621. package/dist/{user-CtYY0tp2.mjs.map → user-BTZ40aq6.mjs.map} +1 -1
  622. package/dist/{utils-HztC73hq.mjs → utils-BKvNjjhY.mjs} +1 -1
  623. package/dist/{utils-HztC73hq.mjs.map → utils-BKvNjjhY.mjs.map} +1 -1
  624. package/dist/{validate-Dd-IUjnZ.mjs → validate-DE_LRwo9.mjs} +2 -2
  625. package/dist/{validate-Dd-IUjnZ.mjs.map → validate-DE_LRwo9.mjs.map} +1 -1
  626. package/dist/{validate-DlqdOZXB.d.mts → validate-DUP27OYD.d.mts} +5 -5
  627. package/dist/{validate-DlqdOZXB.d.mts.map → validate-DUP27OYD.d.mts.map} +1 -1
  628. package/dist/{validation-D83n7Npi.mjs → validation-BMImFJ11.mjs} +8 -8
  629. package/dist/{validation-D83n7Npi.mjs.map → validation-BMImFJ11.mjs.map} +1 -1
  630. package/dist/version-Bii3suaO.mjs +7 -0
  631. package/dist/{version-ri-sCyAp.mjs.map → version-Bii3suaO.mjs.map} +1 -1
  632. package/dist/{widgets-CpmZd9Q-.mjs → widgets-D3gJ10xU.mjs} +17 -4
  633. package/dist/widgets-D3gJ10xU.mjs.map +1 -0
  634. package/dist/{wxr-taxonomies-BFd0y72_.d.mts → wxr-taxonomies-B2Og_6rU.d.mts} +1 -1
  635. package/dist/{wxr-taxonomies-BFd0y72_.d.mts.map → wxr-taxonomies-B2Og_6rU.d.mts.map} +1 -1
  636. package/dist/{wxr-taxonomies-Df4vxWcU.mjs → wxr-taxonomies-Cxngsjwo.mjs} +4 -4
  637. package/dist/{wxr-taxonomies-Df4vxWcU.mjs.map → wxr-taxonomies-Cxngsjwo.mjs.map} +1 -1
  638. package/dist/{zod-generator-DylzusHh.mjs → zod-generator-BuYSQJB7.mjs} +11 -7
  639. package/dist/zod-generator-BuYSQJB7.mjs.map +1 -0
  640. package/package.json +12 -9
  641. package/src/api/errors.ts +2 -0
  642. package/src/api/handlers/content.ts +49 -11
  643. package/src/api/handlers/index.ts +1 -0
  644. package/src/api/handlers/manifest.ts +161 -12
  645. package/src/api/handlers/media.ts +30 -0
  646. package/src/api/handlers/registry.ts +393 -289
  647. package/src/api/handlers/taxonomies.ts +16 -9
  648. package/src/api/openapi/document.ts +85 -5
  649. package/src/api/parse.ts +1 -1
  650. package/src/api/schemas/auth.ts +4 -4
  651. package/src/api/schemas/bylines.ts +3 -3
  652. package/src/api/schemas/comments.ts +1 -1
  653. package/src/api/schemas/common.ts +3 -2
  654. package/src/api/schemas/content.ts +78 -22
  655. package/src/api/schemas/media.ts +52 -0
  656. package/src/api/schemas/redirects.ts +6 -1
  657. package/src/api/schemas/schema.ts +4 -0
  658. package/src/api/schemas/setup.ts +1 -1
  659. package/src/api/schemas/taxonomies.ts +2 -2
  660. package/src/api/schemas/users.ts +1 -1
  661. package/src/api/types.ts +23 -10
  662. package/src/astro/dev-typegen.ts +35 -0
  663. package/src/astro/image-endpoint.ts +2 -2
  664. package/src/astro/integration/dev-typegen.ts +91 -0
  665. package/src/astro/integration/index.ts +9 -44
  666. package/src/astro/integration/routes.ts +5 -0
  667. package/src/astro/integration/vite-config.ts +21 -2
  668. package/src/astro/middleware.ts +5 -0
  669. package/src/astro/routes/api/admin/api-tokens/index.ts +4 -1
  670. package/src/astro/routes/api/admin/oauth-clients/[id].ts +1 -1
  671. package/src/astro/routes/api/admin/oauth-clients/index.ts +1 -1
  672. package/src/astro/routes/api/admin/plugins/registry/[id]/update.ts +4 -0
  673. package/src/astro/routes/api/admin/plugins/registry/artifact.ts +3 -7
  674. package/src/astro/routes/api/admin/plugins/registry/install.ts +4 -0
  675. package/src/astro/routes/api/admin/plugins/registry/verify.ts +60 -0
  676. package/src/astro/routes/api/content/[collection]/[id]/discard-draft.ts +8 -2
  677. package/src/astro/routes/api/content/[collection]/[id]/publish.ts +2 -1
  678. package/src/astro/routes/api/content/[collection]/[id]/unpublish.ts +6 -2
  679. package/src/astro/routes/api/manifest.ts +1 -1
  680. package/src/astro/routes/api/media/[id]/replace.ts +114 -0
  681. package/src/astro/routes/api/media/file/[...key].ts +4 -1
  682. package/src/astro/routes/api/media/upload-url.ts +8 -4
  683. package/src/astro/routes/api/media.ts +54 -8
  684. package/src/astro/routes/api/menus/[name]/items/[id].ts +7 -2
  685. package/src/astro/routes/api/menus/[name]/items.ts +4 -1
  686. package/src/astro/routes/api/menus/[name]/reorder.ts +4 -1
  687. package/src/astro/routes/api/menus/[name]/translations.ts +4 -1
  688. package/src/astro/routes/api/menus/[name].ts +7 -2
  689. package/src/astro/routes/api/menus/index.ts +4 -1
  690. package/src/astro/routes/api/settings/email.ts +1 -1
  691. package/src/astro/routes/api/settings.ts +4 -1
  692. package/src/astro/routes/api/taxonomies/[name]/reorder.ts +4 -1
  693. package/src/astro/routes/api/taxonomies/[name]/terms/[slug]/translations.ts +4 -1
  694. package/src/astro/routes/api/taxonomies/[name]/terms/[slug].ts +7 -2
  695. package/src/astro/routes/api/taxonomies/[name]/terms/index.ts +4 -1
  696. package/src/astro/routes/api/taxonomies/[name].ts +7 -2
  697. package/src/astro/routes/api/taxonomies/index.ts +4 -1
  698. package/src/astro/routes/api/widget-areas/[name]/reorder.ts +3 -1
  699. package/src/astro/routes/api/widget-areas/[name]/widgets/[id].ts +5 -2
  700. package/src/astro/routes/api/widget-areas/[name]/widgets.ts +3 -1
  701. package/src/astro/routes/api/widget-areas/[name].ts +3 -1
  702. package/src/astro/routes/api/widget-areas/index.ts +3 -1
  703. package/src/astro/types.ts +23 -5
  704. package/src/auth/challenge-store.ts +3 -1
  705. package/src/aws-sdk.d.ts +1 -0
  706. package/src/cache/chrome-tags.ts +24 -0
  707. package/src/components/EmDashImage.astro +2 -1
  708. package/src/components/EmDashMedia.astro +2 -1
  709. package/src/components/InlinePortableTextEditor.tsx +6 -1
  710. package/src/components/widgets/Archives.astro +2 -37
  711. package/src/content/converters/index.ts +2 -0
  712. package/src/content/converters/mark-safety.ts +1 -0
  713. package/src/content/converters/portable-text-identity.ts +139 -0
  714. package/src/content/converters/portable-text-to-prosemirror.ts +202 -69
  715. package/src/content/converters/prosemirror-to-portable-text.ts +96 -25
  716. package/src/content/converters/types.ts +1 -0
  717. package/src/database/migrations/017_authorization_codes.ts +14 -4
  718. package/src/database/migrations/074_content_deleted_scheduled_index.ts +55 -0
  719. package/src/database/migrations/runner.ts +3 -1
  720. package/src/database/repositories/byline.ts +32 -16
  721. package/src/database/repositories/content.ts +114 -47
  722. package/src/database/repositories/media-usage.ts +66 -37
  723. package/src/database/repositories/media.ts +60 -1
  724. package/src/database/repositories/plugin-storage.ts +74 -9
  725. package/src/database/repositories/types.ts +8 -7
  726. package/src/db/adapters.ts +8 -1
  727. package/src/db/postgres.ts +23 -0
  728. package/src/emdash-runtime.ts +80 -150
  729. package/src/fields/boolean.ts +1 -1
  730. package/src/fields/datetime.ts +1 -1
  731. package/src/fields/file.ts +1 -1
  732. package/src/fields/integer.ts +1 -1
  733. package/src/fields/json.ts +1 -1
  734. package/src/fields/multiselect.ts +1 -1
  735. package/src/fields/number.ts +1 -1
  736. package/src/fields/portable-text.ts +1 -1
  737. package/src/fields/richtext.ts +1 -1
  738. package/src/fields/select.ts +1 -1
  739. package/src/fields/slug.ts +1 -1
  740. package/src/fields/text.ts +1 -1
  741. package/src/fields/textarea.ts +1 -1
  742. package/src/fields/types.ts +2 -2
  743. package/src/index.ts +25 -3
  744. package/src/loader.ts +63 -10
  745. package/src/mcp/server.ts +228 -24
  746. package/src/media/image-endpoint.ts +5 -2
  747. package/src/media/normalize.ts +15 -4
  748. package/src/media/usage/cleanup.ts +9 -8
  749. package/src/menus/index.ts +16 -0
  750. package/src/object-cache/index.ts +44 -2
  751. package/src/plugin-types.ts +18 -1
  752. package/src/plugins/hooks.ts +4 -1
  753. package/src/plugins/index.ts +6 -0
  754. package/src/plugins/manager.ts +2 -1
  755. package/src/plugins/manifest-schema.ts +1 -1
  756. package/src/plugins/routes.ts +3 -1
  757. package/src/plugins/sandbox/hook-result.ts +52 -0
  758. package/src/plugins/sandbox/index.ts +10 -0
  759. package/src/plugins/types.ts +6 -0
  760. package/src/registry/artifact-checksum.ts +15 -0
  761. package/src/registry/artifact-verification.ts +85 -0
  762. package/src/registry/authoritative-records.ts +180 -0
  763. package/src/registry/record-labels.ts +28 -0
  764. package/src/schema/registry.ts +26 -3
  765. package/src/schema/zod-generator.ts +16 -13
  766. package/src/security/ssrf.ts +5 -2
  767. package/src/settings/index.ts +16 -0
  768. package/src/storage/local.ts +1 -0
  769. package/src/storage/s3.ts +2 -0
  770. package/src/storage/types.ts +2 -0
  771. package/src/taxonomies/index.ts +40 -20
  772. package/src/widgets/archives.ts +67 -0
  773. package/src/widgets/index.ts +16 -0
  774. package/dist/api-B0w3uBiG.mjs +0 -2269
  775. package/dist/api-B0w3uBiG.mjs.map +0 -1
  776. package/dist/byline-Cpnwrje1.mjs.map +0 -1
  777. package/dist/challenge-store-D5pSY2S1.mjs.map +0 -1
  778. package/dist/content-CP-SeXNa.mjs.map +0 -1
  779. package/dist/content-refresh-DLOfIhYc.mjs.map +0 -1
  780. package/dist/context-BR5hRWiK.mjs.map +0 -1
  781. package/dist/errors-n2j49uNf.mjs.map +0 -1
  782. package/dist/index-DWbJrsAg.d.mts.map +0 -1
  783. package/dist/loader-ZsjE4paL.mjs.map +0 -1
  784. package/dist/manifest-schema-CUYPfCEH.mjs.map +0 -1
  785. package/dist/media-BjwNuLEu.mjs.map +0 -1
  786. package/dist/media-D6SeAfBl.mjs.map +0 -1
  787. package/dist/menus-CNg0QlDt.mjs.map +0 -1
  788. package/dist/normalize-CSxdKBVa.mjs.map +0 -1
  789. package/dist/object-cache-71tPfV4A.mjs.map +0 -1
  790. package/dist/options-BhZIeFY1.d.mts.map +0 -1
  791. package/dist/redirects-CRIM55KH.mjs.map +0 -1
  792. package/dist/registry-BiO5WwPq.mjs +0 -2716
  793. package/dist/registry-BiO5WwPq.mjs.map +0 -1
  794. package/dist/registry-Cx-jEJOS.mjs.map +0 -1
  795. package/dist/relations-BTPM2saV.mjs.map +0 -1
  796. package/dist/relations-C7B46bcU.d.mts.map +0 -1
  797. package/dist/runner-77GOZCnH.mjs.map +0 -1
  798. package/dist/runner-zgqA_CqP.d.mts.map +0 -1
  799. package/dist/settings-BgN-0DT-.mjs.map +0 -1
  800. package/dist/taxonomies-CPGxo-bn.mjs.map +0 -1
  801. package/dist/taxonomies-kmyudNGP.mjs.map +0 -1
  802. package/dist/types-D6OcIp2P.mjs +0 -3
  803. package/dist/types-DJQxln7q.d.mts.map +0 -1
  804. package/dist/types-D_DWe7k9.d.mts.map +0 -1
  805. package/dist/version-ri-sCyAp.mjs +0 -7
  806. package/dist/widgets-CpmZd9Q-.mjs.map +0 -1
  807. package/dist/zod-generator-DylzusHh.mjs.map +0 -1
  808. /package/dist/{api-tokens-B5NHLNUN.mjs → api-tokens-BfYts-sq.mjs} +0 -0
  809. /package/dist/{ssrf-BPKzkm6O.mjs → ssrf-Dg3cIT-b.mjs} +0 -0
@@ -304,8 +304,8 @@ export async function handleTaxonomyList(
304
304
  /**
305
305
  * Get a single taxonomy definition by name.
306
306
  *
307
- * Definitions are per-locale, so `locale` picks which one; without it the
308
- * lowest-locale match wins (same rule as `handleMenuGet`).
307
+ * Definitions are per-locale, so `locale` picks which one. Without it the
308
+ * configured default locale wins, then the lowest locale code.
309
309
  */
310
310
  export async function handleTaxonomyGet(
311
311
  db: Kysely<Database>,
@@ -354,12 +354,8 @@ export async function handleTaxonomyCreate(
354
354
  };
355
355
  }
356
356
 
357
- const collections = [...new Set(input.collections ?? [])];
358
- const collectionError = await validateCollections(db, collections);
359
- if (collectionError) {
360
- return { success: false, error: collectionError };
361
- }
362
-
357
+ let hierarchical = input.hierarchical ?? false;
358
+ let collections = [...new Set(input.collections ?? [])];
363
359
  let translationGroup: string | null = null;
364
360
  if (input.translationOf) {
365
361
  const source = await db
@@ -374,6 +370,17 @@ export async function handleTaxonomyCreate(
374
370
  };
375
371
  }
376
372
  translationGroup = source.translation_group ?? source.id;
373
+ if (input.hierarchical === undefined) {
374
+ hierarchical = source.hierarchical === 1;
375
+ }
376
+ if (input.collections === undefined) {
377
+ collections = [...new Set(defCollections(source))];
378
+ }
379
+ }
380
+
381
+ const collectionError = await validateCollections(db, collections);
382
+ if (collectionError) {
383
+ return { success: false, error: collectionError };
377
384
  }
378
385
 
379
386
  // Duplicate guard scoped to locale (so the same name can exist in ES
@@ -402,7 +409,7 @@ export async function handleTaxonomyCreate(
402
409
  name: input.name,
403
410
  label: input.label,
404
411
  label_singular: input.labelSingular ?? null,
405
- hierarchical: input.hierarchical ? 1 : 0,
412
+ hierarchical: hierarchical ? 1 : 0,
406
413
  collections: JSON.stringify(collections),
407
414
  locale,
408
415
  translation_group: translationGroup ?? id,
@@ -32,6 +32,7 @@ import {
32
32
  contentResponseSchema,
33
33
  contentScheduleBody,
34
34
  contentTermsBody,
35
+ contentTermsResponseSchema,
35
36
  contentTrashQuery,
36
37
  contentTranslationsResponseSchema,
37
38
  contentUpdateBody,
@@ -62,6 +63,7 @@ import {
62
63
  DEFAULT_MAX_UPLOAD_SIZE,
63
64
  mediaConfirmBody,
64
65
  mediaConfirmResponseSchema,
66
+ mediaDirectUploadBody,
65
67
  mediaExistingResponseSchema,
66
68
  mediaFolderBody,
67
69
  mediaFolderIdSchema,
@@ -73,11 +75,14 @@ import {
73
75
  mediaListReadResponseSchema,
74
76
  mediaListResponseSchema,
75
77
  mediaReadResponseSchema,
78
+ mediaReplaceBody,
79
+ mediaReplaceResponseSchema,
76
80
  mediaResponseSchema,
77
81
  mediaStreamUploadResponseSchema,
78
82
  mediaUpdateBody,
79
83
  mediaUploadUrlBody,
80
84
  mediaUploadUrlResponseSchema,
85
+ mediaUploadResponseSchema,
81
86
  } from "../schemas/media.js";
82
87
  import {
83
88
  createMenuBody,
@@ -170,6 +175,7 @@ import {
170
175
  // ---------------------------------------------------------------------------
171
176
 
172
177
  const JSON_CONTENT = "application/json";
178
+ const MULTIPART_CONTENT = "multipart/form-data";
173
179
 
174
180
  /** Standard error responses shared across all authenticated endpoints */
175
181
  function standardErrors(
@@ -217,7 +223,7 @@ const contentPaths = {
217
223
  tags: ["Content"],
218
224
  requestParams: {
219
225
  path: z.object({
220
- collection: z.string().meta({ description: "Collection slug", example: "posts" }),
226
+ collection: z.string().meta({ description: "Collection slug", examples: ["posts"] }),
221
227
  }),
222
228
  query: contentListQuery,
223
229
  },
@@ -608,15 +614,44 @@ const contentPaths = {
608
614
  },
609
615
  },
610
616
 
611
- "/_emdash/api/content/{collection}/{id}/terms": {
612
- put: {
617
+ "/_emdash/api/content/{collection}/{id}/terms/{taxonomy}": {
618
+ get: {
619
+ operationId: "getContentTerms",
620
+ summary: "Get taxonomy terms assigned to a content item",
621
+ description:
622
+ "Returns the terms of one taxonomy that are assigned to the content item, resolved to the item's locale with fallback to the site default.",
623
+ tags: ["Content"],
624
+ requestParams: {
625
+ path: z.object({
626
+ collection: z.string().meta({ description: "Collection slug" }),
627
+ id: z.string().meta({ description: "Content ID or slug" }),
628
+ taxonomy: z.string().meta({ description: "Taxonomy name" }),
629
+ }),
630
+ },
631
+ responses: {
632
+ "200": {
633
+ description: "Terms assigned to the content item",
634
+ content: {
635
+ [JSON_CONTENT]: {
636
+ schema: successEnvelope(contentTermsResponseSchema),
637
+ },
638
+ },
639
+ },
640
+ ...authErrors,
641
+ ...standardErrors(400, 404, 500),
642
+ },
643
+ },
644
+ post: {
613
645
  operationId: "setContentTerms",
614
646
  summary: "Set taxonomy terms on a content item",
647
+ description:
648
+ "Assign a set of terms to the content item for the named taxonomy, replacing any existing assignments for that taxonomy. Every term id must belong to the named taxonomy.",
615
649
  tags: ["Content"],
616
650
  requestParams: {
617
651
  path: z.object({
618
652
  collection: z.string().meta({ description: "Collection slug" }),
619
653
  id: z.string().meta({ description: "Content ID or slug" }),
654
+ taxonomy: z.string().meta({ description: "Taxonomy name" }),
620
655
  }),
621
656
  },
622
657
  requestBody: {
@@ -627,7 +662,7 @@ const contentPaths = {
627
662
  description: "Terms updated",
628
663
  content: {
629
664
  [JSON_CONTENT]: {
630
- schema: successEnvelope(z.object({ termIds: z.array(z.string()) })),
665
+ schema: successEnvelope(contentTermsResponseSchema),
631
666
  },
632
667
  },
633
668
  },
@@ -713,6 +748,27 @@ function buildMediaPaths(maxUploadSize: number) {
713
748
  ...standardErrors(400, 500),
714
749
  },
715
750
  },
751
+ post: {
752
+ operationId: "uploadMedia",
753
+ summary: "Upload a media item",
754
+ tags: ["Media"],
755
+ requestBody: {
756
+ required: true,
757
+ content: { [MULTIPART_CONTENT]: { schema: mediaDirectUploadBody } },
758
+ },
759
+ responses: {
760
+ "200": {
761
+ description: "Existing deduplicated media item",
762
+ content: { [JSON_CONTENT]: { schema: successEnvelope(mediaUploadResponseSchema) } },
763
+ },
764
+ "201": {
765
+ description: "Created media item",
766
+ content: { [JSON_CONTENT]: { schema: successEnvelope(mediaUploadResponseSchema) } },
767
+ },
768
+ ...authErrors,
769
+ ...standardErrors(400, 413, 500),
770
+ },
771
+ },
716
772
  },
717
773
  "/_emdash/api/media/folders": {
718
774
  get: {
@@ -883,6 +939,30 @@ function buildMediaPaths(maxUploadSize: number) {
883
939
  },
884
940
  },
885
941
  },
942
+ "/_emdash/api/media/{id}/replace": {
943
+ put: {
944
+ operationId: "replaceMediaImage",
945
+ summary: "Replace a media image",
946
+ description:
947
+ "Overwrites a ready local image under its existing storage key and refreshes its file metadata while preserving its media ID, filename, and URL. The replacement may use different dimensions or an aspect ratio from the original.",
948
+ tags: ["Media"],
949
+ requestParams: {
950
+ path: z.object({ id: z.string().meta({ description: "Media ID" }) }),
951
+ },
952
+ requestBody: {
953
+ required: true,
954
+ content: { [MULTIPART_CONTENT]: { schema: mediaReplaceBody } },
955
+ },
956
+ responses: {
957
+ "200": {
958
+ description: "Replaced media item",
959
+ content: { [JSON_CONTENT]: { schema: successEnvelope(mediaReplaceResponseSchema) } },
960
+ },
961
+ ...authErrors,
962
+ ...standardErrors(400, 404, 413, 500),
963
+ },
964
+ },
965
+ },
886
966
  "/_emdash/api/admin/media-usage/repair": {
887
967
  post: {
888
968
  operationId: "repairMediaUsage",
@@ -1648,7 +1728,7 @@ const taxonomyPaths = {
1648
1728
  operationId: "getTaxonomy",
1649
1729
  summary: "Get a taxonomy definition",
1650
1730
  description:
1651
- "Definitions are per-locale; `locale` picks one, and without it the lowest-locale match is returned.",
1731
+ "Definitions are per-locale; `locale` picks one. Without it the configured default locale is returned, falling back to the lowest locale code.",
1652
1732
  tags: ["Taxonomies"],
1653
1733
  requestParams: {
1654
1734
  path: z.object({ name: z.string().meta({ description: "Taxonomy name" }) }),
package/src/api/parse.ts CHANGED
@@ -108,7 +108,7 @@ function validate<T extends z.ZodType>(schema: T, data: unknown): ParseResult<z.
108
108
  }
109
109
 
110
110
  // Format Zod errors into a readable structure
111
- const issues = result.error.issues.map((issue: z.ZodIssue) => ({
111
+ const issues = result.error.issues.map((issue: z.core.$ZodIssue) => ({
112
112
  path: issue.path.join("."),
113
113
  message: issue.message,
114
114
  }));
@@ -41,7 +41,7 @@ const authenticationCredential = z.object({
41
41
 
42
42
  export const signupRequestBody = z
43
43
  .object({
44
- email: z.string().email(),
44
+ email: z.email(),
45
45
  })
46
46
  .meta({ id: "SignupRequestBody" });
47
47
 
@@ -55,7 +55,7 @@ export const signupCompleteBody = z
55
55
 
56
56
  export const inviteCreateBody = z
57
57
  .object({
58
- email: z.string().email(),
58
+ email: z.email(),
59
59
  role: roleLevel.optional(),
60
60
  })
61
61
  .meta({ id: "InviteCreateBody" });
@@ -77,13 +77,13 @@ export const inviteCompleteBody = z
77
77
 
78
78
  export const magicLinkSendBody = z
79
79
  .object({
80
- email: z.string().email(),
80
+ email: z.email(),
81
81
  })
82
82
  .meta({ id: "MagicLinkSendBody" });
83
83
 
84
84
  export const passkeyOptionsBody = z
85
85
  .object({
86
- email: z.string().email().optional(),
86
+ email: z.email().optional(),
87
87
  })
88
88
  .meta({ id: "PasskeyOptionsBody" });
89
89
 
@@ -13,9 +13,9 @@ export const bylineSummarySchema = z
13
13
  bio: z.string().nullable(),
14
14
  avatarMediaId: z.string().nullable(),
15
15
  /**
16
- * Avatar media storage key + alt, folded in by the media join during
17
- * content byline hydration. Null on the plain byline finders, which
18
- * don't join media.
16
+ * Avatar media storage key + alt, folded in by the media join on the
17
+ * content byline hydration path and the single-row byline finders.
18
+ * Null on `findMany`, which doesn't join media.
19
19
  */
20
20
  avatarStorageKey: z.string().nullish(),
21
21
  avatarAlt: z.string().nullish(),
@@ -7,7 +7,7 @@ import { z } from "zod";
7
7
  export const createCommentBody = z
8
8
  .object({
9
9
  authorName: z.string().min(1).max(100),
10
- authorEmail: z.string().email(),
10
+ authorEmail: z.email(),
11
11
  body: z.string().min(1).max(5000),
12
12
  parentId: z.string().optional(),
13
13
  /** Honeypot field — hidden in the form, filled only by bots */
@@ -51,7 +51,6 @@ const HTTP_SCHEME_RE = /^https?:\/\//i;
51
51
 
52
52
  /** Validates that a URL string uses http or https scheme. Rejects javascript:/data: URI XSS vectors. */
53
53
  export const httpUrl = z
54
- .string()
55
54
  .url()
56
55
  .refine((url) => HTTP_SCHEME_RE.test(url), "URL must use http or https");
57
56
 
@@ -78,7 +77,9 @@ export const apiErrorSchema = z
78
77
  .object({
79
78
  success: z.literal(false).meta({ description: "Discriminant: always false for errors" }),
80
79
  error: z.object({
81
- code: z.string().meta({ description: "Machine-readable error code", example: "NOT_FOUND" }),
80
+ code: z
81
+ .string()
82
+ .meta({ description: "Machine-readable error code", examples: ["NOT_FOUND"] }),
82
83
  message: z.string().meta({ description: "Human-readable error message" }),
83
84
  }),
84
85
  })
@@ -8,6 +8,16 @@ import { cursorPaginationQuery, httpUrl, localeCode } from "./common.js";
8
8
  // Content: Input schemas
9
9
  // ---------------------------------------------------------------------------
10
10
 
11
+ const contentDateTime = z.iso
12
+ .datetime({ offset: true, message: "must be an ISO 8601 datetime" })
13
+ .or(
14
+ z.iso.datetime({
15
+ offset: true,
16
+ precision: -1,
17
+ message: "must be an ISO 8601 datetime",
18
+ }),
19
+ );
20
+
11
21
  /** SEO input — per-content meta fields */
12
22
  export const contentSeoInput = z
13
23
  .object({
@@ -21,10 +31,7 @@ export const contentSeoInput = z
21
31
 
22
32
  /** ISO 8601 date or datetime bound for the content-list date range filter. */
23
33
  const contentDateBound = z
24
- .union([
25
- z.iso.datetime({ offset: true, message: "must be an ISO 8601 datetime" }),
26
- z.iso.date({ message: "must be an ISO 8601 date" }),
27
- ])
34
+ .union([contentDateTime, z.iso.date({ message: "must be an ISO 8601 date" })])
28
35
  .optional();
29
36
 
30
37
  /**
@@ -61,7 +68,7 @@ const booleanParam = z
61
68
  .optional()
62
69
  .transform((value) => value === "1" || value === "true");
63
70
 
64
- const contentFieldComparable = z.union([z.string().max(2048), z.number().finite()]);
71
+ const contentFieldComparable = z.union([z.string().max(2048), z.number()]);
65
72
  const contentFieldFilterScalar = z.union([contentFieldComparable, z.boolean(), z.null()]);
66
73
  const contentFieldFilterValue = z.union([
67
74
  contentFieldFilterScalar,
@@ -167,9 +174,7 @@ export const contentListQuery = cursorPaginationQuery
167
174
  .meta({ id: "ContentListQuery" });
168
175
 
169
176
  /** ISO 8601 datetime for `publishedAt` / `createdAt`. Routes gate writes behind `content:publish_any`. */
170
- const contentDateOverride = z.iso
171
- .datetime({ offset: true, message: "must be an ISO 8601 datetime" })
172
- .nullish();
177
+ const contentDateOverride = contentDateTime.nullish();
173
178
 
174
179
  export const contentCreateBody = z
175
180
  .object({
@@ -212,27 +217,34 @@ export const contentUpdateBody = z
212
217
 
213
218
  export const contentScheduleBody = z
214
219
  .object({
215
- scheduledAt: z.string().min(1, "scheduledAt is required").meta({
216
- description: "ISO 8601 datetime for scheduled publishing",
217
- example: "2025-06-15T09:00:00Z",
218
- }),
220
+ scheduledAt: z
221
+ .string()
222
+ .min(1, "scheduledAt is required")
223
+ .meta({
224
+ description: "ISO 8601 datetime for scheduled publishing",
225
+ examples: ["2025-06-15T09:00:00Z"],
226
+ }),
219
227
  })
220
228
  .meta({ id: "ContentScheduleBody" });
221
229
 
222
- export const contentPublishBody = z
223
- .object({
230
+ export const contentRevisionConditionBody = z.object({
231
+ _rev: z
232
+ .string()
233
+ .optional()
234
+ .meta({ description: "Opaque revision token for optimistic concurrency" }),
235
+ });
236
+
237
+ export const contentPublishBody = contentRevisionConditionBody
238
+ .extend({
224
239
  // .optional() rather than .nullish(): publishing has no semantic
225
240
  // meaning for `null` (you can't "clear" a publish timestamp by
226
241
  // publishing). Tightening the schema here means callers either
227
242
  // pass a valid datetime or omit the field, and the route doesn't
228
243
  // have to silently drop a null that snuck through.
229
- publishedAt: z.iso
230
- .datetime({ offset: true, message: "must be an ISO 8601 datetime" })
231
- .optional()
232
- .meta({
233
- description:
234
- "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.",
235
- }),
244
+ publishedAt: contentDateTime.optional().meta({
245
+ description:
246
+ "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.",
247
+ }),
236
248
  })
237
249
  .meta({ id: "ContentPublishBody" });
238
250
 
@@ -249,7 +261,49 @@ export const contentTermsBody = z
249
261
  })
250
262
  .meta({ id: "ContentTermsBody" });
251
263
 
252
- export const contentTrashQuery = cursorPaginationQuery;
264
+ /** A single term variant returned as part of an entry's term assignments. */
265
+ const contentEntryTermSchema = z
266
+ .object({
267
+ id: z.string(),
268
+ name: z.string().meta({ description: "Taxonomy name" }),
269
+ slug: z.string(),
270
+ label: z.string(),
271
+ parentId: z.string().nullable(),
272
+ locale: localeCode,
273
+ translationGroup: z.string().nullable(),
274
+ })
275
+ .meta({ id: "ContentEntryTerm" });
276
+
277
+ /** Term assignments response for the content terms endpoint. */
278
+ export const contentTermsResponseSchema = z
279
+ .object({
280
+ terms: z.array(contentEntryTermSchema),
281
+ unresolved: z.array(
282
+ z.object({
283
+ translationGroup: z.string(),
284
+ availableLocales: z.array(localeCode),
285
+ translations: z.array(
286
+ z.object({
287
+ id: z.string(),
288
+ slug: z.string(),
289
+ locale: localeCode,
290
+ }),
291
+ ),
292
+ }),
293
+ ),
294
+ entryLocale: localeCode,
295
+ defaultLocale: localeCode,
296
+ implicitDefaultLocale: z.boolean(),
297
+ })
298
+ .meta({ id: "ContentTermsResponse" });
299
+
300
+ export const contentTrashQuery = cursorPaginationQuery
301
+ .extend({
302
+ locale: localeCode.optional().meta({
303
+ description: "Restrict the trash listing to entries in this locale",
304
+ }),
305
+ })
306
+ .meta({ id: "ContentTrashQuery" });
253
307
 
254
308
  // ---------------------------------------------------------------------------
255
309
  // Content: Response schemas
@@ -337,6 +391,8 @@ export const trashedContentItemSchema = z
337
391
  type: z.string(),
338
392
  slug: z.string().nullable(),
339
393
  status: z.string(),
394
+ locale: z.string().nullable(),
395
+ translationGroup: z.string().nullable(),
340
396
  data: z.record(z.string(), z.unknown()),
341
397
  authorId: z.string().nullable(),
342
398
  createdAt: z.string(),
@@ -130,10 +130,51 @@ export function mediaUploadUrlBody(maxSize: number) {
130
130
  .max(maxSize, `File size must not exceed ${formatFileSize(maxSize)}`),
131
131
  contentHash: z.string().optional(),
132
132
  fieldId: z.string().optional(),
133
+ deduplicate: z.boolean().optional(),
134
+ ensureUniqueFilename: z.boolean().optional(),
135
+ folderId: mediaFolderIdSchema.nullable().optional(),
133
136
  })
134
137
  .meta({ id: "MediaUploadUrlBody" });
135
138
  }
136
139
 
140
+ export const mediaUploadDeduplicateForm = z
141
+ .enum(["true", "false"])
142
+ .default("true")
143
+ .transform((value) => value === "true");
144
+
145
+ export const mediaUploadEnsureUniqueFilenameForm = z
146
+ .enum(["true", "false"])
147
+ .default("false")
148
+ .transform((value) => value === "true");
149
+
150
+ export const mediaReplaceMetadataForm = z.object({
151
+ width: z.coerce.number().int().positive().max(Number.MAX_SAFE_INTEGER),
152
+ height: z.coerce.number().int().positive().max(Number.MAX_SAFE_INTEGER),
153
+ });
154
+
155
+ const binaryFileSchema = z.string().meta({ format: "binary" });
156
+
157
+ export const mediaDirectUploadBody = z
158
+ .object({
159
+ file: binaryFileSchema,
160
+ width: z.string().optional(),
161
+ height: z.string().optional(),
162
+ thumbnail: binaryFileSchema.optional(),
163
+ fieldId: z.string().optional(),
164
+ deduplicate: z.enum(["true", "false"]).optional(),
165
+ ensureUniqueFilename: z.enum(["true", "false"]).optional(),
166
+ folderId: z.union([mediaFolderIdSchema, z.literal("unfiled")]).optional(),
167
+ })
168
+ .meta({ id: "MediaDirectUploadBody" });
169
+
170
+ export const mediaReplaceBody = z
171
+ .object({
172
+ file: binaryFileSchema,
173
+ width: z.number().int().positive(),
174
+ height: z.number().int().positive(),
175
+ })
176
+ .meta({ id: "MediaReplaceBody" });
177
+
137
178
  export const mediaConfirmBody = z
138
179
  .object({
139
180
  size: z.number().int().nonnegative().optional(),
@@ -248,6 +289,17 @@ export const mediaConfirmResponseSchema = z
248
289
  })
249
290
  .meta({ id: "MediaConfirmResponse" });
250
291
 
292
+ export const mediaUploadResponseSchema = z
293
+ .object({
294
+ item: mediaItemSchema.extend({ url: z.string() }),
295
+ deduplicated: z.literal(true).optional(),
296
+ })
297
+ .meta({ id: "MediaUploadResponse" });
298
+
299
+ export const mediaReplaceResponseSchema = z
300
+ .object({ item: mediaItemSchema.extend({ url: z.string() }) })
301
+ .meta({ id: "MediaReplaceResponse" });
302
+
251
303
  export const mediaStreamUploadResponseSchema = z
252
304
  .object({
253
305
  uploaded: z.literal(true),
@@ -98,7 +98,12 @@ export const notFoundSummaryQuery = z.object({
98
98
 
99
99
  export const notFoundPruneBody = z
100
100
  .object({
101
- olderThan: z.string().datetime({ message: "olderThan must be an ISO 8601 datetime" }),
101
+ olderThan: z.iso.datetime({ message: "olderThan must be an ISO 8601 datetime" }).or(
102
+ z.iso.datetime({
103
+ precision: -1,
104
+ message: "olderThan must be an ISO 8601 datetime",
105
+ }),
106
+ ),
102
107
  })
103
108
  .meta({ id: "NotFoundPruneBody" });
104
109
 
@@ -176,6 +176,8 @@ export const updateCollectionBody = z
176
176
  commentsModeration: z.enum(["all", "first_time", "none"]).optional(),
177
177
  commentsClosedAfterDays: z.number().int().min(0).optional(),
178
178
  commentsAutoApproveUsers: z.boolean().optional(),
179
+ titleField: z.string().min(1).max(63).regex(slugPattern, "Invalid field slug format").nullish(),
180
+ dateField: z.string().min(1).max(63).regex(slugPattern, "Invalid field slug format").nullish(),
179
181
  })
180
182
  .meta({ id: "UpdateCollectionBody" });
181
183
 
@@ -268,6 +270,8 @@ export const collectionSchema = z
268
270
  sortOrder: z.number().int().nullable(),
269
271
  createdAt: z.string(),
270
272
  updatedAt: z.string(),
273
+ titleField: z.string().nullish(),
274
+ dateField: z.string().nullish(),
271
275
  })
272
276
  .meta({ id: "Collection" });
273
277
 
@@ -28,7 +28,7 @@ export const setupBody = z.object({
28
28
  });
29
29
 
30
30
  export const setupAdminBody = z.object({
31
- email: z.string().email(),
31
+ email: z.email(),
32
32
  name: z.string().optional(),
33
33
  });
34
34
 
@@ -24,8 +24,8 @@ export const createTaxonomyDefBody = z
24
24
  .regex(/^[a-z][a-z0-9_]*$/, "Name must be lowercase alphanumeric with underscores"),
25
25
  label: z.string().min(1).max(200),
26
26
  labelSingular: z.string().min(1).max(200).optional(),
27
- hierarchical: z.boolean().optional().default(false),
28
- collections: z.array(collectionSlug).max(100).optional().default([]),
27
+ hierarchical: z.boolean().optional(),
28
+ collections: z.array(collectionSlug).max(100).optional(),
29
29
  locale: localeCode.optional(),
30
30
  translationOf: z.string().min(1).optional(),
31
31
  })
@@ -18,7 +18,7 @@ export const usersListQuery = z
18
18
  export const userUpdateBody = z
19
19
  .object({
20
20
  name: z.string().optional(),
21
- email: z.string().email().optional(),
21
+ email: z.email().optional(),
22
22
  role: roleLevel.optional(),
23
23
  })
24
24
  .meta({ id: "UserUpdateBody" });
package/src/api/types.ts CHANGED
@@ -35,16 +35,7 @@ export interface ContentResponse {
35
35
  export interface ManifestResponse {
36
36
  version: string;
37
37
  hash: string;
38
- collections: Record<
39
- string,
40
- {
41
- label: string;
42
- labelSingular: string;
43
- supports: string[];
44
- routable?: boolean;
45
- fields: Record<string, FieldDescriptor>;
46
- }
47
- >;
38
+ collections: ManifestCollectionMap;
48
39
  plugins: Record<
49
40
  string,
50
41
  {
@@ -54,6 +45,28 @@ export interface ManifestResponse {
54
45
  >;
55
46
  }
56
47
 
48
+ export type ManifestCollectionMap = Record<string, ManifestCollectionDescriptor>;
49
+
50
+ export interface ManifestCollectionDescriptor {
51
+ label: string;
52
+ labelSingular: string;
53
+ supports: string[];
54
+ hasSeo: boolean;
55
+ urlPattern?: string;
56
+ routable?: boolean;
57
+ titleField?: string;
58
+ dateField?: string;
59
+ hidden?: boolean;
60
+ listColumns?: string[];
61
+ fields: Record<string, ManifestFieldDescriptor>;
62
+ }
63
+
64
+ export interface ManifestFieldDescriptor extends FieldDescriptor {
65
+ id?: string;
66
+ widget?: string;
67
+ validation?: Record<string, unknown>;
68
+ }
69
+
57
70
  export interface FieldDescriptor {
58
71
  kind: string;
59
72
  label?: string;
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Dev-only hook for regenerating `emdash-env.d.ts` when the schema changes.
3
+ *
4
+ * The Astro integration registers an environment-specific refresh function
5
+ * (filesystem + local HTTP in Node dev, no-op everywhere else). Schema
6
+ * mutation code just triggers the hook, so runtime modules stay free of
7
+ * Node-only I/O.
8
+ */
9
+
10
+ const REFRESH_FN_KEY = "__emdashDevTypegenRefresh";
11
+
12
+ export interface DevTypegenRefreshFn {
13
+ (db: unknown): void | Promise<void>;
14
+ }
15
+
16
+ export function setDevTypegenRefresh(fn: DevTypegenRefreshFn): void {
17
+ if (typeof globalThis !== "undefined") {
18
+ Reflect.set(globalThis, REFRESH_FN_KEY, fn);
19
+ }
20
+ }
21
+
22
+ export function refreshDevTypes(db: unknown): void {
23
+ if (typeof import.meta.env === "undefined" || !import.meta.env.DEV) return;
24
+
25
+ const fn = Reflect.get(globalThis, REFRESH_FN_KEY);
26
+ if (typeof fn !== "function") return;
27
+
28
+ try {
29
+ Promise.resolve(fn(db)).catch((error: unknown) => {
30
+ console.error("[emdash] dev typegen refresh failed:", error);
31
+ });
32
+ } catch (error) {
33
+ console.error("[emdash] dev typegen refresh failed:", error);
34
+ }
35
+ }