emdash 0.40.1 → 0.41.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 (1240) hide show
  1. package/dist/action-token-CbKDcPJi.mjs +26 -0
  2. package/dist/action-token-CbKDcPJi.mjs.map +1 -0
  3. package/dist/activation-PtniBLt9.mjs +382 -0
  4. package/dist/activation-PtniBLt9.mjs.map +1 -0
  5. package/dist/adapters-C_Tf5x90.d.mts +171 -0
  6. package/dist/adapters-C_Tf5x90.d.mts.map +1 -0
  7. package/dist/allowed-origins-U1z4TdEZ.mjs +116 -0
  8. package/dist/allowed-origins-U1z4TdEZ.mjs.map +1 -0
  9. package/dist/api/route-utils.d.mts +4 -4
  10. package/dist/api/route-utils.mjs +46 -45
  11. package/dist/api/route-utils.mjs.map +1 -1
  12. package/dist/api/schemas/index.d.mts +2 -2
  13. package/dist/api/schemas/index.mjs +10 -10
  14. package/dist/api-CXwQkV_m.mjs +5122 -0
  15. package/dist/api-CXwQkV_m.mjs.map +1 -0
  16. package/dist/api-tokens-89WlohEN.mjs +166 -0
  17. package/dist/api-tokens-89WlohEN.mjs.map +1 -0
  18. package/dist/apply-Do3KNnUk.mjs +1659 -0
  19. package/dist/apply-Do3KNnUk.mjs.map +1 -0
  20. package/dist/approvals-CAX9Yw33.mjs +460 -0
  21. package/dist/approvals-CAX9Yw33.mjs.map +1 -0
  22. package/dist/artifact-fetch-B9W4CEST.mjs +659 -0
  23. package/dist/artifact-fetch-B9W4CEST.mjs.map +1 -0
  24. package/dist/astro/index.d.mts +14 -14
  25. package/dist/astro/index.mjs +20 -24
  26. package/dist/astro/index.mjs.map +1 -1
  27. package/dist/astro/middleware/auth.d.mts +12 -12
  28. package/dist/astro/middleware/auth.mjs +10 -10
  29. package/dist/astro/middleware/media-usage-write-fence.mjs +5 -5
  30. package/dist/astro/middleware/redirect.mjs +7 -7
  31. package/dist/astro/middleware/request-context.mjs +3 -3
  32. package/dist/astro/middleware/setup.mjs +1 -1
  33. package/dist/astro/middleware.d.mts +12 -12
  34. package/dist/astro/middleware.mjs +109 -106
  35. package/dist/astro/middleware.mjs.map +1 -1
  36. package/dist/astro/routes/api/admin/allowed-domains/_domain_.mjs +14 -14
  37. package/dist/astro/routes/api/admin/allowed-domains/index.mjs +14 -14
  38. package/dist/astro/routes/api/admin/api-tokens/_id_.mjs +6 -6
  39. package/dist/astro/routes/api/admin/api-tokens/index.mjs +7 -7
  40. package/dist/astro/routes/api/admin/byline-fields/_slug_/usage.mjs +7 -7
  41. package/dist/astro/routes/api/admin/byline-fields/_slug_.mjs +17 -17
  42. package/dist/astro/routes/api/admin/byline-fields/index.mjs +17 -17
  43. package/dist/astro/routes/api/admin/byline-fields/reorder.mjs +17 -17
  44. package/dist/astro/routes/api/admin/bylines/_id_/index.mjs +23 -23
  45. package/dist/astro/routes/api/admin/bylines/_id_/translations.mjs +23 -23
  46. package/dist/astro/routes/api/admin/bylines/index.mjs +23 -23
  47. package/dist/astro/routes/api/admin/comments/_id_/status.mjs +18 -18
  48. package/dist/astro/routes/api/admin/comments/_id_.mjs +7 -7
  49. package/dist/astro/routes/api/admin/comments/bulk.mjs +17 -17
  50. package/dist/astro/routes/api/admin/comments/counts.mjs +7 -7
  51. package/dist/astro/routes/api/admin/comments/index.mjs +17 -17
  52. package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.mjs +6 -6
  53. package/dist/astro/routes/api/admin/hooks/exclusive/index.mjs +5 -5
  54. package/dist/astro/routes/api/admin/media-usage/activation.mjs +20 -20
  55. package/dist/astro/routes/api/admin/media-usage/collection-deletions/index.mjs +22 -22
  56. package/dist/astro/routes/api/admin/media-usage/collection-deletions/retry.mjs +22 -22
  57. package/dist/astro/routes/api/admin/media-usage/progress.mjs +25 -25
  58. package/dist/astro/routes/api/admin/media-usage/repair.mjs +31 -31
  59. package/dist/astro/routes/api/admin/media-usage/work/index.mjs +22 -22
  60. package/dist/astro/routes/api/admin/media-usage/work/retry.mjs +22 -22
  61. package/dist/astro/routes/api/admin/oauth-clients/_id_.mjs +6 -6
  62. package/dist/astro/routes/api/admin/oauth-clients/index.mjs +6 -6
  63. package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs +8 -8
  64. package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs +8 -8
  65. package/dist/astro/routes/api/admin/plugins/_id_/index.mjs +72 -68
  66. package/dist/astro/routes/api/admin/plugins/_id_/index.mjs.map +1 -1
  67. package/dist/astro/routes/api/admin/plugins/_id_/mcp.mjs +7 -7
  68. package/dist/astro/routes/api/admin/plugins/_id_/settings.mjs +71 -67
  69. package/dist/astro/routes/api/admin/plugins/_id_/settings.mjs.map +1 -1
  70. package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs +72 -68
  71. package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs.map +1 -1
  72. package/dist/astro/routes/api/admin/plugins/_id_/update.mjs +82 -78
  73. package/dist/astro/routes/api/admin/plugins/_id_/update.mjs.map +1 -1
  74. package/dist/astro/routes/api/admin/plugins/index.mjs +72 -68
  75. package/dist/astro/routes/api/admin/plugins/index.mjs.map +1 -1
  76. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.mjs +5 -5
  77. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs +71 -67
  78. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs.map +1 -1
  79. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs +81 -77
  80. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs.map +1 -1
  81. package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs +71 -67
  82. package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs.map +1 -1
  83. package/dist/astro/routes/api/admin/plugins/registry/_id_/uninstall.mjs +72 -68
  84. package/dist/astro/routes/api/admin/plugins/registry/_id_/uninstall.mjs.map +1 -1
  85. package/dist/astro/routes/api/admin/plugins/registry/_id_/update.mjs +83 -79
  86. package/dist/astro/routes/api/admin/plugins/registry/_id_/update.mjs.map +1 -1
  87. package/dist/astro/routes/api/admin/plugins/registry/artifact.mjs +9 -9
  88. package/dist/astro/routes/api/admin/plugins/registry/install.mjs +74 -70
  89. package/dist/astro/routes/api/admin/plugins/registry/install.mjs.map +1 -1
  90. package/dist/astro/routes/api/admin/plugins/registry/publisher-handle.mjs +7 -7
  91. package/dist/astro/routes/api/admin/plugins/registry/verify.mjs +72 -68
  92. package/dist/astro/routes/api/admin/plugins/registry/verify.mjs.map +1 -1
  93. package/dist/astro/routes/api/admin/plugins/updates.mjs +71 -67
  94. package/dist/astro/routes/api/admin/plugins/updates.mjs.map +1 -1
  95. package/dist/astro/routes/api/admin/scheduled-policy-rejections/_collection_/_id_.mjs +6 -6
  96. package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs +71 -67
  97. package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs.map +1 -1
  98. package/dist/astro/routes/api/admin/themes/marketplace/_id_/thumbnail.mjs +5 -5
  99. package/dist/astro/routes/api/admin/themes/marketplace/index.mjs +71 -67
  100. package/dist/astro/routes/api/admin/themes/marketplace/index.mjs.map +1 -1
  101. package/dist/astro/routes/api/admin/transfer/_...path_.mjs +4 -4
  102. package/dist/astro/routes/api/admin/transfer/approvals/_id_/approve.mjs +40 -40
  103. package/dist/astro/routes/api/admin/transfer/approvals/_id_/deny.mjs +40 -40
  104. package/dist/astro/routes/api/admin/transfer/approvals/index.mjs +42 -42
  105. package/dist/astro/routes/api/admin/transfer/capabilities.mjs +42 -42
  106. package/dist/astro/routes/api/admin/transfer/exports/_id_/advance.mjs +42 -42
  107. package/dist/astro/routes/api/admin/transfer/exports/_id_/archive.mjs +43 -43
  108. package/dist/astro/routes/api/admin/transfer/exports/_id_/files/_...path_.mjs +43 -43
  109. package/dist/astro/routes/api/admin/transfer/exports/_id_/index.mjs +42 -42
  110. package/dist/astro/routes/api/admin/transfer/exports/_id_/manifest.mjs +43 -43
  111. package/dist/astro/routes/api/admin/transfer/exports/index.mjs +44 -44
  112. package/dist/astro/routes/api/admin/transfer/imports/_id_/abandon.mjs +42 -42
  113. package/dist/astro/routes/api/admin/transfer/imports/_id_/advance.mjs +42 -42
  114. package/dist/astro/routes/api/admin/transfer/imports/_id_/analyze.mjs +44 -44
  115. package/dist/astro/routes/api/admin/transfer/imports/_id_/cancel.mjs +42 -42
  116. package/dist/astro/routes/api/admin/transfer/imports/_id_/execute.mjs +44 -44
  117. package/dist/astro/routes/api/admin/transfer/imports/_id_/files/_...path_.mjs +42 -42
  118. package/dist/astro/routes/api/admin/transfer/imports/_id_/index.mjs +42 -42
  119. package/dist/astro/routes/api/admin/transfer/imports/_id_/missing.mjs +44 -44
  120. package/dist/astro/routes/api/admin/transfer/imports/_id_/plan.mjs +42 -42
  121. package/dist/astro/routes/api/admin/transfer/imports/_id_/receipt.mjs +42 -42
  122. package/dist/astro/routes/api/admin/transfer/imports/index.mjs +44 -44
  123. package/dist/astro/routes/api/admin/users/_id_/disable.mjs +5 -5
  124. package/dist/astro/routes/api/admin/users/_id_/enable.mjs +4 -4
  125. package/dist/astro/routes/api/admin/users/_id_/index.mjs +15 -15
  126. package/dist/astro/routes/api/admin/users/_id_/send-recovery.mjs +6 -6
  127. package/dist/astro/routes/api/admin/users/index.mjs +14 -14
  128. package/dist/astro/routes/api/auth/dev-bypass.mjs +6 -6
  129. package/dist/astro/routes/api/auth/invite/accept.mjs +4 -4
  130. package/dist/astro/routes/api/auth/invite/complete.mjs +18 -18
  131. package/dist/astro/routes/api/auth/invite/index.mjs +16 -16
  132. package/dist/astro/routes/api/auth/invite/register-options.mjs +17 -17
  133. package/dist/astro/routes/api/auth/logout.mjs +5 -5
  134. package/dist/astro/routes/api/auth/magic-link/send.mjs +18 -18
  135. package/dist/astro/routes/api/auth/magic-link/verify.mjs +14 -14
  136. package/dist/astro/routes/api/auth/me.mjs +15 -15
  137. package/dist/astro/routes/api/auth/mode.mjs +5 -5
  138. package/dist/astro/routes/api/auth/oauth/_provider_/callback.mjs +3 -3
  139. package/dist/astro/routes/api/auth/oauth/_provider_.mjs +2 -2
  140. package/dist/astro/routes/api/auth/passkey/_id_.mjs +14 -14
  141. package/dist/astro/routes/api/auth/passkey/index.mjs +4 -4
  142. package/dist/astro/routes/api/auth/passkey/options.mjs +19 -19
  143. package/dist/astro/routes/api/auth/passkey/register/options.mjs +17 -17
  144. package/dist/astro/routes/api/auth/passkey/register/verify.mjs +18 -18
  145. package/dist/astro/routes/api/auth/passkey/verify.mjs +18 -18
  146. package/dist/astro/routes/api/auth/signup/complete.mjs +18 -18
  147. package/dist/astro/routes/api/auth/signup/request.mjs +17 -17
  148. package/dist/astro/routes/api/auth/signup/verify.mjs +4 -4
  149. package/dist/astro/routes/api/comments/_collection_/_contentId_/index.mjs +12 -12
  150. package/dist/astro/routes/api/comments/_collection_/_contentId_/reactions.mjs +18 -18
  151. package/dist/astro/routes/api/content/_collection_/_id_/compare.mjs +5 -5
  152. package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs +17 -17
  153. package/dist/astro/routes/api/content/_collection_/_id_/duplicate.mjs +5 -5
  154. package/dist/astro/routes/api/content/_collection_/_id_/lock.mjs +17 -17
  155. package/dist/astro/routes/api/content/_collection_/_id_/permanent.mjs +5 -5
  156. package/dist/astro/routes/api/content/_collection_/_id_/plugin-extensions/_pluginId_/_kind_/_extensionId_.mjs +11 -11
  157. package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs +31 -31
  158. package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs +17 -17
  159. package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/children.d.mts +1 -2
  160. package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/children.d.mts.map +1 -1
  161. package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/children.mjs +42 -53
  162. package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/children.mjs.map +1 -1
  163. package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/parents.mjs +34 -29
  164. package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/parents.mjs.map +1 -1
  165. package/dist/astro/routes/api/content/_collection_/_id_/restore.mjs +5 -5
  166. package/dist/astro/routes/api/content/_collection_/_id_/revisions.mjs +5 -5
  167. package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs +17 -17
  168. package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs +25 -24
  169. package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs.map +1 -1
  170. package/dist/astro/routes/api/content/_collection_/_id_/translations.mjs +5 -5
  171. package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs +17 -17
  172. package/dist/astro/routes/api/content/_collection_/_id_.d.mts.map +1 -1
  173. package/dist/astro/routes/api/content/_collection_/_id_.mjs +18 -18
  174. package/dist/astro/routes/api/content/_collection_/_id_.mjs.map +1 -1
  175. package/dist/astro/routes/api/content/_collection_/authors.mjs +5 -5
  176. package/dist/astro/routes/api/content/_collection_/index.mjs +15 -15
  177. package/dist/astro/routes/api/content/_collection_/trash.mjs +15 -15
  178. package/dist/astro/routes/api/dashboard.mjs +10 -9
  179. package/dist/astro/routes/api/dashboard.mjs.map +1 -1
  180. package/dist/astro/routes/api/dev/emails.mjs +5 -5
  181. package/dist/astro/routes/api/health.mjs +6 -6
  182. package/dist/astro/routes/api/import/probe.d.mts +3 -3
  183. package/dist/astro/routes/api/import/probe.mjs +23 -23
  184. package/dist/astro/routes/api/import/wordpress/analyze.mjs +6 -6
  185. package/dist/astro/routes/api/import/wordpress/execute.d.mts +13 -13
  186. package/dist/astro/routes/api/import/wordpress/execute.mjs +16 -16
  187. package/dist/astro/routes/api/import/wordpress/media.d.mts +12 -12
  188. package/dist/astro/routes/api/import/wordpress/media.mjs +19 -19
  189. package/dist/astro/routes/api/import/wordpress/prepare.mjs +18 -18
  190. package/dist/astro/routes/api/import/wordpress/rewrite-urls.d.mts +13 -13
  191. package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs +28 -28
  192. package/dist/astro/routes/api/import/wordpress-plugin/analyze.d.mts +1 -1
  193. package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs +23 -23
  194. package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts +13 -13
  195. package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs +34 -34
  196. package/dist/astro/routes/api/manifest.mjs +6 -6
  197. package/dist/astro/routes/api/mcp.mjs +91 -91
  198. package/dist/astro/routes/api/media/_id_/confirm.mjs +19 -19
  199. package/dist/astro/routes/api/media/_id_/replace.mjs +16 -16
  200. package/dist/astro/routes/api/media/_id_/upload.mjs +9 -9
  201. package/dist/astro/routes/api/media/_id_/usage.mjs +33 -33
  202. package/dist/astro/routes/api/media/_id_.mjs +31 -31
  203. package/dist/astro/routes/api/media/asset/_id_/_filename_.mjs +6 -6
  204. package/dist/astro/routes/api/media/file/_...key_.mjs +9 -9
  205. package/dist/astro/routes/api/media/folders/_id_.mjs +16 -16
  206. package/dist/astro/routes/api/media/folders/index.mjs +16 -16
  207. package/dist/astro/routes/api/media/providers/_providerId_/_itemId_.mjs +5 -5
  208. package/dist/astro/routes/api/media/providers/_providerId_/index.mjs +5 -5
  209. package/dist/astro/routes/api/media/providers/index.mjs +5 -5
  210. package/dist/astro/routes/api/media/upload-url.mjs +18 -18
  211. package/dist/astro/routes/api/media.mjs +35 -35
  212. package/dist/astro/routes/api/menus/_name_/items/_id_.mjs +17 -17
  213. package/dist/astro/routes/api/menus/_name_/items.mjs +17 -17
  214. package/dist/astro/routes/api/menus/_name_/reorder.mjs +17 -17
  215. package/dist/astro/routes/api/menus/_name_/translations.mjs +17 -17
  216. package/dist/astro/routes/api/menus/_name_.mjs +17 -17
  217. package/dist/astro/routes/api/menus/index.mjs +17 -17
  218. package/dist/astro/routes/api/oauth/authorize.mjs +6 -6
  219. package/dist/astro/routes/api/oauth/device/authorize.d.mts +2 -1
  220. package/dist/astro/routes/api/oauth/device/authorize.d.mts.map +1 -1
  221. package/dist/astro/routes/api/oauth/device/authorize.mjs +23 -9
  222. package/dist/astro/routes/api/oauth/device/authorize.mjs.map +1 -1
  223. package/dist/astro/routes/api/oauth/device/code.mjs +11 -11
  224. package/dist/astro/routes/api/oauth/device/token.mjs +10 -10
  225. package/dist/astro/routes/api/oauth/register.mjs +5 -5
  226. package/dist/astro/routes/api/oauth/token/refresh.mjs +8 -8
  227. package/dist/astro/routes/api/oauth/token/revoke.mjs +8 -8
  228. package/dist/astro/routes/api/oauth/token.mjs +8 -8
  229. package/dist/astro/routes/api/openapi.json.mjs +20 -20
  230. package/dist/astro/routes/api/plugins/_pluginId_/_...path_.mjs +11 -11
  231. package/dist/astro/routes/api/redirects/404s/index.mjs +19 -19
  232. package/dist/astro/routes/api/redirects/404s/summary.mjs +19 -19
  233. package/dist/astro/routes/api/redirects/_id_.mjs +19 -19
  234. package/dist/astro/routes/api/redirects/index.mjs +19 -19
  235. package/dist/astro/routes/api/relations/_id_/index.mjs +34 -29
  236. package/dist/astro/routes/api/relations/_id_/index.mjs.map +1 -1
  237. package/dist/astro/routes/api/relations/index.mjs +36 -31
  238. package/dist/astro/routes/api/relations/index.mjs.map +1 -1
  239. package/dist/astro/routes/api/revisions/_revisionId_/index.mjs +5 -5
  240. package/dist/astro/routes/api/revisions/_revisionId_/restore.mjs +5 -5
  241. package/dist/astro/routes/api/schema/block-types/_slug_/index.mjs +71 -67
  242. package/dist/astro/routes/api/schema/block-types/_slug_/index.mjs.map +1 -1
  243. package/dist/astro/routes/api/schema/block-types/_slug_/versions/_version_/activate.mjs +71 -67
  244. package/dist/astro/routes/api/schema/block-types/_slug_/versions/_version_/activate.mjs.map +1 -1
  245. package/dist/astro/routes/api/schema/block-types/index.mjs +71 -67
  246. package/dist/astro/routes/api/schema/block-types/index.mjs.map +1 -1
  247. package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs +73 -69
  248. package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs.map +1 -1
  249. package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs +71 -67
  250. package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs.map +1 -1
  251. package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs +71 -67
  252. package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs.map +1 -1
  253. package/dist/astro/routes/api/schema/collections/_slug_/index.mjs +71 -67
  254. package/dist/astro/routes/api/schema/collections/_slug_/index.mjs.map +1 -1
  255. package/dist/astro/routes/api/schema/collections/index.mjs +71 -67
  256. package/dist/astro/routes/api/schema/collections/index.mjs.map +1 -1
  257. package/dist/astro/routes/api/schema/collections/reorder.mjs +71 -67
  258. package/dist/astro/routes/api/schema/collections/reorder.mjs.map +1 -1
  259. package/dist/astro/routes/api/schema/index.mjs +16 -16
  260. package/dist/astro/routes/api/schema/orphans/_slug_.mjs +71 -67
  261. package/dist/astro/routes/api/schema/orphans/_slug_.mjs.map +1 -1
  262. package/dist/astro/routes/api/schema/orphans/index.mjs +71 -67
  263. package/dist/astro/routes/api/schema/orphans/index.mjs.map +1 -1
  264. package/dist/astro/routes/api/search/enable.mjs +19 -19
  265. package/dist/astro/routes/api/search/index.mjs +18 -18
  266. package/dist/astro/routes/api/search/rebuild.mjs +19 -19
  267. package/dist/astro/routes/api/search/stats.mjs +9 -9
  268. package/dist/astro/routes/api/search/suggest.mjs +18 -18
  269. package/dist/astro/routes/api/sections/_slug_.mjs +18 -18
  270. package/dist/astro/routes/api/sections/index.mjs +18 -18
  271. package/dist/astro/routes/api/settings/backups/archives/_name_.mjs +7 -7
  272. package/dist/astro/routes/api/settings/backups/archives/index.mjs +7 -7
  273. package/dist/astro/routes/api/settings/backups/export.mjs +7 -7
  274. package/dist/astro/routes/api/settings/backups/index.mjs +8 -8
  275. package/dist/astro/routes/api/settings/email.mjs +6 -6
  276. package/dist/astro/routes/api/settings.mjs +21 -21
  277. package/dist/astro/routes/api/setup/admin-verify.mjs +19 -19
  278. package/dist/astro/routes/api/setup/admin.mjs +18 -18
  279. package/dist/astro/routes/api/setup/dev-bypass.mjs +45 -39
  280. package/dist/astro/routes/api/setup/dev-bypass.mjs.map +1 -1
  281. package/dist/astro/routes/api/setup/dev-reset.mjs +4 -4
  282. package/dist/astro/routes/api/setup/index.mjs +50 -44
  283. package/dist/astro/routes/api/setup/index.mjs.map +1 -1
  284. package/dist/astro/routes/api/setup/status.mjs +6 -6
  285. package/dist/astro/routes/api/snapshot.mjs +8 -8
  286. package/dist/astro/routes/api/taxonomies/_name_/reorder.mjs +23 -23
  287. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs +23 -23
  288. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs +23 -23
  289. package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs +23 -23
  290. package/dist/astro/routes/api/taxonomies/_name_/translations.mjs +22 -22
  291. package/dist/astro/routes/api/taxonomies/_name_.mjs +23 -23
  292. package/dist/astro/routes/api/taxonomies/bulk-tag.mjs +36 -35
  293. package/dist/astro/routes/api/taxonomies/bulk-tag.mjs.map +1 -1
  294. package/dist/astro/routes/api/taxonomies/index.mjs +23 -23
  295. package/dist/astro/routes/api/themes/preview.mjs +6 -6
  296. package/dist/astro/routes/api/typegen.mjs +8 -8
  297. package/dist/astro/routes/api/visual-editing/action-token.mjs +6 -6
  298. package/dist/astro/routes/api/visual-editing/content/_collection_/_id_/publish.mjs +19 -19
  299. package/dist/astro/routes/api/visual-editing/toolbar-labels.mjs +4 -4
  300. package/dist/astro/routes/api/well-known/auth.mjs +1 -1
  301. package/dist/astro/routes/api/well-known/oauth-authorization-server.mjs +2 -2
  302. package/dist/astro/routes/api/well-known/oauth-protected-resource.mjs +2 -2
  303. package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs +16 -16
  304. package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs +19 -19
  305. package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs +19 -19
  306. package/dist/astro/routes/api/widget-areas/_name_.mjs +9 -9
  307. package/dist/astro/routes/api/widget-areas/index.mjs +19 -19
  308. package/dist/astro/routes/api/widget-components.mjs +5 -5
  309. package/dist/astro/routes/robots.txt.mjs +6 -6
  310. package/dist/astro/routes/sitemap-_collection_.xml.mjs +9 -9
  311. package/dist/astro/routes/sitemap.xml.mjs +7 -7
  312. package/dist/astro/types.d.mts +24 -18
  313. package/dist/astro/types.d.mts.map +1 -1
  314. package/dist/audit-CrgmE9LE.mjs +127 -0
  315. package/dist/audit-CrgmE9LE.mjs.map +1 -0
  316. package/dist/auth/providers/github.d.mts +1 -1
  317. package/dist/auth/providers/google.d.mts +1 -1
  318. package/dist/authoritative-records-C2YzIdbu.mjs +5172 -0
  319. package/dist/authoritative-records-C2YzIdbu.mjs.map +1 -0
  320. package/dist/authorize-WgdKF8QY.mjs +49 -0
  321. package/dist/authorize-WgdKF8QY.mjs.map +1 -0
  322. package/dist/backup-Ck8_lMO3.mjs +246 -0
  323. package/dist/backup-Ck8_lMO3.mjs.map +1 -0
  324. package/dist/block-types-BQ90asVI.mjs +132 -0
  325. package/dist/block-types-BQ90asVI.mjs.map +1 -0
  326. package/dist/block-values-ACFqgB1D.mjs +175 -0
  327. package/dist/block-values-ACFqgB1D.mjs.map +1 -0
  328. package/dist/bundle-Db1iNMv_.mjs +667 -0
  329. package/dist/bundle-Db1iNMv_.mjs.map +1 -0
  330. package/dist/byline-BayaYGoj.mjs +909 -0
  331. package/dist/byline-BayaYGoj.mjs.map +1 -0
  332. package/dist/byline-fields-B8HH-35f.mjs +254 -0
  333. package/dist/byline-fields-B8HH-35f.mjs.map +1 -0
  334. package/dist/byline-fields-hMPjf6Eu.mjs +123 -0
  335. package/dist/byline-fields-hMPjf6Eu.mjs.map +1 -0
  336. package/dist/byline-registry-B_EK_TQf.mjs +406 -0
  337. package/dist/byline-registry-B_EK_TQf.mjs.map +1 -0
  338. package/dist/bylines-DFAaFXWi.mjs +214 -0
  339. package/dist/bylines-DFAaFXWi.mjs.map +1 -0
  340. package/dist/bylines-DkIxUxmr.mjs +232 -0
  341. package/dist/bylines-DkIxUxmr.mjs.map +1 -0
  342. package/dist/cache-DkvhQ8XE.mjs +108 -0
  343. package/dist/cache-DkvhQ8XE.mjs.map +1 -0
  344. package/dist/canonical-CcSuuTlH.mjs +174 -0
  345. package/dist/canonical-CcSuuTlH.mjs.map +1 -0
  346. package/dist/capture-triggers-DJEoOTOq.mjs +362 -0
  347. package/dist/capture-triggers-DJEoOTOq.mjs.map +1 -0
  348. package/dist/challenge-store-CvBl81AQ.mjs +51 -0
  349. package/dist/challenge-store-CvBl81AQ.mjs.map +1 -0
  350. package/dist/checksum-CClweQzI.mjs +162 -0
  351. package/dist/checksum-CClweQzI.mjs.map +1 -0
  352. package/dist/chrome-tags-D5caJwwp.mjs +24 -0
  353. package/dist/chrome-tags-D5caJwwp.mjs.map +1 -0
  354. package/dist/chunks-DwBaj8aT.mjs +25 -0
  355. package/dist/chunks-DwBaj8aT.mjs.map +1 -0
  356. package/dist/cli/index.mjs +374 -761
  357. package/dist/cli/index.mjs.map +1 -1
  358. package/dist/client/cf-access.d.mts +1 -1
  359. package/dist/client/index.d.mts +32 -32
  360. package/dist/client/index.mjs +2 -2
  361. package/dist/collection-deletion-CLCdXsnV.mjs +436 -0
  362. package/dist/collection-deletion-CLCdXsnV.mjs.map +1 -0
  363. package/dist/collection-deletion-processor-hNw8x01F.mjs +217 -0
  364. package/dist/collection-deletion-processor-hNw8x01F.mjs.map +1 -0
  365. package/dist/collection-slugs-cache-CUuiduLq.mjs +85 -0
  366. package/dist/collection-slugs-cache-CUuiduLq.mjs.map +1 -0
  367. package/dist/comment-D2uvL63j.mjs +313 -0
  368. package/dist/comment-D2uvL63j.mjs.map +1 -0
  369. package/dist/comment-reaction-DevUuzg4.mjs +85 -0
  370. package/dist/comment-reaction-DevUuzg4.mjs.map +1 -0
  371. package/dist/comments-Cq0s7_hO.mjs +195 -0
  372. package/dist/comments-Cq0s7_hO.mjs.map +1 -0
  373. package/dist/comments-M4EDYAHw.mjs +99 -0
  374. package/dist/comments-M4EDYAHw.mjs.map +1 -0
  375. package/dist/components-CuIGwXMs.mjs +108 -0
  376. package/dist/components-CuIGwXMs.mjs.map +1 -0
  377. package/dist/config-52Ea5IWt.d.mts +39 -0
  378. package/dist/config-52Ea5IWt.d.mts.map +1 -0
  379. package/dist/config-CCz3xOLc.mjs +242 -0
  380. package/dist/config-CCz3xOLc.mjs.map +1 -0
  381. package/dist/config-D3d5Qudq.d.mts +6669 -0
  382. package/dist/config-D3d5Qudq.d.mts.map +1 -0
  383. package/dist/content-CbnufDsM.mjs +2018 -0
  384. package/dist/content-CbnufDsM.mjs.map +1 -0
  385. package/dist/content-list-query-D_7B1FE5.d.mts +26 -0
  386. package/dist/content-list-query-D_7B1FE5.d.mts.map +1 -0
  387. package/dist/content-policy-CYu6K1KB.mjs +46 -0
  388. package/dist/content-policy-CYu6K1KB.mjs.map +1 -0
  389. package/dist/content-repair-DlDUgFGp.mjs +442 -0
  390. package/dist/content-repair-DlDUgFGp.mjs.map +1 -0
  391. package/dist/context-CGQLA1-a.mjs +1922 -0
  392. package/dist/context-CGQLA1-a.mjs.map +1 -0
  393. package/dist/cron-c4D5C5Fx.mjs +284 -0
  394. package/dist/cron-c4D5C5Fx.mjs.map +1 -0
  395. package/dist/dashboard-CBq9kmOn.mjs +151 -0
  396. package/dist/dashboard-CBq9kmOn.mjs.map +1 -0
  397. package/dist/db/index.d.mts +3 -3
  398. package/dist/db/index.mjs +1 -1
  399. package/dist/db/libsql-migrations.d.mts +1 -1
  400. package/dist/db/libsql-migrations.mjs +4 -4
  401. package/dist/db/libsql.d.mts +1 -1
  402. package/dist/db/postgres-migrations.d.mts +1 -1
  403. package/dist/db/postgres-migrations.mjs +4 -4
  404. package/dist/db/postgres.d.mts +1 -1
  405. package/dist/db/sqlite-migrations.d.mts +1 -1
  406. package/dist/db/sqlite-migrations.mjs +4 -4
  407. package/dist/db/sqlite.d.mts +1 -1
  408. package/dist/db/sqlite.mjs +1 -1
  409. package/dist/default-DPsys51U.mjs +81 -0
  410. package/dist/default-DPsys51U.mjs.map +1 -0
  411. package/dist/deferred-tasks-CZ7rzBdo.d.mts +9 -0
  412. package/dist/deferred-tasks-CZ7rzBdo.d.mts.map +1 -0
  413. package/dist/dev-typegen-HRxwLRcT.mjs +29 -0
  414. package/dist/dev-typegen-HRxwLRcT.mjs.map +1 -0
  415. package/dist/device-flow-OcSqE9uY.mjs +521 -0
  416. package/dist/device-flow-OcSqE9uY.mjs.map +1 -0
  417. package/dist/digest-DVZ--cE9.mjs +194 -0
  418. package/dist/digest-DVZ--cE9.mjs.map +1 -0
  419. package/dist/direct-executor-DyjAqkpT.mjs +104 -0
  420. package/dist/direct-executor-DyjAqkpT.mjs.map +1 -0
  421. package/dist/dist-FPR93_xf.mjs +810 -0
  422. package/dist/dist-FPR93_xf.mjs.map +1 -0
  423. package/dist/email-console-DyQIgEnz.mjs +50 -0
  424. package/dist/email-console-DyQIgEnz.mjs.map +1 -0
  425. package/dist/email-locale-BYb16rVd.mjs +25 -0
  426. package/dist/email-locale-BYb16rVd.mjs.map +1 -0
  427. package/dist/emdash-runtime-CrzxJFmF.mjs +4214 -0
  428. package/dist/emdash-runtime-CrzxJFmF.mjs.map +1 -0
  429. package/dist/enrich-DBtCncE2.mjs +194 -0
  430. package/dist/enrich-DBtCncE2.mjs.map +1 -0
  431. package/dist/entry-lock-BN5y4YbO.d.mts +4481 -0
  432. package/dist/entry-lock-BN5y4YbO.d.mts.map +1 -0
  433. package/dist/entry-lock-BaRBHCsH.mjs +1173 -0
  434. package/dist/entry-lock-BaRBHCsH.mjs.map +1 -0
  435. package/dist/entry-lock-C6NcnZPV.mjs +163 -0
  436. package/dist/entry-lock-C6NcnZPV.mjs.map +1 -0
  437. package/dist/entry-locks-BTyQLdbC.mjs +167 -0
  438. package/dist/entry-locks-BTyQLdbC.mjs.map +1 -0
  439. package/dist/error-BfsNNrIE.mjs +90 -0
  440. package/dist/error-BfsNNrIE.mjs.map +1 -0
  441. package/dist/errors-BN1QAnEY.mjs +460 -0
  442. package/dist/errors-BN1QAnEY.mjs.map +1 -0
  443. package/dist/errors-Bt3goF8I.mjs +120 -0
  444. package/dist/errors-Bt3goF8I.mjs.map +1 -0
  445. package/dist/escape-BveidMa2.mjs +9 -0
  446. package/dist/escape-BveidMa2.mjs.map +1 -0
  447. package/dist/fence-Bb_IbCxI.mjs +162 -0
  448. package/dist/fence-Bb_IbCxI.mjs.map +1 -0
  449. package/dist/field-defs-cache-CsZctvbu.mjs +77 -0
  450. package/dist/field-defs-cache-CsZctvbu.mjs.map +1 -0
  451. package/dist/field-map-6m9rF49t.mjs +83 -0
  452. package/dist/field-map-6m9rF49t.mjs.map +1 -0
  453. package/dist/focal-point-CZ3d1wK5.mjs +23 -0
  454. package/dist/focal-point-CZ3d1wK5.mjs.map +1 -0
  455. package/dist/fts-manager-CCaZTp8y.mjs +443 -0
  456. package/dist/fts-manager-CCaZTp8y.mjs.map +1 -0
  457. package/dist/gc-xowRjczI.mjs +75 -0
  458. package/dist/gc-xowRjczI.mjs.map +1 -0
  459. package/dist/hash-COVK27Pc.mjs +37 -0
  460. package/dist/hash-COVK27Pc.mjs.map +1 -0
  461. package/dist/hook-result-CYSk0XFe.d.mts +31 -0
  462. package/dist/hook-result-CYSk0XFe.d.mts.map +1 -0
  463. package/dist/hreflang-CChPV7jx.mjs +105 -0
  464. package/dist/hreflang-CChPV7jx.mjs.map +1 -0
  465. package/dist/hreflang-DRslq3QI.d.mts +50 -0
  466. package/dist/hreflang-DRslq3QI.d.mts.map +1 -0
  467. package/dist/http-route-dispatch-CAdp2onn.mjs +339 -0
  468. package/dist/http-route-dispatch-CAdp2onn.mjs.map +1 -0
  469. package/dist/identity-NVTOOQyq.mjs +35 -0
  470. package/dist/identity-NVTOOQyq.mjs.map +1 -0
  471. package/dist/import-wpSO2N0x.mjs +2020 -0
  472. package/dist/import-wpSO2N0x.mjs.map +1 -0
  473. package/dist/index-CDs2wq4X.d.mts +623 -0
  474. package/dist/index-CDs2wq4X.d.mts.map +1 -0
  475. package/dist/index.d.mts +24 -24
  476. package/dist/index.mjs +103 -101
  477. package/dist/install-finalization-D9R9R-W8.mjs +58 -0
  478. package/dist/install-finalization-D9R9R-W8.mjs.map +1 -0
  479. package/dist/keys-Bck6LBfF.mjs +61 -0
  480. package/dist/keys-Bck6LBfF.mjs.map +1 -0
  481. package/dist/kinds-CYmRESWj.mjs +974 -0
  482. package/dist/kinds-CYmRESWj.mjs.map +1 -0
  483. package/dist/lifecycle-C815ZQfV.mjs +25 -0
  484. package/dist/lifecycle-C815ZQfV.mjs.map +1 -0
  485. package/dist/load-D99axixL.mjs +28 -0
  486. package/dist/load-D99axixL.mjs.map +1 -0
  487. package/dist/loader-CrRPfkHS.mjs +1197 -0
  488. package/dist/loader-CrRPfkHS.mjs.map +1 -0
  489. package/dist/loops-DMKlygqX.mjs +203 -0
  490. package/dist/loops-DMKlygqX.mjs.map +1 -0
  491. package/dist/manifest-builder-BQzCHNgB.mjs +189 -0
  492. package/dist/manifest-builder-BQzCHNgB.mjs.map +1 -0
  493. package/dist/manifest-schema-Ci2gmd0u.mjs +492 -0
  494. package/dist/manifest-schema-Ci2gmd0u.mjs.map +1 -0
  495. package/dist/media/image-endpoint.mjs +1 -1
  496. package/dist/media/index.d.mts +1 -1
  497. package/dist/media/index.mjs +4 -4
  498. package/dist/media/local-runtime.d.mts +14 -14
  499. package/dist/media/local-runtime.mjs +6 -6
  500. package/dist/media-BUQePMxP.mjs +373 -0
  501. package/dist/media-BUQePMxP.mjs.map +1 -0
  502. package/dist/media-DH8ibNlY.mjs +294 -0
  503. package/dist/media-DH8ibNlY.mjs.map +1 -0
  504. package/dist/media-OEIQ3bVc.mjs +408 -0
  505. package/dist/media-OEIQ3bVc.mjs.map +1 -0
  506. package/dist/media-allowlist-pYtaBA95.mjs +44 -0
  507. package/dist/media-allowlist-pYtaBA95.mjs.map +1 -0
  508. package/dist/media-folders-Bf8_s4de.mjs +210 -0
  509. package/dist/media-folders-Bf8_s4de.mjs.map +1 -0
  510. package/dist/media-url-C6klEuNd.mjs +43 -0
  511. package/dist/media-url-C6klEuNd.mjs.map +1 -0
  512. package/dist/media-usage-D7Y64m6v.mjs +1629 -0
  513. package/dist/media-usage-D7Y64m6v.mjs.map +1 -0
  514. package/dist/media-usage-activation-DrqbmgLA.mjs +78 -0
  515. package/dist/media-usage-activation-DrqbmgLA.mjs.map +1 -0
  516. package/dist/media-usage-work-DommYhYA.mjs +152 -0
  517. package/dist/media-usage-work-DommYhYA.mjs.map +1 -0
  518. package/dist/media-usage-work-HU63hNDu.mjs +586 -0
  519. package/dist/media-usage-work-HU63hNDu.mjs.map +1 -0
  520. package/dist/menus-BQfusWEC.mjs +3608 -0
  521. package/dist/menus-BQfusWEC.mjs.map +1 -0
  522. package/dist/menus-BtwjQt5s.mjs +753 -0
  523. package/dist/menus-BtwjQt5s.mjs.map +1 -0
  524. package/dist/menus-p_M1V7J_.mjs +139 -0
  525. package/dist/menus-p_M1V7J_.mjs.map +1 -0
  526. package/dist/migrations/index.d.mts +1 -1
  527. package/dist/migrations/index.mjs +3 -3
  528. package/dist/mime-C94qBG-P.mjs +36 -0
  529. package/dist/mime-C94qBG-P.mjs.map +1 -0
  530. package/dist/mode-DpYW3w6U.mjs +23 -0
  531. package/dist/mode-DpYW3w6U.mjs.map +1 -0
  532. package/dist/node-sqlite-compat-pWFw0lcc.mjs +46 -0
  533. package/dist/node-sqlite-compat-pWFw0lcc.mjs.map +1 -0
  534. package/dist/normalize-DduyxBjf.mjs +191 -0
  535. package/dist/normalize-DduyxBjf.mjs.map +1 -0
  536. package/dist/oauth-authorization-DAXsH1H9.mjs +274 -0
  537. package/dist/oauth-authorization-DAXsH1H9.mjs.map +1 -0
  538. package/dist/oauth-clients-DENiDQri.mjs +266 -0
  539. package/dist/oauth-clients-DENiDQri.mjs.map +1 -0
  540. package/dist/oauth-state-store-y8mEYVq9.mjs +50 -0
  541. package/dist/oauth-state-store-y8mEYVq9.mjs.map +1 -0
  542. package/dist/oauth-user-lookup-CtTYAy-O.mjs +26 -0
  543. package/dist/oauth-user-lookup-CtTYAy-O.mjs.map +1 -0
  544. package/dist/object-cache/memory.d.mts +1 -1
  545. package/dist/options-BYa1FgIM.d.mts +81 -0
  546. package/dist/options-BYa1FgIM.d.mts.map +1 -0
  547. package/dist/page/index.d.mts +2 -2
  548. package/dist/page/index.mjs +5 -5
  549. package/dist/parse-CORGGhHf.mjs +81 -0
  550. package/dist/parse-CORGGhHf.mjs.map +1 -0
  551. package/dist/parse-avNM1xWV.d.mts +168 -0
  552. package/dist/parse-avNM1xWV.d.mts.map +1 -0
  553. package/dist/passkey-config-Dih5YeIS.mjs +46 -0
  554. package/dist/passkey-config-Dih5YeIS.mjs.map +1 -0
  555. package/dist/paths-d51RFm8M.mjs +77 -0
  556. package/dist/paths-d51RFm8M.mjs.map +1 -0
  557. package/dist/patterns-CoqlXUvk.mjs +145 -0
  558. package/dist/patterns-CoqlXUvk.mjs.map +1 -0
  559. package/dist/placeholder-D2aksPMF.d.mts +306 -0
  560. package/dist/placeholder-D2aksPMF.d.mts.map +1 -0
  561. package/dist/plan-DqeZKuaR.mjs +135 -0
  562. package/dist/plan-DqeZKuaR.mjs.map +1 -0
  563. package/dist/plugin-test-runtime.d.mts +14 -14
  564. package/dist/plugin-test-runtime.mjs +110 -107
  565. package/dist/plugin-types.d.mts +2 -2
  566. package/dist/plugin-utils.d.mts +12 -12
  567. package/dist/plugins/adapt-sandbox-entry.d.mts +12 -12
  568. package/dist/plugins/adapt-sandbox-entry.mjs +3 -3
  569. package/dist/plugins/host.d.mts +5 -5
  570. package/dist/plugins/host.mjs +42 -41
  571. package/dist/plugins-Bb7oqjQA.mjs +277 -0
  572. package/dist/plugins-Bb7oqjQA.mjs.map +1 -0
  573. package/dist/policy-BcEqut3n.mjs +45 -0
  574. package/dist/policy-BcEqut3n.mjs.map +1 -0
  575. package/dist/portable-text-DXE8ymtD.mjs +307 -0
  576. package/dist/portable-text-DXE8ymtD.mjs.map +1 -0
  577. package/dist/preview-DEDWbwA_.mjs +107 -0
  578. package/dist/preview-DEDWbwA_.mjs.map +1 -0
  579. package/dist/protocol-BJbTzvwl.d.mts +61 -0
  580. package/dist/protocol-BJbTzvwl.d.mts.map +1 -0
  581. package/dist/public-submission-D9c9S14m.mjs +250 -0
  582. package/dist/public-submission-D9c9S14m.mjs.map +1 -0
  583. package/dist/public-url-CIRe-2T6.mjs +101 -0
  584. package/dist/public-url-CIRe-2T6.mjs.map +1 -0
  585. package/dist/query-BzifXlPS.mjs +1156 -0
  586. package/dist/query-BzifXlPS.mjs.map +1 -0
  587. package/dist/query-OzMJ6vJP.mjs +41 -0
  588. package/dist/query-OzMJ6vJP.mjs.map +1 -0
  589. package/dist/rate-limit-Csp60Vik.mjs +120 -0
  590. package/dist/rate-limit-Csp60Vik.mjs.map +1 -0
  591. package/dist/receipt-B-aU4hpJ.mjs +43 -0
  592. package/dist/receipt-B-aU4hpJ.mjs.map +1 -0
  593. package/dist/redirect-CDSw1sU3.mjs +17 -0
  594. package/dist/redirect-CDSw1sU3.mjs.map +1 -0
  595. package/dist/redirect-D1ArbO85.mjs +411 -0
  596. package/dist/redirect-D1ArbO85.mjs.map +1 -0
  597. package/dist/redirects-BjTwDTsV.mjs +148 -0
  598. package/dist/redirects-BjTwDTsV.mjs.map +1 -0
  599. package/dist/redirects-Ck50kH3n.mjs +446 -0
  600. package/dist/redirects-Ck50kH3n.mjs.map +1 -0
  601. package/dist/registry/testing.mjs +3 -3
  602. package/dist/registry-CFcNCayZ.mjs +6754 -0
  603. package/dist/registry-CFcNCayZ.mjs.map +1 -0
  604. package/dist/relations-Cfaa1fDl.mjs +776 -0
  605. package/dist/relations-Cfaa1fDl.mjs.map +1 -0
  606. package/dist/request-cache-iHRlHx1d.mjs +104 -0
  607. package/dist/request-cache-iHRlHx1d.mjs.map +1 -0
  608. package/dist/request-context.d.mts +1 -1
  609. package/dist/request-meta-D47mqyev.mjs +141 -0
  610. package/dist/request-meta-D47mqyev.mjs.map +1 -0
  611. package/dist/resolve-BPE8sMvx.mjs +99 -0
  612. package/dist/resolve-BPE8sMvx.mjs.map +1 -0
  613. package/dist/resolve-C0s1E_fH.mjs +199 -0
  614. package/dist/resolve-C0s1E_fH.mjs.map +1 -0
  615. package/dist/revision-j1p4-bOj.mjs +302 -0
  616. package/dist/revision-j1p4-bOj.mjs.map +1 -0
  617. package/dist/route-wire-C9PJV9aL.mjs +197 -0
  618. package/dist/route-wire-C9PJV9aL.mjs.map +1 -0
  619. package/dist/routes-lyYw0mMf.mjs +272 -0
  620. package/dist/routes-lyYw0mMf.mjs.map +1 -0
  621. package/dist/runner-B3eyB9Gb.mjs +6121 -0
  622. package/dist/runner-B3eyB9Gb.mjs.map +1 -0
  623. package/dist/runner-DoYH2Jcu.d.mts +68 -0
  624. package/dist/runner-DoYH2Jcu.d.mts.map +1 -0
  625. package/dist/runtime.d.mts +13 -13
  626. package/dist/runtime.mjs +3 -3
  627. package/dist/schema-BAayK46S.mjs +13 -0
  628. package/dist/schema-BAayK46S.mjs.map +1 -0
  629. package/dist/schema-Gqcl-8G4.mjs +815 -0
  630. package/dist/schema-Gqcl-8G4.mjs.map +1 -0
  631. package/dist/scopes-BqPOKoKf.mjs +34 -0
  632. package/dist/scopes-BqPOKoKf.mjs.map +1 -0
  633. package/dist/search-YJKPIEV6.mjs +448 -0
  634. package/dist/search-YJKPIEV6.mjs.map +1 -0
  635. package/dist/sections-BR_e-wK5.mjs +346 -0
  636. package/dist/sections-BR_e-wK5.mjs.map +1 -0
  637. package/dist/seed/index.d.mts +2 -2
  638. package/dist/seed/index.mjs +37 -31
  639. package/dist/seo/index.d.mts +3 -3
  640. package/dist/seo/index.mjs +22 -21
  641. package/dist/seo/index.mjs.map +1 -1
  642. package/dist/seo-Dsj8hy3j.mjs +114 -0
  643. package/dist/seo-Dsj8hy3j.mjs.map +1 -0
  644. package/dist/seo-XvH4LNNp.mjs +133 -0
  645. package/dist/seo-XvH4LNNp.mjs.map +1 -0
  646. package/dist/service-BsVG05gS.mjs +150 -0
  647. package/dist/service-BsVG05gS.mjs.map +1 -0
  648. package/dist/session-user-DgKbYrlj.mjs +51 -0
  649. package/dist/session-user-DgKbYrlj.mjs.map +1 -0
  650. package/dist/settings-CNPUntkh.mjs +51 -0
  651. package/dist/settings-CNPUntkh.mjs.map +1 -0
  652. package/dist/settings-D5EHi0Tk.mjs +439 -0
  653. package/dist/settings-D5EHi0Tk.mjs.map +1 -0
  654. package/dist/settings-DSfE7wOa.mjs +61 -0
  655. package/dist/settings-DSfE7wOa.mjs.map +1 -0
  656. package/dist/setup-complete-B8W8sJ9v.mjs +26 -0
  657. package/dist/setup-complete-B8W8sJ9v.mjs.map +1 -0
  658. package/dist/setup-nonce-DnSBP260.mjs +25 -0
  659. package/dist/setup-nonce-DnSBP260.mjs.map +1 -0
  660. package/dist/site-settings-NGzdrt7O.mjs +50 -0
  661. package/dist/site-settings-NGzdrt7O.mjs.map +1 -0
  662. package/dist/site-url-D6JB7tLW.mjs +16 -0
  663. package/dist/site-url-D6JB7tLW.mjs.map +1 -0
  664. package/dist/snapshot-CdcwwWAf.mjs +414 -0
  665. package/dist/snapshot-CdcwwWAf.mjs.map +1 -0
  666. package/dist/ssrf-Dv0_tRpo.mjs +406 -0
  667. package/dist/ssrf-Dv0_tRpo.mjs.map +1 -0
  668. package/dist/stage-CUjhED3P.mjs +662 -0
  669. package/dist/stage-CUjhED3P.mjs.map +1 -0
  670. package/dist/staged-C36IWXff.mjs +659 -0
  671. package/dist/staged-C36IWXff.mjs.map +1 -0
  672. package/dist/state-CKouMCSY.mjs +153 -0
  673. package/dist/state-CKouMCSY.mjs.map +1 -0
  674. package/dist/status-lzyj4Uu7.mjs +30 -0
  675. package/dist/status-lzyj4Uu7.mjs.map +1 -0
  676. package/dist/storage/local.d.mts +1 -1
  677. package/dist/storage/local.mjs +1 -1
  678. package/dist/storage/s3.d.mts +1 -1
  679. package/dist/storage/s3.mjs +1 -1
  680. package/dist/storage-query-B-cWcTjJ.d.mts +1594 -0
  681. package/dist/storage-query-B-cWcTjJ.d.mts.map +1 -0
  682. package/dist/tar-DsTXX6ch.mjs +449 -0
  683. package/dist/tar-DsTXX6ch.mjs.map +1 -0
  684. package/dist/target-DLQCwp_Z.mjs +27 -0
  685. package/dist/target-DLQCwp_Z.mjs.map +1 -0
  686. package/dist/taxonomies-BlAjr4BL.mjs +697 -0
  687. package/dist/taxonomies-BlAjr4BL.mjs.map +1 -0
  688. package/dist/taxonomies-Byyo7LOZ.mjs +939 -0
  689. package/dist/taxonomies-Byyo7LOZ.mjs.map +1 -0
  690. package/dist/taxonomy-CKDwM61Y.mjs +525 -0
  691. package/dist/taxonomy-CKDwM61Y.mjs.map +1 -0
  692. package/dist/tokens-BojXlk49.mjs +171 -0
  693. package/dist/tokens-BojXlk49.mjs.map +1 -0
  694. package/dist/transaction-DLPQWik1.mjs +29 -0
  695. package/dist/transaction-DLPQWik1.mjs.map +1 -0
  696. package/dist/transfer-XSTh2BCr.mjs +8706 -0
  697. package/dist/transfer-XSTh2BCr.mjs.map +1 -0
  698. package/dist/transfer-download-DkoCDA9d.mjs +33 -0
  699. package/dist/transfer-download-DkoCDA9d.mjs.map +1 -0
  700. package/dist/transfer-iQ26J-RT.mjs +166 -0
  701. package/dist/transfer-iQ26J-RT.mjs.map +1 -0
  702. package/dist/transformations-C7RQabKQ.mjs +196 -0
  703. package/dist/transformations-C7RQabKQ.mjs.map +1 -0
  704. package/dist/transport-D3RulfD6.mjs +136 -0
  705. package/dist/transport-D3RulfD6.mjs.map +1 -0
  706. package/dist/transport-DhlZlf4D.d.mts +42 -0
  707. package/dist/transport-DhlZlf4D.d.mts.map +1 -0
  708. package/dist/trusted-proxy-B6ECOZJc.mjs +51 -0
  709. package/dist/trusted-proxy-B6ECOZJc.mjs.map +1 -0
  710. package/dist/turnstile-lqUiY7lP.mjs +53 -0
  711. package/dist/turnstile-lqUiY7lP.mjs.map +1 -0
  712. package/dist/types-4Dn9bZhu.mjs +77 -0
  713. package/dist/types-4Dn9bZhu.mjs.map +1 -0
  714. package/dist/types-5LSo7PPx.d.mts +85 -0
  715. package/dist/types-5LSo7PPx.d.mts.map +1 -0
  716. package/dist/types-BQ3hwYJT.d.mts +896 -0
  717. package/dist/types-BQ3hwYJT.d.mts.map +1 -0
  718. package/dist/types-BYEk7qo3.d.mts +198 -0
  719. package/dist/types-BYEk7qo3.d.mts.map +1 -0
  720. package/dist/types-CJKsWVFR.mjs +199 -0
  721. package/dist/types-CJKsWVFR.mjs.map +1 -0
  722. package/dist/types-Ca_w8mmY.d.mts +363 -0
  723. package/dist/types-Ca_w8mmY.d.mts.map +1 -0
  724. package/dist/types-CkE41ZAG.mjs +18 -0
  725. package/dist/types-CkE41ZAG.mjs.map +1 -0
  726. package/dist/types-D0aJW2uR.d.mts +1641 -0
  727. package/dist/types-D0aJW2uR.d.mts.map +1 -0
  728. package/dist/types-DbpN4Qto.d.mts +372 -0
  729. package/dist/types-DbpN4Qto.d.mts.map +1 -0
  730. package/dist/types-ILDI1sdY.mjs +16 -0
  731. package/dist/types-ILDI1sdY.mjs.map +1 -0
  732. package/dist/types-OC5c-edM.mjs +22 -0
  733. package/dist/types-OC5c-edM.mjs.map +1 -0
  734. package/dist/types-aOOxRSx6.mjs +103 -0
  735. package/dist/types-aOOxRSx6.mjs.map +1 -0
  736. package/dist/types-m1WbUffD.d.mts +198 -0
  737. package/dist/types-m1WbUffD.d.mts.map +1 -0
  738. package/dist/types-uxLoPBio.d.mts +124 -0
  739. package/dist/types-uxLoPBio.d.mts.map +1 -0
  740. package/dist/types-we5uR-tV.d.mts +287 -0
  741. package/dist/types-we5uR-tV.d.mts.map +1 -0
  742. package/dist/upload-attempts-DduMy6B0.mjs +32 -0
  743. package/dist/upload-attempts-DduMy6B0.mjs.map +1 -0
  744. package/dist/url-pattern-B3EwxAAk.mjs +33 -0
  745. package/dist/url-pattern-B3EwxAAk.mjs.map +1 -0
  746. package/dist/user-ElwQjTQT.mjs +171 -0
  747. package/dist/user-ElwQjTQT.mjs.map +1 -0
  748. package/dist/utils-BlAXmfOG.mjs +439 -0
  749. package/dist/utils-BlAXmfOG.mjs.map +1 -0
  750. package/dist/validate-CH0X5b2c.d.mts +468 -0
  751. package/dist/validate-CH0X5b2c.d.mts.map +1 -0
  752. package/dist/validate-CfgRpcjA.mjs +492 -0
  753. package/dist/validate-CfgRpcjA.mjs.map +1 -0
  754. package/dist/validation-DvYJtv4k.mjs +218 -0
  755. package/dist/validation-DvYJtv4k.mjs.map +1 -0
  756. package/dist/version-DgYjhTud.mjs +9 -0
  757. package/dist/version-DgYjhTud.mjs.map +1 -0
  758. package/dist/version-Dq71scUb.mjs +7 -0
  759. package/dist/version-Dq71scUb.mjs.map +1 -0
  760. package/dist/widgets-ChFIj0be.mjs +126 -0
  761. package/dist/widgets-ChFIj0be.mjs.map +1 -0
  762. package/dist/wxr-taxonomies-CBZMp2YX.mjs +372 -0
  763. package/dist/wxr-taxonomies-CBZMp2YX.mjs.map +1 -0
  764. package/dist/wxr-taxonomies-DlKDpWN1.d.mts +34 -0
  765. package/dist/wxr-taxonomies-DlKDpWN1.d.mts.map +1 -0
  766. package/dist/zod-generator-DmTKI-Ig.mjs +426 -0
  767. package/dist/zod-generator-DmTKI-Ig.mjs.map +1 -0
  768. package/package.json +7 -6
  769. package/src/api/handlers/content.ts +593 -16
  770. package/src/api/handlers/device-flow.ts +74 -21
  771. package/src/api/handlers/manifest.ts +79 -5
  772. package/src/api/handlers/relations.ts +638 -157
  773. package/src/api/handlers/revision.ts +30 -0
  774. package/src/api/handlers/schema.ts +403 -1
  775. package/src/api/handlers/staged-references.ts +142 -0
  776. package/src/api/handlers/validate-references.ts +146 -0
  777. package/src/api/schemas/content.ts +13 -0
  778. package/src/api/schemas/relations.ts +54 -44
  779. package/src/api/schemas/schema.ts +14 -0
  780. package/src/astro/integration/routes.ts +15 -19
  781. package/src/astro/routes/api/content/[collection]/[id]/references/[relation]/children.ts +11 -54
  782. package/src/astro/routes/api/content/[collection]/[id].ts +3 -1
  783. package/src/astro/routes/api/oauth/device/authorize.ts +33 -4
  784. package/src/astro/routes/api/relations/index.ts +4 -4
  785. package/src/astro/routes/api/schema/collections/[slug]/fields/[fieldSlug].ts +6 -2
  786. package/src/astro/types.ts +5 -0
  787. package/src/cli/commands/export-seed.ts +510 -89
  788. package/src/components/WidgetArea.astro +3 -2
  789. package/src/database/migrations/086_relations_structural.ts +197 -0
  790. package/src/database/migrations/087_reference_field_relations.ts +407 -0
  791. package/src/database/migrations/runner.ts +4 -0
  792. package/src/database/reference-backfill.ts +141 -0
  793. package/src/database/repositories/content.ts +43 -8
  794. package/src/database/repositories/relation.ts +620 -208
  795. package/src/database/repositories/revision.ts +16 -0
  796. package/src/database/repositories/types.ts +38 -0
  797. package/src/database/transaction.ts +12 -1
  798. package/src/database/types.ts +14 -5
  799. package/src/emdash-runtime.ts +86 -11
  800. package/src/index.ts +10 -0
  801. package/src/loader.ts +169 -22
  802. package/src/query.ts +455 -25
  803. package/src/references/field-map.ts +115 -0
  804. package/src/references/resolve.ts +160 -0
  805. package/src/references/staged.ts +117 -0
  806. package/src/references/types.ts +16 -0
  807. package/src/registry/artifact-fetch.ts +45 -271
  808. package/src/schema/registry.ts +99 -24
  809. package/src/schema/types.ts +58 -0
  810. package/src/schema/zod-generator.ts +67 -1
  811. package/src/seed/apply.ts +519 -62
  812. package/src/seed/types.ts +36 -2
  813. package/src/seed/validate.ts +78 -2
  814. package/src/transfer/analyze/unique-keys.ts +3 -12
  815. package/src/transfer/analyze/validate.ts +65 -39
  816. package/src/transfer/analyze/values.ts +12 -1
  817. package/src/transfer/export/readers.ts +12 -8
  818. package/src/transfer/format/columns.ts +26 -6
  819. package/src/transfer/format/kinds.ts +21 -5
  820. package/src/transfer/import/context.ts +8 -1
  821. package/src/transfer/ops/package-index.ts +1 -1
  822. package/dist/action-token-DYwe4Pk0.mjs +0 -26
  823. package/dist/action-token-DYwe4Pk0.mjs.map +0 -1
  824. package/dist/activation-LOkDM5WT.mjs +0 -382
  825. package/dist/activation-LOkDM5WT.mjs.map +0 -1
  826. package/dist/adapters-B64LbYcB.d.mts +0 -171
  827. package/dist/adapters-B64LbYcB.d.mts.map +0 -1
  828. package/dist/allowed-origins-CHB8oZNM.mjs +0 -116
  829. package/dist/allowed-origins-CHB8oZNM.mjs.map +0 -1
  830. package/dist/api-CuyNEHZG.mjs +0 -4718
  831. package/dist/api-CuyNEHZG.mjs.map +0 -1
  832. package/dist/api-tokens-s4i4aUp_.mjs +0 -166
  833. package/dist/api-tokens-s4i4aUp_.mjs.map +0 -1
  834. package/dist/apply-npY1TAhG.mjs +0 -1366
  835. package/dist/apply-npY1TAhG.mjs.map +0 -1
  836. package/dist/approvals-CqMfNxak.mjs +0 -460
  837. package/dist/approvals-CqMfNxak.mjs.map +0 -1
  838. package/dist/artifact-fetch-DZMOGZ3-.mjs +0 -818
  839. package/dist/artifact-fetch-DZMOGZ3-.mjs.map +0 -1
  840. package/dist/astro/routes/api/relations/_id_/translations.d.mts +0 -8
  841. package/dist/astro/routes/api/relations/_id_/translations.d.mts.map +0 -1
  842. package/dist/astro/routes/api/relations/_id_/translations.mjs +0 -47
  843. package/dist/astro/routes/api/relations/_id_/translations.mjs.map +0 -1
  844. package/dist/audit-RfCugiSB.mjs +0 -127
  845. package/dist/audit-RfCugiSB.mjs.map +0 -1
  846. package/dist/authoritative-records-CoJvBXAD.mjs +0 -5172
  847. package/dist/authoritative-records-CoJvBXAD.mjs.map +0 -1
  848. package/dist/authorize-seCifOMJ.mjs +0 -49
  849. package/dist/authorize-seCifOMJ.mjs.map +0 -1
  850. package/dist/backup-BQRj3afm.mjs +0 -246
  851. package/dist/backup-BQRj3afm.mjs.map +0 -1
  852. package/dist/block-type-registry-DUI_3KxT.mjs +0 -6709
  853. package/dist/block-type-registry-DUI_3KxT.mjs.map +0 -1
  854. package/dist/block-types-BmZmLmAD.mjs +0 -132
  855. package/dist/block-types-BmZmLmAD.mjs.map +0 -1
  856. package/dist/block-values-C_VIPr5t.mjs +0 -175
  857. package/dist/block-values-C_VIPr5t.mjs.map +0 -1
  858. package/dist/byline-DYmkXqvo.mjs +0 -909
  859. package/dist/byline-DYmkXqvo.mjs.map +0 -1
  860. package/dist/byline-fields-D28AT-Fh.mjs +0 -123
  861. package/dist/byline-fields-D28AT-Fh.mjs.map +0 -1
  862. package/dist/byline-registry-gnKscbQX.mjs +0 -406
  863. package/dist/byline-registry-gnKscbQX.mjs.map +0 -1
  864. package/dist/bylines-BPwJqoYH.mjs +0 -232
  865. package/dist/bylines-BPwJqoYH.mjs.map +0 -1
  866. package/dist/bylines-ukLaYpVZ.mjs +0 -214
  867. package/dist/bylines-ukLaYpVZ.mjs.map +0 -1
  868. package/dist/cache-m7UEkRFV.mjs +0 -108
  869. package/dist/cache-m7UEkRFV.mjs.map +0 -1
  870. package/dist/canonical-YhEQezjg.mjs +0 -174
  871. package/dist/canonical-YhEQezjg.mjs.map +0 -1
  872. package/dist/capture-triggers-kJyl_yyM.mjs +0 -362
  873. package/dist/capture-triggers-kJyl_yyM.mjs.map +0 -1
  874. package/dist/challenge-store-ppU6Uv13.mjs +0 -51
  875. package/dist/challenge-store-ppU6Uv13.mjs.map +0 -1
  876. package/dist/checksum-B2IINIlN.mjs +0 -162
  877. package/dist/checksum-B2IINIlN.mjs.map +0 -1
  878. package/dist/chrome-tags-DApCQSIk.mjs +0 -24
  879. package/dist/chrome-tags-DApCQSIk.mjs.map +0 -1
  880. package/dist/chunks-Dms7Uxbt.mjs +0 -25
  881. package/dist/chunks-Dms7Uxbt.mjs.map +0 -1
  882. package/dist/collection-deletion-BIm28mo3.mjs +0 -436
  883. package/dist/collection-deletion-BIm28mo3.mjs.map +0 -1
  884. package/dist/collection-deletion-processor-Br6rxs3u.mjs +0 -217
  885. package/dist/collection-deletion-processor-Br6rxs3u.mjs.map +0 -1
  886. package/dist/collection-slugs-cache-CjGk__zp.mjs +0 -85
  887. package/dist/collection-slugs-cache-CjGk__zp.mjs.map +0 -1
  888. package/dist/comment-CrBl22OF.mjs +0 -313
  889. package/dist/comment-CrBl22OF.mjs.map +0 -1
  890. package/dist/comment-reaction-JEQ2Fpd8.mjs +0 -85
  891. package/dist/comment-reaction-JEQ2Fpd8.mjs.map +0 -1
  892. package/dist/comments-2ah9du9y.mjs +0 -195
  893. package/dist/comments-2ah9du9y.mjs.map +0 -1
  894. package/dist/comments-fHZ8ON9O.mjs +0 -99
  895. package/dist/comments-fHZ8ON9O.mjs.map +0 -1
  896. package/dist/components-CXbq7CSM.mjs +0 -108
  897. package/dist/components-CXbq7CSM.mjs.map +0 -1
  898. package/dist/config-BjEm_3xL.d.mts +0 -6537
  899. package/dist/config-BjEm_3xL.d.mts.map +0 -1
  900. package/dist/config-IhybvkIQ.mjs +0 -242
  901. package/dist/config-IhybvkIQ.mjs.map +0 -1
  902. package/dist/config-Py43JK9r.d.mts +0 -39
  903. package/dist/config-Py43JK9r.d.mts.map +0 -1
  904. package/dist/content-DFaIEDj9.mjs +0 -2281
  905. package/dist/content-DFaIEDj9.mjs.map +0 -1
  906. package/dist/content-list-query-Dra4Dalc.d.mts +0 -26
  907. package/dist/content-list-query-Dra4Dalc.d.mts.map +0 -1
  908. package/dist/content-policy-DFNw91-d.mjs +0 -46
  909. package/dist/content-policy-DFNw91-d.mjs.map +0 -1
  910. package/dist/content-repair-Q8IUrpLL.mjs +0 -442
  911. package/dist/content-repair-Q8IUrpLL.mjs.map +0 -1
  912. package/dist/context-BV_7t-Ua.mjs +0 -1921
  913. package/dist/context-BV_7t-Ua.mjs.map +0 -1
  914. package/dist/cron-7DCJwPXq.mjs +0 -284
  915. package/dist/cron-7DCJwPXq.mjs.map +0 -1
  916. package/dist/dashboard-BP-iJqpd.mjs +0 -151
  917. package/dist/dashboard-BP-iJqpd.mjs.map +0 -1
  918. package/dist/default-DQ6vsviu.mjs +0 -81
  919. package/dist/default-DQ6vsviu.mjs.map +0 -1
  920. package/dist/deferred-tasks-BPxXUB4x.d.mts +0 -9
  921. package/dist/deferred-tasks-BPxXUB4x.d.mts.map +0 -1
  922. package/dist/dev-typegen-CZaPLl3V.mjs +0 -29
  923. package/dist/dev-typegen-CZaPLl3V.mjs.map +0 -1
  924. package/dist/device-flow-CRd6DXmW.mjs +0 -466
  925. package/dist/device-flow-CRd6DXmW.mjs.map +0 -1
  926. package/dist/digest-BarSh-pN.mjs +0 -194
  927. package/dist/digest-BarSh-pN.mjs.map +0 -1
  928. package/dist/direct-executor-D2lNadwo.mjs +0 -104
  929. package/dist/direct-executor-D2lNadwo.mjs.map +0 -1
  930. package/dist/dist-BNwANFJR.mjs +0 -810
  931. package/dist/dist-BNwANFJR.mjs.map +0 -1
  932. package/dist/email-console-bJn3ctqA.mjs +0 -50
  933. package/dist/email-console-bJn3ctqA.mjs.map +0 -1
  934. package/dist/email-locale-CN6WAMx0.mjs +0 -25
  935. package/dist/email-locale-CN6WAMx0.mjs.map +0 -1
  936. package/dist/emdash-runtime-CtfnZmPi.mjs +0 -4186
  937. package/dist/emdash-runtime-CtfnZmPi.mjs.map +0 -1
  938. package/dist/enrich-Dl3kZ-lP.mjs +0 -194
  939. package/dist/enrich-Dl3kZ-lP.mjs.map +0 -1
  940. package/dist/entry-lock-BJYdBfXb.mjs +0 -1097
  941. package/dist/entry-lock-BJYdBfXb.mjs.map +0 -1
  942. package/dist/entry-lock-Cf5OoIgN.d.mts +0 -4368
  943. package/dist/entry-lock-Cf5OoIgN.d.mts.map +0 -1
  944. package/dist/entry-lock-DHQOxN7R.mjs +0 -163
  945. package/dist/entry-lock-DHQOxN7R.mjs.map +0 -1
  946. package/dist/entry-locks-D0foLdjQ.mjs +0 -167
  947. package/dist/entry-locks-D0foLdjQ.mjs.map +0 -1
  948. package/dist/error-CfvOHP0M.mjs +0 -90
  949. package/dist/error-CfvOHP0M.mjs.map +0 -1
  950. package/dist/errors-BF0_LFhW.mjs +0 -460
  951. package/dist/errors-BF0_LFhW.mjs.map +0 -1
  952. package/dist/errors-DgE1zJGG.mjs +0 -120
  953. package/dist/errors-DgE1zJGG.mjs.map +0 -1
  954. package/dist/escape-CuaZhZvL.mjs +0 -9
  955. package/dist/escape-CuaZhZvL.mjs.map +0 -1
  956. package/dist/fence-CMDXJYc_.mjs +0 -162
  957. package/dist/fence-CMDXJYc_.mjs.map +0 -1
  958. package/dist/field-defs-cache-HIgBbqZZ.mjs +0 -77
  959. package/dist/field-defs-cache-HIgBbqZZ.mjs.map +0 -1
  960. package/dist/focal-point-Gr34o-4o.mjs +0 -23
  961. package/dist/focal-point-Gr34o-4o.mjs.map +0 -1
  962. package/dist/fts-manager-S-K0laoS.mjs +0 -443
  963. package/dist/fts-manager-S-K0laoS.mjs.map +0 -1
  964. package/dist/gc-DjKY0Ay1.mjs +0 -75
  965. package/dist/gc-DjKY0Ay1.mjs.map +0 -1
  966. package/dist/hash-SDAW6zC-.mjs +0 -37
  967. package/dist/hash-SDAW6zC-.mjs.map +0 -1
  968. package/dist/hook-result-B5bXDgS2.d.mts +0 -31
  969. package/dist/hook-result-B5bXDgS2.d.mts.map +0 -1
  970. package/dist/hreflang-CbVI4paR.mjs +0 -105
  971. package/dist/hreflang-CbVI4paR.mjs.map +0 -1
  972. package/dist/hreflang-D5uNnsGJ.d.mts +0 -50
  973. package/dist/hreflang-D5uNnsGJ.d.mts.map +0 -1
  974. package/dist/http-route-dispatch-BitqzwMy.mjs +0 -339
  975. package/dist/http-route-dispatch-BitqzwMy.mjs.map +0 -1
  976. package/dist/identity-Be5kzutJ.mjs +0 -35
  977. package/dist/identity-Be5kzutJ.mjs.map +0 -1
  978. package/dist/import-YzfKCaco.mjs +0 -2020
  979. package/dist/import-YzfKCaco.mjs.map +0 -1
  980. package/dist/index-D-hdtLe8.d.mts +0 -623
  981. package/dist/index-D-hdtLe8.d.mts.map +0 -1
  982. package/dist/install-finalization-DfM1fj5x.mjs +0 -58
  983. package/dist/install-finalization-DfM1fj5x.mjs.map +0 -1
  984. package/dist/keys-yxLm5l35.mjs +0 -61
  985. package/dist/keys-yxLm5l35.mjs.map +0 -1
  986. package/dist/kinds-CRu_T5T5.mjs +0 -961
  987. package/dist/kinds-CRu_T5T5.mjs.map +0 -1
  988. package/dist/lifecycle-BzeGPeQ-.mjs +0 -25
  989. package/dist/lifecycle-BzeGPeQ-.mjs.map +0 -1
  990. package/dist/load-XgJiE6_3.mjs +0 -28
  991. package/dist/load-XgJiE6_3.mjs.map +0 -1
  992. package/dist/loader-BzqeR1ZN.mjs +0 -1086
  993. package/dist/loader-BzqeR1ZN.mjs.map +0 -1
  994. package/dist/loops-BQSzv5Zn.mjs +0 -203
  995. package/dist/loops-BQSzv5Zn.mjs.map +0 -1
  996. package/dist/manifest-builder-BmSAOOEF.mjs +0 -189
  997. package/dist/manifest-builder-BmSAOOEF.mjs.map +0 -1
  998. package/dist/manifest-schema-CY3zng_M.mjs +0 -492
  999. package/dist/manifest-schema-CY3zng_M.mjs.map +0 -1
  1000. package/dist/media-CPXTbb1R.mjs +0 -373
  1001. package/dist/media-CPXTbb1R.mjs.map +0 -1
  1002. package/dist/media-JXRWDhw3.mjs +0 -294
  1003. package/dist/media-JXRWDhw3.mjs.map +0 -1
  1004. package/dist/media-Pu1L6xir.mjs +0 -408
  1005. package/dist/media-Pu1L6xir.mjs.map +0 -1
  1006. package/dist/media-allowlist-BSoa9Vvm.mjs +0 -44
  1007. package/dist/media-allowlist-BSoa9Vvm.mjs.map +0 -1
  1008. package/dist/media-folders-BE0oo2eX.mjs +0 -210
  1009. package/dist/media-folders-BE0oo2eX.mjs.map +0 -1
  1010. package/dist/media-url-jArBpzIG.mjs +0 -43
  1011. package/dist/media-url-jArBpzIG.mjs.map +0 -1
  1012. package/dist/media-usage-De-zeR9E.mjs +0 -1629
  1013. package/dist/media-usage-De-zeR9E.mjs.map +0 -1
  1014. package/dist/media-usage-activation-HKp7zk7W.mjs +0 -78
  1015. package/dist/media-usage-activation-HKp7zk7W.mjs.map +0 -1
  1016. package/dist/media-usage-work-C2OZLCAd.mjs +0 -586
  1017. package/dist/media-usage-work-C2OZLCAd.mjs.map +0 -1
  1018. package/dist/media-usage-work-DwUNbgvS.mjs +0 -152
  1019. package/dist/media-usage-work-DwUNbgvS.mjs.map +0 -1
  1020. package/dist/menus-BM7BPLOb.mjs +0 -139
  1021. package/dist/menus-BM7BPLOb.mjs.map +0 -1
  1022. package/dist/menus-Cm68rsAq.mjs +0 -3608
  1023. package/dist/menus-Cm68rsAq.mjs.map +0 -1
  1024. package/dist/menus-ITeAbcIF.mjs +0 -753
  1025. package/dist/menus-ITeAbcIF.mjs.map +0 -1
  1026. package/dist/mime-ChLqYwDk.mjs +0 -36
  1027. package/dist/mime-ChLqYwDk.mjs.map +0 -1
  1028. package/dist/mode-CCuKXUci.mjs +0 -23
  1029. package/dist/mode-CCuKXUci.mjs.map +0 -1
  1030. package/dist/node-sqlite-compat-CONMsl-x.mjs +0 -46
  1031. package/dist/node-sqlite-compat-CONMsl-x.mjs.map +0 -1
  1032. package/dist/normalize-CO2P8-iE.mjs +0 -191
  1033. package/dist/normalize-CO2P8-iE.mjs.map +0 -1
  1034. package/dist/oauth-authorization-DlMIL5_h.mjs +0 -274
  1035. package/dist/oauth-authorization-DlMIL5_h.mjs.map +0 -1
  1036. package/dist/oauth-clients-Djq9r_KP.mjs +0 -266
  1037. package/dist/oauth-clients-Djq9r_KP.mjs.map +0 -1
  1038. package/dist/oauth-state-store-BbjnZXNC.mjs +0 -50
  1039. package/dist/oauth-state-store-BbjnZXNC.mjs.map +0 -1
  1040. package/dist/oauth-user-lookup-vue9a64A.mjs +0 -26
  1041. package/dist/oauth-user-lookup-vue9a64A.mjs.map +0 -1
  1042. package/dist/options-SQCHQCPH.d.mts +0 -81
  1043. package/dist/options-SQCHQCPH.d.mts.map +0 -1
  1044. package/dist/parse-CVgO-Qai.d.mts +0 -168
  1045. package/dist/parse-CVgO-Qai.d.mts.map +0 -1
  1046. package/dist/parse-DY6OD1j_.mjs +0 -81
  1047. package/dist/parse-DY6OD1j_.mjs.map +0 -1
  1048. package/dist/passkey-config-X_H8128a.mjs +0 -46
  1049. package/dist/passkey-config-X_H8128a.mjs.map +0 -1
  1050. package/dist/paths-JxokKIbr.mjs +0 -77
  1051. package/dist/paths-JxokKIbr.mjs.map +0 -1
  1052. package/dist/patterns-BhAvqO0S.mjs +0 -145
  1053. package/dist/patterns-BhAvqO0S.mjs.map +0 -1
  1054. package/dist/placeholder-MSEd8gty.d.mts +0 -306
  1055. package/dist/placeholder-MSEd8gty.d.mts.map +0 -1
  1056. package/dist/plan-xjcWrAah.mjs +0 -135
  1057. package/dist/plan-xjcWrAah.mjs.map +0 -1
  1058. package/dist/plugins-DUXUt8B9.mjs +0 -277
  1059. package/dist/plugins-DUXUt8B9.mjs.map +0 -1
  1060. package/dist/policy-CUvwAARc.mjs +0 -45
  1061. package/dist/policy-CUvwAARc.mjs.map +0 -1
  1062. package/dist/portable-text-5O_ZGUjB.mjs +0 -307
  1063. package/dist/portable-text-5O_ZGUjB.mjs.map +0 -1
  1064. package/dist/preview-CIUcPYr6.mjs +0 -107
  1065. package/dist/preview-CIUcPYr6.mjs.map +0 -1
  1066. package/dist/protocol-B97DZaFr.d.mts +0 -61
  1067. package/dist/protocol-B97DZaFr.d.mts.map +0 -1
  1068. package/dist/public-submission-BFBUrqst.mjs +0 -250
  1069. package/dist/public-submission-BFBUrqst.mjs.map +0 -1
  1070. package/dist/public-url-Bn7U0D7-.mjs +0 -101
  1071. package/dist/public-url-Bn7U0D7-.mjs.map +0 -1
  1072. package/dist/query-B48peoRT.mjs +0 -890
  1073. package/dist/query-B48peoRT.mjs.map +0 -1
  1074. package/dist/query-C4IH0uhR.mjs +0 -41
  1075. package/dist/query-C4IH0uhR.mjs.map +0 -1
  1076. package/dist/rate-limit-BZ6nybgc.mjs +0 -120
  1077. package/dist/rate-limit-BZ6nybgc.mjs.map +0 -1
  1078. package/dist/receipt-B4wJj5Jq.mjs +0 -43
  1079. package/dist/receipt-B4wJj5Jq.mjs.map +0 -1
  1080. package/dist/redirect-B29UjdUn.mjs +0 -411
  1081. package/dist/redirect-B29UjdUn.mjs.map +0 -1
  1082. package/dist/redirect-Cd1E7VUt.mjs +0 -17
  1083. package/dist/redirect-Cd1E7VUt.mjs.map +0 -1
  1084. package/dist/redirects-Ca2MPfEG.mjs +0 -446
  1085. package/dist/redirects-Ca2MPfEG.mjs.map +0 -1
  1086. package/dist/redirects-Cv9apQKj.mjs +0 -148
  1087. package/dist/redirects-Cv9apQKj.mjs.map +0 -1
  1088. package/dist/relation-M4NUCb0b.mjs +0 -334
  1089. package/dist/relation-M4NUCb0b.mjs.map +0 -1
  1090. package/dist/relations-CCif47Oq.mjs +0 -403
  1091. package/dist/relations-CCif47Oq.mjs.map +0 -1
  1092. package/dist/relations-CK9CYUyr.mjs +0 -310
  1093. package/dist/relations-CK9CYUyr.mjs.map +0 -1
  1094. package/dist/request-cache-DzLYKm_x.mjs +0 -104
  1095. package/dist/request-cache-DzLYKm_x.mjs.map +0 -1
  1096. package/dist/request-meta-sZXt3sRo.mjs +0 -141
  1097. package/dist/request-meta-sZXt3sRo.mjs.map +0 -1
  1098. package/dist/resolve-2WbQsCvT.mjs +0 -199
  1099. package/dist/resolve-2WbQsCvT.mjs.map +0 -1
  1100. package/dist/route-wire--1hLuACz.mjs +0 -197
  1101. package/dist/route-wire--1hLuACz.mjs.map +0 -1
  1102. package/dist/routes-vrR95WR6.mjs +0 -272
  1103. package/dist/routes-vrR95WR6.mjs.map +0 -1
  1104. package/dist/runner-1y4J9fJB.mjs +0 -5742
  1105. package/dist/runner-1y4J9fJB.mjs.map +0 -1
  1106. package/dist/runner-D5_LzKXI.d.mts +0 -68
  1107. package/dist/runner-D5_LzKXI.d.mts.map +0 -1
  1108. package/dist/schema-BABiRdsH.mjs +0 -13
  1109. package/dist/schema-BABiRdsH.mjs.map +0 -1
  1110. package/dist/schema-Du3MzCG0.mjs +0 -446
  1111. package/dist/schema-Du3MzCG0.mjs.map +0 -1
  1112. package/dist/scopes-Dbk-ElhT.mjs +0 -34
  1113. package/dist/scopes-Dbk-ElhT.mjs.map +0 -1
  1114. package/dist/search-Bt1PL1jf.mjs +0 -448
  1115. package/dist/search-Bt1PL1jf.mjs.map +0 -1
  1116. package/dist/sections-Ddptx_o9.mjs +0 -346
  1117. package/dist/sections-Ddptx_o9.mjs.map +0 -1
  1118. package/dist/seo-CZT2oLtT.mjs +0 -114
  1119. package/dist/seo-CZT2oLtT.mjs.map +0 -1
  1120. package/dist/seo-D5w3-Azy.mjs +0 -133
  1121. package/dist/seo-D5w3-Azy.mjs.map +0 -1
  1122. package/dist/service-DuykXPyW.mjs +0 -150
  1123. package/dist/service-DuykXPyW.mjs.map +0 -1
  1124. package/dist/session-user-BhaVp8w0.mjs +0 -51
  1125. package/dist/session-user-BhaVp8w0.mjs.map +0 -1
  1126. package/dist/settings-B4vDl1fK.mjs +0 -439
  1127. package/dist/settings-B4vDl1fK.mjs.map +0 -1
  1128. package/dist/settings-DYidIB26.mjs +0 -61
  1129. package/dist/settings-DYidIB26.mjs.map +0 -1
  1130. package/dist/settings-Dyj6v8C4.mjs +0 -51
  1131. package/dist/settings-Dyj6v8C4.mjs.map +0 -1
  1132. package/dist/setup-complete-bOogcHWG.mjs +0 -26
  1133. package/dist/setup-complete-bOogcHWG.mjs.map +0 -1
  1134. package/dist/setup-nonce-0EGuKM4s.mjs +0 -25
  1135. package/dist/setup-nonce-0EGuKM4s.mjs.map +0 -1
  1136. package/dist/site-settings-DOgRUoFX.mjs +0 -50
  1137. package/dist/site-settings-DOgRUoFX.mjs.map +0 -1
  1138. package/dist/site-url-BU_bbxwj.mjs +0 -16
  1139. package/dist/site-url-BU_bbxwj.mjs.map +0 -1
  1140. package/dist/snapshot-PawoX-WG.mjs +0 -414
  1141. package/dist/snapshot-PawoX-WG.mjs.map +0 -1
  1142. package/dist/ssrf-CJUnJymJ.mjs +0 -406
  1143. package/dist/ssrf-CJUnJymJ.mjs.map +0 -1
  1144. package/dist/stage-DgrBz_du.mjs +0 -662
  1145. package/dist/stage-DgrBz_du.mjs.map +0 -1
  1146. package/dist/state-DDiPySSG.mjs +0 -153
  1147. package/dist/state-DDiPySSG.mjs.map +0 -1
  1148. package/dist/status-DZKIG4a9.mjs +0 -30
  1149. package/dist/status-DZKIG4a9.mjs.map +0 -1
  1150. package/dist/storage-query-FXJH5pI8.d.mts +0 -1581
  1151. package/dist/storage-query-FXJH5pI8.d.mts.map +0 -1
  1152. package/dist/tar-_1AgTYFu.mjs +0 -449
  1153. package/dist/tar-_1AgTYFu.mjs.map +0 -1
  1154. package/dist/target-_7pn2Gbg.mjs +0 -27
  1155. package/dist/target-_7pn2Gbg.mjs.map +0 -1
  1156. package/dist/taxonomies-C1IwNe8Q.mjs +0 -697
  1157. package/dist/taxonomies-C1IwNe8Q.mjs.map +0 -1
  1158. package/dist/taxonomies-C_XMoRcX.mjs +0 -939
  1159. package/dist/taxonomies-C_XMoRcX.mjs.map +0 -1
  1160. package/dist/taxonomy-C3Fu1YeH.mjs +0 -525
  1161. package/dist/taxonomy-C3Fu1YeH.mjs.map +0 -1
  1162. package/dist/tokens-u78jETkX.mjs +0 -171
  1163. package/dist/tokens-u78jETkX.mjs.map +0 -1
  1164. package/dist/transaction-BcJO4Tmc.mjs +0 -29
  1165. package/dist/transaction-BcJO4Tmc.mjs.map +0 -1
  1166. package/dist/transfer-DIGvR9Af.mjs +0 -166
  1167. package/dist/transfer-DIGvR9Af.mjs.map +0 -1
  1168. package/dist/transfer-DgeCvHnj.mjs +0 -8675
  1169. package/dist/transfer-DgeCvHnj.mjs.map +0 -1
  1170. package/dist/transfer-download-Pml7RMio.mjs +0 -33
  1171. package/dist/transfer-download-Pml7RMio.mjs.map +0 -1
  1172. package/dist/transformations-9gfpwY65.mjs +0 -196
  1173. package/dist/transformations-9gfpwY65.mjs.map +0 -1
  1174. package/dist/transport-BIfH7_hx.d.mts +0 -42
  1175. package/dist/transport-BIfH7_hx.d.mts.map +0 -1
  1176. package/dist/transport-DKWIq53q.mjs +0 -136
  1177. package/dist/transport-DKWIq53q.mjs.map +0 -1
  1178. package/dist/trusted-proxy-tKiVtyTD.mjs +0 -51
  1179. package/dist/trusted-proxy-tKiVtyTD.mjs.map +0 -1
  1180. package/dist/turnstile-DpsoyOfg.mjs +0 -53
  1181. package/dist/turnstile-DpsoyOfg.mjs.map +0 -1
  1182. package/dist/types-B4sUC2p1.d.mts +0 -198
  1183. package/dist/types-B4sUC2p1.d.mts.map +0 -1
  1184. package/dist/types-B7Lmsh1E.d.mts +0 -887
  1185. package/dist/types-B7Lmsh1E.d.mts.map +0 -1
  1186. package/dist/types-BZakh7Ym.mjs +0 -22
  1187. package/dist/types-BZakh7Ym.mjs.map +0 -1
  1188. package/dist/types-B_CppEmv.d.mts +0 -264
  1189. package/dist/types-B_CppEmv.d.mts.map +0 -1
  1190. package/dist/types-BcrBrE6-.mjs +0 -159
  1191. package/dist/types-BcrBrE6-.mjs.map +0 -1
  1192. package/dist/types-BkUg2yHx.mjs +0 -92
  1193. package/dist/types-BkUg2yHx.mjs.map +0 -1
  1194. package/dist/types-CAZgq9fO.d.mts +0 -124
  1195. package/dist/types-CAZgq9fO.d.mts.map +0 -1
  1196. package/dist/types-Cd-O03VG.d.mts +0 -363
  1197. package/dist/types-Cd-O03VG.d.mts.map +0 -1
  1198. package/dist/types-Cr-Kg-3D.d.mts +0 -1641
  1199. package/dist/types-Cr-Kg-3D.d.mts.map +0 -1
  1200. package/dist/types-D2fvWd1i.d.mts +0 -359
  1201. package/dist/types-D2fvWd1i.d.mts.map +0 -1
  1202. package/dist/types-D7HUsguf.mjs +0 -77
  1203. package/dist/types-D7HUsguf.mjs.map +0 -1
  1204. package/dist/types-DA1Te3Oy.d.mts +0 -198
  1205. package/dist/types-DA1Te3Oy.d.mts.map +0 -1
  1206. package/dist/types-DhV6Q5bP.mjs +0 -18
  1207. package/dist/types-DhV6Q5bP.mjs.map +0 -1
  1208. package/dist/types-DnnVSl6Y.d.mts +0 -85
  1209. package/dist/types-DnnVSl6Y.d.mts.map +0 -1
  1210. package/dist/types-VT4-BugW.mjs +0 -16
  1211. package/dist/types-VT4-BugW.mjs.map +0 -1
  1212. package/dist/upload-attempts-B68ZGNu9.mjs +0 -32
  1213. package/dist/upload-attempts-B68ZGNu9.mjs.map +0 -1
  1214. package/dist/url-pattern-CCeZMGOh.mjs +0 -33
  1215. package/dist/url-pattern-CCeZMGOh.mjs.map +0 -1
  1216. package/dist/user-DDSL-sGw.mjs +0 -171
  1217. package/dist/user-DDSL-sGw.mjs.map +0 -1
  1218. package/dist/utils-DdhmO9w9.mjs +0 -439
  1219. package/dist/utils-DdhmO9w9.mjs.map +0 -1
  1220. package/dist/validate-CHosPEhs.mjs +0 -453
  1221. package/dist/validate-CHosPEhs.mjs.map +0 -1
  1222. package/dist/validate-CM79QXYE.d.mts +0 -432
  1223. package/dist/validate-CM79QXYE.d.mts.map +0 -1
  1224. package/dist/validation-BFecQczG.mjs +0 -218
  1225. package/dist/validation-BFecQczG.mjs.map +0 -1
  1226. package/dist/version-BRZXVifl.mjs +0 -9
  1227. package/dist/version-BRZXVifl.mjs.map +0 -1
  1228. package/dist/version-DXsxRrob.mjs +0 -7
  1229. package/dist/version-DXsxRrob.mjs.map +0 -1
  1230. package/dist/widgets-WdV72brA.mjs +0 -126
  1231. package/dist/widgets-WdV72brA.mjs.map +0 -1
  1232. package/dist/wxr-taxonomies-BHTdqkmZ.d.mts +0 -34
  1233. package/dist/wxr-taxonomies-BHTdqkmZ.d.mts.map +0 -1
  1234. package/dist/wxr-taxonomies-DP6ESgMN.mjs +0 -372
  1235. package/dist/wxr-taxonomies-DP6ESgMN.mjs.map +0 -1
  1236. package/dist/zod-generator-D6uE4WiS.mjs +0 -389
  1237. package/dist/zod-generator-D6uE4WiS.mjs.map +0 -1
  1238. package/src/astro/routes/api/relations/[id]/translations.ts +0 -33
  1239. /package/dist/{api-tokens-CE1ECIg0.mjs → api-tokens-FaG1zPsj.mjs} +0 -0
  1240. /package/dist/{ssrf-DpBH7aOt.mjs → ssrf-DZOt8Qof.mjs} +0 -0
