emdash 1.2.0 → 1.3.1

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 (1592) hide show
  1. package/dist/action-token-B1ds4laA.mjs +26 -0
  2. package/dist/action-token-B1ds4laA.mjs.map +1 -0
  3. package/dist/activation-sGF9br3X.mjs +387 -0
  4. package/dist/activation-sGF9br3X.mjs.map +1 -0
  5. package/dist/adapters-BOMSX9PU.d.mts +173 -0
  6. package/dist/adapters-BOMSX9PU.d.mts.map +1 -0
  7. package/dist/allowed-origins-CovsTkm3.mjs +116 -0
  8. package/dist/allowed-origins-CovsTkm3.mjs.map +1 -0
  9. package/dist/api/route-utils.d.mts +4 -4
  10. package/dist/api/route-utils.mjs +59 -55
  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 +11 -11
  14. package/dist/api-C_LxFnOm.mjs +5077 -0
  15. package/dist/api-C_LxFnOm.mjs.map +1 -0
  16. package/dist/api-tokens-DQ9Ee-vP.mjs +173 -0
  17. package/dist/api-tokens-DQ9Ee-vP.mjs.map +1 -0
  18. package/dist/apply-CLjfxvyH.mjs +1758 -0
  19. package/dist/apply-CLjfxvyH.mjs.map +1 -0
  20. package/dist/approvals-ocK89i4H.mjs +460 -0
  21. package/dist/approvals-ocK89i4H.mjs.map +1 -0
  22. package/dist/artifact-fetch-CgvvpoWQ.mjs +659 -0
  23. package/dist/artifact-fetch-CgvvpoWQ.mjs.map +1 -0
  24. package/dist/artifacts-DwOYYBQm.mjs +323 -0
  25. package/dist/artifacts-DwOYYBQm.mjs.map +1 -0
  26. package/dist/astro/image-endpoint.mjs +12 -2
  27. package/dist/astro/image-endpoint.mjs.map +1 -1
  28. package/dist/astro/index.d.mts +14 -14
  29. package/dist/astro/index.d.mts.map +1 -1
  30. package/dist/astro/index.mjs +122 -20
  31. package/dist/astro/index.mjs.map +1 -1
  32. package/dist/astro/middleware/auth.d.mts +12 -12
  33. package/dist/astro/middleware/auth.d.mts.map +1 -1
  34. package/dist/astro/middleware/auth.mjs +12 -11
  35. package/dist/astro/middleware/auth.mjs.map +1 -1
  36. package/dist/astro/middleware/media-usage-write-fence.mjs +5 -5
  37. package/dist/astro/middleware/redirect.d.mts.map +1 -1
  38. package/dist/astro/middleware/redirect.mjs +161 -61
  39. package/dist/astro/middleware/redirect.mjs.map +1 -1
  40. package/dist/astro/middleware/request-context.d.mts.map +1 -1
  41. package/dist/astro/middleware/request-context.mjs +58 -20
  42. package/dist/astro/middleware/request-context.mjs.map +1 -1
  43. package/dist/astro/middleware/setup.mjs +1 -1
  44. package/dist/astro/middleware.d.mts +12 -12
  45. package/dist/astro/middleware.d.mts.map +1 -1
  46. package/dist/astro/middleware.mjs +137 -419
  47. package/dist/astro/middleware.mjs.map +1 -1
  48. package/dist/astro/routes/api/admin/allowed-domains/_domain_.mjs +16 -16
  49. package/dist/astro/routes/api/admin/allowed-domains/index.mjs +16 -16
  50. package/dist/astro/routes/api/admin/api-tokens/_id_.mjs +6 -6
  51. package/dist/astro/routes/api/admin/api-tokens/index.mjs +7 -7
  52. package/dist/astro/routes/api/admin/byline-fields/_slug_/usage.mjs +7 -7
  53. package/dist/astro/routes/api/admin/byline-fields/_slug_.mjs +19 -19
  54. package/dist/astro/routes/api/admin/byline-fields/index.mjs +19 -19
  55. package/dist/astro/routes/api/admin/byline-fields/reorder.mjs +19 -19
  56. package/dist/astro/routes/api/admin/bylines/_id_/index.mjs +29 -27
  57. package/dist/astro/routes/api/admin/bylines/_id_/index.mjs.map +1 -1
  58. package/dist/astro/routes/api/admin/bylines/_id_/translations.mjs +29 -27
  59. package/dist/astro/routes/api/admin/bylines/_id_/translations.mjs.map +1 -1
  60. package/dist/astro/routes/api/admin/bylines/index.mjs +29 -27
  61. package/dist/astro/routes/api/admin/bylines/index.mjs.map +1 -1
  62. package/dist/astro/routes/api/admin/comments/_id_/status.mjs +21 -21
  63. package/dist/astro/routes/api/admin/comments/_id_.mjs +8 -8
  64. package/dist/astro/routes/api/admin/comments/bulk.mjs +20 -20
  65. package/dist/astro/routes/api/admin/comments/counts.mjs +8 -8
  66. package/dist/astro/routes/api/admin/comments/index.mjs +20 -20
  67. package/dist/astro/routes/api/admin/core-update.mjs +7 -7
  68. package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.mjs +6 -6
  69. package/dist/astro/routes/api/admin/hooks/exclusive/index.mjs +5 -5
  70. package/dist/astro/routes/api/admin/media-usage/activation.mjs +22 -22
  71. package/dist/astro/routes/api/admin/media-usage/collection-deletions/index.mjs +23 -23
  72. package/dist/astro/routes/api/admin/media-usage/collection-deletions/retry.mjs +23 -23
  73. package/dist/astro/routes/api/admin/media-usage/progress.mjs +27 -25
  74. package/dist/astro/routes/api/admin/media-usage/progress.mjs.map +1 -1
  75. package/dist/astro/routes/api/admin/media-usage/repair.mjs +33 -31
  76. package/dist/astro/routes/api/admin/media-usage/repair.mjs.map +1 -1
  77. package/dist/astro/routes/api/admin/media-usage/work/index.mjs +23 -23
  78. package/dist/astro/routes/api/admin/media-usage/work/retry.mjs +23 -23
  79. package/dist/astro/routes/api/admin/oauth-clients/_id_.mjs +6 -6
  80. package/dist/astro/routes/api/admin/oauth-clients/index.mjs +6 -6
  81. package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs +8 -8
  82. package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs +8 -8
  83. package/dist/astro/routes/api/admin/plugins/_id_/index.mjs +81 -77
  84. package/dist/astro/routes/api/admin/plugins/_id_/index.mjs.map +1 -1
  85. package/dist/astro/routes/api/admin/plugins/_id_/mcp.mjs +7 -7
  86. package/dist/astro/routes/api/admin/plugins/_id_/settings.mjs +80 -76
  87. package/dist/astro/routes/api/admin/plugins/_id_/settings.mjs.map +1 -1
  88. package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs +80 -77
  89. package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs.map +1 -1
  90. package/dist/astro/routes/api/admin/plugins/_id_/update.mjs +91 -88
  91. package/dist/astro/routes/api/admin/plugins/_id_/update.mjs.map +1 -1
  92. package/dist/astro/routes/api/admin/plugins/index.mjs +81 -77
  93. package/dist/astro/routes/api/admin/plugins/index.mjs.map +1 -1
  94. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.mjs +7 -7
  95. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs +80 -76
  96. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs.map +1 -1
  97. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs +90 -87
  98. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs.map +1 -1
  99. package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs +80 -76
  100. package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs.map +1 -1
  101. package/dist/astro/routes/api/admin/plugins/registry/_id_/uninstall.mjs +80 -77
  102. package/dist/astro/routes/api/admin/plugins/registry/_id_/uninstall.mjs.map +1 -1
  103. package/dist/astro/routes/api/admin/plugins/registry/_id_/update.mjs +92 -89
  104. package/dist/astro/routes/api/admin/plugins/registry/_id_/update.mjs.map +1 -1
  105. package/dist/astro/routes/api/admin/plugins/registry/artifact.mjs +10 -10
  106. package/dist/astro/routes/api/admin/plugins/registry/artifact.mjs.map +1 -1
  107. package/dist/astro/routes/api/admin/plugins/registry/install.mjs +82 -79
  108. package/dist/astro/routes/api/admin/plugins/registry/install.mjs.map +1 -1
  109. package/dist/astro/routes/api/admin/plugins/registry/publisher-handle.mjs +7 -7
  110. package/dist/astro/routes/api/admin/plugins/registry/verify.mjs +81 -77
  111. package/dist/astro/routes/api/admin/plugins/registry/verify.mjs.map +1 -1
  112. package/dist/astro/routes/api/admin/plugins/updates.mjs +80 -76
  113. package/dist/astro/routes/api/admin/plugins/updates.mjs.map +1 -1
  114. package/dist/astro/routes/api/admin/scheduled-policy-rejections/_collection_/_id_.mjs +6 -6
  115. package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs +80 -76
  116. package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs.map +1 -1
  117. package/dist/astro/routes/api/admin/themes/marketplace/_id_/thumbnail.mjs +7 -7
  118. package/dist/astro/routes/api/admin/themes/marketplace/index.mjs +80 -76
  119. package/dist/astro/routes/api/admin/themes/marketplace/index.mjs.map +1 -1
  120. package/dist/astro/routes/api/admin/transfer/_...path_.mjs +4 -4
  121. package/dist/astro/routes/api/admin/transfer/approvals/_id_/approve.mjs +45 -42
  122. package/dist/astro/routes/api/admin/transfer/approvals/_id_/approve.mjs.map +1 -1
  123. package/dist/astro/routes/api/admin/transfer/approvals/_id_/deny.mjs +45 -42
  124. package/dist/astro/routes/api/admin/transfer/approvals/_id_/deny.mjs.map +1 -1
  125. package/dist/astro/routes/api/admin/transfer/approvals/index.mjs +47 -44
  126. package/dist/astro/routes/api/admin/transfer/approvals/index.mjs.map +1 -1
  127. package/dist/astro/routes/api/admin/transfer/capabilities.mjs +47 -44
  128. package/dist/astro/routes/api/admin/transfer/capabilities.mjs.map +1 -1
  129. package/dist/astro/routes/api/admin/transfer/exports/_id_/advance.mjs +47 -44
  130. package/dist/astro/routes/api/admin/transfer/exports/_id_/advance.mjs.map +1 -1
  131. package/dist/astro/routes/api/admin/transfer/exports/_id_/archive.mjs +48 -45
  132. package/dist/astro/routes/api/admin/transfer/exports/_id_/archive.mjs.map +1 -1
  133. package/dist/astro/routes/api/admin/transfer/exports/_id_/files/_...path_.mjs +48 -45
  134. package/dist/astro/routes/api/admin/transfer/exports/_id_/files/_...path_.mjs.map +1 -1
  135. package/dist/astro/routes/api/admin/transfer/exports/_id_/index.mjs +47 -44
  136. package/dist/astro/routes/api/admin/transfer/exports/_id_/index.mjs.map +1 -1
  137. package/dist/astro/routes/api/admin/transfer/exports/_id_/manifest.mjs +48 -45
  138. package/dist/astro/routes/api/admin/transfer/exports/_id_/manifest.mjs.map +1 -1
  139. package/dist/astro/routes/api/admin/transfer/exports/index.mjs +49 -46
  140. package/dist/astro/routes/api/admin/transfer/exports/index.mjs.map +1 -1
  141. package/dist/astro/routes/api/admin/transfer/imports/_id_/abandon.mjs +47 -44
  142. package/dist/astro/routes/api/admin/transfer/imports/_id_/abandon.mjs.map +1 -1
  143. package/dist/astro/routes/api/admin/transfer/imports/_id_/advance.mjs +47 -44
  144. package/dist/astro/routes/api/admin/transfer/imports/_id_/advance.mjs.map +1 -1
  145. package/dist/astro/routes/api/admin/transfer/imports/_id_/analyze.mjs +49 -46
  146. package/dist/astro/routes/api/admin/transfer/imports/_id_/analyze.mjs.map +1 -1
  147. package/dist/astro/routes/api/admin/transfer/imports/_id_/cancel.mjs +47 -44
  148. package/dist/astro/routes/api/admin/transfer/imports/_id_/cancel.mjs.map +1 -1
  149. package/dist/astro/routes/api/admin/transfer/imports/_id_/execute.mjs +49 -46
  150. package/dist/astro/routes/api/admin/transfer/imports/_id_/execute.mjs.map +1 -1
  151. package/dist/astro/routes/api/admin/transfer/imports/_id_/files/_...path_.mjs +47 -44
  152. package/dist/astro/routes/api/admin/transfer/imports/_id_/files/_...path_.mjs.map +1 -1
  153. package/dist/astro/routes/api/admin/transfer/imports/_id_/index.mjs +47 -44
  154. package/dist/astro/routes/api/admin/transfer/imports/_id_/index.mjs.map +1 -1
  155. package/dist/astro/routes/api/admin/transfer/imports/_id_/missing.mjs +49 -46
  156. package/dist/astro/routes/api/admin/transfer/imports/_id_/missing.mjs.map +1 -1
  157. package/dist/astro/routes/api/admin/transfer/imports/_id_/plan.mjs +47 -44
  158. package/dist/astro/routes/api/admin/transfer/imports/_id_/plan.mjs.map +1 -1
  159. package/dist/astro/routes/api/admin/transfer/imports/_id_/receipt.mjs +47 -44
  160. package/dist/astro/routes/api/admin/transfer/imports/_id_/receipt.mjs.map +1 -1
  161. package/dist/astro/routes/api/admin/transfer/imports/index.mjs +49 -46
  162. package/dist/astro/routes/api/admin/transfer/imports/index.mjs.map +1 -1
  163. package/dist/astro/routes/api/admin/users/_id_/disable.mjs +5 -5
  164. package/dist/astro/routes/api/admin/users/_id_/enable.mjs +4 -4
  165. package/dist/astro/routes/api/admin/users/_id_/index.mjs +17 -17
  166. package/dist/astro/routes/api/admin/users/_id_/send-recovery.mjs +6 -6
  167. package/dist/astro/routes/api/admin/users/index.mjs +16 -16
  168. package/dist/astro/routes/api/auth/dev-bypass.mjs +6 -6
  169. package/dist/astro/routes/api/auth/handover.mjs +6 -6
  170. package/dist/astro/routes/api/auth/invite/accept.mjs +4 -4
  171. package/dist/astro/routes/api/auth/invite/complete.mjs +21 -21
  172. package/dist/astro/routes/api/auth/invite/index.mjs +18 -18
  173. package/dist/astro/routes/api/auth/invite/register-options.mjs +19 -19
  174. package/dist/astro/routes/api/auth/logout.mjs +5 -5
  175. package/dist/astro/routes/api/auth/magic-link/send.mjs +20 -20
  176. package/dist/astro/routes/api/auth/magic-link/verify.mjs +17 -17
  177. package/dist/astro/routes/api/auth/me.mjs +17 -17
  178. package/dist/astro/routes/api/auth/mode.mjs +5 -5
  179. package/dist/astro/routes/api/auth/oauth/_provider_/callback.mjs +8 -8
  180. package/dist/astro/routes/api/auth/oauth/_provider_.mjs +2 -2
  181. package/dist/astro/routes/api/auth/passkey/_id_.mjs +16 -16
  182. package/dist/astro/routes/api/auth/passkey/index.mjs +4 -4
  183. package/dist/astro/routes/api/auth/passkey/options.mjs +21 -21
  184. package/dist/astro/routes/api/auth/passkey/register/options.mjs +19 -19
  185. package/dist/astro/routes/api/auth/passkey/register/verify.mjs +20 -20
  186. package/dist/astro/routes/api/auth/passkey/verify.mjs +21 -21
  187. package/dist/astro/routes/api/auth/signup/complete.mjs +21 -21
  188. package/dist/astro/routes/api/auth/signup/request.mjs +19 -19
  189. package/dist/astro/routes/api/auth/signup/verify.mjs +4 -4
  190. package/dist/astro/routes/api/calendar.mjs +17 -17
  191. package/dist/astro/routes/api/comments/_collection_/_contentId_/index.mjs +13 -13
  192. package/dist/astro/routes/api/comments/_collection_/_contentId_/reactions.mjs +21 -21
  193. package/dist/astro/routes/api/content/_collection_/_id_/compare.mjs +5 -5
  194. package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.d.mts.map +1 -1
  195. package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs +21 -20
  196. package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs.map +1 -1
  197. package/dist/astro/routes/api/content/_collection_/_id_/duplicate.mjs +7 -10
  198. package/dist/astro/routes/api/content/_collection_/_id_/duplicate.mjs.map +1 -1
  199. package/dist/astro/routes/api/content/_collection_/_id_/lock.mjs +23 -20
  200. package/dist/astro/routes/api/content/_collection_/_id_/lock.mjs.map +1 -1
  201. package/dist/astro/routes/api/content/_collection_/_id_/permanent.d.mts.map +1 -1
  202. package/dist/astro/routes/api/content/_collection_/_id_/permanent.mjs +7 -6
  203. package/dist/astro/routes/api/content/_collection_/_id_/permanent.mjs.map +1 -1
  204. package/dist/astro/routes/api/content/_collection_/_id_/plugin-extensions/_pluginId_/_kind_/_extensionId_.mjs +12 -12
  205. package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs +36 -34
  206. package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs.map +1 -1
  207. package/dist/astro/routes/api/content/_collection_/_id_/publish.d.mts.map +1 -1
  208. package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs +21 -20
  209. package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs.map +1 -1
  210. package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/children.mjs +40 -38
  211. package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/children.mjs.map +1 -1
  212. package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/parents.mjs +40 -38
  213. package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/parents.mjs.map +1 -1
  214. package/dist/astro/routes/api/content/_collection_/_id_/restore.d.mts.map +1 -1
  215. package/dist/astro/routes/api/content/_collection_/_id_/restore.mjs +7 -6
  216. package/dist/astro/routes/api/content/_collection_/_id_/restore.mjs.map +1 -1
  217. package/dist/astro/routes/api/content/_collection_/_id_/revisions.mjs +5 -5
  218. package/dist/astro/routes/api/content/_collection_/_id_/schedule.d.mts.map +1 -1
  219. package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs +22 -21
  220. package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs.map +1 -1
  221. package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.d.mts.map +1 -1
  222. package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs +46 -33
  223. package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs.map +1 -1
  224. package/dist/astro/routes/api/content/_collection_/_id_/translations.d.mts.map +1 -1
  225. package/dist/astro/routes/api/content/_collection_/_id_/translations.mjs +9 -5
  226. package/dist/astro/routes/api/content/_collection_/_id_/translations.mjs.map +1 -1
  227. package/dist/astro/routes/api/content/_collection_/_id_/unpublish.d.mts.map +1 -1
  228. package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs +21 -20
  229. package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs.map +1 -1
  230. package/dist/astro/routes/api/content/_collection_/_id_.d.mts.map +1 -1
  231. package/dist/astro/routes/api/content/_collection_/_id_.mjs +30 -23
  232. package/dist/astro/routes/api/content/_collection_/_id_.mjs.map +1 -1
  233. package/dist/astro/routes/api/content/_collection_/authors.mjs +5 -5
  234. package/dist/astro/routes/api/content/_collection_/index.mjs +20 -23
  235. package/dist/astro/routes/api/content/_collection_/index.mjs.map +1 -1
  236. package/dist/astro/routes/api/content/_collection_/trash.mjs +17 -17
  237. package/dist/astro/routes/api/dashboard.d.mts.map +1 -1
  238. package/dist/astro/routes/api/dashboard.mjs +27 -15
  239. package/dist/astro/routes/api/dashboard.mjs.map +1 -1
  240. package/dist/astro/routes/api/dev/emails.mjs +5 -5
  241. package/dist/astro/routes/api/dev/scheduled-tasks.d.mts +12 -0
  242. package/dist/astro/routes/api/dev/scheduled-tasks.d.mts.map +1 -0
  243. package/dist/astro/routes/api/dev/scheduled-tasks.mjs +142 -0
  244. package/dist/astro/routes/api/dev/scheduled-tasks.mjs.map +1 -0
  245. package/dist/astro/routes/api/health.mjs +6 -6
  246. package/dist/astro/routes/api/import/probe.d.mts +3 -3
  247. package/dist/astro/routes/api/import/probe.mjs +31 -27
  248. package/dist/astro/routes/api/import/probe.mjs.map +1 -1
  249. package/dist/astro/routes/api/import/wordpress/analyze.d.mts.map +1 -1
  250. package/dist/astro/routes/api/import/wordpress/analyze.mjs +8 -21
  251. package/dist/astro/routes/api/import/wordpress/analyze.mjs.map +1 -1
  252. package/dist/astro/routes/api/import/wordpress/execute.d.mts +15 -14
  253. package/dist/astro/routes/api/import/wordpress/execute.d.mts.map +1 -1
  254. package/dist/astro/routes/api/import/wordpress/execute.mjs +36 -36
  255. package/dist/astro/routes/api/import/wordpress/execute.mjs.map +1 -1
  256. package/dist/astro/routes/api/import/wordpress/media.d.mts +12 -12
  257. package/dist/astro/routes/api/import/wordpress/media.mjs +21 -21
  258. package/dist/astro/routes/api/import/wordpress/prepare.mjs +22 -20
  259. package/dist/astro/routes/api/import/wordpress/prepare.mjs.map +1 -1
  260. package/dist/astro/routes/api/import/wordpress/rewrite-urls.d.mts +13 -13
  261. package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs +32 -30
  262. package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs.map +1 -1
  263. package/dist/astro/routes/api/import/wordpress-plugin/analyze.d.mts +1 -1
  264. package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs +32 -27
  265. package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs.map +1 -1
  266. package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts +13 -13
  267. package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts.map +1 -1
  268. package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs +66 -43
  269. package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs.map +1 -1
  270. package/dist/astro/routes/api/manifest.mjs +6 -6
  271. package/dist/astro/routes/api/mcp.mjs +160 -109
  272. package/dist/astro/routes/api/mcp.mjs.map +1 -1
  273. package/dist/astro/routes/api/media/_id_/confirm.mjs +21 -21
  274. package/dist/astro/routes/api/media/_id_/replace.mjs +18 -18
  275. package/dist/astro/routes/api/media/_id_/upload.mjs +9 -9
  276. package/dist/astro/routes/api/media/_id_/usage.mjs +35 -33
  277. package/dist/astro/routes/api/media/_id_/usage.mjs.map +1 -1
  278. package/dist/astro/routes/api/media/_id_.mjs +33 -31
  279. package/dist/astro/routes/api/media/_id_.mjs.map +1 -1
  280. package/dist/astro/routes/api/media/asset/_id_/_filename_.mjs +6 -6
  281. package/dist/astro/routes/api/media/file/_...key_.mjs +21 -13
  282. package/dist/astro/routes/api/media/file/_...key_.mjs.map +1 -1
  283. package/dist/astro/routes/api/media/folders/_id_.mjs +18 -18
  284. package/dist/astro/routes/api/media/folders/index.mjs +18 -18
  285. package/dist/astro/routes/api/media/providers/_providerId_/_itemId_.mjs +5 -5
  286. package/dist/astro/routes/api/media/providers/_providerId_/index.mjs +5 -5
  287. package/dist/astro/routes/api/media/providers/index.mjs +5 -5
  288. package/dist/astro/routes/api/media/upload-url.mjs +20 -20
  289. package/dist/astro/routes/api/media.mjs +37 -35
  290. package/dist/astro/routes/api/media.mjs.map +1 -1
  291. package/dist/astro/routes/api/menus/_name_/items/_id_.d.mts.map +1 -1
  292. package/dist/astro/routes/api/menus/_name_/items/_id_.mjs +24 -22
  293. package/dist/astro/routes/api/menus/_name_/items/_id_.mjs.map +1 -1
  294. package/dist/astro/routes/api/menus/_name_/items.d.mts.map +1 -1
  295. package/dist/astro/routes/api/menus/_name_/items.mjs +23 -21
  296. package/dist/astro/routes/api/menus/_name_/items.mjs.map +1 -1
  297. package/dist/astro/routes/api/menus/_name_/reorder.d.mts.map +1 -1
  298. package/dist/astro/routes/api/menus/_name_/reorder.mjs +23 -21
  299. package/dist/astro/routes/api/menus/_name_/reorder.mjs.map +1 -1
  300. package/dist/astro/routes/api/menus/_name_/translations.d.mts.map +1 -1
  301. package/dist/astro/routes/api/menus/_name_/translations.mjs +23 -21
  302. package/dist/astro/routes/api/menus/_name_/translations.mjs.map +1 -1
  303. package/dist/astro/routes/api/menus/_name_.d.mts.map +1 -1
  304. package/dist/astro/routes/api/menus/_name_.mjs +24 -22
  305. package/dist/astro/routes/api/menus/_name_.mjs.map +1 -1
  306. package/dist/astro/routes/api/menus/index.d.mts.map +1 -1
  307. package/dist/astro/routes/api/menus/index.mjs +23 -21
  308. package/dist/astro/routes/api/menus/index.mjs.map +1 -1
  309. package/dist/astro/routes/api/oauth/authorize.mjs +6 -6
  310. package/dist/astro/routes/api/oauth/device/authorize.mjs +8 -8
  311. package/dist/astro/routes/api/oauth/device/code.mjs +11 -11
  312. package/dist/astro/routes/api/oauth/device/token.mjs +10 -10
  313. package/dist/astro/routes/api/oauth/register.mjs +7 -7
  314. package/dist/astro/routes/api/oauth/token/refresh.mjs +8 -8
  315. package/dist/astro/routes/api/oauth/token/revoke.mjs +8 -8
  316. package/dist/astro/routes/api/oauth/token.mjs +8 -8
  317. package/dist/astro/routes/api/openapi.json.mjs +22 -22
  318. package/dist/astro/routes/api/plugins/_pluginId_/_...path_.mjs +12 -12
  319. package/dist/astro/routes/api/redirects/404s/index.mjs +23 -22
  320. package/dist/astro/routes/api/redirects/404s/index.mjs.map +1 -1
  321. package/dist/astro/routes/api/redirects/404s/summary.mjs +23 -22
  322. package/dist/astro/routes/api/redirects/404s/summary.mjs.map +1 -1
  323. package/dist/astro/routes/api/redirects/_id_.d.mts.map +1 -1
  324. package/dist/astro/routes/api/redirects/_id_.mjs +36 -26
  325. package/dist/astro/routes/api/redirects/_id_.mjs.map +1 -1
  326. package/dist/astro/routes/api/redirects/index.d.mts.map +1 -1
  327. package/dist/astro/routes/api/redirects/index.mjs +28 -24
  328. package/dist/astro/routes/api/redirects/index.mjs.map +1 -1
  329. package/dist/astro/routes/api/relations/_id_/index.mjs +40 -38
  330. package/dist/astro/routes/api/relations/_id_/index.mjs.map +1 -1
  331. package/dist/astro/routes/api/relations/index.mjs +40 -38
  332. package/dist/astro/routes/api/relations/index.mjs.map +1 -1
  333. package/dist/astro/routes/api/revisions/_revisionId_/index.mjs +5 -5
  334. package/dist/astro/routes/api/revisions/_revisionId_/restore.mjs +19 -19
  335. package/dist/astro/routes/api/schema/block-types/_slug_/index.mjs +80 -76
  336. package/dist/astro/routes/api/schema/block-types/_slug_/index.mjs.map +1 -1
  337. package/dist/astro/routes/api/schema/block-types/_slug_/versions/_version_/activate.mjs +80 -76
  338. package/dist/astro/routes/api/schema/block-types/_slug_/versions/_version_/activate.mjs.map +1 -1
  339. package/dist/astro/routes/api/schema/block-types/index.mjs +80 -76
  340. package/dist/astro/routes/api/schema/block-types/index.mjs.map +1 -1
  341. package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs +80 -76
  342. package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs.map +1 -1
  343. package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs +80 -76
  344. package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs.map +1 -1
  345. package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs +80 -76
  346. package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs.map +1 -1
  347. package/dist/astro/routes/api/schema/collections/_slug_/index.mjs +80 -76
  348. package/dist/astro/routes/api/schema/collections/_slug_/index.mjs.map +1 -1
  349. package/dist/astro/routes/api/schema/collections/index.mjs +80 -76
  350. package/dist/astro/routes/api/schema/collections/index.mjs.map +1 -1
  351. package/dist/astro/routes/api/schema/collections/reorder.mjs +80 -76
  352. package/dist/astro/routes/api/schema/collections/reorder.mjs.map +1 -1
  353. package/dist/astro/routes/api/schema/index.mjs +20 -18
  354. package/dist/astro/routes/api/schema/index.mjs.map +1 -1
  355. package/dist/astro/routes/api/schema/orphans/_slug_.mjs +80 -76
  356. package/dist/astro/routes/api/schema/orphans/_slug_.mjs.map +1 -1
  357. package/dist/astro/routes/api/schema/orphans/index.mjs +80 -76
  358. package/dist/astro/routes/api/schema/orphans/index.mjs.map +1 -1
  359. package/dist/astro/routes/api/search/enable.mjs +23 -21
  360. package/dist/astro/routes/api/search/enable.mjs.map +1 -1
  361. package/dist/astro/routes/api/search/index.mjs +22 -20
  362. package/dist/astro/routes/api/search/index.mjs.map +1 -1
  363. package/dist/astro/routes/api/search/rebuild.mjs +23 -21
  364. package/dist/astro/routes/api/search/rebuild.mjs.map +1 -1
  365. package/dist/astro/routes/api/search/stats.mjs +12 -10
  366. package/dist/astro/routes/api/search/stats.mjs.map +1 -1
  367. package/dist/astro/routes/api/search/suggest.mjs +22 -20
  368. package/dist/astro/routes/api/search/suggest.mjs.map +1 -1
  369. package/dist/astro/routes/api/sections/_slug_.mjs +22 -20
  370. package/dist/astro/routes/api/sections/_slug_.mjs.map +1 -1
  371. package/dist/astro/routes/api/sections/index.mjs +22 -20
  372. package/dist/astro/routes/api/sections/index.mjs.map +1 -1
  373. package/dist/astro/routes/api/settings/backups/archives/_name_.mjs +7 -7
  374. package/dist/astro/routes/api/settings/backups/archives/index.mjs +7 -7
  375. package/dist/astro/routes/api/settings/backups/export.mjs +7 -7
  376. package/dist/astro/routes/api/settings/backups/index.mjs +8 -8
  377. package/dist/astro/routes/api/settings/domain-notify.mjs +9 -9
  378. package/dist/astro/routes/api/settings/domain.d.mts.map +1 -1
  379. package/dist/astro/routes/api/settings/domain.mjs +23 -18
  380. package/dist/astro/routes/api/settings/domain.mjs.map +1 -1
  381. package/dist/astro/routes/api/settings/email.mjs +6 -6
  382. package/dist/astro/routes/api/settings.d.mts.map +1 -1
  383. package/dist/astro/routes/api/settings.mjs +30 -25
  384. package/dist/astro/routes/api/settings.mjs.map +1 -1
  385. package/dist/astro/routes/api/setup/admin-verify.d.mts.map +1 -1
  386. package/dist/astro/routes/api/setup/admin-verify.mjs +27 -23
  387. package/dist/astro/routes/api/setup/admin-verify.mjs.map +1 -1
  388. package/dist/astro/routes/api/setup/admin.mjs +20 -20
  389. package/dist/astro/routes/api/setup/dev-bypass.mjs +52 -48
  390. package/dist/astro/routes/api/setup/dev-bypass.mjs.map +1 -1
  391. package/dist/astro/routes/api/setup/dev-reset.mjs +4 -4
  392. package/dist/astro/routes/api/setup/index.mjs +58 -54
  393. package/dist/astro/routes/api/setup/index.mjs.map +1 -1
  394. package/dist/astro/routes/api/setup/status.mjs +6 -6
  395. package/dist/astro/routes/api/site/domain-proof.mjs +16 -12
  396. package/dist/astro/routes/api/site/domain-proof.mjs.map +1 -1
  397. package/dist/astro/routes/api/snapshot.mjs +8 -8
  398. package/dist/astro/routes/api/taxonomies/_name_/reorder.d.mts.map +1 -1
  399. package/dist/astro/routes/api/taxonomies/_name_/reorder.mjs +31 -28
  400. package/dist/astro/routes/api/taxonomies/_name_/reorder.mjs.map +1 -1
  401. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.d.mts.map +1 -1
  402. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs +31 -28
  403. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs.map +1 -1
  404. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.d.mts.map +1 -1
  405. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs +32 -29
  406. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs.map +1 -1
  407. package/dist/astro/routes/api/taxonomies/_name_/terms/index.d.mts.map +1 -1
  408. package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs +31 -28
  409. package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs.map +1 -1
  410. package/dist/astro/routes/api/taxonomies/_name_/translations.mjs +28 -26
  411. package/dist/astro/routes/api/taxonomies/_name_/translations.mjs.map +1 -1
  412. package/dist/astro/routes/api/taxonomies/_name_.d.mts.map +1 -1
  413. package/dist/astro/routes/api/taxonomies/_name_.mjs +32 -29
  414. package/dist/astro/routes/api/taxonomies/_name_.mjs.map +1 -1
  415. package/dist/astro/routes/api/taxonomies/bulk-tag.mjs +44 -42
  416. package/dist/astro/routes/api/taxonomies/bulk-tag.mjs.map +1 -1
  417. package/dist/astro/routes/api/taxonomies/index.d.mts.map +1 -1
  418. package/dist/astro/routes/api/taxonomies/index.mjs +31 -28
  419. package/dist/astro/routes/api/taxonomies/index.mjs.map +1 -1
  420. package/dist/astro/routes/api/themes/preview.mjs +6 -6
  421. package/dist/astro/routes/api/typegen.mjs +6 -6
  422. package/dist/astro/routes/api/visual-editing/action-token.mjs +6 -6
  423. package/dist/astro/routes/api/visual-editing/content/_collection_/_id_/publish.mjs +21 -21
  424. package/dist/astro/routes/api/visual-editing/toolbar-labels.mjs +4 -4
  425. package/dist/astro/routes/api/well-known/auth.mjs +1 -1
  426. package/dist/astro/routes/api/well-known/oauth-authorization-server.mjs +2 -2
  427. package/dist/astro/routes/api/well-known/oauth-protected-resource.mjs +2 -2
  428. package/dist/astro/routes/api/widget-areas/_name_/reorder.d.mts.map +1 -1
  429. package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs +20 -19
  430. package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs.map +1 -1
  431. package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.d.mts.map +1 -1
  432. package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs +26 -23
  433. package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs.map +1 -1
  434. package/dist/astro/routes/api/widget-areas/_name_/widgets.d.mts.map +1 -1
  435. package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs +25 -22
  436. package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs.map +1 -1
  437. package/dist/astro/routes/api/widget-areas/_name_.d.mts.map +1 -1
  438. package/dist/astro/routes/api/widget-areas/_name_.mjs +14 -11
  439. package/dist/astro/routes/api/widget-areas/_name_.mjs.map +1 -1
  440. package/dist/astro/routes/api/widget-areas/index.d.mts.map +1 -1
  441. package/dist/astro/routes/api/widget-areas/index.mjs +25 -22
  442. package/dist/astro/routes/api/widget-areas/index.mjs.map +1 -1
  443. package/dist/astro/routes/api/widget-components.mjs +5 -5
  444. package/dist/astro/routes/robots.txt.d.mts.map +1 -1
  445. package/dist/astro/routes/robots.txt.mjs +43 -8
  446. package/dist/astro/routes/robots.txt.mjs.map +1 -1
  447. package/dist/astro/routes/sitemap-_collection_.xml.mjs +19 -12
  448. package/dist/astro/routes/sitemap-_collection_.xml.mjs.map +1 -1
  449. package/dist/astro/routes/sitemap.xml.mjs +16 -9
  450. package/dist/astro/routes/sitemap.xml.mjs.map +1 -1
  451. package/dist/astro/types.d.mts +19 -17
  452. package/dist/astro/types.d.mts.map +1 -1
  453. package/dist/audit-B8XE-0UV.mjs +127 -0
  454. package/dist/audit-B8XE-0UV.mjs.map +1 -0
  455. package/dist/auth/providers/github.d.mts +1 -1
  456. package/dist/auth/providers/google.d.mts +1 -1
  457. package/dist/auth/providers/microsoft.d.mts +1 -1
  458. package/dist/authoritative-records-LPtrIGOY.mjs +5183 -0
  459. package/dist/authoritative-records-LPtrIGOY.mjs.map +1 -0
  460. package/dist/authorize-CoDsRRp5.mjs +74 -0
  461. package/dist/authorize-CoDsRRp5.mjs.map +1 -0
  462. package/dist/backup-2Wj-hTCN.mjs +246 -0
  463. package/dist/backup-2Wj-hTCN.mjs.map +1 -0
  464. package/dist/block-types-C3gJEe7l.mjs +132 -0
  465. package/dist/block-types-C3gJEe7l.mjs.map +1 -0
  466. package/dist/block-values-CgbMtSGU.mjs +215 -0
  467. package/dist/block-values-CgbMtSGU.mjs.map +1 -0
  468. package/dist/byline-CzGZC2Zs.mjs +922 -0
  469. package/dist/byline-CzGZC2Zs.mjs.map +1 -0
  470. package/dist/byline-fields-B1qHvRps.mjs +280 -0
  471. package/dist/byline-fields-B1qHvRps.mjs.map +1 -0
  472. package/dist/byline-fields-vYd_4Q1e.mjs +123 -0
  473. package/dist/byline-fields-vYd_4Q1e.mjs.map +1 -0
  474. package/dist/byline-registry-BhzpO41z.mjs +406 -0
  475. package/dist/byline-registry-BhzpO41z.mjs.map +1 -0
  476. package/dist/bylines-BF555iIz.mjs +150 -0
  477. package/dist/bylines-BF555iIz.mjs.map +1 -0
  478. package/dist/bylines-DJx6IWWi.mjs +234 -0
  479. package/dist/bylines-DJx6IWWi.mjs.map +1 -0
  480. package/dist/cache-BWzswWB-.mjs +151 -0
  481. package/dist/cache-BWzswWB-.mjs.map +1 -0
  482. package/dist/canonical-DjF_z6GI.mjs +174 -0
  483. package/dist/canonical-DjF_z6GI.mjs.map +1 -0
  484. package/dist/capture-triggers-D7g3fOZj.mjs +362 -0
  485. package/dist/capture-triggers-D7g3fOZj.mjs.map +1 -0
  486. package/dist/challenge-store-Cfjdvw86.mjs +51 -0
  487. package/dist/challenge-store-Cfjdvw86.mjs.map +1 -0
  488. package/dist/checksum-BF4acJwn.mjs +162 -0
  489. package/dist/checksum-BF4acJwn.mjs.map +1 -0
  490. package/dist/chrome-tags-BDs29G3g.mjs +24 -0
  491. package/dist/chrome-tags-BDs29G3g.mjs.map +1 -0
  492. package/dist/chunks-CYBOL-zn.mjs +25 -0
  493. package/dist/chunks-CYBOL-zn.mjs.map +1 -0
  494. package/dist/cli/index.mjs +146 -130
  495. package/dist/cli/index.mjs.map +1 -1
  496. package/dist/client/cf-access.d.mts +1 -1
  497. package/dist/client/index.d.mts +47 -47
  498. package/dist/client/index.d.mts.map +1 -1
  499. package/dist/client/index.mjs +14 -11
  500. package/dist/client/index.mjs.map +1 -1
  501. package/dist/collection-slugs-cache-B2J5aESO.mjs +91 -0
  502. package/dist/collection-slugs-cache-B2J5aESO.mjs.map +1 -0
  503. package/dist/comment-DV7dybcs.mjs +335 -0
  504. package/dist/comment-DV7dybcs.mjs.map +1 -0
  505. package/dist/comment-reaction-CWwqiT6x.mjs +85 -0
  506. package/dist/comment-reaction-CWwqiT6x.mjs.map +1 -0
  507. package/dist/comments-DVjWJm8X.mjs +99 -0
  508. package/dist/comments-DVjWJm8X.mjs.map +1 -0
  509. package/dist/comments-Q-ILHCEI.mjs +195 -0
  510. package/dist/comments-Q-ILHCEI.mjs.map +1 -0
  511. package/dist/components-DnOmvvgg.mjs +112 -0
  512. package/dist/components-DnOmvvgg.mjs.map +1 -0
  513. package/dist/config-9IzA83_U.d.mts +6811 -0
  514. package/dist/config-9IzA83_U.d.mts.map +1 -0
  515. package/dist/config-BdQzFtmR.mjs +228 -0
  516. package/dist/config-BdQzFtmR.mjs.map +1 -0
  517. package/dist/config-Cs2RBkJ6.d.mts +41 -0
  518. package/dist/config-Cs2RBkJ6.d.mts.map +1 -0
  519. package/dist/config-Cs_AwWXI.mjs +106 -0
  520. package/dist/config-Cs_AwWXI.mjs.map +1 -0
  521. package/dist/connection-CiXgZyCY.mjs +36 -0
  522. package/dist/connection-CiXgZyCY.mjs.map +1 -0
  523. package/dist/content-Dt0Os_WQ.mjs +2109 -0
  524. package/dist/content-Dt0Os_WQ.mjs.map +1 -0
  525. package/dist/content-list-query-BK26u9Ly.d.mts +26 -0
  526. package/dist/content-list-query-BK26u9Ly.d.mts.map +1 -0
  527. package/dist/content-policy-BLDbNJOb.mjs +46 -0
  528. package/dist/content-policy-BLDbNJOb.mjs.map +1 -0
  529. package/dist/content-repair-CjwbLy4m.mjs +442 -0
  530. package/dist/content-repair-CjwbLy4m.mjs.map +1 -0
  531. package/dist/context-ErV7UdQY.mjs +2089 -0
  532. package/dist/context-ErV7UdQY.mjs.map +1 -0
  533. package/dist/credits-BRyjafiF.mjs +110 -0
  534. package/dist/credits-BRyjafiF.mjs.map +1 -0
  535. package/dist/cron-Bm5xa7tv.mjs +306 -0
  536. package/dist/cron-Bm5xa7tv.mjs.map +1 -0
  537. package/dist/dashboard-DVxQ5XiI.mjs +168 -0
  538. package/dist/dashboard-DVxQ5XiI.mjs.map +1 -0
  539. package/dist/database/migration-lock.d.mts +17 -4
  540. package/dist/database/migration-lock.d.mts.map +1 -1
  541. package/dist/database/migration-lock.mjs +33 -6
  542. package/dist/database/migration-lock.mjs.map +1 -1
  543. package/dist/db/index.d.mts +3 -3
  544. package/dist/db/index.mjs +2 -2
  545. package/dist/db/libsql-migrations.d.mts +1 -1
  546. package/dist/db/libsql-migrations.mjs +5 -5
  547. package/dist/db/libsql.d.mts +1 -1
  548. package/dist/db/postgres-migrations.d.mts +1 -1
  549. package/dist/db/postgres-migrations.mjs +5 -5
  550. package/dist/db/postgres.d.mts +1 -1
  551. package/dist/db/sqlite-migrations.d.mts +1 -1
  552. package/dist/db/sqlite-migrations.mjs +5 -5
  553. package/dist/db/sqlite.d.mts +1 -1
  554. package/dist/db/sqlite.mjs +1 -1
  555. package/dist/db-errors-unnO6yiZ.mjs +65 -0
  556. package/dist/db-errors-unnO6yiZ.mjs.map +1 -0
  557. package/dist/default-B9Tf2n94.mjs +81 -0
  558. package/dist/default-B9Tf2n94.mjs.map +1 -0
  559. package/dist/deferred-tasks-CpPEqsga.d.mts +9 -0
  560. package/dist/deferred-tasks-CpPEqsga.d.mts.map +1 -0
  561. package/dist/destination-DR3IHjmy.mjs +18 -0
  562. package/dist/destination-DR3IHjmy.mjs.map +1 -0
  563. package/dist/dev-typegen-ZeWYV8Jp.mjs +29 -0
  564. package/dist/dev-typegen-ZeWYV8Jp.mjs.map +1 -0
  565. package/dist/device-flow-BbYNZ9Xi.mjs +521 -0
  566. package/dist/device-flow-BbYNZ9Xi.mjs.map +1 -0
  567. package/dist/digest-DlBa7kJl.mjs +194 -0
  568. package/dist/digest-DlBa7kJl.mjs.map +1 -0
  569. package/dist/direct-executor-5T8gkhvA.mjs +117 -0
  570. package/dist/direct-executor-5T8gkhvA.mjs.map +1 -0
  571. package/dist/dist-DY0aOmAP.mjs +810 -0
  572. package/dist/dist-DY0aOmAP.mjs.map +1 -0
  573. package/dist/email-console-v3OM8It-.mjs +50 -0
  574. package/dist/email-console-v3OM8It-.mjs.map +1 -0
  575. package/dist/email-locale-CoZo-oZx.mjs +25 -0
  576. package/dist/email-locale-CoZo-oZx.mjs.map +1 -0
  577. package/dist/emdash-runtime-DwezbIqQ.mjs +4392 -0
  578. package/dist/emdash-runtime-DwezbIqQ.mjs.map +1 -0
  579. package/dist/enrich-C3XIJi0O.mjs +194 -0
  580. package/dist/enrich-C3XIJi0O.mjs.map +1 -0
  581. package/dist/entry-lock-CY7XpdSw.d.mts +4568 -0
  582. package/dist/entry-lock-CY7XpdSw.d.mts.map +1 -0
  583. package/dist/entry-lock-DDuWaAiP.mjs +1211 -0
  584. package/dist/entry-lock-DDuWaAiP.mjs.map +1 -0
  585. package/dist/entry-lock-D_Og9Gy3.mjs +163 -0
  586. package/dist/entry-lock-D_Og9Gy3.mjs.map +1 -0
  587. package/dist/entry-locks-Cp8_BcQQ.mjs +167 -0
  588. package/dist/entry-locks-Cp8_BcQQ.mjs.map +1 -0
  589. package/dist/env-types-Br8uywYA.mjs +38 -0
  590. package/dist/env-types-Br8uywYA.mjs.map +1 -0
  591. package/dist/error-CT2SsX5S.mjs +90 -0
  592. package/dist/error-CT2SsX5S.mjs.map +1 -0
  593. package/dist/errors-BMaCpLeS.mjs +479 -0
  594. package/dist/errors-BMaCpLeS.mjs.map +1 -0
  595. package/dist/errors-DlJwot7q.mjs +120 -0
  596. package/dist/errors-DlJwot7q.mjs.map +1 -0
  597. package/dist/escape-BfbDyuQ-.mjs +9 -0
  598. package/dist/escape-BfbDyuQ-.mjs.map +1 -0
  599. package/dist/fence-BOD3SxZG.mjs +162 -0
  600. package/dist/fence-BOD3SxZG.mjs.map +1 -0
  601. package/dist/field-defs-cache-C7sR7ZeU.mjs +77 -0
  602. package/dist/field-defs-cache-C7sR7ZeU.mjs.map +1 -0
  603. package/dist/field-map-C_rDXfdJ.mjs +84 -0
  604. package/dist/field-map-C_rDXfdJ.mjs.map +1 -0
  605. package/dist/focal-point-CgCcr1Ca.mjs +23 -0
  606. package/dist/focal-point-CgCcr1Ca.mjs.map +1 -0
  607. package/dist/fts-manager-BzFo0xx6.mjs +483 -0
  608. package/dist/fts-manager-BzFo0xx6.mjs.map +1 -0
  609. package/dist/gc-B_c3DPpi.mjs +75 -0
  610. package/dist/gc-B_c3DPpi.mjs.map +1 -0
  611. package/dist/hash-A-o2ZX8O.mjs +37 -0
  612. package/dist/hash-A-o2ZX8O.mjs.map +1 -0
  613. package/dist/hook-result-f8t7hIuu.d.mts +31 -0
  614. package/dist/hook-result-f8t7hIuu.d.mts.map +1 -0
  615. package/dist/hreflang-BpUK9Lcu.mjs +105 -0
  616. package/dist/hreflang-BpUK9Lcu.mjs.map +1 -0
  617. package/dist/hreflang-D07R-RbI.d.mts +50 -0
  618. package/dist/hreflang-D07R-RbI.d.mts.map +1 -0
  619. package/dist/http-route-dispatch-C2Ep2Uf6.mjs +342 -0
  620. package/dist/http-route-dispatch-C2Ep2Uf6.mjs.map +1 -0
  621. package/dist/identity-BivQ8wkV.mjs +35 -0
  622. package/dist/identity-BivQ8wkV.mjs.map +1 -0
  623. package/dist/import-B4UvHNJz.mjs +2126 -0
  624. package/dist/import-B4UvHNJz.mjs.map +1 -0
  625. package/dist/index-C37Ty40w.d.mts +623 -0
  626. package/dist/index-C37Ty40w.d.mts.map +1 -0
  627. package/dist/index.d.mts +23 -23
  628. package/dist/index.mjs +112 -108
  629. package/dist/install-finalization-BbYaB4wj.mjs +58 -0
  630. package/dist/install-finalization-BbYaB4wj.mjs.map +1 -0
  631. package/dist/json-recordset-BjYIWFkV.mjs +12 -0
  632. package/dist/json-recordset-BjYIWFkV.mjs.map +1 -0
  633. package/dist/json-schema-Cde7le0s.mjs +15 -0
  634. package/dist/json-schema-Cde7le0s.mjs.map +1 -0
  635. package/dist/keys-CusTXpw-.mjs +61 -0
  636. package/dist/keys-CusTXpw-.mjs.map +1 -0
  637. package/dist/kinds-DogmNB6n.mjs +974 -0
  638. package/dist/kinds-DogmNB6n.mjs.map +1 -0
  639. package/dist/lifecycle-BLCoCz4T.mjs +25 -0
  640. package/dist/lifecycle-BLCoCz4T.mjs.map +1 -0
  641. package/dist/load-Dds3KhXr.mjs +28 -0
  642. package/dist/load-Dds3KhXr.mjs.map +1 -0
  643. package/dist/loader-D4w4XE7q.mjs +1420 -0
  644. package/dist/loader-D4w4XE7q.mjs.map +1 -0
  645. package/dist/loops-IYgzQdQu.mjs +205 -0
  646. package/dist/loops-IYgzQdQu.mjs.map +1 -0
  647. package/dist/manifest-builder-CGF5kujD.mjs +196 -0
  648. package/dist/manifest-builder-CGF5kujD.mjs.map +1 -0
  649. package/dist/manifest-schema-B0BxPSjB.mjs +497 -0
  650. package/dist/manifest-schema-B0BxPSjB.mjs.map +1 -0
  651. package/dist/marketplace-DNvEGLqU.mjs +257 -0
  652. package/dist/marketplace-DNvEGLqU.mjs.map +1 -0
  653. package/dist/media/image-endpoint.d.mts +3 -2
  654. package/dist/media/image-endpoint.d.mts.map +1 -1
  655. package/dist/media/image-endpoint.mjs +17 -8
  656. package/dist/media/image-endpoint.mjs.map +1 -1
  657. package/dist/media/index.d.mts +1 -1
  658. package/dist/media/index.mjs +7 -6
  659. package/dist/media/index.mjs.map +1 -1
  660. package/dist/media/local-runtime.d.mts +14 -14
  661. package/dist/media/local-runtime.d.mts.map +1 -1
  662. package/dist/media/local-runtime.mjs +18 -8
  663. package/dist/media/local-runtime.mjs.map +1 -1
  664. package/dist/media-BL9MRrSG.mjs +294 -0
  665. package/dist/media-BL9MRrSG.mjs.map +1 -0
  666. package/dist/media-B_x5B9EA.mjs +373 -0
  667. package/dist/media-B_x5B9EA.mjs.map +1 -0
  668. package/dist/media-allowlist-CpmqBbIQ.mjs +45 -0
  669. package/dist/media-allowlist-CpmqBbIQ.mjs.map +1 -0
  670. package/dist/media-folders-CNs_A_B-.mjs +210 -0
  671. package/dist/media-folders-CNs_A_B-.mjs.map +1 -0
  672. package/dist/media-qTTHVkls.mjs +416 -0
  673. package/dist/media-qTTHVkls.mjs.map +1 -0
  674. package/dist/media-url-GJboA1fl.mjs +43 -0
  675. package/dist/media-url-GJboA1fl.mjs.map +1 -0
  676. package/dist/media-usage-ClWgrX0d.mjs +282 -0
  677. package/dist/media-usage-ClWgrX0d.mjs.map +1 -0
  678. package/dist/media-usage-activation-B8Fjtq0h.mjs +78 -0
  679. package/dist/media-usage-activation-B8Fjtq0h.mjs.map +1 -0
  680. package/dist/media-usage-work-L8-Au4j-.mjs +1036 -0
  681. package/dist/media-usage-work-L8-Au4j-.mjs.map +1 -0
  682. package/dist/media-usage-work-LXgze5j9.mjs +151 -0
  683. package/dist/media-usage-work-LXgze5j9.mjs.map +1 -0
  684. package/dist/menus-BAxcbsbv.mjs +818 -0
  685. package/dist/menus-BAxcbsbv.mjs.map +1 -0
  686. package/dist/menus-BI6oBXco.mjs +92 -0
  687. package/dist/menus-BI6oBXco.mjs.map +1 -0
  688. package/dist/menus-fvGFd4m6.mjs +3725 -0
  689. package/dist/menus-fvGFd4m6.mjs.map +1 -0
  690. package/dist/migrations/index.d.mts +1 -1
  691. package/dist/migrations/index.d.mts.map +1 -1
  692. package/dist/migrations/index.mjs +4 -4
  693. package/dist/mime-DwhtRyUt.mjs +81 -0
  694. package/dist/mime-DwhtRyUt.mjs.map +1 -0
  695. package/dist/mode-DIDSUwuN.mjs +23 -0
  696. package/dist/mode-DIDSUwuN.mjs.map +1 -0
  697. package/dist/node-sqlite-compat-Ddr_mlR9.mjs +63 -0
  698. package/dist/node-sqlite-compat-Ddr_mlR9.mjs.map +1 -0
  699. package/dist/normalize-Ip_hFAm8.mjs +216 -0
  700. package/dist/normalize-Ip_hFAm8.mjs.map +1 -0
  701. package/dist/oauth-authorization-CcMgeT8R.mjs +274 -0
  702. package/dist/oauth-authorization-CcMgeT8R.mjs.map +1 -0
  703. package/dist/oauth-clients-C_osi0PU.mjs +266 -0
  704. package/dist/oauth-clients-C_osi0PU.mjs.map +1 -0
  705. package/dist/oauth-state-store-DGLP-6CK.mjs +50 -0
  706. package/dist/oauth-state-store-DGLP-6CK.mjs.map +1 -0
  707. package/dist/oauth-user-lookup-z77Ee0Hm.mjs +26 -0
  708. package/dist/oauth-user-lookup-z77Ee0Hm.mjs.map +1 -0
  709. package/dist/object-cache/memory.d.mts +1 -1
  710. package/dist/object-cache-EjasjtoQ.mjs +586 -0
  711. package/dist/object-cache-EjasjtoQ.mjs.map +1 -0
  712. package/dist/options-CmUpkyKW.d.mts +81 -0
  713. package/dist/options-CmUpkyKW.d.mts.map +1 -0
  714. package/dist/ownership-DCk5NutQ.mjs +12 -0
  715. package/dist/ownership-DCk5NutQ.mjs.map +1 -0
  716. package/dist/page/index.d.mts +2 -2
  717. package/dist/page/index.mjs +14 -7
  718. package/dist/page/index.mjs.map +1 -1
  719. package/dist/parse-2W-E2f7w.mjs +81 -0
  720. package/dist/parse-2W-E2f7w.mjs.map +1 -0
  721. package/dist/parse-6pN8Xqg5.d.mts +176 -0
  722. package/dist/parse-6pN8Xqg5.d.mts.map +1 -0
  723. package/dist/passkey-config-DTTZB6EI.mjs +46 -0
  724. package/dist/passkey-config-DTTZB6EI.mjs.map +1 -0
  725. package/dist/paths-CQA62503.mjs +77 -0
  726. package/dist/paths-CQA62503.mjs.map +1 -0
  727. package/dist/patterns-CryGz_EV.mjs +159 -0
  728. package/dist/patterns-CryGz_EV.mjs.map +1 -0
  729. package/dist/placeholder-BlfXkucE.d.mts +313 -0
  730. package/dist/placeholder-BlfXkucE.d.mts.map +1 -0
  731. package/dist/plan-B95eiwnF.mjs +135 -0
  732. package/dist/plan-B95eiwnF.mjs.map +1 -0
  733. package/dist/plugin-test-runtime.d.mts +14 -14
  734. package/dist/plugin-test-runtime.d.mts.map +1 -1
  735. package/dist/plugin-test-runtime.mjs +121 -117
  736. package/dist/plugin-tool-name-BDA7m4Xa.mjs +27 -0
  737. package/dist/plugin-tool-name-BDA7m4Xa.mjs.map +1 -0
  738. package/dist/plugin-types.d.mts +2 -2
  739. package/dist/plugin-utils.d.mts +12 -12
  740. package/dist/plugins/adapt-sandbox-entry.d.mts +12 -12
  741. package/dist/plugins/adapt-sandbox-entry.d.mts.map +1 -1
  742. package/dist/plugins/adapt-sandbox-entry.mjs +9 -8
  743. package/dist/plugins/adapt-sandbox-entry.mjs.map +1 -1
  744. package/dist/plugins/host.d.mts +5 -5
  745. package/dist/plugins/host.mjs +57 -51
  746. package/dist/plugins-BhxLJ008.mjs +261 -0
  747. package/dist/plugins-BhxLJ008.mjs.map +1 -0
  748. package/dist/policy-DOJ2sPqB.mjs +53 -0
  749. package/dist/policy-DOJ2sPqB.mjs.map +1 -0
  750. package/dist/portable-text-RCMpCj47.mjs +311 -0
  751. package/dist/portable-text-RCMpCj47.mjs.map +1 -0
  752. package/dist/preview-DFwL5APO.mjs +107 -0
  753. package/dist/preview-DFwL5APO.mjs.map +1 -0
  754. package/dist/protocol-B-ztxp_y.d.mts +65 -0
  755. package/dist/protocol-B-ztxp_y.d.mts.map +1 -0
  756. package/dist/public-plugin-api-routes-ik4fPZMv.mjs +316 -0
  757. package/dist/public-plugin-api-routes-ik4fPZMv.mjs.map +1 -0
  758. package/dist/public-submission-C5JZIykp.mjs +251 -0
  759. package/dist/public-submission-C5JZIykp.mjs.map +1 -0
  760. package/dist/public-url-CQwzRljH.mjs +101 -0
  761. package/dist/public-url-CQwzRljH.mjs.map +1 -0
  762. package/dist/query-BFHjCzSh.mjs +37 -0
  763. package/dist/query-BFHjCzSh.mjs.map +1 -0
  764. package/dist/query-DuwyFr5Z.mjs +41 -0
  765. package/dist/query-DuwyFr5Z.mjs.map +1 -0
  766. package/dist/query-eR_Nz70M.mjs +1157 -0
  767. package/dist/query-eR_Nz70M.mjs.map +1 -0
  768. package/dist/range-BQWPjWgQ.mjs +51 -0
  769. package/dist/range-BQWPjWgQ.mjs.map +1 -0
  770. package/dist/rate-limit-mPKeQ3sm.mjs +127 -0
  771. package/dist/rate-limit-mPKeQ3sm.mjs.map +1 -0
  772. package/dist/receipt-CmUpyuW5.mjs +43 -0
  773. package/dist/receipt-CmUpyuW5.mjs.map +1 -0
  774. package/dist/redirect-BtiMkehU.mjs +19 -0
  775. package/dist/redirect-BtiMkehU.mjs.map +1 -0
  776. package/dist/redirect-DcmNMvOs.mjs +423 -0
  777. package/dist/redirect-DcmNMvOs.mjs.map +1 -0
  778. package/dist/redirect-paths-K5i3xYfR.mjs +36 -0
  779. package/dist/redirect-paths-K5i3xYfR.mjs.map +1 -0
  780. package/dist/redirects-BA_TvtuH.mjs +148 -0
  781. package/dist/redirects-BA_TvtuH.mjs.map +1 -0
  782. package/dist/redirects-BIrRvgn4.mjs +446 -0
  783. package/dist/redirects-BIrRvgn4.mjs.map +1 -0
  784. package/dist/registry/testing.mjs +3 -3
  785. package/dist/registry-DymfZkAN.mjs +8374 -0
  786. package/dist/registry-DymfZkAN.mjs.map +1 -0
  787. package/dist/relations-DrEs3Sc1.mjs +789 -0
  788. package/dist/relations-DrEs3Sc1.mjs.map +1 -0
  789. package/dist/request-cache-5z2WzWmh.mjs +104 -0
  790. package/dist/request-cache-5z2WzWmh.mjs.map +1 -0
  791. package/dist/request-context.d.mts +12 -1
  792. package/dist/request-context.d.mts.map +1 -1
  793. package/dist/request-context.mjs.map +1 -1
  794. package/dist/request-meta-o8RIf9pa.mjs +141 -0
  795. package/dist/request-meta-o8RIf9pa.mjs.map +1 -0
  796. package/dist/resolve-CVy9xgy_.mjs +102 -0
  797. package/dist/resolve-CVy9xgy_.mjs.map +1 -0
  798. package/dist/resolve-DdNXBJSr.mjs +199 -0
  799. package/dist/resolve-DdNXBJSr.mjs.map +1 -0
  800. package/dist/revision-Dx7Uth1X.mjs +374 -0
  801. package/dist/revision-Dx7Uth1X.mjs.map +1 -0
  802. package/dist/route-cache-DAG5dPhh.mjs +20 -0
  803. package/dist/route-cache-DAG5dPhh.mjs.map +1 -0
  804. package/dist/route-wire-Xbsu8Vih.mjs +197 -0
  805. package/dist/route-wire-Xbsu8Vih.mjs.map +1 -0
  806. package/dist/routes-YQkSOsws.mjs +272 -0
  807. package/dist/routes-YQkSOsws.mjs.map +1 -0
  808. package/dist/runner-CLorw5vo.mjs +6669 -0
  809. package/dist/runner-CLorw5vo.mjs.map +1 -0
  810. package/dist/runner-g1A9P-wD.d.mts +73 -0
  811. package/dist/runner-g1A9P-wD.d.mts.map +1 -0
  812. package/dist/runtime.d.mts +13 -13
  813. package/dist/runtime.mjs +6 -4
  814. package/dist/runtime.mjs.map +1 -1
  815. package/dist/schema/project-env-types.mjs +49 -43
  816. package/dist/schema/project-env-types.mjs.map +1 -1
  817. package/dist/schema-Bss8qImF.mjs +13 -0
  818. package/dist/schema-Bss8qImF.mjs.map +1 -0
  819. package/dist/schema-C036pqEw.mjs +815 -0
  820. package/dist/schema-C036pqEw.mjs.map +1 -0
  821. package/dist/scopes-C_SoYl9x.mjs +34 -0
  822. package/dist/scopes-C_SoYl9x.mjs.map +1 -0
  823. package/dist/search-uNqCgePJ.mjs +450 -0
  824. package/dist/search-uNqCgePJ.mjs.map +1 -0
  825. package/dist/sections-BLusMa96.mjs +346 -0
  826. package/dist/sections-BLusMa96.mjs.map +1 -0
  827. package/dist/seed/index.d.mts +2 -2
  828. package/dist/seed/index.mjs +47 -41
  829. package/dist/seo/index.d.mts +3 -3
  830. package/dist/seo/index.mjs +32 -26
  831. package/dist/seo/index.mjs.map +1 -1
  832. package/dist/seo-BodxIpws.mjs +188 -0
  833. package/dist/seo-BodxIpws.mjs.map +1 -0
  834. package/dist/seo-DaMYIQY8.mjs +133 -0
  835. package/dist/seo-DaMYIQY8.mjs.map +1 -0
  836. package/dist/service-BuM1BRsA.mjs +150 -0
  837. package/dist/service-BuM1BRsA.mjs.map +1 -0
  838. package/dist/session-user-2DpQDMKw.mjs +61 -0
  839. package/dist/session-user-2DpQDMKw.mjs.map +1 -0
  840. package/dist/settings-B3ZmPF_8.mjs +73 -0
  841. package/dist/settings-B3ZmPF_8.mjs.map +1 -0
  842. package/dist/settings-P5hwPX6_.mjs +66 -0
  843. package/dist/settings-P5hwPX6_.mjs.map +1 -0
  844. package/dist/settings-yIqoN-Ok.mjs +519 -0
  845. package/dist/settings-yIqoN-Ok.mjs.map +1 -0
  846. package/dist/setup-complete-eu6MUQnt.mjs +65 -0
  847. package/dist/setup-complete-eu6MUQnt.mjs.map +1 -0
  848. package/dist/setup-nonce-CyPOapqY.mjs +25 -0
  849. package/dist/setup-nonce-CyPOapqY.mjs.map +1 -0
  850. package/dist/site-domain-8lEJl_0U.mjs +131 -0
  851. package/dist/site-domain-8lEJl_0U.mjs.map +1 -0
  852. package/dist/site-settings-uPkW0e6o.mjs +50 -0
  853. package/dist/site-settings-uPkW0e6o.mjs.map +1 -0
  854. package/dist/site-url-25SGVXwL.mjs +45 -0
  855. package/dist/site-url-25SGVXwL.mjs.map +1 -0
  856. package/dist/sitemap-name-DTK7CYnY.mjs +26 -0
  857. package/dist/sitemap-name-DTK7CYnY.mjs.map +1 -0
  858. package/dist/slug-BEDl2IJY.mjs +16 -0
  859. package/dist/slug-BEDl2IJY.mjs.map +1 -0
  860. package/dist/slugify-BDEG9pLk.mjs +22 -0
  861. package/dist/slugify-BDEG9pLk.mjs.map +1 -0
  862. package/dist/snapshot-CvkIBRLY.mjs +414 -0
  863. package/dist/snapshot-CvkIBRLY.mjs.map +1 -0
  864. package/dist/ssrf-mcCKMH6B.mjs +406 -0
  865. package/dist/ssrf-mcCKMH6B.mjs.map +1 -0
  866. package/dist/stage-BQfGzGOy.mjs +662 -0
  867. package/dist/stage-BQfGzGOy.mjs.map +1 -0
  868. package/dist/staged-B5vQGeSf.mjs +686 -0
  869. package/dist/staged-B5vQGeSf.mjs.map +1 -0
  870. package/dist/state-dO6t6OxV.mjs +178 -0
  871. package/dist/state-dO6t6OxV.mjs.map +1 -0
  872. package/dist/status-DSURZwKS.mjs +30 -0
  873. package/dist/status-DSURZwKS.mjs.map +1 -0
  874. package/dist/storage/local.d.mts +1 -1
  875. package/dist/storage/local.mjs +3 -3
  876. package/dist/storage/s3.d.mts +1 -1
  877. package/dist/storage/s3.mjs +1 -1
  878. package/dist/storage-query-Cy0SZ8iG.d.mts +1619 -0
  879. package/dist/storage-query-Cy0SZ8iG.d.mts.map +1 -0
  880. package/dist/tar-DWzcUZ_Q.mjs +449 -0
  881. package/dist/tar-DWzcUZ_Q.mjs.map +1 -0
  882. package/dist/target-C9htUbrT.mjs +27 -0
  883. package/dist/target-C9htUbrT.mjs.map +1 -0
  884. package/dist/taxonomies-By2aGvq2.mjs +729 -0
  885. package/dist/taxonomies-By2aGvq2.mjs.map +1 -0
  886. package/dist/taxonomies-CVRd_jz0.mjs +937 -0
  887. package/dist/taxonomies-CVRd_jz0.mjs.map +1 -0
  888. package/dist/taxonomy-BG_xu2Qf.mjs +563 -0
  889. package/dist/taxonomy-BG_xu2Qf.mjs.map +1 -0
  890. package/dist/tokens-U5vzgSrM.mjs +171 -0
  891. package/dist/tokens-U5vzgSrM.mjs.map +1 -0
  892. package/dist/transaction-CkoQ5wqQ.mjs +29 -0
  893. package/dist/transaction-CkoQ5wqQ.mjs.map +1 -0
  894. package/dist/transfer-DA0OSfaT.mjs +8873 -0
  895. package/dist/transfer-DA0OSfaT.mjs.map +1 -0
  896. package/dist/transfer-Pyf3d7ka.mjs +166 -0
  897. package/dist/transfer-Pyf3d7ka.mjs.map +1 -0
  898. package/dist/transfer-download-cX7SuWEy.mjs +33 -0
  899. package/dist/transfer-download-cX7SuWEy.mjs.map +1 -0
  900. package/dist/transformations-DczubD4j.mjs +196 -0
  901. package/dist/transformations-DczubD4j.mjs.map +1 -0
  902. package/dist/transport-Dm5QzpT_.d.mts +42 -0
  903. package/dist/transport-Dm5QzpT_.d.mts.map +1 -0
  904. package/dist/transport-DtIrjEFO.mjs +137 -0
  905. package/dist/transport-DtIrjEFO.mjs.map +1 -0
  906. package/dist/trusted-proxy-CDRd5Kmw.mjs +51 -0
  907. package/dist/trusted-proxy-CDRd5Kmw.mjs.map +1 -0
  908. package/dist/turnstile-Ct5YuFNY.mjs +58 -0
  909. package/dist/turnstile-Ct5YuFNY.mjs.map +1 -0
  910. package/dist/types-Bgujop4S.d.mts +374 -0
  911. package/dist/types-Bgujop4S.d.mts.map +1 -0
  912. package/dist/types-BirHUEXt.mjs +18 -0
  913. package/dist/types-BirHUEXt.mjs.map +1 -0
  914. package/dist/types-BqJgTL_y.d.mts +293 -0
  915. package/dist/types-BqJgTL_y.d.mts.map +1 -0
  916. package/dist/types-C-lrOt9T.d.mts +87 -0
  917. package/dist/types-C-lrOt9T.d.mts.map +1 -0
  918. package/dist/types-CCEHAhOv.d.mts +916 -0
  919. package/dist/types-CCEHAhOv.d.mts.map +1 -0
  920. package/dist/types-CLVwYRBr.d.mts +227 -0
  921. package/dist/types-CLVwYRBr.d.mts.map +1 -0
  922. package/dist/types-C_asjp1J.mjs +201 -0
  923. package/dist/types-C_asjp1J.mjs.map +1 -0
  924. package/dist/types-CadaL_k8.d.mts +366 -0
  925. package/dist/types-CadaL_k8.d.mts.map +1 -0
  926. package/dist/types-DVbTb4Hk.mjs +77 -0
  927. package/dist/types-DVbTb4Hk.mjs.map +1 -0
  928. package/dist/types-Ddku19Zw.d.mts +209 -0
  929. package/dist/types-Ddku19Zw.d.mts.map +1 -0
  930. package/dist/types-DwhEvIVb.mjs +133 -0
  931. package/dist/types-DwhEvIVb.mjs.map +1 -0
  932. package/dist/types-FIiGQ3PE.mjs +16 -0
  933. package/dist/types-FIiGQ3PE.mjs.map +1 -0
  934. package/dist/types-OauzCOY0.mjs +37 -0
  935. package/dist/types-OauzCOY0.mjs.map +1 -0
  936. package/dist/types-mQGTpP-4.d.mts +1741 -0
  937. package/dist/types-mQGTpP-4.d.mts.map +1 -0
  938. package/dist/types-nbjz3Mgm.d.mts +125 -0
  939. package/dist/types-nbjz3Mgm.d.mts.map +1 -0
  940. package/dist/update-check-hW32-0pf.mjs +161 -0
  941. package/dist/update-check-hW32-0pf.mjs.map +1 -0
  942. package/dist/upload-attempts-Bpik1TLF.mjs +32 -0
  943. package/dist/upload-attempts-Bpik1TLF.mjs.map +1 -0
  944. package/dist/url-DTfGDJhI.mjs +104 -0
  945. package/dist/url-DTfGDJhI.mjs.map +1 -0
  946. package/dist/url-pattern-CJeCyNij.mjs +41 -0
  947. package/dist/url-pattern-CJeCyNij.mjs.map +1 -0
  948. package/dist/user-nQInBZbE.mjs +171 -0
  949. package/dist/user-nQInBZbE.mjs.map +1 -0
  950. package/dist/utils-govudc_U.mjs +442 -0
  951. package/dist/utils-govudc_U.mjs.map +1 -0
  952. package/dist/validate-BxLvcDYh.mjs +524 -0
  953. package/dist/validate-BxLvcDYh.mjs.map +1 -0
  954. package/dist/validate-mnoVfASU.d.mts +468 -0
  955. package/dist/validate-mnoVfASU.d.mts.map +1 -0
  956. package/dist/validation-DQDEvh87.mjs +221 -0
  957. package/dist/validation-DQDEvh87.mjs.map +1 -0
  958. package/dist/version-BOFfLiVT.mjs +49 -0
  959. package/dist/version-BOFfLiVT.mjs.map +1 -0
  960. package/dist/version-Dcvx_C9g.mjs +7 -0
  961. package/dist/version-Dcvx_C9g.mjs.map +1 -0
  962. package/dist/version-DzTJ3gD7.mjs +9 -0
  963. package/dist/version-DzTJ3gD7.mjs.map +1 -0
  964. package/dist/video-BX7AI5nJ.mjs +54 -0
  965. package/dist/video-BX7AI5nJ.mjs.map +1 -0
  966. package/dist/virtual-modules-CU29aip9.mjs +515 -0
  967. package/dist/virtual-modules-CU29aip9.mjs.map +1 -0
  968. package/dist/widgets-HIeFmZxt.mjs +121 -0
  969. package/dist/widgets-HIeFmZxt.mjs.map +1 -0
  970. package/dist/wxr-taxonomies-Dy2i2ON3.d.mts +34 -0
  971. package/dist/wxr-taxonomies-Dy2i2ON3.d.mts.map +1 -0
  972. package/dist/wxr-taxonomies-DyOGhl8W.mjs +454 -0
  973. package/dist/wxr-taxonomies-DyOGhl8W.mjs.map +1 -0
  974. package/dist/zod-generator-VxCPVDpo.mjs +425 -0
  975. package/dist/zod-generator-VxCPVDpo.mjs.map +1 -0
  976. package/package.json +7 -6
  977. package/src/api/authorize.ts +42 -0
  978. package/src/api/handlers/bulk-tag.ts +11 -3
  979. package/src/api/handlers/bylines.ts +6 -2
  980. package/src/api/handlers/content.ts +107 -7
  981. package/src/api/handlers/dashboard.ts +44 -14
  982. package/src/api/handlers/manifest.ts +1 -0
  983. package/src/api/handlers/menus.ts +24 -10
  984. package/src/api/handlers/plugins.ts +1 -0
  985. package/src/api/handlers/relations.ts +15 -1
  986. package/src/api/handlers/revision.ts +6 -2
  987. package/src/api/handlers/site-domain.ts +26 -10
  988. package/src/api/handlers/taxonomies.ts +27 -17
  989. package/src/api/schemas/settings.ts +2 -0
  990. package/src/api/types.ts +2 -0
  991. package/src/astro/image-endpoint.ts +23 -2
  992. package/src/astro/integration/dev-scheduler-bridge.ts +91 -0
  993. package/src/astro/integration/index.ts +48 -1
  994. package/src/astro/integration/routes.ts +8 -0
  995. package/src/astro/integration/runtime.ts +2 -1
  996. package/src/astro/integration/virtual-modules.ts +9 -16
  997. package/src/astro/integration/vite-config.ts +20 -23
  998. package/src/astro/middleware/auth.ts +3 -1
  999. package/src/astro/middleware/redirect.ts +202 -78
  1000. package/src/astro/middleware/request-context.ts +1 -0
  1001. package/src/astro/middleware.ts +35 -7
  1002. package/src/astro/prefetch.ts +7 -5
  1003. package/src/astro/public-plugin-api-routes.ts +10 -2
  1004. package/src/astro/routes/api/admin/plugins/registry/artifact.ts +1 -1
  1005. package/src/astro/routes/api/content/[collection]/[id]/discard-draft.ts +2 -1
  1006. package/src/astro/routes/api/content/[collection]/[id]/duplicate.ts +1 -5
  1007. package/src/astro/routes/api/content/[collection]/[id]/lock.ts +2 -2
  1008. package/src/astro/routes/api/content/[collection]/[id]/permanent.ts +2 -1
  1009. package/src/astro/routes/api/content/[collection]/[id]/publish.ts +2 -1
  1010. package/src/astro/routes/api/content/[collection]/[id]/restore.ts +2 -1
  1011. package/src/astro/routes/api/content/[collection]/[id]/schedule.ts +3 -2
  1012. package/src/astro/routes/api/content/[collection]/[id]/terms/[taxonomy].ts +9 -5
  1013. package/src/astro/routes/api/content/[collection]/[id]/translations.ts +14 -1
  1014. package/src/astro/routes/api/content/[collection]/[id]/unpublish.ts +2 -1
  1015. package/src/astro/routes/api/content/[collection]/[id].ts +18 -6
  1016. package/src/astro/routes/api/content/[collection]/index.ts +1 -5
  1017. package/src/astro/routes/api/dashboard.ts +6 -1
  1018. package/src/astro/routes/api/dev/scheduled-tasks.ts +20 -0
  1019. package/src/astro/routes/api/import/wordpress/analyze.ts +1 -16
  1020. package/src/astro/routes/api/import/wordpress/execute.ts +8 -3
  1021. package/src/astro/routes/api/import/wordpress-plugin/analyze.ts +4 -1
  1022. package/src/astro/routes/api/import/wordpress-plugin/execute.ts +34 -5
  1023. package/src/astro/routes/api/media/file/[...key].ts +13 -3
  1024. package/src/astro/routes/api/menus/[name]/items/[id].ts +3 -2
  1025. package/src/astro/routes/api/menus/[name]/items.ts +2 -1
  1026. package/src/astro/routes/api/menus/[name]/reorder.ts +2 -1
  1027. package/src/astro/routes/api/menus/[name]/translations.ts +2 -1
  1028. package/src/astro/routes/api/menus/[name].ts +3 -2
  1029. package/src/astro/routes/api/menus/index.ts +2 -1
  1030. package/src/astro/routes/api/redirects/[id].ts +15 -2
  1031. package/src/astro/routes/api/redirects/index.ts +5 -1
  1032. package/src/astro/routes/api/settings/domain.ts +2 -1
  1033. package/src/astro/routes/api/settings.ts +2 -1
  1034. package/src/astro/routes/api/setup/admin-verify.ts +7 -1
  1035. package/src/astro/routes/api/taxonomies/[name]/reorder.ts +2 -1
  1036. package/src/astro/routes/api/taxonomies/[name]/terms/[slug]/translations.ts +2 -1
  1037. package/src/astro/routes/api/taxonomies/[name]/terms/[slug].ts +3 -2
  1038. package/src/astro/routes/api/taxonomies/[name]/terms/index.ts +2 -1
  1039. package/src/astro/routes/api/taxonomies/[name].ts +3 -2
  1040. package/src/astro/routes/api/taxonomies/index.ts +2 -1
  1041. package/src/astro/routes/api/widget-areas/[name]/reorder.ts +2 -1
  1042. package/src/astro/routes/api/widget-areas/[name]/widgets/[id].ts +3 -2
  1043. package/src/astro/routes/api/widget-areas/[name]/widgets.ts +2 -1
  1044. package/src/astro/routes/api/widget-areas/[name].ts +2 -1
  1045. package/src/astro/routes/api/widget-areas/index.ts +2 -1
  1046. package/src/astro/routes/robots.txt.ts +33 -2
  1047. package/src/astro/types.ts +10 -1
  1048. package/src/auth/types.ts +10 -4
  1049. package/src/cache/redirect-paths.ts +56 -0
  1050. package/src/cache/route-cache.ts +22 -0
  1051. package/src/cli/commands/export-seed.ts +6 -4
  1052. package/src/cli/commands/import/wordpress.ts +3 -27
  1053. package/src/cli/commands/login.ts +37 -47
  1054. package/src/cli/commands/migrate.ts +36 -4
  1055. package/src/cli/commands/seed.ts +18 -8
  1056. package/src/cli/wxr/parser.ts +2 -2
  1057. package/src/client/index.ts +13 -2
  1058. package/src/client/portable-text.ts +21 -7
  1059. package/src/client/transport.ts +11 -7
  1060. package/src/comments/query.ts +8 -2
  1061. package/src/components/CommentForm.astro +2 -2
  1062. package/src/components/Comments.astro +1 -1
  1063. package/src/components/EmDashImage.astro +14 -2
  1064. package/src/components/InlinePortableTextEditor.tsx +156 -1326
  1065. package/src/components/inline-block-types.ts +278 -0
  1066. package/src/components/inline-bubble-menu.tsx +696 -0
  1067. package/src/components/inline-editor-ui.tsx +1192 -0
  1068. package/src/components/inline-image.tsx +722 -0
  1069. package/src/components/inline-media-picker.tsx +1221 -0
  1070. package/src/components/inline-slash-menu.tsx +556 -0
  1071. package/src/database/collection-cleanup.ts +30 -0
  1072. package/src/database/datetime-storage.ts +337 -60
  1073. package/src/database/migration-lock.ts +43 -7
  1074. package/src/database/migrations/content-sized.ts +82 -0
  1075. package/src/database/migrations/policy.ts +28 -2
  1076. package/src/database/migrations/runner.ts +48 -0
  1077. package/src/database/repositories/byline.ts +73 -17
  1078. package/src/database/repositories/comment.ts +17 -7
  1079. package/src/database/repositories/content.ts +82 -20
  1080. package/src/database/repositories/menu.ts +77 -11
  1081. package/src/database/repositories/plugin-storage.ts +109 -8
  1082. package/src/database/repositories/revision.ts +24 -6
  1083. package/src/database/repositories/taxonomy-def.ts +9 -2
  1084. package/src/database/repositories/taxonomy.ts +47 -14
  1085. package/src/database/repositories/types.ts +76 -7
  1086. package/src/emdash-runtime.ts +213 -170
  1087. package/src/fields/image.ts +1 -0
  1088. package/src/i18n/config.ts +58 -10
  1089. package/src/i18n/normalize.ts +16 -2
  1090. package/src/i18n/query.ts +47 -0
  1091. package/src/i18n/resolve.ts +8 -3
  1092. package/src/import/index.ts +1 -0
  1093. package/src/import/registry.ts +17 -0
  1094. package/src/import/sources/wordpress-plugin.ts +151 -9
  1095. package/src/import/types.ts +3 -0
  1096. package/src/import/utils.ts +5 -0
  1097. package/src/import/wxr-taxonomies.ts +3 -2
  1098. package/src/loader.ts +116 -24
  1099. package/src/mcp/json-schema.ts +14 -0
  1100. package/src/mcp/plugin-tool-name.ts +36 -0
  1101. package/src/mcp/server.ts +102 -16
  1102. package/src/media/caption.ts +30 -0
  1103. package/src/media/image-endpoint.ts +13 -6
  1104. package/src/media/local-runtime.ts +3 -0
  1105. package/src/media/normalize.ts +15 -8
  1106. package/src/media/responsive.ts +12 -2
  1107. package/src/media/types.ts +16 -3
  1108. package/src/media/usage/collection-deletion.ts +4 -0
  1109. package/src/menus/index.ts +21 -11
  1110. package/src/migrations/direct-executor.ts +42 -12
  1111. package/src/migrations/manifest.ts +1 -0
  1112. package/src/migrations/protocol.ts +6 -2
  1113. package/src/plugins/adapt-sandbox-entry.ts +16 -6
  1114. package/src/plugins/byline-access.ts +3 -1
  1115. package/src/plugins/context.ts +1 -2
  1116. package/src/plugins/state.ts +5 -8
  1117. package/src/plugins/storage-indexes.ts +7 -3
  1118. package/src/query.ts +74 -23
  1119. package/src/redirects/artifacts.ts +39 -5
  1120. package/src/redirects/cache.ts +34 -2
  1121. package/src/references/field-map.ts +6 -4
  1122. package/src/request-context.ts +8 -0
  1123. package/src/schema/block-values.ts +80 -17
  1124. package/src/schema/collection-slugs-cache.ts +31 -17
  1125. package/src/schema/registry.ts +18 -1
  1126. package/src/schema/zod-generator.ts +2 -1
  1127. package/src/search/fts-manager.ts +98 -28
  1128. package/src/search/query.ts +34 -65
  1129. package/src/seed/apply.ts +222 -94
  1130. package/src/seed/types.ts +3 -1
  1131. package/src/settings/index.ts +155 -35
  1132. package/src/settings/types.ts +2 -0
  1133. package/src/settings/version.ts +54 -0
  1134. package/src/taxonomies/index.ts +95 -52
  1135. package/src/taxonomies/term-counts.ts +2 -1
  1136. package/src/utils/db-errors.ts +15 -0
  1137. package/src/virtual-modules.d.ts +1 -0
  1138. package/src/visual-editing/toolbar.ts +46 -12
  1139. package/dist/action-token-BdWad2YG.mjs +0 -26
  1140. package/dist/action-token-BdWad2YG.mjs.map +0 -1
  1141. package/dist/activation-xomsCMJg.mjs +0 -387
  1142. package/dist/activation-xomsCMJg.mjs.map +0 -1
  1143. package/dist/adapters-B4-nbElt.d.mts +0 -173
  1144. package/dist/adapters-B4-nbElt.d.mts.map +0 -1
  1145. package/dist/allowed-origins-CLpHGGlc.mjs +0 -116
  1146. package/dist/allowed-origins-CLpHGGlc.mjs.map +0 -1
  1147. package/dist/api-DBw_IWoi.mjs +0 -5024
  1148. package/dist/api-DBw_IWoi.mjs.map +0 -1
  1149. package/dist/api-tokens-B0ZipcZ-.mjs +0 -173
  1150. package/dist/api-tokens-B0ZipcZ-.mjs.map +0 -1
  1151. package/dist/apply-Cx48saFC.mjs +0 -1680
  1152. package/dist/apply-Cx48saFC.mjs.map +0 -1
  1153. package/dist/approvals-BXgtXA2s.mjs +0 -460
  1154. package/dist/approvals-BXgtXA2s.mjs.map +0 -1
  1155. package/dist/artifact-fetch-DsRczRGG.mjs +0 -659
  1156. package/dist/artifact-fetch-DsRczRGG.mjs.map +0 -1
  1157. package/dist/artifacts-D-O-qj9C.mjs +0 -307
  1158. package/dist/artifacts-D-O-qj9C.mjs.map +0 -1
  1159. package/dist/audit-CCH3MA4Y.mjs +0 -127
  1160. package/dist/audit-CCH3MA4Y.mjs.map +0 -1
  1161. package/dist/authoritative-records-Dcs7l2H5.mjs +0 -5183
  1162. package/dist/authoritative-records-Dcs7l2H5.mjs.map +0 -1
  1163. package/dist/authorize-TdIGpRSE.mjs +0 -49
  1164. package/dist/authorize-TdIGpRSE.mjs.map +0 -1
  1165. package/dist/backup-CZt5Mzwx.mjs +0 -246
  1166. package/dist/backup-CZt5Mzwx.mjs.map +0 -1
  1167. package/dist/block-types-DHnkzE6u.mjs +0 -132
  1168. package/dist/block-types-DHnkzE6u.mjs.map +0 -1
  1169. package/dist/block-values-C4N_F2-G.mjs +0 -175
  1170. package/dist/block-values-C4N_F2-G.mjs.map +0 -1
  1171. package/dist/byline-BmVKOQ8l.mjs +0 -909
  1172. package/dist/byline-BmVKOQ8l.mjs.map +0 -1
  1173. package/dist/byline-fields-B8SDs3M_.mjs +0 -123
  1174. package/dist/byline-fields-B8SDs3M_.mjs.map +0 -1
  1175. package/dist/byline-fields-Bze3ZdAw.mjs +0 -280
  1176. package/dist/byline-fields-Bze3ZdAw.mjs.map +0 -1
  1177. package/dist/byline-registry-dvt4N3xV.mjs +0 -406
  1178. package/dist/byline-registry-dvt4N3xV.mjs.map +0 -1
  1179. package/dist/bylines-CHhR28r9.mjs +0 -150
  1180. package/dist/bylines-CHhR28r9.mjs.map +0 -1
  1181. package/dist/bylines-DZS4OflA.mjs +0 -234
  1182. package/dist/bylines-DZS4OflA.mjs.map +0 -1
  1183. package/dist/cache-x0z8t_m9.mjs +0 -133
  1184. package/dist/cache-x0z8t_m9.mjs.map +0 -1
  1185. package/dist/canonical-BUcKRYpG.mjs +0 -174
  1186. package/dist/canonical-BUcKRYpG.mjs.map +0 -1
  1187. package/dist/capture-triggers-C9JKoIdT.mjs +0 -362
  1188. package/dist/capture-triggers-C9JKoIdT.mjs.map +0 -1
  1189. package/dist/challenge-store-BHgdPVze.mjs +0 -51
  1190. package/dist/challenge-store-BHgdPVze.mjs.map +0 -1
  1191. package/dist/checksum-BYR5i7qe.mjs +0 -162
  1192. package/dist/checksum-BYR5i7qe.mjs.map +0 -1
  1193. package/dist/chrome-tags-BIKBMZYO.mjs +0 -24
  1194. package/dist/chrome-tags-BIKBMZYO.mjs.map +0 -1
  1195. package/dist/chunks-Dr5Vr0zA.mjs +0 -25
  1196. package/dist/chunks-Dr5Vr0zA.mjs.map +0 -1
  1197. package/dist/collection-slugs-cache-B2Gs9Jwx.mjs +0 -85
  1198. package/dist/collection-slugs-cache-B2Gs9Jwx.mjs.map +0 -1
  1199. package/dist/comment-CWla6OHV.mjs +0 -325
  1200. package/dist/comment-CWla6OHV.mjs.map +0 -1
  1201. package/dist/comment-reaction-RZrcs5cW.mjs +0 -85
  1202. package/dist/comment-reaction-RZrcs5cW.mjs.map +0 -1
  1203. package/dist/comments-BzmIKVb2.mjs +0 -99
  1204. package/dist/comments-BzmIKVb2.mjs.map +0 -1
  1205. package/dist/comments-Da_dI2O1.mjs +0 -195
  1206. package/dist/comments-Da_dI2O1.mjs.map +0 -1
  1207. package/dist/components-oFXumpf5.mjs +0 -112
  1208. package/dist/components-oFXumpf5.mjs.map +0 -1
  1209. package/dist/config--wamYxBW.d.mts +0 -39
  1210. package/dist/config--wamYxBW.d.mts.map +0 -1
  1211. package/dist/config-Bo4eOOdV.mjs +0 -228
  1212. package/dist/config-Bo4eOOdV.mjs.map +0 -1
  1213. package/dist/config-C4-UxIk7.d.mts +0 -6790
  1214. package/dist/config-C4-UxIk7.d.mts.map +0 -1
  1215. package/dist/config-CvmjJcVw.mjs +0 -73
  1216. package/dist/config-CvmjJcVw.mjs.map +0 -1
  1217. package/dist/connection-UpzYxtE2.mjs +0 -36
  1218. package/dist/connection-UpzYxtE2.mjs.map +0 -1
  1219. package/dist/content-CcHrqkgp.mjs +0 -2072
  1220. package/dist/content-CcHrqkgp.mjs.map +0 -1
  1221. package/dist/content-list-query-Bxxdd9fv.d.mts +0 -26
  1222. package/dist/content-list-query-Bxxdd9fv.d.mts.map +0 -1
  1223. package/dist/content-policy-Dm32n9C6.mjs +0 -46
  1224. package/dist/content-policy-Dm32n9C6.mjs.map +0 -1
  1225. package/dist/content-repair-havk1F0-.mjs +0 -442
  1226. package/dist/content-repair-havk1F0-.mjs.map +0 -1
  1227. package/dist/context-CvhgHgSH.mjs +0 -2043
  1228. package/dist/context-CvhgHgSH.mjs.map +0 -1
  1229. package/dist/credits-CygUrPOi.mjs +0 -110
  1230. package/dist/credits-CygUrPOi.mjs.map +0 -1
  1231. package/dist/cron-C6ytTOLw.mjs +0 -306
  1232. package/dist/cron-C6ytTOLw.mjs.map +0 -1
  1233. package/dist/dashboard-7_FYfafc.mjs +0 -151
  1234. package/dist/dashboard-7_FYfafc.mjs.map +0 -1
  1235. package/dist/db-errors-CBD5yMro.mjs +0 -55
  1236. package/dist/db-errors-CBD5yMro.mjs.map +0 -1
  1237. package/dist/default-CHCUkV4Z.mjs +0 -81
  1238. package/dist/default-CHCUkV4Z.mjs.map +0 -1
  1239. package/dist/deferred-tasks-G0xhcJTl.d.mts +0 -9
  1240. package/dist/deferred-tasks-G0xhcJTl.d.mts.map +0 -1
  1241. package/dist/destination-r2zIAZ2S.mjs +0 -18
  1242. package/dist/destination-r2zIAZ2S.mjs.map +0 -1
  1243. package/dist/dev-typegen-Dtl8AfS6.mjs +0 -29
  1244. package/dist/dev-typegen-Dtl8AfS6.mjs.map +0 -1
  1245. package/dist/device-flow-CzDJmQ1q.mjs +0 -521
  1246. package/dist/device-flow-CzDJmQ1q.mjs.map +0 -1
  1247. package/dist/digest-xJmyPv2r.mjs +0 -194
  1248. package/dist/digest-xJmyPv2r.mjs.map +0 -1
  1249. package/dist/direct-executor-BXiYIVJ9.mjs +0 -104
  1250. package/dist/direct-executor-BXiYIVJ9.mjs.map +0 -1
  1251. package/dist/dist-Cfu8mMBs.mjs +0 -810
  1252. package/dist/dist-Cfu8mMBs.mjs.map +0 -1
  1253. package/dist/email-console-7ZPApLlm.mjs +0 -50
  1254. package/dist/email-console-7ZPApLlm.mjs.map +0 -1
  1255. package/dist/email-locale-DFdUA6UF.mjs +0 -25
  1256. package/dist/email-locale-DFdUA6UF.mjs.map +0 -1
  1257. package/dist/emdash-runtime-C4oFeVpN.mjs +0 -4363
  1258. package/dist/emdash-runtime-C4oFeVpN.mjs.map +0 -1
  1259. package/dist/enrich-Duu4sV3a.mjs +0 -194
  1260. package/dist/enrich-Duu4sV3a.mjs.map +0 -1
  1261. package/dist/entry-lock-B4n0HdQ_.mjs +0 -163
  1262. package/dist/entry-lock-B4n0HdQ_.mjs.map +0 -1
  1263. package/dist/entry-lock-BAAlKYrz.d.mts +0 -4566
  1264. package/dist/entry-lock-BAAlKYrz.d.mts.map +0 -1
  1265. package/dist/entry-lock-Cjz0h45X.mjs +0 -1209
  1266. package/dist/entry-lock-Cjz0h45X.mjs.map +0 -1
  1267. package/dist/entry-locks-DJAqVweV.mjs +0 -167
  1268. package/dist/entry-locks-DJAqVweV.mjs.map +0 -1
  1269. package/dist/env-types-4bkF6Bqg.mjs +0 -38
  1270. package/dist/env-types-4bkF6Bqg.mjs.map +0 -1
  1271. package/dist/error-DxgQdaZ_.mjs +0 -90
  1272. package/dist/error-DxgQdaZ_.mjs.map +0 -1
  1273. package/dist/errors-CjtE5aWF.mjs +0 -120
  1274. package/dist/errors-CjtE5aWF.mjs.map +0 -1
  1275. package/dist/errors-hskQ0C8G.mjs +0 -479
  1276. package/dist/errors-hskQ0C8G.mjs.map +0 -1
  1277. package/dist/escape-ESFhYzwG.mjs +0 -9
  1278. package/dist/escape-ESFhYzwG.mjs.map +0 -1
  1279. package/dist/fence-vc3aHgRA.mjs +0 -162
  1280. package/dist/fence-vc3aHgRA.mjs.map +0 -1
  1281. package/dist/field-defs-cache-zoow36nz.mjs +0 -77
  1282. package/dist/field-defs-cache-zoow36nz.mjs.map +0 -1
  1283. package/dist/field-map-JD1wG0Tq.mjs +0 -83
  1284. package/dist/field-map-JD1wG0Tq.mjs.map +0 -1
  1285. package/dist/focal-point-JX8kcOTQ.mjs +0 -23
  1286. package/dist/focal-point-JX8kcOTQ.mjs.map +0 -1
  1287. package/dist/fts-manager-WJCN8uU6.mjs +0 -443
  1288. package/dist/fts-manager-WJCN8uU6.mjs.map +0 -1
  1289. package/dist/gc-CsGZiKdH.mjs +0 -75
  1290. package/dist/gc-CsGZiKdH.mjs.map +0 -1
  1291. package/dist/hash-C4DFoJ7Z.mjs +0 -37
  1292. package/dist/hash-C4DFoJ7Z.mjs.map +0 -1
  1293. package/dist/hook-result-CXjtMk7Q.d.mts +0 -31
  1294. package/dist/hook-result-CXjtMk7Q.d.mts.map +0 -1
  1295. package/dist/hreflang-BAma7iRr.mjs +0 -105
  1296. package/dist/hreflang-BAma7iRr.mjs.map +0 -1
  1297. package/dist/hreflang-BsYo4x_M.d.mts +0 -50
  1298. package/dist/hreflang-BsYo4x_M.d.mts.map +0 -1
  1299. package/dist/http-route-dispatch-C8G7hAK6.mjs +0 -342
  1300. package/dist/http-route-dispatch-C8G7hAK6.mjs.map +0 -1
  1301. package/dist/identity-BwBKM1fH.mjs +0 -35
  1302. package/dist/identity-BwBKM1fH.mjs.map +0 -1
  1303. package/dist/import-DJ3Z2wxE.mjs +0 -2021
  1304. package/dist/import-DJ3Z2wxE.mjs.map +0 -1
  1305. package/dist/index-DYsn97dY.d.mts +0 -623
  1306. package/dist/index-DYsn97dY.d.mts.map +0 -1
  1307. package/dist/install-finalization-DCFnFSHv.mjs +0 -58
  1308. package/dist/install-finalization-DCFnFSHv.mjs.map +0 -1
  1309. package/dist/keys-CGvAndSp.mjs +0 -61
  1310. package/dist/keys-CGvAndSp.mjs.map +0 -1
  1311. package/dist/kinds-DT1W4T4Y.mjs +0 -974
  1312. package/dist/kinds-DT1W4T4Y.mjs.map +0 -1
  1313. package/dist/lifecycle-BzglCSY0.mjs +0 -25
  1314. package/dist/lifecycle-BzglCSY0.mjs.map +0 -1
  1315. package/dist/load-DjUqmf3s.mjs +0 -28
  1316. package/dist/load-DjUqmf3s.mjs.map +0 -1
  1317. package/dist/loader-CetY659y.mjs +0 -1355
  1318. package/dist/loader-CetY659y.mjs.map +0 -1
  1319. package/dist/loops-DkT1zkPH.mjs +0 -205
  1320. package/dist/loops-DkT1zkPH.mjs.map +0 -1
  1321. package/dist/manifest-builder-BOFCd9rX.mjs +0 -189
  1322. package/dist/manifest-builder-BOFCd9rX.mjs.map +0 -1
  1323. package/dist/manifest-schema-BiFBPEsp.mjs +0 -497
  1324. package/dist/manifest-schema-BiFBPEsp.mjs.map +0 -1
  1325. package/dist/marketplace-CUlenvZm.mjs +0 -257
  1326. package/dist/marketplace-CUlenvZm.mjs.map +0 -1
  1327. package/dist/media-CRKsKlfK.mjs +0 -416
  1328. package/dist/media-CRKsKlfK.mjs.map +0 -1
  1329. package/dist/media-C_z7sRuC.mjs +0 -294
  1330. package/dist/media-C_z7sRuC.mjs.map +0 -1
  1331. package/dist/media-IT8hQleU.mjs +0 -373
  1332. package/dist/media-IT8hQleU.mjs.map +0 -1
  1333. package/dist/media-allowlist-Ct6wvnT2.mjs +0 -45
  1334. package/dist/media-allowlist-Ct6wvnT2.mjs.map +0 -1
  1335. package/dist/media-folders-DtMt-vAA.mjs +0 -210
  1336. package/dist/media-folders-DtMt-vAA.mjs.map +0 -1
  1337. package/dist/media-url-BpXLqCmf.mjs +0 -43
  1338. package/dist/media-url-BpXLqCmf.mjs.map +0 -1
  1339. package/dist/media-usage-DEPHZZ9X.mjs +0 -282
  1340. package/dist/media-usage-DEPHZZ9X.mjs.map +0 -1
  1341. package/dist/media-usage-activation-V2Siabtw.mjs +0 -78
  1342. package/dist/media-usage-activation-V2Siabtw.mjs.map +0 -1
  1343. package/dist/media-usage-work-Cv1OE59F.mjs +0 -151
  1344. package/dist/media-usage-work-Cv1OE59F.mjs.map +0 -1
  1345. package/dist/media-usage-work-cgDYGvrt.mjs +0 -1015
  1346. package/dist/media-usage-work-cgDYGvrt.mjs.map +0 -1
  1347. package/dist/menus-CvVYfsuk.mjs +0 -753
  1348. package/dist/menus-CvVYfsuk.mjs.map +0 -1
  1349. package/dist/menus-D1HC8npj.mjs +0 -92
  1350. package/dist/menus-D1HC8npj.mjs.map +0 -1
  1351. package/dist/menus-DL8IPIcm.mjs +0 -3721
  1352. package/dist/menus-DL8IPIcm.mjs.map +0 -1
  1353. package/dist/mime-B5M9R53H.mjs +0 -81
  1354. package/dist/mime-B5M9R53H.mjs.map +0 -1
  1355. package/dist/mode-eieqAWLe.mjs +0 -23
  1356. package/dist/mode-eieqAWLe.mjs.map +0 -1
  1357. package/dist/node-sqlite-compat-VuyzJw1b.mjs +0 -63
  1358. package/dist/node-sqlite-compat-VuyzJw1b.mjs.map +0 -1
  1359. package/dist/normalize-BuWa0lvd.mjs +0 -191
  1360. package/dist/normalize-BuWa0lvd.mjs.map +0 -1
  1361. package/dist/oauth-authorization-B6ZJbMd2.mjs +0 -274
  1362. package/dist/oauth-authorization-B6ZJbMd2.mjs.map +0 -1
  1363. package/dist/oauth-clients-DVjRc9v3.mjs +0 -266
  1364. package/dist/oauth-clients-DVjRc9v3.mjs.map +0 -1
  1365. package/dist/oauth-state-store-CnmYYsVQ.mjs +0 -50
  1366. package/dist/oauth-state-store-CnmYYsVQ.mjs.map +0 -1
  1367. package/dist/oauth-user-lookup-Dz1_R5vT.mjs +0 -26
  1368. package/dist/oauth-user-lookup-Dz1_R5vT.mjs.map +0 -1
  1369. package/dist/object-cache-Bo6DGaC9.mjs +0 -586
  1370. package/dist/object-cache-Bo6DGaC9.mjs.map +0 -1
  1371. package/dist/options-BR9XZl7h.d.mts +0 -81
  1372. package/dist/options-BR9XZl7h.d.mts.map +0 -1
  1373. package/dist/ownership-COPyVysP.mjs +0 -12
  1374. package/dist/ownership-COPyVysP.mjs.map +0 -1
  1375. package/dist/parse-BOGhrwSq.d.mts +0 -174
  1376. package/dist/parse-BOGhrwSq.d.mts.map +0 -1
  1377. package/dist/parse-Cn5aSk1N.mjs +0 -81
  1378. package/dist/parse-Cn5aSk1N.mjs.map +0 -1
  1379. package/dist/passkey-config-mMFRQUCj.mjs +0 -46
  1380. package/dist/passkey-config-mMFRQUCj.mjs.map +0 -1
  1381. package/dist/paths-BmcAdBo9.mjs +0 -77
  1382. package/dist/paths-BmcAdBo9.mjs.map +0 -1
  1383. package/dist/patterns-CMNnYCgf.mjs +0 -159
  1384. package/dist/patterns-CMNnYCgf.mjs.map +0 -1
  1385. package/dist/placeholder-nOep3_Gn.d.mts +0 -306
  1386. package/dist/placeholder-nOep3_Gn.d.mts.map +0 -1
  1387. package/dist/plan-CDY4K8CH.mjs +0 -135
  1388. package/dist/plan-CDY4K8CH.mjs.map +0 -1
  1389. package/dist/plugins-DFBpfbO3.mjs +0 -261
  1390. package/dist/plugins-DFBpfbO3.mjs.map +0 -1
  1391. package/dist/policy-B_2qnHSy.mjs +0 -45
  1392. package/dist/policy-B_2qnHSy.mjs.map +0 -1
  1393. package/dist/portable-text-Dc2YAusw.mjs +0 -307
  1394. package/dist/portable-text-Dc2YAusw.mjs.map +0 -1
  1395. package/dist/preview-BtzikJ9O.mjs +0 -107
  1396. package/dist/preview-BtzikJ9O.mjs.map +0 -1
  1397. package/dist/protocol-M268ox8L.d.mts +0 -61
  1398. package/dist/protocol-M268ox8L.d.mts.map +0 -1
  1399. package/dist/public-submission-BQZavgZU.mjs +0 -251
  1400. package/dist/public-submission-BQZavgZU.mjs.map +0 -1
  1401. package/dist/public-url-uT1Ok2Tu.mjs +0 -101
  1402. package/dist/public-url-uT1Ok2Tu.mjs.map +0 -1
  1403. package/dist/query-BGG3sDEd.mjs +0 -1127
  1404. package/dist/query-BGG3sDEd.mjs.map +0 -1
  1405. package/dist/query-C_CWlifp.mjs +0 -41
  1406. package/dist/query-C_CWlifp.mjs.map +0 -1
  1407. package/dist/range-CXK_kDbI.mjs +0 -51
  1408. package/dist/range-CXK_kDbI.mjs.map +0 -1
  1409. package/dist/rate-limit-Dvamvay-.mjs +0 -127
  1410. package/dist/rate-limit-Dvamvay-.mjs.map +0 -1
  1411. package/dist/receipt-BmQGzquP.mjs +0 -43
  1412. package/dist/receipt-BmQGzquP.mjs.map +0 -1
  1413. package/dist/redirect-B39kTQ_0.mjs +0 -423
  1414. package/dist/redirect-B39kTQ_0.mjs.map +0 -1
  1415. package/dist/redirect-BguJ00Pv.mjs +0 -19
  1416. package/dist/redirect-BguJ00Pv.mjs.map +0 -1
  1417. package/dist/redirects-C8G4BsfP.mjs +0 -446
  1418. package/dist/redirects-C8G4BsfP.mjs.map +0 -1
  1419. package/dist/redirects-DFT7Wr-e.mjs +0 -148
  1420. package/dist/redirects-DFT7Wr-e.mjs.map +0 -1
  1421. package/dist/registry-DeZ27gVi.mjs +0 -8374
  1422. package/dist/registry-DeZ27gVi.mjs.map +0 -1
  1423. package/dist/relations-DBB1bRJW.mjs +0 -776
  1424. package/dist/relations-DBB1bRJW.mjs.map +0 -1
  1425. package/dist/request-cache-C4CIo5ad.mjs +0 -104
  1426. package/dist/request-cache-C4CIo5ad.mjs.map +0 -1
  1427. package/dist/request-meta-BSvkhIBX.mjs +0 -141
  1428. package/dist/request-meta-BSvkhIBX.mjs.map +0 -1
  1429. package/dist/resolve-BxH64HN9.mjs +0 -100
  1430. package/dist/resolve-BxH64HN9.mjs.map +0 -1
  1431. package/dist/resolve-D-kqyKns.mjs +0 -199
  1432. package/dist/resolve-D-kqyKns.mjs.map +0 -1
  1433. package/dist/revision-BWEH2qQB.mjs +0 -368
  1434. package/dist/revision-BWEH2qQB.mjs.map +0 -1
  1435. package/dist/route-wire-CwbWB_6O.mjs +0 -197
  1436. package/dist/route-wire-CwbWB_6O.mjs.map +0 -1
  1437. package/dist/routes-BfIxc7ft.mjs +0 -272
  1438. package/dist/routes-BfIxc7ft.mjs.map +0 -1
  1439. package/dist/runner-DkeafPBA.d.mts +0 -68
  1440. package/dist/runner-DkeafPBA.d.mts.map +0 -1
  1441. package/dist/runner-wqt4BrIW.mjs +0 -6383
  1442. package/dist/runner-wqt4BrIW.mjs.map +0 -1
  1443. package/dist/schema-BXIW-JHi.mjs +0 -815
  1444. package/dist/schema-BXIW-JHi.mjs.map +0 -1
  1445. package/dist/schema-I74JwYte.mjs +0 -13
  1446. package/dist/schema-I74JwYte.mjs.map +0 -1
  1447. package/dist/scopes-RWZ5ft_Z.mjs +0 -34
  1448. package/dist/scopes-RWZ5ft_Z.mjs.map +0 -1
  1449. package/dist/search-DxwagyWS.mjs +0 -450
  1450. package/dist/search-DxwagyWS.mjs.map +0 -1
  1451. package/dist/sections-Ccq9ZgyD.mjs +0 -346
  1452. package/dist/sections-Ccq9ZgyD.mjs.map +0 -1
  1453. package/dist/seo-CCnfPWAQ.mjs +0 -133
  1454. package/dist/seo-CCnfPWAQ.mjs.map +0 -1
  1455. package/dist/seo-QCtJ1jjV.mjs +0 -188
  1456. package/dist/seo-QCtJ1jjV.mjs.map +0 -1
  1457. package/dist/service-DX84s2rw.mjs +0 -150
  1458. package/dist/service-DX84s2rw.mjs.map +0 -1
  1459. package/dist/session-user-1dtJc2zv.mjs +0 -61
  1460. package/dist/session-user-1dtJc2zv.mjs.map +0 -1
  1461. package/dist/settings-B1jOxAIl.mjs +0 -443
  1462. package/dist/settings-B1jOxAIl.mjs.map +0 -1
  1463. package/dist/settings-Bc1IBl1t.mjs +0 -66
  1464. package/dist/settings-Bc1IBl1t.mjs.map +0 -1
  1465. package/dist/settings-GaZ5sVgg.mjs +0 -73
  1466. package/dist/settings-GaZ5sVgg.mjs.map +0 -1
  1467. package/dist/setup-complete-DidMAWJS.mjs +0 -65
  1468. package/dist/setup-complete-DidMAWJS.mjs.map +0 -1
  1469. package/dist/setup-nonce-DKl4S4c6.mjs +0 -25
  1470. package/dist/setup-nonce-DKl4S4c6.mjs.map +0 -1
  1471. package/dist/site-domain-CbI51Pc2.mjs +0 -113
  1472. package/dist/site-domain-CbI51Pc2.mjs.map +0 -1
  1473. package/dist/site-settings-CDdT4mVm.mjs +0 -50
  1474. package/dist/site-settings-CDdT4mVm.mjs.map +0 -1
  1475. package/dist/site-url-CrDZaAvo.mjs +0 -45
  1476. package/dist/site-url-CrDZaAvo.mjs.map +0 -1
  1477. package/dist/sitemap-name-W3BTor6X.mjs +0 -26
  1478. package/dist/sitemap-name-W3BTor6X.mjs.map +0 -1
  1479. package/dist/slug-BJhHKoOH.mjs +0 -16
  1480. package/dist/slug-BJhHKoOH.mjs.map +0 -1
  1481. package/dist/slugify-bu2-jKia.mjs +0 -22
  1482. package/dist/slugify-bu2-jKia.mjs.map +0 -1
  1483. package/dist/snapshot-BuI_2uDe.mjs +0 -414
  1484. package/dist/snapshot-BuI_2uDe.mjs.map +0 -1
  1485. package/dist/ssrf-LM_0wpGA.mjs +0 -406
  1486. package/dist/ssrf-LM_0wpGA.mjs.map +0 -1
  1487. package/dist/stage-DhzZuYaT.mjs +0 -662
  1488. package/dist/stage-DhzZuYaT.mjs.map +0 -1
  1489. package/dist/staged-DboEaWsV.mjs +0 -686
  1490. package/dist/staged-DboEaWsV.mjs.map +0 -1
  1491. package/dist/state-DCXDzjHq.mjs +0 -178
  1492. package/dist/state-DCXDzjHq.mjs.map +0 -1
  1493. package/dist/status-Dl85BK39.mjs +0 -30
  1494. package/dist/status-Dl85BK39.mjs.map +0 -1
  1495. package/dist/storage-query-BOBmeDMD.d.mts +0 -1615
  1496. package/dist/storage-query-BOBmeDMD.d.mts.map +0 -1
  1497. package/dist/tar-K40edFMt.mjs +0 -449
  1498. package/dist/tar-K40edFMt.mjs.map +0 -1
  1499. package/dist/target-BOighEY1.mjs +0 -27
  1500. package/dist/target-BOighEY1.mjs.map +0 -1
  1501. package/dist/taxonomies-DQSywBvX.mjs +0 -697
  1502. package/dist/taxonomies-DQSywBvX.mjs.map +0 -1
  1503. package/dist/taxonomies-Dj5eaobC.mjs +0 -939
  1504. package/dist/taxonomies-Dj5eaobC.mjs.map +0 -1
  1505. package/dist/taxonomy-QrNmTfIZ.mjs +0 -550
  1506. package/dist/taxonomy-QrNmTfIZ.mjs.map +0 -1
  1507. package/dist/tokens-j5L0as2H.mjs +0 -171
  1508. package/dist/tokens-j5L0as2H.mjs.map +0 -1
  1509. package/dist/transaction-BVYIo_yu.mjs +0 -29
  1510. package/dist/transaction-BVYIo_yu.mjs.map +0 -1
  1511. package/dist/transfer-CYEw8Tu4.mjs +0 -8873
  1512. package/dist/transfer-CYEw8Tu4.mjs.map +0 -1
  1513. package/dist/transfer-DDX10hkD.mjs +0 -166
  1514. package/dist/transfer-DDX10hkD.mjs.map +0 -1
  1515. package/dist/transfer-download-BAqq6GJv.mjs +0 -33
  1516. package/dist/transfer-download-BAqq6GJv.mjs.map +0 -1
  1517. package/dist/transformations-De44wqV_.mjs +0 -196
  1518. package/dist/transformations-De44wqV_.mjs.map +0 -1
  1519. package/dist/transport-1QjUhCRO.d.mts +0 -42
  1520. package/dist/transport-1QjUhCRO.d.mts.map +0 -1
  1521. package/dist/transport-Ds5pVX7p.mjs +0 -136
  1522. package/dist/transport-Ds5pVX7p.mjs.map +0 -1
  1523. package/dist/trusted-proxy-d4Tk6biT.mjs +0 -51
  1524. package/dist/trusted-proxy-d4Tk6biT.mjs.map +0 -1
  1525. package/dist/turnstile-DaFLtyrs.mjs +0 -58
  1526. package/dist/turnstile-DaFLtyrs.mjs.map +0 -1
  1527. package/dist/types-B4-1P2DK.d.mts +0 -227
  1528. package/dist/types-B4-1P2DK.d.mts.map +0 -1
  1529. package/dist/types-BGmQ0uXs.mjs +0 -201
  1530. package/dist/types-BGmQ0uXs.mjs.map +0 -1
  1531. package/dist/types-BKXA0f-c.mjs +0 -16
  1532. package/dist/types-BKXA0f-c.mjs.map +0 -1
  1533. package/dist/types-BiHcpUoO.d.mts +0 -374
  1534. package/dist/types-BiHcpUoO.d.mts.map +0 -1
  1535. package/dist/types-BihhvkyN.d.mts +0 -85
  1536. package/dist/types-BihhvkyN.d.mts.map +0 -1
  1537. package/dist/types-Bq9Wohd7.d.mts +0 -363
  1538. package/dist/types-Bq9Wohd7.d.mts.map +0 -1
  1539. package/dist/types-C-Xp0CcN.mjs +0 -103
  1540. package/dist/types-C-Xp0CcN.mjs.map +0 -1
  1541. package/dist/types-C4P7F1Vq.d.mts +0 -1741
  1542. package/dist/types-C4P7F1Vq.d.mts.map +0 -1
  1543. package/dist/types-CGaqwHw4.mjs +0 -37
  1544. package/dist/types-CGaqwHw4.mjs.map +0 -1
  1545. package/dist/types-Cj0_yZkn.mjs +0 -18
  1546. package/dist/types-Cj0_yZkn.mjs.map +0 -1
  1547. package/dist/types-D4ECCE4X.mjs +0 -77
  1548. package/dist/types-D4ECCE4X.mjs.map +0 -1
  1549. package/dist/types-DcRJp0vS.d.mts +0 -125
  1550. package/dist/types-DcRJp0vS.d.mts.map +0 -1
  1551. package/dist/types-Ff85fTzU.d.mts +0 -289
  1552. package/dist/types-Ff85fTzU.d.mts.map +0 -1
  1553. package/dist/types-UKr5Sf4y.d.mts +0 -916
  1554. package/dist/types-UKr5Sf4y.d.mts.map +0 -1
  1555. package/dist/types-YpN8hZW7.d.mts +0 -204
  1556. package/dist/types-YpN8hZW7.d.mts.map +0 -1
  1557. package/dist/update-check-DrlsK-tt.mjs +0 -161
  1558. package/dist/update-check-DrlsK-tt.mjs.map +0 -1
  1559. package/dist/upload-attempts-D8CPPvRU.mjs +0 -32
  1560. package/dist/upload-attempts-D8CPPvRU.mjs.map +0 -1
  1561. package/dist/url-Dn3IStq8.mjs +0 -104
  1562. package/dist/url-Dn3IStq8.mjs.map +0 -1
  1563. package/dist/url-pattern-Di4Nn3vP.mjs +0 -41
  1564. package/dist/url-pattern-Di4Nn3vP.mjs.map +0 -1
  1565. package/dist/user-B-ZdGjhI.mjs +0 -171
  1566. package/dist/user-B-ZdGjhI.mjs.map +0 -1
  1567. package/dist/utils-D7wL3r6-.mjs +0 -437
  1568. package/dist/utils-D7wL3r6-.mjs.map +0 -1
  1569. package/dist/validate-BSZbSUDk.mjs +0 -524
  1570. package/dist/validate-BSZbSUDk.mjs.map +0 -1
  1571. package/dist/validate-Dfv0DpZi.d.mts +0 -468
  1572. package/dist/validate-Dfv0DpZi.d.mts.map +0 -1
  1573. package/dist/validation-DRyC_Vm5.mjs +0 -219
  1574. package/dist/validation-DRyC_Vm5.mjs.map +0 -1
  1575. package/dist/version-C4kz0PcO.mjs +0 -7
  1576. package/dist/version-C4kz0PcO.mjs.map +0 -1
  1577. package/dist/version-jhs2BRtl.mjs +0 -9
  1578. package/dist/version-jhs2BRtl.mjs.map +0 -1
  1579. package/dist/video-DReZ48Un.mjs +0 -54
  1580. package/dist/video-DReZ48Un.mjs.map +0 -1
  1581. package/dist/virtual-modules-D0e6VbEv.mjs +0 -516
  1582. package/dist/virtual-modules-D0e6VbEv.mjs.map +0 -1
  1583. package/dist/widgets-BkcMzKct.mjs +0 -121
  1584. package/dist/widgets-BkcMzKct.mjs.map +0 -1
  1585. package/dist/wxr-taxonomies-BxI0CbTg.mjs +0 -453
  1586. package/dist/wxr-taxonomies-BxI0CbTg.mjs.map +0 -1
  1587. package/dist/wxr-taxonomies-Dad33GJi.d.mts +0 -34
  1588. package/dist/wxr-taxonomies-Dad33GJi.d.mts.map +0 -1
  1589. package/dist/zod-generator-BQilAboC.mjs +0 -424
  1590. package/dist/zod-generator-BQilAboC.mjs.map +0 -1
  1591. /package/dist/{api-tokens-D2zgAIEt.mjs → api-tokens-C7l0GUAF.mjs} +0 -0
  1592. /package/dist/{ssrf-BvNItdxk.mjs → ssrf-BBXcxG-f.mjs} +0 -0
