emdash 0.39.1 → 0.40.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1656) hide show
  1. package/dist/action-token-DYwe4Pk0.mjs +26 -0
  2. package/dist/action-token-DYwe4Pk0.mjs.map +1 -0
  3. package/dist/activation-LOkDM5WT.mjs +382 -0
  4. package/dist/activation-LOkDM5WT.mjs.map +1 -0
  5. package/dist/adapters-B64LbYcB.d.mts +171 -0
  6. package/dist/adapters-B64LbYcB.d.mts.map +1 -0
  7. package/dist/allowed-origins-CHB8oZNM.mjs +116 -0
  8. package/dist/allowed-origins-CHB8oZNM.mjs.map +1 -0
  9. package/dist/api/route-utils.d.mts +4 -4
  10. package/dist/api/route-utils.mjs +49 -40
  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 +11 -7
  14. package/dist/api-CuyNEHZG.mjs +4718 -0
  15. package/dist/api-CuyNEHZG.mjs.map +1 -0
  16. package/dist/api-tokens-CE1ECIg0.mjs +3 -0
  17. package/dist/api-tokens-s4i4aUp_.mjs +166 -0
  18. package/dist/api-tokens-s4i4aUp_.mjs.map +1 -0
  19. package/dist/apply-npY1TAhG.mjs +1366 -0
  20. package/dist/apply-npY1TAhG.mjs.map +1 -0
  21. package/dist/approvals-CqMfNxak.mjs +460 -0
  22. package/dist/approvals-CqMfNxak.mjs.map +1 -0
  23. package/dist/artifact-fetch-DZMOGZ3-.mjs +818 -0
  24. package/dist/artifact-fetch-DZMOGZ3-.mjs.map +1 -0
  25. package/dist/astro/index.d.mts +14 -14
  26. package/dist/astro/index.mjs +68 -18
  27. package/dist/astro/index.mjs.map +1 -1
  28. package/dist/astro/middleware/auth.d.mts +14 -12
  29. package/dist/astro/middleware/auth.d.mts.map +1 -1
  30. package/dist/astro/middleware/auth.mjs +26 -11
  31. package/dist/astro/middleware/auth.mjs.map +1 -1
  32. package/dist/astro/middleware/media-usage-write-fence.d.mts +9 -1
  33. package/dist/astro/middleware/media-usage-write-fence.d.mts.map +1 -1
  34. package/dist/astro/middleware/media-usage-write-fence.mjs +95 -13
  35. package/dist/astro/middleware/media-usage-write-fence.mjs.map +1 -1
  36. package/dist/astro/middleware/redirect.mjs +8 -8
  37. package/dist/astro/middleware/request-context.d.mts.map +1 -1
  38. package/dist/astro/middleware/request-context.mjs +145 -47
  39. package/dist/astro/middleware/request-context.mjs.map +1 -1
  40. package/dist/astro/middleware/setup.mjs +1 -1
  41. package/dist/astro/middleware.d.mts +12 -12
  42. package/dist/astro/middleware.d.mts.map +1 -1
  43. package/dist/astro/middleware.mjs +130 -123
  44. package/dist/astro/middleware.mjs.map +1 -1
  45. package/dist/astro/routes/api/admin/allowed-domains/_domain_.mjs +14 -8
  46. package/dist/astro/routes/api/admin/allowed-domains/_domain_.mjs.map +1 -1
  47. package/dist/astro/routes/api/admin/allowed-domains/index.mjs +14 -8
  48. package/dist/astro/routes/api/admin/allowed-domains/index.mjs.map +1 -1
  49. package/dist/astro/routes/api/admin/api-tokens/_id_.mjs +5 -3
  50. package/dist/astro/routes/api/admin/api-tokens/_id_.mjs.map +1 -1
  51. package/dist/astro/routes/api/admin/api-tokens/index.mjs +6 -4
  52. package/dist/astro/routes/api/admin/api-tokens/index.mjs.map +1 -1
  53. package/dist/astro/routes/api/admin/byline-fields/_slug_/usage.mjs +6 -4
  54. package/dist/astro/routes/api/admin/byline-fields/_slug_/usage.mjs.map +1 -1
  55. package/dist/astro/routes/api/admin/byline-fields/_slug_.mjs +17 -11
  56. package/dist/astro/routes/api/admin/byline-fields/_slug_.mjs.map +1 -1
  57. package/dist/astro/routes/api/admin/byline-fields/index.mjs +17 -11
  58. package/dist/astro/routes/api/admin/byline-fields/index.mjs.map +1 -1
  59. package/dist/astro/routes/api/admin/byline-fields/reorder.mjs +17 -11
  60. package/dist/astro/routes/api/admin/byline-fields/reorder.mjs.map +1 -1
  61. package/dist/astro/routes/api/admin/bylines/_id_/index.mjs +25 -19
  62. package/dist/astro/routes/api/admin/bylines/_id_/index.mjs.map +1 -1
  63. package/dist/astro/routes/api/admin/bylines/_id_/translations.mjs +25 -19
  64. package/dist/astro/routes/api/admin/bylines/_id_/translations.mjs.map +1 -1
  65. package/dist/astro/routes/api/admin/bylines/index.mjs +25 -19
  66. package/dist/astro/routes/api/admin/bylines/index.mjs.map +1 -1
  67. package/dist/astro/routes/api/admin/comments/_id_/status.mjs +19 -13
  68. package/dist/astro/routes/api/admin/comments/_id_/status.mjs.map +1 -1
  69. package/dist/astro/routes/api/admin/comments/_id_.mjs +7 -5
  70. package/dist/astro/routes/api/admin/comments/_id_.mjs.map +1 -1
  71. package/dist/astro/routes/api/admin/comments/bulk.mjs +18 -12
  72. package/dist/astro/routes/api/admin/comments/bulk.mjs.map +1 -1
  73. package/dist/astro/routes/api/admin/comments/counts.mjs +7 -5
  74. package/dist/astro/routes/api/admin/comments/counts.mjs.map +1 -1
  75. package/dist/astro/routes/api/admin/comments/index.mjs +18 -12
  76. package/dist/astro/routes/api/admin/comments/index.mjs.map +1 -1
  77. package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.mjs +6 -4
  78. package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.mjs.map +1 -1
  79. package/dist/astro/routes/api/admin/hooks/exclusive/index.d.mts.map +1 -1
  80. package/dist/astro/routes/api/admin/hooks/exclusive/index.mjs +5 -6
  81. package/dist/astro/routes/api/admin/hooks/exclusive/index.mjs.map +1 -1
  82. package/dist/astro/routes/api/admin/media-usage/activation.mjs +21 -15
  83. package/dist/astro/routes/api/admin/media-usage/activation.mjs.map +1 -1
  84. package/dist/astro/routes/api/admin/media-usage/collection-deletions/index.mjs +23 -17
  85. package/dist/astro/routes/api/admin/media-usage/collection-deletions/index.mjs.map +1 -1
  86. package/dist/astro/routes/api/admin/media-usage/collection-deletions/retry.mjs +23 -17
  87. package/dist/astro/routes/api/admin/media-usage/collection-deletions/retry.mjs.map +1 -1
  88. package/dist/astro/routes/api/admin/media-usage/progress.mjs +26 -15
  89. package/dist/astro/routes/api/admin/media-usage/progress.mjs.map +1 -1
  90. package/dist/astro/routes/api/admin/media-usage/repair.mjs +32 -19
  91. package/dist/astro/routes/api/admin/media-usage/repair.mjs.map +1 -1
  92. package/dist/astro/routes/api/admin/media-usage/work/index.mjs +23 -17
  93. package/dist/astro/routes/api/admin/media-usage/work/index.mjs.map +1 -1
  94. package/dist/astro/routes/api/admin/media-usage/work/retry.mjs +23 -17
  95. package/dist/astro/routes/api/admin/media-usage/work/retry.mjs.map +1 -1
  96. package/dist/astro/routes/api/admin/oauth-clients/_id_.mjs +5 -3
  97. package/dist/astro/routes/api/admin/oauth-clients/_id_.mjs.map +1 -1
  98. package/dist/astro/routes/api/admin/oauth-clients/index.mjs +5 -3
  99. package/dist/astro/routes/api/admin/oauth-clients/index.mjs.map +1 -1
  100. package/dist/astro/routes/api/admin/plugins/_id_/disable.d.mts.map +1 -1
  101. package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs +10 -8
  102. package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs.map +1 -1
  103. package/dist/astro/routes/api/admin/plugins/_id_/enable.d.mts.map +1 -1
  104. package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs +10 -8
  105. package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs.map +1 -1
  106. package/dist/astro/routes/api/admin/plugins/_id_/index.mjs +72 -62
  107. package/dist/astro/routes/api/admin/plugins/_id_/index.mjs.map +1 -1
  108. package/dist/astro/routes/api/admin/plugins/_id_/mcp.mjs +6 -4
  109. package/dist/astro/routes/api/admin/plugins/_id_/mcp.mjs.map +1 -1
  110. package/dist/astro/routes/api/admin/plugins/_id_/settings.mjs +71 -61
  111. package/dist/astro/routes/api/admin/plugins/_id_/settings.mjs.map +1 -1
  112. package/dist/astro/routes/api/admin/plugins/_id_/uninstall.d.mts.map +1 -1
  113. package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs +74 -64
  114. package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs.map +1 -1
  115. package/dist/astro/routes/api/admin/plugins/_id_/update.d.mts.map +1 -1
  116. package/dist/astro/routes/api/admin/plugins/_id_/update.mjs +84 -74
  117. package/dist/astro/routes/api/admin/plugins/_id_/update.mjs.map +1 -1
  118. package/dist/astro/routes/api/admin/plugins/index.mjs +72 -62
  119. package/dist/astro/routes/api/admin/plugins/index.mjs.map +1 -1
  120. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.mjs +4 -2
  121. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.mjs.map +1 -1
  122. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs +71 -61
  123. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs.map +1 -1
  124. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.d.mts.map +1 -1
  125. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs +83 -73
  126. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs.map +1 -1
  127. package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs +71 -61
  128. package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs.map +1 -1
  129. package/dist/astro/routes/api/admin/plugins/registry/_id_/uninstall.d.mts.map +1 -1
  130. package/dist/astro/routes/api/admin/plugins/registry/_id_/uninstall.mjs +74 -64
  131. package/dist/astro/routes/api/admin/plugins/registry/_id_/uninstall.mjs.map +1 -1
  132. package/dist/astro/routes/api/admin/plugins/registry/_id_/update.mjs +85 -75
  133. package/dist/astro/routes/api/admin/plugins/registry/_id_/update.mjs.map +1 -1
  134. package/dist/astro/routes/api/admin/plugins/registry/artifact.mjs +8 -6
  135. package/dist/astro/routes/api/admin/plugins/registry/artifact.mjs.map +1 -1
  136. package/dist/astro/routes/api/admin/plugins/registry/install.mjs +76 -66
  137. package/dist/astro/routes/api/admin/plugins/registry/install.mjs.map +1 -1
  138. package/dist/astro/routes/api/admin/plugins/registry/publisher-handle.d.mts +8 -0
  139. package/dist/astro/routes/api/admin/plugins/registry/publisher-handle.d.mts.map +1 -0
  140. package/dist/astro/routes/api/admin/plugins/registry/publisher-handle.mjs +221 -0
  141. package/dist/astro/routes/api/admin/plugins/registry/publisher-handle.mjs.map +1 -0
  142. package/dist/astro/routes/api/admin/plugins/registry/verify.mjs +72 -62
  143. package/dist/astro/routes/api/admin/plugins/registry/verify.mjs.map +1 -1
  144. package/dist/astro/routes/api/admin/plugins/updates.mjs +71 -61
  145. package/dist/astro/routes/api/admin/plugins/updates.mjs.map +1 -1
  146. package/dist/astro/routes/api/admin/scheduled-policy-rejections/_collection_/_id_.mjs +6 -4
  147. package/dist/astro/routes/api/admin/scheduled-policy-rejections/_collection_/_id_.mjs.map +1 -1
  148. package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs +71 -61
  149. package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs.map +1 -1
  150. package/dist/astro/routes/api/admin/themes/marketplace/_id_/thumbnail.mjs +4 -2
  151. package/dist/astro/routes/api/admin/themes/marketplace/_id_/thumbnail.mjs.map +1 -1
  152. package/dist/astro/routes/api/admin/themes/marketplace/index.mjs +71 -61
  153. package/dist/astro/routes/api/admin/themes/marketplace/index.mjs.map +1 -1
  154. package/dist/astro/routes/api/admin/transfer/_...path_.d.mts +12 -0
  155. package/dist/astro/routes/api/admin/transfer/_...path_.d.mts.map +1 -0
  156. package/dist/astro/routes/api/admin/transfer/_...path_.mjs +144 -0
  157. package/dist/astro/routes/api/admin/transfer/_...path_.mjs.map +1 -0
  158. package/dist/astro/routes/api/admin/transfer/approvals/_id_/approve.d.mts +8 -0
  159. package/dist/astro/routes/api/admin/transfer/approvals/_id_/approve.d.mts.map +1 -0
  160. package/dist/astro/routes/api/admin/transfer/approvals/_id_/approve.mjs +68 -0
  161. package/dist/astro/routes/api/admin/transfer/approvals/_id_/approve.mjs.map +1 -0
  162. package/dist/astro/routes/api/admin/transfer/approvals/_id_/deny.d.mts +8 -0
  163. package/dist/astro/routes/api/admin/transfer/approvals/_id_/deny.d.mts.map +1 -0
  164. package/dist/astro/routes/api/admin/transfer/approvals/_id_/deny.mjs +68 -0
  165. package/dist/astro/routes/api/admin/transfer/approvals/_id_/deny.mjs.map +1 -0
  166. package/dist/astro/routes/api/admin/transfer/approvals/index.d.mts +8 -0
  167. package/dist/astro/routes/api/admin/transfer/approvals/index.d.mts.map +1 -0
  168. package/dist/astro/routes/api/admin/transfer/approvals/index.mjs +67 -0
  169. package/dist/astro/routes/api/admin/transfer/approvals/index.mjs.map +1 -0
  170. package/dist/astro/routes/api/admin/transfer/capabilities.d.mts +8 -0
  171. package/dist/astro/routes/api/admin/transfer/capabilities.d.mts.map +1 -0
  172. package/dist/astro/routes/api/admin/transfer/capabilities.mjs +70 -0
  173. package/dist/astro/routes/api/admin/transfer/capabilities.mjs.map +1 -0
  174. package/dist/astro/routes/api/admin/transfer/exports/_id_/advance.d.mts +8 -0
  175. package/dist/astro/routes/api/admin/transfer/exports/_id_/advance.d.mts.map +1 -0
  176. package/dist/astro/routes/api/admin/transfer/exports/_id_/advance.mjs +67 -0
  177. package/dist/astro/routes/api/admin/transfer/exports/_id_/advance.mjs.map +1 -0
  178. package/dist/astro/routes/api/admin/transfer/exports/_id_/archive.d.mts +8 -0
  179. package/dist/astro/routes/api/admin/transfer/exports/_id_/archive.d.mts.map +1 -0
  180. package/dist/astro/routes/api/admin/transfer/exports/_id_/archive.mjs +70 -0
  181. package/dist/astro/routes/api/admin/transfer/exports/_id_/archive.mjs.map +1 -0
  182. package/dist/astro/routes/api/admin/transfer/exports/_id_/files/_...path_.d.mts +8 -0
  183. package/dist/astro/routes/api/admin/transfer/exports/_id_/files/_...path_.d.mts.map +1 -0
  184. package/dist/astro/routes/api/admin/transfer/exports/_id_/files/_...path_.mjs +69 -0
  185. package/dist/astro/routes/api/admin/transfer/exports/_id_/files/_...path_.mjs.map +1 -0
  186. package/dist/astro/routes/api/admin/transfer/exports/_id_/index.d.mts +8 -0
  187. package/dist/astro/routes/api/admin/transfer/exports/_id_/index.d.mts.map +1 -0
  188. package/dist/astro/routes/api/admin/transfer/exports/_id_/index.mjs +66 -0
  189. package/dist/astro/routes/api/admin/transfer/exports/_id_/index.mjs.map +1 -0
  190. package/dist/astro/routes/api/admin/transfer/exports/_id_/manifest.d.mts +8 -0
  191. package/dist/astro/routes/api/admin/transfer/exports/_id_/manifest.d.mts.map +1 -0
  192. package/dist/astro/routes/api/admin/transfer/exports/_id_/manifest.mjs +69 -0
  193. package/dist/astro/routes/api/admin/transfer/exports/_id_/manifest.mjs.map +1 -0
  194. package/dist/astro/routes/api/admin/transfer/exports/index.d.mts +9 -0
  195. package/dist/astro/routes/api/admin/transfer/exports/index.d.mts.map +1 -0
  196. package/dist/astro/routes/api/admin/transfer/exports/index.mjs +91 -0
  197. package/dist/astro/routes/api/admin/transfer/exports/index.mjs.map +1 -0
  198. package/dist/astro/routes/api/admin/transfer/imports/_id_/abandon.d.mts +8 -0
  199. package/dist/astro/routes/api/admin/transfer/imports/_id_/abandon.d.mts.map +1 -0
  200. package/dist/astro/routes/api/admin/transfer/imports/_id_/abandon.mjs +66 -0
  201. package/dist/astro/routes/api/admin/transfer/imports/_id_/abandon.mjs.map +1 -0
  202. package/dist/astro/routes/api/admin/transfer/imports/_id_/advance.d.mts +8 -0
  203. package/dist/astro/routes/api/admin/transfer/imports/_id_/advance.d.mts.map +1 -0
  204. package/dist/astro/routes/api/admin/transfer/imports/_id_/advance.mjs +70 -0
  205. package/dist/astro/routes/api/admin/transfer/imports/_id_/advance.mjs.map +1 -0
  206. package/dist/astro/routes/api/admin/transfer/imports/_id_/analyze.d.mts +8 -0
  207. package/dist/astro/routes/api/admin/transfer/imports/_id_/analyze.d.mts.map +1 -0
  208. package/dist/astro/routes/api/admin/transfer/imports/_id_/analyze.mjs +78 -0
  209. package/dist/astro/routes/api/admin/transfer/imports/_id_/analyze.mjs.map +1 -0
  210. package/dist/astro/routes/api/admin/transfer/imports/_id_/cancel.d.mts +8 -0
  211. package/dist/astro/routes/api/admin/transfer/imports/_id_/cancel.d.mts.map +1 -0
  212. package/dist/astro/routes/api/admin/transfer/imports/_id_/cancel.mjs +66 -0
  213. package/dist/astro/routes/api/admin/transfer/imports/_id_/cancel.mjs.map +1 -0
  214. package/dist/astro/routes/api/admin/transfer/imports/_id_/execute.d.mts +8 -0
  215. package/dist/astro/routes/api/admin/transfer/imports/_id_/execute.d.mts.map +1 -0
  216. package/dist/astro/routes/api/admin/transfer/imports/_id_/execute.mjs +77 -0
  217. package/dist/astro/routes/api/admin/transfer/imports/_id_/execute.mjs.map +1 -0
  218. package/dist/astro/routes/api/admin/transfer/imports/_id_/files/_...path_.d.mts +8 -0
  219. package/dist/astro/routes/api/admin/transfer/imports/_id_/files/_...path_.d.mts.map +1 -0
  220. package/dist/astro/routes/api/admin/transfer/imports/_id_/files/_...path_.mjs +77 -0
  221. package/dist/astro/routes/api/admin/transfer/imports/_id_/files/_...path_.mjs.map +1 -0
  222. package/dist/astro/routes/api/admin/transfer/imports/_id_/index.d.mts +8 -0
  223. package/dist/astro/routes/api/admin/transfer/imports/_id_/index.d.mts.map +1 -0
  224. package/dist/astro/routes/api/admin/transfer/imports/_id_/index.mjs +66 -0
  225. package/dist/astro/routes/api/admin/transfer/imports/_id_/index.mjs.map +1 -0
  226. package/dist/astro/routes/api/admin/transfer/imports/_id_/missing.d.mts +8 -0
  227. package/dist/astro/routes/api/admin/transfer/imports/_id_/missing.d.mts.map +1 -0
  228. package/dist/astro/routes/api/admin/transfer/imports/_id_/missing.mjs +70 -0
  229. package/dist/astro/routes/api/admin/transfer/imports/_id_/missing.mjs.map +1 -0
  230. package/dist/astro/routes/api/admin/transfer/imports/_id_/plan.d.mts +8 -0
  231. package/dist/astro/routes/api/admin/transfer/imports/_id_/plan.d.mts.map +1 -0
  232. package/dist/astro/routes/api/admin/transfer/imports/_id_/plan.mjs +67 -0
  233. package/dist/astro/routes/api/admin/transfer/imports/_id_/plan.mjs.map +1 -0
  234. package/dist/astro/routes/api/admin/transfer/imports/_id_/receipt.d.mts +8 -0
  235. package/dist/astro/routes/api/admin/transfer/imports/_id_/receipt.d.mts.map +1 -0
  236. package/dist/astro/routes/api/admin/transfer/imports/_id_/receipt.mjs +66 -0
  237. package/dist/astro/routes/api/admin/transfer/imports/_id_/receipt.mjs.map +1 -0
  238. package/dist/astro/routes/api/admin/transfer/imports/index.d.mts +9 -0
  239. package/dist/astro/routes/api/admin/transfer/imports/index.d.mts.map +1 -0
  240. package/dist/astro/routes/api/admin/transfer/imports/index.mjs +99 -0
  241. package/dist/astro/routes/api/admin/transfer/imports/index.mjs.map +1 -0
  242. package/dist/astro/routes/api/admin/users/_id_/disable.mjs +3 -1
  243. package/dist/astro/routes/api/admin/users/_id_/disable.mjs.map +1 -1
  244. package/dist/astro/routes/api/admin/users/_id_/enable.mjs +3 -1
  245. package/dist/astro/routes/api/admin/users/_id_/enable.mjs.map +1 -1
  246. package/dist/astro/routes/api/admin/users/_id_/index.mjs +14 -8
  247. package/dist/astro/routes/api/admin/users/_id_/index.mjs.map +1 -1
  248. package/dist/astro/routes/api/admin/users/_id_/send-recovery.d.mts.map +1 -1
  249. package/dist/astro/routes/api/admin/users/_id_/send-recovery.mjs +16 -6
  250. package/dist/astro/routes/api/admin/users/_id_/send-recovery.mjs.map +1 -1
  251. package/dist/astro/routes/api/admin/users/index.mjs +14 -8
  252. package/dist/astro/routes/api/admin/users/index.mjs.map +1 -1
  253. package/dist/astro/routes/api/auth/dev-bypass.mjs +5 -3
  254. package/dist/astro/routes/api/auth/dev-bypass.mjs.map +1 -1
  255. package/dist/astro/routes/api/auth/invite/accept.mjs +3 -1
  256. package/dist/astro/routes/api/auth/invite/accept.mjs.map +1 -1
  257. package/dist/astro/routes/api/auth/invite/complete.mjs +19 -13
  258. package/dist/astro/routes/api/auth/invite/complete.mjs.map +1 -1
  259. package/dist/astro/routes/api/auth/invite/index.d.mts.map +1 -1
  260. package/dist/astro/routes/api/auth/invite/index.mjs +24 -12
  261. package/dist/astro/routes/api/auth/invite/index.mjs.map +1 -1
  262. package/dist/astro/routes/api/auth/invite/register-options.mjs +18 -12
  263. package/dist/astro/routes/api/auth/invite/register-options.mjs.map +1 -1
  264. package/dist/astro/routes/api/auth/logout.mjs +4 -2
  265. package/dist/astro/routes/api/auth/logout.mjs.map +1 -1
  266. package/dist/astro/routes/api/auth/magic-link/send.d.mts.map +1 -1
  267. package/dist/astro/routes/api/auth/magic-link/send.mjs +29 -15
  268. package/dist/astro/routes/api/auth/magic-link/send.mjs.map +1 -1
  269. package/dist/astro/routes/api/auth/magic-link/verify.d.mts +2 -1
  270. package/dist/astro/routes/api/auth/magic-link/verify.d.mts.map +1 -1
  271. package/dist/astro/routes/api/auth/magic-link/verify.mjs +37 -17
  272. package/dist/astro/routes/api/auth/magic-link/verify.mjs.map +1 -1
  273. package/dist/astro/routes/api/auth/me.mjs +15 -9
  274. package/dist/astro/routes/api/auth/me.mjs.map +1 -1
  275. package/dist/astro/routes/api/auth/mode.mjs +4 -2
  276. package/dist/astro/routes/api/auth/mode.mjs.map +1 -1
  277. package/dist/astro/routes/api/auth/oauth/_provider_/callback.mjs +4 -4
  278. package/dist/astro/routes/api/auth/oauth/_provider_.mjs +2 -2
  279. package/dist/astro/routes/api/auth/passkey/_id_.mjs +14 -8
  280. package/dist/astro/routes/api/auth/passkey/_id_.mjs.map +1 -1
  281. package/dist/astro/routes/api/auth/passkey/index.mjs +3 -1
  282. package/dist/astro/routes/api/auth/passkey/index.mjs.map +1 -1
  283. package/dist/astro/routes/api/auth/passkey/options.d.mts.map +1 -1
  284. package/dist/astro/routes/api/auth/passkey/options.mjs +21 -24
  285. package/dist/astro/routes/api/auth/passkey/options.mjs.map +1 -1
  286. package/dist/astro/routes/api/auth/passkey/register/options.mjs +18 -12
  287. package/dist/astro/routes/api/auth/passkey/register/options.mjs.map +1 -1
  288. package/dist/astro/routes/api/auth/passkey/register/verify.mjs +19 -13
  289. package/dist/astro/routes/api/auth/passkey/register/verify.mjs.map +1 -1
  290. package/dist/astro/routes/api/auth/passkey/verify.mjs +19 -13
  291. package/dist/astro/routes/api/auth/passkey/verify.mjs.map +1 -1
  292. package/dist/astro/routes/api/auth/signup/complete.mjs +19 -13
  293. package/dist/astro/routes/api/auth/signup/complete.mjs.map +1 -1
  294. package/dist/astro/routes/api/auth/signup/request.mjs +18 -12
  295. package/dist/astro/routes/api/auth/signup/request.mjs.map +1 -1
  296. package/dist/astro/routes/api/auth/signup/verify.mjs +3 -1
  297. package/dist/astro/routes/api/auth/signup/verify.mjs.map +1 -1
  298. package/dist/astro/routes/api/comments/_collection_/_contentId_/index.mjs +14 -11
  299. package/dist/astro/routes/api/comments/_collection_/_contentId_/index.mjs.map +1 -1
  300. package/dist/astro/routes/api/comments/_collection_/_contentId_/reactions.mjs +21 -15
  301. package/dist/astro/routes/api/comments/_collection_/_contentId_/reactions.mjs.map +1 -1
  302. package/dist/astro/routes/api/content/_collection_/_id_/compare.mjs +4 -2
  303. package/dist/astro/routes/api/content/_collection_/_id_/compare.mjs.map +1 -1
  304. package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs +18 -13
  305. package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs.map +1 -1
  306. package/dist/astro/routes/api/content/_collection_/_id_/duplicate.mjs +4 -3
  307. package/dist/astro/routes/api/content/_collection_/_id_/duplicate.mjs.map +1 -1
  308. package/dist/astro/routes/api/content/_collection_/_id_/lock.mjs +18 -13
  309. package/dist/astro/routes/api/content/_collection_/_id_/lock.mjs.map +1 -1
  310. package/dist/astro/routes/api/content/_collection_/_id_/permanent.mjs +4 -2
  311. package/dist/astro/routes/api/content/_collection_/_id_/permanent.mjs.map +1 -1
  312. package/dist/astro/routes/api/content/_collection_/_id_/plugin-extensions/_pluginId_/_kind_/_extensionId_.mjs +10 -8
  313. package/dist/astro/routes/api/content/_collection_/_id_/plugin-extensions/_pluginId_/_kind_/_extensionId_.mjs.map +1 -1
  314. package/dist/astro/routes/api/content/_collection_/_id_/preview-url.d.mts.map +1 -1
  315. package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs +68 -16
  316. package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs.map +1 -1
  317. package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs +18 -13
  318. package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs.map +1 -1
  319. package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/children.mjs +31 -22
  320. package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/children.mjs.map +1 -1
  321. package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/parents.mjs +31 -22
  322. package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/parents.mjs.map +1 -1
  323. package/dist/astro/routes/api/content/_collection_/_id_/restore.mjs +4 -3
  324. package/dist/astro/routes/api/content/_collection_/_id_/restore.mjs.map +1 -1
  325. package/dist/astro/routes/api/content/_collection_/_id_/revisions.mjs +4 -2
  326. package/dist/astro/routes/api/content/_collection_/_id_/revisions.mjs.map +1 -1
  327. package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs +18 -13
  328. package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs.map +1 -1
  329. package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.d.mts.map +1 -1
  330. package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs +38 -19
  331. package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs.map +1 -1
  332. package/dist/astro/routes/api/content/_collection_/_id_/translations.mjs +4 -2
  333. package/dist/astro/routes/api/content/_collection_/_id_/translations.mjs.map +1 -1
  334. package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs +18 -13
  335. package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs.map +1 -1
  336. package/dist/astro/routes/api/content/_collection_/_id_.mjs +18 -13
  337. package/dist/astro/routes/api/content/_collection_/_id_.mjs.map +1 -1
  338. package/dist/astro/routes/api/content/_collection_/authors.mjs +4 -2
  339. package/dist/astro/routes/api/content/_collection_/authors.mjs.map +1 -1
  340. package/dist/astro/routes/api/content/_collection_/index.mjs +15 -10
  341. package/dist/astro/routes/api/content/_collection_/index.mjs.map +1 -1
  342. package/dist/astro/routes/api/content/_collection_/trash.mjs +15 -9
  343. package/dist/astro/routes/api/content/_collection_/trash.mjs.map +1 -1
  344. package/dist/astro/routes/api/dashboard.mjs +11 -9
  345. package/dist/astro/routes/api/dashboard.mjs.map +1 -1
  346. package/dist/astro/routes/api/dev/emails.mjs +4 -2
  347. package/dist/astro/routes/api/dev/emails.mjs.map +1 -1
  348. package/dist/astro/routes/api/health.mjs +5 -3
  349. package/dist/astro/routes/api/health.mjs.map +1 -1
  350. package/dist/astro/routes/api/import/probe.d.mts +3 -3
  351. package/dist/astro/routes/api/import/probe.mjs +27 -21
  352. package/dist/astro/routes/api/import/probe.mjs.map +1 -1
  353. package/dist/astro/routes/api/import/wordpress/analyze.mjs +5 -3
  354. package/dist/astro/routes/api/import/wordpress/analyze.mjs.map +1 -1
  355. package/dist/astro/routes/api/import/wordpress/execute.d.mts +13 -13
  356. package/dist/astro/routes/api/import/wordpress/execute.mjs +18 -16
  357. package/dist/astro/routes/api/import/wordpress/execute.mjs.map +1 -1
  358. package/dist/astro/routes/api/import/wordpress/media.d.mts +12 -12
  359. package/dist/astro/routes/api/import/wordpress/media.mjs +19 -13
  360. package/dist/astro/routes/api/import/wordpress/media.mjs.map +1 -1
  361. package/dist/astro/routes/api/import/wordpress/prepare.mjs +18 -12
  362. package/dist/astro/routes/api/import/wordpress/prepare.mjs.map +1 -1
  363. package/dist/astro/routes/api/import/wordpress/rewrite-url-helpers.d.mts +5 -1
  364. package/dist/astro/routes/api/import/wordpress/rewrite-url-helpers.d.mts.map +1 -1
  365. package/dist/astro/routes/api/import/wordpress/rewrite-url-helpers.mjs +4 -2
  366. package/dist/astro/routes/api/import/wordpress/rewrite-url-helpers.mjs.map +1 -1
  367. package/dist/astro/routes/api/import/wordpress/rewrite-urls.d.mts +13 -13
  368. package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs +29 -15
  369. package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs.map +1 -1
  370. package/dist/astro/routes/api/import/wordpress-plugin/analyze.d.mts +1 -1
  371. package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs +27 -21
  372. package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs.map +1 -1
  373. package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts +13 -13
  374. package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs +38 -32
  375. package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs.map +1 -1
  376. package/dist/astro/routes/api/manifest.mjs +6 -4
  377. package/dist/astro/routes/api/manifest.mjs.map +1 -1
  378. package/dist/astro/routes/api/mcp.d.mts.map +1 -1
  379. package/dist/astro/routes/api/mcp.mjs +724 -94
  380. package/dist/astro/routes/api/mcp.mjs.map +1 -1
  381. package/dist/astro/routes/api/media/_id_/confirm.mjs +19 -13
  382. package/dist/astro/routes/api/media/_id_/confirm.mjs.map +1 -1
  383. package/dist/astro/routes/api/media/_id_/replace.mjs +16 -10
  384. package/dist/astro/routes/api/media/_id_/replace.mjs.map +1 -1
  385. package/dist/astro/routes/api/media/_id_/upload.mjs +8 -6
  386. package/dist/astro/routes/api/media/_id_/upload.mjs.map +1 -1
  387. package/dist/astro/routes/api/media/_id_/usage.mjs +34 -21
  388. package/dist/astro/routes/api/media/_id_/usage.mjs.map +1 -1
  389. package/dist/astro/routes/api/media/_id_.d.mts.map +1 -1
  390. package/dist/astro/routes/api/media/_id_.mjs +37 -26
  391. package/dist/astro/routes/api/media/_id_.mjs.map +1 -1
  392. package/dist/astro/routes/api/media/asset/_id_/_filename_.mjs +5 -3
  393. package/dist/astro/routes/api/media/asset/_id_/_filename_.mjs.map +1 -1
  394. package/dist/astro/routes/api/media/file/_...key_.d.mts.map +1 -1
  395. package/dist/astro/routes/api/media/file/_...key_.mjs +31 -2
  396. package/dist/astro/routes/api/media/file/_...key_.mjs.map +1 -1
  397. package/dist/astro/routes/api/media/folders/_id_.mjs +16 -10
  398. package/dist/astro/routes/api/media/folders/_id_.mjs.map +1 -1
  399. package/dist/astro/routes/api/media/folders/index.mjs +16 -10
  400. package/dist/astro/routes/api/media/folders/index.mjs.map +1 -1
  401. package/dist/astro/routes/api/media/providers/_providerId_/_itemId_.mjs +4 -2
  402. package/dist/astro/routes/api/media/providers/_providerId_/_itemId_.mjs.map +1 -1
  403. package/dist/astro/routes/api/media/providers/_providerId_/index.mjs +4 -2
  404. package/dist/astro/routes/api/media/providers/_providerId_/index.mjs.map +1 -1
  405. package/dist/astro/routes/api/media/providers/index.mjs +4 -2
  406. package/dist/astro/routes/api/media/providers/index.mjs.map +1 -1
  407. package/dist/astro/routes/api/media/upload-url.mjs +18 -12
  408. package/dist/astro/routes/api/media/upload-url.mjs.map +1 -1
  409. package/dist/astro/routes/api/media.mjs +36 -24
  410. package/dist/astro/routes/api/media.mjs.map +1 -1
  411. package/dist/astro/routes/api/menus/_name_/items/_id_.mjs +18 -12
  412. package/dist/astro/routes/api/menus/_name_/items/_id_.mjs.map +1 -1
  413. package/dist/astro/routes/api/menus/_name_/items.mjs +18 -12
  414. package/dist/astro/routes/api/menus/_name_/items.mjs.map +1 -1
  415. package/dist/astro/routes/api/menus/_name_/reorder.mjs +18 -12
  416. package/dist/astro/routes/api/menus/_name_/reorder.mjs.map +1 -1
  417. package/dist/astro/routes/api/menus/_name_/translations.mjs +18 -12
  418. package/dist/astro/routes/api/menus/_name_/translations.mjs.map +1 -1
  419. package/dist/astro/routes/api/menus/_name_.mjs +18 -12
  420. package/dist/astro/routes/api/menus/_name_.mjs.map +1 -1
  421. package/dist/astro/routes/api/menus/index.mjs +18 -12
  422. package/dist/astro/routes/api/menus/index.mjs.map +1 -1
  423. package/dist/astro/routes/api/oauth/authorize.d.mts.map +1 -1
  424. package/dist/astro/routes/api/oauth/authorize.mjs +9 -6
  425. package/dist/astro/routes/api/oauth/authorize.mjs.map +1 -1
  426. package/dist/astro/routes/api/oauth/device/authorize.mjs +7 -5
  427. package/dist/astro/routes/api/oauth/device/authorize.mjs.map +1 -1
  428. package/dist/astro/routes/api/oauth/device/code.mjs +10 -8
  429. package/dist/astro/routes/api/oauth/device/code.mjs.map +1 -1
  430. package/dist/astro/routes/api/oauth/device/token.mjs +9 -7
  431. package/dist/astro/routes/api/oauth/device/token.mjs.map +1 -1
  432. package/dist/astro/routes/api/oauth/register.mjs +4 -2
  433. package/dist/astro/routes/api/oauth/register.mjs.map +1 -1
  434. package/dist/astro/routes/api/oauth/token/refresh.mjs +7 -5
  435. package/dist/astro/routes/api/oauth/token/refresh.mjs.map +1 -1
  436. package/dist/astro/routes/api/oauth/token/revoke.mjs +7 -5
  437. package/dist/astro/routes/api/oauth/token/revoke.mjs.map +1 -1
  438. package/dist/astro/routes/api/oauth/token.mjs +7 -5
  439. package/dist/astro/routes/api/oauth/token.mjs.map +1 -1
  440. package/dist/astro/routes/api/openapi.json.mjs +497 -12
  441. package/dist/astro/routes/api/openapi.json.mjs.map +1 -1
  442. package/dist/astro/routes/api/plugins/_pluginId_/_...path_.mjs +10 -8
  443. package/dist/astro/routes/api/plugins/_pluginId_/_...path_.mjs.map +1 -1
  444. package/dist/astro/routes/api/redirects/404s/index.mjs +21 -15
  445. package/dist/astro/routes/api/redirects/404s/index.mjs.map +1 -1
  446. package/dist/astro/routes/api/redirects/404s/summary.mjs +21 -15
  447. package/dist/astro/routes/api/redirects/404s/summary.mjs.map +1 -1
  448. package/dist/astro/routes/api/redirects/_id_.mjs +21 -15
  449. package/dist/astro/routes/api/redirects/_id_.mjs.map +1 -1
  450. package/dist/astro/routes/api/redirects/index.mjs +21 -15
  451. package/dist/astro/routes/api/redirects/index.mjs.map +1 -1
  452. package/dist/astro/routes/api/relations/_id_/index.mjs +31 -22
  453. package/dist/astro/routes/api/relations/_id_/index.mjs.map +1 -1
  454. package/dist/astro/routes/api/relations/_id_/translations.mjs +21 -16
  455. package/dist/astro/routes/api/relations/_id_/translations.mjs.map +1 -1
  456. package/dist/astro/routes/api/relations/index.mjs +31 -22
  457. package/dist/astro/routes/api/relations/index.mjs.map +1 -1
  458. package/dist/astro/routes/api/revisions/_revisionId_/index.mjs +4 -2
  459. package/dist/astro/routes/api/revisions/_revisionId_/index.mjs.map +1 -1
  460. package/dist/astro/routes/api/revisions/_revisionId_/restore.mjs +4 -3
  461. package/dist/astro/routes/api/revisions/_revisionId_/restore.mjs.map +1 -1
  462. package/dist/astro/routes/api/schema/block-types/_slug_/index.d.mts +9 -0
  463. package/dist/astro/routes/api/schema/block-types/_slug_/index.d.mts.map +1 -0
  464. package/dist/astro/routes/api/schema/block-types/_slug_/index.mjs +102 -0
  465. package/dist/astro/routes/api/schema/block-types/_slug_/index.mjs.map +1 -0
  466. package/dist/astro/routes/api/schema/block-types/_slug_/versions/_version_/activate.d.mts +8 -0
  467. package/dist/astro/routes/api/schema/block-types/_slug_/versions/_version_/activate.d.mts.map +1 -0
  468. package/dist/astro/routes/api/schema/block-types/_slug_/versions/_version_/activate.mjs +96 -0
  469. package/dist/astro/routes/api/schema/block-types/_slug_/versions/_version_/activate.mjs.map +1 -0
  470. package/dist/astro/routes/api/schema/block-types/index.d.mts +9 -0
  471. package/dist/astro/routes/api/schema/block-types/index.d.mts.map +1 -0
  472. package/dist/astro/routes/api/schema/block-types/index.mjs +102 -0
  473. package/dist/astro/routes/api/schema/block-types/index.mjs.map +1 -0
  474. package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs +71 -61
  475. package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs.map +1 -1
  476. package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs +71 -61
  477. package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs.map +1 -1
  478. package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs +71 -61
  479. package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs.map +1 -1
  480. package/dist/astro/routes/api/schema/collections/_slug_/index.mjs +71 -61
  481. package/dist/astro/routes/api/schema/collections/_slug_/index.mjs.map +1 -1
  482. package/dist/astro/routes/api/schema/collections/index.mjs +71 -61
  483. package/dist/astro/routes/api/schema/collections/index.mjs.map +1 -1
  484. package/dist/astro/routes/api/schema/collections/reorder.mjs +71 -61
  485. package/dist/astro/routes/api/schema/collections/reorder.mjs.map +1 -1
  486. package/dist/astro/routes/api/schema/index.mjs +17 -14
  487. package/dist/astro/routes/api/schema/index.mjs.map +1 -1
  488. package/dist/astro/routes/api/schema/orphans/_slug_.mjs +71 -61
  489. package/dist/astro/routes/api/schema/orphans/_slug_.mjs.map +1 -1
  490. package/dist/astro/routes/api/schema/orphans/index.mjs +71 -61
  491. package/dist/astro/routes/api/schema/orphans/index.mjs.map +1 -1
  492. package/dist/astro/routes/api/search/enable.mjs +20 -14
  493. package/dist/astro/routes/api/search/enable.mjs.map +1 -1
  494. package/dist/astro/routes/api/search/index.mjs +19 -13
  495. package/dist/astro/routes/api/search/index.mjs.map +1 -1
  496. package/dist/astro/routes/api/search/rebuild.mjs +20 -14
  497. package/dist/astro/routes/api/search/rebuild.mjs.map +1 -1
  498. package/dist/astro/routes/api/search/stats.mjs +10 -8
  499. package/dist/astro/routes/api/search/stats.mjs.map +1 -1
  500. package/dist/astro/routes/api/search/suggest.mjs +19 -13
  501. package/dist/astro/routes/api/search/suggest.mjs.map +1 -1
  502. package/dist/astro/routes/api/sections/_slug_.mjs +19 -13
  503. package/dist/astro/routes/api/sections/_slug_.mjs.map +1 -1
  504. package/dist/astro/routes/api/sections/index.mjs +19 -13
  505. package/dist/astro/routes/api/sections/index.mjs.map +1 -1
  506. package/dist/astro/routes/api/settings/backups/archives/_name_.mjs +8 -7
  507. package/dist/astro/routes/api/settings/backups/archives/_name_.mjs.map +1 -1
  508. package/dist/astro/routes/api/settings/backups/archives/index.mjs +8 -6
  509. package/dist/astro/routes/api/settings/backups/archives/index.mjs.map +1 -1
  510. package/dist/astro/routes/api/settings/backups/export.mjs +8 -7
  511. package/dist/astro/routes/api/settings/backups/export.mjs.map +1 -1
  512. package/dist/astro/routes/api/settings/backups/index.mjs +9 -8
  513. package/dist/astro/routes/api/settings/backups/index.mjs.map +1 -1
  514. package/dist/astro/routes/api/settings/email.mjs +6 -4
  515. package/dist/astro/routes/api/settings/email.mjs.map +1 -1
  516. package/dist/astro/routes/api/settings.mjs +25 -19
  517. package/dist/astro/routes/api/settings.mjs.map +1 -1
  518. package/dist/astro/routes/api/setup/admin-verify.mjs +20 -14
  519. package/dist/astro/routes/api/setup/admin-verify.mjs.map +1 -1
  520. package/dist/astro/routes/api/setup/admin.mjs +19 -13
  521. package/dist/astro/routes/api/setup/admin.mjs.map +1 -1
  522. package/dist/astro/routes/api/setup/dev-bypass.mjs +43 -37
  523. package/dist/astro/routes/api/setup/dev-bypass.mjs.map +1 -1
  524. package/dist/astro/routes/api/setup/dev-reset.mjs +4 -2
  525. package/dist/astro/routes/api/setup/dev-reset.mjs.map +1 -1
  526. package/dist/astro/routes/api/setup/index.d.mts.map +1 -1
  527. package/dist/astro/routes/api/setup/index.mjs +78 -43
  528. package/dist/astro/routes/api/setup/index.mjs.map +1 -1
  529. package/dist/astro/routes/api/setup/status.mjs +5 -3
  530. package/dist/astro/routes/api/setup/status.mjs.map +1 -1
  531. package/dist/astro/routes/api/snapshot.mjs +11 -9
  532. package/dist/astro/routes/api/snapshot.mjs.map +1 -1
  533. package/dist/astro/routes/api/taxonomies/_name_/reorder.mjs +25 -19
  534. package/dist/astro/routes/api/taxonomies/_name_/reorder.mjs.map +1 -1
  535. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs +25 -19
  536. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs.map +1 -1
  537. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs +25 -19
  538. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs.map +1 -1
  539. package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs +25 -19
  540. package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs.map +1 -1
  541. package/dist/astro/routes/api/taxonomies/_name_/translations.mjs +24 -18
  542. package/dist/astro/routes/api/taxonomies/_name_/translations.mjs.map +1 -1
  543. package/dist/astro/routes/api/taxonomies/_name_.mjs +25 -19
  544. package/dist/astro/routes/api/taxonomies/_name_.mjs.map +1 -1
  545. package/dist/astro/routes/api/taxonomies/bulk-tag.d.mts +8 -0
  546. package/dist/astro/routes/api/taxonomies/bulk-tag.d.mts.map +1 -0
  547. package/dist/astro/routes/api/taxonomies/bulk-tag.mjs +295 -0
  548. package/dist/astro/routes/api/taxonomies/bulk-tag.mjs.map +1 -0
  549. package/dist/astro/routes/api/taxonomies/index.mjs +25 -19
  550. package/dist/astro/routes/api/taxonomies/index.mjs.map +1 -1
  551. package/dist/astro/routes/api/themes/preview.mjs +7 -5
  552. package/dist/astro/routes/api/themes/preview.mjs.map +1 -1
  553. package/dist/astro/routes/api/typegen.d.mts.map +1 -1
  554. package/dist/astro/routes/api/typegen.mjs +12 -9
  555. package/dist/astro/routes/api/typegen.mjs.map +1 -1
  556. package/dist/astro/routes/api/visual-editing/action-token.mjs +7 -5
  557. package/dist/astro/routes/api/visual-editing/action-token.mjs.map +1 -1
  558. package/dist/astro/routes/api/visual-editing/content/_collection_/_id_/publish.mjs +22 -16
  559. package/dist/astro/routes/api/visual-editing/content/_collection_/_id_/publish.mjs.map +1 -1
  560. package/dist/astro/routes/api/visual-editing/toolbar-labels.mjs +3 -1
  561. package/dist/astro/routes/api/visual-editing/toolbar-labels.mjs.map +1 -1
  562. package/dist/astro/routes/api/well-known/auth.mjs +2 -2
  563. package/dist/astro/routes/api/well-known/oauth-authorization-server.mjs +2 -2
  564. package/dist/astro/routes/api/well-known/oauth-protected-resource.mjs +2 -2
  565. package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs +16 -10
  566. package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs.map +1 -1
  567. package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs +20 -14
  568. package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs.map +1 -1
  569. package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs +20 -14
  570. package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs.map +1 -1
  571. package/dist/astro/routes/api/widget-areas/_name_.mjs +10 -8
  572. package/dist/astro/routes/api/widget-areas/_name_.mjs.map +1 -1
  573. package/dist/astro/routes/api/widget-areas/index.mjs +20 -14
  574. package/dist/astro/routes/api/widget-areas/index.mjs.map +1 -1
  575. package/dist/astro/routes/api/widget-components.mjs +4 -2
  576. package/dist/astro/routes/api/widget-components.mjs.map +1 -1
  577. package/dist/astro/routes/robots.txt.mjs +10 -10
  578. package/dist/astro/routes/sitemap-_collection_.xml.mjs +13 -13
  579. package/dist/astro/routes/sitemap.xml.mjs +11 -11
  580. package/dist/astro/types.d.mts +25 -17
  581. package/dist/astro/types.d.mts.map +1 -1
  582. package/dist/audit-RfCugiSB.mjs +127 -0
  583. package/dist/audit-RfCugiSB.mjs.map +1 -0
  584. package/dist/auth/providers/github.d.mts +1 -1
  585. package/dist/auth/providers/google.d.mts +1 -1
  586. package/dist/authoritative-records-CoJvBXAD.mjs +5172 -0
  587. package/dist/authoritative-records-CoJvBXAD.mjs.map +1 -0
  588. package/dist/authorize-seCifOMJ.mjs +49 -0
  589. package/dist/authorize-seCifOMJ.mjs.map +1 -0
  590. package/dist/backup-BQRj3afm.mjs +246 -0
  591. package/dist/backup-BQRj3afm.mjs.map +1 -0
  592. package/dist/block-type-registry-DUI_3KxT.mjs +6709 -0
  593. package/dist/block-type-registry-DUI_3KxT.mjs.map +1 -0
  594. package/dist/block-types-BmZmLmAD.mjs +132 -0
  595. package/dist/block-types-BmZmLmAD.mjs.map +1 -0
  596. package/dist/block-values-C_VIPr5t.mjs +175 -0
  597. package/dist/block-values-C_VIPr5t.mjs.map +1 -0
  598. package/dist/byline-DYmkXqvo.mjs +909 -0
  599. package/dist/byline-DYmkXqvo.mjs.map +1 -0
  600. package/dist/byline-fields-D28AT-Fh.mjs +123 -0
  601. package/dist/byline-fields-D28AT-Fh.mjs.map +1 -0
  602. package/dist/byline-registry-gnKscbQX.mjs +406 -0
  603. package/dist/byline-registry-gnKscbQX.mjs.map +1 -0
  604. package/dist/bylines-BPwJqoYH.mjs +232 -0
  605. package/dist/bylines-BPwJqoYH.mjs.map +1 -0
  606. package/dist/bylines-ukLaYpVZ.mjs +214 -0
  607. package/dist/bylines-ukLaYpVZ.mjs.map +1 -0
  608. package/dist/cache-m7UEkRFV.mjs +108 -0
  609. package/dist/cache-m7UEkRFV.mjs.map +1 -0
  610. package/dist/canonical-YhEQezjg.mjs +174 -0
  611. package/dist/canonical-YhEQezjg.mjs.map +1 -0
  612. package/dist/capture-triggers-kJyl_yyM.mjs +362 -0
  613. package/dist/capture-triggers-kJyl_yyM.mjs.map +1 -0
  614. package/dist/challenge-store-ppU6Uv13.mjs +51 -0
  615. package/dist/challenge-store-ppU6Uv13.mjs.map +1 -0
  616. package/dist/checksum-B2IINIlN.mjs +162 -0
  617. package/dist/checksum-B2IINIlN.mjs.map +1 -0
  618. package/dist/chrome-tags-DApCQSIk.mjs +24 -0
  619. package/dist/chrome-tags-DApCQSIk.mjs.map +1 -0
  620. package/dist/chunks-Dms7Uxbt.mjs +25 -0
  621. package/dist/chunks-Dms7Uxbt.mjs.map +1 -0
  622. package/dist/cli/index.mjs +1471 -56
  623. package/dist/cli/index.mjs.map +1 -1
  624. package/dist/client/cf-access.d.mts +1 -1
  625. package/dist/client/index.d.mts +1050 -4
  626. package/dist/client/index.d.mts.map +1 -1
  627. package/dist/client/index.mjs +193 -11
  628. package/dist/client/index.mjs.map +1 -1
  629. package/dist/collection-deletion-BIm28mo3.mjs +436 -0
  630. package/dist/collection-deletion-BIm28mo3.mjs.map +1 -0
  631. package/dist/collection-deletion-processor-Br6rxs3u.mjs +217 -0
  632. package/dist/collection-deletion-processor-Br6rxs3u.mjs.map +1 -0
  633. package/dist/collection-slugs-cache-CjGk__zp.mjs +85 -0
  634. package/dist/collection-slugs-cache-CjGk__zp.mjs.map +1 -0
  635. package/dist/comment-CrBl22OF.mjs +313 -0
  636. package/dist/comment-CrBl22OF.mjs.map +1 -0
  637. package/dist/comment-reaction-JEQ2Fpd8.mjs +85 -0
  638. package/dist/comment-reaction-JEQ2Fpd8.mjs.map +1 -0
  639. package/dist/comments-2ah9du9y.mjs +195 -0
  640. package/dist/comments-2ah9du9y.mjs.map +1 -0
  641. package/dist/comments-fHZ8ON9O.mjs +99 -0
  642. package/dist/comments-fHZ8ON9O.mjs.map +1 -0
  643. package/dist/components-CXbq7CSM.mjs +108 -0
  644. package/dist/components-CXbq7CSM.mjs.map +1 -0
  645. package/dist/config-BjEm_3xL.d.mts +6537 -0
  646. package/dist/config-BjEm_3xL.d.mts.map +1 -0
  647. package/dist/config-CvmjJcVw.mjs +73 -0
  648. package/dist/config-CvmjJcVw.mjs.map +1 -0
  649. package/dist/config-IhybvkIQ.mjs +242 -0
  650. package/dist/config-IhybvkIQ.mjs.map +1 -0
  651. package/dist/config-Py43JK9r.d.mts +39 -0
  652. package/dist/config-Py43JK9r.d.mts.map +1 -0
  653. package/dist/content-DFaIEDj9.mjs +2281 -0
  654. package/dist/content-DFaIEDj9.mjs.map +1 -0
  655. package/dist/content-list-query-Dra4Dalc.d.mts +26 -0
  656. package/dist/content-list-query-Dra4Dalc.d.mts.map +1 -0
  657. package/dist/content-policy-DFNw91-d.mjs +46 -0
  658. package/dist/content-policy-DFNw91-d.mjs.map +1 -0
  659. package/dist/content-repair-Q8IUrpLL.mjs +442 -0
  660. package/dist/content-repair-Q8IUrpLL.mjs.map +1 -0
  661. package/dist/context-BV_7t-Ua.mjs +1921 -0
  662. package/dist/context-BV_7t-Ua.mjs.map +1 -0
  663. package/dist/cron-7DCJwPXq.mjs +284 -0
  664. package/dist/cron-7DCJwPXq.mjs.map +1 -0
  665. package/dist/dashboard-BP-iJqpd.mjs +151 -0
  666. package/dist/dashboard-BP-iJqpd.mjs.map +1 -0
  667. package/dist/db/index.d.mts +3 -3
  668. package/dist/db/index.mjs +3 -3
  669. package/dist/db/libsql-migrations.d.mts +1 -1
  670. package/dist/db/libsql-migrations.mjs +6 -6
  671. package/dist/db/libsql.d.mts +1 -1
  672. package/dist/db/postgres-migrations.d.mts +1 -1
  673. package/dist/db/postgres-migrations.mjs +6 -6
  674. package/dist/db/postgres.d.mts +1 -1
  675. package/dist/db/sqlite-migrations.d.mts +1 -1
  676. package/dist/db/sqlite-migrations.mjs +6 -6
  677. package/dist/db/sqlite.d.mts +1 -1
  678. package/dist/db/sqlite.mjs +2 -2
  679. package/dist/db/sqlite.mjs.map +1 -1
  680. package/dist/default-DQ6vsviu.mjs +81 -0
  681. package/dist/default-DQ6vsviu.mjs.map +1 -0
  682. package/dist/deferred-tasks-BPxXUB4x.d.mts +9 -0
  683. package/dist/deferred-tasks-BPxXUB4x.d.mts.map +1 -0
  684. package/dist/device-flow-CRd6DXmW.mjs +466 -0
  685. package/dist/device-flow-CRd6DXmW.mjs.map +1 -0
  686. package/dist/dialect-helpers-7_IqPdh9.mjs +307 -0
  687. package/dist/dialect-helpers-7_IqPdh9.mjs.map +1 -0
  688. package/dist/digest-BarSh-pN.mjs +194 -0
  689. package/dist/digest-BarSh-pN.mjs.map +1 -0
  690. package/dist/direct-executor-D2lNadwo.mjs +104 -0
  691. package/dist/direct-executor-D2lNadwo.mjs.map +1 -0
  692. package/dist/dist-BNwANFJR.mjs +810 -0
  693. package/dist/dist-BNwANFJR.mjs.map +1 -0
  694. package/dist/email-console-bJn3ctqA.mjs +50 -0
  695. package/dist/email-console-bJn3ctqA.mjs.map +1 -0
  696. package/dist/email-locale-CN6WAMx0.mjs +25 -0
  697. package/dist/email-locale-CN6WAMx0.mjs.map +1 -0
  698. package/dist/emdash-runtime-CtfnZmPi.mjs +4186 -0
  699. package/dist/emdash-runtime-CtfnZmPi.mjs.map +1 -0
  700. package/dist/enrich-Dl3kZ-lP.mjs +194 -0
  701. package/dist/enrich-Dl3kZ-lP.mjs.map +1 -0
  702. package/dist/entry-lock-BJYdBfXb.mjs +1097 -0
  703. package/dist/entry-lock-BJYdBfXb.mjs.map +1 -0
  704. package/dist/entry-lock-Cf5OoIgN.d.mts +4368 -0
  705. package/dist/entry-lock-Cf5OoIgN.d.mts.map +1 -0
  706. package/dist/entry-lock-DHQOxN7R.mjs +163 -0
  707. package/dist/entry-lock-DHQOxN7R.mjs.map +1 -0
  708. package/dist/entry-locks-D0foLdjQ.mjs +167 -0
  709. package/dist/entry-locks-D0foLdjQ.mjs.map +1 -0
  710. package/dist/error-CfvOHP0M.mjs +90 -0
  711. package/dist/error-CfvOHP0M.mjs.map +1 -0
  712. package/dist/errors-BF0_LFhW.mjs +460 -0
  713. package/dist/errors-BF0_LFhW.mjs.map +1 -0
  714. package/dist/errors-DgE1zJGG.mjs +120 -0
  715. package/dist/errors-DgE1zJGG.mjs.map +1 -0
  716. package/dist/escape-CuaZhZvL.mjs +9 -0
  717. package/dist/escape-CuaZhZvL.mjs.map +1 -0
  718. package/dist/fence-CMDXJYc_.mjs +162 -0
  719. package/dist/fence-CMDXJYc_.mjs.map +1 -0
  720. package/dist/field-defs-cache-HIgBbqZZ.mjs +77 -0
  721. package/dist/field-defs-cache-HIgBbqZZ.mjs.map +1 -0
  722. package/dist/fts-manager-S-K0laoS.mjs +443 -0
  723. package/dist/fts-manager-S-K0laoS.mjs.map +1 -0
  724. package/dist/gc-DjKY0Ay1.mjs +75 -0
  725. package/dist/gc-DjKY0Ay1.mjs.map +1 -0
  726. package/dist/hash-SDAW6zC-.mjs +37 -0
  727. package/dist/hash-SDAW6zC-.mjs.map +1 -0
  728. package/dist/hook-result-B5bXDgS2.d.mts +31 -0
  729. package/dist/hook-result-B5bXDgS2.d.mts.map +1 -0
  730. package/dist/hreflang-CbVI4paR.mjs +105 -0
  731. package/dist/hreflang-CbVI4paR.mjs.map +1 -0
  732. package/dist/hreflang-D5uNnsGJ.d.mts +50 -0
  733. package/dist/hreflang-D5uNnsGJ.d.mts.map +1 -0
  734. package/dist/http-route-dispatch-BitqzwMy.mjs +339 -0
  735. package/dist/http-route-dispatch-BitqzwMy.mjs.map +1 -0
  736. package/dist/identity-Be5kzutJ.mjs +35 -0
  737. package/dist/identity-Be5kzutJ.mjs.map +1 -0
  738. package/dist/import-YzfKCaco.mjs +2020 -0
  739. package/dist/import-YzfKCaco.mjs.map +1 -0
  740. package/dist/index-D-hdtLe8.d.mts +623 -0
  741. package/dist/index-D-hdtLe8.d.mts.map +1 -0
  742. package/dist/index.d.mts +24 -24
  743. package/dist/index.mjs +105 -93
  744. package/dist/install-finalization-DfM1fj5x.mjs +58 -0
  745. package/dist/install-finalization-DfM1fj5x.mjs.map +1 -0
  746. package/dist/keys-yxLm5l35.mjs +61 -0
  747. package/dist/keys-yxLm5l35.mjs.map +1 -0
  748. package/dist/kinds-CRu_T5T5.mjs +961 -0
  749. package/dist/kinds-CRu_T5T5.mjs.map +1 -0
  750. package/dist/lifecycle-BzeGPeQ-.mjs +25 -0
  751. package/dist/lifecycle-BzeGPeQ-.mjs.map +1 -0
  752. package/dist/load-XgJiE6_3.mjs +28 -0
  753. package/dist/load-XgJiE6_3.mjs.map +1 -0
  754. package/dist/loader-BzqeR1ZN.mjs +1086 -0
  755. package/dist/loader-BzqeR1ZN.mjs.map +1 -0
  756. package/dist/loops-BQSzv5Zn.mjs +203 -0
  757. package/dist/loops-BQSzv5Zn.mjs.map +1 -0
  758. package/dist/manifest-builder-BmSAOOEF.mjs +189 -0
  759. package/dist/manifest-builder-BmSAOOEF.mjs.map +1 -0
  760. package/dist/manifest-schema-CY3zng_M.mjs +492 -0
  761. package/dist/manifest-schema-CY3zng_M.mjs.map +1 -0
  762. package/dist/media/image-endpoint.mjs +1 -1
  763. package/dist/media/index.d.mts +1 -1
  764. package/dist/media/index.mjs +3 -3
  765. package/dist/media/local-runtime.d.mts +14 -14
  766. package/dist/media/local-runtime.d.mts.map +1 -1
  767. package/dist/media/local-runtime.mjs +15 -16
  768. package/dist/media/local-runtime.mjs.map +1 -1
  769. package/dist/media-CPXTbb1R.mjs +373 -0
  770. package/dist/media-CPXTbb1R.mjs.map +1 -0
  771. package/dist/media-JXRWDhw3.mjs +294 -0
  772. package/dist/media-JXRWDhw3.mjs.map +1 -0
  773. package/dist/media-Pu1L6xir.mjs +408 -0
  774. package/dist/media-Pu1L6xir.mjs.map +1 -0
  775. package/dist/media-allowlist-BSoa9Vvm.mjs +44 -0
  776. package/dist/media-allowlist-BSoa9Vvm.mjs.map +1 -0
  777. package/dist/media-folders-BE0oo2eX.mjs +210 -0
  778. package/dist/media-folders-BE0oo2eX.mjs.map +1 -0
  779. package/dist/media-url-jArBpzIG.mjs +43 -0
  780. package/dist/media-url-jArBpzIG.mjs.map +1 -0
  781. package/dist/media-usage-De-zeR9E.mjs +1629 -0
  782. package/dist/media-usage-De-zeR9E.mjs.map +1 -0
  783. package/dist/media-usage-activation-HKp7zk7W.mjs +78 -0
  784. package/dist/media-usage-activation-HKp7zk7W.mjs.map +1 -0
  785. package/dist/media-usage-work-C2OZLCAd.mjs +586 -0
  786. package/dist/media-usage-work-C2OZLCAd.mjs.map +1 -0
  787. package/dist/media-usage-work-DwUNbgvS.mjs +152 -0
  788. package/dist/media-usage-work-DwUNbgvS.mjs.map +1 -0
  789. package/dist/menus-BM7BPLOb.mjs +139 -0
  790. package/dist/menus-BM7BPLOb.mjs.map +1 -0
  791. package/dist/menus-Cm68rsAq.mjs +3608 -0
  792. package/dist/menus-Cm68rsAq.mjs.map +1 -0
  793. package/dist/menus-ITeAbcIF.mjs +753 -0
  794. package/dist/menus-ITeAbcIF.mjs.map +1 -0
  795. package/dist/migrations/index.d.mts +1 -1
  796. package/dist/migrations/index.mjs +5 -5
  797. package/dist/mime-ChLqYwDk.mjs +36 -0
  798. package/dist/mime-ChLqYwDk.mjs.map +1 -0
  799. package/dist/mode-CCuKXUci.mjs +23 -0
  800. package/dist/mode-CCuKXUci.mjs.map +1 -0
  801. package/dist/node-sqlite-compat-CONMsl-x.mjs +46 -0
  802. package/dist/node-sqlite-compat-CONMsl-x.mjs.map +1 -0
  803. package/dist/normalize-CO2P8-iE.mjs +191 -0
  804. package/dist/normalize-CO2P8-iE.mjs.map +1 -0
  805. package/dist/oauth-authorization-DlMIL5_h.mjs +274 -0
  806. package/dist/oauth-authorization-DlMIL5_h.mjs.map +1 -0
  807. package/dist/oauth-clients-Djq9r_KP.mjs +266 -0
  808. package/dist/oauth-clients-Djq9r_KP.mjs.map +1 -0
  809. package/dist/oauth-state-store-BbjnZXNC.mjs +50 -0
  810. package/dist/oauth-state-store-BbjnZXNC.mjs.map +1 -0
  811. package/dist/oauth-user-lookup-vue9a64A.mjs +26 -0
  812. package/dist/oauth-user-lookup-vue9a64A.mjs.map +1 -0
  813. package/dist/object-cache/memory.d.mts +1 -1
  814. package/dist/object-cache-CqWNY5uP.mjs +582 -0
  815. package/dist/object-cache-CqWNY5uP.mjs.map +1 -0
  816. package/dist/options-DhrI7eMv.mjs +208 -0
  817. package/dist/options-DhrI7eMv.mjs.map +1 -0
  818. package/dist/options-SQCHQCPH.d.mts +81 -0
  819. package/dist/options-SQCHQCPH.d.mts.map +1 -0
  820. package/dist/page/index.d.mts +2 -2
  821. package/dist/page/index.mjs +9 -9
  822. package/dist/parse-CVgO-Qai.d.mts +168 -0
  823. package/dist/parse-CVgO-Qai.d.mts.map +1 -0
  824. package/dist/parse-DY6OD1j_.mjs +81 -0
  825. package/dist/parse-DY6OD1j_.mjs.map +1 -0
  826. package/dist/passkey-config-X_H8128a.mjs +46 -0
  827. package/dist/passkey-config-X_H8128a.mjs.map +1 -0
  828. package/dist/paths-JxokKIbr.mjs +77 -0
  829. package/dist/paths-JxokKIbr.mjs.map +1 -0
  830. package/dist/patterns-BhAvqO0S.mjs +145 -0
  831. package/dist/patterns-BhAvqO0S.mjs.map +1 -0
  832. package/dist/placeholder-MSEd8gty.d.mts +306 -0
  833. package/dist/placeholder-MSEd8gty.d.mts.map +1 -0
  834. package/dist/plan-xjcWrAah.mjs +135 -0
  835. package/dist/plan-xjcWrAah.mjs.map +1 -0
  836. package/dist/plugin-test-runtime.d.mts +38 -15
  837. package/dist/plugin-test-runtime.d.mts.map +1 -1
  838. package/dist/plugin-test-runtime.mjs +112 -100
  839. package/dist/plugin-types.d.mts +2 -2
  840. package/dist/plugin-utils.d.mts +12 -12
  841. package/dist/plugins/adapt-sandbox-entry.d.mts +12 -12
  842. package/dist/plugins/adapt-sandbox-entry.mjs +3 -3
  843. package/dist/plugins/host.d.mts +5 -5
  844. package/dist/plugins/host.mjs +45 -37
  845. package/dist/plugins-DUXUt8B9.mjs +277 -0
  846. package/dist/plugins-DUXUt8B9.mjs.map +1 -0
  847. package/dist/policy-CUvwAARc.mjs +45 -0
  848. package/dist/policy-CUvwAARc.mjs.map +1 -0
  849. package/dist/portable-text-5O_ZGUjB.mjs +307 -0
  850. package/dist/portable-text-5O_ZGUjB.mjs.map +1 -0
  851. package/dist/preview-CIUcPYr6.mjs +107 -0
  852. package/dist/preview-CIUcPYr6.mjs.map +1 -0
  853. package/dist/protocol-B97DZaFr.d.mts +61 -0
  854. package/dist/protocol-B97DZaFr.d.mts.map +1 -0
  855. package/dist/public-submission-BFBUrqst.mjs +250 -0
  856. package/dist/public-submission-BFBUrqst.mjs.map +1 -0
  857. package/dist/public-url-Bn7U0D7-.mjs +101 -0
  858. package/dist/public-url-Bn7U0D7-.mjs.map +1 -0
  859. package/dist/query-B48peoRT.mjs +890 -0
  860. package/dist/query-B48peoRT.mjs.map +1 -0
  861. package/dist/query-C4IH0uhR.mjs +41 -0
  862. package/dist/query-C4IH0uhR.mjs.map +1 -0
  863. package/dist/rate-limit-BZ6nybgc.mjs +120 -0
  864. package/dist/rate-limit-BZ6nybgc.mjs.map +1 -0
  865. package/dist/receipt-B4wJj5Jq.mjs +43 -0
  866. package/dist/receipt-B4wJj5Jq.mjs.map +1 -0
  867. package/dist/redirect-B29UjdUn.mjs +411 -0
  868. package/dist/redirect-B29UjdUn.mjs.map +1 -0
  869. package/dist/redirect-Cd1E7VUt.mjs +17 -0
  870. package/dist/redirect-Cd1E7VUt.mjs.map +1 -0
  871. package/dist/redirects-Ca2MPfEG.mjs +446 -0
  872. package/dist/redirects-Ca2MPfEG.mjs.map +1 -0
  873. package/dist/redirects-Cv9apQKj.mjs +148 -0
  874. package/dist/redirects-Cv9apQKj.mjs.map +1 -0
  875. package/dist/registry/testing.mjs +3 -3
  876. package/dist/relation-M4NUCb0b.mjs +334 -0
  877. package/dist/relation-M4NUCb0b.mjs.map +1 -0
  878. package/dist/relations-CCif47Oq.mjs +403 -0
  879. package/dist/relations-CCif47Oq.mjs.map +1 -0
  880. package/dist/relations-CK9CYUyr.mjs +310 -0
  881. package/dist/relations-CK9CYUyr.mjs.map +1 -0
  882. package/dist/request-cache-DzLYKm_x.mjs +104 -0
  883. package/dist/request-cache-DzLYKm_x.mjs.map +1 -0
  884. package/dist/request-context.d.mts +1 -1
  885. package/dist/request-meta-sZXt3sRo.mjs +141 -0
  886. package/dist/request-meta-sZXt3sRo.mjs.map +1 -0
  887. package/dist/resolve-2WbQsCvT.mjs +199 -0
  888. package/dist/resolve-2WbQsCvT.mjs.map +1 -0
  889. package/dist/route-wire--1hLuACz.mjs +197 -0
  890. package/dist/route-wire--1hLuACz.mjs.map +1 -0
  891. package/dist/routes-vrR95WR6.mjs +272 -0
  892. package/dist/routes-vrR95WR6.mjs.map +1 -0
  893. package/dist/runner-1y4J9fJB.mjs +5742 -0
  894. package/dist/runner-1y4J9fJB.mjs.map +1 -0
  895. package/dist/runner-D5_LzKXI.d.mts +68 -0
  896. package/dist/runner-D5_LzKXI.d.mts.map +1 -0
  897. package/dist/runtime.d.mts +13 -13
  898. package/dist/runtime.mjs +4 -4
  899. package/dist/schema-BABiRdsH.mjs +13 -0
  900. package/dist/schema-BABiRdsH.mjs.map +1 -0
  901. package/dist/schema-Du3MzCG0.mjs +446 -0
  902. package/dist/schema-Du3MzCG0.mjs.map +1 -0
  903. package/dist/scopes-Dbk-ElhT.mjs +34 -0
  904. package/dist/scopes-Dbk-ElhT.mjs.map +1 -0
  905. package/dist/search-Bt1PL1jf.mjs +448 -0
  906. package/dist/search-Bt1PL1jf.mjs.map +1 -0
  907. package/dist/secrets-CIi0nFiR.mjs +341 -0
  908. package/dist/secrets-CIi0nFiR.mjs.map +1 -0
  909. package/dist/sections-Ddptx_o9.mjs +346 -0
  910. package/dist/sections-Ddptx_o9.mjs.map +1 -0
  911. package/dist/seed/index.d.mts +2 -2
  912. package/dist/seed/index.mjs +35 -30
  913. package/dist/seo/index.d.mts +3 -3
  914. package/dist/seo/index.mjs +25 -21
  915. package/dist/seo/index.mjs.map +1 -1
  916. package/dist/seo-CZT2oLtT.mjs +114 -0
  917. package/dist/seo-CZT2oLtT.mjs.map +1 -0
  918. package/dist/seo-D5w3-Azy.mjs +133 -0
  919. package/dist/seo-D5w3-Azy.mjs.map +1 -0
  920. package/dist/service-DuykXPyW.mjs +150 -0
  921. package/dist/service-DuykXPyW.mjs.map +1 -0
  922. package/dist/session-user-BhaVp8w0.mjs +51 -0
  923. package/dist/session-user-BhaVp8w0.mjs.map +1 -0
  924. package/dist/settings-B4vDl1fK.mjs +439 -0
  925. package/dist/settings-B4vDl1fK.mjs.map +1 -0
  926. package/dist/settings-DYidIB26.mjs +61 -0
  927. package/dist/settings-DYidIB26.mjs.map +1 -0
  928. package/dist/settings-Dyj6v8C4.mjs +51 -0
  929. package/dist/settings-Dyj6v8C4.mjs.map +1 -0
  930. package/dist/setup-complete-bOogcHWG.mjs +26 -0
  931. package/dist/setup-complete-bOogcHWG.mjs.map +1 -0
  932. package/dist/setup-nonce-0EGuKM4s.mjs +25 -0
  933. package/dist/setup-nonce-0EGuKM4s.mjs.map +1 -0
  934. package/dist/site-settings-DOgRUoFX.mjs +50 -0
  935. package/dist/site-settings-DOgRUoFX.mjs.map +1 -0
  936. package/dist/site-url-BU_bbxwj.mjs +16 -0
  937. package/dist/site-url-BU_bbxwj.mjs.map +1 -0
  938. package/dist/snapshot-PawoX-WG.mjs +414 -0
  939. package/dist/snapshot-PawoX-WG.mjs.map +1 -0
  940. package/dist/ssrf-CJUnJymJ.mjs +406 -0
  941. package/dist/ssrf-CJUnJymJ.mjs.map +1 -0
  942. package/dist/stage-DgrBz_du.mjs +662 -0
  943. package/dist/stage-DgrBz_du.mjs.map +1 -0
  944. package/dist/state-DDiPySSG.mjs +153 -0
  945. package/dist/state-DDiPySSG.mjs.map +1 -0
  946. package/dist/status-DZKIG4a9.mjs +30 -0
  947. package/dist/status-DZKIG4a9.mjs.map +1 -0
  948. package/dist/storage/local.d.mts +1 -1
  949. package/dist/storage/local.mjs +1 -1
  950. package/dist/storage/s3.d.mts +1 -1
  951. package/dist/storage/s3.mjs +1 -1
  952. package/dist/storage-query-FXJH5pI8.d.mts +1581 -0
  953. package/dist/storage-query-FXJH5pI8.d.mts.map +1 -0
  954. package/dist/tar-_1AgTYFu.mjs +449 -0
  955. package/dist/tar-_1AgTYFu.mjs.map +1 -0
  956. package/dist/target-_7pn2Gbg.mjs +27 -0
  957. package/dist/target-_7pn2Gbg.mjs.map +1 -0
  958. package/dist/taxonomies-C1IwNe8Q.mjs +697 -0
  959. package/dist/taxonomies-C1IwNe8Q.mjs.map +1 -0
  960. package/dist/taxonomies-C_XMoRcX.mjs +939 -0
  961. package/dist/taxonomies-C_XMoRcX.mjs.map +1 -0
  962. package/dist/taxonomy-C3Fu1YeH.mjs +525 -0
  963. package/dist/taxonomy-C3Fu1YeH.mjs.map +1 -0
  964. package/dist/tokens-u78jETkX.mjs +171 -0
  965. package/dist/tokens-u78jETkX.mjs.map +1 -0
  966. package/dist/transfer-DIGvR9Af.mjs +166 -0
  967. package/dist/transfer-DIGvR9Af.mjs.map +1 -0
  968. package/dist/transfer-DgeCvHnj.mjs +8675 -0
  969. package/dist/transfer-DgeCvHnj.mjs.map +1 -0
  970. package/dist/transfer-download-Pml7RMio.mjs +33 -0
  971. package/dist/transfer-download-Pml7RMio.mjs.map +1 -0
  972. package/dist/transformations-9gfpwY65.mjs +196 -0
  973. package/dist/transformations-9gfpwY65.mjs.map +1 -0
  974. package/dist/transport-BIfH7_hx.d.mts +42 -0
  975. package/dist/transport-BIfH7_hx.d.mts.map +1 -0
  976. package/dist/transport-DKWIq53q.mjs +136 -0
  977. package/dist/transport-DKWIq53q.mjs.map +1 -0
  978. package/dist/trusted-proxy-tKiVtyTD.mjs +51 -0
  979. package/dist/trusted-proxy-tKiVtyTD.mjs.map +1 -0
  980. package/dist/turnstile-DpsoyOfg.mjs +53 -0
  981. package/dist/turnstile-DpsoyOfg.mjs.map +1 -0
  982. package/dist/types-B4sUC2p1.d.mts +198 -0
  983. package/dist/types-B4sUC2p1.d.mts.map +1 -0
  984. package/dist/types-B7Lmsh1E.d.mts +887 -0
  985. package/dist/types-B7Lmsh1E.d.mts.map +1 -0
  986. package/dist/types-BZakh7Ym.mjs +22 -0
  987. package/dist/types-BZakh7Ym.mjs.map +1 -0
  988. package/dist/types-B_CppEmv.d.mts +264 -0
  989. package/dist/types-B_CppEmv.d.mts.map +1 -0
  990. package/dist/types-BcrBrE6-.mjs +159 -0
  991. package/dist/types-BcrBrE6-.mjs.map +1 -0
  992. package/dist/types-CAZgq9fO.d.mts +124 -0
  993. package/dist/types-CAZgq9fO.d.mts.map +1 -0
  994. package/dist/types-Cd-O03VG.d.mts +363 -0
  995. package/dist/types-Cd-O03VG.d.mts.map +1 -0
  996. package/dist/types-Cr-Kg-3D.d.mts +1641 -0
  997. package/dist/types-Cr-Kg-3D.d.mts.map +1 -0
  998. package/dist/types-D2fvWd1i.d.mts +359 -0
  999. package/dist/types-D2fvWd1i.d.mts.map +1 -0
  1000. package/dist/types-D7HUsguf.mjs +77 -0
  1001. package/dist/types-D7HUsguf.mjs.map +1 -0
  1002. package/dist/types-DA1Te3Oy.d.mts +198 -0
  1003. package/dist/types-DA1Te3Oy.d.mts.map +1 -0
  1004. package/dist/types-DhV6Q5bP.mjs +18 -0
  1005. package/dist/types-DhV6Q5bP.mjs.map +1 -0
  1006. package/dist/types-DnnVSl6Y.d.mts +85 -0
  1007. package/dist/types-DnnVSl6Y.d.mts.map +1 -0
  1008. package/dist/types-VT4-BugW.mjs +16 -0
  1009. package/dist/types-VT4-BugW.mjs.map +1 -0
  1010. package/dist/upload-attempts-B68ZGNu9.mjs +32 -0
  1011. package/dist/upload-attempts-B68ZGNu9.mjs.map +1 -0
  1012. package/dist/url-pattern-CCeZMGOh.mjs +33 -0
  1013. package/dist/url-pattern-CCeZMGOh.mjs.map +1 -0
  1014. package/dist/user-DDSL-sGw.mjs +171 -0
  1015. package/dist/user-DDSL-sGw.mjs.map +1 -0
  1016. package/dist/utils-DdhmO9w9.mjs +439 -0
  1017. package/dist/utils-DdhmO9w9.mjs.map +1 -0
  1018. package/dist/validate-CHosPEhs.mjs +453 -0
  1019. package/dist/validate-CHosPEhs.mjs.map +1 -0
  1020. package/dist/validate-CM79QXYE.d.mts +432 -0
  1021. package/dist/validate-CM79QXYE.d.mts.map +1 -0
  1022. package/dist/validation-BFecQczG.mjs +218 -0
  1023. package/dist/validation-BFecQczG.mjs.map +1 -0
  1024. package/dist/version-BRZXVifl.mjs +9 -0
  1025. package/dist/version-BRZXVifl.mjs.map +1 -0
  1026. package/dist/version-DXsxRrob.mjs +7 -0
  1027. package/dist/version-DXsxRrob.mjs.map +1 -0
  1028. package/dist/widgets-WdV72brA.mjs +126 -0
  1029. package/dist/widgets-WdV72brA.mjs.map +1 -0
  1030. package/dist/wxr-taxonomies-BHTdqkmZ.d.mts +34 -0
  1031. package/dist/wxr-taxonomies-BHTdqkmZ.d.mts.map +1 -0
  1032. package/dist/wxr-taxonomies-DP6ESgMN.mjs +372 -0
  1033. package/dist/wxr-taxonomies-DP6ESgMN.mjs.map +1 -0
  1034. package/dist/zod-generator-D6uE4WiS.mjs +389 -0
  1035. package/dist/zod-generator-D6uE4WiS.mjs.map +1 -0
  1036. package/package.json +6 -5
  1037. package/src/api/authorize.ts +17 -0
  1038. package/src/api/email-locale.ts +24 -0
  1039. package/src/api/errors.ts +16 -0
  1040. package/src/api/handlers/api-tokens.ts +18 -3
  1041. package/src/api/handlers/block-types.ts +129 -0
  1042. package/src/api/handlers/bulk-tag.ts +309 -0
  1043. package/src/api/handlers/comments.ts +0 -28
  1044. package/src/api/handlers/index.ts +11 -0
  1045. package/src/api/handlers/manifest.ts +8 -1
  1046. package/src/api/handlers/marketplace.ts +22 -16
  1047. package/src/api/handlers/media-upload.ts +17 -71
  1048. package/src/api/handlers/media-usage.ts +31 -12
  1049. package/src/api/handlers/media.ts +112 -13
  1050. package/src/api/handlers/schema.ts +33 -8
  1051. package/src/api/handlers/settings.ts +2 -2
  1052. package/src/api/handlers/snapshot.ts +261 -3
  1053. package/src/api/handlers/taxonomies.ts +132 -83
  1054. package/src/api/handlers/transfer.ts +1347 -0
  1055. package/src/api/handlers/validate-media-fields.ts +124 -12
  1056. package/src/api/media-usage-write-fence.ts +5 -26
  1057. package/src/api/openapi/document.ts +614 -5
  1058. package/src/api/schemas/auth.ts +7 -1
  1059. package/src/api/schemas/common.ts +5 -0
  1060. package/src/api/schemas/content.ts +20 -1
  1061. package/src/api/schemas/media-usage.ts +11 -0
  1062. package/src/api/schemas/menus.ts +1 -1
  1063. package/src/api/schemas/schema.ts +117 -0
  1064. package/src/api/schemas/settings.ts +3 -3
  1065. package/src/api/schemas/taxonomies.ts +18 -0
  1066. package/src/api/schemas/transfer.ts +249 -0
  1067. package/src/api/transfer-download.ts +36 -0
  1068. package/src/api/types.ts +3 -0
  1069. package/src/astro/integration/routes.ts +31 -0
  1070. package/src/astro/integration/vite-config.ts +36 -4
  1071. package/src/astro/middleware/auth.ts +30 -7
  1072. package/src/astro/middleware/media-usage-write-fence.ts +106 -11
  1073. package/src/astro/middleware/request-context.ts +16 -2
  1074. package/src/astro/middleware.ts +39 -18
  1075. package/src/astro/routes/admin.astro +3 -1
  1076. package/src/astro/routes/api/admin/hooks/exclusive/index.ts +1 -5
  1077. package/src/astro/routes/api/admin/plugins/[id]/disable.ts +4 -3
  1078. package/src/astro/routes/api/admin/plugins/[id]/enable.ts +4 -3
  1079. package/src/astro/routes/api/admin/plugins/[id]/uninstall.ts +4 -3
  1080. package/src/astro/routes/api/admin/plugins/[id]/update.ts +4 -3
  1081. package/src/astro/routes/api/admin/plugins/marketplace/[id]/install.ts +4 -3
  1082. package/src/astro/routes/api/admin/plugins/registry/[id]/uninstall.ts +4 -3
  1083. package/src/astro/routes/api/admin/plugins/registry/[id]/update.ts +3 -3
  1084. package/src/astro/routes/api/admin/plugins/registry/install.ts +3 -3
  1085. package/src/astro/routes/api/admin/plugins/registry/publisher-handle.ts +59 -0
  1086. package/src/astro/routes/api/admin/transfer/[...path].ts +143 -0
  1087. package/src/astro/routes/api/admin/transfer/approvals/[id]/approve.ts +35 -0
  1088. package/src/astro/routes/api/admin/transfer/approvals/[id]/deny.ts +35 -0
  1089. package/src/astro/routes/api/admin/transfer/approvals/index.ts +33 -0
  1090. package/src/astro/routes/api/admin/transfer/capabilities.ts +36 -0
  1091. package/src/astro/routes/api/admin/transfer/exports/[id]/advance.ts +34 -0
  1092. package/src/astro/routes/api/admin/transfer/exports/[id]/archive.ts +35 -0
  1093. package/src/astro/routes/api/admin/transfer/exports/[id]/files/[...path].ts +40 -0
  1094. package/src/astro/routes/api/admin/transfer/exports/[id]/index.ts +25 -0
  1095. package/src/astro/routes/api/admin/transfer/exports/[id]/manifest.ts +38 -0
  1096. package/src/astro/routes/api/admin/transfer/exports/index.ts +64 -0
  1097. package/src/astro/routes/api/admin/transfer/imports/[id]/abandon.ts +28 -0
  1098. package/src/astro/routes/api/admin/transfer/imports/[id]/advance.ts +37 -0
  1099. package/src/astro/routes/api/admin/transfer/imports/[id]/analyze.ts +51 -0
  1100. package/src/astro/routes/api/admin/transfer/imports/[id]/cancel.ts +27 -0
  1101. package/src/astro/routes/api/admin/transfer/imports/[id]/execute.ts +48 -0
  1102. package/src/astro/routes/api/admin/transfer/imports/[id]/files/[...path].ts +54 -0
  1103. package/src/astro/routes/api/admin/transfer/imports/[id]/index.ts +25 -0
  1104. package/src/astro/routes/api/admin/transfer/imports/[id]/missing.ts +34 -0
  1105. package/src/astro/routes/api/admin/transfer/imports/[id]/plan.ts +29 -0
  1106. package/src/astro/routes/api/admin/transfer/imports/[id]/receipt.ts +25 -0
  1107. package/src/astro/routes/api/admin/transfer/imports/index.ts +85 -0
  1108. package/src/astro/routes/api/admin/users/[id]/send-recovery.ts +9 -1
  1109. package/src/astro/routes/api/auth/invite/index.ts +15 -1
  1110. package/src/astro/routes/api/auth/magic-link/send.ts +9 -1
  1111. package/src/astro/routes/api/auth/magic-link/verify.ts +37 -39
  1112. package/src/astro/routes/api/auth/passkey/options.ts +2 -21
  1113. package/src/astro/routes/api/content/[collection]/[id]/preview-url.ts +64 -13
  1114. package/src/astro/routes/api/content/[collection]/[id]/terms/[taxonomy].ts +16 -1
  1115. package/src/astro/routes/api/import/wordpress/rewrite-url-helpers.ts +11 -4
  1116. package/src/astro/routes/api/mcp.ts +1 -0
  1117. package/src/astro/routes/api/media/[id].ts +5 -15
  1118. package/src/astro/routes/api/media/file/[...key].ts +30 -5
  1119. package/src/astro/routes/api/oauth/authorize.ts +4 -0
  1120. package/src/astro/routes/api/schema/block-types/[slug]/index.ts +29 -0
  1121. package/src/astro/routes/api/schema/block-types/[slug]/versions/[version]/activate.ts +31 -0
  1122. package/src/astro/routes/api/schema/block-types/index.ts +29 -0
  1123. package/src/astro/routes/api/setup/index.ts +66 -23
  1124. package/src/astro/routes/api/snapshot.ts +2 -1
  1125. package/src/astro/routes/api/taxonomies/bulk-tag.ts +29 -0
  1126. package/src/astro/routes/api/typegen.ts +8 -4
  1127. package/src/astro/types.ts +9 -0
  1128. package/src/auth/api-tokens.ts +1 -0
  1129. package/src/auth/rate-limit.ts +2 -1
  1130. package/src/auth/scopes.ts +11 -0
  1131. package/src/cleanup.ts +24 -0
  1132. package/src/cli/client-factory.ts +6 -1
  1133. package/src/cli/commands/export-seed.ts +41 -15
  1134. package/src/cli/commands/seed.ts +6 -2
  1135. package/src/cli/commands/site.ts +556 -0
  1136. package/src/cli/index.ts +2 -0
  1137. package/src/cli/site/archive.ts +273 -0
  1138. package/src/cli/site/export.ts +311 -0
  1139. package/src/cli/site/import.ts +815 -0
  1140. package/src/cli/site/shared.ts +241 -0
  1141. package/src/client/index.ts +414 -11
  1142. package/src/client/portable-text.ts +41 -0
  1143. package/src/comments/public-submission.ts +19 -11
  1144. package/src/components/Blocks.astro +46 -0
  1145. package/src/components/Columns.astro +3 -1
  1146. package/src/components/Cover.astro +3 -1
  1147. package/src/components/Gallery.astro +2 -1
  1148. package/src/components/Image.astro +51 -6
  1149. package/src/components/InlinePortableTextEditor.tsx +28 -18
  1150. package/src/components/blocks.ts +44 -0
  1151. package/src/components/index.ts +14 -4
  1152. package/src/content/converters/gallery.ts +54 -16
  1153. package/src/content/converters/image-link.ts +27 -0
  1154. package/src/content/converters/index.ts +1 -0
  1155. package/src/content/converters/portable-text-to-prosemirror.ts +10 -7
  1156. package/src/content/converters/prosemirror-to-portable-text.ts +14 -0
  1157. package/src/content/converters/types.ts +17 -0
  1158. package/src/database/content-datetime.ts +19 -2
  1159. package/src/database/migrations/035_bounded_404_log.ts +28 -39
  1160. package/src/database/migrations/083_block_types.ts +58 -0
  1161. package/src/database/migrations/084_site_transfer.ts +264 -0
  1162. package/src/database/migrations/085_taxonomy_def_groups.ts +155 -0
  1163. package/src/database/migrations/runner.ts +6 -0
  1164. package/src/database/repositories/audit.ts +10 -1
  1165. package/src/database/repositories/byline.ts +4 -1
  1166. package/src/database/repositories/content.ts +83 -11
  1167. package/src/database/repositories/media-usage.ts +43 -13
  1168. package/src/database/repositories/media.ts +72 -2
  1169. package/src/database/repositories/options.ts +12 -0
  1170. package/src/database/repositories/redirect.ts +17 -34
  1171. package/src/database/repositories/revision.ts +6 -3
  1172. package/src/database/repositories/taxonomy-def.ts +126 -0
  1173. package/src/database/repositories/taxonomy.ts +65 -26
  1174. package/src/database/types.ts +133 -1
  1175. package/src/db/sqlite.ts +1 -1
  1176. package/src/emdash-runtime.ts +315 -51
  1177. package/src/import/utils.ts +8 -1
  1178. package/src/import/wxr-taxonomies.ts +11 -67
  1179. package/src/index.ts +27 -1
  1180. package/src/loader.ts +9 -5
  1181. package/src/mcp/server.ts +533 -76
  1182. package/src/mcp/transfer.ts +569 -0
  1183. package/src/media/local-runtime.ts +5 -18
  1184. package/src/media/upload-attempts.ts +5 -0
  1185. package/src/media/url.ts +15 -0
  1186. package/src/media/usage/content-fields.ts +69 -5
  1187. package/src/media/usage/content-refresh.ts +13 -66
  1188. package/src/media/usage/content-repair.ts +10 -2
  1189. package/src/media/usage/extractor.ts +74 -3
  1190. package/src/media/usage/projection-fingerprint.ts +14 -0
  1191. package/src/media/usage/schema-invalidation.ts +72 -0
  1192. package/src/media/usage/site-settings.ts +52 -0
  1193. package/src/media/usage/types.ts +2 -0
  1194. package/src/object-cache/index.ts +69 -4
  1195. package/src/plugin-test-runtime.ts +1 -0
  1196. package/src/plugins/context.ts +104 -56
  1197. package/src/plugins/cron.ts +6 -4
  1198. package/src/plugins/define-plugin.ts +11 -1
  1199. package/src/plugins/email-console.ts +2 -0
  1200. package/src/plugins/email.ts +16 -0
  1201. package/src/plugins/hooks.ts +33 -9
  1202. package/src/plugins/manifest-schema.ts +1 -0
  1203. package/src/plugins/route-error.ts +57 -0
  1204. package/src/plugins/routes.ts +5 -60
  1205. package/src/plugins/sandbox/types.ts +22 -2
  1206. package/src/plugins/types.ts +4 -0
  1207. package/src/registry/artifact-fetch.ts +17 -4
  1208. package/src/registry/publisher-handle.ts +273 -0
  1209. package/src/schema/block-type-contract.ts +478 -0
  1210. package/src/schema/block-type-registry.ts +689 -0
  1211. package/src/schema/block-types.ts +110 -0
  1212. package/src/schema/block-values.ts +293 -0
  1213. package/src/schema/byline-registry.ts +1 -1
  1214. package/src/schema/index.ts +28 -0
  1215. package/src/schema/registry.ts +462 -12
  1216. package/src/schema/types.ts +12 -1
  1217. package/src/schema/zod-generator.ts +92 -9
  1218. package/src/search/fts-manager.ts +40 -0
  1219. package/src/seed/apply.ts +493 -88
  1220. package/src/seed/types.ts +23 -3
  1221. package/src/seed/validate.ts +131 -7
  1222. package/src/settings/index.ts +32 -9
  1223. package/src/settings/types.ts +15 -0
  1224. package/src/taxonomies/index.ts +72 -83
  1225. package/src/transfer/analyze/index.ts +45 -0
  1226. package/src/transfer/analyze/issues.ts +55 -0
  1227. package/src/transfer/analyze/plan.ts +327 -0
  1228. package/src/transfer/analyze/read.ts +134 -0
  1229. package/src/transfer/analyze/step.ts +551 -0
  1230. package/src/transfer/analyze/target.ts +269 -0
  1231. package/src/transfer/analyze/unique-keys.ts +228 -0
  1232. package/src/transfer/analyze/validate.ts +1412 -0
  1233. package/src/transfer/analyze/values.ts +227 -0
  1234. package/src/transfer/analyze/write-rules.ts +196 -0
  1235. package/src/transfer/audit.ts +38 -0
  1236. package/src/transfer/auth.ts +25 -0
  1237. package/src/transfer/container/tar.ts +242 -0
  1238. package/src/transfer/domain.ts +248 -0
  1239. package/src/transfer/errors.ts +134 -0
  1240. package/src/transfer/export/exporter.ts +1067 -0
  1241. package/src/transfer/export/fence.ts +84 -0
  1242. package/src/transfer/export/media.ts +165 -0
  1243. package/src/transfer/export/readers.ts +1164 -0
  1244. package/src/transfer/export/verify.ts +677 -0
  1245. package/src/transfer/fence.ts +193 -0
  1246. package/src/transfer/format/canonical.ts +151 -0
  1247. package/src/transfer/format/column-codec.ts +275 -0
  1248. package/src/transfer/format/columns.ts +707 -0
  1249. package/src/transfer/format/digest.ts +287 -0
  1250. package/src/transfer/format/features.ts +91 -0
  1251. package/src/transfer/format/issues.ts +39 -0
  1252. package/src/transfer/format/kinds.ts +936 -0
  1253. package/src/transfer/format/limits.ts +87 -0
  1254. package/src/transfer/format/manifest.ts +297 -0
  1255. package/src/transfer/format/media-refs.ts +716 -0
  1256. package/src/transfer/format/paths.ts +73 -0
  1257. package/src/transfer/format/plan.ts +162 -0
  1258. package/src/transfer/format/receipt.ts +43 -0
  1259. package/src/transfer/format/records.ts +127 -0
  1260. package/src/transfer/format/settings.ts +94 -0
  1261. package/src/transfer/format/transformations.ts +260 -0
  1262. package/src/transfer/format/version.ts +9 -0
  1263. package/src/transfer/gc.ts +103 -0
  1264. package/src/transfer/import/advance.ts +522 -0
  1265. package/src/transfer/import/context.ts +281 -0
  1266. package/src/transfer/import/entries.ts +186 -0
  1267. package/src/transfer/import/ids.ts +40 -0
  1268. package/src/transfer/import/index.ts +15 -0
  1269. package/src/transfer/import/media.ts +141 -0
  1270. package/src/transfer/import/rebuild.ts +300 -0
  1271. package/src/transfer/import/rows.ts +114 -0
  1272. package/src/transfer/import/scaffold.ts +221 -0
  1273. package/src/transfer/import/sql.ts +134 -0
  1274. package/src/transfer/import/stages.ts +329 -0
  1275. package/src/transfer/import/writers.ts +370 -0
  1276. package/src/transfer/index.ts +472 -0
  1277. package/src/transfer/ops/approvals.ts +359 -0
  1278. package/src/transfer/ops/budget.ts +82 -0
  1279. package/src/transfer/ops/collation.ts +21 -0
  1280. package/src/transfer/ops/identity-map.ts +142 -0
  1281. package/src/transfer/ops/media-blobs.ts +135 -0
  1282. package/src/transfer/ops/operations.ts +842 -0
  1283. package/src/transfer/ops/package-index.ts +159 -0
  1284. package/src/transfer/ops/staged-files.ts +231 -0
  1285. package/src/transfer/ops/states.ts +265 -0
  1286. package/src/transfer/ops/time.ts +54 -0
  1287. package/src/transfer/schema-importer.ts +34 -0
  1288. package/src/transfer/site-id.ts +30 -0
  1289. package/src/transfer/staging/assembler.ts +217 -0
  1290. package/src/transfer/staging/keys.ts +94 -0
  1291. package/src/transfer/staging/package.ts +229 -0
  1292. package/src/transfer/staging/stage.ts +231 -0
  1293. package/src/ui.ts +19 -0
  1294. package/src/visual-editing/toolbar.ts +125 -37
  1295. package/dist/action-token-On1sot_c.mjs +0 -26
  1296. package/dist/action-token-On1sot_c.mjs.map +0 -1
  1297. package/dist/activation-CaMfdBt1.mjs +0 -382
  1298. package/dist/activation-CaMfdBt1.mjs.map +0 -1
  1299. package/dist/adapters-Cq10K4_c.d.mts +0 -171
  1300. package/dist/adapters-Cq10K4_c.d.mts.map +0 -1
  1301. package/dist/allowed-origins-1Sa-2wZK.mjs +0 -116
  1302. package/dist/allowed-origins-1Sa-2wZK.mjs.map +0 -1
  1303. package/dist/api-BB5BoQbN.mjs +0 -4831
  1304. package/dist/api-BB5BoQbN.mjs.map +0 -1
  1305. package/dist/api-tokens-BIXItFKV.mjs +0 -163
  1306. package/dist/api-tokens-BIXItFKV.mjs.map +0 -1
  1307. package/dist/api-tokens-DS1VzN7_.mjs +0 -3
  1308. package/dist/apply-CsKm_5S5.mjs +0 -1005
  1309. package/dist/apply-CsKm_5S5.mjs.map +0 -1
  1310. package/dist/artifact-fetch-COiMhVgk.mjs +0 -813
  1311. package/dist/artifact-fetch-COiMhVgk.mjs.map +0 -1
  1312. package/dist/authoritative-records-DbqshfKD.mjs +0 -5172
  1313. package/dist/authoritative-records-DbqshfKD.mjs.map +0 -1
  1314. package/dist/authorize-BXpfMpp0.mjs +0 -40
  1315. package/dist/authorize-BXpfMpp0.mjs.map +0 -1
  1316. package/dist/backup-B4tByjBb.mjs +0 -246
  1317. package/dist/backup-B4tByjBb.mjs.map +0 -1
  1318. package/dist/byline-C8ndlnP0.mjs +0 -906
  1319. package/dist/byline-C8ndlnP0.mjs.map +0 -1
  1320. package/dist/byline-fields-CsrdvaLV.mjs +0 -123
  1321. package/dist/byline-fields-CsrdvaLV.mjs.map +0 -1
  1322. package/dist/byline-registry-D6lWzXk6.mjs +0 -406
  1323. package/dist/byline-registry-D6lWzXk6.mjs.map +0 -1
  1324. package/dist/bylines-CHP44GkL.mjs +0 -232
  1325. package/dist/bylines-CHP44GkL.mjs.map +0 -1
  1326. package/dist/bylines-DxjM4Usz.mjs +0 -214
  1327. package/dist/bylines-DxjM4Usz.mjs.map +0 -1
  1328. package/dist/cache-BByLKGPu.mjs +0 -108
  1329. package/dist/cache-BByLKGPu.mjs.map +0 -1
  1330. package/dist/capture-triggers-gxQxnxrJ.mjs +0 -362
  1331. package/dist/capture-triggers-gxQxnxrJ.mjs.map +0 -1
  1332. package/dist/challenge-store-CkRdSdd8.mjs +0 -51
  1333. package/dist/challenge-store-CkRdSdd8.mjs.map +0 -1
  1334. package/dist/checksum-Bsi2D9M1.mjs +0 -162
  1335. package/dist/checksum-Bsi2D9M1.mjs.map +0 -1
  1336. package/dist/chrome-tags-D7LGB91U.mjs +0 -24
  1337. package/dist/chrome-tags-D7LGB91U.mjs.map +0 -1
  1338. package/dist/chunks-DUK-cWXi.mjs +0 -25
  1339. package/dist/chunks-DUK-cWXi.mjs.map +0 -1
  1340. package/dist/collection-deletion-C-yQB9fq.mjs +0 -436
  1341. package/dist/collection-deletion-C-yQB9fq.mjs.map +0 -1
  1342. package/dist/collection-slugs-cache-D9auiKmI.mjs +0 -85
  1343. package/dist/collection-slugs-cache-D9auiKmI.mjs.map +0 -1
  1344. package/dist/comment-DcT8qdPK.mjs +0 -313
  1345. package/dist/comment-DcT8qdPK.mjs.map +0 -1
  1346. package/dist/comment-reaction-B6KHCLYK.mjs +0 -85
  1347. package/dist/comment-reaction-B6KHCLYK.mjs.map +0 -1
  1348. package/dist/comments-B67VRNGw.mjs +0 -204
  1349. package/dist/comments-B67VRNGw.mjs.map +0 -1
  1350. package/dist/comments-BVzzt6x5.mjs +0 -99
  1351. package/dist/comments-BVzzt6x5.mjs.map +0 -1
  1352. package/dist/components-DIl9Qzh6.mjs +0 -108
  1353. package/dist/components-DIl9Qzh6.mjs.map +0 -1
  1354. package/dist/config-B2acLeC5.mjs +0 -242
  1355. package/dist/config-B2acLeC5.mjs.map +0 -1
  1356. package/dist/config-CGVeT8Hc.mjs +0 -73
  1357. package/dist/config-CGVeT8Hc.mjs.map +0 -1
  1358. package/dist/config-Cw1Xz_Br.d.mts +0 -6387
  1359. package/dist/config-Cw1Xz_Br.d.mts.map +0 -1
  1360. package/dist/config-D3HhLON3.d.mts +0 -39
  1361. package/dist/config-D3HhLON3.d.mts.map +0 -1
  1362. package/dist/content-C0Hl3ktM.mjs +0 -2216
  1363. package/dist/content-C0Hl3ktM.mjs.map +0 -1
  1364. package/dist/content-list-query-CbPdzsna.d.mts +0 -26
  1365. package/dist/content-list-query-CbPdzsna.d.mts.map +0 -1
  1366. package/dist/content-policy-CM4skrNi.mjs +0 -46
  1367. package/dist/content-policy-CM4skrNi.mjs.map +0 -1
  1368. package/dist/content-refresh-iRBhQHr5.mjs +0 -3599
  1369. package/dist/content-refresh-iRBhQHr5.mjs.map +0 -1
  1370. package/dist/content-repair-8uHRIJkd.mjs +0 -440
  1371. package/dist/content-repair-8uHRIJkd.mjs.map +0 -1
  1372. package/dist/context-DJP3aNeR.mjs +0 -1835
  1373. package/dist/context-DJP3aNeR.mjs.map +0 -1
  1374. package/dist/cron-BcR3RN4K.mjs +0 -282
  1375. package/dist/cron-BcR3RN4K.mjs.map +0 -1
  1376. package/dist/dashboard-B0s6QKgi.mjs +0 -151
  1377. package/dist/dashboard-B0s6QKgi.mjs.map +0 -1
  1378. package/dist/default-BtlxWgh9.mjs +0 -81
  1379. package/dist/default-BtlxWgh9.mjs.map +0 -1
  1380. package/dist/deferred-tasks-Ba9fphlE.d.mts +0 -9
  1381. package/dist/deferred-tasks-Ba9fphlE.d.mts.map +0 -1
  1382. package/dist/device-flow-3E5l0fpH.mjs +0 -466
  1383. package/dist/device-flow-3E5l0fpH.mjs.map +0 -1
  1384. package/dist/dialect-helpers-CtYdsX4W.mjs +0 -307
  1385. package/dist/dialect-helpers-CtYdsX4W.mjs.map +0 -1
  1386. package/dist/direct-executor-CDr1quOq.mjs +0 -104
  1387. package/dist/direct-executor-CDr1quOq.mjs.map +0 -1
  1388. package/dist/dist-2hDLsLeq.mjs +0 -810
  1389. package/dist/dist-2hDLsLeq.mjs.map +0 -1
  1390. package/dist/email-console-gc-E3Eqj.mjs +0 -50
  1391. package/dist/email-console-gc-E3Eqj.mjs.map +0 -1
  1392. package/dist/emdash-runtime-CxxL05Z0.mjs +0 -4041
  1393. package/dist/emdash-runtime-CxxL05Z0.mjs.map +0 -1
  1394. package/dist/enrich-C2Mk0lwE.mjs +0 -194
  1395. package/dist/enrich-C2Mk0lwE.mjs.map +0 -1
  1396. package/dist/entry-lock-CwWdnFyR.mjs +0 -1520
  1397. package/dist/entry-lock-CwWdnFyR.mjs.map +0 -1
  1398. package/dist/entry-lock-D9rnj2Lu.mjs +0 -163
  1399. package/dist/entry-lock-D9rnj2Lu.mjs.map +0 -1
  1400. package/dist/entry-lock-DqkvBC6L.d.mts +0 -3503
  1401. package/dist/entry-lock-DqkvBC6L.d.mts.map +0 -1
  1402. package/dist/entry-locks-CO_KaoU5.mjs +0 -167
  1403. package/dist/entry-locks-CO_KaoU5.mjs.map +0 -1
  1404. package/dist/error-CCTCskie.mjs +0 -90
  1405. package/dist/error-CCTCskie.mjs.map +0 -1
  1406. package/dist/errors-W3PA8HqB.mjs +0 -447
  1407. package/dist/errors-W3PA8HqB.mjs.map +0 -1
  1408. package/dist/escape-DN4Qmjsl.mjs +0 -9
  1409. package/dist/escape-DN4Qmjsl.mjs.map +0 -1
  1410. package/dist/field-defs-cache-Db0pJgqn.mjs +0 -77
  1411. package/dist/field-defs-cache-Db0pJgqn.mjs.map +0 -1
  1412. package/dist/fts-manager-CjX0e5BR.mjs +0 -413
  1413. package/dist/fts-manager-CjX0e5BR.mjs.map +0 -1
  1414. package/dist/hash-CLVFzWvx.mjs +0 -37
  1415. package/dist/hash-CLVFzWvx.mjs.map +0 -1
  1416. package/dist/hook-result-KY1jq21o.d.mts +0 -31
  1417. package/dist/hook-result-KY1jq21o.d.mts.map +0 -1
  1418. package/dist/hreflang-BgS2FqhH.d.mts +0 -50
  1419. package/dist/hreflang-BgS2FqhH.d.mts.map +0 -1
  1420. package/dist/hreflang-DOQeTXpg.mjs +0 -105
  1421. package/dist/hreflang-DOQeTXpg.mjs.map +0 -1
  1422. package/dist/http-route-dispatch-MCVKiQCl.mjs +0 -339
  1423. package/dist/http-route-dispatch-MCVKiQCl.mjs.map +0 -1
  1424. package/dist/identity-vFbpuwfY.mjs +0 -35
  1425. package/dist/identity-vFbpuwfY.mjs.map +0 -1
  1426. package/dist/import-got6I69S.mjs +0 -2020
  1427. package/dist/import-got6I69S.mjs.map +0 -1
  1428. package/dist/index-CDwKDkTq.d.mts +0 -623
  1429. package/dist/index-CDwKDkTq.d.mts.map +0 -1
  1430. package/dist/install-finalization-5Os-QZ-2.mjs +0 -58
  1431. package/dist/install-finalization-5Os-QZ-2.mjs.map +0 -1
  1432. package/dist/lifecycle-7e-Lt_kX.mjs +0 -25
  1433. package/dist/lifecycle-7e-Lt_kX.mjs.map +0 -1
  1434. package/dist/load-C56XiwbV.mjs +0 -28
  1435. package/dist/load-C56XiwbV.mjs.map +0 -1
  1436. package/dist/loader-xhNQiT9T.mjs +0 -1004
  1437. package/dist/loader-xhNQiT9T.mjs.map +0 -1
  1438. package/dist/manifest-builder-Bz3nxVET.mjs +0 -189
  1439. package/dist/manifest-builder-Bz3nxVET.mjs.map +0 -1
  1440. package/dist/manifest-schema-Bkh8SeHd.mjs +0 -491
  1441. package/dist/manifest-schema-Bkh8SeHd.mjs.map +0 -1
  1442. package/dist/media-TBlKCwo7.mjs +0 -334
  1443. package/dist/media-TBlKCwo7.mjs.map +0 -1
  1444. package/dist/media-allowlist-s60eAIf6.mjs +0 -44
  1445. package/dist/media-allowlist-s60eAIf6.mjs.map +0 -1
  1446. package/dist/media-folders-ClIRLUQv.mjs +0 -210
  1447. package/dist/media-folders-ClIRLUQv.mjs.map +0 -1
  1448. package/dist/media-url-DY_ijO3B.mjs +0 -43
  1449. package/dist/media-url-DY_ijO3B.mjs.map +0 -1
  1450. package/dist/media-usage-Bd9rFPKN.mjs +0 -1833
  1451. package/dist/media-usage-Bd9rFPKN.mjs.map +0 -1
  1452. package/dist/media-usage-activation-CAhmb14O.mjs +0 -78
  1453. package/dist/media-usage-activation-CAhmb14O.mjs.map +0 -1
  1454. package/dist/media-usage-work-BPlRMOJv.mjs +0 -152
  1455. package/dist/media-usage-work-BPlRMOJv.mjs.map +0 -1
  1456. package/dist/media-usage-work-Cu5DqewW.mjs +0 -586
  1457. package/dist/media-usage-work-Cu5DqewW.mjs.map +0 -1
  1458. package/dist/media-usage-write-fence-DW5oHT7q.mjs +0 -42
  1459. package/dist/media-usage-write-fence-DW5oHT7q.mjs.map +0 -1
  1460. package/dist/menus-BUQdvXep.mjs +0 -3732
  1461. package/dist/menus-BUQdvXep.mjs.map +0 -1
  1462. package/dist/menus-DgSUodmF.mjs +0 -753
  1463. package/dist/menus-DgSUodmF.mjs.map +0 -1
  1464. package/dist/mime-CCYRC4r1.mjs +0 -36
  1465. package/dist/mime-CCYRC4r1.mjs.map +0 -1
  1466. package/dist/mode-CkmOhFqj.mjs +0 -23
  1467. package/dist/mode-CkmOhFqj.mjs.map +0 -1
  1468. package/dist/node-sqlite-compat-vpVaILnb.mjs +0 -46
  1469. package/dist/node-sqlite-compat-vpVaILnb.mjs.map +0 -1
  1470. package/dist/normalize-dChXQjwS.mjs +0 -191
  1471. package/dist/normalize-dChXQjwS.mjs.map +0 -1
  1472. package/dist/oauth-authorization-DZ-R-hmx.mjs +0 -274
  1473. package/dist/oauth-authorization-DZ-R-hmx.mjs.map +0 -1
  1474. package/dist/oauth-clients-BMPA8vjl.mjs +0 -266
  1475. package/dist/oauth-clients-BMPA8vjl.mjs.map +0 -1
  1476. package/dist/oauth-state-store-0gIdb48-.mjs +0 -50
  1477. package/dist/oauth-state-store-0gIdb48-.mjs.map +0 -1
  1478. package/dist/oauth-user-lookup-ChVW4UWu.mjs +0 -26
  1479. package/dist/oauth-user-lookup-ChVW4UWu.mjs.map +0 -1
  1480. package/dist/object-cache-DlSVbn5Y.mjs +0 -534
  1481. package/dist/object-cache-DlSVbn5Y.mjs.map +0 -1
  1482. package/dist/options-D5WcorD5.mjs +0 -200
  1483. package/dist/options-D5WcorD5.mjs.map +0 -1
  1484. package/dist/options-DAknChnw.d.mts +0 -77
  1485. package/dist/options-DAknChnw.d.mts.map +0 -1
  1486. package/dist/parse-Cr379Av9.mjs +0 -81
  1487. package/dist/parse-Cr379Av9.mjs.map +0 -1
  1488. package/dist/parse-tj9XLNO_.d.mts +0 -165
  1489. package/dist/parse-tj9XLNO_.d.mts.map +0 -1
  1490. package/dist/passkey-config-BD-wMaCf.mjs +0 -46
  1491. package/dist/passkey-config-BD-wMaCf.mjs.map +0 -1
  1492. package/dist/patterns-Do3iqi7N.mjs +0 -145
  1493. package/dist/patterns-Do3iqi7N.mjs.map +0 -1
  1494. package/dist/placeholder-CubPFn_L.d.mts +0 -306
  1495. package/dist/placeholder-CubPFn_L.d.mts.map +0 -1
  1496. package/dist/plugins-DHurtdXQ.mjs +0 -277
  1497. package/dist/plugins-DHurtdXQ.mjs.map +0 -1
  1498. package/dist/policy-pL9QLKZm.mjs +0 -45
  1499. package/dist/policy-pL9QLKZm.mjs.map +0 -1
  1500. package/dist/portable-text-oAwodbPS.mjs +0 -286
  1501. package/dist/portable-text-oAwodbPS.mjs.map +0 -1
  1502. package/dist/preview-Cup2bj8c.mjs +0 -107
  1503. package/dist/preview-Cup2bj8c.mjs.map +0 -1
  1504. package/dist/protocol-C1CNiKX4.d.mts +0 -61
  1505. package/dist/protocol-C1CNiKX4.d.mts.map +0 -1
  1506. package/dist/public-submission-Cs-pFMQK.mjs +0 -245
  1507. package/dist/public-submission-Cs-pFMQK.mjs.map +0 -1
  1508. package/dist/public-url-BWVHsfQv.mjs +0 -101
  1509. package/dist/public-url-BWVHsfQv.mjs.map +0 -1
  1510. package/dist/query-CxnFU6sz.mjs +0 -890
  1511. package/dist/query-CxnFU6sz.mjs.map +0 -1
  1512. package/dist/query-sgHYEgBW.mjs +0 -41
  1513. package/dist/query-sgHYEgBW.mjs.map +0 -1
  1514. package/dist/rate-limit-CqJn-w4h.mjs +0 -120
  1515. package/dist/rate-limit-CqJn-w4h.mjs.map +0 -1
  1516. package/dist/redirect-BrChFPIu.mjs +0 -17
  1517. package/dist/redirect-BrChFPIu.mjs.map +0 -1
  1518. package/dist/redirect-D2Yo-b6S.mjs +0 -415
  1519. package/dist/redirect-D2Yo-b6S.mjs.map +0 -1
  1520. package/dist/redirects-BCiTaIQ-.mjs +0 -146
  1521. package/dist/redirects-BCiTaIQ-.mjs.map +0 -1
  1522. package/dist/redirects-CAoL3r26.mjs +0 -644
  1523. package/dist/redirects-CAoL3r26.mjs.map +0 -1
  1524. package/dist/registry-xKzE-_m5.mjs +0 -1222
  1525. package/dist/registry-xKzE-_m5.mjs.map +0 -1
  1526. package/dist/relation-ClsWcYg2.mjs +0 -334
  1527. package/dist/relation-ClsWcYg2.mjs.map +0 -1
  1528. package/dist/relations-B4w-G5U9.mjs +0 -309
  1529. package/dist/relations-B4w-G5U9.mjs.map +0 -1
  1530. package/dist/relations-C3Td_mct.mjs +0 -403
  1531. package/dist/relations-C3Td_mct.mjs.map +0 -1
  1532. package/dist/request-cache-DaMhSQdx.mjs +0 -104
  1533. package/dist/request-cache-DaMhSQdx.mjs.map +0 -1
  1534. package/dist/request-meta-C8yl_sIs.mjs +0 -141
  1535. package/dist/request-meta-C8yl_sIs.mjs.map +0 -1
  1536. package/dist/resolve-BJIS8wKr.mjs +0 -199
  1537. package/dist/resolve-BJIS8wKr.mjs.map +0 -1
  1538. package/dist/route-wire-D66L2oaZ.mjs +0 -197
  1539. package/dist/route-wire-D66L2oaZ.mjs.map +0 -1
  1540. package/dist/routes-CWzxcZpn.mjs +0 -321
  1541. package/dist/routes-CWzxcZpn.mjs.map +0 -1
  1542. package/dist/runner-3gfxRsJG.d.mts +0 -68
  1543. package/dist/runner-3gfxRsJG.d.mts.map +0 -1
  1544. package/dist/runner-CIltKk4i.mjs +0 -5502
  1545. package/dist/runner-CIltKk4i.mjs.map +0 -1
  1546. package/dist/schema-DQIE9Htn.mjs +0 -420
  1547. package/dist/schema-DQIE9Htn.mjs.map +0 -1
  1548. package/dist/schema-ILPFMPW3.mjs +0 -9
  1549. package/dist/schema-ILPFMPW3.mjs.map +0 -1
  1550. package/dist/scopes-Bn8_rCSt.mjs +0 -27
  1551. package/dist/scopes-Bn8_rCSt.mjs.map +0 -1
  1552. package/dist/search-D6muneha.mjs +0 -448
  1553. package/dist/search-D6muneha.mjs.map +0 -1
  1554. package/dist/secrets-DNgVgz_e.mjs +0 -341
  1555. package/dist/secrets-DNgVgz_e.mjs.map +0 -1
  1556. package/dist/sections-BPCEGYWd.mjs +0 -346
  1557. package/dist/sections-BPCEGYWd.mjs.map +0 -1
  1558. package/dist/seo-BtU70b7l.mjs +0 -114
  1559. package/dist/seo-BtU70b7l.mjs.map +0 -1
  1560. package/dist/seo-rCk6pDwT.mjs +0 -133
  1561. package/dist/seo-rCk6pDwT.mjs.map +0 -1
  1562. package/dist/service-Bpy5iTX0.mjs +0 -150
  1563. package/dist/service-Bpy5iTX0.mjs.map +0 -1
  1564. package/dist/session-user-BQeS2Mrb.mjs +0 -51
  1565. package/dist/session-user-BQeS2Mrb.mjs.map +0 -1
  1566. package/dist/settings-CsoLiwpL.mjs +0 -420
  1567. package/dist/settings-CsoLiwpL.mjs.map +0 -1
  1568. package/dist/settings-DCnWtfSZ.mjs +0 -51
  1569. package/dist/settings-DCnWtfSZ.mjs.map +0 -1
  1570. package/dist/setup-complete-BrZaXpVV.mjs +0 -26
  1571. package/dist/setup-complete-BrZaXpVV.mjs.map +0 -1
  1572. package/dist/setup-nonce-Cb9-884O.mjs +0 -25
  1573. package/dist/setup-nonce-Cb9-884O.mjs.map +0 -1
  1574. package/dist/site-url-DjhYCaep.mjs +0 -16
  1575. package/dist/site-url-DjhYCaep.mjs.map +0 -1
  1576. package/dist/snapshot-C32Xuv3o.mjs +0 -233
  1577. package/dist/snapshot-C32Xuv3o.mjs.map +0 -1
  1578. package/dist/ssrf-Co1GGFZz.mjs +0 -406
  1579. package/dist/ssrf-Co1GGFZz.mjs.map +0 -1
  1580. package/dist/state-C7gCoiHr.mjs +0 -153
  1581. package/dist/state-C7gCoiHr.mjs.map +0 -1
  1582. package/dist/status-DLoBmcDz.mjs +0 -30
  1583. package/dist/status-DLoBmcDz.mjs.map +0 -1
  1584. package/dist/storage-query-CPctdMKX.d.mts +0 -1519
  1585. package/dist/storage-query-CPctdMKX.d.mts.map +0 -1
  1586. package/dist/target-CUKlGrXb.mjs +0 -27
  1587. package/dist/target-CUKlGrXb.mjs.map +0 -1
  1588. package/dist/taxonomies-Bs5dJVDJ.mjs +0 -899
  1589. package/dist/taxonomies-Bs5dJVDJ.mjs.map +0 -1
  1590. package/dist/taxonomies-DjGU22ur.mjs +0 -707
  1591. package/dist/taxonomies-DjGU22ur.mjs.map +0 -1
  1592. package/dist/taxonomy-c1Q8PMFF.mjs +0 -508
  1593. package/dist/taxonomy-c1Q8PMFF.mjs.map +0 -1
  1594. package/dist/tokens-Ns02GAma.mjs +0 -171
  1595. package/dist/tokens-Ns02GAma.mjs.map +0 -1
  1596. package/dist/transport-B8P1xsqk.mjs +0 -136
  1597. package/dist/transport-B8P1xsqk.mjs.map +0 -1
  1598. package/dist/transport-BLHZZcD_.d.mts +0 -42
  1599. package/dist/transport-BLHZZcD_.d.mts.map +0 -1
  1600. package/dist/trusted-proxy-Cg7SuD15.mjs +0 -51
  1601. package/dist/trusted-proxy-Cg7SuD15.mjs.map +0 -1
  1602. package/dist/turnstile-DWCSh_Qc.mjs +0 -53
  1603. package/dist/turnstile-DWCSh_Qc.mjs.map +0 -1
  1604. package/dist/types-B3RkqvDW.mjs +0 -156
  1605. package/dist/types-B3RkqvDW.mjs.map +0 -1
  1606. package/dist/types-BtuppOTV.mjs +0 -16
  1607. package/dist/types-BtuppOTV.mjs.map +0 -1
  1608. package/dist/types-CCR3ivXE.d.mts +0 -363
  1609. package/dist/types-CCR3ivXE.d.mts.map +0 -1
  1610. package/dist/types-CSHgU_-_.mjs +0 -18
  1611. package/dist/types-CSHgU_-_.mjs.map +0 -1
  1612. package/dist/types-CbwqGOXm.d.mts +0 -766
  1613. package/dist/types-CbwqGOXm.d.mts.map +0 -1
  1614. package/dist/types-D4RGIc2I.d.mts +0 -198
  1615. package/dist/types-D4RGIc2I.d.mts.map +0 -1
  1616. package/dist/types-DEHidMEk.d.mts +0 -1637
  1617. package/dist/types-DEHidMEk.d.mts.map +0 -1
  1618. package/dist/types-DQeU2SR7.d.mts +0 -279
  1619. package/dist/types-DQeU2SR7.d.mts.map +0 -1
  1620. package/dist/types-DxQWoQLA.d.mts +0 -264
  1621. package/dist/types-DxQWoQLA.d.mts.map +0 -1
  1622. package/dist/types-FBBnGZ2Y.d.mts +0 -198
  1623. package/dist/types-FBBnGZ2Y.d.mts.map +0 -1
  1624. package/dist/types-ZCnlropY.mjs +0 -69
  1625. package/dist/types-ZCnlropY.mjs.map +0 -1
  1626. package/dist/types-_Qtyawiy.d.mts +0 -124
  1627. package/dist/types-_Qtyawiy.d.mts.map +0 -1
  1628. package/dist/types-gC6FAoa_.d.mts +0 -75
  1629. package/dist/types-gC6FAoa_.d.mts.map +0 -1
  1630. package/dist/types-k--LneIF.mjs +0 -22
  1631. package/dist/types-k--LneIF.mjs.map +0 -1
  1632. package/dist/upload-attempts-2xdnoKGe.mjs +0 -27
  1633. package/dist/upload-attempts-2xdnoKGe.mjs.map +0 -1
  1634. package/dist/url-pattern-3m3reMzr.mjs +0 -33
  1635. package/dist/url-pattern-3m3reMzr.mjs.map +0 -1
  1636. package/dist/user-2R1gceFl.mjs +0 -171
  1637. package/dist/user-2R1gceFl.mjs.map +0 -1
  1638. package/dist/utils-CC2oNGV8.mjs +0 -435
  1639. package/dist/utils-CC2oNGV8.mjs.map +0 -1
  1640. package/dist/validate-CaFSi_Wa.mjs +0 -384
  1641. package/dist/validate-CaFSi_Wa.mjs.map +0 -1
  1642. package/dist/validate-CyQ7I3xF.d.mts +0 -410
  1643. package/dist/validate-CyQ7I3xF.d.mts.map +0 -1
  1644. package/dist/validation-nsX2uixg.mjs +0 -216
  1645. package/dist/validation-nsX2uixg.mjs.map +0 -1
  1646. package/dist/version-DGh4SL8e.mjs +0 -7
  1647. package/dist/version-DGh4SL8e.mjs.map +0 -1
  1648. package/dist/widgets-B7ued6f5.mjs +0 -126
  1649. package/dist/widgets-B7ued6f5.mjs.map +0 -1
  1650. package/dist/wxr-taxonomies-BtH3jYSg.mjs +0 -406
  1651. package/dist/wxr-taxonomies-BtH3jYSg.mjs.map +0 -1
  1652. package/dist/wxr-taxonomies-DU2ZSiGc.d.mts +0 -34
  1653. package/dist/wxr-taxonomies-DU2ZSiGc.d.mts.map +0 -1
  1654. package/dist/zod-generator-DuBjYyrI.mjs +0 -329
  1655. package/dist/zod-generator-DuBjYyrI.mjs.map +0 -1
  1656. /package/dist/{ssrf-BRpTDMV6.mjs → ssrf-DpBH7aOt.mjs} +0 -0
