emdash 1.3.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 (1451) 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 -57
  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.mjs +23 -12
  30. package/dist/astro/index.mjs.map +1 -1
  31. package/dist/astro/middleware/auth.d.mts +12 -12
  32. package/dist/astro/middleware/auth.mjs +10 -10
  33. package/dist/astro/middleware/media-usage-write-fence.mjs +5 -5
  34. package/dist/astro/middleware/redirect.d.mts.map +1 -1
  35. package/dist/astro/middleware/redirect.mjs +128 -48
  36. package/dist/astro/middleware/redirect.mjs.map +1 -1
  37. package/dist/astro/middleware/request-context.d.mts.map +1 -1
  38. package/dist/astro/middleware/request-context.mjs +12 -8
  39. package/dist/astro/middleware/request-context.mjs.map +1 -1
  40. package/dist/astro/middleware/setup.mjs +1 -1
  41. package/dist/astro/middleware.d.mts +12 -12
  42. package/dist/astro/middleware.d.mts.map +1 -1
  43. package/dist/astro/middleware.mjs +134 -124
  44. package/dist/astro/middleware.mjs.map +1 -1
  45. package/dist/astro/routes/api/admin/allowed-domains/_domain_.mjs +16 -16
  46. package/dist/astro/routes/api/admin/allowed-domains/index.mjs +16 -16
  47. package/dist/astro/routes/api/admin/api-tokens/_id_.mjs +6 -6
  48. package/dist/astro/routes/api/admin/api-tokens/index.mjs +7 -7
  49. package/dist/astro/routes/api/admin/byline-fields/_slug_/usage.mjs +7 -7
  50. package/dist/astro/routes/api/admin/byline-fields/_slug_.mjs +19 -19
  51. package/dist/astro/routes/api/admin/byline-fields/index.mjs +19 -19
  52. package/dist/astro/routes/api/admin/byline-fields/reorder.mjs +19 -19
  53. package/dist/astro/routes/api/admin/bylines/_id_/index.mjs +29 -28
  54. package/dist/astro/routes/api/admin/bylines/_id_/index.mjs.map +1 -1
  55. package/dist/astro/routes/api/admin/bylines/_id_/translations.mjs +29 -28
  56. package/dist/astro/routes/api/admin/bylines/_id_/translations.mjs.map +1 -1
  57. package/dist/astro/routes/api/admin/bylines/index.mjs +29 -28
  58. package/dist/astro/routes/api/admin/bylines/index.mjs.map +1 -1
  59. package/dist/astro/routes/api/admin/comments/_id_/status.mjs +21 -21
  60. package/dist/astro/routes/api/admin/comments/_id_.mjs +8 -8
  61. package/dist/astro/routes/api/admin/comments/bulk.mjs +20 -20
  62. package/dist/astro/routes/api/admin/comments/counts.mjs +8 -8
  63. package/dist/astro/routes/api/admin/comments/index.mjs +20 -20
  64. package/dist/astro/routes/api/admin/core-update.mjs +7 -7
  65. package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.mjs +6 -6
  66. package/dist/astro/routes/api/admin/hooks/exclusive/index.mjs +5 -5
  67. package/dist/astro/routes/api/admin/media-usage/activation.mjs +22 -22
  68. package/dist/astro/routes/api/admin/media-usage/collection-deletions/index.mjs +23 -23
  69. package/dist/astro/routes/api/admin/media-usage/collection-deletions/retry.mjs +23 -23
  70. package/dist/astro/routes/api/admin/media-usage/progress.mjs +27 -26
  71. package/dist/astro/routes/api/admin/media-usage/progress.mjs.map +1 -1
  72. package/dist/astro/routes/api/admin/media-usage/repair.mjs +33 -32
  73. package/dist/astro/routes/api/admin/media-usage/repair.mjs.map +1 -1
  74. package/dist/astro/routes/api/admin/media-usage/work/index.mjs +23 -23
  75. package/dist/astro/routes/api/admin/media-usage/work/retry.mjs +23 -23
  76. package/dist/astro/routes/api/admin/oauth-clients/_id_.mjs +6 -6
  77. package/dist/astro/routes/api/admin/oauth-clients/index.mjs +6 -6
  78. package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs +8 -8
  79. package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs +8 -8
  80. package/dist/astro/routes/api/admin/plugins/_id_/index.mjs +81 -79
  81. package/dist/astro/routes/api/admin/plugins/_id_/index.mjs.map +1 -1
  82. package/dist/astro/routes/api/admin/plugins/_id_/mcp.mjs +7 -7
  83. package/dist/astro/routes/api/admin/plugins/_id_/settings.mjs +80 -78
  84. package/dist/astro/routes/api/admin/plugins/_id_/settings.mjs.map +1 -1
  85. package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs +80 -78
  86. package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs.map +1 -1
  87. package/dist/astro/routes/api/admin/plugins/_id_/update.mjs +91 -89
  88. package/dist/astro/routes/api/admin/plugins/_id_/update.mjs.map +1 -1
  89. package/dist/astro/routes/api/admin/plugins/index.mjs +81 -79
  90. package/dist/astro/routes/api/admin/plugins/index.mjs.map +1 -1
  91. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.mjs +7 -7
  92. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs +80 -78
  93. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs.map +1 -1
  94. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs +90 -88
  95. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs.map +1 -1
  96. package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs +80 -78
  97. package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs.map +1 -1
  98. package/dist/astro/routes/api/admin/plugins/registry/_id_/uninstall.mjs +80 -78
  99. package/dist/astro/routes/api/admin/plugins/registry/_id_/uninstall.mjs.map +1 -1
  100. package/dist/astro/routes/api/admin/plugins/registry/_id_/update.mjs +92 -90
  101. package/dist/astro/routes/api/admin/plugins/registry/_id_/update.mjs.map +1 -1
  102. package/dist/astro/routes/api/admin/plugins/registry/artifact.mjs +9 -9
  103. package/dist/astro/routes/api/admin/plugins/registry/install.mjs +82 -80
  104. package/dist/astro/routes/api/admin/plugins/registry/install.mjs.map +1 -1
  105. package/dist/astro/routes/api/admin/plugins/registry/publisher-handle.mjs +7 -7
  106. package/dist/astro/routes/api/admin/plugins/registry/verify.mjs +81 -79
  107. package/dist/astro/routes/api/admin/plugins/registry/verify.mjs.map +1 -1
  108. package/dist/astro/routes/api/admin/plugins/updates.mjs +80 -78
  109. package/dist/astro/routes/api/admin/plugins/updates.mjs.map +1 -1
  110. package/dist/astro/routes/api/admin/scheduled-policy-rejections/_collection_/_id_.mjs +6 -6
  111. package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs +80 -78
  112. package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs.map +1 -1
  113. package/dist/astro/routes/api/admin/themes/marketplace/_id_/thumbnail.mjs +7 -7
  114. package/dist/astro/routes/api/admin/themes/marketplace/index.mjs +80 -78
  115. package/dist/astro/routes/api/admin/themes/marketplace/index.mjs.map +1 -1
  116. package/dist/astro/routes/api/admin/transfer/_...path_.mjs +4 -4
  117. package/dist/astro/routes/api/admin/transfer/approvals/_id_/approve.mjs +45 -43
  118. package/dist/astro/routes/api/admin/transfer/approvals/_id_/approve.mjs.map +1 -1
  119. package/dist/astro/routes/api/admin/transfer/approvals/_id_/deny.mjs +45 -43
  120. package/dist/astro/routes/api/admin/transfer/approvals/_id_/deny.mjs.map +1 -1
  121. package/dist/astro/routes/api/admin/transfer/approvals/index.mjs +47 -45
  122. package/dist/astro/routes/api/admin/transfer/approvals/index.mjs.map +1 -1
  123. package/dist/astro/routes/api/admin/transfer/capabilities.mjs +47 -45
  124. package/dist/astro/routes/api/admin/transfer/capabilities.mjs.map +1 -1
  125. package/dist/astro/routes/api/admin/transfer/exports/_id_/advance.mjs +47 -45
  126. package/dist/astro/routes/api/admin/transfer/exports/_id_/advance.mjs.map +1 -1
  127. package/dist/astro/routes/api/admin/transfer/exports/_id_/archive.mjs +48 -46
  128. package/dist/astro/routes/api/admin/transfer/exports/_id_/archive.mjs.map +1 -1
  129. package/dist/astro/routes/api/admin/transfer/exports/_id_/files/_...path_.mjs +48 -46
  130. package/dist/astro/routes/api/admin/transfer/exports/_id_/files/_...path_.mjs.map +1 -1
  131. package/dist/astro/routes/api/admin/transfer/exports/_id_/index.mjs +47 -45
  132. package/dist/astro/routes/api/admin/transfer/exports/_id_/index.mjs.map +1 -1
  133. package/dist/astro/routes/api/admin/transfer/exports/_id_/manifest.mjs +48 -46
  134. package/dist/astro/routes/api/admin/transfer/exports/_id_/manifest.mjs.map +1 -1
  135. package/dist/astro/routes/api/admin/transfer/exports/index.mjs +49 -47
  136. package/dist/astro/routes/api/admin/transfer/exports/index.mjs.map +1 -1
  137. package/dist/astro/routes/api/admin/transfer/imports/_id_/abandon.mjs +47 -45
  138. package/dist/astro/routes/api/admin/transfer/imports/_id_/abandon.mjs.map +1 -1
  139. package/dist/astro/routes/api/admin/transfer/imports/_id_/advance.mjs +47 -45
  140. package/dist/astro/routes/api/admin/transfer/imports/_id_/advance.mjs.map +1 -1
  141. package/dist/astro/routes/api/admin/transfer/imports/_id_/analyze.mjs +49 -47
  142. package/dist/astro/routes/api/admin/transfer/imports/_id_/analyze.mjs.map +1 -1
  143. package/dist/astro/routes/api/admin/transfer/imports/_id_/cancel.mjs +47 -45
  144. package/dist/astro/routes/api/admin/transfer/imports/_id_/cancel.mjs.map +1 -1
  145. package/dist/astro/routes/api/admin/transfer/imports/_id_/execute.mjs +49 -47
  146. package/dist/astro/routes/api/admin/transfer/imports/_id_/execute.mjs.map +1 -1
  147. package/dist/astro/routes/api/admin/transfer/imports/_id_/files/_...path_.mjs +47 -45
  148. package/dist/astro/routes/api/admin/transfer/imports/_id_/files/_...path_.mjs.map +1 -1
  149. package/dist/astro/routes/api/admin/transfer/imports/_id_/index.mjs +47 -45
  150. package/dist/astro/routes/api/admin/transfer/imports/_id_/index.mjs.map +1 -1
  151. package/dist/astro/routes/api/admin/transfer/imports/_id_/missing.mjs +49 -47
  152. package/dist/astro/routes/api/admin/transfer/imports/_id_/missing.mjs.map +1 -1
  153. package/dist/astro/routes/api/admin/transfer/imports/_id_/plan.mjs +47 -45
  154. package/dist/astro/routes/api/admin/transfer/imports/_id_/plan.mjs.map +1 -1
  155. package/dist/astro/routes/api/admin/transfer/imports/_id_/receipt.mjs +47 -45
  156. package/dist/astro/routes/api/admin/transfer/imports/_id_/receipt.mjs.map +1 -1
  157. package/dist/astro/routes/api/admin/transfer/imports/index.mjs +49 -47
  158. package/dist/astro/routes/api/admin/transfer/imports/index.mjs.map +1 -1
  159. package/dist/astro/routes/api/admin/users/_id_/disable.mjs +5 -5
  160. package/dist/astro/routes/api/admin/users/_id_/enable.mjs +4 -4
  161. package/dist/astro/routes/api/admin/users/_id_/index.mjs +17 -17
  162. package/dist/astro/routes/api/admin/users/_id_/send-recovery.mjs +6 -6
  163. package/dist/astro/routes/api/admin/users/index.mjs +16 -16
  164. package/dist/astro/routes/api/auth/dev-bypass.mjs +6 -6
  165. package/dist/astro/routes/api/auth/handover.mjs +6 -6
  166. package/dist/astro/routes/api/auth/invite/accept.mjs +4 -4
  167. package/dist/astro/routes/api/auth/invite/complete.mjs +21 -21
  168. package/dist/astro/routes/api/auth/invite/index.mjs +18 -18
  169. package/dist/astro/routes/api/auth/invite/register-options.mjs +19 -19
  170. package/dist/astro/routes/api/auth/logout.mjs +5 -5
  171. package/dist/astro/routes/api/auth/magic-link/send.mjs +20 -20
  172. package/dist/astro/routes/api/auth/magic-link/verify.mjs +17 -17
  173. package/dist/astro/routes/api/auth/me.mjs +17 -17
  174. package/dist/astro/routes/api/auth/mode.mjs +5 -5
  175. package/dist/astro/routes/api/auth/oauth/_provider_/callback.mjs +8 -8
  176. package/dist/astro/routes/api/auth/oauth/_provider_.mjs +2 -2
  177. package/dist/astro/routes/api/auth/passkey/_id_.mjs +16 -16
  178. package/dist/astro/routes/api/auth/passkey/index.mjs +4 -4
  179. package/dist/astro/routes/api/auth/passkey/options.mjs +21 -21
  180. package/dist/astro/routes/api/auth/passkey/register/options.mjs +19 -19
  181. package/dist/astro/routes/api/auth/passkey/register/verify.mjs +20 -20
  182. package/dist/astro/routes/api/auth/passkey/verify.mjs +21 -21
  183. package/dist/astro/routes/api/auth/signup/complete.mjs +21 -21
  184. package/dist/astro/routes/api/auth/signup/request.mjs +19 -19
  185. package/dist/astro/routes/api/auth/signup/verify.mjs +4 -4
  186. package/dist/astro/routes/api/calendar.mjs +17 -17
  187. package/dist/astro/routes/api/comments/_collection_/_contentId_/index.mjs +13 -13
  188. package/dist/astro/routes/api/comments/_collection_/_contentId_/reactions.mjs +21 -21
  189. package/dist/astro/routes/api/content/_collection_/_id_/compare.mjs +5 -5
  190. package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs +20 -20
  191. package/dist/astro/routes/api/content/_collection_/_id_/duplicate.mjs +5 -5
  192. package/dist/astro/routes/api/content/_collection_/_id_/lock.mjs +19 -19
  193. package/dist/astro/routes/api/content/_collection_/_id_/permanent.mjs +6 -6
  194. package/dist/astro/routes/api/content/_collection_/_id_/plugin-extensions/_pluginId_/_kind_/_extensionId_.mjs +12 -12
  195. package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs +36 -35
  196. package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs.map +1 -1
  197. package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs +20 -20
  198. package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/children.mjs +40 -39
  199. package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/children.mjs.map +1 -1
  200. package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/parents.mjs +40 -39
  201. package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/parents.mjs.map +1 -1
  202. package/dist/astro/routes/api/content/_collection_/_id_/restore.mjs +6 -6
  203. package/dist/astro/routes/api/content/_collection_/_id_/revisions.mjs +5 -5
  204. package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs +20 -20
  205. package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.d.mts.map +1 -1
  206. package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs +40 -32
  207. package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs.map +1 -1
  208. package/dist/astro/routes/api/content/_collection_/_id_/translations.d.mts.map +1 -1
  209. package/dist/astro/routes/api/content/_collection_/_id_/translations.mjs +9 -5
  210. package/dist/astro/routes/api/content/_collection_/_id_/translations.mjs.map +1 -1
  211. package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs +20 -20
  212. package/dist/astro/routes/api/content/_collection_/_id_.mjs +20 -20
  213. package/dist/astro/routes/api/content/_collection_/authors.mjs +5 -5
  214. package/dist/astro/routes/api/content/_collection_/index.mjs +17 -17
  215. package/dist/astro/routes/api/content/_collection_/trash.mjs +17 -17
  216. package/dist/astro/routes/api/dashboard.mjs +21 -15
  217. package/dist/astro/routes/api/dashboard.mjs.map +1 -1
  218. package/dist/astro/routes/api/dev/emails.mjs +5 -5
  219. package/dist/astro/routes/api/dev/scheduled-tasks.mjs +119 -117
  220. package/dist/astro/routes/api/dev/scheduled-tasks.mjs.map +1 -1
  221. package/dist/astro/routes/api/health.mjs +6 -6
  222. package/dist/astro/routes/api/import/probe.d.mts +3 -3
  223. package/dist/astro/routes/api/import/probe.mjs +31 -29
  224. package/dist/astro/routes/api/import/probe.mjs.map +1 -1
  225. package/dist/astro/routes/api/import/wordpress/analyze.mjs +8 -8
  226. package/dist/astro/routes/api/import/wordpress/execute.d.mts +13 -13
  227. package/dist/astro/routes/api/import/wordpress/execute.mjs +31 -30
  228. package/dist/astro/routes/api/import/wordpress/execute.mjs.map +1 -1
  229. package/dist/astro/routes/api/import/wordpress/media.d.mts +12 -12
  230. package/dist/astro/routes/api/import/wordpress/media.mjs +21 -21
  231. package/dist/astro/routes/api/import/wordpress/prepare.mjs +22 -22
  232. package/dist/astro/routes/api/import/wordpress/rewrite-urls.d.mts +13 -13
  233. package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs +32 -31
  234. package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs.map +1 -1
  235. package/dist/astro/routes/api/import/wordpress-plugin/analyze.d.mts +1 -1
  236. package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs +31 -29
  237. package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs.map +1 -1
  238. package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts +13 -13
  239. package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs +42 -40
  240. package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs.map +1 -1
  241. package/dist/astro/routes/api/manifest.mjs +6 -6
  242. package/dist/astro/routes/api/mcp.mjs +117 -100
  243. package/dist/astro/routes/api/mcp.mjs.map +1 -1
  244. package/dist/astro/routes/api/media/_id_/confirm.mjs +21 -21
  245. package/dist/astro/routes/api/media/_id_/replace.mjs +18 -18
  246. package/dist/astro/routes/api/media/_id_/upload.mjs +9 -9
  247. package/dist/astro/routes/api/media/_id_/usage.mjs +35 -34
  248. package/dist/astro/routes/api/media/_id_/usage.mjs.map +1 -1
  249. package/dist/astro/routes/api/media/_id_.mjs +33 -32
  250. package/dist/astro/routes/api/media/_id_.mjs.map +1 -1
  251. package/dist/astro/routes/api/media/asset/_id_/_filename_.mjs +6 -6
  252. package/dist/astro/routes/api/media/file/_...key_.mjs +21 -13
  253. package/dist/astro/routes/api/media/file/_...key_.mjs.map +1 -1
  254. package/dist/astro/routes/api/media/folders/_id_.mjs +18 -18
  255. package/dist/astro/routes/api/media/folders/index.mjs +18 -18
  256. package/dist/astro/routes/api/media/providers/_providerId_/_itemId_.mjs +5 -5
  257. package/dist/astro/routes/api/media/providers/_providerId_/index.mjs +5 -5
  258. package/dist/astro/routes/api/media/providers/index.mjs +5 -5
  259. package/dist/astro/routes/api/media/upload-url.mjs +20 -20
  260. package/dist/astro/routes/api/media.mjs +37 -36
  261. package/dist/astro/routes/api/media.mjs.map +1 -1
  262. package/dist/astro/routes/api/menus/_name_/items/_id_.mjs +22 -21
  263. package/dist/astro/routes/api/menus/_name_/items/_id_.mjs.map +1 -1
  264. package/dist/astro/routes/api/menus/_name_/items.mjs +22 -21
  265. package/dist/astro/routes/api/menus/_name_/items.mjs.map +1 -1
  266. package/dist/astro/routes/api/menus/_name_/reorder.mjs +22 -21
  267. package/dist/astro/routes/api/menus/_name_/reorder.mjs.map +1 -1
  268. package/dist/astro/routes/api/menus/_name_/translations.mjs +22 -21
  269. package/dist/astro/routes/api/menus/_name_/translations.mjs.map +1 -1
  270. package/dist/astro/routes/api/menus/_name_.mjs +22 -21
  271. package/dist/astro/routes/api/menus/_name_.mjs.map +1 -1
  272. package/dist/astro/routes/api/menus/index.mjs +22 -21
  273. package/dist/astro/routes/api/menus/index.mjs.map +1 -1
  274. package/dist/astro/routes/api/oauth/authorize.mjs +6 -6
  275. package/dist/astro/routes/api/oauth/device/authorize.mjs +8 -8
  276. package/dist/astro/routes/api/oauth/device/code.mjs +11 -11
  277. package/dist/astro/routes/api/oauth/device/token.mjs +10 -10
  278. package/dist/astro/routes/api/oauth/register.mjs +7 -7
  279. package/dist/astro/routes/api/oauth/token/refresh.mjs +8 -8
  280. package/dist/astro/routes/api/oauth/token/revoke.mjs +8 -8
  281. package/dist/astro/routes/api/oauth/token.mjs +8 -8
  282. package/dist/astro/routes/api/openapi.json.mjs +22 -22
  283. package/dist/astro/routes/api/plugins/_pluginId_/_...path_.mjs +12 -12
  284. package/dist/astro/routes/api/redirects/404s/index.mjs +23 -22
  285. package/dist/astro/routes/api/redirects/404s/index.mjs.map +1 -1
  286. package/dist/astro/routes/api/redirects/404s/summary.mjs +23 -22
  287. package/dist/astro/routes/api/redirects/404s/summary.mjs.map +1 -1
  288. package/dist/astro/routes/api/redirects/_id_.mjs +24 -23
  289. package/dist/astro/routes/api/redirects/_id_.mjs.map +1 -1
  290. package/dist/astro/routes/api/redirects/index.mjs +24 -23
  291. package/dist/astro/routes/api/redirects/index.mjs.map +1 -1
  292. package/dist/astro/routes/api/relations/_id_/index.mjs +40 -39
  293. package/dist/astro/routes/api/relations/_id_/index.mjs.map +1 -1
  294. package/dist/astro/routes/api/relations/index.mjs +40 -39
  295. package/dist/astro/routes/api/relations/index.mjs.map +1 -1
  296. package/dist/astro/routes/api/revisions/_revisionId_/index.mjs +5 -5
  297. package/dist/astro/routes/api/revisions/_revisionId_/restore.mjs +19 -19
  298. package/dist/astro/routes/api/schema/block-types/_slug_/index.mjs +80 -78
  299. package/dist/astro/routes/api/schema/block-types/_slug_/index.mjs.map +1 -1
  300. package/dist/astro/routes/api/schema/block-types/_slug_/versions/_version_/activate.mjs +80 -78
  301. package/dist/astro/routes/api/schema/block-types/_slug_/versions/_version_/activate.mjs.map +1 -1
  302. package/dist/astro/routes/api/schema/block-types/index.mjs +80 -78
  303. package/dist/astro/routes/api/schema/block-types/index.mjs.map +1 -1
  304. package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs +80 -78
  305. package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs.map +1 -1
  306. package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs +80 -78
  307. package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs.map +1 -1
  308. package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs +80 -78
  309. package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs.map +1 -1
  310. package/dist/astro/routes/api/schema/collections/_slug_/index.mjs +80 -78
  311. package/dist/astro/routes/api/schema/collections/_slug_/index.mjs.map +1 -1
  312. package/dist/astro/routes/api/schema/collections/index.mjs +80 -78
  313. package/dist/astro/routes/api/schema/collections/index.mjs.map +1 -1
  314. package/dist/astro/routes/api/schema/collections/reorder.mjs +80 -78
  315. package/dist/astro/routes/api/schema/collections/reorder.mjs.map +1 -1
  316. package/dist/astro/routes/api/schema/index.mjs +20 -19
  317. package/dist/astro/routes/api/schema/index.mjs.map +1 -1
  318. package/dist/astro/routes/api/schema/orphans/_slug_.mjs +80 -78
  319. package/dist/astro/routes/api/schema/orphans/_slug_.mjs.map +1 -1
  320. package/dist/astro/routes/api/schema/orphans/index.mjs +80 -78
  321. package/dist/astro/routes/api/schema/orphans/index.mjs.map +1 -1
  322. package/dist/astro/routes/api/search/enable.mjs +23 -22
  323. package/dist/astro/routes/api/search/enable.mjs.map +1 -1
  324. package/dist/astro/routes/api/search/index.mjs +22 -21
  325. package/dist/astro/routes/api/search/index.mjs.map +1 -1
  326. package/dist/astro/routes/api/search/rebuild.mjs +23 -22
  327. package/dist/astro/routes/api/search/rebuild.mjs.map +1 -1
  328. package/dist/astro/routes/api/search/stats.mjs +12 -11
  329. package/dist/astro/routes/api/search/stats.mjs.map +1 -1
  330. package/dist/astro/routes/api/search/suggest.mjs +22 -21
  331. package/dist/astro/routes/api/search/suggest.mjs.map +1 -1
  332. package/dist/astro/routes/api/sections/_slug_.mjs +22 -21
  333. package/dist/astro/routes/api/sections/_slug_.mjs.map +1 -1
  334. package/dist/astro/routes/api/sections/index.mjs +22 -21
  335. package/dist/astro/routes/api/sections/index.mjs.map +1 -1
  336. package/dist/astro/routes/api/settings/backups/archives/_name_.mjs +7 -7
  337. package/dist/astro/routes/api/settings/backups/archives/index.mjs +7 -7
  338. package/dist/astro/routes/api/settings/backups/export.mjs +7 -7
  339. package/dist/astro/routes/api/settings/backups/index.mjs +8 -8
  340. package/dist/astro/routes/api/settings/domain-notify.mjs +9 -9
  341. package/dist/astro/routes/api/settings/domain.mjs +22 -20
  342. package/dist/astro/routes/api/settings/domain.mjs.map +1 -1
  343. package/dist/astro/routes/api/settings/email.mjs +6 -6
  344. package/dist/astro/routes/api/settings.mjs +29 -27
  345. package/dist/astro/routes/api/settings.mjs.map +1 -1
  346. package/dist/astro/routes/api/setup/admin-verify.mjs +23 -23
  347. package/dist/astro/routes/api/setup/admin.mjs +20 -20
  348. package/dist/astro/routes/api/setup/dev-bypass.mjs +52 -50
  349. package/dist/astro/routes/api/setup/dev-bypass.mjs.map +1 -1
  350. package/dist/astro/routes/api/setup/dev-reset.mjs +4 -4
  351. package/dist/astro/routes/api/setup/index.mjs +58 -56
  352. package/dist/astro/routes/api/setup/index.mjs.map +1 -1
  353. package/dist/astro/routes/api/setup/status.mjs +6 -6
  354. package/dist/astro/routes/api/site/domain-proof.mjs +16 -14
  355. package/dist/astro/routes/api/site/domain-proof.mjs.map +1 -1
  356. package/dist/astro/routes/api/snapshot.mjs +8 -8
  357. package/dist/astro/routes/api/taxonomies/_name_/reorder.mjs +30 -29
  358. package/dist/astro/routes/api/taxonomies/_name_/reorder.mjs.map +1 -1
  359. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs +30 -29
  360. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs.map +1 -1
  361. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs +30 -29
  362. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs.map +1 -1
  363. package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs +30 -29
  364. package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs.map +1 -1
  365. package/dist/astro/routes/api/taxonomies/_name_/translations.mjs +28 -27
  366. package/dist/astro/routes/api/taxonomies/_name_/translations.mjs.map +1 -1
  367. package/dist/astro/routes/api/taxonomies/_name_.mjs +30 -29
  368. package/dist/astro/routes/api/taxonomies/_name_.mjs.map +1 -1
  369. package/dist/astro/routes/api/taxonomies/bulk-tag.mjs +44 -43
  370. package/dist/astro/routes/api/taxonomies/bulk-tag.mjs.map +1 -1
  371. package/dist/astro/routes/api/taxonomies/index.mjs +30 -29
  372. package/dist/astro/routes/api/taxonomies/index.mjs.map +1 -1
  373. package/dist/astro/routes/api/themes/preview.mjs +6 -6
  374. package/dist/astro/routes/api/typegen.mjs +6 -6
  375. package/dist/astro/routes/api/visual-editing/action-token.mjs +6 -6
  376. package/dist/astro/routes/api/visual-editing/content/_collection_/_id_/publish.mjs +21 -21
  377. package/dist/astro/routes/api/visual-editing/toolbar-labels.mjs +4 -4
  378. package/dist/astro/routes/api/well-known/auth.mjs +1 -1
  379. package/dist/astro/routes/api/well-known/oauth-authorization-server.mjs +2 -2
  380. package/dist/astro/routes/api/well-known/oauth-protected-resource.mjs +2 -2
  381. package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs +19 -19
  382. package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs +24 -23
  383. package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs.map +1 -1
  384. package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs +24 -23
  385. package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs.map +1 -1
  386. package/dist/astro/routes/api/widget-areas/_name_.mjs +13 -12
  387. package/dist/astro/routes/api/widget-areas/_name_.mjs.map +1 -1
  388. package/dist/astro/routes/api/widget-areas/index.mjs +24 -23
  389. package/dist/astro/routes/api/widget-areas/index.mjs.map +1 -1
  390. package/dist/astro/routes/api/widget-components.mjs +5 -5
  391. package/dist/astro/routes/robots.txt.mjs +15 -13
  392. package/dist/astro/routes/robots.txt.mjs.map +1 -1
  393. package/dist/astro/routes/sitemap-_collection_.xml.mjs +19 -17
  394. package/dist/astro/routes/sitemap-_collection_.xml.mjs.map +1 -1
  395. package/dist/astro/routes/sitemap.xml.mjs +16 -14
  396. package/dist/astro/routes/sitemap.xml.mjs.map +1 -1
  397. package/dist/astro/types.d.mts +17 -17
  398. package/dist/audit-B8XE-0UV.mjs +127 -0
  399. package/dist/audit-B8XE-0UV.mjs.map +1 -0
  400. package/dist/auth/providers/github.d.mts +1 -1
  401. package/dist/auth/providers/google.d.mts +1 -1
  402. package/dist/auth/providers/microsoft.d.mts +1 -1
  403. package/dist/authoritative-records-LPtrIGOY.mjs +5183 -0
  404. package/dist/authoritative-records-LPtrIGOY.mjs.map +1 -0
  405. package/dist/authorize-CoDsRRp5.mjs +74 -0
  406. package/dist/authorize-CoDsRRp5.mjs.map +1 -0
  407. package/dist/backup-2Wj-hTCN.mjs +246 -0
  408. package/dist/backup-2Wj-hTCN.mjs.map +1 -0
  409. package/dist/block-types-C3gJEe7l.mjs +132 -0
  410. package/dist/block-types-C3gJEe7l.mjs.map +1 -0
  411. package/dist/block-values-CgbMtSGU.mjs +215 -0
  412. package/dist/block-values-CgbMtSGU.mjs.map +1 -0
  413. package/dist/byline-CzGZC2Zs.mjs +922 -0
  414. package/dist/byline-CzGZC2Zs.mjs.map +1 -0
  415. package/dist/byline-fields-B1qHvRps.mjs +280 -0
  416. package/dist/byline-fields-B1qHvRps.mjs.map +1 -0
  417. package/dist/byline-fields-vYd_4Q1e.mjs +123 -0
  418. package/dist/byline-fields-vYd_4Q1e.mjs.map +1 -0
  419. package/dist/byline-registry-BhzpO41z.mjs +406 -0
  420. package/dist/byline-registry-BhzpO41z.mjs.map +1 -0
  421. package/dist/bylines-BF555iIz.mjs +150 -0
  422. package/dist/bylines-BF555iIz.mjs.map +1 -0
  423. package/dist/bylines-DJx6IWWi.mjs +234 -0
  424. package/dist/bylines-DJx6IWWi.mjs.map +1 -0
  425. package/dist/cache-BWzswWB-.mjs +151 -0
  426. package/dist/cache-BWzswWB-.mjs.map +1 -0
  427. package/dist/canonical-DjF_z6GI.mjs +174 -0
  428. package/dist/canonical-DjF_z6GI.mjs.map +1 -0
  429. package/dist/capture-triggers-D7g3fOZj.mjs +362 -0
  430. package/dist/capture-triggers-D7g3fOZj.mjs.map +1 -0
  431. package/dist/challenge-store-Cfjdvw86.mjs +51 -0
  432. package/dist/challenge-store-Cfjdvw86.mjs.map +1 -0
  433. package/dist/checksum-BF4acJwn.mjs +162 -0
  434. package/dist/checksum-BF4acJwn.mjs.map +1 -0
  435. package/dist/chrome-tags-BDs29G3g.mjs +24 -0
  436. package/dist/chrome-tags-BDs29G3g.mjs.map +1 -0
  437. package/dist/chunks-CYBOL-zn.mjs +25 -0
  438. package/dist/chunks-CYBOL-zn.mjs.map +1 -0
  439. package/dist/cli/index.mjs +67 -65
  440. package/dist/cli/index.mjs.map +1 -1
  441. package/dist/client/cf-access.d.mts +1 -1
  442. package/dist/client/index.d.mts +48 -48
  443. package/dist/client/index.d.mts.map +1 -1
  444. package/dist/client/index.mjs +4 -3
  445. package/dist/client/index.mjs.map +1 -1
  446. package/dist/collection-slugs-cache-B2J5aESO.mjs +91 -0
  447. package/dist/collection-slugs-cache-B2J5aESO.mjs.map +1 -0
  448. package/dist/comment-DV7dybcs.mjs +335 -0
  449. package/dist/comment-DV7dybcs.mjs.map +1 -0
  450. package/dist/comment-reaction-CWwqiT6x.mjs +85 -0
  451. package/dist/comment-reaction-CWwqiT6x.mjs.map +1 -0
  452. package/dist/comments-DVjWJm8X.mjs +99 -0
  453. package/dist/comments-DVjWJm8X.mjs.map +1 -0
  454. package/dist/comments-Q-ILHCEI.mjs +195 -0
  455. package/dist/comments-Q-ILHCEI.mjs.map +1 -0
  456. package/dist/components-DnOmvvgg.mjs +112 -0
  457. package/dist/components-DnOmvvgg.mjs.map +1 -0
  458. package/dist/config-9IzA83_U.d.mts +6811 -0
  459. package/dist/config-9IzA83_U.d.mts.map +1 -0
  460. package/dist/config-BdQzFtmR.mjs +228 -0
  461. package/dist/config-BdQzFtmR.mjs.map +1 -0
  462. package/dist/config-Cs2RBkJ6.d.mts +41 -0
  463. package/dist/config-Cs2RBkJ6.d.mts.map +1 -0
  464. package/dist/config-Cs_AwWXI.mjs +106 -0
  465. package/dist/config-Cs_AwWXI.mjs.map +1 -0
  466. package/dist/connection-CiXgZyCY.mjs +36 -0
  467. package/dist/connection-CiXgZyCY.mjs.map +1 -0
  468. package/dist/content-Dt0Os_WQ.mjs +2109 -0
  469. package/dist/content-Dt0Os_WQ.mjs.map +1 -0
  470. package/dist/content-list-query-BK26u9Ly.d.mts +26 -0
  471. package/dist/content-list-query-BK26u9Ly.d.mts.map +1 -0
  472. package/dist/content-policy-BLDbNJOb.mjs +46 -0
  473. package/dist/content-policy-BLDbNJOb.mjs.map +1 -0
  474. package/dist/content-repair-CjwbLy4m.mjs +442 -0
  475. package/dist/content-repair-CjwbLy4m.mjs.map +1 -0
  476. package/dist/context-ErV7UdQY.mjs +2089 -0
  477. package/dist/context-ErV7UdQY.mjs.map +1 -0
  478. package/dist/credits-BRyjafiF.mjs +110 -0
  479. package/dist/credits-BRyjafiF.mjs.map +1 -0
  480. package/dist/cron-Bm5xa7tv.mjs +306 -0
  481. package/dist/cron-Bm5xa7tv.mjs.map +1 -0
  482. package/dist/dashboard-DVxQ5XiI.mjs +168 -0
  483. package/dist/dashboard-DVxQ5XiI.mjs.map +1 -0
  484. package/dist/database/migration-lock.mjs +1 -1
  485. package/dist/db/index.d.mts +3 -3
  486. package/dist/db/index.mjs +2 -2
  487. package/dist/db/libsql-migrations.d.mts +1 -1
  488. package/dist/db/libsql-migrations.mjs +5 -5
  489. package/dist/db/libsql.d.mts +1 -1
  490. package/dist/db/postgres-migrations.d.mts +1 -1
  491. package/dist/db/postgres-migrations.mjs +5 -5
  492. package/dist/db/postgres.d.mts +1 -1
  493. package/dist/db/sqlite-migrations.d.mts +1 -1
  494. package/dist/db/sqlite-migrations.mjs +5 -5
  495. package/dist/db/sqlite.d.mts +1 -1
  496. package/dist/db/sqlite.mjs +1 -1
  497. package/dist/db-errors-unnO6yiZ.mjs +65 -0
  498. package/dist/db-errors-unnO6yiZ.mjs.map +1 -0
  499. package/dist/default-B9Tf2n94.mjs +81 -0
  500. package/dist/default-B9Tf2n94.mjs.map +1 -0
  501. package/dist/deferred-tasks-CpPEqsga.d.mts +9 -0
  502. package/dist/deferred-tasks-CpPEqsga.d.mts.map +1 -0
  503. package/dist/destination-DR3IHjmy.mjs +18 -0
  504. package/dist/destination-DR3IHjmy.mjs.map +1 -0
  505. package/dist/dev-typegen-ZeWYV8Jp.mjs +29 -0
  506. package/dist/dev-typegen-ZeWYV8Jp.mjs.map +1 -0
  507. package/dist/device-flow-BbYNZ9Xi.mjs +521 -0
  508. package/dist/device-flow-BbYNZ9Xi.mjs.map +1 -0
  509. package/dist/digest-DlBa7kJl.mjs +194 -0
  510. package/dist/digest-DlBa7kJl.mjs.map +1 -0
  511. package/dist/direct-executor-5T8gkhvA.mjs +117 -0
  512. package/dist/direct-executor-5T8gkhvA.mjs.map +1 -0
  513. package/dist/dist-DY0aOmAP.mjs +810 -0
  514. package/dist/dist-DY0aOmAP.mjs.map +1 -0
  515. package/dist/email-console-v3OM8It-.mjs +50 -0
  516. package/dist/email-console-v3OM8It-.mjs.map +1 -0
  517. package/dist/email-locale-CoZo-oZx.mjs +25 -0
  518. package/dist/email-locale-CoZo-oZx.mjs.map +1 -0
  519. package/dist/emdash-runtime-DwezbIqQ.mjs +4392 -0
  520. package/dist/emdash-runtime-DwezbIqQ.mjs.map +1 -0
  521. package/dist/enrich-C3XIJi0O.mjs +194 -0
  522. package/dist/enrich-C3XIJi0O.mjs.map +1 -0
  523. package/dist/entry-lock-CY7XpdSw.d.mts +4568 -0
  524. package/dist/entry-lock-CY7XpdSw.d.mts.map +1 -0
  525. package/dist/entry-lock-DDuWaAiP.mjs +1211 -0
  526. package/dist/entry-lock-DDuWaAiP.mjs.map +1 -0
  527. package/dist/entry-lock-D_Og9Gy3.mjs +163 -0
  528. package/dist/entry-lock-D_Og9Gy3.mjs.map +1 -0
  529. package/dist/entry-locks-Cp8_BcQQ.mjs +167 -0
  530. package/dist/entry-locks-Cp8_BcQQ.mjs.map +1 -0
  531. package/dist/env-types-Br8uywYA.mjs +38 -0
  532. package/dist/env-types-Br8uywYA.mjs.map +1 -0
  533. package/dist/error-CT2SsX5S.mjs +90 -0
  534. package/dist/error-CT2SsX5S.mjs.map +1 -0
  535. package/dist/errors-BMaCpLeS.mjs +479 -0
  536. package/dist/errors-BMaCpLeS.mjs.map +1 -0
  537. package/dist/errors-DlJwot7q.mjs +120 -0
  538. package/dist/errors-DlJwot7q.mjs.map +1 -0
  539. package/dist/escape-BfbDyuQ-.mjs +9 -0
  540. package/dist/escape-BfbDyuQ-.mjs.map +1 -0
  541. package/dist/fence-BOD3SxZG.mjs +162 -0
  542. package/dist/fence-BOD3SxZG.mjs.map +1 -0
  543. package/dist/field-defs-cache-C7sR7ZeU.mjs +77 -0
  544. package/dist/field-defs-cache-C7sR7ZeU.mjs.map +1 -0
  545. package/dist/field-map-C_rDXfdJ.mjs +84 -0
  546. package/dist/field-map-C_rDXfdJ.mjs.map +1 -0
  547. package/dist/focal-point-CgCcr1Ca.mjs +23 -0
  548. package/dist/focal-point-CgCcr1Ca.mjs.map +1 -0
  549. package/dist/fts-manager-BzFo0xx6.mjs +483 -0
  550. package/dist/fts-manager-BzFo0xx6.mjs.map +1 -0
  551. package/dist/gc-B_c3DPpi.mjs +75 -0
  552. package/dist/gc-B_c3DPpi.mjs.map +1 -0
  553. package/dist/hash-A-o2ZX8O.mjs +37 -0
  554. package/dist/hash-A-o2ZX8O.mjs.map +1 -0
  555. package/dist/hook-result-f8t7hIuu.d.mts +31 -0
  556. package/dist/hook-result-f8t7hIuu.d.mts.map +1 -0
  557. package/dist/hreflang-BpUK9Lcu.mjs +105 -0
  558. package/dist/hreflang-BpUK9Lcu.mjs.map +1 -0
  559. package/dist/hreflang-D07R-RbI.d.mts +50 -0
  560. package/dist/hreflang-D07R-RbI.d.mts.map +1 -0
  561. package/dist/http-route-dispatch-C2Ep2Uf6.mjs +342 -0
  562. package/dist/http-route-dispatch-C2Ep2Uf6.mjs.map +1 -0
  563. package/dist/identity-BivQ8wkV.mjs +35 -0
  564. package/dist/identity-BivQ8wkV.mjs.map +1 -0
  565. package/dist/import-B4UvHNJz.mjs +2126 -0
  566. package/dist/import-B4UvHNJz.mjs.map +1 -0
  567. package/dist/index-C37Ty40w.d.mts +623 -0
  568. package/dist/index-C37Ty40w.d.mts.map +1 -0
  569. package/dist/index.d.mts +23 -23
  570. package/dist/index.mjs +112 -110
  571. package/dist/install-finalization-BbYaB4wj.mjs +58 -0
  572. package/dist/install-finalization-BbYaB4wj.mjs.map +1 -0
  573. package/dist/json-recordset-BjYIWFkV.mjs +12 -0
  574. package/dist/json-recordset-BjYIWFkV.mjs.map +1 -0
  575. package/dist/json-schema-Cde7le0s.mjs +15 -0
  576. package/dist/json-schema-Cde7le0s.mjs.map +1 -0
  577. package/dist/keys-CusTXpw-.mjs +61 -0
  578. package/dist/keys-CusTXpw-.mjs.map +1 -0
  579. package/dist/kinds-DogmNB6n.mjs +974 -0
  580. package/dist/kinds-DogmNB6n.mjs.map +1 -0
  581. package/dist/lifecycle-BLCoCz4T.mjs +25 -0
  582. package/dist/lifecycle-BLCoCz4T.mjs.map +1 -0
  583. package/dist/load-Dds3KhXr.mjs +28 -0
  584. package/dist/load-Dds3KhXr.mjs.map +1 -0
  585. package/dist/loader-D4w4XE7q.mjs +1420 -0
  586. package/dist/loader-D4w4XE7q.mjs.map +1 -0
  587. package/dist/loops-IYgzQdQu.mjs +205 -0
  588. package/dist/loops-IYgzQdQu.mjs.map +1 -0
  589. package/dist/manifest-builder-CGF5kujD.mjs +196 -0
  590. package/dist/manifest-builder-CGF5kujD.mjs.map +1 -0
  591. package/dist/manifest-schema-B0BxPSjB.mjs +497 -0
  592. package/dist/manifest-schema-B0BxPSjB.mjs.map +1 -0
  593. package/dist/marketplace-DNvEGLqU.mjs +257 -0
  594. package/dist/marketplace-DNvEGLqU.mjs.map +1 -0
  595. package/dist/media/image-endpoint.d.mts +3 -2
  596. package/dist/media/image-endpoint.d.mts.map +1 -1
  597. package/dist/media/image-endpoint.mjs +17 -8
  598. package/dist/media/image-endpoint.mjs.map +1 -1
  599. package/dist/media/index.d.mts +1 -1
  600. package/dist/media/index.mjs +7 -6
  601. package/dist/media/index.mjs.map +1 -1
  602. package/dist/media/local-runtime.d.mts +14 -14
  603. package/dist/media/local-runtime.d.mts.map +1 -1
  604. package/dist/media/local-runtime.mjs +18 -13
  605. package/dist/media/local-runtime.mjs.map +1 -1
  606. package/dist/media-BL9MRrSG.mjs +294 -0
  607. package/dist/media-BL9MRrSG.mjs.map +1 -0
  608. package/dist/media-B_x5B9EA.mjs +373 -0
  609. package/dist/media-B_x5B9EA.mjs.map +1 -0
  610. package/dist/media-allowlist-CpmqBbIQ.mjs +45 -0
  611. package/dist/media-allowlist-CpmqBbIQ.mjs.map +1 -0
  612. package/dist/media-folders-CNs_A_B-.mjs +210 -0
  613. package/dist/media-folders-CNs_A_B-.mjs.map +1 -0
  614. package/dist/media-qTTHVkls.mjs +416 -0
  615. package/dist/media-qTTHVkls.mjs.map +1 -0
  616. package/dist/media-url-GJboA1fl.mjs +43 -0
  617. package/dist/media-url-GJboA1fl.mjs.map +1 -0
  618. package/dist/media-usage-ClWgrX0d.mjs +282 -0
  619. package/dist/media-usage-ClWgrX0d.mjs.map +1 -0
  620. package/dist/media-usage-activation-B8Fjtq0h.mjs +78 -0
  621. package/dist/media-usage-activation-B8Fjtq0h.mjs.map +1 -0
  622. package/dist/media-usage-work-L8-Au4j-.mjs +1036 -0
  623. package/dist/media-usage-work-L8-Au4j-.mjs.map +1 -0
  624. package/dist/media-usage-work-LXgze5j9.mjs +151 -0
  625. package/dist/media-usage-work-LXgze5j9.mjs.map +1 -0
  626. package/dist/menus-BAxcbsbv.mjs +818 -0
  627. package/dist/menus-BAxcbsbv.mjs.map +1 -0
  628. package/dist/menus-BI6oBXco.mjs +92 -0
  629. package/dist/menus-BI6oBXco.mjs.map +1 -0
  630. package/dist/menus-fvGFd4m6.mjs +3725 -0
  631. package/dist/menus-fvGFd4m6.mjs.map +1 -0
  632. package/dist/migrations/index.d.mts +1 -1
  633. package/dist/migrations/index.mjs +4 -4
  634. package/dist/mime-DwhtRyUt.mjs +81 -0
  635. package/dist/mime-DwhtRyUt.mjs.map +1 -0
  636. package/dist/mode-DIDSUwuN.mjs +23 -0
  637. package/dist/mode-DIDSUwuN.mjs.map +1 -0
  638. package/dist/node-sqlite-compat-Ddr_mlR9.mjs +63 -0
  639. package/dist/node-sqlite-compat-Ddr_mlR9.mjs.map +1 -0
  640. package/dist/normalize-Ip_hFAm8.mjs +216 -0
  641. package/dist/normalize-Ip_hFAm8.mjs.map +1 -0
  642. package/dist/oauth-authorization-CcMgeT8R.mjs +274 -0
  643. package/dist/oauth-authorization-CcMgeT8R.mjs.map +1 -0
  644. package/dist/oauth-clients-C_osi0PU.mjs +266 -0
  645. package/dist/oauth-clients-C_osi0PU.mjs.map +1 -0
  646. package/dist/oauth-state-store-DGLP-6CK.mjs +50 -0
  647. package/dist/oauth-state-store-DGLP-6CK.mjs.map +1 -0
  648. package/dist/oauth-user-lookup-z77Ee0Hm.mjs +26 -0
  649. package/dist/oauth-user-lookup-z77Ee0Hm.mjs.map +1 -0
  650. package/dist/object-cache/memory.d.mts +1 -1
  651. package/dist/object-cache-EjasjtoQ.mjs +586 -0
  652. package/dist/object-cache-EjasjtoQ.mjs.map +1 -0
  653. package/dist/options-CmUpkyKW.d.mts +81 -0
  654. package/dist/options-CmUpkyKW.d.mts.map +1 -0
  655. package/dist/ownership-DCk5NutQ.mjs +12 -0
  656. package/dist/ownership-DCk5NutQ.mjs.map +1 -0
  657. package/dist/page/index.d.mts +2 -2
  658. package/dist/page/index.mjs +14 -12
  659. package/dist/page/index.mjs.map +1 -1
  660. package/dist/parse-2W-E2f7w.mjs +81 -0
  661. package/dist/parse-2W-E2f7w.mjs.map +1 -0
  662. package/dist/parse-6pN8Xqg5.d.mts +176 -0
  663. package/dist/parse-6pN8Xqg5.d.mts.map +1 -0
  664. package/dist/passkey-config-DTTZB6EI.mjs +46 -0
  665. package/dist/passkey-config-DTTZB6EI.mjs.map +1 -0
  666. package/dist/paths-CQA62503.mjs +77 -0
  667. package/dist/paths-CQA62503.mjs.map +1 -0
  668. package/dist/patterns-CryGz_EV.mjs +159 -0
  669. package/dist/patterns-CryGz_EV.mjs.map +1 -0
  670. package/dist/placeholder-BlfXkucE.d.mts +313 -0
  671. package/dist/placeholder-BlfXkucE.d.mts.map +1 -0
  672. package/dist/plan-B95eiwnF.mjs +135 -0
  673. package/dist/plan-B95eiwnF.mjs.map +1 -0
  674. package/dist/plugin-test-runtime.d.mts +14 -14
  675. package/dist/plugin-test-runtime.d.mts.map +1 -1
  676. package/dist/plugin-test-runtime.mjs +121 -119
  677. package/dist/plugin-tool-name-BDA7m4Xa.mjs +27 -0
  678. package/dist/plugin-tool-name-BDA7m4Xa.mjs.map +1 -0
  679. package/dist/plugin-types.d.mts +2 -2
  680. package/dist/plugin-utils.d.mts +12 -12
  681. package/dist/plugins/adapt-sandbox-entry.d.mts +12 -12
  682. package/dist/plugins/adapt-sandbox-entry.mjs +4 -4
  683. package/dist/plugins/host.d.mts +5 -5
  684. package/dist/plugins/host.mjs +57 -55
  685. package/dist/plugins-BhxLJ008.mjs +261 -0
  686. package/dist/plugins-BhxLJ008.mjs.map +1 -0
  687. package/dist/policy-DOJ2sPqB.mjs +53 -0
  688. package/dist/policy-DOJ2sPqB.mjs.map +1 -0
  689. package/dist/portable-text-RCMpCj47.mjs +311 -0
  690. package/dist/portable-text-RCMpCj47.mjs.map +1 -0
  691. package/dist/preview-DFwL5APO.mjs +107 -0
  692. package/dist/preview-DFwL5APO.mjs.map +1 -0
  693. package/dist/protocol-B-ztxp_y.d.mts +65 -0
  694. package/dist/protocol-B-ztxp_y.d.mts.map +1 -0
  695. package/dist/public-plugin-api-routes-ik4fPZMv.mjs +316 -0
  696. package/dist/public-plugin-api-routes-ik4fPZMv.mjs.map +1 -0
  697. package/dist/public-submission-C5JZIykp.mjs +251 -0
  698. package/dist/public-submission-C5JZIykp.mjs.map +1 -0
  699. package/dist/public-url-CQwzRljH.mjs +101 -0
  700. package/dist/public-url-CQwzRljH.mjs.map +1 -0
  701. package/dist/query-BFHjCzSh.mjs +37 -0
  702. package/dist/query-BFHjCzSh.mjs.map +1 -0
  703. package/dist/query-DuwyFr5Z.mjs +41 -0
  704. package/dist/query-DuwyFr5Z.mjs.map +1 -0
  705. package/dist/query-eR_Nz70M.mjs +1157 -0
  706. package/dist/query-eR_Nz70M.mjs.map +1 -0
  707. package/dist/range-BQWPjWgQ.mjs +51 -0
  708. package/dist/range-BQWPjWgQ.mjs.map +1 -0
  709. package/dist/rate-limit-mPKeQ3sm.mjs +127 -0
  710. package/dist/rate-limit-mPKeQ3sm.mjs.map +1 -0
  711. package/dist/receipt-CmUpyuW5.mjs +43 -0
  712. package/dist/receipt-CmUpyuW5.mjs.map +1 -0
  713. package/dist/redirect-BtiMkehU.mjs +19 -0
  714. package/dist/redirect-BtiMkehU.mjs.map +1 -0
  715. package/dist/redirect-DcmNMvOs.mjs +423 -0
  716. package/dist/redirect-DcmNMvOs.mjs.map +1 -0
  717. package/dist/redirect-paths-K5i3xYfR.mjs +36 -0
  718. package/dist/redirect-paths-K5i3xYfR.mjs.map +1 -0
  719. package/dist/redirects-BA_TvtuH.mjs +148 -0
  720. package/dist/redirects-BA_TvtuH.mjs.map +1 -0
  721. package/dist/redirects-BIrRvgn4.mjs +446 -0
  722. package/dist/redirects-BIrRvgn4.mjs.map +1 -0
  723. package/dist/registry/testing.mjs +3 -3
  724. package/dist/registry-DymfZkAN.mjs +8374 -0
  725. package/dist/registry-DymfZkAN.mjs.map +1 -0
  726. package/dist/relations-DrEs3Sc1.mjs +789 -0
  727. package/dist/relations-DrEs3Sc1.mjs.map +1 -0
  728. package/dist/request-cache-5z2WzWmh.mjs +104 -0
  729. package/dist/request-cache-5z2WzWmh.mjs.map +1 -0
  730. package/dist/request-context.d.mts +12 -1
  731. package/dist/request-context.d.mts.map +1 -1
  732. package/dist/request-context.mjs.map +1 -1
  733. package/dist/request-meta-o8RIf9pa.mjs +141 -0
  734. package/dist/request-meta-o8RIf9pa.mjs.map +1 -0
  735. package/dist/resolve-CVy9xgy_.mjs +102 -0
  736. package/dist/resolve-CVy9xgy_.mjs.map +1 -0
  737. package/dist/resolve-DdNXBJSr.mjs +199 -0
  738. package/dist/resolve-DdNXBJSr.mjs.map +1 -0
  739. package/dist/revision-Dx7Uth1X.mjs +374 -0
  740. package/dist/revision-Dx7Uth1X.mjs.map +1 -0
  741. package/dist/route-cache-DAG5dPhh.mjs +20 -0
  742. package/dist/route-cache-DAG5dPhh.mjs.map +1 -0
  743. package/dist/route-wire-Xbsu8Vih.mjs +197 -0
  744. package/dist/route-wire-Xbsu8Vih.mjs.map +1 -0
  745. package/dist/routes-YQkSOsws.mjs +272 -0
  746. package/dist/routes-YQkSOsws.mjs.map +1 -0
  747. package/dist/runner-CLorw5vo.mjs +6669 -0
  748. package/dist/runner-CLorw5vo.mjs.map +1 -0
  749. package/dist/runner-g1A9P-wD.d.mts +73 -0
  750. package/dist/runner-g1A9P-wD.d.mts.map +1 -0
  751. package/dist/runtime.d.mts +13 -13
  752. package/dist/runtime.mjs +6 -5
  753. package/dist/runtime.mjs.map +1 -1
  754. package/dist/schema/project-env-types.mjs +49 -47
  755. package/dist/schema/project-env-types.mjs.map +1 -1
  756. package/dist/schema-Bss8qImF.mjs +13 -0
  757. package/dist/schema-Bss8qImF.mjs.map +1 -0
  758. package/dist/schema-C036pqEw.mjs +815 -0
  759. package/dist/schema-C036pqEw.mjs.map +1 -0
  760. package/dist/scopes-C_SoYl9x.mjs +34 -0
  761. package/dist/scopes-C_SoYl9x.mjs.map +1 -0
  762. package/dist/search-uNqCgePJ.mjs +450 -0
  763. package/dist/search-uNqCgePJ.mjs.map +1 -0
  764. package/dist/sections-BLusMa96.mjs +346 -0
  765. package/dist/sections-BLusMa96.mjs.map +1 -0
  766. package/dist/seed/index.d.mts +2 -2
  767. package/dist/seed/index.mjs +47 -45
  768. package/dist/seo/index.d.mts +3 -3
  769. package/dist/seo/index.mjs +32 -30
  770. package/dist/seo/index.mjs.map +1 -1
  771. package/dist/seo-BodxIpws.mjs +188 -0
  772. package/dist/seo-BodxIpws.mjs.map +1 -0
  773. package/dist/seo-DaMYIQY8.mjs +133 -0
  774. package/dist/seo-DaMYIQY8.mjs.map +1 -0
  775. package/dist/service-BuM1BRsA.mjs +150 -0
  776. package/dist/service-BuM1BRsA.mjs.map +1 -0
  777. package/dist/session-user-2DpQDMKw.mjs +61 -0
  778. package/dist/session-user-2DpQDMKw.mjs.map +1 -0
  779. package/dist/settings-B3ZmPF_8.mjs +73 -0
  780. package/dist/settings-B3ZmPF_8.mjs.map +1 -0
  781. package/dist/settings-P5hwPX6_.mjs +66 -0
  782. package/dist/settings-P5hwPX6_.mjs.map +1 -0
  783. package/dist/settings-yIqoN-Ok.mjs +519 -0
  784. package/dist/settings-yIqoN-Ok.mjs.map +1 -0
  785. package/dist/setup-complete-eu6MUQnt.mjs +65 -0
  786. package/dist/setup-complete-eu6MUQnt.mjs.map +1 -0
  787. package/dist/setup-nonce-CyPOapqY.mjs +25 -0
  788. package/dist/setup-nonce-CyPOapqY.mjs.map +1 -0
  789. package/dist/site-domain-8lEJl_0U.mjs +131 -0
  790. package/dist/site-domain-8lEJl_0U.mjs.map +1 -0
  791. package/dist/site-settings-uPkW0e6o.mjs +50 -0
  792. package/dist/site-settings-uPkW0e6o.mjs.map +1 -0
  793. package/dist/site-url-25SGVXwL.mjs +45 -0
  794. package/dist/site-url-25SGVXwL.mjs.map +1 -0
  795. package/dist/sitemap-name-DTK7CYnY.mjs +26 -0
  796. package/dist/sitemap-name-DTK7CYnY.mjs.map +1 -0
  797. package/dist/slug-BEDl2IJY.mjs +16 -0
  798. package/dist/slug-BEDl2IJY.mjs.map +1 -0
  799. package/dist/slugify-BDEG9pLk.mjs +22 -0
  800. package/dist/slugify-BDEG9pLk.mjs.map +1 -0
  801. package/dist/snapshot-CvkIBRLY.mjs +414 -0
  802. package/dist/snapshot-CvkIBRLY.mjs.map +1 -0
  803. package/dist/ssrf-mcCKMH6B.mjs +406 -0
  804. package/dist/ssrf-mcCKMH6B.mjs.map +1 -0
  805. package/dist/stage-BQfGzGOy.mjs +662 -0
  806. package/dist/stage-BQfGzGOy.mjs.map +1 -0
  807. package/dist/staged-B5vQGeSf.mjs +686 -0
  808. package/dist/staged-B5vQGeSf.mjs.map +1 -0
  809. package/dist/state-dO6t6OxV.mjs +178 -0
  810. package/dist/state-dO6t6OxV.mjs.map +1 -0
  811. package/dist/status-DSURZwKS.mjs +30 -0
  812. package/dist/status-DSURZwKS.mjs.map +1 -0
  813. package/dist/storage/local.d.mts +1 -1
  814. package/dist/storage/local.mjs +2 -2
  815. package/dist/storage/s3.d.mts +1 -1
  816. package/dist/storage/s3.mjs +1 -1
  817. package/dist/storage-query-Cy0SZ8iG.d.mts +1619 -0
  818. package/dist/storage-query-Cy0SZ8iG.d.mts.map +1 -0
  819. package/dist/tar-DWzcUZ_Q.mjs +449 -0
  820. package/dist/tar-DWzcUZ_Q.mjs.map +1 -0
  821. package/dist/target-C9htUbrT.mjs +27 -0
  822. package/dist/target-C9htUbrT.mjs.map +1 -0
  823. package/dist/taxonomies-By2aGvq2.mjs +729 -0
  824. package/dist/taxonomies-By2aGvq2.mjs.map +1 -0
  825. package/dist/taxonomies-CVRd_jz0.mjs +937 -0
  826. package/dist/taxonomies-CVRd_jz0.mjs.map +1 -0
  827. package/dist/taxonomy-BG_xu2Qf.mjs +563 -0
  828. package/dist/taxonomy-BG_xu2Qf.mjs.map +1 -0
  829. package/dist/tokens-U5vzgSrM.mjs +171 -0
  830. package/dist/tokens-U5vzgSrM.mjs.map +1 -0
  831. package/dist/transaction-CkoQ5wqQ.mjs +29 -0
  832. package/dist/transaction-CkoQ5wqQ.mjs.map +1 -0
  833. package/dist/transfer-DA0OSfaT.mjs +8873 -0
  834. package/dist/transfer-DA0OSfaT.mjs.map +1 -0
  835. package/dist/transfer-Pyf3d7ka.mjs +166 -0
  836. package/dist/transfer-Pyf3d7ka.mjs.map +1 -0
  837. package/dist/transfer-download-cX7SuWEy.mjs +33 -0
  838. package/dist/transfer-download-cX7SuWEy.mjs.map +1 -0
  839. package/dist/transformations-DczubD4j.mjs +196 -0
  840. package/dist/transformations-DczubD4j.mjs.map +1 -0
  841. package/dist/transport-Dm5QzpT_.d.mts +42 -0
  842. package/dist/transport-Dm5QzpT_.d.mts.map +1 -0
  843. package/dist/transport-DtIrjEFO.mjs +137 -0
  844. package/dist/transport-DtIrjEFO.mjs.map +1 -0
  845. package/dist/trusted-proxy-CDRd5Kmw.mjs +51 -0
  846. package/dist/trusted-proxy-CDRd5Kmw.mjs.map +1 -0
  847. package/dist/turnstile-Ct5YuFNY.mjs +58 -0
  848. package/dist/turnstile-Ct5YuFNY.mjs.map +1 -0
  849. package/dist/types-Bgujop4S.d.mts +374 -0
  850. package/dist/types-Bgujop4S.d.mts.map +1 -0
  851. package/dist/types-BirHUEXt.mjs +18 -0
  852. package/dist/types-BirHUEXt.mjs.map +1 -0
  853. package/dist/types-BqJgTL_y.d.mts +293 -0
  854. package/dist/types-BqJgTL_y.d.mts.map +1 -0
  855. package/dist/types-C-lrOt9T.d.mts +87 -0
  856. package/dist/types-C-lrOt9T.d.mts.map +1 -0
  857. package/dist/types-CCEHAhOv.d.mts +916 -0
  858. package/dist/types-CCEHAhOv.d.mts.map +1 -0
  859. package/dist/types-CLVwYRBr.d.mts +227 -0
  860. package/dist/types-CLVwYRBr.d.mts.map +1 -0
  861. package/dist/types-C_asjp1J.mjs +201 -0
  862. package/dist/types-C_asjp1J.mjs.map +1 -0
  863. package/dist/types-CadaL_k8.d.mts +366 -0
  864. package/dist/types-CadaL_k8.d.mts.map +1 -0
  865. package/dist/types-DVbTb4Hk.mjs +77 -0
  866. package/dist/types-DVbTb4Hk.mjs.map +1 -0
  867. package/dist/types-Ddku19Zw.d.mts +209 -0
  868. package/dist/types-Ddku19Zw.d.mts.map +1 -0
  869. package/dist/types-DwhEvIVb.mjs +133 -0
  870. package/dist/types-DwhEvIVb.mjs.map +1 -0
  871. package/dist/types-FIiGQ3PE.mjs +16 -0
  872. package/dist/types-FIiGQ3PE.mjs.map +1 -0
  873. package/dist/types-OauzCOY0.mjs +37 -0
  874. package/dist/types-OauzCOY0.mjs.map +1 -0
  875. package/dist/types-mQGTpP-4.d.mts +1741 -0
  876. package/dist/types-mQGTpP-4.d.mts.map +1 -0
  877. package/dist/types-nbjz3Mgm.d.mts +125 -0
  878. package/dist/types-nbjz3Mgm.d.mts.map +1 -0
  879. package/dist/update-check-hW32-0pf.mjs +161 -0
  880. package/dist/update-check-hW32-0pf.mjs.map +1 -0
  881. package/dist/upload-attempts-Bpik1TLF.mjs +32 -0
  882. package/dist/upload-attempts-Bpik1TLF.mjs.map +1 -0
  883. package/dist/url-DTfGDJhI.mjs +104 -0
  884. package/dist/url-DTfGDJhI.mjs.map +1 -0
  885. package/dist/url-pattern-CJeCyNij.mjs +41 -0
  886. package/dist/url-pattern-CJeCyNij.mjs.map +1 -0
  887. package/dist/user-nQInBZbE.mjs +171 -0
  888. package/dist/user-nQInBZbE.mjs.map +1 -0
  889. package/dist/utils-govudc_U.mjs +442 -0
  890. package/dist/utils-govudc_U.mjs.map +1 -0
  891. package/dist/validate-BxLvcDYh.mjs +524 -0
  892. package/dist/validate-BxLvcDYh.mjs.map +1 -0
  893. package/dist/validate-mnoVfASU.d.mts +468 -0
  894. package/dist/validate-mnoVfASU.d.mts.map +1 -0
  895. package/dist/validation-DQDEvh87.mjs +221 -0
  896. package/dist/validation-DQDEvh87.mjs.map +1 -0
  897. package/dist/version-BOFfLiVT.mjs +49 -0
  898. package/dist/version-BOFfLiVT.mjs.map +1 -0
  899. package/dist/version-Dcvx_C9g.mjs +7 -0
  900. package/dist/version-Dcvx_C9g.mjs.map +1 -0
  901. package/dist/version-DzTJ3gD7.mjs +9 -0
  902. package/dist/version-DzTJ3gD7.mjs.map +1 -0
  903. package/dist/video-BX7AI5nJ.mjs +54 -0
  904. package/dist/video-BX7AI5nJ.mjs.map +1 -0
  905. package/dist/virtual-modules-CU29aip9.mjs +515 -0
  906. package/dist/virtual-modules-CU29aip9.mjs.map +1 -0
  907. package/dist/widgets-HIeFmZxt.mjs +121 -0
  908. package/dist/widgets-HIeFmZxt.mjs.map +1 -0
  909. package/dist/wxr-taxonomies-Dy2i2ON3.d.mts +34 -0
  910. package/dist/wxr-taxonomies-Dy2i2ON3.d.mts.map +1 -0
  911. package/dist/wxr-taxonomies-DyOGhl8W.mjs +454 -0
  912. package/dist/wxr-taxonomies-DyOGhl8W.mjs.map +1 -0
  913. package/dist/zod-generator-VxCPVDpo.mjs +425 -0
  914. package/dist/zod-generator-VxCPVDpo.mjs.map +1 -0
  915. package/package.json +5 -5
  916. package/src/api/handlers/bulk-tag.ts +11 -3
  917. package/src/api/handlers/bylines.ts +6 -2
  918. package/src/api/handlers/content.ts +107 -7
  919. package/src/api/handlers/dashboard.ts +13 -6
  920. package/src/api/handlers/menus.ts +24 -10
  921. package/src/api/handlers/relations.ts +15 -1
  922. package/src/api/handlers/taxonomies.ts +27 -17
  923. package/src/astro/image-endpoint.ts +23 -2
  924. package/src/astro/integration/vite-config.ts +16 -8
  925. package/src/astro/middleware/redirect.ts +158 -63
  926. package/src/astro/middleware/request-context.ts +1 -0
  927. package/src/astro/middleware.ts +17 -4
  928. package/src/astro/routes/api/content/[collection]/[id]/terms/[taxonomy].ts +4 -1
  929. package/src/astro/routes/api/content/[collection]/[id]/translations.ts +14 -1
  930. package/src/astro/routes/api/dashboard.ts +2 -0
  931. package/src/astro/routes/api/media/file/[...key].ts +13 -3
  932. package/src/auth/types.ts +6 -0
  933. package/src/cli/commands/export-seed.ts +6 -4
  934. package/src/cli/commands/login.ts +2 -4
  935. package/src/client/index.ts +1 -0
  936. package/src/client/transport.ts +11 -7
  937. package/src/components/EmDashImage.astro +14 -2
  938. package/src/components/InlinePortableTextEditor.tsx +4 -1
  939. package/src/database/migrations/content-sized.ts +82 -0
  940. package/src/database/migrations/policy.ts +28 -2
  941. package/src/database/migrations/runner.ts +48 -0
  942. package/src/database/repositories/byline.ts +73 -17
  943. package/src/database/repositories/comment.ts +17 -7
  944. package/src/database/repositories/content.ts +79 -19
  945. package/src/database/repositories/menu.ts +77 -11
  946. package/src/database/repositories/taxonomy-def.ts +9 -2
  947. package/src/database/repositories/taxonomy.ts +47 -14
  948. package/src/database/repositories/types.ts +11 -0
  949. package/src/emdash-runtime.ts +37 -10
  950. package/src/fields/image.ts +1 -0
  951. package/src/i18n/config.ts +58 -10
  952. package/src/i18n/normalize.ts +16 -2
  953. package/src/i18n/query.ts +47 -0
  954. package/src/i18n/resolve.ts +8 -3
  955. package/src/import/wxr-taxonomies.ts +3 -2
  956. package/src/loader.ts +80 -22
  957. package/src/mcp/server.ts +28 -1
  958. package/src/media/caption.ts +30 -0
  959. package/src/media/image-endpoint.ts +13 -6
  960. package/src/media/local-runtime.ts +3 -0
  961. package/src/media/normalize.ts +15 -8
  962. package/src/media/responsive.ts +12 -2
  963. package/src/media/types.ts +16 -3
  964. package/src/menus/index.ts +21 -11
  965. package/src/migrations/manifest.ts +1 -0
  966. package/src/plugins/byline-access.ts +3 -1
  967. package/src/plugins/context.ts +1 -2
  968. package/src/plugins/storage-indexes.ts +7 -3
  969. package/src/query.ts +23 -13
  970. package/src/redirects/artifacts.ts +39 -5
  971. package/src/references/field-map.ts +6 -4
  972. package/src/request-context.ts +8 -0
  973. package/src/schema/collection-slugs-cache.ts +31 -17
  974. package/src/schema/registry.ts +9 -0
  975. package/src/schema/zod-generator.ts +2 -1
  976. package/src/search/fts-manager.ts +98 -28
  977. package/src/search/query.ts +31 -64
  978. package/src/seed/apply.ts +191 -87
  979. package/src/seed/types.ts +3 -1
  980. package/src/settings/index.ts +135 -35
  981. package/src/settings/version.ts +54 -0
  982. package/src/taxonomies/index.ts +95 -52
  983. package/src/taxonomies/term-counts.ts +2 -1
  984. package/src/utils/db-errors.ts +15 -0
  985. package/src/virtual-modules.d.ts +1 -0
  986. package/dist/action-token-SK8zyN7w.mjs +0 -26
  987. package/dist/action-token-SK8zyN7w.mjs.map +0 -1
  988. package/dist/activation-Dim4YMM7.mjs +0 -387
  989. package/dist/activation-Dim4YMM7.mjs.map +0 -1
  990. package/dist/adapters-F_xorvWv.d.mts +0 -173
  991. package/dist/adapters-F_xorvWv.d.mts.map +0 -1
  992. package/dist/allowed-origins-CEug-p0t.mjs +0 -116
  993. package/dist/allowed-origins-CEug-p0t.mjs.map +0 -1
  994. package/dist/api-D-7BNHoz.mjs +0 -5025
  995. package/dist/api-D-7BNHoz.mjs.map +0 -1
  996. package/dist/api-tokens-Bx38ZCQp.mjs +0 -173
  997. package/dist/api-tokens-Bx38ZCQp.mjs.map +0 -1
  998. package/dist/apply-T7ATgzCh.mjs +0 -1702
  999. package/dist/apply-T7ATgzCh.mjs.map +0 -1
  1000. package/dist/approvals-D-m6wvGl.mjs +0 -460
  1001. package/dist/approvals-D-m6wvGl.mjs.map +0 -1
  1002. package/dist/artifact-fetch-DIh7iyOV.mjs +0 -659
  1003. package/dist/artifact-fetch-DIh7iyOV.mjs.map +0 -1
  1004. package/dist/artifacts-htGyfCSt.mjs +0 -307
  1005. package/dist/artifacts-htGyfCSt.mjs.map +0 -1
  1006. package/dist/audit-_gieLVGU.mjs +0 -127
  1007. package/dist/audit-_gieLVGU.mjs.map +0 -1
  1008. package/dist/authoritative-records-CQlB3JzE.mjs +0 -5183
  1009. package/dist/authoritative-records-CQlB3JzE.mjs.map +0 -1
  1010. package/dist/authorize-DPFBGbE6.mjs +0 -74
  1011. package/dist/authorize-DPFBGbE6.mjs.map +0 -1
  1012. package/dist/backup-3FgVxiDJ.mjs +0 -246
  1013. package/dist/backup-3FgVxiDJ.mjs.map +0 -1
  1014. package/dist/block-types-CYcG56JB.mjs +0 -132
  1015. package/dist/block-types-CYcG56JB.mjs.map +0 -1
  1016. package/dist/block-values-gCX4HBSl.mjs +0 -215
  1017. package/dist/block-values-gCX4HBSl.mjs.map +0 -1
  1018. package/dist/byline-BR1qhyiw.mjs +0 -909
  1019. package/dist/byline-BR1qhyiw.mjs.map +0 -1
  1020. package/dist/byline-fields-4ClDC88c.mjs +0 -123
  1021. package/dist/byline-fields-4ClDC88c.mjs.map +0 -1
  1022. package/dist/byline-fields-BLXZnX7N.mjs +0 -280
  1023. package/dist/byline-fields-BLXZnX7N.mjs.map +0 -1
  1024. package/dist/byline-registry-dvt4N3xV.mjs +0 -406
  1025. package/dist/byline-registry-dvt4N3xV.mjs.map +0 -1
  1026. package/dist/bylines-CVOvRUL7.mjs +0 -234
  1027. package/dist/bylines-CVOvRUL7.mjs.map +0 -1
  1028. package/dist/bylines-DxOs9B7z.mjs +0 -150
  1029. package/dist/bylines-DxOs9B7z.mjs.map +0 -1
  1030. package/dist/cache-CEU9wo_h.mjs +0 -151
  1031. package/dist/cache-CEU9wo_h.mjs.map +0 -1
  1032. package/dist/canonical-BudtH-Fx.mjs +0 -174
  1033. package/dist/canonical-BudtH-Fx.mjs.map +0 -1
  1034. package/dist/capture-triggers-CT6dK9zd.mjs +0 -362
  1035. package/dist/capture-triggers-CT6dK9zd.mjs.map +0 -1
  1036. package/dist/challenge-store-C17BYx2-.mjs +0 -51
  1037. package/dist/challenge-store-C17BYx2-.mjs.map +0 -1
  1038. package/dist/checksum-CEqvfxGX.mjs +0 -162
  1039. package/dist/checksum-CEqvfxGX.mjs.map +0 -1
  1040. package/dist/chrome-tags-BIKBMZYO.mjs +0 -24
  1041. package/dist/chrome-tags-BIKBMZYO.mjs.map +0 -1
  1042. package/dist/chunks-xC4UD5-S.mjs +0 -25
  1043. package/dist/chunks-xC4UD5-S.mjs.map +0 -1
  1044. package/dist/collection-slugs-cache-e09QeJQt.mjs +0 -85
  1045. package/dist/collection-slugs-cache-e09QeJQt.mjs.map +0 -1
  1046. package/dist/comment-UvIWDKcW.mjs +0 -325
  1047. package/dist/comment-UvIWDKcW.mjs.map +0 -1
  1048. package/dist/comment-reaction-dGp6_FRo.mjs +0 -85
  1049. package/dist/comment-reaction-dGp6_FRo.mjs.map +0 -1
  1050. package/dist/comments-pej-_BUO.mjs +0 -195
  1051. package/dist/comments-pej-_BUO.mjs.map +0 -1
  1052. package/dist/comments-yiRFx3w5.mjs +0 -99
  1053. package/dist/comments-yiRFx3w5.mjs.map +0 -1
  1054. package/dist/components-Brp__9xo.mjs +0 -112
  1055. package/dist/components-Brp__9xo.mjs.map +0 -1
  1056. package/dist/config-Bsm_u_oE.d.mts +0 -6799
  1057. package/dist/config-Bsm_u_oE.d.mts.map +0 -1
  1058. package/dist/config-CFMojMFK.d.mts +0 -39
  1059. package/dist/config-CFMojMFK.d.mts.map +0 -1
  1060. package/dist/config-CvmjJcVw.mjs +0 -73
  1061. package/dist/config-CvmjJcVw.mjs.map +0 -1
  1062. package/dist/config-DBU6iUQB.mjs +0 -228
  1063. package/dist/config-DBU6iUQB.mjs.map +0 -1
  1064. package/dist/connection-BtEN_lP9.mjs +0 -36
  1065. package/dist/connection-BtEN_lP9.mjs.map +0 -1
  1066. package/dist/content-DQSRZTVw.mjs +0 -2075
  1067. package/dist/content-DQSRZTVw.mjs.map +0 -1
  1068. package/dist/content-list-query-CYKcY6Vi.d.mts +0 -26
  1069. package/dist/content-list-query-CYKcY6Vi.d.mts.map +0 -1
  1070. package/dist/content-policy-Dm32n9C6.mjs +0 -46
  1071. package/dist/content-policy-Dm32n9C6.mjs.map +0 -1
  1072. package/dist/content-repair-DNh5--x5.mjs +0 -442
  1073. package/dist/content-repair-DNh5--x5.mjs.map +0 -1
  1074. package/dist/context-BYptmCN0.mjs +0 -2090
  1075. package/dist/context-BYptmCN0.mjs.map +0 -1
  1076. package/dist/credits-B9iORdWB.mjs +0 -110
  1077. package/dist/credits-B9iORdWB.mjs.map +0 -1
  1078. package/dist/cron-D7obTIfk.mjs +0 -306
  1079. package/dist/cron-D7obTIfk.mjs.map +0 -1
  1080. package/dist/dashboard-D0jcgBD7.mjs +0 -167
  1081. package/dist/dashboard-D0jcgBD7.mjs.map +0 -1
  1082. package/dist/db-errors-CBD5yMro.mjs +0 -55
  1083. package/dist/db-errors-CBD5yMro.mjs.map +0 -1
  1084. package/dist/default-C0W-PhAp.mjs +0 -81
  1085. package/dist/default-C0W-PhAp.mjs.map +0 -1
  1086. package/dist/deferred-tasks-ZvUECSzI.d.mts +0 -9
  1087. package/dist/deferred-tasks-ZvUECSzI.d.mts.map +0 -1
  1088. package/dist/destination-r2zIAZ2S.mjs +0 -18
  1089. package/dist/destination-r2zIAZ2S.mjs.map +0 -1
  1090. package/dist/dev-typegen-EBni_pOQ.mjs +0 -29
  1091. package/dist/dev-typegen-EBni_pOQ.mjs.map +0 -1
  1092. package/dist/device-flow-BkFKBoAn.mjs +0 -521
  1093. package/dist/device-flow-BkFKBoAn.mjs.map +0 -1
  1094. package/dist/digest-DJ1tHCgy.mjs +0 -194
  1095. package/dist/digest-DJ1tHCgy.mjs.map +0 -1
  1096. package/dist/direct-executor-Cbxzg4qe.mjs +0 -117
  1097. package/dist/direct-executor-Cbxzg4qe.mjs.map +0 -1
  1098. package/dist/dist-Cfu8mMBs.mjs +0 -810
  1099. package/dist/dist-Cfu8mMBs.mjs.map +0 -1
  1100. package/dist/email-console-FFVJWb9N.mjs +0 -50
  1101. package/dist/email-console-FFVJWb9N.mjs.map +0 -1
  1102. package/dist/email-locale-BJ8DjTzZ.mjs +0 -25
  1103. package/dist/email-locale-BJ8DjTzZ.mjs.map +0 -1
  1104. package/dist/emdash-runtime-DVi7vtXC.mjs +0 -4379
  1105. package/dist/emdash-runtime-DVi7vtXC.mjs.map +0 -1
  1106. package/dist/enrich-Duu4sV3a.mjs +0 -194
  1107. package/dist/enrich-Duu4sV3a.mjs.map +0 -1
  1108. package/dist/entry-lock-C7VX0NGK.d.mts +0 -4568
  1109. package/dist/entry-lock-C7VX0NGK.d.mts.map +0 -1
  1110. package/dist/entry-lock-DLxCffFW.mjs +0 -163
  1111. package/dist/entry-lock-DLxCffFW.mjs.map +0 -1
  1112. package/dist/entry-lock-Df6-XhIu.mjs +0 -1211
  1113. package/dist/entry-lock-Df6-XhIu.mjs.map +0 -1
  1114. package/dist/entry-locks-DJAqVweV.mjs +0 -167
  1115. package/dist/entry-locks-DJAqVweV.mjs.map +0 -1
  1116. package/dist/env-types-C3FCVBWe.mjs +0 -38
  1117. package/dist/env-types-C3FCVBWe.mjs.map +0 -1
  1118. package/dist/error-CVWeIOku.mjs +0 -90
  1119. package/dist/error-CVWeIOku.mjs.map +0 -1
  1120. package/dist/errors-B4f4It-2.mjs +0 -120
  1121. package/dist/errors-B4f4It-2.mjs.map +0 -1
  1122. package/dist/errors-BOYNdIo3.mjs +0 -479
  1123. package/dist/errors-BOYNdIo3.mjs.map +0 -1
  1124. package/dist/escape-lsNq38PP.mjs +0 -9
  1125. package/dist/escape-lsNq38PP.mjs.map +0 -1
  1126. package/dist/fence-C3MUitUN.mjs +0 -162
  1127. package/dist/fence-C3MUitUN.mjs.map +0 -1
  1128. package/dist/field-defs-cache-Dez5iWJJ.mjs +0 -77
  1129. package/dist/field-defs-cache-Dez5iWJJ.mjs.map +0 -1
  1130. package/dist/field-map-Bft9LKak.mjs +0 -83
  1131. package/dist/field-map-Bft9LKak.mjs.map +0 -1
  1132. package/dist/focal-point-JX8kcOTQ.mjs +0 -23
  1133. package/dist/focal-point-JX8kcOTQ.mjs.map +0 -1
  1134. package/dist/fts-manager-Beg3e4bI.mjs +0 -443
  1135. package/dist/fts-manager-Beg3e4bI.mjs.map +0 -1
  1136. package/dist/gc-ByyAYiYE.mjs +0 -75
  1137. package/dist/gc-ByyAYiYE.mjs.map +0 -1
  1138. package/dist/hash-BJaeek87.mjs +0 -37
  1139. package/dist/hash-BJaeek87.mjs.map +0 -1
  1140. package/dist/hook-result-BrdLyOdI.d.mts +0 -31
  1141. package/dist/hook-result-BrdLyOdI.d.mts.map +0 -1
  1142. package/dist/hreflang-C8Jb-hrf.mjs +0 -105
  1143. package/dist/hreflang-C8Jb-hrf.mjs.map +0 -1
  1144. package/dist/hreflang-CY_F5OjF.d.mts +0 -50
  1145. package/dist/hreflang-CY_F5OjF.d.mts.map +0 -1
  1146. package/dist/http-route-dispatch-CyeW6iPv.mjs +0 -342
  1147. package/dist/http-route-dispatch-CyeW6iPv.mjs.map +0 -1
  1148. package/dist/identity-Cael5uTT.mjs +0 -35
  1149. package/dist/identity-Cael5uTT.mjs.map +0 -1
  1150. package/dist/import-BUXjdZUn.mjs +0 -2126
  1151. package/dist/import-BUXjdZUn.mjs.map +0 -1
  1152. package/dist/index-BB9sVisO.d.mts +0 -623
  1153. package/dist/index-BB9sVisO.d.mts.map +0 -1
  1154. package/dist/install-finalization-3JX5qQEA.mjs +0 -58
  1155. package/dist/install-finalization-3JX5qQEA.mjs.map +0 -1
  1156. package/dist/json-recordset-BUjxhr77.mjs +0 -12
  1157. package/dist/json-recordset-BUjxhr77.mjs.map +0 -1
  1158. package/dist/json-schema-v_D_pPNG.mjs +0 -15
  1159. package/dist/json-schema-v_D_pPNG.mjs.map +0 -1
  1160. package/dist/keys-CifIkT0N.mjs +0 -61
  1161. package/dist/keys-CifIkT0N.mjs.map +0 -1
  1162. package/dist/kinds-B_Qcl5pz.mjs +0 -974
  1163. package/dist/kinds-B_Qcl5pz.mjs.map +0 -1
  1164. package/dist/lifecycle-7vUJeFRe.mjs +0 -25
  1165. package/dist/lifecycle-7vUJeFRe.mjs.map +0 -1
  1166. package/dist/load-CdAG9wz-.mjs +0 -28
  1167. package/dist/load-CdAG9wz-.mjs.map +0 -1
  1168. package/dist/loader-CswroUbe.mjs +0 -1380
  1169. package/dist/loader-CswroUbe.mjs.map +0 -1
  1170. package/dist/loops-uA4iTOzd.mjs +0 -205
  1171. package/dist/loops-uA4iTOzd.mjs.map +0 -1
  1172. package/dist/manifest-builder-B8zjuH3f.mjs +0 -189
  1173. package/dist/manifest-builder-B8zjuH3f.mjs.map +0 -1
  1174. package/dist/manifest-schema-DNb4XmTS.mjs +0 -497
  1175. package/dist/manifest-schema-DNb4XmTS.mjs.map +0 -1
  1176. package/dist/marketplace-CqbgeIa7.mjs +0 -257
  1177. package/dist/marketplace-CqbgeIa7.mjs.map +0 -1
  1178. package/dist/media--dJRU6i2.mjs +0 -294
  1179. package/dist/media--dJRU6i2.mjs.map +0 -1
  1180. package/dist/media-1WC65OCB.mjs +0 -416
  1181. package/dist/media-1WC65OCB.mjs.map +0 -1
  1182. package/dist/media-Bws9f18T.mjs +0 -373
  1183. package/dist/media-Bws9f18T.mjs.map +0 -1
  1184. package/dist/media-allowlist-BJB7MFx6.mjs +0 -45
  1185. package/dist/media-allowlist-BJB7MFx6.mjs.map +0 -1
  1186. package/dist/media-folders-Dn3C16B8.mjs +0 -210
  1187. package/dist/media-folders-Dn3C16B8.mjs.map +0 -1
  1188. package/dist/media-url-BQgKvpQ5.mjs +0 -43
  1189. package/dist/media-url-BQgKvpQ5.mjs.map +0 -1
  1190. package/dist/media-usage-CF0WVcLO.mjs +0 -282
  1191. package/dist/media-usage-CF0WVcLO.mjs.map +0 -1
  1192. package/dist/media-usage-activation-C9HwVw5w.mjs +0 -78
  1193. package/dist/media-usage-activation-C9HwVw5w.mjs.map +0 -1
  1194. package/dist/media-usage-work-CkLa5-nc.mjs +0 -1036
  1195. package/dist/media-usage-work-CkLa5-nc.mjs.map +0 -1
  1196. package/dist/media-usage-work-m3AWTmmC.mjs +0 -151
  1197. package/dist/media-usage-work-m3AWTmmC.mjs.map +0 -1
  1198. package/dist/menus-BCVSSp1z.mjs +0 -753
  1199. package/dist/menus-BCVSSp1z.mjs.map +0 -1
  1200. package/dist/menus-BSzwObhV.mjs +0 -92
  1201. package/dist/menus-BSzwObhV.mjs.map +0 -1
  1202. package/dist/menus-Cl4kwdt7.mjs +0 -3721
  1203. package/dist/menus-Cl4kwdt7.mjs.map +0 -1
  1204. package/dist/mime-B5M9R53H.mjs +0 -81
  1205. package/dist/mime-B5M9R53H.mjs.map +0 -1
  1206. package/dist/mode-C-D3qICy.mjs +0 -23
  1207. package/dist/mode-C-D3qICy.mjs.map +0 -1
  1208. package/dist/node-sqlite-compat-CrKzRr0J.mjs +0 -63
  1209. package/dist/node-sqlite-compat-CrKzRr0J.mjs.map +0 -1
  1210. package/dist/normalize-BuWa0lvd.mjs +0 -191
  1211. package/dist/normalize-BuWa0lvd.mjs.map +0 -1
  1212. package/dist/oauth-authorization-TpEJrYB7.mjs +0 -274
  1213. package/dist/oauth-authorization-TpEJrYB7.mjs.map +0 -1
  1214. package/dist/oauth-clients-BT0Pg-MO.mjs +0 -266
  1215. package/dist/oauth-clients-BT0Pg-MO.mjs.map +0 -1
  1216. package/dist/oauth-state-store-CHMn_mwc.mjs +0 -50
  1217. package/dist/oauth-state-store-CHMn_mwc.mjs.map +0 -1
  1218. package/dist/oauth-user-lookup-BDgF6IVG.mjs +0 -26
  1219. package/dist/oauth-user-lookup-BDgF6IVG.mjs.map +0 -1
  1220. package/dist/object-cache-Bo6DGaC9.mjs +0 -586
  1221. package/dist/object-cache-Bo6DGaC9.mjs.map +0 -1
  1222. package/dist/options-DJWaq3Ie.d.mts +0 -81
  1223. package/dist/options-DJWaq3Ie.d.mts.map +0 -1
  1224. package/dist/ownership-MiyA7qKO.mjs +0 -12
  1225. package/dist/ownership-MiyA7qKO.mjs.map +0 -1
  1226. package/dist/parse-CWHOFc6z.d.mts +0 -176
  1227. package/dist/parse-CWHOFc6z.d.mts.map +0 -1
  1228. package/dist/parse-DgQ2NABT.mjs +0 -81
  1229. package/dist/parse-DgQ2NABT.mjs.map +0 -1
  1230. package/dist/passkey-config-D0kdzEao.mjs +0 -46
  1231. package/dist/passkey-config-D0kdzEao.mjs.map +0 -1
  1232. package/dist/paths-biDzFTY2.mjs +0 -77
  1233. package/dist/paths-biDzFTY2.mjs.map +0 -1
  1234. package/dist/patterns-CMNnYCgf.mjs +0 -159
  1235. package/dist/patterns-CMNnYCgf.mjs.map +0 -1
  1236. package/dist/placeholder-D41vk11_.d.mts +0 -306
  1237. package/dist/placeholder-D41vk11_.d.mts.map +0 -1
  1238. package/dist/plan-CCoqxNoU.mjs +0 -135
  1239. package/dist/plan-CCoqxNoU.mjs.map +0 -1
  1240. package/dist/plugin-tool-name-DDUgN_0p.mjs +0 -27
  1241. package/dist/plugin-tool-name-DDUgN_0p.mjs.map +0 -1
  1242. package/dist/plugins-COJ2L49n.mjs +0 -261
  1243. package/dist/plugins-COJ2L49n.mjs.map +0 -1
  1244. package/dist/policy-DLQ--Hnm.mjs +0 -45
  1245. package/dist/policy-DLQ--Hnm.mjs.map +0 -1
  1246. package/dist/portable-text-BH4zgkSm.mjs +0 -311
  1247. package/dist/portable-text-BH4zgkSm.mjs.map +0 -1
  1248. package/dist/preview-DLexxwp3.mjs +0 -107
  1249. package/dist/preview-DLexxwp3.mjs.map +0 -1
  1250. package/dist/protocol-79kUO7jP.d.mts +0 -65
  1251. package/dist/protocol-79kUO7jP.d.mts.map +0 -1
  1252. package/dist/public-plugin-api-routes-BuAMJ8nN.mjs +0 -316
  1253. package/dist/public-plugin-api-routes-BuAMJ8nN.mjs.map +0 -1
  1254. package/dist/public-submission-Di3TsgzX.mjs +0 -251
  1255. package/dist/public-submission-Di3TsgzX.mjs.map +0 -1
  1256. package/dist/public-url-Bt98vysr.mjs +0 -101
  1257. package/dist/public-url-Bt98vysr.mjs.map +0 -1
  1258. package/dist/query-CpnRlBh8.mjs +0 -1156
  1259. package/dist/query-CpnRlBh8.mjs.map +0 -1
  1260. package/dist/query-haKvLAWl.mjs +0 -41
  1261. package/dist/query-haKvLAWl.mjs.map +0 -1
  1262. package/dist/range-CYfeXgGK.mjs +0 -51
  1263. package/dist/range-CYfeXgGK.mjs.map +0 -1
  1264. package/dist/rate-limit-Xp4d0NBY.mjs +0 -127
  1265. package/dist/rate-limit-Xp4d0NBY.mjs.map +0 -1
  1266. package/dist/receipt-BUsQCOeM.mjs +0 -43
  1267. package/dist/receipt-BUsQCOeM.mjs.map +0 -1
  1268. package/dist/redirect-CQAV7mCo.mjs +0 -19
  1269. package/dist/redirect-CQAV7mCo.mjs.map +0 -1
  1270. package/dist/redirect-DiS_3mA4.mjs +0 -423
  1271. package/dist/redirect-DiS_3mA4.mjs.map +0 -1
  1272. package/dist/redirect-paths-CNYq7w80.mjs +0 -36
  1273. package/dist/redirect-paths-CNYq7w80.mjs.map +0 -1
  1274. package/dist/redirects-BEVSRMa2.mjs +0 -148
  1275. package/dist/redirects-BEVSRMa2.mjs.map +0 -1
  1276. package/dist/redirects-BHpy-VsZ.mjs +0 -446
  1277. package/dist/redirects-BHpy-VsZ.mjs.map +0 -1
  1278. package/dist/registry-TUVaid9Z.mjs +0 -8369
  1279. package/dist/registry-TUVaid9Z.mjs.map +0 -1
  1280. package/dist/relations-CA_QuMTU.mjs +0 -776
  1281. package/dist/relations-CA_QuMTU.mjs.map +0 -1
  1282. package/dist/request-cache-C4CIo5ad.mjs +0 -104
  1283. package/dist/request-cache-C4CIo5ad.mjs.map +0 -1
  1284. package/dist/request-meta-bwZ_NsvU.mjs +0 -141
  1285. package/dist/request-meta-bwZ_NsvU.mjs.map +0 -1
  1286. package/dist/resolve-D-kqyKns.mjs +0 -199
  1287. package/dist/resolve-D-kqyKns.mjs.map +0 -1
  1288. package/dist/resolve-DwNM-CXl.mjs +0 -101
  1289. package/dist/resolve-DwNM-CXl.mjs.map +0 -1
  1290. package/dist/revision-BVp8S0e_.mjs +0 -374
  1291. package/dist/revision-BVp8S0e_.mjs.map +0 -1
  1292. package/dist/route-cache-QSOyDEw0.mjs +0 -20
  1293. package/dist/route-cache-QSOyDEw0.mjs.map +0 -1
  1294. package/dist/route-wire-Ca_HWCZ5.mjs +0 -197
  1295. package/dist/route-wire-Ca_HWCZ5.mjs.map +0 -1
  1296. package/dist/routes-BerZFrvV.mjs +0 -272
  1297. package/dist/routes-BerZFrvV.mjs.map +0 -1
  1298. package/dist/runner-BObHz5FC.d.mts +0 -68
  1299. package/dist/runner-BObHz5FC.d.mts.map +0 -1
  1300. package/dist/runner-C5NeAkBQ.mjs +0 -6595
  1301. package/dist/runner-C5NeAkBQ.mjs.map +0 -1
  1302. package/dist/schema-C4OBuv6Z.mjs +0 -13
  1303. package/dist/schema-C4OBuv6Z.mjs.map +0 -1
  1304. package/dist/schema-DJRfvM_o.mjs +0 -815
  1305. package/dist/schema-DJRfvM_o.mjs.map +0 -1
  1306. package/dist/scopes-BU03K7Uo.mjs +0 -34
  1307. package/dist/scopes-BU03K7Uo.mjs.map +0 -1
  1308. package/dist/search-DfVzks89.mjs +0 -450
  1309. package/dist/search-DfVzks89.mjs.map +0 -1
  1310. package/dist/sections-BMy4JVUz.mjs +0 -346
  1311. package/dist/sections-BMy4JVUz.mjs.map +0 -1
  1312. package/dist/seo-ClB-dw9w.mjs +0 -188
  1313. package/dist/seo-ClB-dw9w.mjs.map +0 -1
  1314. package/dist/seo-VZYOEy8f.mjs +0 -133
  1315. package/dist/seo-VZYOEy8f.mjs.map +0 -1
  1316. package/dist/service-Bo_usgSk.mjs +0 -150
  1317. package/dist/service-Bo_usgSk.mjs.map +0 -1
  1318. package/dist/session-user-DlpPdf8L.mjs +0 -61
  1319. package/dist/session-user-DlpPdf8L.mjs.map +0 -1
  1320. package/dist/settings-CWb84sDm.mjs +0 -452
  1321. package/dist/settings-CWb84sDm.mjs.map +0 -1
  1322. package/dist/settings-DS914jjE.mjs +0 -66
  1323. package/dist/settings-DS914jjE.mjs.map +0 -1
  1324. package/dist/settings-Dd1uivmQ.mjs +0 -73
  1325. package/dist/settings-Dd1uivmQ.mjs.map +0 -1
  1326. package/dist/setup-complete-BuNxAUiN.mjs +0 -65
  1327. package/dist/setup-complete-BuNxAUiN.mjs.map +0 -1
  1328. package/dist/setup-nonce-BnEAX0iy.mjs +0 -25
  1329. package/dist/setup-nonce-BnEAX0iy.mjs.map +0 -1
  1330. package/dist/site-domain-Bq5j5bVg.mjs +0 -131
  1331. package/dist/site-domain-Bq5j5bVg.mjs.map +0 -1
  1332. package/dist/site-settings-DRHfX7bq.mjs +0 -50
  1333. package/dist/site-settings-DRHfX7bq.mjs.map +0 -1
  1334. package/dist/site-url-MB685I5X.mjs +0 -45
  1335. package/dist/site-url-MB685I5X.mjs.map +0 -1
  1336. package/dist/sitemap-name-BTg2NJJv.mjs +0 -26
  1337. package/dist/sitemap-name-BTg2NJJv.mjs.map +0 -1
  1338. package/dist/slug-aVnUV4SL.mjs +0 -16
  1339. package/dist/slug-aVnUV4SL.mjs.map +0 -1
  1340. package/dist/slugify-bu2-jKia.mjs +0 -22
  1341. package/dist/slugify-bu2-jKia.mjs.map +0 -1
  1342. package/dist/snapshot-DYsG4uOq.mjs +0 -414
  1343. package/dist/snapshot-DYsG4uOq.mjs.map +0 -1
  1344. package/dist/ssrf-BcYjyM4M.mjs +0 -406
  1345. package/dist/ssrf-BcYjyM4M.mjs.map +0 -1
  1346. package/dist/stage-D8DWgPcO.mjs +0 -662
  1347. package/dist/stage-D8DWgPcO.mjs.map +0 -1
  1348. package/dist/staged-CD_imitH.mjs +0 -686
  1349. package/dist/staged-CD_imitH.mjs.map +0 -1
  1350. package/dist/state-CFbGZziM.mjs +0 -178
  1351. package/dist/state-CFbGZziM.mjs.map +0 -1
  1352. package/dist/status-BFNdxzKc.mjs +0 -30
  1353. package/dist/status-BFNdxzKc.mjs.map +0 -1
  1354. package/dist/storage-query-DRyu3bSU.d.mts +0 -1615
  1355. package/dist/storage-query-DRyu3bSU.d.mts.map +0 -1
  1356. package/dist/tar-DFjExb9X.mjs +0 -449
  1357. package/dist/tar-DFjExb9X.mjs.map +0 -1
  1358. package/dist/target-CWZs2-o6.mjs +0 -27
  1359. package/dist/target-CWZs2-o6.mjs.map +0 -1
  1360. package/dist/taxonomies-ChnU7Mc8.mjs +0 -697
  1361. package/dist/taxonomies-ChnU7Mc8.mjs.map +0 -1
  1362. package/dist/taxonomies-Dd9JJv_a.mjs +0 -939
  1363. package/dist/taxonomies-Dd9JJv_a.mjs.map +0 -1
  1364. package/dist/taxonomy-C_C_LBAU.mjs +0 -550
  1365. package/dist/taxonomy-C_C_LBAU.mjs.map +0 -1
  1366. package/dist/tokens-BnhSnGwJ.mjs +0 -171
  1367. package/dist/tokens-BnhSnGwJ.mjs.map +0 -1
  1368. package/dist/transaction-BVYIo_yu.mjs +0 -29
  1369. package/dist/transaction-BVYIo_yu.mjs.map +0 -1
  1370. package/dist/transfer-ClH6w6BV.mjs +0 -8873
  1371. package/dist/transfer-ClH6w6BV.mjs.map +0 -1
  1372. package/dist/transfer-WmWiR3xf.mjs +0 -166
  1373. package/dist/transfer-WmWiR3xf.mjs.map +0 -1
  1374. package/dist/transfer-download--ofRj9Cw.mjs +0 -33
  1375. package/dist/transfer-download--ofRj9Cw.mjs.map +0 -1
  1376. package/dist/transformations-Bx4lYY0Y.mjs +0 -196
  1377. package/dist/transformations-Bx4lYY0Y.mjs.map +0 -1
  1378. package/dist/transport-BjbqNiPI.mjs +0 -136
  1379. package/dist/transport-BjbqNiPI.mjs.map +0 -1
  1380. package/dist/transport-DxiXnbXk.d.mts +0 -42
  1381. package/dist/transport-DxiXnbXk.d.mts.map +0 -1
  1382. package/dist/trusted-proxy-BU3Nx9g1.mjs +0 -51
  1383. package/dist/trusted-proxy-BU3Nx9g1.mjs.map +0 -1
  1384. package/dist/turnstile-CJwvsOqw.mjs +0 -58
  1385. package/dist/turnstile-CJwvsOqw.mjs.map +0 -1
  1386. package/dist/types-BA3ey2QH.d.mts +0 -87
  1387. package/dist/types-BA3ey2QH.d.mts.map +0 -1
  1388. package/dist/types-BGmQ0uXs.mjs +0 -201
  1389. package/dist/types-BGmQ0uXs.mjs.map +0 -1
  1390. package/dist/types-Bwpzb5o6.d.mts +0 -227
  1391. package/dist/types-Bwpzb5o6.d.mts.map +0 -1
  1392. package/dist/types-CNB-dj6F.d.mts +0 -289
  1393. package/dist/types-CNB-dj6F.d.mts.map +0 -1
  1394. package/dist/types-CgfFGfO5.mjs +0 -16
  1395. package/dist/types-CgfFGfO5.mjs.map +0 -1
  1396. package/dist/types-Cj0_yZkn.mjs +0 -18
  1397. package/dist/types-Cj0_yZkn.mjs.map +0 -1
  1398. package/dist/types-D2NEXtgB.mjs +0 -127
  1399. package/dist/types-D2NEXtgB.mjs.map +0 -1
  1400. package/dist/types-DCFavOii.d.mts +0 -916
  1401. package/dist/types-DCFavOii.d.mts.map +0 -1
  1402. package/dist/types-DHO7Pd25.d.mts +0 -366
  1403. package/dist/types-DHO7Pd25.d.mts.map +0 -1
  1404. package/dist/types-DvqVxZXa.d.mts +0 -125
  1405. package/dist/types-DvqVxZXa.d.mts.map +0 -1
  1406. package/dist/types-QoPHm-2w.d.mts +0 -1741
  1407. package/dist/types-QoPHm-2w.d.mts.map +0 -1
  1408. package/dist/types-RLgeIpnF.d.mts +0 -374
  1409. package/dist/types-RLgeIpnF.d.mts.map +0 -1
  1410. package/dist/types-qHVygneX.mjs +0 -77
  1411. package/dist/types-qHVygneX.mjs.map +0 -1
  1412. package/dist/types-sUHaH7lC.mjs +0 -37
  1413. package/dist/types-sUHaH7lC.mjs.map +0 -1
  1414. package/dist/types-slSqujQL.d.mts +0 -204
  1415. package/dist/types-slSqujQL.d.mts.map +0 -1
  1416. package/dist/update-check-BxNg9T6N.mjs +0 -161
  1417. package/dist/update-check-BxNg9T6N.mjs.map +0 -1
  1418. package/dist/upload-attempts-DPFC4COv.mjs +0 -32
  1419. package/dist/upload-attempts-DPFC4COv.mjs.map +0 -1
  1420. package/dist/url-Dn3IStq8.mjs +0 -104
  1421. package/dist/url-Dn3IStq8.mjs.map +0 -1
  1422. package/dist/url-pattern-QATUE_rv.mjs +0 -41
  1423. package/dist/url-pattern-QATUE_rv.mjs.map +0 -1
  1424. package/dist/user-BlCTKVAm.mjs +0 -171
  1425. package/dist/user-BlCTKVAm.mjs.map +0 -1
  1426. package/dist/utils-TPt7w2cS.mjs +0 -442
  1427. package/dist/utils-TPt7w2cS.mjs.map +0 -1
  1428. package/dist/validate-DxYhJQA-.mjs +0 -524
  1429. package/dist/validate-DxYhJQA-.mjs.map +0 -1
  1430. package/dist/validate-emKxGC5F.d.mts +0 -468
  1431. package/dist/validate-emKxGC5F.d.mts.map +0 -1
  1432. package/dist/validation-Ckq4vsVg.mjs +0 -220
  1433. package/dist/validation-Ckq4vsVg.mjs.map +0 -1
  1434. package/dist/version-BZj18Q7G.mjs +0 -9
  1435. package/dist/version-BZj18Q7G.mjs.map +0 -1
  1436. package/dist/version-DHmGpcch.mjs +0 -7
  1437. package/dist/version-DHmGpcch.mjs.map +0 -1
  1438. package/dist/video-DytCnw3L.mjs +0 -54
  1439. package/dist/video-DytCnw3L.mjs.map +0 -1
  1440. package/dist/virtual-modules-DO954n7P.mjs +0 -515
  1441. package/dist/virtual-modules-DO954n7P.mjs.map +0 -1
  1442. package/dist/widgets-DA5XmvVC.mjs +0 -121
  1443. package/dist/widgets-DA5XmvVC.mjs.map +0 -1
  1444. package/dist/wxr-taxonomies-CrMonejI.d.mts +0 -34
  1445. package/dist/wxr-taxonomies-CrMonejI.d.mts.map +0 -1
  1446. package/dist/wxr-taxonomies-RgRG0d5e.mjs +0 -453
  1447. package/dist/wxr-taxonomies-RgRG0d5e.mjs.map +0 -1
  1448. package/dist/zod-generator-D0JKy94C.mjs +0 -424
  1449. package/dist/zod-generator-D0JKy94C.mjs.map +0 -1
  1450. /package/dist/{api-tokens-CdP49zVF.mjs → api-tokens-C7l0GUAF.mjs} +0 -0
  1451. /package/dist/{ssrf-DM0E-D_8.mjs → ssrf-BBXcxG-f.mjs} +0 -0