@@ -2,18 +2,17 @@
2
2
  * Self-contained inline Portable Text editor for visual editing.
3
3
  *
4
4
  * Uses TipTap directly with content extensions — no admin UI deps.
5
- * Includes BubbleMenu for inline formatting (bold, italic, etc.)
6
- * but no toolbar, no media picker, no section picker.
5
+ * Includes the admin editor's selection toolbar and slash menu, and a
6
+ * toolbar and picker for images, but no fixed toolbar, sidebar, or section
7
+ * picker.
7
8
  *
8
9
  * Converts between Portable Text and ProseMirror on mount/save.
9
10
  * Auto-saves on blur, dispatches custom events for toolbar integration.
10
11
  */
11
12
 
12
13
  import { htmlBlockFields } from "@emdash-cms/admin/html-block";
13
- import { autoUpdate, flip, offset, shift, useFloating } from "@floating-ui/react";
14
- import { Extension, Node, mergeAttributes, type JSONContent, type Range } from "@tiptap/core";
14
+ import { Node, mergeAttributes, type JSONContent } from "@tiptap/core";
15
15
  import Focus from "@tiptap/extension-focus";
16
- import Image from "@tiptap/extension-image";
17
16
  import Link from "@tiptap/extension-link";
18
17
  import Placeholder from "@tiptap/extension-placeholder";
