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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media-usage-work-HU63hNDu.mjs","names":[],"sources":["../src/database/repositories/media-usage-work.ts"],"sourcesContent":["import { sql, type Kysely, type RawBuilder, type Selectable } from \"kysely\";\nimport { ulid } from \"ulidx\";\n\nimport { isPostgres } from \"../dialect-helpers.js\";\nimport type { Database, MediaUsageWorkTable } from \"../types.js\";\nimport { decodeCursor, encodeCursor, type FindManyResult } from \"./types.js\";\n\nexport type MediaUsageWorkState = \"pending\" | \"retry\" | \"leased\" | \"failed\";\nexport type MediaUsageWorkVersion = number | string;\nconst MAX_PORTABLE_DURATION_SECONDS = 365 * 24 * 60 * 60;\nconst MAX_WORK_SELECTION_LIMIT = 1_000;\nconst NON_NEGATIVE_DECIMAL_PATTERN = /^(?:0|[1-9][0-9]*)$/;\nconst POSITIVE_DECIMAL_PATTERN = /^[1-9][0-9]*$/;\nconst STABLE_ERROR_CODE_PATTERN = /^[A-Z][A-Z0-9_]{0,63}$/;\n\nexport const MEDIA_USAGE_WORK_OPERATOR_DEFAULT_LIMIT = 50;\nexport const MEDIA_USAGE_WORK_OPERATOR_MAX_LIMIT = 100;\nexport const MEDIA_USAGE_RECONCILIATION_PAGE_LIMIT = 1_000;\nconst MEDIA_USAGE_WORK_STATES = [\"pending\", \"retry\", \"leased\", \"failed\"] as const;\n\nexport interface MediaUsageWorkIdentity {\n\tcollectionId: string;\n\tcontentId: string;\n\tworkVersion: MediaUsageWorkVersion;\n}\n\nexport interface MediaUsageWorkLease extends MediaUsageWorkIdentity {\n\tleaseToken: string;\n}\n\nexport interface MediaUsageWorkRecord extends MediaUsageWorkIdentity {\n\tcollectionSlug: string;\n\tchangeEpoch: number | string;\n\tstate: MediaUsageWorkState;\n\tattemptCount: number;\n\tnextAttemptAt: string;\n\tleaseToken: string | null;\n\tleaseExpiresAt: string | null;\n\tlastAttemptedAt: string | null;\n\tlastErrorCode: string | null;\n\tcreatedAt: string;\n\tupdatedAt: string;\n}\n\nexport interface MediaUsageOperatorWorkItem {\n\tcollectionId: string;\n\tcollectionSlug: string;\n\tcontentId: string;\n\tstate: MediaUsageWorkState;\n\tattemptCount: number;\n\tnextAttemptAt: string;\n\tleaseExpiresAt: string | null;\n\tlastAttemptedAt: string | null;\n\tlastErrorCode: string | null;\n\tupdatedAt: string;\n}\n\nexport type MediaUsageOperatorRetryResult =\n\t| { outcome: \"pending\"; changed: boolean; work: MediaUsageOperatorWorkItem }\n\t| { outcome: \"lease_active\"; leaseExpiresAt: string }\n\t| { outcome: \"collection_not_found\" }\n\t| { outcome: \"conflict\" };\n\nexport class MediaUsageWorkRepository {\n\tconstructor(private db: Kysely<Database>) {}\n\n\tasync enqueueReconciliationPage(input: {\n\t\tcollectionId: string;\n\t\tcollectionSlug: string;\n\t\trunToken: string;\n\t\tleaseToken: string;\n\t\tchangeEpoch: number | string;\n\t\tphase: \"scan\" | \"sources\";\n\t\tcontentIds: readonly string[];\n\t}): Promise<void> {\n\t\tif (!input.collectionId || !input.collectionSlug || !input.runToken || !input.leaseToken) {\n\t\t\tthrow new Error(\"Reconciliation enqueue requires exact collection and lease identity\");\n\t\t}\n\t\tassertNonNegativeDecimal(input.changeEpoch, \"change epoch\");\n\t\tconst contentIds = [...new Set(input.contentIds)];\n\t\tif (contentIds.length < 1 || contentIds.length > MEDIA_USAGE_RECONCILIATION_PAGE_LIMIT) {\n\t\t\tthrow new Error(\"Reconciliation enqueue requires from 1 to 1000 content IDs\");\n\t\t}\n\t\tif (contentIds.some((contentId) => !contentId)) {\n\t\t\tthrow new Error(\"Reconciliation enqueue content IDs must not be empty\");\n\t\t}\n\t\tconst now = this.timestampOffset(0);\n\t\tconst contentIdsJson = JSON.stringify(contentIds);\n\t\tconst page = isPostgres(this.db)\n\t\t\t? sql`SELECT value::text AS content_id FROM jsonb_array_elements_text(${contentIdsJson}::jsonb) AS value`\n\t\t\t: sql`SELECT value AS content_id FROM json_each(${contentIdsJson})`;\n\t\tawait sql`\n\t\t\tWITH page(content_id) AS (${page})\n\t\t\tINSERT INTO _emdash_media_usage_work (\n\t\t\t\tcollection_id, collection_slug, content_id, change_epoch, work_version,\n\t\t\t\tstate, attempt_count, next_attempt_at, lease_token, lease_expires_at,\n\t\t\t\tlast_attempted_at, last_error_code, created_at, updated_at\n\t\t\t)\n\t\t\tSELECT\n\t\t\t\t${input.collectionId}, ${input.collectionSlug}, page.content_id, ${input.changeEpoch}, 1,\n\t\t\t\t'pending', 0, ${now}, NULL, NULL, NULL, NULL, ${now}, ${now}\n\t\t\tFROM page\n\t\t\tWHERE EXISTS (\n\t\t\t\tSELECT 1\n\t\t\t\tFROM _emdash_media_usage_reconciliations AS reconciliation\n\t\t\t\tINNER JOIN _emdash_media_usage_index_status AS status\n\t\t\t\t\tON status.collection_id = reconciliation.collection_id\n\t\t\t\t\tAND status.scope_key = reconciliation.collection_slug\n\t\t\t\tINNER JOIN _emdash_collections AS collection\n\t\t\t\t\tON collection.id = reconciliation.collection_id\n\t\t\t\t\tAND collection.slug = reconciliation.collection_slug\n\t\t\t\tWHERE reconciliation.collection_id = ${input.collectionId}\n\t\t\t\t\tAND reconciliation.collection_slug = ${input.collectionSlug}\n\t\t\t\t\tAND reconciliation.run_token = ${input.runToken}\n\t\t\t\t\tAND reconciliation.target_epoch = ${input.changeEpoch}\n\t\t\t\t\tAND reconciliation.state = 'leased'\n\t\t\t\t\tAND reconciliation.phase = ${input.phase}\n\t\t\t\t\tAND reconciliation.lease_token = ${input.leaseToken}\n\t\t\t\t\tAND ${this.qualifiedLeaseIsLive(\"reconciliation.lease_expires_at\")}\n\t\t\t\t\tAND status.adapter_id = 'content-media'\n\t\t\t\t\tAND status.scope_type = 'collection'\n\t\t\t\t\tAND status.capture_state = 'active'\n\t\t\t\t\tAND status.reconciliation_required = 1\n\t\t\t\t\tAND status.status = 'running'\n\t\t\t\t\tAND status.cursor = ${input.runToken}\n\t\t\t\t\tAND status.change_epoch = ${input.changeEpoch}\n\t\t\t\t\tAND EXISTS (\n\t\t\t\t\t\tSELECT 1 FROM _emdash_media_usage_activation AS activation\n\t\t\t\t\t\tWHERE activation.task_key = 'incremental_capture'\n\t\t\t\t\t\t\tAND activation.state = 'active'\n\t\t\t\t\t)\n\t\t\t\t\tAND NOT EXISTS (\n\t\t\t\t\t\tSELECT 1 FROM _emdash_media_usage_collection_deletions AS deletion\n\t\t\t\t\t\tWHERE deletion.collection_id = reconciliation.collection_id\n\t\t\t\t\t)\n\t\t\t)\n\t\t\tON CONFLICT (collection_id, content_id) DO UPDATE SET\n\t\t\t\tcollection_slug = excluded.collection_slug,\n\t\t\t\tchange_epoch = excluded.change_epoch,\n\t\t\t\twork_version = _emdash_media_usage_work.work_version + 1,\n\t\t\t\tstate = 'pending',\n\t\t\t\tattempt_count = 0,\n\t\t\t\tnext_attempt_at = excluded.next_attempt_at,\n\t\t\t\tlease_token = NULL,\n\t\t\t\tlease_expires_at = NULL,\n\t\t\t\tlast_attempted_at = NULL,\n\t\t\t\tlast_error_code = NULL,\n\t\t\t\tupdated_at = excluded.updated_at\n\t\t\tWHERE _emdash_media_usage_work.change_epoch < excluded.change_epoch\n\t\t`.execute(this.db);\n\t}\n\n\tasync findOperatorPage(options: {\n\t\tcollectionSlug: string;\n\t\tstate?: MediaUsageWorkState;\n\t\tlimit?: number;\n\t\tcursor?: string;\n\t}): Promise<FindManyResult<MediaUsageOperatorWorkItem> | null> {\n\t\tif (!options.collectionSlug) {\n\t\t\tthrow new Error(\"Media usage work listing requires a collection slug\");\n\t\t}\n\t\tif (options.state !== undefined && !isMediaUsageWorkState(options.state)) {\n\t\t\tthrow new Error(\"Media usage work listing requires a valid state\");\n\t\t}\n\t\tconst limit = operatorLimit(options.limit);\n\t\tconst cursor = options.cursor ? decodeCursor(options.cursor) : null;\n\t\tconst collection = await this.db\n\t\t\t.selectFrom(\"_emdash_collections\")\n\t\t\t.select([\"id\", \"slug\"])\n\t\t\t.where(\"slug\", \"=\", options.collectionSlug)\n\t\t\t.executeTakeFirst();\n\t\tif (!collection) return null;\n\n\t\tconst states = options.state ? [options.state] : MEDIA_USAGE_WORK_STATES;\n\t\tconst candidates: MediaUsageOperatorWorkItem[] = [];\n\t\tfor (const state of states) {\n\t\t\tconst rows = await this.findOperatorRows({\n\t\t\t\tcollectionId: collection.id,\n\t\t\t\tcollectionSlug: collection.slug,\n\t\t\t\tstate,\n\t\t\t\tlimit: limit + 1,\n\t\t\t\tcursor,\n\t\t\t});\n\t\t\tcandidates.push(...rows.map(rowToOperatorWork));\n\t\t}\n\n\t\tconst ordered = candidates.toSorted(compareOperatorWork);\n\t\tconst items = ordered.slice(0, limit);\n\t\tconst result: FindManyResult<MediaUsageOperatorWorkItem> = { items };\n\t\tif (ordered.length > limit && items.length > 0) {\n\t\t\tconst last = items.at(-1)!;\n\t\t\tresult.nextCursor = encodeCursor(last.updatedAt, last.contentId);\n\t\t}\n\t\treturn result;\n\t}\n\n\tprivate async findOperatorRows(input: {\n\t\tcollectionId: string;\n\t\tcollectionSlug: string;\n\t\tstate: MediaUsageWorkState;\n\t\tlimit: number;\n\t\tcursor: { orderValue: string; id: string } | null;\n\t}): Promise<Selectable<MediaUsageWorkTable>[]> {\n\t\tlet query = this.db\n\t\t\t.selectFrom(\"_emdash_media_usage_work as work\")\n\t\t\t.innerJoin(\"_emdash_collections as current_collection\", (join) =>\n\t\t\t\tjoin\n\t\t\t\t\t.onRef(\"current_collection.id\", \"=\", \"work.collection_id\")\n\t\t\t\t\t.onRef(\"current_collection.slug\", \"=\", \"work.collection_slug\"),\n\t\t\t)\n\t\t\t.selectAll(\"work\")\n\t\t\t.where(\"work.collection_id\", \"=\", input.collectionId)\n\t\t\t.where(\"work.collection_slug\", \"=\", input.collectionSlug)\n\t\t\t.where(\"work.state\", \"=\", input.state);\n\t\tif (input.cursor) {\n\t\t\tquery = query.where((eb) =>\n\t\t\t\teb.or([\n\t\t\t\t\teb(\"work.updated_at\", \"<\", input.cursor!.orderValue),\n\t\t\t\t\teb.and([\n\t\t\t\t\t\teb(\"work.updated_at\", \"=\", input.cursor!.orderValue),\n\t\t\t\t\t\teb(\"work.content_id\", \"<\", input.cursor!.id),\n\t\t\t\t\t]),\n\t\t\t\t]),\n\t\t\t);\n\t\t}\n\t\treturn query\n\t\t\t.orderBy(\"work.updated_at\", \"desc\")\n\t\t\t.orderBy(\"work.content_id\", \"desc\")\n\t\t\t.limit(input.limit)\n\t\t\t.execute();\n\t}\n\n\tasync retryOperatorWork(input: {\n\t\tcollectionId: string;\n\t\tcontentId: string;\n\t}): Promise<MediaUsageOperatorRetryResult> {\n\t\tif (!input.collectionId || !input.contentId) {\n\t\t\tthrow new Error(\"Media usage operator retry requires collection and content IDs\");\n\t\t}\n\t\tconst collection = await this.findActiveOperatorCollection(input.collectionId);\n\t\tif (!collection) return { outcome: \"collection_not_found\" };\n\n\t\tconst observed = await this.findWorkByIdentity(input.collectionId, input.contentId);\n\t\tif (observed?.state === \"pending\" && observed.collection_slug === collection.slug) {\n\t\t\treturn { outcome: \"pending\", changed: false, work: rowToOperatorWork(observed) };\n\t\t}\n\n\t\tconst invalidated = await this.invalidateCoverageForOperatorRetry({\n\t\t\t...input,\n\t\t\tcollectionSlug: collection.slug,\n\t\t\tobserved,\n\t\t});\n\t\tif (!invalidated) return this.operatorRetryLost(input);\n\n\t\tconst reopened = observed\n\t\t\t? await this.reopenObservedWork(observed, collection.slug, invalidated.change_epoch)\n\t\t\t: await this.createOperatorWork({\n\t\t\t\t\t...input,\n\t\t\t\t\tcollectionSlug: collection.slug,\n\t\t\t\t\tchangeEpoch: invalidated.change_epoch,\n\t\t\t\t});\n\t\tif (reopened) {\n\t\t\treturn { outcome: \"pending\", changed: true, work: rowToOperatorWork(reopened) };\n\t\t}\n\t\treturn this.operatorRetryLost(input);\n\t}\n\n\tprivate async findActiveOperatorCollection(\n\t\tcollectionId: string,\n\t): Promise<{ id: string; slug: string } | null> {\n\t\tconst row = await this.db\n\t\t\t.selectFrom(\"_emdash_collections as collection\")\n\t\t\t.innerJoin(\"_emdash_media_usage_index_status as status\", (join) =>\n\t\t\t\tjoin\n\t\t\t\t\t.onRef(\"status.collection_id\", \"=\", \"collection.id\")\n\t\t\t\t\t.onRef(\"status.scope_key\", \"=\", \"collection.slug\"),\n\t\t\t)\n\t\t\t.select([\"collection.id\", \"collection.slug\"])\n\t\t\t.where(\"collection.id\", \"=\", collectionId)\n\t\t\t.where(\"status.adapter_id\", \"=\", \"content-media\")\n\t\t\t.where(\"status.scope_type\", \"=\", \"collection\")\n\t\t\t.where(\"status.capture_state\", \"=\", \"active\")\n\t\t\t.executeTakeFirst();\n\t\treturn row ?? null;\n\t}\n\n\tprivate async findWorkByIdentity(\n\t\tcollectionId: string,\n\t\tcontentId: string,\n\t): Promise<Selectable<MediaUsageWorkTable> | null> {\n\t\treturn (\n\t\t\t(await this.db\n\t\t\t\t.selectFrom(\"_emdash_media_usage_work\")\n\t\t\t\t.selectAll()\n\t\t\t\t.where(\"collection_id\", \"=\", collectionId)\n\t\t\t\t.where(\"content_id\", \"=\", contentId)\n\t\t\t\t.executeTakeFirst()) ?? null\n\t\t);\n\t}\n\n\tprivate async invalidateCoverageForOperatorRetry(input: {\n\t\tcollectionId: string;\n\t\tcollectionSlug: string;\n\t\tcontentId: string;\n\t\tobserved: Selectable<MediaUsageWorkTable> | null;\n\t}): Promise<{ change_epoch: number | string } | null> {\n\t\tlet query = this.db\n\t\t\t.updateTable(\"_emdash_media_usage_index_status as status\")\n\t\t\t.set({\n\t\t\t\tchange_epoch: sql<number>`change_epoch + 1`,\n\t\t\t\tstatus: sql<string>`CASE WHEN status IN ('complete', 'partial', 'failed') THEN 'stale' ELSE status END`,\n\t\t\t\tcompleted_at: sql<\n\t\t\t\t\tstring | null\n\t\t\t\t>`CASE WHEN status IN ('complete', 'partial', 'failed') THEN NULL ELSE completed_at END`,\n\t\t\t\tlast_error_code: null,\n\t\t\t\tupdated_at: this.timestampOffset(0),\n\t\t\t})\n\t\t\t.where(\"status.adapter_id\", \"=\", \"content-media\")\n\t\t\t.where(\"status.scope_type\", \"=\", \"collection\")\n\t\t\t.where(\"status.scope_key\", \"=\", input.collectionSlug)\n\t\t\t.where(\"status.collection_id\", \"=\", input.collectionId)\n\t\t\t.where(\"status.capture_state\", \"=\", \"active\")\n\t\t\t.where((eb) =>\n\t\t\t\teb.exists(\n\t\t\t\t\teb\n\t\t\t\t\t\t.selectFrom(\"_emdash_collections as collection\")\n\t\t\t\t\t\t.select(\"collection.id\")\n\t\t\t\t\t\t.whereRef(\"collection.id\", \"=\", \"status.collection_id\")\n\t\t\t\t\t\t.whereRef(\"collection.slug\", \"=\", \"status.scope_key\"),\n\t\t\t\t),\n\t\t\t);\n\n\t\tconst observed = input.observed;\n\t\tif (observed) {\n\t\t\tquery = query.where((eb) => {\n\t\t\t\tlet work = eb\n\t\t\t\t\t.selectFrom(\"_emdash_media_usage_work as work\")\n\t\t\t\t\t.select(\"work.content_id\")\n\t\t\t\t\t.whereRef(\"work.collection_id\", \"=\", \"status.collection_id\")\n\t\t\t\t\t.where(\"work.content_id\", \"=\", input.contentId)\n\t\t\t\t\t.where(\"work.work_version\", \"=\", observed.work_version)\n\t\t\t\t\t.where(\"work.state\", \"=\", observed.state);\n\t\t\t\tif (observed.state === \"leased\") {\n\t\t\t\t\twork = work\n\t\t\t\t\t\t.where(\"work.lease_expires_at\", \"is not\", null)\n\t\t\t\t\t\t.where(this.timestampIsDue(\"work.lease_expires_at\"));\n\t\t\t\t}\n\t\t\t\treturn eb.exists(work);\n\t\t\t});\n\t\t} else {\n\t\t\tquery = query.where((eb) =>\n\t\t\t\teb.not(\n\t\t\t\t\teb.exists(\n\t\t\t\t\t\teb\n\t\t\t\t\t\t\t.selectFrom(\"_emdash_media_usage_work as work\")\n\t\t\t\t\t\t\t.select(\"work.content_id\")\n\t\t\t\t\t\t\t.whereRef(\"work.collection_id\", \"=\", \"status.collection_id\")\n\t\t\t\t\t\t\t.where(\"work.content_id\", \"=\", input.contentId),\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t\t);\n\t\t}\n\n\t\treturn (await query.returning(\"change_epoch\").executeTakeFirst()) ?? null;\n\t}\n\n\tprivate async reopenObservedWork(\n\t\tobserved: Selectable<MediaUsageWorkTable>,\n\t\tcollectionSlug: string,\n\t\tchangeEpoch: number | string,\n\t): Promise<Selectable<MediaUsageWorkTable> | null> {\n\t\tlet query = this.db\n\t\t\t.updateTable(\"_emdash_media_usage_work\")\n\t\t\t.set({\n\t\t\t\tcollection_slug: collectionSlug,\n\t\t\t\tchange_epoch: changeEpoch,\n\t\t\t\twork_version: sql<number>`work_version + 1`,\n\t\t\t\tstate: \"pending\",\n\t\t\t\tattempt_count: 0,\n\t\t\t\tnext_attempt_at: this.timestampOffset(0),\n\t\t\t\tlease_token: null,\n\t\t\t\tlease_expires_at: null,\n\t\t\t\tlast_attempted_at: null,\n\t\t\t\tlast_error_code: null,\n\t\t\t\tupdated_at: this.timestampOffset(0),\n\t\t\t})\n\t\t\t.where(\"collection_id\", \"=\", observed.collection_id)\n\t\t\t.where(\"content_id\", \"=\", observed.content_id)\n\t\t\t.where(\"work_version\", \"=\", observed.work_version)\n\t\t\t.where(\"state\", \"=\", observed.state)\n\t\t\t.where((eb) =>\n\t\t\t\teb.exists(\n\t\t\t\t\teb\n\t\t\t\t\t\t.selectFrom(\"_emdash_collections as collection\")\n\t\t\t\t\t\t.innerJoin(\"_emdash_media_usage_index_status as status\", (join) =>\n\t\t\t\t\t\t\tjoin\n\t\t\t\t\t\t\t\t.onRef(\"status.collection_id\", \"=\", \"collection.id\")\n\t\t\t\t\t\t\t\t.onRef(\"status.scope_key\", \"=\", \"collection.slug\"),\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.select(\"collection.id\")\n\t\t\t\t\t\t.where(\"collection.id\", \"=\", observed.collection_id)\n\t\t\t\t\t\t.where(\"collection.slug\", \"=\", collectionSlug)\n\t\t\t\t\t\t.where(\"status.adapter_id\", \"=\", \"content-media\")\n\t\t\t\t\t\t.where(\"status.scope_type\", \"=\", \"collection\")\n\t\t\t\t\t\t.where(\"status.capture_state\", \"=\", \"active\")\n\t\t\t\t\t\t.where(\"status.change_epoch\", \"=\", changeEpoch),\n\t\t\t\t),\n\t\t\t);\n\t\tif (observed.state === \"leased\") {\n\t\t\tquery = query\n\t\t\t\t.where(\"lease_expires_at\", \"is not\", null)\n\t\t\t\t.where(this.timestampIsDue(\"lease_expires_at\"));\n\t\t}\n\t\treturn (await query.returningAll().executeTakeFirst()) ?? null;\n\t}\n\n\tprivate async createOperatorWork(input: {\n\t\tcollectionId: string;\n\t\tcollectionSlug: string;\n\t\tcontentId: string;\n\t\tchangeEpoch: number | string;\n\t}): Promise<Selectable<MediaUsageWorkTable> | null> {\n\t\tconst now = this.timestampOffset(0);\n\t\treturn (\n\t\t\t(await this.db\n\t\t\t\t.insertInto(\"_emdash_media_usage_work\")\n\t\t\t\t.columns([\n\t\t\t\t\t\"collection_id\",\n\t\t\t\t\t\"collection_slug\",\n\t\t\t\t\t\"content_id\",\n\t\t\t\t\t\"change_epoch\",\n\t\t\t\t\t\"work_version\",\n\t\t\t\t\t\"state\",\n\t\t\t\t\t\"attempt_count\",\n\t\t\t\t\t\"next_attempt_at\",\n\t\t\t\t\t\"lease_token\",\n\t\t\t\t\t\"lease_expires_at\",\n\t\t\t\t\t\"last_attempted_at\",\n\t\t\t\t\t\"last_error_code\",\n\t\t\t\t\t\"created_at\",\n\t\t\t\t\t\"updated_at\",\n\t\t\t\t])\n\t\t\t\t.expression((insert) =>\n\t\t\t\t\tinsert\n\t\t\t\t\t\t.selectFrom(\"_emdash_media_usage_index_status as status\")\n\t\t\t\t\t\t.innerJoin(\"_emdash_collections as collection\", (join) =>\n\t\t\t\t\t\t\tjoin\n\t\t\t\t\t\t\t\t.onRef(\"collection.id\", \"=\", \"status.collection_id\")\n\t\t\t\t\t\t\t\t.onRef(\"collection.slug\", \"=\", \"status.scope_key\"),\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.select((select) => [\n\t\t\t\t\t\t\tselect.val(input.collectionId).as(\"collection_id\"),\n\t\t\t\t\t\t\t\"collection.slug as collection_slug\",\n\t\t\t\t\t\t\tselect.val(input.contentId).as(\"content_id\"),\n\t\t\t\t\t\t\t\"status.change_epoch as change_epoch\",\n\t\t\t\t\t\t\tselect.val(1).as(\"work_version\"),\n\t\t\t\t\t\t\tselect.val(\"pending\").as(\"state\"),\n\t\t\t\t\t\t\tselect.val(0).as(\"attempt_count\"),\n\t\t\t\t\t\t\tnow.as(\"next_attempt_at\"),\n\t\t\t\t\t\t\tsql<null>`NULL`.as(\"lease_token\"),\n\t\t\t\t\t\t\tsql<null>`NULL`.as(\"lease_expires_at\"),\n\t\t\t\t\t\t\tsql<null>`NULL`.as(\"last_attempted_at\"),\n\t\t\t\t\t\t\tsql<null>`NULL`.as(\"last_error_code\"),\n\t\t\t\t\t\t\tnow.as(\"created_at\"),\n\t\t\t\t\t\t\tnow.as(\"updated_at\"),\n\t\t\t\t\t\t])\n\t\t\t\t\t\t.where(\"status.adapter_id\", \"=\", \"content-media\")\n\t\t\t\t\t\t.where(\"status.scope_type\", \"=\", \"collection\")\n\t\t\t\t\t\t.where(\"status.scope_key\", \"=\", input.collectionSlug)\n\t\t\t\t\t\t.where(\"status.collection_id\", \"=\", input.collectionId)\n\t\t\t\t\t\t.where(\"status.capture_state\", \"=\", \"active\")\n\t\t\t\t\t\t.where(\"status.change_epoch\", \"=\", input.changeEpoch),\n\t\t\t\t)\n\t\t\t\t.onConflict((conflict) => conflict.columns([\"collection_id\", \"content_id\"]).doNothing())\n\t\t\t\t.returningAll()\n\t\t\t\t.executeTakeFirst()) ?? null\n\t\t);\n\t}\n\n\tprivate async operatorRetryLost(input: {\n\t\tcollectionId: string;\n\t\tcontentId: string;\n\t}): Promise<MediaUsageOperatorRetryResult> {\n\t\tif (!(await this.findActiveOperatorCollection(input.collectionId))) {\n\t\t\treturn { outcome: \"collection_not_found\" };\n\t\t}\n\t\tconst current = await this.findWorkByIdentity(input.collectionId, input.contentId);\n\t\tif (current?.state === \"pending\") {\n\t\t\treturn { outcome: \"pending\", changed: false, work: rowToOperatorWork(current) };\n\t\t}\n\t\tconst liveLease = await this.findLiveLeaseExpiry(input.collectionId, input.contentId);\n\t\tif (liveLease) return { outcome: \"lease_active\", leaseExpiresAt: liveLease };\n\t\treturn { outcome: \"conflict\" };\n\t}\n\n\tprivate async findLiveLeaseExpiry(\n\t\tcollectionId: string,\n\t\tcontentId: string,\n\t): Promise<string | null> {\n\t\tconst row = await this.db\n\t\t\t.selectFrom(\"_emdash_media_usage_work\")\n\t\t\t.select(\"lease_expires_at\")\n\t\t\t.where(\"collection_id\", \"=\", collectionId)\n\t\t\t.where(\"content_id\", \"=\", contentId)\n\t\t\t.where(\"state\", \"=\", \"leased\")\n\t\t\t.where(\"lease_expires_at\", \"is not\", null)\n\t\t\t.where(this.leaseIsLive())\n\t\t\t.executeTakeFirst();\n\t\treturn row?.lease_expires_at ?? null;\n\t}\n\n\tasync claimDueWorkBatch(input: {\n\t\tlimit: number;\n\t\tleaseDurationSeconds: number;\n\t}): Promise<MediaUsageWorkRecord[]> {\n\t\tif (\n\t\t\t!Number.isSafeInteger(input.limit) ||\n\t\t\tinput.limit < 1 ||\n\t\t\tinput.limit > MAX_WORK_SELECTION_LIMIT\n\t\t) {\n\t\t\tthrow new Error(\n\t\t\t\t`Media usage due-work limit must be a whole number from 1 to ${MAX_WORK_SELECTION_LIMIT}`,\n\t\t\t);\n\t\t}\n\t\tconst leaseDurationSeconds = durationSeconds(\n\t\t\tinput.leaseDurationSeconds,\n\t\t\t\"lease duration\",\n\t\t\tfalse,\n\t\t);\n\t\tconst leaseToken = ulid();\n\t\tconst now = this.timestampOffset(0);\n\t\tlet candidates = this.db\n\t\t\t.selectFrom(\"_emdash_media_usage_work as due\")\n\t\t\t.select([\"due.collection_id\", \"due.content_id\", \"due.work_version\"])\n\t\t\t.where((eb) =>\n\t\t\t\teb.or([\n\t\t\t\t\teb.and([\n\t\t\t\t\t\teb(\"due.state\", \"in\", [\"pending\", \"retry\"]),\n\t\t\t\t\t\tthis.timestampIsDue(\"due.next_attempt_at\"),\n\t\t\t\t\t]),\n\t\t\t\t\teb.and([\n\t\t\t\t\t\teb(\"due.state\", \"=\", \"leased\"),\n\t\t\t\t\t\teb(\"due.lease_expires_at\", \"is not\", null),\n\t\t\t\t\t\tthis.timestampIsDue(\"due.lease_expires_at\"),\n\t\t\t\t\t]),\n\t\t\t\t]),\n\t\t\t)\n\t\t\t.orderBy(\n\t\t\t\tsql<string>`CASE\n\t\t\t\t\tWHEN due.state = 'leased' THEN due.lease_expires_at\n\t\t\t\t\tELSE due.next_attempt_at\n\t\t\t\tEND`,\n\t\t\t\t\"asc\",\n\t\t\t)\n\t\t\t.orderBy(\"due.updated_at\", \"asc\")\n\t\t\t.orderBy(\"due.collection_id\", \"asc\")\n\t\t\t.orderBy(\"due.content_id\", \"asc\")\n\t\t\t.limit(input.limit);\n\t\tif (isPostgres(this.db)) candidates = candidates.forUpdate().skipLocked();\n\t\tconst rows = await this.db\n\t\t\t.with(\"due_media_usage_work\", () => candidates)\n\t\t\t.updateTable(\"_emdash_media_usage_work\")\n\t\t\t.set({\n\t\t\t\tstate: \"leased\",\n\t\t\t\tlease_token: leaseToken,\n\t\t\t\tlease_expires_at: this.timestampOffset(leaseDurationSeconds),\n\t\t\t\tlast_attempted_at: now,\n\t\t\t\tupdated_at: now,\n\t\t\t})\n\t\t\t.where((eb) =>\n\t\t\t\teb.and([\n\t\t\t\t\teb.exists(\n\t\t\t\t\t\teb\n\t\t\t\t\t\t\t.selectFrom(\"due_media_usage_work as due\")\n\t\t\t\t\t\t\t.select(\"due.content_id\")\n\t\t\t\t\t\t\t.whereRef(\"due.collection_id\", \"=\", \"_emdash_media_usage_work.collection_id\")\n\t\t\t\t\t\t\t.whereRef(\"due.content_id\", \"=\", \"_emdash_media_usage_work.content_id\")\n\t\t\t\t\t\t\t.whereRef(\"due.work_version\", \"=\", \"_emdash_media_usage_work.work_version\"),\n\t\t\t\t\t),\n\t\t\t\t\teb.or([\n\t\t\t\t\t\teb.and([\n\t\t\t\t\t\t\teb(\"state\", \"in\", [\"pending\", \"retry\"]),\n\t\t\t\t\t\t\tthis.timestampIsDue(\"next_attempt_at\"),\n\t\t\t\t\t\t]),\n\t\t\t\t\t\teb.and([\n\t\t\t\t\t\t\teb(\"state\", \"=\", \"leased\"),\n\t\t\t\t\t\t\teb(\"lease_expires_at\", \"is not\", null),\n\t\t\t\t\t\t\tthis.timestampIsDue(\"lease_expires_at\"),\n\t\t\t\t\t\t]),\n\t\t\t\t\t]),\n\t\t\t\t]),\n\t\t\t)\n\t\t\t.returningAll()\n\t\t\t.execute();\n\n\t\treturn rows.map(rowToWork);\n\t}\n\n\tasync hasNonterminalWork(): Promise<boolean> {\n\t\tconst row = await this.db\n\t\t\t.selectFrom(\"_emdash_media_usage_work\")\n\t\t\t.select(\"content_id\")\n\t\t\t.where(\"state\", \"in\", [\"pending\", \"retry\", \"leased\"])\n\t\t\t.limit(1)\n\t\t\t.executeTakeFirst();\n\t\treturn row !== undefined;\n\t}\n\n\tasync findWorkForContent(\n\t\tcollectionSlug: string,\n\t\tcontentId: string,\n\t): Promise<MediaUsageWorkRecord | null> {\n\t\tif (!collectionSlug || !contentId) {\n\t\t\tthrow new Error(\"Media usage work lookup requires collection and content identity\");\n\t\t}\n\t\tconst row = await this.db\n\t\t\t.selectFrom(\"_emdash_media_usage_work\")\n\t\t\t.innerJoin(\"_emdash_collections as current_collection\", (join) =>\n\t\t\t\tjoin\n\t\t\t\t\t.onRef(\"current_collection.id\", \"=\", \"_emdash_media_usage_work.collection_id\")\n\t\t\t\t\t.onRef(\"current_collection.slug\", \"=\", \"_emdash_media_usage_work.collection_slug\"),\n\t\t\t)\n\t\t\t.selectAll(\"_emdash_media_usage_work\")\n\t\t\t.where(\"_emdash_media_usage_work.collection_slug\", \"=\", collectionSlug)\n\t\t\t.where(\"_emdash_media_usage_work.content_id\", \"=\", contentId)\n\t\t\t.executeTakeFirst();\n\t\treturn row ? rowToWork(row) : null;\n\t}\n\n\tasync claimWork(\n\t\tinput: MediaUsageWorkIdentity & {\n\t\t\tleaseDurationSeconds: number;\n\t\t},\n\t): Promise<MediaUsageWorkRecord | null> {\n\t\tassertIdentity(input);\n\t\tconst leaseDurationSeconds = durationSeconds(\n\t\t\tinput.leaseDurationSeconds,\n\t\t\t\"lease duration\",\n\t\t\tfalse,\n\t\t);\n\t\tconst leaseToken = ulid();\n\t\tconst now = this.timestampOffset(0);\n\t\tconst row = await this.db\n\t\t\t.updateTable(\"_emdash_media_usage_work\")\n\t\t\t.set({\n\t\t\t\tstate: \"leased\",\n\t\t\t\tlease_token: leaseToken,\n\t\t\t\tlease_expires_at: this.timestampOffset(leaseDurationSeconds),\n\t\t\t\tlast_attempted_at: now,\n\t\t\t\tupdated_at: now,\n\t\t\t})\n\t\t\t.where(\"collection_id\", \"=\", input.collectionId)\n\t\t\t.where(\"content_id\", \"=\", input.contentId)\n\t\t\t.where(\"work_version\", \"=\", input.workVersion)\n\t\t\t.where((eb) =>\n\t\t\t\teb.or([\n\t\t\t\t\teb.and([eb(\"state\", \"in\", [\"pending\", \"retry\"]), this.timestampIsDue(\"next_attempt_at\")]),\n\t\t\t\t\teb.and([\n\t\t\t\t\t\teb(\"state\", \"=\", \"leased\"),\n\t\t\t\t\t\teb(\"lease_expires_at\", \"is not\", null),\n\t\t\t\t\t\tthis.timestampIsDue(\"lease_expires_at\"),\n\t\t\t\t\t]),\n\t\t\t\t]),\n\t\t\t)\n\t\t\t.returningAll()\n\t\t\t.executeTakeFirst();\n\n\t\treturn row ? rowToWork(row) : null;\n\t}\n\n\tasync completeWorkBatch(inputs: readonly MediaUsageWorkLease[]): Promise<Set<string>> {\n\t\tconst unique = [\n\t\t\t...new Map(\n\t\t\t\tinputs.map((input) => {\n\t\t\t\t\tassertLease(input);\n\t\t\t\t\treturn [workIdentityKey(input), input] as const;\n\t\t\t\t}),\n\t\t\t).values(),\n\t\t];\n\t\tconst completed = new Set<string>();\n\t\tif (unique.length === 0) return completed;\n\t\tconst payload = JSON.stringify(\n\t\t\tunique.map((input) => ({\n\t\t\t\tcollection_id: input.collectionId,\n\t\t\t\tcontent_id: input.contentId,\n\t\t\t\twork_version: String(input.workVersion),\n\t\t\t\tlease_token: input.leaseToken,\n\t\t\t})),\n\t\t);\n\t\tconst claimed = this.claimedWorkBatchInput(payload);\n\t\tconst result = await sql<{\n\t\t\tcollection_id: string;\n\t\t\tcontent_id: string;\n\t\t\twork_version: MediaUsageWorkVersion;\n\t\t}>`\n\t\t\tWITH claimed AS (${claimed})\n\t\t\tDELETE FROM _emdash_media_usage_work AS work\n\t\t\tWHERE work.state = 'leased'\n\t\t\t\tAND ${this.qualifiedLeaseIsLive(\"work.lease_expires_at\")}\n\t\t\t\tAND EXISTS (\n\t\t\t\t\tSELECT 1\n\t\t\t\t\tFROM claimed\n\t\t\t\t\tWHERE claimed.collection_id = work.collection_id\n\t\t\t\t\t\tAND claimed.content_id = work.content_id\n\t\t\t\t\t\tAND claimed.work_version = work.work_version\n\t\t\t\t\t\tAND claimed.lease_token = work.lease_token\n\t\t\t\t)\n\t\t\tRETURNING collection_id, content_id, work_version\n\t\t`.execute(this.db);\n\t\tfor (const row of result.rows) {\n\t\t\tcompleted.add(\n\t\t\t\tworkIdentityKey({\n\t\t\t\t\tcollectionId: row.collection_id,\n\t\t\t\t\tcontentId: row.content_id,\n\t\t\t\t\tworkVersion: row.work_version,\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\t\treturn completed;\n\t}\n\n\tasync lockClaimedWorkBatch(inputs: readonly MediaUsageWorkLease[]): Promise<Set<string>> {\n\t\tconst unique = [\n\t\t\t...new Map(\n\t\t\t\tinputs.map((input) => {\n\t\t\t\t\tassertLease(input);\n\t\t\t\t\treturn [workIdentityKey(input), input] as const;\n\t\t\t\t}),\n\t\t\t).values(),\n\t\t].toSorted((left, right) => workIdentityKey(left).localeCompare(workIdentityKey(right)));\n\t\tif (!isPostgres(this.db)) return new Set(unique.map(workIdentityKey));\n\t\tif (unique.length === 0) return new Set();\n\t\tconst payload = JSON.stringify(\n\t\t\tunique.map((input) => ({\n\t\t\t\tcollection_id: input.collectionId,\n\t\t\t\tcontent_id: input.contentId,\n\t\t\t\twork_version: String(input.workVersion),\n\t\t\t\tlease_token: input.leaseToken,\n\t\t\t})),\n\t\t);\n\t\tconst claimed = this.claimedWorkBatchInput(payload);\n\t\tconst result = await sql<{\n\t\t\tcollection_id: string;\n\t\t\tcontent_id: string;\n\t\t\twork_version: MediaUsageWorkVersion;\n\t\t}>`\n\t\t\tWITH claimed AS (${claimed})\n\t\t\tSELECT work.collection_id, work.content_id, work.work_version\n\t\t\tFROM _emdash_media_usage_work AS work\n\t\t\tINNER JOIN claimed\n\t\t\t\tON claimed.collection_id = work.collection_id\n\t\t\t\tAND claimed.content_id = work.content_id\n\t\t\t\tAND claimed.work_version = work.work_version\n\t\t\t\tAND claimed.lease_token = work.lease_token\n\t\t\tWHERE work.state = 'leased'\n\t\t\t\tAND ${this.qualifiedLeaseIsLive(\"work.lease_expires_at\")}\n\t\t\tORDER BY work.collection_id, work.content_id\n\t\t\tFOR UPDATE\n\t\t`.execute(this.db);\n\t\treturn new Set(\n\t\t\tresult.rows.map((row) =>\n\t\t\t\tworkIdentityKey({\n\t\t\t\t\tcollectionId: row.collection_id,\n\t\t\t\t\tcontentId: row.content_id,\n\t\t\t\t\tworkVersion: row.work_version,\n\t\t\t\t}),\n\t\t\t),\n\t\t);\n\t}\n\n\tasync retryClaimedWorkBatch(input: {\n\t\twork: readonly MediaUsageWorkLease[];\n\t\terrorCode: string;\n\t\tretryDelaySeconds: number;\n\t\tmaxAttempts: number;\n\t}): Promise<Map<string, \"retry\" | \"failed\">> {\n\t\tassertErrorCode(input.errorCode);\n\t\tconst retryDelaySeconds = durationSeconds(input.retryDelaySeconds, \"retry delay\", true);\n\t\tif (!Number.isSafeInteger(input.maxAttempts) || input.maxAttempts < 1) {\n\t\t\tthrow new Error(\"Media usage work max attempts must be a positive whole number\");\n\t\t}\n\t\tconst unique = [\n\t\t\t...new Map(\n\t\t\t\tinput.work.map((work) => {\n\t\t\t\t\tassertLease(work);\n\t\t\t\t\treturn [workIdentityKey(work), work] as const;\n\t\t\t\t}),\n\t\t\t).values(),\n\t\t];\n\t\tconst transitioned = new Map<string, \"retry\" | \"failed\">();\n\t\tif (unique.length === 0) return transitioned;\n\t\tconst payload = JSON.stringify(\n\t\t\tunique.map((work) => ({\n\t\t\t\tcollection_id: work.collectionId,\n\t\t\t\tcontent_id: work.contentId,\n\t\t\t\twork_version: String(work.workVersion),\n\t\t\t\tlease_token: work.leaseToken,\n\t\t\t})),\n\t\t);\n\t\tconst claimed = this.claimedWorkBatchInput(payload);\n\t\tconst result = await sql<{\n\t\t\tcollection_id: string;\n\t\t\tcontent_id: string;\n\t\t\twork_version: MediaUsageWorkVersion;\n\t\t\tstate: \"retry\" | \"failed\";\n\t\t}>`\n\t\t\tWITH claimed AS (${claimed})\n\t\t\tUPDATE _emdash_media_usage_work AS work\n\t\t\tSET state = CASE WHEN work.attempt_count + 1 >= ${input.maxAttempts} THEN 'failed' ELSE 'retry' END,\n\t\t\t\tattempt_count = work.attempt_count + 1,\n\t\t\t\tnext_attempt_at = ${this.timestampOffset(retryDelaySeconds)},\n\t\t\t\tlease_token = NULL,\n\t\t\t\tlease_expires_at = NULL,\n\t\t\t\tlast_error_code = ${input.errorCode},\n\t\t\t\tupdated_at = ${this.timestampOffset(0)}\n\t\t\tWHERE work.state = 'leased'\n\t\t\t\tAND ${this.qualifiedLeaseIsLive(\"work.lease_expires_at\")}\n\t\t\t\tAND EXISTS (\n\t\t\t\t\tSELECT 1\n\t\t\t\t\tFROM claimed\n\t\t\t\t\tWHERE claimed.collection_id = work.collection_id\n\t\t\t\t\t\tAND claimed.content_id = work.content_id\n\t\t\t\t\t\tAND claimed.work_version = work.work_version\n\t\t\t\t\t\tAND claimed.lease_token = work.lease_token\n\t\t\t\t)\n\t\t\tRETURNING collection_id, content_id, work_version, state\n\t\t`.execute(this.db);\n\t\tfor (const row of result.rows) {\n\t\t\ttransitioned.set(\n\t\t\t\tworkIdentityKey({\n\t\t\t\t\tcollectionId: row.collection_id,\n\t\t\t\t\tcontentId: row.content_id,\n\t\t\t\t\tworkVersion: row.work_version,\n\t\t\t\t}),\n\t\t\t\trow.state,\n\t\t\t);\n\t\t}\n\t\treturn transitioned;\n\t}\n\n\tasync releaseClaimedWorkBatch(inputs: readonly MediaUsageWorkLease[]): Promise<Set<string>> {\n\t\tconst unique = [\n\t\t\t...new Map(\n\t\t\t\tinputs.map((input) => {\n\t\t\t\t\tassertLease(input);\n\t\t\t\t\treturn [workIdentityKey(input), input] as const;\n\t\t\t\t}),\n\t\t\t).values(),\n\t\t];\n\t\tconst released = new Set<string>();\n\t\tif (unique.length === 0) return released;\n\t\tconst payload = JSON.stringify(\n\t\t\tunique.map((input) => ({\n\t\t\t\tcollection_id: input.collectionId,\n\t\t\t\tcontent_id: input.contentId,\n\t\t\t\twork_version: String(input.workVersion),\n\t\t\t\tlease_token: input.leaseToken,\n\t\t\t})),\n\t\t);\n\t\tconst claimed = this.claimedWorkBatchInput(payload);\n\t\tconst result = await sql<{\n\t\t\tcollection_id: string;\n\t\t\tcontent_id: string;\n\t\t\twork_version: MediaUsageWorkVersion;\n\t\t}>`\n\t\t\tWITH claimed AS (${claimed})\n\t\t\tUPDATE _emdash_media_usage_work AS work\n\t\t\tSET state = 'pending',\n\t\t\t\tnext_attempt_at = ${this.timestampOffset(0)},\n\t\t\t\tlease_token = NULL,\n\t\t\t\tlease_expires_at = NULL,\n\t\t\t\tupdated_at = ${this.timestampOffset(0)}\n\t\t\tWHERE work.state = 'leased'\n\t\t\t\tAND ${this.qualifiedLeaseIsLive(\"work.lease_expires_at\")}\n\t\t\t\tAND EXISTS (\n\t\t\t\t\tSELECT 1\n\t\t\t\t\tFROM claimed\n\t\t\t\t\tWHERE claimed.collection_id = work.collection_id\n\t\t\t\t\t\tAND claimed.content_id = work.content_id\n\t\t\t\t\t\tAND claimed.work_version = work.work_version\n\t\t\t\t\t\tAND claimed.lease_token = work.lease_token\n\t\t\t\t)\n\t\t\tRETURNING collection_id, content_id, work_version\n\t\t`.execute(this.db);\n\t\tfor (const row of result.rows) {\n\t\t\treleased.add(\n\t\t\t\tworkIdentityKey({\n\t\t\t\t\tcollectionId: row.collection_id,\n\t\t\t\t\tcontentId: row.content_id,\n\t\t\t\t\tworkVersion: row.work_version,\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\t\treturn released;\n\t}\n\n\tasync deleteWorkThroughEpoch(\n\t\tcollectionId: string,\n\t\tmaxChangeEpoch: number | string,\n\t): Promise<number> {\n\t\tif (!collectionId) throw new Error(\"Media usage work cleanup requires a collection ID\");\n\t\tassertNonNegativeDecimal(maxChangeEpoch, \"change epoch\");\n\t\tconst result = await this.db\n\t\t\t.deleteFrom(\"_emdash_media_usage_work\")\n\t\t\t.where(\"collection_id\", \"=\", collectionId)\n\t\t\t.where(\"change_epoch\", \"<=\", maxChangeEpoch)\n\t\t\t.executeTakeFirst();\n\t\treturn Number(result.numDeletedRows ?? 0);\n\t}\n\n\tasync deleteObsoleteReconciliationWork(input: {\n\t\tcollectionId: string;\n\t\tcollectionSlug: string;\n\t\trunToken: string;\n\t\tleaseToken: string;\n\t\ttargetEpoch: number | string;\n\t}): Promise<number> {\n\t\tassertNonNegativeDecimal(input.targetEpoch, \"target epoch\");\n\t\tconst result = await this.db\n\t\t\t.deleteFrom(\"_emdash_media_usage_work as work\")\n\t\t\t.where(\"work.collection_id\", \"=\", input.collectionId)\n\t\t\t.where(\"work.change_epoch\", \"<\", input.targetEpoch)\n\t\t\t.where((eb) =>\n\t\t\t\teb.exists(\n\t\t\t\t\teb\n\t\t\t\t\t\t.selectFrom(\"_emdash_media_usage_reconciliations as reconciliation\")\n\t\t\t\t\t\t.innerJoin(\"_emdash_media_usage_index_status as status\", (join) =>\n\t\t\t\t\t\t\tjoin\n\t\t\t\t\t\t\t\t.onRef(\"status.collection_id\", \"=\", \"reconciliation.collection_id\")\n\t\t\t\t\t\t\t\t.onRef(\"status.scope_key\", \"=\", \"reconciliation.collection_slug\"),\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.innerJoin(\"_emdash_collections as collection\", (join) =>\n\t\t\t\t\t\t\tjoin\n\t\t\t\t\t\t\t\t.onRef(\"collection.id\", \"=\", \"reconciliation.collection_id\")\n\t\t\t\t\t\t\t\t.onRef(\"collection.slug\", \"=\", \"reconciliation.collection_slug\"),\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.select(\"reconciliation.collection_id\")\n\t\t\t\t\t\t.where(\"reconciliation.collection_id\", \"=\", input.collectionId)\n\t\t\t\t\t\t.where(\"reconciliation.collection_slug\", \"=\", input.collectionSlug)\n\t\t\t\t\t\t.where(\"reconciliation.run_token\", \"=\", input.runToken)\n\t\t\t\t\t\t.where(\"reconciliation.target_epoch\", \"=\", input.targetEpoch)\n\t\t\t\t\t\t.where(\"reconciliation.state\", \"=\", \"leased\")\n\t\t\t\t\t\t.where(\"reconciliation.lease_token\", \"=\", input.leaseToken)\n\t\t\t\t\t\t.where(this.qualifiedLeaseIsLive(\"reconciliation.lease_expires_at\"))\n\t\t\t\t\t\t.where(\"status.capture_state\", \"=\", \"active\")\n\t\t\t\t\t\t.where(\"status.reconciliation_required\", \"=\", 1)\n\t\t\t\t\t\t.where(\"status.status\", \"=\", \"running\")\n\t\t\t\t\t\t.where(\"status.cursor\", \"=\", input.runToken)\n\t\t\t\t\t\t.where(\"status.change_epoch\", \"=\", input.targetEpoch),\n\t\t\t\t),\n\t\t\t)\n\t\t\t.executeTakeFirst();\n\t\treturn Number(result.numDeletedRows ?? 0);\n\t}\n\n\tprivate leaseIsLive(): RawBuilder<boolean> {\n\t\treturn isPostgres(this.db)\n\t\t\t? sql<boolean>`lease_expires_at::timestamptz > clock_timestamp()`\n\t\t\t: sql<boolean>`lease_expires_at > strftime('%Y-%m-%dT%H:%M:%fZ', 'now')`;\n\t}\n\n\tprivate qualifiedLeaseIsLive(column: string): RawBuilder<boolean> {\n\t\tconst expiry = sql.ref(column);\n\t\treturn isPostgres(this.db)\n\t\t\t? sql<boolean>`${expiry} > to_char(statement_timestamp() AT TIME ZONE 'UTC', 'YYYY-MM-DD\"T\"HH24:MI:SS.MS\"Z\"')`\n\t\t\t: sql<boolean>`${expiry} > strftime('%Y-%m-%dT%H:%M:%fZ', 'now')`;\n\t}\n\n\tprivate timestampIsDue(\n\t\tcolumn:\n\t\t\t| \"next_attempt_at\"\n\t\t\t| \"lease_expires_at\"\n\t\t\t| \"work.lease_expires_at\"\n\t\t\t| \"work.next_attempt_at\"\n\t\t\t| \"due.next_attempt_at\"\n\t\t\t| \"due.lease_expires_at\",\n\t): RawBuilder<boolean> {\n\t\treturn isPostgres(this.db)\n\t\t\t? sql<boolean>`${sql.ref(column)} <= to_char(\n\t\t\t\tstatement_timestamp() AT TIME ZONE 'UTC',\n\t\t\t\t'YYYY-MM-DD\"T\"HH24:MI:SS.MS\"Z\"'\n\t\t\t)`\n\t\t\t: sql<boolean>`${sql.ref(column)} <= strftime('%Y-%m-%dT%H:%M:%fZ', 'now')`;\n\t}\n\n\tprivate timestampOffset(offsetSeconds: number): RawBuilder<string> {\n\t\tif (isPostgres(this.db)) {\n\t\t\treturn sql<string>`to_char(\n\t\t\t\t(clock_timestamp() AT TIME ZONE 'UTC') + (${offsetSeconds} * INTERVAL '1 second'),\n\t\t\t\t'YYYY-MM-DD\"T\"HH24:MI:SS.MS\"Z\"'\n\t\t\t)`;\n\t\t}\n\t\treturn sql<string>`strftime(\n\t\t\t'%Y-%m-%dT%H:%M:%fZ',\n\t\t\t'now',\n\t\t\t${`${offsetSeconds >= 0 ? \"+\" : \"\"}${offsetSeconds} seconds`}\n\t\t)`;\n\t}\n\n\tprivate claimedWorkBatchInput(payload: string): RawBuilder<unknown> {\n\t\tif (isPostgres(this.db)) {\n\t\t\treturn sql`\n\t\t\t\tSELECT\n\t\t\t\t\tentry.value ->> 'collection_id' AS collection_id,\n\t\t\t\t\tentry.value ->> 'content_id' AS content_id,\n\t\t\t\t\tCAST(entry.value ->> 'work_version' AS bigint) AS work_version,\n\t\t\t\t\tentry.value ->> 'lease_token' AS lease_token\n\t\t\t\tFROM jsonb_array_elements(${payload}::jsonb) AS entry(value)\n\t\t\t`;\n\t\t}\n\t\treturn sql`\n\t\t\tSELECT\n\t\t\t\tjson_extract(entry.value, '$.collection_id') AS collection_id,\n\t\t\t\tjson_extract(entry.value, '$.content_id') AS content_id,\n\t\t\t\tCAST(json_extract(entry.value, '$.work_version') AS integer) AS work_version,\n\t\t\t\tjson_extract(entry.value, '$.lease_token') AS lease_token\n\t\t\tFROM json_each(${payload}) AS entry\n\t\t`;\n\t}\n}\n\nfunction workIdentityKey(input: MediaUsageWorkIdentity): string {\n\treturn `${input.collectionId}\\u0000${input.contentId}\\u0000${String(input.workVersion)}`;\n}\n\nfunction operatorLimit(value: number | undefined): number {\n\tif (value === undefined) return MEDIA_USAGE_WORK_OPERATOR_DEFAULT_LIMIT;\n\tif (!Number.isSafeInteger(value) || value < 1 || value > MEDIA_USAGE_WORK_OPERATOR_MAX_LIMIT) {\n\t\tthrow new Error(\n\t\t\t`Media usage operator limit must be a whole number from 1 to ${MEDIA_USAGE_WORK_OPERATOR_MAX_LIMIT}`,\n\t\t);\n\t}\n\treturn value;\n}\n\nfunction durationSeconds(value: number, label: string, allowZero: boolean): number {\n\tif (\n\t\t!Number.isSafeInteger(value) ||\n\t\tvalue < (allowZero ? 0 : 1) ||\n\t\tvalue > MAX_PORTABLE_DURATION_SECONDS\n\t) {\n\t\tthrow new Error(\n\t\t\t`Media usage work ${label} must be ${allowZero ? \"a non-negative\" : \"a positive\"} whole number of seconds no greater than one year`,\n\t\t);\n\t}\n\treturn value;\n}\n\nfunction assertIdentity(input: MediaUsageWorkIdentity): void {\n\tif (!input.collectionId || !input.contentId) {\n\t\tthrow new Error(\"Media usage work identity must include collection and content IDs\");\n\t}\n\tconst validVersion =\n\t\t(typeof input.workVersion === \"number\" &&\n\t\t\tNumber.isSafeInteger(input.workVersion) &&\n\t\t\tinput.workVersion > 0) ||\n\t\t(typeof input.workVersion === \"string\" && POSITIVE_DECIMAL_PATTERN.test(input.workVersion));\n\tif (!validVersion) {\n\t\tthrow new Error(\"Media usage work identity must include a work version\");\n\t}\n}\n\nfunction assertNonNegativeDecimal(value: number | string, label: string): void {\n\tconst valid =\n\t\t(typeof value === \"number\" && Number.isSafeInteger(value) && value >= 0) ||\n\t\t(typeof value === \"string\" && NON_NEGATIVE_DECIMAL_PATTERN.test(value));\n\tif (!valid) throw new Error(`Media usage work ${label} must be a non-negative whole number`);\n}\n\nfunction assertToken(value: string): void {\n\tif (!value) throw new Error(\"Media usage work lease token must not be empty\");\n}\n\nfunction assertLease(input: MediaUsageWorkLease): void {\n\tassertIdentity(input);\n\tassertToken(input.leaseToken);\n}\n\nfunction assertErrorCode(value: string): void {\n\tif (!STABLE_ERROR_CODE_PATTERN.test(value)) {\n\t\tthrow new Error(\"Media usage work error code must use a stable SCREAMING_SNAKE_CASE value\");\n\t}\n}\n\nfunction rowToWork(row: Selectable<MediaUsageWorkTable>): MediaUsageWorkRecord {\n\tif (!isMediaUsageWorkState(row.state)) {\n\t\tthrow new Error(`Invalid media usage work state: ${row.state}`);\n\t}\n\treturn {\n\t\tcollectionId: row.collection_id,\n\t\tcollectionSlug: row.collection_slug,\n\t\tcontentId: row.content_id,\n\t\tchangeEpoch: row.change_epoch,\n\t\tworkVersion: row.work_version,\n\t\tstate: row.state,\n\t\tattemptCount: row.attempt_count,\n\t\tnextAttemptAt: row.next_attempt_at,\n\t\tleaseToken: row.lease_token,\n\t\tleaseExpiresAt: row.lease_expires_at,\n\t\tlastAttemptedAt: row.last_attempted_at,\n\t\tlastErrorCode: row.last_error_code,\n\t\tcreatedAt: row.created_at,\n\t\tupdatedAt: row.updated_at,\n\t};\n}\n\nfunction rowToOperatorWork(\n\trow: Selectable<MediaUsageWorkTable> | MediaUsageWorkRecord,\n): MediaUsageOperatorWorkItem {\n\tconst work = \"collection_id\" in row ? rowToWork(row) : row;\n\treturn {\n\t\tcollectionId: work.collectionId,\n\t\tcollectionSlug: work.collectionSlug,\n\t\tcontentId: work.contentId,\n\t\tstate: work.state,\n\t\tattemptCount: work.attemptCount,\n\t\tnextAttemptAt: work.nextAttemptAt,\n\t\tleaseExpiresAt: work.leaseExpiresAt,\n\t\tlastAttemptedAt: work.lastAttemptedAt,\n\t\tlastErrorCode: work.lastErrorCode,\n\t\tupdatedAt: work.updatedAt,\n\t};\n}\n\nfunction isMediaUsageWorkState(value: string): value is MediaUsageWorkState {\n\treturn value === \"pending\" || value === \"retry\" || value === \"leased\" || value === \"failed\";\n}\n\nfunction compareOperatorWork(a: MediaUsageOperatorWorkItem, b: MediaUsageOperatorWorkItem): number {\n\tconst updated = b.updatedAt.localeCompare(a.updatedAt);\n\treturn updated !== 0 ? updated : b.contentId.localeCompare(a.contentId);\n}\n"],"mappings":"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"}