emdash 1.2.0 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1592) hide show
  1. package/dist/action-token-B1ds4laA.mjs +26 -0
  2. package/dist/action-token-B1ds4laA.mjs.map +1 -0
  3. package/dist/activation-sGF9br3X.mjs +387 -0
  4. package/dist/activation-sGF9br3X.mjs.map +1 -0
  5. package/dist/adapters-BOMSX9PU.d.mts +173 -0
  6. package/dist/adapters-BOMSX9PU.d.mts.map +1 -0
  7. package/dist/allowed-origins-CovsTkm3.mjs +116 -0
  8. package/dist/allowed-origins-CovsTkm3.mjs.map +1 -0
  9. package/dist/api/route-utils.d.mts +4 -4
  10. package/dist/api/route-utils.mjs +59 -55
  11. package/dist/api/route-utils.mjs.map +1 -1
  12. package/dist/api/schemas/index.d.mts +1 -1
  13. package/dist/api/schemas/index.mjs +11 -11
  14. package/dist/api-C_LxFnOm.mjs +5077 -0
  15. package/dist/api-C_LxFnOm.mjs.map +1 -0
  16. package/dist/api-tokens-DQ9Ee-vP.mjs +173 -0
  17. package/dist/api-tokens-DQ9Ee-vP.mjs.map +1 -0
  18. package/dist/apply-CLjfxvyH.mjs +1758 -0
  19. package/dist/apply-CLjfxvyH.mjs.map +1 -0
  20. package/dist/approvals-ocK89i4H.mjs +460 -0
  21. package/dist/approvals-ocK89i4H.mjs.map +1 -0
  22. package/dist/artifact-fetch-CgvvpoWQ.mjs +659 -0
  23. package/dist/artifact-fetch-CgvvpoWQ.mjs.map +1 -0
  24. package/dist/artifacts-DwOYYBQm.mjs +323 -0
  25. package/dist/artifacts-DwOYYBQm.mjs.map +1 -0
  26. package/dist/astro/image-endpoint.mjs +12 -2
  27. package/dist/astro/image-endpoint.mjs.map +1 -1
  28. package/dist/astro/index.d.mts +14 -14
  29. package/dist/astro/index.d.mts.map +1 -1
  30. package/dist/astro/index.mjs +122 -20
  31. package/dist/astro/index.mjs.map +1 -1
  32. package/dist/astro/middleware/auth.d.mts +12 -12
  33. package/dist/astro/middleware/auth.d.mts.map +1 -1
  34. package/dist/astro/middleware/auth.mjs +12 -11
  35. package/dist/astro/middleware/auth.mjs.map +1 -1
  36. package/dist/astro/middleware/media-usage-write-fence.mjs +5 -5
  37. package/dist/astro/middleware/redirect.d.mts.map +1 -1
  38. package/dist/astro/middleware/redirect.mjs +161 -61
  39. package/dist/astro/middleware/redirect.mjs.map +1 -1
  40. package/dist/astro/middleware/request-context.d.mts.map +1 -1
  41. package/dist/astro/middleware/request-context.mjs +58 -20
  42. package/dist/astro/middleware/request-context.mjs.map +1 -1
  43. package/dist/astro/middleware/setup.mjs +1 -1
  44. package/dist/astro/middleware.d.mts +12 -12
  45. package/dist/astro/middleware.d.mts.map +1 -1
  46. package/dist/astro/middleware.mjs +137 -419
  47. package/dist/astro/middleware.mjs.map +1 -1
  48. package/dist/astro/routes/api/admin/allowed-domains/_domain_.mjs +16 -16
  49. package/dist/astro/routes/api/admin/allowed-domains/index.mjs +16 -16
  50. package/dist/astro/routes/api/admin/api-tokens/_id_.mjs +6 -6
  51. package/dist/astro/routes/api/admin/api-tokens/index.mjs +7 -7
  52. package/dist/astro/routes/api/admin/byline-fields/_slug_/usage.mjs +7 -7
  53. package/dist/astro/routes/api/admin/byline-fields/_slug_.mjs +19 -19
  54. package/dist/astro/routes/api/admin/byline-fields/index.mjs +19 -19
  55. package/dist/astro/routes/api/admin/byline-fields/reorder.mjs +19 -19
  56. package/dist/astro/routes/api/admin/bylines/_id_/index.mjs +29 -27
  57. package/dist/astro/routes/api/admin/bylines/_id_/index.mjs.map +1 -1
  58. package/dist/astro/routes/api/admin/bylines/_id_/translations.mjs +29 -27
  59. package/dist/astro/routes/api/admin/bylines/_id_/translations.mjs.map +1 -1
  60. package/dist/astro/routes/api/admin/bylines/index.mjs +29 -27
  61. package/dist/astro/routes/api/admin/bylines/index.mjs.map +1 -1
  62. package/dist/astro/routes/api/admin/comments/_id_/status.mjs +21 -21
  63. package/dist/astro/routes/api/admin/comments/_id_.mjs +8 -8
  64. package/dist/astro/routes/api/admin/comments/bulk.mjs +20 -20
  65. package/dist/astro/routes/api/admin/comments/counts.mjs +8 -8
  66. package/dist/astro/routes/api/admin/comments/index.mjs +20 -20
  67. package/dist/astro/routes/api/admin/core-update.mjs +7 -7
  68. package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.mjs +6 -6
  69. package/dist/astro/routes/api/admin/hooks/exclusive/index.mjs +5 -5
  70. package/dist/astro/routes/api/admin/media-usage/activation.mjs +22 -22
  71. package/dist/astro/routes/api/admin/media-usage/collection-deletions/index.mjs +23 -23
  72. package/dist/astro/routes/api/admin/media-usage/collection-deletions/retry.mjs +23 -23
  73. package/dist/astro/routes/api/admin/media-usage/progress.mjs +27 -25
  74. package/dist/astro/routes/api/admin/media-usage/progress.mjs.map +1 -1
  75. package/dist/astro/routes/api/admin/media-usage/repair.mjs +33 -31
  76. package/dist/astro/routes/api/admin/media-usage/repair.mjs.map +1 -1
  77. package/dist/astro/routes/api/admin/media-usage/work/index.mjs +23 -23
  78. package/dist/astro/routes/api/admin/media-usage/work/retry.mjs +23 -23
  79. package/dist/astro/routes/api/admin/oauth-clients/_id_.mjs +6 -6
  80. package/dist/astro/routes/api/admin/oauth-clients/index.mjs +6 -6
  81. package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs +8 -8
  82. package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs +8 -8
  83. package/dist/astro/routes/api/admin/plugins/_id_/index.mjs +81 -77
  84. package/dist/astro/routes/api/admin/plugins/_id_/index.mjs.map +1 -1
  85. package/dist/astro/routes/api/admin/plugins/_id_/mcp.mjs +7 -7
  86. package/dist/astro/routes/api/admin/plugins/_id_/settings.mjs +80 -76
  87. package/dist/astro/routes/api/admin/plugins/_id_/settings.mjs.map +1 -1
  88. package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs +80 -77
  89. package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs.map +1 -1
  90. package/dist/astro/routes/api/admin/plugins/_id_/update.mjs +91 -88
  91. package/dist/astro/routes/api/admin/plugins/_id_/update.mjs.map +1 -1
  92. package/dist/astro/routes/api/admin/plugins/index.mjs +81 -77
  93. package/dist/astro/routes/api/admin/plugins/index.mjs.map +1 -1
  94. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.mjs +7 -7
  95. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs +80 -76
  96. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs.map +1 -1
  97. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs +90 -87
  98. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs.map +1 -1
  99. package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs +80 -76
  100. package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs.map +1 -1
  101. package/dist/astro/routes/api/admin/plugins/registry/_id_/uninstall.mjs +80 -77
  102. package/dist/astro/routes/api/admin/plugins/registry/_id_/uninstall.mjs.map +1 -1
  103. package/dist/astro/routes/api/admin/plugins/registry/_id_/update.mjs +92 -89
  104. package/dist/astro/routes/api/admin/plugins/registry/_id_/update.mjs.map +1 -1
  105. package/dist/astro/routes/api/admin/plugins/registry/artifact.mjs +10 -10
  106. package/dist/astro/routes/api/admin/plugins/registry/artifact.mjs.map +1 -1
  107. package/dist/astro/routes/api/admin/plugins/registry/install.mjs +82 -79
  108. package/dist/astro/routes/api/admin/plugins/registry/install.mjs.map +1 -1
  109. package/dist/astro/routes/api/admin/plugins/registry/publisher-handle.mjs +7 -7
  110. package/dist/astro/routes/api/admin/plugins/registry/verify.mjs +81 -77
  111. package/dist/astro/routes/api/admin/plugins/registry/verify.mjs.map +1 -1
  112. package/dist/astro/routes/api/admin/plugins/updates.mjs +80 -76
  113. package/dist/astro/routes/api/admin/plugins/updates.mjs.map +1 -1
  114. package/dist/astro/routes/api/admin/scheduled-policy-rejections/_collection_/_id_.mjs +6 -6
  115. package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs +80 -76
  116. package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs.map +1 -1
  117. package/dist/astro/routes/api/admin/themes/marketplace/_id_/thumbnail.mjs +7 -7
  118. package/dist/astro/routes/api/admin/themes/marketplace/index.mjs +80 -76
  119. package/dist/astro/routes/api/admin/themes/marketplace/index.mjs.map +1 -1
  120. package/dist/astro/routes/api/admin/transfer/_...path_.mjs +4 -4
  121. package/dist/astro/routes/api/admin/transfer/approvals/_id_/approve.mjs +45 -42
  122. package/dist/astro/routes/api/admin/transfer/approvals/_id_/approve.mjs.map +1 -1
  123. package/dist/astro/routes/api/admin/transfer/approvals/_id_/deny.mjs +45 -42
  124. package/dist/astro/routes/api/admin/transfer/approvals/_id_/deny.mjs.map +1 -1
  125. package/dist/astro/routes/api/admin/transfer/approvals/index.mjs +47 -44
  126. package/dist/astro/routes/api/admin/transfer/approvals/index.mjs.map +1 -1
  127. package/dist/astro/routes/api/admin/transfer/capabilities.mjs +47 -44
  128. package/dist/astro/routes/api/admin/transfer/capabilities.mjs.map +1 -1
  129. package/dist/astro/routes/api/admin/transfer/exports/_id_/advance.mjs +47 -44
  130. package/dist/astro/routes/api/admin/transfer/exports/_id_/advance.mjs.map +1 -1
  131. package/dist/astro/routes/api/admin/transfer/exports/_id_/archive.mjs +48 -45
  132. package/dist/astro/routes/api/admin/transfer/exports/_id_/archive.mjs.map +1 -1
  133. package/dist/astro/routes/api/admin/transfer/exports/_id_/files/_...path_.mjs +48 -45
  134. package/dist/astro/routes/api/admin/transfer/exports/_id_/files/_...path_.mjs.map +1 -1
  135. package/dist/astro/routes/api/admin/transfer/exports/_id_/index.mjs +47 -44
  136. package/dist/astro/routes/api/admin/transfer/exports/_id_/index.mjs.map +1 -1
  137. package/dist/astro/routes/api/admin/transfer/exports/_id_/manifest.mjs +48 -45
  138. package/dist/astro/routes/api/admin/transfer/exports/_id_/manifest.mjs.map +1 -1
  139. package/dist/astro/routes/api/admin/transfer/exports/index.mjs +49 -46
  140. package/dist/astro/routes/api/admin/transfer/exports/index.mjs.map +1 -1
  141. package/dist/astro/routes/api/admin/transfer/imports/_id_/abandon.mjs +47 -44
  142. package/dist/astro/routes/api/admin/transfer/imports/_id_/abandon.mjs.map +1 -1
  143. package/dist/astro/routes/api/admin/transfer/imports/_id_/advance.mjs +47 -44
  144. package/dist/astro/routes/api/admin/transfer/imports/_id_/advance.mjs.map +1 -1
  145. package/dist/astro/routes/api/admin/transfer/imports/_id_/analyze.mjs +49 -46
  146. package/dist/astro/routes/api/admin/transfer/imports/_id_/analyze.mjs.map +1 -1
  147. package/dist/astro/routes/api/admin/transfer/imports/_id_/cancel.mjs +47 -44
  148. package/dist/astro/routes/api/admin/transfer/imports/_id_/cancel.mjs.map +1 -1
  149. package/dist/astro/routes/api/admin/transfer/imports/_id_/execute.mjs +49 -46
  150. package/dist/astro/routes/api/admin/transfer/imports/_id_/execute.mjs.map +1 -1
  151. package/dist/astro/routes/api/admin/transfer/imports/_id_/files/_...path_.mjs +47 -44
  152. package/dist/astro/routes/api/admin/transfer/imports/_id_/files/_...path_.mjs.map +1 -1
  153. package/dist/astro/routes/api/admin/transfer/imports/_id_/index.mjs +47 -44
  154. package/dist/astro/routes/api/admin/transfer/imports/_id_/index.mjs.map +1 -1
  155. package/dist/astro/routes/api/admin/transfer/imports/_id_/missing.mjs +49 -46
  156. package/dist/astro/routes/api/admin/transfer/imports/_id_/missing.mjs.map +1 -1
  157. package/dist/astro/routes/api/admin/transfer/imports/_id_/plan.mjs +47 -44
  158. package/dist/astro/routes/api/admin/transfer/imports/_id_/plan.mjs.map +1 -1
  159. package/dist/astro/routes/api/admin/transfer/imports/_id_/receipt.mjs +47 -44
  160. package/dist/astro/routes/api/admin/transfer/imports/_id_/receipt.mjs.map +1 -1
  161. package/dist/astro/routes/api/admin/transfer/imports/index.mjs +49 -46
  162. package/dist/astro/routes/api/admin/transfer/imports/index.mjs.map +1 -1
  163. package/dist/astro/routes/api/admin/users/_id_/disable.mjs +5 -5
  164. package/dist/astro/routes/api/admin/users/_id_/enable.mjs +4 -4
  165. package/dist/astro/routes/api/admin/users/_id_/index.mjs +17 -17
  166. package/dist/astro/routes/api/admin/users/_id_/send-recovery.mjs +6 -6
  167. package/dist/astro/routes/api/admin/users/index.mjs +16 -16
  168. package/dist/astro/routes/api/auth/dev-bypass.mjs +6 -6
  169. package/dist/astro/routes/api/auth/handover.mjs +6 -6
  170. package/dist/astro/routes/api/auth/invite/accept.mjs +4 -4
  171. package/dist/astro/routes/api/auth/invite/complete.mjs +21 -21
  172. package/dist/astro/routes/api/auth/invite/index.mjs +18 -18
  173. package/dist/astro/routes/api/auth/invite/register-options.mjs +19 -19
  174. package/dist/astro/routes/api/auth/logout.mjs +5 -5
  175. package/dist/astro/routes/api/auth/magic-link/send.mjs +20 -20
  176. package/dist/astro/routes/api/auth/magic-link/verify.mjs +17 -17
  177. package/dist/astro/routes/api/auth/me.mjs +17 -17
  178. package/dist/astro/routes/api/auth/mode.mjs +5 -5
  179. package/dist/astro/routes/api/auth/oauth/_provider_/callback.mjs +8 -8
  180. package/dist/astro/routes/api/auth/oauth/_provider_.mjs +2 -2
  181. package/dist/astro/routes/api/auth/passkey/_id_.mjs +16 -16
  182. package/dist/astro/routes/api/auth/passkey/index.mjs +4 -4
  183. package/dist/astro/routes/api/auth/passkey/options.mjs +21 -21
  184. package/dist/astro/routes/api/auth/passkey/register/options.mjs +19 -19
  185. package/dist/astro/routes/api/auth/passkey/register/verify.mjs +20 -20
  186. package/dist/astro/routes/api/auth/passkey/verify.mjs +21 -21
  187. package/dist/astro/routes/api/auth/signup/complete.mjs +21 -21
  188. package/dist/astro/routes/api/auth/signup/request.mjs +19 -19
  189. package/dist/astro/routes/api/auth/signup/verify.mjs +4 -4
  190. package/dist/astro/routes/api/calendar.mjs +17 -17
  191. package/dist/astro/routes/api/comments/_collection_/_contentId_/index.mjs +13 -13
  192. package/dist/astro/routes/api/comments/_collection_/_contentId_/reactions.mjs +21 -21
  193. package/dist/astro/routes/api/content/_collection_/_id_/compare.mjs +5 -5
  194. package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.d.mts.map +1 -1
  195. package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs +21 -20
  196. package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs.map +1 -1
  197. package/dist/astro/routes/api/content/_collection_/_id_/duplicate.mjs +7 -10
  198. package/dist/astro/routes/api/content/_collection_/_id_/duplicate.mjs.map +1 -1
  199. package/dist/astro/routes/api/content/_collection_/_id_/lock.mjs +23 -20
  200. package/dist/astro/routes/api/content/_collection_/_id_/lock.mjs.map +1 -1
  201. package/dist/astro/routes/api/content/_collection_/_id_/permanent.d.mts.map +1 -1
  202. package/dist/astro/routes/api/content/_collection_/_id_/permanent.mjs +7 -6
  203. package/dist/astro/routes/api/content/_collection_/_id_/permanent.mjs.map +1 -1
  204. package/dist/astro/routes/api/content/_collection_/_id_/plugin-extensions/_pluginId_/_kind_/_extensionId_.mjs +12 -12
  205. package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs +36 -34
  206. package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs.map +1 -1
  207. package/dist/astro/routes/api/content/_collection_/_id_/publish.d.mts.map +1 -1
  208. package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs +21 -20
  209. package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs.map +1 -1
  210. package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/children.mjs +40 -38
  211. package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/children.mjs.map +1 -1
  212. package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/parents.mjs +40 -38
  213. package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/parents.mjs.map +1 -1
  214. package/dist/astro/routes/api/content/_collection_/_id_/restore.d.mts.map +1 -1
  215. package/dist/astro/routes/api/content/_collection_/_id_/restore.mjs +7 -6
  216. package/dist/astro/routes/api/content/_collection_/_id_/restore.mjs.map +1 -1
  217. package/dist/astro/routes/api/content/_collection_/_id_/revisions.mjs +5 -5
  218. package/dist/astro/routes/api/content/_collection_/_id_/schedule.d.mts.map +1 -1
  219. package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs +22 -21
  220. package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs.map +1 -1
  221. package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.d.mts.map +1 -1
  222. package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs +46 -33
  223. package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs.map +1 -1
  224. package/dist/astro/routes/api/content/_collection_/_id_/translations.d.mts.map +1 -1
  225. package/dist/astro/routes/api/content/_collection_/_id_/translations.mjs +9 -5
  226. package/dist/astro/routes/api/content/_collection_/_id_/translations.mjs.map +1 -1
  227. package/dist/astro/routes/api/content/_collection_/_id_/unpublish.d.mts.map +1 -1
  228. package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs +21 -20
  229. package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs.map +1 -1
  230. package/dist/astro/routes/api/content/_collection_/_id_.d.mts.map +1 -1
  231. package/dist/astro/routes/api/content/_collection_/_id_.mjs +30 -23
  232. package/dist/astro/routes/api/content/_collection_/_id_.mjs.map +1 -1
  233. package/dist/astro/routes/api/content/_collection_/authors.mjs +5 -5
  234. package/dist/astro/routes/api/content/_collection_/index.mjs +20 -23
  235. package/dist/astro/routes/api/content/_collection_/index.mjs.map +1 -1
  236. package/dist/astro/routes/api/content/_collection_/trash.mjs +17 -17
  237. package/dist/astro/routes/api/dashboard.d.mts.map +1 -1
  238. package/dist/astro/routes/api/dashboard.mjs +27 -15
  239. package/dist/astro/routes/api/dashboard.mjs.map +1 -1
  240. package/dist/astro/routes/api/dev/emails.mjs +5 -5
  241. package/dist/astro/routes/api/dev/scheduled-tasks.d.mts +12 -0
  242. package/dist/astro/routes/api/dev/scheduled-tasks.d.mts.map +1 -0
  243. package/dist/astro/routes/api/dev/scheduled-tasks.mjs +142 -0
  244. package/dist/astro/routes/api/dev/scheduled-tasks.mjs.map +1 -0
  245. package/dist/astro/routes/api/health.mjs +6 -6
  246. package/dist/astro/routes/api/import/probe.d.mts +3 -3
  247. package/dist/astro/routes/api/import/probe.mjs +31 -27
  248. package/dist/astro/routes/api/import/probe.mjs.map +1 -1
  249. package/dist/astro/routes/api/import/wordpress/analyze.d.mts.map +1 -1
  250. package/dist/astro/routes/api/import/wordpress/analyze.mjs +8 -21
  251. package/dist/astro/routes/api/import/wordpress/analyze.mjs.map +1 -1
  252. package/dist/astro/routes/api/import/wordpress/execute.d.mts +15 -14
  253. package/dist/astro/routes/api/import/wordpress/execute.d.mts.map +1 -1
  254. package/dist/astro/routes/api/import/wordpress/execute.mjs +36 -36
  255. package/dist/astro/routes/api/import/wordpress/execute.mjs.map +1 -1
  256. package/dist/astro/routes/api/import/wordpress/media.d.mts +12 -12
  257. package/dist/astro/routes/api/import/wordpress/media.mjs +21 -21
  258. package/dist/astro/routes/api/import/wordpress/prepare.mjs +22 -20
  259. package/dist/astro/routes/api/import/wordpress/prepare.mjs.map +1 -1
  260. package/dist/astro/routes/api/import/wordpress/rewrite-urls.d.mts +13 -13
  261. package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs +32 -30
  262. package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs.map +1 -1
  263. package/dist/astro/routes/api/import/wordpress-plugin/analyze.d.mts +1 -1
  264. package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs +32 -27
  265. package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs.map +1 -1
  266. package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts +13 -13
  267. package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts.map +1 -1
  268. package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs +66 -43
  269. package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs.map +1 -1
  270. package/dist/astro/routes/api/manifest.mjs +6 -6
  271. package/dist/astro/routes/api/mcp.mjs +160 -109
  272. package/dist/astro/routes/api/mcp.mjs.map +1 -1
  273. package/dist/astro/routes/api/media/_id_/confirm.mjs +21 -21
  274. package/dist/astro/routes/api/media/_id_/replace.mjs +18 -18
  275. package/dist/astro/routes/api/media/_id_/upload.mjs +9 -9
  276. package/dist/astro/routes/api/media/_id_/usage.mjs +35 -33
  277. package/dist/astro/routes/api/media/_id_/usage.mjs.map +1 -1
  278. package/dist/astro/routes/api/media/_id_.mjs +33 -31
  279. package/dist/astro/routes/api/media/_id_.mjs.map +1 -1
  280. package/dist/astro/routes/api/media/asset/_id_/_filename_.mjs +6 -6
  281. package/dist/astro/routes/api/media/file/_...key_.mjs +21 -13
  282. package/dist/astro/routes/api/media/file/_...key_.mjs.map +1 -1
  283. package/dist/astro/routes/api/media/folders/_id_.mjs +18 -18
  284. package/dist/astro/routes/api/media/folders/index.mjs +18 -18
  285. package/dist/astro/routes/api/media/providers/_providerId_/_itemId_.mjs +5 -5
  286. package/dist/astro/routes/api/media/providers/_providerId_/index.mjs +5 -5
  287. package/dist/astro/routes/api/media/providers/index.mjs +5 -5
  288. package/dist/astro/routes/api/media/upload-url.mjs +20 -20
  289. package/dist/astro/routes/api/media.mjs +37 -35
  290. package/dist/astro/routes/api/media.mjs.map +1 -1
  291. package/dist/astro/routes/api/menus/_name_/items/_id_.d.mts.map +1 -1
  292. package/dist/astro/routes/api/menus/_name_/items/_id_.mjs +24 -22
  293. package/dist/astro/routes/api/menus/_name_/items/_id_.mjs.map +1 -1
  294. package/dist/astro/routes/api/menus/_name_/items.d.mts.map +1 -1
  295. package/dist/astro/routes/api/menus/_name_/items.mjs +23 -21
  296. package/dist/astro/routes/api/menus/_name_/items.mjs.map +1 -1
  297. package/dist/astro/routes/api/menus/_name_/reorder.d.mts.map +1 -1
  298. package/dist/astro/routes/api/menus/_name_/reorder.mjs +23 -21
  299. package/dist/astro/routes/api/menus/_name_/reorder.mjs.map +1 -1
  300. package/dist/astro/routes/api/menus/_name_/translations.d.mts.map +1 -1
  301. package/dist/astro/routes/api/menus/_name_/translations.mjs +23 -21
  302. package/dist/astro/routes/api/menus/_name_/translations.mjs.map +1 -1
  303. package/dist/astro/routes/api/menus/_name_.d.mts.map +1 -1
  304. package/dist/astro/routes/api/menus/_name_.mjs +24 -22
  305. package/dist/astro/routes/api/menus/_name_.mjs.map +1 -1
  306. package/dist/astro/routes/api/menus/index.d.mts.map +1 -1
  307. package/dist/astro/routes/api/menus/index.mjs +23 -21
  308. package/dist/astro/routes/api/menus/index.mjs.map +1 -1
  309. package/dist/astro/routes/api/oauth/authorize.mjs +6 -6
  310. package/dist/astro/routes/api/oauth/device/authorize.mjs +8 -8
  311. package/dist/astro/routes/api/oauth/device/code.mjs +11 -11
  312. package/dist/astro/routes/api/oauth/device/token.mjs +10 -10
  313. package/dist/astro/routes/api/oauth/register.mjs +7 -7
  314. package/dist/astro/routes/api/oauth/token/refresh.mjs +8 -8
  315. package/dist/astro/routes/api/oauth/token/revoke.mjs +8 -8
  316. package/dist/astro/routes/api/oauth/token.mjs +8 -8
  317. package/dist/astro/routes/api/openapi.json.mjs +22 -22
  318. package/dist/astro/routes/api/plugins/_pluginId_/_...path_.mjs +12 -12
  319. package/dist/astro/routes/api/redirects/404s/index.mjs +23 -22
  320. package/dist/astro/routes/api/redirects/404s/index.mjs.map +1 -1
  321. package/dist/astro/routes/api/redirects/404s/summary.mjs +23 -22
  322. package/dist/astro/routes/api/redirects/404s/summary.mjs.map +1 -1
  323. package/dist/astro/routes/api/redirects/_id_.d.mts.map +1 -1
  324. package/dist/astro/routes/api/redirects/_id_.mjs +36 -26
  325. package/dist/astro/routes/api/redirects/_id_.mjs.map +1 -1
  326. package/dist/astro/routes/api/redirects/index.d.mts.map +1 -1
  327. package/dist/astro/routes/api/redirects/index.mjs +28 -24
  328. package/dist/astro/routes/api/redirects/index.mjs.map +1 -1
  329. package/dist/astro/routes/api/relations/_id_/index.mjs +40 -38
  330. package/dist/astro/routes/api/relations/_id_/index.mjs.map +1 -1
  331. package/dist/astro/routes/api/relations/index.mjs +40 -38
  332. package/dist/astro/routes/api/relations/index.mjs.map +1 -1
  333. package/dist/astro/routes/api/revisions/_revisionId_/index.mjs +5 -5
  334. package/dist/astro/routes/api/revisions/_revisionId_/restore.mjs +19 -19
  335. package/dist/astro/routes/api/schema/block-types/_slug_/index.mjs +80 -76
  336. package/dist/astro/routes/api/schema/block-types/_slug_/index.mjs.map +1 -1
  337. package/dist/astro/routes/api/schema/block-types/_slug_/versions/_version_/activate.mjs +80 -76
  338. package/dist/astro/routes/api/schema/block-types/_slug_/versions/_version_/activate.mjs.map +1 -1
  339. package/dist/astro/routes/api/schema/block-types/index.mjs +80 -76
  340. package/dist/astro/routes/api/schema/block-types/index.mjs.map +1 -1
  341. package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs +80 -76
  342. package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs.map +1 -1
  343. package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs +80 -76
  344. package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs.map +1 -1
  345. package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs +80 -76
  346. package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs.map +1 -1
  347. package/dist/astro/routes/api/schema/collections/_slug_/index.mjs +80 -76
  348. package/dist/astro/routes/api/schema/collections/_slug_/index.mjs.map +1 -1
  349. package/dist/astro/routes/api/schema/collections/index.mjs +80 -76
  350. package/dist/astro/routes/api/schema/collections/index.mjs.map +1 -1
  351. package/dist/astro/routes/api/schema/collections/reorder.mjs +80 -76
  352. package/dist/astro/routes/api/schema/collections/reorder.mjs.map +1 -1
  353. package/dist/astro/routes/api/schema/index.mjs +20 -18
  354. package/dist/astro/routes/api/schema/index.mjs.map +1 -1
  355. package/dist/astro/routes/api/schema/orphans/_slug_.mjs +80 -76
  356. package/dist/astro/routes/api/schema/orphans/_slug_.mjs.map +1 -1
  357. package/dist/astro/routes/api/schema/orphans/index.mjs +80 -76
  358. package/dist/astro/routes/api/schema/orphans/index.mjs.map +1 -1
  359. package/dist/astro/routes/api/search/enable.mjs +23 -21
  360. package/dist/astro/routes/api/search/enable.mjs.map +1 -1
  361. package/dist/astro/routes/api/search/index.mjs +22 -20
  362. package/dist/astro/routes/api/search/index.mjs.map +1 -1
  363. package/dist/astro/routes/api/search/rebuild.mjs +23 -21
  364. package/dist/astro/routes/api/search/rebuild.mjs.map +1 -1
  365. package/dist/astro/routes/api/search/stats.mjs +12 -10
  366. package/dist/astro/routes/api/search/stats.mjs.map +1 -1
  367. package/dist/astro/routes/api/search/suggest.mjs +22 -20
  368. package/dist/astro/routes/api/search/suggest.mjs.map +1 -1
  369. package/dist/astro/routes/api/sections/_slug_.mjs +22 -20
  370. package/dist/astro/routes/api/sections/_slug_.mjs.map +1 -1
  371. package/dist/astro/routes/api/sections/index.mjs +22 -20
  372. package/dist/astro/routes/api/sections/index.mjs.map +1 -1
  373. package/dist/astro/routes/api/settings/backups/archives/_name_.mjs +7 -7
  374. package/dist/astro/routes/api/settings/backups/archives/index.mjs +7 -7
  375. package/dist/astro/routes/api/settings/backups/export.mjs +7 -7
  376. package/dist/astro/routes/api/settings/backups/index.mjs +8 -8
  377. package/dist/astro/routes/api/settings/domain-notify.mjs +9 -9
  378. package/dist/astro/routes/api/settings/domain.d.mts.map +1 -1
  379. package/dist/astro/routes/api/settings/domain.mjs +23 -18
  380. package/dist/astro/routes/api/settings/domain.mjs.map +1 -1
  381. package/dist/astro/routes/api/settings/email.mjs +6 -6
  382. package/dist/astro/routes/api/settings.d.mts.map +1 -1
  383. package/dist/astro/routes/api/settings.mjs +30 -25
  384. package/dist/astro/routes/api/settings.mjs.map +1 -1
  385. package/dist/astro/routes/api/setup/admin-verify.d.mts.map +1 -1
  386. package/dist/astro/routes/api/setup/admin-verify.mjs +27 -23
  387. package/dist/astro/routes/api/setup/admin-verify.mjs.map +1 -1
  388. package/dist/astro/routes/api/setup/admin.mjs +20 -20
  389. package/dist/astro/routes/api/setup/dev-bypass.mjs +52 -48
  390. package/dist/astro/routes/api/setup/dev-bypass.mjs.map +1 -1
  391. package/dist/astro/routes/api/setup/dev-reset.mjs +4 -4
  392. package/dist/astro/routes/api/setup/index.mjs +58 -54
  393. package/dist/astro/routes/api/setup/index.mjs.map +1 -1
  394. package/dist/astro/routes/api/setup/status.mjs +6 -6
  395. package/dist/astro/routes/api/site/domain-proof.mjs +16 -12
  396. package/dist/astro/routes/api/site/domain-proof.mjs.map +1 -1
  397. package/dist/astro/routes/api/snapshot.mjs +8 -8
  398. package/dist/astro/routes/api/taxonomies/_name_/reorder.d.mts.map +1 -1
  399. package/dist/astro/routes/api/taxonomies/_name_/reorder.mjs +31 -28
  400. package/dist/astro/routes/api/taxonomies/_name_/reorder.mjs.map +1 -1
  401. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.d.mts.map +1 -1
  402. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs +31 -28
  403. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs.map +1 -1
  404. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.d.mts.map +1 -1
  405. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs +32 -29
  406. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs.map +1 -1
  407. package/dist/astro/routes/api/taxonomies/_name_/terms/index.d.mts.map +1 -1
  408. package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs +31 -28
  409. package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs.map +1 -1
  410. package/dist/astro/routes/api/taxonomies/_name_/translations.mjs +28 -26
  411. package/dist/astro/routes/api/taxonomies/_name_/translations.mjs.map +1 -1
  412. package/dist/astro/routes/api/taxonomies/_name_.d.mts.map +1 -1
  413. package/dist/astro/routes/api/taxonomies/_name_.mjs +32 -29
  414. package/dist/astro/routes/api/taxonomies/_name_.mjs.map +1 -1
  415. package/dist/astro/routes/api/taxonomies/bulk-tag.mjs +44 -42
  416. package/dist/astro/routes/api/taxonomies/bulk-tag.mjs.map +1 -1
  417. package/dist/astro/routes/api/taxonomies/index.d.mts.map +1 -1
  418. package/dist/astro/routes/api/taxonomies/index.mjs +31 -28
  419. package/dist/astro/routes/api/taxonomies/index.mjs.map +1 -1
  420. package/dist/astro/routes/api/themes/preview.mjs +6 -6
  421. package/dist/astro/routes/api/typegen.mjs +6 -6
  422. package/dist/astro/routes/api/visual-editing/action-token.mjs +6 -6
  423. package/dist/astro/routes/api/visual-editing/content/_collection_/_id_/publish.mjs +21 -21
  424. package/dist/astro/routes/api/visual-editing/toolbar-labels.mjs +4 -4
  425. package/dist/astro/routes/api/well-known/auth.mjs +1 -1
  426. package/dist/astro/routes/api/well-known/oauth-authorization-server.mjs +2 -2
  427. package/dist/astro/routes/api/well-known/oauth-protected-resource.mjs +2 -2
  428. package/dist/astro/routes/api/widget-areas/_name_/reorder.d.mts.map +1 -1
  429. package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs +20 -19
  430. package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs.map +1 -1
  431. package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.d.mts.map +1 -1
  432. package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs +26 -23
  433. package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs.map +1 -1
  434. package/dist/astro/routes/api/widget-areas/_name_/widgets.d.mts.map +1 -1
  435. package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs +25 -22
  436. package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs.map +1 -1
  437. package/dist/astro/routes/api/widget-areas/_name_.d.mts.map +1 -1
  438. package/dist/astro/routes/api/widget-areas/_name_.mjs +14 -11
  439. package/dist/astro/routes/api/widget-areas/_name_.mjs.map +1 -1
  440. package/dist/astro/routes/api/widget-areas/index.d.mts.map +1 -1
  441. package/dist/astro/routes/api/widget-areas/index.mjs +25 -22
  442. package/dist/astro/routes/api/widget-areas/index.mjs.map +1 -1
  443. package/dist/astro/routes/api/widget-components.mjs +5 -5
  444. package/dist/astro/routes/robots.txt.d.mts.map +1 -1
  445. package/dist/astro/routes/robots.txt.mjs +43 -8
  446. package/dist/astro/routes/robots.txt.mjs.map +1 -1
  447. package/dist/astro/routes/sitemap-_collection_.xml.mjs +19 -12
  448. package/dist/astro/routes/sitemap-_collection_.xml.mjs.map +1 -1
  449. package/dist/astro/routes/sitemap.xml.mjs +16 -9
  450. package/dist/astro/routes/sitemap.xml.mjs.map +1 -1
  451. package/dist/astro/types.d.mts +19 -17
  452. package/dist/astro/types.d.mts.map +1 -1
  453. package/dist/audit-B8XE-0UV.mjs +127 -0
  454. package/dist/audit-B8XE-0UV.mjs.map +1 -0
  455. package/dist/auth/providers/github.d.mts +1 -1
  456. package/dist/auth/providers/google.d.mts +1 -1
  457. package/dist/auth/providers/microsoft.d.mts +1 -1
  458. package/dist/authoritative-records-LPtrIGOY.mjs +5183 -0
  459. package/dist/authoritative-records-LPtrIGOY.mjs.map +1 -0
  460. package/dist/authorize-CoDsRRp5.mjs +74 -0
  461. package/dist/authorize-CoDsRRp5.mjs.map +1 -0
  462. package/dist/backup-2Wj-hTCN.mjs +246 -0
  463. package/dist/backup-2Wj-hTCN.mjs.map +1 -0
  464. package/dist/block-types-C3gJEe7l.mjs +132 -0
  465. package/dist/block-types-C3gJEe7l.mjs.map +1 -0
  466. package/dist/block-values-CgbMtSGU.mjs +215 -0
  467. package/dist/block-values-CgbMtSGU.mjs.map +1 -0
  468. package/dist/byline-CzGZC2Zs.mjs +922 -0
  469. package/dist/byline-CzGZC2Zs.mjs.map +1 -0
  470. package/dist/byline-fields-B1qHvRps.mjs +280 -0
  471. package/dist/byline-fields-B1qHvRps.mjs.map +1 -0
  472. package/dist/byline-fields-vYd_4Q1e.mjs +123 -0
  473. package/dist/byline-fields-vYd_4Q1e.mjs.map +1 -0
  474. package/dist/byline-registry-BhzpO41z.mjs +406 -0
  475. package/dist/byline-registry-BhzpO41z.mjs.map +1 -0
  476. package/dist/bylines-BF555iIz.mjs +150 -0
  477. package/dist/bylines-BF555iIz.mjs.map +1 -0
  478. package/dist/bylines-DJx6IWWi.mjs +234 -0
  479. package/dist/bylines-DJx6IWWi.mjs.map +1 -0
  480. package/dist/cache-BWzswWB-.mjs +151 -0
  481. package/dist/cache-BWzswWB-.mjs.map +1 -0
  482. package/dist/canonical-DjF_z6GI.mjs +174 -0
  483. package/dist/canonical-DjF_z6GI.mjs.map +1 -0
  484. package/dist/capture-triggers-D7g3fOZj.mjs +362 -0
  485. package/dist/capture-triggers-D7g3fOZj.mjs.map +1 -0
  486. package/dist/challenge-store-Cfjdvw86.mjs +51 -0
  487. package/dist/challenge-store-Cfjdvw86.mjs.map +1 -0
  488. package/dist/checksum-BF4acJwn.mjs +162 -0
  489. package/dist/checksum-BF4acJwn.mjs.map +1 -0
  490. package/dist/chrome-tags-BDs29G3g.mjs +24 -0
  491. package/dist/chrome-tags-BDs29G3g.mjs.map +1 -0
  492. package/dist/chunks-CYBOL-zn.mjs +25 -0
  493. package/dist/chunks-CYBOL-zn.mjs.map +1 -0
  494. package/dist/cli/index.mjs +146 -130
  495. package/dist/cli/index.mjs.map +1 -1
  496. package/dist/client/cf-access.d.mts +1 -1
  497. package/dist/client/index.d.mts +47 -47
  498. package/dist/client/index.d.mts.map +1 -1
  499. package/dist/client/index.mjs +14 -11
  500. package/dist/client/index.mjs.map +1 -1
  501. package/dist/collection-slugs-cache-B2J5aESO.mjs +91 -0
  502. package/dist/collection-slugs-cache-B2J5aESO.mjs.map +1 -0
  503. package/dist/comment-DV7dybcs.mjs +335 -0
  504. package/dist/comment-DV7dybcs.mjs.map +1 -0
  505. package/dist/comment-reaction-CWwqiT6x.mjs +85 -0
  506. package/dist/comment-reaction-CWwqiT6x.mjs.map +1 -0
  507. package/dist/comments-DVjWJm8X.mjs +99 -0
  508. package/dist/comments-DVjWJm8X.mjs.map +1 -0
  509. package/dist/comments-Q-ILHCEI.mjs +195 -0
  510. package/dist/comments-Q-ILHCEI.mjs.map +1 -0
  511. package/dist/components-DnOmvvgg.mjs +112 -0
  512. package/dist/components-DnOmvvgg.mjs.map +1 -0
  513. package/dist/config-9IzA83_U.d.mts +6811 -0
  514. package/dist/config-9IzA83_U.d.mts.map +1 -0
  515. package/dist/config-BdQzFtmR.mjs +228 -0
  516. package/dist/config-BdQzFtmR.mjs.map +1 -0
  517. package/dist/config-Cs2RBkJ6.d.mts +41 -0
  518. package/dist/config-Cs2RBkJ6.d.mts.map +1 -0
  519. package/dist/config-Cs_AwWXI.mjs +106 -0
  520. package/dist/config-Cs_AwWXI.mjs.map +1 -0
  521. package/dist/connection-CiXgZyCY.mjs +36 -0
  522. package/dist/connection-CiXgZyCY.mjs.map +1 -0
  523. package/dist/content-Dt0Os_WQ.mjs +2109 -0
  524. package/dist/content-Dt0Os_WQ.mjs.map +1 -0
  525. package/dist/content-list-query-BK26u9Ly.d.mts +26 -0
  526. package/dist/content-list-query-BK26u9Ly.d.mts.map +1 -0
  527. package/dist/content-policy-BLDbNJOb.mjs +46 -0
  528. package/dist/content-policy-BLDbNJOb.mjs.map +1 -0
  529. package/dist/content-repair-CjwbLy4m.mjs +442 -0
  530. package/dist/content-repair-CjwbLy4m.mjs.map +1 -0
  531. package/dist/context-ErV7UdQY.mjs +2089 -0
  532. package/dist/context-ErV7UdQY.mjs.map +1 -0
  533. package/dist/credits-BRyjafiF.mjs +110 -0
  534. package/dist/credits-BRyjafiF.mjs.map +1 -0
  535. package/dist/cron-Bm5xa7tv.mjs +306 -0
  536. package/dist/cron-Bm5xa7tv.mjs.map +1 -0
  537. package/dist/dashboard-DVxQ5XiI.mjs +168 -0
  538. package/dist/dashboard-DVxQ5XiI.mjs.map +1 -0
  539. package/dist/database/migration-lock.d.mts +17 -4
  540. package/dist/database/migration-lock.d.mts.map +1 -1
  541. package/dist/database/migration-lock.mjs +33 -6
  542. package/dist/database/migration-lock.mjs.map +1 -1
  543. package/dist/db/index.d.mts +3 -3
  544. package/dist/db/index.mjs +2 -2
  545. package/dist/db/libsql-migrations.d.mts +1 -1
  546. package/dist/db/libsql-migrations.mjs +5 -5
  547. package/dist/db/libsql.d.mts +1 -1
  548. package/dist/db/postgres-migrations.d.mts +1 -1
  549. package/dist/db/postgres-migrations.mjs +5 -5
  550. package/dist/db/postgres.d.mts +1 -1
  551. package/dist/db/sqlite-migrations.d.mts +1 -1
  552. package/dist/db/sqlite-migrations.mjs +5 -5
  553. package/dist/db/sqlite.d.mts +1 -1
  554. package/dist/db/sqlite.mjs +1 -1
  555. package/dist/db-errors-unnO6yiZ.mjs +65 -0
  556. package/dist/db-errors-unnO6yiZ.mjs.map +1 -0
  557. package/dist/default-B9Tf2n94.mjs +81 -0
  558. package/dist/default-B9Tf2n94.mjs.map +1 -0
  559. package/dist/deferred-tasks-CpPEqsga.d.mts +9 -0
  560. package/dist/deferred-tasks-CpPEqsga.d.mts.map +1 -0
  561. package/dist/destination-DR3IHjmy.mjs +18 -0
  562. package/dist/destination-DR3IHjmy.mjs.map +1 -0
  563. package/dist/dev-typegen-ZeWYV8Jp.mjs +29 -0
  564. package/dist/dev-typegen-ZeWYV8Jp.mjs.map +1 -0
  565. package/dist/device-flow-BbYNZ9Xi.mjs +521 -0
  566. package/dist/device-flow-BbYNZ9Xi.mjs.map +1 -0
  567. package/dist/digest-DlBa7kJl.mjs +194 -0
  568. package/dist/digest-DlBa7kJl.mjs.map +1 -0
  569. package/dist/direct-executor-5T8gkhvA.mjs +117 -0
  570. package/dist/direct-executor-5T8gkhvA.mjs.map +1 -0
  571. package/dist/dist-DY0aOmAP.mjs +810 -0
  572. package/dist/dist-DY0aOmAP.mjs.map +1 -0
  573. package/dist/email-console-v3OM8It-.mjs +50 -0
  574. package/dist/email-console-v3OM8It-.mjs.map +1 -0
  575. package/dist/email-locale-CoZo-oZx.mjs +25 -0
  576. package/dist/email-locale-CoZo-oZx.mjs.map +1 -0
  577. package/dist/emdash-runtime-DwezbIqQ.mjs +4392 -0
  578. package/dist/emdash-runtime-DwezbIqQ.mjs.map +1 -0
  579. package/dist/enrich-C3XIJi0O.mjs +194 -0
  580. package/dist/enrich-C3XIJi0O.mjs.map +1 -0
  581. package/dist/entry-lock-CY7XpdSw.d.mts +4568 -0
  582. package/dist/entry-lock-CY7XpdSw.d.mts.map +1 -0
  583. package/dist/entry-lock-DDuWaAiP.mjs +1211 -0
  584. package/dist/entry-lock-DDuWaAiP.mjs.map +1 -0
  585. package/dist/entry-lock-D_Og9Gy3.mjs +163 -0
  586. package/dist/entry-lock-D_Og9Gy3.mjs.map +1 -0
  587. package/dist/entry-locks-Cp8_BcQQ.mjs +167 -0
  588. package/dist/entry-locks-Cp8_BcQQ.mjs.map +1 -0
  589. package/dist/env-types-Br8uywYA.mjs +38 -0
  590. package/dist/env-types-Br8uywYA.mjs.map +1 -0
  591. package/dist/error-CT2SsX5S.mjs +90 -0
  592. package/dist/error-CT2SsX5S.mjs.map +1 -0
  593. package/dist/errors-BMaCpLeS.mjs +479 -0
  594. package/dist/errors-BMaCpLeS.mjs.map +1 -0
  595. package/dist/errors-DlJwot7q.mjs +120 -0
  596. package/dist/errors-DlJwot7q.mjs.map +1 -0
  597. package/dist/escape-BfbDyuQ-.mjs +9 -0
  598. package/dist/escape-BfbDyuQ-.mjs.map +1 -0
  599. package/dist/fence-BOD3SxZG.mjs +162 -0
  600. package/dist/fence-BOD3SxZG.mjs.map +1 -0
  601. package/dist/field-defs-cache-C7sR7ZeU.mjs +77 -0
  602. package/dist/field-defs-cache-C7sR7ZeU.mjs.map +1 -0
  603. package/dist/field-map-C_rDXfdJ.mjs +84 -0
  604. package/dist/field-map-C_rDXfdJ.mjs.map +1 -0
  605. package/dist/focal-point-CgCcr1Ca.mjs +23 -0
  606. package/dist/focal-point-CgCcr1Ca.mjs.map +1 -0
  607. package/dist/fts-manager-BzFo0xx6.mjs +483 -0
  608. package/dist/fts-manager-BzFo0xx6.mjs.map +1 -0
  609. package/dist/gc-B_c3DPpi.mjs +75 -0
  610. package/dist/gc-B_c3DPpi.mjs.map +1 -0
  611. package/dist/hash-A-o2ZX8O.mjs +37 -0
  612. package/dist/hash-A-o2ZX8O.mjs.map +1 -0
  613. package/dist/hook-result-f8t7hIuu.d.mts +31 -0
  614. package/dist/hook-result-f8t7hIuu.d.mts.map +1 -0
  615. package/dist/hreflang-BpUK9Lcu.mjs +105 -0
  616. package/dist/hreflang-BpUK9Lcu.mjs.map +1 -0
  617. package/dist/hreflang-D07R-RbI.d.mts +50 -0
  618. package/dist/hreflang-D07R-RbI.d.mts.map +1 -0
  619. package/dist/http-route-dispatch-C2Ep2Uf6.mjs +342 -0
  620. package/dist/http-route-dispatch-C2Ep2Uf6.mjs.map +1 -0
  621. package/dist/identity-BivQ8wkV.mjs +35 -0
  622. package/dist/identity-BivQ8wkV.mjs.map +1 -0
  623. package/dist/import-B4UvHNJz.mjs +2126 -0
  624. package/dist/import-B4UvHNJz.mjs.map +1 -0
  625. package/dist/index-C37Ty40w.d.mts +623 -0
  626. package/dist/index-C37Ty40w.d.mts.map +1 -0
  627. package/dist/index.d.mts +23 -23
  628. package/dist/index.mjs +112 -108
  629. package/dist/install-finalization-BbYaB4wj.mjs +58 -0
  630. package/dist/install-finalization-BbYaB4wj.mjs.map +1 -0
  631. package/dist/json-recordset-BjYIWFkV.mjs +12 -0
  632. package/dist/json-recordset-BjYIWFkV.mjs.map +1 -0
  633. package/dist/json-schema-Cde7le0s.mjs +15 -0
  634. package/dist/json-schema-Cde7le0s.mjs.map +1 -0
  635. package/dist/keys-CusTXpw-.mjs +61 -0
  636. package/dist/keys-CusTXpw-.mjs.map +1 -0
  637. package/dist/kinds-DogmNB6n.mjs +974 -0
  638. package/dist/kinds-DogmNB6n.mjs.map +1 -0
  639. package/dist/lifecycle-BLCoCz4T.mjs +25 -0
  640. package/dist/lifecycle-BLCoCz4T.mjs.map +1 -0
  641. package/dist/load-Dds3KhXr.mjs +28 -0
  642. package/dist/load-Dds3KhXr.mjs.map +1 -0
  643. package/dist/loader-D4w4XE7q.mjs +1420 -0
  644. package/dist/loader-D4w4XE7q.mjs.map +1 -0
  645. package/dist/loops-IYgzQdQu.mjs +205 -0
  646. package/dist/loops-IYgzQdQu.mjs.map +1 -0
  647. package/dist/manifest-builder-CGF5kujD.mjs +196 -0
  648. package/dist/manifest-builder-CGF5kujD.mjs.map +1 -0
  649. package/dist/manifest-schema-B0BxPSjB.mjs +497 -0
  650. package/dist/manifest-schema-B0BxPSjB.mjs.map +1 -0
  651. package/dist/marketplace-DNvEGLqU.mjs +257 -0
  652. package/dist/marketplace-DNvEGLqU.mjs.map +1 -0
  653. package/dist/media/image-endpoint.d.mts +3 -2
  654. package/dist/media/image-endpoint.d.mts.map +1 -1
  655. package/dist/media/image-endpoint.mjs +17 -8
  656. package/dist/media/image-endpoint.mjs.map +1 -1
  657. package/dist/media/index.d.mts +1 -1
  658. package/dist/media/index.mjs +7 -6
  659. package/dist/media/index.mjs.map +1 -1
  660. package/dist/media/local-runtime.d.mts +14 -14
  661. package/dist/media/local-runtime.d.mts.map +1 -1
  662. package/dist/media/local-runtime.mjs +18 -8
  663. package/dist/media/local-runtime.mjs.map +1 -1
  664. package/dist/media-BL9MRrSG.mjs +294 -0
  665. package/dist/media-BL9MRrSG.mjs.map +1 -0
  666. package/dist/media-B_x5B9EA.mjs +373 -0
  667. package/dist/media-B_x5B9EA.mjs.map +1 -0
  668. package/dist/media-allowlist-CpmqBbIQ.mjs +45 -0
  669. package/dist/media-allowlist-CpmqBbIQ.mjs.map +1 -0
  670. package/dist/media-folders-CNs_A_B-.mjs +210 -0
  671. package/dist/media-folders-CNs_A_B-.mjs.map +1 -0
  672. package/dist/media-qTTHVkls.mjs +416 -0
  673. package/dist/media-qTTHVkls.mjs.map +1 -0
  674. package/dist/media-url-GJboA1fl.mjs +43 -0
  675. package/dist/media-url-GJboA1fl.mjs.map +1 -0
  676. package/dist/media-usage-ClWgrX0d.mjs +282 -0
  677. package/dist/media-usage-ClWgrX0d.mjs.map +1 -0
  678. package/dist/media-usage-activation-B8Fjtq0h.mjs +78 -0
  679. package/dist/media-usage-activation-B8Fjtq0h.mjs.map +1 -0
  680. package/dist/media-usage-work-L8-Au4j-.mjs +1036 -0
  681. package/dist/media-usage-work-L8-Au4j-.mjs.map +1 -0
  682. package/dist/media-usage-work-LXgze5j9.mjs +151 -0
  683. package/dist/media-usage-work-LXgze5j9.mjs.map +1 -0
  684. package/dist/menus-BAxcbsbv.mjs +818 -0
  685. package/dist/menus-BAxcbsbv.mjs.map +1 -0
  686. package/dist/menus-BI6oBXco.mjs +92 -0
  687. package/dist/menus-BI6oBXco.mjs.map +1 -0
  688. package/dist/menus-fvGFd4m6.mjs +3725 -0
  689. package/dist/menus-fvGFd4m6.mjs.map +1 -0
  690. package/dist/migrations/index.d.mts +1 -1
  691. package/dist/migrations/index.d.mts.map +1 -1
  692. package/dist/migrations/index.mjs +4 -4
  693. package/dist/mime-DwhtRyUt.mjs +81 -0
  694. package/dist/mime-DwhtRyUt.mjs.map +1 -0
  695. package/dist/mode-DIDSUwuN.mjs +23 -0
  696. package/dist/mode-DIDSUwuN.mjs.map +1 -0
  697. package/dist/node-sqlite-compat-Ddr_mlR9.mjs +63 -0
  698. package/dist/node-sqlite-compat-Ddr_mlR9.mjs.map +1 -0
  699. package/dist/normalize-Ip_hFAm8.mjs +216 -0
  700. package/dist/normalize-Ip_hFAm8.mjs.map +1 -0
  701. package/dist/oauth-authorization-CcMgeT8R.mjs +274 -0
  702. package/dist/oauth-authorization-CcMgeT8R.mjs.map +1 -0
  703. package/dist/oauth-clients-C_osi0PU.mjs +266 -0
  704. package/dist/oauth-clients-C_osi0PU.mjs.map +1 -0
  705. package/dist/oauth-state-store-DGLP-6CK.mjs +50 -0
  706. package/dist/oauth-state-store-DGLP-6CK.mjs.map +1 -0
  707. package/dist/oauth-user-lookup-z77Ee0Hm.mjs +26 -0
  708. package/dist/oauth-user-lookup-z77Ee0Hm.mjs.map +1 -0
  709. package/dist/object-cache/memory.d.mts +1 -1
  710. package/dist/object-cache-EjasjtoQ.mjs +586 -0
  711. package/dist/object-cache-EjasjtoQ.mjs.map +1 -0
  712. package/dist/options-CmUpkyKW.d.mts +81 -0
  713. package/dist/options-CmUpkyKW.d.mts.map +1 -0
  714. package/dist/ownership-DCk5NutQ.mjs +12 -0
  715. package/dist/ownership-DCk5NutQ.mjs.map +1 -0
  716. package/dist/page/index.d.mts +2 -2
  717. package/dist/page/index.mjs +14 -7
  718. package/dist/page/index.mjs.map +1 -1
  719. package/dist/parse-2W-E2f7w.mjs +81 -0
  720. package/dist/parse-2W-E2f7w.mjs.map +1 -0
  721. package/dist/parse-6pN8Xqg5.d.mts +176 -0
  722. package/dist/parse-6pN8Xqg5.d.mts.map +1 -0
  723. package/dist/passkey-config-DTTZB6EI.mjs +46 -0
  724. package/dist/passkey-config-DTTZB6EI.mjs.map +1 -0
  725. package/dist/paths-CQA62503.mjs +77 -0
  726. package/dist/paths-CQA62503.mjs.map +1 -0
  727. package/dist/patterns-CryGz_EV.mjs +159 -0
  728. package/dist/patterns-CryGz_EV.mjs.map +1 -0
  729. package/dist/placeholder-BlfXkucE.d.mts +313 -0
  730. package/dist/placeholder-BlfXkucE.d.mts.map +1 -0
  731. package/dist/plan-B95eiwnF.mjs +135 -0
  732. package/dist/plan-B95eiwnF.mjs.map +1 -0
  733. package/dist/plugin-test-runtime.d.mts +14 -14
  734. package/dist/plugin-test-runtime.d.mts.map +1 -1
  735. package/dist/plugin-test-runtime.mjs +121 -117
  736. package/dist/plugin-tool-name-BDA7m4Xa.mjs +27 -0
  737. package/dist/plugin-tool-name-BDA7m4Xa.mjs.map +1 -0
  738. package/dist/plugin-types.d.mts +2 -2
  739. package/dist/plugin-utils.d.mts +12 -12
  740. package/dist/plugins/adapt-sandbox-entry.d.mts +12 -12
  741. package/dist/plugins/adapt-sandbox-entry.d.mts.map +1 -1
  742. package/dist/plugins/adapt-sandbox-entry.mjs +9 -8
  743. package/dist/plugins/adapt-sandbox-entry.mjs.map +1 -1
  744. package/dist/plugins/host.d.mts +5 -5
  745. package/dist/plugins/host.mjs +57 -51
  746. package/dist/plugins-BhxLJ008.mjs +261 -0
  747. package/dist/plugins-BhxLJ008.mjs.map +1 -0
  748. package/dist/policy-DOJ2sPqB.mjs +53 -0
  749. package/dist/policy-DOJ2sPqB.mjs.map +1 -0
  750. package/dist/portable-text-RCMpCj47.mjs +311 -0
  751. package/dist/portable-text-RCMpCj47.mjs.map +1 -0
  752. package/dist/preview-DFwL5APO.mjs +107 -0
  753. package/dist/preview-DFwL5APO.mjs.map +1 -0
  754. package/dist/protocol-B-ztxp_y.d.mts +65 -0
  755. package/dist/protocol-B-ztxp_y.d.mts.map +1 -0
  756. package/dist/public-plugin-api-routes-ik4fPZMv.mjs +316 -0
  757. package/dist/public-plugin-api-routes-ik4fPZMv.mjs.map +1 -0
  758. package/dist/public-submission-C5JZIykp.mjs +251 -0
  759. package/dist/public-submission-C5JZIykp.mjs.map +1 -0
  760. package/dist/public-url-CQwzRljH.mjs +101 -0
  761. package/dist/public-url-CQwzRljH.mjs.map +1 -0
  762. package/dist/query-BFHjCzSh.mjs +37 -0
  763. package/dist/query-BFHjCzSh.mjs.map +1 -0
  764. package/dist/query-DuwyFr5Z.mjs +41 -0
  765. package/dist/query-DuwyFr5Z.mjs.map +1 -0
  766. package/dist/query-eR_Nz70M.mjs +1157 -0
  767. package/dist/query-eR_Nz70M.mjs.map +1 -0
  768. package/dist/range-BQWPjWgQ.mjs +51 -0
  769. package/dist/range-BQWPjWgQ.mjs.map +1 -0
  770. package/dist/rate-limit-mPKeQ3sm.mjs +127 -0
  771. package/dist/rate-limit-mPKeQ3sm.mjs.map +1 -0
  772. package/dist/receipt-CmUpyuW5.mjs +43 -0
  773. package/dist/receipt-CmUpyuW5.mjs.map +1 -0
  774. package/dist/redirect-BtiMkehU.mjs +19 -0
  775. package/dist/redirect-BtiMkehU.mjs.map +1 -0
  776. package/dist/redirect-DcmNMvOs.mjs +423 -0
  777. package/dist/redirect-DcmNMvOs.mjs.map +1 -0
  778. package/dist/redirect-paths-K5i3xYfR.mjs +36 -0
  779. package/dist/redirect-paths-K5i3xYfR.mjs.map +1 -0
  780. package/dist/redirects-BA_TvtuH.mjs +148 -0
  781. package/dist/redirects-BA_TvtuH.mjs.map +1 -0
  782. package/dist/redirects-BIrRvgn4.mjs +446 -0
  783. package/dist/redirects-BIrRvgn4.mjs.map +1 -0
  784. package/dist/registry/testing.mjs +3 -3
  785. package/dist/registry-DymfZkAN.mjs +8374 -0
  786. package/dist/registry-DymfZkAN.mjs.map +1 -0
  787. package/dist/relations-DrEs3Sc1.mjs +789 -0
  788. package/dist/relations-DrEs3Sc1.mjs.map +1 -0
  789. package/dist/request-cache-5z2WzWmh.mjs +104 -0
  790. package/dist/request-cache-5z2WzWmh.mjs.map +1 -0
  791. package/dist/request-context.d.mts +12 -1
  792. package/dist/request-context.d.mts.map +1 -1
  793. package/dist/request-context.mjs.map +1 -1
  794. package/dist/request-meta-o8RIf9pa.mjs +141 -0
  795. package/dist/request-meta-o8RIf9pa.mjs.map +1 -0
  796. package/dist/resolve-CVy9xgy_.mjs +102 -0
  797. package/dist/resolve-CVy9xgy_.mjs.map +1 -0
  798. package/dist/resolve-DdNXBJSr.mjs +199 -0
  799. package/dist/resolve-DdNXBJSr.mjs.map +1 -0
  800. package/dist/revision-Dx7Uth1X.mjs +374 -0
  801. package/dist/revision-Dx7Uth1X.mjs.map +1 -0
  802. package/dist/route-cache-DAG5dPhh.mjs +20 -0
  803. package/dist/route-cache-DAG5dPhh.mjs.map +1 -0
  804. package/dist/route-wire-Xbsu8Vih.mjs +197 -0
  805. package/dist/route-wire-Xbsu8Vih.mjs.map +1 -0
  806. package/dist/routes-YQkSOsws.mjs +272 -0
  807. package/dist/routes-YQkSOsws.mjs.map +1 -0
  808. package/dist/runner-CLorw5vo.mjs +6669 -0
  809. package/dist/runner-CLorw5vo.mjs.map +1 -0
  810. package/dist/runner-g1A9P-wD.d.mts +73 -0
  811. package/dist/runner-g1A9P-wD.d.mts.map +1 -0
  812. package/dist/runtime.d.mts +13 -13
  813. package/dist/runtime.mjs +6 -4
  814. package/dist/runtime.mjs.map +1 -1
  815. package/dist/schema/project-env-types.mjs +49 -43
  816. package/dist/schema/project-env-types.mjs.map +1 -1
  817. package/dist/schema-Bss8qImF.mjs +13 -0
  818. package/dist/schema-Bss8qImF.mjs.map +1 -0
  819. package/dist/schema-C036pqEw.mjs +815 -0
  820. package/dist/schema-C036pqEw.mjs.map +1 -0
  821. package/dist/scopes-C_SoYl9x.mjs +34 -0
  822. package/dist/scopes-C_SoYl9x.mjs.map +1 -0
  823. package/dist/search-uNqCgePJ.mjs +450 -0
  824. package/dist/search-uNqCgePJ.mjs.map +1 -0
  825. package/dist/sections-BLusMa96.mjs +346 -0
  826. package/dist/sections-BLusMa96.mjs.map +1 -0
  827. package/dist/seed/index.d.mts +2 -2
  828. package/dist/seed/index.mjs +47 -41
  829. package/dist/seo/index.d.mts +3 -3
  830. package/dist/seo/index.mjs +32 -26
  831. package/dist/seo/index.mjs.map +1 -1
  832. package/dist/seo-BodxIpws.mjs +188 -0
  833. package/dist/seo-BodxIpws.mjs.map +1 -0
  834. package/dist/seo-DaMYIQY8.mjs +133 -0
  835. package/dist/seo-DaMYIQY8.mjs.map +1 -0
  836. package/dist/service-BuM1BRsA.mjs +150 -0
  837. package/dist/service-BuM1BRsA.mjs.map +1 -0
  838. package/dist/session-user-2DpQDMKw.mjs +61 -0
  839. package/dist/session-user-2DpQDMKw.mjs.map +1 -0
  840. package/dist/settings-B3ZmPF_8.mjs +73 -0
  841. package/dist/settings-B3ZmPF_8.mjs.map +1 -0
  842. package/dist/settings-P5hwPX6_.mjs +66 -0
  843. package/dist/settings-P5hwPX6_.mjs.map +1 -0
  844. package/dist/settings-yIqoN-Ok.mjs +519 -0
  845. package/dist/settings-yIqoN-Ok.mjs.map +1 -0
  846. package/dist/setup-complete-eu6MUQnt.mjs +65 -0
  847. package/dist/setup-complete-eu6MUQnt.mjs.map +1 -0
  848. package/dist/setup-nonce-CyPOapqY.mjs +25 -0
  849. package/dist/setup-nonce-CyPOapqY.mjs.map +1 -0
  850. package/dist/site-domain-8lEJl_0U.mjs +131 -0
  851. package/dist/site-domain-8lEJl_0U.mjs.map +1 -0
  852. package/dist/site-settings-uPkW0e6o.mjs +50 -0
  853. package/dist/site-settings-uPkW0e6o.mjs.map +1 -0
  854. package/dist/site-url-25SGVXwL.mjs +45 -0
  855. package/dist/site-url-25SGVXwL.mjs.map +1 -0
  856. package/dist/sitemap-name-DTK7CYnY.mjs +26 -0
  857. package/dist/sitemap-name-DTK7CYnY.mjs.map +1 -0
  858. package/dist/slug-BEDl2IJY.mjs +16 -0
  859. package/dist/slug-BEDl2IJY.mjs.map +1 -0
  860. package/dist/slugify-BDEG9pLk.mjs +22 -0
  861. package/dist/slugify-BDEG9pLk.mjs.map +1 -0
  862. package/dist/snapshot-CvkIBRLY.mjs +414 -0
  863. package/dist/snapshot-CvkIBRLY.mjs.map +1 -0
  864. package/dist/ssrf-mcCKMH6B.mjs +406 -0
  865. package/dist/ssrf-mcCKMH6B.mjs.map +1 -0
  866. package/dist/stage-BQfGzGOy.mjs +662 -0
  867. package/dist/stage-BQfGzGOy.mjs.map +1 -0
  868. package/dist/staged-B5vQGeSf.mjs +686 -0
  869. package/dist/staged-B5vQGeSf.mjs.map +1 -0
  870. package/dist/state-dO6t6OxV.mjs +178 -0
  871. package/dist/state-dO6t6OxV.mjs.map +1 -0
  872. package/dist/status-DSURZwKS.mjs +30 -0
  873. package/dist/status-DSURZwKS.mjs.map +1 -0
  874. package/dist/storage/local.d.mts +1 -1
  875. package/dist/storage/local.mjs +3 -3
  876. package/dist/storage/s3.d.mts +1 -1
  877. package/dist/storage/s3.mjs +1 -1
  878. package/dist/storage-query-Cy0SZ8iG.d.mts +1619 -0
  879. package/dist/storage-query-Cy0SZ8iG.d.mts.map +1 -0
  880. package/dist/tar-DWzcUZ_Q.mjs +449 -0
  881. package/dist/tar-DWzcUZ_Q.mjs.map +1 -0
  882. package/dist/target-C9htUbrT.mjs +27 -0
  883. package/dist/target-C9htUbrT.mjs.map +1 -0
  884. package/dist/taxonomies-By2aGvq2.mjs +729 -0
  885. package/dist/taxonomies-By2aGvq2.mjs.map +1 -0
  886. package/dist/taxonomies-CVRd_jz0.mjs +937 -0
  887. package/dist/taxonomies-CVRd_jz0.mjs.map +1 -0
  888. package/dist/taxonomy-BG_xu2Qf.mjs +563 -0
  889. package/dist/taxonomy-BG_xu2Qf.mjs.map +1 -0
  890. package/dist/tokens-U5vzgSrM.mjs +171 -0
  891. package/dist/tokens-U5vzgSrM.mjs.map +1 -0
  892. package/dist/transaction-CkoQ5wqQ.mjs +29 -0
  893. package/dist/transaction-CkoQ5wqQ.mjs.map +1 -0
  894. package/dist/transfer-DA0OSfaT.mjs +8873 -0
  895. package/dist/transfer-DA0OSfaT.mjs.map +1 -0
  896. package/dist/transfer-Pyf3d7ka.mjs +166 -0
  897. package/dist/transfer-Pyf3d7ka.mjs.map +1 -0
  898. package/dist/transfer-download-cX7SuWEy.mjs +33 -0
  899. package/dist/transfer-download-cX7SuWEy.mjs.map +1 -0
  900. package/dist/transformations-DczubD4j.mjs +196 -0
  901. package/dist/transformations-DczubD4j.mjs.map +1 -0
  902. package/dist/transport-Dm5QzpT_.d.mts +42 -0
  903. package/dist/transport-Dm5QzpT_.d.mts.map +1 -0
  904. package/dist/transport-DtIrjEFO.mjs +137 -0
  905. package/dist/transport-DtIrjEFO.mjs.map +1 -0
  906. package/dist/trusted-proxy-CDRd5Kmw.mjs +51 -0
  907. package/dist/trusted-proxy-CDRd5Kmw.mjs.map +1 -0
  908. package/dist/turnstile-Ct5YuFNY.mjs +58 -0
  909. package/dist/turnstile-Ct5YuFNY.mjs.map +1 -0
  910. package/dist/types-Bgujop4S.d.mts +374 -0
  911. package/dist/types-Bgujop4S.d.mts.map +1 -0
  912. package/dist/types-BirHUEXt.mjs +18 -0
  913. package/dist/types-BirHUEXt.mjs.map +1 -0
  914. package/dist/types-BqJgTL_y.d.mts +293 -0
  915. package/dist/types-BqJgTL_y.d.mts.map +1 -0
  916. package/dist/types-C-lrOt9T.d.mts +87 -0
  917. package/dist/types-C-lrOt9T.d.mts.map +1 -0
  918. package/dist/types-CCEHAhOv.d.mts +916 -0
  919. package/dist/types-CCEHAhOv.d.mts.map +1 -0
  920. package/dist/types-CLVwYRBr.d.mts +227 -0
  921. package/dist/types-CLVwYRBr.d.mts.map +1 -0
  922. package/dist/types-C_asjp1J.mjs +201 -0
  923. package/dist/types-C_asjp1J.mjs.map +1 -0
  924. package/dist/types-CadaL_k8.d.mts +366 -0
  925. package/dist/types-CadaL_k8.d.mts.map +1 -0
  926. package/dist/types-DVbTb4Hk.mjs +77 -0
  927. package/dist/types-DVbTb4Hk.mjs.map +1 -0
  928. package/dist/types-Ddku19Zw.d.mts +209 -0
  929. package/dist/types-Ddku19Zw.d.mts.map +1 -0
  930. package/dist/types-DwhEvIVb.mjs +133 -0
  931. package/dist/types-DwhEvIVb.mjs.map +1 -0
  932. package/dist/types-FIiGQ3PE.mjs +16 -0
  933. package/dist/types-FIiGQ3PE.mjs.map +1 -0
  934. package/dist/types-OauzCOY0.mjs +37 -0
  935. package/dist/types-OauzCOY0.mjs.map +1 -0
  936. package/dist/types-mQGTpP-4.d.mts +1741 -0
  937. package/dist/types-mQGTpP-4.d.mts.map +1 -0
  938. package/dist/types-nbjz3Mgm.d.mts +125 -0
  939. package/dist/types-nbjz3Mgm.d.mts.map +1 -0
  940. package/dist/update-check-hW32-0pf.mjs +161 -0
  941. package/dist/update-check-hW32-0pf.mjs.map +1 -0
  942. package/dist/upload-attempts-Bpik1TLF.mjs +32 -0
  943. package/dist/upload-attempts-Bpik1TLF.mjs.map +1 -0
  944. package/dist/url-DTfGDJhI.mjs +104 -0
  945. package/dist/url-DTfGDJhI.mjs.map +1 -0
  946. package/dist/url-pattern-CJeCyNij.mjs +41 -0
  947. package/dist/url-pattern-CJeCyNij.mjs.map +1 -0
  948. package/dist/user-nQInBZbE.mjs +171 -0
  949. package/dist/user-nQInBZbE.mjs.map +1 -0
  950. package/dist/utils-govudc_U.mjs +442 -0
  951. package/dist/utils-govudc_U.mjs.map +1 -0
  952. package/dist/validate-BxLvcDYh.mjs +524 -0
  953. package/dist/validate-BxLvcDYh.mjs.map +1 -0
  954. package/dist/validate-mnoVfASU.d.mts +468 -0
  955. package/dist/validate-mnoVfASU.d.mts.map +1 -0
  956. package/dist/validation-DQDEvh87.mjs +221 -0
  957. package/dist/validation-DQDEvh87.mjs.map +1 -0
  958. package/dist/version-BOFfLiVT.mjs +49 -0
  959. package/dist/version-BOFfLiVT.mjs.map +1 -0
  960. package/dist/version-Dcvx_C9g.mjs +7 -0
  961. package/dist/version-Dcvx_C9g.mjs.map +1 -0
  962. package/dist/version-DzTJ3gD7.mjs +9 -0
  963. package/dist/version-DzTJ3gD7.mjs.map +1 -0
  964. package/dist/video-BX7AI5nJ.mjs +54 -0
  965. package/dist/video-BX7AI5nJ.mjs.map +1 -0
  966. package/dist/virtual-modules-CU29aip9.mjs +515 -0
  967. package/dist/virtual-modules-CU29aip9.mjs.map +1 -0
  968. package/dist/widgets-HIeFmZxt.mjs +121 -0
  969. package/dist/widgets-HIeFmZxt.mjs.map +1 -0
  970. package/dist/wxr-taxonomies-Dy2i2ON3.d.mts +34 -0
  971. package/dist/wxr-taxonomies-Dy2i2ON3.d.mts.map +1 -0
  972. package/dist/wxr-taxonomies-DyOGhl8W.mjs +454 -0
  973. package/dist/wxr-taxonomies-DyOGhl8W.mjs.map +1 -0
  974. package/dist/zod-generator-VxCPVDpo.mjs +425 -0
  975. package/dist/zod-generator-VxCPVDpo.mjs.map +1 -0
  976. package/package.json +7 -6
  977. package/src/api/authorize.ts +42 -0
  978. package/src/api/handlers/bulk-tag.ts +11 -3
  979. package/src/api/handlers/bylines.ts +6 -2
  980. package/src/api/handlers/content.ts +107 -7
  981. package/src/api/handlers/dashboard.ts +44 -14
  982. package/src/api/handlers/manifest.ts +1 -0
  983. package/src/api/handlers/menus.ts +24 -10
  984. package/src/api/handlers/plugins.ts +1 -0
  985. package/src/api/handlers/relations.ts +15 -1
  986. package/src/api/handlers/revision.ts +6 -2
  987. package/src/api/handlers/site-domain.ts +26 -10
  988. package/src/api/handlers/taxonomies.ts +27 -17
  989. package/src/api/schemas/settings.ts +2 -0
  990. package/src/api/types.ts +2 -0
  991. package/src/astro/image-endpoint.ts +23 -2
  992. package/src/astro/integration/dev-scheduler-bridge.ts +91 -0
  993. package/src/astro/integration/index.ts +48 -1
  994. package/src/astro/integration/routes.ts +8 -0
  995. package/src/astro/integration/runtime.ts +2 -1
  996. package/src/astro/integration/virtual-modules.ts +9 -16
  997. package/src/astro/integration/vite-config.ts +20 -23
  998. package/src/astro/middleware/auth.ts +3 -1
  999. package/src/astro/middleware/redirect.ts +202 -78
  1000. package/src/astro/middleware/request-context.ts +1 -0
  1001. package/src/astro/middleware.ts +35 -7
  1002. package/src/astro/prefetch.ts +7 -5
  1003. package/src/astro/public-plugin-api-routes.ts +10 -2
  1004. package/src/astro/routes/api/admin/plugins/registry/artifact.ts +1 -1
  1005. package/src/astro/routes/api/content/[collection]/[id]/discard-draft.ts +2 -1
  1006. package/src/astro/routes/api/content/[collection]/[id]/duplicate.ts +1 -5
  1007. package/src/astro/routes/api/content/[collection]/[id]/lock.ts +2 -2
  1008. package/src/astro/routes/api/content/[collection]/[id]/permanent.ts +2 -1
  1009. package/src/astro/routes/api/content/[collection]/[id]/publish.ts +2 -1
  1010. package/src/astro/routes/api/content/[collection]/[id]/restore.ts +2 -1
  1011. package/src/astro/routes/api/content/[collection]/[id]/schedule.ts +3 -2
  1012. package/src/astro/routes/api/content/[collection]/[id]/terms/[taxonomy].ts +9 -5
  1013. package/src/astro/routes/api/content/[collection]/[id]/translations.ts +14 -1
  1014. package/src/astro/routes/api/content/[collection]/[id]/unpublish.ts +2 -1
  1015. package/src/astro/routes/api/content/[collection]/[id].ts +18 -6
  1016. package/src/astro/routes/api/content/[collection]/index.ts +1 -5
  1017. package/src/astro/routes/api/dashboard.ts +6 -1
  1018. package/src/astro/routes/api/dev/scheduled-tasks.ts +20 -0
  1019. package/src/astro/routes/api/import/wordpress/analyze.ts +1 -16
  1020. package/src/astro/routes/api/import/wordpress/execute.ts +8 -3
  1021. package/src/astro/routes/api/import/wordpress-plugin/analyze.ts +4 -1
  1022. package/src/astro/routes/api/import/wordpress-plugin/execute.ts +34 -5
  1023. package/src/astro/routes/api/media/file/[...key].ts +13 -3
  1024. package/src/astro/routes/api/menus/[name]/items/[id].ts +3 -2
  1025. package/src/astro/routes/api/menus/[name]/items.ts +2 -1
  1026. package/src/astro/routes/api/menus/[name]/reorder.ts +2 -1
  1027. package/src/astro/routes/api/menus/[name]/translations.ts +2 -1
  1028. package/src/astro/routes/api/menus/[name].ts +3 -2
  1029. package/src/astro/routes/api/menus/index.ts +2 -1
  1030. package/src/astro/routes/api/redirects/[id].ts +15 -2
  1031. package/src/astro/routes/api/redirects/index.ts +5 -1
  1032. package/src/astro/routes/api/settings/domain.ts +2 -1
  1033. package/src/astro/routes/api/settings.ts +2 -1
  1034. package/src/astro/routes/api/setup/admin-verify.ts +7 -1
  1035. package/src/astro/routes/api/taxonomies/[name]/reorder.ts +2 -1
  1036. package/src/astro/routes/api/taxonomies/[name]/terms/[slug]/translations.ts +2 -1
  1037. package/src/astro/routes/api/taxonomies/[name]/terms/[slug].ts +3 -2
  1038. package/src/astro/routes/api/taxonomies/[name]/terms/index.ts +2 -1
  1039. package/src/astro/routes/api/taxonomies/[name].ts +3 -2
  1040. package/src/astro/routes/api/taxonomies/index.ts +2 -1
  1041. package/src/astro/routes/api/widget-areas/[name]/reorder.ts +2 -1
  1042. package/src/astro/routes/api/widget-areas/[name]/widgets/[id].ts +3 -2
  1043. package/src/astro/routes/api/widget-areas/[name]/widgets.ts +2 -1
  1044. package/src/astro/routes/api/widget-areas/[name].ts +2 -1
  1045. package/src/astro/routes/api/widget-areas/index.ts +2 -1
  1046. package/src/astro/routes/robots.txt.ts +33 -2
  1047. package/src/astro/types.ts +10 -1
  1048. package/src/auth/types.ts +10 -4
  1049. package/src/cache/redirect-paths.ts +56 -0
  1050. package/src/cache/route-cache.ts +22 -0
  1051. package/src/cli/commands/export-seed.ts +6 -4
  1052. package/src/cli/commands/import/wordpress.ts +3 -27
  1053. package/src/cli/commands/login.ts +37 -47
  1054. package/src/cli/commands/migrate.ts +36 -4
  1055. package/src/cli/commands/seed.ts +18 -8
  1056. package/src/cli/wxr/parser.ts +2 -2
  1057. package/src/client/index.ts +13 -2
  1058. package/src/client/portable-text.ts +21 -7
  1059. package/src/client/transport.ts +11 -7
  1060. package/src/comments/query.ts +8 -2
  1061. package/src/components/CommentForm.astro +2 -2
  1062. package/src/components/Comments.astro +1 -1
  1063. package/src/components/EmDashImage.astro +14 -2
  1064. package/src/components/InlinePortableTextEditor.tsx +156 -1326
  1065. package/src/components/inline-block-types.ts +278 -0
  1066. package/src/components/inline-bubble-menu.tsx +696 -0
  1067. package/src/components/inline-editor-ui.tsx +1192 -0
  1068. package/src/components/inline-image.tsx +722 -0
  1069. package/src/components/inline-media-picker.tsx +1221 -0
  1070. package/src/components/inline-slash-menu.tsx +556 -0
  1071. package/src/database/collection-cleanup.ts +30 -0
  1072. package/src/database/datetime-storage.ts +337 -60
  1073. package/src/database/migration-lock.ts +43 -7
  1074. package/src/database/migrations/content-sized.ts +82 -0
  1075. package/src/database/migrations/policy.ts +28 -2
  1076. package/src/database/migrations/runner.ts +48 -0
  1077. package/src/database/repositories/byline.ts +73 -17
  1078. package/src/database/repositories/comment.ts +17 -7
  1079. package/src/database/repositories/content.ts +82 -20
  1080. package/src/database/repositories/menu.ts +77 -11
  1081. package/src/database/repositories/plugin-storage.ts +109 -8
  1082. package/src/database/repositories/revision.ts +24 -6
  1083. package/src/database/repositories/taxonomy-def.ts +9 -2
  1084. package/src/database/repositories/taxonomy.ts +47 -14
  1085. package/src/database/repositories/types.ts +76 -7
  1086. package/src/emdash-runtime.ts +213 -170
  1087. package/src/fields/image.ts +1 -0
  1088. package/src/i18n/config.ts +58 -10
  1089. package/src/i18n/normalize.ts +16 -2
  1090. package/src/i18n/query.ts +47 -0
  1091. package/src/i18n/resolve.ts +8 -3
  1092. package/src/import/index.ts +1 -0
  1093. package/src/import/registry.ts +17 -0
  1094. package/src/import/sources/wordpress-plugin.ts +151 -9
  1095. package/src/import/types.ts +3 -0
  1096. package/src/import/utils.ts +5 -0
  1097. package/src/import/wxr-taxonomies.ts +3 -2
  1098. package/src/loader.ts +116 -24
  1099. package/src/mcp/json-schema.ts +14 -0
  1100. package/src/mcp/plugin-tool-name.ts +36 -0
  1101. package/src/mcp/server.ts +102 -16
  1102. package/src/media/caption.ts +30 -0
  1103. package/src/media/image-endpoint.ts +13 -6
  1104. package/src/media/local-runtime.ts +3 -0
  1105. package/src/media/normalize.ts +15 -8
  1106. package/src/media/responsive.ts +12 -2
  1107. package/src/media/types.ts +16 -3
  1108. package/src/media/usage/collection-deletion.ts +4 -0
  1109. package/src/menus/index.ts +21 -11
  1110. package/src/migrations/direct-executor.ts +42 -12
  1111. package/src/migrations/manifest.ts +1 -0
  1112. package/src/migrations/protocol.ts +6 -2
  1113. package/src/plugins/adapt-sandbox-entry.ts +16 -6
  1114. package/src/plugins/byline-access.ts +3 -1
  1115. package/src/plugins/context.ts +1 -2
  1116. package/src/plugins/state.ts +5 -8
  1117. package/src/plugins/storage-indexes.ts +7 -3
  1118. package/src/query.ts +74 -23
  1119. package/src/redirects/artifacts.ts +39 -5
  1120. package/src/redirects/cache.ts +34 -2
  1121. package/src/references/field-map.ts +6 -4
  1122. package/src/request-context.ts +8 -0
  1123. package/src/schema/block-values.ts +80 -17
  1124. package/src/schema/collection-slugs-cache.ts +31 -17
  1125. package/src/schema/registry.ts +18 -1
  1126. package/src/schema/zod-generator.ts +2 -1
  1127. package/src/search/fts-manager.ts +98 -28
  1128. package/src/search/query.ts +34 -65
  1129. package/src/seed/apply.ts +222 -94
  1130. package/src/seed/types.ts +3 -1
  1131. package/src/settings/index.ts +155 -35
  1132. package/src/settings/types.ts +2 -0
  1133. package/src/settings/version.ts +54 -0
  1134. package/src/taxonomies/index.ts +95 -52
  1135. package/src/taxonomies/term-counts.ts +2 -1
  1136. package/src/utils/db-errors.ts +15 -0
  1137. package/src/virtual-modules.d.ts +1 -0
  1138. package/src/visual-editing/toolbar.ts +46 -12
  1139. package/dist/action-token-BdWad2YG.mjs +0 -26
  1140. package/dist/action-token-BdWad2YG.mjs.map +0 -1
  1141. package/dist/activation-xomsCMJg.mjs +0 -387
  1142. package/dist/activation-xomsCMJg.mjs.map +0 -1
  1143. package/dist/adapters-B4-nbElt.d.mts +0 -173
  1144. package/dist/adapters-B4-nbElt.d.mts.map +0 -1
  1145. package/dist/allowed-origins-CLpHGGlc.mjs +0 -116
  1146. package/dist/allowed-origins-CLpHGGlc.mjs.map +0 -1
  1147. package/dist/api-DBw_IWoi.mjs +0 -5024
  1148. package/dist/api-DBw_IWoi.mjs.map +0 -1
  1149. package/dist/api-tokens-B0ZipcZ-.mjs +0 -173
  1150. package/dist/api-tokens-B0ZipcZ-.mjs.map +0 -1
  1151. package/dist/apply-Cx48saFC.mjs +0 -1680
  1152. package/dist/apply-Cx48saFC.mjs.map +0 -1
  1153. package/dist/approvals-BXgtXA2s.mjs +0 -460
  1154. package/dist/approvals-BXgtXA2s.mjs.map +0 -1
  1155. package/dist/artifact-fetch-DsRczRGG.mjs +0 -659
  1156. package/dist/artifact-fetch-DsRczRGG.mjs.map +0 -1
  1157. package/dist/artifacts-D-O-qj9C.mjs +0 -307
  1158. package/dist/artifacts-D-O-qj9C.mjs.map +0 -1
  1159. package/dist/audit-CCH3MA4Y.mjs +0 -127
  1160. package/dist/audit-CCH3MA4Y.mjs.map +0 -1
  1161. package/dist/authoritative-records-Dcs7l2H5.mjs +0 -5183
  1162. package/dist/authoritative-records-Dcs7l2H5.mjs.map +0 -1
  1163. package/dist/authorize-TdIGpRSE.mjs +0 -49
  1164. package/dist/authorize-TdIGpRSE.mjs.map +0 -1
  1165. package/dist/backup-CZt5Mzwx.mjs +0 -246
  1166. package/dist/backup-CZt5Mzwx.mjs.map +0 -1
  1167. package/dist/block-types-DHnkzE6u.mjs +0 -132
  1168. package/dist/block-types-DHnkzE6u.mjs.map +0 -1
  1169. package/dist/block-values-C4N_F2-G.mjs +0 -175
  1170. package/dist/block-values-C4N_F2-G.mjs.map +0 -1
  1171. package/dist/byline-BmVKOQ8l.mjs +0 -909
  1172. package/dist/byline-BmVKOQ8l.mjs.map +0 -1
  1173. package/dist/byline-fields-B8SDs3M_.mjs +0 -123
  1174. package/dist/byline-fields-B8SDs3M_.mjs.map +0 -1
  1175. package/dist/byline-fields-Bze3ZdAw.mjs +0 -280
  1176. package/dist/byline-fields-Bze3ZdAw.mjs.map +0 -1
  1177. package/dist/byline-registry-dvt4N3xV.mjs +0 -406
  1178. package/dist/byline-registry-dvt4N3xV.mjs.map +0 -1
  1179. package/dist/bylines-CHhR28r9.mjs +0 -150
  1180. package/dist/bylines-CHhR28r9.mjs.map +0 -1
  1181. package/dist/bylines-DZS4OflA.mjs +0 -234
  1182. package/dist/bylines-DZS4OflA.mjs.map +0 -1
  1183. package/dist/cache-x0z8t_m9.mjs +0 -133
  1184. package/dist/cache-x0z8t_m9.mjs.map +0 -1
  1185. package/dist/canonical-BUcKRYpG.mjs +0 -174
  1186. package/dist/canonical-BUcKRYpG.mjs.map +0 -1
  1187. package/dist/capture-triggers-C9JKoIdT.mjs +0 -362
  1188. package/dist/capture-triggers-C9JKoIdT.mjs.map +0 -1
  1189. package/dist/challenge-store-BHgdPVze.mjs +0 -51
  1190. package/dist/challenge-store-BHgdPVze.mjs.map +0 -1
  1191. package/dist/checksum-BYR5i7qe.mjs +0 -162
  1192. package/dist/checksum-BYR5i7qe.mjs.map +0 -1
  1193. package/dist/chrome-tags-BIKBMZYO.mjs +0 -24
  1194. package/dist/chrome-tags-BIKBMZYO.mjs.map +0 -1
  1195. package/dist/chunks-Dr5Vr0zA.mjs +0 -25
  1196. package/dist/chunks-Dr5Vr0zA.mjs.map +0 -1
  1197. package/dist/collection-slugs-cache-B2Gs9Jwx.mjs +0 -85
  1198. package/dist/collection-slugs-cache-B2Gs9Jwx.mjs.map +0 -1
  1199. package/dist/comment-CWla6OHV.mjs +0 -325
  1200. package/dist/comment-CWla6OHV.mjs.map +0 -1
  1201. package/dist/comment-reaction-RZrcs5cW.mjs +0 -85
  1202. package/dist/comment-reaction-RZrcs5cW.mjs.map +0 -1
  1203. package/dist/comments-BzmIKVb2.mjs +0 -99
  1204. package/dist/comments-BzmIKVb2.mjs.map +0 -1
  1205. package/dist/comments-Da_dI2O1.mjs +0 -195
  1206. package/dist/comments-Da_dI2O1.mjs.map +0 -1
  1207. package/dist/components-oFXumpf5.mjs +0 -112
  1208. package/dist/components-oFXumpf5.mjs.map +0 -1
  1209. package/dist/config--wamYxBW.d.mts +0 -39
  1210. package/dist/config--wamYxBW.d.mts.map +0 -1
  1211. package/dist/config-Bo4eOOdV.mjs +0 -228
  1212. package/dist/config-Bo4eOOdV.mjs.map +0 -1
  1213. package/dist/config-C4-UxIk7.d.mts +0 -6790
  1214. package/dist/config-C4-UxIk7.d.mts.map +0 -1
  1215. package/dist/config-CvmjJcVw.mjs +0 -73
  1216. package/dist/config-CvmjJcVw.mjs.map +0 -1
  1217. package/dist/connection-UpzYxtE2.mjs +0 -36
  1218. package/dist/connection-UpzYxtE2.mjs.map +0 -1
  1219. package/dist/content-CcHrqkgp.mjs +0 -2072
  1220. package/dist/content-CcHrqkgp.mjs.map +0 -1
  1221. package/dist/content-list-query-Bxxdd9fv.d.mts +0 -26
  1222. package/dist/content-list-query-Bxxdd9fv.d.mts.map +0 -1
  1223. package/dist/content-policy-Dm32n9C6.mjs +0 -46
  1224. package/dist/content-policy-Dm32n9C6.mjs.map +0 -1
  1225. package/dist/content-repair-havk1F0-.mjs +0 -442
  1226. package/dist/content-repair-havk1F0-.mjs.map +0 -1
  1227. package/dist/context-CvhgHgSH.mjs +0 -2043
  1228. package/dist/context-CvhgHgSH.mjs.map +0 -1
  1229. package/dist/credits-CygUrPOi.mjs +0 -110
  1230. package/dist/credits-CygUrPOi.mjs.map +0 -1
  1231. package/dist/cron-C6ytTOLw.mjs +0 -306
  1232. package/dist/cron-C6ytTOLw.mjs.map +0 -1
  1233. package/dist/dashboard-7_FYfafc.mjs +0 -151
  1234. package/dist/dashboard-7_FYfafc.mjs.map +0 -1
  1235. package/dist/db-errors-CBD5yMro.mjs +0 -55
  1236. package/dist/db-errors-CBD5yMro.mjs.map +0 -1
  1237. package/dist/default-CHCUkV4Z.mjs +0 -81
  1238. package/dist/default-CHCUkV4Z.mjs.map +0 -1
  1239. package/dist/deferred-tasks-G0xhcJTl.d.mts +0 -9
  1240. package/dist/deferred-tasks-G0xhcJTl.d.mts.map +0 -1
  1241. package/dist/destination-r2zIAZ2S.mjs +0 -18
  1242. package/dist/destination-r2zIAZ2S.mjs.map +0 -1
  1243. package/dist/dev-typegen-Dtl8AfS6.mjs +0 -29
  1244. package/dist/dev-typegen-Dtl8AfS6.mjs.map +0 -1
  1245. package/dist/device-flow-CzDJmQ1q.mjs +0 -521
  1246. package/dist/device-flow-CzDJmQ1q.mjs.map +0 -1
  1247. package/dist/digest-xJmyPv2r.mjs +0 -194
  1248. package/dist/digest-xJmyPv2r.mjs.map +0 -1
  1249. package/dist/direct-executor-BXiYIVJ9.mjs +0 -104
  1250. package/dist/direct-executor-BXiYIVJ9.mjs.map +0 -1
  1251. package/dist/dist-Cfu8mMBs.mjs +0 -810
  1252. package/dist/dist-Cfu8mMBs.mjs.map +0 -1
  1253. package/dist/email-console-7ZPApLlm.mjs +0 -50
  1254. package/dist/email-console-7ZPApLlm.mjs.map +0 -1
  1255. package/dist/email-locale-DFdUA6UF.mjs +0 -25
  1256. package/dist/email-locale-DFdUA6UF.mjs.map +0 -1
  1257. package/dist/emdash-runtime-C4oFeVpN.mjs +0 -4363
  1258. package/dist/emdash-runtime-C4oFeVpN.mjs.map +0 -1
  1259. package/dist/enrich-Duu4sV3a.mjs +0 -194
  1260. package/dist/enrich-Duu4sV3a.mjs.map +0 -1
  1261. package/dist/entry-lock-B4n0HdQ_.mjs +0 -163
  1262. package/dist/entry-lock-B4n0HdQ_.mjs.map +0 -1
  1263. package/dist/entry-lock-BAAlKYrz.d.mts +0 -4566
  1264. package/dist/entry-lock-BAAlKYrz.d.mts.map +0 -1
  1265. package/dist/entry-lock-Cjz0h45X.mjs +0 -1209
  1266. package/dist/entry-lock-Cjz0h45X.mjs.map +0 -1
  1267. package/dist/entry-locks-DJAqVweV.mjs +0 -167
  1268. package/dist/entry-locks-DJAqVweV.mjs.map +0 -1
  1269. package/dist/env-types-4bkF6Bqg.mjs +0 -38
  1270. package/dist/env-types-4bkF6Bqg.mjs.map +0 -1
  1271. package/dist/error-DxgQdaZ_.mjs +0 -90
  1272. package/dist/error-DxgQdaZ_.mjs.map +0 -1
  1273. package/dist/errors-CjtE5aWF.mjs +0 -120
  1274. package/dist/errors-CjtE5aWF.mjs.map +0 -1
  1275. package/dist/errors-hskQ0C8G.mjs +0 -479
  1276. package/dist/errors-hskQ0C8G.mjs.map +0 -1
  1277. package/dist/escape-ESFhYzwG.mjs +0 -9
  1278. package/dist/escape-ESFhYzwG.mjs.map +0 -1
  1279. package/dist/fence-vc3aHgRA.mjs +0 -162
  1280. package/dist/fence-vc3aHgRA.mjs.map +0 -1
  1281. package/dist/field-defs-cache-zoow36nz.mjs +0 -77
  1282. package/dist/field-defs-cache-zoow36nz.mjs.map +0 -1
  1283. package/dist/field-map-JD1wG0Tq.mjs +0 -83
  1284. package/dist/field-map-JD1wG0Tq.mjs.map +0 -1
  1285. package/dist/focal-point-JX8kcOTQ.mjs +0 -23
  1286. package/dist/focal-point-JX8kcOTQ.mjs.map +0 -1
  1287. package/dist/fts-manager-WJCN8uU6.mjs +0 -443
  1288. package/dist/fts-manager-WJCN8uU6.mjs.map +0 -1
  1289. package/dist/gc-CsGZiKdH.mjs +0 -75
  1290. package/dist/gc-CsGZiKdH.mjs.map +0 -1
  1291. package/dist/hash-C4DFoJ7Z.mjs +0 -37
  1292. package/dist/hash-C4DFoJ7Z.mjs.map +0 -1
  1293. package/dist/hook-result-CXjtMk7Q.d.mts +0 -31
  1294. package/dist/hook-result-CXjtMk7Q.d.mts.map +0 -1
  1295. package/dist/hreflang-BAma7iRr.mjs +0 -105
  1296. package/dist/hreflang-BAma7iRr.mjs.map +0 -1
  1297. package/dist/hreflang-BsYo4x_M.d.mts +0 -50
  1298. package/dist/hreflang-BsYo4x_M.d.mts.map +0 -1
  1299. package/dist/http-route-dispatch-C8G7hAK6.mjs +0 -342
  1300. package/dist/http-route-dispatch-C8G7hAK6.mjs.map +0 -1
  1301. package/dist/identity-BwBKM1fH.mjs +0 -35
  1302. package/dist/identity-BwBKM1fH.mjs.map +0 -1
  1303. package/dist/import-DJ3Z2wxE.mjs +0 -2021
  1304. package/dist/import-DJ3Z2wxE.mjs.map +0 -1
  1305. package/dist/index-DYsn97dY.d.mts +0 -623
  1306. package/dist/index-DYsn97dY.d.mts.map +0 -1
  1307. package/dist/install-finalization-DCFnFSHv.mjs +0 -58
  1308. package/dist/install-finalization-DCFnFSHv.mjs.map +0 -1
  1309. package/dist/keys-CGvAndSp.mjs +0 -61
  1310. package/dist/keys-CGvAndSp.mjs.map +0 -1
  1311. package/dist/kinds-DT1W4T4Y.mjs +0 -974
  1312. package/dist/kinds-DT1W4T4Y.mjs.map +0 -1
  1313. package/dist/lifecycle-BzglCSY0.mjs +0 -25
  1314. package/dist/lifecycle-BzglCSY0.mjs.map +0 -1
  1315. package/dist/load-DjUqmf3s.mjs +0 -28
  1316. package/dist/load-DjUqmf3s.mjs.map +0 -1
  1317. package/dist/loader-CetY659y.mjs +0 -1355
  1318. package/dist/loader-CetY659y.mjs.map +0 -1
  1319. package/dist/loops-DkT1zkPH.mjs +0 -205
  1320. package/dist/loops-DkT1zkPH.mjs.map +0 -1
  1321. package/dist/manifest-builder-BOFCd9rX.mjs +0 -189
  1322. package/dist/manifest-builder-BOFCd9rX.mjs.map +0 -1
  1323. package/dist/manifest-schema-BiFBPEsp.mjs +0 -497
  1324. package/dist/manifest-schema-BiFBPEsp.mjs.map +0 -1
  1325. package/dist/marketplace-CUlenvZm.mjs +0 -257
  1326. package/dist/marketplace-CUlenvZm.mjs.map +0 -1
  1327. package/dist/media-CRKsKlfK.mjs +0 -416
  1328. package/dist/media-CRKsKlfK.mjs.map +0 -1
  1329. package/dist/media-C_z7sRuC.mjs +0 -294
  1330. package/dist/media-C_z7sRuC.mjs.map +0 -1
  1331. package/dist/media-IT8hQleU.mjs +0 -373
  1332. package/dist/media-IT8hQleU.mjs.map +0 -1
  1333. package/dist/media-allowlist-Ct6wvnT2.mjs +0 -45
  1334. package/dist/media-allowlist-Ct6wvnT2.mjs.map +0 -1
  1335. package/dist/media-folders-DtMt-vAA.mjs +0 -210
  1336. package/dist/media-folders-DtMt-vAA.mjs.map +0 -1
  1337. package/dist/media-url-BpXLqCmf.mjs +0 -43
  1338. package/dist/media-url-BpXLqCmf.mjs.map +0 -1
  1339. package/dist/media-usage-DEPHZZ9X.mjs +0 -282
  1340. package/dist/media-usage-DEPHZZ9X.mjs.map +0 -1
  1341. package/dist/media-usage-activation-V2Siabtw.mjs +0 -78
  1342. package/dist/media-usage-activation-V2Siabtw.mjs.map +0 -1
  1343. package/dist/media-usage-work-Cv1OE59F.mjs +0 -151
  1344. package/dist/media-usage-work-Cv1OE59F.mjs.map +0 -1
  1345. package/dist/media-usage-work-cgDYGvrt.mjs +0 -1015
  1346. package/dist/media-usage-work-cgDYGvrt.mjs.map +0 -1
  1347. package/dist/menus-CvVYfsuk.mjs +0 -753
  1348. package/dist/menus-CvVYfsuk.mjs.map +0 -1
  1349. package/dist/menus-D1HC8npj.mjs +0 -92
  1350. package/dist/menus-D1HC8npj.mjs.map +0 -1
  1351. package/dist/menus-DL8IPIcm.mjs +0 -3721
  1352. package/dist/menus-DL8IPIcm.mjs.map +0 -1
  1353. package/dist/mime-B5M9R53H.mjs +0 -81
  1354. package/dist/mime-B5M9R53H.mjs.map +0 -1
  1355. package/dist/mode-eieqAWLe.mjs +0 -23
  1356. package/dist/mode-eieqAWLe.mjs.map +0 -1
  1357. package/dist/node-sqlite-compat-VuyzJw1b.mjs +0 -63
  1358. package/dist/node-sqlite-compat-VuyzJw1b.mjs.map +0 -1
  1359. package/dist/normalize-BuWa0lvd.mjs +0 -191
  1360. package/dist/normalize-BuWa0lvd.mjs.map +0 -1
  1361. package/dist/oauth-authorization-B6ZJbMd2.mjs +0 -274
  1362. package/dist/oauth-authorization-B6ZJbMd2.mjs.map +0 -1
  1363. package/dist/oauth-clients-DVjRc9v3.mjs +0 -266
  1364. package/dist/oauth-clients-DVjRc9v3.mjs.map +0 -1
  1365. package/dist/oauth-state-store-CnmYYsVQ.mjs +0 -50
  1366. package/dist/oauth-state-store-CnmYYsVQ.mjs.map +0 -1
  1367. package/dist/oauth-user-lookup-Dz1_R5vT.mjs +0 -26
  1368. package/dist/oauth-user-lookup-Dz1_R5vT.mjs.map +0 -1
  1369. package/dist/object-cache-Bo6DGaC9.mjs +0 -586
  1370. package/dist/object-cache-Bo6DGaC9.mjs.map +0 -1
  1371. package/dist/options-BR9XZl7h.d.mts +0 -81
  1372. package/dist/options-BR9XZl7h.d.mts.map +0 -1
  1373. package/dist/ownership-COPyVysP.mjs +0 -12
  1374. package/dist/ownership-COPyVysP.mjs.map +0 -1
  1375. package/dist/parse-BOGhrwSq.d.mts +0 -174
  1376. package/dist/parse-BOGhrwSq.d.mts.map +0 -1
  1377. package/dist/parse-Cn5aSk1N.mjs +0 -81
  1378. package/dist/parse-Cn5aSk1N.mjs.map +0 -1
  1379. package/dist/passkey-config-mMFRQUCj.mjs +0 -46
  1380. package/dist/passkey-config-mMFRQUCj.mjs.map +0 -1
  1381. package/dist/paths-BmcAdBo9.mjs +0 -77
  1382. package/dist/paths-BmcAdBo9.mjs.map +0 -1
  1383. package/dist/patterns-CMNnYCgf.mjs +0 -159
  1384. package/dist/patterns-CMNnYCgf.mjs.map +0 -1
  1385. package/dist/placeholder-nOep3_Gn.d.mts +0 -306
  1386. package/dist/placeholder-nOep3_Gn.d.mts.map +0 -1
  1387. package/dist/plan-CDY4K8CH.mjs +0 -135
  1388. package/dist/plan-CDY4K8CH.mjs.map +0 -1
  1389. package/dist/plugins-DFBpfbO3.mjs +0 -261
  1390. package/dist/plugins-DFBpfbO3.mjs.map +0 -1
  1391. package/dist/policy-B_2qnHSy.mjs +0 -45
  1392. package/dist/policy-B_2qnHSy.mjs.map +0 -1
  1393. package/dist/portable-text-Dc2YAusw.mjs +0 -307
  1394. package/dist/portable-text-Dc2YAusw.mjs.map +0 -1
  1395. package/dist/preview-BtzikJ9O.mjs +0 -107
  1396. package/dist/preview-BtzikJ9O.mjs.map +0 -1
  1397. package/dist/protocol-M268ox8L.d.mts +0 -61
  1398. package/dist/protocol-M268ox8L.d.mts.map +0 -1
  1399. package/dist/public-submission-BQZavgZU.mjs +0 -251
  1400. package/dist/public-submission-BQZavgZU.mjs.map +0 -1
  1401. package/dist/public-url-uT1Ok2Tu.mjs +0 -101
  1402. package/dist/public-url-uT1Ok2Tu.mjs.map +0 -1
  1403. package/dist/query-BGG3sDEd.mjs +0 -1127
  1404. package/dist/query-BGG3sDEd.mjs.map +0 -1
  1405. package/dist/query-C_CWlifp.mjs +0 -41
  1406. package/dist/query-C_CWlifp.mjs.map +0 -1
  1407. package/dist/range-CXK_kDbI.mjs +0 -51
  1408. package/dist/range-CXK_kDbI.mjs.map +0 -1
  1409. package/dist/rate-limit-Dvamvay-.mjs +0 -127
  1410. package/dist/rate-limit-Dvamvay-.mjs.map +0 -1
  1411. package/dist/receipt-BmQGzquP.mjs +0 -43
  1412. package/dist/receipt-BmQGzquP.mjs.map +0 -1
  1413. package/dist/redirect-B39kTQ_0.mjs +0 -423
  1414. package/dist/redirect-B39kTQ_0.mjs.map +0 -1
  1415. package/dist/redirect-BguJ00Pv.mjs +0 -19
  1416. package/dist/redirect-BguJ00Pv.mjs.map +0 -1
  1417. package/dist/redirects-C8G4BsfP.mjs +0 -446
  1418. package/dist/redirects-C8G4BsfP.mjs.map +0 -1
  1419. package/dist/redirects-DFT7Wr-e.mjs +0 -148
  1420. package/dist/redirects-DFT7Wr-e.mjs.map +0 -1
  1421. package/dist/registry-DeZ27gVi.mjs +0 -8374
  1422. package/dist/registry-DeZ27gVi.mjs.map +0 -1
  1423. package/dist/relations-DBB1bRJW.mjs +0 -776
  1424. package/dist/relations-DBB1bRJW.mjs.map +0 -1
  1425. package/dist/request-cache-C4CIo5ad.mjs +0 -104
  1426. package/dist/request-cache-C4CIo5ad.mjs.map +0 -1
  1427. package/dist/request-meta-BSvkhIBX.mjs +0 -141
  1428. package/dist/request-meta-BSvkhIBX.mjs.map +0 -1
  1429. package/dist/resolve-BxH64HN9.mjs +0 -100
  1430. package/dist/resolve-BxH64HN9.mjs.map +0 -1
  1431. package/dist/resolve-D-kqyKns.mjs +0 -199
  1432. package/dist/resolve-D-kqyKns.mjs.map +0 -1
  1433. package/dist/revision-BWEH2qQB.mjs +0 -368
  1434. package/dist/revision-BWEH2qQB.mjs.map +0 -1
  1435. package/dist/route-wire-CwbWB_6O.mjs +0 -197
  1436. package/dist/route-wire-CwbWB_6O.mjs.map +0 -1
  1437. package/dist/routes-BfIxc7ft.mjs +0 -272
  1438. package/dist/routes-BfIxc7ft.mjs.map +0 -1
  1439. package/dist/runner-DkeafPBA.d.mts +0 -68
  1440. package/dist/runner-DkeafPBA.d.mts.map +0 -1
  1441. package/dist/runner-wqt4BrIW.mjs +0 -6383
  1442. package/dist/runner-wqt4BrIW.mjs.map +0 -1
  1443. package/dist/schema-BXIW-JHi.mjs +0 -815
  1444. package/dist/schema-BXIW-JHi.mjs.map +0 -1
  1445. package/dist/schema-I74JwYte.mjs +0 -13
  1446. package/dist/schema-I74JwYte.mjs.map +0 -1
  1447. package/dist/scopes-RWZ5ft_Z.mjs +0 -34
  1448. package/dist/scopes-RWZ5ft_Z.mjs.map +0 -1
  1449. package/dist/search-DxwagyWS.mjs +0 -450
  1450. package/dist/search-DxwagyWS.mjs.map +0 -1
  1451. package/dist/sections-Ccq9ZgyD.mjs +0 -346
  1452. package/dist/sections-Ccq9ZgyD.mjs.map +0 -1
  1453. package/dist/seo-CCnfPWAQ.mjs +0 -133
  1454. package/dist/seo-CCnfPWAQ.mjs.map +0 -1
  1455. package/dist/seo-QCtJ1jjV.mjs +0 -188
  1456. package/dist/seo-QCtJ1jjV.mjs.map +0 -1
  1457. package/dist/service-DX84s2rw.mjs +0 -150
  1458. package/dist/service-DX84s2rw.mjs.map +0 -1
  1459. package/dist/session-user-1dtJc2zv.mjs +0 -61
  1460. package/dist/session-user-1dtJc2zv.mjs.map +0 -1
  1461. package/dist/settings-B1jOxAIl.mjs +0 -443
  1462. package/dist/settings-B1jOxAIl.mjs.map +0 -1
  1463. package/dist/settings-Bc1IBl1t.mjs +0 -66
  1464. package/dist/settings-Bc1IBl1t.mjs.map +0 -1
  1465. package/dist/settings-GaZ5sVgg.mjs +0 -73
  1466. package/dist/settings-GaZ5sVgg.mjs.map +0 -1
  1467. package/dist/setup-complete-DidMAWJS.mjs +0 -65
  1468. package/dist/setup-complete-DidMAWJS.mjs.map +0 -1
  1469. package/dist/setup-nonce-DKl4S4c6.mjs +0 -25
  1470. package/dist/setup-nonce-DKl4S4c6.mjs.map +0 -1
  1471. package/dist/site-domain-CbI51Pc2.mjs +0 -113
  1472. package/dist/site-domain-CbI51Pc2.mjs.map +0 -1
  1473. package/dist/site-settings-CDdT4mVm.mjs +0 -50
  1474. package/dist/site-settings-CDdT4mVm.mjs.map +0 -1
  1475. package/dist/site-url-CrDZaAvo.mjs +0 -45
  1476. package/dist/site-url-CrDZaAvo.mjs.map +0 -1
  1477. package/dist/sitemap-name-W3BTor6X.mjs +0 -26
  1478. package/dist/sitemap-name-W3BTor6X.mjs.map +0 -1
  1479. package/dist/slug-BJhHKoOH.mjs +0 -16
  1480. package/dist/slug-BJhHKoOH.mjs.map +0 -1
  1481. package/dist/slugify-bu2-jKia.mjs +0 -22
  1482. package/dist/slugify-bu2-jKia.mjs.map +0 -1
  1483. package/dist/snapshot-BuI_2uDe.mjs +0 -414
  1484. package/dist/snapshot-BuI_2uDe.mjs.map +0 -1
  1485. package/dist/ssrf-LM_0wpGA.mjs +0 -406
  1486. package/dist/ssrf-LM_0wpGA.mjs.map +0 -1
  1487. package/dist/stage-DhzZuYaT.mjs +0 -662
  1488. package/dist/stage-DhzZuYaT.mjs.map +0 -1
  1489. package/dist/staged-DboEaWsV.mjs +0 -686
  1490. package/dist/staged-DboEaWsV.mjs.map +0 -1
  1491. package/dist/state-DCXDzjHq.mjs +0 -178
  1492. package/dist/state-DCXDzjHq.mjs.map +0 -1
  1493. package/dist/status-Dl85BK39.mjs +0 -30
  1494. package/dist/status-Dl85BK39.mjs.map +0 -1
  1495. package/dist/storage-query-BOBmeDMD.d.mts +0 -1615
  1496. package/dist/storage-query-BOBmeDMD.d.mts.map +0 -1
  1497. package/dist/tar-K40edFMt.mjs +0 -449
  1498. package/dist/tar-K40edFMt.mjs.map +0 -1
  1499. package/dist/target-BOighEY1.mjs +0 -27
  1500. package/dist/target-BOighEY1.mjs.map +0 -1
  1501. package/dist/taxonomies-DQSywBvX.mjs +0 -697
  1502. package/dist/taxonomies-DQSywBvX.mjs.map +0 -1
  1503. package/dist/taxonomies-Dj5eaobC.mjs +0 -939
  1504. package/dist/taxonomies-Dj5eaobC.mjs.map +0 -1
  1505. package/dist/taxonomy-QrNmTfIZ.mjs +0 -550
  1506. package/dist/taxonomy-QrNmTfIZ.mjs.map +0 -1
  1507. package/dist/tokens-j5L0as2H.mjs +0 -171
  1508. package/dist/tokens-j5L0as2H.mjs.map +0 -1
  1509. package/dist/transaction-BVYIo_yu.mjs +0 -29
  1510. package/dist/transaction-BVYIo_yu.mjs.map +0 -1
  1511. package/dist/transfer-CYEw8Tu4.mjs +0 -8873
  1512. package/dist/transfer-CYEw8Tu4.mjs.map +0 -1
  1513. package/dist/transfer-DDX10hkD.mjs +0 -166
  1514. package/dist/transfer-DDX10hkD.mjs.map +0 -1
  1515. package/dist/transfer-download-BAqq6GJv.mjs +0 -33
  1516. package/dist/transfer-download-BAqq6GJv.mjs.map +0 -1
  1517. package/dist/transformations-De44wqV_.mjs +0 -196
  1518. package/dist/transformations-De44wqV_.mjs.map +0 -1
  1519. package/dist/transport-1QjUhCRO.d.mts +0 -42
  1520. package/dist/transport-1QjUhCRO.d.mts.map +0 -1
  1521. package/dist/transport-Ds5pVX7p.mjs +0 -136
  1522. package/dist/transport-Ds5pVX7p.mjs.map +0 -1
  1523. package/dist/trusted-proxy-d4Tk6biT.mjs +0 -51
  1524. package/dist/trusted-proxy-d4Tk6biT.mjs.map +0 -1
  1525. package/dist/turnstile-DaFLtyrs.mjs +0 -58
  1526. package/dist/turnstile-DaFLtyrs.mjs.map +0 -1
  1527. package/dist/types-B4-1P2DK.d.mts +0 -227
  1528. package/dist/types-B4-1P2DK.d.mts.map +0 -1
  1529. package/dist/types-BGmQ0uXs.mjs +0 -201
  1530. package/dist/types-BGmQ0uXs.mjs.map +0 -1
  1531. package/dist/types-BKXA0f-c.mjs +0 -16
  1532. package/dist/types-BKXA0f-c.mjs.map +0 -1
  1533. package/dist/types-BiHcpUoO.d.mts +0 -374
  1534. package/dist/types-BiHcpUoO.d.mts.map +0 -1
  1535. package/dist/types-BihhvkyN.d.mts +0 -85
  1536. package/dist/types-BihhvkyN.d.mts.map +0 -1
  1537. package/dist/types-Bq9Wohd7.d.mts +0 -363
  1538. package/dist/types-Bq9Wohd7.d.mts.map +0 -1
  1539. package/dist/types-C-Xp0CcN.mjs +0 -103
  1540. package/dist/types-C-Xp0CcN.mjs.map +0 -1
  1541. package/dist/types-C4P7F1Vq.d.mts +0 -1741
  1542. package/dist/types-C4P7F1Vq.d.mts.map +0 -1
  1543. package/dist/types-CGaqwHw4.mjs +0 -37
  1544. package/dist/types-CGaqwHw4.mjs.map +0 -1
  1545. package/dist/types-Cj0_yZkn.mjs +0 -18
  1546. package/dist/types-Cj0_yZkn.mjs.map +0 -1
  1547. package/dist/types-D4ECCE4X.mjs +0 -77
  1548. package/dist/types-D4ECCE4X.mjs.map +0 -1
  1549. package/dist/types-DcRJp0vS.d.mts +0 -125
  1550. package/dist/types-DcRJp0vS.d.mts.map +0 -1
  1551. package/dist/types-Ff85fTzU.d.mts +0 -289
  1552. package/dist/types-Ff85fTzU.d.mts.map +0 -1
  1553. package/dist/types-UKr5Sf4y.d.mts +0 -916
  1554. package/dist/types-UKr5Sf4y.d.mts.map +0 -1
  1555. package/dist/types-YpN8hZW7.d.mts +0 -204
  1556. package/dist/types-YpN8hZW7.d.mts.map +0 -1
  1557. package/dist/update-check-DrlsK-tt.mjs +0 -161
  1558. package/dist/update-check-DrlsK-tt.mjs.map +0 -1
  1559. package/dist/upload-attempts-D8CPPvRU.mjs +0 -32
  1560. package/dist/upload-attempts-D8CPPvRU.mjs.map +0 -1
  1561. package/dist/url-Dn3IStq8.mjs +0 -104
  1562. package/dist/url-Dn3IStq8.mjs.map +0 -1
  1563. package/dist/url-pattern-Di4Nn3vP.mjs +0 -41
  1564. package/dist/url-pattern-Di4Nn3vP.mjs.map +0 -1
  1565. package/dist/user-B-ZdGjhI.mjs +0 -171
  1566. package/dist/user-B-ZdGjhI.mjs.map +0 -1
  1567. package/dist/utils-D7wL3r6-.mjs +0 -437
  1568. package/dist/utils-D7wL3r6-.mjs.map +0 -1
  1569. package/dist/validate-BSZbSUDk.mjs +0 -524
  1570. package/dist/validate-BSZbSUDk.mjs.map +0 -1
  1571. package/dist/validate-Dfv0DpZi.d.mts +0 -468
  1572. package/dist/validate-Dfv0DpZi.d.mts.map +0 -1
  1573. package/dist/validation-DRyC_Vm5.mjs +0 -219
  1574. package/dist/validation-DRyC_Vm5.mjs.map +0 -1
  1575. package/dist/version-C4kz0PcO.mjs +0 -7
  1576. package/dist/version-C4kz0PcO.mjs.map +0 -1
  1577. package/dist/version-jhs2BRtl.mjs +0 -9
  1578. package/dist/version-jhs2BRtl.mjs.map +0 -1
  1579. package/dist/video-DReZ48Un.mjs +0 -54
  1580. package/dist/video-DReZ48Un.mjs.map +0 -1
  1581. package/dist/virtual-modules-D0e6VbEv.mjs +0 -516
  1582. package/dist/virtual-modules-D0e6VbEv.mjs.map +0 -1
  1583. package/dist/widgets-BkcMzKct.mjs +0 -121
  1584. package/dist/widgets-BkcMzKct.mjs.map +0 -1
  1585. package/dist/wxr-taxonomies-BxI0CbTg.mjs +0 -453
  1586. package/dist/wxr-taxonomies-BxI0CbTg.mjs.map +0 -1
  1587. package/dist/wxr-taxonomies-Dad33GJi.d.mts +0 -34
  1588. package/dist/wxr-taxonomies-Dad33GJi.d.mts.map +0 -1
  1589. package/dist/zod-generator-BQilAboC.mjs +0 -424
  1590. package/dist/zod-generator-BQilAboC.mjs.map +0 -1
  1591. /package/dist/{api-tokens-D2zgAIEt.mjs → api-tokens-C7l0GUAF.mjs} +0 -0
  1592. /package/dist/{ssrf-BvNItdxk.mjs → ssrf-BBXcxG-f.mjs} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"portable-text-Dc2YAusw.mjs","names":[],"sources":["../src/client/portable-text.ts"],"sourcesContent":["/**\n * Portable Text <-> Markdown conversion layer.\n *\n * Three tiers of block handling:\n * Tier 1: Standard PT blocks <-> standard Markdown (headings, paragraphs, lists, etc.)\n * Tier 2: EmDash custom blocks <-> Markdown directives (future)\n * Tier 3: Unknown blocks <-> opaque HTML comment fences (preserved, not editable)\n */\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\n/** Minimal Portable Text block shape */\nexport interface PortableTextBlock {\n\t_type: string;\n\t_key?: string;\n\tstyle?: string;\n\tlevel?: number;\n\tlistItem?: string;\n\tmarkDefs?: MarkDef[];\n\tchildren?: PortableTextSpan[];\n\t[key: string]: unknown;\n}\n\ninterface PortableTextSpan {\n\t_type: string;\n\t_key?: string;\n\ttext?: string;\n\tmarks?: string[];\n\t[key: string]: unknown;\n}\n\ninterface MarkDef {\n\t_key: string;\n\t_type: string;\n\thref?: string;\n\t[key: string]: unknown;\n}\n\ninterface ParsedInline {\n\tspans: PortableTextSpan[];\n\tmarkDefs: MarkDef[];\n}\n\n// ---------------------------------------------------------------------------\n// PT -> Markdown\n// ---------------------------------------------------------------------------\n\n/**\n * Convert Portable Text blocks to Markdown.\n * Unknown block types are serialized as opaque fences.\n */\nexport function portableTextToMarkdown(blocks: PortableTextBlock[]): string {\n\tconst lines: string[] = [];\n\tlet prevWasList = false;\n\n\tfor (let i = 0; i < blocks.length; i++) {\n\t\tconst block = blocks[i];\n\n\t\tif (block._type === \"block\") {\n\t\t\tconst isList = !!block.listItem;\n\n\t\t\t// Blank line between non-contiguous block types\n\t\t\tif (i > 0 && (!isList || !prevWasList)) {\n\t\t\t\tlines.push(\"\");\n\t\t\t}\n\n\t\t\tlines.push(renderStandardBlock(block));\n\t\t\tprevWasList = isList;\n\t\t} else if (block._type === \"code\") {\n\t\t\tif (i > 0) lines.push(\"\");\n\t\t\tconst lang = (block.language as string) || \"\";\n\t\t\tconst code = (block.code as string) || \"\";\n\t\t\tlines.push(\"```\" + lang);\n\t\t\tlines.push(code);\n\t\t\tlines.push(\"```\");\n\t\t\tprevWasList = false;\n\t\t} else if (block._type === \"image\") {\n\t\t\tif (i > 0) lines.push(\"\");\n\t\t\tconst alt = (block.alt as string) || \"\";\n\t\t\tconst url = (block.asset as { url?: string })?.url || \"\";\n\t\t\tlines.push(`![${alt}](${url})`);\n\t\t\tprevWasList = false;\n\t\t} else {\n\t\t\t// Tier 3: Unknown block -> opaque fence\n\t\t\tif (i > 0) lines.push(\"\");\n\t\t\tlines.push(`<!--ec:block ${JSON.stringify(block)} -->`);\n\t\t\tprevWasList = false;\n\t\t}\n\t}\n\n\treturn lines.join(\"\\n\") + \"\\n\";\n}\n\nfunction renderStandardBlock(block: PortableTextBlock): string {\n\tconst text = renderSpans(block.children ?? [], block.markDefs ?? []);\n\n\t// List items\n\tif (block.listItem) {\n\t\tconst indent = \" \".repeat(Math.max(0, (block.level ?? 1) - 1));\n\t\tconst marker = block.listItem === \"number\" ? \"1.\" : \"-\";\n\t\treturn `${indent}${marker} ${text}`;\n\t}\n\n\t// Headings\n\tif (block.style && block.style.startsWith(\"h\")) {\n\t\tconst level = parseInt(block.style.substring(1), 10);\n\t\tif (level >= 1 && level <= 6) {\n\t\t\treturn `${\"#\".repeat(level)} ${text}`;\n\t\t}\n\t}\n\n\t// Blockquote\n\tif (block.style === \"blockquote\") {\n\t\treturn `> ${text}`;\n\t}\n\n\treturn text;\n}\n\nfunction renderSpans(spans: PortableTextSpan[], markDefs: MarkDef[]): string {\n\tlet result = \"\";\n\n\tfor (const span of spans) {\n\t\tif (span._type !== \"span\") continue;\n\n\t\tlet text = span.text ?? \"\";\n\t\tconst marks = span.marks ?? [];\n\n\t\tfor (const mark of marks) {\n\t\t\tconst def = markDefs.find((d) => d._key === mark);\n\t\t\tif (def) {\n\t\t\t\tif (def._type === \"link\") {\n\t\t\t\t\ttext = `[${text}](${def.href ?? \"\"})`;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tswitch (mark) {\n\t\t\t\t\tcase \"strong\":\n\t\t\t\t\t\ttext = `**${text}**`;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"em\":\n\t\t\t\t\t\ttext = `_${text}_`;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"code\":\n\t\t\t\t\t\ttext = `\\`${text}\\``;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"strike-through\":\n\t\t\t\t\tcase \"strikethrough\":\n\t\t\t\t\t\ttext = `~~${text}~~`;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tresult += text;\n\t}\n\n\treturn result;\n}\n\n// ---------------------------------------------------------------------------\n// Markdown -> PT\n// ---------------------------------------------------------------------------\n\n// Regex patterns for markdown parsing\nconst OPAQUE_FENCE_PATTERN = /^<!--ec:block (.+) -->$/;\nconst HEADING_PATTERN = /^(#{1,6})\\s+(.+)$/;\nconst UNORDERED_LIST_PATTERN = /^(\\s*)[-*+]\\s+(.+)$/;\nconst ORDERED_LIST_PATTERN = /^(\\s*)\\d+\\.\\s+(.+)$/;\nconst IMAGE_PATTERN = /^!\\[([^\\]]*)\\]\\(([^)]+)\\)$/;\nconst INLINE_MARKDOWN_PATTERN =\n\t/(\\*\\*(.+?)\\*\\*)|(_(.+?)_)|(`(.+?)`)|(\\[(.+?)\\]\\((.+?)\\))|(~~(.+?)~~)/g;\n\n/**\n * Convert Markdown to Portable Text blocks.\n * Opaque fences (<!--ec:block ... -->) are deserialized and spliced back in.\n */\nexport function markdownToPortableText(markdown: string): PortableTextBlock[] {\n\tconst blocks: PortableTextBlock[] = [];\n\tconst lines = markdown.split(\"\\n\");\n\tlet i = 0;\n\n\twhile (i < lines.length) {\n\t\tconst line = lines[i];\n\n\t\t// Opaque fence\n\t\tconst opaqueMatch = line.match(OPAQUE_FENCE_PATTERN);\n\t\tif (opaqueMatch) {\n\t\t\ttry {\n\t\t\t\tblocks.push(JSON.parse(opaqueMatch[1]) as PortableTextBlock);\n\t\t\t} catch {\n\t\t\t\tblocks.push(makeBlock(line));\n\t\t\t}\n\t\t\ti++;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Code fence\n\t\tif (line.startsWith(\"```\")) {\n\t\t\tconst lang = line.slice(3).trim();\n\t\t\tconst codeLines: string[] = [];\n\t\t\ti++;\n\t\t\twhile (i < lines.length && !lines[i].startsWith(\"```\")) {\n\t\t\t\tcodeLines.push(lines[i]);\n\t\t\t\ti++;\n\t\t\t}\n\t\t\tblocks.push({\n\t\t\t\t_type: \"code\",\n\t\t\t\t_key: generateKey(),\n\t\t\t\tlanguage: lang || undefined,\n\t\t\t\tcode: codeLines.join(\"\\n\"),\n\t\t\t});\n\t\t\ti++; // skip closing ```\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Blank line\n\t\tif (line.trim() === \"\") {\n\t\t\ti++;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Heading\n\t\tconst headingMatch = line.match(HEADING_PATTERN);\n\t\tif (headingMatch) {\n\t\t\tblocks.push(makeBlock(headingMatch[2], `h${headingMatch[1].length}`));\n\t\t\ti++;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Blockquote\n\t\tif (line.startsWith(\"> \")) {\n\t\t\tblocks.push(makeBlock(line.slice(2), \"blockquote\"));\n\t\t\ti++;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Unordered list\n\t\tconst ulMatch = line.match(UNORDERED_LIST_PATTERN);\n\t\tif (ulMatch) {\n\t\t\tconst level = Math.floor(ulMatch[1].length / 2) + 1;\n\t\t\tblocks.push(makeListBlock(ulMatch[2], \"bullet\", level));\n\t\t\ti++;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ordered list\n\t\tconst olMatch = line.match(ORDERED_LIST_PATTERN);\n\t\tif (olMatch) {\n\t\t\tconst level = Math.floor(olMatch[1].length / 2) + 1;\n\t\t\tblocks.push(makeListBlock(olMatch[2], \"number\", level));\n\t\t\ti++;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Image\n\t\tconst imgMatch = line.match(IMAGE_PATTERN);\n\t\tif (imgMatch) {\n\t\t\tblocks.push({\n\t\t\t\t_type: \"image\",\n\t\t\t\t_key: generateKey(),\n\t\t\t\talt: imgMatch[1],\n\t\t\t\tasset: { url: imgMatch[2] },\n\t\t\t});\n\t\t\ti++;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Paragraph\n\t\tblocks.push(makeBlock(line));\n\t\ti++;\n\t}\n\n\treturn blocks;\n}\n\n// ---------------------------------------------------------------------------\n// Block builders\n// ---------------------------------------------------------------------------\n\nfunction makeBlock(text: string, style: string = \"normal\"): PortableTextBlock {\n\tconst { spans, markDefs } = parseInline(text);\n\treturn { _type: \"block\", _key: generateKey(), style, markDefs, children: spans };\n}\n\nfunction makeListBlock(text: string, listItem: string, level: number): PortableTextBlock {\n\tconst { spans, markDefs } = parseInline(text);\n\treturn {\n\t\t_type: \"block\",\n\t\t_key: generateKey(),\n\t\tstyle: \"normal\",\n\t\tlistItem,\n\t\tlevel,\n\t\tmarkDefs,\n\t\tchildren: spans,\n\t};\n}\n\n/**\n * Parse inline markdown (bold, italic, code, links, strikethrough) into PT spans + markDefs.\n */\nfunction parseInline(text: string): ParsedInline {\n\tconst spans: PortableTextSpan[] = [];\n\tconst markDefs: MarkDef[] = [];\n\tconst regex = INLINE_MARKDOWN_PATTERN;\n\n\tlet lastIndex = 0;\n\tlet match: RegExpExecArray | null;\n\n\twhile ((match = regex.exec(text)) !== null) {\n\t\tif (match.index > lastIndex) {\n\t\t\tspans.push({\n\t\t\t\t_type: \"span\",\n\t\t\t\t_key: generateKey(),\n\t\t\t\ttext: text.slice(lastIndex, match.index),\n\t\t\t\tmarks: [],\n\t\t\t});\n\t\t}\n\n\t\tif (match[2] != null) {\n\t\t\tspans.push({ _type: \"span\", _key: generateKey(), text: match[2], marks: [\"strong\"] });\n\t\t} else if (match[4] != null) {\n\t\t\tspans.push({ _type: \"span\", _key: generateKey(), text: match[4], marks: [\"em\"] });\n\t\t} else if (match[6] != null) {\n\t\t\tspans.push({ _type: \"span\", _key: generateKey(), text: match[6], marks: [\"code\"] });\n\t\t} else if (match[8] != null && match[9] != null) {\n\t\t\tconst key = generateKey();\n\t\t\tmarkDefs.push({ _key: key, _type: \"link\", href: match[9] });\n\t\t\tspans.push({ _type: \"span\", _key: generateKey(), text: match[8], marks: [key] });\n\t\t} else if (match[11] != null) {\n\t\t\tspans.push({\n\t\t\t\t_type: \"span\",\n\t\t\t\t_key: generateKey(),\n\t\t\t\ttext: match[11],\n\t\t\t\tmarks: [\"strike-through\"],\n\t\t\t});\n\t\t}\n\n\t\tlastIndex = match.index + match[0].length;\n\t}\n\n\tif (lastIndex < text.length) {\n\t\tspans.push({ _type: \"span\", _key: generateKey(), text: text.slice(lastIndex), marks: [] });\n\t}\n\n\tif (spans.length === 0) {\n\t\tspans.push({ _type: \"span\", _key: generateKey(), text, marks: [] });\n\t}\n\n\treturn { spans, markDefs };\n}\n\n// ---------------------------------------------------------------------------\n// Key generation\n// ---------------------------------------------------------------------------\n\nlet keyCounter = 0;\n\nfunction generateKey(): string {\n\treturn `k${(keyCounter++).toString(36)}`;\n}\n\n/** Reset key counter (useful for testing) */\nexport function resetKeyCounter(): void {\n\tkeyCounter = 0;\n}\n\n// ---------------------------------------------------------------------------\n// Schema-aware conversion helpers\n// ---------------------------------------------------------------------------\n\nexport interface FieldSchema {\n\tslug: string;\n\ttype: string;\n\tblockTypes?: Array<{\n\t\tslug: string;\n\t\tcurrentVersion: number;\n\t\tversions: Array<{\n\t\t\tversion: number;\n\t\t\tfields: Array<{ slug: string; type: string }>;\n\t\t}>;\n\t}>;\n}\n\nfunction convertNestedBlockPortableText(\n\tvalue: unknown,\n\tfield: FieldSchema,\n\tdirection: \"read\" | \"write\",\n): unknown {\n\tif (!Array.isArray(value)) return value;\n\treturn value.map((block) => {\n\t\tif (!block || typeof block !== \"object\" || Array.isArray(block)) return block;\n\t\tconst record = { ...block };\n\t\tconst type = typeof record._type === \"string\" ? record._type : undefined;\n\t\tconst version = typeof record._version === \"number\" ? record._version : undefined;\n\t\tconst blockType = field.blockTypes?.find((candidate) => candidate.slug === type);\n\t\tconst definition = blockType?.versions.find(\n\t\t\t(candidate) => candidate.version === (version ?? blockType.currentVersion),\n\t\t);\n\t\tif (!definition) return block;\n\t\tfor (const nestedField of definition.fields) {\n\t\t\tif (nestedField.type !== \"portableText\") continue;\n\t\t\tconst nestedValue = record[nestedField.slug];\n\t\t\tif (direction === \"read\" && Array.isArray(nestedValue)) {\n\t\t\t\trecord[nestedField.slug] = portableTextToMarkdown(nestedValue as PortableTextBlock[]);\n\t\t\t} else if (direction === \"write\" && typeof nestedValue === \"string\") {\n\t\t\t\trecord[nestedField.slug] = markdownToPortableText(nestedValue);\n\t\t\t}\n\t\t}\n\t\treturn record;\n\t});\n}\n\n/**\n * Convert content data for reading: PT fields -> markdown strings.\n * Only converts fields with type \"portableText\" that contain arrays.\n */\nexport function convertDataForRead(\n\tdata: Record<string, unknown>,\n\tfields: FieldSchema[],\n\traw: boolean = false,\n): Record<string, unknown> {\n\tif (raw) return data;\n\n\tconst result = { ...data };\n\tfor (const field of fields) {\n\t\tif (field.type === \"portableText\" && Array.isArray(result[field.slug])) {\n\t\t\tresult[field.slug] = portableTextToMarkdown(result[field.slug] as PortableTextBlock[]);\n\t\t} else if (field.type === \"blocks\") {\n\t\t\tresult[field.slug] = convertNestedBlockPortableText(result[field.slug], field, \"read\");\n\t\t}\n\t}\n\treturn result;\n}\n\n/**\n * Convert content data for writing: markdown strings -> PT arrays.\n * Only converts fields with type \"portableText\" that contain strings.\n */\nexport function convertDataForWrite(\n\tdata: Record<string, unknown>,\n\tfields: FieldSchema[],\n): Record<string, unknown> {\n\tconst result = { ...data };\n\tfor (const field of fields) {\n\t\tif (field.type === \"portableText\" && typeof result[field.slug] === \"string\") {\n\t\t\tresult[field.slug] = markdownToPortableText(result[field.slug] as string);\n\t\t} else if (field.type === \"blocks\") {\n\t\t\tresult[field.slug] = convertNestedBlockPortableText(result[field.slug], field, \"write\");\n\t\t}\n\t}\n\treturn result;\n}\n"],"mappings":"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"}
