emdash 1.2.0 → 1.3.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 (1436) hide show
  1. package/dist/action-token-SK8zyN7w.mjs +26 -0
  2. package/dist/action-token-SK8zyN7w.mjs.map +1 -0
  3. package/dist/activation-Dim4YMM7.mjs +387 -0
  4. package/dist/activation-Dim4YMM7.mjs.map +1 -0
  5. package/dist/adapters-F_xorvWv.d.mts +173 -0
  6. package/dist/adapters-F_xorvWv.d.mts.map +1 -0
  7. package/dist/allowed-origins-CEug-p0t.mjs +116 -0
  8. package/dist/allowed-origins-CEug-p0t.mjs.map +1 -0
  9. package/dist/api/route-utils.d.mts +4 -4
  10. package/dist/api/route-utils.mjs +47 -45
  11. package/dist/api/route-utils.mjs.map +1 -1
  12. package/dist/api/schemas/index.d.mts +1 -1
  13. package/dist/api/schemas/index.mjs +9 -9
  14. package/dist/api-D-7BNHoz.mjs +5025 -0
  15. package/dist/api-D-7BNHoz.mjs.map +1 -0
  16. package/dist/api-tokens-Bx38ZCQp.mjs +173 -0
  17. package/dist/api-tokens-Bx38ZCQp.mjs.map +1 -0
  18. package/dist/apply-T7ATgzCh.mjs +1702 -0
  19. package/dist/apply-T7ATgzCh.mjs.map +1 -0
  20. package/dist/approvals-D-m6wvGl.mjs +460 -0
  21. package/dist/approvals-D-m6wvGl.mjs.map +1 -0
  22. package/dist/artifact-fetch-DIh7iyOV.mjs +659 -0
  23. package/dist/artifact-fetch-DIh7iyOV.mjs.map +1 -0
  24. package/dist/artifacts-htGyfCSt.mjs +307 -0
  25. package/dist/artifacts-htGyfCSt.mjs.map +1 -0
  26. package/dist/astro/index.d.mts +14 -14
  27. package/dist/astro/index.d.mts.map +1 -1
  28. package/dist/astro/index.mjs +109 -18
  29. package/dist/astro/index.mjs.map +1 -1
  30. package/dist/astro/middleware/auth.d.mts +12 -12
  31. package/dist/astro/middleware/auth.d.mts.map +1 -1
  32. package/dist/astro/middleware/auth.mjs +12 -11
  33. package/dist/astro/middleware/auth.mjs.map +1 -1
  34. package/dist/astro/middleware/media-usage-write-fence.mjs +5 -5
  35. package/dist/astro/middleware/redirect.d.mts.map +1 -1
  36. package/dist/astro/middleware/redirect.mjs +60 -40
  37. package/dist/astro/middleware/redirect.mjs.map +1 -1
  38. package/dist/astro/middleware/request-context.mjs +49 -15
  39. package/dist/astro/middleware/request-context.mjs.map +1 -1
  40. package/dist/astro/middleware/setup.mjs +1 -1
  41. package/dist/astro/middleware.d.mts +12 -12
  42. package/dist/astro/middleware.d.mts.map +1 -1
  43. package/dist/astro/middleware.mjs +116 -408
  44. package/dist/astro/middleware.mjs.map +1 -1
  45. package/dist/astro/routes/api/admin/allowed-domains/_domain_.mjs +14 -14
  46. package/dist/astro/routes/api/admin/allowed-domains/index.mjs +14 -14
  47. package/dist/astro/routes/api/admin/api-tokens/_id_.mjs +6 -6
  48. package/dist/astro/routes/api/admin/api-tokens/index.mjs +7 -7
  49. package/dist/astro/routes/api/admin/byline-fields/_slug_/usage.mjs +6 -6
  50. package/dist/astro/routes/api/admin/byline-fields/_slug_.mjs +16 -16
  51. package/dist/astro/routes/api/admin/byline-fields/index.mjs +16 -16
  52. package/dist/astro/routes/api/admin/byline-fields/reorder.mjs +16 -16
  53. package/dist/astro/routes/api/admin/bylines/_id_/index.mjs +22 -21
  54. package/dist/astro/routes/api/admin/bylines/_id_/index.mjs.map +1 -1
  55. package/dist/astro/routes/api/admin/bylines/_id_/translations.mjs +22 -21
  56. package/dist/astro/routes/api/admin/bylines/_id_/translations.mjs.map +1 -1
  57. package/dist/astro/routes/api/admin/bylines/index.mjs +22 -21
  58. package/dist/astro/routes/api/admin/bylines/index.mjs.map +1 -1
  59. package/dist/astro/routes/api/admin/comments/_id_/status.mjs +18 -18
  60. package/dist/astro/routes/api/admin/comments/_id_.mjs +7 -7
  61. package/dist/astro/routes/api/admin/comments/bulk.mjs +17 -17
  62. package/dist/astro/routes/api/admin/comments/counts.mjs +7 -7
  63. package/dist/astro/routes/api/admin/comments/index.mjs +17 -17
  64. package/dist/astro/routes/api/admin/core-update.mjs +7 -7
  65. package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.mjs +6 -6
  66. package/dist/astro/routes/api/admin/hooks/exclusive/index.mjs +5 -5
  67. package/dist/astro/routes/api/admin/media-usage/activation.mjs +20 -20
  68. package/dist/astro/routes/api/admin/media-usage/collection-deletions/index.mjs +21 -21
  69. package/dist/astro/routes/api/admin/media-usage/collection-deletions/retry.mjs +21 -21
  70. package/dist/astro/routes/api/admin/media-usage/progress.mjs +23 -22
  71. package/dist/astro/routes/api/admin/media-usage/progress.mjs.map +1 -1
  72. package/dist/astro/routes/api/admin/media-usage/repair.mjs +29 -28
  73. package/dist/astro/routes/api/admin/media-usage/repair.mjs.map +1 -1
  74. package/dist/astro/routes/api/admin/media-usage/work/index.mjs +21 -21
  75. package/dist/astro/routes/api/admin/media-usage/work/retry.mjs +21 -21
  76. package/dist/astro/routes/api/admin/oauth-clients/_id_.mjs +6 -6
  77. package/dist/astro/routes/api/admin/oauth-clients/index.mjs +6 -6
  78. package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs +8 -8
  79. package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs +8 -8
  80. package/dist/astro/routes/api/admin/plugins/_id_/index.mjs +71 -69
  81. package/dist/astro/routes/api/admin/plugins/_id_/index.mjs.map +1 -1
  82. package/dist/astro/routes/api/admin/plugins/_id_/mcp.mjs +7 -7
  83. package/dist/astro/routes/api/admin/plugins/_id_/settings.mjs +70 -68
  84. package/dist/astro/routes/api/admin/plugins/_id_/settings.mjs.map +1 -1
  85. package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs +70 -69
  86. package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs.map +1 -1
  87. package/dist/astro/routes/api/admin/plugins/_id_/update.mjs +79 -78
  88. package/dist/astro/routes/api/admin/plugins/_id_/update.mjs.map +1 -1
  89. package/dist/astro/routes/api/admin/plugins/index.mjs +71 -69
  90. package/dist/astro/routes/api/admin/plugins/index.mjs.map +1 -1
  91. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.mjs +7 -7
  92. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs +70 -68
  93. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs.map +1 -1
  94. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs +78 -77
  95. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs.map +1 -1
  96. package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs +70 -68
  97. package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs.map +1 -1
  98. package/dist/astro/routes/api/admin/plugins/registry/_id_/uninstall.mjs +70 -69
  99. package/dist/astro/routes/api/admin/plugins/registry/_id_/uninstall.mjs.map +1 -1
  100. package/dist/astro/routes/api/admin/plugins/registry/_id_/update.mjs +80 -79
  101. package/dist/astro/routes/api/admin/plugins/registry/_id_/update.mjs.map +1 -1
  102. package/dist/astro/routes/api/admin/plugins/registry/artifact.mjs +10 -10
  103. package/dist/astro/routes/api/admin/plugins/registry/artifact.mjs.map +1 -1
  104. package/dist/astro/routes/api/admin/plugins/registry/install.mjs +72 -71
  105. package/dist/astro/routes/api/admin/plugins/registry/install.mjs.map +1 -1
  106. package/dist/astro/routes/api/admin/plugins/registry/publisher-handle.mjs +7 -7
  107. package/dist/astro/routes/api/admin/plugins/registry/verify.mjs +71 -69
  108. package/dist/astro/routes/api/admin/plugins/registry/verify.mjs.map +1 -1
  109. package/dist/astro/routes/api/admin/plugins/updates.mjs +70 -68
  110. package/dist/astro/routes/api/admin/plugins/updates.mjs.map +1 -1
  111. package/dist/astro/routes/api/admin/scheduled-policy-rejections/_collection_/_id_.mjs +5 -5
  112. package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs +70 -68
  113. package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs.map +1 -1
  114. package/dist/astro/routes/api/admin/themes/marketplace/_id_/thumbnail.mjs +7 -7
  115. package/dist/astro/routes/api/admin/themes/marketplace/index.mjs +70 -68
  116. package/dist/astro/routes/api/admin/themes/marketplace/index.mjs.map +1 -1
  117. package/dist/astro/routes/api/admin/transfer/_...path_.mjs +4 -4
  118. package/dist/astro/routes/api/admin/transfer/approvals/_id_/approve.mjs +38 -37
  119. package/dist/astro/routes/api/admin/transfer/approvals/_id_/approve.mjs.map +1 -1
  120. package/dist/astro/routes/api/admin/transfer/approvals/_id_/deny.mjs +38 -37
  121. package/dist/astro/routes/api/admin/transfer/approvals/_id_/deny.mjs.map +1 -1
  122. package/dist/astro/routes/api/admin/transfer/approvals/index.mjs +40 -39
  123. package/dist/astro/routes/api/admin/transfer/approvals/index.mjs.map +1 -1
  124. package/dist/astro/routes/api/admin/transfer/capabilities.mjs +40 -39
  125. package/dist/astro/routes/api/admin/transfer/capabilities.mjs.map +1 -1
  126. package/dist/astro/routes/api/admin/transfer/exports/_id_/advance.mjs +40 -39
  127. package/dist/astro/routes/api/admin/transfer/exports/_id_/advance.mjs.map +1 -1
  128. package/dist/astro/routes/api/admin/transfer/exports/_id_/archive.mjs +41 -40
  129. package/dist/astro/routes/api/admin/transfer/exports/_id_/archive.mjs.map +1 -1
  130. package/dist/astro/routes/api/admin/transfer/exports/_id_/files/_...path_.mjs +41 -40
  131. package/dist/astro/routes/api/admin/transfer/exports/_id_/files/_...path_.mjs.map +1 -1
  132. package/dist/astro/routes/api/admin/transfer/exports/_id_/index.mjs +40 -39
  133. package/dist/astro/routes/api/admin/transfer/exports/_id_/index.mjs.map +1 -1
  134. package/dist/astro/routes/api/admin/transfer/exports/_id_/manifest.mjs +41 -40
  135. package/dist/astro/routes/api/admin/transfer/exports/_id_/manifest.mjs.map +1 -1
  136. package/dist/astro/routes/api/admin/transfer/exports/index.mjs +42 -41
  137. package/dist/astro/routes/api/admin/transfer/exports/index.mjs.map +1 -1
  138. package/dist/astro/routes/api/admin/transfer/imports/_id_/abandon.mjs +40 -39
  139. package/dist/astro/routes/api/admin/transfer/imports/_id_/abandon.mjs.map +1 -1
  140. package/dist/astro/routes/api/admin/transfer/imports/_id_/advance.mjs +40 -39
  141. package/dist/astro/routes/api/admin/transfer/imports/_id_/advance.mjs.map +1 -1
  142. package/dist/astro/routes/api/admin/transfer/imports/_id_/analyze.mjs +42 -41
  143. package/dist/astro/routes/api/admin/transfer/imports/_id_/analyze.mjs.map +1 -1
  144. package/dist/astro/routes/api/admin/transfer/imports/_id_/cancel.mjs +40 -39
  145. package/dist/astro/routes/api/admin/transfer/imports/_id_/cancel.mjs.map +1 -1
  146. package/dist/astro/routes/api/admin/transfer/imports/_id_/execute.mjs +42 -41
  147. package/dist/astro/routes/api/admin/transfer/imports/_id_/execute.mjs.map +1 -1
  148. package/dist/astro/routes/api/admin/transfer/imports/_id_/files/_...path_.mjs +40 -39
  149. package/dist/astro/routes/api/admin/transfer/imports/_id_/files/_...path_.mjs.map +1 -1
  150. package/dist/astro/routes/api/admin/transfer/imports/_id_/index.mjs +40 -39
  151. package/dist/astro/routes/api/admin/transfer/imports/_id_/index.mjs.map +1 -1
  152. package/dist/astro/routes/api/admin/transfer/imports/_id_/missing.mjs +42 -41
  153. package/dist/astro/routes/api/admin/transfer/imports/_id_/missing.mjs.map +1 -1
  154. package/dist/astro/routes/api/admin/transfer/imports/_id_/plan.mjs +40 -39
  155. package/dist/astro/routes/api/admin/transfer/imports/_id_/plan.mjs.map +1 -1
  156. package/dist/astro/routes/api/admin/transfer/imports/_id_/receipt.mjs +40 -39
  157. package/dist/astro/routes/api/admin/transfer/imports/_id_/receipt.mjs.map +1 -1
  158. package/dist/astro/routes/api/admin/transfer/imports/index.mjs +42 -41
  159. package/dist/astro/routes/api/admin/transfer/imports/index.mjs.map +1 -1
  160. package/dist/astro/routes/api/admin/users/_id_/disable.mjs +4 -4
  161. package/dist/astro/routes/api/admin/users/_id_/enable.mjs +4 -4
  162. package/dist/astro/routes/api/admin/users/_id_/index.mjs +14 -14
  163. package/dist/astro/routes/api/admin/users/_id_/send-recovery.mjs +6 -6
  164. package/dist/astro/routes/api/admin/users/index.mjs +14 -14
  165. package/dist/astro/routes/api/auth/dev-bypass.mjs +6 -6
  166. package/dist/astro/routes/api/auth/handover.mjs +6 -6
  167. package/dist/astro/routes/api/auth/invite/accept.mjs +4 -4
  168. package/dist/astro/routes/api/auth/invite/complete.mjs +19 -19
  169. package/dist/astro/routes/api/auth/invite/index.mjs +16 -16
  170. package/dist/astro/routes/api/auth/invite/register-options.mjs +17 -17
  171. package/dist/astro/routes/api/auth/logout.mjs +5 -5
  172. package/dist/astro/routes/api/auth/magic-link/send.mjs +18 -18
  173. package/dist/astro/routes/api/auth/magic-link/verify.mjs +15 -15
  174. package/dist/astro/routes/api/auth/me.mjs +15 -15
  175. package/dist/astro/routes/api/auth/mode.mjs +5 -5
  176. package/dist/astro/routes/api/auth/oauth/_provider_/callback.mjs +8 -8
  177. package/dist/astro/routes/api/auth/oauth/_provider_.mjs +2 -2
  178. package/dist/astro/routes/api/auth/passkey/_id_.mjs +14 -14
  179. package/dist/astro/routes/api/auth/passkey/index.mjs +4 -4
  180. package/dist/astro/routes/api/auth/passkey/options.mjs +19 -19
  181. package/dist/astro/routes/api/auth/passkey/register/options.mjs +17 -17
  182. package/dist/astro/routes/api/auth/passkey/register/verify.mjs +18 -18
  183. package/dist/astro/routes/api/auth/passkey/verify.mjs +19 -19
  184. package/dist/astro/routes/api/auth/signup/complete.mjs +19 -19
  185. package/dist/astro/routes/api/auth/signup/request.mjs +17 -17
  186. package/dist/astro/routes/api/auth/signup/verify.mjs +4 -4
  187. package/dist/astro/routes/api/calendar.mjs +15 -15
  188. package/dist/astro/routes/api/comments/_collection_/_contentId_/index.mjs +12 -12
  189. package/dist/astro/routes/api/comments/_collection_/_contentId_/reactions.mjs +18 -18
  190. package/dist/astro/routes/api/content/_collection_/_id_/compare.mjs +5 -5
  191. package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.d.mts.map +1 -1
  192. package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs +18 -17
  193. package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs.map +1 -1
  194. package/dist/astro/routes/api/content/_collection_/_id_/duplicate.mjs +7 -10
  195. package/dist/astro/routes/api/content/_collection_/_id_/duplicate.mjs.map +1 -1
  196. package/dist/astro/routes/api/content/_collection_/_id_/lock.mjs +20 -17
  197. package/dist/astro/routes/api/content/_collection_/_id_/lock.mjs.map +1 -1
  198. package/dist/astro/routes/api/content/_collection_/_id_/permanent.d.mts.map +1 -1
  199. package/dist/astro/routes/api/content/_collection_/_id_/permanent.mjs +7 -6
  200. package/dist/astro/routes/api/content/_collection_/_id_/permanent.mjs.map +1 -1
  201. package/dist/astro/routes/api/content/_collection_/_id_/plugin-extensions/_pluginId_/_kind_/_extensionId_.mjs +11 -11
  202. package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs +30 -29
  203. package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs.map +1 -1
  204. package/dist/astro/routes/api/content/_collection_/_id_/publish.d.mts.map +1 -1
  205. package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs +18 -17
  206. package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs.map +1 -1
  207. package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/children.mjs +34 -33
  208. package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/children.mjs.map +1 -1
  209. package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/parents.mjs +34 -33
  210. package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/parents.mjs.map +1 -1
  211. package/dist/astro/routes/api/content/_collection_/_id_/restore.d.mts.map +1 -1
  212. package/dist/astro/routes/api/content/_collection_/_id_/restore.mjs +7 -6
  213. package/dist/astro/routes/api/content/_collection_/_id_/restore.mjs.map +1 -1
  214. package/dist/astro/routes/api/content/_collection_/_id_/revisions.mjs +5 -5
  215. package/dist/astro/routes/api/content/_collection_/_id_/schedule.d.mts.map +1 -1
  216. package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs +19 -18
  217. package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs.map +1 -1
  218. package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.d.mts.map +1 -1
  219. package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs +30 -25
  220. package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs.map +1 -1
  221. package/dist/astro/routes/api/content/_collection_/_id_/translations.mjs +5 -5
  222. package/dist/astro/routes/api/content/_collection_/_id_/unpublish.d.mts.map +1 -1
  223. package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs +18 -17
  224. package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs.map +1 -1
  225. package/dist/astro/routes/api/content/_collection_/_id_.d.mts.map +1 -1
  226. package/dist/astro/routes/api/content/_collection_/_id_.mjs +27 -20
  227. package/dist/astro/routes/api/content/_collection_/_id_.mjs.map +1 -1
  228. package/dist/astro/routes/api/content/_collection_/authors.mjs +5 -5
  229. package/dist/astro/routes/api/content/_collection_/index.mjs +18 -21
  230. package/dist/astro/routes/api/content/_collection_/index.mjs.map +1 -1
  231. package/dist/astro/routes/api/content/_collection_/trash.mjs +15 -15
  232. package/dist/astro/routes/api/dashboard.d.mts.map +1 -1
  233. package/dist/astro/routes/api/dashboard.mjs +17 -11
  234. package/dist/astro/routes/api/dashboard.mjs.map +1 -1
  235. package/dist/astro/routes/api/dev/emails.mjs +5 -5
  236. package/dist/astro/routes/api/dev/scheduled-tasks.d.mts +12 -0
  237. package/dist/astro/routes/api/dev/scheduled-tasks.d.mts.map +1 -0
  238. package/dist/astro/routes/api/dev/scheduled-tasks.mjs +140 -0
  239. package/dist/astro/routes/api/dev/scheduled-tasks.mjs.map +1 -0
  240. package/dist/astro/routes/api/health.mjs +6 -6
  241. package/dist/astro/routes/api/import/probe.d.mts +3 -3
  242. package/dist/astro/routes/api/import/probe.mjs +24 -22
  243. package/dist/astro/routes/api/import/probe.mjs.map +1 -1
  244. package/dist/astro/routes/api/import/wordpress/analyze.d.mts.map +1 -1
  245. package/dist/astro/routes/api/import/wordpress/analyze.mjs +7 -20
  246. package/dist/astro/routes/api/import/wordpress/analyze.mjs.map +1 -1
  247. package/dist/astro/routes/api/import/wordpress/execute.d.mts +15 -14
  248. package/dist/astro/routes/api/import/wordpress/execute.d.mts.map +1 -1
  249. package/dist/astro/routes/api/import/wordpress/execute.mjs +28 -29
  250. package/dist/astro/routes/api/import/wordpress/execute.mjs.map +1 -1
  251. package/dist/astro/routes/api/import/wordpress/media.d.mts +12 -12
  252. package/dist/astro/routes/api/import/wordpress/media.mjs +17 -17
  253. package/dist/astro/routes/api/import/wordpress/prepare.mjs +19 -17
  254. package/dist/astro/routes/api/import/wordpress/prepare.mjs.map +1 -1
  255. package/dist/astro/routes/api/import/wordpress/rewrite-urls.d.mts +13 -13
  256. package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs +27 -26
  257. package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs.map +1 -1
  258. package/dist/astro/routes/api/import/wordpress-plugin/analyze.d.mts +1 -1
  259. package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs +25 -22
  260. package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs.map +1 -1
  261. package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts +13 -13
  262. package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts.map +1 -1
  263. package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs +55 -34
  264. package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs.map +1 -1
  265. package/dist/astro/routes/api/manifest.mjs +6 -6
  266. package/dist/astro/routes/api/mcp.mjs +135 -101
  267. package/dist/astro/routes/api/mcp.mjs.map +1 -1
  268. package/dist/astro/routes/api/media/_id_/confirm.mjs +17 -17
  269. package/dist/astro/routes/api/media/_id_/replace.mjs +15 -15
  270. package/dist/astro/routes/api/media/_id_/upload.mjs +8 -8
  271. package/dist/astro/routes/api/media/_id_/usage.mjs +31 -30
  272. package/dist/astro/routes/api/media/_id_/usage.mjs.map +1 -1
  273. package/dist/astro/routes/api/media/_id_.mjs +29 -28
  274. package/dist/astro/routes/api/media/_id_.mjs.map +1 -1
  275. package/dist/astro/routes/api/media/asset/_id_/_filename_.mjs +6 -6
  276. package/dist/astro/routes/api/media/file/_...key_.mjs +10 -10
  277. package/dist/astro/routes/api/media/folders/_id_.mjs +16 -16
  278. package/dist/astro/routes/api/media/folders/index.mjs +16 -16
  279. package/dist/astro/routes/api/media/providers/_providerId_/_itemId_.mjs +5 -5
  280. package/dist/astro/routes/api/media/providers/_providerId_/index.mjs +5 -5
  281. package/dist/astro/routes/api/media/providers/index.mjs +5 -5
  282. package/dist/astro/routes/api/media/upload-url.mjs +17 -17
  283. package/dist/astro/routes/api/media.mjs +30 -29
  284. package/dist/astro/routes/api/media.mjs.map +1 -1
  285. package/dist/astro/routes/api/menus/_name_/items/_id_.d.mts.map +1 -1
  286. package/dist/astro/routes/api/menus/_name_/items/_id_.mjs +19 -18
  287. package/dist/astro/routes/api/menus/_name_/items/_id_.mjs.map +1 -1
  288. package/dist/astro/routes/api/menus/_name_/items.d.mts.map +1 -1
  289. package/dist/astro/routes/api/menus/_name_/items.mjs +18 -17
  290. package/dist/astro/routes/api/menus/_name_/items.mjs.map +1 -1
  291. package/dist/astro/routes/api/menus/_name_/reorder.d.mts.map +1 -1
  292. package/dist/astro/routes/api/menus/_name_/reorder.mjs +18 -17
  293. package/dist/astro/routes/api/menus/_name_/reorder.mjs.map +1 -1
  294. package/dist/astro/routes/api/menus/_name_/translations.d.mts.map +1 -1
  295. package/dist/astro/routes/api/menus/_name_/translations.mjs +18 -17
  296. package/dist/astro/routes/api/menus/_name_/translations.mjs.map +1 -1
  297. package/dist/astro/routes/api/menus/_name_.d.mts.map +1 -1
  298. package/dist/astro/routes/api/menus/_name_.mjs +19 -18
  299. package/dist/astro/routes/api/menus/_name_.mjs.map +1 -1
  300. package/dist/astro/routes/api/menus/index.d.mts.map +1 -1
  301. package/dist/astro/routes/api/menus/index.mjs +18 -17
  302. package/dist/astro/routes/api/menus/index.mjs.map +1 -1
  303. package/dist/astro/routes/api/oauth/authorize.mjs +6 -6
  304. package/dist/astro/routes/api/oauth/device/authorize.mjs +8 -8
  305. package/dist/astro/routes/api/oauth/device/code.mjs +11 -11
  306. package/dist/astro/routes/api/oauth/device/token.mjs +10 -10
  307. package/dist/astro/routes/api/oauth/register.mjs +7 -7
  308. package/dist/astro/routes/api/oauth/token/refresh.mjs +8 -8
  309. package/dist/astro/routes/api/oauth/token/revoke.mjs +8 -8
  310. package/dist/astro/routes/api/oauth/token.mjs +8 -8
  311. package/dist/astro/routes/api/openapi.json.mjs +20 -20
  312. package/dist/astro/routes/api/plugins/_pluginId_/_...path_.mjs +11 -11
  313. package/dist/astro/routes/api/redirects/404s/index.mjs +19 -19
  314. package/dist/astro/routes/api/redirects/404s/summary.mjs +19 -19
  315. package/dist/astro/routes/api/redirects/_id_.d.mts.map +1 -1
  316. package/dist/astro/routes/api/redirects/_id_.mjs +32 -23
  317. package/dist/astro/routes/api/redirects/_id_.mjs.map +1 -1
  318. package/dist/astro/routes/api/redirects/index.d.mts.map +1 -1
  319. package/dist/astro/routes/api/redirects/index.mjs +24 -21
  320. package/dist/astro/routes/api/redirects/index.mjs.map +1 -1
  321. package/dist/astro/routes/api/relations/_id_/index.mjs +34 -33
  322. package/dist/astro/routes/api/relations/_id_/index.mjs.map +1 -1
  323. package/dist/astro/routes/api/relations/index.mjs +34 -33
  324. package/dist/astro/routes/api/relations/index.mjs.map +1 -1
  325. package/dist/astro/routes/api/revisions/_revisionId_/index.mjs +5 -5
  326. package/dist/astro/routes/api/revisions/_revisionId_/restore.mjs +16 -16
  327. package/dist/astro/routes/api/schema/block-types/_slug_/index.mjs +70 -68
  328. package/dist/astro/routes/api/schema/block-types/_slug_/index.mjs.map +1 -1
  329. package/dist/astro/routes/api/schema/block-types/_slug_/versions/_version_/activate.mjs +70 -68
  330. package/dist/astro/routes/api/schema/block-types/_slug_/versions/_version_/activate.mjs.map +1 -1
  331. package/dist/astro/routes/api/schema/block-types/index.mjs +70 -68
  332. package/dist/astro/routes/api/schema/block-types/index.mjs.map +1 -1
  333. package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs +70 -68
  334. package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs.map +1 -1
  335. package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs +70 -68
  336. package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs.map +1 -1
  337. package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs +70 -68
  338. package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs.map +1 -1
  339. package/dist/astro/routes/api/schema/collections/_slug_/index.mjs +70 -68
  340. package/dist/astro/routes/api/schema/collections/_slug_/index.mjs.map +1 -1
  341. package/dist/astro/routes/api/schema/collections/index.mjs +70 -68
  342. package/dist/astro/routes/api/schema/collections/index.mjs.map +1 -1
  343. package/dist/astro/routes/api/schema/collections/reorder.mjs +70 -68
  344. package/dist/astro/routes/api/schema/collections/reorder.mjs.map +1 -1
  345. package/dist/astro/routes/api/schema/index.mjs +16 -15
  346. package/dist/astro/routes/api/schema/index.mjs.map +1 -1
  347. package/dist/astro/routes/api/schema/orphans/_slug_.mjs +70 -68
  348. package/dist/astro/routes/api/schema/orphans/_slug_.mjs.map +1 -1
  349. package/dist/astro/routes/api/schema/orphans/index.mjs +70 -68
  350. package/dist/astro/routes/api/schema/orphans/index.mjs.map +1 -1
  351. package/dist/astro/routes/api/search/enable.mjs +19 -18
  352. package/dist/astro/routes/api/search/enable.mjs.map +1 -1
  353. package/dist/astro/routes/api/search/index.mjs +18 -17
  354. package/dist/astro/routes/api/search/index.mjs.map +1 -1
  355. package/dist/astro/routes/api/search/rebuild.mjs +19 -18
  356. package/dist/astro/routes/api/search/rebuild.mjs.map +1 -1
  357. package/dist/astro/routes/api/search/stats.mjs +9 -8
  358. package/dist/astro/routes/api/search/stats.mjs.map +1 -1
  359. package/dist/astro/routes/api/search/suggest.mjs +18 -17
  360. package/dist/astro/routes/api/search/suggest.mjs.map +1 -1
  361. package/dist/astro/routes/api/sections/_slug_.mjs +18 -17
  362. package/dist/astro/routes/api/sections/_slug_.mjs.map +1 -1
  363. package/dist/astro/routes/api/sections/index.mjs +18 -17
  364. package/dist/astro/routes/api/sections/index.mjs.map +1 -1
  365. package/dist/astro/routes/api/settings/backups/archives/_name_.mjs +7 -7
  366. package/dist/astro/routes/api/settings/backups/archives/index.mjs +7 -7
  367. package/dist/astro/routes/api/settings/backups/export.mjs +7 -7
  368. package/dist/astro/routes/api/settings/backups/index.mjs +8 -8
  369. package/dist/astro/routes/api/settings/domain-notify.mjs +9 -9
  370. package/dist/astro/routes/api/settings/domain.d.mts.map +1 -1
  371. package/dist/astro/routes/api/settings/domain.mjs +17 -14
  372. package/dist/astro/routes/api/settings/domain.mjs.map +1 -1
  373. package/dist/astro/routes/api/settings/email.mjs +6 -6
  374. package/dist/astro/routes/api/settings.d.mts.map +1 -1
  375. package/dist/astro/routes/api/settings.mjs +23 -20
  376. package/dist/astro/routes/api/settings.mjs.map +1 -1
  377. package/dist/astro/routes/api/setup/admin-verify.d.mts.map +1 -1
  378. package/dist/astro/routes/api/setup/admin-verify.mjs +25 -21
  379. package/dist/astro/routes/api/setup/admin-verify.mjs.map +1 -1
  380. package/dist/astro/routes/api/setup/admin.mjs +18 -18
  381. package/dist/astro/routes/api/setup/dev-bypass.mjs +42 -40
  382. package/dist/astro/routes/api/setup/dev-bypass.mjs.map +1 -1
  383. package/dist/astro/routes/api/setup/dev-reset.mjs +4 -4
  384. package/dist/astro/routes/api/setup/index.mjs +48 -46
  385. package/dist/astro/routes/api/setup/index.mjs.map +1 -1
  386. package/dist/astro/routes/api/setup/status.mjs +6 -6
  387. package/dist/astro/routes/api/site/domain-proof.mjs +11 -9
  388. package/dist/astro/routes/api/site/domain-proof.mjs.map +1 -1
  389. package/dist/astro/routes/api/snapshot.mjs +8 -8
  390. package/dist/astro/routes/api/taxonomies/_name_/reorder.d.mts.map +1 -1
  391. package/dist/astro/routes/api/taxonomies/_name_/reorder.mjs +23 -21
  392. package/dist/astro/routes/api/taxonomies/_name_/reorder.mjs.map +1 -1
  393. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.d.mts.map +1 -1
  394. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs +23 -21
  395. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs.map +1 -1
  396. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.d.mts.map +1 -1
  397. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs +24 -22
  398. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs.map +1 -1
  399. package/dist/astro/routes/api/taxonomies/_name_/terms/index.d.mts.map +1 -1
  400. package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs +23 -21
  401. package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs.map +1 -1
  402. package/dist/astro/routes/api/taxonomies/_name_/translations.mjs +21 -20
  403. package/dist/astro/routes/api/taxonomies/_name_/translations.mjs.map +1 -1
  404. package/dist/astro/routes/api/taxonomies/_name_.d.mts.map +1 -1
  405. package/dist/astro/routes/api/taxonomies/_name_.mjs +24 -22
  406. package/dist/astro/routes/api/taxonomies/_name_.mjs.map +1 -1
  407. package/dist/astro/routes/api/taxonomies/bulk-tag.mjs +34 -33
  408. package/dist/astro/routes/api/taxonomies/bulk-tag.mjs.map +1 -1
  409. package/dist/astro/routes/api/taxonomies/index.d.mts.map +1 -1
  410. package/dist/astro/routes/api/taxonomies/index.mjs +23 -21
  411. package/dist/astro/routes/api/taxonomies/index.mjs.map +1 -1
  412. package/dist/astro/routes/api/themes/preview.mjs +6 -6
  413. package/dist/astro/routes/api/typegen.mjs +6 -6
  414. package/dist/astro/routes/api/visual-editing/action-token.mjs +6 -6
  415. package/dist/astro/routes/api/visual-editing/content/_collection_/_id_/publish.mjs +18 -18
  416. package/dist/astro/routes/api/visual-editing/toolbar-labels.mjs +4 -4
  417. package/dist/astro/routes/api/well-known/auth.mjs +1 -1
  418. package/dist/astro/routes/api/well-known/oauth-authorization-server.mjs +2 -2
  419. package/dist/astro/routes/api/well-known/oauth-protected-resource.mjs +2 -2
  420. package/dist/astro/routes/api/widget-areas/_name_/reorder.d.mts.map +1 -1
  421. package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs +17 -16
  422. package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs.map +1 -1
  423. package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.d.mts.map +1 -1
  424. package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs +21 -19
  425. package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs.map +1 -1
  426. package/dist/astro/routes/api/widget-areas/_name_/widgets.d.mts.map +1 -1
  427. package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs +20 -18
  428. package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs.map +1 -1
  429. package/dist/astro/routes/api/widget-areas/_name_.d.mts.map +1 -1
  430. package/dist/astro/routes/api/widget-areas/_name_.mjs +10 -8
  431. package/dist/astro/routes/api/widget-areas/_name_.mjs.map +1 -1
  432. package/dist/astro/routes/api/widget-areas/index.d.mts.map +1 -1
  433. package/dist/astro/routes/api/widget-areas/index.mjs +20 -18
  434. package/dist/astro/routes/api/widget-areas/index.mjs.map +1 -1
  435. package/dist/astro/routes/api/widget-components.mjs +5 -5
  436. package/dist/astro/routes/robots.txt.d.mts.map +1 -1
  437. package/dist/astro/routes/robots.txt.mjs +38 -5
  438. package/dist/astro/routes/robots.txt.mjs.map +1 -1
  439. package/dist/astro/routes/sitemap-_collection_.xml.mjs +13 -8
  440. package/dist/astro/routes/sitemap-_collection_.xml.mjs.map +1 -1
  441. package/dist/astro/routes/sitemap.xml.mjs +11 -6
  442. package/dist/astro/routes/sitemap.xml.mjs.map +1 -1
  443. package/dist/astro/types.d.mts +19 -17
  444. package/dist/astro/types.d.mts.map +1 -1
  445. package/dist/audit-_gieLVGU.mjs +127 -0
  446. package/dist/audit-_gieLVGU.mjs.map +1 -0
  447. package/dist/auth/providers/github.d.mts +1 -1
  448. package/dist/auth/providers/google.d.mts +1 -1
  449. package/dist/auth/providers/microsoft.d.mts +1 -1
  450. package/dist/authoritative-records-CQlB3JzE.mjs +5183 -0
  451. package/dist/authoritative-records-CQlB3JzE.mjs.map +1 -0
  452. package/dist/authorize-DPFBGbE6.mjs +74 -0
  453. package/dist/authorize-DPFBGbE6.mjs.map +1 -0
  454. package/dist/backup-3FgVxiDJ.mjs +246 -0
  455. package/dist/backup-3FgVxiDJ.mjs.map +1 -0
  456. package/dist/block-types-CYcG56JB.mjs +132 -0
  457. package/dist/block-types-CYcG56JB.mjs.map +1 -0
  458. package/dist/block-values-gCX4HBSl.mjs +215 -0
  459. package/dist/block-values-gCX4HBSl.mjs.map +1 -0
  460. package/dist/byline-BR1qhyiw.mjs +909 -0
  461. package/dist/byline-BR1qhyiw.mjs.map +1 -0
  462. package/dist/byline-fields-4ClDC88c.mjs +123 -0
  463. package/dist/byline-fields-4ClDC88c.mjs.map +1 -0
  464. package/dist/byline-fields-BLXZnX7N.mjs +280 -0
  465. package/dist/byline-fields-BLXZnX7N.mjs.map +1 -0
  466. package/dist/bylines-CVOvRUL7.mjs +234 -0
  467. package/dist/bylines-CVOvRUL7.mjs.map +1 -0
  468. package/dist/bylines-DxOs9B7z.mjs +150 -0
  469. package/dist/bylines-DxOs9B7z.mjs.map +1 -0
  470. package/dist/cache-CEU9wo_h.mjs +151 -0
  471. package/dist/cache-CEU9wo_h.mjs.map +1 -0
  472. package/dist/canonical-BudtH-Fx.mjs +174 -0
  473. package/dist/canonical-BudtH-Fx.mjs.map +1 -0
  474. package/dist/capture-triggers-CT6dK9zd.mjs +362 -0
  475. package/dist/capture-triggers-CT6dK9zd.mjs.map +1 -0
  476. package/dist/challenge-store-C17BYx2-.mjs +51 -0
  477. package/dist/challenge-store-C17BYx2-.mjs.map +1 -0
  478. package/dist/checksum-CEqvfxGX.mjs +162 -0
  479. package/dist/checksum-CEqvfxGX.mjs.map +1 -0
  480. package/dist/chunks-xC4UD5-S.mjs +25 -0
  481. package/dist/chunks-xC4UD5-S.mjs.map +1 -0
  482. package/dist/cli/index.mjs +127 -113
  483. package/dist/cli/index.mjs.map +1 -1
  484. package/dist/client/cf-access.d.mts +1 -1
  485. package/dist/client/index.d.mts +47 -47
  486. package/dist/client/index.d.mts.map +1 -1
  487. package/dist/client/index.mjs +12 -10
  488. package/dist/client/index.mjs.map +1 -1
  489. package/dist/collection-slugs-cache-e09QeJQt.mjs +85 -0
  490. package/dist/collection-slugs-cache-e09QeJQt.mjs.map +1 -0
  491. package/dist/comment-UvIWDKcW.mjs +325 -0
  492. package/dist/comment-UvIWDKcW.mjs.map +1 -0
  493. package/dist/comment-reaction-dGp6_FRo.mjs +85 -0
  494. package/dist/comment-reaction-dGp6_FRo.mjs.map +1 -0
  495. package/dist/comments-pej-_BUO.mjs +195 -0
  496. package/dist/comments-pej-_BUO.mjs.map +1 -0
  497. package/dist/comments-yiRFx3w5.mjs +99 -0
  498. package/dist/comments-yiRFx3w5.mjs.map +1 -0
  499. package/dist/components-Brp__9xo.mjs +112 -0
  500. package/dist/components-Brp__9xo.mjs.map +1 -0
  501. package/dist/config-Bsm_u_oE.d.mts +6799 -0
  502. package/dist/config-Bsm_u_oE.d.mts.map +1 -0
  503. package/dist/config-CFMojMFK.d.mts +39 -0
  504. package/dist/config-CFMojMFK.d.mts.map +1 -0
  505. package/dist/config-DBU6iUQB.mjs +228 -0
  506. package/dist/config-DBU6iUQB.mjs.map +1 -0
  507. package/dist/connection-BtEN_lP9.mjs +36 -0
  508. package/dist/connection-BtEN_lP9.mjs.map +1 -0
  509. package/dist/content-DQSRZTVw.mjs +2075 -0
  510. package/dist/content-DQSRZTVw.mjs.map +1 -0
  511. package/dist/content-list-query-CYKcY6Vi.d.mts +26 -0
  512. package/dist/content-list-query-CYKcY6Vi.d.mts.map +1 -0
  513. package/dist/content-repair-DNh5--x5.mjs +442 -0
  514. package/dist/content-repair-DNh5--x5.mjs.map +1 -0
  515. package/dist/context-BYptmCN0.mjs +2090 -0
  516. package/dist/context-BYptmCN0.mjs.map +1 -0
  517. package/dist/credits-B9iORdWB.mjs +110 -0
  518. package/dist/credits-B9iORdWB.mjs.map +1 -0
  519. package/dist/cron-D7obTIfk.mjs +306 -0
  520. package/dist/cron-D7obTIfk.mjs.map +1 -0
  521. package/dist/dashboard-D0jcgBD7.mjs +167 -0
  522. package/dist/dashboard-D0jcgBD7.mjs.map +1 -0
  523. package/dist/database/migration-lock.d.mts +17 -4
  524. package/dist/database/migration-lock.d.mts.map +1 -1
  525. package/dist/database/migration-lock.mjs +32 -5
  526. package/dist/database/migration-lock.mjs.map +1 -1
  527. package/dist/db/index.d.mts +3 -3
  528. package/dist/db/index.mjs +1 -1
  529. package/dist/db/libsql-migrations.d.mts +1 -1
  530. package/dist/db/libsql-migrations.mjs +4 -4
  531. package/dist/db/libsql.d.mts +1 -1
  532. package/dist/db/postgres-migrations.d.mts +1 -1
  533. package/dist/db/postgres-migrations.mjs +4 -4
  534. package/dist/db/postgres.d.mts +1 -1
  535. package/dist/db/sqlite-migrations.d.mts +1 -1
  536. package/dist/db/sqlite-migrations.mjs +4 -4
  537. package/dist/db/sqlite.d.mts +1 -1
  538. package/dist/db/sqlite.mjs +1 -1
  539. package/dist/default-C0W-PhAp.mjs +81 -0
  540. package/dist/default-C0W-PhAp.mjs.map +1 -0
  541. package/dist/deferred-tasks-ZvUECSzI.d.mts +9 -0
  542. package/dist/deferred-tasks-ZvUECSzI.d.mts.map +1 -0
  543. package/dist/dev-typegen-EBni_pOQ.mjs +29 -0
  544. package/dist/dev-typegen-EBni_pOQ.mjs.map +1 -0
  545. package/dist/device-flow-BkFKBoAn.mjs +521 -0
  546. package/dist/device-flow-BkFKBoAn.mjs.map +1 -0
  547. package/dist/digest-DJ1tHCgy.mjs +194 -0
  548. package/dist/digest-DJ1tHCgy.mjs.map +1 -0
  549. package/dist/direct-executor-Cbxzg4qe.mjs +117 -0
  550. package/dist/direct-executor-Cbxzg4qe.mjs.map +1 -0
  551. package/dist/email-console-FFVJWb9N.mjs +50 -0
  552. package/dist/email-console-FFVJWb9N.mjs.map +1 -0
  553. package/dist/email-locale-BJ8DjTzZ.mjs +25 -0
  554. package/dist/email-locale-BJ8DjTzZ.mjs.map +1 -0
  555. package/dist/emdash-runtime-DVi7vtXC.mjs +4379 -0
  556. package/dist/emdash-runtime-DVi7vtXC.mjs.map +1 -0
  557. package/dist/entry-lock-C7VX0NGK.d.mts +4568 -0
  558. package/dist/entry-lock-C7VX0NGK.d.mts.map +1 -0
  559. package/dist/entry-lock-DLxCffFW.mjs +163 -0
  560. package/dist/entry-lock-DLxCffFW.mjs.map +1 -0
  561. package/dist/entry-lock-Df6-XhIu.mjs +1211 -0
  562. package/dist/entry-lock-Df6-XhIu.mjs.map +1 -0
  563. package/dist/env-types-C3FCVBWe.mjs +38 -0
  564. package/dist/env-types-C3FCVBWe.mjs.map +1 -0
  565. package/dist/error-CVWeIOku.mjs +90 -0
  566. package/dist/error-CVWeIOku.mjs.map +1 -0
  567. package/dist/errors-B4f4It-2.mjs +120 -0
  568. package/dist/errors-B4f4It-2.mjs.map +1 -0
  569. package/dist/errors-BOYNdIo3.mjs +479 -0
  570. package/dist/errors-BOYNdIo3.mjs.map +1 -0
  571. package/dist/escape-lsNq38PP.mjs +9 -0
  572. package/dist/escape-lsNq38PP.mjs.map +1 -0
  573. package/dist/fence-C3MUitUN.mjs +162 -0
  574. package/dist/fence-C3MUitUN.mjs.map +1 -0
  575. package/dist/field-defs-cache-Dez5iWJJ.mjs +77 -0
  576. package/dist/field-defs-cache-Dez5iWJJ.mjs.map +1 -0
  577. package/dist/field-map-Bft9LKak.mjs +83 -0
  578. package/dist/field-map-Bft9LKak.mjs.map +1 -0
  579. package/dist/fts-manager-Beg3e4bI.mjs +443 -0
  580. package/dist/fts-manager-Beg3e4bI.mjs.map +1 -0
  581. package/dist/gc-ByyAYiYE.mjs +75 -0
  582. package/dist/gc-ByyAYiYE.mjs.map +1 -0
  583. package/dist/hash-BJaeek87.mjs +37 -0
  584. package/dist/hash-BJaeek87.mjs.map +1 -0
  585. package/dist/hook-result-BrdLyOdI.d.mts +31 -0
  586. package/dist/hook-result-BrdLyOdI.d.mts.map +1 -0
  587. package/dist/hreflang-C8Jb-hrf.mjs +105 -0
  588. package/dist/hreflang-C8Jb-hrf.mjs.map +1 -0
  589. package/dist/hreflang-CY_F5OjF.d.mts +50 -0
  590. package/dist/hreflang-CY_F5OjF.d.mts.map +1 -0
  591. package/dist/http-route-dispatch-CyeW6iPv.mjs +342 -0
  592. package/dist/http-route-dispatch-CyeW6iPv.mjs.map +1 -0
  593. package/dist/identity-Cael5uTT.mjs +35 -0
  594. package/dist/identity-Cael5uTT.mjs.map +1 -0
  595. package/dist/import-BUXjdZUn.mjs +2126 -0
  596. package/dist/import-BUXjdZUn.mjs.map +1 -0
  597. package/dist/index-BB9sVisO.d.mts +623 -0
  598. package/dist/index-BB9sVisO.d.mts.map +1 -0
  599. package/dist/index.d.mts +23 -23
  600. package/dist/index.mjs +96 -94
  601. package/dist/install-finalization-3JX5qQEA.mjs +58 -0
  602. package/dist/install-finalization-3JX5qQEA.mjs.map +1 -0
  603. package/dist/json-recordset-BUjxhr77.mjs +12 -0
  604. package/dist/json-recordset-BUjxhr77.mjs.map +1 -0
  605. package/dist/json-schema-v_D_pPNG.mjs +15 -0
  606. package/dist/json-schema-v_D_pPNG.mjs.map +1 -0
  607. package/dist/keys-CifIkT0N.mjs +61 -0
  608. package/dist/keys-CifIkT0N.mjs.map +1 -0
  609. package/dist/kinds-B_Qcl5pz.mjs +974 -0
  610. package/dist/kinds-B_Qcl5pz.mjs.map +1 -0
  611. package/dist/lifecycle-7vUJeFRe.mjs +25 -0
  612. package/dist/lifecycle-7vUJeFRe.mjs.map +1 -0
  613. package/dist/load-CdAG9wz-.mjs +28 -0
  614. package/dist/load-CdAG9wz-.mjs.map +1 -0
  615. package/dist/loader-CswroUbe.mjs +1380 -0
  616. package/dist/loader-CswroUbe.mjs.map +1 -0
  617. package/dist/loops-uA4iTOzd.mjs +205 -0
  618. package/dist/loops-uA4iTOzd.mjs.map +1 -0
  619. package/dist/manifest-builder-B8zjuH3f.mjs +189 -0
  620. package/dist/manifest-builder-B8zjuH3f.mjs.map +1 -0
  621. package/dist/manifest-schema-DNb4XmTS.mjs +497 -0
  622. package/dist/manifest-schema-DNb4XmTS.mjs.map +1 -0
  623. package/dist/marketplace-CqbgeIa7.mjs +257 -0
  624. package/dist/marketplace-CqbgeIa7.mjs.map +1 -0
  625. package/dist/media/index.d.mts +1 -1
  626. package/dist/media/local-runtime.d.mts +14 -14
  627. package/dist/media/local-runtime.mjs +10 -5
  628. package/dist/media/local-runtime.mjs.map +1 -1
  629. package/dist/media--dJRU6i2.mjs +294 -0
  630. package/dist/media--dJRU6i2.mjs.map +1 -0
  631. package/dist/media-1WC65OCB.mjs +416 -0
  632. package/dist/media-1WC65OCB.mjs.map +1 -0
  633. package/dist/media-Bws9f18T.mjs +373 -0
  634. package/dist/media-Bws9f18T.mjs.map +1 -0
  635. package/dist/media-allowlist-BJB7MFx6.mjs +45 -0
  636. package/dist/media-allowlist-BJB7MFx6.mjs.map +1 -0
  637. package/dist/media-folders-Dn3C16B8.mjs +210 -0
  638. package/dist/media-folders-Dn3C16B8.mjs.map +1 -0
  639. package/dist/media-url-BQgKvpQ5.mjs +43 -0
  640. package/dist/media-url-BQgKvpQ5.mjs.map +1 -0
  641. package/dist/media-usage-CF0WVcLO.mjs +282 -0
  642. package/dist/media-usage-CF0WVcLO.mjs.map +1 -0
  643. package/dist/media-usage-activation-C9HwVw5w.mjs +78 -0
  644. package/dist/media-usage-activation-C9HwVw5w.mjs.map +1 -0
  645. package/dist/media-usage-work-CkLa5-nc.mjs +1036 -0
  646. package/dist/media-usage-work-CkLa5-nc.mjs.map +1 -0
  647. package/dist/media-usage-work-m3AWTmmC.mjs +151 -0
  648. package/dist/media-usage-work-m3AWTmmC.mjs.map +1 -0
  649. package/dist/menus-BCVSSp1z.mjs +753 -0
  650. package/dist/menus-BCVSSp1z.mjs.map +1 -0
  651. package/dist/menus-BSzwObhV.mjs +92 -0
  652. package/dist/menus-BSzwObhV.mjs.map +1 -0
  653. package/dist/menus-Cl4kwdt7.mjs +3721 -0
  654. package/dist/menus-Cl4kwdt7.mjs.map +1 -0
  655. package/dist/migrations/index.d.mts +1 -1
  656. package/dist/migrations/index.d.mts.map +1 -1
  657. package/dist/migrations/index.mjs +3 -3
  658. package/dist/mode-C-D3qICy.mjs +23 -0
  659. package/dist/mode-C-D3qICy.mjs.map +1 -0
  660. package/dist/node-sqlite-compat-CrKzRr0J.mjs +63 -0
  661. package/dist/node-sqlite-compat-CrKzRr0J.mjs.map +1 -0
  662. package/dist/oauth-authorization-TpEJrYB7.mjs +274 -0
  663. package/dist/oauth-authorization-TpEJrYB7.mjs.map +1 -0
  664. package/dist/oauth-clients-BT0Pg-MO.mjs +266 -0
  665. package/dist/oauth-clients-BT0Pg-MO.mjs.map +1 -0
  666. package/dist/oauth-state-store-CHMn_mwc.mjs +50 -0
  667. package/dist/oauth-state-store-CHMn_mwc.mjs.map +1 -0
  668. package/dist/oauth-user-lookup-BDgF6IVG.mjs +26 -0
  669. package/dist/oauth-user-lookup-BDgF6IVG.mjs.map +1 -0
  670. package/dist/object-cache/memory.d.mts +1 -1
  671. package/dist/options-DJWaq3Ie.d.mts +81 -0
  672. package/dist/options-DJWaq3Ie.d.mts.map +1 -0
  673. package/dist/ownership-MiyA7qKO.mjs +12 -0
  674. package/dist/ownership-MiyA7qKO.mjs.map +1 -0
  675. package/dist/page/index.d.mts +2 -2
  676. package/dist/page/index.mjs +9 -4
  677. package/dist/page/index.mjs.map +1 -1
  678. package/dist/parse-CWHOFc6z.d.mts +176 -0
  679. package/dist/parse-CWHOFc6z.d.mts.map +1 -0
  680. package/dist/parse-DgQ2NABT.mjs +81 -0
  681. package/dist/parse-DgQ2NABT.mjs.map +1 -0
  682. package/dist/passkey-config-D0kdzEao.mjs +46 -0
  683. package/dist/passkey-config-D0kdzEao.mjs.map +1 -0
  684. package/dist/paths-biDzFTY2.mjs +77 -0
  685. package/dist/paths-biDzFTY2.mjs.map +1 -0
  686. package/dist/placeholder-D41vk11_.d.mts +306 -0
  687. package/dist/placeholder-D41vk11_.d.mts.map +1 -0
  688. package/dist/plan-CCoqxNoU.mjs +135 -0
  689. package/dist/plan-CCoqxNoU.mjs.map +1 -0
  690. package/dist/plugin-test-runtime.d.mts +14 -14
  691. package/dist/plugin-test-runtime.mjs +109 -107
  692. package/dist/plugin-tool-name-DDUgN_0p.mjs +27 -0
  693. package/dist/plugin-tool-name-DDUgN_0p.mjs.map +1 -0
  694. package/dist/plugin-types.d.mts +2 -2
  695. package/dist/plugin-utils.d.mts +12 -12
  696. package/dist/plugins/adapt-sandbox-entry.d.mts +12 -12
  697. package/dist/plugins/adapt-sandbox-entry.d.mts.map +1 -1
  698. package/dist/plugins/adapt-sandbox-entry.mjs +9 -8
  699. package/dist/plugins/adapt-sandbox-entry.mjs.map +1 -1
  700. package/dist/plugins/host.d.mts +5 -5
  701. package/dist/plugins/host.mjs +45 -41
  702. package/dist/plugins-COJ2L49n.mjs +261 -0
  703. package/dist/plugins-COJ2L49n.mjs.map +1 -0
  704. package/dist/policy-DLQ--Hnm.mjs +45 -0
  705. package/dist/policy-DLQ--Hnm.mjs.map +1 -0
  706. package/dist/portable-text-BH4zgkSm.mjs +311 -0
  707. package/dist/portable-text-BH4zgkSm.mjs.map +1 -0
  708. package/dist/preview-DLexxwp3.mjs +107 -0
  709. package/dist/preview-DLexxwp3.mjs.map +1 -0
  710. package/dist/protocol-79kUO7jP.d.mts +65 -0
  711. package/dist/protocol-79kUO7jP.d.mts.map +1 -0
  712. package/dist/public-plugin-api-routes-BuAMJ8nN.mjs +316 -0
  713. package/dist/public-plugin-api-routes-BuAMJ8nN.mjs.map +1 -0
  714. package/dist/public-submission-Di3TsgzX.mjs +251 -0
  715. package/dist/public-submission-Di3TsgzX.mjs.map +1 -0
  716. package/dist/public-url-Bt98vysr.mjs +101 -0
  717. package/dist/public-url-Bt98vysr.mjs.map +1 -0
  718. package/dist/query-CpnRlBh8.mjs +1156 -0
  719. package/dist/query-CpnRlBh8.mjs.map +1 -0
  720. package/dist/query-haKvLAWl.mjs +41 -0
  721. package/dist/query-haKvLAWl.mjs.map +1 -0
  722. package/dist/range-CYfeXgGK.mjs +51 -0
  723. package/dist/range-CYfeXgGK.mjs.map +1 -0
  724. package/dist/rate-limit-Xp4d0NBY.mjs +127 -0
  725. package/dist/rate-limit-Xp4d0NBY.mjs.map +1 -0
  726. package/dist/receipt-BUsQCOeM.mjs +43 -0
  727. package/dist/receipt-BUsQCOeM.mjs.map +1 -0
  728. package/dist/redirect-CQAV7mCo.mjs +19 -0
  729. package/dist/redirect-CQAV7mCo.mjs.map +1 -0
  730. package/dist/redirect-DiS_3mA4.mjs +423 -0
  731. package/dist/redirect-DiS_3mA4.mjs.map +1 -0
  732. package/dist/redirect-paths-CNYq7w80.mjs +36 -0
  733. package/dist/redirect-paths-CNYq7w80.mjs.map +1 -0
  734. package/dist/redirects-BEVSRMa2.mjs +148 -0
  735. package/dist/redirects-BEVSRMa2.mjs.map +1 -0
  736. package/dist/redirects-BHpy-VsZ.mjs +446 -0
  737. package/dist/redirects-BHpy-VsZ.mjs.map +1 -0
  738. package/dist/registry/testing.mjs +3 -3
  739. package/dist/registry-TUVaid9Z.mjs +8369 -0
  740. package/dist/registry-TUVaid9Z.mjs.map +1 -0
  741. package/dist/relations-CA_QuMTU.mjs +776 -0
  742. package/dist/relations-CA_QuMTU.mjs.map +1 -0
  743. package/dist/request-context.d.mts +1 -1
  744. package/dist/request-meta-bwZ_NsvU.mjs +141 -0
  745. package/dist/request-meta-bwZ_NsvU.mjs.map +1 -0
  746. package/dist/resolve-DwNM-CXl.mjs +101 -0
  747. package/dist/resolve-DwNM-CXl.mjs.map +1 -0
  748. package/dist/revision-BVp8S0e_.mjs +374 -0
  749. package/dist/revision-BVp8S0e_.mjs.map +1 -0
  750. package/dist/route-cache-QSOyDEw0.mjs +20 -0
  751. package/dist/route-cache-QSOyDEw0.mjs.map +1 -0
  752. package/dist/route-wire-Ca_HWCZ5.mjs +197 -0
  753. package/dist/route-wire-Ca_HWCZ5.mjs.map +1 -0
  754. package/dist/routes-BerZFrvV.mjs +272 -0
  755. package/dist/routes-BerZFrvV.mjs.map +1 -0
  756. package/dist/runner-BObHz5FC.d.mts +68 -0
  757. package/dist/runner-BObHz5FC.d.mts.map +1 -0
  758. package/dist/runner-C5NeAkBQ.mjs +6595 -0
  759. package/dist/runner-C5NeAkBQ.mjs.map +1 -0
  760. package/dist/runtime.d.mts +13 -13
  761. package/dist/runtime.mjs +3 -2
  762. package/dist/runtime.mjs.map +1 -1
  763. package/dist/schema/project-env-types.mjs +39 -35
  764. package/dist/schema/project-env-types.mjs.map +1 -1
  765. package/dist/schema-C4OBuv6Z.mjs +13 -0
  766. package/dist/schema-C4OBuv6Z.mjs.map +1 -0
  767. package/dist/schema-DJRfvM_o.mjs +815 -0
  768. package/dist/schema-DJRfvM_o.mjs.map +1 -0
  769. package/dist/scopes-BU03K7Uo.mjs +34 -0
  770. package/dist/scopes-BU03K7Uo.mjs.map +1 -0
  771. package/dist/search-DfVzks89.mjs +450 -0
  772. package/dist/search-DfVzks89.mjs.map +1 -0
  773. package/dist/sections-BMy4JVUz.mjs +346 -0
  774. package/dist/sections-BMy4JVUz.mjs.map +1 -0
  775. package/dist/seed/index.d.mts +2 -2
  776. package/dist/seed/index.mjs +37 -33
  777. package/dist/seo/index.d.mts +3 -3
  778. package/dist/seo/index.mjs +24 -20
  779. package/dist/seo/index.mjs.map +1 -1
  780. package/dist/seo-ClB-dw9w.mjs +188 -0
  781. package/dist/seo-ClB-dw9w.mjs.map +1 -0
  782. package/dist/seo-VZYOEy8f.mjs +133 -0
  783. package/dist/seo-VZYOEy8f.mjs.map +1 -0
  784. package/dist/service-Bo_usgSk.mjs +150 -0
  785. package/dist/service-Bo_usgSk.mjs.map +1 -0
  786. package/dist/session-user-DlpPdf8L.mjs +61 -0
  787. package/dist/session-user-DlpPdf8L.mjs.map +1 -0
  788. package/dist/settings-CWb84sDm.mjs +452 -0
  789. package/dist/settings-CWb84sDm.mjs.map +1 -0
  790. package/dist/settings-DS914jjE.mjs +66 -0
  791. package/dist/settings-DS914jjE.mjs.map +1 -0
  792. package/dist/settings-Dd1uivmQ.mjs +73 -0
  793. package/dist/settings-Dd1uivmQ.mjs.map +1 -0
  794. package/dist/setup-complete-BuNxAUiN.mjs +65 -0
  795. package/dist/setup-complete-BuNxAUiN.mjs.map +1 -0
  796. package/dist/setup-nonce-BnEAX0iy.mjs +25 -0
  797. package/dist/setup-nonce-BnEAX0iy.mjs.map +1 -0
  798. package/dist/site-domain-Bq5j5bVg.mjs +131 -0
  799. package/dist/site-domain-Bq5j5bVg.mjs.map +1 -0
  800. package/dist/site-settings-DRHfX7bq.mjs +50 -0
  801. package/dist/site-settings-DRHfX7bq.mjs.map +1 -0
  802. package/dist/site-url-MB685I5X.mjs +45 -0
  803. package/dist/site-url-MB685I5X.mjs.map +1 -0
  804. package/dist/sitemap-name-BTg2NJJv.mjs +26 -0
  805. package/dist/sitemap-name-BTg2NJJv.mjs.map +1 -0
  806. package/dist/slug-aVnUV4SL.mjs +16 -0
  807. package/dist/slug-aVnUV4SL.mjs.map +1 -0
  808. package/dist/snapshot-DYsG4uOq.mjs +414 -0
  809. package/dist/snapshot-DYsG4uOq.mjs.map +1 -0
  810. package/dist/ssrf-BcYjyM4M.mjs +406 -0
  811. package/dist/ssrf-BcYjyM4M.mjs.map +1 -0
  812. package/dist/stage-D8DWgPcO.mjs +662 -0
  813. package/dist/stage-D8DWgPcO.mjs.map +1 -0
  814. package/dist/staged-CD_imitH.mjs +686 -0
  815. package/dist/staged-CD_imitH.mjs.map +1 -0
  816. package/dist/state-CFbGZziM.mjs +178 -0
  817. package/dist/state-CFbGZziM.mjs.map +1 -0
  818. package/dist/status-BFNdxzKc.mjs +30 -0
  819. package/dist/status-BFNdxzKc.mjs.map +1 -0
  820. package/dist/storage/local.d.mts +1 -1
  821. package/dist/storage/local.mjs +3 -3
  822. package/dist/storage/s3.d.mts +1 -1
  823. package/dist/storage/s3.mjs +1 -1
  824. package/dist/storage-query-DRyu3bSU.d.mts +1615 -0
  825. package/dist/storage-query-DRyu3bSU.d.mts.map +1 -0
  826. package/dist/tar-DFjExb9X.mjs +449 -0
  827. package/dist/tar-DFjExb9X.mjs.map +1 -0
  828. package/dist/target-CWZs2-o6.mjs +27 -0
  829. package/dist/target-CWZs2-o6.mjs.map +1 -0
  830. package/dist/taxonomies-ChnU7Mc8.mjs +697 -0
  831. package/dist/taxonomies-ChnU7Mc8.mjs.map +1 -0
  832. package/dist/taxonomies-Dd9JJv_a.mjs +939 -0
  833. package/dist/taxonomies-Dd9JJv_a.mjs.map +1 -0
  834. package/dist/taxonomy-C_C_LBAU.mjs +550 -0
  835. package/dist/taxonomy-C_C_LBAU.mjs.map +1 -0
  836. package/dist/tokens-BnhSnGwJ.mjs +171 -0
  837. package/dist/tokens-BnhSnGwJ.mjs.map +1 -0
  838. package/dist/transfer-ClH6w6BV.mjs +8873 -0
  839. package/dist/transfer-ClH6w6BV.mjs.map +1 -0
  840. package/dist/transfer-WmWiR3xf.mjs +166 -0
  841. package/dist/transfer-WmWiR3xf.mjs.map +1 -0
  842. package/dist/transfer-download--ofRj9Cw.mjs +33 -0
  843. package/dist/transfer-download--ofRj9Cw.mjs.map +1 -0
  844. package/dist/transformations-Bx4lYY0Y.mjs +196 -0
  845. package/dist/transformations-Bx4lYY0Y.mjs.map +1 -0
  846. package/dist/transport-BjbqNiPI.mjs +136 -0
  847. package/dist/transport-BjbqNiPI.mjs.map +1 -0
  848. package/dist/transport-DxiXnbXk.d.mts +42 -0
  849. package/dist/transport-DxiXnbXk.d.mts.map +1 -0
  850. package/dist/trusted-proxy-BU3Nx9g1.mjs +51 -0
  851. package/dist/trusted-proxy-BU3Nx9g1.mjs.map +1 -0
  852. package/dist/turnstile-CJwvsOqw.mjs +58 -0
  853. package/dist/turnstile-CJwvsOqw.mjs.map +1 -0
  854. package/dist/types-BA3ey2QH.d.mts +87 -0
  855. package/dist/types-BA3ey2QH.d.mts.map +1 -0
  856. package/dist/types-Bwpzb5o6.d.mts +227 -0
  857. package/dist/types-Bwpzb5o6.d.mts.map +1 -0
  858. package/dist/types-CNB-dj6F.d.mts +289 -0
  859. package/dist/types-CNB-dj6F.d.mts.map +1 -0
  860. package/dist/types-CgfFGfO5.mjs +16 -0
  861. package/dist/types-CgfFGfO5.mjs.map +1 -0
  862. package/dist/types-D2NEXtgB.mjs +127 -0
  863. package/dist/types-D2NEXtgB.mjs.map +1 -0
  864. package/dist/types-DCFavOii.d.mts +916 -0
  865. package/dist/types-DCFavOii.d.mts.map +1 -0
  866. package/dist/types-DHO7Pd25.d.mts +366 -0
  867. package/dist/types-DHO7Pd25.d.mts.map +1 -0
  868. package/dist/types-DvqVxZXa.d.mts +125 -0
  869. package/dist/types-DvqVxZXa.d.mts.map +1 -0
  870. package/dist/types-QoPHm-2w.d.mts +1741 -0
  871. package/dist/types-QoPHm-2w.d.mts.map +1 -0
  872. package/dist/types-RLgeIpnF.d.mts +374 -0
  873. package/dist/types-RLgeIpnF.d.mts.map +1 -0
  874. package/dist/types-qHVygneX.mjs +77 -0
  875. package/dist/types-qHVygneX.mjs.map +1 -0
  876. package/dist/types-sUHaH7lC.mjs +37 -0
  877. package/dist/types-sUHaH7lC.mjs.map +1 -0
  878. package/dist/types-slSqujQL.d.mts +204 -0
  879. package/dist/types-slSqujQL.d.mts.map +1 -0
  880. package/dist/update-check-BxNg9T6N.mjs +161 -0
  881. package/dist/update-check-BxNg9T6N.mjs.map +1 -0
  882. package/dist/upload-attempts-DPFC4COv.mjs +32 -0
  883. package/dist/upload-attempts-DPFC4COv.mjs.map +1 -0
  884. package/dist/url-pattern-QATUE_rv.mjs +41 -0
  885. package/dist/url-pattern-QATUE_rv.mjs.map +1 -0
  886. package/dist/user-BlCTKVAm.mjs +171 -0
  887. package/dist/user-BlCTKVAm.mjs.map +1 -0
  888. package/dist/utils-TPt7w2cS.mjs +442 -0
  889. package/dist/utils-TPt7w2cS.mjs.map +1 -0
  890. package/dist/validate-DxYhJQA-.mjs +524 -0
  891. package/dist/validate-DxYhJQA-.mjs.map +1 -0
  892. package/dist/validate-emKxGC5F.d.mts +468 -0
  893. package/dist/validate-emKxGC5F.d.mts.map +1 -0
  894. package/dist/validation-Ckq4vsVg.mjs +220 -0
  895. package/dist/validation-Ckq4vsVg.mjs.map +1 -0
  896. package/dist/version-BZj18Q7G.mjs +9 -0
  897. package/dist/version-BZj18Q7G.mjs.map +1 -0
  898. package/dist/version-DHmGpcch.mjs +7 -0
  899. package/dist/version-DHmGpcch.mjs.map +1 -0
  900. package/dist/video-DytCnw3L.mjs +54 -0
  901. package/dist/video-DytCnw3L.mjs.map +1 -0
  902. package/dist/virtual-modules-DO954n7P.mjs +515 -0
  903. package/dist/virtual-modules-DO954n7P.mjs.map +1 -0
  904. package/dist/widgets-DA5XmvVC.mjs +121 -0
  905. package/dist/widgets-DA5XmvVC.mjs.map +1 -0
  906. package/dist/wxr-taxonomies-CrMonejI.d.mts +34 -0
  907. package/dist/wxr-taxonomies-CrMonejI.d.mts.map +1 -0
  908. package/dist/wxr-taxonomies-RgRG0d5e.mjs +453 -0
  909. package/dist/wxr-taxonomies-RgRG0d5e.mjs.map +1 -0
  910. package/dist/zod-generator-D0JKy94C.mjs +424 -0
  911. package/dist/zod-generator-D0JKy94C.mjs.map +1 -0
  912. package/package.json +7 -6
  913. package/src/api/authorize.ts +42 -0
  914. package/src/api/handlers/dashboard.ts +33 -10
  915. package/src/api/handlers/manifest.ts +1 -0
  916. package/src/api/handlers/plugins.ts +1 -0
  917. package/src/api/handlers/revision.ts +6 -2
  918. package/src/api/handlers/site-domain.ts +26 -10
  919. package/src/api/schemas/settings.ts +2 -0
  920. package/src/api/types.ts +2 -0
  921. package/src/astro/integration/dev-scheduler-bridge.ts +91 -0
  922. package/src/astro/integration/index.ts +48 -1
  923. package/src/astro/integration/routes.ts +8 -0
  924. package/src/astro/integration/runtime.ts +2 -1
  925. package/src/astro/integration/virtual-modules.ts +9 -16
  926. package/src/astro/integration/vite-config.ts +4 -15
  927. package/src/astro/middleware/auth.ts +3 -1
  928. package/src/astro/middleware/redirect.ts +71 -42
  929. package/src/astro/middleware.ts +18 -3
  930. package/src/astro/prefetch.ts +7 -5
  931. package/src/astro/public-plugin-api-routes.ts +10 -2
  932. package/src/astro/routes/api/admin/plugins/registry/artifact.ts +1 -1
  933. package/src/astro/routes/api/content/[collection]/[id]/discard-draft.ts +2 -1
  934. package/src/astro/routes/api/content/[collection]/[id]/duplicate.ts +1 -5
  935. package/src/astro/routes/api/content/[collection]/[id]/lock.ts +2 -2
  936. package/src/astro/routes/api/content/[collection]/[id]/permanent.ts +2 -1
  937. package/src/astro/routes/api/content/[collection]/[id]/publish.ts +2 -1
  938. package/src/astro/routes/api/content/[collection]/[id]/restore.ts +2 -1
  939. package/src/astro/routes/api/content/[collection]/[id]/schedule.ts +3 -2
  940. package/src/astro/routes/api/content/[collection]/[id]/terms/[taxonomy].ts +5 -4
  941. package/src/astro/routes/api/content/[collection]/[id]/unpublish.ts +2 -1
  942. package/src/astro/routes/api/content/[collection]/[id].ts +18 -6
  943. package/src/astro/routes/api/content/[collection]/index.ts +1 -5
  944. package/src/astro/routes/api/dashboard.ts +4 -1
  945. package/src/astro/routes/api/dev/scheduled-tasks.ts +20 -0
  946. package/src/astro/routes/api/import/wordpress/analyze.ts +1 -16
  947. package/src/astro/routes/api/import/wordpress/execute.ts +8 -3
  948. package/src/astro/routes/api/import/wordpress-plugin/analyze.ts +4 -1
  949. package/src/astro/routes/api/import/wordpress-plugin/execute.ts +34 -5
  950. package/src/astro/routes/api/menus/[name]/items/[id].ts +3 -2
  951. package/src/astro/routes/api/menus/[name]/items.ts +2 -1
  952. package/src/astro/routes/api/menus/[name]/reorder.ts +2 -1
  953. package/src/astro/routes/api/menus/[name]/translations.ts +2 -1
  954. package/src/astro/routes/api/menus/[name].ts +3 -2
  955. package/src/astro/routes/api/menus/index.ts +2 -1
  956. package/src/astro/routes/api/redirects/[id].ts +15 -2
  957. package/src/astro/routes/api/redirects/index.ts +5 -1
  958. package/src/astro/routes/api/settings/domain.ts +2 -1
  959. package/src/astro/routes/api/settings.ts +2 -1
  960. package/src/astro/routes/api/setup/admin-verify.ts +7 -1
  961. package/src/astro/routes/api/taxonomies/[name]/reorder.ts +2 -1
  962. package/src/astro/routes/api/taxonomies/[name]/terms/[slug]/translations.ts +2 -1
  963. package/src/astro/routes/api/taxonomies/[name]/terms/[slug].ts +3 -2
  964. package/src/astro/routes/api/taxonomies/[name]/terms/index.ts +2 -1
  965. package/src/astro/routes/api/taxonomies/[name].ts +3 -2
  966. package/src/astro/routes/api/taxonomies/index.ts +2 -1
  967. package/src/astro/routes/api/widget-areas/[name]/reorder.ts +2 -1
  968. package/src/astro/routes/api/widget-areas/[name]/widgets/[id].ts +3 -2
  969. package/src/astro/routes/api/widget-areas/[name]/widgets.ts +2 -1
  970. package/src/astro/routes/api/widget-areas/[name].ts +2 -1
  971. package/src/astro/routes/api/widget-areas/index.ts +2 -1
  972. package/src/astro/routes/robots.txt.ts +33 -2
  973. package/src/astro/types.ts +10 -1
  974. package/src/auth/types.ts +4 -4
  975. package/src/cache/redirect-paths.ts +56 -0
  976. package/src/cache/route-cache.ts +22 -0
  977. package/src/cli/commands/import/wordpress.ts +3 -27
  978. package/src/cli/commands/login.ts +35 -43
  979. package/src/cli/commands/migrate.ts +36 -4
  980. package/src/cli/commands/seed.ts +18 -8
  981. package/src/cli/wxr/parser.ts +2 -2
  982. package/src/client/index.ts +12 -2
  983. package/src/client/portable-text.ts +21 -7
  984. package/src/comments/query.ts +8 -2
  985. package/src/components/CommentForm.astro +2 -2
  986. package/src/components/Comments.astro +1 -1
  987. package/src/components/InlinePortableTextEditor.tsx +152 -1325
  988. package/src/components/inline-block-types.ts +278 -0
  989. package/src/components/inline-bubble-menu.tsx +696 -0
  990. package/src/components/inline-editor-ui.tsx +1192 -0
  991. package/src/components/inline-image.tsx +722 -0
  992. package/src/components/inline-media-picker.tsx +1221 -0
  993. package/src/components/inline-slash-menu.tsx +556 -0
  994. package/src/database/collection-cleanup.ts +30 -0
  995. package/src/database/datetime-storage.ts +337 -60
  996. package/src/database/migration-lock.ts +43 -7
  997. package/src/database/repositories/content.ts +3 -1
  998. package/src/database/repositories/plugin-storage.ts +109 -8
  999. package/src/database/repositories/revision.ts +24 -6
  1000. package/src/database/repositories/types.ts +65 -7
  1001. package/src/emdash-runtime.ts +176 -160
  1002. package/src/import/index.ts +1 -0
  1003. package/src/import/registry.ts +17 -0
  1004. package/src/import/sources/wordpress-plugin.ts +151 -9
  1005. package/src/import/types.ts +3 -0
  1006. package/src/import/utils.ts +5 -0
  1007. package/src/loader.ts +36 -2
  1008. package/src/mcp/json-schema.ts +14 -0
  1009. package/src/mcp/plugin-tool-name.ts +36 -0
  1010. package/src/mcp/server.ts +74 -15
  1011. package/src/media/usage/collection-deletion.ts +4 -0
  1012. package/src/migrations/direct-executor.ts +42 -12
  1013. package/src/migrations/protocol.ts +6 -2
  1014. package/src/plugins/adapt-sandbox-entry.ts +16 -6
  1015. package/src/plugins/state.ts +5 -8
  1016. package/src/query.ts +51 -10
  1017. package/src/redirects/cache.ts +34 -2
  1018. package/src/schema/block-values.ts +80 -17
  1019. package/src/schema/registry.ts +9 -1
  1020. package/src/search/query.ts +3 -1
  1021. package/src/seed/apply.ts +32 -8
  1022. package/src/settings/index.ts +20 -0
  1023. package/src/settings/types.ts +2 -0
  1024. package/src/visual-editing/toolbar.ts +46 -12
  1025. package/dist/action-token-BdWad2YG.mjs +0 -26
  1026. package/dist/action-token-BdWad2YG.mjs.map +0 -1
  1027. package/dist/activation-xomsCMJg.mjs +0 -387
  1028. package/dist/activation-xomsCMJg.mjs.map +0 -1
  1029. package/dist/adapters-B4-nbElt.d.mts +0 -173
  1030. package/dist/adapters-B4-nbElt.d.mts.map +0 -1
  1031. package/dist/allowed-origins-CLpHGGlc.mjs +0 -116
  1032. package/dist/allowed-origins-CLpHGGlc.mjs.map +0 -1
  1033. package/dist/api-DBw_IWoi.mjs +0 -5024
  1034. package/dist/api-DBw_IWoi.mjs.map +0 -1
  1035. package/dist/api-tokens-B0ZipcZ-.mjs +0 -173
  1036. package/dist/api-tokens-B0ZipcZ-.mjs.map +0 -1
  1037. package/dist/apply-Cx48saFC.mjs +0 -1680
  1038. package/dist/apply-Cx48saFC.mjs.map +0 -1
  1039. package/dist/approvals-BXgtXA2s.mjs +0 -460
  1040. package/dist/approvals-BXgtXA2s.mjs.map +0 -1
  1041. package/dist/artifact-fetch-DsRczRGG.mjs +0 -659
  1042. package/dist/artifact-fetch-DsRczRGG.mjs.map +0 -1
  1043. package/dist/artifacts-D-O-qj9C.mjs +0 -307
  1044. package/dist/artifacts-D-O-qj9C.mjs.map +0 -1
  1045. package/dist/audit-CCH3MA4Y.mjs +0 -127
  1046. package/dist/audit-CCH3MA4Y.mjs.map +0 -1
  1047. package/dist/authoritative-records-Dcs7l2H5.mjs +0 -5183
  1048. package/dist/authoritative-records-Dcs7l2H5.mjs.map +0 -1
  1049. package/dist/authorize-TdIGpRSE.mjs +0 -49
  1050. package/dist/authorize-TdIGpRSE.mjs.map +0 -1
  1051. package/dist/backup-CZt5Mzwx.mjs +0 -246
  1052. package/dist/backup-CZt5Mzwx.mjs.map +0 -1
  1053. package/dist/block-types-DHnkzE6u.mjs +0 -132
  1054. package/dist/block-types-DHnkzE6u.mjs.map +0 -1
  1055. package/dist/block-values-C4N_F2-G.mjs +0 -175
  1056. package/dist/block-values-C4N_F2-G.mjs.map +0 -1
  1057. package/dist/byline-BmVKOQ8l.mjs +0 -909
  1058. package/dist/byline-BmVKOQ8l.mjs.map +0 -1
  1059. package/dist/byline-fields-B8SDs3M_.mjs +0 -123
  1060. package/dist/byline-fields-B8SDs3M_.mjs.map +0 -1
  1061. package/dist/byline-fields-Bze3ZdAw.mjs +0 -280
  1062. package/dist/byline-fields-Bze3ZdAw.mjs.map +0 -1
  1063. package/dist/bylines-CHhR28r9.mjs +0 -150
  1064. package/dist/bylines-CHhR28r9.mjs.map +0 -1
  1065. package/dist/bylines-DZS4OflA.mjs +0 -234
  1066. package/dist/bylines-DZS4OflA.mjs.map +0 -1
  1067. package/dist/cache-x0z8t_m9.mjs +0 -133
  1068. package/dist/cache-x0z8t_m9.mjs.map +0 -1
  1069. package/dist/canonical-BUcKRYpG.mjs +0 -174
  1070. package/dist/canonical-BUcKRYpG.mjs.map +0 -1
  1071. package/dist/capture-triggers-C9JKoIdT.mjs +0 -362
  1072. package/dist/capture-triggers-C9JKoIdT.mjs.map +0 -1
  1073. package/dist/challenge-store-BHgdPVze.mjs +0 -51
  1074. package/dist/challenge-store-BHgdPVze.mjs.map +0 -1
  1075. package/dist/checksum-BYR5i7qe.mjs +0 -162
  1076. package/dist/checksum-BYR5i7qe.mjs.map +0 -1
  1077. package/dist/chunks-Dr5Vr0zA.mjs +0 -25
  1078. package/dist/chunks-Dr5Vr0zA.mjs.map +0 -1
  1079. package/dist/collection-slugs-cache-B2Gs9Jwx.mjs +0 -85
  1080. package/dist/collection-slugs-cache-B2Gs9Jwx.mjs.map +0 -1
  1081. package/dist/comment-CWla6OHV.mjs +0 -325
  1082. package/dist/comment-CWla6OHV.mjs.map +0 -1
  1083. package/dist/comment-reaction-RZrcs5cW.mjs +0 -85
  1084. package/dist/comment-reaction-RZrcs5cW.mjs.map +0 -1
  1085. package/dist/comments-BzmIKVb2.mjs +0 -99
  1086. package/dist/comments-BzmIKVb2.mjs.map +0 -1
  1087. package/dist/comments-Da_dI2O1.mjs +0 -195
  1088. package/dist/comments-Da_dI2O1.mjs.map +0 -1
  1089. package/dist/components-oFXumpf5.mjs +0 -112
  1090. package/dist/components-oFXumpf5.mjs.map +0 -1
  1091. package/dist/config--wamYxBW.d.mts +0 -39
  1092. package/dist/config--wamYxBW.d.mts.map +0 -1
  1093. package/dist/config-Bo4eOOdV.mjs +0 -228
  1094. package/dist/config-Bo4eOOdV.mjs.map +0 -1
  1095. package/dist/config-C4-UxIk7.d.mts +0 -6790
  1096. package/dist/config-C4-UxIk7.d.mts.map +0 -1
  1097. package/dist/connection-UpzYxtE2.mjs +0 -36
  1098. package/dist/connection-UpzYxtE2.mjs.map +0 -1
  1099. package/dist/content-CcHrqkgp.mjs +0 -2072
  1100. package/dist/content-CcHrqkgp.mjs.map +0 -1
  1101. package/dist/content-list-query-Bxxdd9fv.d.mts +0 -26
  1102. package/dist/content-list-query-Bxxdd9fv.d.mts.map +0 -1
  1103. package/dist/content-repair-havk1F0-.mjs +0 -442
  1104. package/dist/content-repair-havk1F0-.mjs.map +0 -1
  1105. package/dist/context-CvhgHgSH.mjs +0 -2043
  1106. package/dist/context-CvhgHgSH.mjs.map +0 -1
  1107. package/dist/credits-CygUrPOi.mjs +0 -110
  1108. package/dist/credits-CygUrPOi.mjs.map +0 -1
  1109. package/dist/cron-C6ytTOLw.mjs +0 -306
  1110. package/dist/cron-C6ytTOLw.mjs.map +0 -1
  1111. package/dist/dashboard-7_FYfafc.mjs +0 -151
  1112. package/dist/dashboard-7_FYfafc.mjs.map +0 -1
  1113. package/dist/default-CHCUkV4Z.mjs +0 -81
  1114. package/dist/default-CHCUkV4Z.mjs.map +0 -1
  1115. package/dist/deferred-tasks-G0xhcJTl.d.mts +0 -9
  1116. package/dist/deferred-tasks-G0xhcJTl.d.mts.map +0 -1
  1117. package/dist/dev-typegen-Dtl8AfS6.mjs +0 -29
  1118. package/dist/dev-typegen-Dtl8AfS6.mjs.map +0 -1
  1119. package/dist/device-flow-CzDJmQ1q.mjs +0 -521
  1120. package/dist/device-flow-CzDJmQ1q.mjs.map +0 -1
  1121. package/dist/digest-xJmyPv2r.mjs +0 -194
  1122. package/dist/digest-xJmyPv2r.mjs.map +0 -1
  1123. package/dist/direct-executor-BXiYIVJ9.mjs +0 -104
  1124. package/dist/direct-executor-BXiYIVJ9.mjs.map +0 -1
  1125. package/dist/email-console-7ZPApLlm.mjs +0 -50
  1126. package/dist/email-console-7ZPApLlm.mjs.map +0 -1
  1127. package/dist/email-locale-DFdUA6UF.mjs +0 -25
  1128. package/dist/email-locale-DFdUA6UF.mjs.map +0 -1
  1129. package/dist/emdash-runtime-C4oFeVpN.mjs +0 -4363
  1130. package/dist/emdash-runtime-C4oFeVpN.mjs.map +0 -1
  1131. package/dist/entry-lock-B4n0HdQ_.mjs +0 -163
  1132. package/dist/entry-lock-B4n0HdQ_.mjs.map +0 -1
  1133. package/dist/entry-lock-BAAlKYrz.d.mts +0 -4566
  1134. package/dist/entry-lock-BAAlKYrz.d.mts.map +0 -1
  1135. package/dist/entry-lock-Cjz0h45X.mjs +0 -1209
  1136. package/dist/entry-lock-Cjz0h45X.mjs.map +0 -1
  1137. package/dist/env-types-4bkF6Bqg.mjs +0 -38
  1138. package/dist/env-types-4bkF6Bqg.mjs.map +0 -1
  1139. package/dist/error-DxgQdaZ_.mjs +0 -90
  1140. package/dist/error-DxgQdaZ_.mjs.map +0 -1
  1141. package/dist/errors-CjtE5aWF.mjs +0 -120
  1142. package/dist/errors-CjtE5aWF.mjs.map +0 -1
  1143. package/dist/errors-hskQ0C8G.mjs +0 -479
  1144. package/dist/errors-hskQ0C8G.mjs.map +0 -1
  1145. package/dist/escape-ESFhYzwG.mjs +0 -9
  1146. package/dist/escape-ESFhYzwG.mjs.map +0 -1
  1147. package/dist/fence-vc3aHgRA.mjs +0 -162
  1148. package/dist/fence-vc3aHgRA.mjs.map +0 -1
  1149. package/dist/field-defs-cache-zoow36nz.mjs +0 -77
  1150. package/dist/field-defs-cache-zoow36nz.mjs.map +0 -1
  1151. package/dist/field-map-JD1wG0Tq.mjs +0 -83
  1152. package/dist/field-map-JD1wG0Tq.mjs.map +0 -1
  1153. package/dist/fts-manager-WJCN8uU6.mjs +0 -443
  1154. package/dist/fts-manager-WJCN8uU6.mjs.map +0 -1
  1155. package/dist/gc-CsGZiKdH.mjs +0 -75
  1156. package/dist/gc-CsGZiKdH.mjs.map +0 -1
  1157. package/dist/hash-C4DFoJ7Z.mjs +0 -37
  1158. package/dist/hash-C4DFoJ7Z.mjs.map +0 -1
  1159. package/dist/hook-result-CXjtMk7Q.d.mts +0 -31
  1160. package/dist/hook-result-CXjtMk7Q.d.mts.map +0 -1
  1161. package/dist/hreflang-BAma7iRr.mjs +0 -105
  1162. package/dist/hreflang-BAma7iRr.mjs.map +0 -1
  1163. package/dist/hreflang-BsYo4x_M.d.mts +0 -50
  1164. package/dist/hreflang-BsYo4x_M.d.mts.map +0 -1
  1165. package/dist/http-route-dispatch-C8G7hAK6.mjs +0 -342
  1166. package/dist/http-route-dispatch-C8G7hAK6.mjs.map +0 -1
  1167. package/dist/identity-BwBKM1fH.mjs +0 -35
  1168. package/dist/identity-BwBKM1fH.mjs.map +0 -1
  1169. package/dist/import-DJ3Z2wxE.mjs +0 -2021
  1170. package/dist/import-DJ3Z2wxE.mjs.map +0 -1
  1171. package/dist/index-DYsn97dY.d.mts +0 -623
  1172. package/dist/index-DYsn97dY.d.mts.map +0 -1
  1173. package/dist/install-finalization-DCFnFSHv.mjs +0 -58
  1174. package/dist/install-finalization-DCFnFSHv.mjs.map +0 -1
  1175. package/dist/keys-CGvAndSp.mjs +0 -61
  1176. package/dist/keys-CGvAndSp.mjs.map +0 -1
  1177. package/dist/kinds-DT1W4T4Y.mjs +0 -974
  1178. package/dist/kinds-DT1W4T4Y.mjs.map +0 -1
  1179. package/dist/lifecycle-BzglCSY0.mjs +0 -25
  1180. package/dist/lifecycle-BzglCSY0.mjs.map +0 -1
  1181. package/dist/load-DjUqmf3s.mjs +0 -28
  1182. package/dist/load-DjUqmf3s.mjs.map +0 -1
  1183. package/dist/loader-CetY659y.mjs +0 -1355
  1184. package/dist/loader-CetY659y.mjs.map +0 -1
  1185. package/dist/loops-DkT1zkPH.mjs +0 -205
  1186. package/dist/loops-DkT1zkPH.mjs.map +0 -1
  1187. package/dist/manifest-builder-BOFCd9rX.mjs +0 -189
  1188. package/dist/manifest-builder-BOFCd9rX.mjs.map +0 -1
  1189. package/dist/manifest-schema-BiFBPEsp.mjs +0 -497
  1190. package/dist/manifest-schema-BiFBPEsp.mjs.map +0 -1
  1191. package/dist/marketplace-CUlenvZm.mjs +0 -257
  1192. package/dist/marketplace-CUlenvZm.mjs.map +0 -1
  1193. package/dist/media-CRKsKlfK.mjs +0 -416
  1194. package/dist/media-CRKsKlfK.mjs.map +0 -1
  1195. package/dist/media-C_z7sRuC.mjs +0 -294
  1196. package/dist/media-C_z7sRuC.mjs.map +0 -1
  1197. package/dist/media-IT8hQleU.mjs +0 -373
  1198. package/dist/media-IT8hQleU.mjs.map +0 -1
  1199. package/dist/media-allowlist-Ct6wvnT2.mjs +0 -45
  1200. package/dist/media-allowlist-Ct6wvnT2.mjs.map +0 -1
  1201. package/dist/media-folders-DtMt-vAA.mjs +0 -210
  1202. package/dist/media-folders-DtMt-vAA.mjs.map +0 -1
  1203. package/dist/media-url-BpXLqCmf.mjs +0 -43
  1204. package/dist/media-url-BpXLqCmf.mjs.map +0 -1
  1205. package/dist/media-usage-DEPHZZ9X.mjs +0 -282
  1206. package/dist/media-usage-DEPHZZ9X.mjs.map +0 -1
  1207. package/dist/media-usage-activation-V2Siabtw.mjs +0 -78
  1208. package/dist/media-usage-activation-V2Siabtw.mjs.map +0 -1
  1209. package/dist/media-usage-work-Cv1OE59F.mjs +0 -151
  1210. package/dist/media-usage-work-Cv1OE59F.mjs.map +0 -1
  1211. package/dist/media-usage-work-cgDYGvrt.mjs +0 -1015
  1212. package/dist/media-usage-work-cgDYGvrt.mjs.map +0 -1
  1213. package/dist/menus-CvVYfsuk.mjs +0 -753
  1214. package/dist/menus-CvVYfsuk.mjs.map +0 -1
  1215. package/dist/menus-D1HC8npj.mjs +0 -92
  1216. package/dist/menus-D1HC8npj.mjs.map +0 -1
  1217. package/dist/menus-DL8IPIcm.mjs +0 -3721
  1218. package/dist/menus-DL8IPIcm.mjs.map +0 -1
  1219. package/dist/mode-eieqAWLe.mjs +0 -23
  1220. package/dist/mode-eieqAWLe.mjs.map +0 -1
  1221. package/dist/node-sqlite-compat-VuyzJw1b.mjs +0 -63
  1222. package/dist/node-sqlite-compat-VuyzJw1b.mjs.map +0 -1
  1223. package/dist/oauth-authorization-B6ZJbMd2.mjs +0 -274
  1224. package/dist/oauth-authorization-B6ZJbMd2.mjs.map +0 -1
  1225. package/dist/oauth-clients-DVjRc9v3.mjs +0 -266
  1226. package/dist/oauth-clients-DVjRc9v3.mjs.map +0 -1
  1227. package/dist/oauth-state-store-CnmYYsVQ.mjs +0 -50
  1228. package/dist/oauth-state-store-CnmYYsVQ.mjs.map +0 -1
  1229. package/dist/oauth-user-lookup-Dz1_R5vT.mjs +0 -26
  1230. package/dist/oauth-user-lookup-Dz1_R5vT.mjs.map +0 -1
  1231. package/dist/options-BR9XZl7h.d.mts +0 -81
  1232. package/dist/options-BR9XZl7h.d.mts.map +0 -1
  1233. package/dist/ownership-COPyVysP.mjs +0 -12
  1234. package/dist/ownership-COPyVysP.mjs.map +0 -1
  1235. package/dist/parse-BOGhrwSq.d.mts +0 -174
  1236. package/dist/parse-BOGhrwSq.d.mts.map +0 -1
  1237. package/dist/parse-Cn5aSk1N.mjs +0 -81
  1238. package/dist/parse-Cn5aSk1N.mjs.map +0 -1
  1239. package/dist/passkey-config-mMFRQUCj.mjs +0 -46
  1240. package/dist/passkey-config-mMFRQUCj.mjs.map +0 -1
  1241. package/dist/paths-BmcAdBo9.mjs +0 -77
  1242. package/dist/paths-BmcAdBo9.mjs.map +0 -1
  1243. package/dist/placeholder-nOep3_Gn.d.mts +0 -306
  1244. package/dist/placeholder-nOep3_Gn.d.mts.map +0 -1
  1245. package/dist/plan-CDY4K8CH.mjs +0 -135
  1246. package/dist/plan-CDY4K8CH.mjs.map +0 -1
  1247. package/dist/plugins-DFBpfbO3.mjs +0 -261
  1248. package/dist/plugins-DFBpfbO3.mjs.map +0 -1
  1249. package/dist/policy-B_2qnHSy.mjs +0 -45
  1250. package/dist/policy-B_2qnHSy.mjs.map +0 -1
  1251. package/dist/portable-text-Dc2YAusw.mjs +0 -307
  1252. package/dist/portable-text-Dc2YAusw.mjs.map +0 -1
  1253. package/dist/preview-BtzikJ9O.mjs +0 -107
  1254. package/dist/preview-BtzikJ9O.mjs.map +0 -1
  1255. package/dist/protocol-M268ox8L.d.mts +0 -61
  1256. package/dist/protocol-M268ox8L.d.mts.map +0 -1
  1257. package/dist/public-submission-BQZavgZU.mjs +0 -251
  1258. package/dist/public-submission-BQZavgZU.mjs.map +0 -1
  1259. package/dist/public-url-uT1Ok2Tu.mjs +0 -101
  1260. package/dist/public-url-uT1Ok2Tu.mjs.map +0 -1
  1261. package/dist/query-BGG3sDEd.mjs +0 -1127
  1262. package/dist/query-BGG3sDEd.mjs.map +0 -1
  1263. package/dist/query-C_CWlifp.mjs +0 -41
  1264. package/dist/query-C_CWlifp.mjs.map +0 -1
  1265. package/dist/range-CXK_kDbI.mjs +0 -51
  1266. package/dist/range-CXK_kDbI.mjs.map +0 -1
  1267. package/dist/rate-limit-Dvamvay-.mjs +0 -127
  1268. package/dist/rate-limit-Dvamvay-.mjs.map +0 -1
  1269. package/dist/receipt-BmQGzquP.mjs +0 -43
  1270. package/dist/receipt-BmQGzquP.mjs.map +0 -1
  1271. package/dist/redirect-B39kTQ_0.mjs +0 -423
  1272. package/dist/redirect-B39kTQ_0.mjs.map +0 -1
  1273. package/dist/redirect-BguJ00Pv.mjs +0 -19
  1274. package/dist/redirect-BguJ00Pv.mjs.map +0 -1
  1275. package/dist/redirects-C8G4BsfP.mjs +0 -446
  1276. package/dist/redirects-C8G4BsfP.mjs.map +0 -1
  1277. package/dist/redirects-DFT7Wr-e.mjs +0 -148
  1278. package/dist/redirects-DFT7Wr-e.mjs.map +0 -1
  1279. package/dist/registry-DeZ27gVi.mjs +0 -8374
  1280. package/dist/registry-DeZ27gVi.mjs.map +0 -1
  1281. package/dist/relations-DBB1bRJW.mjs +0 -776
  1282. package/dist/relations-DBB1bRJW.mjs.map +0 -1
  1283. package/dist/request-meta-BSvkhIBX.mjs +0 -141
  1284. package/dist/request-meta-BSvkhIBX.mjs.map +0 -1
  1285. package/dist/resolve-BxH64HN9.mjs +0 -100
  1286. package/dist/resolve-BxH64HN9.mjs.map +0 -1
  1287. package/dist/revision-BWEH2qQB.mjs +0 -368
  1288. package/dist/revision-BWEH2qQB.mjs.map +0 -1
  1289. package/dist/route-wire-CwbWB_6O.mjs +0 -197
  1290. package/dist/route-wire-CwbWB_6O.mjs.map +0 -1
  1291. package/dist/routes-BfIxc7ft.mjs +0 -272
  1292. package/dist/routes-BfIxc7ft.mjs.map +0 -1
  1293. package/dist/runner-DkeafPBA.d.mts +0 -68
  1294. package/dist/runner-DkeafPBA.d.mts.map +0 -1
  1295. package/dist/runner-wqt4BrIW.mjs +0 -6383
  1296. package/dist/runner-wqt4BrIW.mjs.map +0 -1
  1297. package/dist/schema-BXIW-JHi.mjs +0 -815
  1298. package/dist/schema-BXIW-JHi.mjs.map +0 -1
  1299. package/dist/schema-I74JwYte.mjs +0 -13
  1300. package/dist/schema-I74JwYte.mjs.map +0 -1
  1301. package/dist/scopes-RWZ5ft_Z.mjs +0 -34
  1302. package/dist/scopes-RWZ5ft_Z.mjs.map +0 -1
  1303. package/dist/search-DxwagyWS.mjs +0 -450
  1304. package/dist/search-DxwagyWS.mjs.map +0 -1
  1305. package/dist/sections-Ccq9ZgyD.mjs +0 -346
  1306. package/dist/sections-Ccq9ZgyD.mjs.map +0 -1
  1307. package/dist/seo-CCnfPWAQ.mjs +0 -133
  1308. package/dist/seo-CCnfPWAQ.mjs.map +0 -1
  1309. package/dist/seo-QCtJ1jjV.mjs +0 -188
  1310. package/dist/seo-QCtJ1jjV.mjs.map +0 -1
  1311. package/dist/service-DX84s2rw.mjs +0 -150
  1312. package/dist/service-DX84s2rw.mjs.map +0 -1
  1313. package/dist/session-user-1dtJc2zv.mjs +0 -61
  1314. package/dist/session-user-1dtJc2zv.mjs.map +0 -1
  1315. package/dist/settings-B1jOxAIl.mjs +0 -443
  1316. package/dist/settings-B1jOxAIl.mjs.map +0 -1
  1317. package/dist/settings-Bc1IBl1t.mjs +0 -66
  1318. package/dist/settings-Bc1IBl1t.mjs.map +0 -1
  1319. package/dist/settings-GaZ5sVgg.mjs +0 -73
  1320. package/dist/settings-GaZ5sVgg.mjs.map +0 -1
  1321. package/dist/setup-complete-DidMAWJS.mjs +0 -65
  1322. package/dist/setup-complete-DidMAWJS.mjs.map +0 -1
  1323. package/dist/setup-nonce-DKl4S4c6.mjs +0 -25
  1324. package/dist/setup-nonce-DKl4S4c6.mjs.map +0 -1
  1325. package/dist/site-domain-CbI51Pc2.mjs +0 -113
  1326. package/dist/site-domain-CbI51Pc2.mjs.map +0 -1
  1327. package/dist/site-settings-CDdT4mVm.mjs +0 -50
  1328. package/dist/site-settings-CDdT4mVm.mjs.map +0 -1
  1329. package/dist/site-url-CrDZaAvo.mjs +0 -45
  1330. package/dist/site-url-CrDZaAvo.mjs.map +0 -1
  1331. package/dist/sitemap-name-W3BTor6X.mjs +0 -26
  1332. package/dist/sitemap-name-W3BTor6X.mjs.map +0 -1
  1333. package/dist/slug-BJhHKoOH.mjs +0 -16
  1334. package/dist/slug-BJhHKoOH.mjs.map +0 -1
  1335. package/dist/snapshot-BuI_2uDe.mjs +0 -414
  1336. package/dist/snapshot-BuI_2uDe.mjs.map +0 -1
  1337. package/dist/ssrf-LM_0wpGA.mjs +0 -406
  1338. package/dist/ssrf-LM_0wpGA.mjs.map +0 -1
  1339. package/dist/stage-DhzZuYaT.mjs +0 -662
  1340. package/dist/stage-DhzZuYaT.mjs.map +0 -1
  1341. package/dist/staged-DboEaWsV.mjs +0 -686
  1342. package/dist/staged-DboEaWsV.mjs.map +0 -1
  1343. package/dist/state-DCXDzjHq.mjs +0 -178
  1344. package/dist/state-DCXDzjHq.mjs.map +0 -1
  1345. package/dist/status-Dl85BK39.mjs +0 -30
  1346. package/dist/status-Dl85BK39.mjs.map +0 -1
  1347. package/dist/storage-query-BOBmeDMD.d.mts +0 -1615
  1348. package/dist/storage-query-BOBmeDMD.d.mts.map +0 -1
  1349. package/dist/tar-K40edFMt.mjs +0 -449
  1350. package/dist/tar-K40edFMt.mjs.map +0 -1
  1351. package/dist/target-BOighEY1.mjs +0 -27
  1352. package/dist/target-BOighEY1.mjs.map +0 -1
  1353. package/dist/taxonomies-DQSywBvX.mjs +0 -697
  1354. package/dist/taxonomies-DQSywBvX.mjs.map +0 -1
  1355. package/dist/taxonomies-Dj5eaobC.mjs +0 -939
  1356. package/dist/taxonomies-Dj5eaobC.mjs.map +0 -1
  1357. package/dist/taxonomy-QrNmTfIZ.mjs +0 -550
  1358. package/dist/taxonomy-QrNmTfIZ.mjs.map +0 -1
  1359. package/dist/tokens-j5L0as2H.mjs +0 -171
  1360. package/dist/tokens-j5L0as2H.mjs.map +0 -1
  1361. package/dist/transfer-CYEw8Tu4.mjs +0 -8873
  1362. package/dist/transfer-CYEw8Tu4.mjs.map +0 -1
  1363. package/dist/transfer-DDX10hkD.mjs +0 -166
  1364. package/dist/transfer-DDX10hkD.mjs.map +0 -1
  1365. package/dist/transfer-download-BAqq6GJv.mjs +0 -33
  1366. package/dist/transfer-download-BAqq6GJv.mjs.map +0 -1
  1367. package/dist/transformations-De44wqV_.mjs +0 -196
  1368. package/dist/transformations-De44wqV_.mjs.map +0 -1
  1369. package/dist/transport-1QjUhCRO.d.mts +0 -42
  1370. package/dist/transport-1QjUhCRO.d.mts.map +0 -1
  1371. package/dist/transport-Ds5pVX7p.mjs +0 -136
  1372. package/dist/transport-Ds5pVX7p.mjs.map +0 -1
  1373. package/dist/trusted-proxy-d4Tk6biT.mjs +0 -51
  1374. package/dist/trusted-proxy-d4Tk6biT.mjs.map +0 -1
  1375. package/dist/turnstile-DaFLtyrs.mjs +0 -58
  1376. package/dist/turnstile-DaFLtyrs.mjs.map +0 -1
  1377. package/dist/types-B4-1P2DK.d.mts +0 -227
  1378. package/dist/types-B4-1P2DK.d.mts.map +0 -1
  1379. package/dist/types-BKXA0f-c.mjs +0 -16
  1380. package/dist/types-BKXA0f-c.mjs.map +0 -1
  1381. package/dist/types-BiHcpUoO.d.mts +0 -374
  1382. package/dist/types-BiHcpUoO.d.mts.map +0 -1
  1383. package/dist/types-BihhvkyN.d.mts +0 -85
  1384. package/dist/types-BihhvkyN.d.mts.map +0 -1
  1385. package/dist/types-Bq9Wohd7.d.mts +0 -363
  1386. package/dist/types-Bq9Wohd7.d.mts.map +0 -1
  1387. package/dist/types-C-Xp0CcN.mjs +0 -103
  1388. package/dist/types-C-Xp0CcN.mjs.map +0 -1
  1389. package/dist/types-C4P7F1Vq.d.mts +0 -1741
  1390. package/dist/types-C4P7F1Vq.d.mts.map +0 -1
  1391. package/dist/types-CGaqwHw4.mjs +0 -37
  1392. package/dist/types-CGaqwHw4.mjs.map +0 -1
  1393. package/dist/types-D4ECCE4X.mjs +0 -77
  1394. package/dist/types-D4ECCE4X.mjs.map +0 -1
  1395. package/dist/types-DcRJp0vS.d.mts +0 -125
  1396. package/dist/types-DcRJp0vS.d.mts.map +0 -1
  1397. package/dist/types-Ff85fTzU.d.mts +0 -289
  1398. package/dist/types-Ff85fTzU.d.mts.map +0 -1
  1399. package/dist/types-UKr5Sf4y.d.mts +0 -916
  1400. package/dist/types-UKr5Sf4y.d.mts.map +0 -1
  1401. package/dist/types-YpN8hZW7.d.mts +0 -204
  1402. package/dist/types-YpN8hZW7.d.mts.map +0 -1
  1403. package/dist/update-check-DrlsK-tt.mjs +0 -161
  1404. package/dist/update-check-DrlsK-tt.mjs.map +0 -1
  1405. package/dist/upload-attempts-D8CPPvRU.mjs +0 -32
  1406. package/dist/upload-attempts-D8CPPvRU.mjs.map +0 -1
  1407. package/dist/url-pattern-Di4Nn3vP.mjs +0 -41
  1408. package/dist/url-pattern-Di4Nn3vP.mjs.map +0 -1
  1409. package/dist/user-B-ZdGjhI.mjs +0 -171
  1410. package/dist/user-B-ZdGjhI.mjs.map +0 -1
  1411. package/dist/utils-D7wL3r6-.mjs +0 -437
  1412. package/dist/utils-D7wL3r6-.mjs.map +0 -1
  1413. package/dist/validate-BSZbSUDk.mjs +0 -524
  1414. package/dist/validate-BSZbSUDk.mjs.map +0 -1
  1415. package/dist/validate-Dfv0DpZi.d.mts +0 -468
  1416. package/dist/validate-Dfv0DpZi.d.mts.map +0 -1
  1417. package/dist/validation-DRyC_Vm5.mjs +0 -219
  1418. package/dist/validation-DRyC_Vm5.mjs.map +0 -1
  1419. package/dist/version-C4kz0PcO.mjs +0 -7
  1420. package/dist/version-C4kz0PcO.mjs.map +0 -1
  1421. package/dist/version-jhs2BRtl.mjs +0 -9
  1422. package/dist/version-jhs2BRtl.mjs.map +0 -1
  1423. package/dist/video-DReZ48Un.mjs +0 -54
  1424. package/dist/video-DReZ48Un.mjs.map +0 -1
  1425. package/dist/virtual-modules-D0e6VbEv.mjs +0 -516
  1426. package/dist/virtual-modules-D0e6VbEv.mjs.map +0 -1
  1427. package/dist/widgets-BkcMzKct.mjs +0 -121
  1428. package/dist/widgets-BkcMzKct.mjs.map +0 -1
  1429. package/dist/wxr-taxonomies-BxI0CbTg.mjs +0 -453
  1430. package/dist/wxr-taxonomies-BxI0CbTg.mjs.map +0 -1
  1431. package/dist/wxr-taxonomies-Dad33GJi.d.mts +0 -34
  1432. package/dist/wxr-taxonomies-Dad33GJi.d.mts.map +0 -1
  1433. package/dist/zod-generator-BQilAboC.mjs +0 -424
  1434. package/dist/zod-generator-BQilAboC.mjs.map +0 -1
  1435. /package/dist/{api-tokens-D2zgAIEt.mjs → api-tokens-CdP49zVF.mjs} +0 -0
  1436. /package/dist/{ssrf-BvNItdxk.mjs → ssrf-DM0E-D_8.mjs} +0 -0