19
18
  import Subscript from "@tiptap/extension-subscript";
@@ -21,13 +20,11 @@ import Superscript from "@tiptap/extension-superscript";
21
20
  import TextAlign from "@tiptap/extension-text-align";
22
21
  import Typography from "@tiptap/extension-typography";
23
22
  import Underline from "@tiptap/extension-underline";
24
- import { Plugin } from "@tiptap/pm/state";
23
+ import { Plugin, type Transaction } from "@tiptap/pm/state";
25
24
  import { useEditor, EditorContent, type Editor } from "@tiptap/react";
26
- import { BubbleMenu } from "@tiptap/react/menus";
27
25
  import StarterKit from "@tiptap/starter-kit";
28
- import Suggestion from "@tiptap/suggestion";
26
+ import { exitSuggestion } from "@tiptap/suggestion";
29
27
  import * as React from "react";
30
- import { createPortal } from "react-dom";
31
28
 
32
29
  import { resolveImageMedia } from "../content/converters/gallery.js";
33
30
  import { normalizeImageLink } from "../content/converters/image-link.js";
@@ -44,9 +41,19 @@ import {
44
41
  readOrderedListMetadata,
45
42
  } from "../content/converters/numbered-list.js";
46
43
  import type { ProseMirrorDocument } from "../content/converters/types.js";
