emdash 0.37.0 → 0.39.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1445) hide show
  1. package/dist/action-token-On1sot_c.mjs +26 -0
  2. package/dist/action-token-On1sot_c.mjs.map +1 -0
  3. package/dist/activation-CaMfdBt1.mjs +382 -0
  4. package/dist/activation-CaMfdBt1.mjs.map +1 -0
  5. package/dist/adapters-Cq10K4_c.d.mts +171 -0
  6. package/dist/adapters-Cq10K4_c.d.mts.map +1 -0
  7. package/dist/after-PcEvMY_6.mjs +96 -0
  8. package/dist/after-PcEvMY_6.mjs.map +1 -0
  9. package/dist/allowed-origins-1Sa-2wZK.mjs +116 -0
  10. package/dist/allowed-origins-1Sa-2wZK.mjs.map +1 -0
  11. package/dist/api/route-utils.d.mts +4 -3
  12. package/dist/api/route-utils.d.mts.map +1 -1
  13. package/dist/api/route-utils.mjs +45 -29
  14. package/dist/api/route-utils.mjs.map +1 -1
  15. package/dist/api/schemas/index.d.mts +2 -2
  16. package/dist/api/schemas/index.mjs +7 -6
  17. package/dist/api-DmjKxPCY.mjs +4831 -0
  18. package/dist/api-DmjKxPCY.mjs.map +1 -0
  19. package/dist/api-tokens-BIXItFKV.mjs +163 -0
  20. package/dist/api-tokens-BIXItFKV.mjs.map +1 -0
  21. package/dist/apply-drpfmqrR.mjs +1005 -0
  22. package/dist/apply-drpfmqrR.mjs.map +1 -0
  23. package/dist/artifact-fetch-COiMhVgk.mjs +813 -0
  24. package/dist/artifact-fetch-COiMhVgk.mjs.map +1 -0
  25. package/dist/astro/index.d.mts +14 -12
  26. package/dist/astro/index.d.mts.map +1 -1
  27. package/dist/astro/index.mjs +123 -13
  28. package/dist/astro/index.mjs.map +1 -1
  29. package/dist/astro/middleware/auth.d.mts +12 -10
  30. package/dist/astro/middleware/auth.d.mts.map +1 -1
  31. package/dist/astro/middleware/auth.mjs +20 -11
  32. package/dist/astro/middleware/auth.mjs.map +1 -1
  33. package/dist/astro/middleware/media-usage-write-fence.mjs +5 -5
  34. package/dist/astro/middleware/redirect.mjs +11 -9
  35. package/dist/astro/middleware/redirect.mjs.map +1 -1
  36. package/dist/astro/middleware/request-context.d.mts +1 -1
  37. package/dist/astro/middleware/request-context.d.mts.map +1 -1
  38. package/dist/astro/middleware/request-context.mjs +154 -28
  39. package/dist/astro/middleware/request-context.mjs.map +1 -1
  40. package/dist/astro/middleware/setup.mjs +1 -1
  41. package/dist/astro/middleware.d.mts +13 -10
  42. package/dist/astro/middleware.d.mts.map +1 -1
  43. package/dist/astro/middleware.mjs +122 -3041
  44. package/dist/astro/middleware.mjs.map +1 -1
  45. package/dist/astro/routes/api/admin/allowed-domains/_domain_.mjs +10 -9
  46. package/dist/astro/routes/api/admin/allowed-domains/_domain_.mjs.map +1 -1
  47. package/dist/astro/routes/api/admin/allowed-domains/index.mjs +10 -9
  48. package/dist/astro/routes/api/admin/allowed-domains/index.mjs.map +1 -1
  49. package/dist/astro/routes/api/admin/api-tokens/_id_.mjs +5 -5
  50. package/dist/astro/routes/api/admin/api-tokens/index.mjs +6 -6
  51. package/dist/astro/routes/api/admin/byline-fields/_slug_/usage.mjs +6 -6
  52. package/dist/astro/routes/api/admin/byline-fields/_slug_.mjs +13 -12
  53. package/dist/astro/routes/api/admin/byline-fields/_slug_.mjs.map +1 -1
  54. package/dist/astro/routes/api/admin/byline-fields/index.mjs +13 -12
  55. package/dist/astro/routes/api/admin/byline-fields/index.mjs.map +1 -1
  56. package/dist/astro/routes/api/admin/byline-fields/reorder.mjs +13 -12
  57. package/dist/astro/routes/api/admin/byline-fields/reorder.mjs.map +1 -1
  58. package/dist/astro/routes/api/admin/bylines/_id_/index.mjs +22 -21
  59. package/dist/astro/routes/api/admin/bylines/_id_/index.mjs.map +1 -1
  60. package/dist/astro/routes/api/admin/bylines/_id_/translations.mjs +22 -21
  61. package/dist/astro/routes/api/admin/bylines/_id_/translations.mjs.map +1 -1
  62. package/dist/astro/routes/api/admin/bylines/index.mjs +22 -21
  63. package/dist/astro/routes/api/admin/bylines/index.mjs.map +1 -1
  64. package/dist/astro/routes/api/admin/comments/_id_/status.d.mts.map +1 -1
  65. package/dist/astro/routes/api/admin/comments/_id_/status.mjs +21 -54
  66. package/dist/astro/routes/api/admin/comments/_id_/status.mjs.map +1 -1
  67. package/dist/astro/routes/api/admin/comments/_id_.mjs +8 -8
  68. package/dist/astro/routes/api/admin/comments/bulk.mjs +15 -14
  69. package/dist/astro/routes/api/admin/comments/bulk.mjs.map +1 -1
  70. package/dist/astro/routes/api/admin/comments/counts.mjs +8 -8
  71. package/dist/astro/routes/api/admin/comments/index.mjs +15 -14
  72. package/dist/astro/routes/api/admin/comments/index.mjs.map +1 -1
  73. package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.mjs +6 -6
  74. package/dist/astro/routes/api/admin/hooks/exclusive/index.mjs +5 -5
  75. package/dist/astro/routes/api/admin/media-usage/activation.mjs +17 -16
  76. package/dist/astro/routes/api/admin/media-usage/activation.mjs.map +1 -1
  77. package/dist/astro/routes/api/admin/media-usage/collection-deletions/index.mjs +19 -18
  78. package/dist/astro/routes/api/admin/media-usage/collection-deletions/index.mjs.map +1 -1
  79. package/dist/astro/routes/api/admin/media-usage/collection-deletions/retry.mjs +19 -18
  80. package/dist/astro/routes/api/admin/media-usage/collection-deletions/retry.mjs.map +1 -1
  81. package/dist/astro/routes/api/admin/media-usage/progress.mjs +17 -17
  82. package/dist/astro/routes/api/admin/media-usage/repair.mjs +21 -20
  83. package/dist/astro/routes/api/admin/media-usage/repair.mjs.map +1 -1
  84. package/dist/astro/routes/api/admin/media-usage/work/index.mjs +19 -18
  85. package/dist/astro/routes/api/admin/media-usage/work/index.mjs.map +1 -1
  86. package/dist/astro/routes/api/admin/media-usage/work/retry.mjs +19 -18
  87. package/dist/astro/routes/api/admin/media-usage/work/retry.mjs.map +1 -1
  88. package/dist/astro/routes/api/admin/oauth-clients/_id_.mjs +5 -5
  89. package/dist/astro/routes/api/admin/oauth-clients/index.mjs +5 -5
  90. package/dist/astro/routes/api/admin/plugins/_id_/disable.d.mts.map +1 -1
  91. package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs +9 -66
  92. package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs.map +1 -1
  93. package/dist/astro/routes/api/admin/plugins/_id_/enable.d.mts.map +1 -1
  94. package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs +9 -69
  95. package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs.map +1 -1
  96. package/dist/astro/routes/api/admin/plugins/_id_/index.mjs +66 -59
  97. package/dist/astro/routes/api/admin/plugins/_id_/index.mjs.map +1 -1
  98. package/dist/astro/routes/api/admin/plugins/_id_/mcp.mjs +6 -6
  99. package/dist/astro/routes/api/admin/plugins/_id_/settings.mjs +65 -59
  100. package/dist/astro/routes/api/admin/plugins/_id_/settings.mjs.map +1 -1
  101. package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs +70 -61
  102. package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs.map +1 -1
  103. package/dist/astro/routes/api/admin/plugins/_id_/update.d.mts.map +1 -1
  104. package/dist/astro/routes/api/admin/plugins/_id_/update.mjs +87 -63
  105. package/dist/astro/routes/api/admin/plugins/_id_/update.mjs.map +1 -1
  106. package/dist/astro/routes/api/admin/plugins/index.mjs +66 -59
  107. package/dist/astro/routes/api/admin/plugins/index.mjs.map +1 -1
  108. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.mjs +4 -4
  109. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs +65 -59
  110. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs.map +1 -1
  111. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.d.mts.map +1 -1
  112. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs +85 -63
  113. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs.map +1 -1
  114. package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs +65 -59
  115. package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs.map +1 -1
  116. package/dist/astro/routes/api/admin/plugins/registry/_id_/uninstall.mjs +70 -61
  117. package/dist/astro/routes/api/admin/plugins/registry/_id_/uninstall.mjs.map +1 -1
  118. package/dist/astro/routes/api/admin/plugins/registry/_id_/update.d.mts.map +1 -1
  119. package/dist/astro/routes/api/admin/plugins/registry/_id_/update.mjs +90 -66
  120. package/dist/astro/routes/api/admin/plugins/registry/_id_/update.mjs.map +1 -1
  121. package/dist/astro/routes/api/admin/plugins/registry/artifact.d.mts.map +1 -1
  122. package/dist/astro/routes/api/admin/plugins/registry/artifact.mjs +9 -7
  123. package/dist/astro/routes/api/admin/plugins/registry/artifact.mjs.map +1 -1
  124. package/dist/astro/routes/api/admin/plugins/registry/install.d.mts.map +1 -1
  125. package/dist/astro/routes/api/admin/plugins/registry/install.mjs +77 -63
  126. package/dist/astro/routes/api/admin/plugins/registry/install.mjs.map +1 -1
  127. package/dist/astro/routes/api/admin/plugins/registry/verify.d.mts.map +1 -1
  128. package/dist/astro/routes/api/admin/plugins/registry/verify.mjs +67 -61
  129. package/dist/astro/routes/api/admin/plugins/registry/verify.mjs.map +1 -1
  130. package/dist/astro/routes/api/admin/plugins/updates.d.mts.map +1 -1
  131. package/dist/astro/routes/api/admin/plugins/updates.mjs +66 -60
  132. package/dist/astro/routes/api/admin/plugins/updates.mjs.map +1 -1
  133. package/dist/astro/routes/api/admin/scheduled-policy-rejections/_collection_/_id_.d.mts +8 -0
  134. package/dist/astro/routes/api/admin/scheduled-policy-rejections/_collection_/_id_.d.mts.map +1 -0
  135. package/dist/astro/routes/api/admin/scheduled-policy-rejections/_collection_/_id_.mjs +27 -0
  136. package/dist/astro/routes/api/admin/scheduled-policy-rejections/_collection_/_id_.mjs.map +1 -0
  137. package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs +65 -59
  138. package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs.map +1 -1
  139. package/dist/astro/routes/api/admin/themes/marketplace/_id_/thumbnail.mjs +4 -4
  140. package/dist/astro/routes/api/admin/themes/marketplace/index.mjs +65 -59
  141. package/dist/astro/routes/api/admin/themes/marketplace/index.mjs.map +1 -1
  142. package/dist/astro/routes/api/admin/users/_id_/disable.mjs +4 -4
  143. package/dist/astro/routes/api/admin/users/_id_/enable.mjs +3 -3
  144. package/dist/astro/routes/api/admin/users/_id_/index.mjs +11 -10
  145. package/dist/astro/routes/api/admin/users/_id_/index.mjs.map +1 -1
  146. package/dist/astro/routes/api/admin/users/_id_/send-recovery.mjs +5 -5
  147. package/dist/astro/routes/api/admin/users/index.mjs +10 -9
  148. package/dist/astro/routes/api/admin/users/index.mjs.map +1 -1
  149. package/dist/astro/routes/api/auth/dev-bypass.mjs +5 -5
  150. package/dist/astro/routes/api/auth/invite/accept.mjs +3 -3
  151. package/dist/astro/routes/api/auth/invite/complete.mjs +15 -14
  152. package/dist/astro/routes/api/auth/invite/complete.mjs.map +1 -1
  153. package/dist/astro/routes/api/auth/invite/index.mjs +12 -11
  154. package/dist/astro/routes/api/auth/invite/index.mjs.map +1 -1
  155. package/dist/astro/routes/api/auth/invite/register-options.mjs +14 -13
  156. package/dist/astro/routes/api/auth/invite/register-options.mjs.map +1 -1
  157. package/dist/astro/routes/api/auth/logout.mjs +4 -4
  158. package/dist/astro/routes/api/auth/magic-link/send.mjs +14 -13
  159. package/dist/astro/routes/api/auth/magic-link/send.mjs.map +1 -1
  160. package/dist/astro/routes/api/auth/magic-link/verify.mjs +4 -4
  161. package/dist/astro/routes/api/auth/me.mjs +11 -10
  162. package/dist/astro/routes/api/auth/me.mjs.map +1 -1
  163. package/dist/astro/routes/api/auth/mode.mjs +4 -4
  164. package/dist/astro/routes/api/auth/oauth/_provider_/callback.mjs +4 -4
  165. package/dist/astro/routes/api/auth/oauth/_provider_.mjs +2 -2
  166. package/dist/astro/routes/api/auth/passkey/_id_.mjs +10 -9
  167. package/dist/astro/routes/api/auth/passkey/_id_.mjs.map +1 -1
  168. package/dist/astro/routes/api/auth/passkey/index.mjs +3 -3
  169. package/dist/astro/routes/api/auth/passkey/options.mjs +16 -15
  170. package/dist/astro/routes/api/auth/passkey/options.mjs.map +1 -1
  171. package/dist/astro/routes/api/auth/passkey/register/options.mjs +14 -13
  172. package/dist/astro/routes/api/auth/passkey/register/options.mjs.map +1 -1
  173. package/dist/astro/routes/api/auth/passkey/register/verify.mjs +15 -14
  174. package/dist/astro/routes/api/auth/passkey/register/verify.mjs.map +1 -1
  175. package/dist/astro/routes/api/auth/passkey/verify.mjs +15 -14
  176. package/dist/astro/routes/api/auth/passkey/verify.mjs.map +1 -1
  177. package/dist/astro/routes/api/auth/signup/complete.mjs +15 -14
  178. package/dist/astro/routes/api/auth/signup/complete.mjs.map +1 -1
  179. package/dist/astro/routes/api/auth/signup/request.mjs +14 -13
  180. package/dist/astro/routes/api/auth/signup/request.mjs.map +1 -1
  181. package/dist/astro/routes/api/auth/signup/verify.mjs +3 -3
  182. package/dist/astro/routes/api/comments/_collection_/_contentId_/index.d.mts.map +1 -1
  183. package/dist/astro/routes/api/comments/_collection_/_contentId_/index.mjs +15 -211
  184. package/dist/astro/routes/api/comments/_collection_/_contentId_/index.mjs.map +1 -1
  185. package/dist/astro/routes/api/comments/_collection_/_contentId_/reactions.mjs +18 -17
  186. package/dist/astro/routes/api/comments/_collection_/_contentId_/reactions.mjs.map +1 -1
  187. package/dist/astro/routes/api/content/_collection_/_id_/compare.mjs +4 -4
  188. package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.d.mts.map +1 -1
  189. package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs +17 -11
  190. package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs.map +1 -1
  191. package/dist/astro/routes/api/content/_collection_/_id_/duplicate.mjs +5 -5
  192. package/dist/astro/routes/api/content/_collection_/_id_/lock.d.mts +10 -0
  193. package/dist/astro/routes/api/content/_collection_/_id_/lock.d.mts.map +1 -0
  194. package/dist/astro/routes/api/content/_collection_/_id_/lock.mjs +67 -0
  195. package/dist/astro/routes/api/content/_collection_/_id_/lock.mjs.map +1 -0
  196. package/dist/astro/routes/api/content/_collection_/_id_/permanent.mjs +4 -4
  197. package/dist/astro/routes/api/content/_collection_/_id_/plugin-extensions/_pluginId_/_kind_/_extensionId_.d.mts +8 -0
  198. package/dist/astro/routes/api/content/_collection_/_id_/plugin-extensions/_pluginId_/_kind_/_extensionId_.d.mts.map +1 -0
  199. package/dist/astro/routes/api/content/_collection_/_id_/plugin-extensions/_pluginId_/_kind_/_extensionId_.mjs +35 -0
  200. package/dist/astro/routes/api/content/_collection_/_id_/plugin-extensions/_pluginId_/_kind_/_extensionId_.mjs.map +1 -0
  201. package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs +16 -15
  202. package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs.map +1 -1
  203. package/dist/astro/routes/api/content/_collection_/_id_/publish.d.mts +9 -2
  204. package/dist/astro/routes/api/content/_collection_/_id_/publish.d.mts.map +1 -1
  205. package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs +28 -16
  206. package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs.map +1 -1
  207. package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/children.mjs +27 -23
  208. package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/children.mjs.map +1 -1
  209. package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/parents.mjs +27 -23
  210. package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/parents.mjs.map +1 -1
  211. package/dist/astro/routes/api/content/_collection_/_id_/restore.mjs +5 -5
  212. package/dist/astro/routes/api/content/_collection_/_id_/revisions.mjs +4 -4
  213. package/dist/astro/routes/api/content/_collection_/_id_/schedule.d.mts.map +1 -1
  214. package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs +27 -12
  215. package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs.map +1 -1
  216. package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs +23 -20
  217. package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs.map +1 -1
  218. package/dist/astro/routes/api/content/_collection_/_id_/translations.mjs +4 -4
  219. package/dist/astro/routes/api/content/_collection_/_id_/unpublish.d.mts.map +1 -1
  220. package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs +25 -12
  221. package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs.map +1 -1
  222. package/dist/astro/routes/api/content/_collection_/_id_.d.mts.map +1 -1
  223. package/dist/astro/routes/api/content/_collection_/_id_.mjs +27 -14
  224. package/dist/astro/routes/api/content/_collection_/_id_.mjs.map +1 -1
  225. package/dist/astro/routes/api/content/_collection_/authors.mjs +4 -4
  226. package/dist/astro/routes/api/content/_collection_/index.mjs +18 -12
  227. package/dist/astro/routes/api/content/_collection_/index.mjs.map +1 -1
  228. package/dist/astro/routes/api/content/_collection_/trash.mjs +11 -10
  229. package/dist/astro/routes/api/content/_collection_/trash.mjs.map +1 -1
  230. package/dist/astro/routes/api/dashboard.mjs +14 -12
  231. package/dist/astro/routes/api/dashboard.mjs.map +1 -1
  232. package/dist/astro/routes/api/dev/emails.mjs +4 -4
  233. package/dist/astro/routes/api/health.d.mts +8 -0
  234. package/dist/astro/routes/api/health.d.mts.map +1 -0
  235. package/dist/astro/routes/api/health.mjs +21 -0
  236. package/dist/astro/routes/api/health.mjs.map +1 -0
  237. package/dist/astro/routes/api/import/probe.d.mts +3 -3
  238. package/dist/astro/routes/api/import/probe.mjs +25 -23
  239. package/dist/astro/routes/api/import/probe.mjs.map +1 -1
  240. package/dist/astro/routes/api/import/wordpress/analyze.mjs +5 -5
  241. package/dist/astro/routes/api/import/wordpress/execute.d.mts +13 -11
  242. package/dist/astro/routes/api/import/wordpress/execute.d.mts.map +1 -1
  243. package/dist/astro/routes/api/import/wordpress/execute.mjs +20 -19
  244. package/dist/astro/routes/api/import/wordpress/execute.mjs.map +1 -1
  245. package/dist/astro/routes/api/import/wordpress/media.d.mts +12 -10
  246. package/dist/astro/routes/api/import/wordpress/media.d.mts.map +1 -1
  247. package/dist/astro/routes/api/import/wordpress/media.mjs +15 -14
  248. package/dist/astro/routes/api/import/wordpress/media.mjs.map +1 -1
  249. package/dist/astro/routes/api/import/wordpress/prepare.mjs +14 -13
  250. package/dist/astro/routes/api/import/wordpress/prepare.mjs.map +1 -1
  251. package/dist/astro/routes/api/import/wordpress/rewrite-urls.d.mts +13 -11
  252. package/dist/astro/routes/api/import/wordpress/rewrite-urls.d.mts.map +1 -1
  253. package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs +18 -17
  254. package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs.map +1 -1
  255. package/dist/astro/routes/api/import/wordpress-plugin/analyze.d.mts +1 -1
  256. package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs +25 -23
  257. package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs.map +1 -1
  258. package/dist/astro/routes/api/import/wordpress-plugin/callback.mjs +1 -1
  259. package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts +13 -11
  260. package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts.map +1 -1
  261. package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs +36 -33
  262. package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs.map +1 -1
  263. package/dist/astro/routes/api/manifest.mjs +17 -9
  264. package/dist/astro/routes/api/manifest.mjs.map +1 -1
  265. package/dist/astro/routes/api/mcp.d.mts.map +1 -1
  266. package/dist/astro/routes/api/mcp.mjs +192 -110
  267. package/dist/astro/routes/api/mcp.mjs.map +1 -1
  268. package/dist/astro/routes/api/media/_id_/confirm.mjs +15 -14
  269. package/dist/astro/routes/api/media/_id_/confirm.mjs.map +1 -1
  270. package/dist/astro/routes/api/media/_id_/replace.mjs +12 -11
  271. package/dist/astro/routes/api/media/_id_/replace.mjs.map +1 -1
  272. package/dist/astro/routes/api/media/_id_/upload.mjs +8 -8
  273. package/dist/astro/routes/api/media/_id_/usage.mjs +23 -22
  274. package/dist/astro/routes/api/media/_id_/usage.mjs.map +1 -1
  275. package/dist/astro/routes/api/media/_id_.mjs +22 -21
  276. package/dist/astro/routes/api/media/_id_.mjs.map +1 -1
  277. package/dist/astro/routes/api/media/asset/_id_/_filename_.d.mts +8 -0
  278. package/dist/astro/routes/api/media/asset/_id_/_filename_.d.mts.map +1 -0
  279. package/dist/astro/routes/api/media/asset/_id_/_filename_.mjs +52 -0
  280. package/dist/astro/routes/api/media/asset/_id_/_filename_.mjs.map +1 -0
  281. package/dist/astro/routes/api/media/file/_...key_.mjs +3 -3
  282. package/dist/astro/routes/api/media/folders/_id_.mjs +12 -11
  283. package/dist/astro/routes/api/media/folders/_id_.mjs.map +1 -1
  284. package/dist/astro/routes/api/media/folders/index.mjs +12 -11
  285. package/dist/astro/routes/api/media/folders/index.mjs.map +1 -1
  286. package/dist/astro/routes/api/media/providers/_providerId_/_itemId_.mjs +4 -4
  287. package/dist/astro/routes/api/media/providers/_providerId_/index.mjs +4 -4
  288. package/dist/astro/routes/api/media/providers/index.mjs +4 -4
  289. package/dist/astro/routes/api/media/upload-url.mjs +14 -13
  290. package/dist/astro/routes/api/media/upload-url.mjs.map +1 -1
  291. package/dist/astro/routes/api/media.mjs +26 -25
  292. package/dist/astro/routes/api/media.mjs.map +1 -1
  293. package/dist/astro/routes/api/menus/_name_/items/_id_.mjs +15 -14
  294. package/dist/astro/routes/api/menus/_name_/items/_id_.mjs.map +1 -1
  295. package/dist/astro/routes/api/menus/_name_/items.mjs +15 -14
  296. package/dist/astro/routes/api/menus/_name_/items.mjs.map +1 -1
  297. package/dist/astro/routes/api/menus/_name_/reorder.mjs +15 -14
  298. package/dist/astro/routes/api/menus/_name_/reorder.mjs.map +1 -1
  299. package/dist/astro/routes/api/menus/_name_/translations.mjs +15 -14
  300. package/dist/astro/routes/api/menus/_name_/translations.mjs.map +1 -1
  301. package/dist/astro/routes/api/menus/_name_.mjs +15 -14
  302. package/dist/astro/routes/api/menus/_name_.mjs.map +1 -1
  303. package/dist/astro/routes/api/menus/index.mjs +15 -14
  304. package/dist/astro/routes/api/menus/index.mjs.map +1 -1
  305. package/dist/astro/routes/api/oauth/authorize.mjs +6 -6
  306. package/dist/astro/routes/api/oauth/device/authorize.mjs +7 -7
  307. package/dist/astro/routes/api/oauth/device/code.mjs +10 -10
  308. package/dist/astro/routes/api/oauth/device/token.mjs +9 -9
  309. package/dist/astro/routes/api/oauth/register.mjs +4 -4
  310. package/dist/astro/routes/api/oauth/token/refresh.mjs +7 -7
  311. package/dist/astro/routes/api/oauth/token/revoke.mjs +7 -7
  312. package/dist/astro/routes/api/oauth/token.mjs +7 -7
  313. package/dist/astro/routes/api/openapi.json.mjs +95 -24
  314. package/dist/astro/routes/api/openapi.json.mjs.map +1 -1
  315. package/dist/astro/routes/api/plugins/_pluginId_/_...path_.d.mts +2 -1
  316. package/dist/astro/routes/api/plugins/_pluginId_/_...path_.d.mts.map +1 -1
  317. package/dist/astro/routes/api/plugins/_pluginId_/_...path_.mjs +22 -40
  318. package/dist/astro/routes/api/plugins/_pluginId_/_...path_.mjs.map +1 -1
  319. package/dist/astro/routes/api/redirects/404s/index.mjs +18 -14
  320. package/dist/astro/routes/api/redirects/404s/index.mjs.map +1 -1
  321. package/dist/astro/routes/api/redirects/404s/summary.mjs +18 -14
  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 +20 -22
  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 +19 -19
  328. package/dist/astro/routes/api/redirects/index.mjs.map +1 -1
  329. package/dist/astro/routes/api/relations/_id_/index.mjs +27 -23
  330. package/dist/astro/routes/api/relations/_id_/index.mjs.map +1 -1
  331. package/dist/astro/routes/api/relations/_id_/translations.mjs +21 -18
  332. package/dist/astro/routes/api/relations/_id_/translations.mjs.map +1 -1
  333. package/dist/astro/routes/api/relations/index.mjs +27 -23
  334. package/dist/astro/routes/api/relations/index.mjs.map +1 -1
  335. package/dist/astro/routes/api/revisions/_revisionId_/index.mjs +4 -4
  336. package/dist/astro/routes/api/revisions/_revisionId_/restore.mjs +5 -5
  337. package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs +65 -59
  338. package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs.map +1 -1
  339. package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs +65 -59
  340. package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs.map +1 -1
  341. package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs +65 -59
  342. package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs.map +1 -1
  343. package/dist/astro/routes/api/schema/collections/_slug_/index.mjs +65 -59
  344. package/dist/astro/routes/api/schema/collections/_slug_/index.mjs.map +1 -1
  345. package/dist/astro/routes/api/schema/collections/index.mjs +65 -59
  346. package/dist/astro/routes/api/schema/collections/index.mjs.map +1 -1
  347. package/dist/astro/routes/api/schema/collections/reorder.mjs +65 -59
  348. package/dist/astro/routes/api/schema/collections/reorder.mjs.map +1 -1
  349. package/dist/astro/routes/api/schema/index.mjs +16 -14
  350. package/dist/astro/routes/api/schema/index.mjs.map +1 -1
  351. package/dist/astro/routes/api/schema/orphans/_slug_.mjs +65 -59
  352. package/dist/astro/routes/api/schema/orphans/_slug_.mjs.map +1 -1
  353. package/dist/astro/routes/api/schema/orphans/index.mjs +65 -59
  354. package/dist/astro/routes/api/schema/orphans/index.mjs.map +1 -1
  355. package/dist/astro/routes/api/search/enable.mjs +16 -14
  356. package/dist/astro/routes/api/search/enable.mjs.map +1 -1
  357. package/dist/astro/routes/api/search/index.mjs +17 -14
  358. package/dist/astro/routes/api/search/index.mjs.map +1 -1
  359. package/dist/astro/routes/api/search/rebuild.mjs +16 -14
  360. package/dist/astro/routes/api/search/rebuild.mjs.map +1 -1
  361. package/dist/astro/routes/api/search/stats.mjs +10 -9
  362. package/dist/astro/routes/api/search/stats.mjs.map +1 -1
  363. package/dist/astro/routes/api/search/suggest.mjs +15 -13
  364. package/dist/astro/routes/api/search/suggest.mjs.map +1 -1
  365. package/dist/astro/routes/api/sections/_slug_.mjs +15 -13
  366. package/dist/astro/routes/api/sections/_slug_.mjs.map +1 -1
  367. package/dist/astro/routes/api/sections/index.mjs +15 -13
  368. package/dist/astro/routes/api/sections/index.mjs.map +1 -1
  369. package/dist/astro/routes/api/settings/backups/archives/_name_.mjs +9 -8
  370. package/dist/astro/routes/api/settings/backups/archives/_name_.mjs.map +1 -1
  371. package/dist/astro/routes/api/settings/backups/archives/index.mjs +8 -7
  372. package/dist/astro/routes/api/settings/backups/archives/index.mjs.map +1 -1
  373. package/dist/astro/routes/api/settings/backups/export.mjs +9 -8
  374. package/dist/astro/routes/api/settings/backups/export.mjs.map +1 -1
  375. package/dist/astro/routes/api/settings/backups/index.mjs +10 -9
  376. package/dist/astro/routes/api/settings/backups/index.mjs.map +1 -1
  377. package/dist/astro/routes/api/settings/email.mjs +6 -6
  378. package/dist/astro/routes/api/settings.mjs +22 -20
  379. package/dist/astro/routes/api/settings.mjs.map +1 -1
  380. package/dist/astro/routes/api/setup/admin-verify.mjs +16 -15
  381. package/dist/astro/routes/api/setup/admin-verify.mjs.map +1 -1
  382. package/dist/astro/routes/api/setup/admin.mjs +15 -14
  383. package/dist/astro/routes/api/setup/admin.mjs.map +1 -1
  384. package/dist/astro/routes/api/setup/dev-bypass.mjs +42 -38
  385. package/dist/astro/routes/api/setup/dev-bypass.mjs.map +1 -1
  386. package/dist/astro/routes/api/setup/dev-reset.mjs +4 -4
  387. package/dist/astro/routes/api/setup/index.mjs +43 -38
  388. package/dist/astro/routes/api/setup/index.mjs.map +1 -1
  389. package/dist/astro/routes/api/setup/status.mjs +5 -5
  390. package/dist/astro/routes/api/snapshot.mjs +11 -10
  391. package/dist/astro/routes/api/snapshot.mjs.map +1 -1
  392. package/dist/astro/routes/api/taxonomies/_name_/reorder.mjs +23 -21
  393. package/dist/astro/routes/api/taxonomies/_name_/reorder.mjs.map +1 -1
  394. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs +23 -21
  395. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs.map +1 -1
  396. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs +23 -21
  397. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs.map +1 -1
  398. package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs +23 -21
  399. package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs.map +1 -1
  400. package/dist/astro/routes/api/taxonomies/_name_/translations.mjs +22 -20
  401. package/dist/astro/routes/api/taxonomies/_name_/translations.mjs.map +1 -1
  402. package/dist/astro/routes/api/taxonomies/_name_.mjs +23 -21
  403. package/dist/astro/routes/api/taxonomies/_name_.mjs.map +1 -1
  404. package/dist/astro/routes/api/taxonomies/index.mjs +23 -21
  405. package/dist/astro/routes/api/taxonomies/index.mjs.map +1 -1
  406. package/dist/astro/routes/api/themes/preview.mjs +8 -8
  407. package/dist/astro/routes/api/typegen.mjs +6 -6
  408. package/dist/astro/routes/api/visual-editing/action-token.d.mts +8 -0
  409. package/dist/astro/routes/api/visual-editing/action-token.d.mts.map +1 -0
  410. package/dist/astro/routes/api/visual-editing/action-token.mjs +25 -0
  411. package/dist/astro/routes/api/visual-editing/action-token.mjs.map +1 -0
  412. package/dist/astro/routes/api/visual-editing/content/_collection_/_id_/publish.d.mts +8 -0
  413. package/dist/astro/routes/api/visual-editing/content/_collection_/_id_/publish.d.mts.map +1 -0
  414. package/dist/astro/routes/api/visual-editing/content/_collection_/_id_/publish.mjs +37 -0
  415. package/dist/astro/routes/api/visual-editing/content/_collection_/_id_/publish.mjs.map +1 -0
  416. package/dist/astro/routes/api/visual-editing/toolbar-labels.d.mts +8 -0
  417. package/dist/astro/routes/api/visual-editing/toolbar-labels.d.mts.map +1 -0
  418. package/dist/astro/routes/api/visual-editing/toolbar-labels.mjs +20 -0
  419. package/dist/astro/routes/api/visual-editing/toolbar-labels.mjs.map +1 -0
  420. package/dist/astro/routes/api/well-known/auth.mjs +2 -2
  421. package/dist/astro/routes/api/well-known/oauth-authorization-server.mjs +2 -2
  422. package/dist/astro/routes/api/well-known/oauth-protected-resource.mjs +2 -2
  423. package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs +12 -11
  424. package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs.map +1 -1
  425. package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs +16 -15
  426. package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs.map +1 -1
  427. package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs +16 -15
  428. package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs.map +1 -1
  429. package/dist/astro/routes/api/widget-areas/_name_.mjs +10 -10
  430. package/dist/astro/routes/api/widget-areas/index.mjs +16 -15
  431. package/dist/astro/routes/api/widget-areas/index.mjs.map +1 -1
  432. package/dist/astro/routes/api/widget-components.mjs +4 -4
  433. package/dist/astro/routes/robots.txt.mjs +13 -12
  434. package/dist/astro/routes/robots.txt.mjs.map +1 -1
  435. package/dist/astro/routes/sitemap-_collection_.xml.d.mts.map +1 -1
  436. package/dist/astro/routes/sitemap-_collection_.xml.mjs +24 -19
  437. package/dist/astro/routes/sitemap-_collection_.xml.mjs.map +1 -1
  438. package/dist/astro/routes/sitemap.xml.mjs +14 -13
  439. package/dist/astro/routes/sitemap.xml.mjs.map +1 -1
  440. package/dist/astro/types.d.mts +79 -26
  441. package/dist/astro/types.d.mts.map +1 -1
  442. package/dist/auth/providers/github.d.mts +1 -1
  443. package/dist/auth/providers/google.d.mts +1 -1
  444. package/dist/authoritative-records-DbqshfKD.mjs +5172 -0
  445. package/dist/authoritative-records-DbqshfKD.mjs.map +1 -0
  446. package/dist/authorize-BXpfMpp0.mjs +40 -0
  447. package/dist/authorize-BXpfMpp0.mjs.map +1 -0
  448. package/dist/backup-BsPQdwnS.mjs +246 -0
  449. package/dist/backup-BsPQdwnS.mjs.map +1 -0
  450. package/dist/base64-DvnNgP7e.mjs +63 -0
  451. package/dist/base64-DvnNgP7e.mjs.map +1 -0
  452. package/dist/byline-Doh-wt99.mjs +906 -0
  453. package/dist/byline-Doh-wt99.mjs.map +1 -0
  454. package/dist/byline-fields-CsrdvaLV.mjs +123 -0
  455. package/dist/byline-fields-CsrdvaLV.mjs.map +1 -0
  456. package/dist/byline-registry-D6lWzXk6.mjs +406 -0
  457. package/dist/byline-registry-D6lWzXk6.mjs.map +1 -0
  458. package/dist/bylines-Cop0hkoy.mjs +214 -0
  459. package/dist/bylines-Cop0hkoy.mjs.map +1 -0
  460. package/dist/bylines-kpBzHPr8.mjs +232 -0
  461. package/dist/bylines-kpBzHPr8.mjs.map +1 -0
  462. package/dist/cache-B0pOlXdM.mjs +108 -0
  463. package/dist/cache-B0pOlXdM.mjs.map +1 -0
  464. package/dist/capture-triggers-gxQxnxrJ.mjs +362 -0
  465. package/dist/capture-triggers-gxQxnxrJ.mjs.map +1 -0
  466. package/dist/challenge-store-CkRdSdd8.mjs +51 -0
  467. package/dist/challenge-store-CkRdSdd8.mjs.map +1 -0
  468. package/dist/checksum-Bsi2D9M1.mjs +162 -0
  469. package/dist/checksum-Bsi2D9M1.mjs.map +1 -0
  470. package/dist/chrome-tags-D7LGB91U.mjs +24 -0
  471. package/dist/chrome-tags-D7LGB91U.mjs.map +1 -0
  472. package/dist/chunks-BmWyou79.mjs +25 -0
  473. package/dist/chunks-BmWyou79.mjs.map +1 -0
  474. package/dist/cli/index.mjs +921 -106
  475. package/dist/cli/index.mjs.map +1 -1
  476. package/dist/client/cf-access.d.mts +1 -1
  477. package/dist/client/index.d.mts +17 -7
  478. package/dist/client/index.d.mts.map +1 -1
  479. package/dist/client/index.mjs +17 -12
  480. package/dist/client/index.mjs.map +1 -1
  481. package/dist/collection-deletion-C3Xixmkx.mjs +436 -0
  482. package/dist/collection-deletion-C3Xixmkx.mjs.map +1 -0
  483. package/dist/collection-slugs-cache-D9auiKmI.mjs +85 -0
  484. package/dist/collection-slugs-cache-D9auiKmI.mjs.map +1 -0
  485. package/dist/comment-DcT8qdPK.mjs +313 -0
  486. package/dist/comment-DcT8qdPK.mjs.map +1 -0
  487. package/dist/comment-reaction-DY5-y8Y5.mjs +85 -0
  488. package/dist/comment-reaction-DY5-y8Y5.mjs.map +1 -0
  489. package/dist/comments-B67VRNGw.mjs +204 -0
  490. package/dist/comments-B67VRNGw.mjs.map +1 -0
  491. package/dist/comments-BVzzt6x5.mjs +99 -0
  492. package/dist/comments-BVzzt6x5.mjs.map +1 -0
  493. package/dist/components-DIl9Qzh6.mjs +108 -0
  494. package/dist/components-DIl9Qzh6.mjs.map +1 -0
  495. package/dist/config-B2acLeC5.mjs +242 -0
  496. package/dist/config-B2acLeC5.mjs.map +1 -0
  497. package/dist/config-CGVeT8Hc.mjs +73 -0
  498. package/dist/config-CGVeT8Hc.mjs.map +1 -0
  499. package/dist/config-D3HhLON3.d.mts +39 -0
  500. package/dist/config-D3HhLON3.d.mts.map +1 -0
  501. package/dist/config-DS7e4EZ9.d.mts +6387 -0
  502. package/dist/config-DS7e4EZ9.d.mts.map +1 -0
  503. package/dist/content-DZ3B5qtA.mjs +2216 -0
  504. package/dist/content-DZ3B5qtA.mjs.map +1 -0
  505. package/dist/content-list-query-CbPdzsna.d.mts +26 -0
  506. package/dist/content-list-query-CbPdzsna.d.mts.map +1 -0
  507. package/dist/content-policy-CM4skrNi.mjs +46 -0
  508. package/dist/content-policy-CM4skrNi.mjs.map +1 -0
  509. package/dist/content-refresh-BHLHJgyt.mjs +3599 -0
  510. package/dist/content-refresh-BHLHJgyt.mjs.map +1 -0
  511. package/dist/content-repair-BVll5WNl.mjs +440 -0
  512. package/dist/content-repair-BVll5WNl.mjs.map +1 -0
  513. package/dist/context-B195kjqZ.mjs +1835 -0
  514. package/dist/context-B195kjqZ.mjs.map +1 -0
  515. package/dist/cron-BcR3RN4K.mjs +282 -0
  516. package/dist/cron-BcR3RN4K.mjs.map +1 -0
  517. package/dist/dashboard-CZD4G7k_.mjs +151 -0
  518. package/dist/dashboard-CZD4G7k_.mjs.map +1 -0
  519. package/dist/database/migration-lock.d.mts +37 -0
  520. package/dist/database/migration-lock.d.mts.map +1 -0
  521. package/dist/database/migration-lock.mjs +76 -0
  522. package/dist/database/migration-lock.mjs.map +1 -0
  523. package/dist/database/pg-migration-lock.d.mts +1 -1
  524. package/dist/database/pg-migration-lock.mjs +1 -1
  525. package/dist/database/pg-migration-lock.mjs.map +1 -1
  526. package/dist/datetime-normalization-PeiEdcRY.mjs +187 -0
  527. package/dist/datetime-normalization-PeiEdcRY.mjs.map +1 -0
  528. package/dist/db/index.d.mts +3 -3
  529. package/dist/db/index.mjs +4 -3
  530. package/dist/db/index.mjs.map +1 -1
  531. package/dist/db/libsql-migrations.d.mts +1 -1
  532. package/dist/db/libsql-migrations.mjs +7 -6
  533. package/dist/db/libsql-migrations.mjs.map +1 -1
  534. package/dist/db/libsql.d.mts +1 -1
  535. package/dist/db/postgres-migrations.d.mts +1 -1
  536. package/dist/db/postgres-migrations.mjs +7 -6
  537. package/dist/db/postgres-migrations.mjs.map +1 -1
  538. package/dist/db/postgres.d.mts +1 -1
  539. package/dist/db/sqlite-migrations.d.mts +1 -1
  540. package/dist/db/sqlite-migrations.mjs +7 -6
  541. package/dist/db/sqlite-migrations.mjs.map +1 -1
  542. package/dist/db/sqlite.d.mts +1 -1
  543. package/dist/db/sqlite.mjs +1 -1
  544. package/dist/db-errors-CBD5yMro.mjs +55 -0
  545. package/dist/db-errors-CBD5yMro.mjs.map +1 -0
  546. package/dist/default-BtlxWgh9.mjs +81 -0
  547. package/dist/default-BtlxWgh9.mjs.map +1 -0
  548. package/dist/deferred-tasks-Ba9fphlE.d.mts +9 -0
  549. package/dist/deferred-tasks-Ba9fphlE.d.mts.map +1 -0
  550. package/dist/dev-typegen-CZaPLl3V.mjs +29 -0
  551. package/dist/dev-typegen-CZaPLl3V.mjs.map +1 -0
  552. package/dist/device-flow-3E5l0fpH.mjs +466 -0
  553. package/dist/device-flow-3E5l0fpH.mjs.map +1 -0
  554. package/dist/dialect-helpers-CtYdsX4W.mjs +307 -0
  555. package/dist/dialect-helpers-CtYdsX4W.mjs.map +1 -0
  556. package/dist/direct-executor-ZI8E01Yt.mjs +104 -0
  557. package/dist/direct-executor-ZI8E01Yt.mjs.map +1 -0
  558. package/dist/dist-2hDLsLeq.mjs +810 -0
  559. package/dist/dist-2hDLsLeq.mjs.map +1 -0
  560. package/dist/email-console-gc-E3Eqj.mjs +50 -0
  561. package/dist/email-console-gc-E3Eqj.mjs.map +1 -0
  562. package/dist/emdash-runtime-DZGinqTL.mjs +4041 -0
  563. package/dist/emdash-runtime-DZGinqTL.mjs.map +1 -0
  564. package/dist/enrich-C2Mk0lwE.mjs +194 -0
  565. package/dist/enrich-C2Mk0lwE.mjs.map +1 -0
  566. package/dist/entry-lock-D3C99MXS.mjs +1520 -0
  567. package/dist/entry-lock-D3C99MXS.mjs.map +1 -0
  568. package/dist/entry-lock-D9rnj2Lu.mjs +163 -0
  569. package/dist/entry-lock-D9rnj2Lu.mjs.map +1 -0
  570. package/dist/entry-lock-DX7QkqEg.d.mts +3503 -0
  571. package/dist/entry-lock-DX7QkqEg.d.mts.map +1 -0
  572. package/dist/entry-locks-CO_KaoU5.mjs +167 -0
  573. package/dist/entry-locks-CO_KaoU5.mjs.map +1 -0
  574. package/dist/error-CCTCskie.mjs +90 -0
  575. package/dist/error-CCTCskie.mjs.map +1 -0
  576. package/dist/errors-W3PA8HqB.mjs +447 -0
  577. package/dist/errors-W3PA8HqB.mjs.map +1 -0
  578. package/dist/escape-DN4Qmjsl.mjs +9 -0
  579. package/dist/escape-DN4Qmjsl.mjs.map +1 -0
  580. package/dist/field-defs-cache-B337z8UJ.mjs +77 -0
  581. package/dist/field-defs-cache-B337z8UJ.mjs.map +1 -0
  582. package/dist/focal-point-Gr34o-4o.mjs +23 -0
  583. package/dist/focal-point-Gr34o-4o.mjs.map +1 -0
  584. package/dist/fts-manager-DMb0sbIQ.mjs +413 -0
  585. package/dist/fts-manager-DMb0sbIQ.mjs.map +1 -0
  586. package/dist/hash-CLVFzWvx.mjs +37 -0
  587. package/dist/hash-CLVFzWvx.mjs.map +1 -0
  588. package/dist/hook-result-KY1jq21o.d.mts +31 -0
  589. package/dist/hook-result-KY1jq21o.d.mts.map +1 -0
  590. package/dist/hreflang-BgS2FqhH.d.mts +50 -0
  591. package/dist/hreflang-BgS2FqhH.d.mts.map +1 -0
  592. package/dist/hreflang-CrJwqoeb.mjs +105 -0
  593. package/dist/hreflang-CrJwqoeb.mjs.map +1 -0
  594. package/dist/http-route-dispatch-DAKlanXb.mjs +339 -0
  595. package/dist/http-route-dispatch-DAKlanXb.mjs.map +1 -0
  596. package/dist/identity-DRGSHEEr.mjs +35 -0
  597. package/dist/identity-DRGSHEEr.mjs.map +1 -0
  598. package/dist/import-DFr5B_hC.mjs +2020 -0
  599. package/dist/import-DFr5B_hC.mjs.map +1 -0
  600. package/dist/index-CDwKDkTq.d.mts +623 -0
  601. package/dist/index-CDwKDkTq.d.mts.map +1 -0
  602. package/dist/index.d.mts +27 -22
  603. package/dist/index.mjs +101 -86
  604. package/dist/init-lock-4eRRB4Le.mjs +56 -0
  605. package/dist/init-lock-4eRRB4Le.mjs.map +1 -0
  606. package/dist/install-finalization-5Os-QZ-2.mjs +58 -0
  607. package/dist/install-finalization-5Os-QZ-2.mjs.map +1 -0
  608. package/dist/lifecycle-7e-Lt_kX.mjs +25 -0
  609. package/dist/lifecycle-7e-Lt_kX.mjs.map +1 -0
  610. package/dist/load-Cu5bvCZh.mjs +28 -0
  611. package/dist/load-Cu5bvCZh.mjs.map +1 -0
  612. package/dist/loader-t4TxaFiQ.mjs +1004 -0
  613. package/dist/loader-t4TxaFiQ.mjs.map +1 -0
  614. package/dist/manifest-builder-D31UoJCu.mjs +189 -0
  615. package/dist/manifest-builder-D31UoJCu.mjs.map +1 -0
  616. package/dist/manifest-schema-Bkh8SeHd.mjs +491 -0
  617. package/dist/manifest-schema-Bkh8SeHd.mjs.map +1 -0
  618. package/dist/media/image-endpoint.mjs +1 -1
  619. package/dist/media/index.d.mts +1 -1
  620. package/dist/media/index.mjs +4 -4
  621. package/dist/media/local-runtime.d.mts +14 -12
  622. package/dist/media/local-runtime.d.mts.map +1 -1
  623. package/dist/media/local-runtime.mjs +12 -11
  624. package/dist/media/local-runtime.mjs.map +1 -1
  625. package/dist/media-TBlKCwo7.mjs +334 -0
  626. package/dist/media-TBlKCwo7.mjs.map +1 -0
  627. package/dist/media-allowlist-s60eAIf6.mjs +44 -0
  628. package/dist/media-allowlist-s60eAIf6.mjs.map +1 -0
  629. package/dist/media-folders-ClIRLUQv.mjs +210 -0
  630. package/dist/media-folders-ClIRLUQv.mjs.map +1 -0
  631. package/dist/media-url-DY_ijO3B.mjs +43 -0
  632. package/dist/media-url-DY_ijO3B.mjs.map +1 -0
  633. package/dist/media-usage-C4NolTpQ.mjs +1833 -0
  634. package/dist/media-usage-C4NolTpQ.mjs.map +1 -0
  635. package/dist/media-usage-activation-CAhmb14O.mjs +78 -0
  636. package/dist/media-usage-activation-CAhmb14O.mjs.map +1 -0
  637. package/dist/media-usage-work-Cu5DqewW.mjs +586 -0
  638. package/dist/media-usage-work-Cu5DqewW.mjs.map +1 -0
  639. package/dist/media-usage-work-DJr3rOEN.mjs +152 -0
  640. package/dist/media-usage-work-DJr3rOEN.mjs.map +1 -0
  641. package/dist/media-usage-write-fence-DW5oHT7q.mjs +42 -0
  642. package/dist/media-usage-write-fence-DW5oHT7q.mjs.map +1 -0
  643. package/dist/menus-DbgU9z5Q.mjs +3732 -0
  644. package/dist/menus-DbgU9z5Q.mjs.map +1 -0
  645. package/dist/menus-Wy8m5NcH.mjs +753 -0
  646. package/dist/menus-Wy8m5NcH.mjs.map +1 -0
  647. package/dist/migrations/index.d.mts +2 -2
  648. package/dist/migrations/index.d.mts.map +1 -1
  649. package/dist/migrations/index.mjs +6 -5
  650. package/dist/mime-CCYRC4r1.mjs +36 -0
  651. package/dist/mime-CCYRC4r1.mjs.map +1 -0
  652. package/dist/mode-CkmOhFqj.mjs +23 -0
  653. package/dist/mode-CkmOhFqj.mjs.map +1 -0
  654. package/dist/node-sqlite-compat-vpVaILnb.mjs +46 -0
  655. package/dist/node-sqlite-compat-vpVaILnb.mjs.map +1 -0
  656. package/dist/normalize-dChXQjwS.mjs +191 -0
  657. package/dist/normalize-dChXQjwS.mjs.map +1 -0
  658. package/dist/oauth-authorization-DZ-R-hmx.mjs +274 -0
  659. package/dist/oauth-authorization-DZ-R-hmx.mjs.map +1 -0
  660. package/dist/oauth-clients-BMPA8vjl.mjs +266 -0
  661. package/dist/oauth-clients-BMPA8vjl.mjs.map +1 -0
  662. package/dist/oauth-state-store-0gIdb48-.mjs +50 -0
  663. package/dist/oauth-state-store-0gIdb48-.mjs.map +1 -0
  664. package/dist/oauth-user-lookup-ChVW4UWu.mjs +26 -0
  665. package/dist/oauth-user-lookup-ChVW4UWu.mjs.map +1 -0
  666. package/dist/object-cache/memory.d.mts +1 -1
  667. package/dist/object-cache-DlSVbn5Y.mjs +534 -0
  668. package/dist/object-cache-DlSVbn5Y.mjs.map +1 -0
  669. package/dist/options-D5WcorD5.mjs +200 -0
  670. package/dist/options-D5WcorD5.mjs.map +1 -0
  671. package/dist/options-DAknChnw.d.mts +77 -0
  672. package/dist/options-DAknChnw.d.mts.map +1 -0
  673. package/dist/page/index.d.mts +2 -2
  674. package/dist/page/index.d.mts.map +1 -1
  675. package/dist/page/index.mjs +13 -0
  676. package/dist/page/index.mjs.map +1 -1
  677. package/dist/parse-Cr379Av9.mjs +81 -0
  678. package/dist/parse-Cr379Av9.mjs.map +1 -0
  679. package/dist/parse-tj9XLNO_.d.mts +165 -0
  680. package/dist/parse-tj9XLNO_.d.mts.map +1 -0
  681. package/dist/passkey-config-BD-wMaCf.mjs +46 -0
  682. package/dist/passkey-config-BD-wMaCf.mjs.map +1 -0
  683. package/dist/patterns-Do3iqi7N.mjs +145 -0
  684. package/dist/patterns-Do3iqi7N.mjs.map +1 -0
  685. package/dist/placeholder-CubPFn_L.d.mts +306 -0
  686. package/dist/placeholder-CubPFn_L.d.mts.map +1 -0
  687. package/dist/plugin-test-runtime.d.mts +97 -0
  688. package/dist/plugin-test-runtime.d.mts.map +1 -0
  689. package/dist/plugin-test-runtime.mjs +105 -0
  690. package/dist/plugin-types.d.mts +53 -15
  691. package/dist/plugin-types.d.mts.map +1 -1
  692. package/dist/plugin-types.mjs +18 -1
  693. package/dist/plugin-types.mjs.map +1 -0
  694. package/dist/plugin-utils.d.mts +12 -10
  695. package/dist/plugin-utils.d.mts.map +1 -1
  696. package/dist/plugins/adapt-sandbox-entry.d.mts +12 -10
  697. package/dist/plugins/adapt-sandbox-entry.d.mts.map +1 -1
  698. package/dist/plugins/adapt-sandbox-entry.mjs +18 -13
  699. package/dist/plugins/adapt-sandbox-entry.mjs.map +1 -1
  700. package/dist/plugins/host.d.mts +7 -0
  701. package/dist/plugins/host.mjs +45 -0
  702. package/dist/plugins/http-wire.d.mts +25 -0
  703. package/dist/plugins/http-wire.d.mts.map +1 -0
  704. package/dist/plugins/http-wire.mjs +148 -0
  705. package/dist/plugins/http-wire.mjs.map +1 -0
  706. package/dist/plugins/secret-redactor.d.mts +9 -0
  707. package/dist/plugins/secret-redactor.d.mts.map +1 -0
  708. package/dist/plugins/secret-redactor.mjs +51 -0
  709. package/dist/plugins/secret-redactor.mjs.map +1 -0
  710. package/dist/plugins-DHurtdXQ.mjs +277 -0
  711. package/dist/plugins-DHurtdXQ.mjs.map +1 -0
  712. package/dist/policy-lyZnjpwz.mjs +45 -0
  713. package/dist/policy-lyZnjpwz.mjs.map +1 -0
  714. package/dist/portable-text-oAwodbPS.mjs +286 -0
  715. package/dist/portable-text-oAwodbPS.mjs.map +1 -0
  716. package/dist/preview-Cup2bj8c.mjs +107 -0
  717. package/dist/preview-Cup2bj8c.mjs.map +1 -0
  718. package/dist/protocol-C1CNiKX4.d.mts +61 -0
  719. package/dist/protocol-C1CNiKX4.d.mts.map +1 -0
  720. package/dist/public-submission-Cs-pFMQK.mjs +245 -0
  721. package/dist/public-submission-Cs-pFMQK.mjs.map +1 -0
  722. package/dist/public-url-BWVHsfQv.mjs +101 -0
  723. package/dist/public-url-BWVHsfQv.mjs.map +1 -0
  724. package/dist/query-D-lxiOgn.mjs +890 -0
  725. package/dist/query-D-lxiOgn.mjs.map +1 -0
  726. package/dist/query-D7kHKOws.mjs +41 -0
  727. package/dist/query-D7kHKOws.mjs.map +1 -0
  728. package/dist/rate-limit-CqJn-w4h.mjs +120 -0
  729. package/dist/rate-limit-CqJn-w4h.mjs.map +1 -0
  730. package/dist/redirect-BrChFPIu.mjs +17 -0
  731. package/dist/redirect-BrChFPIu.mjs.map +1 -0
  732. package/dist/redirect-D2Yo-b6S.mjs +415 -0
  733. package/dist/redirect-D2Yo-b6S.mjs.map +1 -0
  734. package/dist/redirects-BCiTaIQ-.mjs +146 -0
  735. package/dist/redirects-BCiTaIQ-.mjs.map +1 -0
  736. package/dist/redirects-ByItliuu.mjs +644 -0
  737. package/dist/redirects-ByItliuu.mjs.map +1 -0
  738. package/dist/registry/testing.d.mts +14 -0
  739. package/dist/registry/testing.d.mts.map +1 -0
  740. package/dist/registry/testing.mjs +255 -0
  741. package/dist/registry/testing.mjs.map +1 -0
  742. package/dist/registry-CkuPoZs7.mjs +1222 -0
  743. package/dist/registry-CkuPoZs7.mjs.map +1 -0
  744. package/dist/relation-XTAtOpJO.mjs +334 -0
  745. package/dist/relation-XTAtOpJO.mjs.map +1 -0
  746. package/dist/relations-B4w-G5U9.mjs +309 -0
  747. package/dist/relations-B4w-G5U9.mjs.map +1 -0
  748. package/dist/relations-O63JWBRj.mjs +403 -0
  749. package/dist/relations-O63JWBRj.mjs.map +1 -0
  750. package/dist/request-cache-DaMhSQdx.mjs +104 -0
  751. package/dist/request-cache-DaMhSQdx.mjs.map +1 -0
  752. package/dist/request-context.d.mts +1 -1
  753. package/dist/request-meta-C8yl_sIs.mjs +141 -0
  754. package/dist/request-meta-C8yl_sIs.mjs.map +1 -0
  755. package/dist/resolve-BJIS8wKr.mjs +199 -0
  756. package/dist/resolve-BJIS8wKr.mjs.map +1 -0
  757. package/dist/route-wire-D66L2oaZ.mjs +197 -0
  758. package/dist/route-wire-D66L2oaZ.mjs.map +1 -0
  759. package/dist/routes-DYsTe-oR.mjs +321 -0
  760. package/dist/routes-DYsTe-oR.mjs.map +1 -0
  761. package/dist/runner-3gfxRsJG.d.mts +68 -0
  762. package/dist/runner-3gfxRsJG.d.mts.map +1 -0
  763. package/dist/runner-ClrleR8A.mjs +5502 -0
  764. package/dist/runner-ClrleR8A.mjs.map +1 -0
  765. package/dist/runtime.d.mts +13 -11
  766. package/dist/runtime.d.mts.map +1 -1
  767. package/dist/runtime.mjs +6 -5
  768. package/dist/runtime.mjs.map +1 -1
  769. package/dist/schema-CPhPM9Do.mjs +420 -0
  770. package/dist/schema-CPhPM9Do.mjs.map +1 -0
  771. package/dist/schema-DEERRrKS.mjs +9 -0
  772. package/dist/schema-DEERRrKS.mjs.map +1 -0
  773. package/dist/scopes-Bn8_rCSt.mjs +27 -0
  774. package/dist/scopes-Bn8_rCSt.mjs.map +1 -0
  775. package/dist/search-lami_Ota.mjs +448 -0
  776. package/dist/search-lami_Ota.mjs.map +1 -0
  777. package/dist/secrets-DNgVgz_e.mjs +341 -0
  778. package/dist/secrets-DNgVgz_e.mjs.map +1 -0
  779. package/dist/sections-BIpd4Cxf.mjs +346 -0
  780. package/dist/sections-BIpd4Cxf.mjs.map +1 -0
  781. package/dist/seed/index.d.mts +2 -2
  782. package/dist/seed/index.mjs +35 -31
  783. package/dist/seo/index.d.mts +3 -3
  784. package/dist/seo/index.d.mts.map +1 -1
  785. package/dist/seo/index.mjs +27 -26
  786. package/dist/seo/index.mjs.map +1 -1
  787. package/dist/seo-BtU70b7l.mjs +114 -0
  788. package/dist/seo-BtU70b7l.mjs.map +1 -0
  789. package/dist/seo-_4qmazxz.mjs +133 -0
  790. package/dist/seo-_4qmazxz.mjs.map +1 -0
  791. package/dist/service-Bpy5iTX0.mjs +150 -0
  792. package/dist/service-Bpy5iTX0.mjs.map +1 -0
  793. package/dist/session-user-BQeS2Mrb.mjs +51 -0
  794. package/dist/session-user-BQeS2Mrb.mjs.map +1 -0
  795. package/dist/settings-DmroR53o.mjs +420 -0
  796. package/dist/settings-DmroR53o.mjs.map +1 -0
  797. package/dist/settings-g2F2a3Ub.mjs +51 -0
  798. package/dist/settings-g2F2a3Ub.mjs.map +1 -0
  799. package/dist/setup-complete-BrZaXpVV.mjs +26 -0
  800. package/dist/setup-complete-BrZaXpVV.mjs.map +1 -0
  801. package/dist/setup-nonce-Cb9-884O.mjs +25 -0
  802. package/dist/setup-nonce-Cb9-884O.mjs.map +1 -0
  803. package/dist/single-flight-cache-B5O2qhO1.mjs +104 -0
  804. package/dist/single-flight-cache-B5O2qhO1.mjs.map +1 -0
  805. package/dist/site-url-DjhYCaep.mjs +16 -0
  806. package/dist/site-url-DjhYCaep.mjs.map +1 -0
  807. package/dist/slugify-T5GHH42D.mjs +17 -0
  808. package/dist/slugify-T5GHH42D.mjs.map +1 -0
  809. package/dist/snapshot-C32Xuv3o.mjs +233 -0
  810. package/dist/snapshot-C32Xuv3o.mjs.map +1 -0
  811. package/dist/ssrf-Co1GGFZz.mjs +406 -0
  812. package/dist/ssrf-Co1GGFZz.mjs.map +1 -0
  813. package/dist/state-C7gCoiHr.mjs +153 -0
  814. package/dist/state-C7gCoiHr.mjs.map +1 -0
  815. package/dist/status-DLoBmcDz.mjs +30 -0
  816. package/dist/status-DLoBmcDz.mjs.map +1 -0
  817. package/dist/storage/local.d.mts +1 -1
  818. package/dist/storage/local.mjs +1 -1
  819. package/dist/storage/s3.d.mts +1 -1
  820. package/dist/storage/s3.mjs +1 -1
  821. package/dist/storage-query-CPctdMKX.d.mts +1519 -0
  822. package/dist/storage-query-CPctdMKX.d.mts.map +1 -0
  823. package/dist/target-CUKlGrXb.mjs +27 -0
  824. package/dist/target-CUKlGrXb.mjs.map +1 -0
  825. package/dist/taxonomies-BpqpXJUE.mjs +707 -0
  826. package/dist/taxonomies-BpqpXJUE.mjs.map +1 -0
  827. package/dist/taxonomies-ClCo4IGO.mjs +899 -0
  828. package/dist/taxonomies-ClCo4IGO.mjs.map +1 -0
  829. package/dist/taxonomy-Dj1vpw5E.mjs +508 -0
  830. package/dist/taxonomy-Dj1vpw5E.mjs.map +1 -0
  831. package/dist/tokens-Ns02GAma.mjs +171 -0
  832. package/dist/tokens-Ns02GAma.mjs.map +1 -0
  833. package/dist/transaction-BcJO4Tmc.mjs +29 -0
  834. package/dist/transaction-BcJO4Tmc.mjs.map +1 -0
  835. package/dist/transport-B8P1xsqk.mjs +136 -0
  836. package/dist/transport-B8P1xsqk.mjs.map +1 -0
  837. package/dist/transport-BLHZZcD_.d.mts +42 -0
  838. package/dist/transport-BLHZZcD_.d.mts.map +1 -0
  839. package/dist/trusted-proxy-Cg7SuD15.mjs +51 -0
  840. package/dist/trusted-proxy-Cg7SuD15.mjs.map +1 -0
  841. package/dist/turnstile-DWCSh_Qc.mjs +53 -0
  842. package/dist/turnstile-DWCSh_Qc.mjs.map +1 -0
  843. package/dist/types-B3RkqvDW.mjs +156 -0
  844. package/dist/types-B3RkqvDW.mjs.map +1 -0
  845. package/dist/types-BkUg2yHx.mjs +92 -0
  846. package/dist/types-BkUg2yHx.mjs.map +1 -0
  847. package/dist/types-BtuppOTV.mjs +16 -0
  848. package/dist/types-BtuppOTV.mjs.map +1 -0
  849. package/dist/types-CCR3ivXE.d.mts +363 -0
  850. package/dist/types-CCR3ivXE.d.mts.map +1 -0
  851. package/dist/types-CSHgU_-_.mjs +18 -0
  852. package/dist/types-CSHgU_-_.mjs.map +1 -0
  853. package/dist/types-CbwqGOXm.d.mts +766 -0
  854. package/dist/types-CbwqGOXm.d.mts.map +1 -0
  855. package/dist/types-D4RGIc2I.d.mts +198 -0
  856. package/dist/types-D4RGIc2I.d.mts.map +1 -0
  857. package/dist/types-DEHidMEk.d.mts +1637 -0
  858. package/dist/types-DEHidMEk.d.mts.map +1 -0
  859. package/dist/types-DQeU2SR7.d.mts +279 -0
  860. package/dist/types-DQeU2SR7.d.mts.map +1 -0
  861. package/dist/types-DxQWoQLA.d.mts +264 -0
  862. package/dist/types-DxQWoQLA.d.mts.map +1 -0
  863. package/dist/types-FBBnGZ2Y.d.mts +198 -0
  864. package/dist/types-FBBnGZ2Y.d.mts.map +1 -0
  865. package/dist/types-ZCnlropY.mjs +69 -0
  866. package/dist/types-ZCnlropY.mjs.map +1 -0
  867. package/dist/types-_Qtyawiy.d.mts +124 -0
  868. package/dist/types-_Qtyawiy.d.mts.map +1 -0
  869. package/dist/types-gC6FAoa_.d.mts +75 -0
  870. package/dist/types-gC6FAoa_.d.mts.map +1 -0
  871. package/dist/types-k--LneIF.mjs +22 -0
  872. package/dist/types-k--LneIF.mjs.map +1 -0
  873. package/dist/upload-attempts-2xdnoKGe.mjs +27 -0
  874. package/dist/upload-attempts-2xdnoKGe.mjs.map +1 -0
  875. package/dist/url-pattern-3m3reMzr.mjs +33 -0
  876. package/dist/url-pattern-3m3reMzr.mjs.map +1 -0
  877. package/dist/user-DroRntkx.mjs +171 -0
  878. package/dist/user-DroRntkx.mjs.map +1 -0
  879. package/dist/utils-CC2oNGV8.mjs +435 -0
  880. package/dist/utils-CC2oNGV8.mjs.map +1 -0
  881. package/dist/validate-BCP9HNDn.mjs +384 -0
  882. package/dist/validate-BCP9HNDn.mjs.map +1 -0
  883. package/dist/validate-CyQ7I3xF.d.mts +410 -0
  884. package/dist/validate-CyQ7I3xF.d.mts.map +1 -0
  885. package/dist/validate-DANX1-Qi.mjs +120 -0
  886. package/dist/validate-DANX1-Qi.mjs.map +1 -0
  887. package/dist/validation-DBy6WF94.mjs +216 -0
  888. package/dist/validation-DBy6WF94.mjs.map +1 -0
  889. package/dist/version-B57E4Uo7.mjs +7 -0
  890. package/dist/version-B57E4Uo7.mjs.map +1 -0
  891. package/dist/widgets-wQ7Xcgq8.mjs +126 -0
  892. package/dist/widgets-wQ7Xcgq8.mjs.map +1 -0
  893. package/dist/wxr-taxonomies-DIHfvEDt.mjs +406 -0
  894. package/dist/wxr-taxonomies-DIHfvEDt.mjs.map +1 -0
  895. package/dist/wxr-taxonomies-DU2ZSiGc.d.mts +34 -0
  896. package/dist/wxr-taxonomies-DU2ZSiGc.d.mts.map +1 -0
  897. package/dist/zod-generator-D_yHIWfs.mjs +329 -0
  898. package/dist/zod-generator-D_yHIWfs.mjs.map +1 -0
  899. package/package.json +39 -12
  900. package/src/api/errors.ts +23 -0
  901. package/src/api/handlers/backup.ts +11 -5
  902. package/src/api/handlers/content.ts +226 -85
  903. package/src/api/handlers/dashboard.ts +31 -1
  904. package/src/api/handlers/entry-lock.ts +206 -0
  905. package/src/api/handlers/index.ts +3 -0
  906. package/src/api/handlers/manifest.ts +5 -6
  907. package/src/api/handlers/marketplace.ts +126 -34
  908. package/src/api/handlers/media-upload.ts +31 -4
  909. package/src/api/handlers/menus.ts +9 -0
  910. package/src/api/handlers/plugin-settings.ts +35 -3
  911. package/src/api/handlers/redirects.ts +221 -138
  912. package/src/api/handlers/registry.ts +75 -29
  913. package/src/api/handlers/revision.ts +16 -27
  914. package/src/api/handlers/seo.ts +10 -1
  915. package/src/api/handlers/snapshot.ts +87 -72
  916. package/src/api/handlers/taxonomies.ts +79 -5
  917. package/src/api/handlers/validation.ts +120 -19
  918. package/src/api/openapi/document.ts +133 -11
  919. package/src/api/schemas/content.ts +32 -12
  920. package/src/api/schemas/entry-lock.ts +57 -0
  921. package/src/api/schemas/index.ts +1 -0
  922. package/src/api/schemas/schema.ts +10 -1
  923. package/src/api/schemas/search.ts +4 -0
  924. package/src/api/types.ts +4 -0
  925. package/src/astro/integration/index.ts +22 -6
  926. package/src/astro/integration/routes.ts +89 -0
  927. package/src/astro/integration/runtime.ts +40 -24
  928. package/src/astro/integration/virtual-modules.ts +4 -0
  929. package/src/astro/integration/vite-config.ts +31 -0
  930. package/src/astro/middleware/auth.ts +25 -4
  931. package/src/astro/middleware/request-context.ts +28 -10
  932. package/src/astro/middleware.ts +33 -1
  933. package/src/astro/prefetch.ts +2 -2
  934. package/src/astro/routes/api/admin/comments/[id]/status.ts +22 -58
  935. package/src/astro/routes/api/admin/plugins/[id]/disable.ts +2 -15
  936. package/src/astro/routes/api/admin/plugins/[id]/enable.ts +2 -25
  937. package/src/astro/routes/api/admin/plugins/[id]/uninstall.ts +1 -0
  938. package/src/astro/routes/api/admin/plugins/[id]/update.ts +23 -4
  939. package/src/astro/routes/api/admin/plugins/marketplace/[id]/install.ts +12 -2
  940. package/src/astro/routes/api/admin/plugins/registry/[id]/uninstall.ts +1 -0
  941. package/src/astro/routes/api/admin/plugins/registry/[id]/update.ts +29 -10
  942. package/src/astro/routes/api/admin/plugins/registry/artifact.ts +8 -2
  943. package/src/astro/routes/api/admin/plugins/registry/install.ts +15 -4
  944. package/src/astro/routes/api/admin/plugins/registry/verify.ts +2 -1
  945. package/src/astro/routes/api/admin/plugins/updates.ts +6 -1
  946. package/src/astro/routes/api/admin/scheduled-policy-rejections/[collection]/[id].ts +34 -0
  947. package/src/astro/routes/api/comments/[collection]/[contentId]/index.ts +4 -259
  948. package/src/astro/routes/api/content/[collection]/[id]/discard-draft.ts +10 -0
  949. package/src/astro/routes/api/content/[collection]/[id]/lock.ts +133 -0
  950. package/src/astro/routes/api/content/[collection]/[id]/plugin-extensions/[pluginId]/[kind]/[extensionId].ts +29 -0
  951. package/src/astro/routes/api/content/[collection]/[id]/publish.ts +21 -4
  952. package/src/astro/routes/api/content/[collection]/[id]/schedule.ts +30 -1
  953. package/src/astro/routes/api/content/[collection]/[id]/unpublish.ts +15 -1
  954. package/src/astro/routes/api/content/[collection]/[id].ts +27 -2
  955. package/src/astro/routes/api/content/[collection]/index.ts +3 -0
  956. package/src/astro/routes/api/health.ts +23 -0
  957. package/src/astro/routes/api/manifest.ts +14 -4
  958. package/src/astro/routes/api/mcp.ts +2 -1
  959. package/src/astro/routes/api/media/asset/[id]/[filename].ts +50 -0
  960. package/src/astro/routes/api/plugins/[pluginId]/[...path].ts +13 -81
  961. package/src/astro/routes/api/redirects/[id].ts +0 -3
  962. package/src/astro/routes/api/redirects/index.ts +0 -2
  963. package/src/astro/routes/api/search/index.ts +1 -0
  964. package/src/astro/routes/api/visual-editing/action-token.ts +36 -0
  965. package/src/astro/routes/api/visual-editing/content/[collection]/[id]/publish.ts +32 -0
  966. package/src/astro/routes/api/visual-editing/toolbar-labels.ts +16 -0
  967. package/src/astro/routes/sitemap-[collection].xml.ts +11 -4
  968. package/src/astro/types.ts +83 -12
  969. package/src/cli/commands/bundle-utils.ts +19 -19
  970. package/src/cli/commands/bundle.ts +9 -6
  971. package/src/cli/commands/content.ts +32 -6
  972. package/src/cli/commands/doctor.ts +25 -0
  973. package/src/cli/commands/export-seed.ts +195 -56
  974. package/src/cli/commands/migrate.ts +71 -23
  975. package/src/cli/commands/publish.ts +2 -2
  976. package/src/client/index.ts +34 -7
  977. package/src/comments/public-submission.ts +246 -0
  978. package/src/comments/service.ts +59 -12
  979. package/src/components/EmDashBodyEnd.astro +4 -1
  980. package/src/components/EmDashBodyStart.astro +4 -1
  981. package/src/components/EmDashHead.astro +36 -16
  982. package/src/components/Gallery.astro +18 -4
  983. package/src/components/InlineEditor.astro +3 -1
  984. package/src/components/InlinePortableTextEditor.tsx +106 -11
  985. package/src/components/PortableText.astro +4 -0
  986. package/src/components/Table.astro +147 -62
  987. package/src/components/widgets/Archives.astro +6 -5
  988. package/src/config/errors.ts +13 -0
  989. package/src/config/secrets.ts +25 -11
  990. package/src/content/converters/portable-text-to-prosemirror.ts +26 -2
  991. package/src/content/converters/prosemirror-to-portable-text.ts +35 -6
  992. package/src/content/converters/types.ts +10 -0
  993. package/src/content/known-fields.ts +44 -0
  994. package/src/database/connection.ts +5 -1
  995. package/src/database/content-datetime.ts +123 -0
  996. package/src/database/datetime-storage.ts +452 -0
  997. package/src/database/dialect-helpers.ts +161 -1
  998. package/src/database/migration-lock.ts +140 -0
  999. package/src/database/migrations/075_entry_edit_locks.ts +44 -0
  1000. package/src/database/migrations/076_collection_nav_group.ts +22 -0
  1001. package/src/database/migrations/077_plugin_storage_revisions.ts +89 -0
  1002. package/src/database/migrations/078_menu_item_translation_groups.ts +15 -0
  1003. package/src/database/migrations/079_datetime_normalization.ts +13 -0
  1004. package/src/database/migrations/080_content_translation_locale_unique.ts +88 -0
  1005. package/src/database/migrations/081_redirect_write_guards.ts +257 -0
  1006. package/src/database/migrations/082_taxonomy_translation_locale_unique.ts +49 -0
  1007. package/src/database/migrations/runner.ts +63 -15
  1008. package/src/database/pg-migration-lock.ts +2 -2
  1009. package/src/database/repositories/byline.ts +9 -0
  1010. package/src/database/repositories/comment.ts +86 -0
  1011. package/src/database/repositories/content.ts +560 -69
  1012. package/src/database/repositories/entry-locks.ts +257 -0
  1013. package/src/database/repositories/media.ts +35 -4
  1014. package/src/database/repositories/menu.ts +1 -0
  1015. package/src/database/repositories/options.ts +113 -7
  1016. package/src/database/repositories/plugin-storage.ts +159 -0
  1017. package/src/database/repositories/redirect.ts +262 -56
  1018. package/src/database/repositories/revision.ts +116 -17
  1019. package/src/database/repositories/taxonomy.ts +42 -0
  1020. package/src/database/repositories/types.ts +5 -0
  1021. package/src/database/types.ts +26 -1
  1022. package/src/datetime-normalization.ts +311 -0
  1023. package/src/db/node-sqlite-compat.ts +3 -2
  1024. package/src/emdash-runtime.ts +1994 -424
  1025. package/src/fields/image.ts +2 -0
  1026. package/src/i18n/config.ts +6 -6
  1027. package/src/i18n/resolve.ts +98 -15
  1028. package/src/index.ts +101 -0
  1029. package/src/loader.ts +49 -4
  1030. package/src/mcp/server.ts +216 -68
  1031. package/src/media/responsive.ts +23 -0
  1032. package/src/media/usage/content-refresh.ts +2 -1
  1033. package/src/media/usage/extractor.ts +50 -15
  1034. package/src/media/usage/types.ts +1 -1
  1035. package/src/menus/index.ts +64 -35
  1036. package/src/migrations/direct-executor.ts +40 -2
  1037. package/src/migrations/index.ts +1 -0
  1038. package/src/migrations/protocol.ts +11 -1
  1039. package/src/page/seo-contributions.ts +78 -1
  1040. package/src/page/seo-panel.ts +47 -0
  1041. package/src/plugin-test-runtime.ts +17 -0
  1042. package/src/plugin-types.ts +128 -21
  1043. package/src/plugins/adapt-sandbox-entry.ts +34 -27
  1044. package/src/plugins/conditional-storage.ts +30 -0
  1045. package/src/plugins/content-access.ts +170 -0
  1046. package/src/plugins/content-policy.ts +74 -0
  1047. package/src/plugins/context.ts +790 -166
  1048. package/src/plugins/cron.ts +18 -10
  1049. package/src/plugins/define-plugin.ts +55 -54
  1050. package/src/plugins/editor-draft.ts +257 -0
  1051. package/src/plugins/hooks.ts +136 -3
  1052. package/src/plugins/host.ts +29 -0
  1053. package/src/plugins/http-route-dispatch.ts +389 -0
  1054. package/src/plugins/http-wire.ts +180 -0
  1055. package/src/plugins/index.ts +97 -3
  1056. package/src/plugins/install-finalization.ts +77 -0
  1057. package/src/plugins/lifecycle.ts +47 -0
  1058. package/src/plugins/manager.ts +5 -2
  1059. package/src/plugins/manifest-schema.ts +314 -58
  1060. package/src/plugins/media.ts +166 -0
  1061. package/src/plugins/request-meta.ts +12 -2
  1062. package/src/plugins/route-wire.ts +304 -0
  1063. package/src/plugins/routes.ts +38 -5
  1064. package/src/plugins/sandbox/index.ts +4 -0
  1065. package/src/plugins/sandbox/proxy.ts +129 -0
  1066. package/src/plugins/sandbox/types.ts +83 -7
  1067. package/src/plugins/secret-redactor.ts +65 -0
  1068. package/src/plugins/settings.ts +303 -0
  1069. package/src/plugins/state.ts +26 -0
  1070. package/src/plugins/storage-query.ts +45 -0
  1071. package/src/plugins/storage-update.ts +96 -0
  1072. package/src/plugins/types.ts +602 -15
  1073. package/src/query.ts +84 -4
  1074. package/src/registry/authoritative-records.ts +26 -0
  1075. package/src/registry/config.ts +182 -31
  1076. package/src/registry/testing.ts +100 -0
  1077. package/src/registry/types.ts +12 -70
  1078. package/src/scheduled-publish.ts +70 -3
  1079. package/src/schema/collection-slugs-cache.ts +157 -0
  1080. package/src/schema/index.ts +1 -0
  1081. package/src/schema/registry.ts +64 -1
  1082. package/src/schema/types.ts +32 -6
  1083. package/src/schema/zod-generator.ts +5 -13
  1084. package/src/search/fts-manager.ts +3 -3
  1085. package/src/search/query.ts +32 -5
  1086. package/src/search/types.ts +8 -0
  1087. package/src/security/ssrf.ts +167 -141
  1088. package/src/seed/apply.ts +41 -3
  1089. package/src/seed/types.ts +13 -3
  1090. package/src/seed/validate.ts +18 -1
  1091. package/src/seo/hreflang.ts +10 -6
  1092. package/src/seo/index.ts +5 -10
  1093. package/src/seo/media-url.ts +26 -0
  1094. package/src/settings/index.ts +53 -11
  1095. package/src/taxonomies/term-counts.ts +22 -5
  1096. package/src/visual-editing/action-token.ts +31 -0
  1097. package/src/visual-editing/toolbar-bootstrap.ts +31 -6
  1098. package/src/visual-editing/toolbar.ts +103 -12
  1099. package/src/widgets/archives.ts +10 -9
  1100. package/src/widgets/index.ts +11 -1
  1101. package/dist/activation-K0kGBWuJ.mjs +0 -382
  1102. package/dist/activation-K0kGBWuJ.mjs.map +0 -1
  1103. package/dist/adapters-BDQwg236.d.mts +0 -171
  1104. package/dist/adapters-BDQwg236.d.mts.map +0 -1
  1105. package/dist/after-CBU2vkoO.mjs +0 -96
  1106. package/dist/after-CBU2vkoO.mjs.map +0 -1
  1107. package/dist/allowed-origins-BGglilcs.mjs +0 -116
  1108. package/dist/allowed-origins-BGglilcs.mjs.map +0 -1
  1109. package/dist/api-Dz6rgoa3.mjs +0 -10040
  1110. package/dist/api-Dz6rgoa3.mjs.map +0 -1
  1111. package/dist/api-tokens-BSsQACNe.mjs +0 -163
  1112. package/dist/api-tokens-BSsQACNe.mjs.map +0 -1
  1113. package/dist/apply-B4SIOxR1.mjs +0 -980
  1114. package/dist/apply-B4SIOxR1.mjs.map +0 -1
  1115. package/dist/authorize-Bkf_UHhD.mjs +0 -40
  1116. package/dist/authorize-Bkf_UHhD.mjs.map +0 -1
  1117. package/dist/backup-rwVAl9NI.mjs +0 -241
  1118. package/dist/backup-rwVAl9NI.mjs.map +0 -1
  1119. package/dist/base64-CvLhUKQv.mjs +0 -63
  1120. package/dist/base64-CvLhUKQv.mjs.map +0 -1
  1121. package/dist/bundle-C8S2Zl6U.mjs +0 -663
  1122. package/dist/bundle-C8S2Zl6U.mjs.map +0 -1
  1123. package/dist/byline-DuhF7NWl.mjs +0 -902
  1124. package/dist/byline-DuhF7NWl.mjs.map +0 -1
  1125. package/dist/byline-fields-BovY4KYM.mjs +0 -123
  1126. package/dist/byline-fields-BovY4KYM.mjs.map +0 -1
  1127. package/dist/byline-registry-Bpu9-MVs.mjs +0 -406
  1128. package/dist/byline-registry-Bpu9-MVs.mjs.map +0 -1
  1129. package/dist/bylines-CJ5nd6Lw.mjs +0 -232
  1130. package/dist/bylines-CJ5nd6Lw.mjs.map +0 -1
  1131. package/dist/bylines-RwBAeOF1.mjs +0 -214
  1132. package/dist/bylines-RwBAeOF1.mjs.map +0 -1
  1133. package/dist/cache-BF5Kvn59.mjs +0 -108
  1134. package/dist/cache-BF5Kvn59.mjs.map +0 -1
  1135. package/dist/capture-triggers-CNW1q3HK.mjs +0 -362
  1136. package/dist/capture-triggers-CNW1q3HK.mjs.map +0 -1
  1137. package/dist/challenge-store-DQN_Yrck.mjs +0 -51
  1138. package/dist/challenge-store-DQN_Yrck.mjs.map +0 -1
  1139. package/dist/chrome-tags-D8fiZG94.mjs +0 -24
  1140. package/dist/chrome-tags-D8fiZG94.mjs.map +0 -1
  1141. package/dist/chunks-C4szrD8o.mjs +0 -25
  1142. package/dist/chunks-C4szrD8o.mjs.map +0 -1
  1143. package/dist/collection-deletion-Bj07NHbj.mjs +0 -436
  1144. package/dist/collection-deletion-Bj07NHbj.mjs.map +0 -1
  1145. package/dist/comment-reaction-BhrvSHml.mjs +0 -85
  1146. package/dist/comment-reaction-BhrvSHml.mjs.map +0 -1
  1147. package/dist/comment-vxOzWbZN.mjs +0 -255
  1148. package/dist/comment-vxOzWbZN.mjs.map +0 -1
  1149. package/dist/comments-Ct4ensnf.mjs +0 -204
  1150. package/dist/comments-Ct4ensnf.mjs.map +0 -1
  1151. package/dist/components-DJbo1z0S.mjs +0 -108
  1152. package/dist/components-DJbo1z0S.mjs.map +0 -1
  1153. package/dist/config-B9eZ340f.d.mts +0 -34
  1154. package/dist/config-B9eZ340f.d.mts.map +0 -1
  1155. package/dist/config-C3EBstHi.mjs +0 -72
  1156. package/dist/config-C3EBstHi.mjs.map +0 -1
  1157. package/dist/config-it29yDLA.mjs +0 -1163
  1158. package/dist/config-it29yDLA.mjs.map +0 -1
  1159. package/dist/content-DjvM0T92.mjs +0 -1725
  1160. package/dist/content-DjvM0T92.mjs.map +0 -1
  1161. package/dist/content-list-query-Btqd4uV2.d.mts +0 -26
  1162. package/dist/content-list-query-Btqd4uV2.d.mts.map +0 -1
  1163. package/dist/content-refresh-Bwp-8yGy.mjs +0 -3588
  1164. package/dist/content-refresh-Bwp-8yGy.mjs.map +0 -1
  1165. package/dist/content-repair-Czdp7jz5.mjs +0 -440
  1166. package/dist/content-repair-Czdp7jz5.mjs.map +0 -1
  1167. package/dist/context-CX6gxOLW.mjs +0 -1068
  1168. package/dist/context-CX6gxOLW.mjs.map +0 -1
  1169. package/dist/cron-C6o7VppJ.mjs +0 -277
  1170. package/dist/cron-C6o7VppJ.mjs.map +0 -1
  1171. package/dist/dashboard-C2kTeeRI.mjs +0 -140
  1172. package/dist/dashboard-C2kTeeRI.mjs.map +0 -1
  1173. package/dist/db-errors-Cl-sKYTm.mjs +0 -55
  1174. package/dist/db-errors-Cl-sKYTm.mjs.map +0 -1
  1175. package/dist/default-Clra32mw.mjs +0 -81
  1176. package/dist/default-Clra32mw.mjs.map +0 -1
  1177. package/dist/deferred-tasks-CvDETTJO.d.mts +0 -9
  1178. package/dist/deferred-tasks-CvDETTJO.d.mts.map +0 -1
  1179. package/dist/dev-typegen-DzOPfsNj.mjs +0 -29
  1180. package/dist/dev-typegen-DzOPfsNj.mjs.map +0 -1
  1181. package/dist/device-flow-D2oCWvLJ.mjs +0 -466
  1182. package/dist/device-flow-D2oCWvLJ.mjs.map +0 -1
  1183. package/dist/dialect-helpers-BSbfaO3F.mjs +0 -202
  1184. package/dist/dialect-helpers-BSbfaO3F.mjs.map +0 -1
  1185. package/dist/direct-executor-Bfa5_ToE.mjs +0 -85
  1186. package/dist/direct-executor-Bfa5_ToE.mjs.map +0 -1
  1187. package/dist/dist-89xCrGqi.mjs +0 -810
  1188. package/dist/dist-89xCrGqi.mjs.map +0 -1
  1189. package/dist/email-console-Dzb6uGYa.mjs +0 -50
  1190. package/dist/email-console-Dzb6uGYa.mjs.map +0 -1
  1191. package/dist/enrich-BX0IDp4z.mjs +0 -194
  1192. package/dist/enrich-BX0IDp4z.mjs.map +0 -1
  1193. package/dist/error-DFrQjppn.mjs +0 -90
  1194. package/dist/error-DFrQjppn.mjs.map +0 -1
  1195. package/dist/errors-DsVoDUjJ.mjs +0 -427
  1196. package/dist/errors-DsVoDUjJ.mjs.map +0 -1
  1197. package/dist/escape-HmHTC1Is.mjs +0 -9
  1198. package/dist/escape-HmHTC1Is.mjs.map +0 -1
  1199. package/dist/field-defs-cache-BM4SIRqH.mjs +0 -77
  1200. package/dist/field-defs-cache-BM4SIRqH.mjs.map +0 -1
  1201. package/dist/focal-point-BeWFo6Xx.mjs +0 -23
  1202. package/dist/focal-point-BeWFo6Xx.mjs.map +0 -1
  1203. package/dist/fts-manager-Do1BlW2r.mjs +0 -413
  1204. package/dist/fts-manager-Do1BlW2r.mjs.map +0 -1
  1205. package/dist/hash-3JJPlHF2.mjs +0 -37
  1206. package/dist/hash-3JJPlHF2.mjs.map +0 -1
  1207. package/dist/hook-result-DCh2WUpe.d.mts +0 -31
  1208. package/dist/hook-result-DCh2WUpe.d.mts.map +0 -1
  1209. package/dist/hreflang-B6hbAuuO.d.mts +0 -48
  1210. package/dist/hreflang-B6hbAuuO.d.mts.map +0 -1
  1211. package/dist/hreflang-DQbPZliA.mjs +0 -102
  1212. package/dist/hreflang-DQbPZliA.mjs.map +0 -1
  1213. package/dist/identity-DksvEazf.mjs +0 -35
  1214. package/dist/identity-DksvEazf.mjs.map +0 -1
  1215. package/dist/import-CJpaBBBT.mjs +0 -2020
  1216. package/dist/import-CJpaBBBT.mjs.map +0 -1
  1217. package/dist/index-BJNMCWmu.d.mts +0 -6562
  1218. package/dist/index-BJNMCWmu.d.mts.map +0 -1
  1219. package/dist/index-Du8K7bWa.d.mts +0 -278
  1220. package/dist/index-Du8K7bWa.d.mts.map +0 -1
  1221. package/dist/init-lock-DJkX6Hto.mjs +0 -56
  1222. package/dist/init-lock-DJkX6Hto.mjs.map +0 -1
  1223. package/dist/load-CawHjTOH.mjs +0 -28
  1224. package/dist/load-CawHjTOH.mjs.map +0 -1
  1225. package/dist/loader-Z8vl7zTq.mjs +0 -966
  1226. package/dist/loader-Z8vl7zTq.mjs.map +0 -1
  1227. package/dist/manifest-builder-COtzuca2.mjs +0 -189
  1228. package/dist/manifest-builder-COtzuca2.mjs.map +0 -1
  1229. package/dist/manifest-schema-BNWwR8Vd.mjs +0 -301
  1230. package/dist/manifest-schema-BNWwR8Vd.mjs.map +0 -1
  1231. package/dist/media-BBm8Wg3f.mjs +0 -318
  1232. package/dist/media-BBm8Wg3f.mjs.map +0 -1
  1233. package/dist/media-BHjus86Y.mjs +0 -464
  1234. package/dist/media-BHjus86Y.mjs.map +0 -1
  1235. package/dist/media-allowlist-CoTBWoDp.mjs +0 -44
  1236. package/dist/media-allowlist-CoTBWoDp.mjs.map +0 -1
  1237. package/dist/media-folders-BGkATs8n.mjs +0 -210
  1238. package/dist/media-folders-BGkATs8n.mjs.map +0 -1
  1239. package/dist/media-upload-BCidR-EY.mjs +0 -147
  1240. package/dist/media-upload-BCidR-EY.mjs.map +0 -1
  1241. package/dist/media-url-DHoPr0hq.mjs +0 -26
  1242. package/dist/media-url-DHoPr0hq.mjs.map +0 -1
  1243. package/dist/media-usage-CdY5jhSR.mjs +0 -1833
  1244. package/dist/media-usage-CdY5jhSR.mjs.map +0 -1
  1245. package/dist/media-usage-activation-BgeMtK5C.mjs +0 -78
  1246. package/dist/media-usage-activation-BgeMtK5C.mjs.map +0 -1
  1247. package/dist/media-usage-work-CnGCdHxx.mjs +0 -152
  1248. package/dist/media-usage-work-CnGCdHxx.mjs.map +0 -1
  1249. package/dist/media-usage-work-D6D9sMCA.mjs +0 -586
  1250. package/dist/media-usage-work-D6D9sMCA.mjs.map +0 -1
  1251. package/dist/media-usage-write-fence-hjeD4u7s.mjs +0 -42
  1252. package/dist/media-usage-write-fence-hjeD4u7s.mjs.map +0 -1
  1253. package/dist/menus-6qSwTNxG.mjs +0 -4010
  1254. package/dist/menus-6qSwTNxG.mjs.map +0 -1
  1255. package/dist/menus-uvPLXMZf.mjs +0 -744
  1256. package/dist/menus-uvPLXMZf.mjs.map +0 -1
  1257. package/dist/mime-CUIG6x84.mjs +0 -36
  1258. package/dist/mime-CUIG6x84.mjs.map +0 -1
  1259. package/dist/mode-DN_WneRx.mjs +0 -23
  1260. package/dist/mode-DN_WneRx.mjs.map +0 -1
  1261. package/dist/node-sqlite-compat-BuJXIeMz.mjs +0 -46
  1262. package/dist/node-sqlite-compat-BuJXIeMz.mjs.map +0 -1
  1263. package/dist/normalize-C2xNjTSG.mjs +0 -191
  1264. package/dist/normalize-C2xNjTSG.mjs.map +0 -1
  1265. package/dist/oauth-authorization-Dj6Kwc21.mjs +0 -274
  1266. package/dist/oauth-authorization-Dj6Kwc21.mjs.map +0 -1
  1267. package/dist/oauth-clients-FD7I0J8m.mjs +0 -266
  1268. package/dist/oauth-clients-FD7I0J8m.mjs.map +0 -1
  1269. package/dist/oauth-state-store-DkmDOmHs.mjs +0 -50
  1270. package/dist/oauth-state-store-DkmDOmHs.mjs.map +0 -1
  1271. package/dist/oauth-user-lookup-CvIwGpYd.mjs +0 -26
  1272. package/dist/oauth-user-lookup-CvIwGpYd.mjs.map +0 -1
  1273. package/dist/object-cache-DVKnyOfy.mjs +0 -534
  1274. package/dist/object-cache-DVKnyOfy.mjs.map +0 -1
  1275. package/dist/options-BHPeIbBd.mjs +0 -117
  1276. package/dist/options-BHPeIbBd.mjs.map +0 -1
  1277. package/dist/options-CYb4y7hM.d.mts +0 -221
  1278. package/dist/options-CYb4y7hM.d.mts.map +0 -1
  1279. package/dist/parse-Ckpg-Qfp.mjs +0 -81
  1280. package/dist/parse-Ckpg-Qfp.mjs.map +0 -1
  1281. package/dist/passkey-config-O_lj3y0k.mjs +0 -46
  1282. package/dist/passkey-config-O_lj3y0k.mjs.map +0 -1
  1283. package/dist/patterns-D9iDO3j8.mjs +0 -145
  1284. package/dist/patterns-D9iDO3j8.mjs.map +0 -1
  1285. package/dist/placeholder-4X9BrRrp.d.mts +0 -306
  1286. package/dist/placeholder-4X9BrRrp.d.mts.map +0 -1
  1287. package/dist/policy-Dhtwntrt.mjs +0 -45
  1288. package/dist/policy-Dhtwntrt.mjs.map +0 -1
  1289. package/dist/portable-text-U85hOafW.mjs +0 -286
  1290. package/dist/portable-text-U85hOafW.mjs.map +0 -1
  1291. package/dist/preview-B_vJLvf8.mjs +0 -107
  1292. package/dist/preview-B_vJLvf8.mjs.map +0 -1
  1293. package/dist/protocol-JdD2YhY9.d.mts +0 -52
  1294. package/dist/protocol-JdD2YhY9.d.mts.map +0 -1
  1295. package/dist/public-url-CarhZJgf.mjs +0 -101
  1296. package/dist/public-url-CarhZJgf.mjs.map +0 -1
  1297. package/dist/query-BZKZcG5b.mjs +0 -881
  1298. package/dist/query-BZKZcG5b.mjs.map +0 -1
  1299. package/dist/query-BndaFxxp.mjs +0 -41
  1300. package/dist/query-BndaFxxp.mjs.map +0 -1
  1301. package/dist/rate-limit-BZmATC6W.mjs +0 -120
  1302. package/dist/rate-limit-BZmATC6W.mjs.map +0 -1
  1303. package/dist/redirect-CZkbozu9.mjs +0 -313
  1304. package/dist/redirect-CZkbozu9.mjs.map +0 -1
  1305. package/dist/redirect-CzqnLxK-.mjs +0 -17
  1306. package/dist/redirect-CzqnLxK-.mjs.map +0 -1
  1307. package/dist/redirects-BLNOWQTn.mjs +0 -1238
  1308. package/dist/redirects-BLNOWQTn.mjs.map +0 -1
  1309. package/dist/redirects-CqzNM0KM.mjs +0 -579
  1310. package/dist/redirects-CqzNM0KM.mjs.map +0 -1
  1311. package/dist/registry-AZAsRsor.mjs +0 -1179
  1312. package/dist/registry-AZAsRsor.mjs.map +0 -1
  1313. package/dist/relation-04DfKRTO.mjs +0 -334
  1314. package/dist/relation-04DfKRTO.mjs.map +0 -1
  1315. package/dist/relations-C4htk5sb.mjs +0 -309
  1316. package/dist/relations-C4htk5sb.mjs.map +0 -1
  1317. package/dist/relations-CcFwDJdJ.mjs +0 -403
  1318. package/dist/relations-CcFwDJdJ.mjs.map +0 -1
  1319. package/dist/relations-DnRK4YIT.d.mts +0 -3354
  1320. package/dist/relations-DnRK4YIT.d.mts.map +0 -1
  1321. package/dist/request-cache-DH9zdCOD.mjs +0 -104
  1322. package/dist/request-cache-DH9zdCOD.mjs.map +0 -1
  1323. package/dist/request-meta-DYxLlnmz.mjs +0 -140
  1324. package/dist/request-meta-DYxLlnmz.mjs.map +0 -1
  1325. package/dist/resolve-prZ3mP7l.mjs +0 -143
  1326. package/dist/resolve-prZ3mP7l.mjs.map +0 -1
  1327. package/dist/runner-BLIDKpmA.mjs +0 -4676
  1328. package/dist/runner-BLIDKpmA.mjs.map +0 -1
  1329. package/dist/runner-YKfIMnaF.d.mts +0 -67
  1330. package/dist/runner-YKfIMnaF.d.mts.map +0 -1
  1331. package/dist/schema-CGnBeLiW.mjs +0 -9
  1332. package/dist/schema-CGnBeLiW.mjs.map +0 -1
  1333. package/dist/schema-DYr-Vd-L.mjs +0 -420
  1334. package/dist/schema-DYr-Vd-L.mjs.map +0 -1
  1335. package/dist/scopes-BhWvBavj.mjs +0 -27
  1336. package/dist/scopes-BhWvBavj.mjs.map +0 -1
  1337. package/dist/search-C-qDk4kx.mjs +0 -439
  1338. package/dist/search-C-qDk4kx.mjs.map +0 -1
  1339. package/dist/secrets-rEtHt-6z.mjs +0 -330
  1340. package/dist/secrets-rEtHt-6z.mjs.map +0 -1
  1341. package/dist/sections-B_nYvlwn.mjs +0 -346
  1342. package/dist/sections-B_nYvlwn.mjs.map +0 -1
  1343. package/dist/seo-926NRIgt.mjs +0 -133
  1344. package/dist/seo-926NRIgt.mjs.map +0 -1
  1345. package/dist/seo-CVWkdv6x.mjs +0 -113
  1346. package/dist/seo-CVWkdv6x.mjs.map +0 -1
  1347. package/dist/service-CJl3ZAYs.mjs +0 -195
  1348. package/dist/service-CJl3ZAYs.mjs.map +0 -1
  1349. package/dist/session-user-BlMgqCHS.mjs +0 -51
  1350. package/dist/session-user-BlMgqCHS.mjs.map +0 -1
  1351. package/dist/settings--wobrkkC.mjs +0 -258
  1352. package/dist/settings--wobrkkC.mjs.map +0 -1
  1353. package/dist/settings-Cwm6o2jY.mjs +0 -51
  1354. package/dist/settings-Cwm6o2jY.mjs.map +0 -1
  1355. package/dist/setup-complete-DQbClIN2.mjs +0 -26
  1356. package/dist/setup-complete-DQbClIN2.mjs.map +0 -1
  1357. package/dist/setup-nonce-DZCFS2sn.mjs +0 -25
  1358. package/dist/setup-nonce-DZCFS2sn.mjs.map +0 -1
  1359. package/dist/single-flight-cache-BPuGPdcN.mjs +0 -104
  1360. package/dist/single-flight-cache-BPuGPdcN.mjs.map +0 -1
  1361. package/dist/site-url-BrxA_E9H.mjs +0 -16
  1362. package/dist/site-url-BrxA_E9H.mjs.map +0 -1
  1363. package/dist/slugify-B994zkXC.mjs +0 -17
  1364. package/dist/slugify-B994zkXC.mjs.map +0 -1
  1365. package/dist/snapshot--OCDTqdb.mjs +0 -216
  1366. package/dist/snapshot--OCDTqdb.mjs.map +0 -1
  1367. package/dist/ssrf-5sIM5jzl.mjs +0 -349
  1368. package/dist/ssrf-5sIM5jzl.mjs.map +0 -1
  1369. package/dist/state-BpFVsJZB.mjs +0 -136
  1370. package/dist/state-BpFVsJZB.mjs.map +0 -1
  1371. package/dist/status-B777-dXz.mjs +0 -30
  1372. package/dist/status-B777-dXz.mjs.map +0 -1
  1373. package/dist/target-BmR0iTwz.mjs +0 -27
  1374. package/dist/target-BmR0iTwz.mjs.map +0 -1
  1375. package/dist/taxonomies-DkAkMupr.mjs +0 -837
  1376. package/dist/taxonomies-DkAkMupr.mjs.map +0 -1
  1377. package/dist/taxonomies-Wfy_Lg12.mjs +0 -698
  1378. package/dist/taxonomies-Wfy_Lg12.mjs.map +0 -1
  1379. package/dist/taxonomy-tJepplLL.mjs +0 -484
  1380. package/dist/taxonomy-tJepplLL.mjs.map +0 -1
  1381. package/dist/tokens-BCO1oruF.mjs +0 -171
  1382. package/dist/tokens-BCO1oruF.mjs.map +0 -1
  1383. package/dist/transaction-0KOpOyMu.mjs +0 -29
  1384. package/dist/transaction-0KOpOyMu.mjs.map +0 -1
  1385. package/dist/transport-Dr3qtwXC.mjs +0 -136
  1386. package/dist/transport-Dr3qtwXC.mjs.map +0 -1
  1387. package/dist/transport-xh6YKW2G.d.mts +0 -42
  1388. package/dist/transport-xh6YKW2G.d.mts.map +0 -1
  1389. package/dist/trusted-proxy-BR5F1Otp.mjs +0 -51
  1390. package/dist/trusted-proxy-BR5F1Otp.mjs.map +0 -1
  1391. package/dist/types-3qNFPlci.mjs +0 -16
  1392. package/dist/types-3qNFPlci.mjs.map +0 -1
  1393. package/dist/types-75KIqzL9.mjs +0 -142
  1394. package/dist/types-75KIqzL9.mjs.map +0 -1
  1395. package/dist/types-B6GrPic4.d.mts +0 -1335
  1396. package/dist/types-B6GrPic4.d.mts.map +0 -1
  1397. package/dist/types-BuHW4xDE.d.mts +0 -259
  1398. package/dist/types-BuHW4xDE.d.mts.map +0 -1
  1399. package/dist/types-C00oyCZp.d.mts +0 -198
  1400. package/dist/types-C00oyCZp.d.mts.map +0 -1
  1401. package/dist/types-CDtkNSFQ.d.mts +0 -75
  1402. package/dist/types-CDtkNSFQ.d.mts.map +0 -1
  1403. package/dist/types-CPeXo1wF.d.mts +0 -124
  1404. package/dist/types-CPeXo1wF.d.mts.map +0 -1
  1405. package/dist/types-CQPWhPxE.mjs +0 -92
  1406. package/dist/types-CQPWhPxE.mjs.map +0 -1
  1407. package/dist/types-CXFkwEGC.d.mts +0 -198
  1408. package/dist/types-CXFkwEGC.d.mts.map +0 -1
  1409. package/dist/types-DM3vioBY.mjs +0 -18
  1410. package/dist/types-DM3vioBY.mjs.map +0 -1
  1411. package/dist/types-DczELMop.d.mts +0 -363
  1412. package/dist/types-DczELMop.d.mts.map +0 -1
  1413. package/dist/types-DfuTR6dL.mjs +0 -3
  1414. package/dist/types-FV23hEoW.d.mts +0 -743
  1415. package/dist/types-FV23hEoW.d.mts.map +0 -1
  1416. package/dist/types-xDMtUFnO.d.mts +0 -257
  1417. package/dist/types-xDMtUFnO.d.mts.map +0 -1
  1418. package/dist/upload-attempts-BsqoQ1fn.mjs +0 -27
  1419. package/dist/upload-attempts-BsqoQ1fn.mjs.map +0 -1
  1420. package/dist/url-pattern-D4c2czpJ.mjs +0 -33
  1421. package/dist/url-pattern-D4c2czpJ.mjs.map +0 -1
  1422. package/dist/user-BTZ40aq6.mjs +0 -171
  1423. package/dist/user-BTZ40aq6.mjs.map +0 -1
  1424. package/dist/utils-BKvNjjhY.mjs +0 -435
  1425. package/dist/utils-BKvNjjhY.mjs.map +0 -1
  1426. package/dist/validate-BpwoDOgt.mjs +0 -120
  1427. package/dist/validate-BpwoDOgt.mjs.map +0 -1
  1428. package/dist/validate-DE_LRwo9.mjs +0 -379
  1429. package/dist/validate-DE_LRwo9.mjs.map +0 -1
  1430. package/dist/validate-DUP27OYD.d.mts +0 -400
  1431. package/dist/validate-DUP27OYD.d.mts.map +0 -1
  1432. package/dist/validation-BMImFJ11.mjs +0 -153
  1433. package/dist/validation-BMImFJ11.mjs.map +0 -1
  1434. package/dist/version-Bii3suaO.mjs +0 -7
  1435. package/dist/version-Bii3suaO.mjs.map +0 -1
  1436. package/dist/widgets-D3gJ10xU.mjs +0 -122
  1437. package/dist/widgets-D3gJ10xU.mjs.map +0 -1
  1438. package/dist/wxr-taxonomies-B2Og_6rU.d.mts +0 -34
  1439. package/dist/wxr-taxonomies-B2Og_6rU.d.mts.map +0 -1
  1440. package/dist/wxr-taxonomies-Cxngsjwo.mjs +0 -406
  1441. package/dist/wxr-taxonomies-Cxngsjwo.mjs.map +0 -1
  1442. package/dist/zod-generator-BuYSQJB7.mjs +0 -331
  1443. package/dist/zod-generator-BuYSQJB7.mjs.map +0 -1
  1444. /package/dist/{api-tokens-BfYts-sq.mjs → api-tokens-DS1VzN7_.mjs} +0 -0
  1445. /package/dist/{ssrf-Dg3cIT-b.mjs → ssrf-BRpTDMV6.mjs} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"dist-89xCrGqi.mjs","names":[],"sources":["../../../node_modules/.pnpm/image-size@2.0.2_patch_hash=77c12533e3a635c4066c55da8952f4912e8210416539dc1249550fa639271595/node_modules/image-size/dist/index.mjs"],"sourcesContent":["// lib/types/utils.ts\nvar decoder = new TextDecoder();\nvar toUTF8String = (input, start = 0, end = input.length) => decoder.decode(input.slice(start, end));\nvar toHexString = (input, start = 0, end = input.length) => input.slice(start, end).reduce((memo, i) => memo + `0${i.toString(16)}`.slice(-2), \"\");\nvar getView = (input, offset) => new DataView(input.buffer, input.byteOffset + offset);\nvar readInt16LE = (input, offset = 0) => getView(input, offset).getInt16(0, true);\nvar readUInt16BE = (input, offset = 0) => getView(input, offset).getUint16(0, false);\nvar readUInt16LE = (input, offset = 0) => getView(input, offset).getUint16(0, true);\nvar readUInt24LE = (input, offset = 0) => {\n const view = getView(input, offset);\n return view.getUint16(0, true) + (view.getUint8(2) << 16);\n};\nvar readInt32LE = (input, offset = 0) => getView(input, offset).getInt32(0, true);\nvar readUInt32BE = (input, offset = 0) => getView(input, offset).getUint32(0, false);\nvar readUInt32LE = (input, offset = 0) => getView(input, offset).getUint32(0, true);\nvar readUInt64 = (input, offset, isBigEndian) => getView(input, offset).getBigUint64(0, !isBigEndian);\nvar methods = {\n readUInt16BE,\n readUInt16LE,\n readUInt32BE,\n readUInt32LE\n};\nfunction readUInt(input, bits, offset = 0, isBigEndian = false) {\n const endian = isBigEndian ? \"BE\" : \"LE\";\n const methodName = `readUInt${bits}${endian}`;\n return methods[methodName](input, offset);\n}\nfunction readBox(input, offset) {\n if (input.length - offset < 4) return;\n const boxSize = readUInt32BE(input, offset);\n if (input.length - offset < boxSize) return;\n return {\n name: toUTF8String(input, 4 + offset, 8 + offset),\n offset,\n size: boxSize\n };\n}\nfunction findBox(input, boxName, currentOffset) {\n while (currentOffset < input.length) {\n const box = readBox(input, currentOffset);\n if (!box) break;\n if (box.name === boxName) return box;\n currentOffset += box.size > 0 ? box.size : 8;\n }\n}\n\n// lib/types/bmp.ts\nvar BMP = {\n validate: (input) => toUTF8String(input, 0, 2) === \"BM\",\n calculate: (input) => ({\n height: Math.abs(readInt32LE(input, 22)),\n width: readUInt32LE(input, 18)\n })\n};\n\n// lib/types/ico.ts\nvar TYPE_ICON = 1;\nvar SIZE_HEADER = 2 + 2 + 2;\nvar SIZE_IMAGE_ENTRY = 1 + 1 + 1 + 1 + 2 + 2 + 4 + 4;\nfunction getSizeFromOffset(input, offset) {\n const value = input[offset];\n return value === 0 ? 256 : value;\n}\nfunction getImageSize(input, imageIndex) {\n const offset = SIZE_HEADER + imageIndex * SIZE_IMAGE_ENTRY;\n return {\n height: getSizeFromOffset(input, offset + 1),\n width: getSizeFromOffset(input, offset)\n };\n}\nvar ICO = {\n validate(input) {\n const reserved = readUInt16LE(input, 0);\n const imageCount = readUInt16LE(input, 4);\n if (reserved !== 0 || imageCount === 0) return false;\n const imageType = readUInt16LE(input, 2);\n return imageType === TYPE_ICON;\n },\n calculate(input) {\n const nbImages = readUInt16LE(input, 4);\n const imageSize2 = getImageSize(input, 0);\n if (nbImages === 1) return imageSize2;\n const images = [];\n for (let imageIndex = 0; imageIndex < nbImages; imageIndex += 1) {\n images.push(getImageSize(input, imageIndex));\n }\n return {\n width: imageSize2.width,\n height: imageSize2.height,\n images\n };\n }\n};\n\n// lib/types/cur.ts\nvar TYPE_CURSOR = 2;\nvar CUR = {\n validate(input) {\n const reserved = readUInt16LE(input, 0);\n const imageCount = readUInt16LE(input, 4);\n if (reserved !== 0 || imageCount === 0) return false;\n const imageType = readUInt16LE(input, 2);\n return imageType === TYPE_CURSOR;\n },\n calculate: (input) => ICO.calculate(input)\n};\n\n// lib/types/dds.ts\nvar DDS = {\n validate: (input) => readUInt32LE(input, 0) === 542327876,\n calculate: (input) => ({\n height: readUInt32LE(input, 12),\n width: readUInt32LE(input, 16)\n })\n};\n\n// lib/types/gif.ts\nvar gifRegexp = /^GIF8[79]a/;\nvar GIF = {\n validate: (input) => gifRegexp.test(toUTF8String(input, 0, 6)),\n calculate: (input) => ({\n height: readUInt16LE(input, 8),\n width: readUInt16LE(input, 6)\n })\n};\n\n// lib/types/heif.ts\nvar brandMap = {\n avif: \"avif\",\n mif1: \"heif\",\n msf1: \"heif\",\n // heif-sequence\n heic: \"heic\",\n heix: \"heic\",\n hevc: \"heic\",\n // heic-sequence\n hevx: \"heic\"\n // heic-sequence\n};\nvar HEIF = {\n validate(input) {\n const boxType = toUTF8String(input, 4, 8);\n if (boxType !== \"ftyp\") return false;\n const ftypBox = findBox(input, \"ftyp\", 0);\n if (!ftypBox) return false;\n const brand = toUTF8String(input, ftypBox.offset + 8, ftypBox.offset + 12);\n return brand in brandMap;\n },\n calculate(input) {\n const metaBox = findBox(input, \"meta\", 0);\n const iprpBox = metaBox && findBox(input, \"iprp\", metaBox.offset + 12);\n const ipcoBox = iprpBox && findBox(input, \"ipco\", iprpBox.offset + 8);\n if (!ipcoBox) {\n throw new TypeError(\"Invalid HEIF, no ipco box found\");\n }\n const type = toUTF8String(input, 8, 12);\n const images = [];\n let currentOffset = ipcoBox.offset + 8;\n while (currentOffset < ipcoBox.offset + ipcoBox.size) {\n const ispeBox = findBox(input, \"ispe\", currentOffset);\n if (!ispeBox) break;\n const rawWidth = readUInt32BE(input, ispeBox.offset + 12);\n const rawHeight = readUInt32BE(input, ispeBox.offset + 16);\n const clapBox = findBox(input, \"clap\", currentOffset);\n let width = rawWidth;\n let height = rawHeight;\n if (clapBox && clapBox.offset < ipcoBox.offset + ipcoBox.size) {\n const cropRight = readUInt32BE(input, clapBox.offset + 12);\n width = rawWidth - cropRight;\n }\n images.push({ height, width });\n currentOffset = ispeBox.offset + (ispeBox.size > 0 ? ispeBox.size : 8);\n }\n if (images.length === 0) {\n throw new TypeError(\"Invalid HEIF, no sizes found\");\n }\n return {\n width: images[0].width,\n height: images[0].height,\n type,\n ...images.length > 1 ? { images } : {}\n };\n }\n};\n\n// lib/types/icns.ts\nvar SIZE_HEADER2 = 4 + 4;\nvar FILE_LENGTH_OFFSET = 4;\nvar ENTRY_LENGTH_OFFSET = 4;\nvar ICON_TYPE_SIZE = {\n ICON: 32,\n \"ICN#\": 32,\n // m => 16 x 16\n \"icm#\": 16,\n icm4: 16,\n icm8: 16,\n // s => 16 x 16\n \"ics#\": 16,\n ics4: 16,\n ics8: 16,\n is32: 16,\n s8mk: 16,\n icp4: 16,\n // l => 32 x 32\n icl4: 32,\n icl8: 32,\n il32: 32,\n l8mk: 32,\n icp5: 32,\n ic11: 32,\n // h => 48 x 48\n ich4: 48,\n ich8: 48,\n ih32: 48,\n h8mk: 48,\n // . => 64 x 64\n icp6: 64,\n ic12: 32,\n // t => 128 x 128\n it32: 128,\n t8mk: 128,\n ic07: 128,\n // . => 256 x 256\n ic08: 256,\n ic13: 256,\n // . => 512 x 512\n ic09: 512,\n ic14: 512,\n // . => 1024 x 1024\n ic10: 1024\n};\nfunction readImageHeader(input, imageOffset) {\n const imageLengthOffset = imageOffset + ENTRY_LENGTH_OFFSET;\n return [\n toUTF8String(input, imageOffset, imageLengthOffset),\n readUInt32BE(input, imageLengthOffset)\n ];\n}\nfunction getImageSize2(type) {\n const size = ICON_TYPE_SIZE[type];\n return { width: size, height: size, type };\n}\nvar ICNS = {\n validate: (input) => toUTF8String(input, 0, 4) === \"icns\",\n calculate(input) {\n const inputLength = input.length;\n const fileLength = readUInt32BE(input, FILE_LENGTH_OFFSET);\n let imageOffset = SIZE_HEADER2;\n const images = [];\n while (imageOffset < fileLength && imageOffset < inputLength) {\n const imageHeader = readImageHeader(input, imageOffset);\n const imageSize2 = getImageSize2(imageHeader[0]);\n images.push(imageSize2);\n imageOffset += imageHeader[1] > 0 ? imageHeader[1] : 8;\n }\n if (images.length === 0) {\n throw new TypeError(\"Invalid ICNS, no sizes found\");\n }\n return {\n width: images[0].width,\n height: images[0].height,\n ...images.length > 1 ? { images } : {}\n };\n }\n};\n\n// lib/types/j2c.ts\nvar J2C = {\n // TODO: this doesn't seem right. SIZ marker doesn't have to be right after the SOC\n validate: (input) => readUInt32BE(input, 0) === 4283432785,\n calculate: (input) => ({\n height: readUInt32BE(input, 12),\n width: readUInt32BE(input, 8)\n })\n};\n\n// lib/types/jp2.ts\nvar JP2 = {\n validate(input) {\n const boxType = toUTF8String(input, 4, 8);\n if (boxType !== \"jP \") return false;\n const ftypBox = findBox(input, \"ftyp\", 0);\n if (!ftypBox) return false;\n const brand = toUTF8String(input, ftypBox.offset + 8, ftypBox.offset + 12);\n return brand === \"jp2 \";\n },\n calculate(input) {\n const jp2hBox = findBox(input, \"jp2h\", 0);\n const ihdrBox = jp2hBox && findBox(input, \"ihdr\", jp2hBox.offset + 8);\n if (ihdrBox) {\n return {\n height: readUInt32BE(input, ihdrBox.offset + 8),\n width: readUInt32BE(input, ihdrBox.offset + 12)\n };\n }\n throw new TypeError(\"Unsupported JPEG 2000 format\");\n }\n};\n\n// lib/types/jpg.ts\nvar EXIF_MARKER = \"45786966\";\nvar APP1_DATA_SIZE_BYTES = 2;\nvar EXIF_HEADER_BYTES = 6;\nvar TIFF_BYTE_ALIGN_BYTES = 2;\nvar BIG_ENDIAN_BYTE_ALIGN = \"4d4d\";\nvar LITTLE_ENDIAN_BYTE_ALIGN = \"4949\";\nvar IDF_ENTRY_BYTES = 12;\nvar NUM_DIRECTORY_ENTRIES_BYTES = 2;\nfunction isEXIF(input) {\n return toHexString(input, 2, 6) === EXIF_MARKER;\n}\nfunction extractSize(input, index) {\n return {\n height: readUInt16BE(input, index),\n width: readUInt16BE(input, index + 2)\n };\n}\nfunction extractOrientation(exifBlock, isBigEndian) {\n const idfOffset = 8;\n const offset = EXIF_HEADER_BYTES + idfOffset;\n const idfDirectoryEntries = readUInt(exifBlock, 16, offset, isBigEndian);\n for (let directoryEntryNumber = 0; directoryEntryNumber < idfDirectoryEntries; directoryEntryNumber++) {\n const start = offset + NUM_DIRECTORY_ENTRIES_BYTES + directoryEntryNumber * IDF_ENTRY_BYTES;\n const end = start + IDF_ENTRY_BYTES;\n if (start > exifBlock.length) {\n return;\n }\n const block = exifBlock.slice(start, end);\n const tagNumber = readUInt(block, 16, 0, isBigEndian);\n if (tagNumber === 274) {\n const dataFormat = readUInt(block, 16, 2, isBigEndian);\n if (dataFormat !== 3) {\n return;\n }\n const numberOfComponents = readUInt(block, 32, 4, isBigEndian);\n if (numberOfComponents !== 1) {\n return;\n }\n return readUInt(block, 16, 8, isBigEndian);\n }\n }\n}\nfunction validateExifBlock(input, index) {\n const exifBlock = input.slice(APP1_DATA_SIZE_BYTES, index);\n const byteAlign = toHexString(\n exifBlock,\n EXIF_HEADER_BYTES,\n EXIF_HEADER_BYTES + TIFF_BYTE_ALIGN_BYTES\n );\n const isBigEndian = byteAlign === BIG_ENDIAN_BYTE_ALIGN;\n const isLittleEndian = byteAlign === LITTLE_ENDIAN_BYTE_ALIGN;\n if (isBigEndian || isLittleEndian) {\n return extractOrientation(exifBlock, isBigEndian);\n }\n}\nfunction validateInput(input, index) {\n if (index > input.length) {\n throw new TypeError(\"Corrupt JPG, exceeded buffer limits\");\n }\n}\nvar JPG = {\n validate: (input) => toHexString(input, 0, 2) === \"ffd8\",\n calculate(_input) {\n let input = _input.slice(4);\n let orientation;\n let next;\n while (input.length) {\n const i = readUInt16BE(input, 0);\n validateInput(input, i);\n if (input[i] !== 255) {\n input = input.slice(1);\n continue;\n }\n if (isEXIF(input)) {\n orientation = validateExifBlock(input, i);\n }\n next = input[i + 1];\n if (next === 192 || next === 193 || next === 194) {\n const size = extractSize(input, i + 5);\n if (!orientation) {\n return size;\n }\n return {\n height: size.height,\n orientation,\n width: size.width\n };\n }\n input = input.slice(i + 2);\n }\n throw new TypeError(\"Invalid JPG, no size found\");\n }\n};\n\n// lib/utils/bit-reader.ts\nvar BitReader = class {\n constructor(input, endianness) {\n this.input = input;\n this.endianness = endianness;\n // Skip the first 16 bits (2 bytes) of signature\n this.byteOffset = 2;\n this.bitOffset = 0;\n }\n /** Reads a specified number of bits, and move the offset */\n getBits(length = 1) {\n let result = 0;\n let bitsRead = 0;\n while (bitsRead < length) {\n if (this.byteOffset >= this.input.length) {\n throw new Error(\"Reached end of input\");\n }\n const currentByte = this.input[this.byteOffset];\n const bitsLeft = 8 - this.bitOffset;\n const bitsToRead = Math.min(length - bitsRead, bitsLeft);\n if (this.endianness === \"little-endian\") {\n const mask = (1 << bitsToRead) - 1;\n const bits = currentByte >> this.bitOffset & mask;\n result |= bits << bitsRead;\n } else {\n const mask = (1 << bitsToRead) - 1 << 8 - this.bitOffset - bitsToRead;\n const bits = (currentByte & mask) >> 8 - this.bitOffset - bitsToRead;\n result = result << bitsToRead | bits;\n }\n bitsRead += bitsToRead;\n this.bitOffset += bitsToRead;\n if (this.bitOffset === 8) {\n this.byteOffset++;\n this.bitOffset = 0;\n }\n }\n return result;\n }\n};\n\n// lib/types/jxl-stream.ts\nfunction calculateImageDimension(reader, isSmallImage) {\n if (isSmallImage) {\n return 8 * (1 + reader.getBits(5));\n }\n const sizeClass = reader.getBits(2);\n const extraBits = [9, 13, 18, 30][sizeClass];\n return 1 + reader.getBits(extraBits);\n}\nfunction calculateImageWidth(reader, isSmallImage, widthMode, height) {\n if (isSmallImage && widthMode === 0) {\n return 8 * (1 + reader.getBits(5));\n }\n if (widthMode === 0) {\n return calculateImageDimension(reader, false);\n }\n const aspectRatios = [1, 1.2, 4 / 3, 1.5, 16 / 9, 5 / 4, 2];\n return Math.floor(height * aspectRatios[widthMode - 1]);\n}\nvar JXLStream = {\n validate: (input) => {\n return toHexString(input, 0, 2) === \"ff0a\";\n },\n calculate(input) {\n const reader = new BitReader(input, \"little-endian\");\n const isSmallImage = reader.getBits(1) === 1;\n const height = calculateImageDimension(reader, isSmallImage);\n const widthMode = reader.getBits(3);\n const width = calculateImageWidth(reader, isSmallImage, widthMode, height);\n return { width, height };\n }\n};\n\n// lib/types/jxl.ts\nfunction extractCodestream(input) {\n const jxlcBox = findBox(input, \"jxlc\", 0);\n if (jxlcBox) {\n return input.slice(jxlcBox.offset + 8, jxlcBox.offset + jxlcBox.size);\n }\n const partialStreams = extractPartialStreams(input);\n if (partialStreams.length > 0) {\n return concatenateCodestreams(partialStreams);\n }\n return void 0;\n}\nfunction extractPartialStreams(input) {\n const partialStreams = [];\n let offset = 0;\n while (offset < input.length) {\n const jxlpBox = findBox(input, \"jxlp\", offset);\n if (!jxlpBox) break;\n partialStreams.push(\n input.slice(jxlpBox.offset + 12, jxlpBox.offset + jxlpBox.size)\n );\n offset = jxlpBox.offset + (jxlpBox.size > 0 ? jxlpBox.size : 8);\n }\n return partialStreams;\n}\nfunction concatenateCodestreams(partialCodestreams) {\n const totalLength = partialCodestreams.reduce(\n (acc, curr) => acc + curr.length,\n 0\n );\n const codestream = new Uint8Array(totalLength);\n let position = 0;\n for (const partial of partialCodestreams) {\n codestream.set(partial, position);\n position += partial.length;\n }\n return codestream;\n}\nvar JXL = {\n validate: (input) => {\n const boxType = toUTF8String(input, 4, 8);\n if (boxType !== \"JXL \") return false;\n const ftypBox = findBox(input, \"ftyp\", 0);\n if (!ftypBox) return false;\n const brand = toUTF8String(input, ftypBox.offset + 8, ftypBox.offset + 12);\n return brand === \"jxl \";\n },\n calculate(input) {\n const codestream = extractCodestream(input);\n if (codestream) return JXLStream.calculate(codestream);\n throw new Error(\"No codestream found in JXL container\");\n }\n};\n\n// lib/types/ktx.ts\nvar KTX = {\n validate: (input) => {\n const signature = toUTF8String(input, 1, 7);\n return [\"KTX 11\", \"KTX 20\"].includes(signature);\n },\n calculate: (input) => {\n const type = input[5] === 49 ? \"ktx\" : \"ktx2\";\n const offset = type === \"ktx\" ? 36 : 20;\n return {\n height: readUInt32LE(input, offset + 4),\n width: readUInt32LE(input, offset),\n type\n };\n }\n};\n\n// lib/types/png.ts\nvar pngSignature = \"PNG\\r\\n\u001a\\n\";\nvar pngImageHeaderChunkName = \"IHDR\";\nvar pngFriedChunkName = \"CgBI\";\nvar PNG = {\n validate(input) {\n if (pngSignature === toUTF8String(input, 1, 8)) {\n let chunkName = toUTF8String(input, 12, 16);\n if (chunkName === pngFriedChunkName) {\n chunkName = toUTF8String(input, 28, 32);\n }\n if (chunkName !== pngImageHeaderChunkName) {\n throw new TypeError(\"Invalid PNG\");\n }\n return true;\n }\n return false;\n },\n calculate(input) {\n if (toUTF8String(input, 12, 16) === pngFriedChunkName) {\n return {\n height: readUInt32BE(input, 36),\n width: readUInt32BE(input, 32)\n };\n }\n return {\n height: readUInt32BE(input, 20),\n width: readUInt32BE(input, 16)\n };\n }\n};\n\n// lib/types/pnm.ts\nvar PNMTypes = {\n P1: \"pbm/ascii\",\n P2: \"pgm/ascii\",\n P3: \"ppm/ascii\",\n P4: \"pbm\",\n P5: \"pgm\",\n P6: \"ppm\",\n P7: \"pam\",\n PF: \"pfm\"\n};\nvar handlers = {\n default: (lines) => {\n let dimensions = [];\n while (lines.length > 0) {\n const line = lines.shift();\n if (line[0] === \"#\") {\n continue;\n }\n dimensions = line.split(\" \");\n break;\n }\n if (dimensions.length === 2) {\n return {\n height: Number.parseInt(dimensions[1], 10),\n width: Number.parseInt(dimensions[0], 10)\n };\n }\n throw new TypeError(\"Invalid PNM\");\n },\n pam: (lines) => {\n const size = {};\n while (lines.length > 0) {\n const line = lines.shift();\n if (line.length > 16 || line.charCodeAt(0) > 128) {\n continue;\n }\n const [key, value] = line.split(\" \");\n if (key && value) {\n size[key.toLowerCase()] = Number.parseInt(value, 10);\n }\n if (size.height && size.width) {\n break;\n }\n }\n if (size.height && size.width) {\n return {\n height: size.height,\n width: size.width\n };\n }\n throw new TypeError(\"Invalid PAM\");\n }\n};\nvar PNM = {\n validate: (input) => toUTF8String(input, 0, 2) in PNMTypes,\n calculate(input) {\n const signature = toUTF8String(input, 0, 2);\n const type = PNMTypes[signature];\n const lines = toUTF8String(input, 3).split(/[\\r\\n]+/);\n const handler = handlers[type] || handlers.default;\n return handler(lines);\n }\n};\n\n// lib/types/psd.ts\nvar PSD = {\n validate: (input) => toUTF8String(input, 0, 4) === \"8BPS\",\n calculate: (input) => ({\n height: readUInt32BE(input, 14),\n width: readUInt32BE(input, 18)\n })\n};\n\n// lib/types/svg.ts\nvar svgReg = /<svg\\s([^>\"']|\"[^\"]*\"|'[^']*')*>/;\nvar extractorRegExps = {\n height: /\\sheight=(['\"])([^%]+?)\\1/,\n root: svgReg,\n viewbox: /\\sviewBox=(['\"])(.+?)\\1/i,\n width: /\\swidth=(['\"])([^%]+?)\\1/\n};\nvar INCH_CM = 2.54;\nvar units = {\n in: 96,\n cm: 96 / INCH_CM,\n em: 16,\n ex: 8,\n m: 96 / INCH_CM * 100,\n mm: 96 / INCH_CM / 10,\n pc: 96 / 72 / 12,\n pt: 96 / 72,\n px: 1\n};\nvar unitsReg = new RegExp(\n `^([0-9.]+(?:e\\\\d+)?)(${Object.keys(units).join(\"|\")})?$`\n);\nfunction parseLength(len) {\n const m = unitsReg.exec(len);\n if (!m) {\n return void 0;\n }\n return Math.round(Number(m[1]) * (units[m[2]] || 1));\n}\nfunction parseViewbox(viewbox) {\n const bounds = viewbox.split(\" \");\n return {\n height: parseLength(bounds[3]),\n width: parseLength(bounds[2])\n };\n}\nfunction parseAttributes(root) {\n const width = root.match(extractorRegExps.width);\n const height = root.match(extractorRegExps.height);\n const viewbox = root.match(extractorRegExps.viewbox);\n return {\n height: height && parseLength(height[2]),\n viewbox: viewbox && parseViewbox(viewbox[2]),\n width: width && parseLength(width[2])\n };\n}\nfunction calculateByDimensions(attrs) {\n return {\n height: attrs.height,\n width: attrs.width\n };\n}\nfunction calculateByViewbox(attrs, viewbox) {\n const ratio = viewbox.width / viewbox.height;\n if (attrs.width) {\n return {\n height: Math.floor(attrs.width / ratio),\n width: attrs.width\n };\n }\n if (attrs.height) {\n return {\n height: attrs.height,\n width: Math.floor(attrs.height * ratio)\n };\n }\n return {\n height: viewbox.height,\n width: viewbox.width\n };\n}\nvar SVG = {\n // Scan only the first kilo-byte to speed up the check on larger files\n validate: (input) => svgReg.test(toUTF8String(input, 0, 1e3)),\n calculate(input) {\n const root = toUTF8String(input).match(extractorRegExps.root);\n if (root) {\n const attrs = parseAttributes(root[0]);\n if (attrs.width && attrs.height) {\n return calculateByDimensions(attrs);\n }\n if (attrs.viewbox) {\n return calculateByViewbox(attrs, attrs.viewbox);\n }\n }\n throw new TypeError(\"Invalid SVG\");\n }\n};\n\n// lib/types/tga.ts\nvar TGA = {\n validate(input) {\n return readUInt16LE(input, 0) === 0 && readUInt16LE(input, 4) === 0;\n },\n calculate(input) {\n return {\n height: readUInt16LE(input, 14),\n width: readUInt16LE(input, 12)\n };\n }\n};\n\n// lib/types/tiff.ts\nvar CONSTANTS = {\n TAG: {\n WIDTH: 256,\n HEIGHT: 257,\n COMPRESSION: 259\n },\n TYPE: {\n SHORT: 3,\n LONG: 4,\n LONG8: 16\n },\n ENTRY_SIZE: {\n STANDARD: 12,\n BIG: 20\n },\n COUNT_SIZE: {\n STANDARD: 2,\n BIG: 8\n }\n};\nfunction readIFD(input, { isBigEndian, isBigTiff }) {\n const ifdOffset = isBigTiff ? Number(readUInt64(input, 8, isBigEndian)) : readUInt(input, 32, 4, isBigEndian);\n const entryCountSize = isBigTiff ? CONSTANTS.COUNT_SIZE.BIG : CONSTANTS.COUNT_SIZE.STANDARD;\n return input.slice(ifdOffset + entryCountSize);\n}\nfunction readTagValue(input, type, offset, isBigEndian) {\n switch (type) {\n case CONSTANTS.TYPE.SHORT:\n return readUInt(input, 16, offset, isBigEndian);\n case CONSTANTS.TYPE.LONG:\n return readUInt(input, 32, offset, isBigEndian);\n case CONSTANTS.TYPE.LONG8: {\n const value = Number(readUInt64(input, offset, isBigEndian));\n if (value > Number.MAX_SAFE_INTEGER) {\n throw new TypeError(\"Value too large\");\n }\n return value;\n }\n default:\n return 0;\n }\n}\nfunction nextTag(input, isBigTiff) {\n const entrySize = isBigTiff ? CONSTANTS.ENTRY_SIZE.BIG : CONSTANTS.ENTRY_SIZE.STANDARD;\n if (input.length > entrySize) {\n return input.slice(entrySize);\n }\n}\nfunction extractTags(input, { isBigEndian, isBigTiff }) {\n const tags = {};\n let temp = input;\n while (temp?.length) {\n const code = readUInt(temp, 16, 0, isBigEndian);\n const type = readUInt(temp, 16, 2, isBigEndian);\n const length = isBigTiff ? Number(readUInt64(temp, 4, isBigEndian)) : readUInt(temp, 32, 4, isBigEndian);\n if (code === 0) break;\n if (length === 1 && (type === CONSTANTS.TYPE.SHORT || type === CONSTANTS.TYPE.LONG || isBigTiff && type === CONSTANTS.TYPE.LONG8)) {\n const valueOffset = isBigTiff ? 12 : 8;\n tags[code] = readTagValue(temp, type, valueOffset, isBigEndian);\n }\n temp = nextTag(temp, isBigTiff);\n }\n return tags;\n}\nfunction determineFormat(input) {\n const signature = toUTF8String(input, 0, 2);\n const version = readUInt(input, 16, 2, signature === \"MM\");\n return {\n isBigEndian: signature === \"MM\",\n isBigTiff: version === 43\n };\n}\nfunction validateBigTIFFHeader(input, isBigEndian) {\n const byteSize = readUInt(input, 16, 4, isBigEndian);\n const reserved = readUInt(input, 16, 6, isBigEndian);\n if (byteSize !== 8 || reserved !== 0) {\n throw new TypeError(\"Invalid BigTIFF header\");\n }\n}\nvar signatures = /* @__PURE__ */ new Set([\n \"49492a00\",\n // Little Endian\n \"4d4d002a\",\n // Big Endian\n \"49492b00\",\n // BigTIFF Little Endian\n \"4d4d002b\"\n // BigTIFF Big Endian\n]);\nvar TIFF = {\n validate: (input) => {\n const signature = toHexString(input, 0, 4);\n return signatures.has(signature);\n },\n calculate(input) {\n const format = determineFormat(input);\n if (format.isBigTiff) {\n validateBigTIFFHeader(input, format.isBigEndian);\n }\n const ifdBuffer = readIFD(input, format);\n const tags = extractTags(ifdBuffer, format);\n const info = {\n height: tags[CONSTANTS.TAG.HEIGHT],\n width: tags[CONSTANTS.TAG.WIDTH],\n type: format.isBigTiff ? \"bigtiff\" : \"tiff\"\n };\n if (tags[CONSTANTS.TAG.COMPRESSION]) {\n info.compression = tags[CONSTANTS.TAG.COMPRESSION];\n }\n if (!info.width || !info.height) {\n throw new TypeError(\"Invalid Tiff. Missing tags\");\n }\n return info;\n }\n};\n\n// lib/types/webp.ts\nfunction calculateExtended(input) {\n return {\n height: 1 + readUInt24LE(input, 7),\n width: 1 + readUInt24LE(input, 4)\n };\n}\nfunction calculateLossless(input) {\n return {\n height: 1 + ((input[4] & 15) << 10 | input[3] << 2 | (input[2] & 192) >> 6),\n width: 1 + ((input[2] & 63) << 8 | input[1])\n };\n}\nfunction calculateLossy(input) {\n return {\n height: readInt16LE(input, 8) & 16383,\n width: readInt16LE(input, 6) & 16383\n };\n}\nvar WEBP = {\n validate(input) {\n const riffHeader = \"RIFF\" === toUTF8String(input, 0, 4);\n const webpHeader = \"WEBP\" === toUTF8String(input, 8, 12);\n const vp8Header = \"VP8\" === toUTF8String(input, 12, 15);\n return riffHeader && webpHeader && vp8Header;\n },\n calculate(_input) {\n const chunkHeader = toUTF8String(_input, 12, 16);\n const input = _input.slice(20, 30);\n if (chunkHeader === \"VP8X\") {\n const extendedHeader = input[0];\n const validStart = (extendedHeader & 192) === 0;\n const validEnd = (extendedHeader & 1) === 0;\n if (validStart && validEnd) {\n return calculateExtended(input);\n }\n throw new TypeError(\"Invalid WebP\");\n }\n if (chunkHeader === \"VP8 \" && input[0] !== 47) {\n return calculateLossy(input);\n }\n const signature = toHexString(input, 3, 6);\n if (chunkHeader === \"VP8L\" && signature !== \"9d012a\") {\n return calculateLossless(input);\n }\n throw new TypeError(\"Invalid WebP\");\n }\n};\n\n// lib/types/index.ts\nvar typeHandlers = /* @__PURE__ */ new Map([\n [\"bmp\", BMP],\n [\"cur\", CUR],\n [\"dds\", DDS],\n [\"gif\", GIF],\n [\"heif\", HEIF],\n [\"icns\", ICNS],\n [\"ico\", ICO],\n [\"j2c\", J2C],\n [\"jp2\", JP2],\n [\"jpg\", JPG],\n [\"jxl\", JXL],\n [\"jxl-stream\", JXLStream],\n [\"ktx\", KTX],\n [\"png\", PNG],\n [\"pnm\", PNM],\n [\"psd\", PSD],\n [\"svg\", SVG],\n [\"tga\", TGA],\n [\"tiff\", TIFF],\n [\"webp\", WEBP]\n]);\nvar types = Array.from(typeHandlers.keys());\n\n// lib/detector.ts\nvar firstBytes = /* @__PURE__ */ new Map([\n [0, \"heif\"],\n [56, \"psd\"],\n [66, \"bmp\"],\n [68, \"dds\"],\n [71, \"gif\"],\n [73, \"tiff\"],\n [77, \"tiff\"],\n [82, \"webp\"],\n [105, \"icns\"],\n [137, \"png\"],\n [255, \"jpg\"]\n]);\nfunction detector(input) {\n const byte = input[0];\n const type = firstBytes.get(byte);\n if (type && typeHandlers.get(type).validate(input)) {\n return type;\n }\n return types.find((type2) => typeHandlers.get(type2).validate(input));\n}\n\n// lib/lookup.ts\nvar globalOptions = {\n disabledTypes: []\n};\nfunction imageSize(input) {\n const type = detector(input);\n if (typeof type !== \"undefined\") {\n if (globalOptions.disabledTypes.indexOf(type) > -1) {\n throw new TypeError(`disabled file type: ${type}`);\n }\n const size = typeHandlers.get(type).calculate(input);\n if (size !== void 0) {\n size.type = size.type ?? type;\n if (size.images && size.images.length > 1) {\n const largestImage = size.images.reduce((largest, current) => {\n return current.width * current.height > largest.width * largest.height ? current : largest;\n }, size.images[0]);\n size.width = largestImage.width;\n size.height = largestImage.height;\n }\n return size;\n }\n }\n throw new TypeError(`unsupported file type: ${type}`);\n}\nvar disableTypes = (types2) => {\n globalOptions.disabledTypes = types2;\n};\n\nexport { imageSize as default, disableTypes, imageSize, types };\n"],"x_google_ignoreList":[0],"mappings":"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"}