@@ -5,94 +5,95 @@ import "../../../../../../../after-PcEvMY_6.mjs";
5
5
  import "../../../../../../../options-DhrI7eMv.mjs";
6
6
  import "../../../../../../../secrets-Cc_O3Kp-.mjs";
7
7
  import "../../../../../../../base64-BQBZwXCx.mjs";
8
- import "../../../../../../../content-CcHrqkgp.mjs";
8
+ import "../../../../../../../content-DQSRZTVw.mjs";
9
9
  import "../../../../../../../object-cache-Bo6DGaC9.mjs";
10
10
  import "../../../../../../../slugify-bu2-jKia.mjs";
11
11
  import "../../../../../../../request-cache-C4CIo5ad.mjs";
12
12
  import "../../../../../../../url-Dn3IStq8.mjs";
13
- import "../../../../../../../types-C-Xp0CcN.mjs";
14
- import "../../../../../../../revision-BWEH2qQB.mjs";
15
- import "../../../../../../../media-IT8hQleU.mjs";
16
- import "../../../../../../../user-B-ZdGjhI.mjs";
17
- import "../../../../../../../taxonomy-QrNmTfIZ.mjs";
18
- import "../../../../../../../comment-CWla6OHV.mjs";
19
- import "../../../../../../../context-CvhgHgSH.mjs";
20
- import "../../../../../../../menus-CvVYfsuk.mjs";
13
+ import "../../../../../../../types-D2NEXtgB.mjs";
14
+ import "../../../../../../../revision-BVp8S0e_.mjs";
15
+ import "../../../../../../../media-Bws9f18T.mjs";
16
+ import "../../../../../../../user-BlCTKVAm.mjs";
17
+ import "../../../../../../../taxonomy-C_C_LBAU.mjs";
18
+ import "../../../../../../../comment-UvIWDKcW.mjs";
19
+ import "../../../../../../../context-BYptmCN0.mjs";
20
+ import "../../../../../../../menus-BCVSSp1z.mjs";
21
21
  import "../../../../../../../resolve-D-kqyKns.mjs";