47
- import { computeThumbnailSize } from "../media/thumbnail.js";
48
44
  import { CodeMarkExtension } from "./code-mark.js";
45
+ import { InlineBubbleMenu } from "./inline-bubble-menu.js";
49
46
  import { InlineCodeBlockExtension } from "./inline-code-block.js";
47
+ import { INLINE_EDITOR_UI_STYLES, useInlineUiRoot } from "./inline-editor-ui.js";
48
+ import { INLINE_IMAGE_STYLES, InlineImageExtension, insertImage } from "./inline-image.js";
49
+ import { INLINE_MEDIA_PICKER_STYLES, InlineMediaPicker } from "./inline-media-picker.js";
50
+ import {
51
+ InlineSlashMenu,
52
+ createSlashCommandsExtension,
53
+ initialSlashMenuState,
54
+ type SlashCommandItem,
55
+ type SlashMenuState,
56
+ } from "./inline-slash-menu.js";
50
57
  import { EmDashOrderedList } from "./ordered-list.js";
51
58
 
52
59
  // ── Portable Text types ────────────────────────────────────────────
@@ -866,295 +873,6 @@ function convertPTMarks(marks: string[], markDefs: Map<string, PTMarkDef>): Mark
866
873
  return pm;
867
874
  }
868
875
 
