emdash 0.19.0 → 0.21.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 (595) hide show
  1. package/dist/{adapters-C5AWLJSD.d.mts → adapters-BxSmgtbF.d.mts} +1 -1
  2. package/dist/{adapters-C5AWLJSD.d.mts.map → adapters-BxSmgtbF.d.mts.map} +1 -1
  3. package/dist/{allowed-origins-CyYLEJkp.mjs → allowed-origins-BqC8cul8.mjs} +2 -2
  4. package/dist/{allowed-origins-CyYLEJkp.mjs.map → allowed-origins-BqC8cul8.mjs.map} +1 -1
  5. package/dist/api/route-utils.d.mts +3 -3
  6. package/dist/api/route-utils.mjs +13 -12
  7. package/dist/api/route-utils.mjs.map +1 -1
  8. package/dist/api/schemas/index.d.mts +1 -1
  9. package/dist/api/schemas/index.mjs +3 -2
  10. package/dist/{api-BZ6bhjYs.mjs → api-DxjIV2o8.mjs} +46 -15
  11. package/dist/api-DxjIV2o8.mjs.map +1 -0
  12. package/dist/{api-tokens-VrXNiNvV.mjs → api-tokens-BFFkB0jB.mjs} +2 -2
  13. package/dist/{api-tokens-VrXNiNvV.mjs.map → api-tokens-BFFkB0jB.mjs.map} +1 -1
  14. package/dist/{apply-hQkKKBCf.mjs → apply-CLjxheyb.mjs} +12 -12
  15. package/dist/{apply-hQkKKBCf.mjs.map → apply-CLjxheyb.mjs.map} +1 -1
  16. package/dist/astro/index.d.mts +10 -10
  17. package/dist/astro/index.d.mts.map +1 -1
  18. package/dist/astro/index.mjs +50 -15
  19. package/dist/astro/index.mjs.map +1 -1
  20. package/dist/astro/middleware/auth.d.mts +9 -9
  21. package/dist/astro/middleware/auth.mjs +5 -5
  22. package/dist/astro/middleware/redirect.d.mts.map +1 -1
  23. package/dist/astro/middleware/redirect.mjs +11 -2
  24. package/dist/astro/middleware/redirect.mjs.map +1 -1
  25. package/dist/astro/middleware/request-context.mjs +3 -2
  26. package/dist/astro/middleware/request-context.mjs.map +1 -1
  27. package/dist/astro/middleware/setup.mjs +1 -1
  28. package/dist/astro/middleware.d.mts +1 -1
  29. package/dist/astro/middleware.d.mts.map +1 -1
  30. package/dist/astro/middleware.mjs +91 -137
  31. package/dist/astro/middleware.mjs.map +1 -1
  32. package/dist/astro/routes/api/admin/allowed-domains/_domain_.mjs +5 -4
  33. package/dist/astro/routes/api/admin/allowed-domains/_domain_.mjs.map +1 -1
  34. package/dist/astro/routes/api/admin/allowed-domains/index.mjs +5 -4
  35. package/dist/astro/routes/api/admin/allowed-domains/index.mjs.map +1 -1
  36. package/dist/astro/routes/api/admin/api-tokens/_id_.mjs +3 -3
  37. package/dist/astro/routes/api/admin/api-tokens/index.mjs +4 -4
  38. package/dist/astro/routes/api/admin/byline-fields/_slug_/usage.mjs +4 -4
  39. package/dist/astro/routes/api/admin/byline-fields/_slug_.mjs +8 -7
  40. package/dist/astro/routes/api/admin/byline-fields/_slug_.mjs.map +1 -1
  41. package/dist/astro/routes/api/admin/byline-fields/index.mjs +8 -7
  42. package/dist/astro/routes/api/admin/byline-fields/index.mjs.map +1 -1
  43. package/dist/astro/routes/api/admin/byline-fields/reorder.mjs +8 -7
  44. package/dist/astro/routes/api/admin/byline-fields/reorder.mjs.map +1 -1
  45. package/dist/astro/routes/api/admin/bylines/_id_/index.mjs +14 -12
  46. package/dist/astro/routes/api/admin/bylines/_id_/index.mjs.map +1 -1
  47. package/dist/astro/routes/api/admin/bylines/_id_/translations.mjs +14 -12
  48. package/dist/astro/routes/api/admin/bylines/_id_/translations.mjs.map +1 -1
  49. package/dist/astro/routes/api/admin/bylines/index.mjs +14 -12
  50. package/dist/astro/routes/api/admin/bylines/index.mjs.map +1 -1
  51. package/dist/astro/routes/api/admin/comments/_id_/status.mjs +9 -8
  52. package/dist/astro/routes/api/admin/comments/_id_/status.mjs.map +1 -1
  53. package/dist/astro/routes/api/admin/comments/_id_.mjs +3 -3
  54. package/dist/astro/routes/api/admin/comments/bulk.mjs +7 -6
  55. package/dist/astro/routes/api/admin/comments/bulk.mjs.map +1 -1
  56. package/dist/astro/routes/api/admin/comments/counts.mjs +3 -3
  57. package/dist/astro/routes/api/admin/comments/index.mjs +7 -6
  58. package/dist/astro/routes/api/admin/comments/index.mjs.map +1 -1
  59. package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.mjs +3 -3
  60. package/dist/astro/routes/api/admin/hooks/exclusive/index.mjs +2 -2
  61. package/dist/astro/routes/api/admin/oauth-clients/_id_.mjs +3 -3
  62. package/dist/astro/routes/api/admin/oauth-clients/index.mjs +3 -3
  63. package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs +29 -27
  64. package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs.map +1 -1
  65. package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs +29 -27
  66. package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs.map +1 -1
  67. package/dist/astro/routes/api/admin/plugins/_id_/index.mjs +28 -26
  68. package/dist/astro/routes/api/admin/plugins/_id_/index.mjs.map +1 -1
  69. package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs +28 -26
  70. package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs.map +1 -1
  71. package/dist/astro/routes/api/admin/plugins/_id_/update.mjs +28 -26
  72. package/dist/astro/routes/api/admin/plugins/_id_/update.mjs.map +1 -1
  73. package/dist/astro/routes/api/admin/plugins/index.mjs +28 -26
  74. package/dist/astro/routes/api/admin/plugins/index.mjs.map +1 -1
  75. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.mjs +2 -2
  76. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs +28 -26
  77. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs.map +1 -1
  78. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs +28 -26
  79. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs.map +1 -1
  80. package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs +28 -26
  81. package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs.map +1 -1
  82. package/dist/astro/routes/api/admin/plugins/registry/_id_/uninstall.mjs +28 -26
  83. package/dist/astro/routes/api/admin/plugins/registry/_id_/uninstall.mjs.map +1 -1
  84. package/dist/astro/routes/api/admin/plugins/registry/_id_/update.mjs +29 -27
  85. package/dist/astro/routes/api/admin/plugins/registry/_id_/update.mjs.map +1 -1
  86. package/dist/astro/routes/api/admin/plugins/registry/artifact.mjs +28 -26
  87. package/dist/astro/routes/api/admin/plugins/registry/artifact.mjs.map +1 -1
  88. package/dist/astro/routes/api/admin/plugins/registry/install.mjs +29 -27
  89. package/dist/astro/routes/api/admin/plugins/registry/install.mjs.map +1 -1
  90. package/dist/astro/routes/api/admin/plugins/updates.mjs +28 -26
  91. package/dist/astro/routes/api/admin/plugins/updates.mjs.map +1 -1
  92. package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs +28 -26
  93. package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs.map +1 -1
  94. package/dist/astro/routes/api/admin/themes/marketplace/_id_/thumbnail.mjs +2 -2
  95. package/dist/astro/routes/api/admin/themes/marketplace/index.mjs +28 -26
  96. package/dist/astro/routes/api/admin/themes/marketplace/index.mjs.map +1 -1
  97. package/dist/astro/routes/api/admin/users/_id_/disable.mjs +1 -1
  98. package/dist/astro/routes/api/admin/users/_id_/enable.mjs +1 -1
  99. package/dist/astro/routes/api/admin/users/_id_/index.mjs +5 -4
  100. package/dist/astro/routes/api/admin/users/_id_/index.mjs.map +1 -1
  101. package/dist/astro/routes/api/admin/users/_id_/send-recovery.mjs +2 -2
  102. package/dist/astro/routes/api/admin/users/index.mjs +5 -4
  103. package/dist/astro/routes/api/admin/users/index.mjs.map +1 -1
  104. package/dist/astro/routes/api/auth/dev-bypass.mjs +3 -3
  105. package/dist/astro/routes/api/auth/invite/accept.mjs +1 -1
  106. package/dist/astro/routes/api/auth/invite/complete.mjs +9 -8
  107. package/dist/astro/routes/api/auth/invite/complete.mjs.map +1 -1
  108. package/dist/astro/routes/api/auth/invite/index.mjs +6 -5
  109. package/dist/astro/routes/api/auth/invite/index.mjs.map +1 -1
  110. package/dist/astro/routes/api/auth/invite/register-options.mjs +8 -7
  111. package/dist/astro/routes/api/auth/invite/register-options.mjs.map +1 -1
  112. package/dist/astro/routes/api/auth/logout.mjs +2 -2
  113. package/dist/astro/routes/api/auth/magic-link/send.mjs +8 -7
  114. package/dist/astro/routes/api/auth/magic-link/send.mjs.map +1 -1
  115. package/dist/astro/routes/api/auth/magic-link/verify.mjs +2 -2
  116. package/dist/astro/routes/api/auth/me.mjs +5 -4
  117. package/dist/astro/routes/api/auth/me.mjs.map +1 -1
  118. package/dist/astro/routes/api/auth/mode.mjs +1 -1
  119. package/dist/astro/routes/api/auth/oauth/_provider_/callback.mjs +3 -3
  120. package/dist/astro/routes/api/auth/oauth/_provider_.mjs +2 -2
  121. package/dist/astro/routes/api/auth/passkey/_id_.mjs +5 -4
  122. package/dist/astro/routes/api/auth/passkey/_id_.mjs.map +1 -1
  123. package/dist/astro/routes/api/auth/passkey/index.mjs +1 -1
  124. package/dist/astro/routes/api/auth/passkey/options.mjs +10 -9
  125. package/dist/astro/routes/api/auth/passkey/options.mjs.map +1 -1
  126. package/dist/astro/routes/api/auth/passkey/register/options.mjs +8 -7
  127. package/dist/astro/routes/api/auth/passkey/register/options.mjs.map +1 -1
  128. package/dist/astro/routes/api/auth/passkey/register/verify.mjs +9 -8
  129. package/dist/astro/routes/api/auth/passkey/register/verify.mjs.map +1 -1
  130. package/dist/astro/routes/api/auth/passkey/verify.mjs +9 -8
  131. package/dist/astro/routes/api/auth/passkey/verify.mjs.map +1 -1
  132. package/dist/astro/routes/api/auth/signup/complete.mjs +9 -8
  133. package/dist/astro/routes/api/auth/signup/complete.mjs.map +1 -1
  134. package/dist/astro/routes/api/auth/signup/request.mjs +8 -7
  135. package/dist/astro/routes/api/auth/signup/request.mjs.map +1 -1
  136. package/dist/astro/routes/api/auth/signup/verify.mjs +1 -1
  137. package/dist/astro/routes/api/comments/_collection_/_contentId_/index.mjs +11 -9
  138. package/dist/astro/routes/api/comments/_collection_/_contentId_/index.mjs.map +1 -1
  139. package/dist/astro/routes/api/content/_collection_/_id_/compare.mjs +2 -2
  140. package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs +2 -2
  141. package/dist/astro/routes/api/content/_collection_/_id_/duplicate.mjs +2 -2
  142. package/dist/astro/routes/api/content/_collection_/_id_/permanent.mjs +2 -2
  143. package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs +10 -8
  144. package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs.map +1 -1
  145. package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs +6 -5
  146. package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs.map +1 -1
  147. package/dist/astro/routes/api/content/_collection_/_id_/restore.mjs +2 -2
  148. package/dist/astro/routes/api/content/_collection_/_id_/revisions.mjs +2 -2
  149. package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs +6 -5
  150. package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs.map +1 -1
  151. package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs +10 -9
  152. package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs.map +1 -1
  153. package/dist/astro/routes/api/content/_collection_/_id_/translations.mjs +2 -2
  154. package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs +2 -2
  155. package/dist/astro/routes/api/content/_collection_/_id_.mjs +6 -5
  156. package/dist/astro/routes/api/content/_collection_/_id_.mjs.map +1 -1
  157. package/dist/astro/routes/api/content/_collection_/authors.mjs +2 -2
  158. package/dist/astro/routes/api/content/_collection_/index.mjs +6 -5
  159. package/dist/astro/routes/api/content/_collection_/index.mjs.map +1 -1
  160. package/dist/astro/routes/api/content/_collection_/trash.mjs +6 -5
  161. package/dist/astro/routes/api/content/_collection_/trash.mjs.map +1 -1
  162. package/dist/astro/routes/api/dashboard.mjs +3 -3
  163. package/dist/astro/routes/api/dev/emails.mjs +2 -2
  164. package/dist/astro/routes/api/import/probe.d.mts +3 -3
  165. package/dist/astro/routes/api/import/probe.mjs +10 -9
  166. package/dist/astro/routes/api/import/probe.mjs.map +1 -1
  167. package/dist/astro/routes/api/import/wordpress/analyze.mjs +3 -3
  168. package/dist/astro/routes/api/import/wordpress/execute.d.mts +9 -9
  169. package/dist/astro/routes/api/import/wordpress/execute.mjs +10 -9
  170. package/dist/astro/routes/api/import/wordpress/execute.mjs.map +1 -1
  171. package/dist/astro/routes/api/import/wordpress/media.mjs +8 -7
  172. package/dist/astro/routes/api/import/wordpress/media.mjs.map +1 -1
  173. package/dist/astro/routes/api/import/wordpress/prepare.mjs +9 -8
  174. package/dist/astro/routes/api/import/wordpress/prepare.mjs.map +1 -1
  175. package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs +8 -7
  176. package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs.map +1 -1
  177. package/dist/astro/routes/api/import/wordpress-plugin/analyze.d.mts +1 -1
  178. package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs +10 -9
  179. package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs.map +1 -1
  180. package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts +1 -1
  181. package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs +14 -12
  182. package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs.map +1 -1
  183. package/dist/astro/routes/api/manifest.mjs +3 -3
  184. package/dist/astro/routes/api/mcp.mjs +20 -19
  185. package/dist/astro/routes/api/mcp.mjs.map +1 -1
  186. package/dist/astro/routes/api/media/_id_/confirm.mjs +6 -5
  187. package/dist/astro/routes/api/media/_id_/confirm.mjs.map +1 -1
  188. package/dist/astro/routes/api/media/_id_.mjs +6 -5
  189. package/dist/astro/routes/api/media/_id_.mjs.map +1 -1
  190. package/dist/astro/routes/api/media/file/_...key_.mjs +1 -1
  191. package/dist/astro/routes/api/media/providers/_providerId_/_itemId_.mjs +2 -2
  192. package/dist/astro/routes/api/media/providers/_providerId_/index.mjs +2 -2
  193. package/dist/astro/routes/api/media/providers/index.mjs +2 -2
  194. package/dist/astro/routes/api/media/upload-url.mjs +8 -7
  195. package/dist/astro/routes/api/media/upload-url.mjs.map +1 -1
  196. package/dist/astro/routes/api/media.mjs +10 -9
  197. package/dist/astro/routes/api/media.mjs.map +1 -1
  198. package/dist/astro/routes/api/menus/_name_/items/_id_.mjs +6 -5
  199. package/dist/astro/routes/api/menus/_name_/items/_id_.mjs.map +1 -1
  200. package/dist/astro/routes/api/menus/_name_/items.mjs +6 -5
  201. package/dist/astro/routes/api/menus/_name_/items.mjs.map +1 -1
  202. package/dist/astro/routes/api/menus/_name_/reorder.mjs +6 -5
  203. package/dist/astro/routes/api/menus/_name_/reorder.mjs.map +1 -1
  204. package/dist/astro/routes/api/menus/_name_/translations.mjs +6 -5
  205. package/dist/astro/routes/api/menus/_name_/translations.mjs.map +1 -1
  206. package/dist/astro/routes/api/menus/_name_.mjs +6 -5
  207. package/dist/astro/routes/api/menus/_name_.mjs.map +1 -1
  208. package/dist/astro/routes/api/menus/index.mjs +6 -5
  209. package/dist/astro/routes/api/menus/index.mjs.map +1 -1
  210. package/dist/astro/routes/api/oauth/authorize.mjs +6 -6
  211. package/dist/astro/routes/api/oauth/device/authorize.mjs +5 -5
  212. package/dist/astro/routes/api/oauth/device/code.mjs +8 -8
  213. package/dist/astro/routes/api/oauth/device/token.mjs +7 -7
  214. package/dist/astro/routes/api/oauth/register.mjs +2 -2
  215. package/dist/astro/routes/api/oauth/token/refresh.mjs +5 -5
  216. package/dist/astro/routes/api/oauth/token/revoke.mjs +5 -5
  217. package/dist/astro/routes/api/oauth/token.mjs +5 -5
  218. package/dist/astro/routes/api/openapi.json.mjs +3 -2
  219. package/dist/astro/routes/api/openapi.json.mjs.map +1 -1
  220. package/dist/astro/routes/api/plugins/_pluginId_/_...path_.mjs +3 -3
  221. package/dist/astro/routes/api/redirects/404s/index.mjs +7 -6
  222. package/dist/astro/routes/api/redirects/404s/index.mjs.map +1 -1
  223. package/dist/astro/routes/api/redirects/404s/summary.mjs +7 -6
  224. package/dist/astro/routes/api/redirects/404s/summary.mjs.map +1 -1
  225. package/dist/astro/routes/api/redirects/_id_.mjs +8 -7
  226. package/dist/astro/routes/api/redirects/_id_.mjs.map +1 -1
  227. package/dist/astro/routes/api/redirects/index.mjs +8 -7
  228. package/dist/astro/routes/api/redirects/index.mjs.map +1 -1
  229. package/dist/astro/routes/api/revisions/_revisionId_/index.mjs +2 -2
  230. package/dist/astro/routes/api/revisions/_revisionId_/restore.mjs +2 -2
  231. package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs +28 -26
  232. package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs.map +1 -1
  233. package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs +28 -26
  234. package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs.map +1 -1
  235. package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs +28 -26
  236. package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs.map +1 -1
  237. package/dist/astro/routes/api/schema/collections/_slug_/index.mjs +28 -26
  238. package/dist/astro/routes/api/schema/collections/_slug_/index.mjs.map +1 -1
  239. package/dist/astro/routes/api/schema/collections/index.mjs +28 -26
  240. package/dist/astro/routes/api/schema/collections/index.mjs.map +1 -1
  241. package/dist/astro/routes/api/schema/index.mjs +8 -13
  242. package/dist/astro/routes/api/schema/index.mjs.map +1 -1
  243. package/dist/astro/routes/api/schema/orphans/_slug_.mjs +28 -26
  244. package/dist/astro/routes/api/schema/orphans/_slug_.mjs.map +1 -1
  245. package/dist/astro/routes/api/schema/orphans/index.mjs +28 -26
  246. package/dist/astro/routes/api/schema/orphans/index.mjs.map +1 -1
  247. package/dist/astro/routes/api/search/enable.mjs +9 -8
  248. package/dist/astro/routes/api/search/enable.mjs.map +1 -1
  249. package/dist/astro/routes/api/search/index.mjs +8 -7
  250. package/dist/astro/routes/api/search/index.mjs.map +1 -1
  251. package/dist/astro/routes/api/search/rebuild.mjs +9 -8
  252. package/dist/astro/routes/api/search/rebuild.mjs.map +1 -1
  253. package/dist/astro/routes/api/search/stats.mjs +5 -5
  254. package/dist/astro/routes/api/search/suggest.mjs +8 -7
  255. package/dist/astro/routes/api/search/suggest.mjs.map +1 -1
  256. package/dist/astro/routes/api/sections/_slug_.mjs +8 -7
  257. package/dist/astro/routes/api/sections/_slug_.mjs.map +1 -1
  258. package/dist/astro/routes/api/sections/index.mjs +8 -7
  259. package/dist/astro/routes/api/sections/index.mjs.map +1 -1
  260. package/dist/astro/routes/api/settings/email.mjs +3 -3
  261. package/dist/astro/routes/api/settings.mjs +11 -9
  262. package/dist/astro/routes/api/settings.mjs.map +1 -1
  263. package/dist/astro/routes/api/setup/admin-verify.mjs +10 -9
  264. package/dist/astro/routes/api/setup/admin-verify.mjs.map +1 -1
  265. package/dist/astro/routes/api/setup/admin.mjs +9 -8
  266. package/dist/astro/routes/api/setup/admin.mjs.map +1 -1
  267. package/dist/astro/routes/api/setup/dev-bypass.mjs +19 -18
  268. package/dist/astro/routes/api/setup/dev-bypass.mjs.map +1 -1
  269. package/dist/astro/routes/api/setup/dev-reset.mjs +1 -1
  270. package/dist/astro/routes/api/setup/index.mjs +20 -18
  271. package/dist/astro/routes/api/setup/index.mjs.map +1 -1
  272. package/dist/astro/routes/api/setup/status.mjs +3 -3
  273. package/dist/astro/routes/api/snapshot.mjs +5 -4
  274. package/dist/astro/routes/api/snapshot.mjs.map +1 -1
  275. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs +11 -10
  276. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs.map +1 -1
  277. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs +11 -10
  278. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs.map +1 -1
  279. package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs +11 -10
  280. package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs.map +1 -1
  281. package/dist/astro/routes/api/taxonomies/index.mjs +11 -10
  282. package/dist/astro/routes/api/taxonomies/index.mjs.map +1 -1
  283. package/dist/astro/routes/api/themes/preview.mjs +5 -4
  284. package/dist/astro/routes/api/themes/preview.mjs.map +1 -1
  285. package/dist/astro/routes/api/typegen.mjs +4 -4
  286. package/dist/astro/routes/api/well-known/auth.mjs +1 -1
  287. package/dist/astro/routes/api/well-known/oauth-authorization-server.mjs +2 -2
  288. package/dist/astro/routes/api/well-known/oauth-protected-resource.mjs +2 -2
  289. package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs +6 -5
  290. package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs.map +1 -1
  291. package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs +9 -7
  292. package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs.map +1 -1
  293. package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs +9 -7
  294. package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs.map +1 -1
  295. package/dist/astro/routes/api/widget-areas/_name_.mjs +5 -4
  296. package/dist/astro/routes/api/widget-areas/_name_.mjs.map +1 -1
  297. package/dist/astro/routes/api/widget-areas/index.mjs +9 -7
  298. package/dist/astro/routes/api/widget-areas/index.mjs.map +1 -1
  299. package/dist/astro/routes/api/widget-components.mjs +2 -2
  300. package/dist/astro/routes/robots.txt.mjs +5 -4
  301. package/dist/astro/routes/robots.txt.mjs.map +1 -1
  302. package/dist/astro/routes/sitemap-_collection_.xml.d.mts.map +1 -1
  303. package/dist/astro/routes/sitemap-_collection_.xml.mjs +15 -7
  304. package/dist/astro/routes/sitemap-_collection_.xml.mjs.map +1 -1
  305. package/dist/astro/routes/sitemap.xml.mjs +6 -5
  306. package/dist/astro/routes/sitemap.xml.mjs.map +1 -1
  307. package/dist/astro/types.d.mts +12 -12
  308. package/dist/auth/providers/github.d.mts +1 -1
  309. package/dist/auth/providers/google.d.mts +1 -1
  310. package/dist/{authorize-C_8t2KGa.mjs → authorize-D5gfBVU5.mjs} +2 -2
  311. package/dist/{authorize-C_8t2KGa.mjs.map → authorize-D5gfBVU5.mjs.map} +1 -1
  312. package/dist/{byline-DUx48sJp.mjs → byline-V_Qp1Ziw.mjs} +27 -14
  313. package/dist/byline-V_Qp1Ziw.mjs.map +1 -0
  314. package/dist/{byline-fields-51kg6Vuv.mjs → byline-fields-B0NO1yUB.mjs} +3 -3
  315. package/dist/{byline-fields-51kg6Vuv.mjs.map → byline-fields-B0NO1yUB.mjs.map} +1 -1
  316. package/dist/{byline-fields-DYXKDuNX.d.mts → byline-fields-CQJRIQkn.d.mts} +36 -32
  317. package/dist/byline-fields-CQJRIQkn.d.mts.map +1 -0
  318. package/dist/{byline-fields-C_OsR-KF.mjs → byline-fields-nBVqK_Ff.mjs} +2 -2
  319. package/dist/{byline-fields-C_OsR-KF.mjs.map → byline-fields-nBVqK_Ff.mjs.map} +1 -1
  320. package/dist/{byline-registry-CWP7I71B.mjs → byline-registry-DedidtqC.mjs} +2 -2
  321. package/dist/{byline-registry-CWP7I71B.mjs.map → byline-registry-DedidtqC.mjs.map} +1 -1
  322. package/dist/{bylines-Cx5n-WqP.mjs → bylines-B2NWnIwS.mjs} +2 -2
  323. package/dist/{bylines-Cx5n-WqP.mjs.map → bylines-B2NWnIwS.mjs.map} +1 -1
  324. package/dist/{bylines-wurS258E.mjs → bylines-DfGDnred.mjs} +7 -7
  325. package/dist/{bylines-wurS258E.mjs.map → bylines-DfGDnred.mjs.map} +1 -1
  326. package/dist/{cache-B_HzASVT.mjs → cache-DTTHWD8n.mjs} +1 -1
  327. package/dist/{cache-B_HzASVT.mjs.map → cache-DTTHWD8n.mjs.map} +1 -1
  328. package/dist/{challenge-store-DGwuCc4R.mjs → challenge-store-woE0bbCf.mjs} +1 -1
  329. package/dist/{challenge-store-DGwuCc4R.mjs.map → challenge-store-woE0bbCf.mjs.map} +1 -1
  330. package/dist/cli/index.mjs +22 -20
  331. package/dist/cli/index.mjs.map +1 -1
  332. package/dist/client/cf-access.d.mts +1 -1
  333. package/dist/client/index.d.mts +1 -1
  334. package/dist/client/index.mjs +1 -1
  335. package/dist/{comments-CJ0RZsYR.mjs → comments-D2hNuxNa.mjs} +1 -1
  336. package/dist/{comments-CJ0RZsYR.mjs.map → comments-D2hNuxNa.mjs.map} +1 -1
  337. package/dist/{components-CTfpu3PZ.mjs → components-DYKp2gmo.mjs} +1 -1
  338. package/dist/{components-CTfpu3PZ.mjs.map → components-DYKp2gmo.mjs.map} +1 -1
  339. package/dist/{context-GG52SPgh.mjs → context-Cm4pt1Ws.mjs} +5 -5
  340. package/dist/{context-GG52SPgh.mjs.map → context-Cm4pt1Ws.mjs.map} +1 -1
  341. package/dist/{cron-BJ2ClIlj.mjs → cron-DdEVrQ2Y.mjs} +1 -1
  342. package/dist/{cron-BJ2ClIlj.mjs.map → cron-DdEVrQ2Y.mjs.map} +1 -1
  343. package/dist/{dashboard-2JgAMWxK.mjs → dashboard-C-UYpps0.mjs} +1 -1
  344. package/dist/{dashboard-2JgAMWxK.mjs.map → dashboard-C-UYpps0.mjs.map} +1 -1
  345. package/dist/database/instrumentation.d.mts +10 -1
  346. package/dist/database/instrumentation.d.mts.map +1 -1
  347. package/dist/database/instrumentation.mjs +13 -1
  348. package/dist/database/instrumentation.mjs.map +1 -1
  349. package/dist/db/index.d.mts +3 -3
  350. package/dist/db/libsql.d.mts +1 -1
  351. package/dist/db/postgres.d.mts +1 -1
  352. package/dist/db/sqlite.d.mts +1 -1
  353. package/dist/{db-errors-CtzxKBxe.mjs → db-errors-BluWkwGI.mjs} +1 -1
  354. package/dist/{db-errors-CtzxKBxe.mjs.map → db-errors-BluWkwGI.mjs.map} +1 -1
  355. package/dist/{default-xLFNSsZ9.mjs → default-NHGuJzQ3.mjs} +1 -1
  356. package/dist/{default-xLFNSsZ9.mjs.map → default-NHGuJzQ3.mjs.map} +1 -1
  357. package/dist/{device-flow-s6_q3T7A.mjs → device-flow-BQApWgnW.mjs} +4 -4
  358. package/dist/{device-flow-s6_q3T7A.mjs.map → device-flow-BQApWgnW.mjs.map} +1 -1
  359. package/dist/{email-console-DHT2Fbpj.mjs → email-console-BbU3RbWv.mjs} +1 -1
  360. package/dist/{email-console-DHT2Fbpj.mjs.map → email-console-BbU3RbWv.mjs.map} +1 -1
  361. package/dist/{error-RwM4dD35.mjs → error-CNn_w7jf.mjs} +1 -1
  362. package/dist/{error-RwM4dD35.mjs.map → error-CNn_w7jf.mjs.map} +1 -1
  363. package/dist/{escape-bIyGoW5W.mjs → escape-DPgcxcpL.mjs} +1 -1
  364. package/dist/{escape-bIyGoW5W.mjs.map → escape-DPgcxcpL.mjs.map} +1 -1
  365. package/dist/{fts-manager-1RgHmopc.mjs → fts-manager-Cx5z8jdA.mjs} +1 -1
  366. package/dist/{fts-manager-1RgHmopc.mjs.map → fts-manager-Cx5z8jdA.mjs.map} +1 -1
  367. package/dist/{hash-9w3pd3-m.mjs → hash-DlvIFn0b.mjs} +1 -1
  368. package/dist/{hash-9w3pd3-m.mjs.map → hash-DlvIFn0b.mjs.map} +1 -1
  369. package/dist/{import-Dh8bWmyq.mjs → import-KyxT1Mbs.mjs} +3 -3
  370. package/dist/{import-Dh8bWmyq.mjs.map → import-KyxT1Mbs.mjs.map} +1 -1
  371. package/dist/{index-FfiTQJq2.d.mts → index-D2VAiumu.d.mts} +46 -15
  372. package/dist/{index-FfiTQJq2.d.mts.map → index-D2VAiumu.d.mts.map} +1 -1
  373. package/dist/{index-BpYeJO1E.d.mts → index-uT2yR66F.d.mts} +3 -3
  374. package/dist/{index-BpYeJO1E.d.mts.map → index-uT2yR66F.d.mts.map} +1 -1
  375. package/dist/index.d.mts +16 -16
  376. package/dist/index.mjs +48 -46
  377. package/dist/init-lock-DlBHjf9-.mjs +83 -0
  378. package/dist/init-lock-DlBHjf9-.mjs.map +1 -0
  379. package/dist/{load-B84ohfBk.mjs → load-Dq91b_DK.mjs} +1 -1
  380. package/dist/{load-B84ohfBk.mjs.map → load-Dq91b_DK.mjs.map} +1 -1
  381. package/dist/{loader-CpZKpFz0.mjs → loader-BqWjcH3h.mjs} +12 -15
  382. package/dist/loader-BqWjcH3h.mjs.map +1 -0
  383. package/dist/{manifest-schema-Cj-YrzrF.mjs → manifest-schema-DFPeqMAn.mjs} +55 -2
  384. package/dist/manifest-schema-DFPeqMAn.mjs.map +1 -0
  385. package/dist/media/index.d.mts +1 -1
  386. package/dist/media/index.mjs +2 -2
  387. package/dist/media/local-runtime.d.mts +11 -11
  388. package/dist/media/local-runtime.mjs +4 -3
  389. package/dist/media/local-runtime.mjs.map +1 -1
  390. package/dist/{media-allowlist-CMcoYIjQ.mjs → media-allowlist-_A0SuDn4.mjs} +2 -2
  391. package/dist/{media-allowlist-CMcoYIjQ.mjs.map → media-allowlist-_A0SuDn4.mjs.map} +1 -1
  392. package/dist/media-url-CqLd69IO.mjs +26 -0
  393. package/dist/media-url-CqLd69IO.mjs.map +1 -0
  394. package/dist/{menus-Dp9xporj.mjs → menus-Ryk9L7fT.mjs} +10 -37
  395. package/dist/menus-Ryk9L7fT.mjs.map +1 -0
  396. package/dist/{mime-CCEzze7W.mjs → mime-YbtlEtvS.mjs} +1 -1
  397. package/dist/{mime-CCEzze7W.mjs.map → mime-YbtlEtvS.mjs.map} +1 -1
  398. package/dist/{mode-BjlXswIw.mjs → mode-CGXzIbD8.mjs} +1 -1
  399. package/dist/{mode-BjlXswIw.mjs.map → mode-CGXzIbD8.mjs.map} +1 -1
  400. package/dist/{normalize-CK5o04zr.mjs → normalize-DKsg36ty.mjs} +1 -1
  401. package/dist/{normalize-CK5o04zr.mjs.map → normalize-DKsg36ty.mjs.map} +1 -1
  402. package/dist/{oauth-authorization-1aPAYjiC.mjs → oauth-authorization-C2kVyjXI.mjs} +4 -4
  403. package/dist/{oauth-authorization-1aPAYjiC.mjs.map → oauth-authorization-C2kVyjXI.mjs.map} +1 -1
  404. package/dist/{oauth-clients-8mPDStMv.mjs → oauth-clients-BC873NCV.mjs} +1 -1
  405. package/dist/{oauth-clients-8mPDStMv.mjs.map → oauth-clients-BC873NCV.mjs.map} +1 -1
  406. package/dist/{oauth-state-store-BJ7YtrfD.mjs → oauth-state-store-Cd--TUaq.mjs} +1 -1
  407. package/dist/{oauth-state-store-BJ7YtrfD.mjs.map → oauth-state-store-Cd--TUaq.mjs.map} +1 -1
  408. package/dist/{oauth-user-lookup-BdDSDvjF.mjs → oauth-user-lookup-e4wOvDud.mjs} +1 -1
  409. package/dist/{oauth-user-lookup-BdDSDvjF.mjs.map → oauth-user-lookup-e4wOvDud.mjs.map} +1 -1
  410. package/dist/{options-D4MnavW_.d.mts → options-9kLgkE8m.d.mts} +3 -3
  411. package/dist/{options-D4MnavW_.d.mts.map → options-9kLgkE8m.d.mts.map} +1 -1
  412. package/dist/page/index.d.mts +2 -2
  413. package/dist/{parse-CrGndy1A.mjs → parse-DzSrk1t8.mjs} +2 -2
  414. package/dist/{parse-CrGndy1A.mjs.map → parse-DzSrk1t8.mjs.map} +1 -1
  415. package/dist/{passkey-config-BDVM86Tj.mjs → passkey-config-BpjbE_Uv.mjs} +1 -1
  416. package/dist/{passkey-config-BDVM86Tj.mjs.map → passkey-config-BpjbE_Uv.mjs.map} +1 -1
  417. package/dist/{placeholder-BZxr8W1j.mjs → placeholder-2xumZh4g.mjs} +1 -1
  418. package/dist/{placeholder-BZxr8W1j.mjs.map → placeholder-2xumZh4g.mjs.map} +1 -1
  419. package/dist/{placeholder-B9lUUEmj.d.mts → placeholder-BevVKfay.d.mts} +1 -1
  420. package/dist/{placeholder-B9lUUEmj.d.mts.map → placeholder-BevVKfay.d.mts.map} +1 -1
  421. package/dist/plugin-types.d.mts +1 -1
  422. package/dist/plugin-utils.d.mts +9 -9
  423. package/dist/plugins/adapt-sandbox-entry.d.mts +9 -9
  424. package/dist/plugins/adapt-sandbox-entry.mjs +2 -2
  425. package/dist/{preview-BfuRkVKW.mjs → preview-Dqv2hwXr.mjs} +2 -2
  426. package/dist/{preview-BfuRkVKW.mjs.map → preview-Dqv2hwXr.mjs.map} +1 -1
  427. package/dist/{public-url-egRHCy1m.mjs → public-url-D_zARuvZ.mjs} +1 -1
  428. package/dist/{public-url-egRHCy1m.mjs.map → public-url-D_zARuvZ.mjs.map} +1 -1
  429. package/dist/{query-BFQ029Ts.mjs → query-Crm038Mc.mjs} +21 -11
  430. package/dist/query-Crm038Mc.mjs.map +1 -0
  431. package/dist/{rate-limit-ClFFUga6.mjs → rate-limit-hRTBqmw1.mjs} +2 -2
  432. package/dist/{rate-limit-ClFFUga6.mjs.map → rate-limit-hRTBqmw1.mjs.map} +1 -1
  433. package/dist/{redirect-Cw3JTlmj.mjs → redirect-C-OOkyku.mjs} +1 -1
  434. package/dist/{redirect-Cw3JTlmj.mjs.map → redirect-C-OOkyku.mjs.map} +1 -1
  435. package/dist/{redirects-DEygMrRO.mjs → redirects-6Zg2SoYo.mjs} +11 -10
  436. package/dist/redirects-6Zg2SoYo.mjs.map +1 -0
  437. package/dist/{redirects-OIu6vQ2i.mjs → redirects-CP3TnTLO.mjs} +20 -14
  438. package/dist/redirects-CP3TnTLO.mjs.map +1 -0
  439. package/dist/{registry-brYh-rAT.mjs → registry-diMzD1Wf.mjs} +3 -3
  440. package/dist/{registry-brYh-rAT.mjs.map → registry-diMzD1Wf.mjs.map} +1 -1
  441. package/dist/{request-cache-D32LpnmI.mjs → request-cache-UwmBAiUK.mjs} +1 -1
  442. package/dist/{request-cache-D32LpnmI.mjs.map → request-cache-UwmBAiUK.mjs.map} +1 -1
  443. package/dist/request-context.d.mts +7 -0
  444. package/dist/request-context.d.mts.map +1 -1
  445. package/dist/request-context.mjs +2 -1
  446. package/dist/request-context.mjs.map +1 -1
  447. package/dist/{request-meta-7ByVLxB-.mjs → request-meta-DPechd0W.mjs} +2 -2
  448. package/dist/{request-meta-7ByVLxB-.mjs.map → request-meta-DPechd0W.mjs.map} +1 -1
  449. package/dist/{resolve-BqYMVG0D.mjs → resolve-B3NUUtVY.mjs} +1 -1
  450. package/dist/{resolve-BqYMVG0D.mjs.map → resolve-B3NUUtVY.mjs.map} +1 -1
  451. package/dist/{runner-BcRuXq_h.d.mts → runner-C8vcbvCe.d.mts} +2 -2
  452. package/dist/{runner-BcRuXq_h.d.mts.map → runner-C8vcbvCe.d.mts.map} +1 -1
  453. package/dist/runtime.d.mts +10 -10
  454. package/dist/runtime.mjs +1 -1
  455. package/dist/{schema-CS7Eg5gh.mjs → schema-BDOkd3OU.mjs} +4 -4
  456. package/dist/{schema-CS7Eg5gh.mjs.map → schema-BDOkd3OU.mjs.map} +1 -1
  457. package/dist/{search-o-aQzHI1.mjs → search-Bs_J_EW-.mjs} +3 -3
  458. package/dist/{search-o-aQzHI1.mjs.map → search-Bs_J_EW-.mjs.map} +1 -1
  459. package/dist/{secrets-C_ZtRos3.mjs → secrets-C8xmE6mR.mjs} +21 -11
  460. package/dist/secrets-C8xmE6mR.mjs.map +1 -0
  461. package/dist/{sections-DhsZ0ns9.mjs → sections-P0zuBlyz.mjs} +2 -2
  462. package/dist/{sections-DhsZ0ns9.mjs.map → sections-P0zuBlyz.mjs.map} +1 -1
  463. package/dist/seed/index.d.mts +2 -2
  464. package/dist/seed/index.mjs +14 -13
  465. package/dist/seo/index.d.mts +1 -1
  466. package/dist/seo/index.d.mts.map +1 -1
  467. package/dist/seo/index.mjs +3 -12
  468. package/dist/seo/index.mjs.map +1 -1
  469. package/dist/{seo-DfjLvu8i.mjs → seo-CLhm-Fmb.mjs} +4 -3
  470. package/dist/seo-CLhm-Fmb.mjs.map +1 -0
  471. package/dist/{seo-B5e6y9Wk.mjs → seo-DpNgGQjF.mjs} +1 -1
  472. package/dist/{seo-B5e6y9Wk.mjs.map → seo-DpNgGQjF.mjs.map} +1 -1
  473. package/dist/{service-DAxg8RPR.mjs → service-CDQQnT8W.mjs} +2 -2
  474. package/dist/{service-DAxg8RPR.mjs.map → service-CDQQnT8W.mjs.map} +1 -1
  475. package/dist/{settings-B1p-gPUK.mjs → settings-BjBsmVAo.mjs} +32 -30
  476. package/dist/settings-BjBsmVAo.mjs.map +1 -0
  477. package/dist/{settings-DIsbHTRE.mjs → settings-sO0Fif4p.mjs} +2 -2
  478. package/dist/{settings-DIsbHTRE.mjs.map → settings-sO0Fif4p.mjs.map} +1 -1
  479. package/dist/{setup-complete-Yuv78yua.mjs → setup-complete-CMMr-oZU.mjs} +1 -1
  480. package/dist/{setup-complete-Yuv78yua.mjs.map → setup-complete-CMMr-oZU.mjs.map} +1 -1
  481. package/dist/{setup-nonce-Bm0uKqmf.mjs → setup-nonce-169xl4fV.mjs} +1 -1
  482. package/dist/{setup-nonce-Bm0uKqmf.mjs.map → setup-nonce-169xl4fV.mjs.map} +1 -1
  483. package/dist/single-flight-cache-C0UV1Npg.mjs +104 -0
  484. package/dist/single-flight-cache-C0UV1Npg.mjs.map +1 -0
  485. package/dist/{site-url-mEVmwIFi.mjs → site-url-vtsuOvSD.mjs} +1 -1
  486. package/dist/{site-url-mEVmwIFi.mjs.map → site-url-vtsuOvSD.mjs.map} +1 -1
  487. package/dist/{ssrf-BsVGIE0Z.mjs → ssrf-XO05Voq6.mjs} +1 -1
  488. package/dist/{ssrf-BsVGIE0Z.mjs.map → ssrf-XO05Voq6.mjs.map} +1 -1
  489. package/dist/status-2gZklYuj.mjs +30 -0
  490. package/dist/status-2gZklYuj.mjs.map +1 -0
  491. package/dist/storage/local.d.mts +1 -1
  492. package/dist/storage/local.mjs +2 -2
  493. package/dist/storage/s3.d.mts +1 -1
  494. package/dist/storage/s3.mjs +1 -1
  495. package/dist/{taxonomies-BEW7S5AI.mjs → taxonomies-BBxYA38v.mjs} +49 -12
  496. package/dist/taxonomies-BBxYA38v.mjs.map +1 -0
  497. package/dist/{taxonomies-UusDXv3C.mjs → taxonomies-DuESHWKI.mjs} +2 -2
  498. package/dist/{taxonomies-UusDXv3C.mjs.map → taxonomies-DuESHWKI.mjs.map} +1 -1
  499. package/dist/{tokens-Bx2afeT-.mjs → tokens-DMkVjxrx.mjs} +1 -1
  500. package/dist/{tokens-Bx2afeT-.mjs.map → tokens-DMkVjxrx.mjs.map} +1 -1
  501. package/dist/{transport--Ck3RBin.mjs → transport-1cIrOb1Y.mjs} +1 -1
  502. package/dist/{transport--Ck3RBin.mjs.map → transport-1cIrOb1Y.mjs.map} +1 -1
  503. package/dist/{transport-BwQeeY2p.d.mts → transport-jdvsZEIt.d.mts} +1 -1
  504. package/dist/{transport-BwQeeY2p.d.mts.map → transport-jdvsZEIt.d.mts.map} +1 -1
  505. package/dist/{trusted-proxy-B4AfnoAp.mjs → trusted-proxy-CHp41Fjj.mjs} +1 -1
  506. package/dist/{trusted-proxy-B4AfnoAp.mjs.map → trusted-proxy-CHp41Fjj.mjs.map} +1 -1
  507. package/dist/{types-DWnN7weG.d.mts → types-BFgYtuKd.d.mts} +1 -1
  508. package/dist/{types-DWnN7weG.d.mts.map → types-BFgYtuKd.d.mts.map} +1 -1
  509. package/dist/{types-DZk_y-MU.mjs → types-BIduXPJk.mjs} +1 -1
  510. package/dist/types-BIduXPJk.mjs.map +1 -0
  511. package/dist/{types-WVmpZBJV.d.mts → types-BTnnBYVX.d.mts} +2 -2
  512. package/dist/{types-WVmpZBJV.d.mts.map → types-BTnnBYVX.d.mts.map} +1 -1
  513. package/dist/types-BoRm8-pp.mjs +3 -0
  514. package/dist/{types-DbCWhHet.d.mts → types-Bzfk2yC8.d.mts} +2 -2
  515. package/dist/types-Bzfk2yC8.d.mts.map +1 -0
  516. package/dist/{types-Qa7-HJJC.d.mts → types-CkEuk-Zr.d.mts} +1 -1
  517. package/dist/{types-Qa7-HJJC.d.mts.map → types-CkEuk-Zr.d.mts.map} +1 -1
  518. package/dist/{types-DMwSpvcw.d.mts → types-DO7whVYU.d.mts} +9 -3
  519. package/dist/{types-DMwSpvcw.d.mts.map → types-DO7whVYU.d.mts.map} +1 -1
  520. package/dist/{types-DX6v9KzJ.d.mts → types-DdkL6fyv.d.mts} +1 -1
  521. package/dist/{types-DX6v9KzJ.d.mts.map → types-DdkL6fyv.d.mts.map} +1 -1
  522. package/dist/{types-DpFmlNyB.mjs → types-DejCHqWT.mjs} +1 -1
  523. package/dist/{types-DpFmlNyB.mjs.map → types-DejCHqWT.mjs.map} +1 -1
  524. package/dist/{types-OT_Es5mp.d.mts → types-Del0VMij.d.mts} +1 -1
  525. package/dist/{types-OT_Es5mp.d.mts.map → types-Del0VMij.d.mts.map} +1 -1
  526. package/dist/{types-kwqCOUxj.d.mts → types-u_XxjbS8.d.mts} +1 -1
  527. package/dist/{types-kwqCOUxj.d.mts.map → types-u_XxjbS8.d.mts.map} +1 -1
  528. package/dist/{utils-C4Ih4DML.mjs → utils-C4M981Br.mjs} +1 -1
  529. package/dist/{utils-C4Ih4DML.mjs.map → utils-C4M981Br.mjs.map} +1 -1
  530. package/dist/{validate-ZP9Dvg0P.mjs → validate-DGhQPXzI.mjs} +2 -2
  531. package/dist/{validate-ZP9Dvg0P.mjs.map → validate-DGhQPXzI.mjs.map} +1 -1
  532. package/dist/{validate-BPAHUSge.d.mts → validate-cJOiOvT2.d.mts} +5 -5
  533. package/dist/{validate-BPAHUSge.d.mts.map → validate-cJOiOvT2.d.mts.map} +1 -1
  534. package/dist/{validation-CE5i4q0c.mjs → validation-DVHjPM1M.mjs} +5 -5
  535. package/dist/{validation-CE5i4q0c.mjs.map → validation-DVHjPM1M.mjs.map} +1 -1
  536. package/dist/version-BOjj_cfz.mjs +7 -0
  537. package/dist/{version-Dw0JXu45.mjs.map → version-BOjj_cfz.mjs.map} +1 -1
  538. package/dist/{widgets-ClEnYQCH.mjs → widgets-Ci6hLwfO.mjs} +47 -44
  539. package/dist/widgets-Ci6hLwfO.mjs.map +1 -0
  540. package/dist/{zod-generator-Djo_VHCt.mjs → zod-generator-CarzgPAu.mjs} +2 -2
  541. package/dist/{zod-generator-Djo_VHCt.mjs.map → zod-generator-CarzgPAu.mjs.map} +1 -1
  542. package/package.json +10 -10
  543. package/src/api/handlers/marketplace.ts +2 -5
  544. package/src/api/handlers/redirects.ts +24 -13
  545. package/src/api/handlers/registry.ts +70 -0
  546. package/src/api/handlers/seo.ts +9 -1
  547. package/src/api/schemas/redirects.ts +11 -4
  548. package/src/api/schemas/schema.ts +13 -1
  549. package/src/astro/integration/index.ts +44 -8
  550. package/src/astro/integration/routes.ts +46 -9
  551. package/src/astro/middleware/redirect.ts +12 -0
  552. package/src/astro/middleware.ts +20 -6
  553. package/src/astro/routes/api/schema/index.ts +7 -15
  554. package/src/astro/routes/sitemap-[collection].xml.ts +13 -2
  555. package/src/bylines/field-defs-cache.ts +70 -20
  556. package/src/cli/commands/bundle-utils.ts +2 -0
  557. package/src/cli/commands/doctor.ts +1 -1
  558. package/src/cli/commands/secrets.ts +2 -2
  559. package/src/config/secrets.ts +28 -14
  560. package/src/database/instrumentation.ts +13 -0
  561. package/src/emdash-runtime.ts +31 -25
  562. package/src/loader.ts +24 -15
  563. package/src/plugins/manifest-schema.ts +75 -0
  564. package/src/plugins/marketplace.ts +2 -5
  565. package/src/plugins/types.ts +12 -0
  566. package/src/query.ts +13 -2
  567. package/src/redirects/status.ts +27 -0
  568. package/src/request-context.ts +8 -0
  569. package/src/schema/types.ts +11 -1
  570. package/src/seo/index.ts +2 -28
  571. package/src/seo/media-url.ts +32 -0
  572. package/src/settings/index.ts +32 -40
  573. package/src/taxonomies/index.ts +78 -12
  574. package/src/utils/single-flight-cache.ts +194 -0
  575. package/src/widgets/index.ts +57 -54
  576. package/dist/api-BZ6bhjYs.mjs.map +0 -1
  577. package/dist/byline-DUx48sJp.mjs.map +0 -1
  578. package/dist/byline-fields-DYXKDuNX.d.mts.map +0 -1
  579. package/dist/loader-CpZKpFz0.mjs.map +0 -1
  580. package/dist/manifest-schema-Cj-YrzrF.mjs.map +0 -1
  581. package/dist/menus-Dp9xporj.mjs.map +0 -1
  582. package/dist/query-BFQ029Ts.mjs.map +0 -1
  583. package/dist/redirects-DEygMrRO.mjs.map +0 -1
  584. package/dist/redirects-OIu6vQ2i.mjs.map +0 -1
  585. package/dist/secrets-C_ZtRos3.mjs.map +0 -1
  586. package/dist/seo-DfjLvu8i.mjs.map +0 -1
  587. package/dist/settings-B1p-gPUK.mjs.map +0 -1
  588. package/dist/taxonomies-BEW7S5AI.mjs.map +0 -1
  589. package/dist/types-Cj2S6FuC.mjs +0 -3
  590. package/dist/types-DZk_y-MU.mjs.map +0 -1
  591. package/dist/types-DbCWhHet.d.mts.map +0 -1
  592. package/dist/version-Dw0JXu45.mjs +0 -7
  593. package/dist/widgets-ClEnYQCH.mjs.map +0 -1
  594. /package/dist/{api-tokens-B6VgoE6M.mjs → api-tokens-C7ywRx7l.mjs} +0 -0
  595. /package/dist/{ssrf-BvgVcfNQ.mjs → ssrf-CRZGzjdL.mjs} +0 -0
