emdash 1.0.1 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1267) hide show
  1. package/dist/action-token-AgOs1UWD.mjs +26 -0
  2. package/dist/action-token-AgOs1UWD.mjs.map +1 -0
  3. package/dist/activation-xomsCMJg.mjs +387 -0
  4. package/dist/activation-xomsCMJg.mjs.map +1 -0
  5. package/dist/adapters-DM1oyHIN.d.mts +173 -0
  6. package/dist/adapters-DM1oyHIN.d.mts.map +1 -0
  7. package/dist/allowed-origins-CFtudhyw.mjs +116 -0
  8. package/dist/allowed-origins-CFtudhyw.mjs.map +1 -0
  9. package/dist/api/route-utils.d.mts +4 -4
  10. package/dist/api/route-utils.mjs +48 -47
  11. package/dist/api/route-utils.mjs.map +1 -1
  12. package/dist/api/schemas/index.d.mts +2 -2
  13. package/dist/api/schemas/index.mjs +10 -10
  14. package/dist/api-CltsXhiX.mjs +4980 -0
  15. package/dist/api-CltsXhiX.mjs.map +1 -0
  16. package/dist/api-tokens-P3mAaQgr.mjs +166 -0
  17. package/dist/api-tokens-P3mAaQgr.mjs.map +1 -0
  18. package/dist/apply-Q7uvzBWW.mjs +1680 -0
  19. package/dist/apply-Q7uvzBWW.mjs.map +1 -0
  20. package/dist/approvals-DycwI6lZ.mjs +460 -0
  21. package/dist/approvals-DycwI6lZ.mjs.map +1 -0
  22. package/dist/artifact-fetch-CWxyELVI.mjs +659 -0
  23. package/dist/artifact-fetch-CWxyELVI.mjs.map +1 -0
  24. package/dist/artifacts-UzWbysb8.mjs +307 -0
  25. package/dist/artifacts-UzWbysb8.mjs.map +1 -0
  26. package/dist/astro/index.d.mts +14 -14
  27. package/dist/astro/index.d.mts.map +1 -1
  28. package/dist/astro/index.mjs +38 -12
  29. package/dist/astro/index.mjs.map +1 -1
  30. package/dist/astro/middleware/auth.d.mts +12 -12
  31. package/dist/astro/middleware/auth.mjs +12 -11
  32. package/dist/astro/middleware/auth.mjs.map +1 -1
  33. package/dist/astro/middleware/media-usage-write-fence.mjs +6 -6
  34. package/dist/astro/middleware/redirect.d.mts.map +1 -1
  35. package/dist/astro/middleware/redirect.mjs +9 -22
  36. package/dist/astro/middleware/redirect.mjs.map +1 -1
  37. package/dist/astro/middleware/request-context.d.mts.map +1 -1
  38. package/dist/astro/middleware/request-context.mjs +33 -21
  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 +203 -120
  44. package/dist/astro/middleware.mjs.map +1 -1
  45. package/dist/astro/routes/api/admin/allowed-domains/_domain_.mjs +15 -15
  46. package/dist/astro/routes/api/admin/allowed-domains/index.mjs +15 -15
  47. package/dist/astro/routes/api/admin/api-tokens/_id_.mjs +7 -7
  48. package/dist/astro/routes/api/admin/api-tokens/index.mjs +8 -8
  49. package/dist/astro/routes/api/admin/byline-fields/_slug_/usage.mjs +7 -7
  50. package/dist/astro/routes/api/admin/byline-fields/_slug_.mjs +17 -17
  51. package/dist/astro/routes/api/admin/byline-fields/index.mjs +17 -17
  52. package/dist/astro/routes/api/admin/byline-fields/reorder.mjs +17 -17
  53. package/dist/astro/routes/api/admin/bylines/_id_/index.mjs +22 -22
  54. package/dist/astro/routes/api/admin/bylines/_id_/translations.mjs +22 -23
  55. package/dist/astro/routes/api/admin/bylines/_id_/translations.mjs.map +1 -1
  56. package/dist/astro/routes/api/admin/bylines/index.mjs +23 -23
  57. package/dist/astro/routes/api/admin/bylines/index.mjs.map +1 -1
  58. package/dist/astro/routes/api/admin/comments/_id_/status.mjs +19 -19
  59. package/dist/astro/routes/api/admin/comments/_id_.mjs +8 -8
  60. package/dist/astro/routes/api/admin/comments/bulk.mjs +18 -18
  61. package/dist/astro/routes/api/admin/comments/counts.mjs +8 -8
  62. package/dist/astro/routes/api/admin/comments/index.mjs +18 -18
  63. package/dist/astro/routes/api/admin/core-update.mjs +8 -8
  64. package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.mjs +7 -7
  65. package/dist/astro/routes/api/admin/hooks/exclusive/index.mjs +6 -6
  66. package/dist/astro/routes/api/admin/media-usage/activation.mjs +21 -21
  67. package/dist/astro/routes/api/admin/media-usage/collection-deletions/index.mjs +22 -22
  68. package/dist/astro/routes/api/admin/media-usage/collection-deletions/retry.mjs +22 -22
  69. package/dist/astro/routes/api/admin/media-usage/progress.mjs +23 -23
  70. package/dist/astro/routes/api/admin/media-usage/repair.mjs +29 -29
  71. package/dist/astro/routes/api/admin/media-usage/work/index.mjs +22 -22
  72. package/dist/astro/routes/api/admin/media-usage/work/retry.mjs +22 -22
  73. package/dist/astro/routes/api/admin/oauth-clients/_id_.mjs +7 -7
  74. package/dist/astro/routes/api/admin/oauth-clients/index.mjs +7 -7
  75. package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs +9 -9
  76. package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs +9 -9
  77. package/dist/astro/routes/api/admin/plugins/_id_/index.mjs +72 -71
  78. package/dist/astro/routes/api/admin/plugins/_id_/index.mjs.map +1 -1
  79. package/dist/astro/routes/api/admin/plugins/_id_/mcp.mjs +8 -8
  80. package/dist/astro/routes/api/admin/plugins/_id_/settings.mjs +70 -69
  81. package/dist/astro/routes/api/admin/plugins/_id_/settings.mjs.map +1 -1
  82. package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs +71 -70
  83. package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs.map +1 -1
  84. package/dist/astro/routes/api/admin/plugins/_id_/update.mjs +81 -80
  85. package/dist/astro/routes/api/admin/plugins/_id_/update.mjs.map +1 -1
  86. package/dist/astro/routes/api/admin/plugins/index.mjs +71 -70
  87. package/dist/astro/routes/api/admin/plugins/index.mjs.map +1 -1
  88. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.mjs +8 -8
  89. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs +70 -69
  90. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs.map +1 -1
  91. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs +80 -79
  92. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs.map +1 -1
  93. package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs +70 -69
  94. package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs.map +1 -1
  95. package/dist/astro/routes/api/admin/plugins/registry/_id_/uninstall.mjs +71 -70
  96. package/dist/astro/routes/api/admin/plugins/registry/_id_/uninstall.mjs.map +1 -1
  97. package/dist/astro/routes/api/admin/plugins/registry/_id_/update.mjs +82 -81
  98. package/dist/astro/routes/api/admin/plugins/registry/_id_/update.mjs.map +1 -1
  99. package/dist/astro/routes/api/admin/plugins/registry/artifact.mjs +10 -10
  100. package/dist/astro/routes/api/admin/plugins/registry/install.mjs +73 -72
  101. package/dist/astro/routes/api/admin/plugins/registry/install.mjs.map +1 -1
  102. package/dist/astro/routes/api/admin/plugins/registry/publisher-handle.mjs +8 -8
  103. package/dist/astro/routes/api/admin/plugins/registry/verify.mjs +71 -70
  104. package/dist/astro/routes/api/admin/plugins/registry/verify.mjs.map +1 -1
  105. package/dist/astro/routes/api/admin/plugins/updates.mjs +70 -69
  106. package/dist/astro/routes/api/admin/plugins/updates.mjs.map +1 -1
  107. package/dist/astro/routes/api/admin/scheduled-policy-rejections/_collection_/_id_.mjs +6 -6
  108. package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs +70 -69
  109. package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs.map +1 -1
  110. package/dist/astro/routes/api/admin/themes/marketplace/_id_/thumbnail.mjs +8 -8
  111. package/dist/astro/routes/api/admin/themes/marketplace/index.mjs +70 -69
  112. package/dist/astro/routes/api/admin/themes/marketplace/index.mjs.map +1 -1
  113. package/dist/astro/routes/api/admin/transfer/_...path_.mjs +5 -5
  114. package/dist/astro/routes/api/admin/transfer/approvals/_id_/approve.mjs +39 -39
  115. package/dist/astro/routes/api/admin/transfer/approvals/_id_/deny.mjs +39 -39
  116. package/dist/astro/routes/api/admin/transfer/approvals/index.mjs +41 -41
  117. package/dist/astro/routes/api/admin/transfer/capabilities.mjs +41 -41
  118. package/dist/astro/routes/api/admin/transfer/exports/_id_/advance.mjs +41 -41
  119. package/dist/astro/routes/api/admin/transfer/exports/_id_/archive.mjs +42 -42
  120. package/dist/astro/routes/api/admin/transfer/exports/_id_/files/_...path_.mjs +42 -42
  121. package/dist/astro/routes/api/admin/transfer/exports/_id_/index.mjs +41 -41
  122. package/dist/astro/routes/api/admin/transfer/exports/_id_/manifest.mjs +42 -42
  123. package/dist/astro/routes/api/admin/transfer/exports/index.mjs +43 -43
  124. package/dist/astro/routes/api/admin/transfer/imports/_id_/abandon.mjs +41 -41
  125. package/dist/astro/routes/api/admin/transfer/imports/_id_/advance.mjs +41 -41
  126. package/dist/astro/routes/api/admin/transfer/imports/_id_/analyze.mjs +43 -43
  127. package/dist/astro/routes/api/admin/transfer/imports/_id_/cancel.mjs +41 -41
  128. package/dist/astro/routes/api/admin/transfer/imports/_id_/execute.mjs +43 -43
  129. package/dist/astro/routes/api/admin/transfer/imports/_id_/files/_...path_.mjs +41 -41
  130. package/dist/astro/routes/api/admin/transfer/imports/_id_/index.mjs +41 -41
  131. package/dist/astro/routes/api/admin/transfer/imports/_id_/missing.mjs +43 -43
  132. package/dist/astro/routes/api/admin/transfer/imports/_id_/plan.mjs +41 -41
  133. package/dist/astro/routes/api/admin/transfer/imports/_id_/receipt.mjs +41 -41
  134. package/dist/astro/routes/api/admin/transfer/imports/index.mjs +43 -43
  135. package/dist/astro/routes/api/admin/users/_id_/disable.mjs +5 -5
  136. package/dist/astro/routes/api/admin/users/_id_/enable.mjs +5 -5
  137. package/dist/astro/routes/api/admin/users/_id_/index.mjs +15 -15
  138. package/dist/astro/routes/api/admin/users/_id_/send-recovery.mjs +7 -7
  139. package/dist/astro/routes/api/admin/users/index.mjs +15 -15
  140. package/dist/astro/routes/api/auth/dev-bypass.mjs +7 -7
  141. package/dist/astro/routes/api/auth/invite/accept.mjs +5 -5
  142. package/dist/astro/routes/api/auth/invite/complete.mjs +20 -20
  143. package/dist/astro/routes/api/auth/invite/index.mjs +17 -17
  144. package/dist/astro/routes/api/auth/invite/register-options.mjs +18 -18
  145. package/dist/astro/routes/api/auth/logout.mjs +6 -6
  146. package/dist/astro/routes/api/auth/magic-link/send.mjs +19 -19
  147. package/dist/astro/routes/api/auth/magic-link/verify.mjs +16 -16
  148. package/dist/astro/routes/api/auth/me.mjs +16 -16
  149. package/dist/astro/routes/api/auth/mode.mjs +6 -6
  150. package/dist/astro/routes/api/auth/oauth/_provider_/callback.d.mts.map +1 -1
  151. package/dist/astro/routes/api/auth/oauth/_provider_/callback.mjs +36 -13
  152. package/dist/astro/routes/api/auth/oauth/_provider_/callback.mjs.map +1 -1
  153. package/dist/astro/routes/api/auth/oauth/_provider_.d.mts.map +1 -1
  154. package/dist/astro/routes/api/auth/oauth/_provider_.mjs +20 -5
  155. package/dist/astro/routes/api/auth/oauth/_provider_.mjs.map +1 -1
  156. package/dist/astro/routes/api/auth/passkey/_id_.mjs +15 -15
  157. package/dist/astro/routes/api/auth/passkey/index.mjs +5 -5
  158. package/dist/astro/routes/api/auth/passkey/options.mjs +20 -20
  159. package/dist/astro/routes/api/auth/passkey/register/options.mjs +18 -18
  160. package/dist/astro/routes/api/auth/passkey/register/verify.mjs +19 -19
  161. package/dist/astro/routes/api/auth/passkey/verify.mjs +20 -20
  162. package/dist/astro/routes/api/auth/signup/complete.mjs +20 -20
  163. package/dist/astro/routes/api/auth/signup/request.mjs +18 -18
  164. package/dist/astro/routes/api/auth/signup/verify.mjs +5 -5
  165. package/dist/astro/routes/api/calendar.d.mts +8 -0
  166. package/dist/astro/routes/api/calendar.d.mts.map +1 -0
  167. package/dist/astro/routes/api/calendar.mjs +204 -0
  168. package/dist/astro/routes/api/calendar.mjs.map +1 -0
  169. package/dist/astro/routes/api/comments/_collection_/_contentId_/index.mjs +14 -14
  170. package/dist/astro/routes/api/comments/_collection_/_contentId_/reactions.mjs +20 -20
  171. package/dist/astro/routes/api/content/_collection_/_id_/compare.mjs +6 -6
  172. package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs +17 -17
  173. package/dist/astro/routes/api/content/_collection_/_id_/duplicate.mjs +6 -6
  174. package/dist/astro/routes/api/content/_collection_/_id_/lock.mjs +17 -17
  175. package/dist/astro/routes/api/content/_collection_/_id_/permanent.mjs +6 -6
  176. package/dist/astro/routes/api/content/_collection_/_id_/plugin-extensions/_pluginId_/_kind_/_extensionId_.mjs +12 -12
  177. package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs +31 -31
  178. package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs +17 -17
  179. package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/children.mjs +34 -34
  180. package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/parents.mjs +34 -34
  181. package/dist/astro/routes/api/content/_collection_/_id_/restore.mjs +6 -6
  182. package/dist/astro/routes/api/content/_collection_/_id_/revisions.mjs +6 -6
  183. package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs +17 -17
  184. package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs +24 -24
  185. package/dist/astro/routes/api/content/_collection_/_id_/translations.mjs +6 -6
  186. package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs +17 -17
  187. package/dist/astro/routes/api/content/_collection_/_id_.mjs +17 -17
  188. package/dist/astro/routes/api/content/_collection_/authors.mjs +6 -6
  189. package/dist/astro/routes/api/content/_collection_/index.mjs +16 -16
  190. package/dist/astro/routes/api/content/_collection_/trash.mjs +16 -16
  191. package/dist/astro/routes/api/dashboard.mjs +11 -11
  192. package/dist/astro/routes/api/dev/emails.mjs +6 -6
  193. package/dist/astro/routes/api/health.mjs +7 -7
  194. package/dist/astro/routes/api/import/probe.d.mts +3 -3
  195. package/dist/astro/routes/api/import/probe.mjs +24 -24
  196. package/dist/astro/routes/api/import/wordpress/analyze.mjs +6 -6
  197. package/dist/astro/routes/api/import/wordpress/execute.d.mts +13 -13
  198. package/dist/astro/routes/api/import/wordpress/execute.mjs +23 -23
  199. package/dist/astro/routes/api/import/wordpress/media.d.mts +12 -12
  200. package/dist/astro/routes/api/import/wordpress/media.mjs +20 -20
  201. package/dist/astro/routes/api/import/wordpress/prepare.mjs +18 -18
  202. package/dist/astro/routes/api/import/wordpress/rewrite-urls.d.mts +13 -13
  203. package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs +27 -27
  204. package/dist/astro/routes/api/import/wordpress-plugin/analyze.d.mts +1 -1
  205. package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs +24 -24
  206. package/dist/astro/routes/api/import/wordpress-plugin/callback.mjs +1 -1
  207. package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts +13 -13
  208. package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs +32 -32
  209. package/dist/astro/routes/api/manifest.mjs +7 -7
  210. package/dist/astro/routes/api/mcp.mjs +94 -94
  211. package/dist/astro/routes/api/mcp.mjs.map +1 -1
  212. package/dist/astro/routes/api/media/_id_/confirm.mjs +19 -19
  213. package/dist/astro/routes/api/media/_id_/replace.mjs +17 -17
  214. package/dist/astro/routes/api/media/_id_/upload.mjs +10 -10
  215. package/dist/astro/routes/api/media/_id_/usage.mjs +31 -31
  216. package/dist/astro/routes/api/media/_id_.mjs +29 -29
  217. package/dist/astro/routes/api/media/asset/_id_/_filename_.mjs +7 -7
  218. package/dist/astro/routes/api/media/file/_...key_.mjs +10 -10
  219. package/dist/astro/routes/api/media/folders/_id_.mjs +17 -17
  220. package/dist/astro/routes/api/media/folders/index.mjs +17 -17
  221. package/dist/astro/routes/api/media/providers/_providerId_/_itemId_.mjs +6 -6
  222. package/dist/astro/routes/api/media/providers/_providerId_/index.mjs +6 -6
  223. package/dist/astro/routes/api/media/providers/index.mjs +6 -6
  224. package/dist/astro/routes/api/media/upload-url.mjs +23 -23
  225. package/dist/astro/routes/api/media/upload-url.mjs.map +1 -1
  226. package/dist/astro/routes/api/media.mjs +37 -36
  227. package/dist/astro/routes/api/media.mjs.map +1 -1
  228. package/dist/astro/routes/api/menus/_name_/items/_id_.mjs +18 -18
  229. package/dist/astro/routes/api/menus/_name_/items.mjs +18 -18
  230. package/dist/astro/routes/api/menus/_name_/reorder.mjs +18 -18
  231. package/dist/astro/routes/api/menus/_name_/translations.mjs +18 -18
  232. package/dist/astro/routes/api/menus/_name_.mjs +18 -18
  233. package/dist/astro/routes/api/menus/index.mjs +18 -18
  234. package/dist/astro/routes/api/oauth/authorize.mjs +6 -6
  235. package/dist/astro/routes/api/oauth/device/authorize.mjs +9 -9
  236. package/dist/astro/routes/api/oauth/device/code.mjs +12 -12
  237. package/dist/astro/routes/api/oauth/device/token.mjs +11 -11
  238. package/dist/astro/routes/api/oauth/register.mjs +8 -8
  239. package/dist/astro/routes/api/oauth/token/refresh.mjs +9 -9
  240. package/dist/astro/routes/api/oauth/token/revoke.mjs +9 -9
  241. package/dist/astro/routes/api/oauth/token.mjs +9 -9
  242. package/dist/astro/routes/api/openapi.json.mjs +21 -21
  243. package/dist/astro/routes/api/plugins/_pluginId_/_...path_.mjs +12 -12
  244. package/dist/astro/routes/api/redirects/404s/index.mjs +20 -19
  245. package/dist/astro/routes/api/redirects/404s/index.mjs.map +1 -1
  246. package/dist/astro/routes/api/redirects/404s/summary.mjs +20 -19
  247. package/dist/astro/routes/api/redirects/404s/summary.mjs.map +1 -1
  248. package/dist/astro/routes/api/redirects/_id_.mjs +20 -19
  249. package/dist/astro/routes/api/redirects/_id_.mjs.map +1 -1
  250. package/dist/astro/routes/api/redirects/index.mjs +20 -19
  251. package/dist/astro/routes/api/redirects/index.mjs.map +1 -1
  252. package/dist/astro/routes/api/relations/_id_/index.mjs +34 -34
  253. package/dist/astro/routes/api/relations/index.mjs +34 -34
  254. package/dist/astro/routes/api/revisions/_revisionId_/index.mjs +6 -6
  255. package/dist/astro/routes/api/revisions/_revisionId_/restore.mjs +17 -17
  256. package/dist/astro/routes/api/schema/block-types/_slug_/index.mjs +70 -69
  257. package/dist/astro/routes/api/schema/block-types/_slug_/index.mjs.map +1 -1
  258. package/dist/astro/routes/api/schema/block-types/_slug_/versions/_version_/activate.mjs +70 -69
  259. package/dist/astro/routes/api/schema/block-types/_slug_/versions/_version_/activate.mjs.map +1 -1
  260. package/dist/astro/routes/api/schema/block-types/index.mjs +70 -69
  261. package/dist/astro/routes/api/schema/block-types/index.mjs.map +1 -1
  262. package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs +70 -69
  263. package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs.map +1 -1
  264. package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs +70 -69
  265. package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs.map +1 -1
  266. package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs +70 -69
  267. package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs.map +1 -1
  268. package/dist/astro/routes/api/schema/collections/_slug_/index.mjs +70 -69
  269. package/dist/astro/routes/api/schema/collections/_slug_/index.mjs.map +1 -1
  270. package/dist/astro/routes/api/schema/collections/index.mjs +70 -69
  271. package/dist/astro/routes/api/schema/collections/index.mjs.map +1 -1
  272. package/dist/astro/routes/api/schema/collections/reorder.mjs +70 -69
  273. package/dist/astro/routes/api/schema/collections/reorder.mjs.map +1 -1
  274. package/dist/astro/routes/api/schema/index.mjs +16 -16
  275. package/dist/astro/routes/api/schema/orphans/_slug_.mjs +70 -69
  276. package/dist/astro/routes/api/schema/orphans/_slug_.mjs.map +1 -1
  277. package/dist/astro/routes/api/schema/orphans/index.mjs +70 -69
  278. package/dist/astro/routes/api/schema/orphans/index.mjs.map +1 -1
  279. package/dist/astro/routes/api/search/enable.mjs +19 -19
  280. package/dist/astro/routes/api/search/index.mjs +18 -18
  281. package/dist/astro/routes/api/search/rebuild.mjs +19 -19
  282. package/dist/astro/routes/api/search/stats.mjs +9 -9
  283. package/dist/astro/routes/api/search/suggest.mjs +18 -18
  284. package/dist/astro/routes/api/sections/_slug_.mjs +18 -18
  285. package/dist/astro/routes/api/sections/index.mjs +18 -18
  286. package/dist/astro/routes/api/settings/backups/archives/_name_.mjs +8 -8
  287. package/dist/astro/routes/api/settings/backups/archives/index.mjs +8 -8
  288. package/dist/astro/routes/api/settings/backups/export.mjs +8 -8
  289. package/dist/astro/routes/api/settings/backups/index.mjs +9 -9
  290. package/dist/astro/routes/api/settings/email.mjs +7 -7
  291. package/dist/astro/routes/api/settings.mjs +22 -22
  292. package/dist/astro/routes/api/setup/admin-verify.mjs +21 -21
  293. package/dist/astro/routes/api/setup/admin.mjs +19 -19
  294. package/dist/astro/routes/api/setup/dev-bypass.mjs +42 -42
  295. package/dist/astro/routes/api/setup/dev-reset.mjs +5 -5
  296. package/dist/astro/routes/api/setup/index.mjs +54 -49
  297. package/dist/astro/routes/api/setup/index.mjs.map +1 -1
  298. package/dist/astro/routes/api/setup/status.mjs +7 -7
  299. package/dist/astro/routes/api/snapshot.mjs +10 -10
  300. package/dist/astro/routes/api/taxonomies/_name_/reorder.mjs +22 -22
  301. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs +22 -22
  302. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs +22 -22
  303. package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs +22 -22
  304. package/dist/astro/routes/api/taxonomies/_name_/translations.mjs +21 -21
  305. package/dist/astro/routes/api/taxonomies/_name_.mjs +22 -22
  306. package/dist/astro/routes/api/taxonomies/bulk-tag.mjs +35 -35
  307. package/dist/astro/routes/api/taxonomies/index.mjs +22 -22
  308. package/dist/astro/routes/api/themes/preview.mjs +8 -8
  309. package/dist/astro/routes/api/typegen.mjs +7 -7
  310. package/dist/astro/routes/api/visual-editing/action-token.mjs +8 -8
  311. package/dist/astro/routes/api/visual-editing/content/_collection_/_id_/publish.mjs +20 -20
  312. package/dist/astro/routes/api/visual-editing/toolbar-labels.mjs +5 -5
  313. package/dist/astro/routes/api/well-known/auth.mjs +1 -1
  314. package/dist/astro/routes/api/well-known/oauth-authorization-server.mjs +2 -2
  315. package/dist/astro/routes/api/well-known/oauth-protected-resource.mjs +2 -2
  316. package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs +17 -17
  317. package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs +19 -19
  318. package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs +19 -19
  319. package/dist/astro/routes/api/widget-areas/_name_.mjs +9 -9
  320. package/dist/astro/routes/api/widget-areas/index.mjs +19 -19
  321. package/dist/astro/routes/api/widget-components.mjs +6 -6
  322. package/dist/astro/routes/robots.txt.mjs +7 -7
  323. package/dist/astro/routes/sitemap-_collection_.xml.mjs +9 -9
  324. package/dist/astro/routes/sitemap.xml.mjs +8 -8
  325. package/dist/astro/types.d.mts +17 -17
  326. package/dist/audit-CCH3MA4Y.mjs +127 -0
  327. package/dist/audit-CCH3MA4Y.mjs.map +1 -0
  328. package/dist/auth/providers/github.d.mts +1 -1
  329. package/dist/auth/providers/google.d.mts +1 -1
  330. package/dist/auth/providers/microsoft.d.mts +27 -0
  331. package/dist/auth/providers/microsoft.d.mts.map +1 -0
  332. package/dist/auth/providers/microsoft.mjs +20 -0
  333. package/dist/auth/providers/microsoft.mjs.map +1 -0
  334. package/dist/authoritative-records-dSvXCfzb.mjs +5172 -0
  335. package/dist/authoritative-records-dSvXCfzb.mjs.map +1 -0
  336. package/dist/authorize-DeWfk--K.mjs +49 -0
  337. package/dist/authorize-DeWfk--K.mjs.map +1 -0
  338. package/dist/backup-CFnbdTSJ.mjs +246 -0
  339. package/dist/backup-CFnbdTSJ.mjs.map +1 -0
  340. package/dist/base64-BQBZwXCx.mjs +63 -0
  341. package/dist/base64-BQBZwXCx.mjs.map +1 -0
  342. package/dist/block-types-C0YFSfR7.mjs +132 -0
  343. package/dist/block-types-C0YFSfR7.mjs.map +1 -0
  344. package/dist/block-values-H4E0XwE8.mjs +175 -0
  345. package/dist/block-values-H4E0XwE8.mjs.map +1 -0
  346. package/dist/byline-BhVslYLz.mjs +909 -0
  347. package/dist/byline-BhVslYLz.mjs.map +1 -0
  348. package/dist/byline-fields-DHJs0Mja.mjs +280 -0
  349. package/dist/byline-fields-DHJs0Mja.mjs.map +1 -0
  350. package/dist/byline-fields-xdxE9kxZ.mjs +123 -0
  351. package/dist/byline-fields-xdxE9kxZ.mjs.map +1 -0
  352. package/dist/bylines-B_nN9liM.mjs +234 -0
  353. package/dist/bylines-B_nN9liM.mjs.map +1 -0
  354. package/dist/bylines-C71YACkL.mjs +150 -0
  355. package/dist/bylines-C71YACkL.mjs.map +1 -0
  356. package/dist/cache-aTYCL9nK.mjs +133 -0
  357. package/dist/cache-aTYCL9nK.mjs.map +1 -0
  358. package/dist/canonical-Y1dpjCnp.mjs +174 -0
  359. package/dist/canonical-Y1dpjCnp.mjs.map +1 -0
  360. package/dist/capture-triggers-C9JKoIdT.mjs +362 -0
  361. package/dist/capture-triggers-C9JKoIdT.mjs.map +1 -0
  362. package/dist/challenge-store-CxZxPqaw.mjs +51 -0
  363. package/dist/challenge-store-CxZxPqaw.mjs.map +1 -0
  364. package/dist/checksum-DtH6m5uk.mjs +162 -0
  365. package/dist/checksum-DtH6m5uk.mjs.map +1 -0
  366. package/dist/chrome-tags-BIKBMZYO.mjs +24 -0
  367. package/dist/chrome-tags-BIKBMZYO.mjs.map +1 -0
  368. package/dist/chunks-zlGB5IQP.mjs +25 -0
  369. package/dist/chunks-zlGB5IQP.mjs.map +1 -0
  370. package/dist/cli/index.mjs +47 -47
  371. package/dist/client/cf-access.d.mts +1 -1
  372. package/dist/client/index.d.mts +121 -121
  373. package/dist/client/index.mjs +2 -2
  374. package/dist/collection-slugs-cache-B2Gs9Jwx.mjs +85 -0
  375. package/dist/collection-slugs-cache-B2Gs9Jwx.mjs.map +1 -0
  376. package/dist/comment-Bu08Wvr3.mjs +313 -0
  377. package/dist/comment-Bu08Wvr3.mjs.map +1 -0
  378. package/dist/comment-reaction-B8SfT-yM.mjs +85 -0
  379. package/dist/comment-reaction-B8SfT-yM.mjs.map +1 -0
  380. package/dist/comments-BRtp992B.mjs +99 -0
  381. package/dist/comments-BRtp992B.mjs.map +1 -0
  382. package/dist/comments-DVUYqdyC.mjs +195 -0
  383. package/dist/comments-DVUYqdyC.mjs.map +1 -0
  384. package/dist/components-CQY-Sgm-.mjs +108 -0
  385. package/dist/components-CQY-Sgm-.mjs.map +1 -0
  386. package/dist/config-B-uePMLj.d.mts +39 -0
  387. package/dist/config-B-uePMLj.d.mts.map +1 -0
  388. package/dist/config-B6BDSsz2.d.mts +6712 -0
  389. package/dist/config-B6BDSsz2.d.mts.map +1 -0
  390. package/dist/config-BsJHiQxC.mjs +228 -0
  391. package/dist/config-BsJHiQxC.mjs.map +1 -0
  392. package/dist/connection-B9pIasFd.mjs +36 -0
  393. package/dist/connection-B9pIasFd.mjs.map +1 -0
  394. package/dist/content-Dji9vEiW.mjs +2063 -0
  395. package/dist/content-Dji9vEiW.mjs.map +1 -0
  396. package/dist/content-list-query-DiNwyKtd.d.mts +26 -0
  397. package/dist/content-list-query-DiNwyKtd.d.mts.map +1 -0
  398. package/dist/content-repair-B7wnbzhN.mjs +442 -0
  399. package/dist/content-repair-B7wnbzhN.mjs.map +1 -0
  400. package/dist/context-Ctcxc8Ia.mjs +2026 -0
  401. package/dist/context-Ctcxc8Ia.mjs.map +1 -0
  402. package/dist/credits-Bu7dlobo.mjs +110 -0
  403. package/dist/credits-Bu7dlobo.mjs.map +1 -0
  404. package/dist/cron-xe5XKqA-.mjs +306 -0
  405. package/dist/cron-xe5XKqA-.mjs.map +1 -0
  406. package/dist/dashboard-B5hVHOtf.mjs +151 -0
  407. package/dist/dashboard-B5hVHOtf.mjs.map +1 -0
  408. package/dist/db/index.d.mts +3 -3
  409. package/dist/db/index.mjs +1 -1
  410. package/dist/db/index.mjs.map +1 -1
  411. package/dist/db/libsql-migrations.d.mts +1 -1
  412. package/dist/db/libsql-migrations.mjs +5 -5
  413. package/dist/db/libsql.d.mts +1 -1
  414. package/dist/db/postgres-migrations.d.mts +1 -1
  415. package/dist/db/postgres-migrations.mjs +4 -4
  416. package/dist/db/postgres.d.mts +1 -1
  417. package/dist/db/sqlite-migrations.d.mts +1 -1
  418. package/dist/db/sqlite-migrations.mjs +4 -4
  419. package/dist/db/sqlite.d.mts +1 -1
  420. package/dist/db/sqlite.mjs +1 -1
  421. package/dist/default-DaoYyFRS.mjs +81 -0
  422. package/dist/default-DaoYyFRS.mjs.map +1 -0
  423. package/dist/deferred-tasks-BYcDx2o_.d.mts +9 -0
  424. package/dist/deferred-tasks-BYcDx2o_.d.mts.map +1 -0
  425. package/dist/dev-typegen-Dtl8AfS6.mjs +29 -0
  426. package/dist/dev-typegen-Dtl8AfS6.mjs.map +1 -0
  427. package/dist/device-flow-Ma5P5d2e.mjs +521 -0
  428. package/dist/device-flow-Ma5P5d2e.mjs.map +1 -0
  429. package/dist/digest-xIpR3o64.mjs +194 -0
  430. package/dist/digest-xIpR3o64.mjs.map +1 -0
  431. package/dist/direct-executor-DMWwCey3.mjs +104 -0
  432. package/dist/direct-executor-DMWwCey3.mjs.map +1 -0
  433. package/dist/email-console-DmqVF5J_.mjs +50 -0
  434. package/dist/email-console-DmqVF5J_.mjs.map +1 -0
  435. package/dist/email-locale-Cc5YSXfJ.mjs +25 -0
  436. package/dist/email-locale-Cc5YSXfJ.mjs.map +1 -0
  437. package/dist/emdash-runtime-BlybX9Ui.mjs +4249 -0
  438. package/dist/emdash-runtime-BlybX9Ui.mjs.map +1 -0
  439. package/dist/enrich-Duu4sV3a.mjs +194 -0
  440. package/dist/enrich-Duu4sV3a.mjs.map +1 -0
  441. package/dist/entry-lock-De1L8qUQ.mjs +163 -0
  442. package/dist/entry-lock-De1L8qUQ.mjs.map +1 -0
  443. package/dist/entry-lock-esmMbgI9.d.mts +4551 -0
  444. package/dist/entry-lock-esmMbgI9.d.mts.map +1 -0
  445. package/dist/entry-lock-sxz2PGAT.mjs +1197 -0
  446. package/dist/entry-lock-sxz2PGAT.mjs.map +1 -0
  447. package/dist/env-types-BkjCtN13.mjs +38 -0
  448. package/dist/env-types-BkjCtN13.mjs.map +1 -0
  449. package/dist/error-B0rgPgsQ.mjs +90 -0
  450. package/dist/error-B0rgPgsQ.mjs.map +1 -0
  451. package/dist/errors-CuHQRiBW.mjs +120 -0
  452. package/dist/errors-CuHQRiBW.mjs.map +1 -0
  453. package/dist/errors-DTE6C3K_.mjs +470 -0
  454. package/dist/errors-DTE6C3K_.mjs.map +1 -0
  455. package/dist/escape-nJW7dR0s.mjs +9 -0
  456. package/dist/escape-nJW7dR0s.mjs.map +1 -0
  457. package/dist/fence-CGw57S4v.mjs +162 -0
  458. package/dist/fence-CGw57S4v.mjs.map +1 -0
  459. package/dist/field-defs-cache-Bw8w499w.mjs +77 -0
  460. package/dist/field-defs-cache-Bw8w499w.mjs.map +1 -0
  461. package/dist/field-map-hn-D-SyH.mjs +83 -0
  462. package/dist/field-map-hn-D-SyH.mjs.map +1 -0
  463. package/dist/fts-manager-DacCYIe4.mjs +443 -0
  464. package/dist/fts-manager-DacCYIe4.mjs.map +1 -0
  465. package/dist/gc-BBplHrv6.mjs +75 -0
  466. package/dist/gc-BBplHrv6.mjs.map +1 -0
  467. package/dist/hash-C4DFoJ7Z.mjs +37 -0
  468. package/dist/hash-C4DFoJ7Z.mjs.map +1 -0
  469. package/dist/hook-result-DSRRxu_-.d.mts +31 -0
  470. package/dist/hook-result-DSRRxu_-.d.mts.map +1 -0
  471. package/dist/hreflang-CKPunvU0.mjs +105 -0
  472. package/dist/hreflang-CKPunvU0.mjs.map +1 -0
  473. package/dist/hreflang-egumj6WF.d.mts +50 -0
  474. package/dist/hreflang-egumj6WF.d.mts.map +1 -0
  475. package/dist/http-route-dispatch-DjNFZcJ2.mjs +339 -0
  476. package/dist/http-route-dispatch-DjNFZcJ2.mjs.map +1 -0
  477. package/dist/identity-Dfrx2_Bc.mjs +35 -0
  478. package/dist/identity-Dfrx2_Bc.mjs.map +1 -0
  479. package/dist/import-ROBvhbNc.mjs +2021 -0
  480. package/dist/import-ROBvhbNc.mjs.map +1 -0
  481. package/dist/index-B4sIdCAT.d.mts +623 -0
  482. package/dist/index-B4sIdCAT.d.mts.map +1 -0
  483. package/dist/index.d.mts +24 -24
  484. package/dist/index.mjs +98 -97
  485. package/dist/init-lock-BGmew3r1.mjs +56 -0
  486. package/dist/init-lock-BGmew3r1.mjs.map +1 -0
  487. package/dist/install-finalization-CPM7Gged.mjs +58 -0
  488. package/dist/install-finalization-CPM7Gged.mjs.map +1 -0
  489. package/dist/keys-DxqxcAD4.mjs +61 -0
  490. package/dist/keys-DxqxcAD4.mjs.map +1 -0
  491. package/dist/kinds-BQl5gN6e.mjs +974 -0
  492. package/dist/kinds-BQl5gN6e.mjs.map +1 -0
  493. package/dist/lifecycle-DGQI7itS.mjs +25 -0
  494. package/dist/lifecycle-DGQI7itS.mjs.map +1 -0
  495. package/dist/load-DMxRl4VK.mjs +28 -0
  496. package/dist/load-DMxRl4VK.mjs.map +1 -0
  497. package/dist/loader-1DMiOq5s.mjs +1303 -0
  498. package/dist/loader-1DMiOq5s.mjs.map +1 -0
  499. package/dist/loops-Dn1i16FP.mjs +205 -0
  500. package/dist/loops-Dn1i16FP.mjs.map +1 -0
  501. package/dist/manifest-builder-CTw4FmZk.mjs +189 -0
  502. package/dist/manifest-builder-CTw4FmZk.mjs.map +1 -0
  503. package/dist/manifest-schema-gy37bD_D.mjs +496 -0
  504. package/dist/manifest-schema-gy37bD_D.mjs.map +1 -0
  505. package/dist/marketplace-tHWSsCUo.mjs +257 -0
  506. package/dist/marketplace-tHWSsCUo.mjs.map +1 -0
  507. package/dist/media/index.d.mts +1 -1
  508. package/dist/media/index.mjs +1 -1
  509. package/dist/media/local-runtime.d.mts +14 -14
  510. package/dist/media/local-runtime.mjs +7 -7
  511. package/dist/media-Bw-Q65ve.mjs +294 -0
  512. package/dist/media-Bw-Q65ve.mjs.map +1 -0
  513. package/dist/media-BzUDu7nl.mjs +373 -0
  514. package/dist/media-BzUDu7nl.mjs.map +1 -0
  515. package/dist/media-aahnKHze.mjs +408 -0
  516. package/dist/media-aahnKHze.mjs.map +1 -0
  517. package/dist/media-allowlist-RMrjo8TU.mjs +45 -0
  518. package/dist/media-allowlist-RMrjo8TU.mjs.map +1 -0
  519. package/dist/media-folders-kabR1oJf.mjs +210 -0
  520. package/dist/media-folders-kabR1oJf.mjs.map +1 -0
  521. package/dist/media-url-DloW2xrP.mjs +43 -0
  522. package/dist/media-url-DloW2xrP.mjs.map +1 -0
  523. package/dist/media-usage-CHHpV7ee.mjs +282 -0
  524. package/dist/media-usage-CHHpV7ee.mjs.map +1 -0
  525. package/dist/media-usage-activation-BinYqC_r.mjs +78 -0
  526. package/dist/media-usage-activation-BinYqC_r.mjs.map +1 -0
  527. package/dist/media-usage-work-C734aq6s.mjs +1015 -0
  528. package/dist/media-usage-work-C734aq6s.mjs.map +1 -0
  529. package/dist/media-usage-work-lxvV0-UO.mjs +151 -0
  530. package/dist/media-usage-work-lxvV0-UO.mjs.map +1 -0
  531. package/dist/menus-6RHNq4ZK.mjs +753 -0
  532. package/dist/menus-6RHNq4ZK.mjs.map +1 -0
  533. package/dist/menus-AuCTaO9W.mjs +3704 -0
  534. package/dist/menus-AuCTaO9W.mjs.map +1 -0
  535. package/dist/menus-BQKqf0Up.mjs +92 -0
  536. package/dist/menus-BQKqf0Up.mjs.map +1 -0
  537. package/dist/migrations/index.d.mts +1 -1
  538. package/dist/migrations/index.mjs +3 -3
  539. package/dist/mime-B5M9R53H.mjs +81 -0
  540. package/dist/mime-B5M9R53H.mjs.map +1 -0
  541. package/dist/mode-nh0ppSX5.mjs +23 -0
  542. package/dist/mode-nh0ppSX5.mjs.map +1 -0
  543. package/dist/node-sqlite-compat-CDOEcc97.mjs +63 -0
  544. package/dist/node-sqlite-compat-CDOEcc97.mjs.map +1 -0
  545. package/dist/oauth-authorization-BtYQ80uU.mjs +274 -0
  546. package/dist/oauth-authorization-BtYQ80uU.mjs.map +1 -0
  547. package/dist/oauth-clients-C1S4NQHh.mjs +266 -0
  548. package/dist/oauth-clients-C1S4NQHh.mjs.map +1 -0
  549. package/dist/oauth-state-store-CpGi2FZH.mjs +50 -0
  550. package/dist/oauth-state-store-CpGi2FZH.mjs.map +1 -0
  551. package/dist/oauth-user-lookup-BNp1aFAr.mjs +26 -0
  552. package/dist/oauth-user-lookup-BNp1aFAr.mjs.map +1 -0
  553. package/dist/object-cache/memory.d.mts +1 -1
  554. package/dist/options-B41aLm1I.d.mts +81 -0
  555. package/dist/options-B41aLm1I.d.mts.map +1 -0
  556. package/dist/ownership-DoeAIuTg.mjs +12 -0
  557. package/dist/ownership-DoeAIuTg.mjs.map +1 -0
  558. package/dist/page/index.d.mts +2 -2
  559. package/dist/page/index.mjs +6 -6
  560. package/dist/parse-CmFDTGzp.mjs +81 -0
  561. package/dist/parse-CmFDTGzp.mjs.map +1 -0
  562. package/dist/parse-QVS0t5oR.d.mts +172 -0
  563. package/dist/parse-QVS0t5oR.d.mts.map +1 -0
  564. package/dist/passkey-config-C-MxsV22.mjs +46 -0
  565. package/dist/passkey-config-C-MxsV22.mjs.map +1 -0
  566. package/dist/paths-kr8hAMMI.mjs +77 -0
  567. package/dist/paths-kr8hAMMI.mjs.map +1 -0
  568. package/dist/placeholder-Dn7MMdWr.d.mts +306 -0
  569. package/dist/placeholder-Dn7MMdWr.d.mts.map +1 -0
  570. package/dist/plan-CuQOeU9g.mjs +135 -0
  571. package/dist/plan-CuQOeU9g.mjs.map +1 -0
  572. package/dist/plugin-test-runtime.d.mts +14 -14
  573. package/dist/plugin-test-runtime.mjs +110 -109
  574. package/dist/plugin-types.d.mts +2 -2
  575. package/dist/plugin-utils.d.mts +12 -12
  576. package/dist/plugins/adapt-sandbox-entry.d.mts +12 -12
  577. package/dist/plugins/adapt-sandbox-entry.mjs +3 -3
  578. package/dist/plugins/host.d.mts +5 -5
  579. package/dist/plugins/host.mjs +44 -43
  580. package/dist/plugins-CGb-G98c.mjs +261 -0
  581. package/dist/plugins-CGb-G98c.mjs.map +1 -0
  582. package/dist/policy-C5wrDXYV.mjs +45 -0
  583. package/dist/policy-C5wrDXYV.mjs.map +1 -0
  584. package/dist/portable-text-BnRuiR1-.mjs +307 -0
  585. package/dist/portable-text-BnRuiR1-.mjs.map +1 -0
  586. package/dist/preview-xWNSR1Li.mjs +107 -0
  587. package/dist/preview-xWNSR1Li.mjs.map +1 -0
  588. package/dist/protocol-ClxN-m1e.d.mts +61 -0
  589. package/dist/protocol-ClxN-m1e.d.mts.map +1 -0
  590. package/dist/public-submission-CkmT2SKv.mjs +250 -0
  591. package/dist/public-submission-CkmT2SKv.mjs.map +1 -0
  592. package/dist/public-url-B5a0QAh6.mjs +101 -0
  593. package/dist/public-url-B5a0QAh6.mjs.map +1 -0
  594. package/dist/query-DHqFiqqH.mjs +41 -0
  595. package/dist/query-DHqFiqqH.mjs.map +1 -0
  596. package/dist/query-DT85BehD.mjs +1125 -0
  597. package/dist/query-DT85BehD.mjs.map +1 -0
  598. package/dist/rate-limit-iMvcu3eu.mjs +120 -0
  599. package/dist/rate-limit-iMvcu3eu.mjs.map +1 -0
  600. package/dist/receipt-Dpp1uaX9.mjs +43 -0
  601. package/dist/receipt-Dpp1uaX9.mjs.map +1 -0
  602. package/dist/redirect-BRoLiWQE.mjs +19 -0
  603. package/dist/redirect-BRoLiWQE.mjs.map +1 -0
  604. package/dist/redirect-xZNpBoGp.mjs +417 -0
  605. package/dist/redirect-xZNpBoGp.mjs.map +1 -0
  606. package/dist/redirects-D4EWeXAo.mjs +148 -0
  607. package/dist/redirects-D4EWeXAo.mjs.map +1 -0
  608. package/dist/redirects-DCKqwiWp.mjs +446 -0
  609. package/dist/redirects-DCKqwiWp.mjs.map +1 -0
  610. package/dist/registry/testing.mjs +3 -3
  611. package/dist/registry-DaXmUsD4.mjs +8369 -0
  612. package/dist/registry-DaXmUsD4.mjs.map +1 -0
  613. package/dist/relations-JvBP8nGP.mjs +776 -0
  614. package/dist/relations-JvBP8nGP.mjs.map +1 -0
  615. package/dist/request-context.d.mts +2 -2
  616. package/dist/request-context.mjs.map +1 -1
  617. package/dist/request-meta-B6blULFY.mjs +141 -0
  618. package/dist/request-meta-B6blULFY.mjs.map +1 -0
  619. package/dist/resolve-DAhHi5tn.mjs +100 -0
  620. package/dist/resolve-DAhHi5tn.mjs.map +1 -0
  621. package/dist/revision-BWEH2qQB.mjs +368 -0
  622. package/dist/revision-BWEH2qQB.mjs.map +1 -0
  623. package/dist/route-wire-DK600v4u.mjs +197 -0
  624. package/dist/route-wire-DK600v4u.mjs.map +1 -0
  625. package/dist/routes-BeZyaCzv.mjs +272 -0
  626. package/dist/routes-BeZyaCzv.mjs.map +1 -0
  627. package/dist/runner-CskI4Hmq.mjs +6372 -0
  628. package/dist/runner-CskI4Hmq.mjs.map +1 -0
  629. package/dist/runner-J3Cj6DGk.d.mts +68 -0
  630. package/dist/runner-J3Cj6DGk.d.mts.map +1 -0
  631. package/dist/runtime.d.mts +13 -13
  632. package/dist/runtime.mjs +3 -3
  633. package/dist/schema/project-env-types.mjs +37 -37
  634. package/dist/schema-CK0ihqMR.mjs +815 -0
  635. package/dist/schema-CK0ihqMR.mjs.map +1 -0
  636. package/dist/schema-VtaZSrC-.mjs +13 -0
  637. package/dist/schema-VtaZSrC-.mjs.map +1 -0
  638. package/dist/scopes-BRnGlL9t.mjs +34 -0
  639. package/dist/scopes-BRnGlL9t.mjs.map +1 -0
  640. package/dist/search-D6-XK1Sn.mjs +448 -0
  641. package/dist/search-D6-XK1Sn.mjs.map +1 -0
  642. package/dist/secrets-Cc_O3Kp-.mjs +369 -0
  643. package/dist/secrets-Cc_O3Kp-.mjs.map +1 -0
  644. package/dist/sections-CBDCf7qR.mjs +346 -0
  645. package/dist/sections-CBDCf7qR.mjs.map +1 -0
  646. package/dist/seed/index.d.mts +2 -2
  647. package/dist/seed/index.mjs +35 -35
  648. package/dist/seo/index.d.mts +3 -3
  649. package/dist/seo/index.mjs +22 -22
  650. package/dist/seo-BdeEPDNW.mjs +133 -0
  651. package/dist/seo-BdeEPDNW.mjs.map +1 -0
  652. package/dist/seo-C61bnPuV.mjs +114 -0
  653. package/dist/seo-C61bnPuV.mjs.map +1 -0
  654. package/dist/service-BuRKLMxa.mjs +150 -0
  655. package/dist/service-BuRKLMxa.mjs.map +1 -0
  656. package/dist/session-user-CqkPtrPL.mjs +61 -0
  657. package/dist/session-user-CqkPtrPL.mjs.map +1 -0
  658. package/dist/settings-0u0lTthS.mjs +51 -0
  659. package/dist/settings-0u0lTthS.mjs.map +1 -0
  660. package/dist/settings-WHr45II1.mjs +61 -0
  661. package/dist/settings-WHr45II1.mjs.map +1 -0
  662. package/dist/settings-m5tIYnF0.mjs +443 -0
  663. package/dist/settings-m5tIYnF0.mjs.map +1 -0
  664. package/dist/setup-complete-B2_dhZZz.mjs +65 -0
  665. package/dist/setup-complete-B2_dhZZz.mjs.map +1 -0
  666. package/dist/setup-nonce-CJV9ftSK.mjs +25 -0
  667. package/dist/setup-nonce-CJV9ftSK.mjs.map +1 -0
  668. package/dist/single-flight-cache-D0EaGbN1.mjs +104 -0
  669. package/dist/single-flight-cache-D0EaGbN1.mjs.map +1 -0
  670. package/dist/site-settings-KJOqJW6W.mjs +50 -0
  671. package/dist/site-settings-KJOqJW6W.mjs.map +1 -0
  672. package/dist/site-url-Ceq_AUK0.mjs +16 -0
  673. package/dist/site-url-Ceq_AUK0.mjs.map +1 -0
  674. package/dist/snapshot-Dzsn3NZa.mjs +414 -0
  675. package/dist/snapshot-Dzsn3NZa.mjs.map +1 -0
  676. package/dist/ssrf-DsmvZB80.mjs +406 -0
  677. package/dist/ssrf-DsmvZB80.mjs.map +1 -0
  678. package/dist/stage-Csnh_yEd.mjs +662 -0
  679. package/dist/stage-Csnh_yEd.mjs.map +1 -0
  680. package/dist/staged-Q7pnEVvI.mjs +686 -0
  681. package/dist/staged-Q7pnEVvI.mjs.map +1 -0
  682. package/dist/state-kGdOMQRY.mjs +153 -0
  683. package/dist/state-kGdOMQRY.mjs.map +1 -0
  684. package/dist/status-D39Fpy8R.mjs +30 -0
  685. package/dist/status-D39Fpy8R.mjs.map +1 -0
  686. package/dist/storage/local.d.mts +1 -1
  687. package/dist/storage/local.mjs +2 -2
  688. package/dist/storage/s3.d.mts +1 -1
  689. package/dist/storage/s3.mjs +1 -1
  690. package/dist/storage-query-C7iy6eUb.d.mts +1615 -0
  691. package/dist/storage-query-C7iy6eUb.d.mts.map +1 -0
  692. package/dist/tar-BWiraSUY.mjs +449 -0
  693. package/dist/tar-BWiraSUY.mjs.map +1 -0
  694. package/dist/target-DOFs5oUC.mjs +27 -0
  695. package/dist/target-DOFs5oUC.mjs.map +1 -0
  696. package/dist/taxonomies-BS40Wxvi.mjs +939 -0
  697. package/dist/taxonomies-BS40Wxvi.mjs.map +1 -0
  698. package/dist/taxonomies-DAZU9VDd.mjs +697 -0
  699. package/dist/taxonomies-DAZU9VDd.mjs.map +1 -0
  700. package/dist/taxonomy-XzLE95Vx.mjs +525 -0
  701. package/dist/taxonomy-XzLE95Vx.mjs.map +1 -0
  702. package/dist/tokens-DSQan4p7.mjs +171 -0
  703. package/dist/tokens-DSQan4p7.mjs.map +1 -0
  704. package/dist/transfer-BcCVxDgf.mjs +166 -0
  705. package/dist/transfer-BcCVxDgf.mjs.map +1 -0
  706. package/dist/transfer-OMrancOt.mjs +8873 -0
  707. package/dist/transfer-OMrancOt.mjs.map +1 -0
  708. package/dist/transfer-download-Dc-ltjZY.mjs +33 -0
  709. package/dist/transfer-download-Dc-ltjZY.mjs.map +1 -0
  710. package/dist/transformations-Ddx7UtrY.mjs +196 -0
  711. package/dist/transformations-Ddx7UtrY.mjs.map +1 -0
  712. package/dist/transport-flR-Zmds.d.mts +42 -0
  713. package/dist/transport-flR-Zmds.d.mts.map +1 -0
  714. package/dist/transport-umzEbgYO.mjs +136 -0
  715. package/dist/transport-umzEbgYO.mjs.map +1 -0
  716. package/dist/trusted-proxy-BqfQFs6a.mjs +51 -0
  717. package/dist/trusted-proxy-BqfQFs6a.mjs.map +1 -0
  718. package/dist/turnstile-Do60baId.mjs +58 -0
  719. package/dist/turnstile-Do60baId.mjs.map +1 -0
  720. package/dist/types-BT1p3uyb.d.mts +1735 -0
  721. package/dist/types-BT1p3uyb.d.mts.map +1 -0
  722. package/dist/types-BYaPWs_F.d.mts +198 -0
  723. package/dist/types-BYaPWs_F.d.mts.map +1 -0
  724. package/dist/types-C-Xp0CcN.mjs +103 -0
  725. package/dist/types-C-Xp0CcN.mjs.map +1 -0
  726. package/dist/types-CLTQ9b_r.d.mts +374 -0
  727. package/dist/types-CLTQ9b_r.d.mts.map +1 -0
  728. package/dist/types-CPkQw2T2.d.mts +85 -0
  729. package/dist/types-CPkQw2T2.d.mts.map +1 -0
  730. package/dist/types-CQLvuXoZ.d.mts +198 -0
  731. package/dist/types-CQLvuXoZ.d.mts.map +1 -0
  732. package/dist/types-CV5xszpF.d.mts +363 -0
  733. package/dist/types-CV5xszpF.d.mts.map +1 -0
  734. package/dist/types-CdEMurNh.mjs +77 -0
  735. package/dist/types-CdEMurNh.mjs.map +1 -0
  736. package/dist/types-Cj0_yZkn.mjs +18 -0
  737. package/dist/types-Cj0_yZkn.mjs.map +1 -0
  738. package/dist/types-CxwtnuSS.mjs +37 -0
  739. package/dist/types-CxwtnuSS.mjs.map +1 -0
  740. package/dist/types-DGw8KMX_.mjs +16 -0
  741. package/dist/types-DGw8KMX_.mjs.map +1 -0
  742. package/dist/types-DOfVMPoo.d.mts +125 -0
  743. package/dist/types-DOfVMPoo.d.mts.map +1 -0
  744. package/dist/types-LtS0SM4F.d.mts +287 -0
  745. package/dist/types-LtS0SM4F.d.mts.map +1 -0
  746. package/dist/types-ifgOkcBa.d.mts +916 -0
  747. package/dist/types-ifgOkcBa.d.mts.map +1 -0
  748. package/dist/update-check-DOc2aBIU.mjs +161 -0
  749. package/dist/update-check-DOc2aBIU.mjs.map +1 -0
  750. package/dist/upload-attempts-nzdc3cay.mjs +32 -0
  751. package/dist/upload-attempts-nzdc3cay.mjs.map +1 -0
  752. package/dist/url-pattern-hVbqpXs6.mjs +41 -0
  753. package/dist/url-pattern-hVbqpXs6.mjs.map +1 -0
  754. package/dist/user-Dnp53zTq.mjs +171 -0
  755. package/dist/user-Dnp53zTq.mjs.map +1 -0
  756. package/dist/utils-CoV-PYhg.mjs +439 -0
  757. package/dist/utils-CoV-PYhg.mjs.map +1 -0
  758. package/dist/validate-CfQ9_YlD.d.mts +468 -0
  759. package/dist/validate-CfQ9_YlD.d.mts.map +1 -0
  760. package/dist/validate-DBX3DKtL.mjs +516 -0
  761. package/dist/validate-DBX3DKtL.mjs.map +1 -0
  762. package/dist/validation-BJMiDhB1.mjs +219 -0
  763. package/dist/validation-BJMiDhB1.mjs.map +1 -0
  764. package/dist/version-BaT8yKIT.mjs +7 -0
  765. package/dist/version-BaT8yKIT.mjs.map +1 -0
  766. package/dist/version-BwEGkqkx.mjs +9 -0
  767. package/dist/version-BwEGkqkx.mjs.map +1 -0
  768. package/dist/virtual-modules-B6vJW15k.mjs +516 -0
  769. package/dist/virtual-modules-B6vJW15k.mjs.map +1 -0
  770. package/dist/widgets-BkxBAgZ_.mjs +126 -0
  771. package/dist/widgets-BkxBAgZ_.mjs.map +1 -0
  772. package/dist/wxr-taxonomies-D7gAJyOF.mjs +453 -0
  773. package/dist/wxr-taxonomies-D7gAJyOF.mjs.map +1 -0
  774. package/dist/wxr-taxonomies-DM5J9AsT.d.mts +34 -0
  775. package/dist/wxr-taxonomies-DM5J9AsT.d.mts.map +1 -0
  776. package/dist/zod-generator-BQilAboC.mjs +424 -0
  777. package/dist/zod-generator-BQilAboC.mjs.map +1 -0
  778. package/package.json +11 -5
  779. package/src/api/errors.ts +3 -0
  780. package/src/api/handlers/bylines.ts +24 -3
  781. package/src/api/handlers/calendar.ts +246 -0
  782. package/src/api/handlers/content.ts +12 -5
  783. package/src/api/handlers/media-allowlist.ts +1 -0
  784. package/src/api/handlers/media-upload.ts +13 -10
  785. package/src/api/handlers/plugins.ts +21 -29
  786. package/src/api/handlers/redirects.ts +6 -6
  787. package/src/api/schemas/bylines.ts +3 -1
  788. package/src/api/schemas/content.ts +16 -0
  789. package/src/astro/integration/index.ts +18 -1
  790. package/src/astro/integration/routes.ts +5 -0
  791. package/src/astro/integration/vite-config.ts +11 -0
  792. package/src/astro/middleware/csp.ts +1 -0
  793. package/src/astro/middleware/redirect.ts +20 -9
  794. package/src/astro/middleware/request-context.ts +54 -27
  795. package/src/astro/middleware.ts +97 -12
  796. package/src/astro/prefetch.ts +10 -3
  797. package/src/astro/routes/api/admin/bylines/[id]/translations.ts +0 -5
  798. package/src/astro/routes/api/admin/bylines/index.ts +1 -1
  799. package/src/astro/routes/api/admin/plugins/[id]/index.ts +1 -0
  800. package/src/astro/routes/api/auth/oauth/[provider]/callback.ts +56 -4
  801. package/src/astro/routes/api/auth/oauth/[provider].ts +37 -4
  802. package/src/astro/routes/api/calendar.ts +35 -0
  803. package/src/astro/routes/api/media/upload-url.ts +8 -4
  804. package/src/astro/routes/api/media.ts +9 -5
  805. package/src/astro/routes/api/setup/index.ts +14 -2
  806. package/src/auth/providers/microsoft-admin.tsx +31 -0
  807. package/src/auth/providers/microsoft.ts +47 -0
  808. package/src/comments/turnstile.ts +6 -1
  809. package/src/components/HtmlBlock.astro +17 -6
  810. package/src/components/HtmlBlockFrame.astro +63 -0
  811. package/src/components/Iframe.astro +141 -0
  812. package/src/components/InlinePortableTextEditor.tsx +8 -7
  813. package/src/components/WebMcpSearch.astro +80 -0
  814. package/src/components/index.ts +5 -2
  815. package/src/components/webmcp-search.ts +142 -0
  816. package/src/config/secrets.ts +27 -15
  817. package/src/content/converters/portable-text-identity.ts +1 -0
  818. package/src/content/converters/portable-text-to-prosemirror.ts +36 -2
  819. package/src/content/converters/prosemirror-to-portable-text.ts +28 -2
  820. package/src/content/converters/types.ts +24 -0
  821. package/src/database/content-datetime.ts +11 -4
  822. package/src/database/migrations/090_redirect_enable_loop_guard.ts +70 -0
  823. package/src/database/migrations/091_redirect_artifacts.ts +141 -0
  824. package/src/database/migrations/runner.ts +4 -0
  825. package/src/database/repositories/content.ts +81 -26
  826. package/src/database/repositories/redirect.ts +6 -1
  827. package/src/database/request-scoped.ts +34 -0
  828. package/src/database/types.ts +23 -0
  829. package/src/db/adapters.ts +2 -0
  830. package/src/emdash-runtime.ts +28 -3
  831. package/src/import/menus.ts +3 -0
  832. package/src/index.ts +1 -0
  833. package/src/loader.ts +226 -55
  834. package/src/mcp/server.ts +12 -4
  835. package/src/media/mime.ts +21 -0
  836. package/src/menus/index.ts +30 -26
  837. package/src/plugins/hooks.ts +10 -0
  838. package/src/plugins/manager.ts +12 -2
  839. package/src/plugins/types.ts +16 -0
  840. package/src/query.ts +12 -29
  841. package/src/redirects/artifacts.ts +460 -0
  842. package/src/redirects/cache.ts +76 -41
  843. package/src/request-context.ts +1 -1
  844. package/src/seed/apply.ts +65 -57
  845. package/src/settings/index.ts +17 -12
  846. package/src/transfer/format/columns.ts +3 -0
  847. package/src/transfer/import/rebuild.ts +17 -2
  848. package/src/transfer/import/scaffold.ts +16 -9
  849. package/src/ui.ts +1 -0
  850. package/src/utils/sanitize.ts +14 -9
  851. package/src/virtual-modules.d.ts +3 -0
  852. package/dist/action-token-D2KE1Rqf.mjs +0 -26
  853. package/dist/action-token-D2KE1Rqf.mjs.map +0 -1
  854. package/dist/activation-DDuqAat2.mjs +0 -387
  855. package/dist/activation-DDuqAat2.mjs.map +0 -1
  856. package/dist/adapters-Ds-1Pmkm.d.mts +0 -171
  857. package/dist/adapters-Ds-1Pmkm.d.mts.map +0 -1
  858. package/dist/allowed-origins-D78QvbTO.mjs +0 -116
  859. package/dist/allowed-origins-D78QvbTO.mjs.map +0 -1
  860. package/dist/api-BBZlif0y.mjs +0 -4974
  861. package/dist/api-BBZlif0y.mjs.map +0 -1
  862. package/dist/api-tokens-BGbfWZVO.mjs +0 -166
  863. package/dist/api-tokens-BGbfWZVO.mjs.map +0 -1
  864. package/dist/apply-CDNV4JJ-.mjs +0 -1672
  865. package/dist/apply-CDNV4JJ-.mjs.map +0 -1
  866. package/dist/approvals-CVvJSEBF.mjs +0 -460
  867. package/dist/approvals-CVvJSEBF.mjs.map +0 -1
  868. package/dist/artifact-fetch-CGK0DQLj.mjs +0 -659
  869. package/dist/artifact-fetch-CGK0DQLj.mjs.map +0 -1
  870. package/dist/audit-BszbE_BP.mjs +0 -127
  871. package/dist/audit-BszbE_BP.mjs.map +0 -1
  872. package/dist/authoritative-records-ChM8dTeV.mjs +0 -5172
  873. package/dist/authoritative-records-ChM8dTeV.mjs.map +0 -1
  874. package/dist/authorize-CTGywswM.mjs +0 -49
  875. package/dist/authorize-CTGywswM.mjs.map +0 -1
  876. package/dist/backup-CDrPP8fI.mjs +0 -246
  877. package/dist/backup-CDrPP8fI.mjs.map +0 -1
  878. package/dist/base64-DvnNgP7e.mjs +0 -63
  879. package/dist/base64-DvnNgP7e.mjs.map +0 -1
  880. package/dist/block-types-nNEaPkvx.mjs +0 -132
  881. package/dist/block-types-nNEaPkvx.mjs.map +0 -1
  882. package/dist/block-values-Bho1nsZF.mjs +0 -175
  883. package/dist/block-values-Bho1nsZF.mjs.map +0 -1
  884. package/dist/byline-02tu_Uc-.mjs +0 -909
  885. package/dist/byline-02tu_Uc-.mjs.map +0 -1
  886. package/dist/byline-fields-BYbTptTU.mjs +0 -280
  887. package/dist/byline-fields-BYbTptTU.mjs.map +0 -1
  888. package/dist/byline-fields-BjQH-1z9.mjs +0 -123
  889. package/dist/byline-fields-BjQH-1z9.mjs.map +0 -1
  890. package/dist/bylines-VytjeHBI.mjs +0 -214
  891. package/dist/bylines-VytjeHBI.mjs.map +0 -1
  892. package/dist/bylines-gyWBWUUc.mjs +0 -150
  893. package/dist/bylines-gyWBWUUc.mjs.map +0 -1
  894. package/dist/cache-CPanL9IO.mjs +0 -114
  895. package/dist/cache-CPanL9IO.mjs.map +0 -1
  896. package/dist/canonical-CAecl1UQ.mjs +0 -174
  897. package/dist/canonical-CAecl1UQ.mjs.map +0 -1
  898. package/dist/capture-triggers-CdZfvHtF.mjs +0 -362
  899. package/dist/capture-triggers-CdZfvHtF.mjs.map +0 -1
  900. package/dist/challenge-store-VePApay4.mjs +0 -51
  901. package/dist/challenge-store-VePApay4.mjs.map +0 -1
  902. package/dist/checksum-BSIhEAYW.mjs +0 -162
  903. package/dist/checksum-BSIhEAYW.mjs.map +0 -1
  904. package/dist/chrome-tags-CKELm-bo.mjs +0 -24
  905. package/dist/chrome-tags-CKELm-bo.mjs.map +0 -1
  906. package/dist/chunks-DBmkKmBH.mjs +0 -25
  907. package/dist/chunks-DBmkKmBH.mjs.map +0 -1
  908. package/dist/collection-slugs-cache-BNRAPNiu.mjs +0 -85
  909. package/dist/collection-slugs-cache-BNRAPNiu.mjs.map +0 -1
  910. package/dist/comment-Cq1UYN8_.mjs +0 -313
  911. package/dist/comment-Cq1UYN8_.mjs.map +0 -1
  912. package/dist/comment-reaction-B5sZzSoA.mjs +0 -85
  913. package/dist/comment-reaction-B5sZzSoA.mjs.map +0 -1
  914. package/dist/comments-B3F-ETyh.mjs +0 -195
  915. package/dist/comments-B3F-ETyh.mjs.map +0 -1
  916. package/dist/comments-zrTgWBSg.mjs +0 -99
  917. package/dist/comments-zrTgWBSg.mjs.map +0 -1
  918. package/dist/components-Dbf4Eq16.mjs +0 -108
  919. package/dist/components-Dbf4Eq16.mjs.map +0 -1
  920. package/dist/config-BCM5sQP7.d.mts +0 -6688
  921. package/dist/config-BCM5sQP7.d.mts.map +0 -1
  922. package/dist/config-CXPcy2iY.mjs +0 -228
  923. package/dist/config-CXPcy2iY.mjs.map +0 -1
  924. package/dist/config-CZkZBuBK.d.mts +0 -39
  925. package/dist/config-CZkZBuBK.d.mts.map +0 -1
  926. package/dist/connection-C5GIciX9.mjs +0 -36
  927. package/dist/connection-C5GIciX9.mjs.map +0 -1
  928. package/dist/content-RzEXY3QX.mjs +0 -2020
  929. package/dist/content-RzEXY3QX.mjs.map +0 -1
  930. package/dist/content-list-query-B6P37Ug_.d.mts +0 -26
  931. package/dist/content-list-query-B6P37Ug_.d.mts.map +0 -1
  932. package/dist/content-repair-BDVsYXWK.mjs +0 -442
  933. package/dist/content-repair-BDVsYXWK.mjs.map +0 -1
  934. package/dist/context-BpTIzY5h.mjs +0 -2026
  935. package/dist/context-BpTIzY5h.mjs.map +0 -1
  936. package/dist/credits-JOE92Gr7.mjs +0 -110
  937. package/dist/credits-JOE92Gr7.mjs.map +0 -1
  938. package/dist/cron-ktyapbdB.mjs +0 -306
  939. package/dist/cron-ktyapbdB.mjs.map +0 -1
  940. package/dist/dashboard-BoV4pwPP.mjs +0 -151
  941. package/dist/dashboard-BoV4pwPP.mjs.map +0 -1
  942. package/dist/default-B7KnYwtQ.mjs +0 -81
  943. package/dist/default-B7KnYwtQ.mjs.map +0 -1
  944. package/dist/deferred-tasks-eaUIqXj8.d.mts +0 -9
  945. package/dist/deferred-tasks-eaUIqXj8.d.mts.map +0 -1
  946. package/dist/dev-typegen-8JlYYFno.mjs +0 -29
  947. package/dist/dev-typegen-8JlYYFno.mjs.map +0 -1
  948. package/dist/device-flow-BlV_z24g.mjs +0 -521
  949. package/dist/device-flow-BlV_z24g.mjs.map +0 -1
  950. package/dist/digest-DiYAoZpf.mjs +0 -194
  951. package/dist/digest-DiYAoZpf.mjs.map +0 -1
  952. package/dist/direct-executor-Db8xA3zg.mjs +0 -104
  953. package/dist/direct-executor-Db8xA3zg.mjs.map +0 -1
  954. package/dist/email-console-Dm78wSmg.mjs +0 -50
  955. package/dist/email-console-Dm78wSmg.mjs.map +0 -1
  956. package/dist/email-locale-B4X9LXe9.mjs +0 -25
  957. package/dist/email-locale-B4X9LXe9.mjs.map +0 -1
  958. package/dist/emdash-runtime-BakQ6io7.mjs +0 -4239
  959. package/dist/emdash-runtime-BakQ6io7.mjs.map +0 -1
  960. package/dist/enrich-BDdVNeDK.mjs +0 -194
  961. package/dist/enrich-BDdVNeDK.mjs.map +0 -1
  962. package/dist/entry-lock-DY8B-xcr.d.mts +0 -4544
  963. package/dist/entry-lock-DY8B-xcr.d.mts.map +0 -1
  964. package/dist/entry-lock-DrUAdTzf.mjs +0 -163
  965. package/dist/entry-lock-DrUAdTzf.mjs.map +0 -1
  966. package/dist/entry-lock-yIkBduqJ.mjs +0 -1180
  967. package/dist/entry-lock-yIkBduqJ.mjs.map +0 -1
  968. package/dist/env-types-DkHYR2pl.mjs +0 -38
  969. package/dist/env-types-DkHYR2pl.mjs.map +0 -1
  970. package/dist/error-DIYXAVk4.mjs +0 -90
  971. package/dist/error-DIYXAVk4.mjs.map +0 -1
  972. package/dist/errors-CNvATh_7.mjs +0 -469
  973. package/dist/errors-CNvATh_7.mjs.map +0 -1
  974. package/dist/errors-CjXd1LgH.mjs +0 -120
  975. package/dist/errors-CjXd1LgH.mjs.map +0 -1
  976. package/dist/escape-B1GM0yJU.mjs +0 -9
  977. package/dist/escape-B1GM0yJU.mjs.map +0 -1
  978. package/dist/fence-8MaKKWhp.mjs +0 -162
  979. package/dist/fence-8MaKKWhp.mjs.map +0 -1
  980. package/dist/field-defs-cache-DEkFYCDE.mjs +0 -77
  981. package/dist/field-defs-cache-DEkFYCDE.mjs.map +0 -1
  982. package/dist/field-map-D7ioN0r0.mjs +0 -83
  983. package/dist/field-map-D7ioN0r0.mjs.map +0 -1
  984. package/dist/fts-manager-DU03MxWu.mjs +0 -443
  985. package/dist/fts-manager-DU03MxWu.mjs.map +0 -1
  986. package/dist/gc-DMiE7ezk.mjs +0 -75
  987. package/dist/gc-DMiE7ezk.mjs.map +0 -1
  988. package/dist/hash-CY4QdeMJ.mjs +0 -37
  989. package/dist/hash-CY4QdeMJ.mjs.map +0 -1
  990. package/dist/hook-result-Cb67D3P3.d.mts +0 -31
  991. package/dist/hook-result-Cb67D3P3.d.mts.map +0 -1
  992. package/dist/hreflang-Bterc3b7.mjs +0 -105
  993. package/dist/hreflang-Bterc3b7.mjs.map +0 -1
  994. package/dist/hreflang-uIBOE5yg.d.mts +0 -50
  995. package/dist/hreflang-uIBOE5yg.d.mts.map +0 -1
  996. package/dist/http-route-dispatch-DubjTibD.mjs +0 -339
  997. package/dist/http-route-dispatch-DubjTibD.mjs.map +0 -1
  998. package/dist/identity-DJ-5AcdG.mjs +0 -35
  999. package/dist/identity-DJ-5AcdG.mjs.map +0 -1
  1000. package/dist/import-DEfuIgRz.mjs +0 -2020
  1001. package/dist/import-DEfuIgRz.mjs.map +0 -1
  1002. package/dist/index-xCy3j0f6.d.mts +0 -623
  1003. package/dist/index-xCy3j0f6.d.mts.map +0 -1
  1004. package/dist/init-lock-4eRRB4Le.mjs +0 -56
  1005. package/dist/init-lock-4eRRB4Le.mjs.map +0 -1
  1006. package/dist/install-finalization-DeGRbaVa.mjs +0 -58
  1007. package/dist/install-finalization-DeGRbaVa.mjs.map +0 -1
  1008. package/dist/keys-DWwMxdZh.mjs +0 -61
  1009. package/dist/keys-DWwMxdZh.mjs.map +0 -1
  1010. package/dist/kinds-D1A-00-F.mjs +0 -974
  1011. package/dist/kinds-D1A-00-F.mjs.map +0 -1
  1012. package/dist/lifecycle-BWtBGNEn.mjs +0 -25
  1013. package/dist/lifecycle-BWtBGNEn.mjs.map +0 -1
  1014. package/dist/load-BR1NEa_3.mjs +0 -28
  1015. package/dist/load-BR1NEa_3.mjs.map +0 -1
  1016. package/dist/loader-D4edocWH.mjs +0 -1197
  1017. package/dist/loader-D4edocWH.mjs.map +0 -1
  1018. package/dist/loops-DLaHFrvI.mjs +0 -205
  1019. package/dist/loops-DLaHFrvI.mjs.map +0 -1
  1020. package/dist/manifest-builder-8jsSLR7s.mjs +0 -189
  1021. package/dist/manifest-builder-8jsSLR7s.mjs.map +0 -1
  1022. package/dist/manifest-schema-DcZjRNEv.mjs +0 -496
  1023. package/dist/manifest-schema-DcZjRNEv.mjs.map +0 -1
  1024. package/dist/marketplace-CNxjq10S.mjs +0 -257
  1025. package/dist/marketplace-CNxjq10S.mjs.map +0 -1
  1026. package/dist/media-3v7mqAVX.mjs +0 -294
  1027. package/dist/media-3v7mqAVX.mjs.map +0 -1
  1028. package/dist/media-Bs6qmlVl.mjs +0 -408
  1029. package/dist/media-Bs6qmlVl.mjs.map +0 -1
  1030. package/dist/media-CputjGE1.mjs +0 -373
  1031. package/dist/media-CputjGE1.mjs.map +0 -1
  1032. package/dist/media-allowlist-isqF1gAh.mjs +0 -44
  1033. package/dist/media-allowlist-isqF1gAh.mjs.map +0 -1
  1034. package/dist/media-folders-D2VdVBf6.mjs +0 -210
  1035. package/dist/media-folders-D2VdVBf6.mjs.map +0 -1
  1036. package/dist/media-url-DbkMY3y6.mjs +0 -43
  1037. package/dist/media-url-DbkMY3y6.mjs.map +0 -1
  1038. package/dist/media-usage-activation-BaT4AlNI.mjs +0 -78
  1039. package/dist/media-usage-activation-BaT4AlNI.mjs.map +0 -1
  1040. package/dist/media-usage-v43L0kR_.mjs +0 -282
  1041. package/dist/media-usage-v43L0kR_.mjs.map +0 -1
  1042. package/dist/media-usage-work-CY8gIeU-.mjs +0 -151
  1043. package/dist/media-usage-work-CY8gIeU-.mjs.map +0 -1
  1044. package/dist/media-usage-work-VO108Q9E.mjs +0 -1015
  1045. package/dist/media-usage-work-VO108Q9E.mjs.map +0 -1
  1046. package/dist/menus-BYyeRemR.mjs +0 -3647
  1047. package/dist/menus-BYyeRemR.mjs.map +0 -1
  1048. package/dist/menus-mC_XTxD7.mjs +0 -92
  1049. package/dist/menus-mC_XTxD7.mjs.map +0 -1
  1050. package/dist/menus-trvc6_fW.mjs +0 -753
  1051. package/dist/menus-trvc6_fW.mjs.map +0 -1
  1052. package/dist/mime-IZf-LHIS.mjs +0 -36
  1053. package/dist/mime-IZf-LHIS.mjs.map +0 -1
  1054. package/dist/mode-B9-gMXL9.mjs +0 -23
  1055. package/dist/mode-B9-gMXL9.mjs.map +0 -1
  1056. package/dist/node-sqlite-compat-DztcWs4y.mjs +0 -63
  1057. package/dist/node-sqlite-compat-DztcWs4y.mjs.map +0 -1
  1058. package/dist/oauth-authorization-BIHy9SGU.mjs +0 -274
  1059. package/dist/oauth-authorization-BIHy9SGU.mjs.map +0 -1
  1060. package/dist/oauth-clients-BZWZvKXa.mjs +0 -266
  1061. package/dist/oauth-clients-BZWZvKXa.mjs.map +0 -1
  1062. package/dist/oauth-state-store-CxXTjXdI.mjs +0 -50
  1063. package/dist/oauth-state-store-CxXTjXdI.mjs.map +0 -1
  1064. package/dist/oauth-user-lookup-GWojfxRl.mjs +0 -26
  1065. package/dist/oauth-user-lookup-GWojfxRl.mjs.map +0 -1
  1066. package/dist/options-DRF6dlXY.d.mts +0 -81
  1067. package/dist/options-DRF6dlXY.d.mts.map +0 -1
  1068. package/dist/ownership-Bd77AmJz.mjs +0 -12
  1069. package/dist/ownership-Bd77AmJz.mjs.map +0 -1
  1070. package/dist/parse-5Y0W39xR.mjs +0 -81
  1071. package/dist/parse-5Y0W39xR.mjs.map +0 -1
  1072. package/dist/parse-BPblgoa-.d.mts +0 -172
  1073. package/dist/parse-BPblgoa-.d.mts.map +0 -1
  1074. package/dist/passkey-config-PiQ5cBnt.mjs +0 -46
  1075. package/dist/passkey-config-PiQ5cBnt.mjs.map +0 -1
  1076. package/dist/paths-DkS74lBM.mjs +0 -77
  1077. package/dist/paths-DkS74lBM.mjs.map +0 -1
  1078. package/dist/placeholder-Bez2282x.d.mts +0 -306
  1079. package/dist/placeholder-Bez2282x.d.mts.map +0 -1
  1080. package/dist/plan-Lw7iGnGD.mjs +0 -135
  1081. package/dist/plan-Lw7iGnGD.mjs.map +0 -1
  1082. package/dist/plugins-D7xSh1Lu.mjs +0 -277
  1083. package/dist/plugins-D7xSh1Lu.mjs.map +0 -1
  1084. package/dist/policy-DMRiMdLn.mjs +0 -45
  1085. package/dist/policy-DMRiMdLn.mjs.map +0 -1
  1086. package/dist/portable-text-kcyN3F-a.mjs +0 -307
  1087. package/dist/portable-text-kcyN3F-a.mjs.map +0 -1
  1088. package/dist/preview--2VDLaND.mjs +0 -107
  1089. package/dist/preview--2VDLaND.mjs.map +0 -1
  1090. package/dist/protocol-FvwLA8P-.d.mts +0 -61
  1091. package/dist/protocol-FvwLA8P-.d.mts.map +0 -1
  1092. package/dist/public-submission-BRyK76U8.mjs +0 -250
  1093. package/dist/public-submission-BRyK76U8.mjs.map +0 -1
  1094. package/dist/public-url-7j0cpCFc.mjs +0 -101
  1095. package/dist/public-url-7j0cpCFc.mjs.map +0 -1
  1096. package/dist/query-BRNTde3V.mjs +0 -41
  1097. package/dist/query-BRNTde3V.mjs.map +0 -1
  1098. package/dist/query-DyYYWOKk.mjs +0 -1161
  1099. package/dist/query-DyYYWOKk.mjs.map +0 -1
  1100. package/dist/rate-limit-D0BcE76H.mjs +0 -120
  1101. package/dist/rate-limit-D0BcE76H.mjs.map +0 -1
  1102. package/dist/receipt-C4icyHlC.mjs +0 -43
  1103. package/dist/receipt-C4icyHlC.mjs.map +0 -1
  1104. package/dist/redirect-9DbtxSNG.mjs +0 -19
  1105. package/dist/redirect-9DbtxSNG.mjs.map +0 -1
  1106. package/dist/redirect-BvFKh8Sz.mjs +0 -416
  1107. package/dist/redirect-BvFKh8Sz.mjs.map +0 -1
  1108. package/dist/redirects-1nhdEaTq.mjs +0 -148
  1109. package/dist/redirects-1nhdEaTq.mjs.map +0 -1
  1110. package/dist/redirects-D1yMnSR9.mjs +0 -446
  1111. package/dist/redirects-D1yMnSR9.mjs.map +0 -1
  1112. package/dist/registry-CzPJNu3H.mjs +0 -8366
  1113. package/dist/registry-CzPJNu3H.mjs.map +0 -1
  1114. package/dist/relations-C8JpSkU6.mjs +0 -776
  1115. package/dist/relations-C8JpSkU6.mjs.map +0 -1
  1116. package/dist/request-meta-Bs60XW1m.mjs +0 -141
  1117. package/dist/request-meta-Bs60XW1m.mjs.map +0 -1
  1118. package/dist/resolve-BHWgMU_X.mjs +0 -100
  1119. package/dist/resolve-BHWgMU_X.mjs.map +0 -1
  1120. package/dist/revision-CGkQA0e5.mjs +0 -366
  1121. package/dist/revision-CGkQA0e5.mjs.map +0 -1
  1122. package/dist/route-wire-ClUVQduA.mjs +0 -197
  1123. package/dist/route-wire-ClUVQduA.mjs.map +0 -1
  1124. package/dist/routes-D2GFl3B7.mjs +0 -272
  1125. package/dist/routes-D2GFl3B7.mjs.map +0 -1
  1126. package/dist/runner-CLpxmhl8.mjs +0 -6197
  1127. package/dist/runner-CLpxmhl8.mjs.map +0 -1
  1128. package/dist/runner-CWl76CH3.d.mts +0 -68
  1129. package/dist/runner-CWl76CH3.d.mts.map +0 -1
  1130. package/dist/schema-27XefSYG.mjs +0 -13
  1131. package/dist/schema-27XefSYG.mjs.map +0 -1
  1132. package/dist/schema-Btvj3BMh.mjs +0 -815
  1133. package/dist/schema-Btvj3BMh.mjs.map +0 -1
  1134. package/dist/scopes-DGCj6K4p.mjs +0 -34
  1135. package/dist/scopes-DGCj6K4p.mjs.map +0 -1
  1136. package/dist/search-pZRRmWjh.mjs +0 -448
  1137. package/dist/search-pZRRmWjh.mjs.map +0 -1
  1138. package/dist/secrets-CIi0nFiR.mjs +0 -341
  1139. package/dist/secrets-CIi0nFiR.mjs.map +0 -1
  1140. package/dist/sections-CIhqs3Ao.mjs +0 -346
  1141. package/dist/sections-CIhqs3Ao.mjs.map +0 -1
  1142. package/dist/seo-DifeiGdl.mjs +0 -114
  1143. package/dist/seo-DifeiGdl.mjs.map +0 -1
  1144. package/dist/seo-DpYxmGaL.mjs +0 -133
  1145. package/dist/seo-DpYxmGaL.mjs.map +0 -1
  1146. package/dist/service-COVdVpSK.mjs +0 -150
  1147. package/dist/service-COVdVpSK.mjs.map +0 -1
  1148. package/dist/session-user-C6IEjuty.mjs +0 -61
  1149. package/dist/session-user-C6IEjuty.mjs.map +0 -1
  1150. package/dist/settings-CwcrX-Ay.mjs +0 -61
  1151. package/dist/settings-CwcrX-Ay.mjs.map +0 -1
  1152. package/dist/settings-D_cJtT48.mjs +0 -439
  1153. package/dist/settings-D_cJtT48.mjs.map +0 -1
  1154. package/dist/settings-tnPQN3Z2.mjs +0 -51
  1155. package/dist/settings-tnPQN3Z2.mjs.map +0 -1
  1156. package/dist/setup-complete-BOrI10UY.mjs +0 -65
  1157. package/dist/setup-complete-BOrI10UY.mjs.map +0 -1
  1158. package/dist/setup-nonce-0XTBLTsX.mjs +0 -25
  1159. package/dist/setup-nonce-0XTBLTsX.mjs.map +0 -1
  1160. package/dist/single-flight-cache-B5O2qhO1.mjs +0 -104
  1161. package/dist/single-flight-cache-B5O2qhO1.mjs.map +0 -1
  1162. package/dist/site-settings-B7vGFRDT.mjs +0 -50
  1163. package/dist/site-settings-B7vGFRDT.mjs.map +0 -1
  1164. package/dist/site-url-wEYRMHBv.mjs +0 -16
  1165. package/dist/site-url-wEYRMHBv.mjs.map +0 -1
  1166. package/dist/snapshot-W36KbLmc.mjs +0 -414
  1167. package/dist/snapshot-W36KbLmc.mjs.map +0 -1
  1168. package/dist/ssrf-CRJ-xom5.mjs +0 -406
  1169. package/dist/ssrf-CRJ-xom5.mjs.map +0 -1
  1170. package/dist/stage-DA0NrTRZ.mjs +0 -662
  1171. package/dist/stage-DA0NrTRZ.mjs.map +0 -1
  1172. package/dist/staged-Bw5eHbKS.mjs +0 -686
  1173. package/dist/staged-Bw5eHbKS.mjs.map +0 -1
  1174. package/dist/state-BTlprvUF.mjs +0 -153
  1175. package/dist/state-BTlprvUF.mjs.map +0 -1
  1176. package/dist/status-C6IrSLMT.mjs +0 -30
  1177. package/dist/status-C6IrSLMT.mjs.map +0 -1
  1178. package/dist/storage-query-CdVF2bng.d.mts +0 -1614
  1179. package/dist/storage-query-CdVF2bng.d.mts.map +0 -1
  1180. package/dist/tar-BGOZARjy.mjs +0 -449
  1181. package/dist/tar-BGOZARjy.mjs.map +0 -1
  1182. package/dist/target-YhYH_0uc.mjs +0 -27
  1183. package/dist/target-YhYH_0uc.mjs.map +0 -1
  1184. package/dist/taxonomies-DK_XBrmT.mjs +0 -697
  1185. package/dist/taxonomies-DK_XBrmT.mjs.map +0 -1
  1186. package/dist/taxonomies-S1M3rUC0.mjs +0 -939
  1187. package/dist/taxonomies-S1M3rUC0.mjs.map +0 -1
  1188. package/dist/taxonomy-BesdHIwi.mjs +0 -525
  1189. package/dist/taxonomy-BesdHIwi.mjs.map +0 -1
  1190. package/dist/tokens-B_ffPF1q.mjs +0 -171
  1191. package/dist/tokens-B_ffPF1q.mjs.map +0 -1
  1192. package/dist/transfer-9fVSxyrV.mjs +0 -166
  1193. package/dist/transfer-9fVSxyrV.mjs.map +0 -1
  1194. package/dist/transfer-B7LUTaYD.mjs +0 -8855
  1195. package/dist/transfer-B7LUTaYD.mjs.map +0 -1
  1196. package/dist/transfer-download-BdNq4VWN.mjs +0 -33
  1197. package/dist/transfer-download-BdNq4VWN.mjs.map +0 -1
  1198. package/dist/transformations-BtQdvyly.mjs +0 -196
  1199. package/dist/transformations-BtQdvyly.mjs.map +0 -1
  1200. package/dist/transport-CriYXY1c.mjs +0 -136
  1201. package/dist/transport-CriYXY1c.mjs.map +0 -1
  1202. package/dist/transport-SnhS6xku.d.mts +0 -42
  1203. package/dist/transport-SnhS6xku.d.mts.map +0 -1
  1204. package/dist/trusted-proxy-C0eHXPd-.mjs +0 -51
  1205. package/dist/trusted-proxy-C0eHXPd-.mjs.map +0 -1
  1206. package/dist/turnstile-BNPrWd1e.mjs +0 -53
  1207. package/dist/turnstile-BNPrWd1e.mjs.map +0 -1
  1208. package/dist/types-B8sF_kE5.d.mts +0 -287
  1209. package/dist/types-B8sF_kE5.d.mts.map +0 -1
  1210. package/dist/types-BYVIYOlD.d.mts +0 -1720
  1211. package/dist/types-BYVIYOlD.d.mts.map +0 -1
  1212. package/dist/types-Bs4bi95j.d.mts +0 -374
  1213. package/dist/types-Bs4bi95j.d.mts.map +0 -1
  1214. package/dist/types-CGuODCZi.d.mts +0 -198
  1215. package/dist/types-CGuODCZi.d.mts.map +0 -1
  1216. package/dist/types-CVsmpTcU.mjs +0 -18
  1217. package/dist/types-CVsmpTcU.mjs.map +0 -1
  1218. package/dist/types-ClFEExxn.mjs +0 -37
  1219. package/dist/types-ClFEExxn.mjs.map +0 -1
  1220. package/dist/types-D994zUWB.d.mts +0 -85
  1221. package/dist/types-D994zUWB.d.mts.map +0 -1
  1222. package/dist/types-DAj1ByJQ.d.mts +0 -125
  1223. package/dist/types-DAj1ByJQ.d.mts.map +0 -1
  1224. package/dist/types-Dlv6esp4.mjs +0 -77
  1225. package/dist/types-Dlv6esp4.mjs.map +0 -1
  1226. package/dist/types-Dr1LVwL7.d.mts +0 -363
  1227. package/dist/types-Dr1LVwL7.d.mts.map +0 -1
  1228. package/dist/types-MN9bOQ1g.d.mts +0 -198
  1229. package/dist/types-MN9bOQ1g.d.mts.map +0 -1
  1230. package/dist/types-d2Szb1oz.mjs +0 -16
  1231. package/dist/types-d2Szb1oz.mjs.map +0 -1
  1232. package/dist/types-ibtP7GEA.d.mts +0 -896
  1233. package/dist/types-ibtP7GEA.d.mts.map +0 -1
  1234. package/dist/types-j6MBDjlZ.mjs +0 -103
  1235. package/dist/types-j6MBDjlZ.mjs.map +0 -1
  1236. package/dist/update-check-D8No-E5s.mjs +0 -161
  1237. package/dist/update-check-D8No-E5s.mjs.map +0 -1
  1238. package/dist/upload-attempts-BodUoFBu.mjs +0 -32
  1239. package/dist/upload-attempts-BodUoFBu.mjs.map +0 -1
  1240. package/dist/url-pattern-DGAG6ZP2.mjs +0 -41
  1241. package/dist/url-pattern-DGAG6ZP2.mjs.map +0 -1
  1242. package/dist/user-BOvuF1sQ.mjs +0 -171
  1243. package/dist/user-BOvuF1sQ.mjs.map +0 -1
  1244. package/dist/utils-Dr01wRKt.mjs +0 -439
  1245. package/dist/utils-Dr01wRKt.mjs.map +0 -1
  1246. package/dist/validate-BttYU7NK.mjs +0 -516
  1247. package/dist/validate-BttYU7NK.mjs.map +0 -1
  1248. package/dist/validate-Df09inbC.d.mts +0 -468
  1249. package/dist/validate-Df09inbC.d.mts.map +0 -1
  1250. package/dist/validation-DH2WRwWO.mjs +0 -219
  1251. package/dist/validation-DH2WRwWO.mjs.map +0 -1
  1252. package/dist/version-BbygH8CT.mjs +0 -7
  1253. package/dist/version-BbygH8CT.mjs.map +0 -1
  1254. package/dist/version-CseoDDOd.mjs +0 -9
  1255. package/dist/version-CseoDDOd.mjs.map +0 -1
  1256. package/dist/virtual-modules-82GlnQyG.mjs +0 -516
  1257. package/dist/virtual-modules-82GlnQyG.mjs.map +0 -1
  1258. package/dist/widgets-DMAgGcQt.mjs +0 -126
  1259. package/dist/widgets-DMAgGcQt.mjs.map +0 -1
  1260. package/dist/wxr-taxonomies-Bi5kFSxQ.mjs +0 -453
  1261. package/dist/wxr-taxonomies-Bi5kFSxQ.mjs.map +0 -1
  1262. package/dist/wxr-taxonomies-y_FpYlDn.d.mts +0 -34
  1263. package/dist/wxr-taxonomies-y_FpYlDn.d.mts.map +0 -1
  1264. package/dist/zod-generator-DnfG5sGQ.mjs +0 -424
  1265. package/dist/zod-generator-DnfG5sGQ.mjs.map +0 -1
  1266. /package/dist/{api-tokens-B4COohsb.mjs → api-tokens-BLz2MtQs.mjs} +0 -0
  1267. /package/dist/{ssrf-sC4_5rxm.mjs → ssrf-tA45vIPX.mjs} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"seo-DpYxmGaL.mjs","names":[],"sources":["../src/database/repositories/seo.ts"],"sourcesContent":["import { sql, type Kysely } from \"kysely\";\n\nimport { invalidateCollectionCache } from \"../../object-cache/index.js\";\nimport { chunks, SQL_BATCH_SIZE } from \"../../utils/chunks.js\";\nimport type { Database } from \"../types.js\";\nimport type { ContentSeo, ContentSeoInput } from \"./types.js\";\n\n/** Default SEO values for content without an explicit SEO row */\nconst SEO_DEFAULTS: ContentSeo = {\n\ttitle: null,\n\tdescription: null,\n\timage: null,\n\tcanonical: null,\n\tnoIndex: false,\n};\n\n/**\n * Returns true if the input has at least one explicitly-set SEO field.\n * Used to skip no-op upserts when callers pass `{ seo: {} }`.\n */\nfunction hasAnyField(input: ContentSeoInput): boolean {\n\treturn (\n\t\tinput.title !== undefined ||\n\t\tinput.description !== undefined ||\n\t\tinput.image !== undefined ||\n\t\tinput.canonical !== undefined ||\n\t\tinput.noIndex !== undefined\n\t);\n}\n\n/**\n * Repository for SEO metadata stored in `_emdash_seo`.\n *\n * SEO data lives in a separate table keyed by (collection, content_id).\n * Only collections with `has_seo = 1` should use this — callers are\n * responsible for checking the flag before reading/writing.\n */\nexport class SeoRepository {\n\tconstructor(private db: Kysely<Database>) {}\n\n\t/**\n\t * Check whether a collection has SEO enabled (`has_seo = 1`).\n\t * Returns `false` if the collection does not exist.\n\t */\n\tasync isEnabled(collection: string): Promise<boolean> {\n\t\tconst row = await this.db\n\t\t\t.selectFrom(\"_emdash_collections\")\n\t\t\t.select(\"has_seo\")\n\t\t\t.where(\"slug\", \"=\", collection)\n\t\t\t.executeTakeFirst();\n\t\treturn row?.has_seo === 1;\n\t}\n\n\t/**\n\t * Get SEO data for a content item. Returns null defaults if no row exists.\n\t */\n\tasync get(collection: string, contentId: string): Promise<ContentSeo> {\n\t\tconst row = await this.db\n\t\t\t.selectFrom(\"_emdash_seo\")\n\t\t\t.selectAll()\n\t\t\t.where(\"collection\", \"=\", collection)\n\t\t\t.where(\"content_id\", \"=\", contentId)\n\t\t\t.executeTakeFirst();\n\n\t\tif (!row) {\n\t\t\treturn { ...SEO_DEFAULTS };\n\t\t}\n\n\t\treturn {\n\t\t\ttitle: row.seo_title ?? null,\n\t\t\tdescription: row.seo_description ?? null,\n\t\t\timage: row.seo_image ?? null,\n\t\t\tcanonical: row.seo_canonical ?? null,\n\t\t\tnoIndex: row.seo_no_index === 1,\n\t\t};\n\t}\n\n\t/**\n\t * Get SEO data for multiple content items.\n\t * Returns a Map keyed by content_id. Items without SEO rows get defaults.\n\t *\n\t * Chunks the `content_id IN (…)` clause so the total bound-parameter count\n\t * per statement (ids + the `collection = ?` filter) stays within Cloudflare\n\t * D1's 100-variable limit regardless of how many content items are passed.\n\t */\n\tasync getMany(collection: string, contentIds: string[]): Promise<Map<string, ContentSeo>> {\n\t\tconst result = new Map<string, ContentSeo>();\n\n\t\tif (contentIds.length === 0) return result;\n\n\t\t// Pre-fill with defaults so every input id has an entry even if no row exists.\n\t\tfor (const id of contentIds) {\n\t\t\tresult.set(id, { ...SEO_DEFAULTS });\n\t\t}\n\n\t\tconst uniqueContentIds = [...new Set(contentIds)];\n\t\tfor (const chunk of chunks(uniqueContentIds, SQL_BATCH_SIZE)) {\n\t\t\tconst rows = await this.db\n\t\t\t\t.selectFrom(\"_emdash_seo\")\n\t\t\t\t.selectAll()\n\t\t\t\t.where(\"collection\", \"=\", collection)\n\t\t\t\t.where(\"content_id\", \"in\", chunk)\n\t\t\t\t.execute();\n\n\t\t\tfor (const row of rows) {\n\t\t\t\tresult.set(row.content_id, {\n\t\t\t\t\ttitle: row.seo_title ?? null,\n\t\t\t\t\tdescription: row.seo_description ?? null,\n\t\t\t\t\timage: row.seo_image ?? null,\n\t\t\t\t\tcanonical: row.seo_canonical ?? null,\n\t\t\t\t\tnoIndex: row.seo_no_index === 1,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Upsert SEO data for a content item using INSERT ON CONFLICT DO UPDATE\n\t * for atomicity. Skips no-op writes when input has no fields set.\n\t */\n\tasync upsert(collection: string, contentId: string, input: ContentSeoInput): Promise<ContentSeo> {\n\t\t// Skip no-op: empty input (e.g., `{ seo: {} }` from form libs)\n\t\tif (!hasAnyField(input)) {\n\t\t\treturn this.get(collection, contentId);\n\t\t}\n\n\t\tconst now = new Date().toISOString();\n\n\t\t// Use INSERT ON CONFLICT for atomic upsert — avoids TOCTOU race\n\t\t// where two concurrent requests both see \"no row\" and both try INSERT.\n\t\t//\n\t\t// On conflict, we use COALESCE(excluded.col, current.col) so that\n\t\t// only explicitly-provided fields overwrite existing values.\n\t\tawait sql`\n\t\t\tINSERT INTO _emdash_seo (\n\t\t\t\tcollection, content_id,\n\t\t\t\tseo_title, seo_description, seo_image, seo_canonical, seo_no_index,\n\t\t\t\tcreated_at, updated_at\n\t\t\t) VALUES (\n\t\t\t\t${collection}, ${contentId},\n\t\t\t\t${input.title ?? null}, ${input.description ?? null},\n\t\t\t\t${input.image ?? null}, ${input.canonical ?? null},\n\t\t\t\t${input.noIndex ? 1 : 0},\n\t\t\t\t${now}, ${now}\n\t\t\t)\n\t\t\tON CONFLICT (collection, content_id) DO UPDATE SET\n\t\t\t\tseo_title = ${input.title !== undefined ? sql`${input.title}` : sql`_emdash_seo.seo_title`},\n\t\t\t\tseo_description = ${input.description !== undefined ? sql`${input.description}` : sql`_emdash_seo.seo_description`},\n\t\t\t\tseo_image = ${input.image !== undefined ? sql`${input.image}` : sql`_emdash_seo.seo_image`},\n\t\t\t\tseo_canonical = ${input.canonical !== undefined ? sql`${input.canonical}` : sql`_emdash_seo.seo_canonical`},\n\t\t\t\tseo_no_index = ${input.noIndex !== undefined ? sql`${input.noIndex ? 1 : 0}` : sql`_emdash_seo.seo_no_index`},\n\t\t\t\tupdated_at = ${now}\n\t\t`.execute(this.db);\n\n\t\tinvalidateCollectionCache(collection);\n\t\treturn this.get(collection, contentId);\n\t}\n\n\t/**\n\t * Delete SEO data for a content item.\n\t */\n\tasync delete(collection: string, contentId: string): Promise<void> {\n\t\tawait this.db\n\t\t\t.deleteFrom(\"_emdash_seo\")\n\t\t\t.where(\"collection\", \"=\", collection)\n\t\t\t.where(\"content_id\", \"=\", contentId)\n\t\t\t.execute();\n\t\tinvalidateCollectionCache(collection);\n\t}\n\n\t/**\n\t * Copy SEO data from one content item to another.\n\t * Used by duplicate. Clears canonical (it pointed to the original).\n\t */\n\tasync copyForDuplicate(collection: string, sourceId: string, targetId: string): Promise<void> {\n\t\tconst source = await this.get(collection, sourceId);\n\n\t\t// Only write if there's actual SEO data worth copying\n\t\tif (\n\t\t\tsource.title !== null ||\n\t\t\tsource.description !== null ||\n\t\t\tsource.image !== null ||\n\t\t\tsource.noIndex\n\t\t) {\n\t\t\tawait this.upsert(collection, targetId, {\n\t\t\t\ttitle: source.title,\n\t\t\t\tdescription: source.description,\n\t\t\t\timage: source.image,\n\t\t\t\tcanonical: null, // Don't copy canonical — it pointed to the original\n\t\t\t\tnoIndex: source.noIndex,\n\t\t\t});\n\t\t}\n\t}\n}\n"],"mappings":"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"}