@@ -1,460 +0,0 @@
1
- import { u as isPostgres } from "./dialect-helpers-7_IqPdh9.mjs";
2
- import { t as TransferError } from "./errors-B4f4It-2.mjs";
3
- import { o as TRANSFER_LIMITS } from "./canonical-BudtH-Fx.mjs";
4
- import { a as isSha256Digest } from "./digest-DJ1tHCgy.mjs";
5
- import { i as RECORD_KINDS } from "./kinds-B_Qcl5pz.mjs";
6
- import { sql } from "kysely";
7
- import { z } from "zod";
8
- import { ulid } from "ulidx";
9
- import { TRANSFER_SCOPES } from "@emdash-cms/auth";
10
-
11
- //#region src/transfer/auth.ts
12
- /** Token scope a bearer-token caller needs for each transfer action. */
13
- const TRANSFER_ACTION_SCOPE = Object.freeze({
14
- export: "transfer:export",
15
- analyze: "transfer:analyze",
16
- execute: "transfer:execute"
17
- });
18
- /** RBAC permission a session caller needs for each transfer action. */
19
- const TRANSFER_ACTION_PERMISSION = Object.freeze({
20
- export: "transfer:export",
21
- analyze: "transfer:import",
22
- execute: "transfer:import"
23
- });
24
- /** Actions an MCP approval grant can authorize. */
25
- const TRANSFER_APPROVAL_ACTIONS = ["export", "import"];
26
-
27
- //#endregion
28
- //#region src/transfer/ops/states.ts
29
- /**
30
- * Transfer operation states, stages, and typed cursors.
31
- *
32
- * Export: pending → running → complete | failed | expired
33
- * Import: uploading → analyzing → planned → running → verifying
34
- * → complete | failed | cancelled | abandoned | expired
35
- *
36
- * An import "occupies" the target from creation until it reaches a terminal
37
- * state. A failed or cancelled import that already started writing
38
- * (`mutation_started_at` set) keeps occupying the target, and keeps site
39
- * writes fenced, until it is explicitly abandoned. The partial unique index
40
- * `idx__emdash_transfer_operations_active_import` (migration 084) enforces
41
- * one occupying import per target with the same predicate as
42
- * {@link isOccupyingImport}.
43
- */
44
- const TRANSFER_RUNTIME_GENERATION = 1;
45
- const TRANSFER_OPERATION_KINDS = ["export", "import"];
46
- const EXPORT_STATES = [
47
- "pending",
48
- "running",
49
- "complete",
50
- "failed",
51
- "expired"
52
- ];
53
- const IMPORT_STATES = [
54
- "uploading",
55
- "analyzing",
56
- "planned",
57
- "running",
58
- "verifying",
59
- "complete",
60
- "failed",
61
- "cancelled",
62
- "abandoned",
63
- "expired"
64
- ];
65
- const OPERATION_KINDS = new Set(TRANSFER_OPERATION_KINDS);
66
- const OPERATION_STATES = new Set([...EXPORT_STATES, ...IMPORT_STATES]);
67
- function isTransferOperationKind(value) {
68
- return OPERATION_KINDS.has(value);
69
- }
70
- function isTransferOperationState(value) {
71
- return OPERATION_STATES.has(value);
72
- }
73
- /** Import states before execution starts; they expire after the pending TTL. */
74
- const PRE_EXECUTION_IMPORT_STATES = [
75
- "uploading",
76
- "analyzing",
77
- "planned"
78
- ];
79
- /** Import states in which the importer is writing to the target. */
80
- const EXECUTING_IMPORT_STATES = ["running", "verifying"];
81
- const TERMINAL_EXPORT_STATES = [
82
- "complete",
83
- "failed",
84
- "expired"
85
- ];
86
- const TERMINAL_IMPORT_STATES = [
87
- "complete",
88
- "failed",
89
- "cancelled",
90
- "abandoned",
91
- "expired"
92
- ];
93
- function isTerminalState(kind, state) {
94
- return kind === "export" ? TERMINAL_EXPORT_STATES.includes(state) : TERMINAL_IMPORT_STATES.includes(state);
95
- }
96
- /**
97
- * Import stages in execution order. The record stages write the kinds listed
98
- * in `IMPORT_STAGE_KINDS` (format/kinds.ts).
99
- */
100
- const IMPORT_STAGES = [
101
- "reserve",
102
- "clear_scaffold",
103
- "schema",
104
- "media",
105
- "terms_bylines",
106
- "content",
107
- "relations",
108
- "presentation",
109
- "rebuild",
110
- "verify"
111
- ];
112
- const REBUILD_STEPS = [
113
- "search",
114
- "media_usage",
115
- "options",
116
- "taxonomies",
117
- "caches"
118
- ];
119
- const recordKindSchema = z.enum(RECORD_KINDS);
120
- const nonNegativeInt = z.number().int().nonnegative();
121
- /** Next record to process in a package stream: chunk `seq`, zero-based `line`. */
122
- const streamPositionSchema = z.strictObject({
123
- kind: recordKindSchema,
124
- seq: nonNegativeInt,
125
- line: nonNegativeInt
126
- });
127
- /** Last stream-order key processed (`depth` only for topological kinds). */
128
- const streamKeySchema = z.strictObject({
129
- id: z.string(),
130
- depth: nonNegativeInt.optional()
131
- });
132
- /**
133
- * Optimistic-read fence captured before an export attempt and re-checked
134
- * after it. `writeEpoch` is the export operation's `write_epoch` column,
135
- * which fenced writes bump while the export runs.
136
- */
137
- const exportFenceSchema = z.strictObject({
138
- writeEpoch: nonNegativeInt,
139
- tables: z.array(z.strictObject({
140
- table: z.string(),
141
- count: nonNegativeInt,
142
- maxChanged: z.string().optional(),
143
- maxId: z.string().optional()
144
- }))
145
- });
146
- const exportAttempt = z.number().int().min(1);
147
- const exportCursorSchema = z.discriminatedUnion("stage", [
148
- z.strictObject({
149
- stage: z.literal("export_records"),
150
- attempt: exportAttempt,
151
- fence: exportFenceSchema,
152
- kind: recordKindSchema,
153
- collection: z.string().optional(),
154
- after: streamKeySchema.nullable(),
155
- nextSeq: nonNegativeInt,
156
- summary: z.json().optional()
157
- }),
158
- z.strictObject({
159
- stage: z.literal("export_media"),
160
- attempt: exportAttempt,
161
- fence: exportFenceSchema,
162
- afterMediaId: z.string().nullable(),
163
- summary: z.json().optional()
164
- }),
165
- z.strictObject({
166
- stage: z.literal("export_finalize"),
167
- attempt: exportAttempt,
168
- fence: exportFenceSchema,
169
- nextIndexSeq: nonNegativeInt,
170
- afterPath: z.string().nullable(),
171
- summary: z.json().optional()
172
- }),
173
- z.strictObject({
174
- stage: z.literal("export_validate"),
175
- position: streamPositionSchema.nullable(),
176
- validation: z.json().optional()
177
- })
178
- ]);
179
- const analysisCursorSchema = z.discriminatedUnion("stage", [
180
- z.strictObject({
181
- stage: z.literal("analyze_structure"),
182
- nextIndexSeq: nonNegativeInt
183
- }),
184
- z.strictObject({
185
- stage: z.literal("analyze_records"),
186
- position: streamPositionSchema
187
- }),
188
- z.strictObject({
189
- stage: z.literal("analyze_references"),
190
- check: nonNegativeInt,
191
- after: z.string().nullable()
192
- }),
193
- z.strictObject({ stage: z.literal("analyze_target") })
194
- ]);
195
- const recordStage = (stage) => z.strictObject({
196
- stage: z.literal(stage),
197
- position: streamPositionSchema
198
- });
199
- const importCursorSchema = z.discriminatedUnion("stage", [
200
- z.strictObject({ stage: z.literal("reserve") }),
201
- z.strictObject({
202
- stage: z.literal("clear_scaffold"),
203
- step: nonNegativeInt
204
- }),
205
- recordStage("schema"),
206
- recordStage("media"),
207
- recordStage("terms_bylines"),
208
- recordStage("content"),
209
- recordStage("relations"),
210
- recordStage("presentation"),
211
- z.strictObject({
212
- stage: z.literal("rebuild"),
213
- step: z.enum(REBUILD_STEPS),
214
- after: z.string().nullable()
215
- }),
216
- z.strictObject({
217
- stage: z.literal("verify"),
218
- position: streamPositionSchema.nullable(),
219
- mediaAfter: z.string().nullable(),
220
- mismatches: nonNegativeInt,
221
- verifier: z.json().optional()
222
- })
223
- ]);
224
- const transferCursorSchema = z.union([
225
- exportCursorSchema,
226
- analysisCursorSchema,
227
- importCursorSchema
228
- ]);
229
- /**
230
- * Bounded progress summary shown by status endpoints. `done` of `total`
231
- * counts stages (and, for an export, record kinds). `records` is the number
232
- * of records an export has written so far; the byte counts cover package
233
- * files once they are known.
234
- */
235
- const transferProgressSchema = z.strictObject({
236
- done: nonNegativeInt,
237
- total: nonNegativeInt,
238
- records: nonNegativeInt.optional(),
239
- bytesDone: nonNegativeInt.optional(),
240
- bytesTotal: nonNegativeInt.optional()
241
- });
242
-
243
- //#endregion
244
- //#region src/transfer/ops/time.ts
245
- /**
246
- * Database-clock timestamps for transfer state. Every lease and expiry
247
- * comparison runs in SQL against the database clock, never a worker clock,
248
- * and every stored timestamp uses the sortable `YYYY-MM-DDTHH:MM:SS.sssZ`
249
- * form so plain string comparison orders them.
250
- */
251
- function timestampOffset(db, seconds) {
252
- if (!Number.isFinite(seconds)) throw new RangeError("Invalid timestamp offset");
253
- if (isPostgres(db)) return sql`to_char(
254
- clock_timestamp() AT TIME ZONE 'UTC' + (${seconds} * interval '1 second'),
255
- 'YYYY-MM-DD"T"HH24:MI:SS.MS"Z"'
256
- )`;
257
- return sql`strftime('%Y-%m-%dT%H:%M:%fZ', 'now', ${`${seconds >= 0 ? "+" : ""}${seconds} seconds`})`;
258
- }
259
- function timestampNow(db) {
260
- return timestampOffset(db, 0);
261
- }
262
- /** `column <= now` */
263
- function timestampIsDue(db, column) {
264
- return isPostgres(db) ? sql`${sql.ref(column)}::timestamptz <= clock_timestamp()` : sql`${sql.ref(column)} <= strftime('%Y-%m-%dT%H:%M:%fZ', 'now')`;
265
- }
266
- /** `column > now` */
267
- function timestampIsLive(db, column) {
268
- return isPostgres(db) ? sql`${sql.ref(column)}::timestamptz > clock_timestamp()` : sql`${sql.ref(column)} > strftime('%Y-%m-%dT%H:%M:%fZ', 'now')`;
269
- }
270
- /** `column <= now - seconds` */
271
- function timestampIsOlderThan(db, column, seconds) {
272
- if (!Number.isFinite(seconds) || seconds < 0) throw new RangeError("Invalid timestamp age");
273
- return isPostgres(db) ? sql`${sql.ref(column)}::timestamptz <= clock_timestamp() - (${seconds} * interval '1 second')` : sql`${sql.ref(column)} <= strftime('%Y-%m-%dT%H:%M:%fZ', 'now', ${`-${seconds} seconds`})`;
274
- }
275
-
276
- //#endregion
277
- //#region src/transfer/ops/approvals.ts
278
- const APPROVAL_STATUSES = [
279
- "pending",
280
- "approved",
281
- "denied",
282
- "consumed",
283
- "expired"
284
- ];
285
- const STATUS_SET = new Set(APPROVAL_STATUSES);
286
- const ACTION_SET = new Set(TRANSFER_APPROVAL_ACTIONS);
287
- function isApprovalStatus(value) {
288
- return STATUS_SET.has(value);
289
- }
290
- function isApprovalAction(value) {
291
- return ACTION_SET.has(value);
292
- }
293
- function toApproval(row) {
294
- const { status, action } = row;
295
- if (!isApprovalStatus(status) || !isApprovalAction(action)) throw new TransferError("TRANSFER_APPROVAL_INVALID", "Unknown approval status or action");
296
- return {
297
- id: row.id,
298
- status,
299
- action,
300
- userId: row.user_id,
301
- requestedByTokenId: row.requested_by_token_id,
302
- approvedBy: row.approved_by,
303
- operationId: row.operation_id,
304
- paramsDigest: isSha256Digest(row.params_digest) ? row.params_digest : null,
305
- packageDigest: isSha256Digest(row.package_digest) ? row.package_digest : null,
306
- planDigest: isSha256Digest(row.plan_digest) ? row.plan_digest : null,
307
- expiresAt: row.expires_at,
308
- createdAt: row.created_at,
309
- decidedAt: row.decided_at,
310
- consumedAt: row.consumed_at
311
- };
312
- }
313
- /** Every column a grant binds besides user and action, with the value it must hold (undefined = NULL). */
314
- function boundColumns(binding) {
315
- return [
316
- ["operation_id", binding.operationId],
317
- ["params_digest", binding.paramsDigest],
318
- ["package_digest", binding.packageDigest],
319
- ["plan_digest", binding.planDigest],
320
- ["requested_by_token_id", binding.tokenId]
321
- ];
322
- }
323
- function invalid() {
324
- return new TransferError("TRANSFER_APPROVAL_INVALID", "Approval is missing, expired, or does not match");
325
- }
326
- var TransferApprovalRepository = class {
327
- constructor(db) {
328
- this.db = db;
329
- }
330
- async createPending(input) {
331
- if (input.action === "import" && (!input.packageDigest || !input.planDigest)) throw new TransferError("TRANSFER_APPROVAL_INVALID", "An import approval must bind a package digest and a plan digest");
332
- return toApproval(await this.db.insertInto("_emdash_transfer_approvals").values({
333
- id: ulid(),
334
- status: "pending",
335
- action: input.action,
336
- user_id: input.userId,
337
- requested_by_token_id: input.requestedByTokenId ?? null,
338
- approved_by: null,
339
- operation_id: input.operationId ?? null,
340
- params_digest: input.paramsDigest ?? null,
341
- package_digest: input.packageDigest ?? null,
342
- plan_digest: input.planDigest ?? null,
343
- expires_at: timestampOffset(this.db, input.ttlSeconds ?? TRANSFER_LIMITS.approvalTtlSeconds),
344
- decided_at: null,
345
- consumed_at: null
346
- }).returningAll().executeTakeFirstOrThrow());
347
- }
348
- async get(id) {
349
- const row = await this.db.selectFrom("_emdash_transfer_approvals").selectAll().where("id", "=", id).executeTakeFirst();
350
- return row ? toApproval(row) : null;
351
- }
352
- /**
353
- * Approve a pending, unexpired grant. The grant then stays usable for the
354
- * approval TTL from now.
355
- */
356
- async approve(id, approvedBy, options = {}) {
357
- return this.decide(id, "approved", approvedBy, options.ttlSeconds);
358
- }
359
- async deny(id, deniedBy) {
360
- return this.decide(id, "denied", deniedBy);
361
- }
362
- async decide(id, status, decidedBy, ttlSeconds) {
363
- const now = timestampNow(this.db);
364
- const row = await this.db.updateTable("_emdash_transfer_approvals").set({
365
- status,
366
- approved_by: decidedBy,
367
- decided_at: now,
368
- ...status === "approved" ? { expires_at: timestampOffset(this.db, ttlSeconds ?? TRANSFER_LIMITS.approvalTtlSeconds) } : {}
369
- }).where("id", "=", id).where("status", "=", "pending").where(timestampIsLive(this.db, "expires_at")).returningAll().executeTakeFirst();
370
- if (!row) throw invalid();
371
- return toApproval(row);
372
- }
373
- /**
374
- * Consume an approved grant in one statement. Every digest or operation id
375
- * the grant was created with must be supplied and equal; a grant created
376
- * without one must be consumed without it. The same holds for the token:
377
- * a grant requested by token `T` can only be consumed by a caller
378
- * authenticated with `T` (pass `tokenId`), and a grant requested without a
379
- * token only by a caller without one. Throws `TRANSFER_APPROVAL_INVALID`
380
- * otherwise.
381
- */
382
- async consume(id, binding) {
383
- const now = timestampNow(this.db);
384
- let query = this.db.updateTable("_emdash_transfer_approvals").set({
385
- status: "consumed",
386
- consumed_at: now
387
- }).where("id", "=", id).where("status", "=", "approved").where(timestampIsLive(this.db, "expires_at")).where("user_id", "=", binding.userId).where("action", "=", binding.action);
388
- for (const [column, value] of boundColumns(binding)) query = value === void 0 ? query.where(column, "is", null) : query.where(column, "=", value);
389
- const row = await query.returningAll().executeTakeFirst();
390
- if (!row) throw invalid();
391
- return toApproval(row);
392
- }
393
- /**
394
- * Return a grant `consume` took back to `approved`, for when the
395
- * operation it was consumed for could not be started. Its expiry is
396
- * unchanged, so an expired grant stays unusable.
397
- */
398
- async restore(id) {
399
- await this.db.updateTable("_emdash_transfer_approvals").set({
400
- status: "approved",
401
- consumed_at: null
402
- }).where("id", "=", id).where("status", "=", "consumed").execute();
403
- }
404
- /**
405
- * The newest pending, unexpired grant with exactly this binding, so a
406
- * caller retrying without an approval id reuses its open request instead
407
- * of adding another one for an admin to review.
408
- */
409
- async findPending(binding) {
410
- let query = this.db.selectFrom("_emdash_transfer_approvals").selectAll().where("status", "=", "pending").where(timestampIsLive(this.db, "expires_at")).where("user_id", "=", binding.userId).where("action", "=", binding.action);
411
- for (const [column, value] of boundColumns(binding)) query = value === void 0 ? query.where(column, "is", null) : query.where(column, "=", value);
412
- const row = await query.orderBy("created_at", "desc").orderBy("id", "desc").executeTakeFirst();
413
- return row ? toApproval(row) : null;
414
- }
415
- /**
416
- * Whether a grant for `action` on `operationId` was consumed by this user
417
- * authenticated with this token (or, without `tokenId`, without a token).
418
- */
419
- async hasConsumed(binding) {
420
- let query = this.db.selectFrom("_emdash_transfer_approvals").select("id").where("status", "=", "consumed").where("user_id", "=", binding.userId).where("action", "=", binding.action).where("operation_id", "=", binding.operationId);
421
- query = binding.tokenId === void 0 ? query.where("requested_by_token_id", "is", null) : query.where("requested_by_token_id", "=", binding.tokenId);
422
- return await query.executeTakeFirst() !== void 0;
423
- }
424
- /**
425
- * Record the operation a consumed export grant created. Export grants are
426
- * requested before the operation exists, so they bind no operation id
427
- * until they are used.
428
- */
429
- async linkOperation(id, operationId) {
430
- await this.db.updateTable("_emdash_transfer_approvals").set({ operation_id: operationId }).where("id", "=", id).where("status", "=", "consumed").where("action", "=", "export").where("operation_id", "is", null).execute();
431
- }
432
- /** Approvals newest first. */
433
- async list(options = {}) {
434
- const limit = Math.min(Math.max(options.limit ?? 50, 1), 100);
435
- let query = this.db.selectFrom("_emdash_transfer_approvals").selectAll();
436
- if (options.userId) query = query.where("user_id", "=", options.userId);
437
- if (options.status) query = query.where("status", "=", options.status);
438
- const cursor = options.cursor;
439
- if (cursor) query = query.where((eb) => eb.or([eb("created_at", "<", cursor.createdAt), eb.and([eb("created_at", "=", cursor.createdAt), eb("id", "<", cursor.id)])]));
440
- const rows = await query.orderBy("created_at", "desc").orderBy("id", "desc").limit(limit + 1).execute();
441
- const items = rows.slice(0, limit).map(toApproval);
442
- const last = items.at(-1);
443
- return rows.length > limit && last ? {
444
- items,
445
- next: {
446
- createdAt: last.createdAt,
447
- id: last.id
448
- }
449
- } : { items };
450
- }
451
- /** Mark pending and approved grants past their expiry as `expired`; returns how many. */
452
- async expireDue() {
453
- const result = await this.db.updateTable("_emdash_transfer_approvals").set({ status: "expired" }).where("status", "in", ["pending", "approved"]).where(timestampIsDue(this.db, "expires_at")).executeTakeFirst();
454
- return Number(result.numUpdatedRows ?? 0n);
455
- }
456
- };
457
-
458
- //#endregion
459
- export { TRANSFER_SCOPES as S, isTerminalState as _, timestampIsOlderThan as a, transferCursorSchema as b, EXECUTING_IMPORT_STATES as c, IMPORT_STATES as d, PRE_EXECUTION_IMPORT_STATES as f, analysisCursorSchema as g, TRANSFER_RUNTIME_GENERATION as h, timestampIsLive as i, EXPORT_STATES as l, TERMINAL_IMPORT_STATES as m, TransferApprovalRepository as n, timestampNow as o, REBUILD_STEPS as p, timestampIsDue as r, timestampOffset as s, APPROVAL_STATUSES as t, IMPORT_STAGES as u, isTransferOperationKind as v, transferProgressSchema as x, isTransferOperationState as y };
460
- //# sourceMappingURL=approvals-D-m6wvGl.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"approvals-D-m6wvGl.mjs","names":[],"sources":["../src/transfer/auth.ts","../src/transfer/ops/states.ts","../src/transfer/ops/time.ts","../src/transfer/ops/approvals.ts"],"sourcesContent":["import type { Permission, TransferScope } from \"@emdash-cms/auth\";\n\nexport { TRANSFER_SCOPES, isTransferScope } from \"@emdash-cms/auth\";\nexport type { TransferScope } from \"@emdash-cms/auth\";\n\nexport type TransferAction = \"export\" | \"analyze\" | \"execute\";\n\n/** Token scope a bearer-token caller needs for each transfer action. */\nexport const TRANSFER_ACTION_SCOPE = Object.freeze({\n\texport: \"transfer:export\",\n\tanalyze: \"transfer:analyze\",\n\texecute: \"transfer:execute\",\n} as const satisfies Record<TransferAction, TransferScope>);\n\n/** RBAC permission a session caller needs for each transfer action. */\nexport const TRANSFER_ACTION_PERMISSION = Object.freeze({\n\texport: \"transfer:export\",\n\tanalyze: \"transfer:import\",\n\texecute: \"transfer:import\",\n} as const satisfies Record<TransferAction, Permission>);\n\n/** Actions an MCP approval grant can authorize. */\nexport const TRANSFER_APPROVAL_ACTIONS = [\"export\", \"import\"] as const;\n\nexport type TransferApprovalAction = (typeof TRANSFER_APPROVAL_ACTIONS)[number];\n","/**\n * Transfer operation states, stages, and typed cursors.\n *\n * Export: pending → running → complete | failed | expired\n * Import: uploading → analyzing → planned → running → verifying\n * → complete | failed | cancelled | abandoned | expired\n *\n * An import \"occupies\" the target from creation until it reaches a terminal\n * state. A failed or cancelled import that already started writing\n * (`mutation_started_at` set) keeps occupying the target, and keeps site\n * writes fenced, until it is explicitly abandoned. The partial unique index\n * `idx__emdash_transfer_operations_active_import` (migration 084) enforces\n * one occupying import per target with the same predicate as\n * {@link isOccupyingImport}.\n */\n\nimport { z } from \"zod\";\n\nimport { RECORD_KINDS } from \"../format/kinds.js\";\n\nexport const TRANSFER_RUNTIME_GENERATION = 1;\n\nexport const TRANSFER_OPERATION_KINDS = [\"export\", \"import\"] as const;\nexport type TransferOperationKind = (typeof TRANSFER_OPERATION_KINDS)[number];\n\nexport const EXPORT_STATES = [\"pending\", \"running\", \"complete\", \"failed\", \"expired\"] as const;\nexport type ExportState = (typeof EXPORT_STATES)[number];\n\nexport const IMPORT_STATES = [\n\t\"uploading\",\n\t\"analyzing\",\n\t\"planned\",\n\t\"running\",\n\t\"verifying\",\n\t\"complete\",\n\t\"failed\",\n\t\"cancelled\",\n\t\"abandoned\",\n\t\"expired\",\n] as const;\nexport type ImportState = (typeof IMPORT_STATES)[number];\n\nexport type TransferOperationState = ExportState | ImportState;\n\nconst OPERATION_KINDS: ReadonlySet<string> = new Set(TRANSFER_OPERATION_KINDS);\nconst OPERATION_STATES: ReadonlySet<string> = new Set([...EXPORT_STATES, ...IMPORT_STATES]);\n\nexport function isTransferOperationKind(value: string): value is TransferOperationKind {\n\treturn OPERATION_KINDS.has(value);\n}\n\nexport function isTransferOperationState(value: string): value is TransferOperationState {\n\treturn OPERATION_STATES.has(value);\n}\n\n/** Import states before execution starts; they expire after the pending TTL. */\nexport const PRE_EXECUTION_IMPORT_STATES = [\"uploading\", \"analyzing\", \"planned\"] as const;\n\n/** Import states in which the importer is writing to the target. */\nexport const EXECUTING_IMPORT_STATES = [\"running\", \"verifying\"] as const;\n\nexport const TERMINAL_EXPORT_STATES: readonly ExportState[] = [\"complete\", \"failed\", \"expired\"];\nexport const TERMINAL_IMPORT_STATES: readonly ImportState[] = [\n\t\"complete\",\n\t\"failed\",\n\t\"cancelled\",\n\t\"abandoned\",\n\t\"expired\",\n];\n\nexport function isTerminalState(kind: TransferOperationKind, state: string): boolean {\n\treturn kind === \"export\"\n\t\t? (TERMINAL_EXPORT_STATES as readonly string[]).includes(state)\n\t\t: (TERMINAL_IMPORT_STATES as readonly string[]).includes(state);\n}\n\n/** Whether an import occupies the target (see the module comment). */\nexport function isOccupyingImport(state: string, mutationStarted: boolean): boolean {\n\tif ((PRE_EXECUTION_IMPORT_STATES as readonly string[]).includes(state)) return true;\n\tif ((EXECUTING_IMPORT_STATES as readonly string[]).includes(state)) return true;\n\treturn (state === \"failed\" || state === \"cancelled\") && mutationStarted;\n}\n\n/** Whether an import fences site writes: executing, or incomplete after writing started. */\nexport function isWriteFencingImport(state: string, mutationStarted: boolean): boolean {\n\tif ((EXECUTING_IMPORT_STATES as readonly string[]).includes(state)) return true;\n\treturn (state === \"failed\" || state === \"cancelled\") && mutationStarted;\n}\n\n// ── Stages ──────────────────────────────────────────────────────\n\nexport const EXPORT_STAGES = [\n\t\"export_records\",\n\t\"export_media\",\n\t\"export_finalize\",\n\t\"export_validate\",\n] as const;\nexport type ExportStage = (typeof EXPORT_STAGES)[number];\n\nexport const ANALYSIS_STAGES = [\n\t\"analyze_structure\",\n\t\"analyze_records\",\n\t\"analyze_references\",\n\t\"analyze_target\",\n] as const;\nexport type AnalysisStage = (typeof ANALYSIS_STAGES)[number];\n\n/**\n * Import stages in execution order. The record stages write the kinds listed\n * in `IMPORT_STAGE_KINDS` (format/kinds.ts).\n */\nexport const IMPORT_STAGES = [\n\t\"reserve\",\n\t\"clear_scaffold\",\n\t\"schema\",\n\t\"media\",\n\t\"terms_bylines\",\n\t\"content\",\n\t\"relations\",\n\t\"presentation\",\n\t\"rebuild\",\n\t\"verify\",\n] as const;\nexport type ImportStage = (typeof IMPORT_STAGES)[number];\n\nexport const REBUILD_STEPS = [\"search\", \"media_usage\", \"options\", \"taxonomies\", \"caches\"] as const;\nexport type RebuildStep = (typeof REBUILD_STEPS)[number];\n\n// ── Cursors ─────────────────────────────────────────────────────\n\nconst recordKindSchema = z.enum(RECORD_KINDS);\nconst nonNegativeInt = z.number().int().nonnegative();\n\n/** Next record to process in a package stream: chunk `seq`, zero-based `line`. */\nexport const streamPositionSchema = z.strictObject({\n\tkind: recordKindSchema,\n\tseq: nonNegativeInt,\n\tline: nonNegativeInt,\n});\nexport type StreamPosition = z.infer<typeof streamPositionSchema>;\n\n/** Last stream-order key processed (`depth` only for topological kinds). */\nexport const streamKeySchema = z.strictObject({\n\tid: z.string(),\n\tdepth: nonNegativeInt.optional(),\n});\n\n/**\n * Optimistic-read fence captured before an export attempt and re-checked\n * after it. `writeEpoch` is the export operation's `write_epoch` column,\n * which fenced writes bump while the export runs.\n */\nexport const exportFenceSchema = z.strictObject({\n\twriteEpoch: nonNegativeInt,\n\ttables: z.array(\n\t\tz.strictObject({\n\t\t\ttable: z.string(),\n\t\t\tcount: nonNegativeInt,\n\t\t\tmaxChanged: z.string().optional(),\n\t\t\tmaxId: z.string().optional(),\n\t\t}),\n\t),\n});\nexport type ExportFence = z.infer<typeof exportFenceSchema>;\n\nconst exportAttempt = z.number().int().min(1);\n\nexport const exportCursorSchema = z.discriminatedUnion(\"stage\", [\n\tz.strictObject({\n\t\tstage: z.literal(\"export_records\"),\n\t\tattempt: exportAttempt,\n\t\tfence: exportFenceSchema,\n\t\tkind: recordKindSchema,\n\t\t/** For `entry`, the collection slug being read. */\n\t\tcollection: z.string().optional(),\n\t\tafter: streamKeySchema.nullable(),\n\t\tnextSeq: nonNegativeInt,\n\t\t/** Exporter-owned running totals (see `transfer/export`). */\n\t\tsummary: z.json().optional(),\n\t}),\n\tz.strictObject({\n\t\tstage: z.literal(\"export_media\"),\n\t\tattempt: exportAttempt,\n\t\tfence: exportFenceSchema,\n\t\tafterMediaId: z.string().nullable(),\n\t\tsummary: z.json().optional(),\n\t}),\n\tz.strictObject({\n\t\tstage: z.literal(\"export_finalize\"),\n\t\tattempt: exportAttempt,\n\t\tfence: exportFenceSchema,\n\t\tnextIndexSeq: nonNegativeInt,\n\t\tafterPath: z.string().nullable(),\n\t\tsummary: z.json().optional(),\n\t}),\n\tz.strictObject({\n\t\tstage: z.literal(\"export_validate\"),\n\t\tposition: streamPositionSchema.nullable(),\n\t\t/** Exporter-owned validation progress (see `transfer/export`). */\n\t\tvalidation: z.json().optional(),\n\t}),\n]);\nexport type ExportCursor = z.infer<typeof exportCursorSchema>;\n\nexport const analysisCursorSchema = z.discriminatedUnion(\"stage\", [\n\tz.strictObject({ stage: z.literal(\"analyze_structure\"), nextIndexSeq: nonNegativeInt }),\n\tz.strictObject({ stage: z.literal(\"analyze_records\"), position: streamPositionSchema }),\n\tz.strictObject({\n\t\tstage: z.literal(\"analyze_references\"),\n\t\tcheck: nonNegativeInt,\n\t\tafter: z.string().nullable(),\n\t}),\n\tz.strictObject({ stage: z.literal(\"analyze_target\") }),\n]);\nexport type AnalysisCursor = z.infer<typeof analysisCursorSchema>;\n\nconst recordStage = <S extends string>(stage: S) =>\n\tz.strictObject({ stage: z.literal(stage), position: streamPositionSchema });\n\nexport const importCursorSchema = z.discriminatedUnion(\"stage\", [\n\tz.strictObject({ stage: z.literal(\"reserve\") }),\n\tz.strictObject({ stage: z.literal(\"clear_scaffold\"), step: nonNegativeInt }),\n\trecordStage(\"schema\"),\n\trecordStage(\"media\"),\n\trecordStage(\"terms_bylines\"),\n\trecordStage(\"content\"),\n\trecordStage(\"relations\"),\n\trecordStage(\"presentation\"),\n\tz.strictObject({\n\t\tstage: z.literal(\"rebuild\"),\n\t\tstep: z.enum(REBUILD_STEPS),\n\t\tafter: z.string().nullable(),\n\t}),\n\tz.strictObject({\n\t\tstage: z.literal(\"verify\"),\n\t\tposition: streamPositionSchema.nullable(),\n\t\tmediaAfter: z.string().nullable(),\n\t\tmismatches: nonNegativeInt,\n\t\t/** The verifier's own resumable state, stored as given. */\n\t\tverifier: z.json().optional(),\n\t}),\n]);\nexport type ImportCursor = z.infer<typeof importCursorSchema>;\n\nexport const transferCursorSchema = z.union([\n\texportCursorSchema,\n\tanalysisCursorSchema,\n\timportCursorSchema,\n]);\nexport type TransferCursor = ExportCursor | AnalysisCursor | ImportCursor;\n\n/**\n * Bounded progress summary shown by status endpoints. `done` of `total`\n * counts stages (and, for an export, record kinds). `records` is the number\n * of records an export has written so far; the byte counts cover package\n * files once they are known.\n */\nexport const transferProgressSchema = z.strictObject({\n\tdone: nonNegativeInt,\n\ttotal: nonNegativeInt,\n\trecords: nonNegativeInt.optional(),\n\tbytesDone: nonNegativeInt.optional(),\n\tbytesTotal: nonNegativeInt.optional(),\n});\nexport type TransferProgress = z.infer<typeof transferProgressSchema>;\n","/**\n * Database-clock timestamps for transfer state. Every lease and expiry\n * comparison runs in SQL against the database clock, never a worker clock,\n * and every stored timestamp uses the sortable `YYYY-MM-DDTHH:MM:SS.sssZ`\n * form so plain string comparison orders them.\n */\n\nimport { sql, type Kysely, type RawBuilder } from \"kysely\";\n\nimport { isPostgres } from \"../../database/dialect-helpers.js\";\nimport type { Database } from \"../../database/types.js\";\n\ntype AnyKysely = Kysely<Database>;\n\nexport function timestampOffset(db: AnyKysely, seconds: number): RawBuilder<string> {\n\tif (!Number.isFinite(seconds)) throw new RangeError(\"Invalid timestamp offset\");\n\tif (isPostgres(db)) {\n\t\treturn sql<string>`to_char(\n\t\t\tclock_timestamp() AT TIME ZONE 'UTC' + (${seconds} * interval '1 second'),\n\t\t\t'YYYY-MM-DD\"T\"HH24:MI:SS.MS\"Z\"'\n\t\t)`;\n\t}\n\treturn sql<string>`strftime('%Y-%m-%dT%H:%M:%fZ', 'now', ${`${seconds >= 0 ? \"+\" : \"\"}${seconds} seconds`})`;\n}\n\nexport function timestampNow(db: AnyKysely): RawBuilder<string> {\n\treturn timestampOffset(db, 0);\n}\n\n/** `column <= now` */\nexport function timestampIsDue(db: AnyKysely, column: string): RawBuilder<boolean> {\n\treturn isPostgres(db)\n\t\t? sql<boolean>`${sql.ref(column)}::timestamptz <= clock_timestamp()`\n\t\t: sql<boolean>`${sql.ref(column)} <= strftime('%Y-%m-%dT%H:%M:%fZ', 'now')`;\n}\n\n/** `column > now` */\nexport function timestampIsLive(db: AnyKysely, column: string): RawBuilder<boolean> {\n\treturn isPostgres(db)\n\t\t? sql<boolean>`${sql.ref(column)}::timestamptz > clock_timestamp()`\n\t\t: sql<boolean>`${sql.ref(column)} > strftime('%Y-%m-%dT%H:%M:%fZ', 'now')`;\n}\n\n/** `column <= now - seconds` */\nexport function timestampIsOlderThan(\n\tdb: AnyKysely,\n\tcolumn: string,\n\tseconds: number,\n): RawBuilder<boolean> {\n\tif (!Number.isFinite(seconds) || seconds < 0) throw new RangeError(\"Invalid timestamp age\");\n\treturn isPostgres(db)\n\t\t? sql<boolean>`${sql.ref(column)}::timestamptz <= clock_timestamp() - (${seconds} * interval '1 second')`\n\t\t: sql<boolean>`${sql.ref(column)} <= strftime('%Y-%m-%dT%H:%M:%fZ', 'now', ${`-${seconds} seconds`})`;\n}\n","/**\n * One-time approval grants that let an MCP caller without a transfer scope\n * start an export or import.\n *\n * Flow: the MCP tool creates a `pending` approval and fails with\n * `TRANSFER_APPROVAL_REQUIRED { approvalId }`; an admin approves it in a\n * session (never via MCP or a token); the MCP caller retries with the\n * approval id, and `consume` atomically turns an `approved`, unexpired grant\n * whose binding matches into `consumed`; `restore` hands it back if the\n * operation then fails to start. Each grant is bound to the user it is for,\n * the action, and every digest it was created with.\n */\n\nimport type { Kysely, Selectable } from \"kysely\";\nimport { ulid } from \"ulidx\";\n\nimport type { Database, TransferApprovalTable } from \"../../database/types.js\";\nimport { TRANSFER_APPROVAL_ACTIONS, type TransferApprovalAction } from \"../auth.js\";\nimport { TransferError } from \"../errors.js\";\nimport { isSha256Digest, type Sha256Digest } from \"../format/digest.js\";\nimport { TRANSFER_LIMITS } from \"../format/limits.js\";\nimport { timestampIsDue, timestampIsLive, timestampNow, timestampOffset } from \"./time.js\";\n\nexport const APPROVAL_STATUSES = [\"pending\", \"approved\", \"denied\", \"consumed\", \"expired\"] as const;\nexport type ApprovalStatus = (typeof APPROVAL_STATUSES)[number];\n\nexport interface TransferApproval {\n\tid: string;\n\tstatus: ApprovalStatus;\n\taction: TransferApprovalAction;\n\tuserId: string;\n\trequestedByTokenId: string | null;\n\tapprovedBy: string | null;\n\toperationId: string | null;\n\tparamsDigest: Sha256Digest | null;\n\tpackageDigest: Sha256Digest | null;\n\tplanDigest: Sha256Digest | null;\n\texpiresAt: string;\n\tcreatedAt: string;\n\tdecidedAt: string | null;\n\tconsumedAt: string | null;\n}\n\nexport interface ApprovalBinding {\n\tuserId: string;\n\taction: TransferApprovalAction;\n\toperationId?: string;\n\tparamsDigest?: Sha256Digest;\n\tpackageDigest?: Sha256Digest;\n\tplanDigest?: Sha256Digest;\n}\n\nconst STATUS_SET: ReadonlySet<string> = new Set(APPROVAL_STATUSES);\nconst ACTION_SET: ReadonlySet<string> = new Set(TRANSFER_APPROVAL_ACTIONS);\n\nfunction isApprovalStatus(value: string): value is ApprovalStatus {\n\treturn STATUS_SET.has(value);\n}\n\nfunction isApprovalAction(value: string): value is TransferApprovalAction {\n\treturn ACTION_SET.has(value);\n}\n\nfunction toApproval(row: Selectable<TransferApprovalTable>): TransferApproval {\n\tconst { status, action } = row;\n\tif (!isApprovalStatus(status) || !isApprovalAction(action)) {\n\t\tthrow new TransferError(\"TRANSFER_APPROVAL_INVALID\", \"Unknown approval status or action\");\n\t}\n\treturn {\n\t\tid: row.id,\n\t\tstatus,\n\t\taction,\n\t\tuserId: row.user_id,\n\t\trequestedByTokenId: row.requested_by_token_id,\n\t\tapprovedBy: row.approved_by,\n\t\toperationId: row.operation_id,\n\t\tparamsDigest: isSha256Digest(row.params_digest) ? row.params_digest : null,\n\t\tpackageDigest: isSha256Digest(row.package_digest) ? row.package_digest : null,\n\t\tplanDigest: isSha256Digest(row.plan_digest) ? row.plan_digest : null,\n\t\texpiresAt: row.expires_at,\n\t\tcreatedAt: row.created_at,\n\t\tdecidedAt: row.decided_at,\n\t\tconsumedAt: row.consumed_at,\n\t};\n}\n\ntype BoundColumn =\n\t| \"operation_id\"\n\t| \"params_digest\"\n\t| \"package_digest\"\n\t| \"plan_digest\"\n\t| \"requested_by_token_id\";\n\n/** Every column a grant binds besides user and action, with the value it must hold (undefined = NULL). */\nfunction boundColumns(\n\tbinding: ApprovalBinding & { tokenId?: string },\n): ReadonlyArray<readonly [BoundColumn, string | undefined]> {\n\treturn [\n\t\t[\"operation_id\", binding.operationId],\n\t\t[\"params_digest\", binding.paramsDigest],\n\t\t[\"package_digest\", binding.packageDigest],\n\t\t[\"plan_digest\", binding.planDigest],\n\t\t[\"requested_by_token_id\", binding.tokenId],\n\t];\n}\n\nfunction invalid(): TransferError {\n\treturn new TransferError(\n\t\t\"TRANSFER_APPROVAL_INVALID\",\n\t\t\"Approval is missing, expired, or does not match\",\n\t);\n}\n\nexport class TransferApprovalRepository {\n\tconstructor(private readonly db: Kysely<Database>) {}\n\n\tasync createPending(\n\t\tinput: ApprovalBinding & { requestedByTokenId?: string; ttlSeconds?: number },\n\t): Promise<TransferApproval> {\n\t\tif (input.action === \"import\" && (!input.packageDigest || !input.planDigest)) {\n\t\t\tthrow new TransferError(\n\t\t\t\t\"TRANSFER_APPROVAL_INVALID\",\n\t\t\t\t\"An import approval must bind a package digest and a plan digest\",\n\t\t\t);\n\t\t}\n\t\tconst row = await this.db\n\t\t\t.insertInto(\"_emdash_transfer_approvals\")\n\t\t\t.values({\n\t\t\t\tid: ulid(),\n\t\t\t\tstatus: \"pending\",\n\t\t\t\taction: input.action,\n\t\t\t\tuser_id: input.userId,\n\t\t\t\trequested_by_token_id: input.requestedByTokenId ?? null,\n\t\t\t\tapproved_by: null,\n\t\t\t\toperation_id: input.operationId ?? null,\n\t\t\t\tparams_digest: input.paramsDigest ?? null,\n\t\t\t\tpackage_digest: input.packageDigest ?? null,\n\t\t\t\tplan_digest: input.planDigest ?? null,\n\t\t\t\texpires_at: timestampOffset(\n\t\t\t\t\tthis.db,\n\t\t\t\t\tinput.ttlSeconds ?? TRANSFER_LIMITS.approvalTtlSeconds,\n\t\t\t\t),\n\t\t\t\tdecided_at: null,\n\t\t\t\tconsumed_at: null,\n\t\t\t})\n\t\t\t.returningAll()\n\t\t\t.executeTakeFirstOrThrow();\n\t\treturn toApproval(row);\n\t}\n\n\tasync get(id: string): Promise<TransferApproval | null> {\n\t\tconst row = await this.db\n\t\t\t.selectFrom(\"_emdash_transfer_approvals\")\n\t\t\t.selectAll()\n\t\t\t.where(\"id\", \"=\", id)\n\t\t\t.executeTakeFirst();\n\t\treturn row ? toApproval(row) : null;\n\t}\n\n\t/**\n\t * Approve a pending, unexpired grant. The grant then stays usable for the\n\t * approval TTL from now.\n\t */\n\tasync approve(\n\t\tid: string,\n\t\tapprovedBy: string,\n\t\toptions: { ttlSeconds?: number } = {},\n\t): Promise<TransferApproval> {\n\t\treturn this.decide(id, \"approved\", approvedBy, options.ttlSeconds);\n\t}\n\n\tasync deny(id: string, deniedBy: string): Promise<TransferApproval> {\n\t\treturn this.decide(id, \"denied\", deniedBy);\n\t}\n\n\tprivate async decide(\n\t\tid: string,\n\t\tstatus: \"approved\" | \"denied\",\n\t\tdecidedBy: string,\n\t\tttlSeconds?: number,\n\t): Promise<TransferApproval> {\n\t\tconst now = timestampNow(this.db);\n\t\tconst row = await this.db\n\t\t\t.updateTable(\"_emdash_transfer_approvals\")\n\t\t\t.set({\n\t\t\t\tstatus,\n\t\t\t\tapproved_by: decidedBy,\n\t\t\t\tdecided_at: now,\n\t\t\t\t...(status === \"approved\"\n\t\t\t\t\t? {\n\t\t\t\t\t\t\texpires_at: timestampOffset(\n\t\t\t\t\t\t\t\tthis.db,\n\t\t\t\t\t\t\t\tttlSeconds ?? TRANSFER_LIMITS.approvalTtlSeconds,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t}\n\t\t\t\t\t: {}),\n\t\t\t})\n\t\t\t.where(\"id\", \"=\", id)\n\t\t\t.where(\"status\", \"=\", \"pending\")\n\t\t\t.where(timestampIsLive(this.db, \"expires_at\"))\n\t\t\t.returningAll()\n\t\t\t.executeTakeFirst();\n\t\tif (!row) throw invalid();\n\t\treturn toApproval(row);\n\t}\n\n\t/**\n\t * Consume an approved grant in one statement. Every digest or operation id\n\t * the grant was created with must be supplied and equal; a grant created\n\t * without one must be consumed without it. The same holds for the token:\n\t * a grant requested by token `T` can only be consumed by a caller\n\t * authenticated with `T` (pass `tokenId`), and a grant requested without a\n\t * token only by a caller without one. Throws `TRANSFER_APPROVAL_INVALID`\n\t * otherwise.\n\t */\n\tasync consume(\n\t\tid: string,\n\t\tbinding: ApprovalBinding & { tokenId?: string },\n\t): Promise<TransferApproval> {\n\t\tconst now = timestampNow(this.db);\n\t\tlet query = this.db\n\t\t\t.updateTable(\"_emdash_transfer_approvals\")\n\t\t\t.set({ status: \"consumed\", consumed_at: now })\n\t\t\t.where(\"id\", \"=\", id)\n\t\t\t.where(\"status\", \"=\", \"approved\")\n\t\t\t.where(timestampIsLive(this.db, \"expires_at\"))\n\t\t\t.where(\"user_id\", \"=\", binding.userId)\n\t\t\t.where(\"action\", \"=\", binding.action);\n\t\tfor (const [column, value] of boundColumns(binding)) {\n\t\t\tquery =\n\t\t\t\tvalue === undefined ? query.where(column, \"is\", null) : query.where(column, \"=\", value);\n\t\t}\n\t\tconst row = await query.returningAll().executeTakeFirst();\n\t\tif (!row) throw invalid();\n\t\treturn toApproval(row);\n\t}\n\n\t/**\n\t * Return a grant `consume` took back to `approved`, for when the\n\t * operation it was consumed for could not be started. Its expiry is\n\t * unchanged, so an expired grant stays unusable.\n\t */\n\tasync restore(id: string): Promise<void> {\n\t\tawait this.db\n\t\t\t.updateTable(\"_emdash_transfer_approvals\")\n\t\t\t.set({ status: \"approved\", consumed_at: null })\n\t\t\t.where(\"id\", \"=\", id)\n\t\t\t.where(\"status\", \"=\", \"consumed\")\n\t\t\t.execute();\n\t}\n\n\t/**\n\t * The newest pending, unexpired grant with exactly this binding, so a\n\t * caller retrying without an approval id reuses its open request instead\n\t * of adding another one for an admin to review.\n\t */\n\tasync findPending(\n\t\tbinding: ApprovalBinding & { tokenId?: string },\n\t): Promise<TransferApproval | null> {\n\t\tlet query = this.db\n\t\t\t.selectFrom(\"_emdash_transfer_approvals\")\n\t\t\t.selectAll()\n\t\t\t.where(\"status\", \"=\", \"pending\")\n\t\t\t.where(timestampIsLive(this.db, \"expires_at\"))\n\t\t\t.where(\"user_id\", \"=\", binding.userId)\n\t\t\t.where(\"action\", \"=\", binding.action);\n\t\tfor (const [column, value] of boundColumns(binding)) {\n\t\t\tquery =\n\t\t\t\tvalue === undefined ? query.where(column, \"is\", null) : query.where(column, \"=\", value);\n\t\t}\n\t\tconst row = await query.orderBy(\"created_at\", \"desc\").orderBy(\"id\", \"desc\").executeTakeFirst();\n\t\treturn row ? toApproval(row) : null;\n\t}\n\n\t/**\n\t * Whether a grant for `action` on `operationId` was consumed by this user\n\t * authenticated with this token (or, without `tokenId`, without a token).\n\t */\n\tasync hasConsumed(binding: {\n\t\tuserId: string;\n\t\taction: TransferApprovalAction;\n\t\toperationId: string;\n\t\ttokenId?: string;\n\t}): Promise<boolean> {\n\t\tlet query = this.db\n\t\t\t.selectFrom(\"_emdash_transfer_approvals\")\n\t\t\t.select(\"id\")\n\t\t\t.where(\"status\", \"=\", \"consumed\")\n\t\t\t.where(\"user_id\", \"=\", binding.userId)\n\t\t\t.where(\"action\", \"=\", binding.action)\n\t\t\t.where(\"operation_id\", \"=\", binding.operationId);\n\t\tquery =\n\t\t\tbinding.tokenId === undefined\n\t\t\t\t? query.where(\"requested_by_token_id\", \"is\", null)\n\t\t\t\t: query.where(\"requested_by_token_id\", \"=\", binding.tokenId);\n\t\treturn (await query.executeTakeFirst()) !== undefined;\n\t}\n\n\t/**\n\t * Record the operation a consumed export grant created. Export grants are\n\t * requested before the operation exists, so they bind no operation id\n\t * until they are used.\n\t */\n\tasync linkOperation(id: string, operationId: string): Promise<void> {\n\t\tawait this.db\n\t\t\t.updateTable(\"_emdash_transfer_approvals\")\n\t\t\t.set({ operation_id: operationId })\n\t\t\t.where(\"id\", \"=\", id)\n\t\t\t.where(\"status\", \"=\", \"consumed\")\n\t\t\t.where(\"action\", \"=\", \"export\")\n\t\t\t.where(\"operation_id\", \"is\", null)\n\t\t\t.execute();\n\t}\n\n\t/** Approvals newest first. */\n\tasync list(\n\t\toptions: {\n\t\t\tuserId?: string;\n\t\t\tstatus?: ApprovalStatus;\n\t\t\tlimit?: number;\n\t\t\tcursor?: { createdAt: string; id: string };\n\t\t} = {},\n\t): Promise<{ items: TransferApproval[]; next?: { createdAt: string; id: string } }> {\n\t\tconst limit = Math.min(Math.max(options.limit ?? 50, 1), 100);\n\t\tlet query = this.db.selectFrom(\"_emdash_transfer_approvals\").selectAll();\n\t\tif (options.userId) query = query.where(\"user_id\", \"=\", options.userId);\n\t\tif (options.status) query = query.where(\"status\", \"=\", options.status);\n\t\tconst cursor = options.cursor;\n\t\tif (cursor) {\n\t\t\tquery = query.where((eb) =>\n\t\t\t\teb.or([\n\t\t\t\t\teb(\"created_at\", \"<\", cursor.createdAt),\n\t\t\t\t\teb.and([eb(\"created_at\", \"=\", cursor.createdAt), eb(\"id\", \"<\", cursor.id)]),\n\t\t\t\t]),\n\t\t\t);\n\t\t}\n\t\tconst rows = await query\n\t\t\t.orderBy(\"created_at\", \"desc\")\n\t\t\t.orderBy(\"id\", \"desc\")\n\t\t\t.limit(limit + 1)\n\t\t\t.execute();\n\t\tconst items = rows.slice(0, limit).map(toApproval);\n\t\tconst last = items.at(-1);\n\t\treturn rows.length > limit && last\n\t\t\t? { items, next: { createdAt: last.createdAt, id: last.id } }\n\t\t\t: { items };\n\t}\n\n\t/** Mark pending and approved grants past their expiry as `expired`; returns how many. */\n\tasync expireDue(): Promise<number> {\n\t\tconst result = await this.db\n\t\t\t.updateTable(\"_emdash_transfer_approvals\")\n\t\t\t.set({ status: \"expired\" })\n\t\t\t.where(\"status\", \"in\", [\"pending\", \"approved\"])\n\t\t\t.where(timestampIsDue(this.db, \"expires_at\"))\n\t\t\t.executeTakeFirst();\n\t\treturn Number(result.numUpdatedRows ?? 0n);\n\t}\n}\n"],"mappings":"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"}