@@ -1,906 +0,0 @@
1
- import { u as __exportAll } from "./runner-CIltKk4i.mjs";
2
- import { t as validateIdentifier } from "./validate-DANX1-Qi.mjs";
3
- import { p as listTablesLike } from "./dialect-helpers-CtYdsX4W.mjs";
4
- import { c as invalidateCollectionCache, s as invalidateBylineObjectCache } from "./object-cache-DlSVbn5Y.mjs";
5
- import { n as chunks, t as SQL_BATCH_SIZE } from "./chunks-DUK-cWXi.mjs";
6
- import { o as decodeCursor, r as EmDashValidationError, s as encodeCursor } from "./types-BkUg2yHx.mjs";
7
- import { t as withTransaction } from "./transaction-BcJO4Tmc.mjs";
8
- import { i as setRequestCacheEntry, n as peekRequestCache, t as clearRequestCacheEntry } from "./request-cache-DaMhSQdx.mjs";
9
- import { n as getBylineFieldDefs } from "./field-defs-cache-Db0pJgqn.mjs";
10
- import { sql } from "kysely";
11
- import { ulid } from "ulidx";
12
-
13
- //#region src/database/repositories/byline.ts
14
- var byline_exports = /* @__PURE__ */ __exportAll({ BylineRepository: () => BylineRepository });
15
- function rowToByline(row) {
16
- return {
17
- id: row.id,
18
- slug: row.slug,
19
- displayName: row.display_name,
20
- bio: row.bio,
21
- avatarMediaId: row.avatar_media_id,
22
- avatarStorageKey: row.avatar_storage_key ?? null,
23
- avatarAlt: row.avatar_alt ?? null,
24
- avatarBlurhash: row.avatar_blurhash ?? null,
25
- avatarDominantColor: row.avatar_dominant_color ?? null,
26
- websiteUrl: row.website_url,
27
- userId: row.user_id,
28
- isGuest: row.is_guest === 1,
29
- createdAt: row.created_at,
30
- updatedAt: row.updated_at,
31
- locale: row.locale,
32
- translationGroup: row.translation_group
33
- };
34
- }
35
- /**
36
- * Merge a single decoded value into a `BylineSummary.customFields` map.
37
- * Centralised so the merge semantics (null storage, JSON.parse failure
38
- * handling) live in one place across both translatable and group-shared
39
- * paths.
40
- *
41
- * A stored row with `value = NULL` (representing an explicit null) is
42
- * surfaced as `null` in `customFields`. A row with a malformed JSON
43
- * payload is dropped silently with a `console.warn` — a corrupted
44
- * payload shouldn't break the entire byline hydration; the field-defs
45
- * cache will let admins replace the value, and the warning makes the
46
- * issue debuggable. (Storage path uses `JSON.stringify`, so the only
47
- * way to get malformed JSON is direct DB tampering or a future
48
- * migration bug.)
49
- */
50
- function assignCustomFieldValue(summary, field, stored) {
51
- const target = summary.customFields ?? {};
52
- if (stored === null) target[field.slug] = null;
53
- else try {
54
- target[field.slug] = JSON.parse(stored);
55
- } catch {
56
- console.warn(`[BylineRepository] dropping malformed JSON for byline=${summary.id} field=${field.slug}: ${stored.slice(0, 60)}`);
57
- return;
58
- }
59
- summary.customFields = target;
60
- }
61
- /**
62
- * Coerce a raw write-path value to `CustomFieldValue`, throwing
63
- * `EmDashValidationError` on type mismatch. `null` clears the field
64
- * (DELETE in the write path).
65
- *
66
- * TODO: `field.required` is not enforced. The admin UI exposes the
67
- * toggle but the backend accepts missing values; design pass needed
68
- * on the enforcement model.
69
- */
70
- function coerceFieldValue(field, raw) {
71
- if (raw === null) return null;
72
- switch (field.type) {
73
- case "string":
74
- case "text":
75
- if (typeof raw !== "string") throw new EmDashValidationError(`Byline field "${field.slug}" expects a string value (received ${typeof raw})`, {
76
- slug: field.slug,
77
- type: field.type,
78
- received: typeof raw
79
- });
80
- return raw;
81
- case "url": {
82
- if (typeof raw !== "string") throw new EmDashValidationError(`Byline field "${field.slug}" expects a string value (received ${typeof raw})`, {
83
- slug: field.slug,
84
- type: field.type,
85
- received: typeof raw
86
- });
87
- if (raw === "") return raw;
88
- let parsed;
89
- try {
90
- parsed = new URL(raw);
91
- } catch {
92
- throw new EmDashValidationError(`Byline field "${field.slug}" expects a valid URL (received "${raw}")`, {
93
- slug: field.slug,
94
- type: field.type,
95
- received: raw
96
- });
97
- }
98
- if (parsed.protocol !== "http:" && parsed.protocol !== "https:") throw new EmDashValidationError(`Byline field "${field.slug}" must use http or https scheme (received "${parsed.protocol}")`, {
99
- slug: field.slug,
100
- type: field.type,
101
- received: raw,
102
- protocol: parsed.protocol
103
- });
104
- return raw;
105
- }
106
- case "boolean":
107
- if (typeof raw !== "boolean") throw new EmDashValidationError(`Byline field "${field.slug}" expects a boolean value (received ${typeof raw})`, {
108
- slug: field.slug,
109
- type: field.type,
110
- received: typeof raw
111
- });
112
- return raw;
113
- case "select": {
114
- if (typeof raw !== "string") throw new EmDashValidationError(`Byline field "${field.slug}" expects a string value (received ${typeof raw})`, {
115
- slug: field.slug,
116
- type: field.type,
117
- received: typeof raw
118
- });
119
- const options = field.validation?.options ?? [];
120
- if (!options.includes(raw)) throw new EmDashValidationError(`Byline field "${field.slug}" value "${raw}" is not one of the registered choices`, {
121
- slug: field.slug,
122
- value: raw,
123
- options
124
- });
125
- return raw;
126
- }
127
- }
128
- }
129
- /**
130
- * Byline repository for content credits.
131
- *
132
- * Bylines are per-locale (migration 040). Translations of the same byline
133
- * share a `translation_group` ULID. `_emdash_content_bylines.byline_id` and
134
- * `ec_*.primary_byline_id` store the translation_group (not a row id) so a
135
- * single credit spans every locale variant of a byline.
136
- *
137
- * The repository does not resolve locale fallbacks on its own — callers
138
- * supply the locale they want. Hydration is strict per locale: a credit at
139
- * locale X renders iff a byline row exists at locale X within the credited
140
- * translation group. This mirrors `TaxonomyRepository.getTermsForEntry` and
141
- * the convention established by PR #916.
142
- *
143
- * Runtime helpers in `packages/core/src/bylines/index.ts` may layer fallback
144
- * resolution on top for the "look up one byline by slug" path, but the
145
- * relation-hydration methods on this class are always strict.
146
- */
147
- var BylineRepository = class {
148
- constructor(db) {
149
- this.db = db;
150
- }
151
- /**
152
- * Merge `customFields` onto each `BylineSummary` produced from the
153
- * given rows. Two batched queries total — one against
154
- * `_emdash_byline_field_values` (keyed by `byline_id`), one against
155
- * `_emdash_byline_field_group_values` (keyed by `translation_group`)
156
- * — both chunked at `SQL_BATCH_SIZE` for D1's bound-parameter cap.
157
- *
158
- * When zero fields are registered, every row gets `customFields = {}`
159
- * with no value-table reads (the field-defs cache returns `[]`).
160
- * Group-shared values are looked up via the row's `translation_group`,
161
- * so every locale sibling of the same byline identity sees the same
162
- * non-translatable value without re-reading per row.
163
- *
164
- * **Duplicate-row handling.** Callers (notably `getContentBylinesMany`
165
- * for list views with repeated authors) can pass the same byline row
166
- * multiple times. We assign values by *iterating both `rows` and
167
- * `summaries` in lockstep by index*, not by deduping into a Map keyed
168
- * on byline id. A Map approach silently drops earlier duplicates' merge
169
- * step (last writer wins, earlier instances keep their initial `{}`).
170
- * Iterating by index gives every duplicate its own merged copy.
171
- *
172
- * Hydration is *strict per row* — values are merged onto whichever
173
- * `BylineRow` produced them. Fallback semantics (e.g. "if no value
174
- * for this locale, show the default-locale value") are not the
175
- * repository's concern; consumers layer them on top if wanted, the
176
- * same way `BylineRepository` doesn't resolve locale fallback for
177
- * the base byline lookup.
178
- */
179
- async withCustomFields(rows) {
180
- const summaries = rows.map(rowToByline);
181
- for (const summary of summaries) summary.customFields = {};
182
- await this.applyCustomFieldsTo(summaries);
183
- return summaries;
184
- }
185
- async withCustomFieldsOne(row) {
186
- if (!row) return null;
187
- const [result] = await this.withCustomFields([row]);
188
- return result ?? null;
189
- }
190
- /**
191
- * Hydrate `customFields` on each `BylineSummary`, mutating in place.
192
- *
193
- * The public entry point for callers that fetch byline rows in
194
- * multiple passes (e.g. `getBylinesForEntries`, which buckets by
195
- * locale and calls `getContentBylinesMany` per bucket) and want a
196
- * single batched hydration over the union of bylines, not one per
197
- * pass. Use with the `skipHydration` option on the read methods to
198
- * defer customFields work to a single call here.
199
- *
200
- * Two batched queries total (translatable + group-shared) regardless
201
- * of how many bylines, locales, or translation_groups are in the
202
- * input — meets the Phase 3 query-count envelope for mixed-locale
203
- * list views even when sibling locales reference disjoint
204
- * translation_groups.
205
- *
206
- * Replaces any existing `customFields` on each summary with a freshly
207
- * fetched map. Callers that want to merge rather than replace should
208
- * not use this entry point.
209
- */
210
- async hydrateBylineCustomFields(summaries) {
211
- for (const summary of summaries) summary.customFields = {};
212
- await this.applyCustomFieldsTo(summaries);
213
- }
214
- /**
215
- * Shared merge engine for `withCustomFields` and
216
- * `hydrateBylineCustomFields`. Reads field defs (cached), batches the
217
- * translatable + group-shared fetches, and walks `summaries` directly
218
- * to apply values.
219
- *
220
- * Iterates `summaries` (not a `summaryById` map) so duplicate
221
- * `BylineSummary` objects sharing the same `id` — e.g. the same
222
- * author credited to multiple entries — each get their own merged
223
- * values. The previous Map-based dedup silently dropped earlier
224
- * duplicates' merge step.
225
- */
226
- async applyCustomFieldsTo(summaries) {
227
- if (summaries.length === 0) return;
228
- const defs = await getBylineFieldDefs(this.db);
229
- if (defs.length === 0) return;
230
- const fieldById = new Map(defs.map((d) => [d.id, d]));
231
- const translatableByByline = /* @__PURE__ */ new Map();
232
- const bylineIds = [...new Set(summaries.map((s) => s.id))];
233
- for (const chunk of chunks(bylineIds, SQL_BATCH_SIZE)) {
234
- const trRows = await this.db.selectFrom("_emdash_byline_field_values").select([
235
- "byline_id",
236
- "field_id",
237
- "value"
238
- ]).where("byline_id", "in", chunk).execute();
239
- for (const trRow of trRows) {
240
- let fieldMap = translatableByByline.get(trRow.byline_id);
241
- if (!fieldMap) {
242
- fieldMap = /* @__PURE__ */ new Map();
243
- translatableByByline.set(trRow.byline_id, fieldMap);
244
- }
245
- fieldMap.set(trRow.field_id, trRow.value);
246
- }
247
- }
248
- const groups = [...new Set(summaries.map((s) => s.translationGroup).filter((g) => typeof g === "string" && g.length > 0))];
249
- const groupByGroup = await this.loadGroupValuesByIds(groups);
250
- for (const summary of summaries) {
251
- const trValues = translatableByByline.get(summary.id);
252
- if (trValues) for (const [fieldId, value] of trValues) {
253
- const field = fieldById.get(fieldId);
254
- if (!field || !field.translatable) continue;
255
- assignCustomFieldValue(summary, field, value);
256
- }
257
- if (summary.translationGroup) {
258
- const grpValues = groupByGroup.get(summary.translationGroup);
259
- if (grpValues) for (const [fieldId, value] of grpValues) {
260
- const field = fieldById.get(fieldId);
261
- if (!field || field.translatable) continue;
262
- assignCustomFieldValue(summary, field, value);
263
- }
264
- }
265
- }
266
- }
267
- /**
268
- * Resolve the group-shared custom-field values for a set of
269
- * translation_groups, sharing work across hydration calls within the
270
- * same request via per-group `requestCached` entries.
271
- *
272
- * The non-translatable storage table (`_emdash_byline_field_group_values`)
273
- * is keyed by `translation_group`, which is locale-agnostic. Combining
274
- * this method with `skipHydration` on `getContentBylinesMany` and a
275
- * single `hydrateBylineCustomFields` call (see
276
- * `getBylinesForEntries`) keeps mixed-locale list hydration to **one**
277
- * batched group-shared SQL per request — even with disjoint
278
- * translation_groups across locale buckets. Solo callers (`findById`,
279
- * `findMany`, etc.) still get the same per-call batching they had
280
- * before; the cache simply means a second call in the same request
281
- * for an overlapping group is free.
282
- *
283
- * Cache key: `byline-field-group-values:${groupId}` — one entry per
284
- * group. Writes use `setRequestCacheEntry` (idempotent, doesn't
285
- * overwrite); `BylineRepository.update` calls `clearRequestCacheEntry`
286
- * after a group-shared write to keep the cache fresh within the same
287
- * request.
288
- */
289
- async loadGroupValuesByIds(groups) {
290
- const result = /* @__PURE__ */ new Map();
291
- if (groups.length === 0) return result;
292
- const missing = [];
293
- for (const g of groups) {
294
- const cached = peekRequestCache(`byline-field-group-values:${g}`);
295
- if (cached) result.set(g, await cached);
296
- else missing.push(g);
297
- }
298
- if (missing.length === 0) return result;
299
- const fetched = /* @__PURE__ */ new Map();
300
- for (const g of missing) fetched.set(g, /* @__PURE__ */ new Map());
301
- for (const chunk of chunks(missing, SQL_BATCH_SIZE)) {
302
- const grpRows = await this.db.selectFrom("_emdash_byline_field_group_values").select([
303
- "translation_group",
304
- "field_id",
305
- "value"
306
- ]).where("translation_group", "in", chunk).execute();
307
- for (const grpRow of grpRows) {
308
- const fieldMap = fetched.get(grpRow.translation_group);
309
- if (!fieldMap) continue;
310
- fieldMap.set(grpRow.field_id, grpRow.value);
311
- }
312
- }
313
- for (const g of missing) {
314
- const m = fetched.get(g);
315
- if (!m) continue;
316
- setRequestCacheEntry(`byline-field-group-values:${g}`, m);
317
- result.set(g, m);
318
- }
319
- return result;
320
- }
321
- /**
322
- * Every byline column plus the avatar's media columns, folded in by the
323
- * same `LEFT JOIN media` the credit-hydration queries use. Only the
324
- * single-row finders select this; `findMany` stays a single-table scan.
325
- */
326
- selectBylineWithAvatar() {
327
- return this.db.selectFrom("_emdash_bylines as b").leftJoin("media as m", "m.id", "b.avatar_media_id").selectAll("b").select([
328
- "m.storage_key as avatar_storage_key",
329
- "m.alt as avatar_alt",
330
- "m.blurhash as avatar_blurhash",
331
- "m.dominant_color as avatar_dominant_color"
332
- ]);
333
- }
334
- async findById(id) {
335
- const row = await this.selectBylineWithAvatar().where("b.id", "=", id).executeTakeFirst();
336
- return this.withCustomFieldsOne(row);
337
- }
338
- /**
339
- * Find a byline by slug. When `locale` is provided, filter by it strictly.
340
- * When omitted, returns the lowest-locale-code match (deterministic across
341
- * calls). Mirrors `TaxonomyRepository.findBySlug`.
342
- */
343
- async findBySlug(slug, options) {
344
- let query = this.selectBylineWithAvatar().where("b.slug", "=", slug);
345
- if (options?.locale !== void 0) query = query.where("b.locale", "=", options.locale);
346
- const row = await query.orderBy("b.locale", "asc").executeTakeFirst();
347
- return this.withCustomFieldsOne(row);
348
- }
349
- /**
350
- * Find the byline linked to a CMS user. Post-migration 040 the partial
351
- * unique on user_id is `(user_id, locale)`, so `locale` is required to
352
- * disambiguate when multiple locale variants exist. When omitted, returns
353
- * the lowest-locale-code match.
354
- */
355
- async findByUserId(userId, options) {
356
- let query = this.selectBylineWithAvatar().where("b.user_id", "=", userId);
357
- if (options?.locale !== void 0) query = query.where("b.locale", "=", options.locale);
358
- const row = await query.orderBy("b.locale", "asc").executeTakeFirst();
359
- return this.withCustomFieldsOne(row);
360
- }
361
- async findMany(options) {
362
- const limit = Math.min(Math.max(options?.limit ?? 50, 1), 100);
363
- let query = this.db.selectFrom("_emdash_bylines").selectAll().orderBy("created_at", "desc").orderBy("id", "desc").limit(limit + 1);
364
- if (options?.search) {
365
- const term = `%${options.search.replaceAll("\\", "\\\\").replaceAll("%", "\\%").replaceAll("_", "\\_")}%`;
366
- query = query.where((eb) => eb.or([eb("display_name", "like", term), eb("slug", "like", term)]));
367
- }
368
- if (options?.isGuest !== void 0) query = query.where("is_guest", "=", options.isGuest ? 1 : 0);
369
- if (options?.userId !== void 0) query = query.where("user_id", "=", options.userId);
370
- if (options?.locale !== void 0) query = query.where("locale", "=", options.locale);
371
- if (options?.cursor) {
372
- const decoded = decodeCursor(options.cursor);
373
- query = query.where((eb) => eb.or([eb("created_at", "<", decoded.orderValue), eb.and([eb("created_at", "=", decoded.orderValue), eb("id", "<", decoded.id)])]));
374
- }
375
- const rows = await query.execute();
376
- const pageRows = rows.slice(0, limit);
377
- const items = await this.withCustomFields(pageRows);
378
- const result = { items };
379
- if (rows.length > limit) {
380
- const last = items.at(-1);
381
- if (last) result.nextCursor = encodeCursor(last.createdAt, last.id);
382
- }
383
- return result;
384
- }
385
- /**
386
- * List every sibling row in `translation_group`. Used by the admin
387
- * `TranslationsPanel` to render one entry per configured locale.
388
- */
389
- async listTranslations(id) {
390
- const anchor = await this.findById(id);
391
- if (!anchor) return [];
392
- const group = anchor.translationGroup ?? anchor.id;
393
- return this.findByTranslationGroup(group);
394
- }
395
- /**
396
- * Direct lookup by `translation_group`. Returns every locale variant of a
397
- * byline, ordered by locale code (deterministic).
398
- */
399
- async findByTranslationGroup(translationGroup) {
400
- const rows = await this.db.selectFrom("_emdash_bylines").selectAll().where("translation_group", "=", translationGroup).orderBy("locale", "asc").execute();
401
- return this.withCustomFields(rows);
402
- }
403
- /**
404
- * Validate a `customFields` input map into a write list before any row
405
- * write — throws `EmDashValidationError` on unknown slugs, type
406
- * mismatches, or select-choice misses.
407
- */
408
- async resolveCustomFieldWrites(customFields) {
409
- if (!customFields || Object.keys(customFields).length === 0) return [];
410
- const defs = await getBylineFieldDefs(this.db);
411
- const bySlug = new Map(defs.map((d) => [d.slug, d]));
412
- const writes = [];
413
- for (const [slug, raw] of Object.entries(customFields)) {
414
- const field = bySlug.get(slug);
415
- if (!field) throw new EmDashValidationError(`Unknown byline custom field "${slug}"`, {
416
- slug,
417
- registered: defs.map((d) => d.slug)
418
- });
419
- writes.push({
420
- field,
421
- value: coerceFieldValue(field, raw)
422
- });
423
- }
424
- return writes;
425
- }
426
- /**
427
- * Write a validated custom-field list against a byline row inside the
428
- * caller's transaction. Per-field writes route to
429
- * `_emdash_byline_field_values` (translatable) or
430
- * `_emdash_byline_field_group_values` (group-shared); `null` clears.
431
- * Returns `true` when any group-shared row was touched so the caller
432
- * can invalidate the per-request cache post-commit.
433
- */
434
- async applyCustomFieldWritesInTrx(trx, bylineId, translationGroup, writes, now) {
435
- if (writes.length === 0) return false;
436
- let touchedGroupShared = false;
437
- for (const { field, value } of writes) {
438
- if (!field.translatable) touchedGroupShared = true;
439
- if (field.translatable) if (value === null) await trx.deleteFrom("_emdash_byline_field_values").where("byline_id", "=", bylineId).where("field_id", "=", field.id).execute();
440
- else {
441
- const encoded = JSON.stringify(value);
442
- await trx.insertInto("_emdash_byline_field_values").values({
443
- byline_id: bylineId,
444
- field_id: field.id,
445
- value: encoded,
446
- created_at: now,
447
- updated_at: now
448
- }).onConflict((oc) => oc.columns(["byline_id", "field_id"]).doUpdateSet({
449
- value: encoded,
450
- updated_at: now
451
- })).execute();
452
- }
453
- else if (value === null) await trx.deleteFrom("_emdash_byline_field_group_values").where("translation_group", "=", translationGroup).where("field_id", "=", field.id).execute();
454
- else {
455
- const encoded = JSON.stringify(value);
456
- await trx.insertInto("_emdash_byline_field_group_values").values({
457
- translation_group: translationGroup,
458
- field_id: field.id,
459
- value: encoded,
460
- created_at: now,
461
- updated_at: now
462
- }).onConflict((oc) => oc.columns(["translation_group", "field_id"]).doUpdateSet({
463
- value: encoded,
464
- updated_at: now
465
- })).execute();
466
- }
467
- }
468
- return touchedGroupShared;
469
- }
470
- async create(input) {
471
- const id = ulid();
472
- const now = (/* @__PURE__ */ new Date()).toISOString();
473
- const customFieldWrites = await this.resolveCustomFieldWrites(input.customFields);
474
- let translationGroup = id;
475
- if (input.translationOf) {
476
- const source = await this.findById(input.translationOf);
477
- if (!source) throw new Error("Source byline for translation not found");
478
- translationGroup = source.translationGroup ?? source.id;
479
- }
480
- let touchedGroupShared = false;
481
- await withTransaction(this.db, async (trx) => {
482
- await trx.insertInto("_emdash_bylines").values({
483
- id,
484
- slug: input.slug,
485
- display_name: input.displayName,
486
- bio: input.bio ?? null,
487
- avatar_media_id: input.avatarMediaId ?? null,
488
- website_url: input.websiteUrl ?? null,
489
- user_id: input.userId ?? null,
490
- is_guest: input.isGuest ? 1 : 0,
491
- created_at: now,
492
- updated_at: now,
493
- ...input.locale !== void 0 ? { locale: input.locale } : {},
494
- translation_group: translationGroup
495
- }).execute();
496
- touchedGroupShared = await this.applyCustomFieldWritesInTrx(trx, id, translationGroup, customFieldWrites, now);
497
- });
498
- if (touchedGroupShared) clearRequestCacheEntry(`byline-field-group-values:${translationGroup}`);
499
- invalidateBylineObjectCache();
500
- const byline = await this.findById(id);
501
- if (!byline) throw new Error("Failed to create byline");
502
- return byline;
503
- }
504
- async update(id, input) {
505
- const existing = await this.findById(id);
506
- if (!existing) return null;
507
- const customFieldWrites = await this.resolveCustomFieldWrites(input.customFields);
508
- const now = (/* @__PURE__ */ new Date()).toISOString();
509
- const updates = { updated_at: now };
510
- if (input.slug !== void 0) updates.slug = input.slug;
511
- if (input.displayName !== void 0) updates.display_name = input.displayName;
512
- if (input.bio !== void 0) updates.bio = input.bio;
513
- if (input.avatarMediaId !== void 0) updates.avatar_media_id = input.avatarMediaId;
514
- if (input.websiteUrl !== void 0) updates.website_url = input.websiteUrl;
515
- if (input.userId !== void 0) updates.user_id = input.userId;
516
- if (input.isGuest !== void 0) updates.is_guest = input.isGuest ? 1 : 0;
517
- const group = existing.translationGroup ?? existing.id;
518
- let touchedGroupShared = false;
519
- await withTransaction(this.db, async (trx) => {
520
- await trx.updateTable("_emdash_bylines").set(updates).where("id", "=", id).execute();
521
- touchedGroupShared = await this.applyCustomFieldWritesInTrx(trx, id, group, customFieldWrites, now);
522
- });
523
- if (touchedGroupShared) clearRequestCacheEntry(`byline-field-group-values:${group}`);
524
- invalidateBylineObjectCache();
525
- return await this.findById(id);
526
- }
527
- /**
528
- * Delete a byline row. When this row is the last sibling in its
529
- * translation group, also drops every junction row pointing at the group,
530
- * clears `primary_byline_id` references, and removes the byline's
531
- * non-translatable custom-field values. When other siblings remain in
532
- * the group, junctions, `primary_byline_id` pointers, and group-shared
533
- * custom-field values stay intact — the credit (and its shared metadata)
534
- * lives on at other locales.
535
- *
536
- * **Application-level cascade.** The byline domain has standardised on
537
- * app-level cascade rather than trusting FK ON DELETE CASCADE, partly
538
- * because migration 040 had to strip its own FK to support the
539
- * translation_group remap (#1021), and partly so cleanup doesn't
540
- * depend on `PRAGMA foreign_keys = ON` (set in production via
541
- * `connection.ts:60`, but easy to bypass in tests, scripts, and
542
- * one-off tools). Every byline-related deletion table is cleared
543
- * explicitly here:
544
- *
545
- * - `_emdash_byline_field_values` (per-byline translatable values) —
546
- * migration 041 declares FK ON DELETE CASCADE on `byline_id`; the
547
- * explicit DELETE removes the dependency on that pragma.
548
- * - `_emdash_content_bylines` — migration 040 dropped its FK.
549
- * - `ec_*.primary_byline_id` — never had an FK.
550
- * - `_emdash_byline_field_group_values` (translation-group-keyed) —
551
- * keyed by a text column with no FK to bylines, so app-level cleanup
552
- * is the only path.
553
- *
554
- * The FKs that remain (migration 041) serve as defense-in-depth.
555
- */
556
- async delete(id) {
557
- const existing = await this.findById(id);
558
- if (!existing) return false;
559
- const group = existing.translationGroup ?? existing.id;
560
- await withTransaction(this.db, async (trx) => {
561
- await trx.deleteFrom("_emdash_byline_field_values").where("byline_id", "=", id).execute();
562
- await trx.deleteFrom("_emdash_bylines").where("id", "=", id).execute();
563
- const remaining = await trx.selectFrom("_emdash_bylines").select(({ fn }) => [fn.count("id").as("count")]).where("translation_group", "=", group).executeTakeFirst();
564
- if (Number(remaining?.count ?? 0) > 0) return;
565
- await trx.deleteFrom("_emdash_content_bylines").where("byline_id", "=", group).execute();
566
- await trx.deleteFrom("_emdash_byline_field_group_values").where("translation_group", "=", group).execute();
567
- const tableNames = await listTablesLike(trx, "ec_%");
568
- for (const tableName of tableNames) {
569
- validateIdentifier(tableName, "content table");
570
- await sql`
571
- UPDATE ${sql.ref(tableName)}
572
- SET primary_byline_id = NULL
573
- WHERE primary_byline_id = ${group}
574
- `.execute(trx);
575
- }
576
- });
577
- invalidateBylineObjectCache();
578
- return true;
579
- }
580
- /**
581
- * Strict per-locale credit hydration. Joins `_emdash_content_bylines` to
582
- * `_emdash_bylines` on `translation_group = byline_id`, then filters to
583
- * the requested locale. Credits whose translation group lacks a row at
584
- * the requested locale are omitted — callers wanting fallback behaviour
585
- * apply it themselves. Mirrors `TaxonomyRepository.getTermsForEntry`.
586
- */
587
- async getContentBylines(collectionSlug, contentId, options) {
588
- let query = this.db.selectFrom("_emdash_content_bylines as cb").innerJoin("_emdash_bylines as b", "b.translation_group", "cb.byline_id").leftJoin("media as m", "m.id", "b.avatar_media_id").select([
589
- "cb.sort_order as sort_order",
590
- "cb.role_label as role_label",
591
- "b.id as id",
592
- "b.slug as slug",
593
- "b.display_name as display_name",
594
- "b.bio as bio",
595
- "b.avatar_media_id as avatar_media_id",
596
- "m.storage_key as avatar_storage_key",
597
- "m.alt as avatar_alt",
598
- "m.blurhash as avatar_blurhash",
599
- "m.dominant_color as avatar_dominant_color",
600
- "b.website_url as website_url",
601
- "b.user_id as user_id",
602
- "b.is_guest as is_guest",
603
- "b.created_at as created_at",
604
- "b.updated_at as updated_at",
605
- "b.locale as locale",
606
- "b.translation_group as translation_group"
607
- ]).where("cb.collection_slug", "=", collectionSlug).where("cb.content_id", "=", contentId).orderBy("cb.sort_order", "asc");
608
- if (options?.locale !== void 0) query = query.where("b.locale", "=", options.locale);
609
- const rows = await query.execute();
610
- const bylineRows = rows.map((row) => ({
611
- id: row.id,
612
- slug: row.slug,
613
- display_name: row.display_name,
614
- bio: row.bio,
615
- avatar_media_id: row.avatar_media_id,
616
- avatar_storage_key: row.avatar_storage_key,
617
- avatar_alt: row.avatar_alt,
618
- avatar_blurhash: row.avatar_blurhash,
619
- avatar_dominant_color: row.avatar_dominant_color,
620
- website_url: row.website_url,
621
- user_id: row.user_id,
622
- is_guest: row.is_guest,
623
- created_at: row.created_at,
624
- updated_at: row.updated_at,
625
- locale: row.locale,
626
- translation_group: row.translation_group
627
- }));
628
- const hydrated = await this.withCustomFields(bylineRows);
629
- return rows.map((row, i) => {
630
- const byline = hydrated[i];
631
- if (!byline) throw new Error("getContentBylines: hydration row count mismatch");
632
- return {
633
- byline,
634
- sortOrder: row.sort_order,
635
- roleLabel: row.role_label
636
- };
637
- });
638
- }
639
- /**
640
- * Does this entry have any explicit byline credits — at any locale?
641
- *
642
- * Used to disambiguate "no credits exist" (fall back to author-linked
643
- * byline) from "credits exist but don't resolve at the requested locale"
644
- * (strict per-locale model: render no byline). Without this check the
645
- * locale-strict hydration would silently turn a missing translation into
646
- * an author-inferred byline, contradicting editorial intent.
647
- */
648
- async hasContentBylines(collectionSlug, contentId) {
649
- return await this.db.selectFrom("_emdash_content_bylines").select("id").where("collection_slug", "=", collectionSlug).where("content_id", "=", contentId).limit(1).executeTakeFirst() !== void 0;
650
- }
651
- /**
652
- * Batch variant of `hasContentBylines`. Returns the set of content IDs
653
- * that have at least one junction row (locale-agnostic).
654
- */
655
- async hasContentBylinesMany(collectionSlug, contentIds) {
656
- const result = /* @__PURE__ */ new Set();
657
- if (contentIds.length === 0) return result;
658
- const uniqueContentIds = [...new Set(contentIds)];
659
- for (const chunk of chunks(uniqueContentIds, SQL_BATCH_SIZE)) {
660
- const rows = await this.db.selectFrom("_emdash_content_bylines").select("content_id").distinct().where("collection_slug", "=", collectionSlug).where("content_id", "in", chunk).execute();
661
- for (const row of rows) result.add(row.content_id);
662
- }
663
- return result;
664
- }
665
- /**
666
- * Batch variant of `getContentBylines`. Same strict-per-locale semantics
667
- * applied to the requested locale (single value, not per-entry).
668
- *
669
- * When callers need per-entry-locale filtering (e.g. a list endpoint
670
- * returning entries at mixed locales), they should group the input ids by
671
- * the entry's locale and call this method once per group.
672
- *
673
- * When the caller will issue multiple `getContentBylinesMany` calls in
674
- * one request (e.g. per locale bucket) and wants a *single* batched
675
- * customFields hydration over the union of returned bylines, pass
676
- * `skipHydration: true` on each call and finish with
677
- * `hydrateBylineCustomFields(allBylines)`. The returned bylines carry
678
- * `customFields = {}` until that hydration call runs — matching the
679
- * "always populated" invariant from AC #6 — so callers that forget to
680
- * hydrate get an empty map rather than `undefined`.
681
- */
682
- async getContentBylinesMany(collectionSlug, contentIds, options) {
683
- const result = /* @__PURE__ */ new Map();
684
- if (contentIds.length === 0) return result;
685
- const uniqueContentIds = [...new Set(contentIds)];
686
- for (const chunk of chunks(uniqueContentIds, SQL_BATCH_SIZE)) {
687
- let query = this.db.selectFrom("_emdash_content_bylines as cb").innerJoin("_emdash_bylines as b", "b.translation_group", "cb.byline_id").leftJoin("media as m", "m.id", "b.avatar_media_id").select([
688
- "cb.content_id as content_id",
689
- "cb.sort_order as sort_order",
690
- "cb.role_label as role_label",
691
- "b.id as id",
692
- "b.slug as slug",
693
- "b.display_name as display_name",
694
- "b.bio as bio",
695
- "b.avatar_media_id as avatar_media_id",
696
- "m.storage_key as avatar_storage_key",
697
- "m.alt as avatar_alt",
698
- "m.blurhash as avatar_blurhash",
699
- "m.dominant_color as avatar_dominant_color",
700
- "b.website_url as website_url",
701
- "b.user_id as user_id",
702
- "b.is_guest as is_guest",
703
- "b.created_at as created_at",
704
- "b.updated_at as updated_at",
705
- "b.locale as locale",
706
- "b.translation_group as translation_group"
707
- ]).where("cb.collection_slug", "=", collectionSlug).where("cb.content_id", "in", chunk).orderBy("cb.sort_order", "asc");
708
- if (options?.locale !== void 0) query = query.where("b.locale", "=", options.locale);
709
- const rows = await query.execute();
710
- const bylineRows = rows.map((row) => ({
711
- id: row.id,
712
- slug: row.slug,
713
- display_name: row.display_name,
714
- bio: row.bio,
715
- avatar_media_id: row.avatar_media_id,
716
- avatar_storage_key: row.avatar_storage_key,
717
- avatar_alt: row.avatar_alt,
718
- avatar_blurhash: row.avatar_blurhash,
719
- avatar_dominant_color: row.avatar_dominant_color,
720
- website_url: row.website_url,
721
- user_id: row.user_id,
722
- is_guest: row.is_guest,
723
- created_at: row.created_at,
724
- updated_at: row.updated_at,
725
- locale: row.locale,
726
- translation_group: row.translation_group
727
- }));
728
- let bylines;
729
- if (options?.skipHydration === true) {
730
- bylines = bylineRows.map(rowToByline);
731
- for (const b of bylines) b.customFields = {};
732
- } else bylines = await this.withCustomFields(bylineRows);
733
- for (let i = 0; i < rows.length; i++) {
734
- const row = rows[i];
735
- const byline = bylines[i];
736
- if (!row || !byline) continue;
737
- const contentId = row.content_id;
738
- const credit = {
739
- byline,
740
- sortOrder: row.sort_order,
741
- roleLabel: row.role_label
742
- };
743
- const existing = result.get(contentId);
744
- if (existing) existing.push(credit);
745
- else result.set(contentId, [credit]);
746
- }
747
- }
748
- return result;
749
- }
750
- /**
751
- * Batch-fetch byline profiles linked to user IDs in a single query.
752
- * Strict-locale variant of `findByUserId`.
753
- *
754
- * `skipHydration: true` returns bylines with `customFields = {}` so
755
- * callers issuing multiple `findByUserIds` calls in one request (e.g.
756
- * the per-locale-bucket author-fallback path in `getBylinesForEntries`)
757
- * can defer customFields hydration to a single batched
758
- * `hydrateBylineCustomFields` call across the union — keeping the
759
- * Phase 3 query-count envelope at "+1 group-shared query per
760
- * hydration pass" even when buckets fetch disjoint author bylines.
761
- */
762
- async findByUserIds(userIds, options) {
763
- const result = /* @__PURE__ */ new Map();
764
- if (userIds.length === 0) return result;
765
- for (const chunk of chunks(userIds, SQL_BATCH_SIZE)) {
766
- let query = this.db.selectFrom("_emdash_bylines as b").leftJoin("media as m", "m.id", "b.avatar_media_id").select([
767
- "b.id as id",
768
- "b.slug as slug",
769
- "b.display_name as display_name",
770
- "b.bio as bio",
771
- "b.avatar_media_id as avatar_media_id",
772
- "m.storage_key as avatar_storage_key",
773
- "m.alt as avatar_alt",
774
- "m.blurhash as avatar_blurhash",
775
- "m.dominant_color as avatar_dominant_color",
776
- "b.website_url as website_url",
777
- "b.user_id as user_id",
778
- "b.is_guest as is_guest",
779
- "b.created_at as created_at",
780
- "b.updated_at as updated_at",
781
- "b.locale as locale",
782
- "b.translation_group as translation_group"
783
- ]).where("b.user_id", "in", chunk);
784
- if (options?.locale !== void 0) query = query.where("b.locale", "=", options.locale);
785
- const rows = await query.execute();
786
- let bylines;
787
- if (options?.skipHydration === true) {
788
- bylines = rows.map(rowToByline);
789
- for (const b of bylines) b.customFields = {};
790
- } else bylines = await this.withCustomFields(rows);
791
- for (let i = 0; i < rows.length; i++) {
792
- const row = rows[i];
793
- const summary = bylines[i];
794
- if (!row || !summary || !row.user_id) continue;
795
- result.set(row.user_id, summary);
796
- }
797
- }
798
- return result;
799
- }
800
- /**
801
- * Clone every junction row from `sourceContentId` to `targetContentId`,
802
- * preserving `sort_order` and `role_label`. Used by the content
803
- * translation flow: a newly created translation inherits the source's
804
- * byline credits at the storage level. Because the junction stores
805
- * `translation_group` (not a row id), the copy is locale-agnostic — the
806
- * credits resolve to whichever locale variants of each byline exist when
807
- * the translated entry is hydrated.
808
- *
809
- * No-op when the source has no credits. Skips when the target already
810
- * has credits (idempotent for re-runs).
811
- */
812
- async copyContentBylines(collection, sourceContentId, targetContentId) {
813
- validateIdentifier(collection, "collection slug");
814
- const tableName = `ec_${collection}`;
815
- validateIdentifier(tableName, "content table");
816
- if (await this.db.selectFrom("_emdash_content_bylines").select("id").where("collection_slug", "=", collection).where("content_id", "=", targetContentId).executeTakeFirst()) return;
817
- const sourceRows = await this.db.selectFrom("_emdash_content_bylines").select([
818
- "byline_id",
819
- "sort_order",
820
- "role_label"
821
- ]).where("collection_slug", "=", collection).where("content_id", "=", sourceContentId).orderBy("sort_order", "asc").execute();
822
- if (sourceRows.length === 0) return;
823
- const now = (/* @__PURE__ */ new Date()).toISOString();
824
- await this.db.insertInto("_emdash_content_bylines").values(sourceRows.map((row) => ({
825
- id: ulid(),
826
- collection_slug: collection,
827
- content_id: targetContentId,
828
- byline_id: row.byline_id,
829
- sort_order: row.sort_order,
830
- role_label: row.role_label,
831
- created_at: now
832
- }))).execute();
833
- const firstByline = sourceRows[0]?.byline_id ?? null;
834
- await sql`
835
- UPDATE ${sql.ref(tableName)}
836
- SET primary_byline_id = ${firstByline}
837
- WHERE id = ${targetContentId}
838
- `.execute(this.db);
839
- invalidateCollectionCache(collection);
840
- }
841
- /**
842
- * Replace the set of byline credits on a content entry. Accepts row ids
843
- * at the wire (consistent with how the admin sends them), translates
844
- * each to its `translation_group` on write, and stores the group in
845
- * `_emdash_content_bylines.byline_id` and `ec_*.primary_byline_id`.
846
- *
847
- * The returned credits are hydrated with strict-locale matching at the
848
- * locale of the rows the caller supplied (i.e. the locale of the byline
849
- * each `bylineId` resolves to) — adequate for the autosave round-trip,
850
- * which then re-hydrates the entry against its own locale separately.
851
- */
852
- async setContentBylines(collectionSlug, contentId, inputBylines) {
853
- validateIdentifier(collectionSlug, "collection slug");
854
- const tableName = `ec_${collectionSlug}`;
855
- validateIdentifier(tableName, "content table");
856
- const idToGroup = /* @__PURE__ */ new Map();
857
- if (inputBylines.length > 0) {
858
- const wireIds = [...new Set(inputBylines.map((item) => item.bylineId))];
859
- const rows = await this.db.selectFrom("_emdash_bylines").select(["id", "translation_group"]).where("id", "in", wireIds).execute();
860
- if (rows.length !== wireIds.length) throw new Error("One or more byline IDs do not exist");
861
- for (const row of rows) idToGroup.set(row.id, row.translation_group ?? row.id);
862
- }
863
- const seenGroups = /* @__PURE__ */ new Set();
864
- const bylines = [];
865
- for (const item of inputBylines) {
866
- const group = idToGroup.get(item.bylineId);
867
- if (!group) throw new Error(`Missing translation_group for byline ${item.bylineId}`);
868
- if (seenGroups.has(group)) continue;
869
- seenGroups.add(group);
870
- bylines.push({
871
- ...item,
872
- group
873
- });
874
- }
875
- await this.db.deleteFrom("_emdash_content_bylines").where("collection_slug", "=", collectionSlug).where("content_id", "=", contentId).execute();
876
- for (let i = 0; i < bylines.length; i++) {
877
- const item = bylines[i];
878
- if (!item) continue;
879
- await this.db.insertInto("_emdash_content_bylines").values({
880
- id: ulid(),
881
- collection_slug: collectionSlug,
882
- content_id: contentId,
883
- byline_id: item.group,
884
- sort_order: i,
885
- role_label: item.roleLabel ?? null,
886
- created_at: (/* @__PURE__ */ new Date()).toISOString()
887
- }).execute();
888
- }
889
- const primaryGroup = bylines[0]?.group ?? null;
890
- await sql`
891
- UPDATE ${sql.ref(tableName)}
892
- SET primary_byline_id = ${primaryGroup}
893
- WHERE id = ${contentId}
894
- `.execute(this.db);
895
- invalidateCollectionCache(collectionSlug);
896
- return await this.getContentBylines(collectionSlug, contentId);
897
- }
898
- async deleteContentBylines(collectionSlug, contentId) {
899
- const result = await this.db.deleteFrom("_emdash_content_bylines").where("collection_slug", "=", collectionSlug).where("content_id", "=", contentId).executeTakeFirst();
900
- return Number(result.numDeletedRows ?? 0);
901
- }
902
- };
903
-
904
- //#endregion
905
- export { byline_exports as n, BylineRepository as t };
906
- //# sourceMappingURL=byline-C8ndlnP0.mjs.map