22
- import "../../../../../../../redirect-B39kTQ_0.mjs";
22
+ import "../../../../../../../redirect-DiS_3mA4.mjs";
23
23
  import "../../../../../../../byline-registry-dvt4N3xV.mjs";
24
- import "../../../../../../../field-defs-cache-zoow36nz.mjs";
25
- import "../../../../../../../byline-BmVKOQ8l.mjs";
26
- import "../../../../../../../staged-DboEaWsV.mjs";
24
+ import "../../../../../../../field-defs-cache-Dez5iWJJ.mjs";
25
+ import "../../../../../../../byline-BR1qhyiw.mjs";
26
+ import "../../../../../../../staged-CD_imitH.mjs";
27
27
  import "../../../../../../../dist-Cfu8mMBs.mjs";
28
28
  import "../../../../../../../enrich-Duu4sV3a.mjs";
29
29
  import "../../../../../../../entry-locks-DJAqVweV.mjs";
30
- import "../../../../../../../seo-CCnfPWAQ.mjs";
31
- import "../../../../../../../cache-x0z8t_m9.mjs";
32
- import "../../../../../../../artifacts-D-O-qj9C.mjs";
33
- import "../../../../../../../fts-manager-WJCN8uU6.mjs";
34
- import "../../../../../../../loader-CetY659y.mjs";
35
- import "../../../../../../../collection-slugs-cache-B2Gs9Jwx.mjs";
36
- import "../../../../../../../taxonomies-DQSywBvX.mjs";
37
- import { m as rollbackPluginUpdate, r as handleRegistryUpdate } from "../../../../../../../api-DBw_IWoi.mjs";
38
- import "../../../../../../../capture-triggers-C9JKoIdT.mjs";
39
- import "../../../../../../../activation-xomsCMJg.mjs";
40
- import "../../../../../../../media-usage-work-cgDYGvrt.mjs";
41
- import "../../../../../../../registry-DeZ27gVi.mjs";
42
- import "../../../../../../../hash-C4DFoJ7Z.mjs";
43
- import "../../../../../../../zod-generator-BQilAboC.mjs";
44
- import "../../../../../../../errors-CjtE5aWF.mjs";
45
- import "../../../../../../../canonical-BUcKRYpG.mjs";
46
- import "../../../../../../../digest-xJmyPv2r.mjs";
47
- import "../../../../../../../block-values-C4N_F2-G.mjs";
48
- import "../../../../../../../query-C_CWlifp.mjs";
49
- import "../../../../../../../schema-I74JwYte.mjs";
50
- import "../../../../../../../relations-DBB1bRJW.mjs";
51
- import "../../../../../../../dashboard-7_FYfafc.mjs";
52
- import { r as getRegistryConfigInput } from "../../../../../../../config-Bo4eOOdV.mjs";
53
- import { n as VERSION } from "../../../../../../../version-C4kz0PcO.mjs";
54
- import "../../../../../../../errors-hskQ0C8G.mjs";
55
- import "../../../../../../../update-check-DrlsK-tt.mjs";
56
- import "../../../../../../../media-C_z7sRuC.mjs";
57
- import "../../../../../../../media-folders-DtMt-vAA.mjs";
58
- import "../../../../../../../content-repair-havk1F0-.mjs";
59
- import "../../../../../../../settings-GaZ5sVgg.mjs";
60
- import "../../../../../../../site-settings-CDdT4mVm.mjs";
61
- import "../../../../../../../media-usage-DEPHZZ9X.mjs";
62
- import "../../../../../../../media-usage-activation-V2Siabtw.mjs";
63
- import "../../../../../../../media-usage-work-Cv1OE59F.mjs";
64
- import "../../../../../../../schema-BXIW-JHi.mjs";
65
- import "../../../../../../../block-types-DHnkzE6u.mjs";
66
- import "../../../../../../../seo-QCtJ1jjV.mjs";
67
- import { t as PluginStateRepository } from "../../../../../../../state-DCXDzjHq.mjs";
68
- import "../../../../../../../settings-B1jOxAIl.mjs";
69
- import "../../../../../../../sections-Ccq9ZgyD.mjs";
70
- import "../../../../../../../settings-Bc1IBl1t.mjs";
71
- import "../../../../../../../taxonomies-Dj5eaobC.mjs";
72
- import "../../../../../../../manifest-schema-BiFBPEsp.mjs";
73
- import "../../../../../../../marketplace-CUlenvZm.mjs";
74
- import "../../../../../../../types-CGaqwHw4.mjs";
75
- import "../../../../../../../artifact-fetch-DsRczRGG.mjs";
76
- import "../../../../../../../ssrf-LM_0wpGA.mjs";
77
- import "../../../../../../../authoritative-records-Dcs7l2H5.mjs";
78
- import { a as unwrapResult, r as handleError, t as apiError } from "../../../../../../../error-DxgQdaZ_.mjs";
79
- import { r as parseOptionalBody, t as isParseError } from "../../../../../../../parse-Cn5aSk1N.mjs";
80
- import "../../../../../../../redirects-DFT7Wr-e.mjs";
81
- import "../../../../../../../entry-lock-Cjz0h45X.mjs";
82
- import "../../../../../../../media-CRKsKlfK.mjs";
83
- import "../../../../../../../comments-BzmIKVb2.mjs";
84
- import "../../../../../../../byline-fields-Bze3ZdAw.mjs";
85
- import "../../../../../../../menus-D1HC8npj.mjs";
86
- import "../../../../../../../status-Dl85BK39.mjs";
87
- import "../../../../../../../redirects-C8G4BsfP.mjs";
88
- import "../../../../../../../ssrf-BvNItdxk.mjs";
89
- import "../../../../../../../credits-CygUrPOi.mjs";
90
- import "../../../../../../../cron-C6ytTOLw.mjs";
91
- import { i as checkSiteWriteFence } from "../../../../../../../fence-vc3aHgRA.mjs";
92
- import "../../../../../../../route-wire-CwbWB_6O.mjs";
93
- import { i as pluginPublicRouteAcknowledgementSchema } from "../../../../../../../routes-BfIxc7ft.mjs";
94
- import { i as requirePerm } from "../../../../../../../authorize-TdIGpRSE.mjs";
95
- import { n as finalizePluginUpdate } from "../../../../../../../install-finalization-DCFnFSHv.mjs";
30
+ import "../../../../../../../seo-VZYOEy8f.mjs";
31
+ import "../../../../../../../cache-CEU9wo_h.mjs";
32
+ import "../../../../../../../artifacts-htGyfCSt.mjs";
33
+ import "../../../../../../../fts-manager-Beg3e4bI.mjs";
34
+ import "../../../../../../../loader-CswroUbe.mjs";
35
+ import "../../../../../../../json-recordset-BUjxhr77.mjs";
36
+ import "../../../../../../../collection-slugs-cache-e09QeJQt.mjs";
37
+ import "../../../../../../../taxonomies-ChnU7Mc8.mjs";
38
+ import { m as rollbackPluginUpdate, r as handleRegistryUpdate } from "../../../../../../../api-D-7BNHoz.mjs";
39
+ import "../../../../../../../media-usage-work-CkLa5-nc.mjs";
40
+ import "../../../../../../../capture-triggers-CT6dK9zd.mjs";
41
+ import "../../../../../../../activation-Dim4YMM7.mjs";
42
+ import "../../../../../../../registry-TUVaid9Z.mjs";
43
+ import "../../../../../../../hash-BJaeek87.mjs";
44
+ import "../../../../../../../zod-generator-D0JKy94C.mjs";
45
+ import "../../../../../../../errors-B4f4It-2.mjs";
46
+ import "../../../../../../../canonical-BudtH-Fx.mjs";
47
+ import "../../../../../../../digest-DJ1tHCgy.mjs";
48
+ import "../../../../../../../block-values-gCX4HBSl.mjs";
49
+ import "../../../../../../../query-haKvLAWl.mjs";
50
+ import "../../../../../../../schema-C4OBuv6Z.mjs";
51
+ import "../../../../../../../relations-CA_QuMTU.mjs";
52
+ import "../../../../../../../dashboard-D0jcgBD7.mjs";
53
+ import { r as getRegistryConfigInput } from "../../../../../../../config-DBU6iUQB.mjs";
54
+ import { n as VERSION } from "../../../../../../../version-DHmGpcch.mjs";
55
+ import "../../../../../../../errors-BOYNdIo3.mjs";
56
+ import "../../../../../../../update-check-BxNg9T6N.mjs";
57
+ import "../../../../../../../media--dJRU6i2.mjs";
58
+ import "../../../../../../../media-folders-Dn3C16B8.mjs";
59
+ import "../../../../../../../content-repair-DNh5--x5.mjs";
60
+ import "../../../../../../../settings-Dd1uivmQ.mjs";
61
+ import "../../../../../../../site-settings-DRHfX7bq.mjs";
62
+ import "../../../../../../../media-usage-CF0WVcLO.mjs";
63
+ import "../../../../../../../media-usage-activation-C9HwVw5w.mjs";
64
+ import "../../../../../../../media-usage-work-m3AWTmmC.mjs";
65
+ import "../../../../../../../schema-DJRfvM_o.mjs";
66
+ import "../../../../../../../block-types-CYcG56JB.mjs";
67
+ import "../../../../../../../seo-ClB-dw9w.mjs";
68
+ import { t as PluginStateRepository } from "../../../../../../../state-CFbGZziM.mjs";
69
+ import "../../../../../../../settings-CWb84sDm.mjs";
70
+ import "../../../../../../../sections-BMy4JVUz.mjs";
71
+ import { a as unwrapResult, r as handleError, t as apiError } from "../../../../../../../error-CVWeIOku.mjs";
72
+ import { i as checkSiteWriteFence } from "../../../../../../../fence-C3MUitUN.mjs";
73
+ import "../../../../../../../settings-DS914jjE.mjs";
74
+ import "../../../../../../../taxonomies-Dd9JJv_a.mjs";
75
+ import "../../../../../../../manifest-schema-DNb4XmTS.mjs";
76
+ import "../../../../../../../marketplace-CqbgeIa7.mjs";
77
+ import "../../../../../../../types-sUHaH7lC.mjs";
78
+ import "../../../../../../../artifact-fetch-DIh7iyOV.mjs";
79
+ import "../../../../../../../ssrf-BcYjyM4M.mjs";
80
+ import "../../../../../../../authoritative-records-CQlB3JzE.mjs";
81
+ import { r as parseOptionalBody, t as isParseError } from "../../../../../../../parse-DgQ2NABT.mjs";
82
+ import "../../../../../../../redirects-BEVSRMa2.mjs";
83
+ import "../../../../../../../entry-lock-Df6-XhIu.mjs";
84
+ import "../../../../../../../media-1WC65OCB.mjs";
85
+ import "../../../../../../../comments-yiRFx3w5.mjs";
86
+ import "../../../../../../../byline-fields-BLXZnX7N.mjs";
87
+ import "../../../../../../../menus-BSzwObhV.mjs";
88
+ import "../../../../../../../status-BFNdxzKc.mjs";
89
+ import "../../../../../../../redirects-BHpy-VsZ.mjs";
90
+ import "../../../../../../../ssrf-DM0E-D_8.mjs";
91
+ import "../../../../../../../credits-B9iORdWB.mjs";
92
+ import "../../../../../../../cron-D7obTIfk.mjs";
93
+ import "../../../../../../../route-wire-Ca_HWCZ5.mjs";
94
+ import { i as pluginPublicRouteAcknowledgementSchema } from "../../../../../../../routes-BerZFrvV.mjs";
95
+ import { o as requirePerm } from "../../../../../../../authorize-DPFBGbE6.mjs";
96
+ import { n as finalizePluginUpdate } from "../../../../../../../install-finalization-3JX5qQEA.mjs";
96
97
  import { z } from "zod";