@@ -0,0 +1,194 @@
1
+ /**
2
+ * Global-scope async value cache with single-flight and poison-immunity.
3
+ *
4
+ * Built for the "compute once for the lifetime of the JS global scope, read
5
+ * on every request" caches (site settings, search-health verification, ...).
6
+ * That global scope is the process on Node and the isolate on Cloudflare
7
+ * Workers — this helper is platform-neutral; the hazard it defends against is
8
+ * specific to workerd but the cache itself is not.
9
+ *
10
+ * These caches must coalesce concurrent cold reads into one query — but the
11
+ * obvious way to do that, caching the in-flight *promise* on a global and
12
+ * awaiting it from later requests, is unsafe on workerd: if the request that
13
+ * created the promise is cancelled mid-await (client disconnect, context
14
+ * teardown), its continuation never runs, so the promise neither resolves nor
15
+ * rejects. Every later request that awaits that shared promise then hangs
16
+ * until the isolate is evicted (observed as 524s at the 100s wall, near-zero
17
+ * CPU). A `.catch`/`.finally` that clears the cache doesn't help — a cancelled
18
+ * request settles neither way.
19
+ *
20
+ * This cache stores the resolved *value* (not a promise) and coalesces via
21
+ * `initWithLock`: one request becomes the owner and runs `fetch`, everyone
22
+ * else polls for the published value and never awaits the owner's promise.
23
+ * A cancelled owner can therefore never strand a waiter — the worst case is
24
+ * the lock looks held until `deadlineMs`, then the next caller reclaims. The
25
+ * owner's `fetch` is also anchored (waitUntil) so a cancelled originator's
26
+ * query still completes and populates the cache, and bounded by
27
+ * `ownerTimeoutMs` so a genuinely stuck fetch reclaims instead of hanging.
28
+ *
29
+ * Invalidation bumps `version`; reads compare against the version captured at
30
+ * call time and refetch on mismatch.
31
+ */
32
+
33
+ import { createInitLock, type InitLock, initWithLock } from "./init-lock.js";
34
+
35
+ export interface SingleFlightCache<T> {
36
+ /** Last resolved value, valid only when `hasValue` is true. */
37
+ value: T | null;
38
+ /**
39
+ * Presence flag, separate from `value` so that falsy/`undefined`/`void`
40
+ * results cache correctly (a plain null check can't distinguish "cached
41
+ * undefined" from "never fetched").
42
+ */
43
+ hasValue: boolean;
44
+ /** Invalidation counter; bumped by `invalidateSingleFlightCache`. */
45
+ version: number;
46
+ /** The `version` the cached value was fetched at. */
47
+ valueVersion: number;
48
+ /** Reclaimable single-flight lock (see init-lock.ts). */
49
+ lock: InitLock;
50
+ }
51
+
52
+ export function createSingleFlightCache<T>(): SingleFlightCache<T> {
53
+ return { value: null, hasValue: false, version: 0, valueVersion: -1, lock: createInitLock() };
54
+ }
55
+
56
+ /**
57
+ * Force the next `singleFlightCached` call to refetch. An in-flight owner
58
+ * fetched at the old version will not publish into the new version, so its
59
+ * result is ignored by subsequent reads.
60
+ */
61
+ export function invalidateSingleFlightCache(cache: SingleFlightCache<unknown>): void {
62
+ cache.version++;
63
+ cache.hasValue = false;
64
+ cache.value = null;
65
+ cache.valueVersion = -1;
66
+ // Free the single-flight lock so a reader at the new version starts the
67
+ // refetch immediately instead of waiting out a stale owner's deadline. A
68
+ // still-running old-version owner can neither publish into the new version
69
+ // (version gate) nor clobber a new owner (claim gate), so releasing here
70
+ // is safe; the worst case is one brief duplicate fetch.
71
+ cache.lock.ownerStartedAt = null;
72
+ }
73
+
74
+ /**
75
+ * Headroom between the owner's own timeout and the waiter reclaim deadline.
76
+ * The reclaim deadline must sit *above* `ownerTimeoutMs` so a slow-but-live
77
+ * owner times out (and releases the lock) before a waiter would reclaim it —
78
+ * otherwise a fetch slower than the deadline is superseded before it can
79
+ * publish, and steady traffic turns that into a self-sustaining stampede.
80
+ */
81
+ const RECLAIM_HEADROOM_MS = 5_000;
82
+
83
+ export interface SingleFlightCachedOptions {
84
+ /**
85
+ * Hand the in-flight fetch to the host's lifetime extender (waitUntil via
86
+ * `after()`), so a cancelled originating request still drives it to
87
+ * completion and populates the cache.
88
+ */
89
+ anchor?: (promise: Promise<void>) => void;
90
+ /** Reclaim the single-flight lock if the owner holds it past this. */
91
+ deadlineMs?: number;
92
+ /** Waiter poll interval. */
93
+ pollMs?: number;
94
+ /** Waiter gives up and throws after this long rather than hanging. */
95
+ maxWaitMs?: number;
96
+ /**
97
+ * Bound the owner's own `fetch`: if it doesn't settle within this, the
98
+ * owner rejects (and releases the lock) instead of waiting indefinitely.
99
+ * The anchored copy keeps running, so a slow-but-live fetch can still
100
+ * publish for a later caller. Omit to leave the owner unbounded.
101
+ */
102
+ ownerTimeoutMs?: number;
103
+ }
104
+
105
+ /** Boxed cache hit so a `void`/falsy value is still distinguishable from a miss. */
106
+ interface Box<T> {
107
+ v: T;
108
+ }
109
+
110
+ function withTimeout<T>(promise: Promise<T>, ms: number): Promise<T> {
111
+ return new Promise<T>((resolve, reject) => {
112
+ const timer = setTimeout(() => {
113
+ reject(new Error(`singleFlightCached: owner fetch exceeded ${ms}ms`));
114
+ }, ms);
115
+ // Settle from the underlying promise (whichever wins the race with the
116
+ // timer), and always clear the timer so a resolved fetch doesn't leave
117
+ // a pending timeout holding the isolate alive.
118
+ promise.then(resolve, reject).finally(() => {
119
+ clearTimeout(timer);
120
+ });
121
+ });
122
+ }
123
+
124
+ /**
125
+ * Return the cached value for `cache`, computing it via `fetch` under a
126
+ * single-flight lock on a miss. Concurrent callers coalesce onto one fetch;
127
+ * a cancelled owner cannot poison later callers (see file header).
128
+ */
129
+ export function singleFlightCached<T>(
130
+ cache: SingleFlightCache<T>,
131
+ fetch: () => Promise<T>,
132
+ options: SingleFlightCachedOptions = {},
133
+ ): Promise<T> {
134
+ // Capture the version once: a value published at this version satisfies
135
+ // this call; an invalidation that lands mid-fetch makes the published
136
+ // value stale for *later* calls (which captured the newer version) but
137
+ // still valid for this one.
138
+ const versionAtCall = cache.version;
139
+
140
+ // Ignore a non-positive / non-finite owner timeout rather than letting it
141
+ // degenerate into an instant-reject (setTimeout coerces NaN/0 to ~0ms).
142
+ const ownerTimeoutMs =
143
+ options.ownerTimeoutMs !== undefined &&
144
+ Number.isFinite(options.ownerTimeoutMs) &&
145
+ options.ownerTimeoutMs > 0
146
+ ? options.ownerTimeoutMs
147
+ : undefined;
148
+
149
+ // Keep the reclaim deadline above the owner timeout (see RECLAIM_HEADROOM_MS):
150
+ // the owner's own timeout, not a waiter reclaim, is the primary release.
151
+ const deadlineMs =
152
+ ownerTimeoutMs === undefined
153
+ ? options.deadlineMs
154
+ : Math.max(options.deadlineMs ?? 0, ownerTimeoutMs + RECLAIM_HEADROOM_MS);
155
+
156
+ return initWithLock<Box<T>>(
157
+ cache.lock,
158
+ () =>
159
+ cache.hasValue && cache.valueVersion === versionAtCall
160
+ ? // eslint-disable-next-line typescript/no-unsafe-type-assertion -- hasValue gates that `value` holds a real T
161
+ ({ v: cache.value as T } satisfies Box<T>)
162
+ : null,
163
+ (isCurrentClaim) => {
164
+ // The real work, anchored independently so a cancelled owner's
165
+ // fetch still settles and publishes. Publication is gated on the
166
+ // claim so a reclaimed slow owner can't clobber the reclaimer's
167
+ // value (same contract as initWithLock's own callers).
168
+ const real = (async (): Promise<Box<T>> => {
169
+ const value = await fetch();
170
+ if (isCurrentClaim()) {
171
+ cache.value = value;
172
+ cache.hasValue = true;
173
+ cache.valueVersion = versionAtCall;
174
+ }
175
+ return { v: value };
176
+ })();
177
+ // Anchor the real fetch (not the timeout race): this is what must
178
+ // survive a cancelled owner and run to publication. initWithLock is
179
+ // left to manage only the lock; we don't double-anchor.
180
+ options.anchor?.(
181
+ real.then(
182
+ () => undefined,
183
+ () => undefined,
184
+ ),
185
+ );
186
+ return ownerTimeoutMs === undefined ? real : withTimeout(real, ownerTimeoutMs);
187
+ },
188
+ {
189
+ deadlineMs,
190
+ pollMs: options.pollMs,
191
+ maxWaitMs: options.maxWaitMs,
192
+ },
193
+ ).then((box) => box.v);
194
+ }
@@ -1,4 +1,5 @@
1
1
  import { getDb } from "../loader.js";