@@ -1,50 +0,0 @@
1
- //#region src/plugins/email-console.ts
2
- /** Plugin ID for the dev console email provider */
3
- const DEV_CONSOLE_EMAIL_PLUGIN_ID = "emdash-console-email";
4
- /** Maximum number of emails to keep in memory */
5
- const MAX_STORED_EMAILS = 100;
6
- /**
7
- * In-memory store for dev emails.
8
- * Uses globalThis so the same array is shared across Vite SSR module
9
- * instances (the runtime and the route handler may load separate copies
10
- * of this module, but globalThis is always the same object).
11
- */
12
- const GLOBAL_KEY = Symbol.for("emdash:dev-emails");
13
- const g = globalThis;
14
- const storedEmails = (() => {
15
- const existing = g[GLOBAL_KEY];
16
- if (existing) return existing;
17
- const fresh = [];
18
- g[GLOBAL_KEY] = fresh;
19
- return fresh;
20
- })();
21
- /**
22
- * Get all stored dev emails (most recent first).
23
- */
24
- function getDevEmails() {
25
- return storedEmails.toReversed();
26
- }
27
- /**
28
- * Clear all stored dev emails.
29
- */
30
- function clearDevEmails() {
31
- storedEmails.length = 0;
32
- }
33
- /**
34
- * The email:deliver handler for the dev console provider.
35
- * Logs to console and stores in memory.
36
- */
37
- async function devConsoleEmailDeliver(event, _ctx) {
38
- const { message, source } = event;
39
- console.log(`\n📧 [dev-email] Email sent\n From: ${source}\n To: ${message.to}\n Subject: ${message.subject}\n Text: ${message.text.slice(0, 200)}${message.text.length > 200 ? "..." : ""}\n`);
40
- storedEmails.push({
41
- message,
42
- source,
43
- sentAt: (/* @__PURE__ */ new Date()).toISOString()
44
- });
45
- while (storedEmails.length > MAX_STORED_EMAILS) storedEmails.shift();
46
- }
47
-
48
- //#endregion
49
- export { getDevEmails as i, clearDevEmails as n, devConsoleEmailDeliver as r, DEV_CONSOLE_EMAIL_PLUGIN_ID as t };
50
- //# sourceMappingURL=email-console-Dzb6uGYa.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"email-console-Dzb6uGYa.mjs","names":[],"sources":["../src/plugins/email-console.ts"],"sourcesContent":["/**\n * Dev Console Email Provider\n *\n * Built-in plugin that registers email:deliver as an exclusive hook.\n * Logs emails to console and stores them in memory (capped at 100).\n * Auto-activated when import.meta.env.DEV is true and no other provider is selected.\n *\n */\n\nimport type { EmailDeliverEvent, EmailMessage, PluginContext } from \"./types.js\";\n\n/** Plugin ID for the dev console email provider */\nexport const DEV_CONSOLE_EMAIL_PLUGIN_ID = \"emdash-console-email\";\n\n/** Maximum number of emails to keep in memory */\nconst MAX_STORED_EMAILS = 100;\n\n/**\n * Stored email record (in-memory only)\n */\nexport interface StoredEmail {\n\tmessage: EmailMessage;\n\tsource: string;\n\tsentAt: string;\n}\n\n/**\n * In-memory store for dev emails.\n * Uses globalThis so the same array is shared across Vite SSR module\n * instances (the runtime and the route handler may load separate copies\n * of this module, but globalThis is always the same object).\n */\nconst GLOBAL_KEY = Symbol.for(\"emdash:dev-emails\");\nconst g = globalThis as Record<symbol, unknown>;\nconst storedEmails: StoredEmail[] = (() => {\n\t// eslint-disable-next-line typescript/no-unsafe-type-assertion -- globalThis singleton pattern (see request-context.ts)\n\tconst existing = g[GLOBAL_KEY] as StoredEmail[] | undefined;\n\tif (existing) return existing;\n\tconst fresh: StoredEmail[] = [];\n\tg[GLOBAL_KEY] = fresh;\n\treturn fresh;\n})();\n\n/**\n * Get all stored dev emails (most recent first).\n */\nexport function getDevEmails(): StoredEmail[] {\n\treturn storedEmails.toReversed();\n}\n\n/**\n * Clear all stored dev emails.\n */\nexport function clearDevEmails(): void {\n\tstoredEmails.length = 0;\n}\n\n/**\n * The email:deliver handler for the dev console provider.\n * Logs to console and stores in memory.\n */\nexport async function devConsoleEmailDeliver(\n\tevent: EmailDeliverEvent,\n\t_ctx: PluginContext,\n): Promise<void> {\n\tconst { message, source } = event;\n\n\tconsole.log(\n\t\t`\\n📧 [dev-email] Email sent\\n` +\n\t\t\t` From: ${source}\\n` +\n\t\t\t` To: ${message.to}\\n` +\n\t\t\t` Subject: ${message.subject}\\n` +\n\t\t\t` Text: ${message.text.slice(0, 200)}${message.text.length > 200 ? \"...\" : \"\"}\\n`,\n\t);\n\n\t// Store the email\n\tstoredEmails.push({\n\t\tmessage,\n\t\tsource,\n\t\tsentAt: new Date().toISOString(),\n\t});\n\n\t// Cap at MAX_STORED_EMAILS\n\twhile (storedEmails.length > MAX_STORED_EMAILS) {\n\t\tstoredEmails.shift();\n\t}\n}\n"],"mappings":";;AAYA,MAAa,8BAA8B;;AAG3C,MAAM,oBAAoB;;;;;;;AAiB1B,MAAM,aAAa,OAAO,IAAI,oBAAoB;AAClD,MAAM,IAAI;AACV,MAAM,sBAAqC;CAE1C,MAAM,WAAW,EAAE;AACnB,KAAI,SAAU,QAAO;CACrB,MAAM,QAAuB,EAAE;AAC/B,GAAE,cAAc;AAChB,QAAO;IACJ;;;;AAKJ,SAAgB,eAA8B;AAC7C,QAAO,aAAa,YAAY;;;;;AAMjC,SAAgB,iBAAuB;AACtC,cAAa,SAAS;;;;;;AAOvB,eAAsB,uBACrB,OACA,MACgB;CAChB,MAAM,EAAE,SAAS,WAAW;AAE5B,SAAQ,IACP,yCACa,OAAO,WACT,QAAQ,GAAG,gBACN,QAAQ,QAAQ,aACnB,QAAQ,KAAK,MAAM,GAAG,IAAI,GAAG,QAAQ,KAAK,SAAS,MAAM,QAAQ,GAAG,IACjF;AAGD,cAAa,KAAK;EACjB;EACA;EACA,yBAAQ,IAAI,MAAM,EAAC,aAAa;EAChC,CAAC;AAGF,QAAO,aAAa,SAAS,kBAC5B,cAAa,OAAO"}
@@ -1,194 +0,0 @@
1
- import { t as imageSize } from "./dist-89xCrGqi.mjs";
2
- import { n as normalizeMime } from "./mime-CUIG6x84.mjs";
3
- import { encode } from "blurhash";
4
-
5
- //#region src/media/placeholder.ts
6
- /**
7
- * Image Placeholder Generation
8
- *
9
- * Generates blurhash and dominant color from image buffers for LQIP support.
10
- * Decodes images via jpeg-js (pure JS) and upng-js (pure JS, uses pako for
11
- * deflate). No Node-specific dependencies — works in Workers and Node SSR.
12
- */
13
- const SUPPORTED_TYPES = {
14
- "image/jpeg": "jpeg",
15
- "image/jpg": "jpeg",
16
- "image/png": "png"
17
- };
18
- /** Max width for blurhash input. Encode is O(w*h*components), so downsample first. */
19
- const MAX_ENCODE_WIDTH = 32;
20
- /** Max decoded RGBA size (32 MB). Images exceeding this skip placeholder generation. */
21
- const MAX_DECODED_BYTES = 32 * 1024 * 1024;
22
- /**
23
- * Decode a JPEG buffer into raw RGBA pixel data.
24
- */
25
- async function decodeJpeg(buffer) {
26
- const { decode } = await import("jpeg-js");
27
- const result = decode(buffer, { useTArray: true });
28
- return {
29
- width: result.width,
30
- height: result.height,
31
- data: result.data
32
- };
33
- }
34
- /**
35
- * Decode a PNG buffer into raw RGBA pixel data.
36
- * Uses upng-js (pure JS with pako deflate) — no Node zlib dependency.
37
- */
38
- async function decodePng(buffer) {
39
- const UPNG = (await import("upng-js")).default;
40
- const img = UPNG.decode(buffer.buffer);
41
- const frames = UPNG.toRGBA8(img);
42
- const rgba = new Uint8Array(frames[0]);
43
- return {
44
- width: img.width,
45
- height: img.height,
46
- data: rgba
47
- };
48
- }
49
- /**
50
- * Extract the dominant color from RGBA pixel data.
51
- * Simple average of all non-transparent pixels.
52
- */
53
- function extractDominantColor(data, width, height) {
54
- let r = 0;
55
- let g = 0;
56
- let b = 0;
57
- let count = 0;
58
- const len = width * height * 4;
59
- for (let i = 0; i < len; i += 4) {
60
- if (data[i + 3] < 128) continue;
61
- r += data[i];
62
- g += data[i + 1];
63
- b += data[i + 2];
64
- count++;
65
- }
66
- if (count === 0) return "rgb(0,0,0)";
67
- return `rgb(${Math.round(r / count)},${Math.round(g / count)},${Math.round(b / count)})`;
68
- }
69
- /**
70
- * Read image dimensions from headers without decoding pixel data.
71
- * Returns null when the header cannot be parsed.
72
- *
73
- * Shared by every caller that needs pixel dimensions so the header is parsed
74
- * once per buffer, not re-read inside generatePlaceholder.
75
- */
76
- function readDimensions(buffer) {
77
- try {
78
- const result = imageSize(buffer);
79
- if (result.width != null && result.height != null) return {
80
- width: result.width,
81
- height: result.height
82
- };
83
- return null;
84
- } catch {
85
- return null;
86
- }
87
- }
88
- /**
89
- * Generate blurhash and dominant color from an image buffer.
90
- * Returns null for non-image MIME types or on failure.
91
- *
92
- * @param dimensions - Optional pre-known dimensions. When present they are
93
- * trusted verbatim (the caller has typically already read them via
94
- * readDimensions); otherwise dimensions are read from this buffer's header.
95
- * Generation is skipped (returns null) when no dimensions are available at
96
- * all, or when the decoded size (width * height * 4) exceeds
97
- * MAX_DECODED_BYTES — both guards avoid OOM from unbounded decodes on
98
- * memory-constrained runtimes.
99
- */
100
- async function generatePlaceholder(buffer, mimeType, dimensions) {
101
- const format = SUPPORTED_TYPES[normalizeMime(mimeType)];
102
- if (!format) return null;
103
- try {
104
- const dims = dimensions ?? readDimensions(buffer);
105
- if (!dims) return null;
106
- if (dims.width * dims.height * 4 > MAX_DECODED_BYTES) return null;
107
- const { width, height, data } = format === "jpeg" ? await decodeJpeg(buffer) : await decodePng(buffer);
108
- if (width === 0 || height === 0) return null;
109
- let encodePixels;
110
- let encodeWidth;
111
- let encodeHeight;
112
- if (width > MAX_ENCODE_WIDTH) {
113
- const scale = MAX_ENCODE_WIDTH / width;
114
- encodeWidth = MAX_ENCODE_WIDTH;
115
- encodeHeight = Math.max(1, Math.round(height * scale));
116
- encodePixels = downsample(data, width, height, encodeWidth, encodeHeight);
117
- } else {
118
- encodeWidth = width;
119
- encodeHeight = height;
120
- encodePixels = new Uint8ClampedArray(data.buffer, data.byteOffset, data.byteLength);
121
- }
122
- return {
123
- blurhash: encode(encodePixels, encodeWidth, encodeHeight, 4, 3),
124
- dominantColor: extractDominantColor(data, width, height)
125
- };
126
- } catch {
127
- return null;
128
- }
129
- }
130
- /**
131
- * Nearest-neighbor downsample of RGBA pixel data.
132
- */
133
- function downsample(src, srcW, srcH, dstW, dstH) {
134
- const dst = new Uint8ClampedArray(dstW * dstH * 4);
135
- for (let y = 0; y < dstH; y++) {
136
- const srcY = Math.floor(y * srcH / dstH);
137
- for (let x = 0; x < dstW; x++) {
138
- const srcX = Math.floor(x * srcW / dstW);
139
- const srcIdx = (srcY * srcW + srcX) * 4;
140
- const dstIdx = (y * dstW + x) * 4;
141
- dst[dstIdx] = src[srcIdx];
142
- dst[dstIdx + 1] = src[srcIdx + 1];
143
- dst[dstIdx + 2] = src[srcIdx + 2];
144
- dst[dstIdx + 3] = src[srcIdx + 3];
145
- }
146
- }
147
- return dst;
148
- }
149
-
150
- //#endregion
151
- //#region src/media/enrich.ts
152
- /**
153
- * Image Metadata Enrichment
154
- *
155
- * Single seam that derives image dimensions and LQIP placeholders (blurhash,
156
- * dominant color) from raw image bytes. Every server-side media-creation path
157
- * routes through this so records are populated consistently. Pure-JS and
158
- * Workers-safe (image-size reads headers only; generatePlaceholder guards
159
- * decode size).
160
- */
161
- /**
162
- * Derive dimensions + LQIP placeholders from image bytes.
163
- *
164
- * - Non-image content types return `{}`.
165
- * - `knownDimensions` (e.g. browser `naturalWidth/Height`) win over `image-size`
166
- * for the *stored record* because the browser applies EXIF orientation;
167
- * `image-size` reports raw header dimensions, which are swapped for
168
- * 90°/270°-rotated JPEGs. They are NOT used for the decode OOM guard — see below.
169
- * - The placeholder OOM guard uses only header dimensions read from the bytes
170
- * actually decoded. Caller-supplied `knownDimensions` are untrusted for the
171
- * guard: a client could claim a tiny size for a huge image to bypass the cap.
172
- * - `placeholder` lets a caller decode a smaller thumbnail for the blurhash to
173
- * avoid OOM on large originals; dimensions still come from `bytes`.
174
- * - Placeholders are jpeg/png only (the generator's supported formats); other
175
- * image types still get dimensions.
176
- */
177
- async function enrichImageMetadata(bytes, contentType, opts) {
178
- const normalizedContentType = normalizeMime(contentType);
179
- if (!normalizedContentType.startsWith("image/")) return {};
180
- const headerDims = readDimensions(bytes) ?? void 0;
181
- const recordDims = opts?.knownDimensions ?? headerDims;
182
- const override = opts?.placeholder;
183
- const placeholder = await generatePlaceholder(override ? override.bytes : bytes, override ? normalizeMime(override.contentType) : normalizedContentType, override ? void 0 : headerDims);
184
- return {
185
- width: recordDims?.width,
186
- height: recordDims?.height,
187
- blurhash: placeholder?.blurhash,
188
- dominantColor: placeholder?.dominantColor
189
- };
190
- }
191
-
192
- //#endregion
193
- export { generatePlaceholder as n, enrichImageMetadata as t };
194
- //# sourceMappingURL=enrich-BX0IDp4z.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"enrich-BX0IDp4z.mjs","names":[],"sources":["../src/media/placeholder.ts","../src/media/enrich.ts"],"sourcesContent":["/**\n * Image Placeholder Generation\n *\n * Generates blurhash and dominant color from image buffers for LQIP support.\n * Decodes images via jpeg-js (pure JS) and upng-js (pure JS, uses pako for\n * deflate). No Node-specific dependencies — works in Workers and Node SSR.\n */\n\nimport { encode } from \"blurhash\";\nimport { imageSize } from \"image-size\";\n\nimport { normalizeMime } from \"./mime.js\";\n\nexport interface PlaceholderData {\n\tblurhash: string;\n\tdominantColor: string;\n}\n\nconst SUPPORTED_TYPES: Record<string, \"jpeg\" | \"png\"> = {\n\t\"image/jpeg\": \"jpeg\",\n\t\"image/jpg\": \"jpeg\",\n\t\"image/png\": \"png\",\n};\n\n/** Max width for blurhash input. Encode is O(w*h*components), so downsample first. */\nconst MAX_ENCODE_WIDTH = 32;\n\n/** Max decoded RGBA size (32 MB). Images exceeding this skip placeholder generation. */\nconst MAX_DECODED_BYTES = 32 * 1024 * 1024;\n\ninterface DecodedImage {\n\twidth: number;\n\theight: number;\n\tdata: Uint8Array;\n}\n\n/**\n * Decode a JPEG buffer into raw RGBA pixel data.\n */\nasync function decodeJpeg(buffer: Uint8Array): Promise<DecodedImage> {\n\tconst { decode } = await import(\"jpeg-js\");\n\tconst result = decode(buffer, { useTArray: true });\n\treturn { width: result.width, height: result.height, data: result.data };\n}\n\n/**\n * Decode a PNG buffer into raw RGBA pixel data.\n * Uses upng-js (pure JS with pako deflate) — no Node zlib dependency.\n */\nasync function decodePng(buffer: Uint8Array): Promise<DecodedImage> {\n\t// @ts-expect-error -- upng-js has no type declarations\n\tconst UPNG = (await import(\"upng-js\")).default;\n\tconst img = UPNG.decode(buffer.buffer);\n\t// toRGBA8 returns an array of frames; take the first frame\n\tconst frames: ArrayBuffer[] = UPNG.toRGBA8(img);\n\tconst rgba = new Uint8Array(frames[0]);\n\treturn { width: img.width, height: img.height, data: rgba };\n}\n\n/**\n * Extract the dominant color from RGBA pixel data.\n * Simple average of all non-transparent pixels.\n */\nfunction extractDominantColor(data: Uint8Array, width: number, height: number): string {\n\tlet r = 0;\n\tlet g = 0;\n\tlet b = 0;\n\tlet count = 0;\n\n\tconst len = width * height * 4;\n\tfor (let i = 0; i < len; i += 4) {\n\t\tconst a = data[i + 3];\n\t\tif (a < 128) continue; // skip mostly-transparent pixels\n\t\tr += data[i];\n\t\tg += data[i + 1];\n\t\tb += data[i + 2];\n\t\tcount++;\n\t}\n\n\tif (count === 0) return \"rgb(0,0,0)\";\n\n\tconst avgR = Math.round(r / count);\n\tconst avgG = Math.round(g / count);\n\tconst avgB = Math.round(b / count);\n\treturn `rgb(${avgR},${avgG},${avgB})`;\n}\n\n/**\n * Read image dimensions from headers without decoding pixel data.\n * Returns null when the header cannot be parsed.\n *\n * Shared by every caller that needs pixel dimensions so the header is parsed\n * once per buffer, not re-read inside generatePlaceholder.\n */\nexport function readDimensions(buffer: Uint8Array): { width: number; height: number } | null {\n\ttry {\n\t\tconst result = imageSize(buffer);\n\t\tif (result.width != null && result.height != null) {\n\t\t\treturn { width: result.width, height: result.height };\n\t\t}\n\t\treturn null;\n\t} catch {\n\t\treturn null;\n\t}\n}\n\n/**\n * Generate blurhash and dominant color from an image buffer.\n * Returns null for non-image MIME types or on failure.\n *\n * @param dimensions - Optional pre-known dimensions. When present they are\n * trusted verbatim (the caller has typically already read them via\n * readDimensions); otherwise dimensions are read from this buffer's header.\n * Generation is skipped (returns null) when no dimensions are available at\n * all, or when the decoded size (width * height * 4) exceeds\n * MAX_DECODED_BYTES — both guards avoid OOM from unbounded decodes on\n * memory-constrained runtimes.\n */\nexport async function generatePlaceholder(\n\tbuffer: Uint8Array,\n\tmimeType: string,\n\tdimensions?: { width: number; height: number },\n): Promise<PlaceholderData | null> {\n\tconst format = SUPPORTED_TYPES[normalizeMime(mimeType)];\n\tif (!format) return null;\n\n\ttry {\n\t\t// Trust caller-supplied dimensions when present (the caller has usually\n\t\t// already read them via readDimensions); otherwise read them from this\n\t\t// buffer. The header is parsed at most once per call.\n\t\tconst dims = dimensions ?? readDimensions(buffer);\n\n\t\t// Safety net: the decoders allocate the full RGBA buffer with no internal\n\t\t// cap, so refuse to decode unless we can bound the output size. When we\n\t\t// have no parseable header AND no known dimensions, the decoded size is\n\t\t// unbounded — a crafted/truncated PNG whose header image-size can't read\n\t\t// could still be decodable by upng-js, so we must bail to avoid OOM on\n\t\t// memory-constrained runtimes. LQIP is progressive enhancement; missing\n\t\t// it is preferable to crashing the request.\n\t\tif (!dims) return null;\n\t\tif (dims.width * dims.height * 4 > MAX_DECODED_BYTES) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst imageData = format === \"jpeg\" ? await decodeJpeg(buffer) : await decodePng(buffer);\n\t\tconst { width, height, data } = imageData;\n\n\t\tif (width === 0 || height === 0) return null;\n\n\t\t// Downsample for blurhash encoding if needed\n\t\tlet encodePixels: Uint8ClampedArray;\n\t\tlet encodeWidth: number;\n\t\tlet encodeHeight: number;\n\n\t\tif (width > MAX_ENCODE_WIDTH) {\n\t\t\tconst scale = MAX_ENCODE_WIDTH / width;\n\t\t\tencodeWidth = MAX_ENCODE_WIDTH;\n\t\t\tencodeHeight = Math.max(1, Math.round(height * scale));\n\t\t\tencodePixels = downsample(data, width, height, encodeWidth, encodeHeight);\n\t\t} else {\n\t\t\tencodeWidth = width;\n\t\t\tencodeHeight = height;\n\t\t\tencodePixels = new Uint8ClampedArray(data.buffer, data.byteOffset, data.byteLength);\n\t\t}\n\n\t\tconst blurhash = encode(encodePixels, encodeWidth, encodeHeight, 4, 3);\n\t\tconst dominantColor = extractDominantColor(data, width, height);\n\n\t\treturn { blurhash, dominantColor };\n\t} catch {\n\t\treturn null;\n\t}\n}\n\n/**\n * Nearest-neighbor downsample of RGBA pixel data.\n */\nfunction downsample(\n\tsrc: Uint8Array,\n\tsrcW: number,\n\tsrcH: number,\n\tdstW: number,\n\tdstH: number,\n): Uint8ClampedArray {\n\tconst dst = new Uint8ClampedArray(dstW * dstH * 4);\n\n\tfor (let y = 0; y < dstH; y++) {\n\t\tconst srcY = Math.floor((y * srcH) / dstH);\n\t\tfor (let x = 0; x < dstW; x++) {\n\t\t\tconst srcX = Math.floor((x * srcW) / dstW);\n\t\t\tconst srcIdx = (srcY * srcW + srcX) * 4;\n\t\t\tconst dstIdx = (y * dstW + x) * 4;\n\t\t\tdst[dstIdx] = src[srcIdx]!;\n\t\t\tdst[dstIdx + 1] = src[srcIdx + 1]!;\n\t\t\tdst[dstIdx + 2] = src[srcIdx + 2]!;\n\t\t\tdst[dstIdx + 3] = src[srcIdx + 3]!;\n\t\t}\n\t}\n\n\treturn dst;\n}\n","/**\n * Image Metadata Enrichment\n *\n * Single seam that derives image dimensions and LQIP placeholders (blurhash,\n * dominant color) from raw image bytes. Every server-side media-creation path\n * routes through this so records are populated consistently. Pure-JS and\n * Workers-safe (image-size reads headers only; generatePlaceholder guards\n * decode size).\n */\n\nimport { normalizeMime } from \"./mime.js\";\nimport { generatePlaceholder, readDimensions } from \"./placeholder.js\";\n\nexport interface EnrichedImageMetadata {\n\twidth?: number;\n\theight?: number;\n\tblurhash?: string;\n\tdominantColor?: string;\n}\n\n/**\n * Derive dimensions + LQIP placeholders from image bytes.\n *\n * - Non-image content types return `{}`.\n * - `knownDimensions` (e.g. browser `naturalWidth/Height`) win over `image-size`\n * for the *stored record* because the browser applies EXIF orientation;\n * `image-size` reports raw header dimensions, which are swapped for\n * 90°/270°-rotated JPEGs. They are NOT used for the decode OOM guard — see below.\n * - The placeholder OOM guard uses only header dimensions read from the bytes\n * actually decoded. Caller-supplied `knownDimensions` are untrusted for the\n * guard: a client could claim a tiny size for a huge image to bypass the cap.\n * - `placeholder` lets a caller decode a smaller thumbnail for the blurhash to\n * avoid OOM on large originals; dimensions still come from `bytes`.\n * - Placeholders are jpeg/png only (the generator's supported formats); other\n * image types still get dimensions.\n */\nexport async function enrichImageMetadata(\n\tbytes: Uint8Array,\n\tcontentType: string,\n\topts?: {\n\t\tknownDimensions?: { width: number; height: number };\n\t\tplaceholder?: { bytes: Uint8Array; contentType: string };\n\t},\n): Promise<EnrichedImageMetadata> {\n\tconst normalizedContentType = normalizeMime(contentType);\n\tif (!normalizedContentType.startsWith(\"image/\")) return {};\n\n\t// Header dimensions are read once from the actual bytes. They feed the\n\t// placeholder OOM guard, which must never trust caller-supplied dimensions:\n\t// `knownDimensions` is decoupled from the buffer, so a client could claim a\n\t// tiny size for a huge image and slip past the decoded-size cap, making the\n\t// decoder allocate an unbounded RGBA buffer and OOM the runtime. Only dims\n\t// read from the buffer that actually gets decoded can bound the decode.\n\tconst headerDims = readDimensions(bytes) ?? undefined;\n\n\t// Dimensions published on the record prefer the caller's knownDimensions\n\t// (e.g. browser naturalWidth/Height, which apply EXIF orientation) over the\n\t// raw header dims, which are swapped for 90°/270°-rotated JPEGs.\n\tconst recordDims = opts?.knownDimensions ?? headerDims;\n\n\t// When a smaller thumbnail override is supplied, decode that for the blurhash\n\t// and let generatePlaceholder read the thumbnail's own header for the OOM\n\t// guard (the override buffer is what actually gets decoded). On the common\n\t// no-override path pass the header dims already read from this same buffer.\n\tconst override = opts?.placeholder;\n\tconst placeholder = await generatePlaceholder(\n\t\toverride ? override.bytes : bytes,\n\t\toverride ? normalizeMime(override.contentType) : normalizedContentType,\n\t\toverride ? undefined : headerDims,\n\t);\n\n\treturn {\n\t\twidth: recordDims?.width,\n\t\theight: recordDims?.height,\n\t\tblurhash: placeholder?.blurhash,\n\t\tdominantColor: placeholder?.dominantColor,\n\t};\n}\n"],"mappings":"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"}
@@ -1,90 +0,0 @@
1
- import { i as InvalidCursorError } from "./types-CQPWhPxE.mjs";
2
- import { n as mapErrorStatus } from "./errors-DsVoDUjJ.mjs";
3
-
4
- //#region src/api/error.ts
5
- /**
6
- * Standardized API error responses.
7
- *
8
- * All API routes should use these utilities instead of inline
9
- * `new Response(JSON.stringify({ error: ... }), ...)` patterns.
10
- */
11
- /**
12
- * Standard cache headers for all API responses.
13
- *
14
- * Cache-Control: private, no-store -- prevents CDN/proxy caching of authenticated data.
15
- * no-store already tells caches not to store the response, so Vary is unnecessary.
16
- */
17
- const API_CACHE_HEADERS = { "Cache-Control": "private, no-store" };
18
- /**
19
- * Create a standardized error response.
20
- *
21
- * Always returns `{ success: false, error: { code, message } }` with correct
22
- * Content-Type. Use this for all error responses in API routes.
23
- */
24
- function apiError(code, message, status, details) {
25
- const error = {
26
- code,
27
- message
28
- };
29
- if (details !== void 0) error.details = details;
30
- return Response.json({
31
- success: false,
32
- error
33
- }, {
34
- status,
35
- headers: API_CACHE_HEADERS
36
- });
37
- }
38
- /**
39
- * Create a standardized success response.
40
- *
41
- * Always returns `{ success: true, data: T }` with correct status code.
42
- * Use this for all success responses in API routes.
43
- */
44
- function apiSuccess(data, status = 200) {
45
- return Response.json({
46
- success: true,
47
- data
48
- }, {
49
- status,
50
- headers: API_CACHE_HEADERS
51
- });
52
- }
53
- /**
54
- * Handle an unknown error in a catch block.
55
- *
56
- * - Logs the full error server-side
57
- * - Returns a generic message to the client (never leaks error.message)
58
- * - Use `fallbackMessage` for the public-facing message
59
- * - Use `fallbackCode` for the error code
60
- */
61
- function handleError(error, fallbackMessage, fallbackCode) {
62
- if (error instanceof InvalidCursorError) return apiError("INVALID_CURSOR", error.message, 400);
63
- console.error(`[${fallbackCode}]`, error);
64
- return apiError(fallbackCode, fallbackMessage, 500);
65
- }
66
- /**
67
- * Standard database check.
68
- *
69
- * Returns an error response if the database is not available, or null if OK.
70
- * Usage: `const err = requireDb(emdash?.db); if (err) return err;`
71
- */
72
- function requireDb(db) {
73
- if (!db) return apiError("NOT_CONFIGURED", "EmDash is not initialized", 500);
74
- return null;
75
- }
76
- /**
77
- * Convert an ApiResult into an HTTP Response.
78
- *
79
- * Collapses the handler-to-response boilerplate:
80
- * - Success: returns `apiSuccess(result.data, successStatus)`
81
- * - Error: returns `apiError(code, message, mapErrorStatus(code))`
82
- */
83
- function unwrapResult(result, successStatus = 200) {
84
- if (!result.success) return apiError(result.error.code, result.error.message, mapErrorStatus(result.error.code), result.error.details);
85
- return apiSuccess(result.data, successStatus);
86
- }
87
-
88
- //#endregion
89
- export { unwrapResult as a, requireDb as i, apiSuccess as n, handleError as r, apiError as t };
90
- //# sourceMappingURL=error-DFrQjppn.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"error-DFrQjppn.mjs","names":[],"sources":["../src/api/error.ts"],"sourcesContent":["/**\n * Standardized API error responses.\n *\n * All API routes should use these utilities instead of inline\n * `new Response(JSON.stringify({ error: ... }), ...)` patterns.\n */\n\nimport { InvalidCursorError } from \"../database/repositories/types.js\";\nimport { mapErrorStatus } from \"./errors.js\";\nimport type { ApiResult } from \"./types.js\";\n\n// Re-export everything from errors.ts so existing `import { mapErrorStatus } from \"./error.js\"` still works\nexport * from \"./errors.js\";\n\n/**\n * Standard cache headers for all API responses.\n *\n * Cache-Control: private, no-store -- prevents CDN/proxy caching of authenticated data.\n * no-store already tells caches not to store the response, so Vary is unnecessary.\n */\nconst API_CACHE_HEADERS: HeadersInit = {\n\t\"Cache-Control\": \"private, no-store\",\n};\n\n/**\n * Create a standardized error response.\n *\n * Always returns `{ success: false, error: { code, message } }` with correct\n * Content-Type. Use this for all error responses in API routes.\n */\nexport function apiError(\n\tcode: string,\n\tmessage: string,\n\tstatus: number,\n\tdetails?: Record<string, unknown>,\n): Response {\n\tconst error: { code: string; message: string; details?: Record<string, unknown> } = {\n\t\tcode,\n\t\tmessage,\n\t};\n\tif (details !== undefined) error.details = details;\n\treturn Response.json({ success: false, error }, { status, headers: API_CACHE_HEADERS });\n}\n\n/**\n * Create a standardized success response.\n *\n * Always returns `{ success: true, data: T }` with correct status code.\n * Use this for all success responses in API routes.\n */\nexport function apiSuccess<T>(data: T, status = 200): Response {\n\treturn Response.json({ success: true, data }, { status, headers: API_CACHE_HEADERS });\n}\n\n/**\n * Handle an unknown error in a catch block.\n *\n * - Logs the full error server-side\n * - Returns a generic message to the client (never leaks error.message)\n * - Use `fallbackMessage` for the public-facing message\n * - Use `fallbackCode` for the error code\n */\nexport function handleError(\n\terror: unknown,\n\tfallbackMessage: string,\n\tfallbackCode: string,\n): Response {\n\t// Bubble malformed-cursor errors as a structured 400 instead of a\n\t// generic 500.\n\tif (error instanceof InvalidCursorError) {\n\t\treturn apiError(\"INVALID_CURSOR\", error.message, 400);\n\t}\n\tconsole.error(`[${fallbackCode}]`, error);\n\treturn apiError(fallbackCode, fallbackMessage, 500);\n}\n\n/**\n * Standard initialization check.\n *\n * Returns an error response if EmDash is not initialized, or null if OK.\n * Usage: `const err = requireInit(emdash); if (err) return err;`\n */\nexport function requireInit(emdash: unknown): Response | null {\n\tif (!emdash || typeof emdash !== \"object\") {\n\t\treturn apiError(\"NOT_CONFIGURED\", \"EmDash is not initialized\", 500);\n\t}\n\treturn null;\n}\n\n/**\n * Standard database check.\n *\n * Returns an error response if the database is not available, or null if OK.\n * Usage: `const err = requireDb(emdash?.db); if (err) return err;`\n */\nexport function requireDb(db: unknown): Response | null {\n\tif (!db) {\n\t\treturn apiError(\"NOT_CONFIGURED\", \"EmDash is not initialized\", 500);\n\t}\n\treturn null;\n}\n\n/**\n * Convert an ApiResult into an HTTP Response.\n *\n * Collapses the handler-to-response boilerplate:\n * - Success: returns `apiSuccess(result.data, successStatus)`\n * - Error: returns `apiError(code, message, mapErrorStatus(code))`\n */\nexport function unwrapResult<T>(result: ApiResult<T>, successStatus = 200): Response {\n\tif (!result.success) {\n\t\treturn apiError(\n\t\t\tresult.error.code,\n\t\t\tresult.error.message,\n\t\t\tmapErrorStatus(result.error.code),\n\t\t\tresult.error.details,\n\t\t);\n\t}\n\treturn apiSuccess(result.data, successStatus);\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAoBA,MAAM,oBAAiC,EACtC,iBAAiB,qBACjB;;;;;;;AAQD,SAAgB,SACf,MACA,SACA,QACA,SACW;CACX,MAAM,QAA8E;EACnF;EACA;EACA;AACD,KAAI,YAAY,OAAW,OAAM,UAAU;AAC3C,QAAO,SAAS,KAAK;EAAE,SAAS;EAAO;EAAO,EAAE;EAAE;EAAQ,SAAS;EAAmB,CAAC;;;;;;;;AASxF,SAAgB,WAAc,MAAS,SAAS,KAAe;AAC9D,QAAO,SAAS,KAAK;EAAE,SAAS;EAAM;EAAM,EAAE;EAAE;EAAQ,SAAS;EAAmB,CAAC;;;;;;;;;;AAWtF,SAAgB,YACf,OACA,iBACA,cACW;AAGX,KAAI,iBAAiB,mBACpB,QAAO,SAAS,kBAAkB,MAAM,SAAS,IAAI;AAEtD,SAAQ,MAAM,IAAI,aAAa,IAAI,MAAM;AACzC,QAAO,SAAS,cAAc,iBAAiB,IAAI;;;;;;;;AAsBpD,SAAgB,UAAU,IAA8B;AACvD,KAAI,CAAC,GACJ,QAAO,SAAS,kBAAkB,6BAA6B,IAAI;AAEpE,QAAO;;;;;;;;;AAUR,SAAgB,aAAgB,QAAsB,gBAAgB,KAAe;AACpF,KAAI,CAAC,OAAO,QACX,QAAO,SACN,OAAO,MAAM,MACb,OAAO,MAAM,SACb,eAAe,OAAO,MAAM,KAAK,EACjC,OAAO,MAAM,QACb;AAEF,QAAO,WAAW,OAAO,MAAM,cAAc"}