97
98
  import { hostEnvFromVersions } from "@emdash-cms/registry-client/env";
98
99
 
@@ -1 +1 @@
1
- {"version":3,"file":"update.mjs","names":[],"sources":["../../../../../../../../src/astro/routes/api/admin/plugins/registry/[id]/update.ts"],"sourcesContent":["/**\n * Registry plugin update endpoint (experimental)\n *\n * POST /_emdash/api/admin/plugins/registry/:id/update — Update a\n * registry-source plugin to a newer release. Mirrors the marketplace\n * update route's escalation gates: `CAPABILITY_ESCALATION` if the new\n * version declares new capabilities and `confirmCapabilityChanges` is\n * absent, and `ROUTE_VISIBILITY_ESCALATION` if it newly exposes public\n * routes and `acknowledgedPublicRoutes` does not exactly match them.\n */\n\nimport { hostEnvFromVersions } from \"@emdash-cms/registry-client/env\";\nimport type { APIRoute } from \"astro\";\nimport { z } from \"zod\";\n\nimport { requirePerm } from \"#api/authorize.js\";\nimport { apiError, handleError, unwrapResult } from \"#api/error.js\";\nimport { handleRegistryUpdate, rollbackPluginUpdate } from \"#api/index.js\";\nimport { isParseError, parseOptionalBody } from \"#api/parse.js\";\nimport { finalizePluginUpdate } from \"#plugins/install-finalization.js\";\nimport { pluginPublicRouteAcknowledgementSchema } from \"#plugins/routes.js\";\nimport { PluginStateRepository } from \"#plugins/state.js\";\n\nimport { getRegistryConfigInput } from \"../../../../../../../registry/config.js\";\nimport { checkSiteWriteFence } from \"../../../../../../../transfer/fence.js\";\nimport { VERSION } from \"../../../../../../../version.js\";\n\nexport const prerender = false;\n\nconst updateBodySchema = z.object({\n\t/** Optional explicit target version. Defaults to the aggregator's latest. */\n\tversion: z.string().min(1).max(64).optional(),\n\t/**\n\t * Set by the admin's capability re-consent dialog when the new version\n\t * declares capabilities the installed version did not. Without this,\n\t * the handler returns `CAPABILITY_ESCALATION` carrying the diff.\n\t */\n\tconfirmCapabilityChanges: z.boolean().optional(),\n\t/** Exact newly public route names reviewed by the admin. */\n\tacknowledgedPublicRoutes: pluginPublicRouteAcknowledgementSchema.optional(),\n\tconfirmMcpTools: z.boolean().optional(),\n\tacknowledgedProfileCid: z.string().min(1).max(256).optional(),\n\tacknowledgedReleaseCid: z.string().min(1).max(256).optional(),\n});\n\nexport const POST: APIRoute = async ({ params, request, locals }) => {\n\ttry {\n\t\tconst { emdash, user } = locals;\n\t\tconst { id } = params;\n\n\t\tif (!emdash?.db) {\n\t\t\treturn apiError(\"NOT_CONFIGURED\", \"EmDash is not initialized\", 500);\n\t\t}\n\n\t\tconst denied = requirePerm(user, \"plugins:manage\");\n\t\tif (denied) return denied;\n\n\t\tconst writeFence = await checkSiteWriteFence(emdash.db);\n\t\tif (writeFence) return writeFence;\n\n\t\tif (!id) {\n\t\t\treturn apiError(\"INVALID_REQUEST\", \"Plugin ID required\", 400);\n\t\t}\n\n\t\tconst body = await parseOptionalBody(request, updateBodySchema, {});\n\t\tif (isParseError(body)) return body;\n\t\tconst previousState = await new PluginStateRepository(emdash.db).get(id);\n\n\t\tconst result = await handleRegistryUpdate(\n\t\t\temdash.db,\n\t\t\temdash.storage,\n\t\t\temdash.getSandboxRunner(),\n\t\t\tgetRegistryConfigInput(emdash.config.registry),\n\t\t\tid,\n\t\t\t{\n\t\t\t\tversion: body.version,\n\t\t\t\tconfirmCapabilityChanges: body.confirmCapabilityChanges,\n\t\t\t\tacknowledgedPublicRoutes: body.acknowledgedPublicRoutes,\n\t\t\t\tconfirmMcpTools: body.confirmMcpTools,\n\t\t\t\tacknowledgedProfileCid: body.acknowledgedProfileCid,\n\t\t\t\tacknowledgedReleaseCid: body.acknowledgedReleaseCid,\n\t\t\t\thostEnv: hostEnvFromVersions(VERSION, emdash.config.astroVersion),\n\t\t\t},\n\t\t);\n\n\t\tif (!result.success) return unwrapResult(result);\n\t\tif (!previousState) return apiError(\"UPDATE_FAILED\", \"Failed to update plugin\", 500);\n\n\t\tawait finalizePluginUpdate({\n\t\t\tpluginId: id,\n\t\t\tsyncRuntime: () => emdash.syncRegistryPlugins(),\n\t\t\trunLifecycle: () => emdash.runPluginActivateLifecycle(id),\n\t\t\trollback: () =>\n\t\t\t\trollbackPluginUpdate(\n\t\t\t\t\temdash.db,\n\t\t\t\t\temdash.storage,\n\t\t\t\t\tpreviousState,\n\t\t\t\t\tresult.data.newVersion,\n\t\t\t\t\t\"registry\",\n\t\t\t\t),\n\t\t\trunRollbackLifecycle: () =>\n\t\t\t\tpreviousState.status === \"active\"\n\t\t\t\t\t? emdash.runPluginActivateLifecycle(id)\n\t\t\t\t\t: Promise.resolve(),\n\t\t});\n\n\t\treturn unwrapResult(result);\n\t} catch (error) {\n\t\tconsole.error(\"[registry-update] Unhandled error:\", error);\n\t\treturn handleError(error, \"Failed to update plugin from registry\", \"UPDATE_FAILED\");\n\t}\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BA,MAAa,YAAY;AAEzB,MAAM,mBAAmB,EAAE,OAAO;CAEjC,SAAS,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,UAAU;CAM7C,0BAA0B,EAAE,SAAS,CAAC,UAAU;CAEhD,0BAA0B,uCAAuC,UAAU;CAC3E,iBAAiB,EAAE,SAAS,CAAC,UAAU;CACvC,wBAAwB,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU;CAC7D,wBAAwB,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU;CAC7D,CAAC;AAEF,MAAa,OAAiB,OAAO,EAAE,QAAQ,SAAS,aAAa;AACpE,KAAI;EACH,MAAM,EAAE,QAAQ,SAAS;EACzB,MAAM,EAAE,OAAO;AAEf,MAAI,CAAC,QAAQ,GACZ,QAAO,SAAS,kBAAkB,6BAA6B,IAAI;EAGpE,MAAM,SAAS,YAAY,MAAM,iBAAiB;AAClD,MAAI,OAAQ,QAAO;EAEnB,MAAM,aAAa,MAAM,oBAAoB,OAAO,GAAG;AACvD,MAAI,WAAY,QAAO;AAEvB,MAAI,CAAC,GACJ,QAAO,SAAS,mBAAmB,sBAAsB,IAAI;EAG9D,MAAM,OAAO,MAAM,kBAAkB,SAAS,kBAAkB,EAAE,CAAC;AACnE,MAAI,aAAa,KAAK,CAAE,QAAO;EAC/B,MAAM,gBAAgB,MAAM,IAAI,sBAAsB,OAAO,GAAG,CAAC,IAAI,GAAG;EAExE,MAAM,SAAS,MAAM,qBACpB,OAAO,IACP,OAAO,SACP,OAAO,kBAAkB,EACzB,uBAAuB,OAAO,OAAO,SAAS,EAC9C,IACA;GACC,SAAS,KAAK;GACd,0BAA0B,KAAK;GAC/B,0BAA0B,KAAK;GAC/B,iBAAiB,KAAK;GACtB,wBAAwB,KAAK;GAC7B,wBAAwB,KAAK;GAC7B,SAAS,oBAAoB,SAAS,OAAO,OAAO,aAAa;GACjE,CACD;AAED,MAAI,CAAC,OAAO,QAAS,QAAO,aAAa,OAAO;AAChD,MAAI,CAAC,cAAe,QAAO,SAAS,iBAAiB,2BAA2B,IAAI;AAEpF,QAAM,qBAAqB;GAC1B,UAAU;GACV,mBAAmB,OAAO,qBAAqB;GAC/C,oBAAoB,OAAO,2BAA2B,GAAG;GACzD,gBACC,qBACC,OAAO,IACP,OAAO,SACP,eACA,OAAO,KAAK,YACZ,WACA;GACF,4BACC,cAAc,WAAW,WACtB,OAAO,2BAA2B,GAAG,GACrC,QAAQ,SAAS;GACrB,CAAC;AAEF,SAAO,aAAa,OAAO;UACnB,OAAO;AACf,UAAQ,MAAM,sCAAsC,MAAM;AAC1D,SAAO,YAAY,OAAO,yCAAyC,gBAAgB"}
1
+ {"version":3,"file":"update.mjs","names":[],"sources":["../../../../../../../../src/astro/routes/api/admin/plugins/registry/[id]/update.ts"],"sourcesContent":["/**\n * Registry plugin update endpoint (experimental)\n *\n * POST /_emdash/api/admin/plugins/registry/:id/update — Update a\n * registry-source plugin to a newer release. Mirrors the marketplace\n * update route's escalation gates: `CAPABILITY_ESCALATION` if the new\n * version declares new capabilities and `confirmCapabilityChanges` is\n * absent, and `ROUTE_VISIBILITY_ESCALATION` if it newly exposes public\n * routes and `acknowledgedPublicRoutes` does not exactly match them.\n */\n\nimport { hostEnvFromVersions } from \"@emdash-cms/registry-client/env\";\nimport type { APIRoute } from \"astro\";\nimport { z } from \"zod\";\n\nimport { requirePerm } from \"#api/authorize.js\";\nimport { apiError, handleError, unwrapResult } from \"#api/error.js\";\nimport { handleRegistryUpdate, rollbackPluginUpdate } from \"#api/index.js\";\nimport { isParseError, parseOptionalBody } from \"#api/parse.js\";\nimport { finalizePluginUpdate } from \"#plugins/install-finalization.js\";\nimport { pluginPublicRouteAcknowledgementSchema } from \"#plugins/routes.js\";\nimport { PluginStateRepository } from \"#plugins/state.js\";\n\nimport { getRegistryConfigInput } from \"../../../../../../../registry/config.js\";\nimport { checkSiteWriteFence } from \"../../../../../../../transfer/fence.js\";\nimport { VERSION } from \"../../../../../../../version.js\";\n\nexport const prerender = false;\n\nconst updateBodySchema = z.object({\n\t/** Optional explicit target version. Defaults to the aggregator's latest. */\n\tversion: z.string().min(1).max(64).optional(),\n\t/**\n\t * Set by the admin's capability re-consent dialog when the new version\n\t * declares capabilities the installed version did not. Without this,\n\t * the handler returns `CAPABILITY_ESCALATION` carrying the diff.\n\t */\n\tconfirmCapabilityChanges: z.boolean().optional(),\n\t/** Exact newly public route names reviewed by the admin. */\n\tacknowledgedPublicRoutes: pluginPublicRouteAcknowledgementSchema.optional(),\n\tconfirmMcpTools: z.boolean().optional(),\n\tacknowledgedProfileCid: z.string().min(1).max(256).optional(),\n\tacknowledgedReleaseCid: z.string().min(1).max(256).optional(),\n});\n\nexport const POST: APIRoute = async ({ params, request, locals }) => {\n\ttry {\n\t\tconst { emdash, user } = locals;\n\t\tconst { id } = params;\n\n\t\tif (!emdash?.db) {\n\t\t\treturn apiError(\"NOT_CONFIGURED\", \"EmDash is not initialized\", 500);\n\t\t}\n\n\t\tconst denied = requirePerm(user, \"plugins:manage\");\n\t\tif (denied) return denied;\n\n\t\tconst writeFence = await checkSiteWriteFence(emdash.db);\n\t\tif (writeFence) return writeFence;\n\n\t\tif (!id) {\n\t\t\treturn apiError(\"INVALID_REQUEST\", \"Plugin ID required\", 400);\n\t\t}\n\n\t\tconst body = await parseOptionalBody(request, updateBodySchema, {});\n\t\tif (isParseError(body)) return body;\n\t\tconst previousState = await new PluginStateRepository(emdash.db).get(id);\n\n\t\tconst result = await handleRegistryUpdate(\n\t\t\temdash.db,\n\t\t\temdash.storage,\n\t\t\temdash.getSandboxRunner(),\n\t\t\tgetRegistryConfigInput(emdash.config.registry),\n\t\t\tid,\n\t\t\t{\n\t\t\t\tversion: body.version,\n\t\t\t\tconfirmCapabilityChanges: body.confirmCapabilityChanges,\n\t\t\t\tacknowledgedPublicRoutes: body.acknowledgedPublicRoutes,\n\t\t\t\tconfirmMcpTools: body.confirmMcpTools,\n\t\t\t\tacknowledgedProfileCid: body.acknowledgedProfileCid,\n\t\t\t\tacknowledgedReleaseCid: body.acknowledgedReleaseCid,\n\t\t\t\thostEnv: hostEnvFromVersions(VERSION, emdash.config.astroVersion),\n\t\t\t},\n\t\t);\n\n\t\tif (!result.success) return unwrapResult(result);\n\t\tif (!previousState) return apiError(\"UPDATE_FAILED\", \"Failed to update plugin\", 500);\n\n\t\tawait finalizePluginUpdate({\n\t\t\tpluginId: id,\n\t\t\tsyncRuntime: () => emdash.syncRegistryPlugins(),\n\t\t\trunLifecycle: () => emdash.runPluginActivateLifecycle(id),\n\t\t\trollback: () =>\n\t\t\t\trollbackPluginUpdate(\n\t\t\t\t\temdash.db,\n\t\t\t\t\temdash.storage,\n\t\t\t\t\tpreviousState,\n\t\t\t\t\tresult.data.newVersion,\n\t\t\t\t\t\"registry\",\n\t\t\t\t),\n\t\t\trunRollbackLifecycle: () =>\n\t\t\t\tpreviousState.status === \"active\"\n\t\t\t\t\t? emdash.runPluginActivateLifecycle(id)\n\t\t\t\t\t: Promise.resolve(),\n\t\t});\n\n\t\treturn unwrapResult(result);\n\t} catch (error) {\n\t\tconsole.error(\"[registry-update] Unhandled error:\", error);\n\t\treturn handleError(error, \"Failed to update plugin from registry\", \"UPDATE_FAILED\");\n\t}\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BA,MAAa,YAAY;AAEzB,MAAM,mBAAmB,EAAE,OAAO;CAEjC,SAAS,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,UAAU;CAM7C,0BAA0B,EAAE,SAAS,CAAC,UAAU;CAEhD,0BAA0B,uCAAuC,UAAU;CAC3E,iBAAiB,EAAE,SAAS,CAAC,UAAU;CACvC,wBAAwB,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU;CAC7D,wBAAwB,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU;CAC7D,CAAC;AAEF,MAAa,OAAiB,OAAO,EAAE,QAAQ,SAAS,aAAa;AACpE,KAAI;EACH,MAAM,EAAE,QAAQ,SAAS;EACzB,MAAM,EAAE,OAAO;AAEf,MAAI,CAAC,QAAQ,GACZ,QAAO,SAAS,kBAAkB,6BAA6B,IAAI;EAGpE,MAAM,SAAS,YAAY,MAAM,iBAAiB;AAClD,MAAI,OAAQ,QAAO;EAEnB,MAAM,aAAa,MAAM,oBAAoB,OAAO,GAAG;AACvD,MAAI,WAAY,QAAO;AAEvB,MAAI,CAAC,GACJ,QAAO,SAAS,mBAAmB,sBAAsB,IAAI;EAG9D,MAAM,OAAO,MAAM,kBAAkB,SAAS,kBAAkB,EAAE,CAAC;AACnE,MAAI,aAAa,KAAK,CAAE,QAAO;EAC/B,MAAM,gBAAgB,MAAM,IAAI,sBAAsB,OAAO,GAAG,CAAC,IAAI,GAAG;EAExE,MAAM,SAAS,MAAM,qBACpB,OAAO,IACP,OAAO,SACP,OAAO,kBAAkB,EACzB,uBAAuB,OAAO,OAAO,SAAS,EAC9C,IACA;GACC,SAAS,KAAK;GACd,0BAA0B,KAAK;GAC/B,0BAA0B,KAAK;GAC/B,iBAAiB,KAAK;GACtB,wBAAwB,KAAK;GAC7B,wBAAwB,KAAK;GAC7B,SAAS,oBAAoB,SAAS,OAAO,OAAO,aAAa;GACjE,CACD;AAED,MAAI,CAAC,OAAO,QAAS,QAAO,aAAa,OAAO;AAChD,MAAI,CAAC,cAAe,QAAO,SAAS,iBAAiB,2BAA2B,IAAI;AAEpF,QAAM,qBAAqB;GAC1B,UAAU;GACV,mBAAmB,OAAO,qBAAqB;GAC/C,oBAAoB,OAAO,2BAA2B,GAAG;GACzD,gBACC,qBACC,OAAO,IACP,OAAO,SACP,eACA,OAAO,KAAK,YACZ,WACA;GACF,4BACC,cAAc,WAAW,WACtB,OAAO,2BAA2B,GAAG,GACrC,QAAQ,SAAS;GACrB,CAAC;AAEF,SAAO,aAAa,OAAO;UACnB,OAAO;AACf,UAAQ,MAAM,sCAAsC,MAAM;AAC1D,SAAO,YAAY,OAAO,yCAAyC,gBAAgB"}
@@ -1,13 +1,13 @@
1
1
  import "../../../../../../base64-BQBZwXCx.mjs";
2
- import "../../../../../../types-C-Xp0CcN.mjs";
3
- import "../../../../../../errors-CjtE5aWF.mjs";
4
- import { l as validateAggregatorUrl, n as coerceRegistryConfig, r as getRegistryConfigInput } from "../../../../../../config-Bo4eOOdV.mjs";
5
- import "../../../../../../errors-hskQ0C8G.mjs";
6
- import { n as multihashFromBlobCid, r as verifyMultihash } from "../../../../../../checksum-BYR5i7qe.mjs";
7
- import { a as fetchVerifiedResource, i as resolvePublisherPdsEndpoint, r as recordScopedImageCacheUrl, t as fetchRegistryArtifactUrl } from "../../../../../../artifact-fetch-DsRczRGG.mjs";
8
- import { i as resolveAndValidateExternalUrlTarget } from "../../../../../../ssrf-LM_0wpGA.mjs";
9
- import { t as apiError } from "../../../../../../error-DxgQdaZ_.mjs";
10
- import { i as requirePerm } from "../../../../../../authorize-TdIGpRSE.mjs";
2
+ import "../../../../../../types-D2NEXtgB.mjs";
3
+ import "../../../../../../errors-B4f4It-2.mjs";
4
+ import { l as validateAggregatorUrl, n as coerceRegistryConfig, r as getRegistryConfigInput } from "../../../../../../config-DBU6iUQB.mjs";
5
+ import "../../../../../../errors-BOYNdIo3.mjs";
6
+ import { t as apiError } from "../../../../../../error-CVWeIOku.mjs";
7
+ import { n as multihashFromBlobCid, r as verifyMultihash } from "../../../../../../checksum-CEqvfxGX.mjs";
8
+ import { a as fetchVerifiedResource, i as resolvePublisherPdsEndpoint, r as recordScopedImageCacheUrl, t as fetchRegistryArtifactUrl } from "../../../../../../artifact-fetch-DIh7iyOV.mjs";
9
+ import { i as resolveAndValidateExternalUrlTarget } from "../../../../../../ssrf-BcYjyM4M.mjs";
10
+ import { o as requirePerm } from "../../../../../../authorize-DPFBGbE6.mjs";
11
11
  import { evaluateRegistryReleaseWithdrawal } from "@emdash-cms/registry-client/withdrawal";
12
12
  import { NSID, RECORD_SCOPED_BLOB_CACHE_TYPE } from "@emdash-cms/registry-lexicons";
13
13
 
@@ -264,7 +264,7 @@ async function resolveArtifact(registryConfig, did, slug, version, cid, kind, in
264
264
  const rkey = `${slug}:${releaseView.version}`;
265
265
  const serviceEndpoint = releaseView.artifactCaches.map(recordScopedCacheEndpoint).find((value) => value !== null);
266
266
  if (serviceEndpoint) {
267
- const cacheUrl = recordScopedImageCacheUrl(serviceEndpoint, kind === "icon" ? "avatar" : kind === "banner" ? "banner" : "feed_thumbnail", {
267
+ const cacheUrl = recordScopedImageCacheUrl(serviceEndpoint, kind === "icon" ? "avatar" : kind === "banner" ? "banner" : "feed_fullsize", {
268
268
  did,
269
269
  collection: NSID.packageRelease,
270
270
  rkey,
@@ -1 +1 @@
1
- {"version":3,"file":"artifact.mjs","names":[],"sources":["../../../../../../../src/registry/artifact-checksum.ts","../../../../../../../src/astro/routes/api/admin/plugins/registry/artifact.ts"],"sourcesContent":["import { verifyMultihash } from \"@emdash-cms/registry-verification/checksum\";\n\nconst SHA256_HEX_PATTERN = /^[0-9a-fA-F]{64}$/;\n\nexport async function verifyRegistryArtifactChecksum(\n\tbytes: Uint8Array,\n\tchecksum: string,\n): Promise<boolean> {\n\tif (SHA256_HEX_PATTERN.test(checksum)) {\n\t\tconst digest = new Uint8Array(await crypto.subtle.digest(\"SHA-256\", Uint8Array.from(bytes)));\n\t\tconst actual = Array.from(digest, (byte) => byte.toString(16).padStart(2, \"0\")).join(\"\");\n\t\treturn actual === checksum.toLowerCase();\n\t}\n\treturn (await verifyMultihash(bytes, checksum)).success;\n}\n","/**\n * Registry artifact proxy\n *\n * GET /_emdash/api/admin/plugins/registry/artifact?did=&slug=&version=&kind=&index=\n *\n * Proxies an icon / screenshot / banner image referenced by a registry\n * release record so the admin UI can display it without cross-origin\n * requests to arbitrary publisher hosting.\n *\n * Trust model (CRITICAL): the proxy never accepts an artifact URL from the\n * client. The caller addresses an artifact by its coordinates\n * `(did, slug, version, kind, index)`; the server resolves the *declared*\n * artifact source from the validated release record fetched from the\n * configured aggregator. Blob-backed images resolve to the record-scoped\n * Cumulus deployment; URL artifacts retain the external fallback.\n *\n * The publisher-declared URL is still untrusted (an attacker who controls a\n * publisher record, or the aggregator, can point it anywhere), so the\n * resolved URL passes through the SSRF defences (`assertSafeArtifactUrl`,\n * re-validated on every redirect hop) before any fetch, and only allowlisted\n * image content types are served back.\n */\n\nimport type { Did } from \"@atcute/lexicons\";\nimport { evaluateRegistryReleaseWithdrawal } from \"@emdash-cms/registry-client/withdrawal\";\nimport { NSID, RECORD_SCOPED_BLOB_CACHE_TYPE } from \"@emdash-cms/registry-lexicons\";\nimport {\n\trecordScopedImageCacheUrl,\n\tresolvePublisherPdsEndpoint,\n\ttype ReleaseArtifactReference,\n} from \"@emdash-cms/registry-verification/artifact\";\nimport { multihashFromBlobCid } from \"@emdash-cms/registry-verification/checksum\";\nimport { fetchVerifiedResource } from \"@emdash-cms/registry-verification/fetch\";\nimport type { APIRoute } from \"astro\";\n\nimport { requirePerm } from \"#api/authorize.js\";\nimport { apiError } from \"#api/error.js\";\n\nimport { verifyRegistryArtifactChecksum } from \"../../../../../../registry/artifact-checksum.js\";\nimport { fetchRegistryArtifactUrl } from \"../../../../../../registry/artifact-fetch.js\";\nimport {\n\tcoerceRegistryConfig,\n\tgetRegistryConfigInput,\n\tvalidateAggregatorUrl,\n} from \"../../../../../../registry/config.js\";\nimport { resolveAndValidateExternalUrlTarget } from \"../../../../../../security/ssrf.js\";\n\nexport const prerender = false;\n\n/**\n * Image content types the proxy will pass through. Anything else is rejected.\n *\n * SVG is deliberately excluded: it is active content (an `<svg><script>`\n * executes when navigated to as a top-level document), and the publisher\n * supplies the bytes. Rather than serve it behind mitigations, we refuse it\n * end-to-end — the publish CLI rejects SVG artifacts too, so a conforming\n * release never references one.\n */\nconst ALLOWED_IMAGE_TYPES = new Set([\"image/png\", \"image/jpeg\", \"image/webp\"]);\n\n/** Artifact kinds the proxy can resolve. `screenshot` additionally needs `index`. */\nconst ALLOWED_KINDS = new Set([\"icon\", \"banner\", \"screenshot\"]);\n\n/** Loose DID shape (`did:method:id`); the aggregator lexicon is authoritative. */\nconst DID_PATTERN = /^did:[a-z]+:.+/;\n/** Slug grammar: ASCII letter then letters / digits / `-` / `_`. Mirrors the install route. */\nconst SLUG_PATTERN = /^[a-zA-Z][a-zA-Z0-9_-]*$/;\nconst CID_PATTERN = /^b[a-z2-7]+$/;\n/** Non-negative integer, for the screenshot index param. */\nconst INDEX_PATTERN = /^\\d+$/;\n\n/** Cap proxied images so a hostile host can't stream an unbounded body. */\nconst MAX_IMAGE_BYTES = 1024 * 1024;\n\n/** Redirect hops to follow, re-validating each target against SSRF rules. */\nconst MAX_REDIRECTS = 5;\n\n/** Wall-clock budget covering connect + headers + body for the artifact fetch. */\nconst FETCH_TIMEOUT_MS = 15_000;\n\n/** Per-aggregator-request timeout and overall budget for release resolution. */\nconst AGGREGATOR_REQUEST_TIMEOUT_MS = 15_000;\nconst AGGREGATOR_TOTAL_BUDGET_MS = 30_000;\n\n/** Bound the version search: 20 pages * 50 per page = 1000 releases worth. */\nconst MAX_LIST_PAGES = 20;\n\n/** Build a fetch that enforces a per-request and per-budget timeout. Mirrors the install handler. */\nfunction timedFetch(totalDeadline: number): typeof fetch {\n\treturn (input: Parameters<typeof fetch>[0], init?: Parameters<typeof fetch>[1]) => {\n\t\tconst now = Date.now();\n\t\tconst remaining = Math.max(0, totalDeadline - now);\n\t\tif (remaining === 0) {\n\t\t\treturn Promise.reject(new Error(\"Aggregator request budget exhausted\"));\n\t\t}\n\t\tconst timeout = Math.min(AGGREGATOR_REQUEST_TIMEOUT_MS, remaining);\n\t\tconst controller = new AbortController();\n\t\tconst timer = setTimeout(() => controller.abort(), timeout);\n\t\tconst callerSignal = init?.signal;\n\t\tif (callerSignal) {\n\t\t\tif (callerSignal.aborted) controller.abort(callerSignal.reason);\n\t\t\telse callerSignal.addEventListener(\"abort\", () => controller.abort(callerSignal.reason));\n\t\t}\n\t\treturn fetch(input, { ...init, signal: controller.signal }).finally(() => {\n\t\t\tclearTimeout(timer);\n\t\t});\n\t};\n}\n\n/**\n * Narrow one entry of a release's `artifacts` map to a usable image source.\n *\n * The embedded `release` record is lexicon-validated at the DiscoveryClient\n * boundary, but `artifacts` is an aggregator pass-through typed `unknown`, so\n * the entry's shape is not guaranteed.\n */\ntype DeclaredArtifact = ReleaseArtifactReference & { requiresAuth: boolean };\n\ninterface ResolvedArtifact {\n\tartifact: DeclaredArtifact;\n\trecord: {\n\t\tdid: string;\n\t\tcollection: string;\n\t\trkey: string;\n\t\tcid: string;\n\t};\n\timageCacheUrl?: URL;\n}\n\nfunction declaredArtifact(value: unknown): DeclaredArtifact | null {\n\tif (!value || typeof value !== \"object\") return null;\n\t// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- narrowed to non-null object above; fields checked below\n\tconst entry = value as Record<string, unknown>;\n\tconst url = entry.url;\n\tconst blob = entry.blob;\n\tconst checksum = entry.checksum;\n\tconst ref = objectProperty(blob, \"ref\");\n\tconst blobCid = objectProperty(ref, \"$link\");\n\tconst blobMimeType = objectProperty(blob, \"mimeType\");\n\tconst blobSize = objectProperty(blob, \"size\");\n\tconst hasUrl = typeof url === \"string\" && url.length > 0;\n\tconst hasBlob =\n\t\ttypeof blobCid === \"string\" &&\n\t\tblobCid.length > 0 &&\n\t\ttypeof blobMimeType === \"string\" &&\n\t\tNumber.isSafeInteger(blobSize) &&\n\t\tNumber(blobSize) >= 0;\n\tif ((!hasUrl && !hasBlob) || typeof checksum !== \"string\" || checksum.length === 0) {\n\t\treturn null;\n\t}\n\treturn {\n\t\t...(hasUrl ? { url } : {}),\n\t\t...(hasBlob\n\t\t\t? {\n\t\t\t\t\tblob: {\n\t\t\t\t\t\t$type: \"blob\" as const,\n\t\t\t\t\t\tref: { $link: blobCid },\n\t\t\t\t\t\tmimeType: blobMimeType,\n\t\t\t\t\t\tsize: Number(blobSize),\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t\tchecksum,\n\t\trequiresAuth: entry.requiresAuth === true,\n\t};\n}\n\n/**\n * Resolve the declared artifact source for `(kind, index)` from a release's\n * `artifacts` map. Returns `null` when the requested artifact isn't present\n * or doesn't carry a usable URL.\n */\nfunction resolveDeclaredArtifact(\n\tartifacts: unknown,\n\tkind: string,\n\tindex: number,\n): DeclaredArtifact | null {\n\tif (!artifacts || typeof artifacts !== \"object\") return null;\n\t// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- narrowed to non-null object above; each entry shape-narrowed by declaredArtifactUrl\n\tconst map = artifacts as Record<string, unknown>;\n\n\tif (kind === \"icon\") return declaredArtifact(map.icon);\n\tif (kind === \"banner\") return declaredArtifact(map.banner);\n\t// kind === \"screenshot\"\n\tconst screenshots = map.screenshots;\n\tif (!Array.isArray(screenshots)) return null;\n\tif (index < 0 || index >= screenshots.length) return null;\n\treturn declaredArtifact(screenshots[index]);\n}\n\nfunction objectProperty(value: unknown, key: string): unknown {\n\tif (!value || typeof value !== \"object\") return undefined;\n\treturn Object.getOwnPropertyDescriptor(value, key)?.value;\n}\n\nexport const GET: APIRoute = async ({ url, locals }) => {\n\tconst { emdash, user } = locals;\n\n\tif (!emdash?.db) {\n\t\treturn apiError(\"NOT_CONFIGURED\", \"EmDash is not initialized\", 500);\n\t}\n\n\tconst denied = requirePerm(user, \"plugins:read\");\n\tif (denied) return denied;\n\n\tconst did = url.searchParams.get(\"did\");\n\tconst slug = url.searchParams.get(\"slug\");\n\tconst cid = url.searchParams.get(\"cid\");\n\tconst kind = url.searchParams.get(\"kind\");\n\tconst versionParam = url.searchParams.get(\"version\");\n\tconst indexParam = url.searchParams.get(\"index\");\n\n\tif (!did || !slug || !cid || !kind) {\n\t\treturn apiError(\"INVALID_REQUEST\", \"Missing did, slug, cid, or kind\", 400);\n\t}\n\tif (did.length > 256 || !DID_PATTERN.test(did)) {\n\t\treturn apiError(\"INVALID_REQUEST\", \"Invalid did\", 400);\n\t}\n\tif (slug.length > 64 || !SLUG_PATTERN.test(slug)) {\n\t\treturn apiError(\"INVALID_REQUEST\", \"Invalid slug\", 400);\n\t}\n\tif (cid.length > 256 || !CID_PATTERN.test(cid)) {\n\t\treturn apiError(\"INVALID_REQUEST\", \"Invalid release CID\", 400);\n\t}\n\tif (!ALLOWED_KINDS.has(kind)) {\n\t\treturn apiError(\"INVALID_REQUEST\", \"Invalid kind\", 400);\n\t}\n\n\tlet index = 0;\n\tif (kind === \"screenshot\") {\n\t\tif (indexParam === null) {\n\t\t\treturn apiError(\"INVALID_REQUEST\", \"Missing index for screenshot\", 400);\n\t\t}\n\t\tif (!INDEX_PATTERN.test(indexParam)) {\n\t\t\treturn apiError(\"INVALID_REQUEST\", \"Invalid index\", 400);\n\t\t}\n\t\tindex = Number(indexParam);\n\t\tif (!Number.isSafeInteger(index)) {\n\t\t\treturn apiError(\"INVALID_REQUEST\", \"Invalid index\", 400);\n\t\t}\n\t}\n\n\tlet version: string | undefined;\n\tif (versionParam !== null && versionParam.length > 0) {\n\t\tif (versionParam.length > 64) {\n\t\t\treturn apiError(\"INVALID_REQUEST\", \"Invalid version\", 400);\n\t\t}\n\t\tversion = versionParam;\n\t}\n\n\tconst registryConfig = coerceRegistryConfig(getRegistryConfigInput(emdash.config.registry));\n\tif (!registryConfig) {\n\t\treturn apiError(\"REGISTRY_NOT_CONFIGURED\", \"Registry is not configured\", 400);\n\t}\n\ttry {\n\t\tvalidateAggregatorUrl(registryConfig.aggregatorUrl);\n\t} catch {\n\t\treturn apiError(\"REGISTRY_NOT_CONFIGURED\", \"Registry aggregator URL is invalid\", 500);\n\t}\n\n\t// Resolve the publisher-declared artifact URL from the release record.\n\tlet resolvedArtifact: ResolvedArtifact;\n\ttry {\n\t\tconst resolved = await resolveArtifact(registryConfig, did, slug, version, cid, kind, index);\n\t\tif (resolved === null) {\n\t\t\treturn apiError(\"ARTIFACT_NOT_FOUND\", \"Artifact not found\", 404);\n\t\t}\n\t\tresolvedArtifact = resolved;\n\t} catch {\n\t\treturn apiError(\"ARTIFACT_RESOLVE_FAILED\", \"Failed to resolve artifact\", 502);\n\t}\n\tconst controller = new AbortController();\n\tconst timer = setTimeout(() => controller.abort(), FETCH_TIMEOUT_MS);\n\ttry {\n\t\tconst fetchOptions = proxyFetchOptions(controller.signal);\n\t\tlet bytes: Uint8Array | undefined;\n\t\tlet headers: Headers | undefined;\n\t\tlet checksumValid: boolean | undefined;\n\t\tif (resolvedArtifact.imageCacheUrl) {\n\t\t\tconst transformed = await fetchVerifiedResource(resolvedArtifact.imageCacheUrl, fetchOptions);\n\t\t\tif (transformed.success) {\n\t\t\t\tbytes = transformed.value.bytes;\n\t\t\t\theaders = transformed.value.headers;\n\t\t\t}\n\t\t}\n\t\tif (!bytes || !headers) {\n\t\t\tconst raw = await fetchRawArtifact(resolvedArtifact, fetchOptions);\n\t\t\tif (!raw.success) return artifactFetchError(raw.code);\n\t\t\tbytes = raw.bytes;\n\t\t\theaders = raw.headers;\n\t\t\tchecksumValid = raw.checksumValid;\n\t\t}\n\n\t\t// Content-Type allowlist: only image types are proxied. A non-image\n\t\t// (HTML error page, JSON, octet-stream) is rejected so the admin\n\t\t// never renders publisher-controlled markup from the EmDash origin.\n\t\tconst rawType = headers.get(\"content-type\") ?? \"\";\n\t\tconst contentType = rawType.split(\";\", 1)[0]!.trim().toLowerCase();\n\t\tif (!ALLOWED_IMAGE_TYPES.has(contentType)) {\n\t\t\treturn apiError(\"ARTIFACT_NOT_IMAGE\", \"Artifact is not an allowed image type\", 415);\n\t\t}\n\n\t\tconst declaredLength = headers.get(\"content-length\");\n\t\tif (declaredLength) {\n\t\t\tconst declared = Number(declaredLength);\n\t\t\tif (Number.isFinite(declared) && declared > MAX_IMAGE_BYTES) {\n\t\t\t\treturn apiError(\"ARTIFACT_TOO_LARGE\", \"Artifact exceeds size limit\", 413);\n\t\t\t}\n\t\t}\n\t\tif (checksumValid === false) {\n\t\t\treturn artifactFetchError(\"CHECKSUM_MISMATCH\");\n\t\t}\n\n\t\t// Only the allowlisted Content-Type is forwarded — never copy other\n\t\t// upstream headers. `private, no-store` keeps publisher images out of\n\t\t// shared caches in the authenticated admin origin.\n\t\t//\n\t\t// SVG is not in the allowlist, so active-content bytes never reach\n\t\t// here. `Content-Disposition: attachment`, the sandbox CSP, and\n\t\t// `nosniff` remain as defence-in-depth: they force a download and\n\t\t// neutralise script/plugins for any image type if a client navigates\n\t\t// directly to the proxy URL.\n\t\treturn new Response(bytes, {\n\t\t\theaders: {\n\t\t\t\t\"Content-Type\": contentType,\n\t\t\t\t\"Cache-Control\": \"private, no-store\",\n\t\t\t\t\"X-Content-Type-Options\": \"nosniff\",\n\t\t\t\t\"Content-Disposition\": \"attachment\",\n\t\t\t\t\"Content-Security-Policy\": \"default-src 'none'; sandbox\",\n\t\t\t},\n\t\t});\n\t} catch {\n\t\treturn apiError(\"ARTIFACT_FETCH_FAILED\", \"Failed to fetch artifact\", 502);\n\t} finally {\n\t\tclearTimeout(timer);\n\t}\n};\n\n/**\n * Resolve the declared artifact URL for `(did, slug, version, kind, index)`\n * from the aggregator's release record. Mirrors the install handler's release\n * lookup. Returns `null` when the package/release/artifact isn't found.\n *\n * Self-contained to this route: the install/update handlers are intentionally\n * left untouched, so a small amount of resolution-pattern duplication is\n * accepted here.\n */\nasync function resolveArtifact(\n\tregistryConfig: { aggregatorUrl: string; acceptLabelers?: string },\n\tdid: string,\n\tslug: string,\n\tversion: string | undefined,\n\tcid: string,\n\tkind: string,\n\tindex: number,\n): Promise<ResolvedArtifact | null> {\n\t// Lazy-load the discovery client so the `@atcute/client` dependency only\n\t// loads when the registry path is exercised.\n\tconst { DiscoveryClient, registryLabelerPolicy } =\n\t\tawait import(\"@emdash-cms/registry-client/discovery\");\n\n\tconst aggregatorDeadline = Date.now() + AGGREGATOR_TOTAL_BUDGET_MS;\n\tconst discovery = new DiscoveryClient({\n\t\taggregatorUrl: registryConfig.aggregatorUrl,\n\t\tacceptLabelers: registryConfig.acceptLabelers,\n\t\tlabelerPolicy: registryLabelerPolicy(registryConfig.acceptLabelers),\n\t\tfetch: timedFetch(aggregatorDeadline),\n\t});\n\n\t// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- DID shape validated by the route before this call\n\tconst publisherDid = did as Did;\n\n\tconst releaseView = await (async () => {\n\t\tif (!version) {\n\t\t\treturn discovery.getLatestRelease({ did: publisherDid, package: slug });\n\t\t}\n\t\tlet cursor: string | undefined;\n\t\tconst seenCursors = new Set<string>();\n\t\tfor (let page = 0; page < MAX_LIST_PAGES; page++) {\n\t\t\tif (cursor !== undefined) {\n\t\t\t\tif (seenCursors.has(cursor)) break;\n\t\t\t\tseenCursors.add(cursor);\n\t\t\t}\n\t\t\tconst result = await discovery.listReleases({\n\t\t\t\tdid: publisherDid,\n\t\t\t\tpackage: slug,\n\t\t\t\tcursor,\n\t\t\t\tlimit: 50,\n\t\t\t});\n\t\t\tfor (const r of result.releases) {\n\t\t\t\tif (r.version === version) return r;\n\t\t\t}\n\t\t\tif (!result.cursor) break;\n\t\t\tcursor = result.cursor;\n\t\t}\n\t\treturn undefined;\n\t})();\n\n\tif (\n\t\t!releaseView?.release ||\n\t\treleaseView.cid !== cid ||\n\t\treleaseView.did !== publisherDid ||\n\t\treleaseView.package !== slug ||\n\t\t(version !== undefined && releaseView.version !== version) ||\n\t\treleaseView.release.package !== slug ||\n\t\treleaseView.release.version !== releaseView.version\n\t) {\n\t\treturn null;\n\t}\n\tif (evaluateRegistryReleaseWithdrawal(releaseView, discovery.labelerPolicy).withdrawn) {\n\t\treturn null;\n\t}\n\n\tconst descriptor = resolveDeclaredArtifact(releaseView.release.artifacts, kind, index);\n\tif (!descriptor || descriptor.requiresAuth || releaseView.release.auth !== undefined) return null;\n\tconst blobCid = descriptor.blob?.ref.$link;\n\tlet imageCacheUrl: URL | undefined;\n\tif (blobCid) {\n\t\tconst expected = multihashFromBlobCid(blobCid);\n\t\tif (!expected.success || expected.value !== descriptor.checksum) return null;\n\t\tconst rkey = `${slug}:${releaseView.version}`;\n\t\tconst serviceEndpoint = releaseView.artifactCaches\n\t\t\t.map(recordScopedCacheEndpoint)\n\t\t\t.find((value) => value !== null);\n\t\tif (serviceEndpoint) {\n\t\t\tconst preset = kind === \"icon\" ? \"avatar\" : kind === \"banner\" ? \"banner\" : \"feed_thumbnail\";\n\t\t\tconst cacheUrl = recordScopedImageCacheUrl(\n\t\t\t\tserviceEndpoint,\n\t\t\t\tpreset,\n\t\t\t\t{\n\t\t\t\t\tdid,\n\t\t\t\t\tcollection: NSID.packageRelease,\n\t\t\t\t\trkey,\n\t\t\t\t\tcid: releaseView.cid,\n\t\t\t\t},\n\t\t\t\tblobCid,\n\t\t\t);\n\t\t\tif (!cacheUrl.success) return null;\n\t\t\timageCacheUrl = cacheUrl.value;\n\t\t}\n\t}\n\treturn {\n\t\tartifact: descriptor,\n\t\trecord: {\n\t\t\tdid,\n\t\t\tcollection: NSID.packageRelease,\n\t\t\trkey: `${slug}:${releaseView.version}`,\n\t\t\tcid: releaseView.cid,\n\t\t},\n\t\t...(imageCacheUrl ? { imageCacheUrl } : {}),\n\t};\n}\n\nfunction recordScopedCacheEndpoint(value: unknown): string | null {\n\tif (objectProperty(value, \"$type\") !== RECORD_SCOPED_BLOB_CACHE_TYPE) return null;\n\tconst endpoint = objectProperty(value, \"serviceEndpoint\");\n\treturn typeof endpoint === \"string\" ? endpoint : null;\n}\n\n/** Build bounded, SSRF-validated fetch options for cache, PDS, and URL sources. */\nfunction proxyFetchOptions(signal: AbortSignal) {\n\treturn {\n\t\tfetch: async (url: URL, init: RequestInit) =>\n\t\t\tfetchRegistryArtifactUrl(url.href, {\n\t\t\t\tsignal: init.signal instanceof AbortSignal ? init.signal : signal,\n\t\t\t\tmaxResponseBytes: MAX_IMAGE_BYTES,\n\t\t\t}),\n\t\tresolveHostname: async (hostname: string) =>\n\t\t\t(await resolveAndValidateExternalUrlTarget(`https://${hostname}/`)).addresses,\n\t\tallowHttpLocalhost: import.meta.env.DEV,\n\t\tmaxBytes: MAX_IMAGE_BYTES,\n\t\tmaxRedirects: MAX_REDIRECTS,\n\t\ttotalTimeoutMs: FETCH_TIMEOUT_MS,\n\t};\n}\n\nasync function fetchRawArtifact(\n\tresolved: ResolvedArtifact,\n\toptions: ReturnType<typeof proxyFetchOptions>,\n): Promise<\n\t| { success: true; bytes: Uint8Array; headers: Headers; checksumValid: boolean }\n\t| { success: false; code: string }\n> {\n\tconst urls: URL[] = [];\n\tconst blobCid = resolved.artifact.blob?.ref.$link;\n\tlet lastCode = \"FETCH_FAILED\";\n\tlet checksumMismatch: { bytes: Uint8Array; headers: Headers } | undefined;\n\tif (blobCid) {\n\t\tconst pds = await resolvePublisherPdsEndpoint(resolved.record.did, options);\n\t\tif (pds.success) {\n\t\t\tconst url = new URL(\"/xrpc/com.atproto.sync.getBlob\", pds.value);\n\t\t\turl.searchParams.set(\"did\", resolved.record.did);\n\t\t\turl.searchParams.set(\"cid\", blobCid);\n\t\t\turls.push(url);\n\t\t} else {\n\t\t\tlastCode = pds.error.code;\n\t\t}\n\t}\n\tif (resolved.artifact.url) urls.push(new URL(resolved.artifact.url));\n\n\tfor (const url of urls) {\n\t\tconst fetched = await fetchVerifiedResource(url, options);\n\t\tif (!fetched.success) {\n\t\t\tlastCode = fetched.error.code;\n\t\t\tcontinue;\n\t\t}\n\t\tif (!(await verifyRegistryArtifactChecksum(fetched.value.bytes, resolved.artifact.checksum))) {\n\t\t\tlastCode = \"CHECKSUM_MISMATCH\";\n\t\t\tchecksumMismatch = { bytes: fetched.value.bytes, headers: fetched.value.headers };\n\t\t\tcontinue;\n\t\t}\n\t\treturn {\n\t\t\tsuccess: true,\n\t\t\tbytes: fetched.value.bytes,\n\t\t\theaders: fetched.value.headers,\n\t\t\tchecksumValid: true,\n\t\t};\n\t}\n\tif (checksumMismatch) return { success: true, ...checksumMismatch, checksumValid: false };\n\treturn { success: false, code: lastCode };\n}\n\nfunction artifactFetchError(code: string): Response {\n\tif (code === \"CHECKSUM_MISMATCH\") {\n\t\treturn apiError(\n\t\t\t\"ARTIFACT_CHECKSUM_MISMATCH\",\n\t\t\t\"Artifact bytes do not match the approved release record\",\n\t\t\t502,\n\t\t);\n\t}\n\tif (code === \"RESOURCE_SIZE_EXCEEDED\") {\n\t\treturn apiError(\"ARTIFACT_TOO_LARGE\", \"Artifact exceeds size limit\", 413);\n\t}\n\tif (code === \"HOST_REJECTED\" || code === \"INVALID_URL\") {\n\t\treturn apiError(\"ARTIFACT_URL_REJECTED\", \"Artifact URL is not allowed\", 400);\n\t}\n\treturn apiError(\"ARTIFACT_FETCH_FAILED\", \"Failed to fetch artifact\", 502);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"artifact.mjs","names":[],"sources":["../../../../../../../src/registry/artifact-checksum.ts","../../../../../../../src/astro/routes/api/admin/plugins/registry/artifact.ts"],"sourcesContent":["import { verifyMultihash } from \"@emdash-cms/registry-verification/checksum\";\n\nconst SHA256_HEX_PATTERN = /^[0-9a-fA-F]{64}$/;\n\nexport async function verifyRegistryArtifactChecksum(\n\tbytes: Uint8Array,\n\tchecksum: string,\n): Promise<boolean> {\n\tif (SHA256_HEX_PATTERN.test(checksum)) {\n\t\tconst digest = new Uint8Array(await crypto.subtle.digest(\"SHA-256\", Uint8Array.from(bytes)));\n\t\tconst actual = Array.from(digest, (byte) => byte.toString(16).padStart(2, \"0\")).join(\"\");\n\t\treturn actual === checksum.toLowerCase();\n\t}\n\treturn (await verifyMultihash(bytes, checksum)).success;\n}\n","/**\n * Registry artifact proxy\n *\n * GET /_emdash/api/admin/plugins/registry/artifact?did=&slug=&version=&kind=&index=\n *\n * Proxies an icon / screenshot / banner image referenced by a registry\n * release record so the admin UI can display it without cross-origin\n * requests to arbitrary publisher hosting.\n *\n * Trust model (CRITICAL): the proxy never accepts an artifact URL from the\n * client. The caller addresses an artifact by its coordinates\n * `(did, slug, version, kind, index)`; the server resolves the *declared*\n * artifact source from the validated release record fetched from the\n * configured aggregator. Blob-backed images resolve to the record-scoped\n * Cumulus deployment; URL artifacts retain the external fallback.\n *\n * The publisher-declared URL is still untrusted (an attacker who controls a\n * publisher record, or the aggregator, can point it anywhere), so the\n * resolved URL passes through the SSRF defences (`assertSafeArtifactUrl`,\n * re-validated on every redirect hop) before any fetch, and only allowlisted\n * image content types are served back.\n */\n\nimport type { Did } from \"@atcute/lexicons\";\nimport { evaluateRegistryReleaseWithdrawal } from \"@emdash-cms/registry-client/withdrawal\";\nimport { NSID, RECORD_SCOPED_BLOB_CACHE_TYPE } from \"@emdash-cms/registry-lexicons\";\nimport {\n\trecordScopedImageCacheUrl,\n\tresolvePublisherPdsEndpoint,\n\ttype ReleaseArtifactReference,\n} from \"@emdash-cms/registry-verification/artifact\";\nimport { multihashFromBlobCid } from \"@emdash-cms/registry-verification/checksum\";\nimport { fetchVerifiedResource } from \"@emdash-cms/registry-verification/fetch\";\nimport type { APIRoute } from \"astro\";\n\nimport { requirePerm } from \"#api/authorize.js\";\nimport { apiError } from \"#api/error.js\";\n\nimport { verifyRegistryArtifactChecksum } from \"../../../../../../registry/artifact-checksum.js\";\nimport { fetchRegistryArtifactUrl } from \"../../../../../../registry/artifact-fetch.js\";\nimport {\n\tcoerceRegistryConfig,\n\tgetRegistryConfigInput,\n\tvalidateAggregatorUrl,\n} from \"../../../../../../registry/config.js\";\nimport { resolveAndValidateExternalUrlTarget } from \"../../../../../../security/ssrf.js\";\n\nexport const prerender = false;\n\n/**\n * Image content types the proxy will pass through. Anything else is rejected.\n *\n * SVG is deliberately excluded: it is active content (an `<svg><script>`\n * executes when navigated to as a top-level document), and the publisher\n * supplies the bytes. Rather than serve it behind mitigations, we refuse it\n * end-to-end — the publish CLI rejects SVG artifacts too, so a conforming\n * release never references one.\n */\nconst ALLOWED_IMAGE_TYPES = new Set([\"image/png\", \"image/jpeg\", \"image/webp\"]);\n\n/** Artifact kinds the proxy can resolve. `screenshot` additionally needs `index`. */\nconst ALLOWED_KINDS = new Set([\"icon\", \"banner\", \"screenshot\"]);\n\n/** Loose DID shape (`did:method:id`); the aggregator lexicon is authoritative. */\nconst DID_PATTERN = /^did:[a-z]+:.+/;\n/** Slug grammar: ASCII letter then letters / digits / `-` / `_`. Mirrors the install route. */\nconst SLUG_PATTERN = /^[a-zA-Z][a-zA-Z0-9_-]*$/;\nconst CID_PATTERN = /^b[a-z2-7]+$/;\n/** Non-negative integer, for the screenshot index param. */\nconst INDEX_PATTERN = /^\\d+$/;\n\n/** Cap proxied images so a hostile host can't stream an unbounded body. */\nconst MAX_IMAGE_BYTES = 1024 * 1024;\n\n/** Redirect hops to follow, re-validating each target against SSRF rules. */\nconst MAX_REDIRECTS = 5;\n\n/** Wall-clock budget covering connect + headers + body for the artifact fetch. */\nconst FETCH_TIMEOUT_MS = 15_000;\n\n/** Per-aggregator-request timeout and overall budget for release resolution. */\nconst AGGREGATOR_REQUEST_TIMEOUT_MS = 15_000;\nconst AGGREGATOR_TOTAL_BUDGET_MS = 30_000;\n\n/** Bound the version search: 20 pages * 50 per page = 1000 releases worth. */\nconst MAX_LIST_PAGES = 20;\n\n/** Build a fetch that enforces a per-request and per-budget timeout. Mirrors the install handler. */\nfunction timedFetch(totalDeadline: number): typeof fetch {\n\treturn (input: Parameters<typeof fetch>[0], init?: Parameters<typeof fetch>[1]) => {\n\t\tconst now = Date.now();\n\t\tconst remaining = Math.max(0, totalDeadline - now);\n\t\tif (remaining === 0) {\n\t\t\treturn Promise.reject(new Error(\"Aggregator request budget exhausted\"));\n\t\t}\n\t\tconst timeout = Math.min(AGGREGATOR_REQUEST_TIMEOUT_MS, remaining);\n\t\tconst controller = new AbortController();\n\t\tconst timer = setTimeout(() => controller.abort(), timeout);\n\t\tconst callerSignal = init?.signal;\n\t\tif (callerSignal) {\n\t\t\tif (callerSignal.aborted) controller.abort(callerSignal.reason);\n\t\t\telse callerSignal.addEventListener(\"abort\", () => controller.abort(callerSignal.reason));\n\t\t}\n\t\treturn fetch(input, { ...init, signal: controller.signal }).finally(() => {\n\t\t\tclearTimeout(timer);\n\t\t});\n\t};\n}\n\n/**\n * Narrow one entry of a release's `artifacts` map to a usable image source.\n *\n * The embedded `release` record is lexicon-validated at the DiscoveryClient\n * boundary, but `artifacts` is an aggregator pass-through typed `unknown`, so\n * the entry's shape is not guaranteed.\n */\ntype DeclaredArtifact = ReleaseArtifactReference & { requiresAuth: boolean };\n\ninterface ResolvedArtifact {\n\tartifact: DeclaredArtifact;\n\trecord: {\n\t\tdid: string;\n\t\tcollection: string;\n\t\trkey: string;\n\t\tcid: string;\n\t};\n\timageCacheUrl?: URL;\n}\n\nfunction declaredArtifact(value: unknown): DeclaredArtifact | null {\n\tif (!value || typeof value !== \"object\") return null;\n\t// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- narrowed to non-null object above; fields checked below\n\tconst entry = value as Record<string, unknown>;\n\tconst url = entry.url;\n\tconst blob = entry.blob;\n\tconst checksum = entry.checksum;\n\tconst ref = objectProperty(blob, \"ref\");\n\tconst blobCid = objectProperty(ref, \"$link\");\n\tconst blobMimeType = objectProperty(blob, \"mimeType\");\n\tconst blobSize = objectProperty(blob, \"size\");\n\tconst hasUrl = typeof url === \"string\" && url.length > 0;\n\tconst hasBlob =\n\t\ttypeof blobCid === \"string\" &&\n\t\tblobCid.length > 0 &&\n\t\ttypeof blobMimeType === \"string\" &&\n\t\tNumber.isSafeInteger(blobSize) &&\n\t\tNumber(blobSize) >= 0;\n\tif ((!hasUrl && !hasBlob) || typeof checksum !== \"string\" || checksum.length === 0) {\n\t\treturn null;\n\t}\n\treturn {\n\t\t...(hasUrl ? { url } : {}),\n\t\t...(hasBlob\n\t\t\t? {\n\t\t\t\t\tblob: {\n\t\t\t\t\t\t$type: \"blob\" as const,\n\t\t\t\t\t\tref: { $link: blobCid },\n\t\t\t\t\t\tmimeType: blobMimeType,\n\t\t\t\t\t\tsize: Number(blobSize),\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t\tchecksum,\n\t\trequiresAuth: entry.requiresAuth === true,\n\t};\n}\n\n/**\n * Resolve the declared artifact source for `(kind, index)` from a release's\n * `artifacts` map. Returns `null` when the requested artifact isn't present\n * or doesn't carry a usable URL.\n */\nfunction resolveDeclaredArtifact(\n\tartifacts: unknown,\n\tkind: string,\n\tindex: number,\n): DeclaredArtifact | null {\n\tif (!artifacts || typeof artifacts !== \"object\") return null;\n\t// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- narrowed to non-null object above; each entry shape-narrowed by declaredArtifactUrl\n\tconst map = artifacts as Record<string, unknown>;\n\n\tif (kind === \"icon\") return declaredArtifact(map.icon);\n\tif (kind === \"banner\") return declaredArtifact(map.banner);\n\t// kind === \"screenshot\"\n\tconst screenshots = map.screenshots;\n\tif (!Array.isArray(screenshots)) return null;\n\tif (index < 0 || index >= screenshots.length) return null;\n\treturn declaredArtifact(screenshots[index]);\n}\n\nfunction objectProperty(value: unknown, key: string): unknown {\n\tif (!value || typeof value !== \"object\") return undefined;\n\treturn Object.getOwnPropertyDescriptor(value, key)?.value;\n}\n\nexport const GET: APIRoute = async ({ url, locals }) => {\n\tconst { emdash, user } = locals;\n\n\tif (!emdash?.db) {\n\t\treturn apiError(\"NOT_CONFIGURED\", \"EmDash is not initialized\", 500);\n\t}\n\n\tconst denied = requirePerm(user, \"plugins:read\");\n\tif (denied) return denied;\n\n\tconst did = url.searchParams.get(\"did\");\n\tconst slug = url.searchParams.get(\"slug\");\n\tconst cid = url.searchParams.get(\"cid\");\n\tconst kind = url.searchParams.get(\"kind\");\n\tconst versionParam = url.searchParams.get(\"version\");\n\tconst indexParam = url.searchParams.get(\"index\");\n\n\tif (!did || !slug || !cid || !kind) {\n\t\treturn apiError(\"INVALID_REQUEST\", \"Missing did, slug, cid, or kind\", 400);\n\t}\n\tif (did.length > 256 || !DID_PATTERN.test(did)) {\n\t\treturn apiError(\"INVALID_REQUEST\", \"Invalid did\", 400);\n\t}\n\tif (slug.length > 64 || !SLUG_PATTERN.test(slug)) {\n\t\treturn apiError(\"INVALID_REQUEST\", \"Invalid slug\", 400);\n\t}\n\tif (cid.length > 256 || !CID_PATTERN.test(cid)) {\n\t\treturn apiError(\"INVALID_REQUEST\", \"Invalid release CID\", 400);\n\t}\n\tif (!ALLOWED_KINDS.has(kind)) {\n\t\treturn apiError(\"INVALID_REQUEST\", \"Invalid kind\", 400);\n\t}\n\n\tlet index = 0;\n\tif (kind === \"screenshot\") {\n\t\tif (indexParam === null) {\n\t\t\treturn apiError(\"INVALID_REQUEST\", \"Missing index for screenshot\", 400);\n\t\t}\n\t\tif (!INDEX_PATTERN.test(indexParam)) {\n\t\t\treturn apiError(\"INVALID_REQUEST\", \"Invalid index\", 400);\n\t\t}\n\t\tindex = Number(indexParam);\n\t\tif (!Number.isSafeInteger(index)) {\n\t\t\treturn apiError(\"INVALID_REQUEST\", \"Invalid index\", 400);\n\t\t}\n\t}\n\n\tlet version: string | undefined;\n\tif (versionParam !== null && versionParam.length > 0) {\n\t\tif (versionParam.length > 64) {\n\t\t\treturn apiError(\"INVALID_REQUEST\", \"Invalid version\", 400);\n\t\t}\n\t\tversion = versionParam;\n\t}\n\n\tconst registryConfig = coerceRegistryConfig(getRegistryConfigInput(emdash.config.registry));\n\tif (!registryConfig) {\n\t\treturn apiError(\"REGISTRY_NOT_CONFIGURED\", \"Registry is not configured\", 400);\n\t}\n\ttry {\n\t\tvalidateAggregatorUrl(registryConfig.aggregatorUrl);\n\t} catch {\n\t\treturn apiError(\"REGISTRY_NOT_CONFIGURED\", \"Registry aggregator URL is invalid\", 500);\n\t}\n\n\t// Resolve the publisher-declared artifact URL from the release record.\n\tlet resolvedArtifact: ResolvedArtifact;\n\ttry {\n\t\tconst resolved = await resolveArtifact(registryConfig, did, slug, version, cid, kind, index);\n\t\tif (resolved === null) {\n\t\t\treturn apiError(\"ARTIFACT_NOT_FOUND\", \"Artifact not found\", 404);\n\t\t}\n\t\tresolvedArtifact = resolved;\n\t} catch {\n\t\treturn apiError(\"ARTIFACT_RESOLVE_FAILED\", \"Failed to resolve artifact\", 502);\n\t}\n\tconst controller = new AbortController();\n\tconst timer = setTimeout(() => controller.abort(), FETCH_TIMEOUT_MS);\n\ttry {\n\t\tconst fetchOptions = proxyFetchOptions(controller.signal);\n\t\tlet bytes: Uint8Array | undefined;\n\t\tlet headers: Headers | undefined;\n\t\tlet checksumValid: boolean | undefined;\n\t\tif (resolvedArtifact.imageCacheUrl) {\n\t\t\tconst transformed = await fetchVerifiedResource(resolvedArtifact.imageCacheUrl, fetchOptions);\n\t\t\tif (transformed.success) {\n\t\t\t\tbytes = transformed.value.bytes;\n\t\t\t\theaders = transformed.value.headers;\n\t\t\t}\n\t\t}\n\t\tif (!bytes || !headers) {\n\t\t\tconst raw = await fetchRawArtifact(resolvedArtifact, fetchOptions);\n\t\t\tif (!raw.success) return artifactFetchError(raw.code);\n\t\t\tbytes = raw.bytes;\n\t\t\theaders = raw.headers;\n\t\t\tchecksumValid = raw.checksumValid;\n\t\t}\n\n\t\t// Content-Type allowlist: only image types are proxied. A non-image\n\t\t// (HTML error page, JSON, octet-stream) is rejected so the admin\n\t\t// never renders publisher-controlled markup from the EmDash origin.\n\t\tconst rawType = headers.get(\"content-type\") ?? \"\";\n\t\tconst contentType = rawType.split(\";\", 1)[0]!.trim().toLowerCase();\n\t\tif (!ALLOWED_IMAGE_TYPES.has(contentType)) {\n\t\t\treturn apiError(\"ARTIFACT_NOT_IMAGE\", \"Artifact is not an allowed image type\", 415);\n\t\t}\n\n\t\tconst declaredLength = headers.get(\"content-length\");\n\t\tif (declaredLength) {\n\t\t\tconst declared = Number(declaredLength);\n\t\t\tif (Number.isFinite(declared) && declared > MAX_IMAGE_BYTES) {\n\t\t\t\treturn apiError(\"ARTIFACT_TOO_LARGE\", \"Artifact exceeds size limit\", 413);\n\t\t\t}\n\t\t}\n\t\tif (checksumValid === false) {\n\t\t\treturn artifactFetchError(\"CHECKSUM_MISMATCH\");\n\t\t}\n\n\t\t// Only the allowlisted Content-Type is forwarded — never copy other\n\t\t// upstream headers. `private, no-store` keeps publisher images out of\n\t\t// shared caches in the authenticated admin origin.\n\t\t//\n\t\t// SVG is not in the allowlist, so active-content bytes never reach\n\t\t// here. `Content-Disposition: attachment`, the sandbox CSP, and\n\t\t// `nosniff` remain as defence-in-depth: they force a download and\n\t\t// neutralise script/plugins for any image type if a client navigates\n\t\t// directly to the proxy URL.\n\t\treturn new Response(bytes, {\n\t\t\theaders: {\n\t\t\t\t\"Content-Type\": contentType,\n\t\t\t\t\"Cache-Control\": \"private, no-store\",\n\t\t\t\t\"X-Content-Type-Options\": \"nosniff\",\n\t\t\t\t\"Content-Disposition\": \"attachment\",\n\t\t\t\t\"Content-Security-Policy\": \"default-src 'none'; sandbox\",\n\t\t\t},\n\t\t});\n\t} catch {\n\t\treturn apiError(\"ARTIFACT_FETCH_FAILED\", \"Failed to fetch artifact\", 502);\n\t} finally {\n\t\tclearTimeout(timer);\n\t}\n};\n\n/**\n * Resolve the declared artifact URL for `(did, slug, version, kind, index)`\n * from the aggregator's release record. Mirrors the install handler's release\n * lookup. Returns `null` when the package/release/artifact isn't found.\n *\n * Self-contained to this route: the install/update handlers are intentionally\n * left untouched, so a small amount of resolution-pattern duplication is\n * accepted here.\n */\nasync function resolveArtifact(\n\tregistryConfig: { aggregatorUrl: string; acceptLabelers?: string },\n\tdid: string,\n\tslug: string,\n\tversion: string | undefined,\n\tcid: string,\n\tkind: string,\n\tindex: number,\n): Promise<ResolvedArtifact | null> {\n\t// Lazy-load the discovery client so the `@atcute/client` dependency only\n\t// loads when the registry path is exercised.\n\tconst { DiscoveryClient, registryLabelerPolicy } =\n\t\tawait import(\"@emdash-cms/registry-client/discovery\");\n\n\tconst aggregatorDeadline = Date.now() + AGGREGATOR_TOTAL_BUDGET_MS;\n\tconst discovery = new DiscoveryClient({\n\t\taggregatorUrl: registryConfig.aggregatorUrl,\n\t\tacceptLabelers: registryConfig.acceptLabelers,\n\t\tlabelerPolicy: registryLabelerPolicy(registryConfig.acceptLabelers),\n\t\tfetch: timedFetch(aggregatorDeadline),\n\t});\n\n\t// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- DID shape validated by the route before this call\n\tconst publisherDid = did as Did;\n\n\tconst releaseView = await (async () => {\n\t\tif (!version) {\n\t\t\treturn discovery.getLatestRelease({ did: publisherDid, package: slug });\n\t\t}\n\t\tlet cursor: string | undefined;\n\t\tconst seenCursors = new Set<string>();\n\t\tfor (let page = 0; page < MAX_LIST_PAGES; page++) {\n\t\t\tif (cursor !== undefined) {\n\t\t\t\tif (seenCursors.has(cursor)) break;\n\t\t\t\tseenCursors.add(cursor);\n\t\t\t}\n\t\t\tconst result = await discovery.listReleases({\n\t\t\t\tdid: publisherDid,\n\t\t\t\tpackage: slug,\n\t\t\t\tcursor,\n\t\t\t\tlimit: 50,\n\t\t\t});\n\t\t\tfor (const r of result.releases) {\n\t\t\t\tif (r.version === version) return r;\n\t\t\t}\n\t\t\tif (!result.cursor) break;\n\t\t\tcursor = result.cursor;\n\t\t}\n\t\treturn undefined;\n\t})();\n\n\tif (\n\t\t!releaseView?.release ||\n\t\treleaseView.cid !== cid ||\n\t\treleaseView.did !== publisherDid ||\n\t\treleaseView.package !== slug ||\n\t\t(version !== undefined && releaseView.version !== version) ||\n\t\treleaseView.release.package !== slug ||\n\t\treleaseView.release.version !== releaseView.version\n\t) {\n\t\treturn null;\n\t}\n\tif (evaluateRegistryReleaseWithdrawal(releaseView, discovery.labelerPolicy).withdrawn) {\n\t\treturn null;\n\t}\n\n\tconst descriptor = resolveDeclaredArtifact(releaseView.release.artifacts, kind, index);\n\tif (!descriptor || descriptor.requiresAuth || releaseView.release.auth !== undefined) return null;\n\tconst blobCid = descriptor.blob?.ref.$link;\n\tlet imageCacheUrl: URL | undefined;\n\tif (blobCid) {\n\t\tconst expected = multihashFromBlobCid(blobCid);\n\t\tif (!expected.success || expected.value !== descriptor.checksum) return null;\n\t\tconst rkey = `${slug}:${releaseView.version}`;\n\t\tconst serviceEndpoint = releaseView.artifactCaches\n\t\t\t.map(recordScopedCacheEndpoint)\n\t\t\t.find((value) => value !== null);\n\t\tif (serviceEndpoint) {\n\t\t\tconst preset = kind === \"icon\" ? \"avatar\" : kind === \"banner\" ? \"banner\" : \"feed_fullsize\";\n\t\t\tconst cacheUrl = recordScopedImageCacheUrl(\n\t\t\t\tserviceEndpoint,\n\t\t\t\tpreset,\n\t\t\t\t{\n\t\t\t\t\tdid,\n\t\t\t\t\tcollection: NSID.packageRelease,\n\t\t\t\t\trkey,\n\t\t\t\t\tcid: releaseView.cid,\n\t\t\t\t},\n\t\t\t\tblobCid,\n\t\t\t);\n\t\t\tif (!cacheUrl.success) return null;\n\t\t\timageCacheUrl = cacheUrl.value;\n\t\t}\n\t}\n\treturn {\n\t\tartifact: descriptor,\n\t\trecord: {\n\t\t\tdid,\n\t\t\tcollection: NSID.packageRelease,\n\t\t\trkey: `${slug}:${releaseView.version}`,\n\t\t\tcid: releaseView.cid,\n\t\t},\n\t\t...(imageCacheUrl ? { imageCacheUrl } : {}),\n\t};\n}\n\nfunction recordScopedCacheEndpoint(value: unknown): string | null {\n\tif (objectProperty(value, \"$type\") !== RECORD_SCOPED_BLOB_CACHE_TYPE) return null;\n\tconst endpoint = objectProperty(value, \"serviceEndpoint\");\n\treturn typeof endpoint === \"string\" ? endpoint : null;\n}\n\n/** Build bounded, SSRF-validated fetch options for cache, PDS, and URL sources. */\nfunction proxyFetchOptions(signal: AbortSignal) {\n\treturn {\n\t\tfetch: async (url: URL, init: RequestInit) =>\n\t\t\tfetchRegistryArtifactUrl(url.href, {\n\t\t\t\tsignal: init.signal instanceof AbortSignal ? init.signal : signal,\n\t\t\t\tmaxResponseBytes: MAX_IMAGE_BYTES,\n\t\t\t}),\n\t\tresolveHostname: async (hostname: string) =>\n\t\t\t(await resolveAndValidateExternalUrlTarget(`https://${hostname}/`)).addresses,\n\t\tallowHttpLocalhost: import.meta.env.DEV,\n\t\tmaxBytes: MAX_IMAGE_BYTES,\n\t\tmaxRedirects: MAX_REDIRECTS,\n\t\ttotalTimeoutMs: FETCH_TIMEOUT_MS,\n\t};\n}\n\nasync function fetchRawArtifact(\n\tresolved: ResolvedArtifact,\n\toptions: ReturnType<typeof proxyFetchOptions>,\n): Promise<\n\t| { success: true; bytes: Uint8Array; headers: Headers; checksumValid: boolean }\n\t| { success: false; code: string }\n> {\n\tconst urls: URL[] = [];\n\tconst blobCid = resolved.artifact.blob?.ref.$link;\n\tlet lastCode = \"FETCH_FAILED\";\n\tlet checksumMismatch: { bytes: Uint8Array; headers: Headers } | undefined;\n\tif (blobCid) {\n\t\tconst pds = await resolvePublisherPdsEndpoint(resolved.record.did, options);\n\t\tif (pds.success) {\n\t\t\tconst url = new URL(\"/xrpc/com.atproto.sync.getBlob\", pds.value);\n\t\t\turl.searchParams.set(\"did\", resolved.record.did);\n\t\t\turl.searchParams.set(\"cid\", blobCid);\n\t\t\turls.push(url);\n\t\t} else {\n\t\t\tlastCode = pds.error.code;\n\t\t}\n\t}\n\tif (resolved.artifact.url) urls.push(new URL(resolved.artifact.url));\n\n\tfor (const url of urls) {\n\t\tconst fetched = await fetchVerifiedResource(url, options);\n\t\tif (!fetched.success) {\n\t\t\tlastCode = fetched.error.code;\n\t\t\tcontinue;\n\t\t}\n\t\tif (!(await verifyRegistryArtifactChecksum(fetched.value.bytes, resolved.artifact.checksum))) {\n\t\t\tlastCode = \"CHECKSUM_MISMATCH\";\n\t\t\tchecksumMismatch = { bytes: fetched.value.bytes, headers: fetched.value.headers };\n\t\t\tcontinue;\n\t\t}\n\t\treturn {\n\t\t\tsuccess: true,\n\t\t\tbytes: fetched.value.bytes,\n\t\t\theaders: fetched.value.headers,\n\t\t\tchecksumValid: true,\n\t\t};\n\t}\n\tif (checksumMismatch) return { success: true, ...checksumMismatch, checksumValid: false };\n\treturn { success: false, code: lastCode };\n}\n\nfunction artifactFetchError(code: string): Response {\n\tif (code === \"CHECKSUM_MISMATCH\") {\n\t\treturn apiError(\n\t\t\t\"ARTIFACT_CHECKSUM_MISMATCH\",\n\t\t\t\"Artifact bytes do not match the approved release record\",\n\t\t\t502,\n\t\t);\n\t}\n\tif (code === \"RESOURCE_SIZE_EXCEEDED\") {\n\t\treturn apiError(\"ARTIFACT_TOO_LARGE\", \"Artifact exceeds size limit\", 413);\n\t}\n\tif (code === \"HOST_REJECTED\" || code === \"INVALID_URL\") {\n\t\treturn apiError(\"ARTIFACT_URL_REJECTED\", \"Artifact URL is not allowed\", 400);\n\t}\n\treturn apiError(\"ARTIFACT_FETCH_FAILED\", \"Failed to fetch artifact\", 502);\n}\n"],"mappings":"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"}
@@ -5,84 +5,85 @@ import "../../../../../../after-PcEvMY_6.mjs";
5
5
  import "../../../../../../options-DhrI7eMv.mjs";
6
6
  import "../../../../../../secrets-Cc_O3Kp-.mjs";
7
7
  import "../../../../../../base64-BQBZwXCx.mjs";
8
- import "../../../../../../content-CcHrqkgp.mjs";
8
+ import "../../../../../../content-DQSRZTVw.mjs";
9
9
  import "../../../../../../object-cache-Bo6DGaC9.mjs";
10
10
  import "../../../../../../slugify-bu2-jKia.mjs";
11
11
  import "../../../../../../request-cache-C4CIo5ad.mjs";
12
12
  import "../../../../../../url-Dn3IStq8.mjs";
13
- import "../../../../../../types-C-Xp0CcN.mjs";
14
- import "../../../../../../revision-BWEH2qQB.mjs";
15
- import "../../../../../../media-IT8hQleU.mjs";
16
- import "../../../../../../user-B-ZdGjhI.mjs";
17
- import "../../../../../../taxonomy-QrNmTfIZ.mjs";
18
- import "../../../../../../comment-CWla6OHV.mjs";
19
- import "../../../../../../menus-CvVYfsuk.mjs";
13
+ import "../../../../../../types-D2NEXtgB.mjs";
14
+ import "../../../../../../revision-BVp8S0e_.mjs";
15
+ import "../../../../../../media-Bws9f18T.mjs";
16
+ import "../../../../../../user-BlCTKVAm.mjs";
17
+ import "../../../../../../taxonomy-C_C_LBAU.mjs";
18
+ import "../../../../../../comment-UvIWDKcW.mjs";
19
+ import "../../../../../../menus-BCVSSp1z.mjs";
20
20
  import "../../../../../../resolve-D-kqyKns.mjs";
21
- import "../../../../../../redirect-B39kTQ_0.mjs";
21
+ import "../../../../../../redirect-DiS_3mA4.mjs";
22
22
  import "../../../../../../byline-registry-dvt4N3xV.mjs";
23
- import "../../../../../../field-defs-cache-zoow36nz.mjs";
24
- import "../../../../../../byline-BmVKOQ8l.mjs";
25
- import "../../../../../../staged-DboEaWsV.mjs";
23
+ import "../../../../../../field-defs-cache-Dez5iWJJ.mjs";
24
+ import "../../../../../../byline-BR1qhyiw.mjs";
25
+ import "../../../../../../staged-CD_imitH.mjs";
26
26
  import "../../../../../../entry-locks-DJAqVweV.mjs";
27
- import "../../../../../../seo-CCnfPWAQ.mjs";
28
- import "../../../../../../cache-x0z8t_m9.mjs";
29
- import "../../../../../../artifacts-D-O-qj9C.mjs";
30
- import "../../../../../../fts-manager-WJCN8uU6.mjs";
31
- import "../../../../../../loader-CetY659y.mjs";
32
- import "../../../../../../collection-slugs-cache-B2Gs9Jwx.mjs";
33
- import "../../../../../../taxonomies-DQSywBvX.mjs";
34
- import { n as handleRegistryUninstall, t as handleRegistryInstall } from "../../../../../../api-DBw_IWoi.mjs";
35
- import "../../../../../../capture-triggers-C9JKoIdT.mjs";
36
- import "../../../../../../activation-xomsCMJg.mjs";
37
- import "../../../../../../media-usage-work-cgDYGvrt.mjs";
38
- import "../../../../../../registry-DeZ27gVi.mjs";
39
- import "../../../../../../hash-C4DFoJ7Z.mjs";
40
- import "../../../../../../zod-generator-BQilAboC.mjs";
41
- import "../../../../../../errors-CjtE5aWF.mjs";
42
- import "../../../../../../canonical-BUcKRYpG.mjs";
43
- import "../../../../../../digest-xJmyPv2r.mjs";
44
- import "../../../../../../block-values-C4N_F2-G.mjs";
45
- import "../../../../../../query-C_CWlifp.mjs";
46
- import "../../../../../../schema-I74JwYte.mjs";
47
- import "../../../../../../relations-DBB1bRJW.mjs";
48
- import "../../../../../../dashboard-7_FYfafc.mjs";
49
- import { r as getRegistryConfigInput } from "../../../../../../config-Bo4eOOdV.mjs";
50
- import { n as VERSION } from "../../../../../../version-C4kz0PcO.mjs";
51
- import "../../../../../../errors-hskQ0C8G.mjs";
52
- import "../../../../../../update-check-DrlsK-tt.mjs";
53
- import "../../../../../../media-C_z7sRuC.mjs";
54
- import "../../../../../../media-folders-DtMt-vAA.mjs";
55
- import "../../../../../../content-repair-havk1F0-.mjs";
56
- import "../../../../../../settings-GaZ5sVgg.mjs";
57
- import "../../../../../../site-settings-CDdT4mVm.mjs";
58
- import "../../../../../../media-usage-DEPHZZ9X.mjs";
59
- import "../../../../../../media-usage-activation-V2Siabtw.mjs";
60
- import "../../../../../../media-usage-work-Cv1OE59F.mjs";
61
- import "../../../../../../schema-BXIW-JHi.mjs";
62
- import "../../../../../../block-types-DHnkzE6u.mjs";
63
- import "../../../../../../seo-QCtJ1jjV.mjs";
64
- import "../../../../../../settings-B1jOxAIl.mjs";
65
- import "../../../../../../sections-Ccq9ZgyD.mjs";
66
- import "../../../../../../settings-Bc1IBl1t.mjs";
67
- import "../../../../../../taxonomies-Dj5eaobC.mjs";
68
- import "../../../../../../manifest-schema-BiFBPEsp.mjs";
69
- import "../../../../../../marketplace-CUlenvZm.mjs";
70
- import "../../../../../../types-CGaqwHw4.mjs";
71
- import "../../../../../../artifact-fetch-DsRczRGG.mjs";
72
- import "../../../../../../ssrf-LM_0wpGA.mjs";
73
- import "../../../../../../authoritative-records-Dcs7l2H5.mjs";
74
- import { a as unwrapResult, r as handleError, t as apiError } from "../../../../../../error-DxgQdaZ_.mjs";
75
- import { n as parseBody, t as isParseError } from "../../../../../../parse-Cn5aSk1N.mjs";
76
- import "../../../../../../redirects-DFT7Wr-e.mjs";
77
- import "../../../../../../entry-lock-Cjz0h45X.mjs";
78
- import "../../../../../../media-CRKsKlfK.mjs";
79
- import "../../../../../../comments-BzmIKVb2.mjs";
80
- import "../../../../../../byline-fields-Bze3ZdAw.mjs";
81
- import "../../../../../../menus-D1HC8npj.mjs";
82
- import "../../../../../../status-Dl85BK39.mjs";
83
- import { i as checkSiteWriteFence } from "../../../../../../fence-vc3aHgRA.mjs";
84
- import { i as requirePerm } from "../../../../../../authorize-TdIGpRSE.mjs";
85
- import { t as finalizePluginInstall } from "../../../../../../install-finalization-DCFnFSHv.mjs";
27
+ import "../../../../../../seo-VZYOEy8f.mjs";
28
+ import "../../../../../../cache-CEU9wo_h.mjs";
29
+ import "../../../../../../artifacts-htGyfCSt.mjs";
30
+ import "../../../../../../fts-manager-Beg3e4bI.mjs";
31
+ import "../../../../../../loader-CswroUbe.mjs";
32
+ import "../../../../../../json-recordset-BUjxhr77.mjs";
33
+ import "../../../../../../collection-slugs-cache-e09QeJQt.mjs";
34
+ import "../../../../../../taxonomies-ChnU7Mc8.mjs";
35
+ import { n as handleRegistryUninstall, t as handleRegistryInstall } from "../../../../../../api-D-7BNHoz.mjs";
36
+ import "../../../../../../media-usage-work-CkLa5-nc.mjs";
37
+ import "../../../../../../capture-triggers-CT6dK9zd.mjs";
38
+ import "../../../../../../activation-Dim4YMM7.mjs";
39
+ import "../../../../../../registry-TUVaid9Z.mjs";
40
+ import "../../../../../../hash-BJaeek87.mjs";
41
+ import "../../../../../../zod-generator-D0JKy94C.mjs";
42
+ import "../../../../../../errors-B4f4It-2.mjs";
43
+ import "../../../../../../canonical-BudtH-Fx.mjs";
44
+ import "../../../../../../digest-DJ1tHCgy.mjs";
45
+ import "../../../../../../block-values-gCX4HBSl.mjs";
46
+ import "../../../../../../query-haKvLAWl.mjs";
47
+ import "../../../../../../schema-C4OBuv6Z.mjs";
48
+ import "../../../../../../relations-CA_QuMTU.mjs";
49
+ import "../../../../../../dashboard-D0jcgBD7.mjs";
50
+ import { r as getRegistryConfigInput } from "../../../../../../config-DBU6iUQB.mjs";
51
+ import { n as VERSION } from "../../../../../../version-DHmGpcch.mjs";
52
+ import "../../../../../../errors-BOYNdIo3.mjs";
53
+ import "../../../../../../update-check-BxNg9T6N.mjs";
54
+ import "../../../../../../media--dJRU6i2.mjs";
55
+ import "../../../../../../media-folders-Dn3C16B8.mjs";
56
+ import "../../../../../../content-repair-DNh5--x5.mjs";
57
+ import "../../../../../../settings-Dd1uivmQ.mjs";
58
+ import "../../../../../../site-settings-DRHfX7bq.mjs";
59
+ import "../../../../../../media-usage-CF0WVcLO.mjs";
60
+ import "../../../../../../media-usage-activation-C9HwVw5w.mjs";
61
+ import "../../../../../../media-usage-work-m3AWTmmC.mjs";
62
+ import "../../../../../../schema-DJRfvM_o.mjs";
63
+ import "../../../../../../block-types-CYcG56JB.mjs";
64
+ import "../../../../../../seo-ClB-dw9w.mjs";
65
+ import "../../../../../../settings-CWb84sDm.mjs";
66
+ import "../../../../../../sections-BMy4JVUz.mjs";
67
+ import { a as unwrapResult, r as handleError, t as apiError } from "../../../../../../error-CVWeIOku.mjs";
68
+ import { i as checkSiteWriteFence } from "../../../../../../fence-C3MUitUN.mjs";
69
+ import "../../../../../../settings-DS914jjE.mjs";
70
+ import "../../../../../../taxonomies-Dd9JJv_a.mjs";
71
+ import "../../../../../../manifest-schema-DNb4XmTS.mjs";
72
+ import "../../../../../../marketplace-CqbgeIa7.mjs";
73
+ import "../../../../../../types-sUHaH7lC.mjs";
74
+ import "../../../../../../artifact-fetch-DIh7iyOV.mjs";
75
+ import "../../../../../../ssrf-BcYjyM4M.mjs";
76
+ import "../../../../../../authoritative-records-CQlB3JzE.mjs";
77
+ import { n as parseBody, t as isParseError } from "../../../../../../parse-DgQ2NABT.mjs";
78
+ import "../../../../../../redirects-BEVSRMa2.mjs";
79
+ import "../../../../../../entry-lock-Df6-XhIu.mjs";
80
+ import "../../../../../../media-1WC65OCB.mjs";
81
+ import "../../../../../../comments-yiRFx3w5.mjs";
82
+ import "../../../../../../byline-fields-BLXZnX7N.mjs";
83
+ import "../../../../../../menus-BSzwObhV.mjs";
84
+ import "../../../../../../status-BFNdxzKc.mjs";
85
+ import { o as requirePerm } from "../../../../../../authorize-DPFBGbE6.mjs";
86
+ import { t as finalizePluginInstall } from "../../../../../../install-finalization-3JX5qQEA.mjs";
86
87
  import { z } from "zod";
87
88
  import { hostEnvFromVersions } from "@emdash-cms/registry-client/env";
88
89