@@ -1,217 +0,0 @@
1
- import { u as isPostgres, y as tableExists } from "./dialect-helpers-7_IqPdh9.mjs";
2
- import { t as withTransaction } from "./transaction-BcJO4Tmc.mjs";
3
- import { n as collectionDeletionCurrentTimestamp, r as deleteActivatedMediaUsageCollection, t as MediaUsageCollectionDeletionRepository } from "./collection-deletion-BIm28mo3.mjs";
4
- import { sql } from "kysely";
5
-
6
- //#region src/media/usage/collection-deletion-processor.ts
7
- const MEDIA_USAGE_COLLECTION_DELETION_LIMITS = Object.freeze({
8
- candidatesPerTick: 4,
9
- rowsPerBatch: 50,
10
- leaseDurationSeconds: 300,
11
- maxAttempts: 5,
12
- retryBaseSeconds: 30,
13
- retryMaxSeconds: 900
14
- });
15
- async function processDueMediaUsageCollectionDeletions(db) {
16
- const repository = new MediaUsageCollectionDeletionRepository(db);
17
- const candidates = await repository.findDue(MEDIA_USAGE_COLLECTION_DELETION_LIMITS.candidatesPerTick);
18
- if (candidates.length === 0) return {
19
- candidateCount: await repository.hasNonterminal() ? 1 : 0,
20
- claimedCount: 0,
21
- outcome: "idle"
22
- };
23
- let claim = null;
24
- for (const candidate of candidates) {
25
- claim = await repository.claim({
26
- collectionId: candidate.collectionId,
27
- phase: candidate.phase,
28
- leaseDurationSeconds: MEDIA_USAGE_COLLECTION_DELETION_LIMITS.leaseDurationSeconds
29
- });
30
- if (claim?.leaseToken) break;
31
- }
32
- if (!claim?.leaseToken) return {
33
- candidateCount: candidates.length,
34
- claimedCount: 0,
35
- outcome: "claim_lost"
36
- };
37
- try {
38
- const processed = await processClaimedDeletion(db, claim);
39
- if (!processed.finalized && !processed.released && !await repository.release(claim)) return {
40
- candidateCount: candidates.length,
41
- claimedCount: 1,
42
- outcome: "claim_lost"
43
- };
44
- return {
45
- candidateCount: candidates.length,
46
- claimedCount: 1,
47
- outcome: processed.finalized ? "finalized" : "progress"
48
- };
49
- } catch (error) {
50
- const terminal = claim.attemptCount + 1 >= MEDIA_USAGE_COLLECTION_DELETION_LIMITS.maxAttempts;
51
- if (!await repository.recordFailure({
52
- collectionId: claim.collectionId,
53
- leaseToken: claim.leaseToken,
54
- errorCode: "MEDIA_USAGE_COLLECTION_DELETION_FAILED",
55
- terminal,
56
- retryDelaySeconds: retryDelaySeconds(claim.attemptCount)
57
- })) return {
58
- candidateCount: candidates.length,
59
- claimedCount: 1,
60
- outcome: "claim_lost"
61
- };
62
- console.error("[media-usage:collection-deletion] Processing failed:", error);
63
- return {
64
- candidateCount: candidates.length,
65
- claimedCount: 1,
66
- outcome: terminal ? "failed" : "retry"
67
- };
68
- }
69
- }
70
- async function processClaimedDeletion(db, claim) {
71
- if (claim.phase === "fence" || claim.phase === "registry" || claim.phase === "table") {
72
- await deleteActivatedMediaUsageCollection(db, {
73
- collectionId: claim.collectionId,
74
- collectionSlug: claim.collectionSlug,
75
- forceDelete: claim.forceDelete
76
- }, {
77
- frontPhaseLimit: 1,
78
- claimed: claim
79
- });
80
- return {
81
- finalized: false,
82
- released: true
83
- };
84
- }
85
- if (claim.phase === "work") await processWorkBatch(db, claim);
86
- if (claim.phase === "sources") await processSourceBatch(db, claim);
87
- if (claim.phase === "status") await processStatus(db, claim);
88
- if (claim.phase === "finalize") {
89
- await finalizeDeletion(db, claim);
90
- return {
91
- finalized: true,
92
- released: true
93
- };
94
- }
95
- return {
96
- finalized: false,
97
- released: false
98
- };
99
- }
100
- async function processWorkBatch(db, claim) {
101
- await withTransaction(db, async (trx) => {
102
- const rows = await trx.selectFrom("_emdash_media_usage_work").select("content_id").where("collection_id", "=", claim.collectionId).$if(claim.workCursor !== null, (query) => query.where("content_id", ">", claim.workCursor)).orderBy("content_id", "asc").limit(MEDIA_USAGE_COLLECTION_DELETION_LIMITS.rowsPerBatch + 1).execute();
103
- const batch = rows.slice(0, MEDIA_USAGE_COLLECTION_DELETION_LIMITS.rowsPerBatch);
104
- if (batch.length > 0) await trx.deleteFrom("_emdash_media_usage_work").where("collection_id", "=", claim.collectionId).where("content_id", "in", batch.map((row) => row.content_id)).where(liveLeaseGuard(trx, claim)).execute();
105
- await updateDeletion(trx, claim, {
106
- phase: rows.length > MEDIA_USAGE_COLLECTION_DELETION_LIMITS.rowsPerBatch ? "work" : "sources",
107
- work_cursor: rows.length > MEDIA_USAGE_COLLECTION_DELETION_LIMITS.rowsPerBatch ? batch.at(-1).content_id : null
108
- });
109
- });
110
- return false;
111
- }
112
- async function processSourceBatch(db, claim) {
113
- await withTransaction(db, async (trx) => {
114
- let sourceKey = claim.sourceKey;
115
- if (!sourceKey) {
116
- const source = await trx.selectFrom("_emdash_media_usage_sources").select("source_key").where("source_type", "=", "content").where("collection_id", "=", claim.collectionId).orderBy("source_key", "asc").limit(1).executeTakeFirst();
117
- if (!source) {
118
- await updateDeletion(trx, claim, {
119
- phase: "status",
120
- source_key: null,
121
- occurrence_cursor: null
122
- });
123
- return;
124
- }
125
- sourceKey = source.source_key;
126
- await updateDeletion(trx, claim, {
127
- source_key: sourceKey,
128
- occurrence_cursor: null
129
- });
130
- }
131
- const occurrences = await trx.selectFrom("_emdash_media_usage").select("id").where("source_key", "=", sourceKey).$if(claim.occurrenceCursor !== null, (query) => query.where("id", ">", claim.occurrenceCursor)).orderBy("id", "asc").limit(MEDIA_USAGE_COLLECTION_DELETION_LIMITS.rowsPerBatch + 1).execute();
132
- const batch = occurrences.slice(0, MEDIA_USAGE_COLLECTION_DELETION_LIMITS.rowsPerBatch);
133
- if (batch.length > 0) await trx.deleteFrom("_emdash_media_usage").where("source_key", "=", sourceKey).where("id", "in", batch.map((row) => row.id)).where(liveLeaseGuard(trx, claim)).execute();
134
- if (occurrences.length > MEDIA_USAGE_COLLECTION_DELETION_LIMITS.rowsPerBatch) {
135
- await updateDeletion(trx, claim, {
136
- source_key: sourceKey,
137
- occurrence_cursor: batch.at(-1).id
138
- });
139
- return;
140
- }
141
- await trx.deleteFrom("_emdash_media_usage_sources").where("source_key", "=", sourceKey).where("source_type", "=", "content").where("collection_id", "=", claim.collectionId).where(liveLeaseGuard(trx, claim)).execute();
142
- await updateDeletion(trx, claim, {
143
- source_key: null,
144
- occurrence_cursor: null
145
- });
146
- });
147
- return false;
148
- }
149
- async function processStatus(db, claim) {
150
- await withTransaction(db, async (trx) => {
151
- if (await exactCleanupRowsRemain(trx, claim, false)) throw new Error("Collection deletion cleanup is incomplete");
152
- await trx.deleteFrom("_emdash_media_usage_reconciliations").where("collection_id", "=", claim.collectionId).where("collection_slug", "=", claim.collectionSlug).where(liveLeaseGuard(trx, claim)).execute();
153
- await trx.deleteFrom("_emdash_media_usage_index_status").where("adapter_id", "=", "content-media").where("scope_type", "=", "collection").where("scope_key", "=", claim.collectionSlug).where("collection_id", "=", claim.collectionId).where(liveLeaseGuard(trx, claim)).execute();
154
- await updateDeletion(trx, claim, { phase: "finalize" });
155
- });
156
- return false;
157
- }
158
- async function finalizeDeletion(db, claim) {
159
- if (await tableExists(db, `ec_${claim.collectionSlug}`)) throw new Error("Collection table still exists during deletion finalization");
160
- if (await exactCleanupRowsRemain(db, claim)) throw new Error("Collection deletion is incomplete");
161
- if (await db.selectFrom("_emdash_collections").select("id").where("id", "=", claim.collectionId).where("slug", "=", claim.collectionSlug).executeTakeFirst()) throw new Error("Collection registry identity still exists");
162
- const result = await db.deleteFrom("_emdash_media_usage_collection_deletions").where("collection_id", "=", claim.collectionId).where("collection_slug", "=", claim.collectionSlug).where("state", "=", "leased").where("phase", "=", "finalize").where("lease_token", "=", claim.leaseToken).where(liveLeaseGuard(db, claim)).executeTakeFirst();
163
- if (Number(result.numDeletedRows ?? 0) !== 1) throw new Error("Collection deletion lost finalization");
164
- return true;
165
- }
166
- async function exactCleanupRowsRemain(db, claim, includeStatus = true) {
167
- const row = (await sql`
168
- SELECT
169
- EXISTS (
170
- SELECT 1 FROM _emdash_media_usage_work
171
- WHERE collection_id = ${claim.collectionId}
172
- ) AS work_present,
173
- EXISTS (
174
- SELECT 1 FROM _emdash_media_usage_sources
175
- WHERE source_type = 'content' AND collection_id = ${claim.collectionId}
176
- ) AS source_present,
177
- EXISTS (
178
- SELECT 1 FROM _emdash_media_usage_index_status
179
- WHERE adapter_id = 'content-media'
180
- AND scope_type = 'collection'
181
- AND scope_key = ${claim.collectionSlug}
182
- AND collection_id = ${claim.collectionId}
183
- ) AS status_present
184
- `.execute(db)).rows[0];
185
- return Boolean(row?.work_present) || Boolean(row?.source_present) || includeStatus && Boolean(row?.status_present);
186
- }
187
- async function updateDeletion(db, claim, values) {
188
- const result = await db.updateTable("_emdash_media_usage_collection_deletions").set({
189
- ...values,
190
- attempt_count: 0,
191
- last_error_code: null,
192
- updated_at: collectionDeletionCurrentTimestamp(db)
193
- }).where("collection_id", "=", claim.collectionId).where("state", "=", "leased").where("lease_token", "=", claim.leaseToken).where(liveLeaseGuard(db, claim)).executeTakeFirst();
194
- if (Number(result.numUpdatedRows ?? 0) !== 1) throw new Error("Collection deletion lease was lost");
195
- }
196
- function liveLeaseGuard(db, claim) {
197
- return isPostgres(db) ? sql`EXISTS (
198
- SELECT 1 FROM _emdash_media_usage_collection_deletions AS deletion
199
- WHERE deletion.collection_id = ${claim.collectionId}
200
- AND deletion.state = 'leased'
201
- AND deletion.lease_token = ${claim.leaseToken}
202
- AND deletion.lease_expires_at::timestamptz > clock_timestamp()
203
- )` : sql`EXISTS (
204
- SELECT 1 FROM _emdash_media_usage_collection_deletions AS deletion
205
- WHERE deletion.collection_id = ${claim.collectionId}
206
- AND deletion.state = 'leased'
207
- AND deletion.lease_token = ${claim.leaseToken}
208
- AND deletion.lease_expires_at > strftime('%Y-%m-%dT%H:%M:%fZ', 'now')
209
- )`;
210
- }
211
- function retryDelaySeconds(attemptCount) {
212
- return Math.min(MEDIA_USAGE_COLLECTION_DELETION_LIMITS.retryMaxSeconds, MEDIA_USAGE_COLLECTION_DELETION_LIMITS.retryBaseSeconds * 2 ** attemptCount);
213
- }
214
-
215
- //#endregion
216
- export { processDueMediaUsageCollectionDeletions as t };
217
- //# sourceMappingURL=collection-deletion-processor-Br6rxs3u.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"collection-deletion-processor-Br6rxs3u.mjs","names":[],"sources":["../src/media/usage/collection-deletion-processor.ts"],"sourcesContent":["import { sql, type Kysely, type RawBuilder, type Transaction, type Updateable } from \"kysely\";\n\nimport { isPostgres, tableExists } from \"../../database/dialect-helpers.js\";\nimport { withTransaction } from \"../../database/transaction.js\";\nimport type { Database, MediaUsageCollectionDeletionTable } from \"../../database/types.js\";\nimport {\n\tcollectionDeletionCurrentTimestamp,\n\tdeleteActivatedMediaUsageCollection,\n\tMediaUsageCollectionDeletionRepository,\n\ttype MediaUsageCollectionDeletionRecord,\n} from \"./collection-deletion.js\";\n\nexport const MEDIA_USAGE_COLLECTION_DELETION_LIMITS = Object.freeze({\n\tcandidatesPerTick: 4,\n\trowsPerBatch: 50,\n\tleaseDurationSeconds: 5 * 60,\n\tmaxAttempts: 5,\n\tretryBaseSeconds: 30,\n\tretryMaxSeconds: 15 * 60,\n});\n\nexport interface MediaUsageCollectionDeletionTickResult {\n\tcandidateCount: number;\n\tclaimedCount: number;\n\toutcome: \"idle\" | \"progress\" | \"finalized\" | \"retry\" | \"failed\" | \"claim_lost\";\n}\n\ntype DatabaseExecutor = Kysely<Database> | Transaction<Database>;\n\nexport async function processDueMediaUsageCollectionDeletions(\n\tdb: Kysely<Database>,\n): Promise<MediaUsageCollectionDeletionTickResult> {\n\tconst repository = new MediaUsageCollectionDeletionRepository(db);\n\tconst candidates = await repository.findDue(\n\t\tMEDIA_USAGE_COLLECTION_DELETION_LIMITS.candidatesPerTick,\n\t);\n\tif (candidates.length === 0) {\n\t\treturn {\n\t\t\tcandidateCount: (await repository.hasNonterminal()) ? 1 : 0,\n\t\t\tclaimedCount: 0,\n\t\t\toutcome: \"idle\",\n\t\t};\n\t}\n\n\tlet claim: (MediaUsageCollectionDeletionRecord & { leaseToken: string }) | null = null;\n\tfor (const candidate of candidates) {\n\t\tclaim = await repository.claim({\n\t\t\tcollectionId: candidate.collectionId,\n\t\t\tphase: candidate.phase,\n\t\t\tleaseDurationSeconds: MEDIA_USAGE_COLLECTION_DELETION_LIMITS.leaseDurationSeconds,\n\t\t});\n\t\tif (claim?.leaseToken) break;\n\t}\n\tif (!claim?.leaseToken) {\n\t\treturn { candidateCount: candidates.length, claimedCount: 0, outcome: \"claim_lost\" };\n\t}\n\n\ttry {\n\t\tconst processed = await processClaimedDeletion(db, claim);\n\t\tif (!processed.finalized && !processed.released && !(await repository.release(claim))) {\n\t\t\treturn { candidateCount: candidates.length, claimedCount: 1, outcome: \"claim_lost\" };\n\t\t}\n\t\treturn {\n\t\t\tcandidateCount: candidates.length,\n\t\t\tclaimedCount: 1,\n\t\t\toutcome: processed.finalized ? \"finalized\" : \"progress\",\n\t\t};\n\t} catch (error) {\n\t\tconst terminal = claim.attemptCount + 1 >= MEDIA_USAGE_COLLECTION_DELETION_LIMITS.maxAttempts;\n\t\tconst recorded = await repository.recordFailure({\n\t\t\tcollectionId: claim.collectionId,\n\t\t\tleaseToken: claim.leaseToken,\n\t\t\terrorCode: \"MEDIA_USAGE_COLLECTION_DELETION_FAILED\",\n\t\t\tterminal,\n\t\t\tretryDelaySeconds: retryDelaySeconds(claim.attemptCount),\n\t\t});\n\t\tif (!recorded) {\n\t\t\treturn { candidateCount: candidates.length, claimedCount: 1, outcome: \"claim_lost\" };\n\t\t}\n\t\tconsole.error(\"[media-usage:collection-deletion] Processing failed:\", error);\n\t\treturn {\n\t\t\tcandidateCount: candidates.length,\n\t\t\tclaimedCount: 1,\n\t\t\toutcome: terminal ? \"failed\" : \"retry\",\n\t\t};\n\t}\n}\n\nasync function processClaimedDeletion(\n\tdb: Kysely<Database>,\n\tclaim: MediaUsageCollectionDeletionRecord & { leaseToken: string },\n): Promise<{ finalized: boolean; released: boolean }> {\n\tif (claim.phase === \"fence\" || claim.phase === \"registry\" || claim.phase === \"table\") {\n\t\tawait deleteActivatedMediaUsageCollection(\n\t\t\tdb,\n\t\t\t{\n\t\t\t\tcollectionId: claim.collectionId,\n\t\t\t\tcollectionSlug: claim.collectionSlug,\n\t\t\t\tforceDelete: claim.forceDelete,\n\t\t\t},\n\t\t\t{ frontPhaseLimit: 1, claimed: claim },\n\t\t);\n\t\treturn { finalized: false, released: true };\n\t}\n\tif (claim.phase === \"work\") await processWorkBatch(db, claim);\n\tif (claim.phase === \"sources\") await processSourceBatch(db, claim);\n\tif (claim.phase === \"status\") await processStatus(db, claim);\n\tif (claim.phase === \"finalize\") {\n\t\tawait finalizeDeletion(db, claim);\n\t\treturn { finalized: true, released: true };\n\t}\n\treturn { finalized: false, released: false };\n}\n\nasync function processWorkBatch(\n\tdb: Kysely<Database>,\n\tclaim: MediaUsageCollectionDeletionRecord & { leaseToken: string },\n): Promise<boolean> {\n\tawait withTransaction(db, async (trx) => {\n\t\tconst rows = await trx\n\t\t\t.selectFrom(\"_emdash_media_usage_work\")\n\t\t\t.select(\"content_id\")\n\t\t\t.where(\"collection_id\", \"=\", claim.collectionId)\n\t\t\t.$if(claim.workCursor !== null, (query) => query.where(\"content_id\", \">\", claim.workCursor!))\n\t\t\t.orderBy(\"content_id\", \"asc\")\n\t\t\t.limit(MEDIA_USAGE_COLLECTION_DELETION_LIMITS.rowsPerBatch + 1)\n\t\t\t.execute();\n\t\tconst batch = rows.slice(0, MEDIA_USAGE_COLLECTION_DELETION_LIMITS.rowsPerBatch);\n\t\tif (batch.length > 0) {\n\t\t\tawait trx\n\t\t\t\t.deleteFrom(\"_emdash_media_usage_work\")\n\t\t\t\t.where(\"collection_id\", \"=\", claim.collectionId)\n\t\t\t\t.where(\n\t\t\t\t\t\"content_id\",\n\t\t\t\t\t\"in\",\n\t\t\t\t\tbatch.map((row) => row.content_id),\n\t\t\t\t)\n\t\t\t\t.where(liveLeaseGuard(trx, claim))\n\t\t\t\t.execute();\n\t\t}\n\t\tawait updateDeletion(trx, claim, {\n\t\t\tphase: rows.length > MEDIA_USAGE_COLLECTION_DELETION_LIMITS.rowsPerBatch ? \"work\" : \"sources\",\n\t\t\twork_cursor:\n\t\t\t\trows.length > MEDIA_USAGE_COLLECTION_DELETION_LIMITS.rowsPerBatch\n\t\t\t\t\t? batch.at(-1)!.content_id\n\t\t\t\t\t: null,\n\t\t});\n\t});\n\treturn false;\n}\n\nasync function processSourceBatch(\n\tdb: Kysely<Database>,\n\tclaim: MediaUsageCollectionDeletionRecord & { leaseToken: string },\n): Promise<boolean> {\n\tawait withTransaction(db, async (trx) => {\n\t\tlet sourceKey = claim.sourceKey;\n\t\tif (!sourceKey) {\n\t\t\tconst source = await trx\n\t\t\t\t.selectFrom(\"_emdash_media_usage_sources\")\n\t\t\t\t.select(\"source_key\")\n\t\t\t\t.where(\"source_type\", \"=\", \"content\")\n\t\t\t\t.where(\"collection_id\", \"=\", claim.collectionId)\n\t\t\t\t.orderBy(\"source_key\", \"asc\")\n\t\t\t\t.limit(1)\n\t\t\t\t.executeTakeFirst();\n\t\t\tif (!source) {\n\t\t\t\tawait updateDeletion(trx, claim, {\n\t\t\t\t\tphase: \"status\",\n\t\t\t\t\tsource_key: null,\n\t\t\t\t\toccurrence_cursor: null,\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsourceKey = source.source_key;\n\t\t\tawait updateDeletion(trx, claim, { source_key: sourceKey, occurrence_cursor: null });\n\t\t}\n\n\t\tconst occurrences = await trx\n\t\t\t.selectFrom(\"_emdash_media_usage\")\n\t\t\t.select(\"id\")\n\t\t\t.where(\"source_key\", \"=\", sourceKey)\n\t\t\t.$if(claim.occurrenceCursor !== null, (query) =>\n\t\t\t\tquery.where(\"id\", \">\", claim.occurrenceCursor!),\n\t\t\t)\n\t\t\t.orderBy(\"id\", \"asc\")\n\t\t\t.limit(MEDIA_USAGE_COLLECTION_DELETION_LIMITS.rowsPerBatch + 1)\n\t\t\t.execute();\n\t\tconst batch = occurrences.slice(0, MEDIA_USAGE_COLLECTION_DELETION_LIMITS.rowsPerBatch);\n\t\tif (batch.length > 0) {\n\t\t\tawait trx\n\t\t\t\t.deleteFrom(\"_emdash_media_usage\")\n\t\t\t\t.where(\"source_key\", \"=\", sourceKey)\n\t\t\t\t.where(\n\t\t\t\t\t\"id\",\n\t\t\t\t\t\"in\",\n\t\t\t\t\tbatch.map((row) => row.id),\n\t\t\t\t)\n\t\t\t\t.where(liveLeaseGuard(trx, claim))\n\t\t\t\t.execute();\n\t\t}\n\t\tif (occurrences.length > MEDIA_USAGE_COLLECTION_DELETION_LIMITS.rowsPerBatch) {\n\t\t\tawait updateDeletion(trx, claim, {\n\t\t\t\tsource_key: sourceKey,\n\t\t\t\toccurrence_cursor: batch.at(-1)!.id,\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tawait trx\n\t\t\t.deleteFrom(\"_emdash_media_usage_sources\")\n\t\t\t.where(\"source_key\", \"=\", sourceKey)\n\t\t\t.where(\"source_type\", \"=\", \"content\")\n\t\t\t.where(\"collection_id\", \"=\", claim.collectionId)\n\t\t\t.where(liveLeaseGuard(trx, claim))\n\t\t\t.execute();\n\t\tawait updateDeletion(trx, claim, { source_key: null, occurrence_cursor: null });\n\t});\n\treturn false;\n}\n\nasync function processStatus(\n\tdb: Kysely<Database>,\n\tclaim: MediaUsageCollectionDeletionRecord & { leaseToken: string },\n): Promise<boolean> {\n\tawait withTransaction(db, async (trx) => {\n\t\tif (await exactCleanupRowsRemain(trx, claim, false)) {\n\t\t\tthrow new Error(\"Collection deletion cleanup is incomplete\");\n\t\t}\n\t\tawait trx\n\t\t\t.deleteFrom(\"_emdash_media_usage_reconciliations\")\n\t\t\t.where(\"collection_id\", \"=\", claim.collectionId)\n\t\t\t.where(\"collection_slug\", \"=\", claim.collectionSlug)\n\t\t\t.where(liveLeaseGuard(trx, claim))\n\t\t\t.execute();\n\t\tawait trx\n\t\t\t.deleteFrom(\"_emdash_media_usage_index_status\")\n\t\t\t.where(\"adapter_id\", \"=\", \"content-media\")\n\t\t\t.where(\"scope_type\", \"=\", \"collection\")\n\t\t\t.where(\"scope_key\", \"=\", claim.collectionSlug)\n\t\t\t.where(\"collection_id\", \"=\", claim.collectionId)\n\t\t\t.where(liveLeaseGuard(trx, claim))\n\t\t\t.execute();\n\t\tawait updateDeletion(trx, claim, { phase: \"finalize\" });\n\t});\n\treturn false;\n}\n\nasync function finalizeDeletion(\n\tdb: Kysely<Database>,\n\tclaim: MediaUsageCollectionDeletionRecord & { leaseToken: string },\n): Promise<boolean> {\n\tif (await tableExists(db, `ec_${claim.collectionSlug}`)) {\n\t\tthrow new Error(\"Collection table still exists during deletion finalization\");\n\t}\n\tif (await exactCleanupRowsRemain(db, claim)) throw new Error(\"Collection deletion is incomplete\");\n\tconst registry = await db\n\t\t.selectFrom(\"_emdash_collections\")\n\t\t.select(\"id\")\n\t\t.where(\"id\", \"=\", claim.collectionId)\n\t\t.where(\"slug\", \"=\", claim.collectionSlug)\n\t\t.executeTakeFirst();\n\tif (registry) throw new Error(\"Collection registry identity still exists\");\n\tconst result = await db\n\t\t.deleteFrom(\"_emdash_media_usage_collection_deletions\")\n\t\t.where(\"collection_id\", \"=\", claim.collectionId)\n\t\t.where(\"collection_slug\", \"=\", claim.collectionSlug)\n\t\t.where(\"state\", \"=\", \"leased\")\n\t\t.where(\"phase\", \"=\", \"finalize\")\n\t\t.where(\"lease_token\", \"=\", claim.leaseToken)\n\t\t.where(liveLeaseGuard(db, claim))\n\t\t.executeTakeFirst();\n\tif (Number(result.numDeletedRows ?? 0) !== 1)\n\t\tthrow new Error(\"Collection deletion lost finalization\");\n\treturn true;\n}\n\nasync function exactCleanupRowsRemain(\n\tdb: DatabaseExecutor,\n\tclaim: Pick<MediaUsageCollectionDeletionRecord, \"collectionId\" | \"collectionSlug\">,\n\tincludeStatus = true,\n): Promise<boolean> {\n\tconst result = await sql<{\n\t\twork_present: boolean | number;\n\t\tsource_present: boolean | number;\n\t\tstatus_present: boolean | number;\n\t}>`\n\t\tSELECT\n\t\t\tEXISTS (\n\t\t\t\tSELECT 1 FROM _emdash_media_usage_work\n\t\t\t\tWHERE collection_id = ${claim.collectionId}\n\t\t\t) AS work_present,\n\t\t\tEXISTS (\n\t\t\t\tSELECT 1 FROM _emdash_media_usage_sources\n\t\t\t\tWHERE source_type = 'content' AND collection_id = ${claim.collectionId}\n\t\t\t) AS source_present,\n\t\t\tEXISTS (\n\t\t\t\tSELECT 1 FROM _emdash_media_usage_index_status\n\t\t\t\tWHERE adapter_id = 'content-media'\n\t\t\t\t\tAND scope_type = 'collection'\n\t\t\t\t\tAND scope_key = ${claim.collectionSlug}\n\t\t\t\t\tAND collection_id = ${claim.collectionId}\n\t\t\t) AS status_present\n\t`.execute(db);\n\tconst row = result.rows[0];\n\treturn (\n\t\tBoolean(row?.work_present) ||\n\t\tBoolean(row?.source_present) ||\n\t\t(includeStatus && Boolean(row?.status_present))\n\t);\n}\n\nasync function updateDeletion(\n\tdb: DatabaseExecutor,\n\tclaim: MediaUsageCollectionDeletionRecord & { leaseToken: string },\n\tvalues: Updateable<MediaUsageCollectionDeletionTable>,\n): Promise<void> {\n\tconst result = await db\n\t\t.updateTable(\"_emdash_media_usage_collection_deletions\")\n\t\t.set({\n\t\t\t...values,\n\t\t\tattempt_count: 0,\n\t\t\tlast_error_code: null,\n\t\t\tupdated_at: collectionDeletionCurrentTimestamp(db),\n\t\t})\n\t\t.where(\"collection_id\", \"=\", claim.collectionId)\n\t\t.where(\"state\", \"=\", \"leased\")\n\t\t.where(\"lease_token\", \"=\", claim.leaseToken)\n\t\t.where(liveLeaseGuard(db, claim))\n\t\t.executeTakeFirst();\n\tif (Number(result.numUpdatedRows ?? 0) !== 1)\n\t\tthrow new Error(\"Collection deletion lease was lost\");\n}\n\nfunction liveLeaseGuard(\n\tdb: DatabaseExecutor,\n\tclaim: Pick<MediaUsageCollectionDeletionRecord, \"collectionId\"> & { leaseToken: string },\n): RawBuilder<boolean> {\n\treturn isPostgres(db)\n\t\t? sql<boolean>`EXISTS (\n\t\t\tSELECT 1 FROM _emdash_media_usage_collection_deletions AS deletion\n\t\t\tWHERE deletion.collection_id = ${claim.collectionId}\n\t\t\t\tAND deletion.state = 'leased'\n\t\t\t\tAND deletion.lease_token = ${claim.leaseToken}\n\t\t\t\tAND deletion.lease_expires_at::timestamptz > clock_timestamp()\n\t\t)`\n\t\t: sql<boolean>`EXISTS (\n\t\t\tSELECT 1 FROM _emdash_media_usage_collection_deletions AS deletion\n\t\t\tWHERE deletion.collection_id = ${claim.collectionId}\n\t\t\t\tAND deletion.state = 'leased'\n\t\t\t\tAND deletion.lease_token = ${claim.leaseToken}\n\t\t\t\tAND deletion.lease_expires_at > strftime('%Y-%m-%dT%H:%M:%fZ', 'now')\n\t\t)`;\n}\n\nfunction retryDelaySeconds(attemptCount: number): number {\n\treturn Math.min(\n\t\tMEDIA_USAGE_COLLECTION_DELETION_LIMITS.retryMaxSeconds,\n\t\tMEDIA_USAGE_COLLECTION_DELETION_LIMITS.retryBaseSeconds * 2 ** attemptCount,\n\t);\n}\n"],"mappings":"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"}
@@ -1,85 +0,0 @@
1
- import { getRequestContext } from "./request-context.mjs";
2
- import { r as requestCached } from "./request-cache-DzLYKm_x.mjs";
3
-
4
- //#region src/schema/collection-slugs-cache.ts
5
- const HOLDER_KEY = Symbol.for("emdash:collection-slugs");
6
- const g = globalThis;
7
- const holder = g[HOLDER_KEY] ?? (() => {
8
- const h = {
9
- promise: null,
10
- fetchedAt: 0
11
- };
12
- g[HOLDER_KEY] = h;
13
- return h;
14
- })();
15
- const REVALIDATE_WINDOW_MS = 6e4;
16
- let revalidateWindowMs = REVALIDATE_WINDOW_MS;
17
- async function fetchSlugs(db) {
18
- const rows = await db.selectFrom("_emdash_collections").select("slug").execute();
19
- return new Set(rows.map((row) => row.slug));
20
- }
21
- function loadSlugs(db) {
22
- if (holder.promise) return holder.promise;
23
- const promise = fetchSlugs(db).catch((error) => {
24
- if (holder.promise === promise) holder.promise = null;
25
- throw error;
26
- });
27
- holder.promise = promise;
28
- holder.fetchedAt = Date.now();
29
- return promise;
30
- }
31
- /**
32
- * Keep only the collections that have a `_emdash_collections` row, i.e. whose
33
- * `ec_*` table the registry has created. When the filter would drop a
34
- * collection and the cached set is older than the revalidation window, the
35
- * set is re-fetched once so a collection created by another isolate becomes
36
- * visible without waiting for an isolate recycle.
37
- */
38
- async function filterToRegisteredCollections(db, collections) {
39
- if (collections.length === 0) return [];
40
- if (getRequestContext()?.dbIsIsolated === true) {
41
- const slugs = await requestCached("collection-slugs", () => fetchSlugs(db));
42
- return collections.filter((slug) => slugs.has(slug));
43
- }
44
- let slugs = await loadSlugs(db);
45
- let present = collections.filter((slug) => slugs.has(slug));
46
- if (present.length < collections.length && Date.now() - holder.fetchedAt > revalidateWindowMs) {
47
- holder.promise = null;
48
- slugs = await loadSlugs(db);
49
- present = collections.filter((slug) => slugs.has(slug));
50
- }
51
- return present;
52
- }
53
- /**
54
- * Seed the cache with slugs an init-time read already fetched, so the first
55
- * render on a cold isolate pays no extra query. Called by the runtime's
56
- * auto-seed gate.
57
- */
58
- function primeRegisteredCollections(slugs) {
59
- holder.promise = Promise.resolve(new Set(slugs));
60
- holder.fetchedAt = Date.now();
61
- }
62
- /**
63
- * Drop the cached slug set so the next reader re-fetches. Called from every
64
- * schema-mutation path (`invalidateUrlPatternCache`, `SchemaRegistry`
65
- * create/delete). Other isolates converge through bounded revalidation.
66
- */
67
- function resetRegisteredCollectionsCache() {
68
- holder.promise = null;
69
- holder.fetchedAt = 0;
70
- }
71
- /**
72
- * Note that a query hit a missing `ec_*` table despite the slug filter: the
73
- * cached set is stale (the collection was deleted on another isolate) or the
74
- * registry has drifted from the physical schema. Drops the cached set at most
75
- * once per revalidation window, so the delete case converges like the create
76
- * case while genuine drift costs one slug re-fetch per window instead of one
77
- * per render.
78
- */
79
- function noteStaleRegisteredCollections() {
80
- if (Date.now() - holder.fetchedAt > revalidateWindowMs) resetRegisteredCollectionsCache();
81
- }
82
-
83
- //#endregion
84
- export { resetRegisteredCollectionsCache as i, noteStaleRegisteredCollections as n, primeRegisteredCollections as r, filterToRegisteredCollections as t };
85
- //# sourceMappingURL=collection-slugs-cache-CjGk__zp.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"collection-slugs-cache-CjGk__zp.mjs","names":[],"sources":["../src/schema/collection-slugs-cache.ts"],"sourcesContent":["/**\n * Per-isolate cache of registered collection slugs (`_emdash_collections`).\n *\n * Term counting scopes its per-collection UNION to a taxonomy's declared\n * collections, but a declared collection is not necessarily a created one:\n * the migration-seeded defaults declare `posts` whether or not that\n * collection ever exists. Querying optimistically and catching the\n * missing-table error keeps results correct, yet the failed statement itself\n * is logged by the database — on D1 it surfaces as a `no such table` error\n * span per taxonomy per uncached render. Filtering declared collections\n * against the registry up front means the failing statement is never sent.\n *\n * Stored on globalThis behind a Symbol key (same pattern as the taxonomy-defs\n * cache in `taxonomies/index.ts`) so bundler chunk duplication cannot produce\n * two independent caches. The promise is cached, so concurrent cold readers\n * share one in-flight query; a rejection evicts the entry.\n *\n * Freshness:\n * - Primed for free at isolate boot: runtime init's auto-seed gate already\n * reads `_emdash_collections` and hands the slugs to\n * `primeRegisteredCollections`, so cold isolates pay no extra query.\n * - Every schema-mutation path resets it: `invalidateUrlPatternCache()`\n * (admin API, MCP, WordPress import, seed application) and\n * `SchemaRegistry.createCollection`/`deleteCollection` for direct callers.\n * - Creations on *other* isolates surface through bounded revalidation: the\n * set is re-fetched only when the filter would actually drop a declared\n * collection and the cached copy is older than the revalidation window.\n * Sites whose declared collections all exist — the steady state — never\n * revalidate; a site with a genuinely absent collection pays one slug read\n * per window instead of one failing statement per render, and a collection\n * created elsewhere starts counting within the window.\n *\n * Isolated databases bypass the cache (playground / DO preview requests set\n * `requestContext.dbIsIsolated`): they point at a divergent schema, so the\n * slug set is fetched per request instead, deduped by the request cache.\n */\n\nimport type { Kysely } from \"kysely\";\n\nimport type { Database } from \"../database/types.js\";\nimport { requestCached } from \"../request-cache.js\";\nimport { getRequestContext } from \"../request-context.js\";\n\ninterface SlugsHolder {\n\tpromise: Promise<Set<string>> | null;\n\t/** When the cached promise was created; gates bounded revalidation. */\n\tfetchedAt: number;\n}\n\nconst HOLDER_KEY = Symbol.for(\"emdash:collection-slugs\");\nconst g = globalThis as Record<symbol, unknown>;\nconst holder: SlugsHolder =\n\t// eslint-disable-next-line typescript/no-unsafe-type-assertion -- globalThis singleton pattern (see request-cache.ts)\n\t(g[HOLDER_KEY] as SlugsHolder | undefined) ??\n\t(() => {\n\t\tconst h: SlugsHolder = { promise: null, fetchedAt: 0 };\n\t\tg[HOLDER_KEY] = h;\n\t\treturn h;\n\t})();\n\nconst REVALIDATE_WINDOW_MS = 60_000;\nlet revalidateWindowMs = REVALIDATE_WINDOW_MS;\n\nasync function fetchSlugs(db: Kysely<Database>): Promise<Set<string>> {\n\tconst rows = await db.selectFrom(\"_emdash_collections\").select(\"slug\").execute();\n\treturn new Set(rows.map((row) => row.slug));\n}\n\nfunction loadSlugs(db: Kysely<Database>): Promise<Set<string>> {\n\tif (holder.promise) return holder.promise;\n\tconst promise = fetchSlugs(db).catch((error: unknown) => {\n\t\tif (holder.promise === promise) holder.promise = null;\n\t\tthrow error;\n\t});\n\tholder.promise = promise;\n\tholder.fetchedAt = Date.now();\n\treturn promise;\n}\n\n/**\n * Keep only the collections that have a `_emdash_collections` row, i.e. whose\n * `ec_*` table the registry has created. When the filter would drop a\n * collection and the cached set is older than the revalidation window, the\n * set is re-fetched once so a collection created by another isolate becomes\n * visible without waiting for an isolate recycle.\n */\nexport async function filterToRegisteredCollections(\n\tdb: Kysely<Database>,\n\tcollections: readonly string[],\n): Promise<string[]> {\n\tif (collections.length === 0) return [];\n\tif (getRequestContext()?.dbIsIsolated === true) {\n\t\tconst slugs = await requestCached(\"collection-slugs\", () => fetchSlugs(db));\n\t\treturn collections.filter((slug) => slugs.has(slug));\n\t}\n\tlet slugs = await loadSlugs(db);\n\tlet present = collections.filter((slug) => slugs.has(slug));\n\tif (present.length < collections.length && Date.now() - holder.fetchedAt > revalidateWindowMs) {\n\t\tholder.promise = null;\n\t\tslugs = await loadSlugs(db);\n\t\tpresent = collections.filter((slug) => slugs.has(slug));\n\t}\n\treturn present;\n}\n\n/**\n * Seed the cache with slugs an init-time read already fetched, so the first\n * render on a cold isolate pays no extra query. Called by the runtime's\n * auto-seed gate.\n */\nexport function primeRegisteredCollections(slugs: readonly string[]): void {\n\tholder.promise = Promise.resolve(new Set(slugs));\n\tholder.fetchedAt = Date.now();\n}\n\n/**\n * Drop the cached slug set so the next reader re-fetches. Called from every\n * schema-mutation path (`invalidateUrlPatternCache`, `SchemaRegistry`\n * create/delete). Other isolates converge through bounded revalidation.\n */\nexport function resetRegisteredCollectionsCache(): void {\n\tholder.promise = null;\n\tholder.fetchedAt = 0;\n}\n\n/**\n * Note that a query hit a missing `ec_*` table despite the slug filter: the\n * cached set is stale (the collection was deleted on another isolate) or the\n * registry has drifted from the physical schema. Drops the cached set at most\n * once per revalidation window, so the delete case converges like the create\n * case while genuine drift costs one slug re-fetch per window instead of one\n * per render.\n */\nexport function noteStaleRegisteredCollections(): void {\n\tif (Date.now() - holder.fetchedAt > revalidateWindowMs) {\n\t\tresetRegisteredCollectionsCache();\n\t}\n}\n\n/**\n * Test/internal helper: reset the cache and restore the production\n * revalidation window.\n */\nexport function resetRegisteredCollectionsCacheForTests(): void {\n\tresetRegisteredCollectionsCache();\n\trevalidateWindowMs = REVALIDATE_WINDOW_MS;\n}\n\n/**\n * Test-only: shorten the revalidation window so the cross-isolate refresh\n * path can be exercised without waiting out the production window.\n *\n * @internal\n */\nexport function setRegisteredCollectionsRevalidateWindowForTests(ms: number): void {\n\trevalidateWindowMs = ms;\n}\n"],"mappings":";;;;AAiDA,MAAM,aAAa,OAAO,IAAI,0BAA0B;AACxD,MAAM,IAAI;AACV,MAAM,SAEJ,EAAE,sBACI;CACN,MAAM,IAAiB;EAAE,SAAS;EAAM,WAAW;EAAG;AACtD,GAAE,cAAc;AAChB,QAAO;IACJ;AAEL,MAAM,uBAAuB;AAC7B,IAAI,qBAAqB;AAEzB,eAAe,WAAW,IAA4C;CACrE,MAAM,OAAO,MAAM,GAAG,WAAW,sBAAsB,CAAC,OAAO,OAAO,CAAC,SAAS;AAChF,QAAO,IAAI,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC;;AAG5C,SAAS,UAAU,IAA4C;AAC9D,KAAI,OAAO,QAAS,QAAO,OAAO;CAClC,MAAM,UAAU,WAAW,GAAG,CAAC,OAAO,UAAmB;AACxD,MAAI,OAAO,YAAY,QAAS,QAAO,UAAU;AACjD,QAAM;GACL;AACF,QAAO,UAAU;AACjB,QAAO,YAAY,KAAK,KAAK;AAC7B,QAAO;;;;;;;;;AAUR,eAAsB,8BACrB,IACA,aACoB;AACpB,KAAI,YAAY,WAAW,EAAG,QAAO,EAAE;AACvC,KAAI,mBAAmB,EAAE,iBAAiB,MAAM;EAC/C,MAAM,QAAQ,MAAM,cAAc,0BAA0B,WAAW,GAAG,CAAC;AAC3E,SAAO,YAAY,QAAQ,SAAS,MAAM,IAAI,KAAK,CAAC;;CAErD,IAAI,QAAQ,MAAM,UAAU,GAAG;CAC/B,IAAI,UAAU,YAAY,QAAQ,SAAS,MAAM,IAAI,KAAK,CAAC;AAC3D,KAAI,QAAQ,SAAS,YAAY,UAAU,KAAK,KAAK,GAAG,OAAO,YAAY,oBAAoB;AAC9F,SAAO,UAAU;AACjB,UAAQ,MAAM,UAAU,GAAG;AAC3B,YAAU,YAAY,QAAQ,SAAS,MAAM,IAAI,KAAK,CAAC;;AAExD,QAAO;;;;;;;AAQR,SAAgB,2BAA2B,OAAgC;AAC1E,QAAO,UAAU,QAAQ,QAAQ,IAAI,IAAI,MAAM,CAAC;AAChD,QAAO,YAAY,KAAK,KAAK;;;;;;;AAQ9B,SAAgB,kCAAwC;AACvD,QAAO,UAAU;AACjB,QAAO,YAAY;;;;;;;;;;AAWpB,SAAgB,iCAAuC;AACtD,KAAI,KAAK,KAAK,GAAG,OAAO,YAAY,mBACnC,kCAAiC"}