@@ -1,150 +0,0 @@
1
- import { t as CommentRepository } from "./comment-Cq1UYN8_.mjs";
2
- import { AsyncLocalStorage } from "node:async_hooks";
3
-
4
- //#region src/comments/service.ts
5
- /**
6
- * Comment Service
7
- *
8
- * Orchestrates comment creation through the hook pipeline:
9
- * 1. Run comment:beforeCreate pipeline (transform/reject)
10
- * 2. Query priorApprovedCount for first-time moderation
11
- * 3. Invoke comment:moderate exclusive hook (or built-in fallback)
12
- * 4. Save comment with determined status
13
- * 5. Fire comment:afterCreate (fire-and-forget)
14
- *
15
- * Also handles admin moderation (status changes) with afterModerate hooks.
16
- */
17
- var CommentStatusConflictError = class extends Error {
18
- code = "COMMENT_STATUS_CONFLICT";
19
- currentStatus;
20
- constructor(currentStatus) {
21
- super("Comment status changed; read the current comment before retrying");
22
- this.name = "CommentStatusConflictError";
23
- this.currentStatus = currentStatus;
24
- }
25
- };
26
- const commentModerationALS = new AsyncLocalStorage();
27
- /**
28
- * Create a comment through the full hook pipeline.
29
- *
30
- * Returns null if the comment was rejected by a beforeCreate handler.
31
- */
32
- async function createComment(db, input, collectionSettings, hooks, contentInfo) {
33
- const repo = new CommentRepository(db);
34
- const beforeCreateEvent = {
35
- comment: {
36
- collection: input.collection,
37
- contentId: input.contentId,
38
- parentId: input.parentId ?? null,
39
- authorName: input.authorName,
40
- authorEmail: input.authorEmail,
41
- authorUserId: input.authorUserId ?? null,
42
- body: input.body,
43
- ipHash: input.ipHash ?? null,
44
- userAgent: input.userAgent ?? null
45
- },
46
- metadata: {}
47
- };
48
- const result = await hooks.runBeforeCreate(beforeCreateEvent);
49
- if (result === false) return null;
50
- const event = result;
51
- const priorApprovedCount = await repo.countApprovedByEmail(event.comment.authorEmail);
52
- const moderateEvent = {
53
- comment: event.comment,
54
- metadata: event.metadata,
55
- collectionSettings,
56
- priorApprovedCount
57
- };
58
- const decision = await hooks.runModerate(moderateEvent);
59
- const comment = await repo.create({
60
- collection: event.comment.collection,
61
- contentId: event.comment.contentId,
62
- parentId: event.comment.parentId,
63
- authorName: event.comment.authorName,
64
- authorEmail: event.comment.authorEmail,
65
- authorUserId: event.comment.authorUserId,
66
- body: event.comment.body,
67
- status: decision.status,
68
- ipHash: event.comment.ipHash,
69
- userAgent: event.comment.userAgent,
70
- moderationMetadata: Object.keys(event.metadata).length > 0 ? event.metadata : null
71
- });
72
- if (contentInfo) {
73
- const afterEvent = {
74
- comment: commentToStored(comment),
75
- metadata: event.metadata,
76
- content: {
77
- id: contentInfo.id,
78
- collection: contentInfo.collection,
79
- slug: contentInfo.slug,
80
- title: contentInfo.title
81
- },
82
- contentAuthor: contentInfo.author
83
- };
84
- hooks.fireAfterCreate(afterEvent);
85
- }
86
- return {
87
- comment,
88
- decision
89
- };
90
- }
91
- /**
92
- * Admin moderation — change a comment's status.
93
- * Fires comment:afterModerate hook.
94
- */
95
- async function moderateComment(db, id, newStatus, expectedStatus, origin, hooks, onApproved) {
96
- const active = commentModerationALS.getStore();
97
- if (active?.has(id)) throw new Error("Recursive comment moderation is not allowed");
98
- const next = new Set(active);
99
- next.add(id);
100
- return commentModerationALS.run(next, () => moderateCommentWithinGuard(db, id, newStatus, expectedStatus, origin, hooks, onApproved));
101
- }
102
- async function moderateCommentWithinGuard(db, id, newStatus, expectedStatus, origin, hooks, onApproved) {
103
- const result = await new CommentRepository(db).updateStatusIf(id, newStatus, expectedStatus);
104
- if (result.state === "not_found") return null;
105
- if (result.state === "conflict") throw new CommentStatusConflictError(result.comment.status);
106
- if (result.state === "unchanged") return result.comment;
107
- const updated = result.comment;
108
- if (newStatus === "approved") await onApproved?.(updated);
109
- const afterEvent = {
110
- comment: commentToStored(updated),
111
- previousStatus: expectedStatus,
112
- newStatus,
113
- moderator: origin.source === "admin" ? {
114
- id: origin.userId,
115
- name: origin.name
116
- } : {
117
- id: origin.pluginId,
118
- name: null
119
- },
120
- origin: origin.source === "admin" ? {
121
- source: "admin",
122
- userId: origin.userId
123
- } : {
124
- source: "plugin",
125
- pluginId: origin.pluginId
126
- }
127
- };
128
- await hooks.fireAfterModerate(afterEvent);
129
- return updated;
130
- }
131
- function commentToStored(comment) {
132
- return {
133
- id: comment.id,
134
- collection: comment.collection,
135
- contentId: comment.contentId,
136
- parentId: comment.parentId,
137
- authorName: comment.authorName,
138
- authorEmail: comment.authorEmail,
139
- authorUserId: comment.authorUserId,
140
- body: comment.body,
141
- status: comment.status,
142
- moderationMetadata: comment.moderationMetadata,
143
- createdAt: comment.createdAt,
144
- updatedAt: comment.updatedAt
145
- };
146
- }
147
-
148
- //#endregion
149
- export { createComment as n, moderateComment as r, CommentStatusConflictError as t };
150
- //# sourceMappingURL=service-COVdVpSK.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"service-COVdVpSK.mjs","names":[],"sources":["../src/comments/service.ts"],"sourcesContent":["/**\n * Comment Service\n *\n * Orchestrates comment creation through the hook pipeline:\n * 1. Run comment:beforeCreate pipeline (transform/reject)\n * 2. Query priorApprovedCount for first-time moderation\n * 3. Invoke comment:moderate exclusive hook (or built-in fallback)\n * 4. Save comment with determined status\n * 5. Fire comment:afterCreate (fire-and-forget)\n *\n * Also handles admin moderation (status changes) with afterModerate hooks.\n */\n\nimport { AsyncLocalStorage } from \"node:async_hooks\";\n\nimport type { Kysely } from \"kysely\";\n\nimport { CommentRepository } from \"../database/repositories/comment.js\";\nimport type { Comment, CommentStatus } from \"../database/repositories/comment.js\";\nimport type { Database } from \"../database/types.js\";\nimport type {\n\tCollectionCommentSettings,\n\tCommentAfterCreateEvent,\n\tCommentAfterModerateEvent,\n\tCommentBeforeCreateEvent,\n\tCommentModerateEvent,\n\tModerationDecision,\n\tStoredComment,\n} from \"../plugins/types.js\";\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport interface CommentCreateInput {\n\tcollection: string;\n\tcontentId: string;\n\tparentId?: string | null;\n\tauthorName: string;\n\tauthorEmail: string;\n\tauthorUserId?: string | null;\n\tbody: string;\n\tipHash?: string | null;\n\tuserAgent?: string | null;\n}\n\nexport interface CommentCreateResult {\n\tcomment: Comment;\n\tdecision: ModerationDecision;\n}\n\n/**\n * Hook runner interface — injected from the runtime so the service\n * doesn't need to know about the hook pipeline internals.\n */\nexport interface CommentHookRunner {\n\t/** Run comment:beforeCreate pipeline. Returns modified event or false. */\n\trunBeforeCreate(event: CommentBeforeCreateEvent): Promise<CommentBeforeCreateEvent | false>;\n\n\t/** Run comment:moderate exclusive hook. Returns moderation decision. */\n\trunModerate(event: CommentModerateEvent): Promise<ModerationDecision>;\n\n\t/** Fire comment:afterCreate (fire-and-forget). */\n\tfireAfterCreate(event: CommentAfterCreateEvent): void;\n\n\t/** Run comment:afterModerate after a successful transition. */\n\tfireAfterModerate(event: CommentAfterModerateEvent): void | Promise<void>;\n}\n\nexport type CommentModerationOrigin =\n\t| { source: \"admin\"; userId: string; name: string | null }\n\t| { source: \"plugin\"; pluginId: string };\n\nexport class CommentStatusConflictError extends Error {\n\treadonly code = \"COMMENT_STATUS_CONFLICT\";\n\treadonly currentStatus: CommentStatus;\n\n\tconstructor(currentStatus: CommentStatus) {\n\t\tsuper(\"Comment status changed; read the current comment before retrying\");\n\t\tthis.name = \"CommentStatusConflictError\";\n\t\tthis.currentStatus = currentStatus;\n\t}\n}\n\nconst commentModerationALS = new AsyncLocalStorage<ReadonlySet<string>>();\n\n// ---------------------------------------------------------------------------\n// Service\n// ---------------------------------------------------------------------------\n\n/**\n * Create a comment through the full hook pipeline.\n *\n * Returns null if the comment was rejected by a beforeCreate handler.\n */\nexport async function createComment(\n\tdb: Kysely<Database>,\n\tinput: CommentCreateInput,\n\tcollectionSettings: CollectionCommentSettings,\n\thooks: CommentHookRunner,\n\tcontentInfo?: {\n\t\tid: string;\n\t\tcollection: string;\n\t\tslug: string;\n\t\ttitle?: string;\n\t\tauthor?: { id: string; name: string | null; email: string };\n\t},\n): Promise<CommentCreateResult | null> {\n\tconst repo = new CommentRepository(db);\n\n\t// 1. Build the beforeCreate event\n\tconst beforeCreateEvent: CommentBeforeCreateEvent = {\n\t\tcomment: {\n\t\t\tcollection: input.collection,\n\t\t\tcontentId: input.contentId,\n\t\t\tparentId: input.parentId ?? null,\n\t\t\tauthorName: input.authorName,\n\t\t\tauthorEmail: input.authorEmail,\n\t\t\tauthorUserId: input.authorUserId ?? null,\n\t\t\tbody: input.body,\n\t\t\tipHash: input.ipHash ?? null,\n\t\t\tuserAgent: input.userAgent ?? null,\n\t\t},\n\t\tmetadata: {},\n\t};\n\n\t// 2. Run comment:beforeCreate pipeline\n\tconst result = await hooks.runBeforeCreate(beforeCreateEvent);\n\tif (result === false) {\n\t\treturn null; // Rejected\n\t}\n\n\tconst event = result;\n\n\t// 3. Query prior approved count for first-time moderation\n\tconst priorApprovedCount = await repo.countApprovedByEmail(event.comment.authorEmail);\n\n\t// 4. Run comment:moderate exclusive hook\n\tconst moderateEvent: CommentModerateEvent = {\n\t\tcomment: event.comment,\n\t\tmetadata: event.metadata,\n\t\tcollectionSettings,\n\t\tpriorApprovedCount,\n\t};\n\n\tconst decision = await hooks.runModerate(moderateEvent);\n\n\t// 5. Save comment with determined status\n\tconst comment = await repo.create({\n\t\tcollection: event.comment.collection,\n\t\tcontentId: event.comment.contentId,\n\t\tparentId: event.comment.parentId,\n\t\tauthorName: event.comment.authorName,\n\t\tauthorEmail: event.comment.authorEmail,\n\t\tauthorUserId: event.comment.authorUserId,\n\t\tbody: event.comment.body,\n\t\tstatus: decision.status,\n\t\tipHash: event.comment.ipHash,\n\t\tuserAgent: event.comment.userAgent,\n\t\tmoderationMetadata: Object.keys(event.metadata).length > 0 ? event.metadata : null,\n\t});\n\n\t// 6. Fire comment:afterCreate (fire-and-forget)\n\tif (contentInfo) {\n\t\tconst afterEvent: CommentAfterCreateEvent = {\n\t\t\tcomment: commentToStored(comment),\n\t\t\tmetadata: event.metadata,\n\t\t\tcontent: {\n\t\t\t\tid: contentInfo.id,\n\t\t\t\tcollection: contentInfo.collection,\n\t\t\t\tslug: contentInfo.slug,\n\t\t\t\ttitle: contentInfo.title,\n\t\t\t},\n\t\t\tcontentAuthor: contentInfo.author,\n\t\t};\n\t\thooks.fireAfterCreate(afterEvent);\n\t}\n\n\treturn { comment, decision };\n}\n\n/**\n * Admin moderation — change a comment's status.\n * Fires comment:afterModerate hook.\n */\nexport async function moderateComment(\n\tdb: Kysely<Database>,\n\tid: string,\n\tnewStatus: CommentStatus,\n\texpectedStatus: CommentStatus,\n\torigin: CommentModerationOrigin,\n\thooks: CommentHookRunner,\n\tonApproved?: (comment: Comment) => void | Promise<void>,\n): Promise<Comment | null> {\n\tconst active = commentModerationALS.getStore();\n\tif (active?.has(id)) throw new Error(\"Recursive comment moderation is not allowed\");\n\tconst next = new Set(active);\n\tnext.add(id);\n\treturn commentModerationALS.run(next, () =>\n\t\tmoderateCommentWithinGuard(db, id, newStatus, expectedStatus, origin, hooks, onApproved),\n\t);\n}\n\nasync function moderateCommentWithinGuard(\n\tdb: Kysely<Database>,\n\tid: string,\n\tnewStatus: CommentStatus,\n\texpectedStatus: CommentStatus,\n\torigin: CommentModerationOrigin,\n\thooks: CommentHookRunner,\n\tonApproved?: (comment: Comment) => void | Promise<void>,\n): Promise<Comment | null> {\n\tconst repo = new CommentRepository(db);\n\tconst result = await repo.updateStatusIf(id, newStatus, expectedStatus);\n\tif (result.state === \"not_found\") return null;\n\tif (result.state === \"conflict\") throw new CommentStatusConflictError(result.comment.status);\n\tif (result.state === \"unchanged\") return result.comment;\n\tconst updated = result.comment;\n\n\tif (newStatus === \"approved\") await onApproved?.(updated);\n\n\t// Run comment:afterModerate after a successful transition\n\tconst afterEvent: CommentAfterModerateEvent = {\n\t\tcomment: commentToStored(updated),\n\t\tpreviousStatus: expectedStatus,\n\t\tnewStatus,\n\t\tmoderator:\n\t\t\torigin.source === \"admin\"\n\t\t\t\t? { id: origin.userId, name: origin.name }\n\t\t\t\t: { id: origin.pluginId, name: null },\n\t\torigin:\n\t\t\torigin.source === \"admin\"\n\t\t\t\t? { source: \"admin\", userId: origin.userId }\n\t\t\t\t: { source: \"plugin\", pluginId: origin.pluginId },\n\t};\n\tawait hooks.fireAfterModerate(afterEvent);\n\n\treturn updated;\n}\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nfunction commentToStored(comment: Comment): StoredComment {\n\treturn {\n\t\tid: comment.id,\n\t\tcollection: comment.collection,\n\t\tcontentId: comment.contentId,\n\t\tparentId: comment.parentId,\n\t\tauthorName: comment.authorName,\n\t\tauthorEmail: comment.authorEmail,\n\t\tauthorUserId: comment.authorUserId,\n\t\tbody: comment.body,\n\t\tstatus: comment.status,\n\t\tmoderationMetadata: comment.moderationMetadata,\n\t\tcreatedAt: comment.createdAt,\n\t\tupdatedAt: comment.updatedAt,\n\t};\n}\n"],"mappings":"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"}
@@ -1,61 +0,0 @@
1
- import { t as after } from "./after-PcEvMY_6.mjs";
2
- import { t as ErrorCode } from "./errors-CNvATh_7.mjs";
3
- import { t as apiError } from "./error-DIYXAVk4.mjs";
4
-
5
- //#region src/astro/session-user.ts
6
- /**
7
- * Backstop timeout for resolving the session user. A live session-store read
8
- * settles in a few ms, so this only ever fires on a genuinely stalled read.
9
- */
10
- const SESSION_GET_TIMEOUT_MS = 3e3;
11
- /**
12
- * Resolve the Astro session user without risking an isolate-wide hang.
13
- *
14
- * On Cloudflare Workers, a request cancelled mid-`session.get()` (client
15
- * disconnect, context teardown) can leave the underlying session-store read as
16
- * a promise that never settles — neither resolving nor rejecting. Awaiting it
17
- * directly hangs the request, and because the stalled promise is shared at the
18
- * isolate level, every later session-bearing request hangs too (observed as
19
- * 0-CPU, multi-minute, `canceled` responses; see #1274). A surrounding
20
- * try/catch cannot help: the promise never rejects.
21
- *
22
- * Two layers, mirroring the reclaimable-cache pattern used elsewhere in core:
23
- * 1. `after()` anchors the read so a cancelled request still drives it to
24
- * completion — the promise settles and the isolate is not poisoned for
25
- * subsequent requests (prevents the hang rather than merely surviving it).
26
- * 2. A timeout is a fail-closed backstop: a still-stalled (or rejecting) read
27
- * resolves to `undefined`, and every caller treats the absence of a session
28
- * user as unauthenticated (anonymous on public routes, 401/redirect on
29
- * protected ones). It can only ever drop privileges for that one request,
30
- * never grant them.
31
- *
32
- * Used by every session read on the request path: the main middleware (the
33
- * first read on a session-bearing request), the auth middleware, and the
34
- * preview-snapshot route (which bypasses the auth middleware).
35
- */
36
- async function resolveSessionUser(session, timeoutMs = SESSION_GET_TIMEOUT_MS) {
37
- if (!session) return void 0;
38
- const read = Promise.resolve(session.get("user")).catch(() => void 0);
39
- after(() => read.then(() => void 0, () => void 0));
40
- let timer;
41
- const timeout = new Promise((resolve) => {
42
- timer = setTimeout(resolve, timeoutMs, void 0);
43
- });
44
- try {
45
- return await Promise.race([read, timeout]);
46
- } finally {
47
- clearTimeout(timer);
48
- }
49
- }
50
- const SESSION_UNAVAILABLE_MESSAGE = "Sign-in needs an Astro session driver. Configure session.driver in astro.config.mjs.";
51
- /**
52
- * Error for sign-in routes when Astro has no session to store the user in.
53
- * Check before consuming tokens so a failed sign-in can be retried.
54
- */
55
- function sessionUnavailableError() {
56
- return apiError(ErrorCode.SESSION_UNAVAILABLE, SESSION_UNAVAILABLE_MESSAGE, 500);
57
- }
58
-
59
- //#endregion
60
- export { resolveSessionUser as n, sessionUnavailableError as r, SESSION_UNAVAILABLE_MESSAGE as t };
61
- //# sourceMappingURL=session-user-C6IEjuty.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-user-C6IEjuty.mjs","names":[],"sources":["../src/astro/session-user.ts"],"sourcesContent":["import { apiError } from \"#api/error.js\";\nimport { ErrorCode } from \"#api/errors.js\";\n\nimport { after } from \"../after.js\";\n\n/**\n * Backstop timeout for resolving the session user. A live session-store read\n * settles in a few ms, so this only ever fires on a genuinely stalled read.\n */\nexport const SESSION_GET_TIMEOUT_MS = 3_000;\n\n/**\n * Resolve the Astro session user without risking an isolate-wide hang.\n *\n * On Cloudflare Workers, a request cancelled mid-`session.get()` (client\n * disconnect, context teardown) can leave the underlying session-store read as\n * a promise that never settles — neither resolving nor rejecting. Awaiting it\n * directly hangs the request, and because the stalled promise is shared at the\n * isolate level, every later session-bearing request hangs too (observed as\n * 0-CPU, multi-minute, `canceled` responses; see #1274). A surrounding\n * try/catch cannot help: the promise never rejects.\n *\n * Two layers, mirroring the reclaimable-cache pattern used elsewhere in core:\n * 1. `after()` anchors the read so a cancelled request still drives it to\n * completion — the promise settles and the isolate is not poisoned for\n * subsequent requests (prevents the hang rather than merely surviving it).\n * 2. A timeout is a fail-closed backstop: a still-stalled (or rejecting) read\n * resolves to `undefined`, and every caller treats the absence of a session\n * user as unauthenticated (anonymous on public routes, 401/redirect on\n * protected ones). It can only ever drop privileges for that one request,\n * never grant them.\n *\n * Used by every session read on the request path: the main middleware (the\n * first read on a session-bearing request), the auth middleware, and the\n * preview-snapshot route (which bypasses the auth middleware).\n */\nexport async function resolveSessionUser<T>(\n\tsession: { get(key: \"user\"): Promise<T> } | undefined,\n\ttimeoutMs = SESSION_GET_TIMEOUT_MS,\n): Promise<T | undefined> {\n\tif (!session) return undefined;\n\tconst read: Promise<T | undefined> = Promise.resolve(session.get(\"user\")).catch(() => undefined);\n\t// Keep the worker alive past response/cancellation so the read completes and\n\t// the shared promise settles — this is what prevents the isolate poisoning.\n\tafter(() =>\n\t\tread.then(\n\t\t\t() => undefined,\n\t\t\t() => undefined,\n\t\t),\n\t);\n\tlet timer: ReturnType<typeof setTimeout> | undefined;\n\tconst timeout = new Promise<undefined>((resolve) => {\n\t\ttimer = setTimeout(resolve, timeoutMs, undefined);\n\t});\n\ttry {\n\t\treturn await Promise.race([read, timeout]);\n\t} finally {\n\t\tclearTimeout(timer);\n\t}\n}\n\nexport const SESSION_UNAVAILABLE_MESSAGE =\n\t\"Sign-in needs an Astro session driver. Configure session.driver in astro.config.mjs.\";\n\n/**\n * Error for sign-in routes when Astro has no session to store the user in.\n * Check before consuming tokens so a failed sign-in can be retried.\n */\nexport function sessionUnavailableError(): Response {\n\treturn apiError(ErrorCode.SESSION_UNAVAILABLE, SESSION_UNAVAILABLE_MESSAGE, 500);\n}\n"],"mappings":";;;;;;;;;AASA,MAAa,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BtC,eAAsB,mBACrB,SACA,YAAY,wBACa;AACzB,KAAI,CAAC,QAAS,QAAO;CACrB,MAAM,OAA+B,QAAQ,QAAQ,QAAQ,IAAI,OAAO,CAAC,CAAC,YAAY,OAAU;AAGhG,aACC,KAAK,WACE,cACA,OACN,CACD;CACD,IAAI;CACJ,MAAM,UAAU,IAAI,SAAoB,YAAY;AACnD,UAAQ,WAAW,SAAS,WAAW,OAAU;GAChD;AACF,KAAI;AACH,SAAO,MAAM,QAAQ,KAAK,CAAC,MAAM,QAAQ,CAAC;WACjC;AACT,eAAa,MAAM;;;AAIrB,MAAa,8BACZ;;;;;AAMD,SAAgB,0BAAoC;AACnD,QAAO,SAAS,UAAU,qBAAqB,6BAA6B,IAAI"}
@@ -1,61 +0,0 @@
1
- //#region src/transfer/format/settings.ts
2
- /**
3
- * Classification of `options` rows for site transfer.
4
- *
5
- * - `portable`: exported as `setting` records (explicit allowlist, never a
6
- * prefix match).
7
- * - `targetLocal`: belongs to the target installation and is never exported
8
- * or overwritten by an import.
9
- * - `excluded`: everything else (secrets, runtime state, plugin options).
10
- */
11
- const PORTABLE_SETTING_NAMES = [
12
- "emdash:locale",
13
- "emdash:site_tagline",
14
- "emdash:site_title",
15
- "site:dateFormat",
16
- "site:favicon",
17
- "site:logo",
18
- "site:postsPerPage",
19
- "site:seo",
20
- "site:social",
21
- "site:tagline",
22
- "site:timezone",
23
- "site:title"
24
- ];
25
- const PORTABLE_SETTINGS = new Set(PORTABLE_SETTING_NAMES);
26
- /** Settings whose value is a plan decision rather than always taken from the package. */
27
- const DECIDED_SETTING_NAMES = {
28
- title: ["site:title", "emdash:site_title"],
29
- tagline: ["site:tagline", "emdash:site_tagline"]
30
- };
31
- /** Options the importer resets after writing settings. */
32
- const POST_IMPORT_OPTION_RESETS = {
33
- bumpVersion: ["byline_fields_version"],
34
- delete: ["_redirect_loop_ids"]
35
- };
36
- function isPortableSettingName(name) {
37
- return PORTABLE_SETTINGS.has(name);
38
- }
39
- /** Settings whose stored value is a `{ mediaId, alt? }` media reference, and where. */
40
- const SETTING_MEDIA_REFERENCE_PATHS = Object.freeze({
41
- "site:logo": [["mediaId"]],
42
- "site:favicon": [["mediaId"]],
43
- "site:seo": [["defaultOgImage", "mediaId"]]
44
- });
45
- /** Media ids referenced by a portable setting's value. */
46
- function settingMediaIds(name, value) {
47
- if (!isPortableSettingName(name)) return [];
48
- const paths = SETTING_MEDIA_REFERENCE_PATHS[name];
49
- if (!paths) return [];
50
- const ids = [];
51
- for (const path of paths) {
52
- let current = value;
53
- for (const segment of path) current = current !== null && typeof current === "object" && !Array.isArray(current) && Object.hasOwn(current, segment) ? Reflect.get(current, segment) : void 0;
54
- if (typeof current === "string" && current.length > 0) ids.push(current);
55
- }
56
- return ids;
57
- }
58
-
59
- //#endregion
60
- export { settingMediaIds as i, PORTABLE_SETTING_NAMES as n, POST_IMPORT_OPTION_RESETS as r, DECIDED_SETTING_NAMES as t };
61
- //# sourceMappingURL=settings-CwcrX-Ay.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"settings-CwcrX-Ay.mjs","names":[],"sources":["../src/transfer/format/settings.ts"],"sourcesContent":["/**\n * Classification of `options` rows for site transfer.\n *\n * - `portable`: exported as `setting` records (explicit allowlist, never a\n * prefix match).\n * - `targetLocal`: belongs to the target installation and is never exported\n * or overwritten by an import.\n * - `excluded`: everything else (secrets, runtime state, plugin options).\n */\n\nexport const PORTABLE_SETTING_NAMES = [\n\t\"emdash:locale\",\n\t\"emdash:site_tagline\",\n\t\"emdash:site_title\",\n\t\"site:dateFormat\",\n\t\"site:favicon\",\n\t\"site:logo\",\n\t\"site:postsPerPage\",\n\t\"site:seo\",\n\t\"site:social\",\n\t\"site:tagline\",\n\t\"site:timezone\",\n\t\"site:title\",\n] as const;\n\nexport type PortableSettingName = (typeof PORTABLE_SETTING_NAMES)[number];\n\nconst PORTABLE_SETTINGS: ReadonlySet<string> = new Set(PORTABLE_SETTING_NAMES);\n\nconst TARGET_LOCAL_SETTING_NAMES: ReadonlySet<string> = new Set([\n\t\"site:url\",\n\t\"emdash:site_url\",\n\t\"emdash:site_id\",\n]);\n\nconst TARGET_LOCAL_SETTING_PREFIXES = [\"emdash:setup_\", \"emdash:backups\"] as const;\n\n/** Settings whose value is a plan decision rather than always taken from the package. */\nexport const DECIDED_SETTING_NAMES = {\n\ttitle: [\"site:title\", \"emdash:site_title\"],\n\ttagline: [\"site:tagline\", \"emdash:site_tagline\"],\n} as const satisfies Record<string, readonly PortableSettingName[]>;\n\n/** Options the importer resets after writing settings. */\nexport const POST_IMPORT_OPTION_RESETS = {\n\tbumpVersion: [\"byline_fields_version\"],\n\tdelete: [\"_redirect_loop_ids\"],\n} as const;\n\nexport type SettingClass = \"portable\" | \"targetLocal\" | \"excluded\";\n\nexport function isPortableSettingName(name: string): name is PortableSettingName {\n\treturn PORTABLE_SETTINGS.has(name);\n}\n\nexport function classifySetting(name: string): SettingClass {\n\tif (PORTABLE_SETTINGS.has(name)) return \"portable\";\n\tif (TARGET_LOCAL_SETTING_NAMES.has(name)) return \"targetLocal\";\n\tif (TARGET_LOCAL_SETTING_PREFIXES.some((prefix) => name.startsWith(prefix))) {\n\t\treturn \"targetLocal\";\n\t}\n\treturn \"excluded\";\n}\n\n/** Settings whose stored value is a `{ mediaId, alt? }` media reference, and where. */\nexport const SETTING_MEDIA_REFERENCE_PATHS: Readonly<\n\tPartial<Record<PortableSettingName, readonly (readonly string[])[]>>\n> = Object.freeze({\n\t\"site:logo\": [[\"mediaId\"]],\n\t\"site:favicon\": [[\"mediaId\"]],\n\t\"site:seo\": [[\"defaultOgImage\", \"mediaId\"]],\n});\n\n/** Media ids referenced by a portable setting's value. */\nexport function settingMediaIds(name: string, value: unknown): string[] {\n\tif (!isPortableSettingName(name)) return [];\n\tconst paths = SETTING_MEDIA_REFERENCE_PATHS[name];\n\tif (!paths) return [];\n\tconst ids: string[] = [];\n\tfor (const path of paths) {\n\t\tlet current: unknown = value;\n\t\tfor (const segment of path) {\n\t\t\tcurrent =\n\t\t\t\tcurrent !== null &&\n\t\t\t\ttypeof current === \"object\" &&\n\t\t\t\t!Array.isArray(current) &&\n\t\t\t\tObject.hasOwn(current, segment)\n\t\t\t\t\t? Reflect.get(current, segment)\n\t\t\t\t\t: undefined;\n\t\t}\n\t\tif (typeof current === \"string\" && current.length > 0) ids.push(current);\n\t}\n\treturn ids;\n}\n"],"mappings":";;;;;;;;;;AAUA,MAAa,yBAAyB;CACrC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AAID,MAAM,oBAAyC,IAAI,IAAI,uBAAuB;;AAW9E,MAAa,wBAAwB;CACpC,OAAO,CAAC,cAAc,oBAAoB;CAC1C,SAAS,CAAC,gBAAgB,sBAAsB;CAChD;;AAGD,MAAa,4BAA4B;CACxC,aAAa,CAAC,wBAAwB;CACtC,QAAQ,CAAC,qBAAqB;CAC9B;AAID,SAAgB,sBAAsB,MAA2C;AAChF,QAAO,kBAAkB,IAAI,KAAK;;;AAanC,MAAa,gCAET,OAAO,OAAO;CACjB,aAAa,CAAC,CAAC,UAAU,CAAC;CAC1B,gBAAgB,CAAC,CAAC,UAAU,CAAC;CAC7B,YAAY,CAAC,CAAC,kBAAkB,UAAU,CAAC;CAC3C,CAAC;;AAGF,SAAgB,gBAAgB,MAAc,OAA0B;AACvE,KAAI,CAAC,sBAAsB,KAAK,CAAE,QAAO,EAAE;CAC3C,MAAM,QAAQ,8BAA8B;AAC5C,KAAI,CAAC,MAAO,QAAO,EAAE;CACrB,MAAM,MAAgB,EAAE;AACxB,MAAK,MAAM,QAAQ,OAAO;EACzB,IAAI,UAAmB;AACvB,OAAK,MAAM,WAAW,KACrB,WACC,YAAY,QACZ,OAAO,YAAY,YACnB,CAAC,MAAM,QAAQ,QAAQ,IACvB,OAAO,OAAO,SAAS,QAAQ,GAC5B,QAAQ,IAAI,SAAS,QAAQ,GAC7B;AAEL,MAAI,OAAO,YAAY,YAAY,QAAQ,SAAS,EAAG,KAAI,KAAK,QAAQ;;AAEzE,QAAO"}