869
- // ── Inline BubbleMenu ──────────────────────────────────────────────
870
-
871
- function InlineBubbleMenu({ editor }: { editor: Editor }) {
872
- const [showLinkInput, setShowLinkInput] = React.useState(false);
873
- const [linkUrl, setLinkUrl] = React.useState("");
874
- const inputRef = React.useRef<HTMLInputElement>(null);
875
-
876
- React.useEffect(() => {
877
- if (showLinkInput) {
878
- const existingUrl = editor.getAttributes("link").href || "";
879
- setLinkUrl(existingUrl);
880
- setTimeout(() => inputRef.current?.focus(), 0);
881
- }
882
- }, [showLinkInput, editor]);
883
-
884
- const handleSetLink = () => {
885
- if (linkUrl.trim() === "") {
886
- editor.chain().focus().extendMarkRange("link").unsetLink().run();
887
- } else {
888
- editor.chain().focus().extendMarkRange("link").setLink({ href: linkUrl.trim() }).run();
889
- }
890
- setShowLinkInput(false);
891
- setLinkUrl("");
892
- };
893
-
894
- const handleRemoveLink = () => {
895
- editor.chain().focus().extendMarkRange("link").unsetLink().run();
896
- setShowLinkInput(false);
897
- setLinkUrl("");
898
- };
899
-
900
- const handleKeyDown = (e: React.KeyboardEvent) => {
901
- if (e.key === "Enter") {
902
- e.preventDefault();
903
- handleSetLink();
904
- } else if (e.key === "Escape") {
905
- setShowLinkInput(false);
906
- setLinkUrl("");
907
- editor.commands.focus();
908
- }
909
- };
910
-
911
- return (
912
- <BubbleMenu
913
- editor={editor}
914
- options={{ placement: "top", offset: 8, flip: true, shift: true }}
915
- className="emdash-bubble-menu"
916
- >
917
- {showLinkInput ? (
918
- <div style={{ display: "flex", alignItems: "center", gap: "4px" }}>
919
- <input
920
- ref={inputRef}
921
- type="url"
922
- placeholder="https://..."
923
- value={linkUrl}
924
- onChange={(e) => setLinkUrl(e.target.value)}
925
- onKeyDown={handleKeyDown}
926
- className="emdash-bubble-link-input"
927
- />
928
- <button
929
- type="button"
930
- className="emdash-bubble-btn"
931
- onClick={handleSetLink}
932
- title="Apply link"
933
- >
934
- ↗
935
- </button>
936
- {editor.isActive("link") && (
937
- <button
938
- type="button"
939
- className="emdash-bubble-btn emdash-bubble-btn--danger"
940
- onClick={handleRemoveLink}
941
- title="Remove link"
942
- >
943
- ✕
944
- </button>
945
- )}
946
- </div>
947
- ) : (
948
- <>
949
- <button
950
- type="button"
951
- className={`emdash-bubble-btn ${editor.isActive("bold") ? "emdash-bubble-btn--active" : ""}`}
952
- onClick={() => editor.chain().focus().toggleBold().run()}
953
- title="Bold"
954
- >
955
- <strong>B</strong>
956
- </button>
957
- <button
958
- type="button"
959
- className={`emdash-bubble-btn ${editor.isActive("italic") ? "emdash-bubble-btn--active" : ""}`}
960
- onClick={() => editor.chain().focus().toggleItalic().run()}
961
- title="Italic"
962
- >
963
- <em>I</em>
964
- </button>
965
- <button
966
- type="button"
967
- className={`emdash-bubble-btn ${editor.isActive("underline") ? "emdash-bubble-btn--active" : ""}`}
968
- onClick={() => editor.chain().focus().toggleUnderline().run()}
969
- title="Underline"
970
- >
971
- <span style={{ textDecoration: "underline" }}>U</span>
972
- </button>
973
- <button
974
- type="button"
975
- className={`emdash-bubble-btn ${editor.isActive("strike") ? "emdash-bubble-btn--active" : ""}`}
976
- onClick={() => editor.chain().focus().toggleStrike().run()}
977
- title="Strikethrough"
978
- >
979
- <span style={{ textDecoration: "line-through" }}>S</span>
980
- </button>
981
- <button
982
- type="button"
983
- className={`emdash-bubble-btn ${editor.isActive("code") ? "emdash-bubble-btn--active" : ""}`}
984
- onClick={() => editor.chain().focus().toggleCode().run()}
985
- title="Code"
986
- >
987
- <span style={{ fontFamily: "monospace", fontSize: "13px" }}>&lt;/&gt;</span>
988
- </button>
989
- <span className="emdash-bubble-divider" />
990
- <button
991
- type="button"
992
- className={`emdash-bubble-btn ${editor.isActive("superscript") ? "emdash-bubble-btn--active" : ""}`}
993
- onClick={() => editor.chain().focus().toggleSuperscript().run()}
994
- title="Superscript"
995
- >
996
- <span style={{ fontSize: "13px" }}>x²</span>
997
- </button>
998
- <button
999
- type="button"
1000
- className={`emdash-bubble-btn ${editor.isActive("subscript") ? "emdash-bubble-btn--active" : ""}`}
1001
- onClick={() => editor.chain().focus().toggleSubscript().run()}
1002
- title="Subscript"
1003
- >
1004
- <span style={{ fontSize: "13px" }}>x₂</span>
1005
- </button>
1006
- <span className="emdash-bubble-divider" />
1007
- <button
1008
- type="button"
1009
- className={`emdash-bubble-btn ${editor.isActive("link") ? "emdash-bubble-btn--active" : ""}`}
1010
- onClick={() => setShowLinkInput(true)}
1011
- title={editor.isActive("link") ? "Edit link" : "Add link"}
1012
- >
1013
- 🔗
1014
- </button>
1015
- </>
1016
- )}
1017
- </BubbleMenu>
1018
- );
1019
- }
1020
-
1021
- // ── Slash Menu ──────────────────────────────────────────────────────
1022
-
1023
- interface SlashCommandItem {
1024
- id: string;
1025
- title: string;
1026
- description: string;
1027
- icon: string;
1028
- command: (props: { editor: Editor; range: Range }) => void;
1029
- aliases?: string[];
1030
- }
1031
-
1032
- const slashCommands: SlashCommandItem[] = [
1033
- {
1034
- id: "heading1",
1035
- title: "Heading 1",
1036
- description: "Large section heading",
1037
- icon: "H1",
1038
- aliases: ["h1", "title"],
1039
- command: ({ editor, range }) => {
1040
- editor.chain().focus().deleteRange(range).setNode("heading", { level: 1 }).run();
1041
- },
1042
- },
1043
- {
1044
- id: "heading2",
1045
- title: "Heading 2",
1046
- description: "Medium section heading",
1047
- icon: "H2",
1048
- aliases: ["h2", "subtitle"],
1049
- command: ({ editor, range }) => {
1050
- editor.chain().focus().deleteRange(range).setNode("heading", { level: 2 }).run();
1051
- },
1052
- },
1053
- {
1054
- id: "heading3",
1055
- title: "Heading 3",
1056
- description: "Small section heading",
1057
- icon: "H3",
1058
- aliases: ["h3"],
1059
- command: ({ editor, range }) => {
1060
- editor.chain().focus().deleteRange(range).setNode("heading", { level: 3 }).run();
1061
- },
1062
- },
1063
- {
1064
- id: "bulletList",
1065
- title: "Bullet List",
1066
- description: "Create a bullet list",
1067
- icon: "•",
1068
- aliases: ["ul", "unordered"],
1069
- command: ({ editor, range }) => {
1070
- editor.chain().focus().deleteRange(range).toggleBulletList().run();
1071
- },
1072
- },
1073
- {
1074
- id: "numberedList",
1075
- title: "Numbered List",
1076
- description: "Create a numbered list",
1077
- icon: "1.",
1078
- aliases: ["ol", "ordered"],
1079
- command: ({ editor, range }) => {
1080
- editor.chain().focus().deleteRange(range).toggleOrderedList().run();
1081
- },
1082
- },
1083
- {
1084
- id: "quote",
1085
- title: "Quote",
1086
- description: "Insert a blockquote",
1087
- icon: "\u201C",
1088
- aliases: ["blockquote", "cite"],
1089
- command: ({ editor, range }) => {
1090
- editor.chain().focus().deleteRange(range).toggleBlockquote().run();
1091
- },
1092
- },
1093
- {
1094
- id: "codeBlock",
1095
- title: "Code Block",
1096
- description: "Insert a code block",
1097
- icon: "</>",
1098
- aliases: ["code", "pre", "```"],
1099
- command: ({ editor, range }) => {
1100
- editor.chain().focus().deleteRange(range).toggleCodeBlock().run();
1101
- },
1102
- },
1103
- {
1104
- id: "htmlBlock",
1105
- title: "HTML",
1106
- description: "Insert raw HTML",
1107
- icon: "< >",
1108
- aliases: ["html", "raw", "markup"],
1109
- command: ({ editor, range }) => {
1110
- editor
1111
- .chain()
1112
- .focus()
1113
- .deleteRange(range)
1114
- .insertContent({ type: "htmlBlock", attrs: { html: "", isolated: true } })
1115
- .run();
1116
- },
1117
- },
1118
- {
1119
- id: "divider",
1120
- title: "Divider",
1121
- description: "Insert a horizontal rule",
1122
- icon: "—",
1123
- aliases: ["hr", "---", "separator"],
1124
- command: ({ editor, range }) => {
1125
- editor.chain().focus().deleteRange(range).setHorizontalRule().run();
1126
- },
1127
- },
1128
- {
1129
- id: "image",
1130
- title: "Image",
1131
- description: "Insert an image",
1132
- icon: "🖼",
1133
- aliases: ["img", "photo", "picture"],
1134
- command: ({ editor, range }) => {
1135
- editor.chain().focus().deleteRange(range).run();
1136
- // Signal the component to open the media picker
1137
- document.dispatchEvent(new CustomEvent("emdash:open-media-picker"));
1138
- },
1139
- },
1140
- ];
1141
-
1142
- interface SlashMenuState {
1143
- isOpen: boolean;
1144
- items: SlashCommandItem[];
1145
- selectedIndex: number;
1146
- clientRect: (() => DOMRect | null) | null;
1147
- range: Range | null;
1148
- }
1149
-
1150
- const initialSlashMenuState: SlashMenuState = {
1151
- isOpen: false,
1152
- items: [],
1153
- selectedIndex: 0,
1154
- clientRect: null,
1155
- range: null,
1156
- };
1157
-
1158
876
  /**
1159
877
  * Minimal `htmlBlock` TipTap node for the inline (visual-editing) editor.
1160
878
  *
@@ -1322,844 +1040,6 @@ const PluginBlockNode = Node.create({
1322
1040
  },
1323
1041
  });
1324
1042
 
1325
- function createSlashCommandsExtension(options: {
1326
- filterCommands: (query: string) => SlashCommandItem[];
1327
- onStateChange: React.Dispatch<React.SetStateAction<SlashMenuState>>;
1328
- getState: () => SlashMenuState;
1329
- }) {
1330
- const { filterCommands, onStateChange, getState } = options;
1331
-
1332
- return Extension.create({
1333
- name: "slashCommands",
1334
-
1335
- addProseMirrorPlugins() {
1336
- return [
1337
- Suggestion({
1338
- editor: this.editor,
1339
- char: "/",
1340
- startOfLine: true,
1341
- command: ({ editor, range, props }) => {
1342
- const item: unknown = props;
1343
- if (
1344
- typeof item === "object" &&
1345
- item !== null &&
1346
- "command" in item &&
1347
- typeof item.command === "function"
1348
- ) {
1349
- item.command({ editor, range });
1350
- }
1351
- },
1352
- items: ({ query }) => filterCommands(query),
1353
- render: () => {
1354
- return {
1355
- onStart: (props) => {
1356
- onStateChange({
1357
- isOpen: true,
1358
- items: props.items,
1359
- selectedIndex: 0,
1360
- clientRect: props.clientRect ?? null,
1361
- range: props.range,
1362
- });
1363
- },
1364
- onUpdate: (props) => {
1365
- onStateChange((prev) => ({
1366
- ...prev,
1367
- items: props.items,
1368
- selectedIndex: 0,
1369
- clientRect: props.clientRect ?? null,
1370
- range: props.range,
1371
- }));
1372
- },
1373
- onKeyDown: (props) => {
1374
- if (props.event.key === "Escape") {
1375
- onStateChange((prev) => ({ ...prev, isOpen: false }));
1376
- return true;
1377
- }
1378
- if (props.event.key === "ArrowUp") {
1379
- onStateChange((prev) => ({
1380
- ...prev,
1381
- selectedIndex: (prev.selectedIndex - 1 + prev.items.length) % prev.items.length,
1382
- }));
1383
- return true;
1384
- }
1385
- if (props.event.key === "ArrowDown") {
1386
- onStateChange((prev) => ({
1387
- ...prev,
1388
- selectedIndex: (prev.selectedIndex + 1) % prev.items.length,
1389
- }));
1390
- return true;
1391
- }
1392
- if (props.event.key === "Enter") {
1393
- const state = getState();
1394
- if (state.items.length > 0 && state.range) {
1395
- const item = state.items[state.selectedIndex];
1396
- if (item) {
1397
- item.command({ editor: this.editor, range: state.range });
1398
- onStateChange((prev) => ({ ...prev, isOpen: false }));
1399
- return true;
1400
- }
1401
- }
1402
- return false;
1403
- }
1404
- return false;
1405
- },
1406
- onExit: () => {
1407
- onStateChange((prev) => ({ ...prev, isOpen: false }));
1408
- },
1409
- };
1410
- },
1411
- }),
1412
- ];
1413
- },
1414
- });
1415
- }
1416
-
1417
- function InlineSlashMenu({
1418
- state,
1419
- onCommand,
1420
- setSelectedIndex,
1421
- }: {
1422
- state: SlashMenuState;
1423
- onCommand: (item: SlashCommandItem) => void;
1424
- setSelectedIndex: (index: number) => void;
1425
- }) {
1426
- const containerRef = React.useRef<HTMLDivElement>(null);
1427
-
1428
- // Track whether we have a positioned reference to avoid rendering at (0,0)
1429
- const [hasReference, setHasReference] = React.useState(false);
1430
-
1431
- const { refs, floatingStyles } = useFloating({
1432
- open: state.isOpen && hasReference,
1433
- placement: "bottom-start",
1434
- middleware: [offset(8), flip(), shift({ padding: 8 })],
1435
- whileElementsMounted: autoUpdate,
1436
- });
1437
-
1438
- React.useEffect(() => {
1439
- if (state.clientRect) {
1440
- const clientRectFn = state.clientRect;
1441
- refs.setReference({
1442
- getBoundingClientRect: () => clientRectFn() ?? new DOMRect(),
1443
- });
1444
- setHasReference(true);
1445
- } else {
1446
- setHasReference(false);
1447
- }
1448
- }, [state.clientRect, refs]);
1449
-
1450
- // Reset reference tracking when menu closes
1451
- React.useEffect(() => {
1452
- if (!state.isOpen) setHasReference(false);
1453
- }, [state.isOpen]);
1454
-
1455
- React.useEffect(() => {
1456
- if (!state.isOpen || !hasReference) return;
1457
- const container = containerRef.current;
1458
- if (!container) return;
1459
- const selected = container.querySelector(`[data-index="${state.selectedIndex}"]`);
1460
- if (selected instanceof HTMLElement) {
1461
- // Use scrollIntoView only within the menu container to avoid scrolling the page
1462
- const containerTop = container.scrollTop;
1463
- const containerBottom = containerTop + container.clientHeight;
1464
- const itemTop = selected.offsetTop;
1465
- const itemBottom = itemTop + selected.offsetHeight;
1466
- if (itemTop < containerTop) {
1467
- container.scrollTop = itemTop;
1468
- } else if (itemBottom > containerBottom) {
1469
- container.scrollTop = itemBottom - container.clientHeight;
1470
- }
1471
- }
1472
- }, [state.selectedIndex, state.isOpen, hasReference]);
1473
-
1474
- if (!state.isOpen || !hasReference) return null;
1475
-
1476
- return createPortal(
1477
- <div
1478
- ref={(node) => {
1479
- containerRef.current = node;
1480
- refs.setFloating(node);
1481
- }}
1482
- style={{
1483
- ...floatingStyles,
1484
- zIndex: 100,
1485
- borderRadius: "8px",
1486
- border: "1px solid #d1d5db",
1487
- background: "white",
1488
- padding: "4px",
1489
- boxShadow: "0 4px 12px rgba(0, 0, 0, 0.15)",
1490
- minWidth: "220px",
1491
- maxHeight: "300px",
1492
- overflowY: "auto",
1493
- }}
1494
- className="emdash-slash-menu"
1495
- >
1496
- {state.items.length === 0 ? (
1497
- <p
1498
- style={{
1499
- padding: "8px 12px",
1500
- fontSize: "13px",
1501
- color: "#9ca3af",
1502
- margin: 0,
1503
- }}
1504
- >
1505
- No results
1506
- </p>
1507
- ) : (
1508
- state.items.map((item, index) => (
1509
- <button
1510
- key={item.id}
1511
- type="button"
1512
- data-index={index}
1513
- style={{
1514
- display: "flex",
1515
- alignItems: "center",
1516
- gap: "12px",
1517
- width: "100%",
1518
- padding: "8px 12px",
1519
- fontSize: "13px",
1520
- borderRadius: "4px",
1521
- border: "none",
1522
- textAlign: "left",
1523
- cursor: "pointer",
1524
- background: index === state.selectedIndex ? "#f3f4f6" : "transparent",
1525
- }}
1526
- onClick={() => onCommand(item)}
1527
- onMouseEnter={() => setSelectedIndex(index)}
1528
- >
1529
- <span
1530
- style={{
1531
- width: "24px",
1532
- height: "24px",
1533
- display: "flex",
1534
- alignItems: "center",
1535
- justifyContent: "center",
1536
- flexShrink: 0,
1537
- fontSize: "14px",
1538
- fontWeight: 600,
1539
- color: "#6b7280",
1540
- background: "#f3f4f6",
1541
- borderRadius: "4px",
1542
- }}
1543
- >
1544
- {item.icon}
1545
- </span>
1546
- <span style={{ display: "flex", flexDirection: "column" }}>
1547
- <span style={{ fontWeight: 500 }}>{item.title}</span>
1548
- <span style={{ fontSize: "12px", color: "#9ca3af" }}>{item.description}</span>
1549
- </span>
1550
- </button>
1551
- ))
1552
- )}
1553
- </div>,
1554
- document.body,
1555
- );
1556
- }
1557
-
1558
- // ── Media Picker ───────────────────────────────────────────────────
1559
-
1560
- interface MediaItemData {
1561
- id: string;
1562
- filename: string;
1563
- mimeType: string;
1564
- url: string;
1565
- storageKey?: string;
1566
- width?: number;
1567
- height?: number;
1568
- blurhash?: string;
1569
- dominantColor?: string;
1570
- alt?: string;
1571
- provider?: string;
1572
- previewUrl?: string;
1573
- meta?: Record<string, unknown>;
1574
- }
1575
-
1576
- interface ProviderInfo {
1577
- id: string;
1578
- name: string;
1579
- icon?: string;
1580
- capabilities: { browse: boolean; search: boolean; upload: boolean; delete: boolean };
1581
- }
1582
-
1583
- const API_BASE = "/_emdash/api";
1584
-
1585
- async function ecFetch(url: string, init?: RequestInit): Promise<Response> {
1586
- const base = new Headers(init?.headers);
1587
- base.set("X-EmDash-Request", "1");
1588
- return fetch(url, {
1589
- credentials: "same-origin",
1590
- ...init,
1591
- headers: base,
1592
- });
1593
- }
1594
-
1595
- function InlineMediaPicker({
1596
- open,
1597
- onClose,
1598
- onSelect,
1599
- }: {
1600
- open: boolean;
1601
- onClose: () => void;
1602
- onSelect: (item: MediaItemData) => void;
1603
- }) {
1604
- const [providers, setProviders] = React.useState<ProviderInfo[]>([]);
1605
- const [activeProvider, setActiveProvider] = React.useState("local");
1606
- const [items, setItems] = React.useState<MediaItemData[]>([]);
1607
- const [loading, setLoading] = React.useState(false);
1608
- const [uploading, setUploading] = React.useState(false);
1609
- const [selectedId, setSelectedId] = React.useState<string | null>(null);
1610
- const fileInputRef = React.useRef<HTMLInputElement>(null);
1611
-
1612
- // Fetch providers on open
1613
- React.useEffect(() => {
1614
- if (!open) return;
1615
- setSelectedId(null);
1616
- setActiveProvider("local");
1617
- ecFetch(`${API_BASE}/media/providers`)
1618
- .then((r) => r.json())
1619
- .then((d) => setProviders(d.data.items ?? []))
1620
- .catch(() => setProviders([]));
1621
- }, [open]);
1622
-
1623
- // Fetch items when provider changes
1624
- React.useEffect(() => {
1625
- if (!open) return;
1626
- setLoading(true);
1627
- setSelectedId(null);
1628
-
1629
- const url =
1630
- activeProvider === "local"
1631
- ? `${API_BASE}/media?mimeType=image/&limit=50`
1632
- : `${API_BASE}/media/providers/${activeProvider}?mimeType=image/&limit=50`;
1633
-
1634
- void (async () => {
1635
- try {
1636
- const r = await ecFetch(url);
1637
- const d = await r.json();
1638
- const raw = d.data.items ?? [];
1639
- // eslint-disable-next-line typescript/no-unsafe-type-assertion -- API response items mapped to MediaItem shape
1640
- const typedRaw = raw as Array<{
1641
- id: string;
1642
- filename?: string;
1643
- mimeType?: string;
1644
- url?: string;
1645
- previewUrl?: string;
1646
- storageKey?: string;
1647
- width?: number;
1648
- height?: number;
1649
- blurhash?: string;
1650
- dominantColor?: string;
1651
- alt?: string;
1652
- meta?: Record<string, unknown>;
1653
- }>;
1654
- setItems(
1655
- typedRaw.map((item) => ({
1656
- id: item.id,
1657
- filename: item.filename || "",
1658
- mimeType: item.mimeType || "image/unknown",
1659
- url:
1660
- item.url ||
1661
- item.previewUrl ||
1662
- (item.storageKey ? `${API_BASE}/media/file/${item.storageKey}` : ""),
1663
- storageKey: item.storageKey,
1664
- width: item.width,
1665
- height: item.height,
1666
- blurhash: item.blurhash,
1667
- dominantColor: item.dominantColor,
1668
- alt: item.alt,
1669
- provider: activeProvider === "local" ? undefined : activeProvider,
1670
- previewUrl: item.previewUrl,
1671
- meta: item.meta,
1672
- })),
1673
- );
1674
- } catch {
1675
- setItems([]);
1676
- } finally {
1677
- setLoading(false);
1678
- }
1679
- })();
1680
- }, [open, activeProvider]);
1681
-
1682
- const handleUpload = async (file: File) => {
1683
- setUploading(true);
1684
- try {
1685
- // Detect dimensions and generate a thumbnail for large images to
1686
- // avoid OOM in server-side blurhash generation on Workers.
1687
- const dims = await new Promise<{
1688
- width?: number;
1689
- height?: number;
1690
- thumbnail?: Blob;
1691
- }>((resolve) => {
1692
- if (!file.type.startsWith("image/")) return resolve({});
1693
- const img = new window.Image();
1694
- img.onload = () => {
1695
- const w = img.naturalWidth;
1696
- const h = img.naturalHeight;
1697
- // 32 MB RGBA threshold — matches server MAX_DECODED_BYTES
1698
- if (w * h * 4 > 32 * 1024 * 1024) {
1699
- const { width: thumbW, height: thumbH } = computeThumbnailSize(w, h);
1700
- try {
1701
- const canvas = document.createElement("canvas");
1702
- canvas.width = thumbW;
1703
- canvas.height = thumbH;
1704
- const ctx = canvas.getContext("2d");
1705
- if (ctx) {
1706
- ctx.drawImage(img, 0, 0, thumbW, thumbH);
1707
- canvas.toBlob((blob) => {
1708
- URL.revokeObjectURL(img.src);
1709
- resolve({ width: w, height: h, thumbnail: blob ?? undefined });
1710
- }, "image/png");
1711
- return;
1712
- }
1713
- } catch {
1714
- // Canvas allocation or draw failed — fall through to no-thumbnail path
1715
- }
1716
- }
1717
- URL.revokeObjectURL(img.src);
1718
- resolve({ width: w, height: h });
1719
- };
1720
- img.onerror = () => {
1721
- resolve({});
1722
- URL.revokeObjectURL(img.src);
1723
- };
1724
- img.src = URL.createObjectURL(file);
1725
- });
1726
-
1727
- let item: MediaItemData;
1728
-
1729
- if (activeProvider === "local") {
1730
- const formData = new FormData();
1731
- formData.append("file", file);
1732
- if (dims.width) formData.append("width", String(dims.width));
1733
- if (dims.height) formData.append("height", String(dims.height));
1734
- if (dims.thumbnail) formData.append("thumbnail", dims.thumbnail, "thumb.png");
1735
- const res = await ecFetch(`${API_BASE}/media`, { method: "POST", body: formData });
1736
- const data = await res.json();
1737
- const unwrapped = data.data ?? data;
1738
- if (!unwrapped.item) throw new Error("Upload failed");
1739
- const raw = unwrapped.item;
1740
- item = {
1741
- id: raw.id,
1742
- filename: raw.filename || file.name,
1743
- mimeType: raw.mimeType || file.type,
1744
- url: raw.url || raw.previewUrl || `${API_BASE}/media/file/${raw.storageKey}`,
1745
- storageKey: raw.storageKey,
1746
- width: raw.width || dims.width,
1747
- height: raw.height || dims.height,
1748
- blurhash: raw.blurhash,
1749
- dominantColor: raw.dominantColor,
1750
- alt: raw.alt,
1751
- };
1752
- } else {
1753
- const formData = new FormData();
1754
- formData.append("file", file);
1755
- const res = await ecFetch(`${API_BASE}/media/providers/${activeProvider}`, {
1756
- method: "POST",
1757
- body: formData,
1758
- });
1759
- const data = await res.json();
1760
- const unwrapped = data.data ?? data;
1761
- if (!unwrapped.item) throw new Error("Upload failed");
1762
- const raw = unwrapped.item;
1763
- item = {
1764
- id: raw.id,
1765
- filename: raw.filename || file.name,
1766
- mimeType: raw.mimeType || file.type,
1767
- url: raw.previewUrl || "",
1768
- width: raw.width || dims.width,
1769
- height: raw.height || dims.height,
1770
- blurhash: raw.blurhash,
1771
- dominantColor: raw.dominantColor,
1772
- alt: raw.alt,
1773
- provider: activeProvider,
1774
- previewUrl: raw.previewUrl,
1775
- meta: raw.meta,
1776
- };
1777
- }
1778
-
1779
- setItems((prev) => [item, ...prev]);
1780
- setSelectedId(item.id);
1781
- } catch (err) {
1782
- console.error("Upload failed:", err);
1783
- } finally {
1784
- setUploading(false);
1785
- }
1786
- };
1787
-
1788
- const handleConfirm = () => {
1789
- const item = items.find((i) => i.id === selectedId);
1790
- if (item) onSelect(item);
1791
- };
1792
-
1793
- const providerTabs = React.useMemo(() => {
1794
- const tabs: Array<{ id: string; name: string; icon?: string }> = [
1795
- { id: "local", name: "Library" },
1796
- ];
1797
- for (const p of providers) {
1798
- if (p.id !== "local") tabs.push({ id: p.id, name: p.name, icon: p.icon });
1799
- }
1800
- return tabs;
1801
- }, [providers]);
1802
-
1803
- if (!open) return null;
1804
-
1805
- return createPortal(
1806
- <div
1807
- style={{
1808
- position: "fixed",
1809
- inset: 0,
1810
- zIndex: 10000,
1811
- display: "flex",
1812
- alignItems: "center",
1813
- justifyContent: "center",
1814
- background: "rgba(0,0,0,0.5)",
1815
- fontFamily: "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif",
1816
- }}
1817
- onClick={(e) => {
1818
- if (e.target === e.currentTarget) onClose();
1819
- }}
1820
- >
1821
- <div
1822
- style={{
1823
- background: "white",
1824
- borderRadius: "12px",
1825
- width: "min(700px, 90vw)",
1826
- maxHeight: "80vh",
1827
- display: "flex",
1828
- flexDirection: "column",
1829
- overflow: "hidden",
1830
- boxShadow: "0 20px 60px rgba(0,0,0,0.3)",
1831
- }}
1832
- className="emdash-media-picker"
1833
- >
1834
- {/* Header */}
1835
- <div
1836
- style={{
1837
- display: "flex",
1838
- alignItems: "center",
1839
- justifyContent: "space-between",
1840
- padding: "16px 20px",
1841
- borderBottom: "1px solid #e5e7eb",
1842
- }}
1843
- >
1844
- <span style={{ fontSize: "16px", fontWeight: 600 }}>Insert Image</span>
1845
- <button
1846
- type="button"
1847
- onClick={onClose}
1848
- style={{
1849
- background: "none",
1850
- border: "none",
1851
- cursor: "pointer",
1852
- fontSize: "18px",
1853
- padding: "4px 8px",
1854
- borderRadius: "4px",
1855
- color: "#6b7280",
1856
- }}
1857
- aria-label="Close"
1858
- >
1859
- ✕
1860
- </button>
1861
- </div>
1862
-
1863
- {/* Provider tabs */}
1864
- {providerTabs.length > 1 && (
1865
- <div
1866
- style={{
1867
- display: "flex",
1868
- gap: "6px",
1869
- padding: "12px 20px",
1870
- borderBottom: "1px solid #e5e7eb",
1871
- flexWrap: "wrap",
1872
- }}
1873
- >
1874
- {providerTabs.map((tab) => (
1875
- <button
1876
- key={tab.id}
1877
- type="button"
1878
- onClick={() => setActiveProvider(tab.id)}
1879
- style={{
1880
- padding: "6px 14px",
1881
- fontSize: "13px",
1882
- fontWeight: 500,
1883
- borderRadius: "6px",
1884
- border: "none",
1885
- cursor: "pointer",
1886
- background: activeProvider === tab.id ? "#3b82f6" : "#f3f4f6",
1887
- color: activeProvider === tab.id ? "white" : "#4b5563",
1888
- }}
1889
- >
1890
- {tab.icon && (
1891
- <span
1892
- style={{ marginRight: "6px", display: "inline-flex", alignItems: "center" }}
1893
- >
1894
- {tab.icon.startsWith("data:") || tab.icon.startsWith("http") ? (
1895
- <img src={tab.icon} alt="" style={{ width: "16px", height: "16px" }} />
1896
- ) : (
1897
- tab.icon
1898
- )}
1899
- </span>
1900
- )}
1901
- {tab.name}
1902
- </button>
1903
- ))}
1904
- </div>
1905
- )}
1906
-
1907
- {/* Upload bar */}
1908
- <div
1909
- style={{
1910
- display: "flex",
1911
- alignItems: "center",
1912
- justifyContent: "space-between",
1913
- padding: "12px 20px",
1914
- borderBottom: "1px solid #e5e7eb",
1915
- }}
1916
- >
1917
- <span style={{ fontSize: "13px", color: "#6b7280" }}>
1918
- {loading ? "Loading…" : `${items.length} image${items.length !== 1 ? "s" : ""}`}
1919
- </span>
1920
- <button
1921
- type="button"
1922
- onClick={() => fileInputRef.current?.click()}
1923
- disabled={uploading}
1924
- style={{
1925
- padding: "6px 14px",
1926
- fontSize: "13px",
1927
- fontWeight: 500,
1928
- borderRadius: "6px",
1929
- border: "1px solid #d1d5db",
1930
- cursor: uploading ? "not-allowed" : "pointer",
1931
- background: "white",
1932
- color: "#374151",
1933
- opacity: uploading ? 0.6 : 1,
1934
- }}
1935
- >
1936
- {uploading ? "Uploading…" : "Upload"}
1937
- </button>
1938
- <input
1939
- ref={fileInputRef}
1940
- type="file"
1941
- accept="image/*"
1942
- style={{ display: "none" }}
1943
- onChange={(e) => {
1944
- const file = e.target.files?.[0];
1945
- if (file) void handleUpload(file);
1946
- if (fileInputRef.current) fileInputRef.current.value = "";
1947
- }}
1948
- />
1949
- </div>
1950
-
1951
- {/* Grid */}
1952
- <div
1953
- style={{
1954
- flex: 1,
1955
- overflowY: "auto",
1956
- padding: "16px 20px",
1957
- minHeight: "250px",
1958
- }}
1959
- >
1960
- {loading ? (
1961
- <div
1962
- style={{
1963
- display: "flex",
1964
- alignItems: "center",
1965
- justifyContent: "center",
1966
- height: "200px",
1967
- color: "#9ca3af",
1968
- fontSize: "14px",
1969
- }}
1970
- >
1971
- Loading…
1972
- </div>
1973
- ) : items.length === 0 ? (
1974
- <div
1975
- style={{
1976
- display: "flex",
1977
- flexDirection: "column",
1978
- alignItems: "center",
1979
- justifyContent: "center",
1980
- height: "200px",
1981
- color: "#9ca3af",
1982
- fontSize: "14px",
1983
- textAlign: "center",
1984
- }}
1985
- >
1986
- <div style={{ fontSize: "32px", marginBottom: "8px" }}>🖼</div>
1987
- No images found
1988
- <button
1989
- type="button"
1990
- onClick={() => fileInputRef.current?.click()}
1991
- style={{
1992
- marginTop: "12px",
1993
- padding: "8px 16px",
1994
- fontSize: "13px",
1995
- borderRadius: "6px",
1996
- border: "1px solid #d1d5db",
1997
- background: "white",
1998
- cursor: "pointer",
1999
- color: "#374151",
2000
- }}
2001
- >
2002
- Upload an image
2003
- </button>
2004
- </div>
2005
- ) : (
2006
- <div
2007
- style={{
2008
- display: "grid",
2009
- gridTemplateColumns: "repeat(auto-fill, minmax(110px, 1fr))",
2010
- gap: "10px",
2011
- }}
2012
- >
2013
- {items.map((item) => {
2014
- const isSelected = selectedId === item.id;
2015
- const thumb = item.url || item.previewUrl || "";
2016
- return (
2017
- <button
2018
- key={item.id}
2019
- type="button"
2020
- onClick={() => setSelectedId(item.id)}
2021
- onDoubleClick={() => onSelect(item)}
2022
- style={{
2023
- position: "relative",
2024
- aspectRatio: "1",
2025
- borderRadius: "8px",
2026
- border: isSelected ? "2px solid #3b82f6" : "2px solid transparent",
2027
- overflow: "hidden",
2028
- cursor: "pointer",
2029
- padding: 0,
2030
- background: "#f3f4f6",
2031
- outline: isSelected ? "2px solid rgba(59,130,246,0.3)" : "none",
2032
- outlineOffset: "1px",
2033
- }}
2034
- aria-label={item.filename}
2035
- >
2036
- {thumb ? (
2037
- <img
2038
- src={thumb}
2039
- alt=""
2040
- style={{ width: "100%", height: "100%", objectFit: "cover" }}
2041
- />
2042
- ) : (
2043
- <div
2044
- style={{
2045
- width: "100%",
2046
- height: "100%",
2047
- display: "flex",
2048
- alignItems: "center",
2049
- justifyContent: "center",
2050
- fontSize: "24px",
2051
- }}
2052
- >
2053
- 🖼
2054
- </div>
2055
- )}
2056
- {isSelected && (
2057
- <div
2058
- style={{
2059
- position: "absolute",
2060
- inset: 0,
2061
- background: "rgba(59,130,246,0.15)",
2062
- display: "flex",
2063
- alignItems: "center",
2064
- justifyContent: "center",
2065
- }}
2066
- >
2067
- <div
2068
- style={{
2069
- width: "24px",
2070
- height: "24px",
2071
- borderRadius: "50%",
2072
- background: "#3b82f6",
2073
- color: "white",
2074
- display: "flex",
2075
- alignItems: "center",
2076
- justifyContent: "center",
2077
- fontSize: "14px",
2078
- }}
2079
- >
2080
- ✓
2081
- </div>
2082
- </div>
2083
- )}
2084
- <div
2085
- style={{
2086
- position: "absolute",
2087
- bottom: 0,
2088
- left: 0,
2089
- right: 0,
2090
- background: "linear-gradient(transparent, rgba(0,0,0,0.6))",
2091
- padding: "16px 6px 4px",
2092
- }}
2093
- >
2094
- <div
2095
- style={{
2096
- fontSize: "11px",
2097
- color: "white",
2098
- overflow: "hidden",
2099
- textOverflow: "ellipsis",
2100
- whiteSpace: "nowrap",
2101
- }}
2102
- >
2103
- {item.filename}
2104
- </div>
2105
- </div>
2106
- </button>
2107
- );
2108
- })}
2109
- </div>
2110
- )}
2111
- </div>
2112
-
2113
- {/* Footer */}
2114
- <div
2115
- style={{
2116
- display: "flex",
2117
- justifyContent: "flex-end",
2118
- gap: "8px",
2119
- padding: "12px 20px",
2120
- borderTop: "1px solid #e5e7eb",
2121
- }}
2122
- >
2123
- <button
2124
- type="button"
2125
- onClick={onClose}
2126
- style={{
2127
- padding: "8px 16px",
2128
- fontSize: "13px",
2129
- fontWeight: 500,
2130
- borderRadius: "6px",
2131
- border: "1px solid #d1d5db",
2132
- background: "white",
2133
- cursor: "pointer",
2134
- color: "#374151",
2135
- }}
2136
- >
2137
- Cancel
2138
- </button>
2139
- <button
2140
- type="button"
2141
- onClick={handleConfirm}
2142
- disabled={!selectedId}
2143
- style={{
2144
- padding: "8px 16px",
2145
- fontSize: "13px",
2146
- fontWeight: 500,
2147
- borderRadius: "6px",
2148
- border: "none",
2149
- background: selectedId ? "#3b82f6" : "#93c5fd",
2150
- color: "white",
2151
- cursor: selectedId ? "pointer" : "not-allowed",
2152
- }}
2153
- >
2154
- Insert
2155
- </button>
2156
- </div>
2157
- </div>
2158
- </div>,
2159
- document.body,
2160
- );
2161
- }
2162
-
2163
1043
  // ── Component ──────────────────────────────────────────────────────
