emdash 1.3.1 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1338) hide show
  1. package/dist/action-token-SK8zyN7w.mjs +26 -0
  2. package/dist/action-token-SK8zyN7w.mjs.map +1 -0
  3. package/dist/activation-CGlyigmg.mjs +387 -0
  4. package/dist/activation-CGlyigmg.mjs.map +1 -0
  5. package/dist/adapters-D9a1PfqH.d.mts +173 -0
  6. package/dist/adapters-D9a1PfqH.d.mts.map +1 -0
  7. package/dist/after-32yNRvd2.mjs +99 -0
  8. package/dist/after-32yNRvd2.mjs.map +1 -0
  9. package/dist/allowed-origins-CEug-p0t.mjs +116 -0
  10. package/dist/allowed-origins-CEug-p0t.mjs.map +1 -0
  11. package/dist/api/route-utils.d.mts +4 -4
  12. package/dist/api/route-utils.mjs +52 -53
  13. package/dist/api/route-utils.mjs.map +1 -1
  14. package/dist/api/schemas/index.d.mts +1 -1
  15. package/dist/api/schemas/index.mjs +9 -9
  16. package/dist/api--PYoyeTo.mjs +5098 -0
  17. package/dist/api--PYoyeTo.mjs.map +1 -0
  18. package/dist/api-tokens-DqSlkDVI.mjs +9 -0
  19. package/dist/api-tokens-DqSlkDVI.mjs.map +1 -0
  20. package/dist/api-tokens-GNCsIegW.mjs +173 -0
  21. package/dist/api-tokens-GNCsIegW.mjs.map +1 -0
  22. package/dist/apply-DVnupNeS.mjs +1760 -0
  23. package/dist/apply-DVnupNeS.mjs.map +1 -0
  24. package/dist/approvals-DTtYSB27.mjs +460 -0
  25. package/dist/approvals-DTtYSB27.mjs.map +1 -0
  26. package/dist/artifact-fetch-DIh7iyOV.mjs +659 -0
  27. package/dist/artifact-fetch-DIh7iyOV.mjs.map +1 -0
  28. package/dist/artifacts-Dvdp2KK-.mjs +323 -0
  29. package/dist/artifacts-Dvdp2KK-.mjs.map +1 -0
  30. package/dist/astro/index.d.mts +14 -13
  31. package/dist/astro/index.d.mts.map +1 -1
  32. package/dist/astro/index.mjs +52 -12
  33. package/dist/astro/index.mjs.map +1 -1
  34. package/dist/astro/middleware/auth.d.mts +12 -11
  35. package/dist/astro/middleware/auth.d.mts.map +1 -1
  36. package/dist/astro/middleware/auth.mjs +13 -11
  37. package/dist/astro/middleware/auth.mjs.map +1 -1
  38. package/dist/astro/middleware/media-usage-write-fence.mjs +5 -5
  39. package/dist/astro/middleware/redirect.mjs +17 -17
  40. package/dist/astro/middleware/request-context.mjs +12 -7
  41. package/dist/astro/middleware/request-context.mjs.map +1 -1
  42. package/dist/astro/middleware/setup.mjs +1 -1
  43. package/dist/astro/middleware.d.mts +12 -11
  44. package/dist/astro/middleware.d.mts.map +1 -1
  45. package/dist/astro/middleware.mjs +116 -116
  46. package/dist/astro/routes/api/admin/allowed-domains/_domain_.mjs +13 -13
  47. package/dist/astro/routes/api/admin/allowed-domains/index.mjs +13 -13
  48. package/dist/astro/routes/api/admin/api-tokens/_id_.mjs +6 -6
  49. package/dist/astro/routes/api/admin/api-tokens/index.mjs +7 -7
  50. package/dist/astro/routes/api/admin/byline-fields/_slug_/usage.mjs +5 -5
  51. package/dist/astro/routes/api/admin/byline-fields/_slug_.mjs +15 -15
  52. package/dist/astro/routes/api/admin/byline-fields/index.mjs +15 -15
  53. package/dist/astro/routes/api/admin/byline-fields/reorder.mjs +15 -15
  54. package/dist/astro/routes/api/admin/bylines/_id_/index.mjs +23 -24
  55. package/dist/astro/routes/api/admin/bylines/_id_/index.mjs.map +1 -1
  56. package/dist/astro/routes/api/admin/bylines/_id_/translations.mjs +23 -24
  57. package/dist/astro/routes/api/admin/bylines/_id_/translations.mjs.map +1 -1
  58. package/dist/astro/routes/api/admin/bylines/index.mjs +23 -24
  59. package/dist/astro/routes/api/admin/bylines/index.mjs.map +1 -1
  60. package/dist/astro/routes/api/admin/comments/_id_/status.mjs +19 -19
  61. package/dist/astro/routes/api/admin/comments/_id_.mjs +8 -8
  62. package/dist/astro/routes/api/admin/comments/bulk.mjs +18 -18
  63. package/dist/astro/routes/api/admin/comments/counts.mjs +8 -8
  64. package/dist/astro/routes/api/admin/comments/index.mjs +18 -18
  65. package/dist/astro/routes/api/admin/core-update.mjs +7 -7
  66. package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.mjs +5 -5
  67. package/dist/astro/routes/api/admin/hooks/exclusive/index.mjs +4 -4
  68. package/dist/astro/routes/api/admin/media-usage/activation.mjs +20 -20
  69. package/dist/astro/routes/api/admin/media-usage/collection-deletions/index.mjs +21 -21
  70. package/dist/astro/routes/api/admin/media-usage/collection-deletions/retry.mjs +21 -21
  71. package/dist/astro/routes/api/admin/media-usage/progress.mjs +24 -24
  72. package/dist/astro/routes/api/admin/media-usage/repair.mjs +30 -30
  73. package/dist/astro/routes/api/admin/media-usage/work/index.mjs +21 -21
  74. package/dist/astro/routes/api/admin/media-usage/work/retry.mjs +21 -21
  75. package/dist/astro/routes/api/admin/oauth-clients/_id_.mjs +5 -5
  76. package/dist/astro/routes/api/admin/oauth-clients/index.mjs +5 -5
  77. package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs +8 -8
  78. package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs +8 -8
  79. package/dist/astro/routes/api/admin/plugins/_id_/index.mjs +74 -75
  80. package/dist/astro/routes/api/admin/plugins/_id_/index.mjs.map +1 -1
  81. package/dist/astro/routes/api/admin/plugins/_id_/mcp.mjs +6 -6
  82. package/dist/astro/routes/api/admin/plugins/_id_/settings.mjs +73 -74
  83. package/dist/astro/routes/api/admin/plugins/_id_/settings.mjs.map +1 -1
  84. package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs +73 -74
  85. package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs.map +1 -1
  86. package/dist/astro/routes/api/admin/plugins/_id_/update.mjs +84 -85
  87. package/dist/astro/routes/api/admin/plugins/_id_/update.mjs.map +1 -1
  88. package/dist/astro/routes/api/admin/plugins/index.mjs +74 -75
  89. package/dist/astro/routes/api/admin/plugins/index.mjs.map +1 -1
  90. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.mjs +6 -6
  91. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs +73 -74
  92. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs.map +1 -1
  93. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs +83 -84
  94. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs.map +1 -1
  95. package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs +73 -74
  96. package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs.map +1 -1
  97. package/dist/astro/routes/api/admin/plugins/registry/_id_/uninstall.mjs +73 -74
  98. package/dist/astro/routes/api/admin/plugins/registry/_id_/uninstall.mjs.map +1 -1
  99. package/dist/astro/routes/api/admin/plugins/registry/_id_/update.mjs +85 -86
  100. package/dist/astro/routes/api/admin/plugins/registry/_id_/update.mjs.map +1 -1
  101. package/dist/astro/routes/api/admin/plugins/registry/artifact.mjs +8 -8
  102. package/dist/astro/routes/api/admin/plugins/registry/install.mjs +75 -76
  103. package/dist/astro/routes/api/admin/plugins/registry/install.mjs.map +1 -1
  104. package/dist/astro/routes/api/admin/plugins/registry/publisher-handle.mjs +6 -6
  105. package/dist/astro/routes/api/admin/plugins/registry/verify.mjs +74 -75
  106. package/dist/astro/routes/api/admin/plugins/registry/verify.mjs.map +1 -1
  107. package/dist/astro/routes/api/admin/plugins/updates.mjs +73 -74
  108. package/dist/astro/routes/api/admin/plugins/updates.mjs.map +1 -1
  109. package/dist/astro/routes/api/admin/scheduled-policy-rejections/_collection_/_id_.mjs +5 -5
  110. package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs +73 -74
  111. package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs.map +1 -1
  112. package/dist/astro/routes/api/admin/themes/marketplace/_id_/thumbnail.mjs +6 -6
  113. package/dist/astro/routes/api/admin/themes/marketplace/index.mjs +73 -74
  114. package/dist/astro/routes/api/admin/themes/marketplace/index.mjs.map +1 -1
  115. package/dist/astro/routes/api/admin/transfer/_...path_.mjs +3 -3
  116. package/dist/astro/routes/api/admin/transfer/approvals/_id_/approve.mjs +40 -41
  117. package/dist/astro/routes/api/admin/transfer/approvals/_id_/approve.mjs.map +1 -1
  118. package/dist/astro/routes/api/admin/transfer/approvals/_id_/deny.mjs +40 -41
  119. package/dist/astro/routes/api/admin/transfer/approvals/_id_/deny.mjs.map +1 -1
  120. package/dist/astro/routes/api/admin/transfer/approvals/index.mjs +42 -43
  121. package/dist/astro/routes/api/admin/transfer/approvals/index.mjs.map +1 -1
  122. package/dist/astro/routes/api/admin/transfer/capabilities.mjs +42 -43
  123. package/dist/astro/routes/api/admin/transfer/capabilities.mjs.map +1 -1
  124. package/dist/astro/routes/api/admin/transfer/exports/_id_/advance.mjs +42 -43
  125. package/dist/astro/routes/api/admin/transfer/exports/_id_/advance.mjs.map +1 -1
  126. package/dist/astro/routes/api/admin/transfer/exports/_id_/archive.mjs +43 -44
  127. package/dist/astro/routes/api/admin/transfer/exports/_id_/archive.mjs.map +1 -1
  128. package/dist/astro/routes/api/admin/transfer/exports/_id_/files/_...path_.mjs +43 -44
  129. package/dist/astro/routes/api/admin/transfer/exports/_id_/files/_...path_.mjs.map +1 -1
  130. package/dist/astro/routes/api/admin/transfer/exports/_id_/index.mjs +42 -43
  131. package/dist/astro/routes/api/admin/transfer/exports/_id_/index.mjs.map +1 -1
  132. package/dist/astro/routes/api/admin/transfer/exports/_id_/manifest.mjs +43 -44
  133. package/dist/astro/routes/api/admin/transfer/exports/_id_/manifest.mjs.map +1 -1
  134. package/dist/astro/routes/api/admin/transfer/exports/index.mjs +44 -45
  135. package/dist/astro/routes/api/admin/transfer/exports/index.mjs.map +1 -1
  136. package/dist/astro/routes/api/admin/transfer/imports/_id_/abandon.mjs +42 -43
  137. package/dist/astro/routes/api/admin/transfer/imports/_id_/abandon.mjs.map +1 -1
  138. package/dist/astro/routes/api/admin/transfer/imports/_id_/advance.mjs +42 -43
  139. package/dist/astro/routes/api/admin/transfer/imports/_id_/advance.mjs.map +1 -1
  140. package/dist/astro/routes/api/admin/transfer/imports/_id_/analyze.mjs +44 -45
  141. package/dist/astro/routes/api/admin/transfer/imports/_id_/analyze.mjs.map +1 -1
  142. package/dist/astro/routes/api/admin/transfer/imports/_id_/cancel.mjs +42 -43
  143. package/dist/astro/routes/api/admin/transfer/imports/_id_/cancel.mjs.map +1 -1
  144. package/dist/astro/routes/api/admin/transfer/imports/_id_/execute.mjs +44 -45
  145. package/dist/astro/routes/api/admin/transfer/imports/_id_/execute.mjs.map +1 -1
  146. package/dist/astro/routes/api/admin/transfer/imports/_id_/files/_...path_.mjs +42 -43
  147. package/dist/astro/routes/api/admin/transfer/imports/_id_/files/_...path_.mjs.map +1 -1
  148. package/dist/astro/routes/api/admin/transfer/imports/_id_/index.mjs +42 -43
  149. package/dist/astro/routes/api/admin/transfer/imports/_id_/index.mjs.map +1 -1
  150. package/dist/astro/routes/api/admin/transfer/imports/_id_/missing.mjs +44 -45
  151. package/dist/astro/routes/api/admin/transfer/imports/_id_/missing.mjs.map +1 -1
  152. package/dist/astro/routes/api/admin/transfer/imports/_id_/plan.mjs +42 -43
  153. package/dist/astro/routes/api/admin/transfer/imports/_id_/plan.mjs.map +1 -1
  154. package/dist/astro/routes/api/admin/transfer/imports/_id_/receipt.mjs +42 -43
  155. package/dist/astro/routes/api/admin/transfer/imports/_id_/receipt.mjs.map +1 -1
  156. package/dist/astro/routes/api/admin/transfer/imports/index.mjs +44 -45
  157. package/dist/astro/routes/api/admin/transfer/imports/index.mjs.map +1 -1
  158. package/dist/astro/routes/api/admin/users/_id_/disable.mjs +3 -3
  159. package/dist/astro/routes/api/admin/users/_id_/enable.mjs +3 -3
  160. package/dist/astro/routes/api/admin/users/_id_/index.mjs +13 -13
  161. package/dist/astro/routes/api/admin/users/_id_/send-recovery.mjs +5 -5
  162. package/dist/astro/routes/api/admin/users/index.mjs +13 -13
  163. package/dist/astro/routes/api/auth/dev-bypass.mjs +5 -5
  164. package/dist/astro/routes/api/auth/handover.mjs +6 -6
  165. package/dist/astro/routes/api/auth/invite/accept.mjs +3 -3
  166. package/dist/astro/routes/api/auth/invite/complete.mjs +19 -19
  167. package/dist/astro/routes/api/auth/invite/index.mjs +15 -15
  168. package/dist/astro/routes/api/auth/invite/register-options.mjs +16 -16
  169. package/dist/astro/routes/api/auth/logout.mjs +4 -4
  170. package/dist/astro/routes/api/auth/magic-link/send.mjs +18 -18
  171. package/dist/astro/routes/api/auth/magic-link/verify.mjs +15 -15
  172. package/dist/astro/routes/api/auth/me.mjs +14 -14
  173. package/dist/astro/routes/api/auth/mode.mjs +4 -4
  174. package/dist/astro/routes/api/auth/oauth/_provider_/callback.mjs +9 -9
  175. package/dist/astro/routes/api/auth/oauth/_provider_.mjs +2 -2
  176. package/dist/astro/routes/api/auth/passkey/_id_.mjs +13 -13
  177. package/dist/astro/routes/api/auth/passkey/index.mjs +3 -3
  178. package/dist/astro/routes/api/auth/passkey/options.mjs +19 -19
  179. package/dist/astro/routes/api/auth/passkey/register/options.mjs +16 -16
  180. package/dist/astro/routes/api/auth/passkey/register/verify.mjs +17 -17
  181. package/dist/astro/routes/api/auth/passkey/verify.mjs +19 -19
  182. package/dist/astro/routes/api/auth/signup/complete.mjs +19 -19
  183. package/dist/astro/routes/api/auth/signup/request.mjs +17 -17
  184. package/dist/astro/routes/api/auth/signup/verify.mjs +3 -3
  185. package/dist/astro/routes/api/calendar.mjs +14 -14
  186. package/dist/astro/routes/api/comments/_collection_/_contentId_/index.mjs +14 -14
  187. package/dist/astro/routes/api/comments/_collection_/_contentId_/reactions.mjs +20 -20
  188. package/dist/astro/routes/api/content/_collection_/_id_/compare.mjs +4 -4
  189. package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs +18 -18
  190. package/dist/astro/routes/api/content/_collection_/_id_/duplicate.mjs +4 -4
  191. package/dist/astro/routes/api/content/_collection_/_id_/lock.mjs +17 -17
  192. package/dist/astro/routes/api/content/_collection_/_id_/permanent.mjs +5 -5
  193. package/dist/astro/routes/api/content/_collection_/_id_/plugin-extensions/_pluginId_/_kind_/_extensionId_.mjs +10 -10
  194. package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs +33 -33
  195. package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs +18 -18
  196. package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/children.mjs +35 -35
  197. package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/parents.mjs +35 -35
  198. package/dist/astro/routes/api/content/_collection_/_id_/restore.mjs +5 -5
  199. package/dist/astro/routes/api/content/_collection_/_id_/revisions.mjs +4 -4
  200. package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs +18 -18
  201. package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs +26 -26
  202. package/dist/astro/routes/api/content/_collection_/_id_/translations.mjs +4 -4
  203. package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs +18 -18
  204. package/dist/astro/routes/api/content/_collection_/_id_.mjs +18 -18
  205. package/dist/astro/routes/api/content/_collection_/authors.mjs +4 -4
  206. package/dist/astro/routes/api/content/_collection_/index.mjs +14 -14
  207. package/dist/astro/routes/api/content/_collection_/trash.mjs +14 -14
  208. package/dist/astro/routes/api/dashboard.mjs +11 -11
  209. package/dist/astro/routes/api/dev/emails.mjs +4 -4
  210. package/dist/astro/routes/api/dev/scheduled-tasks.mjs +112 -112
  211. package/dist/astro/routes/api/health.mjs +5 -5
  212. package/dist/astro/routes/api/import/probe.d.mts +3 -2
  213. package/dist/astro/routes/api/import/probe.d.mts.map +1 -1
  214. package/dist/astro/routes/api/import/probe.mjs +28 -28
  215. package/dist/astro/routes/api/import/wordpress/analyze.d.mts +4 -3
  216. package/dist/astro/routes/api/import/wordpress/analyze.d.mts.map +1 -1
  217. package/dist/astro/routes/api/import/wordpress/analyze.mjs +6 -28
  218. package/dist/astro/routes/api/import/wordpress/analyze.mjs.map +1 -1
  219. package/dist/astro/routes/api/import/wordpress/execute.d.mts +12 -11
  220. package/dist/astro/routes/api/import/wordpress/execute.d.mts.map +1 -1
  221. package/dist/astro/routes/api/import/wordpress/execute.mjs +26 -27
  222. package/dist/astro/routes/api/import/wordpress/execute.mjs.map +1 -1
  223. package/dist/astro/routes/api/import/wordpress/media.d.mts +12 -11
  224. package/dist/astro/routes/api/import/wordpress/media.d.mts.map +1 -1
  225. package/dist/astro/routes/api/import/wordpress/media.mjs +18 -18
  226. package/dist/astro/routes/api/import/wordpress/prepare.mjs +19 -19
  227. package/dist/astro/routes/api/import/wordpress/prepare.mjs.map +1 -1
  228. package/dist/astro/routes/api/import/wordpress/rewrite-urls.d.mts +13 -12
  229. package/dist/astro/routes/api/import/wordpress/rewrite-urls.d.mts.map +1 -1
  230. package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs +29 -29
  231. package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs +28 -28
  232. package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts +12 -11
  233. package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts.map +1 -1
  234. package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs +38 -39
  235. package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs.map +1 -1
  236. package/dist/astro/routes/api/manifest.mjs +5 -5
  237. package/dist/astro/routes/api/mcp.mjs +96 -97
  238. package/dist/astro/routes/api/mcp.mjs.map +1 -1
  239. package/dist/astro/routes/api/media/_id_/confirm.mjs +19 -19
  240. package/dist/astro/routes/api/media/_id_/replace.mjs +15 -15
  241. package/dist/astro/routes/api/media/_id_/upload.mjs +8 -8
  242. package/dist/astro/routes/api/media/_id_/usage.mjs +32 -32
  243. package/dist/astro/routes/api/media/_id_.mjs +30 -30
  244. package/dist/astro/routes/api/media/asset/_id_/_filename_.mjs +5 -5
  245. package/dist/astro/routes/api/media/file/_...key_.d.mts.map +1 -1
  246. package/dist/astro/routes/api/media/file/_...key_.mjs +57 -11
  247. package/dist/astro/routes/api/media/file/_...key_.mjs.map +1 -1
  248. package/dist/astro/routes/api/media/folders/_id_.mjs +15 -15
  249. package/dist/astro/routes/api/media/folders/index.mjs +15 -15
  250. package/dist/astro/routes/api/media/providers/_providerId_/_itemId_.mjs +4 -4
  251. package/dist/astro/routes/api/media/providers/_providerId_/index.mjs +4 -4
  252. package/dist/astro/routes/api/media/providers/index.mjs +4 -4
  253. package/dist/astro/routes/api/media/upload-url.mjs +17 -17
  254. package/dist/astro/routes/api/media.mjs +34 -34
  255. package/dist/astro/routes/api/menus/_name_/items/_id_.mjs +20 -19
  256. package/dist/astro/routes/api/menus/_name_/items/_id_.mjs.map +1 -1
  257. package/dist/astro/routes/api/menus/_name_/items.mjs +20 -19
  258. package/dist/astro/routes/api/menus/_name_/items.mjs.map +1 -1
  259. package/dist/astro/routes/api/menus/_name_/reorder.mjs +20 -19
  260. package/dist/astro/routes/api/menus/_name_/reorder.mjs.map +1 -1
  261. package/dist/astro/routes/api/menus/_name_/translations.mjs +20 -19
  262. package/dist/astro/routes/api/menus/_name_/translations.mjs.map +1 -1
  263. package/dist/astro/routes/api/menus/_name_.mjs +20 -19
  264. package/dist/astro/routes/api/menus/_name_.mjs.map +1 -1
  265. package/dist/astro/routes/api/menus/index.mjs +20 -19
  266. package/dist/astro/routes/api/menus/index.mjs.map +1 -1
  267. package/dist/astro/routes/api/oauth/authorize.mjs +6 -6
  268. package/dist/astro/routes/api/oauth/device/authorize.mjs +7 -7
  269. package/dist/astro/routes/api/oauth/device/code.mjs +11 -11
  270. package/dist/astro/routes/api/oauth/device/token.mjs +10 -10
  271. package/dist/astro/routes/api/oauth/register.mjs +7 -7
  272. package/dist/astro/routes/api/oauth/token/refresh.mjs +7 -7
  273. package/dist/astro/routes/api/oauth/token/revoke.mjs +7 -7
  274. package/dist/astro/routes/api/oauth/token.d.mts.map +1 -1
  275. package/dist/astro/routes/api/oauth/token.mjs +8 -8
  276. package/dist/astro/routes/api/oauth/token.mjs.map +1 -1
  277. package/dist/astro/routes/api/openapi.json.mjs +20 -20
  278. package/dist/astro/routes/api/plugins/_pluginId_/_...path_.mjs +10 -10
  279. package/dist/astro/routes/api/redirects/404s/index.mjs +21 -21
  280. package/dist/astro/routes/api/redirects/404s/summary.mjs +21 -21
  281. package/dist/astro/routes/api/redirects/_id_.mjs +22 -22
  282. package/dist/astro/routes/api/redirects/index.mjs +22 -22
  283. package/dist/astro/routes/api/relations/_id_/index.mjs +35 -35
  284. package/dist/astro/routes/api/relations/index.mjs +35 -35
  285. package/dist/astro/routes/api/revisions/_revisionId_/index.mjs +4 -4
  286. package/dist/astro/routes/api/revisions/_revisionId_/restore.mjs +17 -17
  287. package/dist/astro/routes/api/schema/block-types/_slug_/index.mjs +73 -74
  288. package/dist/astro/routes/api/schema/block-types/_slug_/index.mjs.map +1 -1
  289. package/dist/astro/routes/api/schema/block-types/_slug_/versions/_version_/activate.mjs +73 -74
  290. package/dist/astro/routes/api/schema/block-types/_slug_/versions/_version_/activate.mjs.map +1 -1
  291. package/dist/astro/routes/api/schema/block-types/index.mjs +73 -74
  292. package/dist/astro/routes/api/schema/block-types/index.mjs.map +1 -1
  293. package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs +73 -74
  294. package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs.map +1 -1
  295. package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs +73 -74
  296. package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs.map +1 -1
  297. package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs +73 -74
  298. package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs.map +1 -1
  299. package/dist/astro/routes/api/schema/collections/_slug_/index.mjs +73 -74
  300. package/dist/astro/routes/api/schema/collections/_slug_/index.mjs.map +1 -1
  301. package/dist/astro/routes/api/schema/collections/index.mjs +73 -74
  302. package/dist/astro/routes/api/schema/collections/index.mjs.map +1 -1
  303. package/dist/astro/routes/api/schema/collections/reorder.mjs +73 -74
  304. package/dist/astro/routes/api/schema/collections/reorder.mjs.map +1 -1
  305. package/dist/astro/routes/api/schema/index.mjs +17 -17
  306. package/dist/astro/routes/api/schema/orphans/_slug_.mjs +73 -74
  307. package/dist/astro/routes/api/schema/orphans/_slug_.mjs.map +1 -1
  308. package/dist/astro/routes/api/schema/orphans/index.mjs +73 -74
  309. package/dist/astro/routes/api/schema/orphans/index.mjs.map +1 -1
  310. package/dist/astro/routes/api/search/enable.mjs +20 -19
  311. package/dist/astro/routes/api/search/enable.mjs.map +1 -1
  312. package/dist/astro/routes/api/search/index.mjs +19 -18
  313. package/dist/astro/routes/api/search/index.mjs.map +1 -1
  314. package/dist/astro/routes/api/search/rebuild.mjs +20 -19
  315. package/dist/astro/routes/api/search/rebuild.mjs.map +1 -1
  316. package/dist/astro/routes/api/search/stats.mjs +10 -9
  317. package/dist/astro/routes/api/search/stats.mjs.map +1 -1
  318. package/dist/astro/routes/api/search/suggest.mjs +19 -18
  319. package/dist/astro/routes/api/search/suggest.mjs.map +1 -1
  320. package/dist/astro/routes/api/sections/_slug_.mjs +19 -18
  321. package/dist/astro/routes/api/sections/_slug_.mjs.map +1 -1
  322. package/dist/astro/routes/api/sections/index.mjs +19 -18
  323. package/dist/astro/routes/api/sections/index.mjs.map +1 -1
  324. package/dist/astro/routes/api/settings/backups/archives/_name_.mjs +7 -7
  325. package/dist/astro/routes/api/settings/backups/archives/index.mjs +7 -7
  326. package/dist/astro/routes/api/settings/backups/export.mjs +7 -7
  327. package/dist/astro/routes/api/settings/backups/index.mjs +8 -8
  328. package/dist/astro/routes/api/settings/domain-notify.mjs +9 -9
  329. package/dist/astro/routes/api/settings/domain.mjs +21 -21
  330. package/dist/astro/routes/api/settings/email.mjs +5 -5
  331. package/dist/astro/routes/api/settings.mjs +27 -27
  332. package/dist/astro/routes/api/setup/admin-verify.mjs +22 -22
  333. package/dist/astro/routes/api/setup/admin.mjs +17 -17
  334. package/dist/astro/routes/api/setup/dev-bypass.mjs +45 -46
  335. package/dist/astro/routes/api/setup/dev-bypass.mjs.map +1 -1
  336. package/dist/astro/routes/api/setup/dev-reset.mjs +3 -3
  337. package/dist/astro/routes/api/setup/index.mjs +51 -52
  338. package/dist/astro/routes/api/setup/index.mjs.map +1 -1
  339. package/dist/astro/routes/api/setup/status.mjs +5 -5
  340. package/dist/astro/routes/api/site/domain-proof.mjs +15 -15
  341. package/dist/astro/routes/api/snapshot.mjs +10 -10
  342. package/dist/astro/routes/api/taxonomies/_name_/reorder.mjs +25 -25
  343. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs +25 -25
  344. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs +25 -25
  345. package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs +25 -25
  346. package/dist/astro/routes/api/taxonomies/_name_/translations.mjs +23 -23
  347. package/dist/astro/routes/api/taxonomies/_name_.mjs +25 -25
  348. package/dist/astro/routes/api/taxonomies/bulk-tag.mjs +36 -36
  349. package/dist/astro/routes/api/taxonomies/index.mjs +25 -25
  350. package/dist/astro/routes/api/themes/preview.mjs +7 -7
  351. package/dist/astro/routes/api/typegen.mjs +5 -5
  352. package/dist/astro/routes/api/visual-editing/action-token.mjs +7 -7
  353. package/dist/astro/routes/api/visual-editing/content/_collection_/_id_/publish.mjs +21 -21
  354. package/dist/astro/routes/api/visual-editing/toolbar-labels.mjs +3 -3
  355. package/dist/astro/routes/api/well-known/auth.mjs +1 -1
  356. package/dist/astro/routes/api/well-known/oauth-authorization-server.mjs +2 -2
  357. package/dist/astro/routes/api/well-known/oauth-protected-resource.mjs +2 -2
  358. package/dist/astro/routes/api/widget-areas/_name_/reorder.d.mts.map +1 -1
  359. package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs +28 -17
  360. package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs.map +1 -1
  361. package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.d.mts.map +1 -1
  362. package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs +24 -20
  363. package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs.map +1 -1
  364. package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs +23 -20
  365. package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs.map +1 -1
  366. package/dist/astro/routes/api/widget-areas/_name_.mjs +13 -10
  367. package/dist/astro/routes/api/widget-areas/_name_.mjs.map +1 -1
  368. package/dist/astro/routes/api/widget-areas/index.mjs +23 -20
  369. package/dist/astro/routes/api/widget-areas/index.mjs.map +1 -1
  370. package/dist/astro/routes/api/widget-components.mjs +4 -4
  371. package/dist/astro/routes/robots.txt.mjs +14 -14
  372. package/dist/astro/routes/sitemap-_collection_.xml.mjs +17 -17
  373. package/dist/astro/routes/sitemap.xml.mjs +15 -15
  374. package/dist/astro/types.d.mts +21 -19
  375. package/dist/astro/types.d.mts.map +1 -1
  376. package/dist/auth/providers/github.d.mts +1 -1
  377. package/dist/auth/providers/google.d.mts +1 -1
  378. package/dist/auth/providers/microsoft.d.mts +1 -1
  379. package/dist/authoritative-records-CQlB3JzE.mjs +5183 -0
  380. package/dist/authoritative-records-CQlB3JzE.mjs.map +1 -0
  381. package/dist/authorize-NJgp8kLI.mjs +74 -0
  382. package/dist/authorize-NJgp8kLI.mjs.map +1 -0
  383. package/dist/backup-8rPSJ28a.mjs +246 -0
  384. package/dist/backup-8rPSJ28a.mjs.map +1 -0
  385. package/dist/block-types-BbOrfnWs.mjs +132 -0
  386. package/dist/block-types-BbOrfnWs.mjs.map +1 -0
  387. package/dist/block-values-Dg0-8PPS.mjs +215 -0
  388. package/dist/block-values-Dg0-8PPS.mjs.map +1 -0
  389. package/dist/byline-DHJS-GGb.mjs +994 -0
  390. package/dist/byline-DHJS-GGb.mjs.map +1 -0
  391. package/dist/byline-fields-CiR8FvvF.mjs +280 -0
  392. package/dist/byline-fields-CiR8FvvF.mjs.map +1 -0
  393. package/dist/byline-fields-D6KYsEa7.mjs +123 -0
  394. package/dist/byline-fields-D6KYsEa7.mjs.map +1 -0
  395. package/dist/bylines-Bsg5cH4S.mjs +234 -0
  396. package/dist/bylines-Bsg5cH4S.mjs.map +1 -0
  397. package/dist/bylines-f_ZEc6Sn.mjs +150 -0
  398. package/dist/bylines-f_ZEc6Sn.mjs.map +1 -0
  399. package/dist/cache-5DHbpEWu.mjs +151 -0
  400. package/dist/cache-5DHbpEWu.mjs.map +1 -0
  401. package/dist/canonical-BudtH-Fx.mjs +174 -0
  402. package/dist/canonical-BudtH-Fx.mjs.map +1 -0
  403. package/dist/capture-triggers-BezAvWcB.mjs +362 -0
  404. package/dist/capture-triggers-BezAvWcB.mjs.map +1 -0
  405. package/dist/challenge-store-B1C0V4b3.mjs +51 -0
  406. package/dist/challenge-store-B1C0V4b3.mjs.map +1 -0
  407. package/dist/checksum-CEqvfxGX.mjs +162 -0
  408. package/dist/checksum-CEqvfxGX.mjs.map +1 -0
  409. package/dist/chrome-tags-BIKBMZYO.mjs +24 -0
  410. package/dist/chrome-tags-BIKBMZYO.mjs.map +1 -0
  411. package/dist/chunks-DiW8VMwz.mjs +25 -0
  412. package/dist/chunks-DiW8VMwz.mjs.map +1 -0
  413. package/dist/cli/index.mjs +52 -53
  414. package/dist/cli/index.mjs.map +1 -1
  415. package/dist/client/index.d.mts +46 -46
  416. package/dist/client/index.mjs +2 -2
  417. package/dist/collection-slugs-cache-DIrLjqH-.mjs +91 -0
  418. package/dist/collection-slugs-cache-DIrLjqH-.mjs.map +1 -0
  419. package/dist/comment-DB74Zpa4.mjs +335 -0
  420. package/dist/comment-DB74Zpa4.mjs.map +1 -0
  421. package/dist/comment-reaction-BScxIWUn.mjs +85 -0
  422. package/dist/comment-reaction-BScxIWUn.mjs.map +1 -0
  423. package/dist/comments-Cor_zKml.mjs +195 -0
  424. package/dist/comments-Cor_zKml.mjs.map +1 -0
  425. package/dist/comments-yiRFx3w5.mjs +99 -0
  426. package/dist/comments-yiRFx3w5.mjs.map +1 -0
  427. package/dist/components-Brp__9xo.mjs +112 -0
  428. package/dist/components-Brp__9xo.mjs.map +1 -0
  429. package/dist/config-D44_8G9J.d.mts +41 -0
  430. package/dist/config-D44_8G9J.d.mts.map +1 -0
  431. package/dist/config-DBU6iUQB.mjs +228 -0
  432. package/dist/config-DBU6iUQB.mjs.map +1 -0
  433. package/dist/config-sDhZvkLR.d.mts +6835 -0
  434. package/dist/config-sDhZvkLR.d.mts.map +1 -0
  435. package/dist/connection-BtEN_lP9.mjs +36 -0
  436. package/dist/connection-BtEN_lP9.mjs.map +1 -0
  437. package/dist/content-BKHUVsE5.mjs +2112 -0
  438. package/dist/content-BKHUVsE5.mjs.map +1 -0
  439. package/dist/content-list-query-ByP4jRpZ.d.mts +26 -0
  440. package/dist/content-list-query-ByP4jRpZ.d.mts.map +1 -0
  441. package/dist/content-policy-BmE0MPZY.mjs +46 -0
  442. package/dist/content-policy-BmE0MPZY.mjs.map +1 -0
  443. package/dist/content-repair-Ukdxoq-R.mjs +442 -0
  444. package/dist/content-repair-Ukdxoq-R.mjs.map +1 -0
  445. package/dist/context-CzjejcsE.mjs +2089 -0
  446. package/dist/context-CzjejcsE.mjs.map +1 -0
  447. package/dist/credits-BKREepht.mjs +110 -0
  448. package/dist/credits-BKREepht.mjs.map +1 -0
  449. package/dist/cron-D7obTIfk.mjs +306 -0
  450. package/dist/cron-D7obTIfk.mjs.map +1 -0
  451. package/dist/dashboard-ynr1qJWM.mjs +168 -0
  452. package/dist/dashboard-ynr1qJWM.mjs.map +1 -0
  453. package/dist/db/index.d.mts +3 -3
  454. package/dist/db/index.mjs +2 -2
  455. package/dist/db/libsql-migrations.d.mts +1 -1
  456. package/dist/db/libsql-migrations.mjs +5 -5
  457. package/dist/db/libsql.d.mts +1 -1
  458. package/dist/db/postgres-migrations.d.mts +1 -1
  459. package/dist/db/postgres-migrations.mjs +5 -5
  460. package/dist/db/postgres.d.mts +1 -1
  461. package/dist/db/sqlite-migrations.d.mts +1 -1
  462. package/dist/db/sqlite-migrations.mjs +5 -5
  463. package/dist/db/sqlite.d.mts +1 -1
  464. package/dist/db/sqlite.mjs +1 -1
  465. package/dist/default-C0W-PhAp.mjs +81 -0
  466. package/dist/default-C0W-PhAp.mjs.map +1 -0
  467. package/dist/deferred-tasks-wlMFJL95.d.mts +10 -0
  468. package/dist/deferred-tasks-wlMFJL95.d.mts.map +1 -0
  469. package/dist/dev-typegen-EBni_pOQ.mjs +29 -0
  470. package/dist/dev-typegen-EBni_pOQ.mjs.map +1 -0
  471. package/dist/device-flow-D1U392GC.mjs +519 -0
  472. package/dist/device-flow-D1U392GC.mjs.map +1 -0
  473. package/dist/dialect-helpers-B1XN2HGB.mjs +314 -0
  474. package/dist/dialect-helpers-B1XN2HGB.mjs.map +1 -0
  475. package/dist/digest-DJ1tHCgy.mjs +194 -0
  476. package/dist/digest-DJ1tHCgy.mjs.map +1 -0
  477. package/dist/direct-executor-Bs2g0ake.mjs +117 -0
  478. package/dist/direct-executor-Bs2g0ake.mjs.map +1 -0
  479. package/dist/dist-BUmWMTbN.mjs +810 -0
  480. package/dist/dist-BUmWMTbN.mjs.map +1 -0
  481. package/dist/email-console-FFVJWb9N.mjs +50 -0
  482. package/dist/email-console-FFVJWb9N.mjs.map +1 -0
  483. package/dist/email-locale-Bs3HFdnq.mjs +25 -0
  484. package/dist/email-locale-Bs3HFdnq.mjs.map +1 -0
  485. package/dist/emdash-runtime-C8T-pZpS.mjs +4425 -0
  486. package/dist/emdash-runtime-C8T-pZpS.mjs.map +1 -0
  487. package/dist/enrich-DFlfnd3u.mjs +194 -0
  488. package/dist/enrich-DFlfnd3u.mjs.map +1 -0
  489. package/dist/entry-lock-BulbgPBX.d.mts +4568 -0
  490. package/dist/entry-lock-BulbgPBX.d.mts.map +1 -0
  491. package/dist/entry-lock-CRVmruM0.mjs +1211 -0
  492. package/dist/entry-lock-CRVmruM0.mjs.map +1 -0
  493. package/dist/entry-lock-D-zJQ4q6.mjs +163 -0
  494. package/dist/entry-lock-D-zJQ4q6.mjs.map +1 -0
  495. package/dist/entry-locks-CJ9uhqg1.mjs +167 -0
  496. package/dist/entry-locks-CJ9uhqg1.mjs.map +1 -0
  497. package/dist/env-types-BE3bCvfP.mjs +38 -0
  498. package/dist/env-types-BE3bCvfP.mjs.map +1 -0
  499. package/dist/error-BCMgPxdn.mjs +90 -0
  500. package/dist/error-BCMgPxdn.mjs.map +1 -0
  501. package/dist/errors-8gJqv-XV.mjs +492 -0
  502. package/dist/errors-8gJqv-XV.mjs.map +1 -0
  503. package/dist/errors-B4f4It-2.mjs +120 -0
  504. package/dist/errors-B4f4It-2.mjs.map +1 -0
  505. package/dist/escape-lsNq38PP.mjs +9 -0
  506. package/dist/escape-lsNq38PP.mjs.map +1 -0
  507. package/dist/fence-Dagicj14.mjs +162 -0
  508. package/dist/fence-Dagicj14.mjs.map +1 -0
  509. package/dist/field-map-BSXdNGt5.mjs +84 -0
  510. package/dist/field-map-BSXdNGt5.mjs.map +1 -0
  511. package/dist/fts-manager-6861qcwk.mjs +489 -0
  512. package/dist/fts-manager-6861qcwk.mjs.map +1 -0
  513. package/dist/gc-CNkXB3mE.mjs +75 -0
  514. package/dist/gc-CNkXB3mE.mjs.map +1 -0
  515. package/dist/hash-BJaeek87.mjs +37 -0
  516. package/dist/hash-BJaeek87.mjs.map +1 -0
  517. package/dist/hreflang-8dUOJAPJ.d.mts +50 -0
  518. package/dist/hreflang-8dUOJAPJ.d.mts.map +1 -0
  519. package/dist/hreflang-BW5A4FLK.mjs +105 -0
  520. package/dist/hreflang-BW5A4FLK.mjs.map +1 -0
  521. package/dist/http-route-dispatch-rXKvTNm9.mjs +342 -0
  522. package/dist/http-route-dispatch-rXKvTNm9.mjs.map +1 -0
  523. package/dist/identity-CPRRSovU.mjs +35 -0
  524. package/dist/identity-CPRRSovU.mjs.map +1 -0
  525. package/dist/import-yVbfPyfd.mjs +2126 -0
  526. package/dist/import-yVbfPyfd.mjs.map +1 -0
  527. package/dist/index-VM7Fzxwe.d.mts +260 -0
  528. package/dist/index-VM7Fzxwe.d.mts.map +1 -0
  529. package/dist/index.d.mts +23 -22
  530. package/dist/index.mjs +104 -105
  531. package/dist/install-finalization-RU6VrHOX.mjs +58 -0
  532. package/dist/install-finalization-RU6VrHOX.mjs.map +1 -0
  533. package/dist/json-recordset-D0WhN2UA.mjs +12 -0
  534. package/dist/json-recordset-D0WhN2UA.mjs.map +1 -0
  535. package/dist/json-schema-v_D_pPNG.mjs +15 -0
  536. package/dist/json-schema-v_D_pPNG.mjs.map +1 -0
  537. package/dist/keys-CifIkT0N.mjs +61 -0
  538. package/dist/keys-CifIkT0N.mjs.map +1 -0
  539. package/dist/kinds-B_Qcl5pz.mjs +974 -0
  540. package/dist/kinds-B_Qcl5pz.mjs.map +1 -0
  541. package/dist/lifecycle-B8d7Rdqx.mjs +25 -0
  542. package/dist/lifecycle-B8d7Rdqx.mjs.map +1 -0
  543. package/dist/load-D4xtzm6h.mjs +28 -0
  544. package/dist/load-D4xtzm6h.mjs.map +1 -0
  545. package/dist/loader-DhnedqY4.mjs +1478 -0
  546. package/dist/loader-DhnedqY4.mjs.map +1 -0
  547. package/dist/loops-B2YS-Zzr.mjs +205 -0
  548. package/dist/loops-B2YS-Zzr.mjs.map +1 -0
  549. package/dist/manifest-builder-g1FLviel.mjs +196 -0
  550. package/dist/manifest-builder-g1FLviel.mjs.map +1 -0
  551. package/dist/manifest-schema-DNb4XmTS.mjs +497 -0
  552. package/dist/manifest-schema-DNb4XmTS.mjs.map +1 -0
  553. package/dist/marketplace-CqbgeIa7.mjs +257 -0
  554. package/dist/marketplace-CqbgeIa7.mjs.map +1 -0
  555. package/dist/media/image-endpoint.mjs +1 -1
  556. package/dist/media/index.d.mts +1 -1
  557. package/dist/media/index.mjs +3 -3
  558. package/dist/media/local-runtime.d.mts +14 -13
  559. package/dist/media/local-runtime.d.mts.map +1 -1
  560. package/dist/media/local-runtime.mjs +14 -14
  561. package/dist/media-BR4_t-Wd.mjs +416 -0
  562. package/dist/media-BR4_t-Wd.mjs.map +1 -0
  563. package/dist/media-CikS-q6E.mjs +294 -0
  564. package/dist/media-CikS-q6E.mjs.map +1 -0
  565. package/dist/media-DepNLhPq.mjs +383 -0
  566. package/dist/media-DepNLhPq.mjs.map +1 -0
  567. package/dist/media-allowlist-BMBLqyWh.mjs +45 -0
  568. package/dist/media-allowlist-BMBLqyWh.mjs.map +1 -0
  569. package/dist/media-folders-CI0Wydfo.mjs +210 -0
  570. package/dist/media-folders-CI0Wydfo.mjs.map +1 -0
  571. package/dist/media-url-BQgKvpQ5.mjs +43 -0
  572. package/dist/media-url-BQgKvpQ5.mjs.map +1 -0
  573. package/dist/media-usage-X1_20MY-.mjs +282 -0
  574. package/dist/media-usage-X1_20MY-.mjs.map +1 -0
  575. package/dist/media-usage-activation-bWusy3M2.mjs +78 -0
  576. package/dist/media-usage-activation-bWusy3M2.mjs.map +1 -0
  577. package/dist/media-usage-work-B2RaoJIa.mjs +151 -0
  578. package/dist/media-usage-work-B2RaoJIa.mjs.map +1 -0
  579. package/dist/media-usage-work-BCK2J-v_.mjs +1036 -0
  580. package/dist/media-usage-work-BCK2J-v_.mjs.map +1 -0
  581. package/dist/menus-B0Qqv_cS.mjs +837 -0
  582. package/dist/menus-B0Qqv_cS.mjs.map +1 -0
  583. package/dist/menus-oypxT1pI.mjs +3802 -0
  584. package/dist/menus-oypxT1pI.mjs.map +1 -0
  585. package/dist/menus-uEAxWAm1.mjs +92 -0
  586. package/dist/menus-uEAxWAm1.mjs.map +1 -0
  587. package/dist/migrations/index.d.mts +1 -1
  588. package/dist/migrations/index.mjs +4 -4
  589. package/dist/mime-D1We9jUx.mjs +81 -0
  590. package/dist/mime-D1We9jUx.mjs.map +1 -0
  591. package/dist/mode-C-D3qICy.mjs +23 -0
  592. package/dist/mode-C-D3qICy.mjs.map +1 -0
  593. package/dist/node-sqlite-compat-CrKzRr0J.mjs +63 -0
  594. package/dist/node-sqlite-compat-CrKzRr0J.mjs.map +1 -0
  595. package/dist/normalize-Cx-bNwhP.mjs +220 -0
  596. package/dist/normalize-Cx-bNwhP.mjs.map +1 -0
  597. package/dist/oauth-authorization-CPLgBrdo.mjs +287 -0
  598. package/dist/oauth-authorization-CPLgBrdo.mjs.map +1 -0
  599. package/dist/oauth-clients-BT0Pg-MO.mjs +266 -0
  600. package/dist/oauth-clients-BT0Pg-MO.mjs.map +1 -0
  601. package/dist/oauth-state-store-BndCfRum.mjs +50 -0
  602. package/dist/oauth-state-store-BndCfRum.mjs.map +1 -0
  603. package/dist/oauth-user-lookup-BDgF6IVG.mjs +26 -0
  604. package/dist/oauth-user-lookup-BDgF6IVG.mjs.map +1 -0
  605. package/dist/object-cache/memory.d.mts +1 -1
  606. package/dist/object-cache-DmKr09La.mjs +603 -0
  607. package/dist/object-cache-DmKr09La.mjs.map +1 -0
  608. package/dist/options-BUUgroHg.d.mts +81 -0
  609. package/dist/options-BUUgroHg.d.mts.map +1 -0
  610. package/dist/ownership-MiyA7qKO.mjs +12 -0
  611. package/dist/ownership-MiyA7qKO.mjs.map +1 -0
  612. package/dist/page/index.d.mts +2 -2
  613. package/dist/page/index.mjs +13 -13
  614. package/dist/parse-B_b6gZxG.mjs +81 -0
  615. package/dist/parse-B_b6gZxG.mjs.map +1 -0
  616. package/dist/parse-Dndx1QmN.d.mts +176 -0
  617. package/dist/parse-Dndx1QmN.d.mts.map +1 -0
  618. package/dist/passkey-config-D2Lua5__.mjs +46 -0
  619. package/dist/passkey-config-D2Lua5__.mjs.map +1 -0
  620. package/dist/paths-biDzFTY2.mjs +77 -0
  621. package/dist/paths-biDzFTY2.mjs.map +1 -0
  622. package/dist/placeholder-CSKu5OkD.d.mts +314 -0
  623. package/dist/placeholder-CSKu5OkD.d.mts.map +1 -0
  624. package/dist/plan-CCoqxNoU.mjs +135 -0
  625. package/dist/plan-CCoqxNoU.mjs.map +1 -0
  626. package/dist/plugin-test-runtime.d.mts +16 -14
  627. package/dist/plugin-test-runtime.d.mts.map +1 -1
  628. package/dist/plugin-test-runtime.mjs +114 -115
  629. package/dist/plugin-tool-name-DDUgN_0p.mjs +27 -0
  630. package/dist/plugin-tool-name-DDUgN_0p.mjs.map +1 -0
  631. package/dist/plugin-types.d.mts +1 -1
  632. package/dist/plugin-utils.d.mts +12 -11
  633. package/dist/plugin-utils.d.mts.map +1 -1
  634. package/dist/plugins/adapt-sandbox-entry.d.mts +12 -11
  635. package/dist/plugins/adapt-sandbox-entry.d.mts.map +1 -1
  636. package/dist/plugins/adapt-sandbox-entry.mjs +4 -4
  637. package/dist/plugins/host.d.mts +5 -5
  638. package/dist/plugins/host.mjs +50 -51
  639. package/dist/plugins-COJ2L49n.mjs +261 -0
  640. package/dist/plugins-COJ2L49n.mjs.map +1 -0
  641. package/dist/policy-BPugqmeV.mjs +53 -0
  642. package/dist/policy-BPugqmeV.mjs.map +1 -0
  643. package/dist/portable-text-BH4zgkSm.mjs +311 -0
  644. package/dist/portable-text-BH4zgkSm.mjs.map +1 -0
  645. package/dist/preview-DLexxwp3.mjs +107 -0
  646. package/dist/preview-DLexxwp3.mjs.map +1 -0
  647. package/dist/protocol-PoAfD_9W.d.mts +65 -0
  648. package/dist/protocol-PoAfD_9W.d.mts.map +1 -0
  649. package/dist/public-plugin-api-routes-CMljrTby.mjs +316 -0
  650. package/dist/public-plugin-api-routes-CMljrTby.mjs.map +1 -0
  651. package/dist/public-submission-ayqoyee4.mjs +251 -0
  652. package/dist/public-submission-ayqoyee4.mjs.map +1 -0
  653. package/dist/public-url-Bt98vysr.mjs +101 -0
  654. package/dist/public-url-Bt98vysr.mjs.map +1 -0
  655. package/dist/query-D62NntCZ.mjs +1146 -0
  656. package/dist/query-D62NntCZ.mjs.map +1 -0
  657. package/dist/query-LmPY2y0C.mjs +41 -0
  658. package/dist/query-LmPY2y0C.mjs.map +1 -0
  659. package/dist/range-CYfeXgGK.mjs +51 -0
  660. package/dist/range-CYfeXgGK.mjs.map +1 -0
  661. package/dist/rate-limit-C04Llsoc.mjs +127 -0
  662. package/dist/rate-limit-C04Llsoc.mjs.map +1 -0
  663. package/dist/receipt-BUsQCOeM.mjs +43 -0
  664. package/dist/receipt-BUsQCOeM.mjs.map +1 -0
  665. package/dist/redirect-CQAV7mCo.mjs +19 -0
  666. package/dist/redirect-CQAV7mCo.mjs.map +1 -0
  667. package/dist/redirect-DjLdw427.mjs +423 -0
  668. package/dist/redirect-DjLdw427.mjs.map +1 -0
  669. package/dist/redirect-paths-DOaVBp6E.mjs +36 -0
  670. package/dist/redirect-paths-DOaVBp6E.mjs.map +1 -0
  671. package/dist/redirects-Cpq1catN.mjs +446 -0
  672. package/dist/redirects-Cpq1catN.mjs.map +1 -0
  673. package/dist/redirects-CyvvZrCJ.mjs +148 -0
  674. package/dist/redirects-CyvvZrCJ.mjs.map +1 -0
  675. package/dist/registry/testing.mjs +3 -3
  676. package/dist/registry-B0-O575m.mjs +8374 -0
  677. package/dist/registry-B0-O575m.mjs.map +1 -0
  678. package/dist/relations-WIOojTL4.mjs +789 -0
  679. package/dist/relations-WIOojTL4.mjs.map +1 -0
  680. package/dist/request-context.d.mts +2 -2
  681. package/dist/request-meta-bwZ_NsvU.mjs +141 -0
  682. package/dist/request-meta-bwZ_NsvU.mjs.map +1 -0
  683. package/dist/resolve-BNnm8EkB.mjs +102 -0
  684. package/dist/resolve-BNnm8EkB.mjs.map +1 -0
  685. package/dist/route-cache-QSOyDEw0.mjs +20 -0
  686. package/dist/route-cache-QSOyDEw0.mjs.map +1 -0
  687. package/dist/route-wire-Ca_HWCZ5.mjs +197 -0
  688. package/dist/route-wire-Ca_HWCZ5.mjs.map +1 -0
  689. package/dist/routes-avqgc-8r.mjs +272 -0
  690. package/dist/routes-avqgc-8r.mjs.map +1 -0
  691. package/dist/runner-Bkkfk4O8.mjs +6669 -0
  692. package/dist/runner-Bkkfk4O8.mjs.map +1 -0
  693. package/dist/runner-Dfgp6-S_.d.mts +73 -0
  694. package/dist/runner-Dfgp6-S_.d.mts.map +1 -0
  695. package/dist/runtime.d.mts +13 -12
  696. package/dist/runtime.d.mts.map +1 -1
  697. package/dist/runtime.mjs +4 -3
  698. package/dist/runtime.mjs.map +1 -1
  699. package/dist/schema/project-env-types.mjs +42 -43
  700. package/dist/schema/project-env-types.mjs.map +1 -1
  701. package/dist/schema-B-3rntlX.mjs +815 -0
  702. package/dist/schema-B-3rntlX.mjs.map +1 -0
  703. package/dist/schema-BqBlUZtb.mjs +13 -0
  704. package/dist/schema-BqBlUZtb.mjs.map +1 -0
  705. package/dist/scopes-DNaY7Ey0.mjs +34 -0
  706. package/dist/scopes-DNaY7Ey0.mjs.map +1 -0
  707. package/dist/search-BPWTnpnD.mjs +450 -0
  708. package/dist/search-BPWTnpnD.mjs.map +1 -0
  709. package/dist/secrets-Dswzrz3k.mjs +369 -0
  710. package/dist/secrets-Dswzrz3k.mjs.map +1 -0
  711. package/dist/sections-rSao6rBG.mjs +346 -0
  712. package/dist/sections-rSao6rBG.mjs.map +1 -0
  713. package/dist/seed/index.d.mts +2 -2
  714. package/dist/seed/index.mjs +40 -41
  715. package/dist/seo/index.d.mts +3 -3
  716. package/dist/seo/index.mjs +27 -27
  717. package/dist/seo-B_H_pqOd.mjs +133 -0
  718. package/dist/seo-B_H_pqOd.mjs.map +1 -0
  719. package/dist/seo-ClB-dw9w.mjs +188 -0
  720. package/dist/seo-ClB-dw9w.mjs.map +1 -0
  721. package/dist/service-DpiUQVpp.mjs +150 -0
  722. package/dist/service-DpiUQVpp.mjs.map +1 -0
  723. package/dist/session-user-DiE4JKPP.mjs +61 -0
  724. package/dist/session-user-DiE4JKPP.mjs.map +1 -0
  725. package/dist/settings--XlUdUaI.mjs +66 -0
  726. package/dist/settings--XlUdUaI.mjs.map +1 -0
  727. package/dist/settings-D932YP2-.mjs +519 -0
  728. package/dist/settings-D932YP2-.mjs.map +1 -0
  729. package/dist/settings-Dd1uivmQ.mjs +73 -0
  730. package/dist/settings-Dd1uivmQ.mjs.map +1 -0
  731. package/dist/setup-complete-qsJYWutC.mjs +65 -0
  732. package/dist/setup-complete-qsJYWutC.mjs.map +1 -0
  733. package/dist/setup-nonce-CBFgUFXw.mjs +25 -0
  734. package/dist/setup-nonce-CBFgUFXw.mjs.map +1 -0
  735. package/dist/site-domain-oRGS_JfA.mjs +131 -0
  736. package/dist/site-domain-oRGS_JfA.mjs.map +1 -0
  737. package/dist/site-settings-DRHfX7bq.mjs +50 -0
  738. package/dist/site-settings-DRHfX7bq.mjs.map +1 -0
  739. package/dist/site-url-MB685I5X.mjs +45 -0
  740. package/dist/site-url-MB685I5X.mjs.map +1 -0
  741. package/dist/sitemap-name-B8QP8wud.mjs +26 -0
  742. package/dist/sitemap-name-B8QP8wud.mjs.map +1 -0
  743. package/dist/slug-aVnUV4SL.mjs +16 -0
  744. package/dist/slug-aVnUV4SL.mjs.map +1 -0
  745. package/dist/snapshot-BjaXDZQ5.mjs +414 -0
  746. package/dist/snapshot-BjaXDZQ5.mjs.map +1 -0
  747. package/dist/ssrf-BcYjyM4M.mjs +406 -0
  748. package/dist/ssrf-BcYjyM4M.mjs.map +1 -0
  749. package/dist/stage-CZQnXM_G.mjs +662 -0
  750. package/dist/stage-CZQnXM_G.mjs.map +1 -0
  751. package/dist/staged-ByBmPFtX.mjs +686 -0
  752. package/dist/staged-ByBmPFtX.mjs.map +1 -0
  753. package/dist/state-CFbGZziM.mjs +178 -0
  754. package/dist/state-CFbGZziM.mjs.map +1 -0
  755. package/dist/status-BFNdxzKc.mjs +30 -0
  756. package/dist/status-BFNdxzKc.mjs.map +1 -0
  757. package/dist/storage/local.d.mts +1 -1
  758. package/dist/storage/local.mjs +2 -2
  759. package/dist/storage/s3.d.mts +1 -1
  760. package/dist/storage/s3.mjs +1 -1
  761. package/dist/storage-query-BFp06Y0s.d.mts +1627 -0
  762. package/dist/storage-query-BFp06Y0s.d.mts.map +1 -0
  763. package/dist/tar-DFjExb9X.mjs +449 -0
  764. package/dist/tar-DFjExb9X.mjs.map +1 -0
  765. package/dist/target-CWZs2-o6.mjs +27 -0
  766. package/dist/target-CWZs2-o6.mjs.map +1 -0
  767. package/dist/taxonomies-5SR76j11.mjs +937 -0
  768. package/dist/taxonomies-5SR76j11.mjs.map +1 -0
  769. package/dist/taxonomies-B__VmCKQ.mjs +703 -0
  770. package/dist/taxonomies-B__VmCKQ.mjs.map +1 -0
  771. package/dist/taxonomy-CMI5fczd.mjs +563 -0
  772. package/dist/taxonomy-CMI5fczd.mjs.map +1 -0
  773. package/dist/tokens-BnhSnGwJ.mjs +171 -0
  774. package/dist/tokens-BnhSnGwJ.mjs.map +1 -0
  775. package/dist/transfer-BbKfufJ4.mjs +166 -0
  776. package/dist/transfer-BbKfufJ4.mjs.map +1 -0
  777. package/dist/transfer-DTGblAj2.mjs +8910 -0
  778. package/dist/transfer-DTGblAj2.mjs.map +1 -0
  779. package/dist/transfer-download-D9LQEDX0.mjs +33 -0
  780. package/dist/transfer-download-D9LQEDX0.mjs.map +1 -0
  781. package/dist/transformations-Bx4lYY0Y.mjs +196 -0
  782. package/dist/transformations-Bx4lYY0Y.mjs.map +1 -0
  783. package/dist/transport-Dzpn5b3i.mjs +137 -0
  784. package/dist/transport-Dzpn5b3i.mjs.map +1 -0
  785. package/dist/trusted-proxy-BU3Nx9g1.mjs +51 -0
  786. package/dist/trusted-proxy-BU3Nx9g1.mjs.map +1 -0
  787. package/dist/turnstile-Cs2wfkJG.mjs +58 -0
  788. package/dist/turnstile-Cs2wfkJG.mjs.map +1 -0
  789. package/dist/types-BAsCk5KU.d.mts +87 -0
  790. package/dist/types-BAsCk5KU.d.mts.map +1 -0
  791. package/dist/types-BuvSwT9Y.d.mts +375 -0
  792. package/dist/types-BuvSwT9Y.d.mts.map +1 -0
  793. package/dist/types-C4KT3Md2.d.mts +293 -0
  794. package/dist/types-C4KT3Md2.d.mts.map +1 -0
  795. package/dist/types-CVXHwIBB.d.mts +125 -0
  796. package/dist/types-CVXHwIBB.d.mts.map +1 -0
  797. package/dist/types-C_asjp1J.mjs.map +1 -1
  798. package/dist/types-CgfFGfO5.mjs +16 -0
  799. package/dist/types-CgfFGfO5.mjs.map +1 -0
  800. package/dist/types-Cj0_yZkn.mjs +18 -0
  801. package/dist/types-Cj0_yZkn.mjs.map +1 -0
  802. package/dist/types-CjftrmZR.d.mts +1741 -0
  803. package/dist/types-CjftrmZR.d.mts.map +1 -0
  804. package/dist/types-DKwRUA-x.d.mts +916 -0
  805. package/dist/types-DKwRUA-x.d.mts.map +1 -0
  806. package/dist/types-DwhEvIVb.mjs.map +1 -1
  807. package/dist/types-GwAyS5SH.d.mts +227 -0
  808. package/dist/types-GwAyS5SH.d.mts.map +1 -0
  809. package/dist/types-qHVygneX.mjs +77 -0
  810. package/dist/types-qHVygneX.mjs.map +1 -0
  811. package/dist/types-sUHaH7lC.mjs +37 -0
  812. package/dist/types-sUHaH7lC.mjs.map +1 -0
  813. package/dist/types-uU2YNYSt.d.mts +209 -0
  814. package/dist/types-uU2YNYSt.d.mts.map +1 -0
  815. package/dist/update-check-ABBJgg6M.mjs +161 -0
  816. package/dist/update-check-ABBJgg6M.mjs.map +1 -0
  817. package/dist/upload-attempts-DPFC4COv.mjs +32 -0
  818. package/dist/upload-attempts-DPFC4COv.mjs.map +1 -0
  819. package/dist/url-pattern-QATUE_rv.mjs +41 -0
  820. package/dist/url-pattern-QATUE_rv.mjs.map +1 -0
  821. package/dist/user-By8SzQxS.mjs +171 -0
  822. package/dist/user-By8SzQxS.mjs.map +1 -0
  823. package/dist/utils-D5uOi6WS.mjs +450 -0
  824. package/dist/utils-D5uOi6WS.mjs.map +1 -0
  825. package/dist/utils-Szp4iBQB.d.mts +376 -0
  826. package/dist/utils-Szp4iBQB.d.mts.map +1 -0
  827. package/dist/validate-DDvxy6qG.d.mts +468 -0
  828. package/dist/validate-DDvxy6qG.d.mts.map +1 -0
  829. package/dist/validate-Dz-TIOFB.mjs +524 -0
  830. package/dist/validate-Dz-TIOFB.mjs.map +1 -0
  831. package/dist/validation-Fc9ZSUS_.mjs +221 -0
  832. package/dist/validation-Fc9ZSUS_.mjs.map +1 -0
  833. package/dist/version-BZj18Q7G.mjs +9 -0
  834. package/dist/version-BZj18Q7G.mjs.map +1 -0
  835. package/dist/version-Bu6Nlbb5.mjs +7 -0
  836. package/dist/version-Bu6Nlbb5.mjs.map +1 -0
  837. package/dist/version-DqB7LIO7.mjs +49 -0
  838. package/dist/version-DqB7LIO7.mjs.map +1 -0
  839. package/dist/video-DytCnw3L.mjs +54 -0
  840. package/dist/video-DytCnw3L.mjs.map +1 -0
  841. package/dist/virtual-modules-DO954n7P.mjs +515 -0
  842. package/dist/virtual-modules-DO954n7P.mjs.map +1 -0
  843. package/dist/widgets-BUx_Mf2q.mjs +134 -0
  844. package/dist/widgets-BUx_Mf2q.mjs.map +1 -0
  845. package/dist/wxr-taxonomies-DbJtWrWM.mjs +454 -0
  846. package/dist/wxr-taxonomies-DbJtWrWM.mjs.map +1 -0
  847. package/dist/zod-generator--nlM0930.mjs +425 -0
  848. package/dist/zod-generator--nlM0930.mjs.map +1 -0
  849. package/package.json +5 -5
  850. package/src/api/handlers/content.ts +49 -18
  851. package/src/api/handlers/device-flow.ts +1 -3
  852. package/src/api/handlers/menus.ts +3 -3
  853. package/src/api/handlers/oauth-authorization.ts +1 -3
  854. package/src/astro/integration/admin-nav.ts +52 -0
  855. package/src/astro/integration/index.ts +7 -0
  856. package/src/astro/integration/runtime.ts +14 -0
  857. package/src/astro/integration/shims/use-sync-external-store-with-selector.js +2 -0
  858. package/src/astro/integration/shims/use-sync-external-store.js +4 -1
  859. package/src/astro/middleware/auth.ts +9 -2
  860. package/src/astro/routes/api/import/wordpress/analyze.ts +5 -29
  861. package/src/astro/routes/api/import/wordpress-plugin/execute.ts +3 -3
  862. package/src/astro/routes/api/media/file/[...key].ts +18 -4
  863. package/src/astro/routes/api/oauth/token.ts +5 -1
  864. package/src/astro/routes/api/widget-areas/[name]/reorder.ts +7 -1
  865. package/src/astro/routes/api/widget-areas/[name]/widgets/[id].ts +3 -1
  866. package/src/astro/routes/api/widget-areas/[name]/widgets.ts +2 -1
  867. package/src/astro/routes/api/widget-areas/[name].ts +2 -1
  868. package/src/astro/routes/api/widget-areas/index.ts +2 -1
  869. package/src/astro/types.ts +4 -3
  870. package/src/auth/api-tokens.ts +3 -0
  871. package/src/cleanup.ts +44 -0
  872. package/src/components/inline-bubble-menu.tsx +109 -95
  873. package/src/components/inline-image.tsx +54 -48
  874. package/src/database/dialect-helpers.ts +10 -3
  875. package/src/database/repositories/byline.ts +22 -14
  876. package/src/database/repositories/content.ts +17 -4
  877. package/src/database/repositories/media.ts +17 -0
  878. package/src/database/repositories/menu.ts +163 -132
  879. package/src/database/repositories/types.ts +3 -3
  880. package/src/database/types.ts +1 -1
  881. package/src/emdash-runtime.ts +23 -7
  882. package/src/import/utils.ts +15 -2
  883. package/src/index.ts +1 -0
  884. package/src/loader.ts +106 -95
  885. package/src/media/content-disposition.ts +56 -0
  886. package/src/media/normalize.ts +2 -0
  887. package/src/media/usage/content-fields.ts +2 -1
  888. package/src/menus/index.ts +137 -25
  889. package/src/object-cache/index.ts +22 -0
  890. package/src/plugin-test-runtime.ts +1 -0
  891. package/src/query.ts +44 -40
  892. package/src/schema/types.ts +7 -6
  893. package/src/search/fts-manager.ts +5 -3
  894. package/src/seed/apply.ts +52 -44
  895. package/src/seed/types.ts +3 -3
  896. package/src/taxonomies/index.ts +22 -51
  897. package/src/transfer/import/advance.ts +12 -1
  898. package/src/transfer/import/scaffold.ts +7 -1
  899. package/src/transfer/import/stages.ts +53 -2
  900. package/src/utils/revalidating-cache.ts +85 -0
  901. package/src/visual-editing/toolbar.ts +7 -2
  902. package/src/widgets/index.ts +27 -13
  903. package/dist/action-token-B1ds4laA.mjs +0 -26
  904. package/dist/action-token-B1ds4laA.mjs.map +0 -1
  905. package/dist/activation-sGF9br3X.mjs +0 -387
  906. package/dist/activation-sGF9br3X.mjs.map +0 -1
  907. package/dist/adapters-BOMSX9PU.d.mts +0 -173
  908. package/dist/adapters-BOMSX9PU.d.mts.map +0 -1
  909. package/dist/after-PcEvMY_6.mjs +0 -96
  910. package/dist/after-PcEvMY_6.mjs.map +0 -1
  911. package/dist/allowed-origins-CovsTkm3.mjs +0 -116
  912. package/dist/allowed-origins-CovsTkm3.mjs.map +0 -1
  913. package/dist/api-C_LxFnOm.mjs +0 -5077
  914. package/dist/api-C_LxFnOm.mjs.map +0 -1
  915. package/dist/api-tokens-C7l0GUAF.mjs +0 -3
  916. package/dist/api-tokens-DQ9Ee-vP.mjs +0 -173
  917. package/dist/api-tokens-DQ9Ee-vP.mjs.map +0 -1
  918. package/dist/apply-CLjfxvyH.mjs +0 -1758
  919. package/dist/apply-CLjfxvyH.mjs.map +0 -1
  920. package/dist/approvals-ocK89i4H.mjs +0 -460
  921. package/dist/approvals-ocK89i4H.mjs.map +0 -1
  922. package/dist/artifact-fetch-CgvvpoWQ.mjs +0 -659
  923. package/dist/artifact-fetch-CgvvpoWQ.mjs.map +0 -1
  924. package/dist/artifacts-DwOYYBQm.mjs +0 -323
  925. package/dist/artifacts-DwOYYBQm.mjs.map +0 -1
  926. package/dist/authoritative-records-LPtrIGOY.mjs +0 -5183
  927. package/dist/authoritative-records-LPtrIGOY.mjs.map +0 -1
  928. package/dist/authorize-CoDsRRp5.mjs +0 -74
  929. package/dist/authorize-CoDsRRp5.mjs.map +0 -1
  930. package/dist/backup-2Wj-hTCN.mjs +0 -246
  931. package/dist/backup-2Wj-hTCN.mjs.map +0 -1
  932. package/dist/block-types-C3gJEe7l.mjs +0 -132
  933. package/dist/block-types-C3gJEe7l.mjs.map +0 -1
  934. package/dist/block-values-CgbMtSGU.mjs +0 -215
  935. package/dist/block-values-CgbMtSGU.mjs.map +0 -1
  936. package/dist/byline-CzGZC2Zs.mjs +0 -922
  937. package/dist/byline-CzGZC2Zs.mjs.map +0 -1
  938. package/dist/byline-fields-B1qHvRps.mjs +0 -280
  939. package/dist/byline-fields-B1qHvRps.mjs.map +0 -1
  940. package/dist/byline-fields-vYd_4Q1e.mjs +0 -123
  941. package/dist/byline-fields-vYd_4Q1e.mjs.map +0 -1
  942. package/dist/bylines-BF555iIz.mjs +0 -150
  943. package/dist/bylines-BF555iIz.mjs.map +0 -1
  944. package/dist/bylines-DJx6IWWi.mjs +0 -234
  945. package/dist/bylines-DJx6IWWi.mjs.map +0 -1
  946. package/dist/cache-BWzswWB-.mjs +0 -151
  947. package/dist/cache-BWzswWB-.mjs.map +0 -1
  948. package/dist/canonical-DjF_z6GI.mjs +0 -174
  949. package/dist/canonical-DjF_z6GI.mjs.map +0 -1
  950. package/dist/capture-triggers-D7g3fOZj.mjs +0 -362
  951. package/dist/capture-triggers-D7g3fOZj.mjs.map +0 -1
  952. package/dist/challenge-store-Cfjdvw86.mjs +0 -51
  953. package/dist/challenge-store-Cfjdvw86.mjs.map +0 -1
  954. package/dist/checksum-BF4acJwn.mjs +0 -162
  955. package/dist/checksum-BF4acJwn.mjs.map +0 -1
  956. package/dist/chrome-tags-BDs29G3g.mjs +0 -24
  957. package/dist/chrome-tags-BDs29G3g.mjs.map +0 -1
  958. package/dist/chunks-CYBOL-zn.mjs +0 -25
  959. package/dist/chunks-CYBOL-zn.mjs.map +0 -1
  960. package/dist/collection-slugs-cache-B2J5aESO.mjs +0 -91
  961. package/dist/collection-slugs-cache-B2J5aESO.mjs.map +0 -1
  962. package/dist/comment-DV7dybcs.mjs +0 -335
  963. package/dist/comment-DV7dybcs.mjs.map +0 -1
  964. package/dist/comment-reaction-CWwqiT6x.mjs +0 -85
  965. package/dist/comment-reaction-CWwqiT6x.mjs.map +0 -1
  966. package/dist/comments-DVjWJm8X.mjs +0 -99
  967. package/dist/comments-DVjWJm8X.mjs.map +0 -1
  968. package/dist/comments-Q-ILHCEI.mjs +0 -195
  969. package/dist/comments-Q-ILHCEI.mjs.map +0 -1
  970. package/dist/components-DnOmvvgg.mjs +0 -112
  971. package/dist/components-DnOmvvgg.mjs.map +0 -1
  972. package/dist/config-9IzA83_U.d.mts +0 -6811
  973. package/dist/config-9IzA83_U.d.mts.map +0 -1
  974. package/dist/config-BdQzFtmR.mjs +0 -228
  975. package/dist/config-BdQzFtmR.mjs.map +0 -1
  976. package/dist/config-Cs2RBkJ6.d.mts +0 -41
  977. package/dist/config-Cs2RBkJ6.d.mts.map +0 -1
  978. package/dist/connection-CiXgZyCY.mjs +0 -36
  979. package/dist/connection-CiXgZyCY.mjs.map +0 -1
  980. package/dist/content-Dt0Os_WQ.mjs +0 -2109
  981. package/dist/content-Dt0Os_WQ.mjs.map +0 -1
  982. package/dist/content-list-query-BK26u9Ly.d.mts +0 -26
  983. package/dist/content-list-query-BK26u9Ly.d.mts.map +0 -1
  984. package/dist/content-policy-BLDbNJOb.mjs +0 -46
  985. package/dist/content-policy-BLDbNJOb.mjs.map +0 -1
  986. package/dist/content-repair-CjwbLy4m.mjs +0 -442
  987. package/dist/content-repair-CjwbLy4m.mjs.map +0 -1
  988. package/dist/context-ErV7UdQY.mjs +0 -2089
  989. package/dist/context-ErV7UdQY.mjs.map +0 -1
  990. package/dist/credits-BRyjafiF.mjs +0 -110
  991. package/dist/credits-BRyjafiF.mjs.map +0 -1
  992. package/dist/cron-Bm5xa7tv.mjs +0 -306
  993. package/dist/cron-Bm5xa7tv.mjs.map +0 -1
  994. package/dist/dashboard-DVxQ5XiI.mjs +0 -168
  995. package/dist/dashboard-DVxQ5XiI.mjs.map +0 -1
  996. package/dist/default-B9Tf2n94.mjs +0 -81
  997. package/dist/default-B9Tf2n94.mjs.map +0 -1
  998. package/dist/deferred-tasks-CpPEqsga.d.mts +0 -9
  999. package/dist/deferred-tasks-CpPEqsga.d.mts.map +0 -1
  1000. package/dist/dev-typegen-ZeWYV8Jp.mjs +0 -29
  1001. package/dist/dev-typegen-ZeWYV8Jp.mjs.map +0 -1
  1002. package/dist/device-flow-BbYNZ9Xi.mjs +0 -521
  1003. package/dist/device-flow-BbYNZ9Xi.mjs.map +0 -1
  1004. package/dist/dialect-helpers-7_IqPdh9.mjs +0 -307
  1005. package/dist/dialect-helpers-7_IqPdh9.mjs.map +0 -1
  1006. package/dist/digest-DlBa7kJl.mjs +0 -194
  1007. package/dist/digest-DlBa7kJl.mjs.map +0 -1
  1008. package/dist/direct-executor-5T8gkhvA.mjs +0 -117
  1009. package/dist/direct-executor-5T8gkhvA.mjs.map +0 -1
  1010. package/dist/dist-DY0aOmAP.mjs +0 -810
  1011. package/dist/dist-DY0aOmAP.mjs.map +0 -1
  1012. package/dist/email-console-v3OM8It-.mjs +0 -50
  1013. package/dist/email-console-v3OM8It-.mjs.map +0 -1
  1014. package/dist/email-locale-CoZo-oZx.mjs +0 -25
  1015. package/dist/email-locale-CoZo-oZx.mjs.map +0 -1
  1016. package/dist/emdash-runtime-DwezbIqQ.mjs +0 -4392
  1017. package/dist/emdash-runtime-DwezbIqQ.mjs.map +0 -1
  1018. package/dist/enrich-C3XIJi0O.mjs +0 -194
  1019. package/dist/enrich-C3XIJi0O.mjs.map +0 -1
  1020. package/dist/entry-lock-CY7XpdSw.d.mts +0 -4568
  1021. package/dist/entry-lock-CY7XpdSw.d.mts.map +0 -1
  1022. package/dist/entry-lock-DDuWaAiP.mjs +0 -1211
  1023. package/dist/entry-lock-DDuWaAiP.mjs.map +0 -1
  1024. package/dist/entry-lock-D_Og9Gy3.mjs +0 -163
  1025. package/dist/entry-lock-D_Og9Gy3.mjs.map +0 -1
  1026. package/dist/entry-locks-Cp8_BcQQ.mjs +0 -167
  1027. package/dist/entry-locks-Cp8_BcQQ.mjs.map +0 -1
  1028. package/dist/env-types-Br8uywYA.mjs +0 -38
  1029. package/dist/env-types-Br8uywYA.mjs.map +0 -1
  1030. package/dist/error-CT2SsX5S.mjs +0 -90
  1031. package/dist/error-CT2SsX5S.mjs.map +0 -1
  1032. package/dist/errors-BMaCpLeS.mjs +0 -479
  1033. package/dist/errors-BMaCpLeS.mjs.map +0 -1
  1034. package/dist/errors-DlJwot7q.mjs +0 -120
  1035. package/dist/errors-DlJwot7q.mjs.map +0 -1
  1036. package/dist/escape-BfbDyuQ-.mjs +0 -9
  1037. package/dist/escape-BfbDyuQ-.mjs.map +0 -1
  1038. package/dist/fence-BOD3SxZG.mjs +0 -162
  1039. package/dist/fence-BOD3SxZG.mjs.map +0 -1
  1040. package/dist/field-defs-cache-C7sR7ZeU.mjs +0 -77
  1041. package/dist/field-defs-cache-C7sR7ZeU.mjs.map +0 -1
  1042. package/dist/field-map-C_rDXfdJ.mjs +0 -84
  1043. package/dist/field-map-C_rDXfdJ.mjs.map +0 -1
  1044. package/dist/fts-manager-BzFo0xx6.mjs +0 -483
  1045. package/dist/fts-manager-BzFo0xx6.mjs.map +0 -1
  1046. package/dist/gc-B_c3DPpi.mjs +0 -75
  1047. package/dist/gc-B_c3DPpi.mjs.map +0 -1
  1048. package/dist/hash-A-o2ZX8O.mjs +0 -37
  1049. package/dist/hash-A-o2ZX8O.mjs.map +0 -1
  1050. package/dist/hreflang-BpUK9Lcu.mjs +0 -105
  1051. package/dist/hreflang-BpUK9Lcu.mjs.map +0 -1
  1052. package/dist/hreflang-D07R-RbI.d.mts +0 -50
  1053. package/dist/hreflang-D07R-RbI.d.mts.map +0 -1
  1054. package/dist/http-route-dispatch-C2Ep2Uf6.mjs +0 -342
  1055. package/dist/http-route-dispatch-C2Ep2Uf6.mjs.map +0 -1
  1056. package/dist/identity-BivQ8wkV.mjs +0 -35
  1057. package/dist/identity-BivQ8wkV.mjs.map +0 -1
  1058. package/dist/import-B4UvHNJz.mjs +0 -2126
  1059. package/dist/import-B4UvHNJz.mjs.map +0 -1
  1060. package/dist/index-C37Ty40w.d.mts +0 -623
  1061. package/dist/index-C37Ty40w.d.mts.map +0 -1
  1062. package/dist/install-finalization-BbYaB4wj.mjs +0 -58
  1063. package/dist/install-finalization-BbYaB4wj.mjs.map +0 -1
  1064. package/dist/json-recordset-BjYIWFkV.mjs +0 -12
  1065. package/dist/json-recordset-BjYIWFkV.mjs.map +0 -1
  1066. package/dist/json-schema-Cde7le0s.mjs +0 -15
  1067. package/dist/json-schema-Cde7le0s.mjs.map +0 -1
  1068. package/dist/keys-CusTXpw-.mjs +0 -61
  1069. package/dist/keys-CusTXpw-.mjs.map +0 -1
  1070. package/dist/kinds-DogmNB6n.mjs +0 -974
  1071. package/dist/kinds-DogmNB6n.mjs.map +0 -1
  1072. package/dist/lifecycle-BLCoCz4T.mjs +0 -25
  1073. package/dist/lifecycle-BLCoCz4T.mjs.map +0 -1
  1074. package/dist/load-Dds3KhXr.mjs +0 -28
  1075. package/dist/load-Dds3KhXr.mjs.map +0 -1
  1076. package/dist/loader-D4w4XE7q.mjs +0 -1420
  1077. package/dist/loader-D4w4XE7q.mjs.map +0 -1
  1078. package/dist/loops-IYgzQdQu.mjs +0 -205
  1079. package/dist/loops-IYgzQdQu.mjs.map +0 -1
  1080. package/dist/manifest-builder-CGF5kujD.mjs +0 -196
  1081. package/dist/manifest-builder-CGF5kujD.mjs.map +0 -1
  1082. package/dist/manifest-schema-B0BxPSjB.mjs +0 -497
  1083. package/dist/manifest-schema-B0BxPSjB.mjs.map +0 -1
  1084. package/dist/marketplace-DNvEGLqU.mjs +0 -257
  1085. package/dist/marketplace-DNvEGLqU.mjs.map +0 -1
  1086. package/dist/media-BL9MRrSG.mjs +0 -294
  1087. package/dist/media-BL9MRrSG.mjs.map +0 -1
  1088. package/dist/media-B_x5B9EA.mjs +0 -373
  1089. package/dist/media-B_x5B9EA.mjs.map +0 -1
  1090. package/dist/media-allowlist-CpmqBbIQ.mjs +0 -45
  1091. package/dist/media-allowlist-CpmqBbIQ.mjs.map +0 -1
  1092. package/dist/media-folders-CNs_A_B-.mjs +0 -210
  1093. package/dist/media-folders-CNs_A_B-.mjs.map +0 -1
  1094. package/dist/media-qTTHVkls.mjs +0 -416
  1095. package/dist/media-qTTHVkls.mjs.map +0 -1
  1096. package/dist/media-url-GJboA1fl.mjs +0 -43
  1097. package/dist/media-url-GJboA1fl.mjs.map +0 -1
  1098. package/dist/media-usage-ClWgrX0d.mjs +0 -282
  1099. package/dist/media-usage-ClWgrX0d.mjs.map +0 -1
  1100. package/dist/media-usage-activation-B8Fjtq0h.mjs +0 -78
  1101. package/dist/media-usage-activation-B8Fjtq0h.mjs.map +0 -1
  1102. package/dist/media-usage-work-L8-Au4j-.mjs +0 -1036
  1103. package/dist/media-usage-work-L8-Au4j-.mjs.map +0 -1
  1104. package/dist/media-usage-work-LXgze5j9.mjs +0 -151
  1105. package/dist/media-usage-work-LXgze5j9.mjs.map +0 -1
  1106. package/dist/menus-BAxcbsbv.mjs +0 -818
  1107. package/dist/menus-BAxcbsbv.mjs.map +0 -1
  1108. package/dist/menus-BI6oBXco.mjs +0 -92
  1109. package/dist/menus-BI6oBXco.mjs.map +0 -1
  1110. package/dist/menus-fvGFd4m6.mjs +0 -3725
  1111. package/dist/menus-fvGFd4m6.mjs.map +0 -1
  1112. package/dist/mime-DwhtRyUt.mjs +0 -81
  1113. package/dist/mime-DwhtRyUt.mjs.map +0 -1
  1114. package/dist/mode-DIDSUwuN.mjs +0 -23
  1115. package/dist/mode-DIDSUwuN.mjs.map +0 -1
  1116. package/dist/node-sqlite-compat-Ddr_mlR9.mjs +0 -63
  1117. package/dist/node-sqlite-compat-Ddr_mlR9.mjs.map +0 -1
  1118. package/dist/normalize-Ip_hFAm8.mjs +0 -216
  1119. package/dist/normalize-Ip_hFAm8.mjs.map +0 -1
  1120. package/dist/oauth-authorization-CcMgeT8R.mjs +0 -274
  1121. package/dist/oauth-authorization-CcMgeT8R.mjs.map +0 -1
  1122. package/dist/oauth-clients-C_osi0PU.mjs +0 -266
  1123. package/dist/oauth-clients-C_osi0PU.mjs.map +0 -1
  1124. package/dist/oauth-state-store-DGLP-6CK.mjs +0 -50
  1125. package/dist/oauth-state-store-DGLP-6CK.mjs.map +0 -1
  1126. package/dist/oauth-user-lookup-z77Ee0Hm.mjs +0 -26
  1127. package/dist/oauth-user-lookup-z77Ee0Hm.mjs.map +0 -1
  1128. package/dist/object-cache-EjasjtoQ.mjs +0 -586
  1129. package/dist/object-cache-EjasjtoQ.mjs.map +0 -1
  1130. package/dist/options-CmUpkyKW.d.mts +0 -81
  1131. package/dist/options-CmUpkyKW.d.mts.map +0 -1
  1132. package/dist/ownership-DCk5NutQ.mjs +0 -12
  1133. package/dist/ownership-DCk5NutQ.mjs.map +0 -1
  1134. package/dist/parse-2W-E2f7w.mjs +0 -81
  1135. package/dist/parse-2W-E2f7w.mjs.map +0 -1
  1136. package/dist/parse-6pN8Xqg5.d.mts +0 -176
  1137. package/dist/parse-6pN8Xqg5.d.mts.map +0 -1
  1138. package/dist/passkey-config-DTTZB6EI.mjs +0 -46
  1139. package/dist/passkey-config-DTTZB6EI.mjs.map +0 -1
  1140. package/dist/paths-CQA62503.mjs +0 -77
  1141. package/dist/paths-CQA62503.mjs.map +0 -1
  1142. package/dist/placeholder-BlfXkucE.d.mts +0 -313
  1143. package/dist/placeholder-BlfXkucE.d.mts.map +0 -1
  1144. package/dist/plan-B95eiwnF.mjs +0 -135
  1145. package/dist/plan-B95eiwnF.mjs.map +0 -1
  1146. package/dist/plugin-tool-name-BDA7m4Xa.mjs +0 -27
  1147. package/dist/plugin-tool-name-BDA7m4Xa.mjs.map +0 -1
  1148. package/dist/plugins-BhxLJ008.mjs +0 -261
  1149. package/dist/plugins-BhxLJ008.mjs.map +0 -1
  1150. package/dist/policy-DOJ2sPqB.mjs +0 -53
  1151. package/dist/policy-DOJ2sPqB.mjs.map +0 -1
  1152. package/dist/portable-text-RCMpCj47.mjs +0 -311
  1153. package/dist/portable-text-RCMpCj47.mjs.map +0 -1
  1154. package/dist/preview-DFwL5APO.mjs +0 -107
  1155. package/dist/preview-DFwL5APO.mjs.map +0 -1
  1156. package/dist/protocol-B-ztxp_y.d.mts +0 -65
  1157. package/dist/protocol-B-ztxp_y.d.mts.map +0 -1
  1158. package/dist/public-plugin-api-routes-ik4fPZMv.mjs +0 -316
  1159. package/dist/public-plugin-api-routes-ik4fPZMv.mjs.map +0 -1
  1160. package/dist/public-submission-C5JZIykp.mjs +0 -251
  1161. package/dist/public-submission-C5JZIykp.mjs.map +0 -1
  1162. package/dist/public-url-CQwzRljH.mjs +0 -101
  1163. package/dist/public-url-CQwzRljH.mjs.map +0 -1
  1164. package/dist/query-DuwyFr5Z.mjs +0 -41
  1165. package/dist/query-DuwyFr5Z.mjs.map +0 -1
  1166. package/dist/query-eR_Nz70M.mjs +0 -1157
  1167. package/dist/query-eR_Nz70M.mjs.map +0 -1
  1168. package/dist/range-BQWPjWgQ.mjs +0 -51
  1169. package/dist/range-BQWPjWgQ.mjs.map +0 -1
  1170. package/dist/rate-limit-mPKeQ3sm.mjs +0 -127
  1171. package/dist/rate-limit-mPKeQ3sm.mjs.map +0 -1
  1172. package/dist/receipt-CmUpyuW5.mjs +0 -43
  1173. package/dist/receipt-CmUpyuW5.mjs.map +0 -1
  1174. package/dist/redirect-BtiMkehU.mjs +0 -19
  1175. package/dist/redirect-BtiMkehU.mjs.map +0 -1
  1176. package/dist/redirect-DcmNMvOs.mjs +0 -423
  1177. package/dist/redirect-DcmNMvOs.mjs.map +0 -1
  1178. package/dist/redirect-paths-K5i3xYfR.mjs +0 -36
  1179. package/dist/redirect-paths-K5i3xYfR.mjs.map +0 -1
  1180. package/dist/redirects-BA_TvtuH.mjs +0 -148
  1181. package/dist/redirects-BA_TvtuH.mjs.map +0 -1
  1182. package/dist/redirects-BIrRvgn4.mjs +0 -446
  1183. package/dist/redirects-BIrRvgn4.mjs.map +0 -1
  1184. package/dist/registry-DymfZkAN.mjs +0 -8374
  1185. package/dist/registry-DymfZkAN.mjs.map +0 -1
  1186. package/dist/relations-DrEs3Sc1.mjs +0 -789
  1187. package/dist/relations-DrEs3Sc1.mjs.map +0 -1
  1188. package/dist/request-meta-o8RIf9pa.mjs +0 -141
  1189. package/dist/request-meta-o8RIf9pa.mjs.map +0 -1
  1190. package/dist/resolve-CVy9xgy_.mjs +0 -102
  1191. package/dist/resolve-CVy9xgy_.mjs.map +0 -1
  1192. package/dist/route-cache-DAG5dPhh.mjs +0 -20
  1193. package/dist/route-cache-DAG5dPhh.mjs.map +0 -1
  1194. package/dist/route-wire-Xbsu8Vih.mjs +0 -197
  1195. package/dist/route-wire-Xbsu8Vih.mjs.map +0 -1
  1196. package/dist/routes-YQkSOsws.mjs +0 -272
  1197. package/dist/routes-YQkSOsws.mjs.map +0 -1
  1198. package/dist/runner-CLorw5vo.mjs +0 -6669
  1199. package/dist/runner-CLorw5vo.mjs.map +0 -1
  1200. package/dist/runner-g1A9P-wD.d.mts +0 -73
  1201. package/dist/runner-g1A9P-wD.d.mts.map +0 -1
  1202. package/dist/schema-Bss8qImF.mjs +0 -13
  1203. package/dist/schema-Bss8qImF.mjs.map +0 -1
  1204. package/dist/schema-C036pqEw.mjs +0 -815
  1205. package/dist/schema-C036pqEw.mjs.map +0 -1
  1206. package/dist/scopes-C_SoYl9x.mjs +0 -34
  1207. package/dist/scopes-C_SoYl9x.mjs.map +0 -1
  1208. package/dist/search-uNqCgePJ.mjs +0 -450
  1209. package/dist/search-uNqCgePJ.mjs.map +0 -1
  1210. package/dist/secrets-Cc_O3Kp-.mjs +0 -369
  1211. package/dist/secrets-Cc_O3Kp-.mjs.map +0 -1
  1212. package/dist/sections-BLusMa96.mjs +0 -346
  1213. package/dist/sections-BLusMa96.mjs.map +0 -1
  1214. package/dist/seo-BodxIpws.mjs +0 -188
  1215. package/dist/seo-BodxIpws.mjs.map +0 -1
  1216. package/dist/seo-DaMYIQY8.mjs +0 -133
  1217. package/dist/seo-DaMYIQY8.mjs.map +0 -1
  1218. package/dist/service-BuM1BRsA.mjs +0 -150
  1219. package/dist/service-BuM1BRsA.mjs.map +0 -1
  1220. package/dist/session-user-2DpQDMKw.mjs +0 -61
  1221. package/dist/session-user-2DpQDMKw.mjs.map +0 -1
  1222. package/dist/settings-B3ZmPF_8.mjs +0 -73
  1223. package/dist/settings-B3ZmPF_8.mjs.map +0 -1
  1224. package/dist/settings-P5hwPX6_.mjs +0 -66
  1225. package/dist/settings-P5hwPX6_.mjs.map +0 -1
  1226. package/dist/settings-yIqoN-Ok.mjs +0 -519
  1227. package/dist/settings-yIqoN-Ok.mjs.map +0 -1
  1228. package/dist/setup-complete-eu6MUQnt.mjs +0 -65
  1229. package/dist/setup-complete-eu6MUQnt.mjs.map +0 -1
  1230. package/dist/setup-nonce-CyPOapqY.mjs +0 -25
  1231. package/dist/setup-nonce-CyPOapqY.mjs.map +0 -1
  1232. package/dist/site-domain-8lEJl_0U.mjs +0 -131
  1233. package/dist/site-domain-8lEJl_0U.mjs.map +0 -1
  1234. package/dist/site-settings-uPkW0e6o.mjs +0 -50
  1235. package/dist/site-settings-uPkW0e6o.mjs.map +0 -1
  1236. package/dist/site-url-25SGVXwL.mjs +0 -45
  1237. package/dist/site-url-25SGVXwL.mjs.map +0 -1
  1238. package/dist/sitemap-name-DTK7CYnY.mjs +0 -26
  1239. package/dist/sitemap-name-DTK7CYnY.mjs.map +0 -1
  1240. package/dist/slug-BEDl2IJY.mjs +0 -16
  1241. package/dist/slug-BEDl2IJY.mjs.map +0 -1
  1242. package/dist/snapshot-CvkIBRLY.mjs +0 -414
  1243. package/dist/snapshot-CvkIBRLY.mjs.map +0 -1
  1244. package/dist/ssrf-mcCKMH6B.mjs +0 -406
  1245. package/dist/ssrf-mcCKMH6B.mjs.map +0 -1
  1246. package/dist/stage-BQfGzGOy.mjs +0 -662
  1247. package/dist/stage-BQfGzGOy.mjs.map +0 -1
  1248. package/dist/staged-B5vQGeSf.mjs +0 -686
  1249. package/dist/staged-B5vQGeSf.mjs.map +0 -1
  1250. package/dist/state-dO6t6OxV.mjs +0 -178
  1251. package/dist/state-dO6t6OxV.mjs.map +0 -1
  1252. package/dist/status-DSURZwKS.mjs +0 -30
  1253. package/dist/status-DSURZwKS.mjs.map +0 -1
  1254. package/dist/storage-query-Cy0SZ8iG.d.mts +0 -1619
  1255. package/dist/storage-query-Cy0SZ8iG.d.mts.map +0 -1
  1256. package/dist/tar-DWzcUZ_Q.mjs +0 -449
  1257. package/dist/tar-DWzcUZ_Q.mjs.map +0 -1
  1258. package/dist/target-C9htUbrT.mjs +0 -27
  1259. package/dist/target-C9htUbrT.mjs.map +0 -1
  1260. package/dist/taxonomies-By2aGvq2.mjs +0 -729
  1261. package/dist/taxonomies-By2aGvq2.mjs.map +0 -1
  1262. package/dist/taxonomies-CVRd_jz0.mjs +0 -937
  1263. package/dist/taxonomies-CVRd_jz0.mjs.map +0 -1
  1264. package/dist/taxonomy-BG_xu2Qf.mjs +0 -563
  1265. package/dist/taxonomy-BG_xu2Qf.mjs.map +0 -1
  1266. package/dist/tokens-U5vzgSrM.mjs +0 -171
  1267. package/dist/tokens-U5vzgSrM.mjs.map +0 -1
  1268. package/dist/transfer-DA0OSfaT.mjs +0 -8873
  1269. package/dist/transfer-DA0OSfaT.mjs.map +0 -1
  1270. package/dist/transfer-Pyf3d7ka.mjs +0 -166
  1271. package/dist/transfer-Pyf3d7ka.mjs.map +0 -1
  1272. package/dist/transfer-download-cX7SuWEy.mjs +0 -33
  1273. package/dist/transfer-download-cX7SuWEy.mjs.map +0 -1
  1274. package/dist/transformations-DczubD4j.mjs +0 -196
  1275. package/dist/transformations-DczubD4j.mjs.map +0 -1
  1276. package/dist/transport-DtIrjEFO.mjs +0 -137
  1277. package/dist/transport-DtIrjEFO.mjs.map +0 -1
  1278. package/dist/trusted-proxy-CDRd5Kmw.mjs +0 -51
  1279. package/dist/trusted-proxy-CDRd5Kmw.mjs.map +0 -1
  1280. package/dist/turnstile-Ct5YuFNY.mjs +0 -58
  1281. package/dist/turnstile-Ct5YuFNY.mjs.map +0 -1
  1282. package/dist/types-Bgujop4S.d.mts +0 -374
  1283. package/dist/types-Bgujop4S.d.mts.map +0 -1
  1284. package/dist/types-BirHUEXt.mjs +0 -18
  1285. package/dist/types-BirHUEXt.mjs.map +0 -1
  1286. package/dist/types-BqJgTL_y.d.mts +0 -293
  1287. package/dist/types-BqJgTL_y.d.mts.map +0 -1
  1288. package/dist/types-C-lrOt9T.d.mts +0 -87
  1289. package/dist/types-C-lrOt9T.d.mts.map +0 -1
  1290. package/dist/types-CCEHAhOv.d.mts +0 -916
  1291. package/dist/types-CCEHAhOv.d.mts.map +0 -1
  1292. package/dist/types-CLVwYRBr.d.mts +0 -227
  1293. package/dist/types-CLVwYRBr.d.mts.map +0 -1
  1294. package/dist/types-DVbTb4Hk.mjs +0 -77
  1295. package/dist/types-DVbTb4Hk.mjs.map +0 -1
  1296. package/dist/types-Ddku19Zw.d.mts +0 -209
  1297. package/dist/types-Ddku19Zw.d.mts.map +0 -1
  1298. package/dist/types-FIiGQ3PE.mjs +0 -16
  1299. package/dist/types-FIiGQ3PE.mjs.map +0 -1
  1300. package/dist/types-OauzCOY0.mjs +0 -37
  1301. package/dist/types-OauzCOY0.mjs.map +0 -1
  1302. package/dist/types-mQGTpP-4.d.mts +0 -1741
  1303. package/dist/types-mQGTpP-4.d.mts.map +0 -1
  1304. package/dist/types-nbjz3Mgm.d.mts +0 -125
  1305. package/dist/types-nbjz3Mgm.d.mts.map +0 -1
  1306. package/dist/update-check-hW32-0pf.mjs +0 -161
  1307. package/dist/update-check-hW32-0pf.mjs.map +0 -1
  1308. package/dist/upload-attempts-Bpik1TLF.mjs +0 -32
  1309. package/dist/upload-attempts-Bpik1TLF.mjs.map +0 -1
  1310. package/dist/url-pattern-CJeCyNij.mjs +0 -41
  1311. package/dist/url-pattern-CJeCyNij.mjs.map +0 -1
  1312. package/dist/user-nQInBZbE.mjs +0 -171
  1313. package/dist/user-nQInBZbE.mjs.map +0 -1
  1314. package/dist/utils-govudc_U.mjs +0 -442
  1315. package/dist/utils-govudc_U.mjs.map +0 -1
  1316. package/dist/validate-BxLvcDYh.mjs +0 -524
  1317. package/dist/validate-BxLvcDYh.mjs.map +0 -1
  1318. package/dist/validate-mnoVfASU.d.mts +0 -468
  1319. package/dist/validate-mnoVfASU.d.mts.map +0 -1
  1320. package/dist/validation-DQDEvh87.mjs +0 -221
  1321. package/dist/validation-DQDEvh87.mjs.map +0 -1
  1322. package/dist/version-BOFfLiVT.mjs +0 -49
  1323. package/dist/version-BOFfLiVT.mjs.map +0 -1
  1324. package/dist/version-Dcvx_C9g.mjs +0 -7
  1325. package/dist/version-Dcvx_C9g.mjs.map +0 -1
  1326. package/dist/version-DzTJ3gD7.mjs +0 -9
  1327. package/dist/version-DzTJ3gD7.mjs.map +0 -1
  1328. package/dist/video-BX7AI5nJ.mjs +0 -54
  1329. package/dist/video-BX7AI5nJ.mjs.map +0 -1
  1330. package/dist/virtual-modules-CU29aip9.mjs +0 -515
  1331. package/dist/virtual-modules-CU29aip9.mjs.map +0 -1
  1332. package/dist/widgets-HIeFmZxt.mjs +0 -121
  1333. package/dist/widgets-HIeFmZxt.mjs.map +0 -1
  1334. package/dist/wxr-taxonomies-DyOGhl8W.mjs +0 -454
  1335. package/dist/wxr-taxonomies-DyOGhl8W.mjs.map +0 -1
  1336. package/dist/zod-generator-VxCPVDpo.mjs +0 -425
  1337. package/dist/zod-generator-VxCPVDpo.mjs.map +0 -1
  1338. /package/dist/{ssrf-BBXcxG-f.mjs → ssrf-DM0E-D_8.mjs} +0 -0
@@ -0,0 +1,460 @@
1
+ import { u as isPostgres } from "./dialect-helpers-B1XN2HGB.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-DTtYSB27.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approvals-DTtYSB27.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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"}