2
+ import { requestCached } from "../request-cache.js";
2
3
  import { getWidgetComponents as getComponentRegistry } from "./components.js";
3
4
  import type { Widget, WidgetArea, WidgetRow, WidgetComponentDef } from "./types.js";
4
5
 
@@ -22,62 +23,64 @@ export type {
22
23
  * row with null widget columns, which we skip when mapping.
23
24
  */
24
25
  export async function getWidgetArea(name: string): Promise<WidgetArea | null> {
25
- const db = await getDb();
26
- const rows = await db
27
- .selectFrom("_emdash_widget_areas as a")
28
- .leftJoin("_emdash_widgets as w", "w.area_id", "a.id")
29
- .select([
30
- "a.id as a_id",
31
- "a.name as a_name",
32
- "a.label as a_label",
33
- "a.description as a_description",
34
- "w.id as w_id",
35
- "w.type as w_type",
36
- "w.title as w_title",
37
- "w.content as w_content",
38
- "w.menu_name as w_menu_name",
39
- "w.component_id as w_component_id",
40
- "w.component_props as w_component_props",
41
- "w.area_id as w_area_id",
42
- "w.sort_order as w_sort_order",
43
- "w.created_at as w_created_at",
44
- ])
45
- .where("a.name", "=", name)
46
- .orderBy("w.sort_order", "asc")
47
- .execute();
26
+ return requestCached(`widget-area:${name}`, async () => {
27
+ const db = await getDb();
28
+ const rows = await db
29
+ .selectFrom("_emdash_widget_areas as a")
30
+ .leftJoin("_emdash_widgets as w", "w.area_id", "a.id")
31
+ .select([
32
+ "a.id as a_id",
33
+ "a.name as a_name",
34
+ "a.label as a_label",
35
+ "a.description as a_description",
36
+ "w.id as w_id",
37
+ "w.type as w_type",
38
+ "w.title as w_title",
39
+ "w.content as w_content",
40
+ "w.menu_name as w_menu_name",
41
+ "w.component_id as w_component_id",
42
+ "w.component_props as w_component_props",
43
+ "w.area_id as w_area_id",
44
+ "w.sort_order as w_sort_order",
45
+ "w.created_at as w_created_at",
46
+ ])
47
+ .where("a.name", "=", name)
48
+ .orderBy("w.sort_order", "asc")
49
+ .execute();
48
50
 
49
- const first = rows[0];
50
- if (!first) return null;
51
- const widgets: Widget[] = [];
52
- for (const row of rows) {
53
- if (row.w_id === null) continue; // area has no widgets (left-join null row)
54
- // Left-join makes every w_* column nullable in the type; at runtime
55
- // they're all non-null once w_id is (we match on widgets.area_id, so
56
- // a widget row always has the not-null columns filled). Cast is the
57
- // price of that structural fact.
58
- // eslint-disable-next-line typescript/no-unsafe-type-assertion -- left-join row is non-null when w_id is set; see above
59
- const widgetRow = {
60
- id: row.w_id,
61
- type: row.w_type,
62
- title: row.w_title,
63
- content: row.w_content,
64
- menu_name: row.w_menu_name,
65
- component_id: row.w_component_id,
66
- component_props: row.w_component_props,
67
- area_id: row.w_area_id,
68
- sort_order: row.w_sort_order,
69
- created_at: row.w_created_at,
70
- } as WidgetRow;
71
- widgets.push(rowToWidget(widgetRow));
72
- }
51
+ const first = rows[0];
52
+ if (!first) return null;
53
+ const widgets: Widget[] = [];
54
+ for (const row of rows) {
55
+ if (row.w_id === null) continue; // area has no widgets (left-join null row)
56
+ // Left-join makes every w_* column nullable in the type; at runtime
57
+ // they're all non-null once w_id is (we match on widgets.area_id, so
58
+ // a widget row always has the not-null columns filled). Cast is the
59
+ // price of that structural fact.
60
+ // eslint-disable-next-line typescript/no-unsafe-type-assertion -- left-join row is non-null when w_id is set; see above
61
+ const widgetRow = {
62
+ id: row.w_id,
63
+ type: row.w_type,
64
+ title: row.w_title,
65
+ content: row.w_content,
66
+ menu_name: row.w_menu_name,
67
+ component_id: row.w_component_id,
68
+ component_props: row.w_component_props,
69
+ area_id: row.w_area_id,
70
+ sort_order: row.w_sort_order,
71
+ created_at: row.w_created_at,
72
+ } as WidgetRow;
73
+ widgets.push(rowToWidget(widgetRow));
74
+ }
73
75
 
74
- return {
75
- id: first.a_id,
76
- name: first.a_name,
77
- label: first.a_label,
78
- description: first.a_description ?? undefined,
79
- widgets,
80
- };
76
+ return {
77
+ id: first.a_id,
78
+ name: first.a_name,
79
+ label: first.a_label,
80
+ description: first.a_description ?? undefined,
81
+ widgets,
82
+ };
83
+ });
81
84
  }
82
85
 
83
86
  /**