2164
1044
 
2165
1045
  export interface InlinePortableTextEditorProps {
@@ -2185,8 +1065,8 @@ export function InlinePortableTextEditor({
2185
1065
  const savingRef = React.useRef(false);
2186
1066
  const editorRef = React.useRef<ReturnType<typeof useEditor>>(null);
2187
1067
 
2188
- // Media picker state
2189
- const [mediaPickerOpen, setMediaPickerOpen] = React.useState(false);
1068
+ // Where the image picker that `/image` opened will put the image.
1069
+ const [imagePickerAt, setImagePickerAt] = React.useState<number | null>(null);
2190
1070
  const [unsupportedFileGuidance, setUnsupportedFileGuidance] = React.useState<{
2191
1071
  message: string;
2192
1072
  version: number;
@@ -2203,26 +1083,25 @@ export function InlinePortableTextEditor({
2203
1083
  [showUnsupportedFileGuidance],
2204
1084
  );
2205
1085
 
2206
- // Listen for the slash command's media picker event
2207
- React.useEffect(() => {
2208
- const handler = () => setMediaPickerOpen(true);
2209
- document.addEventListener("emdash:open-media-picker", handler);
2210
- return () => document.removeEventListener("emdash:open-media-picker", handler);
2211
- }, []);
1086
+ const uiRoot = useInlineUiRoot();
2212
1087
 
2213
- // Slash menu state — use ref to avoid re-creating the extension on state change
2214
- const [slashMenuState, setSlashMenuState] = React.useState<SlashMenuState>(initialSlashMenuState);
1088
+ // The Suggestion plugin's key handlers read the slash menu's state as soon
1089
+ // as it changes, before React commits it, so the ref takes each change
1090
+ // synchronously and the extension, created once, reads the ref.
1091
+ const [slashMenuState, setSlashMenuStateRaw] =
1092
+ React.useState<SlashMenuState>(initialSlashMenuState);
2215
1093
  const slashMenuStateRef = React.useRef(slashMenuState);
2216
- slashMenuStateRef.current = slashMenuState;
2217
-
2218
- const filterCommandsRef = React.useRef((query: string): SlashCommandItem[] => {
2219
- const q = query.toLowerCase();
2220
- return slashCommands.filter(
2221
- (cmd) =>
2222
- cmd.title.toLowerCase().includes(q) ||
2223
- cmd.description.toLowerCase().includes(q) ||
2224
- cmd.aliases?.some((a) => a.toLowerCase().includes(q)),
2225
- );
1094
+ const setSlashMenuState: React.Dispatch<React.SetStateAction<SlashMenuState>> = React.useCallback(
1095
+ (action) => {
1096
+ const next = typeof action === "function" ? action(slashMenuStateRef.current) : action;
1097
+ slashMenuStateRef.current = next;
1098
+ setSlashMenuStateRaw(next);
1099
+ },
1100
+ [],
1101
+ );
1102
+ const slashMenuActionsRef = React.useRef({
1103
+ run: (_item: SlashCommandItem) => {},
1104
+ dismiss: () => {},
2226
1105
  });
2227
1106
 
2228
1107
  const [loadState] = React.useState<{
@@ -2281,7 +1160,7 @@ export function InlinePortableTextEditor({
2281
1160
  method: "PUT",
2282
1161
  credentials: "same-origin",
2283
1162
  headers: { "Content-Type": "application/json", "X-EmDash-Request": "1" },
2284
- body: JSON.stringify({ data: { [field]: blocks } }),
1163
+ body: JSON.stringify({ data: { [field]: blocks }, skipRevision: true }),
2285
1164
  keepalive: options?.keepalive ?? false,
2286
1165
  },
2287
1166
  );
@@ -2335,51 +1214,40 @@ export function InlinePortableTextEditor({
2335
1214
  const slashCommandsExtension = React.useMemo(
2336
1215
  () =>
2337
1216
  createSlashCommandsExtension({
2338
- filterCommands: (query: string) => filterCommandsRef.current(query),
2339
1217
  onStateChange: setSlashMenuState,
2340
1218
  getState: () => slashMenuStateRef.current,
1219
+ onCommand: (item) => slashMenuActionsRef.current.run(item),
1220
+ onDismiss: () => slashMenuActionsRef.current.dismiss(),
2341
1221
  }),
2342
- [],
1222
+ [setSlashMenuState],
2343
1223
  );
2344
1224
 
2345
1225
  const editor = useEditor({
2346
1226
  extensions: [
2347
1227
  StarterKit.configure({
2348
- heading: { levels: [1, 2, 3] },
2349
1228
  dropcursor: { color: "#3b82f6", width: 2 },
2350
1229
  // Replaced with InlineCodeBlockExtension below (adds language picker).
2351
1230
  codeBlock: false,
2352
1231
  // Replaced with CodeMarkExtension so inline code can combine with link/etc.
2353
1232
  code: false,
2354
1233
  orderedList: false,
1234
+ // Registered on their own below, so links don't open when clicked.
1235
+ link: false,
1236
+ underline: false,
2355
1237
  }),
2356
1238
  EmDashOrderedList,
2357
1239
  CodeMarkExtension,
2358
1240
  InlineCodeBlockExtension,
2359
- Image.extend({
2360
- addAttributes() {
2361
- return {
2362
- ...this.parent?.(),
2363
- mediaId: { default: null },
2364
- provider: { default: null },
2365
- width: { default: null },
2366
- height: { default: null },
2367
- displayWidth: { default: null },
2368
- displayHeight: { default: null },
2369
- caption: { default: null },
2370
- blurhash: { default: null },
2371
- dominantColor: { default: null },
2372
- alignment: { default: null, rendered: false },
2373
- link: { default: null, rendered: false },
2374
- };
2375
- },
2376
- }),
1241
+ InlineImageExtension,
2377
1242
  Underline,
2378
1243
  Subscript,
2379
1244
  Superscript,
2380
1245
  Link.configure({
2381
1246
  openOnClick: false,
2382
- HTMLAttributes: { class: "underline text-blue-600 dark:text-blue-400" },
1247
+ // TipTap's Link extension defaults target to "_blank". Without an
1248
+ // explicit override it would deep-merge that default in, causing every
1249
+ // link created via setLink to serialize as blank: true.
1250
+ HTMLAttributes: { target: null, class: "underline text-blue-600 dark:text-blue-400" },
2383
1251
  }),
2384
1252
  Placeholder.configure({
2385
1253
  includeChildren: true,
@@ -2421,56 +1289,86 @@ export function InlinePortableTextEditor({
2421
1289
  if (editor && !savedDocRef.current) savedDocRef.current = editor.state.doc;
2422
1290
  }, [editor]);
2423
1291
 
2424
- // Slash menu command handler
2425
- const handleSlashCommand = React.useCallback(
1292
+ const runSlashCommand = React.useCallback(
2426
1293
  (item: SlashCommandItem) => {
2427
- if (!editor || !slashMenuStateRef.current.range) return;
2428
- item.command({ editor, range: slashMenuStateRef.current.range });
1294
+ const { range } = slashMenuStateRef.current;
1295
+ if (!editor || !range) return;
1296
+ item.command({
1297
+ editor,
1298
+ range,
1299
+ openImagePicker: () => setImagePickerAt(editor.state.selection.from),
1300
+ });
2429
1301
  setSlashMenuState((prev) => ({ ...prev, isOpen: false }));
2430
1302
  },
2431
- [editor],
1303
+ [editor, setSlashMenuState],
2432
1304
  );
1305
+ /** Closes the slash menu without a command, keeping what was typed. */
1306
+ const closeSlashMenu = React.useCallback(() => {
1307
+ const { range } = slashMenuStateRef.current;
1308
+ setSlashMenuState((prev) => ({
1309
+ ...prev,
1310
+ isOpen: false,
1311
+ dismissedSlashFrom: range ? range.from : prev.dismissedSlashFrom,
1312
+ }));
1313
+ if (editor && range) exitSuggestion(editor.view);
1314
+ }, [editor, setSlashMenuState]);
1315
+ slashMenuActionsRef.current = { run: runSlashCommand, dismiss: closeSlashMenu };
2433
1316
 
2434
- // Handle media selection from the picker
2435
- const handleMediaSelect = React.useCallback(
2436
- (item: MediaItemData) => {
2437
- if (!editor) return;
2438
- const src =
2439
- item.url || item.previewUrl || `/_emdash/api/media/file/${item.storageKey || item.id}`;
2440
- const attrs = {
2441
- src,
2442
- alt: item.alt || item.filename || "",
2443
- mediaId: item.id,
2444
- provider: canonicalMediaProviderId(item.provider) || "local",
2445
- width: item.width,
2446
- height: item.height,
2447
- blurhash: item.blurhash,
2448
- dominantColor: item.dominantColor,
2449
- };
2450
- editor.chain().focus().setImage(attrs).run();
2451
- setMediaPickerOpen(false);
2452
- void save();
2453
- },
2454
- [editor, save],
1317
+ // Edits made while the picker is open, as when focus stays in the editor, move the spot it inserts at.
1318
+ const pickerOpen = imagePickerAt !== null;
1319
+ React.useEffect(() => {
1320
+ if (!editor || !pickerOpen) return;
1321
+ const onTransaction = ({ transaction }: { transaction: Transaction }) => {
1322
+ if (!transaction.docChanged) return;
1323
+ setImagePickerAt((at) => (at === null ? at : transaction.mapping.map(at)));
1324
+ };
1325
+ editor.on("transaction", onTransaction);
1326
+ return () => {
1327
+ editor.off("transaction", onTransaction);
1328
+ };
1329
+ }, [editor, pickerOpen]);
1330
+
1331
+ // The image picker opens at the caret the `/image` command left.
1332
+ const caretReference = React.useMemo(
1333
+ () =>
1334
+ editor && imagePickerAt !== null
1335
+ ? {
1336
+ getBoundingClientRect: () => {
1337
+ if (editor.isDestroyed) return new DOMRect();
1338
+ const { view } = editor;
1339
+ const caret = view.coordsAtPos(Math.min(imagePickerAt, view.state.doc.content.size));
1340
+ return new DOMRect(caret.left, caret.top, 0, caret.bottom - caret.top);
1341
+ },
1342
+ contextElement: editor.view.dom,
1343
+ }
1344
+ : null,
1345
+ [editor, imagePickerAt],
2455
1346
  );
2456
1347
 
2457
- // Save on blur — but not when interacting with slash menu or media picker
1348
+ // Save on blur — but not when interacting with slash menu or image picker
2458
1349
  const handleBlur = React.useCallback(
2459
1350
  (e: React.FocusEvent<HTMLDivElement>) => {
2460
- if (mediaPickerOpen) return;
2461
1351
  const related = e.relatedTarget instanceof HTMLElement ? e.relatedTarget : null;
2462
1352
  if (related && e.currentTarget.contains(related)) return;
2463
1353
  // The copy fallback briefly moves focus to its textarea before restoring the editor.
2464
1354
  if (related?.hasAttribute("data-emdash-clipboard-fallback")) return;
2465
- // Don't save if focus moved to the slash menu (portalled to body)
2466
- if (related?.closest(".emdash-slash-menu")) return;
2467
- if (related?.closest(".emdash-media-picker")) return;
1355
+ // The toolbars, menus, and image picker live in a root of their own at the end of the page.
1356
+ if (related && uiRoot?.contains(related)) return;
1357
+ // A toolbar button keeps focus in the editor, so the toolbars skip
1358
+ // the editor's next blur; telling them again lets them hide. It waits
1359
+ // for this blur to finish, which may be a toolbar removing itself.
1360
+ const event = e.nativeEvent;
1361
+ queueMicrotask(() => {
1362
+ if (!editor || editor.isDestroyed || editor.view.hasFocus()) return;
1363
+ if (uiRoot?.contains(document.activeElement)) return;
1364
+ editor.view.dispatch(editor.state.tr.setMeta("blur", { event }));
1365
+ });
2468
1366
  void save();
2469
1367
  },
2470
- [save, mediaPickerOpen],
1368
+ [editor, save, uiRoot],
2471
1369
  );
2472
1370
 
2473
- if (!editor) return null;
1371
+ if (!editor || !uiRoot) return null;
2474
1372
 
2475
1373
  return (
2476
1374
  <div onBlur={handleBlur}>
@@ -2481,7 +1379,7 @@ export function InlinePortableTextEditor({
2481
1379
  </div>
2482
1380
  ) : (
2483
1381
  <>
2484
- <InlineBubbleMenu editor={editor} />
1382
+ <InlineBubbleMenu editor={editor} uiRoot={uiRoot} onImageReplaced={() => void save()} />
2485
1383
  <EditorContent editor={editor} />
2486
1384
  </>
2487
1385
  )}
@@ -2502,20 +1400,33 @@ export function InlinePortableTextEditor({
2502
1400
  </div>
2503
1401
  ) : null}
2504
1402
  <InlineSlashMenu
1403
+ editor={editor}
1404
+ uiRoot={uiRoot}
2505
1405
  state={slashMenuState}
2506
- onCommand={handleSlashCommand}
1406
+ onCommand={runSlashCommand}
1407
+ onClose={closeSlashMenu}
2507
1408
  setSelectedIndex={(index) =>
2508
1409
  setSlashMenuState((prev) => ({ ...prev, selectedIndex: index }))
2509
1410
  }
2510
1411
  />
2511
- <InlineMediaPicker
2512
- open={mediaPickerOpen}
2513
- onClose={() => {
2514
- setMediaPickerOpen(false);
2515
- editor?.commands.focus();
2516
- }}
2517
- onSelect={handleMediaSelect}
2518
- />
1412
+ {imagePickerAt !== null && caretReference && (
1413
+ <InlineMediaPicker
1414
+ uiRoot={uiRoot}
1415
+ reference={caretReference}
1416
+ gap={6}
1417
+ label="Insert image"
1418
+ onChoose={(image) => {
1419
+ insertImage(editor, imagePickerAt, image);
1420
+ editor.view.focus();
1421
+ setImagePickerAt(null);
1422
+ void save();
1423
+ }}
1424
+ onClose={(reason) => {
1425
+ if (reason !== "blur") editor.view.focus();
1426
+ setImagePickerAt(null);
1427
+ }}
1428
+ />
1429
+ )}
2519
1430
  <style>{`
2520
1431
  .emdash-inline-code-block {
2521
1432
  position: relative;
@@ -2643,114 +1554,33 @@ export function InlinePortableTextEditor({
2643
1554
  --emdash-code-focus: var(--emdash-inline-code-focus, #a8d5ff);
2644
1555
  }
2645
1556
  }
2646
- .emdash-bubble-menu {
2647
- z-index: 100;
2648
- display: flex;
2649
- align-items: center;
2650
- gap: 2px;
2651
- padding: 4px;
2652
- border-radius: 8px;
2653
- border: 1px solid #d1d5db;
2654
- background: white;
2655
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
2656
- font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
2657
- }
2658
- .emdash-bubble-btn {
2659
- display: inline-flex;
2660
- align-items: center;
2661
- justify-content: center;
2662
- width: 32px;
2663
- height: 32px;
2664
- border-radius: 6px;
2665
- border: none;
2666
- background: transparent;
2667
- cursor: pointer;
2668
- color: inherit;
2669
- font-size: 14px;
2670
- line-height: 1;
2671
- padding: 0;
2672
- }
2673
- .emdash-bubble-btn:hover {
2674
- background: #f3f4f6;
1557
+ .emdash-inline-editor .emdash-slash-query {
1558
+ margin-inline: -0.25em;
1559
+ padding: 0.125em 0.25em;
1560
+ border-radius: 0.375rem;
1561
+ background: color-mix(in srgb, currentColor 8%, transparent);
2675
1562
  }
2676
- .emdash-bubble-btn--active {
2677
- background: #dbeafe;
2678
- color: #1d4ed8;
2679
- }
2680
- .emdash-bubble-btn--active:hover {
2681
- background: #bfdbfe;
2682
- }
2683
- .emdash-bubble-btn--danger {
2684
- color: #dc2626;
2685
- }
2686
- .emdash-bubble-divider {
2687
- display: block;
2688
- width: 1px;
2689
- height: 20px;
2690
- background: #d1d5db;
2691
- margin: 0 4px;
1563
+ .emdash-inline-editor .emdash-slash-query.is-empty::after {
1564
+ content: "Type to search";
1565
+ color: color-mix(in srgb, currentColor 45%, transparent);
1566
+ pointer-events: none;
2692
1567
  }
2693
- .emdash-bubble-link-input {
2694
- height: 28px;
2695
- width: 200px;
2696
- font-size: 13px;
2697
- padding: 0 8px;
2698
- border: 1px solid #d1d5db;
2699
- border-radius: 4px;
1568
+ ${INLINE_EDITOR_UI_STYLES}
1569
+ ${INLINE_MEDIA_PICKER_STYLES}
1570
+ ${INLINE_IMAGE_STYLES}
1571
+ .emdash-inline-editor:focus {
2700
1572
  outline: none;
2701
- background: white;
2702
- color: inherit;
2703
- font-family: inherit;
2704
1573
  }
2705
- .emdash-bubble-link-input:focus {
2706
- border-color: #3b82f6;
2707
- }
2708
- @media (prefers-color-scheme: dark) {
2709
- .emdash-bubble-menu {
2710
- background: #1f2937;
2711
- border-color: #374151;
2712
- color: #e5e7eb;
2713
- }
2714
- .emdash-bubble-btn:hover {
2715
- background: #374151;
2716
- }
2717
- .emdash-bubble-btn--active {
2718
- background: #1e3a5f;
2719
- color: #93c5fd;
2720
- }
2721
- .emdash-bubble-btn--active:hover {
2722
- background: #1e40af;
2723
- }
2724
- .emdash-bubble-divider {
2725
- background: #4b5563;
2726
- }
2727
- .emdash-bubble-link-input {
2728
- background: #111827;
2729
- border-color: #4b5563;
2730
- color: #e5e7eb;
2731
- }
2732
- .emdash-bubble-link-input:focus {
2733
- border-color: #60a5fa;
2734
- }
2735
- .emdash-slash-menu {
2736
- background: #1f2937 !important;
2737
- border-color: #374151 !important;
2738
- color: #e5e7eb !important;
2739
- }
2740
- .emdash-slash-menu button:hover,
2741
- .emdash-slash-menu button[style*="background: rgb(243, 244, 246)"] {
2742
- background: #374151 !important;
2743
- }
2744
- .emdash-media-picker {
2745
- background: #1f2937 !important;
2746
- color: #e5e7eb !important;
2747
- }
2748
- .emdash-media-picker button {
2749
- color: #e5e7eb !important;
2750
- }
1574
+ .emdash-inline-editor:focus p.is-editor-empty {
1575
+ display: flow-root;
2751
1576
  }
2752
- .emdash-inline-editor:focus {
2753
- outline: none;
1577
+ .emdash-inline-editor:focus p.is-editor-empty::before {
1578
+ content: attr(data-placeholder);
1579
+ float: inline-start;
1580
+ width: 100%;
1581
+ margin-inline-end: -100%;
1582
+ opacity: 0.5;
1583
+ pointer-events: none;
2754
1584
  }
2755
1585
  .emdash-inline-editor-guidance {
2756
1586
  margin-block-start: 0.75rem;