@@ -1,107 +0,0 @@
1
- import { t as generatePreviewToken } from "./tokens-j5L0as2H.mjs";
2
-
3
- //#region src/preview/urls.ts
4
- /**
5
- * Preview URL generation
6
- *
7
- * Creates preview URLs that include a signed token for accessing draft content.
8
- */
9
- const REPEATED_SLASHES = /\/{2,}/g;
10
- /**
11
- * Generate a preview URL for content
12
- *
13
- * The URL includes a `_preview` query parameter with a signed token.
14
- *
15
- * @example
16
- * ```ts
17
- * const url = await getPreviewUrl({
18
- * collection: "posts",
19
- * id: "hello-world",
20
- * secret: process.env.PREVIEW_SECRET!,
21
- * });
22
- * // Returns: /posts/hello-world?_preview=eyJj...
23
- *
24
- * // With base URL:
25
- * const fullUrl = await getPreviewUrl({
26
- * collection: "posts",
27
- * id: "hello-world",
28
- * secret: process.env.PREVIEW_SECRET!,
29
- * baseUrl: "https://example.com",
30
- * });
31
- * // Returns: https://example.com/posts/hello-world?_preview=eyJj...
32
- *
33
- * // Custom path pattern:
34
- * const customUrl = await getPreviewUrl({
35
- * collection: "posts",
36
- * id: "hello-world",
37
- * secret: process.env.PREVIEW_SECRET!,
38
- * pathPattern: "/blog/{id}",
39
- * });
40
- * // Returns: /blog/hello-world?_preview=eyJj...
41
- * ```
42
- */
43
- async function getPreviewUrl(options) {
44
- const { collection, id, secret, expiresIn = "1h", baseUrl, pathPattern = "/{collection}/{id}", locale = "" } = options;
45
- const token = await generatePreviewToken({
46
- contentId: `${collection}:${id}`,
47
- expiresIn,
48
- secret
49
- });
50
- let path = pathPattern.replace("{collection}", collection).replace("{id}", id).replace("{locale}", locale);
51
- path = path.replace(REPEATED_SLASHES, "/");
52
- if (path.length > 1 && path.endsWith("/")) path = path.slice(0, -1);
53
- const url = new URL(path, baseUrl || "http://placeholder");
54
- url.searchParams.set("_preview", token);
55
- if (!baseUrl) return `${url.pathname}${url.search}`;
56
- return url.toString();
57
- }
58
- /**
59
- * Build a preview URL from a token (when you already have the token)
60
- *
61
- * @example
62
- * ```ts
63
- * const url = buildPreviewUrl({
64
- * path: "/posts/hello-world",
65
- * token: existingToken,
66
- * });
67
- * ```
68
- */
69
- function buildPreviewUrl(options) {
70
- const { path, token, baseUrl } = options;
71
- const url = new URL(path, baseUrl || "http://placeholder");
72
- url.searchParams.set("_preview", token);
73
- if (!baseUrl) return `${url.pathname}${url.search}`;
74
- return url.toString();
75
- }
76
-
77
- //#endregion
78
- //#region src/preview/helpers.ts
79
- /**
80
- * Preview helpers for Astro pages
81
- */
82
- /**
83
- * Check if a request is a preview request
84
- *
85
- * @example
86
- * ```ts
87
- * const isPreview = isPreviewRequest(Astro.url);
88
- * ```
89
- */
90
- function isPreviewRequest(url) {
91
- return url.searchParams.has("_preview");
92
- }
93
- /**
94
- * Get the preview token from a URL
95
- *
96
- * @example
97
- * ```ts
98
- * const token = getPreviewToken(Astro.url);
99
- * ```
100
- */
101
- function getPreviewToken(url) {
102
- return url.searchParams.get("_preview");
103
- }
104
-
105
- //#endregion
106
- export { getPreviewUrl as i, isPreviewRequest as n, buildPreviewUrl as r, getPreviewToken as t };
107
- //# sourceMappingURL=preview-BtzikJ9O.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"preview-BtzikJ9O.mjs","names":[],"sources":["../src/preview/urls.ts","../src/preview/helpers.ts"],"sourcesContent":["/**\n * Preview URL generation\n *\n * Creates preview URLs that include a signed token for accessing draft content.\n */\n\nimport { generatePreviewToken } from \"./tokens.js\";\n\nconst REPEATED_SLASHES = /\\/{2,}/g;\n\n/**\n * Options for generating a preview URL\n */\nexport interface GetPreviewUrlOptions {\n\t/** Collection slug (e.g., \"posts\") */\n\tcollection: string;\n\t/** Content ID or slug */\n\tid: string;\n\t/** Secret key for signing the token */\n\tsecret: string;\n\t/** How long the preview URL is valid. Default: \"1h\" */\n\texpiresIn?: string | number;\n\t/** Base URL of the site. If not provided, returns a relative URL. */\n\tbaseUrl?: string;\n\t/**\n\t * Custom path pattern. Supports `{collection}`, `{id}` and `{locale}`\n\t * placeholders. Default: `\"/{collection}/{id}\"`.\n\t */\n\tpathPattern?: string;\n\t/**\n\t * Locale segment substituted for the `{locale}` placeholder in `pathPattern`.\n\t * Pass an empty string to omit the locale prefix (e.g. for the default locale\n\t * when `prefixDefaultLocale` is `false`); adjacent slashes left by an empty\n\t * value are collapsed and any trailing slash is trimmed.\n\t */\n\tlocale?: string;\n}\n\n/**\n * Generate a preview URL for content\n *\n * The URL includes a `_preview` query parameter with a signed token.\n *\n * @example\n * ```ts\n * const url = await getPreviewUrl({\n * collection: \"posts\",\n * id: \"hello-world\",\n * secret: process.env.PREVIEW_SECRET!,\n * });\n * // Returns: /posts/hello-world?_preview=eyJj...\n *\n * // With base URL:\n * const fullUrl = await getPreviewUrl({\n * collection: \"posts\",\n * id: \"hello-world\",\n * secret: process.env.PREVIEW_SECRET!,\n * baseUrl: \"https://example.com\",\n * });\n * // Returns: https://example.com/posts/hello-world?_preview=eyJj...\n *\n * // Custom path pattern:\n * const customUrl = await getPreviewUrl({\n * collection: \"posts\",\n * id: \"hello-world\",\n * secret: process.env.PREVIEW_SECRET!,\n * pathPattern: \"/blog/{id}\",\n * });\n * // Returns: /blog/hello-world?_preview=eyJj...\n * ```\n */\nexport async function getPreviewUrl(options: GetPreviewUrlOptions): Promise<string> {\n\tconst {\n\t\tcollection,\n\t\tid,\n\t\tsecret,\n\t\texpiresIn = \"1h\",\n\t\tbaseUrl,\n\t\tpathPattern = \"/{collection}/{id}\",\n\t\tlocale = \"\",\n\t} = options;\n\n\t// Generate the signed token\n\tconst token = await generatePreviewToken({\n\t\tcontentId: `${collection}:${id}`,\n\t\texpiresIn,\n\t\tsecret,\n\t});\n\n\t// Build the path. `{locale}` may resolve to an empty string (default locale\n\t// without a prefix); collapse the resulting double slashes and trim a\n\t// trailing slash so the URL stays clean.\n\tlet path = pathPattern\n\t\t.replace(\"{collection}\", collection)\n\t\t.replace(\"{id}\", id)\n\t\t.replace(\"{locale}\", locale);\n\tpath = path.replace(REPEATED_SLASHES, \"/\");\n\tif (path.length > 1 && path.endsWith(\"/\")) path = path.slice(0, -1);\n\n\t// Add token as query parameter\n\tconst url = new URL(path, baseUrl || \"http://placeholder\");\n\turl.searchParams.set(\"_preview\", token);\n\n\t// Return relative URL if no baseUrl provided\n\tif (!baseUrl) {\n\t\treturn `${url.pathname}${url.search}`;\n\t}\n\n\treturn url.toString();\n}\n\n/**\n * Build a preview URL from a token (when you already have the token)\n *\n * @example\n * ```ts\n * const url = buildPreviewUrl({\n * path: \"/posts/hello-world\",\n * token: existingToken,\n * });\n * ```\n */\nexport function buildPreviewUrl(options: {\n\tpath: string;\n\ttoken: string;\n\tbaseUrl?: string;\n}): string {\n\tconst { path, token, baseUrl } = options;\n\n\tconst url = new URL(path, baseUrl || \"http://placeholder\");\n\turl.searchParams.set(\"_preview\", token);\n\n\tif (!baseUrl) {\n\t\treturn `${url.pathname}${url.search}`;\n\t}\n\n\treturn url.toString();\n}\n","/**\n * Preview helpers for Astro pages\n */\n\n/**\n * Check if a request is a preview request\n *\n * @example\n * ```ts\n * const isPreview = isPreviewRequest(Astro.url);\n * ```\n */\nexport function isPreviewRequest(url: URL): boolean {\n\treturn url.searchParams.has(\"_preview\");\n}\n\n/**\n * Get the preview token from a URL\n *\n * @example\n * ```ts\n * const token = getPreviewToken(Astro.url);\n * ```\n */\nexport function getPreviewToken(url: URL): string | null {\n\treturn url.searchParams.get(\"_preview\");\n}\n"],"mappings":";;;;;;;;AAQA,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+DzB,eAAsB,cAAc,SAAgD;CACnF,MAAM,EACL,YACA,IACA,QACA,YAAY,MACZ,SACA,cAAc,sBACd,SAAS,OACN;CAGJ,MAAM,QAAQ,MAAM,qBAAqB;EACxC,WAAW,GAAG,WAAW,GAAG;EAC5B;EACA;EACA,CAAC;CAKF,IAAI,OAAO,YACT,QAAQ,gBAAgB,WAAW,CACnC,QAAQ,QAAQ,GAAG,CACnB,QAAQ,YAAY,OAAO;AAC7B,QAAO,KAAK,QAAQ,kBAAkB,IAAI;AAC1C,KAAI,KAAK,SAAS,KAAK,KAAK,SAAS,IAAI,CAAE,QAAO,KAAK,MAAM,GAAG,GAAG;CAGnE,MAAM,MAAM,IAAI,IAAI,MAAM,WAAW,qBAAqB;AAC1D,KAAI,aAAa,IAAI,YAAY,MAAM;AAGvC,KAAI,CAAC,QACJ,QAAO,GAAG,IAAI,WAAW,IAAI;AAG9B,QAAO,IAAI,UAAU;;;;;;;;;;;;;AActB,SAAgB,gBAAgB,SAIrB;CACV,MAAM,EAAE,MAAM,OAAO,YAAY;CAEjC,MAAM,MAAM,IAAI,IAAI,MAAM,WAAW,qBAAqB;AAC1D,KAAI,aAAa,IAAI,YAAY,MAAM;AAEvC,KAAI,CAAC,QACJ,QAAO,GAAG,IAAI,WAAW,IAAI;AAG9B,QAAO,IAAI,UAAU;;;;;;;;;;;;;;;;AC5HtB,SAAgB,iBAAiB,KAAmB;AACnD,QAAO,IAAI,aAAa,IAAI,WAAW;;;;;;;;;;AAWxC,SAAgB,gBAAgB,KAAyB;AACxD,QAAO,IAAI,aAAa,IAAI,WAAW"}
@@ -1,61 +0,0 @@
1
- import { t as I18nConfig } from "./config--wamYxBW.mjs";
2
-
3
- //#region src/migrations/protocol.d.ts
4
- type MigrationAction = "check" | "apply" | "release-lock";
5
- interface MigrationRequest {
6
- action: MigrationAction;
7
- i18n: I18nConfig | null;
8
- artifact: {
9
- emdashVersion: string;
10
- migrationSetFingerprint: string;
11
- };
12
- /** For `release-lock`: the lock id a `check` reported. Another lock is left alone. */
13
- lockId?: string;
14
- }
15
- interface MigrationLockReport {
16
- id: string;
17
- /** ISO 8601 time the lock was taken. */
18
- heldSince: string;
19
- }
20
- interface MigrationTarget {
21
- kind: string;
22
- label: string;
23
- fingerprint: string;
24
- accountId?: string;
25
- environment?: string;
26
- resourceId?: string;
27
- }
28
- interface MigrationReport {
29
- target: MigrationTarget;
30
- knownApplied: string[];
31
- pending: string[];
32
- unknownApplied: string[];
33
- executed: string[];
34
- /** Present on `check` while a migration lock is held. */
35
- lock?: MigrationLockReport;
36
- }
37
- interface MigrationExecutor {
38
- target: MigrationTarget;
39
- execute(request: MigrationRequest): Promise<MigrationReport>;
40
- dispose?(): Promise<void>;
41
- }
42
- interface MigrationTargetOverrides {
43
- database?: string;
44
- databaseUrlEnv?: string;
45
- d1?: string;
46
- accountId?: string;
47
- wranglerConfig?: string;
48
- wranglerEnv?: string;
49
- }
50
- interface MigrationExecutorFactoryContext {
51
- projectRoot: string;
52
- env: Readonly<Record<string, string | undefined>>;
53
- overrides?: Readonly<MigrationTargetOverrides>;
54
- }
55
- type MigrationExecutorFactory<ManifestConfig = unknown> = (manifestConfig: ManifestConfig, context: MigrationExecutorFactoryContext) => MigrationExecutor | Promise<MigrationExecutor>;
56
- interface MigrationExecutorModule<ManifestConfig = unknown> {
57
- createMigrationExecutor: MigrationExecutorFactory<ManifestConfig>;
58
- }
59
- //#endregion
60
- export { MigrationExecutorModule as a, MigrationRequest as c, MigrationExecutorFactoryContext as i, MigrationTarget as l, MigrationExecutor as n, MigrationLockReport as o, MigrationExecutorFactory as r, MigrationReport as s, MigrationAction as t, MigrationTargetOverrides as u };
61
- //# sourceMappingURL=protocol-M268ox8L.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"protocol-M268ox8L.d.mts","names":[],"sources":["../src/migrations/protocol.ts"],"mappings":";;;KAEY,eAAA;AAAA,UAEK,gBAAA;EAChB,MAAA,EAAQ,eAAA;EACR,IAAA,EAAM,UAAA;EACN,QAAA;IACC,aAAA;IACA,uBAAA;EAAA;EAL+B;EAQhC,MAAA;AAAA;AAAA,UAGgB,mBAAA;EAChB,EAAA;EAVA;EAYA,SAAA;AAAA;AAAA,UAGgB,eAAA;EAChB,IAAA;EACA,KAAA;EACA,WAAA;EACA,SAAA;EACA,WAAA;EACA,UAAA;AAAA;AAAA,UAGgB,eAAA;EAChB,MAAA,EAAQ,eAAA;EACR,YAAA;EACA,OAAA;EACA,cAAA;EACA,QAAA;EAbA;EAeA,IAAA,GAAO,mBAAA;AAAA;AAAA,UAGS,iBAAA;EAChB,MAAA,EAAQ,eAAA;EACR,OAAA,CAAQ,OAAA,EAAS,gBAAA,GAAmB,OAAA,CAAQ,eAAA;EAC5C,OAAA,KAAY,OAAA;AAAA;AAAA,UAGI,wBAAA;EAChB,QAAA;EACA,cAAA;EACA,EAAA;EACA,SAAA;EACA,cAAA;EACA,WAAA;AAAA;AAAA,UAGgB,+BAAA;EAChB,WAAA;EACA,GAAA,EAAK,QAAA,CAAS,MAAA;EACd,SAAA,GAAY,QAAA,CAAS,wBAAA;AAAA;AAAA,KAGV,wBAAA,8BACX,cAAA,EAAgB,cAAA,EAChB,OAAA,EAAS,+BAAA,KACL,iBAAA,GAAoB,OAAA,CAAQ,iBAAA;AAAA,UAEhB,uBAAA;EAChB,uBAAA,EAAyB,wBAAA,CAAyB,cAAA;AAAA"}
@@ -1,251 +0,0 @@
1
- import { t as validateIdentifier } from "./validate-DANX1-Qi.mjs";
2
- import { t as after } from "./after-PcEvMY_6.mjs";
3
- import { a as resolveSecretsCached } from "./secrets-Cc_O3Kp-.mjs";
4
- import { t as CommentRepository } from "./comment-CWla6OHV.mjs";
5
- import { n as apiSuccess, r as handleError, t as apiError } from "./error-DxgQdaZ_.mjs";
6
- import { n as parseBody, t as isParseError } from "./parse-Cn5aSk1N.mjs";
7
- import { c as createCommentBody } from "./comments-BzmIKVb2.mjs";
8
- import { t as extractRequestMeta } from "./request-meta-BSvkhIBX.mjs";
9
- import { n as getSiteBaseUrl } from "./site-url-CrDZaAvo.mjs";
10
- import { t as escapeHtml } from "./escape-ESFhYzwG.mjs";
11
- import { s as hashIp } from "./comments-Da_dI2O1.mjs";
12
- import { t as checkRateLimit } from "./rate-limit-Dvamvay-.mjs";
13
- import { n as createComment } from "./service-DX84s2rw.mjs";
14
- import { sql } from "kysely";
15
-
16
- //#region src/comments/notifications.ts
17
- const NOTIFICATION_SOURCE = "emdash-comments";
18
- const MAX_EXCERPT_LENGTH = 500;
19
- const CRLF_RE = /[\r\n]/g;
20
- /**
21
- * Build an email notification for a new comment.
22
- */
23
- function buildCommentNotificationEmail(to, data) {
24
- const title = data.contentTitle || `${data.collection} item`;
25
- const subject = `New comment on "${title}"`.replace(CRLF_RE, " ");
26
- const excerpt = data.commentBody.length > MAX_EXCERPT_LENGTH ? data.commentBody.slice(0, MAX_EXCERPT_LENGTH) + "..." : data.commentBody;
27
- const adminUrl = `${data.adminBaseUrl}/admin/comments`;
28
- return {
29
- to,
30
- subject,
31
- text: [
32
- `${data.commentAuthorName} commented on "${title}":`,
33
- "",
34
- excerpt,
35
- "",
36
- `View in admin: ${adminUrl}`
37
- ].join("\n"),
38
- html: [
39
- `<p><strong>${escapeHtml(data.commentAuthorName)}</strong> commented on &ldquo;${escapeHtml(title)}&rdquo;:</p>`,
40
- `<blockquote style="border-left:3px solid #ccc;padding-left:12px;margin:12px 0;color:#555">${escapeHtml(excerpt)}</blockquote>`,
41
- `<p><a href="${escapeHtml(adminUrl)}">View in admin</a></p>`
42
- ].join("\n")
43
- };
44
- }
45
- /**
46
- * Send a comment notification to the content author if all conditions are met:
47
- * 1. Comment status is "approved"
48
- * 2. Content author exists and has an email
49
- * 3. Email provider is configured
50
- * 4. Commenter is not the content author (no self-notifications)
51
- *
52
- * Returns true if the email was sent, false if skipped.
53
- */
54
- async function sendCommentNotification(params) {
55
- const { email, comment, contentAuthor, adminBaseUrl } = params;
56
- if (comment.status !== "approved") return false;
57
- if (!contentAuthor?.email) return false;
58
- if (!email.isAvailable()) return false;
59
- if (comment.authorEmail.toLowerCase() === contentAuthor.email.toLowerCase()) return false;
60
- const message = buildCommentNotificationEmail(contentAuthor.email, {
61
- commentAuthorName: comment.authorName,
62
- commentBody: comment.body,
63
- contentTitle: params.contentTitle || "",
64
- collection: comment.collection,
65
- adminBaseUrl
66
- });
67
- await email.send(message, NOTIFICATION_SOURCE);
68
- return true;
69
- }
70
- /**
71
- * Look up a content item's author from the database.
72
- *
73
- * Used by the admin moderation route where content info isn't
74
- * readily available (only the comment record is at hand).
75
- */
76
- async function lookupContentAuthor(db, collection, contentId) {
77
- validateIdentifier(collection, "collection");
78
- const contentRow = await db.selectFrom(`ec_${collection}`).select(["slug", "author_id"]).where("id", "=", contentId).executeTakeFirst();
79
- if (!contentRow) return null;
80
- const typed = contentRow;
81
- let author;
82
- if (typed.author_id) {
83
- const userRow = await db.selectFrom("users").select([
84
- "id",
85
- "name",
86
- "email",
87
- "email_verified"
88
- ]).where("id", "=", typed.author_id).executeTakeFirst();
89
- if (userRow && userRow.email_verified) author = {
90
- id: userRow.id,
91
- email: userRow.email,
92
- name: userRow.name
93
- };
94
- }
95
- return {
96
- slug: typed.slug,
97
- author
98
- };
99
- }
100
-
101
- //#endregion
102
- //#region src/comments/public-submission.ts
103
- function parseCommentModeration(value) {
104
- if (value === "all" || value === "first_time" || value === "none") return value;
105
- return "all";
106
- }
107
- function isModerationDecision(value) {
108
- if (typeof value !== "object" || value === null || !("status" in value)) return false;
109
- if (value.status !== "pending" && value.status !== "approved" && value.status !== "spam") return false;
110
- return !("reason" in value) || value.reason === void 0 || typeof value.reason === "string";
111
- }
112
- async function submitPublicComment(runtime, collection, contentId, request, user) {
113
- try {
114
- const body = await parseBody(request, createCommentBody);
115
- if (isParseError(body)) return body;
116
- const collectionRow = await runtime.db.selectFrom("_emdash_collections").select([
117
- "comments_enabled",
118
- "comments_moderation",
119
- "comments_closed_after_days",
120
- "comments_auto_approve_users"
121
- ]).where("slug", "=", collection).executeTakeFirst();
122
- if (!collectionRow) return apiError("NOT_FOUND", `Collection '${collection}' not found`, 404);
123
- if (!collectionRow.comments_enabled) return apiError("COMMENTS_DISABLED", "Comments are not enabled for this collection", 403);
124
- validateIdentifier(collection, "collection");
125
- const contentRow = (await sql`
126
- SELECT id, slug, author_id, published_at
127
- FROM ${sql.ref(`ec_${collection}`)}
128
- WHERE id = ${contentId}
129
- AND status = 'published'
130
- AND deleted_at IS NULL
131
- `.execute(runtime.db)).rows[0];
132
- if (!contentRow) return apiError("NOT_FOUND", "Content not found", 404);
133
- if (collectionRow.comments_closed_after_days > 0) {
134
- const publishedAt = contentRow.published_at;
135
- if (publishedAt) {
136
- const closedDate = new Date(publishedAt);
137
- closedDate.setDate(closedDate.getDate() + collectionRow.comments_closed_after_days);
138
- if (/* @__PURE__ */ new Date() > closedDate) return apiError("COMMENTS_CLOSED", "Comments are closed for this content", 403);
139
- }
140
- }
141
- if (body.website_url) return apiSuccess({
142
- status: "pending",
143
- message: "Comment submitted for review"
144
- });
145
- const meta = extractRequestMeta(request, runtime.config);
146
- const { getTurnstileSecretKey, verifyTurnstileToken } = await import("./turnstile-DaFLtyrs.mjs");
147
- const turnstileSecretKey = getTurnstileSecretKey();
148
- if (turnstileSecretKey && !await verifyTurnstileToken(body.turnstileToken, turnstileSecretKey, meta.ip)) return apiError("TURNSTILE_FAILED", "CAPTCHA verification failed", 403);
149
- const { ipSalt } = await resolveSecretsCached(runtime.db);
150
- const ipHash = meta.ip ? await hashIp(meta.ip, ipSalt) : "unknown";
151
- if (!(await checkRateLimit(runtime.db, ipHash, "comments/submit", ipHash === "unknown" ? 20 : 5, 600)).allowed) {
152
- const response = apiError("RATE_LIMITED", "Too many comments. Please try again later.", 429);
153
- response.headers.set("Retry-After", "600");
154
- return response;
155
- }
156
- const settings = {
157
- commentsEnabled: true,
158
- commentsModeration: parseCommentModeration(collectionRow.comments_moderation),
159
- commentsClosedAfterDays: collectionRow.comments_closed_after_days,
160
- commentsAutoApproveUsers: collectionRow.comments_auto_approve_users === 1
161
- };
162
- const authorName = user?.name || body.authorName;
163
- const authorEmail = user?.email ?? body.authorEmail;
164
- let resolvedParentId = body.parentId ?? null;
165
- if (body.parentId) {
166
- const parent = await new CommentRepository(runtime.db).findById(body.parentId);
167
- if (!parent) return apiError("VALIDATION_ERROR", "Parent comment not found", 400);
168
- if (parent.collection !== collection || parent.contentId !== contentId) return apiError("VALIDATION_ERROR", "Parent comment belongs to different content", 400);
169
- resolvedParentId = parent.parentId ?? parent.id;
170
- }
171
- let contentAuthor;
172
- if (contentRow.author_id) {
173
- const authorRow = await runtime.db.selectFrom("users").select([
174
- "id",
175
- "name",
176
- "email",
177
- "email_verified"
178
- ]).where("id", "=", contentRow.author_id).executeTakeFirst();
179
- if (authorRow?.email_verified) contentAuthor = {
180
- id: authorRow.id,
181
- name: authorRow.name,
182
- email: authorRow.email
183
- };
184
- }
185
- const result = await createComment(runtime.db, {
186
- collection,
187
- contentId,
188
- parentId: resolvedParentId,
189
- authorName,
190
- authorEmail,
191
- authorUserId: user?.id ?? null,
192
- body: body.body,
193
- ipHash,
194
- userAgent: meta.userAgent
195
- }, settings, {
196
- runBeforeCreate: (event) => runtime.hooks.runCommentBeforeCreate(event),
197
- runModerate: async (event) => {
198
- const result = await runtime.hooks.invokeExclusiveHook("comment:moderate", event);
199
- if (!result) return {
200
- status: "pending",
201
- reason: "No moderator configured"
202
- };
203
- if (result.error) {
204
- console.error(`[comments] Moderation error (${result.pluginId}):`, result.error.message);
205
- return {
206
- status: "pending",
207
- reason: "Moderation error"
208
- };
209
- }
210
- return isModerationDecision(result.result) ? result.result : {
211
- status: "pending",
212
- reason: "Invalid moderation result"
213
- };
214
- },
215
- fireAfterCreate: (event) => {
216
- after(() => runtime.hooks.runCommentAfterCreate(event).catch((error) => console.error("[comments] afterCreate error:", error instanceof Error ? error.message : error)));
217
- },
218
- fireAfterModerate: (event) => {
219
- return runtime.hooks.runCommentAfterModerate(event).catch((error) => console.error("[comments] afterModerate error:", error instanceof Error ? error.message : error));
220
- }
221
- }, {
222
- id: contentRow.id,
223
- collection,
224
- slug: contentRow.slug,
225
- author: contentAuthor
226
- });
227
- if (!result) return apiError("COMMENT_REJECTED", "Comment was rejected", 403);
228
- if (result.comment.status === "approved" && runtime.email && contentAuthor) try {
229
- const adminBaseUrl = await getSiteBaseUrl(runtime.db, request, runtime.config);
230
- await sendCommentNotification({
231
- email: runtime.email,
232
- comment: result.comment,
233
- contentAuthor,
234
- adminBaseUrl
235
- });
236
- } catch (error) {
237
- console.error("[comments] notification error:", error instanceof Error ? error.message : error);
238
- }
239
- return apiSuccess({
240
- id: result.comment.id,
241
- status: result.comment.status,
242
- message: result.comment.status === "approved" ? "Comment published" : "Comment submitted for review"
243
- }, 201);
244
- } catch (error) {
245
- return handleError(error, "Failed to submit comment", "COMMENT_CREATE_ERROR");
246
- }
247
- }
248
-
249
- //#endregion
250
- export { lookupContentAuthor as n, sendCommentNotification as r, submitPublicComment as t };
251
- //# sourceMappingURL=public-submission-BQZavgZU.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"public-submission-BQZavgZU.mjs","names":[],"sources":["../src/comments/notifications.ts","../src/comments/public-submission.ts"],"sourcesContent":["/**\n * Comment Notification Emails\n *\n * Sends email notifications to content authors when comments are\n * approved on their content. Used by:\n * - Public comment POST route (comment:afterCreate, if auto-approved)\n * - Admin moderation route (comment:afterModerate, when approving)\n */\n\nimport type { Kysely } from \"kysely\";\n\nimport { escapeHtml } from \"../api/escape.js\";\nimport type { Database } from \"../database/types.js\";\nimport { validateIdentifier } from \"../database/validate.js\";\nimport type { EmailPipeline } from \"../plugins/email.js\";\nimport type { EmailMessage } from \"../plugins/types.js\";\n\nconst NOTIFICATION_SOURCE = \"emdash-comments\";\nconst MAX_EXCERPT_LENGTH = 500;\nconst CRLF_RE = /[\\r\\n]/g;\n\nexport interface CommentNotificationData {\n\tcommentAuthorName: string;\n\tcommentBody: string;\n\tcontentTitle: string;\n\tcollection: string;\n\tadminBaseUrl: string;\n}\n\n/**\n * Build an email notification for a new comment.\n */\nexport function buildCommentNotificationEmail(\n\tto: string,\n\tdata: CommentNotificationData,\n): EmailMessage {\n\tconst title = data.contentTitle || `${data.collection} item`;\n\tconst subject = `New comment on \"${title}\"`.replace(CRLF_RE, \" \");\n\n\tconst excerpt =\n\t\tdata.commentBody.length > MAX_EXCERPT_LENGTH\n\t\t\t? data.commentBody.slice(0, MAX_EXCERPT_LENGTH) + \"...\"\n\t\t\t: data.commentBody;\n\n\tconst adminUrl = `${data.adminBaseUrl}/admin/comments`;\n\n\tconst text = [\n\t\t`${data.commentAuthorName} commented on \"${title}\":`,\n\t\t\"\",\n\t\texcerpt,\n\t\t\"\",\n\t\t`View in admin: ${adminUrl}`,\n\t].join(\"\\n\");\n\n\tconst html = [\n\t\t`<p><strong>${escapeHtml(data.commentAuthorName)}</strong> commented on &ldquo;${escapeHtml(title)}&rdquo;:</p>`,\n\t\t`<blockquote style=\"border-left:3px solid #ccc;padding-left:12px;margin:12px 0;color:#555\">${escapeHtml(excerpt)}</blockquote>`,\n\t\t`<p><a href=\"${escapeHtml(adminUrl)}\">View in admin</a></p>`,\n\t].join(\"\\n\");\n\n\treturn { to, subject, text, html };\n}\n\n/**\n * Send a comment notification to the content author if all conditions are met:\n * 1. Comment status is \"approved\"\n * 2. Content author exists and has an email\n * 3. Email provider is configured\n * 4. Commenter is not the content author (no self-notifications)\n *\n * Returns true if the email was sent, false if skipped.\n */\nexport async function sendCommentNotification(params: {\n\temail: EmailPipeline;\n\tcomment: {\n\t\tauthorName: string;\n\t\tauthorEmail: string;\n\t\tbody: string;\n\t\tstatus: string;\n\t\tcollection: string;\n\t};\n\tcontentTitle?: string;\n\tcontentAuthor?: { email: string; name: string | null };\n\tadminBaseUrl: string;\n}): Promise<boolean> {\n\tconst { email, comment, contentAuthor, adminBaseUrl } = params;\n\n\tif (comment.status !== \"approved\") return false;\n\tif (!contentAuthor?.email) return false;\n\tif (!email.isAvailable()) return false;\n\tif (comment.authorEmail.toLowerCase() === contentAuthor.email.toLowerCase()) return false;\n\n\tconst message = buildCommentNotificationEmail(contentAuthor.email, {\n\t\tcommentAuthorName: comment.authorName,\n\t\tcommentBody: comment.body,\n\t\tcontentTitle: params.contentTitle || \"\",\n\t\tcollection: comment.collection,\n\t\tadminBaseUrl,\n\t});\n\n\tawait email.send(message, NOTIFICATION_SOURCE);\n\treturn true;\n}\n\n/**\n * Look up a content item's author from the database.\n *\n * Used by the admin moderation route where content info isn't\n * readily available (only the comment record is at hand).\n */\nexport async function lookupContentAuthor(\n\tdb: Kysely<Database>,\n\tcollection: string,\n\tcontentId: string,\n): Promise<{\n\tslug: string;\n\tauthor?: { id: string; email: string; name: string | null };\n} | null> {\n\tvalidateIdentifier(collection, \"collection\");\n\n\tconst contentRow = await db\n\t\t.selectFrom(`ec_${collection}` as never)\n\t\t.select([\"slug\" as never, \"author_id\" as never])\n\t\t.where(\"id\" as never, \"=\", contentId as never)\n\t\t.executeTakeFirst();\n\n\tif (!contentRow) return null;\n\n\tconst typed = contentRow as { slug: string; author_id: string | null };\n\n\tlet author: { id: string; email: string; name: string | null } | undefined;\n\tif (typed.author_id) {\n\t\tconst userRow = await db\n\t\t\t.selectFrom(\"users\")\n\t\t\t.select([\"id\", \"name\", \"email\", \"email_verified\"])\n\t\t\t.where(\"id\", \"=\", typed.author_id)\n\t\t\t.executeTakeFirst();\n\t\tif (userRow && userRow.email_verified) {\n\t\t\tauthor = { id: userRow.id, email: userRow.email, name: userRow.name };\n\t\t}\n\t}\n\n\treturn { slug: typed.slug, author };\n}\n","import { sql, type Kysely } from \"kysely\";\n\nimport { after } from \"../after.js\";\nimport { apiError, apiSuccess, handleError } from \"../api/error.js\";\nimport { hashIp } from \"../api/handlers/comments.js\";\nimport { isParseError, parseBody } from \"../api/parse.js\";\nimport { createCommentBody } from \"../api/schemas/comments.js\";\nimport { getSiteBaseUrl } from \"../api/site-url.js\";\nimport type { EmDashConfig } from \"../astro/integration/runtime.js\";\nimport { checkRateLimit } from \"../auth/rate-limit.js\";\nimport { resolveSecretsCached } from \"../config/secrets.js\";\nimport { CommentRepository } from \"../database/repositories/comment.js\";\nimport type { Database } from \"../database/types.js\";\nimport { validateIdentifier } from \"../database/validate.js\";\nimport type { EmailPipeline } from \"../plugins/email.js\";\nimport type { HookPipeline } from \"../plugins/hooks.js\";\nimport { extractRequestMeta } from \"../plugins/request-meta.js\";\nimport type { CollectionCommentSettings, ModerationDecision, UserInfo } from \"../plugins/types.js\";\nimport { sendCommentNotification } from \"./notifications.js\";\nimport { createComment, type CommentHookRunner } from \"./service.js\";\n\nexport interface PublicCommentSubmissionRuntime {\n\tdb: Kysely<Database>;\n\tconfig: EmDashConfig;\n\temail: EmailPipeline | null;\n\thooks: HookPipeline;\n}\n\ninterface CommentableContentRow {\n\tid: string;\n\tslug: string;\n\tauthor_id: string | null;\n\tpublished_at: string | null;\n}\n\nfunction parseCommentModeration(value: string): CollectionCommentSettings[\"commentsModeration\"] {\n\tif (value === \"all\" || value === \"first_time\" || value === \"none\") return value;\n\treturn \"all\";\n}\n\nfunction isModerationDecision(value: unknown): value is ModerationDecision {\n\tif (typeof value !== \"object\" || value === null || !(\"status\" in value)) return false;\n\tif (value.status !== \"pending\" && value.status !== \"approved\" && value.status !== \"spam\") {\n\t\treturn false;\n\t}\n\treturn !(\"reason\" in value) || value.reason === undefined || typeof value.reason === \"string\";\n}\n\nexport async function submitPublicComment(\n\truntime: PublicCommentSubmissionRuntime,\n\tcollection: string,\n\tcontentId: string,\n\trequest: Request,\n\tuser?: UserInfo,\n): Promise<Response> {\n\ttry {\n\t\tconst body = await parseBody(request, createCommentBody);\n\t\tif (isParseError(body)) return body;\n\n\t\tconst collectionRow = await runtime.db\n\t\t\t.selectFrom(\"_emdash_collections\")\n\t\t\t.select([\n\t\t\t\t\"comments_enabled\",\n\t\t\t\t\"comments_moderation\",\n\t\t\t\t\"comments_closed_after_days\",\n\t\t\t\t\"comments_auto_approve_users\",\n\t\t\t])\n\t\t\t.where(\"slug\", \"=\", collection)\n\t\t\t.executeTakeFirst();\n\n\t\tif (!collectionRow) {\n\t\t\treturn apiError(\"NOT_FOUND\", `Collection '${collection}' not found`, 404);\n\t\t}\n\t\tif (!collectionRow.comments_enabled) {\n\t\t\treturn apiError(\"COMMENTS_DISABLED\", \"Comments are not enabled for this collection\", 403);\n\t\t}\n\n\t\tvalidateIdentifier(collection, \"collection\");\n\t\tconst contentResult = await sql<CommentableContentRow>`\n\t\t\tSELECT id, slug, author_id, published_at\n\t\t\tFROM ${sql.ref(`ec_${collection}`)}\n\t\t\tWHERE id = ${contentId}\n\t\t\tAND status = 'published'\n\t\t\tAND deleted_at IS NULL\n\t\t`.execute(runtime.db);\n\t\tconst contentRow = contentResult.rows[0];\n\n\t\tif (!contentRow) return apiError(\"NOT_FOUND\", \"Content not found\", 404);\n\n\t\tif (collectionRow.comments_closed_after_days > 0) {\n\t\t\tconst publishedAt = contentRow.published_at;\n\t\t\tif (publishedAt) {\n\t\t\t\tconst closedDate = new Date(publishedAt);\n\t\t\t\tclosedDate.setDate(closedDate.getDate() + collectionRow.comments_closed_after_days);\n\t\t\t\tif (new Date() > closedDate) {\n\t\t\t\t\treturn apiError(\"COMMENTS_CLOSED\", \"Comments are closed for this content\", 403);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (body.website_url) {\n\t\t\treturn apiSuccess({ status: \"pending\", message: \"Comment submitted for review\" });\n\t\t}\n\n\t\tconst meta = extractRequestMeta(request, runtime.config);\n\n\t\tconst { getTurnstileSecretKey, verifyTurnstileToken } = await import(\"./turnstile.js\");\n\t\tconst turnstileSecretKey = getTurnstileSecretKey();\n\t\tif (\n\t\t\tturnstileSecretKey &&\n\t\t\t!(await verifyTurnstileToken(body.turnstileToken, turnstileSecretKey, meta.ip))\n\t\t) {\n\t\t\treturn apiError(\"TURNSTILE_FAILED\", \"CAPTCHA verification failed\", 403);\n\t\t}\n\n\t\t// Counted after the CAPTCHA so unverified requests can't use up the\n\t\t// shared bucket for visitors without a trusted IP.\n\t\tconst { ipSalt } = await resolveSecretsCached(runtime.db);\n\t\tconst ipHash = meta.ip ? await hashIp(meta.ip, ipSalt) : \"unknown\";\n\t\tconst rateLimit = await checkRateLimit(\n\t\t\truntime.db,\n\t\t\tipHash,\n\t\t\t\"comments/submit\",\n\t\t\tipHash === \"unknown\" ? 20 : 5,\n\t\t\t600,\n\t\t);\n\t\tif (!rateLimit.allowed) {\n\t\t\tconst response = apiError(\"RATE_LIMITED\", \"Too many comments. Please try again later.\", 429);\n\t\t\tresponse.headers.set(\"Retry-After\", \"600\");\n\t\t\treturn response;\n\t\t}\n\n\t\tconst settings: CollectionCommentSettings = {\n\t\t\tcommentsEnabled: true,\n\t\t\tcommentsModeration: parseCommentModeration(collectionRow.comments_moderation),\n\t\t\tcommentsClosedAfterDays: collectionRow.comments_closed_after_days,\n\t\t\tcommentsAutoApproveUsers: collectionRow.comments_auto_approve_users === 1,\n\t\t};\n\n\t\tconst authorName = user?.name || body.authorName;\n\t\tconst authorEmail = user?.email ?? body.authorEmail;\n\t\tlet resolvedParentId = body.parentId ?? null;\n\t\tif (body.parentId) {\n\t\t\tconst parent = await new CommentRepository(runtime.db).findById(body.parentId);\n\t\t\tif (!parent) return apiError(\"VALIDATION_ERROR\", \"Parent comment not found\", 400);\n\t\t\tif (parent.collection !== collection || parent.contentId !== contentId) {\n\t\t\t\treturn apiError(\"VALIDATION_ERROR\", \"Parent comment belongs to different content\", 400);\n\t\t\t}\n\t\t\tresolvedParentId = parent.parentId ?? parent.id;\n\t\t}\n\n\t\tlet contentAuthor: { id: string; name: string | null; email: string } | undefined;\n\t\tif (contentRow.author_id) {\n\t\t\tconst authorRow = await runtime.db\n\t\t\t\t.selectFrom(\"users\")\n\t\t\t\t.select([\"id\", \"name\", \"email\", \"email_verified\"])\n\t\t\t\t.where(\"id\", \"=\", contentRow.author_id)\n\t\t\t\t.executeTakeFirst();\n\t\t\tif (authorRow?.email_verified) {\n\t\t\t\tcontentAuthor = { id: authorRow.id, name: authorRow.name, email: authorRow.email };\n\t\t\t}\n\t\t}\n\n\t\tconst hookRunner: CommentHookRunner = {\n\t\t\trunBeforeCreate: (event) => runtime.hooks.runCommentBeforeCreate(event),\n\t\t\trunModerate: async (event) => {\n\t\t\t\tconst result = await runtime.hooks.invokeExclusiveHook(\"comment:moderate\", event);\n\t\t\t\tif (!result) return { status: \"pending\", reason: \"No moderator configured\" };\n\t\t\t\tif (result.error) {\n\t\t\t\t\tconsole.error(`[comments] Moderation error (${result.pluginId}):`, result.error.message);\n\t\t\t\t\treturn { status: \"pending\", reason: \"Moderation error\" };\n\t\t\t\t}\n\t\t\t\treturn isModerationDecision(result.result)\n\t\t\t\t\t? result.result\n\t\t\t\t\t: { status: \"pending\", reason: \"Invalid moderation result\" };\n\t\t\t},\n\t\t\tfireAfterCreate: (event) => {\n\t\t\t\t// Deferred through after() so the host's waitUntil keeps the hooks\n\t\t\t\t// alive: on Workers, work left running after the response is sent\n\t\t\t\t// can be cancelled (sandboxed plugins never got past their first\n\t\t\t\t// bridge call).\n\t\t\t\tafter(() =>\n\t\t\t\t\truntime.hooks\n\t\t\t\t\t\t.runCommentAfterCreate(event)\n\t\t\t\t\t\t.catch((error) =>\n\t\t\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t\t\t\"[comments] afterCreate error:\",\n\t\t\t\t\t\t\t\terror instanceof Error ? error.message : error,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t},\n\t\t\tfireAfterModerate: (event) => {\n\t\t\t\treturn runtime.hooks\n\t\t\t\t\t.runCommentAfterModerate(event)\n\t\t\t\t\t.catch((error) =>\n\t\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t\t\"[comments] afterModerate error:\",\n\t\t\t\t\t\t\terror instanceof Error ? error.message : error,\n\t\t\t\t\t\t),\n\t\t\t\t\t);\n\t\t\t},\n\t\t};\n\n\t\tconst result = await createComment(\n\t\t\truntime.db,\n\t\t\t{\n\t\t\t\tcollection,\n\t\t\t\tcontentId,\n\t\t\t\tparentId: resolvedParentId,\n\t\t\t\tauthorName,\n\t\t\t\tauthorEmail,\n\t\t\t\tauthorUserId: user?.id ?? null,\n\t\t\t\tbody: body.body,\n\t\t\t\tipHash,\n\t\t\t\tuserAgent: meta.userAgent,\n\t\t\t},\n\t\t\tsettings,\n\t\t\thookRunner,\n\t\t\t{\n\t\t\t\tid: contentRow.id,\n\t\t\t\tcollection,\n\t\t\t\tslug: contentRow.slug,\n\t\t\t\tauthor: contentAuthor,\n\t\t\t},\n\t\t);\n\n\t\tif (!result) return apiError(\"COMMENT_REJECTED\", \"Comment was rejected\", 403);\n\n\t\tif (result.comment.status === \"approved\" && runtime.email && contentAuthor) {\n\t\t\ttry {\n\t\t\t\tconst adminBaseUrl = await getSiteBaseUrl(runtime.db, request, runtime.config);\n\t\t\t\tawait sendCommentNotification({\n\t\t\t\t\temail: runtime.email,\n\t\t\t\t\tcomment: result.comment,\n\t\t\t\t\tcontentAuthor,\n\t\t\t\t\tadminBaseUrl,\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(\n\t\t\t\t\t\"[comments] notification error:\",\n\t\t\t\t\terror instanceof Error ? error.message : error,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\treturn apiSuccess(\n\t\t\t{\n\t\t\t\tid: result.comment.id,\n\t\t\t\tstatus: result.comment.status,\n\t\t\t\tmessage:\n\t\t\t\t\tresult.comment.status === \"approved\"\n\t\t\t\t\t\t? \"Comment published\"\n\t\t\t\t\t\t: \"Comment submitted for review\",\n\t\t\t},\n\t\t\t201,\n\t\t);\n\t} catch (error) {\n\t\treturn handleError(error, \"Failed to submit comment\", \"COMMENT_CREATE_ERROR\");\n\t}\n}\n"],"mappings":"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"}
@@ -1,101 +0,0 @@
1
- //#region src/api/public-url.ts
2
- /**
3
- * Resolve siteUrl from runtime environment variables.
4
- *
5
- * Uses process.env (not import.meta.env) because Vite statically replaces
6
- * import.meta.env at build time, baking out any env vars not present during
7
- * the build. Container deployments set env vars at runtime, so we must read
8
- * process.env which Vite leaves untouched.
9
- *
10
- * On Cloudflare Workers process.env is empty by default, so the fallback
11
- * chain continues to url.origin — unless the Worker enables the
12
- * `nodejs_compat_populate_process_env` compatibility flag, in which case
13
- * `vars`/secrets (e.g. EMDASH_SITE_URL) are readable here too.
14
- *
15
- * Caches after first call.
16
- */
17
- let _envSiteUrl = null;
18
- function getEnvSiteUrl() {
19
- if (_envSiteUrl !== null) return _envSiteUrl || void 0;
20
- try {
21
- const value = typeof process !== "undefined" && process.env?.EMDASH_SITE_URL || typeof process !== "undefined" && process.env?.SITE_URL || "";
22
- if (value) {
23
- const parsed = new URL(value);
24
- if (parsed.protocol !== "http:" && parsed.protocol !== "https:") {
25
- _envSiteUrl = "";
26
- return;
27
- }
28
- _envSiteUrl = parsed.origin;
29
- } else _envSiteUrl = "";
30
- } catch {
31
- _envSiteUrl = "";
32
- }
33
- return _envSiteUrl || void 0;
34
- }
35
- /**
36
- * Return the public-facing origin for the site.
37
- *
38
- * Resolution order:
39
- * 1. `config.siteUrl` (set in astro.config.mjs, origin-normalized at startup)
40
- * 2. `EMDASH_SITE_URL` or `SITE_URL` env var (resolved at runtime for containers)
41
- * 3. `url.origin` (internal request URL — correct when no proxy)
42
- *
43
- * @param url The request URL (`new URL(request.url)` or `Astro.url`)
44
- * @param config The EmDash config (from `locals.emdash?.config`)
45
- * @returns Origin string, e.g. `"https://mysite.example.com"`
46
- */
47
- function getPublicOrigin(url, config) {
48
- return getConfiguredOrigin(config) || url.origin;
49
- }
50
- /**
51
- * Return the operator-configured public origin, if any.
52
- *
53
- * The first two steps of {@link getPublicOrigin}'s resolution —
54
- * `config.siteUrl`, then the `EMDASH_SITE_URL`/`SITE_URL` env vars — without
55
- * the request-URL fallback. For callers that have a more trustworthy fallback
56
- * than the request (e.g. the stored setup origin used for outbound emails).
57
- */
58
- function getConfiguredOrigin(config) {
59
- return config?.siteUrl || getEnvSiteUrl() || void 0;
60
- }
61
- /**
62
- * Resolve additional accepted passkey origins from runtime environment.
63
- *
64
- * Reads `EMDASH_ALLOWED_ORIGINS` (comma-separated list of origins) for
65
- * multi-origin deployments where the same RP is reachable under several
66
- * hostnames sharing the registrable parent domain (e.g. apex + preview).
67
- *
68
- * Each entry is parsed via `new URL()` and reduced to its `origin`. Unlike
69
- * `getEnvSiteUrl` (which silently falls back to `url.origin` on bad input),
70
- * this throws on any unparseable or non-http(s) entry — `EMDASH_ALLOWED_ORIGINS`
71
- * is an allowlist for passkey verification, so silently dropping a typo would
72
- * surface as "I can't authenticate on this origin" with no diagnostic. Fail
73
- * loud at first read.
74
- *
75
- * Uses `process.env` (Vite leaves it untouched at runtime). Result is cached
76
- * on success.
77
- */
78
- let _envAllowedOrigins = null;
79
- function getEnvAllowedOrigins() {
80
- if (_envAllowedOrigins !== null) return _envAllowedOrigins;
81
- const raw = typeof process !== "undefined" ? process.env?.EMDASH_ALLOWED_ORIGINS || "" : "";
82
- const parsed = [];
83
- for (const entry of raw.split(",")) {
84
- const trimmed = entry.trim();
85
- if (!trimmed) continue;
86
- let u;
87
- try {
88
- u = new URL(trimmed);
89
- } catch (e) {
90
- throw new Error(`EmDash config error in EMDASH_ALLOWED_ORIGINS: invalid URL: "${trimmed}"`, { cause: e });
91
- }
92
- if (u.protocol !== "http:" && u.protocol !== "https:") throw new Error(`EmDash config error in EMDASH_ALLOWED_ORIGINS: origin must be http or https: "${trimmed}" (got ${u.protocol})`);
93
- parsed.push(u.origin);
94
- }
95
- _envAllowedOrigins = parsed;
96
- return parsed;
97
- }
98
-
99
- //#endregion
100
- export { getPublicOrigin as i, getEnvAllowedOrigins as n, getEnvSiteUrl as r, getConfiguredOrigin as t };
101
- //# sourceMappingURL=public-url-uT1Ok2Tu.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"public-url-uT1Ok2Tu.mjs","names":[],"sources":["../src/api/public-url.ts"],"sourcesContent":["/**\n * Public URL helpers for reverse-proxy deployments.\n *\n * Behind a TLS-terminating proxy the internal request URL\n * (`http://localhost:4321`) differs from the browser-facing origin\n * (`https://mysite.example.com`). These pure helpers resolve the\n * correct public origin from config, falling back to the request URL.\n *\n * Workers-safe: no Node.js imports.\n */\n\n/** Minimal config shape — avoids importing the full EmDashConfig type tree. */\nexport interface SiteUrlConfig {\n\tsiteUrl?: string;\n}\n\n/**\n * Resolve siteUrl from runtime environment variables.\n *\n * Uses process.env (not import.meta.env) because Vite statically replaces\n * import.meta.env at build time, baking out any env vars not present during\n * the build. Container deployments set env vars at runtime, so we must read\n * process.env which Vite leaves untouched.\n *\n * On Cloudflare Workers process.env is empty by default, so the fallback\n * chain continues to url.origin — unless the Worker enables the\n * `nodejs_compat_populate_process_env` compatibility flag, in which case\n * `vars`/secrets (e.g. EMDASH_SITE_URL) are readable here too.\n *\n * Caches after first call.\n */\nlet _envSiteUrl: string | undefined | null = null;\n\n/** @internal Reset cached env values — test-only. */\nexport function _resetEnvCache(): void {\n\t_envSiteUrl = null;\n\t_envAllowedOrigins = null;\n}\n\nexport function getEnvSiteUrl(): string | undefined {\n\tif (_envSiteUrl !== null) return _envSiteUrl || undefined;\n\ttry {\n\t\t// process.env is available on Node.js; undefined on Workers\n\t\tconst value =\n\t\t\t(typeof process !== \"undefined\" && process.env?.EMDASH_SITE_URL) ||\n\t\t\t(typeof process !== \"undefined\" && process.env?.SITE_URL) ||\n\t\t\t\"\";\n\t\tif (value) {\n\t\t\tconst parsed = new URL(value);\n\t\t\tif (parsed.protocol !== \"http:\" && parsed.protocol !== \"https:\") {\n\t\t\t\t_envSiteUrl = \"\";\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\t_envSiteUrl = parsed.origin;\n\t\t} else {\n\t\t\t_envSiteUrl = \"\";\n\t\t}\n\t} catch {\n\t\t_envSiteUrl = \"\";\n\t}\n\treturn _envSiteUrl || undefined;\n}\n\n/**\n * Return the public-facing origin for the site.\n *\n * Resolution order:\n * 1. `config.siteUrl` (set in astro.config.mjs, origin-normalized at startup)\n * 2. `EMDASH_SITE_URL` or `SITE_URL` env var (resolved at runtime for containers)\n * 3. `url.origin` (internal request URL — correct when no proxy)\n *\n * @param url The request URL (`new URL(request.url)` or `Astro.url`)\n * @param config The EmDash config (from `locals.emdash?.config`)\n * @returns Origin string, e.g. `\"https://mysite.example.com\"`\n */\nexport function getPublicOrigin(url: URL, config?: SiteUrlConfig): string {\n\treturn getConfiguredOrigin(config) || url.origin;\n}\n\n/**\n * Return the operator-configured public origin, if any.\n *\n * The first two steps of {@link getPublicOrigin}'s resolution —\n * `config.siteUrl`, then the `EMDASH_SITE_URL`/`SITE_URL` env vars — without\n * the request-URL fallback. For callers that have a more trustworthy fallback\n * than the request (e.g. the stored setup origin used for outbound emails).\n */\nexport function getConfiguredOrigin(config?: SiteUrlConfig): string | undefined {\n\treturn config?.siteUrl || getEnvSiteUrl() || undefined;\n}\n\n/**\n * Resolve additional accepted passkey origins from runtime environment.\n *\n * Reads `EMDASH_ALLOWED_ORIGINS` (comma-separated list of origins) for\n * multi-origin deployments where the same RP is reachable under several\n * hostnames sharing the registrable parent domain (e.g. apex + preview).\n *\n * Each entry is parsed via `new URL()` and reduced to its `origin`. Unlike\n * `getEnvSiteUrl` (which silently falls back to `url.origin` on bad input),\n * this throws on any unparseable or non-http(s) entry — `EMDASH_ALLOWED_ORIGINS`\n * is an allowlist for passkey verification, so silently dropping a typo would\n * surface as \"I can't authenticate on this origin\" with no diagnostic. Fail\n * loud at first read.\n *\n * Uses `process.env` (Vite leaves it untouched at runtime). Result is cached\n * on success.\n */\nlet _envAllowedOrigins: string[] | null = null;\n\nexport function getEnvAllowedOrigins(): string[] {\n\tif (_envAllowedOrigins !== null) return _envAllowedOrigins;\n\tconst raw = typeof process !== \"undefined\" ? process.env?.EMDASH_ALLOWED_ORIGINS || \"\" : \"\";\n\tconst parsed: string[] = [];\n\tfor (const entry of raw.split(\",\")) {\n\t\tconst trimmed = entry.trim();\n\t\tif (!trimmed) continue;\n\t\tlet u: URL;\n\t\ttry {\n\t\t\tu = new URL(trimmed);\n\t\t} catch (e) {\n\t\t\tthrow new Error(`EmDash config error in EMDASH_ALLOWED_ORIGINS: invalid URL: \"${trimmed}\"`, {\n\t\t\t\tcause: e,\n\t\t\t});\n\t\t}\n\t\tif (u.protocol !== \"http:\" && u.protocol !== \"https:\") {\n\t\t\tthrow new Error(\n\t\t\t\t`EmDash config error in EMDASH_ALLOWED_ORIGINS: origin must be http or https: \"${trimmed}\" (got ${u.protocol})`,\n\t\t\t);\n\t\t}\n\t\tparsed.push(u.origin);\n\t}\n\t_envAllowedOrigins = parsed;\n\treturn parsed;\n}\n\n/**\n * Build a full public URL by appending a path to the public origin.\n *\n * @param url The request URL\n * @param config The EmDash config\n * @param path Path to append (must start with `/`)\n * @returns Full URL string, e.g. `\"https://mysite.example.com/_emdash/admin/login\"`\n */\nexport function getPublicUrl(url: URL, config: SiteUrlConfig | undefined, path: string): string {\n\treturn `${getPublicOrigin(url, config)}${path}`;\n}\n"],"mappings":";;;;;;;;;;;;;;;;AA+BA,IAAI,cAAyC;AAQ7C,SAAgB,gBAAoC;AACnD,KAAI,gBAAgB,KAAM,QAAO,eAAe;AAChD,KAAI;EAEH,MAAM,QACJ,OAAO,YAAY,eAAe,QAAQ,KAAK,mBAC/C,OAAO,YAAY,eAAe,QAAQ,KAAK,YAChD;AACD,MAAI,OAAO;GACV,MAAM,SAAS,IAAI,IAAI,MAAM;AAC7B,OAAI,OAAO,aAAa,WAAW,OAAO,aAAa,UAAU;AAChE,kBAAc;AACd;;AAED,iBAAc,OAAO;QAErB,eAAc;SAER;AACP,gBAAc;;AAEf,QAAO,eAAe;;;;;;;;;;;;;;AAevB,SAAgB,gBAAgB,KAAU,QAAgC;AACzE,QAAO,oBAAoB,OAAO,IAAI,IAAI;;;;;;;;;;AAW3C,SAAgB,oBAAoB,QAA4C;AAC/E,QAAO,QAAQ,WAAW,eAAe,IAAI;;;;;;;;;;;;;;;;;;;AAoB9C,IAAI,qBAAsC;AAE1C,SAAgB,uBAAiC;AAChD,KAAI,uBAAuB,KAAM,QAAO;CACxC,MAAM,MAAM,OAAO,YAAY,cAAc,QAAQ,KAAK,0BAA0B,KAAK;CACzF,MAAM,SAAmB,EAAE;AAC3B,MAAK,MAAM,SAAS,IAAI,MAAM,IAAI,EAAE;EACnC,MAAM,UAAU,MAAM,MAAM;AAC5B,MAAI,CAAC,QAAS;EACd,IAAI;AACJ,MAAI;AACH,OAAI,IAAI,IAAI,QAAQ;WACZ,GAAG;AACX,SAAM,IAAI,MAAM,gEAAgE,QAAQ,IAAI,EAC3F,OAAO,GACP,CAAC;;AAEH,MAAI,EAAE,aAAa,WAAW,EAAE,aAAa,SAC5C,OAAM,IAAI,MACT,iFAAiF,QAAQ,SAAS,EAAE,SAAS,GAC7G;AAEF,SAAO,KAAK,EAAE,OAAO;;AAEtB,sBAAqB;AACrB,QAAO"}