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
@@ -1,306 +0,0 @@
1
- import { sql } from "kysely";
2
- import { ulid } from "ulidx";
3
- import { Cron } from "croner";
4
-
5
- //#region src/plugins/cron.ts
6
- /**
7
- * Plugin Cron System
8
- *
9
- * Provides scheduled task execution for plugins:
10
- * - CronExecutor: claims overdue tasks, invokes per-plugin cron hook, updates next run.
11
- * - CronAccessImpl: per-plugin API for schedule/cancel/list.
12
- *
13
- */
14
- /** Matches the Workers runtime, which always runs in UTC, so Node hosts fire at the same instant. */
15
- const CRON_TIMEZONE = "UTC";
16
- /** Stale lock threshold in minutes */
17
- const STALE_LOCK_MINUTES = 10;
18
- const ISO_DATETIME_PATTERN = /^\d{4}-\d{2}-\d{2}[T ]\d{2}:\d{2}(?::\d{2}(?:\.\d+)?)?(?:Z|[+-]\d{2}:?\d{2})?$/;
19
- const ISO_TIMEZONE_PATTERN = /(?:Z|[+-]\d{2}:?\d{2})$/;
20
- /**
21
- * Executes overdue cron tasks.
22
- *
23
- * Called by the platform driver: the NodeCronScheduler timer on Node, or the
24
- * Worker's `scheduled()` handler (via runScheduledTasks) on Cloudflare.
25
- * Stateless — all state lives in the database.
26
- */
27
- var CronExecutor = class {
28
- /**
29
- * Resolves the database connection to use for this tick. A resolver (not a
30
- * captured instance) so connection-backed adapters work across events: on
31
- * Cloudflare the `scheduled()` handler installs an event-scoped connection
32
- * in ALS, and this resolves to it instead of the per-isolate singleton
33
- * whose socket belongs to an earlier request. Accepts a plain `Kysely` too
34
- * (wrapped in a constant resolver) for callers/tests that don't need ALS.
35
- */
36
- resolveDb;
37
- constructor(db, invokeCronHook, now = () => /* @__PURE__ */ new Date()) {
38
- this.invokeCronHook = invokeCronHook;
39
- this.now = now;
40
- this.resolveDb = typeof db === "function" ? db : () => db;
41
- }
42
- get db() {
43
- return this.resolveDb();
44
- }
45
- /**
46
- * Process all overdue tasks.
47
- *
48
- * 1. Atomically claim tasks whose next_run_at <= now, status = idle, enabled = 1.
49
- * 2. For each claimed task, invoke the plugin's cron hook.
50
- * 3. On success: compute next_run_at and reset to idle, or delete one-shots.
51
- * 4. On failure: reset to idle (retry on next tick).
52
- */
53
- async tick() {
54
- const currentTime = this.now();
55
- const now = currentTime.toISOString();
56
- let processed = 0;
57
- const claimed = await sql`
58
- UPDATE _emdash_cron_tasks
59
- SET status = 'running', locked_at = ${now}
60
- WHERE id IN (
61
- SELECT id FROM _emdash_cron_tasks
62
- WHERE next_run_at <= ${now}
63
- AND status = 'idle'
64
- AND enabled = 1
65
- ORDER BY next_run_at ASC
66
- LIMIT 10
67
- )
68
- RETURNING id, plugin_id, task_name, schedule, is_oneshot, data, next_run_at
69
- `.execute(this.db);
70
- for (const task of claimed.rows) {
71
- let parsedData;
72
- if (task.data) try {
73
- parsedData = JSON.parse(task.data);
74
- } catch {
75
- console.error(`[cron] Invalid JSON data for ${task.plugin_id}:${task.task_name}, skipping`);
76
- await sql`
77
- UPDATE _emdash_cron_tasks
78
- SET status = 'idle', locked_at = NULL, enabled = 0
79
- WHERE id = ${task.id}
80
- `.execute(this.db);
81
- continue;
82
- }
83
- const event = {
84
- name: task.task_name,
85
- data: parsedData,
86
- scheduledAt: task.next_run_at
87
- };
88
- let hookFailed = false;
89
- try {
90
- await this.invokeCronHook(task.plugin_id, event);
91
- } catch (error) {
92
- hookFailed = true;
93
- console.error(`[cron] Hook failed for ${task.plugin_id}:${task.task_name}:`, error);
94
- }
95
- if (task.is_oneshot) if (hookFailed) {
96
- const meta = parsedData?.__emdash != null && typeof parsedData.__emdash === "object" ? parsedData.__emdash : void 0;
97
- const raw = meta?.retryCount;
98
- const retryCount = typeof raw === "number" && Number.isFinite(raw) && raw > 0 ? Math.floor(raw) : 0;
99
- const MAX_ONESHOT_RETRIES = 5;
100
- if (retryCount >= MAX_ONESHOT_RETRIES) {
101
- console.error(`[cron] One-shot task ${task.plugin_id}:${task.task_name} exceeded ${MAX_ONESHOT_RETRIES} retries, removing`);
102
- await sql`
103
- DELETE FROM _emdash_cron_tasks WHERE id = ${task.id}
104
- `.execute(this.db);
105
- } else {
106
- const backoffMs = 6e4 * Math.pow(2, retryCount);
107
- await sql`
108
- UPDATE _emdash_cron_tasks
109
- SET status = 'idle', locked_at = NULL, next_run_at = ${new Date(currentTime.getTime() + backoffMs).toISOString()}, data = ${JSON.stringify({
110
- ...parsedData,
111
- __emdash: {
112
- ...meta,
113
- retryCount: retryCount + 1
114
- }
115
- })}
116
- WHERE id = ${task.id}
117
- `.execute(this.db);
118
- }
119
- } else await sql`
120
- DELETE FROM _emdash_cron_tasks WHERE id = ${task.id}
121
- `.execute(this.db);
122
- else {
123
- let nextRun;
124
- try {
125
- nextRun = nextCronTime(task.schedule, currentTime);
126
- } catch (error) {
127
- console.error(`[cron] Disabling unsatisfiable schedule for ${task.plugin_id}:${task.task_name}:`, error);
128
- await sql`
129
- UPDATE _emdash_cron_tasks
130
- SET status = 'idle', locked_at = NULL, last_run_at = ${now}, enabled = 0
131
- WHERE id = ${task.id}
132
- `.execute(this.db);
133
- processed++;
134
- continue;
135
- }
136
- await sql`
137
- UPDATE _emdash_cron_tasks
138
- SET status = 'idle',
139
- locked_at = NULL,
140
- last_run_at = ${now},
141
- next_run_at = ${nextRun}
142
- WHERE id = ${task.id}
143
- `.execute(this.db);
144
- }
145
- processed++;
146
- }
147
- return processed;
148
- }
149
- /**
150
- * Recover tasks stuck in 'running' for more than STALE_LOCK_MINUTES.
151
- * These likely crashed mid-execution.
152
- */
153
- async recoverStaleLocks() {
154
- const result = await sql`
155
- UPDATE _emdash_cron_tasks
156
- SET status = 'idle', locked_at = NULL
157
- WHERE status = 'running'
158
- AND locked_at < ${(/* @__PURE__ */ new Date(this.now().getTime() - STALE_LOCK_MINUTES * 60 * 1e3)).toISOString()}
159
- `.execute(this.db);
160
- return Number(result.numAffectedRows ?? 0);
161
- }
162
- /**
163
- * Get the next due time across all enabled tasks.
164
- * Returns null if no tasks are scheduled.
165
- */
166
- async getNextDueTime() {
167
- return (await sql`
168
- SELECT MIN(next_run_at) as next
169
- FROM _emdash_cron_tasks
170
- WHERE status = 'idle' AND enabled = 1
171
- `.execute(this.db)).rows[0]?.next ?? null;
172
- }
173
- };
174
- /**
175
- * Per-plugin cron API implementation.
176
- * Scoped to a single plugin ID — plugins cannot see or modify other plugins' tasks.
177
- */
178
- var CronAccessImpl = class {
179
- constructor(db, pluginId, reschedule, now = () => /* @__PURE__ */ new Date()) {
180
- this.db = db;
181
- this.pluginId = pluginId;
182
- this.reschedule = reschedule;
183
- this.now = now;
184
- }
185
- async schedule(name, opts) {
186
- validateTaskName(name);
187
- validateSchedule(opts.schedule);
188
- const oneshot = isOneShot(opts.schedule);
189
- const nextRun = oneshot ? oneShotTime(opts.schedule) : nextCronTime(opts.schedule, this.now());
190
- const dataJson = opts.data ? JSON.stringify(opts.data) : null;
191
- await sql`
192
- INSERT INTO _emdash_cron_tasks (id, plugin_id, task_name, schedule, is_oneshot, data, next_run_at, status, enabled)
193
- VALUES (${ulid()}, ${this.pluginId}, ${name}, ${opts.schedule}, ${oneshot ? 1 : 0}, ${dataJson}, ${nextRun}, 'idle', 1)
194
- ON CONFLICT (plugin_id, task_name) DO UPDATE SET
195
- schedule = ${opts.schedule},
196
- is_oneshot = ${oneshot ? 1 : 0},
197
- data = ${dataJson},
198
- next_run_at = ${nextRun},
199
- status = CASE WHEN _emdash_cron_tasks.status = 'running' THEN 'running' ELSE 'idle' END,
200
- locked_at = CASE WHEN _emdash_cron_tasks.status = 'running' THEN _emdash_cron_tasks.locked_at ELSE NULL END,
201
- enabled = 1
202
- `.execute(this.db);
203
- this.reschedule();
204
- }
205
- async cancel(name) {
206
- await sql`
207
- DELETE FROM _emdash_cron_tasks
208
- WHERE plugin_id = ${this.pluginId} AND task_name = ${name}
209
- `.execute(this.db);
210
- this.reschedule();
211
- }
212
- async list() {
213
- return (await sql`
214
- SELECT task_name, schedule, next_run_at, last_run_at
215
- FROM _emdash_cron_tasks
216
- WHERE plugin_id = ${this.pluginId} AND enabled = 1
217
- ORDER BY next_run_at ASC
218
- `.execute(this.db)).rows.map((row) => ({
219
- name: row.task_name,
220
- schedule: row.schedule,
221
- nextRunAt: row.next_run_at,
222
- lastRunAt: row.last_run_at
223
- }));
224
- }
225
- };
226
- /**
227
- * Enable or disable all cron tasks for a plugin.
228
- * Called by admin disable/enable endpoints and PluginManager lifecycle.
229
- * Gracefully handles the cron table not existing yet (pre-migration).
230
- */
231
- async function setCronTasksEnabled(db, pluginId, enabled) {
232
- try {
233
- await sql`
234
- UPDATE _emdash_cron_tasks
235
- SET enabled = ${enabled ? 1 : 0}
236
- WHERE plugin_id = ${pluginId}
237
- `.execute(db);
238
- } catch {}
239
- }
240
- /**
241
- * Compute the next fire time for a cron expression, resolved in UTC.
242
- * Supports standard cron (5-field), extended (6-field with seconds), and
243
- * aliases like @daily, @weekly, @hourly, @monthly, @yearly.
244
- */
245
- function nextCronTime(expression, currentTime = /* @__PURE__ */ new Date()) {
246
- const next = new Cron(expression, { timezone: CRON_TIMEZONE }).nextRun(currentTime);
247
- if (!next) throw new Error(`Invalid cron expression or no future run: "${expression}"`);
248
- return next.toISOString();
249
- }
250
- /**
251
- * Check whether a string is a valid cron expression.
252
- */
253
- function isCronExpression(schedule) {
254
- try {
255
- new Cron(schedule, { timezone: CRON_TIMEZONE });
256
- return true;
257
- } catch {
258
- return false;
259
- }
260
- }
261
- /**
262
- * Check if a schedule string is a one-shot (ISO 8601 datetime) rather than
263
- * a recurring cron expression.
264
- *
265
- * Recognizes the supported ISO date-time shape before consulting the cron
266
- * parser, which also accepts ISO timestamps. Other values are parsed as cron
267
- * first so expressions like "1-5 * * * *" are not misclassified as dates.
268
- */
269
- function isOneShot(schedule) {
270
- if (schedule.startsWith("@")) return false;
271
- if (ISO_DATETIME_PATTERN.test(schedule)) return !isNaN(Date.parse(schedule));
272
- if (isCronExpression(schedule)) return false;
273
- return !isNaN(Date.parse(schedule));
274
- }
275
- function oneShotTime(schedule) {
276
- const withoutZone = ISO_DATETIME_PATTERN.test(schedule) && !ISO_TIMEZONE_PATTERN.test(schedule);
277
- const normalized = ISO_DATETIME_PATTERN.test(schedule) ? schedule.replace(" ", "T") : schedule;
278
- const input = withoutZone ? `${normalized}Z` : normalized;
279
- return new Date(input).toISOString();
280
- }
281
- /** Max length for a task name */
282
- const MAX_TASK_NAME_LENGTH = 128;
283
- /** Task name pattern: alphanumeric, dashes, underscores */
284
- const TASK_NAME_RE = /^[a-zA-Z][a-zA-Z0-9_-]*$/;
285
- /**
286
- * Validate a cron task name.
287
- * Must be non-empty, ≤128 chars, alphanumeric with dashes/underscores.
288
- */
289
- function validateTaskName(name) {
290
- if (!name || name.length > MAX_TASK_NAME_LENGTH) throw new Error(`Invalid task name: must be 1-${MAX_TASK_NAME_LENGTH} characters, got ${name.length}`);
291
- if (!TASK_NAME_RE.test(name)) throw new Error(`Invalid task name "${name}": must start with a letter and contain only letters, numbers, dashes, or underscores`);
292
- }
293
- /**
294
- * Validate a schedule string at registration time.
295
- * Must be a valid cron expression or a parseable ISO 8601 datetime.
296
- */
297
- function validateSchedule(schedule) {
298
- if (!schedule || schedule.length > 256) throw new Error(`Invalid schedule: must be 1-256 characters, got ${schedule.length}`);
299
- if (isCronExpression(schedule)) return;
300
- const parsed = Date.parse(schedule);
301
- if (isNaN(parsed)) throw new Error(`Invalid schedule "${schedule}": must be a valid cron expression or ISO 8601 datetime`);
302
- }
303
-
304
- //#endregion
305
- export { CronExecutor as n, setCronTasksEnabled as r, CronAccessImpl as t };
306
- //# sourceMappingURL=cron-C6ytTOLw.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cron-C6ytTOLw.mjs","names":[],"sources":["../src/plugins/cron.ts"],"sourcesContent":["/**\n * Plugin Cron System\n *\n * Provides scheduled task execution for plugins:\n * - CronExecutor: claims overdue tasks, invokes per-plugin cron hook, updates next run.\n * - CronAccessImpl: per-plugin API for schedule/cancel/list.\n *\n */\n\nimport { Cron } from \"croner\";\nimport type { Kysely } from \"kysely\";\nimport { sql } from \"kysely\";\nimport { ulid } from \"ulidx\";\n\nimport type { Database } from \"../database/types.js\";\nimport type { CronAccess, CronEvent, CronTaskInfo } from \"./types.js\";\n\n/** Matches the Workers runtime, which always runs in UTC, so Node hosts fire at the same instant. */\nconst CRON_TIMEZONE = \"UTC\";\n\n/** Stale lock threshold in minutes */\nconst STALE_LOCK_MINUTES = 10;\nconst ISO_DATETIME_PATTERN =\n\t/^\\d{4}-\\d{2}-\\d{2}[T ]\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d+)?)?(?:Z|[+-]\\d{2}:?\\d{2})?$/;\nconst ISO_TIMEZONE_PATTERN = /(?:Z|[+-]\\d{2}:?\\d{2})$/;\n\n/**\n * Callback to invoke a plugin's cron hook.\n * Provided by PluginManager so CronExecutor stays decoupled from the hook pipeline.\n */\nexport type InvokeCronHookFn = (pluginId: string, event: CronEvent) => Promise<void>;\n\n/**\n * Callback to notify the scheduler that the next due time may have changed.\n */\nexport type RescheduleFn = () => void;\n\n// ─── CronExecutor ──────────────────────────────────────────────────────────\n\n/**\n * Executes overdue cron tasks.\n *\n * Called by the platform driver: the NodeCronScheduler timer on Node, or the\n * Worker's `scheduled()` handler (via runScheduledTasks) on Cloudflare.\n * Stateless — all state lives in the database.\n */\nexport class CronExecutor {\n\t/**\n\t * Resolves the database connection to use for this tick. A resolver (not a\n\t * captured instance) so connection-backed adapters work across events: on\n\t * Cloudflare the `scheduled()` handler installs an event-scoped connection\n\t * in ALS, and this resolves to it instead of the per-isolate singleton\n\t * whose socket belongs to an earlier request. Accepts a plain `Kysely` too\n\t * (wrapped in a constant resolver) for callers/tests that don't need ALS.\n\t */\n\tprivate readonly resolveDb: () => Kysely<Database>;\n\n\tconstructor(\n\t\tdb: Kysely<Database> | (() => Kysely<Database>),\n\t\tprivate invokeCronHook: InvokeCronHookFn,\n\t\tprivate readonly now: () => Date = () => new Date(),\n\t) {\n\t\tthis.resolveDb = typeof db === \"function\" ? db : () => db;\n\t}\n\n\tprivate get db(): Kysely<Database> {\n\t\treturn this.resolveDb();\n\t}\n\n\t/**\n\t * Process all overdue tasks.\n\t *\n\t * 1. Atomically claim tasks whose next_run_at <= now, status = idle, enabled = 1.\n\t * 2. For each claimed task, invoke the plugin's cron hook.\n\t * 3. On success: compute next_run_at and reset to idle, or delete one-shots.\n\t * 4. On failure: reset to idle (retry on next tick).\n\t */\n\tasync tick(): Promise<number> {\n\t\tconst currentTime = this.now();\n\t\tconst now = currentTime.toISOString();\n\t\tlet processed = 0;\n\n\t\t// Claim overdue tasks atomically\n\t\tconst claimed = await sql<{\n\t\t\tid: string;\n\t\t\tplugin_id: string;\n\t\t\ttask_name: string;\n\t\t\tschedule: string;\n\t\t\tis_oneshot: number;\n\t\t\tdata: string | null;\n\t\t\tnext_run_at: string;\n\t\t}>`\n\t\t\tUPDATE _emdash_cron_tasks\n\t\t\tSET status = 'running', locked_at = ${now}\n\t\t\tWHERE id IN (\n\t\t\t\tSELECT id FROM _emdash_cron_tasks\n\t\t\t\tWHERE next_run_at <= ${now}\n\t\t\t\t AND status = 'idle'\n\t\t\t\t AND enabled = 1\n\t\t\t\tORDER BY next_run_at ASC\n\t\t\t\tLIMIT 10\n\t\t\t)\n\t\t\tRETURNING id, plugin_id, task_name, schedule, is_oneshot, data, next_run_at\n\t\t`.execute(this.db);\n\n\t\tfor (const task of claimed.rows) {\n\t\t\t// Parse task data safely ��� malformed JSON must not crash the entire batch\n\t\t\tlet parsedData: Record<string, unknown> | undefined;\n\t\t\tif (task.data) {\n\t\t\t\ttry {\n\t\t\t\t\tparsedData = JSON.parse(task.data) as Record<string, unknown>;\n\t\t\t\t} catch {\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t`[cron] Invalid JSON data for ${task.plugin_id}:${task.task_name}, skipping`,\n\t\t\t\t\t);\n\t\t\t\t\tawait sql`\n\t\t\t\t\t\tUPDATE _emdash_cron_tasks\n\t\t\t\t\t\tSET status = 'idle', locked_at = NULL, enabled = 0\n\t\t\t\t\t\tWHERE id = ${task.id}\n\t\t\t\t\t`.execute(this.db);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst event: CronEvent = {\n\t\t\t\tname: task.task_name,\n\t\t\t\tdata: parsedData,\n\t\t\t\tscheduledAt: task.next_run_at,\n\t\t\t};\n\n\t\t\tlet hookFailed = false;\n\t\t\ttry {\n\t\t\t\tawait this.invokeCronHook(task.plugin_id, event);\n\t\t\t} catch (error) {\n\t\t\t\thookFailed = true;\n\t\t\t\tconsole.error(`[cron] Hook failed for ${task.plugin_id}:${task.task_name}:`, error);\n\t\t\t}\n\n\t\t\tif (task.is_oneshot) {\n\t\t\t\tif (hookFailed) {\n\t\t\t\t\t// Retry metadata is namespaced under __emdash to avoid collisions\n\t\t\t\t\t// with plugin-controlled data fields.\n\t\t\t\t\tconst meta =\n\t\t\t\t\t\tparsedData?.__emdash != null && typeof parsedData.__emdash === \"object\"\n\t\t\t\t\t\t\t? (parsedData.__emdash as Record<string, unknown>)\n\t\t\t\t\t\t\t: undefined;\n\t\t\t\t\tconst raw = meta?.retryCount;\n\t\t\t\t\tconst retryCount =\n\t\t\t\t\t\ttypeof raw === \"number\" && Number.isFinite(raw) && raw > 0 ? Math.floor(raw) : 0;\n\t\t\t\t\tconst MAX_ONESHOT_RETRIES = 5;\n\n\t\t\t\t\tif (retryCount >= MAX_ONESHOT_RETRIES) {\n\t\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t\t`[cron] One-shot task ${task.plugin_id}:${task.task_name} exceeded ${MAX_ONESHOT_RETRIES} retries, removing`,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tawait sql`\n\t\t\t\t\t\tDELETE FROM _emdash_cron_tasks WHERE id = ${task.id}\n\t\t\t\t\t`.execute(this.db);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Retry with exponential backoff: 1m, 2m, 4m, 8m, 16m\n\t\t\t\t\t\tconst backoffMs = 60_000 * Math.pow(2, retryCount);\n\t\t\t\t\t\tconst retryAt = new Date(currentTime.getTime() + backoffMs).toISOString();\n\t\t\t\t\t\tconst updatedData = JSON.stringify({\n\t\t\t\t\t\t\t...parsedData,\n\t\t\t\t\t\t\t__emdash: { ...meta, retryCount: retryCount + 1 },\n\t\t\t\t\t\t});\n\t\t\t\t\t\tawait sql`\n\t\t\t\t\t\tUPDATE _emdash_cron_tasks\n\t\t\t\t\t\tSET status = 'idle', locked_at = NULL, next_run_at = ${retryAt}, data = ${updatedData}\n\t\t\t\t\t\tWHERE id = ${task.id}\n\t\t\t\t\t`.execute(this.db);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Success: delete the one-shot task\n\t\t\t\t\tawait sql`\n\t\t\t\t\t\tDELETE FROM _emdash_cron_tasks WHERE id = ${task.id}\n\t\t\t\t\t`.execute(this.db);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Recurring: compute next run and reset\n\t\t\t\tlet nextRun: string;\n\t\t\t\ttry {\n\t\t\t\t\tnextRun = nextCronTime(task.schedule, currentTime);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t`[cron] Disabling unsatisfiable schedule for ${task.plugin_id}:${task.task_name}:`,\n\t\t\t\t\t\terror,\n\t\t\t\t\t);\n\t\t\t\t\tawait sql`\n\t\t\t\t\t\tUPDATE _emdash_cron_tasks\n\t\t\t\t\t\tSET status = 'idle', locked_at = NULL, last_run_at = ${now}, enabled = 0\n\t\t\t\t\t\tWHERE id = ${task.id}\n\t\t\t\t\t`.execute(this.db);\n\t\t\t\t\tprocessed++;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tawait sql`\n\t\t\t\t\tUPDATE _emdash_cron_tasks\n\t\t\t\t\tSET status = 'idle',\n\t\t\t\t\t\tlocked_at = NULL,\n\t\t\t\t\t\tlast_run_at = ${now},\n\t\t\t\t\t\tnext_run_at = ${nextRun}\n\t\t\t\t\tWHERE id = ${task.id}\n\t\t\t\t`.execute(this.db);\n\t\t\t}\n\n\t\t\tprocessed++;\n\t\t}\n\n\t\treturn processed;\n\t}\n\n\t/**\n\t * Recover tasks stuck in 'running' for more than STALE_LOCK_MINUTES.\n\t * These likely crashed mid-execution.\n\t */\n\tasync recoverStaleLocks(): Promise<number> {\n\t\tconst cutoff = new Date(this.now().getTime() - STALE_LOCK_MINUTES * 60 * 1000).toISOString();\n\n\t\tconst result = await sql`\n\t\t\tUPDATE _emdash_cron_tasks\n\t\t\tSET status = 'idle', locked_at = NULL\n\t\t\tWHERE status = 'running'\n\t\t\t AND locked_at < ${cutoff}\n\t\t`.execute(this.db);\n\n\t\treturn Number(result.numAffectedRows ?? 0);\n\t}\n\n\t/**\n\t * Get the next due time across all enabled tasks.\n\t * Returns null if no tasks are scheduled.\n\t */\n\tasync getNextDueTime(): Promise<string | null> {\n\t\tconst result = await sql<{ next: string | null }>`\n\t\t\tSELECT MIN(next_run_at) as next\n\t\t\tFROM _emdash_cron_tasks\n\t\t\tWHERE status = 'idle' AND enabled = 1\n\t\t`.execute(this.db);\n\n\t\treturn result.rows[0]?.next ?? null;\n\t}\n}\n\n// ─── CronAccessImpl ────────────────────────────────────────────────────────\n\n/**\n * Per-plugin cron API implementation.\n * Scoped to a single plugin ID — plugins cannot see or modify other plugins' tasks.\n */\nexport class CronAccessImpl implements CronAccess {\n\tconstructor(\n\t\tprivate db: Kysely<Database>,\n\t\tprivate pluginId: string,\n\t\tprivate reschedule: RescheduleFn,\n\t\tprivate readonly now: () => Date = () => new Date(),\n\t) {}\n\n\tasync schedule(\n\t\tname: string,\n\t\topts: { schedule: string; data?: Record<string, unknown> },\n\t): Promise<void> {\n\t\tvalidateTaskName(name);\n\t\tvalidateSchedule(opts.schedule);\n\n\t\tconst oneshot = isOneShot(opts.schedule);\n\t\tconst nextRun = oneshot ? oneShotTime(opts.schedule) : nextCronTime(opts.schedule, this.now());\n\t\tconst dataJson = opts.data ? JSON.stringify(opts.data) : null;\n\t\tconst id = ulid();\n\n\t\t// Upsert: if task already exists for this plugin+name, update it.\n\t\t// Guard: don't clobber a task that is currently executing.\n\t\tawait sql`\n\t\t\tINSERT INTO _emdash_cron_tasks (id, plugin_id, task_name, schedule, is_oneshot, data, next_run_at, status, enabled)\n\t\t\tVALUES (${id}, ${this.pluginId}, ${name}, ${opts.schedule}, ${oneshot ? 1 : 0}, ${dataJson}, ${nextRun}, 'idle', 1)\n\t\t\tON CONFLICT (plugin_id, task_name) DO UPDATE SET\n\t\t\t\tschedule = ${opts.schedule},\n\t\t\t\tis_oneshot = ${oneshot ? 1 : 0},\n\t\t\t\tdata = ${dataJson},\n\t\t\t\tnext_run_at = ${nextRun},\n\t\t\t\tstatus = CASE WHEN _emdash_cron_tasks.status = 'running' THEN 'running' ELSE 'idle' END,\n\t\t\t\tlocked_at = CASE WHEN _emdash_cron_tasks.status = 'running' THEN _emdash_cron_tasks.locked_at ELSE NULL END,\n\t\t\t\tenabled = 1\n\t\t`.execute(this.db);\n\n\t\tthis.reschedule();\n\t}\n\n\tasync cancel(name: string): Promise<void> {\n\t\tawait sql`\n\t\t\tDELETE FROM _emdash_cron_tasks\n\t\t\tWHERE plugin_id = ${this.pluginId} AND task_name = ${name}\n\t\t`.execute(this.db);\n\n\t\tthis.reschedule();\n\t}\n\n\tasync list(): Promise<CronTaskInfo[]> {\n\t\tconst rows = await sql<{\n\t\t\ttask_name: string;\n\t\t\tschedule: string;\n\t\t\tnext_run_at: string;\n\t\t\tlast_run_at: string | null;\n\t\t}>`\n\t\t\tSELECT task_name, schedule, next_run_at, last_run_at\n\t\t\tFROM _emdash_cron_tasks\n\t\t\tWHERE plugin_id = ${this.pluginId} AND enabled = 1\n\t\t\tORDER BY next_run_at ASC\n\t\t`.execute(this.db);\n\n\t\treturn rows.rows.map((row) => ({\n\t\t\tname: row.task_name,\n\t\t\tschedule: row.schedule,\n\t\t\tnextRunAt: row.next_run_at,\n\t\t\tlastRunAt: row.last_run_at,\n\t\t}));\n\t}\n}\n\n// ─── Cron task lifecycle helpers ────────────────────────────────────────────\n\n/**\n * Enable or disable all cron tasks for a plugin.\n * Called by admin disable/enable endpoints and PluginManager lifecycle.\n * Gracefully handles the cron table not existing yet (pre-migration).\n */\nexport async function setCronTasksEnabled(\n\tdb: Kysely<Database>,\n\tpluginId: string,\n\tenabled: boolean,\n): Promise<void> {\n\ttry {\n\t\tawait sql`\n\t\t\tUPDATE _emdash_cron_tasks\n\t\t\tSET enabled = ${enabled ? 1 : 0}\n\t\t\tWHERE plugin_id = ${pluginId}\n\t\t`.execute(db);\n\t} catch {\n\t\t// Cron table may not exist yet (pre-migration). Non-fatal.\n\t}\n}\n\n// ─── Cron utilities ────────────────────────────────────────────────────────\n\n/**\n * Compute the next fire time for a cron expression, resolved in UTC.\n * Supports standard cron (5-field), extended (6-field with seconds), and\n * aliases like @daily, @weekly, @hourly, @monthly, @yearly.\n */\nexport function nextCronTime(expression: string, currentTime: Date = new Date()): string {\n\tconst job = new Cron(expression, { timezone: CRON_TIMEZONE });\n\tconst next = job.nextRun(currentTime);\n\tif (!next) {\n\t\tthrow new Error(`Invalid cron expression or no future run: \"${expression}\"`);\n\t}\n\treturn next.toISOString();\n}\n\n/**\n * Check whether a string is a valid cron expression.\n */\nfunction isCronExpression(schedule: string): boolean {\n\ttry {\n\t\tconst _cron = new Cron(schedule, { timezone: CRON_TIMEZONE });\n\t\tvoid _cron;\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n}\n\n/**\n * Check if a schedule string is a one-shot (ISO 8601 datetime) rather than\n * a recurring cron expression.\n *\n * Recognizes the supported ISO date-time shape before consulting the cron\n * parser, which also accepts ISO timestamps. Other values are parsed as cron\n * first so expressions like \"1-5 * * * *\" are not misclassified as dates.\n */\nexport function isOneShot(schedule: string): boolean {\n\tif (schedule.startsWith(\"@\")) return false;\n\tif (ISO_DATETIME_PATTERN.test(schedule)) {\n\t\treturn !isNaN(Date.parse(schedule));\n\t}\n\tif (isCronExpression(schedule)) return false;\n\treturn !isNaN(Date.parse(schedule));\n}\n\nfunction oneShotTime(schedule: string): string {\n\tconst withoutZone = ISO_DATETIME_PATTERN.test(schedule) && !ISO_TIMEZONE_PATTERN.test(schedule);\n\tconst normalized = ISO_DATETIME_PATTERN.test(schedule) ? schedule.replace(\" \", \"T\") : schedule;\n\tconst input = withoutZone ? `${normalized}Z` : normalized;\n\treturn new Date(input).toISOString();\n}\n\n/** Max length for a task name */\nconst MAX_TASK_NAME_LENGTH = 128;\n/** Task name pattern: alphanumeric, dashes, underscores */\nconst TASK_NAME_RE = /^[a-zA-Z][a-zA-Z0-9_-]*$/;\n\n/**\n * Validate a cron task name.\n * Must be non-empty, ≤128 chars, alphanumeric with dashes/underscores.\n */\nexport function validateTaskName(name: string): void {\n\tif (!name || name.length > MAX_TASK_NAME_LENGTH) {\n\t\tthrow new Error(\n\t\t\t`Invalid task name: must be 1-${MAX_TASK_NAME_LENGTH} characters, got ${name.length}`,\n\t\t);\n\t}\n\tif (!TASK_NAME_RE.test(name)) {\n\t\tthrow new Error(\n\t\t\t`Invalid task name \"${name}\": must start with a letter and contain only letters, numbers, dashes, or underscores`,\n\t\t);\n\t}\n}\n\n/**\n * Validate a schedule string at registration time.\n * Must be a valid cron expression or a parseable ISO 8601 datetime.\n */\nexport function validateSchedule(schedule: string): void {\n\tif (!schedule || schedule.length > 256) {\n\t\tthrow new Error(`Invalid schedule: must be 1-256 characters, got ${schedule.length}`);\n\t}\n\n\t// Try cron first\n\tif (isCronExpression(schedule)) return;\n\n\tconst parsed = Date.parse(schedule);\n\tif (isNaN(parsed)) {\n\t\tthrow new Error(\n\t\t\t`Invalid schedule \"${schedule}\": must be a valid cron expression or ISO 8601 datetime`,\n\t\t);\n\t}\n}\n"],"mappings":"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"}
@@ -1,151 +0,0 @@
1
- import { t as validateIdentifier } from "./validate-DANX1-Qi.mjs";
2
- import { t as OptionsRepository } from "./options-DhrI7eMv.mjs";
3
- import { t as ContentRepository } from "./content-CcHrqkgp.mjs";
4
- import { t as MediaRepository } from "./media-IT8hQleU.mjs";
5
- import { t as UserRepository } from "./user-B-ZdGjhI.mjs";
6
- import { r as isScheduledPolicyRejection, t as SCHEDULED_POLICY_REJECTION_PREFIX } from "./content-policy-Dm32n9C6.mjs";
7
- import { sql } from "kysely";
8
-
9
- //#region src/scheduler-health.ts
10
- const SCHEDULER_HEARTBEAT_OPTION = "system:scheduler:last_completed_at";
11
- const SCHEDULER_STALE_AFTER_MS = 300 * 1e3;
12
- async function recordSchedulerHeartbeat(db, completedAt = /* @__PURE__ */ new Date()) {
13
- await new OptionsRepository(db).set(SCHEDULER_HEARTBEAT_OPTION, completedAt.toISOString());
14
- }
15
- async function recordSchedulerHeartbeatSafely(db, completedAt = /* @__PURE__ */ new Date()) {
16
- try {
17
- await recordSchedulerHeartbeat(db, completedAt);
18
- } catch (error) {
19
- console.error("[scheduler] Failed to record heartbeat:", error);
20
- }
21
- }
22
- async function getSchedulerHealth(db, now = /* @__PURE__ */ new Date()) {
23
- const lastCompletedAt = await new OptionsRepository(db).get(SCHEDULER_HEARTBEAT_OPTION);
24
- const lastCompletedAtMs = lastCompletedAt ? Date.parse(lastCompletedAt) : NaN;
25
- if (!lastCompletedAt || Number.isNaN(lastCompletedAtMs)) return {
26
- status: "unknown",
27
- lastCompletedAt: null
28
- };
29
- return {
30
- status: now.getTime() - lastCompletedAtMs > SCHEDULER_STALE_AFTER_MS ? "stale" : "healthy",
31
- lastCompletedAt
32
- };
33
- }
34
-
35
- //#endregion
36
- //#region src/api/handlers/dashboard.ts
37
- /**
38
- * Dashboard stats handler
39
- *
40
- * Returns summary data for the admin dashboard in a single request:
41
- * collection content counts, media count, user count, and recent
42
- * content across all collections.
43
- */
44
- const POLICY_REJECTION_PREVIEW_LIMIT = 20;
45
- /**
46
- * Fetch dashboard statistics.
47
- *
48
- * Queries are intentionally lightweight — counts use indexed columns,
49
- * and recent items are capped at 10.
50
- */
51
- async function handleDashboardStats(db, now = /* @__PURE__ */ new Date()) {
52
- try {
53
- const collections = await db.selectFrom("_emdash_collections").select(["slug", "label"]).orderBy("slug", "asc").execute();
54
- const contentRepo = new ContentRepository(db);
55
- const collectionStats = await Promise.all(collections.map(async (col) => {
56
- const stats = await contentRepo.getStats(col.slug, now);
57
- return {
58
- slug: col.slug,
59
- label: col.label,
60
- total: stats.total,
61
- published: stats.published,
62
- draft: stats.draft,
63
- scheduled: stats.scheduled,
64
- overdueScheduled: stats.overdueScheduled
65
- };
66
- }));
67
- const mediaRepo = new MediaRepository(db);
68
- const userRepo = new UserRepository(db);
69
- const optionsRepo = new OptionsRepository(db);
70
- const [mediaCount, userCount, schedulerHealth, policyRejectedScheduled, versionedPolicyRejectionOptions] = await Promise.all([
71
- mediaRepo.count(),
72
- userRepo.count(),
73
- getSchedulerHealth(db, now),
74
- optionsRepo.countByPrefix(SCHEDULED_POLICY_REJECTION_PREFIX),
75
- optionsRepo.getVersionedByPrefix(SCHEDULED_POLICY_REJECTION_PREFIX, { limit: POLICY_REJECTION_PREVIEW_LIMIT })
76
- ]);
77
- const policyRejections = [...versionedPolicyRejectionOptions.values()].filter(({ value }) => isScheduledPolicyRejection(value)).map(({ value, revision }) => ({
78
- ...value,
79
- _rev: revision
80
- }));
81
- return {
82
- success: true,
83
- data: {
84
- collections: collectionStats,
85
- mediaCount,
86
- userCount,
87
- recentItems: await fetchRecentItems(db, collections),
88
- schedulerHealth,
89
- policyRejectedScheduled,
90
- policyRejections
91
- }
92
- };
93
- } catch (error) {
94
- console.error("Dashboard stats error:", error);
95
- return {
96
- success: false,
97
- error: {
98
- code: "DASHBOARD_STATS_ERROR",
99
- message: "Failed to load dashboard statistics"
100
- }
101
- };
102
- }
103
- }
104
- /**
105
- * Fetch the 10 most recently updated items across all collections.
106
- *
107
- * Uses UNION ALL over each ec_* table. The query is safe because
108
- * collection slugs come from the system table and are validated.
109
- *
110
- * `title` is not a standard column — it's a user-defined field. We query
111
- * `_emdash_fields` to discover which collections have one and fall back
112
- * to `slug` (which is always present) otherwise.
113
- */
114
- async function fetchRecentItems(db, collections) {
115
- if (collections.length === 0) return [];
116
- const titleFields = await db.selectFrom("_emdash_fields as f").innerJoin("_emdash_collections as c", "c.id", "f.collection_id").select(["c.slug as collection_slug"]).where("f.slug", "=", "title").execute();
117
- const collectionsWithTitle = new Set(titleFields.map((r) => r.collection_slug));
118
- return (await Promise.all(collections.map(async (col) => {
119
- validateIdentifier(col.slug);
120
- const table = `ec_${col.slug}`;
121
- const titleExpr = collectionsWithTitle.has(col.slug) ? sql`COALESCE(title, slug, id)` : sql`COALESCE(slug, id)`;
122
- return (await sql`
123
- SELECT
124
- id,
125
- ${sql.lit(col.slug)} AS collection,
126
- ${sql.lit(col.label)} AS collection_label,
127
- ${titleExpr} AS title,
128
- slug,
129
- status,
130
- updated_at,
131
- author_id
132
- FROM ${sql.ref(table)}
133
- WHERE deleted_at IS NULL
134
- ORDER BY updated_at DESC
135
- LIMIT 10
136
- `.execute(db)).rows;
137
- }))).flat().toSorted((a, b) => a.updated_at < b.updated_at ? 1 : a.updated_at > b.updated_at ? -1 : 0).slice(0, 10).map((row) => ({
138
- id: row.id,
139
- collection: row.collection,
140
- collectionLabel: row.collection_label,
141
- title: row.title,
142
- slug: row.slug,
143
- status: row.status,
144
- updatedAt: row.updated_at,
145
- authorId: row.author_id
146
- }));
147
- }
148
-
149
- //#endregion
150
- export { recordSchedulerHeartbeatSafely as n, handleDashboardStats as t };
151
- //# sourceMappingURL=dashboard-7_FYfafc.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dashboard-7_FYfafc.mjs","names":[],"sources":["../src/scheduler-health.ts","../src/api/handlers/dashboard.ts"],"sourcesContent":["import type { Kysely } from \"kysely\";\n\nimport { OptionsRepository } from \"./database/repositories/options.js\";\nimport type { Database } from \"./database/types.js\";\n\nexport const SCHEDULER_HEARTBEAT_OPTION = \"system:scheduler:last_completed_at\";\nexport const SCHEDULER_STALE_AFTER_MS = 5 * 60 * 1000;\n\nexport interface SchedulerHealth {\n\tstatus: \"healthy\" | \"stale\" | \"unknown\";\n\tlastCompletedAt: string | null;\n}\n\nexport async function recordSchedulerHeartbeat(\n\tdb: Kysely<Database>,\n\tcompletedAt = new Date(),\n): Promise<void> {\n\tawait new OptionsRepository(db).set(SCHEDULER_HEARTBEAT_OPTION, completedAt.toISOString());\n}\n\nexport async function recordSchedulerHeartbeatSafely(\n\tdb: Kysely<Database>,\n\tcompletedAt = new Date(),\n): Promise<void> {\n\ttry {\n\t\tawait recordSchedulerHeartbeat(db, completedAt);\n\t} catch (error) {\n\t\tconsole.error(\"[scheduler] Failed to record heartbeat:\", error);\n\t}\n}\n\nexport async function getSchedulerHealth(\n\tdb: Kysely<Database>,\n\tnow = new Date(),\n): Promise<SchedulerHealth> {\n\tconst lastCompletedAt = await new OptionsRepository(db).get<string>(SCHEDULER_HEARTBEAT_OPTION);\n\tconst lastCompletedAtMs = lastCompletedAt ? Date.parse(lastCompletedAt) : Number.NaN;\n\tif (!lastCompletedAt || Number.isNaN(lastCompletedAtMs)) {\n\t\treturn { status: \"unknown\", lastCompletedAt: null };\n\t}\n\n\treturn {\n\t\tstatus: now.getTime() - lastCompletedAtMs > SCHEDULER_STALE_AFTER_MS ? \"stale\" : \"healthy\",\n\t\tlastCompletedAt,\n\t};\n}\n","/**\n * Dashboard stats handler\n *\n * Returns summary data for the admin dashboard in a single request:\n * collection content counts, media count, user count, and recent\n * content across all collections.\n */\n\nimport { sql, type Kysely } from \"kysely\";\n\nimport { ContentRepository } from \"../../database/repositories/content.js\";\nimport { MediaRepository } from \"../../database/repositories/media.js\";\nimport { OptionsRepository } from \"../../database/repositories/options.js\";\nimport { UserRepository } from \"../../database/repositories/user.js\";\nimport type { Database } from \"../../database/types.js\";\nimport { validateIdentifier } from \"../../database/validate.js\";\nimport {\n\tSCHEDULED_POLICY_REJECTION_PREFIX,\n\tisScheduledPolicyRejection,\n\ttype ScheduledPolicyRejection,\n\ttype VersionedScheduledPolicyRejection,\n} from \"../../plugins/content-policy.js\";\nimport { getSchedulerHealth, type SchedulerHealth } from \"../../scheduler-health.js\";\nimport type { ApiResult } from \"../types.js\";\n\nexport interface CollectionStats {\n\tslug: string;\n\tlabel: string;\n\ttotal: number;\n\tpublished: number;\n\tdraft: number;\n\tscheduled: number;\n\toverdueScheduled: number;\n}\n\nexport interface RecentItem {\n\tid: string;\n\tcollection: string;\n\tcollectionLabel: string;\n\ttitle: string;\n\tslug: string | null;\n\tstatus: string;\n\tupdatedAt: string;\n\tauthorId: string | null;\n}\n\nexport interface DashboardStats {\n\tcollections: CollectionStats[];\n\tmediaCount: number;\n\tuserCount: number;\n\trecentItems: RecentItem[];\n\tschedulerHealth: SchedulerHealth;\n\tpolicyRejectedScheduled: number;\n\tpolicyRejections: VersionedScheduledPolicyRejection[];\n}\n\nconst POLICY_REJECTION_PREVIEW_LIMIT = 20;\n\n/**\n * Fetch dashboard statistics.\n *\n * Queries are intentionally lightweight — counts use indexed columns,\n * and recent items are capped at 10.\n */\nexport async function handleDashboardStats(\n\tdb: Kysely<Database>,\n\tnow = new Date(),\n): Promise<ApiResult<DashboardStats>> {\n\ttry {\n\t\t// Discover collections from the system table\n\t\tconst collections = await db\n\t\t\t.selectFrom(\"_emdash_collections\")\n\t\t\t.select([\"slug\", \"label\"])\n\t\t\t.orderBy(\"slug\", \"asc\")\n\t\t\t.execute();\n\n\t\t// Gather per-collection counts in parallel\n\t\tconst contentRepo = new ContentRepository(db);\n\t\tconst collectionStats: CollectionStats[] = await Promise.all(\n\t\t\tcollections.map(async (col) => {\n\t\t\t\tconst stats = await contentRepo.getStats(col.slug, now);\n\t\t\t\treturn {\n\t\t\t\t\tslug: col.slug,\n\t\t\t\t\tlabel: col.label,\n\t\t\t\t\ttotal: stats.total,\n\t\t\t\t\tpublished: stats.published,\n\t\t\t\t\tdraft: stats.draft,\n\t\t\t\t\tscheduled: stats.scheduled,\n\t\t\t\t\toverdueScheduled: stats.overdueScheduled,\n\t\t\t\t};\n\t\t\t}),\n\t\t);\n\n\t\t// Media and user counts\n\t\tconst mediaRepo = new MediaRepository(db);\n\t\tconst userRepo = new UserRepository(db);\n\t\tconst optionsRepo = new OptionsRepository(db);\n\t\tconst [\n\t\t\tmediaCount,\n\t\t\tuserCount,\n\t\t\tschedulerHealth,\n\t\t\tpolicyRejectedScheduled,\n\t\t\tversionedPolicyRejectionOptions,\n\t\t] = await Promise.all([\n\t\t\tmediaRepo.count(),\n\t\t\tuserRepo.count(),\n\t\t\tgetSchedulerHealth(db, now),\n\t\t\toptionsRepo.countByPrefix(SCHEDULED_POLICY_REJECTION_PREFIX),\n\t\t\toptionsRepo.getVersionedByPrefix<ScheduledPolicyRejection>(\n\t\t\t\tSCHEDULED_POLICY_REJECTION_PREFIX,\n\t\t\t\t{\n\t\t\t\t\tlimit: POLICY_REJECTION_PREVIEW_LIMIT,\n\t\t\t\t},\n\t\t\t),\n\t\t]);\n\t\tconst policyRejections = [...versionedPolicyRejectionOptions.values()]\n\t\t\t.filter(({ value }) => isScheduledPolicyRejection(value))\n\t\t\t.map(({ value, revision }) => ({ ...value, _rev: revision }));\n\n\t\t// Recent items across all collections (last 10 updated, any status)\n\t\tconst recentItems = await fetchRecentItems(db, collections);\n\n\t\treturn {\n\t\t\tsuccess: true,\n\t\t\tdata: {\n\t\t\t\tcollections: collectionStats,\n\t\t\t\tmediaCount,\n\t\t\t\tuserCount,\n\t\t\t\trecentItems,\n\t\t\t\tschedulerHealth,\n\t\t\t\tpolicyRejectedScheduled,\n\t\t\t\tpolicyRejections,\n\t\t\t},\n\t\t};\n\t} catch (error) {\n\t\tconsole.error(\"Dashboard stats error:\", error);\n\t\treturn {\n\t\t\tsuccess: false,\n\t\t\terror: {\n\t\t\t\tcode: \"DASHBOARD_STATS_ERROR\",\n\t\t\t\tmessage: \"Failed to load dashboard statistics\",\n\t\t\t},\n\t\t};\n\t}\n}\n\n/** Raw row shape from the UNION ALL query — all snake_case. */\ninterface RecentItemRow {\n\tid: string;\n\tcollection: string;\n\tcollection_label: string;\n\ttitle: string;\n\tslug: string | null;\n\tstatus: string;\n\tupdated_at: string;\n\tauthor_id: string | null;\n}\n\n/**\n * Fetch the 10 most recently updated items across all collections.\n *\n * Uses UNION ALL over each ec_* table. The query is safe because\n * collection slugs come from the system table and are validated.\n *\n * `title` is not a standard column — it's a user-defined field. We query\n * `_emdash_fields` to discover which collections have one and fall back\n * to `slug` (which is always present) otherwise.\n */\nasync function fetchRecentItems(\n\tdb: Kysely<Database>,\n\tcollections: Array<{ slug: string; label: string }>,\n): Promise<RecentItem[]> {\n\tif (collections.length === 0) return [];\n\n\t// Discover which collections have a \"title\" column\n\tconst titleFields = await db\n\t\t.selectFrom(\"_emdash_fields as f\")\n\t\t.innerJoin(\"_emdash_collections as c\", \"c.id\", \"f.collection_id\")\n\t\t.select([\"c.slug as collection_slug\"])\n\t\t.where(\"f.slug\", \"=\", \"title\")\n\t\t.execute();\n\n\tconst collectionsWithTitle = new Set(titleFields.map((r) => r.collection_slug));\n\n\t// Issue one query per collection in parallel, then merge in JS.\n\t// A single UNION ALL across N collections trips D1's\n\t// SQLITE_LIMIT_COMPOUND_SELECT cap when N is large enough (#895);\n\t// per-collection queries side-step that. Each query fetches at most\n\t// 10 rows, so the merge handles at most N * 10 rows before slicing.\n\tconst perCollection = await Promise.all(\n\t\tcollections.map(async (col) => {\n\t\t\tvalidateIdentifier(col.slug);\n\t\t\tconst table = `ec_${col.slug}`;\n\t\t\tconst hasTitle = collectionsWithTitle.has(col.slug);\n\n\t\t\t// Use title column if it exists, otherwise fall back to slug, id.\n\t\t\t// All output uses snake_case to avoid SQLite quoting issues on D1.\n\t\t\tconst titleExpr = hasTitle ? sql`COALESCE(title, slug, id)` : sql`COALESCE(slug, id)`;\n\n\t\t\tconst result = await sql<RecentItemRow>`\n\t\t\t\tSELECT\n\t\t\t\t\tid,\n\t\t\t\t\t${sql.lit(col.slug)} AS collection,\n\t\t\t\t\t${sql.lit(col.label)} AS collection_label,\n\t\t\t\t\t${titleExpr} AS title,\n\t\t\t\t\tslug,\n\t\t\t\t\tstatus,\n\t\t\t\t\tupdated_at,\n\t\t\t\t\tauthor_id\n\t\t\t\tFROM ${sql.ref(table)}\n\t\t\t\tWHERE deleted_at IS NULL\n\t\t\t\tORDER BY updated_at DESC\n\t\t\t\tLIMIT 10\n\t\t\t`.execute(db);\n\t\t\treturn result.rows;\n\t\t}),\n\t);\n\n\t// Merge across collections, sort by updated_at desc, take top 10.\n\tconst merged = perCollection\n\t\t.flat()\n\t\t.toSorted((a, b) => (a.updated_at < b.updated_at ? 1 : a.updated_at > b.updated_at ? -1 : 0))\n\t\t.slice(0, 10);\n\n\t// Map snake_case DB rows to camelCase API shape\n\treturn merged.map((row) => ({\n\t\tid: row.id,\n\t\tcollection: row.collection,\n\t\tcollectionLabel: row.collection_label,\n\t\ttitle: row.title,\n\t\tslug: row.slug,\n\t\tstatus: row.status,\n\t\tupdatedAt: row.updated_at,\n\t\tauthorId: row.author_id,\n\t}));\n}\n"],"mappings":"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"}
@@ -1,55 +0,0 @@
1
- //#region src/utils/db-errors.ts
2
- /**
3
- * Shared detection helpers for database-layer error messages.
4
- *
5
- * Different SQL dialects phrase "table or relation does not exist" differently:
6
- *
7
- * - SQLite / D1: "no such table: foo"
8
- * - PostgreSQL: 'relation "foo" does not exist'
9
- * 'table "foo" does not exist'
10
- * - MySQL (future): "Table 'db.foo' doesn't exist"
11
- *
12
- * Runtime code paths that short-circuit on missing tables (pre-migration
13
- * probes, optional feature tables, etc.) should use these helpers rather
14
- * than hand-rolling string matches per call-site.
15
- */
16
- /**
17
- * Extract a lowercase error message from any unknown value, safely.
18
- */
19
- function messageOf(error) {
20
- if (error instanceof Error) return error.message.toLowerCase();
21
- if (typeof error === "string") return error.toLowerCase();
22
- return "";
23
- }
24
- /**
25
- * Returns true when `error` is a "column does not exist" error.
26
- * Used to handle where filters that reference non-existent field names
27
- * gracefully (return empty results) instead of propagating a SQL error.
28
- * When `column` is given, only errors naming that column match.
29
- */
30
- function isMissingColumnError(error, column) {
31
- const message = messageOf(error);
32
- if (!message) return false;
33
- if (column && !message.includes(column.toLowerCase())) return false;
34
- if (message.includes("no such column")) return true;
35
- if (message.includes("does not exist") && message.includes("column") && !message.includes("relation")) return true;
36
- return false;
37
- }
38
- /**
39
- * Returns true when `error` is a "table does not exist" error across the
40
- * dialects EmDash supports (D1/SQLite and PostgreSQL). Used by runtime
41
- * probes to treat pre-migration databases as empty without logging a scary
42
- * warning, while still propagating unrelated errors (permissions, connection
43
- * loss, syntax issues) to callers.
44
- */
45
- function isMissingTableError(error) {
46
- const message = messageOf(error);
47
- if (!message) return false;
48
- if (message.includes("no such table")) return true;
49
- if (message.includes("does not exist") || message.includes("doesn't exist")) return message.includes("relation") || message.includes("table");
50
- return false;
51
- }
52
-
53
- //#endregion
54
- export { isMissingTableError as n, isMissingColumnError as t };
55
- //# sourceMappingURL=db-errors-CBD5yMro.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"db-errors-CBD5yMro.mjs","names":[],"sources":["../src/utils/db-errors.ts"],"sourcesContent":["/**\n * Shared detection helpers for database-layer error messages.\n *\n * Different SQL dialects phrase \"table or relation does not exist\" differently:\n *\n * - SQLite / D1: \"no such table: foo\"\n * - PostgreSQL: 'relation \"foo\" does not exist'\n * 'table \"foo\" does not exist'\n * - MySQL (future): \"Table 'db.foo' doesn't exist\"\n *\n * Runtime code paths that short-circuit on missing tables (pre-migration\n * probes, optional feature tables, etc.) should use these helpers rather\n * than hand-rolling string matches per call-site.\n */\n\n/**\n * Extract a lowercase error message from any unknown value, safely.\n */\nfunction messageOf(error: unknown): string {\n\tif (error instanceof Error) return error.message.toLowerCase();\n\tif (typeof error === \"string\") return error.toLowerCase();\n\treturn \"\";\n}\n\n/**\n * Returns true when `error` is a \"column does not exist\" error.\n * Used to handle where filters that reference non-existent field names\n * gracefully (return empty results) instead of propagating a SQL error.\n * When `column` is given, only errors naming that column match.\n */\nexport function isMissingColumnError(error: unknown, column?: string): boolean {\n\tconst message = messageOf(error);\n\tif (!message) return false;\n\tif (column && !message.includes(column.toLowerCase())) return false;\n\n\t// SQLite / D1: \"no such column: foo\"\n\tif (message.includes(\"no such column\")) return true;\n\n\t// PostgreSQL SQLSTATE 42703: 'column \"foo\" does not exist'\n\t// Exclude \"relation\" to avoid false positives on table names containing \"column\"\n\tif (\n\t\tmessage.includes(\"does not exist\") &&\n\t\tmessage.includes(\"column\") &&\n\t\t!message.includes(\"relation\")\n\t)\n\t\treturn true;\n\n\treturn false;\n}\n\n/**\n * Returns true when `error` is a \"table does not exist\" error across the\n * dialects EmDash supports (D1/SQLite and PostgreSQL). Used by runtime\n * probes to treat pre-migration databases as empty without logging a scary\n * warning, while still propagating unrelated errors (permissions, connection\n * loss, syntax issues) to callers.\n */\nexport function isMissingTableError(error: unknown): boolean {\n\tconst message = messageOf(error);\n\tif (!message) return false;\n\n\t// SQLite / D1\n\tif (message.includes(\"no such table\")) return true;\n\n\t// PostgreSQL (and some MySQL variants): \"relation ... does not exist\" /\n\t// \"table ... does not exist\" / \"doesn't exist\".\n\tif (message.includes(\"does not exist\") || message.includes(\"doesn't exist\")) {\n\t\treturn message.includes(\"relation\") || message.includes(\"table\");\n\t}\n\n\treturn false;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAkBA,SAAS,UAAU,OAAwB;AAC1C,KAAI,iBAAiB,MAAO,QAAO,MAAM,QAAQ,aAAa;AAC9D,KAAI,OAAO,UAAU,SAAU,QAAO,MAAM,aAAa;AACzD,QAAO;;;;;;;;AASR,SAAgB,qBAAqB,OAAgB,QAA0B;CAC9E,MAAM,UAAU,UAAU,MAAM;AAChC,KAAI,CAAC,QAAS,QAAO;AACrB,KAAI,UAAU,CAAC,QAAQ,SAAS,OAAO,aAAa,CAAC,CAAE,QAAO;AAG9D,KAAI,QAAQ,SAAS,iBAAiB,CAAE,QAAO;AAI/C,KACC,QAAQ,SAAS,iBAAiB,IAClC,QAAQ,SAAS,SAAS,IAC1B,CAAC,QAAQ,SAAS,WAAW,CAE7B,QAAO;AAER,QAAO;;;;;;;;;AAUR,SAAgB,oBAAoB,OAAyB;CAC5D,MAAM,UAAU,UAAU,MAAM;AAChC,KAAI,CAAC,QAAS,QAAO;AAGrB,KAAI,QAAQ,SAAS,gBAAgB,CAAE,QAAO;AAI9C,KAAI,QAAQ,SAAS,iBAAiB,IAAI,QAAQ,SAAS,gBAAgB,CAC1E,QAAO,QAAQ,SAAS,WAAW,IAAI,QAAQ,SAAS,QAAQ;AAGjE,QAAO"}