emdash 0.18.0 → 0.20.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 (528) hide show
  1. package/dist/{adapters-C5AWLJSD.d.mts → adapters-BzIHV3sw.d.mts} +1 -1
  2. package/dist/{adapters-C5AWLJSD.d.mts.map → adapters-BzIHV3sw.d.mts.map} +1 -1
  3. package/dist/{allowed-origins-CyYLEJkp.mjs → allowed-origins-B1u7Qnvg.mjs} +2 -2
  4. package/dist/{allowed-origins-CyYLEJkp.mjs.map → allowed-origins-B1u7Qnvg.mjs.map} +1 -1
  5. package/dist/api/route-utils.d.mts +3 -3
  6. package/dist/api/route-utils.mjs +15 -15
  7. package/dist/api/schemas/index.d.mts +2 -2
  8. package/dist/api/schemas/index.mjs +3 -3
  9. package/dist/{api-Cs7DAACP.mjs → api-DStv36ik.mjs} +123 -20
  10. package/dist/api-DStv36ik.mjs.map +1 -0
  11. package/dist/{api-tokens-VrXNiNvV.mjs → api-tokens-DPfhPu5V.mjs} +2 -2
  12. package/dist/{api-tokens-VrXNiNvV.mjs.map → api-tokens-DPfhPu5V.mjs.map} +1 -1
  13. package/dist/{apply-BWMV4Zmw.mjs → apply-Dr7snAMT.mjs} +23 -23
  14. package/dist/apply-Dr7snAMT.mjs.map +1 -0
  15. package/dist/astro/index.d.mts +10 -10
  16. package/dist/astro/index.d.mts.map +1 -1
  17. package/dist/astro/index.mjs +115 -25
  18. package/dist/astro/index.mjs.map +1 -1
  19. package/dist/astro/middleware/auth.d.mts +9 -9
  20. package/dist/astro/middleware/auth.mjs +6 -6
  21. package/dist/astro/middleware/redirect.mjs +4 -4
  22. package/dist/astro/middleware/request-context.mjs +2 -2
  23. package/dist/astro/middleware/setup.mjs +1 -1
  24. package/dist/astro/middleware.d.mts +26 -4
  25. package/dist/astro/middleware.d.mts.map +1 -1
  26. package/dist/astro/middleware.mjs +242 -259
  27. package/dist/astro/middleware.mjs.map +1 -1
  28. package/dist/astro/routes/api/admin/allowed-domains/_domain_.mjs +5 -5
  29. package/dist/astro/routes/api/admin/allowed-domains/index.mjs +5 -5
  30. package/dist/astro/routes/api/admin/api-tokens/_id_.mjs +4 -4
  31. package/dist/astro/routes/api/admin/api-tokens/index.mjs +5 -5
  32. package/dist/astro/routes/api/admin/byline-fields/_slug_/usage.mjs +5 -5
  33. package/dist/astro/routes/api/admin/byline-fields/_slug_.mjs +8 -8
  34. package/dist/astro/routes/api/admin/byline-fields/index.mjs +8 -8
  35. package/dist/astro/routes/api/admin/byline-fields/reorder.mjs +8 -8
  36. package/dist/astro/routes/api/admin/bylines/_id_/index.mjs +12 -12
  37. package/dist/astro/routes/api/admin/bylines/_id_/translations.mjs +12 -12
  38. package/dist/astro/routes/api/admin/bylines/index.mjs +12 -12
  39. package/dist/astro/routes/api/admin/comments/_id_/status.mjs +11 -11
  40. package/dist/astro/routes/api/admin/comments/_id_.mjs +5 -5
  41. package/dist/astro/routes/api/admin/comments/bulk.mjs +8 -8
  42. package/dist/astro/routes/api/admin/comments/counts.mjs +5 -5
  43. package/dist/astro/routes/api/admin/comments/index.mjs +8 -8
  44. package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.mjs +5 -5
  45. package/dist/astro/routes/api/admin/hooks/exclusive/index.mjs +4 -4
  46. package/dist/astro/routes/api/admin/oauth-clients/_id_.mjs +4 -4
  47. package/dist/astro/routes/api/admin/oauth-clients/index.mjs +4 -4
  48. package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs +34 -34
  49. package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs +34 -34
  50. package/dist/astro/routes/api/admin/plugins/_id_/index.mjs +33 -33
  51. package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs +33 -33
  52. package/dist/astro/routes/api/admin/plugins/_id_/update.mjs +33 -33
  53. package/dist/astro/routes/api/admin/plugins/index.mjs +33 -33
  54. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.mjs +3 -3
  55. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs +33 -33
  56. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs +33 -33
  57. package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs +33 -33
  58. package/dist/astro/routes/api/admin/plugins/registry/_id_/uninstall.mjs +33 -33
  59. package/dist/astro/routes/api/admin/plugins/registry/_id_/update.mjs +34 -34
  60. package/dist/astro/routes/api/admin/plugins/registry/artifact.mjs +33 -33
  61. package/dist/astro/routes/api/admin/plugins/registry/install.mjs +34 -34
  62. package/dist/astro/routes/api/admin/plugins/updates.mjs +33 -33
  63. package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs +33 -33
  64. package/dist/astro/routes/api/admin/themes/marketplace/_id_/thumbnail.mjs +3 -3
  65. package/dist/astro/routes/api/admin/themes/marketplace/index.mjs +33 -33
  66. package/dist/astro/routes/api/admin/users/_id_/disable.mjs +3 -3
  67. package/dist/astro/routes/api/admin/users/_id_/enable.mjs +2 -2
  68. package/dist/astro/routes/api/admin/users/_id_/index.mjs +6 -6
  69. package/dist/astro/routes/api/admin/users/_id_/send-recovery.mjs +4 -4
  70. package/dist/astro/routes/api/admin/users/index.mjs +5 -5
  71. package/dist/astro/routes/api/auth/dev-bypass.mjs +5 -5
  72. package/dist/astro/routes/api/auth/invite/accept.mjs +2 -2
  73. package/dist/astro/routes/api/auth/invite/complete.mjs +10 -10
  74. package/dist/astro/routes/api/auth/invite/index.mjs +7 -7
  75. package/dist/astro/routes/api/auth/invite/register-options.mjs +9 -9
  76. package/dist/astro/routes/api/auth/logout.mjs +3 -3
  77. package/dist/astro/routes/api/auth/magic-link/send.mjs +8 -8
  78. package/dist/astro/routes/api/auth/magic-link/verify.mjs +3 -3
  79. package/dist/astro/routes/api/auth/me.mjs +6 -6
  80. package/dist/astro/routes/api/auth/mode.mjs +1 -1
  81. package/dist/astro/routes/api/auth/oauth/_provider_/callback.mjs +4 -4
  82. package/dist/astro/routes/api/auth/oauth/_provider_.mjs +2 -2
  83. package/dist/astro/routes/api/auth/passkey/_id_.mjs +5 -5
  84. package/dist/astro/routes/api/auth/passkey/index.mjs +2 -2
  85. package/dist/astro/routes/api/auth/passkey/options.mjs +10 -10
  86. package/dist/astro/routes/api/auth/passkey/register/options.mjs +9 -9
  87. package/dist/astro/routes/api/auth/passkey/register/verify.mjs +10 -10
  88. package/dist/astro/routes/api/auth/passkey/verify.mjs +10 -10
  89. package/dist/astro/routes/api/auth/signup/complete.mjs +10 -10
  90. package/dist/astro/routes/api/auth/signup/request.mjs +8 -8
  91. package/dist/astro/routes/api/auth/signup/verify.mjs +2 -2
  92. package/dist/astro/routes/api/comments/_collection_/_contentId_/index.mjs +11 -11
  93. package/dist/astro/routes/api/content/_collection_/_id_/compare.mjs +3 -3
  94. package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs +6 -5
  95. package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs.map +1 -1
  96. package/dist/astro/routes/api/content/_collection_/_id_/duplicate.mjs +3 -3
  97. package/dist/astro/routes/api/content/_collection_/_id_/permanent.mjs +3 -3
  98. package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs +8 -8
  99. package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs +9 -8
  100. package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs.map +1 -1
  101. package/dist/astro/routes/api/content/_collection_/_id_/restore.mjs +3 -3
  102. package/dist/astro/routes/api/content/_collection_/_id_/revisions.mjs +3 -3
  103. package/dist/astro/routes/api/content/_collection_/_id_/schedule.d.mts.map +1 -1
  104. package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs +12 -10
  105. package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs.map +1 -1
  106. package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs +11 -11
  107. package/dist/astro/routes/api/content/_collection_/_id_/translations.mjs +3 -3
  108. package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs +6 -5
  109. package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs.map +1 -1
  110. package/dist/astro/routes/api/content/_collection_/_id_.mjs +9 -8
  111. package/dist/astro/routes/api/content/_collection_/_id_.mjs.map +1 -1
  112. package/dist/astro/routes/api/content/_collection_/authors.d.mts +8 -0
  113. package/dist/astro/routes/api/content/_collection_/authors.d.mts.map +1 -0
  114. package/dist/astro/routes/api/content/_collection_/authors.mjs +19 -0
  115. package/dist/astro/routes/api/content/_collection_/authors.mjs.map +1 -0
  116. package/dist/astro/routes/api/content/_collection_/index.mjs +6 -6
  117. package/dist/astro/routes/api/content/_collection_/trash.mjs +6 -6
  118. package/dist/astro/routes/api/dashboard.mjs +7 -7
  119. package/dist/astro/routes/api/dev/emails.mjs +2 -2
  120. package/dist/astro/routes/api/import/probe.d.mts +3 -3
  121. package/dist/astro/routes/api/import/probe.mjs +6 -6
  122. package/dist/astro/routes/api/import/wordpress/analyze.mjs +4 -4
  123. package/dist/astro/routes/api/import/wordpress/execute.d.mts +9 -9
  124. package/dist/astro/routes/api/import/wordpress/execute.mjs +9 -9
  125. package/dist/astro/routes/api/import/wordpress/media.mjs +6 -6
  126. package/dist/astro/routes/api/import/wordpress/prepare.mjs +9 -9
  127. package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs +8 -8
  128. package/dist/astro/routes/api/import/wordpress-plugin/analyze.d.mts +1 -1
  129. package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs +6 -6
  130. package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts +1 -1
  131. package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs +9 -9
  132. package/dist/astro/routes/api/manifest.mjs +4 -4
  133. package/dist/astro/routes/api/mcp.mjs +29 -29
  134. package/dist/astro/routes/api/media/_id_/confirm.mjs +6 -6
  135. package/dist/astro/routes/api/media/_id_.mjs +6 -6
  136. package/dist/astro/routes/api/media/file/_...key_.mjs +2 -2
  137. package/dist/astro/routes/api/media/providers/_providerId_/_itemId_.mjs +3 -3
  138. package/dist/astro/routes/api/media/providers/_providerId_/index.mjs +3 -3
  139. package/dist/astro/routes/api/media/providers/index.mjs +3 -3
  140. package/dist/astro/routes/api/media/upload-url.mjs +7 -7
  141. package/dist/astro/routes/api/media.mjs +8 -8
  142. package/dist/astro/routes/api/menus/_name_/items/_id_.mjs +7 -7
  143. package/dist/astro/routes/api/menus/_name_/items.mjs +7 -7
  144. package/dist/astro/routes/api/menus/_name_/reorder.mjs +7 -7
  145. package/dist/astro/routes/api/menus/_name_/translations.mjs +7 -7
  146. package/dist/astro/routes/api/menus/_name_.mjs +7 -7
  147. package/dist/astro/routes/api/menus/index.mjs +7 -7
  148. package/dist/astro/routes/api/oauth/authorize.mjs +6 -6
  149. package/dist/astro/routes/api/oauth/device/authorize.mjs +6 -6
  150. package/dist/astro/routes/api/oauth/device/code.mjs +8 -8
  151. package/dist/astro/routes/api/oauth/device/token.mjs +7 -7
  152. package/dist/astro/routes/api/oauth/register.mjs +3 -3
  153. package/dist/astro/routes/api/oauth/token/refresh.mjs +6 -6
  154. package/dist/astro/routes/api/oauth/token/revoke.mjs +6 -6
  155. package/dist/astro/routes/api/oauth/token.mjs +6 -6
  156. package/dist/astro/routes/api/openapi.json.mjs +17 -3
  157. package/dist/astro/routes/api/openapi.json.mjs.map +1 -1
  158. package/dist/astro/routes/api/plugins/_pluginId_/_...path_.mjs +4 -4
  159. package/dist/astro/routes/api/redirects/404s/index.mjs +9 -9
  160. package/dist/astro/routes/api/redirects/404s/summary.mjs +9 -9
  161. package/dist/astro/routes/api/redirects/_id_.mjs +10 -10
  162. package/dist/astro/routes/api/redirects/index.mjs +10 -10
  163. package/dist/astro/routes/api/revisions/_revisionId_/index.mjs +3 -3
  164. package/dist/astro/routes/api/revisions/_revisionId_/restore.mjs +3 -3
  165. package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs +33 -33
  166. package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs +33 -33
  167. package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs +33 -33
  168. package/dist/astro/routes/api/schema/collections/_slug_/index.mjs +33 -33
  169. package/dist/astro/routes/api/schema/collections/index.mjs +33 -33
  170. package/dist/astro/routes/api/schema/index.mjs +9 -14
  171. package/dist/astro/routes/api/schema/index.mjs.map +1 -1
  172. package/dist/astro/routes/api/schema/orphans/_slug_.mjs +33 -33
  173. package/dist/astro/routes/api/schema/orphans/index.mjs +33 -33
  174. package/dist/astro/routes/api/search/enable.mjs +9 -9
  175. package/dist/astro/routes/api/search/index.mjs +8 -8
  176. package/dist/astro/routes/api/search/rebuild.mjs +9 -9
  177. package/dist/astro/routes/api/search/stats.mjs +6 -6
  178. package/dist/astro/routes/api/search/suggest.mjs +8 -8
  179. package/dist/astro/routes/api/sections/_slug_.mjs +8 -8
  180. package/dist/astro/routes/api/sections/index.mjs +8 -8
  181. package/dist/astro/routes/api/settings/email.mjs +5 -5
  182. package/dist/astro/routes/api/settings.mjs +12 -12
  183. package/dist/astro/routes/api/setup/admin-verify.mjs +11 -11
  184. package/dist/astro/routes/api/setup/admin.mjs +10 -10
  185. package/dist/astro/routes/api/setup/dev-bypass.mjs +23 -23
  186. package/dist/astro/routes/api/setup/dev-reset.mjs +3 -3
  187. package/dist/astro/routes/api/setup/index.mjs +23 -23
  188. package/dist/astro/routes/api/setup/status.mjs +4 -4
  189. package/dist/astro/routes/api/snapshot.mjs +6 -6
  190. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs +11 -11
  191. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs +11 -11
  192. package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs +11 -11
  193. package/dist/astro/routes/api/taxonomies/index.mjs +11 -11
  194. package/dist/astro/routes/api/themes/preview.mjs +6 -6
  195. package/dist/astro/routes/api/typegen.mjs +5 -5
  196. package/dist/astro/routes/api/well-known/auth.mjs +2 -2
  197. package/dist/astro/routes/api/well-known/oauth-authorization-server.mjs +2 -2
  198. package/dist/astro/routes/api/well-known/oauth-protected-resource.mjs +2 -2
  199. package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs +6 -6
  200. package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs +9 -8
  201. package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs.map +1 -1
  202. package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs +9 -8
  203. package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs.map +1 -1
  204. package/dist/astro/routes/api/widget-areas/_name_.mjs +6 -5
  205. package/dist/astro/routes/api/widget-areas/_name_.mjs.map +1 -1
  206. package/dist/astro/routes/api/widget-areas/index.mjs +9 -8
  207. package/dist/astro/routes/api/widget-areas/index.mjs.map +1 -1
  208. package/dist/astro/routes/api/widget-components.mjs +3 -3
  209. package/dist/astro/routes/robots.txt.mjs +7 -7
  210. package/dist/astro/routes/sitemap-_collection_.xml.d.mts.map +1 -1
  211. package/dist/astro/routes/sitemap-_collection_.xml.mjs +16 -9
  212. package/dist/astro/routes/sitemap-_collection_.xml.mjs.map +1 -1
  213. package/dist/astro/routes/sitemap.xml.mjs +8 -8
  214. package/dist/astro/types.d.mts +19 -12
  215. package/dist/astro/types.d.mts.map +1 -1
  216. package/dist/auth/providers/github.d.mts +1 -1
  217. package/dist/auth/providers/google.d.mts +1 -1
  218. package/dist/{authorize-CotM4Yiu.mjs → authorize-DsMSVSaY.mjs} +2 -2
  219. package/dist/{authorize-CotM4Yiu.mjs.map → authorize-DsMSVSaY.mjs.map} +1 -1
  220. package/dist/{byline-CWQ9aSoz.mjs → byline-DUx48sJp.mjs} +6 -6
  221. package/dist/{byline-CWQ9aSoz.mjs.map → byline-DUx48sJp.mjs.map} +1 -1
  222. package/dist/{byline-fields-DC3Wkk-U.mjs → byline-fields--WxSNS79.mjs} +2 -2
  223. package/dist/{byline-fields-DC3Wkk-U.mjs.map → byline-fields--WxSNS79.mjs.map} +1 -1
  224. package/dist/{byline-fields-Dr-xcb6S.mjs → byline-fields-8TMtkBnH.mjs} +3 -3
  225. package/dist/{byline-fields-Dr-xcb6S.mjs.map → byline-fields-8TMtkBnH.mjs.map} +1 -1
  226. package/dist/{byline-fields-BNy7Ng1U.d.mts → byline-fields-DbibsvTl.d.mts} +30 -2
  227. package/dist/byline-fields-DbibsvTl.d.mts.map +1 -0
  228. package/dist/{byline-registry-CxK5g559.mjs → byline-registry-CWP7I71B.mjs} +3 -3
  229. package/dist/{byline-registry-CxK5g559.mjs.map → byline-registry-CWP7I71B.mjs.map} +1 -1
  230. package/dist/{bylines-LJMgENMI.mjs → bylines-BdxWCnPL.mjs} +3 -3
  231. package/dist/{bylines-LJMgENMI.mjs.map → bylines-BdxWCnPL.mjs.map} +1 -1
  232. package/dist/{bylines-BJSva1Un.mjs → bylines-s8c2DXbH.mjs} +50 -6
  233. package/dist/{bylines-BJSva1Un.mjs.map → bylines-s8c2DXbH.mjs.map} +1 -1
  234. package/dist/{cache-lZL7SgVb.mjs → cache-B_HzASVT.mjs} +3 -3
  235. package/dist/{cache-lZL7SgVb.mjs.map → cache-B_HzASVT.mjs.map} +1 -1
  236. package/dist/{challenge-store-DGwuCc4R.mjs → challenge-store-DXX3rfdI.mjs} +1 -1
  237. package/dist/{challenge-store-DGwuCc4R.mjs.map → challenge-store-DXX3rfdI.mjs.map} +1 -1
  238. package/dist/{chunks-BU-vP9Dh.mjs → chunks-BerYVuve.mjs} +2 -2
  239. package/dist/{chunks-BU-vP9Dh.mjs.map → chunks-BerYVuve.mjs.map} +1 -1
  240. package/dist/cli/index.mjs +46 -32
  241. package/dist/cli/index.mjs.map +1 -1
  242. package/dist/client/cf-access.d.mts +1 -1
  243. package/dist/client/index.d.mts +1 -1
  244. package/dist/client/index.mjs +1 -1
  245. package/dist/{comment-C4jVbCM8.mjs → comment-sqQxNpN3.mjs} +2 -2
  246. package/dist/{comment-C4jVbCM8.mjs.map → comment-sqQxNpN3.mjs.map} +1 -1
  247. package/dist/{comments-BTAbC0Ek.mjs → comments-Vkivawyl.mjs} +3 -3
  248. package/dist/{comments-BTAbC0Ek.mjs.map → comments-Vkivawyl.mjs.map} +1 -1
  249. package/dist/{components-CTfpu3PZ.mjs → components-CK0cuUoH.mjs} +1 -1
  250. package/dist/{components-CTfpu3PZ.mjs.map → components-CK0cuUoH.mjs.map} +1 -1
  251. package/dist/{content-CyqOmOzm.mjs → content-BIlVx-RX.mjs} +132 -43
  252. package/dist/content-BIlVx-RX.mjs.map +1 -0
  253. package/dist/{context-DZ7bEh5-.mjs → context-Y7BRkWes.mjs} +10 -10
  254. package/dist/{context-DZ7bEh5-.mjs.map → context-Y7BRkWes.mjs.map} +1 -1
  255. package/dist/{cron-DZovZUnC.mjs → cron-BJ2ClIlj.mjs} +4 -3
  256. package/dist/cron-BJ2ClIlj.mjs.map +1 -0
  257. package/dist/{dashboard-B5WQpNTP.mjs → dashboard-2JgAMWxK.mjs} +4 -4
  258. package/dist/{dashboard-B5WQpNTP.mjs.map → dashboard-2JgAMWxK.mjs.map} +1 -1
  259. package/dist/database/instrumentation.d.mts +10 -1
  260. package/dist/database/instrumentation.d.mts.map +1 -1
  261. package/dist/database/instrumentation.mjs +13 -1
  262. package/dist/database/instrumentation.mjs.map +1 -1
  263. package/dist/db/index.d.mts +3 -3
  264. package/dist/db/index.mjs +1 -1
  265. package/dist/db/libsql.d.mts +1 -1
  266. package/dist/db/postgres.d.mts +1 -1
  267. package/dist/db/sqlite.d.mts +1 -1
  268. package/dist/{default-xLFNSsZ9.mjs → default-IlBaTFxM.mjs} +1 -1
  269. package/dist/{default-xLFNSsZ9.mjs.map → default-IlBaTFxM.mjs.map} +1 -1
  270. package/dist/{device-flow-ptLrVINd.mjs → device-flow-R23SIbQ2.mjs} +5 -5
  271. package/dist/{device-flow-ptLrVINd.mjs.map → device-flow-R23SIbQ2.mjs.map} +1 -1
  272. package/dist/{error-DJOsMVSt.mjs → error-RwM4dD35.mjs} +2 -2
  273. package/dist/{error-DJOsMVSt.mjs.map → error-RwM4dD35.mjs.map} +1 -1
  274. package/dist/{escape-bIyGoW5W.mjs → escape-Ds07EEyu.mjs} +1 -1
  275. package/dist/{escape-bIyGoW5W.mjs.map → escape-Ds07EEyu.mjs.map} +1 -1
  276. package/dist/{fts-manager-DR1ERA0c.mjs → fts-manager-1RgHmopc.mjs} +2 -2
  277. package/dist/{fts-manager-DR1ERA0c.mjs.map → fts-manager-1RgHmopc.mjs.map} +1 -1
  278. package/dist/{index-CjKdMZ3U.d.mts → index-B1keaX5Y.d.mts} +237 -24
  279. package/dist/index-B1keaX5Y.d.mts.map +1 -0
  280. package/dist/{index-D60_SzHG.d.mts → index-DR56od45.d.mts} +3 -3
  281. package/dist/{index-D60_SzHG.d.mts.map → index-DR56od45.d.mts.map} +1 -1
  282. package/dist/index.d.mts +17 -17
  283. package/dist/index.mjs +46 -46
  284. package/dist/{load-6ZrRhepW.mjs → load-BBetCvLC.mjs} +2 -2
  285. package/dist/{load-6ZrRhepW.mjs.map → load-BBetCvLC.mjs.map} +1 -1
  286. package/dist/{loader-Dyx8dhFV.mjs → loader-ZN1ll-d-.mjs} +36 -37
  287. package/dist/loader-ZN1ll-d-.mjs.map +1 -0
  288. package/dist/{manifest-schema-Cj-YrzrF.mjs → manifest-schema-BtwbL_vj.mjs} +55 -2
  289. package/dist/manifest-schema-BtwbL_vj.mjs.map +1 -0
  290. package/dist/media/index.d.mts +1 -1
  291. package/dist/media/index.mjs +1 -1
  292. package/dist/media/local-runtime.d.mts +11 -11
  293. package/dist/media/local-runtime.mjs +6 -6
  294. package/dist/{media-C-oovGCG.mjs → media-JOf3pNkw.mjs} +2 -2
  295. package/dist/{media-C-oovGCG.mjs.map → media-JOf3pNkw.mjs.map} +1 -1
  296. package/dist/{media-allowlist-CMcoYIjQ.mjs → media-allowlist-Dknq-OFY.mjs} +1 -1
  297. package/dist/{media-allowlist-CMcoYIjQ.mjs.map → media-allowlist-Dknq-OFY.mjs.map} +1 -1
  298. package/dist/media-url-VClf8glU.mjs +26 -0
  299. package/dist/media-url-VClf8glU.mjs.map +1 -0
  300. package/dist/{menus-DugoYwTX.mjs → menus-DX4_E01q.mjs} +3 -3
  301. package/dist/{menus-DugoYwTX.mjs.map → menus-DX4_E01q.mjs.map} +1 -1
  302. package/dist/{menus-BKkxXCmd.mjs → menus-DrQLusqj.mjs} +87 -37
  303. package/dist/menus-DrQLusqj.mjs.map +1 -0
  304. package/dist/{mode-BjlXswIw.mjs → mode-CO2vQHfq.mjs} +1 -1
  305. package/dist/{mode-BjlXswIw.mjs.map → mode-CO2vQHfq.mjs.map} +1 -1
  306. package/dist/{normalize-DVV8nbrL.mjs → normalize-CK5o04zr.mjs} +2 -2
  307. package/dist/{normalize-DVV8nbrL.mjs.map → normalize-CK5o04zr.mjs.map} +1 -1
  308. package/dist/{oauth-authorization-DvBAL75d.mjs → oauth-authorization-Bw4NdF_S.mjs} +5 -5
  309. package/dist/{oauth-authorization-DvBAL75d.mjs.map → oauth-authorization-Bw4NdF_S.mjs.map} +1 -1
  310. package/dist/{oauth-clients-8mPDStMv.mjs → oauth-clients-BGGFp57s.mjs} +1 -1
  311. package/dist/{oauth-clients-8mPDStMv.mjs.map → oauth-clients-BGGFp57s.mjs.map} +1 -1
  312. package/dist/{oauth-state-store-BJ7YtrfD.mjs → oauth-state-store-97x0xtN2.mjs} +1 -1
  313. package/dist/{oauth-state-store-BJ7YtrfD.mjs.map → oauth-state-store-97x0xtN2.mjs.map} +1 -1
  314. package/dist/{oauth-user-lookup-BdDSDvjF.mjs → oauth-user-lookup-B_vnZHKO.mjs} +1 -1
  315. package/dist/{oauth-user-lookup-BdDSDvjF.mjs.map → oauth-user-lookup-B_vnZHKO.mjs.map} +1 -1
  316. package/dist/{options-BL4X94qY.mjs → options-BPCVnesz.mjs} +1 -1
  317. package/dist/{options-BL4X94qY.mjs.map → options-BPCVnesz.mjs.map} +1 -1
  318. package/dist/{options-tb7DJROi.d.mts → options-DyYIYpPd.d.mts} +3 -3
  319. package/dist/{options-tb7DJROi.d.mts.map → options-DyYIYpPd.d.mts.map} +1 -1
  320. package/dist/page/index.d.mts +2 -2
  321. package/dist/{parse-BBkFmLVr.mjs → parse-CrGndy1A.mjs} +2 -2
  322. package/dist/{parse-BBkFmLVr.mjs.map → parse-CrGndy1A.mjs.map} +1 -1
  323. package/dist/{passkey-config-BDVM86Tj.mjs → passkey-config-C3QgnQnU.mjs} +1 -1
  324. package/dist/{passkey-config-BDVM86Tj.mjs.map → passkey-config-C3QgnQnU.mjs.map} +1 -1
  325. package/dist/{patterns-CqG5Ya3i.mjs → patterns-p-RBdTbM.mjs} +1 -1
  326. package/dist/{patterns-CqG5Ya3i.mjs.map → patterns-p-RBdTbM.mjs.map} +1 -1
  327. package/dist/{placeholder-B9lUUEmj.d.mts → placeholder-CVBv5z8k.d.mts} +1 -1
  328. package/dist/{placeholder-B9lUUEmj.d.mts.map → placeholder-CVBv5z8k.d.mts.map} +1 -1
  329. package/dist/plugin-types.d.mts +1 -1
  330. package/dist/plugin-utils.d.mts +9 -9
  331. package/dist/plugins/adapt-sandbox-entry.d.mts +9 -9
  332. package/dist/plugins/adapt-sandbox-entry.mjs +2 -2
  333. package/dist/{public-url-egRHCy1m.mjs → public-url-BFVC2OTJ.mjs} +1 -1
  334. package/dist/{public-url-egRHCy1m.mjs.map → public-url-BFVC2OTJ.mjs.map} +1 -1
  335. package/dist/{query-Ctlq1aOk.mjs → query-CbUcI4Xk.mjs} +33 -17
  336. package/dist/query-CbUcI4Xk.mjs.map +1 -0
  337. package/dist/{rate-limit-CH6W6ikK.mjs → rate-limit-C7hjdkS5.mjs} +2 -2
  338. package/dist/{rate-limit-CH6W6ikK.mjs.map → rate-limit-C7hjdkS5.mjs.map} +1 -1
  339. package/dist/{redirect-Cw3JTlmj.mjs → redirect-B_q19j4v.mjs} +1 -1
  340. package/dist/{redirect-Cw3JTlmj.mjs.map → redirect-B_q19j4v.mjs.map} +1 -1
  341. package/dist/{redirect-C6tJA7tk.mjs → redirect-CRWIt8Zj.mjs} +3 -3
  342. package/dist/{redirect-C6tJA7tk.mjs.map → redirect-CRWIt8Zj.mjs.map} +1 -1
  343. package/dist/{redirects-C0L9JUk4.mjs → redirects-CCbCqCCd.mjs} +28 -4
  344. package/dist/redirects-CCbCqCCd.mjs.map +1 -0
  345. package/dist/{redirects-CacE9eQa.mjs → redirects-DxVoR7PI.mjs} +5 -5
  346. package/dist/{redirects-CacE9eQa.mjs.map → redirects-DxVoR7PI.mjs.map} +1 -1
  347. package/dist/{registry-CIDxZbhh.mjs → registry-brYh-rAT.mjs} +6 -6
  348. package/dist/{registry-CIDxZbhh.mjs.map → registry-brYh-rAT.mjs.map} +1 -1
  349. package/dist/{request-cache-BYMs-BGX.mjs → request-cache-D32LpnmI.mjs} +1 -1
  350. package/dist/{request-cache-BYMs-BGX.mjs.map → request-cache-D32LpnmI.mjs.map} +1 -1
  351. package/dist/request-context.d.mts +7 -0
  352. package/dist/request-context.d.mts.map +1 -1
  353. package/dist/request-context.mjs +2 -1
  354. package/dist/request-context.mjs.map +1 -1
  355. package/dist/{runner-pt6Wl-l-.mjs → runner--4wMWwKM.mjs} +217 -166
  356. package/dist/runner--4wMWwKM.mjs.map +1 -0
  357. package/dist/{runner-DM1yR5qd.d.mts → runner-DTdhuI9i.d.mts} +2 -2
  358. package/dist/{runner-DM1yR5qd.d.mts.map → runner-DTdhuI9i.d.mts.map} +1 -1
  359. package/dist/runtime.d.mts +10 -10
  360. package/dist/runtime.mjs +2 -2
  361. package/dist/{schema-B4tk0HAG.mjs → schema-C1E70ug_.mjs} +5 -5
  362. package/dist/{schema-B4tk0HAG.mjs.map → schema-C1E70ug_.mjs.map} +1 -1
  363. package/dist/{search-f-fNfwab.mjs → search-B3SGZw91.mjs} +4 -4
  364. package/dist/{search-f-fNfwab.mjs.map → search-B3SGZw91.mjs.map} +1 -1
  365. package/dist/{secrets-YYbTgB1w.mjs → secrets-ChPTmy9x.mjs} +2 -2
  366. package/dist/{secrets-YYbTgB1w.mjs.map → secrets-ChPTmy9x.mjs.map} +1 -1
  367. package/dist/{sections-biElLfT9.mjs → sections-D_lVzwRZ.mjs} +3 -3
  368. package/dist/{sections-biElLfT9.mjs.map → sections-D_lVzwRZ.mjs.map} +1 -1
  369. package/dist/seed/index.d.mts +2 -2
  370. package/dist/seed/index.mjs +17 -17
  371. package/dist/seo/index.d.mts +1 -1
  372. package/dist/seo/index.d.mts.map +1 -1
  373. package/dist/seo/index.mjs +3 -12
  374. package/dist/seo/index.mjs.map +1 -1
  375. package/dist/{seo-BR39kvTF.mjs → seo-B5e6y9Wk.mjs} +2 -2
  376. package/dist/{seo-BR39kvTF.mjs.map → seo-B5e6y9Wk.mjs.map} +1 -1
  377. package/dist/{seo-DfjLvu8i.mjs → seo-D_LPkOtu.mjs} +4 -3
  378. package/dist/seo-D_LPkOtu.mjs.map +1 -0
  379. package/dist/{service-BhR2acnc.mjs → service-ChDcsTBs.mjs} +3 -3
  380. package/dist/{service-BhR2acnc.mjs.map → service-ChDcsTBs.mjs.map} +1 -1
  381. package/dist/{settings-D_NJvjgN.mjs → settings-Cv47v9u8.mjs} +3 -3
  382. package/dist/{settings-D_NJvjgN.mjs.map → settings-Cv47v9u8.mjs.map} +1 -1
  383. package/dist/settings-DfxiWY_s.mjs +411 -0
  384. package/dist/settings-DfxiWY_s.mjs.map +1 -0
  385. package/dist/{setup-complete-VoEZfasi.mjs → setup-complete-yvPE4OsP.mjs} +2 -2
  386. package/dist/{setup-complete-VoEZfasi.mjs.map → setup-complete-yvPE4OsP.mjs.map} +1 -1
  387. package/dist/{setup-nonce-Bm0uKqmf.mjs → setup-nonce-C9aFzb94.mjs} +1 -1
  388. package/dist/{setup-nonce-Bm0uKqmf.mjs.map → setup-nonce-C9aFzb94.mjs.map} +1 -1
  389. package/dist/{site-url-Cm8-sJy7.mjs → site-url-CnHlmAs9.mjs} +2 -2
  390. package/dist/{site-url-Cm8-sJy7.mjs.map → site-url-CnHlmAs9.mjs.map} +1 -1
  391. package/dist/storage/local.d.mts +1 -1
  392. package/dist/storage/s3.d.mts +1 -1
  393. package/dist/{taxonomies-Mhn9rjTQ.mjs → taxonomies-BILwiyGk.mjs} +4 -4
  394. package/dist/{taxonomies-Mhn9rjTQ.mjs.map → taxonomies-BILwiyGk.mjs.map} +1 -1
  395. package/dist/{taxonomies-Crtzy4MT.mjs → taxonomies-BdAmbOwx.mjs} +50 -12
  396. package/dist/taxonomies-BdAmbOwx.mjs.map +1 -0
  397. package/dist/{taxonomy-DTZrIQpi.mjs → taxonomy-CdllE4oq.mjs} +3 -3
  398. package/dist/{taxonomy-DTZrIQpi.mjs.map → taxonomy-CdllE4oq.mjs.map} +1 -1
  399. package/dist/{transaction-NQj4VJ7Z.mjs → transaction-x2tJQ-A1.mjs} +1 -1
  400. package/dist/{transaction-NQj4VJ7Z.mjs.map → transaction-x2tJQ-A1.mjs.map} +1 -1
  401. package/dist/{transport-OnMNbsIA.d.mts → transport-B7PPP2CC.d.mts} +1 -1
  402. package/dist/{transport-OnMNbsIA.d.mts.map → transport-B7PPP2CC.d.mts.map} +1 -1
  403. package/dist/{transport--Ck3RBin.mjs → transport-CmpLD7W3.mjs} +1 -1
  404. package/dist/{transport--Ck3RBin.mjs.map → transport-CmpLD7W3.mjs.map} +1 -1
  405. package/dist/{types-DWnN7weG.d.mts → types-BFgrqwSk.d.mts} +1 -1
  406. package/dist/{types-DWnN7weG.d.mts.map → types-BFgrqwSk.d.mts.map} +1 -1
  407. package/dist/{types-Qa7-HJJC.d.mts → types-BH8-30hc.d.mts} +1 -1
  408. package/dist/{types-Qa7-HJJC.d.mts.map → types-BH8-30hc.d.mts.map} +1 -1
  409. package/dist/{types-DawhLFwy.d.mts → types-BPzXTV9x.d.mts} +26 -1
  410. package/dist/{types-DawhLFwy.d.mts.map → types-BPzXTV9x.d.mts.map} +1 -1
  411. package/dist/{types-DbCWhHet.d.mts → types-BUUVn1zr.d.mts} +2 -2
  412. package/dist/types-BUUVn1zr.d.mts.map +1 -0
  413. package/dist/{types-K3MDsxpy.mjs → types-BXSUSAjt.mjs} +16 -3
  414. package/dist/{types-K3MDsxpy.mjs.map → types-BXSUSAjt.mjs.map} +1 -1
  415. package/dist/{types-DMwSpvcw.d.mts → types-CPAPl93j.d.mts} +9 -3
  416. package/dist/{types-DMwSpvcw.d.mts.map → types-CPAPl93j.d.mts.map} +1 -1
  417. package/dist/types-CZI4E3qG.mjs +3 -0
  418. package/dist/{types-kwqCOUxj.d.mts → types-D4kUqbHh.d.mts} +1 -1
  419. package/dist/{types-kwqCOUxj.d.mts.map → types-D4kUqbHh.d.mts.map} +1 -1
  420. package/dist/{types-i8_uzhMD.d.mts → types-DTniiNto.d.mts} +19 -4
  421. package/dist/types-DTniiNto.d.mts.map +1 -0
  422. package/dist/{types-D8bhH891.mjs → types-DZk_y-MU.mjs} +1 -1
  423. package/dist/types-DZk_y-MU.mjs.map +1 -0
  424. package/dist/{types-DX6v9KzJ.d.mts → types-S15DXXNi.d.mts} +1 -1
  425. package/dist/{types-DX6v9KzJ.d.mts.map → types-S15DXXNi.d.mts.map} +1 -1
  426. package/dist/{user-DzEUl5zA.mjs → user-C0um7wrg.mjs} +18 -2
  427. package/dist/user-C0um7wrg.mjs.map +1 -0
  428. package/dist/{validate-JCXcsqiY.mjs → validate-Bz4vqcX1.mjs} +6 -3
  429. package/dist/validate-Bz4vqcX1.mjs.map +1 -0
  430. package/dist/{validate-Dy6nkNls.d.mts → validate-CNwkPWzz.d.mts} +13 -5
  431. package/dist/validate-CNwkPWzz.d.mts.map +1 -0
  432. package/dist/{validation-Bq-VyKJg.mjs → validation-DgGTJm3u.mjs} +5 -5
  433. package/dist/{validation-Bq-VyKJg.mjs.map → validation-DgGTJm3u.mjs.map} +1 -1
  434. package/dist/version-D-5txk2m.mjs +7 -0
  435. package/dist/{version-CnS-Cr8A.mjs.map → version-D-5txk2m.mjs.map} +1 -1
  436. package/dist/{widgets-Bap1eS1X.mjs → widgets-DZfmAbE4.mjs} +47 -44
  437. package/dist/widgets-DZfmAbE4.mjs.map +1 -0
  438. package/dist/{zod-generator-BSDpkqSH.mjs → zod-generator-Djo_VHCt.mjs} +2 -2
  439. package/dist/{zod-generator-BSDpkqSH.mjs.map → zod-generator-Djo_VHCt.mjs.map} +1 -1
  440. package/package.json +10 -10
  441. package/src/api/handlers/content.ts +107 -8
  442. package/src/api/handlers/index.ts +2 -0
  443. package/src/api/handlers/marketplace.ts +2 -5
  444. package/src/api/handlers/registry.ts +70 -0
  445. package/src/api/handlers/seo.ts +9 -1
  446. package/src/api/openapi/document.ts +25 -0
  447. package/src/api/schemas/content.ts +33 -0
  448. package/src/api/schemas/schema.ts +13 -1
  449. package/src/astro/integration/index.ts +98 -0
  450. package/src/astro/integration/routes.ts +6 -0
  451. package/src/astro/integration/virtual-modules.ts +39 -0
  452. package/src/astro/integration/vite-config.ts +12 -0
  453. package/src/astro/middleware.ts +48 -6
  454. package/src/astro/routes/api/content/[collection]/[id]/discard-draft.ts +4 -2
  455. package/src/astro/routes/api/content/[collection]/[id]/publish.ts +4 -2
  456. package/src/astro/routes/api/content/[collection]/[id]/schedule.ts +8 -4
  457. package/src/astro/routes/api/content/[collection]/[id]/unpublish.ts +4 -2
  458. package/src/astro/routes/api/content/[collection]/[id].ts +4 -2
  459. package/src/astro/routes/api/content/[collection]/authors.ts +34 -0
  460. package/src/astro/routes/api/schema/index.ts +7 -15
  461. package/src/astro/routes/sitemap-[collection].xml.ts +13 -2
  462. package/src/astro/types.ts +8 -1
  463. package/src/bylines/index.ts +57 -0
  464. package/src/cli/commands/bundle-utils.ts +2 -0
  465. package/src/cli/commands/export-seed.ts +28 -12
  466. package/src/cli/commands/secrets.ts +2 -2
  467. package/src/components/EmDashImage.astro +22 -4
  468. package/src/components/Image.astro +20 -3
  469. package/src/database/instrumentation.ts +13 -0
  470. package/src/database/migrations/043_content_references.ts +121 -0
  471. package/src/database/migrations/runner.ts +2 -0
  472. package/src/database/repositories/content.ts +225 -67
  473. package/src/database/repositories/index.ts +7 -0
  474. package/src/database/repositories/relation.ts +467 -0
  475. package/src/database/repositories/types.ts +31 -0
  476. package/src/database/repositories/user.ts +18 -0
  477. package/src/database/types.ts +34 -0
  478. package/src/emdash-runtime.ts +172 -67
  479. package/src/index.ts +8 -1
  480. package/src/loader.ts +81 -39
  481. package/src/media/responsive.ts +125 -0
  482. package/src/plugins/cron.ts +3 -2
  483. package/src/plugins/index.ts +5 -0
  484. package/src/plugins/manifest-schema.ts +75 -0
  485. package/src/plugins/marketplace.ts +2 -5
  486. package/src/plugins/scheduler/node.ts +9 -2
  487. package/src/plugins/types.ts +12 -0
  488. package/src/query.ts +45 -7
  489. package/src/request-context.ts +8 -0
  490. package/src/scheduled-publish.ts +153 -0
  491. package/src/schema/types.ts +11 -1
  492. package/src/seed/apply.ts +16 -6
  493. package/src/seed/types.ts +9 -0
  494. package/src/seed/validate.ts +15 -0
  495. package/src/seo/index.ts +2 -28
  496. package/src/seo/media-url.ts +32 -0
  497. package/src/settings/index.ts +32 -40
  498. package/src/taxonomies/index.ts +79 -12
  499. package/src/utils/isolate-cache.ts +189 -0
  500. package/src/virtual-modules.d.ts +11 -0
  501. package/src/widgets/index.ts +57 -54
  502. package/dist/api-Cs7DAACP.mjs.map +0 -1
  503. package/dist/apply-BWMV4Zmw.mjs.map +0 -1
  504. package/dist/byline-fields-BNy7Ng1U.d.mts.map +0 -1
  505. package/dist/content-CyqOmOzm.mjs.map +0 -1
  506. package/dist/cron-DZovZUnC.mjs.map +0 -1
  507. package/dist/index-CjKdMZ3U.d.mts.map +0 -1
  508. package/dist/loader-Dyx8dhFV.mjs.map +0 -1
  509. package/dist/manifest-schema-Cj-YrzrF.mjs.map +0 -1
  510. package/dist/menus-BKkxXCmd.mjs.map +0 -1
  511. package/dist/query-Ctlq1aOk.mjs.map +0 -1
  512. package/dist/redirects-C0L9JUk4.mjs.map +0 -1
  513. package/dist/runner-pt6Wl-l-.mjs.map +0 -1
  514. package/dist/seo-DfjLvu8i.mjs.map +0 -1
  515. package/dist/settings-b5zW1R1T.mjs +0 -235
  516. package/dist/settings-b5zW1R1T.mjs.map +0 -1
  517. package/dist/taxonomies-Crtzy4MT.mjs.map +0 -1
  518. package/dist/types-Cj2S6FuC.mjs +0 -3
  519. package/dist/types-D8bhH891.mjs.map +0 -1
  520. package/dist/types-DbCWhHet.d.mts.map +0 -1
  521. package/dist/types-i8_uzhMD.d.mts.map +0 -1
  522. package/dist/user-DzEUl5zA.mjs.map +0 -1
  523. package/dist/validate-Dy6nkNls.d.mts.map +0 -1
  524. package/dist/validate-JCXcsqiY.mjs.map +0 -1
  525. package/dist/version-CnS-Cr8A.mjs +0 -7
  526. package/dist/widgets-Bap1eS1X.mjs.map +0 -1
  527. package/src/plugins/scheduler/piggyback.ts +0 -71
  528. /package/dist/{api-tokens-B6VgoE6M.mjs → api-tokens-Oq39ba-Z.mjs} +0 -0
@@ -118,4 +118,4 @@ interface PostgresConfig {
118
118
  declare function postgres(config: PostgresConfig): DatabaseDescriptor;
119
119
  //#endregion
120
120
  export { SqliteConfig as a, sqlite as c, PostgresConfig as i, DatabaseDialectType as n, libsql as o, LibsqlConfig as r, postgres as s, DatabaseDescriptor as t };
121
- //# sourceMappingURL=adapters-C5AWLJSD.d.mts.map
121
+ //# sourceMappingURL=adapters-BzIHV3sw.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"adapters-C5AWLJSD.d.mts","names":[],"sources":["../src/db/adapters.ts"],"mappings":";;AA0BA;;;;;AAKA;;;;;;;;;;;AAqBA;;;;;AAOA;;;KAjCY,mBAAA;;AAsDZ;;UAjDiB,kBAAA;EAChB,UAAA;EACA,MAAA;EACA,IAAA,EAAM,mBAAA;EA8CuC;;;AAqB9C;;;;;;;;;AAWA;;EA/DC,oBAAA;AAAA;AAAA,UAGgB,YAAA;EA8DhB;;;EA1DA,GAAA;AAAA;AAAA,UAGgB,YAAA;EA6DhB;;;EAzDA,GAAA;EAyD0B;AAa3B;;EAlEC,SAAA;AAAA;;;;;;;;;;;iBAae,MAAA,CAAO,MAAA,EAAQ,YAAA,GAAe,kBAAA;;;;;;;;;;;;;;iBAqB9B,MAAA,CAAO,MAAA,EAAQ,YAAA,GAAe,kBAAA;;;;UAW7B,cAAA;EAChB,gBAAA;EACA,IAAA;EACA,IAAA;EACA,QAAA;EACA,IAAA;EACA,QAAA;EACA,GAAA;EACA,IAAA;IAAS,GAAA;IAAc,GAAA;EAAA;AAAA;;;;;;;;;;;iBAaR,QAAA,CAAS,MAAA,EAAQ,cAAA,GAAiB,kBAAA"}
1
+ {"version":3,"file":"adapters-BzIHV3sw.d.mts","names":[],"sources":["../src/db/adapters.ts"],"mappings":";;AA0BA;;;;;AAKA;;;;;;;;;;;AAqBA;;;;;AAOA;;;KAjCY,mBAAA;;AAsDZ;;UAjDiB,kBAAA;EAChB,UAAA;EACA,MAAA;EACA,IAAA,EAAM,mBAAA;EA8CuC;;;AAqB9C;;;;;;;;;AAWA;;EA/DC,oBAAA;AAAA;AAAA,UAGgB,YAAA;EA8DhB;;;EA1DA,GAAA;AAAA;AAAA,UAGgB,YAAA;EA6DhB;;;EAzDA,GAAA;EAyD0B;AAa3B;;EAlEC,SAAA;AAAA;;;;;;;;;;;iBAae,MAAA,CAAO,MAAA,EAAQ,YAAA,GAAe,kBAAA;;;;;;;;;;;;;;iBAqB9B,MAAA,CAAO,MAAA,EAAQ,YAAA,GAAe,kBAAA;;;;UAW7B,cAAA;EAChB,gBAAA;EACA,IAAA;EACA,IAAA;EACA,QAAA;EACA,IAAA;EACA,QAAA;EACA,GAAA;EACA,IAAA;IAAS,GAAA;IAAc,GAAA;EAAA;AAAA;;;;;;;;;;;iBAaR,QAAA,CAAS,MAAA,EAAQ,cAAA,GAAiB,kBAAA"}
@@ -1,4 +1,4 @@
1
- import { t as getEnvAllowedOrigins } from "./public-url-egRHCy1m.mjs";
1
+ import { t as getEnvAllowedOrigins } from "./public-url-BFVC2OTJ.mjs";
2
2
 
3
3
  //#region src/auth/allowed-origins.ts
4
4
  /**
@@ -113,4 +113,4 @@ function isIPLiteralHostname(h) {
113
113
 
114
114
  //#endregion
115
115
  export { validateAllowedOrigins as n, validateOriginShape as r, getConfiguredAllowedOrigins as t };
116
- //# sourceMappingURL=allowed-origins-CyYLEJkp.mjs.map
116
+ //# sourceMappingURL=allowed-origins-B1u7Qnvg.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"allowed-origins-CyYLEJkp.mjs","names":[],"sources":["../src/auth/allowed-origins.ts"],"sourcesContent":["/**\n * Resolution and validation of multi-origin passkey verification.\n *\n * `allowedOrigins` lets one EmDash deployment accept passkey assertions from\n * several hostnames sharing the same `rpId` (e.g. apex + preview/staging\n * subdomains under one registrable parent). Origins come from two sources:\n *\n * - `EmDashConfig.allowedOrigins` (declared in `astro.config.mjs`)\n * - `EMDASH_ALLOWED_ORIGINS` (comma-separated runtime env var)\n *\n * Sources are merged (union of permissions, deduplicated). Each entry is\n * validated against `siteUrl` to fail loud on dead config the browser would\n * never honor.\n */\n\nimport { getEnvAllowedOrigins } from \"../api/public-url.js\";\nimport type { EmDashConfig } from \"../astro/integration/runtime.js\";\n\nexport type AllowedOriginSource = \"config.allowedOrigins\" | \"EMDASH_ALLOWED_ORIGINS\";\n\nexport interface TaggedOrigin {\n\t/** Raw entry as declared by the operator. */\n\torigin: string;\n\t/** Where the entry came from (used for source-attributed errors). */\n\tsource: AllowedOriginSource;\n}\n\n/**\n * Collect raw allowedOrigins from config and env, source-tagged.\n *\n * Returns raw values — the caller is expected to pass the result through\n * `validateAllowedOrigins()` before use in passkey verification.\n */\nexport function getConfiguredAllowedOrigins(config?: EmDashConfig): TaggedOrigin[] {\n\tconst tagged: TaggedOrigin[] = [];\n\tif (config?.allowedOrigins) {\n\t\tfor (const origin of config.allowedOrigins) {\n\t\t\tif (origin) tagged.push({ origin, source: \"config.allowedOrigins\" });\n\t\t}\n\t}\n\tfor (const origin of getEnvAllowedOrigins()) {\n\t\ttagged.push({ origin, source: \"EMDASH_ALLOWED_ORIGINS\" });\n\t}\n\treturn tagged;\n}\n\n/**\n * Validate per-entry shape rules (no `siteUrl` needed):\n * - parses as `URL`\n * - protocol is `http:` or `https:`\n * - hostname has no trailing dot (`example.com.` rejected)\n * - hostname has no empty labels (`foo..example.com` rejected)\n *\n * Returns the deduplicated, normalized origin form (`URL.origin`) of every\n * input, in input order. Throws on the first violation with a source-tagged\n * error message.\n */\nexport function validateOriginShape(tagged: TaggedOrigin[]): string[] {\n\tconst normalized: string[] = [];\n\tconst seen = new Set<string>();\n\tfor (const { origin, source } of tagged) {\n\t\tlet parsed: URL;\n\t\ttry {\n\t\t\tparsed = new URL(origin);\n\t\t} catch (e) {\n\t\t\tthrow configError(source, `invalid URL: \"${origin}\"`, e);\n\t\t}\n\t\tif (parsed.protocol !== \"http:\" && parsed.protocol !== \"https:\") {\n\t\t\tthrow configError(\n\t\t\t\tsource,\n\t\t\t\t`origin must be http or https: \"${origin}\" (got ${parsed.protocol})`,\n\t\t\t);\n\t\t}\n\t\tif (parsed.hostname.endsWith(\".\")) {\n\t\t\tthrow configError(\n\t\t\t\tsource,\n\t\t\t\t`hostname has a trailing dot: \"${origin}\". Remove the trailing dot — assertion origins from the browser do not include it.`,\n\t\t\t);\n\t\t}\n\t\tif (parsed.hostname.split(\".\").includes(\"\")) {\n\t\t\tthrow configError(source, `hostname has empty labels: \"${origin}\"`);\n\t\t}\n\t\tif (!seen.has(parsed.origin)) {\n\t\t\tseen.add(parsed.origin);\n\t\t\tnormalized.push(parsed.origin);\n\t\t}\n\t}\n\treturn normalized;\n}\n\n/**\n * Validate the effective merged allowedOrigins set against `siteUrl`.\n *\n * Performs `validateOriginShape()` plus the siteUrl-dependent rules:\n * - Rule A: non-empty origins ⇒ `siteUrl` is set\n * - `siteUrl` hostname is not an IP literal (multi-origin requires a domain)\n * - `siteUrl` hostname has no trailing dot (cannot match assertion origins)\n * - Rule B: each origin's hostname is `siteHost` exactly or a subdomain\n *\n * Throws on first violation. Returns the deduplicated normalized origins.\n *\n * Use this at the runtime chokepoint (where config + env are merged into the\n * effective set). At Astro integration init, prefer `validateOriginShape()`\n * for shape-only checks on `config.allowedOrigins`, since `siteUrl` may be\n * supplied at runtime via `EMDASH_SITE_URL`.\n */\nexport function validateAllowedOrigins(\n\tsiteUrl: string | undefined,\n\ttagged: TaggedOrigin[],\n): string[] {\n\tconst normalized = validateOriginShape(tagged);\n\tif (normalized.length === 0) return normalized;\n\n\tif (!siteUrl) {\n\t\tthrow new Error(\n\t\t\t`EmDash config error: allowedOrigins is set (${normalized.length} ${\n\t\t\t\tnormalized.length === 1 ? \"entry\" : \"entries\"\n\t\t\t}) but siteUrl is not. Without a canonical siteUrl, rpId is derived from the request hostname, defeating multi-origin passkeys. Set siteUrl in astro.config.mjs or via EMDASH_SITE_URL.`,\n\t\t);\n\t}\n\n\tlet siteHost: string;\n\ttry {\n\t\tsiteHost = new URL(siteUrl).hostname;\n\t} catch (e) {\n\t\tthrow new Error(`EmDash config error: siteUrl is not a valid URL: \"${siteUrl}\"`, {\n\t\t\tcause: e,\n\t\t});\n\t}\n\n\tif (siteHost.endsWith(\".\")) {\n\t\tthrow new Error(\n\t\t\t`EmDash config error: siteUrl \"${siteUrl}\" has a trailing-dot hostname, which cannot match assertion origins. Remove the trailing dot when using allowedOrigins.`,\n\t\t);\n\t}\n\tif (isIPLiteralHostname(siteHost)) {\n\t\tthrow new Error(\n\t\t\t`EmDash config error: siteUrl \"${siteUrl}\" uses an IP-literal hostname. Multi-origin passkeys require a domain-based siteUrl — IP addresses cannot have valid subdomains for WebAuthn rpId.`,\n\t\t);\n\t}\n\n\tfor (const { origin, source } of tagged) {\n\t\tconst h = new URL(origin).hostname;\n\t\tif (h !== siteHost && !h.endsWith(\".\" + siteHost)) {\n\t\t\tthrow configError(\n\t\t\t\tsource,\n\t\t\t\t`\"${origin}\" is not a subdomain of siteUrl \"${siteUrl}\". Allowed origins must be the same hostname as siteUrl or a subdomain of it.`,\n\t\t\t);\n\t\t}\n\t}\n\n\treturn normalized;\n}\n\nfunction configError(source: AllowedOriginSource, detail: string, cause?: unknown): Error {\n\tconst err = new Error(`EmDash config error in ${source}: ${detail}`);\n\tif (cause !== undefined) (err as Error & { cause?: unknown }).cause = cause;\n\treturn err;\n}\n\nconst IPV4_DOTTED_DECIMAL_RE = /^\\d+(\\.\\d+){3}$/;\n\nfunction isIPLiteralHostname(h: string): boolean {\n\t// IPv6 hostnames are bracketed by URL.hostname, e.g. \"[::1]\"\n\tif (h.startsWith(\"[\")) return true;\n\t// IPv4 dotted-decimal\n\treturn IPV4_DOTTED_DECIMAL_RE.test(h);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAiCA,SAAgB,4BAA4B,QAAuC;CAClF,MAAM,SAAyB,EAAE;AACjC,KAAI,QAAQ,gBACX;OAAK,MAAM,UAAU,OAAO,eAC3B,KAAI,OAAQ,QAAO,KAAK;GAAE;GAAQ,QAAQ;GAAyB,CAAC;;AAGtE,MAAK,MAAM,UAAU,sBAAsB,CAC1C,QAAO,KAAK;EAAE;EAAQ,QAAQ;EAA0B,CAAC;AAE1D,QAAO;;;;;;;;;;;;;AAcR,SAAgB,oBAAoB,QAAkC;CACrE,MAAM,aAAuB,EAAE;CAC/B,MAAM,uBAAO,IAAI,KAAa;AAC9B,MAAK,MAAM,EAAE,QAAQ,YAAY,QAAQ;EACxC,IAAI;AACJ,MAAI;AACH,YAAS,IAAI,IAAI,OAAO;WAChB,GAAG;AACX,SAAM,YAAY,QAAQ,iBAAiB,OAAO,IAAI,EAAE;;AAEzD,MAAI,OAAO,aAAa,WAAW,OAAO,aAAa,SACtD,OAAM,YACL,QACA,kCAAkC,OAAO,SAAS,OAAO,SAAS,GAClE;AAEF,MAAI,OAAO,SAAS,SAAS,IAAI,CAChC,OAAM,YACL,QACA,iCAAiC,OAAO,oFACxC;AAEF,MAAI,OAAO,SAAS,MAAM,IAAI,CAAC,SAAS,GAAG,CAC1C,OAAM,YAAY,QAAQ,+BAA+B,OAAO,GAAG;AAEpE,MAAI,CAAC,KAAK,IAAI,OAAO,OAAO,EAAE;AAC7B,QAAK,IAAI,OAAO,OAAO;AACvB,cAAW,KAAK,OAAO,OAAO;;;AAGhC,QAAO;;;;;;;;;;;;;;;;;;AAmBR,SAAgB,uBACf,SACA,QACW;CACX,MAAM,aAAa,oBAAoB,OAAO;AAC9C,KAAI,WAAW,WAAW,EAAG,QAAO;AAEpC,KAAI,CAAC,QACJ,OAAM,IAAI,MACT,+CAA+C,WAAW,OAAO,GAChE,WAAW,WAAW,IAAI,UAAU,UACpC,wLACD;CAGF,IAAI;AACJ,KAAI;AACH,aAAW,IAAI,IAAI,QAAQ,CAAC;UACpB,GAAG;AACX,QAAM,IAAI,MAAM,qDAAqD,QAAQ,IAAI,EAChF,OAAO,GACP,CAAC;;AAGH,KAAI,SAAS,SAAS,IAAI,CACzB,OAAM,IAAI,MACT,iCAAiC,QAAQ,yHACzC;AAEF,KAAI,oBAAoB,SAAS,CAChC,OAAM,IAAI,MACT,iCAAiC,QAAQ,oJACzC;AAGF,MAAK,MAAM,EAAE,QAAQ,YAAY,QAAQ;EACxC,MAAM,IAAI,IAAI,IAAI,OAAO,CAAC;AAC1B,MAAI,MAAM,YAAY,CAAC,EAAE,SAAS,MAAM,SAAS,CAChD,OAAM,YACL,QACA,IAAI,OAAO,mCAAmC,QAAQ,+EACtD;;AAIH,QAAO;;AAGR,SAAS,YAAY,QAA6B,QAAgB,OAAwB;CACzF,MAAM,sBAAM,IAAI,MAAM,0BAA0B,OAAO,IAAI,SAAS;AACpE,KAAI,UAAU,OAAW,CAAC,IAAoC,QAAQ;AACtE,QAAO;;AAGR,MAAM,yBAAyB;AAE/B,SAAS,oBAAoB,GAAoB;AAEhD,KAAI,EAAE,WAAW,IAAI,CAAE,QAAO;AAE9B,QAAO,uBAAuB,KAAK,EAAE"}
1
+ {"version":3,"file":"allowed-origins-B1u7Qnvg.mjs","names":[],"sources":["../src/auth/allowed-origins.ts"],"sourcesContent":["/**\n * Resolution and validation of multi-origin passkey verification.\n *\n * `allowedOrigins` lets one EmDash deployment accept passkey assertions from\n * several hostnames sharing the same `rpId` (e.g. apex + preview/staging\n * subdomains under one registrable parent). Origins come from two sources:\n *\n * - `EmDashConfig.allowedOrigins` (declared in `astro.config.mjs`)\n * - `EMDASH_ALLOWED_ORIGINS` (comma-separated runtime env var)\n *\n * Sources are merged (union of permissions, deduplicated). Each entry is\n * validated against `siteUrl` to fail loud on dead config the browser would\n * never honor.\n */\n\nimport { getEnvAllowedOrigins } from \"../api/public-url.js\";\nimport type { EmDashConfig } from \"../astro/integration/runtime.js\";\n\nexport type AllowedOriginSource = \"config.allowedOrigins\" | \"EMDASH_ALLOWED_ORIGINS\";\n\nexport interface TaggedOrigin {\n\t/** Raw entry as declared by the operator. */\n\torigin: string;\n\t/** Where the entry came from (used for source-attributed errors). */\n\tsource: AllowedOriginSource;\n}\n\n/**\n * Collect raw allowedOrigins from config and env, source-tagged.\n *\n * Returns raw values — the caller is expected to pass the result through\n * `validateAllowedOrigins()` before use in passkey verification.\n */\nexport function getConfiguredAllowedOrigins(config?: EmDashConfig): TaggedOrigin[] {\n\tconst tagged: TaggedOrigin[] = [];\n\tif (config?.allowedOrigins) {\n\t\tfor (const origin of config.allowedOrigins) {\n\t\t\tif (origin) tagged.push({ origin, source: \"config.allowedOrigins\" });\n\t\t}\n\t}\n\tfor (const origin of getEnvAllowedOrigins()) {\n\t\ttagged.push({ origin, source: \"EMDASH_ALLOWED_ORIGINS\" });\n\t}\n\treturn tagged;\n}\n\n/**\n * Validate per-entry shape rules (no `siteUrl` needed):\n * - parses as `URL`\n * - protocol is `http:` or `https:`\n * - hostname has no trailing dot (`example.com.` rejected)\n * - hostname has no empty labels (`foo..example.com` rejected)\n *\n * Returns the deduplicated, normalized origin form (`URL.origin`) of every\n * input, in input order. Throws on the first violation with a source-tagged\n * error message.\n */\nexport function validateOriginShape(tagged: TaggedOrigin[]): string[] {\n\tconst normalized: string[] = [];\n\tconst seen = new Set<string>();\n\tfor (const { origin, source } of tagged) {\n\t\tlet parsed: URL;\n\t\ttry {\n\t\t\tparsed = new URL(origin);\n\t\t} catch (e) {\n\t\t\tthrow configError(source, `invalid URL: \"${origin}\"`, e);\n\t\t}\n\t\tif (parsed.protocol !== \"http:\" && parsed.protocol !== \"https:\") {\n\t\t\tthrow configError(\n\t\t\t\tsource,\n\t\t\t\t`origin must be http or https: \"${origin}\" (got ${parsed.protocol})`,\n\t\t\t);\n\t\t}\n\t\tif (parsed.hostname.endsWith(\".\")) {\n\t\t\tthrow configError(\n\t\t\t\tsource,\n\t\t\t\t`hostname has a trailing dot: \"${origin}\". Remove the trailing dot — assertion origins from the browser do not include it.`,\n\t\t\t);\n\t\t}\n\t\tif (parsed.hostname.split(\".\").includes(\"\")) {\n\t\t\tthrow configError(source, `hostname has empty labels: \"${origin}\"`);\n\t\t}\n\t\tif (!seen.has(parsed.origin)) {\n\t\t\tseen.add(parsed.origin);\n\t\t\tnormalized.push(parsed.origin);\n\t\t}\n\t}\n\treturn normalized;\n}\n\n/**\n * Validate the effective merged allowedOrigins set against `siteUrl`.\n *\n * Performs `validateOriginShape()` plus the siteUrl-dependent rules:\n * - Rule A: non-empty origins ⇒ `siteUrl` is set\n * - `siteUrl` hostname is not an IP literal (multi-origin requires a domain)\n * - `siteUrl` hostname has no trailing dot (cannot match assertion origins)\n * - Rule B: each origin's hostname is `siteHost` exactly or a subdomain\n *\n * Throws on first violation. Returns the deduplicated normalized origins.\n *\n * Use this at the runtime chokepoint (where config + env are merged into the\n * effective set). At Astro integration init, prefer `validateOriginShape()`\n * for shape-only checks on `config.allowedOrigins`, since `siteUrl` may be\n * supplied at runtime via `EMDASH_SITE_URL`.\n */\nexport function validateAllowedOrigins(\n\tsiteUrl: string | undefined,\n\ttagged: TaggedOrigin[],\n): string[] {\n\tconst normalized = validateOriginShape(tagged);\n\tif (normalized.length === 0) return normalized;\n\n\tif (!siteUrl) {\n\t\tthrow new Error(\n\t\t\t`EmDash config error: allowedOrigins is set (${normalized.length} ${\n\t\t\t\tnormalized.length === 1 ? \"entry\" : \"entries\"\n\t\t\t}) but siteUrl is not. Without a canonical siteUrl, rpId is derived from the request hostname, defeating multi-origin passkeys. Set siteUrl in astro.config.mjs or via EMDASH_SITE_URL.`,\n\t\t);\n\t}\n\n\tlet siteHost: string;\n\ttry {\n\t\tsiteHost = new URL(siteUrl).hostname;\n\t} catch (e) {\n\t\tthrow new Error(`EmDash config error: siteUrl is not a valid URL: \"${siteUrl}\"`, {\n\t\t\tcause: e,\n\t\t});\n\t}\n\n\tif (siteHost.endsWith(\".\")) {\n\t\tthrow new Error(\n\t\t\t`EmDash config error: siteUrl \"${siteUrl}\" has a trailing-dot hostname, which cannot match assertion origins. Remove the trailing dot when using allowedOrigins.`,\n\t\t);\n\t}\n\tif (isIPLiteralHostname(siteHost)) {\n\t\tthrow new Error(\n\t\t\t`EmDash config error: siteUrl \"${siteUrl}\" uses an IP-literal hostname. Multi-origin passkeys require a domain-based siteUrl — IP addresses cannot have valid subdomains for WebAuthn rpId.`,\n\t\t);\n\t}\n\n\tfor (const { origin, source } of tagged) {\n\t\tconst h = new URL(origin).hostname;\n\t\tif (h !== siteHost && !h.endsWith(\".\" + siteHost)) {\n\t\t\tthrow configError(\n\t\t\t\tsource,\n\t\t\t\t`\"${origin}\" is not a subdomain of siteUrl \"${siteUrl}\". Allowed origins must be the same hostname as siteUrl or a subdomain of it.`,\n\t\t\t);\n\t\t}\n\t}\n\n\treturn normalized;\n}\n\nfunction configError(source: AllowedOriginSource, detail: string, cause?: unknown): Error {\n\tconst err = new Error(`EmDash config error in ${source}: ${detail}`);\n\tif (cause !== undefined) (err as Error & { cause?: unknown }).cause = cause;\n\treturn err;\n}\n\nconst IPV4_DOTTED_DECIMAL_RE = /^\\d+(\\.\\d+){3}$/;\n\nfunction isIPLiteralHostname(h: string): boolean {\n\t// IPv6 hostnames are bracketed by URL.hostname, e.g. \"[::1]\"\n\tif (h.startsWith(\"[\")) return true;\n\t// IPv4 dotted-decimal\n\treturn IPV4_DOTTED_DECIMAL_RE.test(h);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAiCA,SAAgB,4BAA4B,QAAuC;CAClF,MAAM,SAAyB,EAAE;AACjC,KAAI,QAAQ,gBACX;OAAK,MAAM,UAAU,OAAO,eAC3B,KAAI,OAAQ,QAAO,KAAK;GAAE;GAAQ,QAAQ;GAAyB,CAAC;;AAGtE,MAAK,MAAM,UAAU,sBAAsB,CAC1C,QAAO,KAAK;EAAE;EAAQ,QAAQ;EAA0B,CAAC;AAE1D,QAAO;;;;;;;;;;;;;AAcR,SAAgB,oBAAoB,QAAkC;CACrE,MAAM,aAAuB,EAAE;CAC/B,MAAM,uBAAO,IAAI,KAAa;AAC9B,MAAK,MAAM,EAAE,QAAQ,YAAY,QAAQ;EACxC,IAAI;AACJ,MAAI;AACH,YAAS,IAAI,IAAI,OAAO;WAChB,GAAG;AACX,SAAM,YAAY,QAAQ,iBAAiB,OAAO,IAAI,EAAE;;AAEzD,MAAI,OAAO,aAAa,WAAW,OAAO,aAAa,SACtD,OAAM,YACL,QACA,kCAAkC,OAAO,SAAS,OAAO,SAAS,GAClE;AAEF,MAAI,OAAO,SAAS,SAAS,IAAI,CAChC,OAAM,YACL,QACA,iCAAiC,OAAO,oFACxC;AAEF,MAAI,OAAO,SAAS,MAAM,IAAI,CAAC,SAAS,GAAG,CAC1C,OAAM,YAAY,QAAQ,+BAA+B,OAAO,GAAG;AAEpE,MAAI,CAAC,KAAK,IAAI,OAAO,OAAO,EAAE;AAC7B,QAAK,IAAI,OAAO,OAAO;AACvB,cAAW,KAAK,OAAO,OAAO;;;AAGhC,QAAO;;;;;;;;;;;;;;;;;;AAmBR,SAAgB,uBACf,SACA,QACW;CACX,MAAM,aAAa,oBAAoB,OAAO;AAC9C,KAAI,WAAW,WAAW,EAAG,QAAO;AAEpC,KAAI,CAAC,QACJ,OAAM,IAAI,MACT,+CAA+C,WAAW,OAAO,GAChE,WAAW,WAAW,IAAI,UAAU,UACpC,wLACD;CAGF,IAAI;AACJ,KAAI;AACH,aAAW,IAAI,IAAI,QAAQ,CAAC;UACpB,GAAG;AACX,QAAM,IAAI,MAAM,qDAAqD,QAAQ,IAAI,EAChF,OAAO,GACP,CAAC;;AAGH,KAAI,SAAS,SAAS,IAAI,CACzB,OAAM,IAAI,MACT,iCAAiC,QAAQ,yHACzC;AAEF,KAAI,oBAAoB,SAAS,CAChC,OAAM,IAAI,MACT,iCAAiC,QAAQ,oJACzC;AAGF,MAAK,MAAM,EAAE,QAAQ,YAAY,QAAQ;EACxC,MAAM,IAAI,IAAI,IAAI,OAAO,CAAC;AAC1B,MAAI,MAAM,YAAY,CAAC,EAAE,SAAS,MAAM,SAAS,CAChD,OAAM,YACL,QACA,IAAI,OAAO,mCAAmC,QAAQ,+EACtD;;AAIH,QAAO;;AAGR,SAAS,YAAY,QAA6B,QAAgB,OAAwB;CACzF,MAAM,sBAAM,IAAI,MAAM,0BAA0B,OAAO,IAAI,SAAS;AACpE,KAAI,UAAU,OAAW,CAAC,IAAoC,QAAQ;AACtE,QAAO;;AAGR,MAAM,yBAAyB;AAE/B,SAAS,oBAAoB,GAAoB;AAEhD,KAAI,EAAE,WAAW,IAAI,CAAE,QAAO;AAE9B,QAAO,uBAAuB,KAAK,EAAE"}
@@ -1,6 +1,6 @@
1
- import { a as parseQuery, c as handleError, i as parseBody, n as ParseResult, o as apiError, r as isParseError, s as apiSuccess, t as OptionsRepository } from "../options-tb7DJROi.mjs";
2
- import { t as Database } from "../types-DawhLFwy.mjs";
3
- import { Ct as StorageCollectionConfig, St as StorageCollection } from "../types-DMwSpvcw.mjs";
1
+ import { a as parseQuery, c as handleError, i as parseBody, n as ParseResult, o as apiError, r as isParseError, s as apiSuccess, t as OptionsRepository } from "../options-DyYIYpPd.mjs";
2
+ import { t as Database } from "../types-BPzXTV9x.mjs";
3
+ import { Ct as StorageCollectionConfig, St as StorageCollection } from "../types-CPAPl93j.mjs";
4
4
  import { Kysely } from "kysely";
5
5
 
6
6
  //#region src/api/setup-complete.d.ts
@@ -1,22 +1,22 @@
1
1
  import "../dialect-helpers-DRI5pyY3.mjs";
2
- import "../content-CyqOmOzm.mjs";
2
+ import "../content-BIlVx-RX.mjs";
3
3
  import "../base64-CqR-7kqF.mjs";
4
- import "../types-K3MDsxpy.mjs";
5
- import "../media-C-oovGCG.mjs";
6
- import "../user-DzEUl5zA.mjs";
7
- import { t as OptionsRepository } from "../options-BL4X94qY.mjs";
8
- import { r as createStorageAccess } from "../context-DZ7bEh5-.mjs";
9
- import "../request-cache-BYMs-BGX.mjs";
10
- import "../seo-BR39kvTF.mjs";
11
- import "../loader-Dyx8dhFV.mjs";
12
- import "../settings-b5zW1R1T.mjs";
4
+ import "../types-BXSUSAjt.mjs";
5
+ import "../media-JOf3pNkw.mjs";
6
+ import "../user-C0um7wrg.mjs";
7
+ import { t as OptionsRepository } from "../options-BPCVnesz.mjs";
8
+ import { r as createStorageAccess } from "../context-Y7BRkWes.mjs";
9
+ import "../request-cache-D32LpnmI.mjs";
10
+ import "../seo-B5e6y9Wk.mjs";
11
+ import "../loader-ZN1ll-d-.mjs";
12
+ import "../settings-DfxiWY_s.mjs";
13
13
  import "../ssrf-BsVGIE0Z.mjs";
14
- import { n as apiSuccess, r as handleError, t as apiError } from "../error-DJOsMVSt.mjs";
15
- import { i as parseQuery, n as parseBody, t as isParseError } from "../parse-BBkFmLVr.mjs";
14
+ import { n as apiSuccess, r as handleError, t as apiError } from "../error-RwM4dD35.mjs";
15
+ import { i as parseQuery, n as parseBody, t as isParseError } from "../parse-CrGndy1A.mjs";
16
16
  import "../ssrf-BvgVcfNQ.mjs";
17
- import "../cron-DZovZUnC.mjs";
18
- import { n as getPublicOrigin } from "../public-url-egRHCy1m.mjs";
19
- import { t as finalizeSetup } from "../setup-complete-VoEZfasi.mjs";
17
+ import "../cron-BJ2ClIlj.mjs";
18
+ import { n as getPublicOrigin } from "../public-url-BFVC2OTJ.mjs";
19
+ import { t as finalizeSetup } from "../setup-complete-yvPE4OsP.mjs";
20
20
 
21
21
  //#region src/api/auth-storage.ts
22
22
  /**
@@ -1,2 +1,2 @@
1
- import { $ as wpRewriteUrlsBody, $n as apiErrorSchema, $t as commentSchema, A as reorderWidgetsBody, An as mediaResponseSchema, At as menuSchema, B as userSchema, Bn as contentPublishBody, Bt as magicLinkSendBody, C as notFoundSummarySchema, Cn as mediaConfirmBody, Ct as termWithCountSchema, D as updateRedirectBody, Dn as mediaListQuery, Dt as menuItemSchema, E as redirectsListQuery, En as mediaItemSchema, Et as createMenuItemBody, F as widgetSchema, Fn as contentCreateBody, Ft as updateMenuItemBody, G as setupAdminVerifyBody, Gn as contentTermsBody, Gt as passkeyVerifyBody, H as usersListQuery, Hn as contentScheduleBody, Ht as passkeyRegisterOptionsBody, I as allowedDomainCreateBody, In as contentItemSchema, It as authMeActionBody, J as importProbeBody, Jn as contentTrashQuery, Jt as adminCommentListResponseSchema, K as setupAtprotoAdminBody, Kn as contentTranslationSchema, Kt as signupCompleteBody, L as allowedDomainUpdateBody, Ln as contentListQuery, Lt as inviteCompleteBody, M as widgetAreaSchema, Mn as mediaUploadUrlBody, Mt as menuWithItemsSchema, N as widgetAreaWithWidgetsAndCountSchema, Nn as mediaUploadUrlResponseSchema, Nt as reorderMenuItemsBody, O as createWidgetAreaBody, On as mediaListResponseSchema, Ot as menuItemTypeEnum, P as widgetAreaWithWidgetsSchema, Pn as contentCompareResponseSchema, Pt as updateMenuBody, Q as wpPrepareBody, Qn as VALID_ROLE_LEVELS, Qt as commentListQuery, R as userDetailSchema, Rn as contentListResponseSchema, Rt as inviteCreateBody, S as notFoundSummaryResponseSchema, Sn as formatFileSize, St as termTranslationsSchema, T as redirectSchema, Tn as mediaExistingResponseSchema, Tt as createMenuBody, U as atprotoLoginBody, Un as contentSeoInput, Ut as passkeyRegisterVerifyBody, V as userUpdateBody, Vn as contentResponseSchema, Vt as passkeyOptionsBody, W as setupAdminBody, Wn as contentSeoSchema, Wt as passkeyRenameBody, X as wpPluginAnalyzeBody, Xn as trashedContentItemSchema, Xt as commentBulkResponseSchema, Y as wpMediaImportBody, Yn as contentUpdateBody, Yt as commentBulkBody, Z as wpPluginExecuteBody, Zn as trashedContentListResponseSchema, Zt as commentCountsResponseSchema, _ as notFoundEntrySchema, _n as orphanedTableSchema, _t as taxonomyListResponseSchema, a as bylineFieldUpdateBody, an as collectionListResponseSchema, ar as localeFilterQuery, at as searchSuggestQuery, b as notFoundPruneBody, bn as updateFieldBody, bt as termResponseSchema, c as bylineCreditSchema, cn as collectionWithFieldsResponseSchema, cr as slugPattern, ct as createSectionBody, d as bylineTranslationCreateBody, dn as fieldListResponseSchema, dt as sectionsListQuery, en as commentStatusBody, er as countResponseSchema, et as searchEnableBody, f as bylineTranslationsResponseSchema, fn as fieldReorderBody, ft as updateSectionBody, g as createRedirectBody, gn as orphanedTableListResponseSchema, gt as taxonomyDefTranslationsSchema, h as contentBylineInputSchema, hn as orphanRegisterBody, ht as taxonomyDefSchema, i as bylineFieldReorderBody, in as collectionGetQuery, ir as localeCode, it as searchResultSchema, j as updateWidgetBody, jn as mediaUpdateBody, jt as menuTranslationsSchema, k as createWidgetBody, kn as mediaProviderListQuery, kt as menuListItemSchema, l as bylineListResponseSchema, ln as createCollectionBody, lr as successEnvelope, lt as sectionListResponseSchema, m as bylinesListQuery, mn as fieldSchema, mt as createTermBody, n as bylineFieldDefinitionSchema, nn as publicCommentListResponseSchema, nr as deleteResponseSchema, nt as searchRebuildBody, o as bylineFieldUsageResponseSchema, on as collectionResponseSchema, or as offsetPaginationQuery, ot as settingsUpdateBody, p as bylineUpdateBody, pn as fieldResponseSchema, pt as createTaxonomyDefBody, q as setupBody, qn as contentTranslationsResponseSchema, qt as signupRequestBody, r as bylineFieldListResponseSchema, rn as publicCommentSchema, rr as httpUrl, rt as searchResponseSchema, s as bylineCreateBody, sn as collectionSchema, sr as roleLevel, st as siteSettingsSchema, t as bylineFieldCreateBody, tn as createCommentBody, tr as cursorPaginationQuery, tt as searchQuery, u as bylineSummarySchema, un as createFieldBody, ut as sectionSchema, v as notFoundListQuery, vn as schemaExportQuery, vt as termGetResponseSchema, w as redirectListResponseSchema, wn as mediaConfirmResponseSchema, wt as updateTermBody, x as notFoundSummaryQuery, xn as DEFAULT_MAX_UPLOAD_SIZE, xt as termSchema, y as notFoundListResponseSchema, yn as updateCollectionBody, yt as termListResponseSchema, z as userListResponseSchema, zn as contentPreviewUrlBody, zt as inviteRegisterOptionsBody } from "../../byline-fields-BNy7Ng1U.mjs";
2
- export { DEFAULT_MAX_UPLOAD_SIZE, VALID_ROLE_LEVELS, adminCommentListResponseSchema, allowedDomainCreateBody, allowedDomainUpdateBody, apiErrorSchema, atprotoLoginBody, authMeActionBody, bylineCreateBody, bylineCreditSchema, bylineFieldCreateBody, bylineFieldDefinitionSchema, bylineFieldListResponseSchema, bylineFieldReorderBody, bylineFieldUpdateBody, bylineFieldUsageResponseSchema, bylineListResponseSchema, bylineSummarySchema, bylineTranslationCreateBody, bylineTranslationsResponseSchema, bylineUpdateBody, bylinesListQuery, collectionGetQuery, collectionListResponseSchema, collectionResponseSchema, collectionSchema, collectionWithFieldsResponseSchema, commentBulkBody, commentBulkResponseSchema, commentCountsResponseSchema, commentListQuery, commentSchema, commentStatusBody, contentBylineInputSchema, contentCompareResponseSchema, contentCreateBody, contentItemSchema, contentListQuery, contentListResponseSchema, contentPreviewUrlBody, contentPublishBody, contentResponseSchema, contentScheduleBody, contentSeoInput, contentSeoSchema, contentTermsBody, contentTranslationSchema, contentTranslationsResponseSchema, contentTrashQuery, contentUpdateBody, countResponseSchema, createCollectionBody, createCommentBody, createFieldBody, createMenuBody, createMenuItemBody, createRedirectBody, createSectionBody, createTaxonomyDefBody, createTermBody, createWidgetAreaBody, createWidgetBody, cursorPaginationQuery, deleteResponseSchema, fieldListResponseSchema, fieldReorderBody, fieldResponseSchema, fieldSchema, formatFileSize, httpUrl, importProbeBody, inviteCompleteBody, inviteCreateBody, inviteRegisterOptionsBody, localeCode, localeFilterQuery, magicLinkSendBody, mediaConfirmBody, mediaConfirmResponseSchema, mediaExistingResponseSchema, mediaItemSchema, mediaListQuery, mediaListResponseSchema, mediaProviderListQuery, mediaResponseSchema, mediaUpdateBody, mediaUploadUrlBody, mediaUploadUrlResponseSchema, menuItemSchema, menuItemTypeEnum, menuListItemSchema, menuSchema, menuTranslationsSchema, menuWithItemsSchema, notFoundEntrySchema, notFoundListQuery, notFoundListResponseSchema, notFoundPruneBody, notFoundSummaryQuery, notFoundSummaryResponseSchema, notFoundSummarySchema, offsetPaginationQuery, orphanRegisterBody, orphanedTableListResponseSchema, orphanedTableSchema, passkeyOptionsBody, passkeyRegisterOptionsBody, passkeyRegisterVerifyBody, passkeyRenameBody, passkeyVerifyBody, publicCommentListResponseSchema, publicCommentSchema, redirectListResponseSchema, redirectSchema, redirectsListQuery, reorderMenuItemsBody, reorderWidgetsBody, roleLevel, schemaExportQuery, searchEnableBody, searchQuery, searchRebuildBody, searchResponseSchema, searchResultSchema, searchSuggestQuery, sectionListResponseSchema, sectionSchema, sectionsListQuery, settingsUpdateBody, setupAdminBody, setupAdminVerifyBody, setupAtprotoAdminBody, setupBody, signupCompleteBody, signupRequestBody, siteSettingsSchema, slugPattern, successEnvelope, taxonomyDefSchema, taxonomyDefTranslationsSchema, taxonomyListResponseSchema, termGetResponseSchema, termListResponseSchema, termResponseSchema, termSchema, termTranslationsSchema, termWithCountSchema, trashedContentItemSchema, trashedContentListResponseSchema, updateCollectionBody, updateFieldBody, updateMenuBody, updateMenuItemBody, updateRedirectBody, updateSectionBody, updateTermBody, updateWidgetBody, userDetailSchema, userListResponseSchema, userSchema, userUpdateBody, usersListQuery, widgetAreaSchema, widgetAreaWithWidgetsAndCountSchema, widgetAreaWithWidgetsSchema, widgetSchema, wpMediaImportBody, wpPluginAnalyzeBody, wpPluginExecuteBody, wpPrepareBody, wpRewriteUrlsBody };
1
+ import { $ as wpRewriteUrlsBody, $n as trashedContentListResponseSchema, $t as commentSchema, A as reorderWidgetsBody, An as mediaResponseSchema, At as menuSchema, B as userSchema, Bn as contentListResponseSchema, Bt as magicLinkSendBody, C as notFoundSummarySchema, Cn as mediaConfirmBody, Ct as termWithCountSchema, D as updateRedirectBody, Dn as mediaListQuery, Dt as menuItemSchema, E as redirectsListQuery, En as mediaItemSchema, Et as createMenuItemBody, F as widgetSchema, Fn as contentAuthorsResponseSchema, Ft as updateMenuItemBody, G as setupAdminVerifyBody, Gn as contentSeoInput, Gt as passkeyVerifyBody, H as usersListQuery, Hn as contentPublishBody, Ht as passkeyRegisterOptionsBody, I as allowedDomainCreateBody, In as contentCompareResponseSchema, It as authMeActionBody, J as importProbeBody, Jn as contentTranslationSchema, Jt as adminCommentListResponseSchema, K as setupAtprotoAdminBody, Kn as contentSeoSchema, Kt as signupCompleteBody, L as allowedDomainUpdateBody, Ln as contentCreateBody, Lt as inviteCompleteBody, M as widgetAreaSchema, Mn as mediaUploadUrlBody, Mt as menuWithItemsSchema, N as widgetAreaWithWidgetsAndCountSchema, Nn as mediaUploadUrlResponseSchema, Nt as reorderMenuItemsBody, O as createWidgetAreaBody, On as mediaListResponseSchema, Ot as menuItemTypeEnum, P as widgetAreaWithWidgetsSchema, Pn as contentAuthorSchema, Pt as updateMenuBody, Q as wpPrepareBody, Qn as trashedContentItemSchema, Qt as commentListQuery, R as userDetailSchema, Rn as contentItemSchema, Rt as inviteCreateBody, S as notFoundSummaryResponseSchema, Sn as formatFileSize, St as termTranslationsSchema, T as redirectSchema, Tn as mediaExistingResponseSchema, Tt as createMenuBody, U as atprotoLoginBody, Un as contentResponseSchema, Ut as passkeyRegisterVerifyBody, V as userUpdateBody, Vn as contentPreviewUrlBody, Vt as passkeyOptionsBody, W as setupAdminBody, Wn as contentScheduleBody, Wt as passkeyRenameBody, X as wpPluginAnalyzeBody, Xn as contentTrashQuery, Xt as commentBulkResponseSchema, Y as wpMediaImportBody, Yn as contentTranslationsResponseSchema, Yt as commentBulkBody, Z as wpPluginExecuteBody, Zn as contentUpdateBody, Zt as commentCountsResponseSchema, _ as notFoundEntrySchema, _n as orphanedTableSchema, _t as taxonomyListResponseSchema, a as bylineFieldUpdateBody, an as collectionListResponseSchema, ar as httpUrl, at as searchSuggestQuery, b as notFoundPruneBody, bn as updateFieldBody, bt as termResponseSchema, c as bylineCreditSchema, cn as collectionWithFieldsResponseSchema, cr as offsetPaginationQuery, ct as createSectionBody, d as bylineTranslationCreateBody, dn as fieldListResponseSchema, dr as successEnvelope, dt as sectionsListQuery, en as commentStatusBody, er as VALID_ROLE_LEVELS, et as searchEnableBody, f as bylineTranslationsResponseSchema, fn as fieldReorderBody, ft as updateSectionBody, g as createRedirectBody, gn as orphanedTableListResponseSchema, gt as taxonomyDefTranslationsSchema, h as contentBylineInputSchema, hn as orphanRegisterBody, ht as taxonomyDefSchema, i as bylineFieldReorderBody, in as collectionGetQuery, ir as deleteResponseSchema, it as searchResultSchema, j as updateWidgetBody, jn as mediaUpdateBody, jt as menuTranslationsSchema, k as createWidgetBody, kn as mediaProviderListQuery, kt as menuListItemSchema, l as bylineListResponseSchema, ln as createCollectionBody, lr as roleLevel, lt as sectionListResponseSchema, m as bylinesListQuery, mn as fieldSchema, mt as createTermBody, n as bylineFieldDefinitionSchema, nn as publicCommentListResponseSchema, nr as countResponseSchema, nt as searchRebuildBody, o as bylineFieldUsageResponseSchema, on as collectionResponseSchema, or as localeCode, ot as settingsUpdateBody, p as bylineUpdateBody, pn as fieldResponseSchema, pt as createTaxonomyDefBody, q as setupBody, qn as contentTermsBody, qt as signupRequestBody, r as bylineFieldListResponseSchema, rn as publicCommentSchema, rr as cursorPaginationQuery, rt as searchResponseSchema, s as bylineCreateBody, sn as collectionSchema, sr as localeFilterQuery, st as siteSettingsSchema, t as bylineFieldCreateBody, tn as createCommentBody, tr as apiErrorSchema, tt as searchQuery, u as bylineSummarySchema, un as createFieldBody, ur as slugPattern, ut as sectionSchema, v as notFoundListQuery, vn as schemaExportQuery, vt as termGetResponseSchema, w as redirectListResponseSchema, wn as mediaConfirmResponseSchema, wt as updateTermBody, x as notFoundSummaryQuery, xn as DEFAULT_MAX_UPLOAD_SIZE, xt as termSchema, y as notFoundListResponseSchema, yn as updateCollectionBody, yt as termListResponseSchema, z as userListResponseSchema, zn as contentListQuery, zt as inviteRegisterOptionsBody } from "../../byline-fields-DbibsvTl.mjs";
2
+ export { DEFAULT_MAX_UPLOAD_SIZE, VALID_ROLE_LEVELS, adminCommentListResponseSchema, allowedDomainCreateBody, allowedDomainUpdateBody, apiErrorSchema, atprotoLoginBody, authMeActionBody, bylineCreateBody, bylineCreditSchema, bylineFieldCreateBody, bylineFieldDefinitionSchema, bylineFieldListResponseSchema, bylineFieldReorderBody, bylineFieldUpdateBody, bylineFieldUsageResponseSchema, bylineListResponseSchema, bylineSummarySchema, bylineTranslationCreateBody, bylineTranslationsResponseSchema, bylineUpdateBody, bylinesListQuery, collectionGetQuery, collectionListResponseSchema, collectionResponseSchema, collectionSchema, collectionWithFieldsResponseSchema, commentBulkBody, commentBulkResponseSchema, commentCountsResponseSchema, commentListQuery, commentSchema, commentStatusBody, contentAuthorSchema, contentAuthorsResponseSchema, contentBylineInputSchema, contentCompareResponseSchema, contentCreateBody, contentItemSchema, contentListQuery, contentListResponseSchema, contentPreviewUrlBody, contentPublishBody, contentResponseSchema, contentScheduleBody, contentSeoInput, contentSeoSchema, contentTermsBody, contentTranslationSchema, contentTranslationsResponseSchema, contentTrashQuery, contentUpdateBody, countResponseSchema, createCollectionBody, createCommentBody, createFieldBody, createMenuBody, createMenuItemBody, createRedirectBody, createSectionBody, createTaxonomyDefBody, createTermBody, createWidgetAreaBody, createWidgetBody, cursorPaginationQuery, deleteResponseSchema, fieldListResponseSchema, fieldReorderBody, fieldResponseSchema, fieldSchema, formatFileSize, httpUrl, importProbeBody, inviteCompleteBody, inviteCreateBody, inviteRegisterOptionsBody, localeCode, localeFilterQuery, magicLinkSendBody, mediaConfirmBody, mediaConfirmResponseSchema, mediaExistingResponseSchema, mediaItemSchema, mediaListQuery, mediaListResponseSchema, mediaProviderListQuery, mediaResponseSchema, mediaUpdateBody, mediaUploadUrlBody, mediaUploadUrlResponseSchema, menuItemSchema, menuItemTypeEnum, menuListItemSchema, menuSchema, menuTranslationsSchema, menuWithItemsSchema, notFoundEntrySchema, notFoundListQuery, notFoundListResponseSchema, notFoundPruneBody, notFoundSummaryQuery, notFoundSummaryResponseSchema, notFoundSummarySchema, offsetPaginationQuery, orphanRegisterBody, orphanedTableListResponseSchema, orphanedTableSchema, passkeyOptionsBody, passkeyRegisterOptionsBody, passkeyRegisterVerifyBody, passkeyRenameBody, passkeyVerifyBody, publicCommentListResponseSchema, publicCommentSchema, redirectListResponseSchema, redirectSchema, redirectsListQuery, reorderMenuItemsBody, reorderWidgetsBody, roleLevel, schemaExportQuery, searchEnableBody, searchQuery, searchRebuildBody, searchResponseSchema, searchResultSchema, searchSuggestQuery, sectionListResponseSchema, sectionSchema, sectionsListQuery, settingsUpdateBody, setupAdminBody, setupAdminVerifyBody, setupAtprotoAdminBody, setupBody, signupCompleteBody, signupRequestBody, siteSettingsSchema, slugPattern, successEnvelope, taxonomyDefSchema, taxonomyDefTranslationsSchema, taxonomyListResponseSchema, termGetResponseSchema, termListResponseSchema, termResponseSchema, termSchema, termTranslationsSchema, termWithCountSchema, trashedContentItemSchema, trashedContentListResponseSchema, updateCollectionBody, updateFieldBody, updateMenuBody, updateMenuItemBody, updateRedirectBody, updateSectionBody, updateTermBody, updateWidgetBody, userDetailSchema, userListResponseSchema, userSchema, userUpdateBody, usersListQuery, widgetAreaSchema, widgetAreaWithWidgetsAndCountSchema, widgetAreaWithWidgetsSchema, widgetSchema, wpMediaImportBody, wpPluginAnalyzeBody, wpPluginExecuteBody, wpPrepareBody, wpRewriteUrlsBody };
@@ -1,4 +1,4 @@
1
- import { $ as createMenuBody, $t as contentCreateBody, A as searchRebuildBody, An as httpUrl, At as fieldReorderBody, B as updateSectionBody, Bt as formatFileSize, C as userDetailSchema, Cn as bylinesListQuery, Ct as collectionListResponseSchema, D as usersListQuery, Dn as countResponseSchema, Dt as createCollectionBody, E as userUpdateBody, En as apiErrorSchema, Et as collectionWithFieldsResponseSchema, F as siteSettingsSchema, Fn as slugPattern, Ft as orphanedTableSchema, G as taxonomyListResponseSchema, Gt as mediaListQuery, H as createTermBody, Ht as mediaConfirmResponseSchema, I as createSectionBody, In as successEnvelope, It as schemaExportQuery, J as termResponseSchema, Jt as mediaResponseSchema, K as termGetResponseSchema, Kt as mediaListResponseSchema, L as sectionListResponseSchema, Lt as updateCollectionBody, M as searchResultSchema, Mn as localeFilterQuery, Mt as fieldSchema, N as searchSuggestQuery, Nn as offsetPaginationQuery, Nt as orphanRegisterBody, O as searchEnableBody, On as cursorPaginationQuery, Ot as createFieldBody, P as settingsUpdateBody, Pn as roleLevel, Pt as orphanedTableListResponseSchema, Q as updateTermBody, Qt as contentCompareResponseSchema, R as sectionSchema, Rt as updateFieldBody, S as allowedDomainUpdateBody, Sn as bylineUpdateBody, St as collectionGetQuery, T as userSchema, Tn as VALID_ROLE_LEVELS, Tt as collectionSchema, U as taxonomyDefSchema, Ut as mediaExistingResponseSchema, V as createTaxonomyDefBody, Vt as mediaConfirmBody, W as taxonomyDefTranslationsSchema, Wt as mediaItemSchema, X as termTranslationsSchema, Xt as mediaUploadUrlBody, Y as termSchema, Yt as mediaUpdateBody, Z as termWithCountSchema, Zt as mediaUploadUrlResponseSchema, _ as widgetAreaSchema, _n as bylineCreditSchema, _t as commentSchema, a as notFoundPruneBody, an as contentResponseSchema, at as menuTranslationsSchema, b as widgetSchema, bn as bylineTranslationCreateBody, bt as publicCommentListResponseSchema, c as notFoundSummarySchema, cn as contentSeoSchema, ct as updateMenuBody, d as redirectsListQuery, dn as contentTranslationsResponseSchema, en as contentItemSchema, et as createMenuItemBody, f as updateRedirectBody, fn as contentTrashQuery, ft as adminCommentListResponseSchema, g as updateWidgetBody, gn as bylineCreateBody, gt as commentListQuery, h as reorderWidgetsBody, hn as trashedContentListResponseSchema, ht as commentCountsResponseSchema, i as notFoundListResponseSchema, in as contentPublishBody, it as menuSchema, j as searchResponseSchema, jn as localeCode, jt as fieldResponseSchema, k as searchQuery, kn as deleteResponseSchema, kt as fieldListResponseSchema, l as redirectListResponseSchema, ln as contentTermsBody, lt as updateMenuItemBody, m as createWidgetBody, mn as trashedContentItemSchema, mt as commentBulkResponseSchema, n as notFoundEntrySchema, nn as contentListResponseSchema, nt as menuItemTypeEnum, o as notFoundSummaryQuery, on as contentScheduleBody, ot as menuWithItemsSchema, p as createWidgetAreaBody, pn as contentUpdateBody, pt as commentBulkBody, q as termListResponseSchema, qt as mediaProviderListQuery, r as notFoundListQuery, rn as contentPreviewUrlBody, rt as menuListItemSchema, s as notFoundSummaryResponseSchema, sn as contentSeoInput, st as reorderMenuItemsBody, t as createRedirectBody, tn as contentListQuery, tt as menuItemSchema, u as redirectSchema, un as contentTranslationSchema, v as widgetAreaWithWidgetsAndCountSchema, vn as bylineListResponseSchema, vt as commentStatusBody, w as userListResponseSchema, wn as contentBylineInputSchema, wt as collectionResponseSchema, x as allowedDomainCreateBody, xn as bylineTranslationsResponseSchema, xt as publicCommentSchema, y as widgetAreaWithWidgetsSchema, yn as bylineSummarySchema, yt as createCommentBody, z as sectionsListQuery, zt as DEFAULT_MAX_UPLOAD_SIZE } from "../../redirects-C0L9JUk4.mjs";
2
- import { C as passkeyOptionsBody, D as passkeyVerifyBody, E as passkeyRenameBody, O as signupCompleteBody, S as magicLinkSendBody, T as passkeyRegisterVerifyBody, _ as wpRewriteUrlsBody, a as bylineFieldUpdateBody, b as inviteCreateBody, c as setupAdminBody, d as setupBody, f as importProbeBody, g as wpPrepareBody, h as wpPluginExecuteBody, i as bylineFieldReorderBody, k as signupRequestBody, l as setupAdminVerifyBody, m as wpPluginAnalyzeBody, n as bylineFieldDefinitionSchema, o as bylineFieldUsageResponseSchema, p as wpMediaImportBody, r as bylineFieldListResponseSchema, s as atprotoLoginBody, t as bylineFieldCreateBody, u as setupAtprotoAdminBody, v as authMeActionBody, w as passkeyRegisterOptionsBody, x as inviteRegisterOptionsBody, y as inviteCompleteBody } from "../../byline-fields-Dr-xcb6S.mjs";
1
+ import { $ as createMenuBody, $t as contentAuthorsResponseSchema, A as searchRebuildBody, An as cursorPaginationQuery, At as fieldReorderBody, B as updateSectionBody, Bt as formatFileSize, C as userDetailSchema, Cn as bylineTranslationsResponseSchema, Ct as collectionListResponseSchema, D as usersListQuery, Dn as VALID_ROLE_LEVELS, Dt as createCollectionBody, E as userUpdateBody, En as contentBylineInputSchema, Et as collectionWithFieldsResponseSchema, F as siteSettingsSchema, Fn as offsetPaginationQuery, Ft as orphanedTableSchema, G as taxonomyListResponseSchema, Gt as mediaListQuery, H as createTermBody, Ht as mediaConfirmResponseSchema, I as createSectionBody, In as roleLevel, It as schemaExportQuery, J as termResponseSchema, Jt as mediaResponseSchema, K as termGetResponseSchema, Kt as mediaListResponseSchema, L as sectionListResponseSchema, Ln as slugPattern, Lt as updateCollectionBody, M as searchResultSchema, Mn as httpUrl, Mt as fieldSchema, N as searchSuggestQuery, Nn as localeCode, Nt as orphanRegisterBody, O as searchEnableBody, On as apiErrorSchema, Ot as createFieldBody, P as settingsUpdateBody, Pn as localeFilterQuery, Pt as orphanedTableListResponseSchema, Q as updateTermBody, Qt as contentAuthorSchema, R as sectionSchema, Rn as successEnvelope, Rt as updateFieldBody, S as allowedDomainUpdateBody, Sn as bylineTranslationCreateBody, St as collectionGetQuery, T as userSchema, Tn as bylinesListQuery, Tt as collectionSchema, U as taxonomyDefSchema, Ut as mediaExistingResponseSchema, V as createTaxonomyDefBody, Vt as mediaConfirmBody, W as taxonomyDefTranslationsSchema, Wt as mediaItemSchema, X as termTranslationsSchema, Xt as mediaUploadUrlBody, Y as termSchema, Yt as mediaUpdateBody, Z as termWithCountSchema, Zt as mediaUploadUrlResponseSchema, _ as widgetAreaSchema, _n as trashedContentListResponseSchema, _t as commentSchema, a as notFoundPruneBody, an as contentPreviewUrlBody, at as menuTranslationsSchema, b as widgetSchema, bn as bylineListResponseSchema, bt as publicCommentListResponseSchema, c as notFoundSummarySchema, cn as contentScheduleBody, ct as updateMenuBody, d as redirectsListQuery, dn as contentTermsBody, en as contentCompareResponseSchema, et as createMenuItemBody, f as updateRedirectBody, fn as contentTranslationSchema, ft as adminCommentListResponseSchema, g as updateWidgetBody, gn as trashedContentItemSchema, gt as commentListQuery, h as reorderWidgetsBody, hn as contentUpdateBody, ht as commentCountsResponseSchema, i as notFoundListResponseSchema, in as contentListResponseSchema, it as menuSchema, j as searchResponseSchema, jn as deleteResponseSchema, jt as fieldResponseSchema, k as searchQuery, kn as countResponseSchema, kt as fieldListResponseSchema, l as redirectListResponseSchema, ln as contentSeoInput, lt as updateMenuItemBody, m as createWidgetBody, mn as contentTrashQuery, mt as commentBulkResponseSchema, n as notFoundEntrySchema, nn as contentItemSchema, nt as menuItemTypeEnum, o as notFoundSummaryQuery, on as contentPublishBody, ot as menuWithItemsSchema, p as createWidgetAreaBody, pn as contentTranslationsResponseSchema, pt as commentBulkBody, q as termListResponseSchema, qt as mediaProviderListQuery, r as notFoundListQuery, rn as contentListQuery, rt as menuListItemSchema, s as notFoundSummaryResponseSchema, sn as contentResponseSchema, st as reorderMenuItemsBody, t as createRedirectBody, tn as contentCreateBody, tt as menuItemSchema, u as redirectSchema, un as contentSeoSchema, v as widgetAreaWithWidgetsAndCountSchema, vn as bylineCreateBody, vt as commentStatusBody, w as userListResponseSchema, wn as bylineUpdateBody, wt as collectionResponseSchema, x as allowedDomainCreateBody, xn as bylineSummarySchema, xt as publicCommentSchema, y as widgetAreaWithWidgetsSchema, yn as bylineCreditSchema, yt as createCommentBody, z as sectionsListQuery, zt as DEFAULT_MAX_UPLOAD_SIZE } from "../../redirects-CCbCqCCd.mjs";
2
+ import { C as passkeyOptionsBody, D as passkeyVerifyBody, E as passkeyRenameBody, O as signupCompleteBody, S as magicLinkSendBody, T as passkeyRegisterVerifyBody, _ as wpRewriteUrlsBody, a as bylineFieldUpdateBody, b as inviteCreateBody, c as setupAdminBody, d as setupBody, f as importProbeBody, g as wpPrepareBody, h as wpPluginExecuteBody, i as bylineFieldReorderBody, k as signupRequestBody, l as setupAdminVerifyBody, m as wpPluginAnalyzeBody, n as bylineFieldDefinitionSchema, o as bylineFieldUsageResponseSchema, p as wpMediaImportBody, r as bylineFieldListResponseSchema, s as atprotoLoginBody, t as bylineFieldCreateBody, u as setupAtprotoAdminBody, v as authMeActionBody, w as passkeyRegisterOptionsBody, x as inviteRegisterOptionsBody, y as inviteCompleteBody } from "../../byline-fields-8TMtkBnH.mjs";
3
3
 
4
- export { DEFAULT_MAX_UPLOAD_SIZE, VALID_ROLE_LEVELS, adminCommentListResponseSchema, allowedDomainCreateBody, allowedDomainUpdateBody, apiErrorSchema, atprotoLoginBody, authMeActionBody, bylineCreateBody, bylineCreditSchema, bylineFieldCreateBody, bylineFieldDefinitionSchema, bylineFieldListResponseSchema, bylineFieldReorderBody, bylineFieldUpdateBody, bylineFieldUsageResponseSchema, bylineListResponseSchema, bylineSummarySchema, bylineTranslationCreateBody, bylineTranslationsResponseSchema, bylineUpdateBody, bylinesListQuery, collectionGetQuery, collectionListResponseSchema, collectionResponseSchema, collectionSchema, collectionWithFieldsResponseSchema, commentBulkBody, commentBulkResponseSchema, commentCountsResponseSchema, commentListQuery, commentSchema, commentStatusBody, contentBylineInputSchema, contentCompareResponseSchema, contentCreateBody, contentItemSchema, contentListQuery, contentListResponseSchema, contentPreviewUrlBody, contentPublishBody, contentResponseSchema, contentScheduleBody, contentSeoInput, contentSeoSchema, contentTermsBody, contentTranslationSchema, contentTranslationsResponseSchema, contentTrashQuery, contentUpdateBody, countResponseSchema, createCollectionBody, createCommentBody, createFieldBody, createMenuBody, createMenuItemBody, createRedirectBody, createSectionBody, createTaxonomyDefBody, createTermBody, createWidgetAreaBody, createWidgetBody, cursorPaginationQuery, deleteResponseSchema, fieldListResponseSchema, fieldReorderBody, fieldResponseSchema, fieldSchema, formatFileSize, httpUrl, importProbeBody, inviteCompleteBody, inviteCreateBody, inviteRegisterOptionsBody, localeCode, localeFilterQuery, magicLinkSendBody, mediaConfirmBody, mediaConfirmResponseSchema, mediaExistingResponseSchema, mediaItemSchema, mediaListQuery, mediaListResponseSchema, mediaProviderListQuery, mediaResponseSchema, mediaUpdateBody, mediaUploadUrlBody, mediaUploadUrlResponseSchema, menuItemSchema, menuItemTypeEnum, menuListItemSchema, menuSchema, menuTranslationsSchema, menuWithItemsSchema, notFoundEntrySchema, notFoundListQuery, notFoundListResponseSchema, notFoundPruneBody, notFoundSummaryQuery, notFoundSummaryResponseSchema, notFoundSummarySchema, offsetPaginationQuery, orphanRegisterBody, orphanedTableListResponseSchema, orphanedTableSchema, passkeyOptionsBody, passkeyRegisterOptionsBody, passkeyRegisterVerifyBody, passkeyRenameBody, passkeyVerifyBody, publicCommentListResponseSchema, publicCommentSchema, redirectListResponseSchema, redirectSchema, redirectsListQuery, reorderMenuItemsBody, reorderWidgetsBody, roleLevel, schemaExportQuery, searchEnableBody, searchQuery, searchRebuildBody, searchResponseSchema, searchResultSchema, searchSuggestQuery, sectionListResponseSchema, sectionSchema, sectionsListQuery, settingsUpdateBody, setupAdminBody, setupAdminVerifyBody, setupAtprotoAdminBody, setupBody, signupCompleteBody, signupRequestBody, siteSettingsSchema, slugPattern, successEnvelope, taxonomyDefSchema, taxonomyDefTranslationsSchema, taxonomyListResponseSchema, termGetResponseSchema, termListResponseSchema, termResponseSchema, termSchema, termTranslationsSchema, termWithCountSchema, trashedContentItemSchema, trashedContentListResponseSchema, updateCollectionBody, updateFieldBody, updateMenuBody, updateMenuItemBody, updateRedirectBody, updateSectionBody, updateTermBody, updateWidgetBody, userDetailSchema, userListResponseSchema, userSchema, userUpdateBody, usersListQuery, widgetAreaSchema, widgetAreaWithWidgetsAndCountSchema, widgetAreaWithWidgetsSchema, widgetSchema, wpMediaImportBody, wpPluginAnalyzeBody, wpPluginExecuteBody, wpPrepareBody, wpRewriteUrlsBody };
4
+ export { DEFAULT_MAX_UPLOAD_SIZE, VALID_ROLE_LEVELS, adminCommentListResponseSchema, allowedDomainCreateBody, allowedDomainUpdateBody, apiErrorSchema, atprotoLoginBody, authMeActionBody, bylineCreateBody, bylineCreditSchema, bylineFieldCreateBody, bylineFieldDefinitionSchema, bylineFieldListResponseSchema, bylineFieldReorderBody, bylineFieldUpdateBody, bylineFieldUsageResponseSchema, bylineListResponseSchema, bylineSummarySchema, bylineTranslationCreateBody, bylineTranslationsResponseSchema, bylineUpdateBody, bylinesListQuery, collectionGetQuery, collectionListResponseSchema, collectionResponseSchema, collectionSchema, collectionWithFieldsResponseSchema, commentBulkBody, commentBulkResponseSchema, commentCountsResponseSchema, commentListQuery, commentSchema, commentStatusBody, contentAuthorSchema, contentAuthorsResponseSchema, contentBylineInputSchema, contentCompareResponseSchema, contentCreateBody, contentItemSchema, contentListQuery, contentListResponseSchema, contentPreviewUrlBody, contentPublishBody, contentResponseSchema, contentScheduleBody, contentSeoInput, contentSeoSchema, contentTermsBody, contentTranslationSchema, contentTranslationsResponseSchema, contentTrashQuery, contentUpdateBody, countResponseSchema, createCollectionBody, createCommentBody, createFieldBody, createMenuBody, createMenuItemBody, createRedirectBody, createSectionBody, createTaxonomyDefBody, createTermBody, createWidgetAreaBody, createWidgetBody, cursorPaginationQuery, deleteResponseSchema, fieldListResponseSchema, fieldReorderBody, fieldResponseSchema, fieldSchema, formatFileSize, httpUrl, importProbeBody, inviteCompleteBody, inviteCreateBody, inviteRegisterOptionsBody, localeCode, localeFilterQuery, magicLinkSendBody, mediaConfirmBody, mediaConfirmResponseSchema, mediaExistingResponseSchema, mediaItemSchema, mediaListQuery, mediaListResponseSchema, mediaProviderListQuery, mediaResponseSchema, mediaUpdateBody, mediaUploadUrlBody, mediaUploadUrlResponseSchema, menuItemSchema, menuItemTypeEnum, menuListItemSchema, menuSchema, menuTranslationsSchema, menuWithItemsSchema, notFoundEntrySchema, notFoundListQuery, notFoundListResponseSchema, notFoundPruneBody, notFoundSummaryQuery, notFoundSummaryResponseSchema, notFoundSummarySchema, offsetPaginationQuery, orphanRegisterBody, orphanedTableListResponseSchema, orphanedTableSchema, passkeyOptionsBody, passkeyRegisterOptionsBody, passkeyRegisterVerifyBody, passkeyRenameBody, passkeyVerifyBody, publicCommentListResponseSchema, publicCommentSchema, redirectListResponseSchema, redirectSchema, redirectsListQuery, reorderMenuItemsBody, reorderWidgetsBody, roleLevel, schemaExportQuery, searchEnableBody, searchQuery, searchRebuildBody, searchResponseSchema, searchResultSchema, searchSuggestQuery, sectionListResponseSchema, sectionSchema, sectionsListQuery, settingsUpdateBody, setupAdminBody, setupAdminVerifyBody, setupAtprotoAdminBody, setupBody, signupCompleteBody, signupRequestBody, siteSettingsSchema, slugPattern, successEnvelope, taxonomyDefSchema, taxonomyDefTranslationsSchema, taxonomyListResponseSchema, termGetResponseSchema, termListResponseSchema, termResponseSchema, termSchema, termTranslationsSchema, termWithCountSchema, trashedContentItemSchema, trashedContentListResponseSchema, updateCollectionBody, updateFieldBody, updateMenuBody, updateMenuItemBody, updateRedirectBody, updateSectionBody, updateTermBody, updateWidgetBody, userDetailSchema, userListResponseSchema, userSchema, userUpdateBody, usersListQuery, widgetAreaSchema, widgetAreaWithWidgetsAndCountSchema, widgetAreaWithWidgetsSchema, widgetSchema, wpMediaImportBody, wpPluginAnalyzeBody, wpPluginExecuteBody, wpPrepareBody, wpRewriteUrlsBody };
@@ -1,23 +1,24 @@
1
1
  import { r as validatePluginIdentifier, t as validateIdentifier } from "./validate-VPnKoIzW.mjs";
2
2
  import { n as getI18nConfig, r as isI18nEnabled } from "./config-CVssduLe.mjs";
3
- import { r as RevisionRepository, t as ContentRepository } from "./content-CyqOmOzm.mjs";
3
+ import { r as RevisionRepository, t as ContentRepository } from "./content-BIlVx-RX.mjs";
4
4
  import { r as encodeBase64, t as decodeBase64 } from "./base64-CqR-7kqF.mjs";
5
- import { n as InvalidCursorError, t as EmDashValidationError } from "./types-K3MDsxpy.mjs";
6
- import { t as MediaRepository } from "./media-C-oovGCG.mjs";
7
- import { t as CommentRepository } from "./comment-C4jVbCM8.mjs";
8
- import { t as withTransaction } from "./transaction-NQj4VJ7Z.mjs";
9
- import { t as RedirectRepository } from "./redirect-C6tJA7tk.mjs";
10
- import { r as requestCached } from "./request-cache-BYMs-BGX.mjs";
11
- import { t as BylineRepository } from "./byline-CWQ9aSoz.mjs";
12
- import { n as chunks, t as SQL_BATCH_SIZE } from "./chunks-BU-vP9Dh.mjs";
13
- import { t as SeoRepository } from "./seo-BR39kvTF.mjs";
14
- import { r as invalidateRedirectCache } from "./cache-lZL7SgVb.mjs";
5
+ import { n as InvalidCursorError, r as ScheduledNotDueError, t as EmDashValidationError } from "./types-BXSUSAjt.mjs";
6
+ import { t as MediaRepository } from "./media-JOf3pNkw.mjs";
7
+ import { n as chunks, t as SQL_BATCH_SIZE } from "./chunks-BerYVuve.mjs";
8
+ import { t as UserRepository } from "./user-C0um7wrg.mjs";
9
+ import { t as CommentRepository } from "./comment-sqQxNpN3.mjs";
10
+ import { t as withTransaction } from "./transaction-x2tJQ-A1.mjs";
11
+ import { t as RedirectRepository } from "./redirect-CRWIt8Zj.mjs";
12
+ import { r as requestCached } from "./request-cache-D32LpnmI.mjs";
13
+ import { t as BylineRepository } from "./byline-DUx48sJp.mjs";
14
+ import { t as SeoRepository } from "./seo-B5e6y9Wk.mjs";
15
+ import { r as invalidateRedirectCache } from "./cache-B_HzASVT.mjs";
15
16
  import { n as isMissingTableError } from "./db-errors-CtzxKBxe.mjs";
16
17
  import { r as parseAllowedMimeTypes, t as matchesMimeAllowlist } from "./mime-CCEzze7W.mjs";
17
18
  import { n as hashString } from "./hash-9w3pd3-m.mjs";
18
- import { n as SchemaRegistry, t as SchemaError } from "./registry-CIDxZbhh.mjs";
19
- import { i as pluginManifestSchema, r as normalizeManifestRoute } from "./manifest-schema-Cj-YrzrF.mjs";
20
- import { r as normalizeCapabilities } from "./types-Cj2S6FuC.mjs";
19
+ import { n as SchemaRegistry, t as SchemaError } from "./registry-brYh-rAT.mjs";
20
+ import { a as reconcileManifestAccess, i as pluginManifestSchema, r as normalizeManifestRoute } from "./manifest-schema-BtwbL_vj.mjs";
21
+ import { a as normalizeCapabilities, r as declaredAccessToCapabilities } from "./types-CZI4E3qG.mjs";
21
22
  import { t as EmDashStorageError } from "./types-DpFmlNyB.mjs";
22
23
  import { n as resolveAndValidateExternalUrl, t as SsrfError } from "./ssrf-BsVGIE0Z.mjs";
23
24
  import { sql } from "kysely";
@@ -337,6 +338,22 @@ async function resolveSearchColumns(db, collection) {
337
338
  for (const candidate of ["title", "name"]) if (fieldSlugs.has(candidate)) columns.push(candidate);
338
339
  return columns;
339
340
  }
341
+ /** Matches a date-only `YYYY-MM-DD` bound (no time component). */
342
+ const DATE_ONLY_RE = /^\d{4}-\d{2}-\d{2}$/;
343
+ /**
344
+ * Normalize a date-range bound to an ISO datetime for lexicographic comparison
345
+ * against stored ISO 8601 timestamps. A bare `YYYY-MM-DD` is widened to the
346
+ * appropriate UTC day boundary so the range stays inclusive: a `start` bound
347
+ * becomes the start of the day and an `end` bound the end of the day.
348
+ * Otherwise a date-only upper bound would exclude every same-day row (since
349
+ * `2024-06-01T12:00:00Z` sorts after `2024-06-01`). Full datetimes pass
350
+ * through unchanged.
351
+ */
352
+ function normalizeDateBound(value, edge) {
353
+ if (!value) return void 0;
354
+ if (!DATE_ONLY_RE.test(value)) return value;
355
+ return edge === "start" ? `${value}T00:00:00.000Z` : `${value}T23:59:59.999Z`;
356
+ }
340
357
  /**
341
358
  * Create content list handler
342
359
  */
@@ -346,6 +363,12 @@ async function handleContentList(db, collection, params) {
346
363
  const where = {};
347
364
  if (params.status) where.status = params.status;
348
365
  if (params.locale) where.locale = params.locale;
366
+ if (params.authorId) where.authorId = params.authorId;
367
+ if (params.dateField && (params.dateFrom || params.dateTo)) where.dateFilter = {
368
+ field: params.dateField,
369
+ from: normalizeDateBound(params.dateFrom, "start"),
370
+ to: normalizeDateBound(params.dateTo, "end")
371
+ };
349
372
  const q = params.q?.trim();
350
373
  if (q) {
351
374
  where.q = q;
@@ -404,6 +427,48 @@ async function handleContentList(db, collection, params) {
404
427
  }
405
428
  }
406
429
  /**
430
+ * List the distinct authors of a collection's live content.
431
+ *
432
+ * Backs the admin content-list author filter. Unlike `/admin/users` (ADMIN
433
+ * only), this is gated on `content:read`, so any editor can filter by author.
434
+ * Returns only users who have authored at least one non-trashed entry, sorted
435
+ * by display name then email for a stable dropdown order.
436
+ */
437
+ async function handleContentAuthors(db, collection) {
438
+ try {
439
+ const authorIds = await new ContentRepository(db).findDistinctAuthorIds(collection);
440
+ if (authorIds.length === 0) return {
441
+ success: true,
442
+ data: { items: [] }
443
+ };
444
+ return {
445
+ success: true,
446
+ data: { items: (await new UserRepository(db).findByIds(authorIds)).map((u) => ({
447
+ id: u.id,
448
+ name: u.name,
449
+ email: u.email,
450
+ avatarUrl: u.avatarUrl
451
+ })).toSorted((a, b) => (a.name ?? a.email).localeCompare(b.name ?? b.email)) }
452
+ };
453
+ } catch (error) {
454
+ if (isMissingTableError(error)) return {
455
+ success: false,
456
+ error: {
457
+ code: "COLLECTION_NOT_FOUND",
458
+ message: `Collection '${collection}' not found`
459
+ }
460
+ };
461
+ console.error("Content authors error:", error);
462
+ return {
463
+ success: false,
464
+ error: {
465
+ code: "CONTENT_AUTHORS_ERROR",
466
+ message: "Failed to list content authors"
467
+ }
468
+ };
469
+ }
470
+ }
471
+ /**
407
472
  * Get single content item
408
473
  */
409
474
  async function handleContentGet(db, collection, id, locale) {
@@ -511,7 +576,7 @@ async function handleContentCreate(db, collection, body) {
511
576
  });
512
577
  if (body.bylines !== void 0) created.primaryBylineId = (await bylineRepo.setContentBylines(collection, created.id, body.bylines))[0]?.byline.translationGroup ?? null;
513
578
  if (body.translationOf) {
514
- const { TaxonomyRepository } = await import("./taxonomy-DTZrIQpi.mjs").then((n) => n.n);
579
+ const { TaxonomyRepository } = await import("./taxonomy-CdllE4oq.mjs").then((n) => n.n);
515
580
  await new TaxonomyRepository(trx).copyEntryTerms(collection, body.translationOf, created.id);
516
581
  if (body.bylines === void 0) {
517
582
  await bylineRepo.copyContentBylines(collection, body.translationOf, created.id);
@@ -971,7 +1036,7 @@ async function handleContentPublish(db, collection, id, options = {}) {
971
1036
  const item = await withTransaction(db, async (trx) => {
972
1037
  const repo = new ContentRepository(trx);
973
1038
  const resolvedId = await resolveId(repo, collection, id) ?? id;
974
- return repo.publish(collection, resolvedId, options.publishedAt);
1039
+ return repo.publish(collection, resolvedId, options.publishedAt, options.requireScheduledDue);
975
1040
  });
976
1041
  await hydrateSeo(db, collection, item, await collectionHasSeo(db, collection));
977
1042
  return {
@@ -979,6 +1044,13 @@ async function handleContentPublish(db, collection, id, options = {}) {
979
1044
  data: { item }
980
1045
  };
981
1046
  } catch (error) {
1047
+ if (error instanceof ScheduledNotDueError) return {
1048
+ success: false,
1049
+ error: {
1050
+ code: "NOT_DUE",
1051
+ message: error.message
1052
+ }
1053
+ };
982
1054
  if (error instanceof EmDashValidationError) return {
983
1055
  success: false,
984
1056
  error: {
@@ -2442,7 +2514,7 @@ async function extractBundle(tarballBytes) {
2442
2514
  const parsed = JSON.parse(manifestJson);
2443
2515
  const result = pluginManifestSchema.safeParse(parsed);
2444
2516
  if (!result.success) throw new MarketplaceError("Invalid bundle: manifest.json failed validation", void 0, "INVALID_BUNDLE");
2445
- manifest = result.data;
2517
+ manifest = reconcileManifestAccess(result.data);
2446
2518
  } catch (err) {
2447
2519
  if (err instanceof MarketplaceError) throw err;
2448
2520
  throw new MarketplaceError("Invalid bundle: malformed manifest.json", void 0, "INVALID_BUNDLE");
@@ -2607,7 +2679,7 @@ async function loadBundleFromR2(storage, pluginId, version, source = "marketplac
2607
2679
  const parsed = JSON.parse(manifestText);
2608
2680
  const result = pluginManifestSchema.safeParse(parsed);
2609
2681
  if (!result.success) return null;
2610
- const manifest = result.data;
2682
+ const manifest = reconcileManifestAccess(result.data);
2611
2683
  let adminCode;
2612
2684
  try {
2613
2685
  adminCode = await streamToText((await storage.download(`${prefix}/admin.js`)).body);
@@ -3442,6 +3514,21 @@ async function makeRegistryPluginId(publisherDid, slug) {
3442
3514
  * each labeller's DID. Aggregator label envelope tampering is
3443
3515
  * mitigated by the artifact checksum but not detected.
3444
3516
  */
3517
+ const RELEASE_EXTENSION_NSID = "com.emdashcms.experimental.package.releaseExtension";
3518
+ /**
3519
+ * Whether two `declaredAccess` blocks grant exactly the same enforced access --
3520
+ * the same capabilities AND the same host allow-list. Both are lowered through
3521
+ * the canonical converter so that constraint content (`allowedHosts`), not just
3522
+ * the capability set, is part of the comparison. The capability-set consent
3523
+ * gate is blind to host scope; this is what keeps a bundle from being installed
3524
+ * with a wider (or simply different) host allow-list than its published record
3525
+ * advertised and the user consented to.
3526
+ */
3527
+ function enforcedAccessEqual(a, b) {
3528
+ const aa = declaredAccessToCapabilities(a);
3529
+ const bb = declaredAccessToCapabilities(b);
3530
+ return JSON.stringify(aa.capabilities.toSorted()) === JSON.stringify(bb.capabilities.toSorted()) && JSON.stringify(aa.allowedHosts.toSorted()) === JSON.stringify(bb.allowedHosts.toSorted());
3531
+ }
3445
3532
  /** Matches a bare 64-character lowercase/uppercase hex SHA-256 digest. */
3446
3533
  const SHA256_HEX_PATTERN = /^[a-f0-9]{64}$/i;
3447
3534
  /** Compute the SHA-256 of `bytes` as a lowercase hex string. */
@@ -4002,6 +4089,14 @@ async function handleRegistryInstall(db, storage, sandboxRunner, registryConfigI
4002
4089
  ...bundle.manifest,
4003
4090
  id: pluginId
4004
4091
  };
4092
+ const recordExt = (release?.extensions)?.[RELEASE_EXTENSION_NSID];
4093
+ if (!enforcedAccessEqual(recordExt?.declaredAccess ?? {}, bundle.manifest.declaredAccess ?? {})) return {
4094
+ success: false,
4095
+ error: {
4096
+ code: "DECLARED_ACCESS_DRIFT",
4097
+ message: "The plugin bundle declares different permissions than its published record. Installation refused."
4098
+ }
4099
+ };
4005
4100
  const actualCapabilities = canonicalCapabilitiesForDriftCheck(bundle.manifest.capabilities);
4006
4101
  if (actualCapabilities.length > 0) {
4007
4102
  if (input.acknowledgedDeclaredAccess === void 0) return {
@@ -4307,6 +4402,14 @@ async function handleRegistryUpdate(db, storage, sandboxRunner, registryConfigIn
4307
4402
  ...bundle.manifest,
4308
4403
  id: pluginId
4309
4404
  };
4405
+ const recordExt = (signedRelease?.extensions)?.[RELEASE_EXTENSION_NSID];
4406
+ if (!enforcedAccessEqual(recordExt?.declaredAccess ?? {}, bundle.manifest.declaredAccess ?? {})) return {
4407
+ success: false,
4408
+ error: {
4409
+ code: "DECLARED_ACCESS_DRIFT",
4410
+ message: "The plugin bundle declares different permissions than its published record. Update refused."
4411
+ }
4412
+ };
4310
4413
  const oldBundle = await loadBundleFromR2(storage, pluginId, oldVersion, "registry");
4311
4414
  const capabilityChanges = diffCapabilities(oldBundle?.manifest.capabilities ?? [], bundle.manifest.capabilities);
4312
4415
  if (capabilityChanges.added.length > 0 && !opts?.confirmCapabilityChanges) return {
@@ -4463,5 +4566,5 @@ async function handleRegistryUpdateCheck(db, registryConfigInput) {
4463
4566
  }
4464
4567
 
4465
4568
  //#endregion
4466
- export { handleContentGetIncludingTrashed as $, handleSchemaFieldCreate as A, handleMediaUpdate as B, handleOrphanedTableList as C, handleSchemaCollectionGet as D, handleSchemaCollectionDelete as E, handleSchemaFieldUpdate as F, handleContentCompare as G, handleRevisionList as H, handleMediaCreate as I, handleContentCreate as J, handleContentCountScheduled as K, handleMediaDelete as L, handleSchemaFieldGet as M, handleSchemaFieldList as N, handleSchemaCollectionList as O, handleSchemaFieldReorder as P, handleContentGet as Q, handleMediaGet as R, PluginStateRepository as S, handleSchemaCollectionCreate as T, handleRevisionRestore as U, handleRevisionGet as V, generateManifest as W, handleContentDiscardDraft as X, handleContentDelete as Y, handleContentDuplicate as Z, loadBundleFromR2 as _, handleRegistryUpdateCheck as a, handleContentSchedule as at, handlePluginGet as b, validateAggregatorUrl as c, handleContentUnschedule as ct, handleMarketplaceSearch as d, handleContentList as et, handleMarketplaceUninstall as f, handleThemeSearch as g, handleThemeGetDetail as h, handleRegistryUpdate as i, handleContentRestore as it, handleSchemaFieldDelete as j, handleSchemaCollectionUpdate as k, handleMarketplaceGetPlugin as l, handleContentUpdate as lt, handleMarketplaceUpdateCheck as m, handleRegistryInstall as n, handleContentPermanentDelete as nt, coerceRegistryConfig as o, handleContentTranslations as ot, handleMarketplaceUpdate as p, handleContentCountTrashed as q, handleRegistryUninstall as r, handleContentPublish as rt, normalizeRegistryConfig as s, handleContentUnpublish as st, assertSafeArtifactUrl as t, handleContentListTrashed as tt, handleMarketplaceInstall as u, validateRev as ut, handlePluginDisable as v, handleOrphanedTableRegister as w, handlePluginList as x, handlePluginEnable as y, handleMediaList as z };
4467
- //# sourceMappingURL=api-Cs7DAACP.mjs.map
4569
+ export { handleContentGet as $, handleSchemaFieldCreate as A, handleMediaUpdate as B, handleOrphanedTableList as C, handleSchemaCollectionGet as D, handleSchemaCollectionDelete as E, handleSchemaFieldUpdate as F, handleContentAuthors as G, handleRevisionList as H, handleMediaCreate as I, handleContentCountTrashed as J, handleContentCompare as K, handleMediaDelete as L, handleSchemaFieldGet as M, handleSchemaFieldList as N, handleSchemaCollectionList as O, handleSchemaFieldReorder as P, handleContentDuplicate as Q, handleMediaGet as R, PluginStateRepository as S, handleSchemaCollectionCreate as T, handleRevisionRestore as U, handleRevisionGet as V, generateManifest as W, handleContentDelete as X, handleContentCreate as Y, handleContentDiscardDraft as Z, loadBundleFromR2 as _, handleRegistryUpdateCheck as a, handleContentRestore as at, handlePluginGet as b, validateAggregatorUrl as c, handleContentUnpublish as ct, handleMarketplaceSearch as d, validateRev as dt, handleContentGetIncludingTrashed as et, handleMarketplaceUninstall as f, handleThemeSearch as g, handleThemeGetDetail as h, handleRegistryUpdate as i, handleContentPublish as it, handleSchemaFieldDelete as j, handleSchemaCollectionUpdate as k, handleMarketplaceGetPlugin as l, handleContentUnschedule as lt, handleMarketplaceUpdateCheck as m, handleRegistryInstall as n, handleContentListTrashed as nt, coerceRegistryConfig as o, handleContentSchedule as ot, handleMarketplaceUpdate as p, handleContentCountScheduled as q, handleRegistryUninstall as r, handleContentPermanentDelete as rt, normalizeRegistryConfig as s, handleContentTranslations as st, assertSafeArtifactUrl as t, handleContentList as tt, handleMarketplaceInstall as u, handleContentUpdate as ut, handlePluginDisable as v, handleOrphanedTableRegister as w, handlePluginList as x, handlePluginEnable as y, handleMediaList as z };
4570
+ //# sourceMappingURL=api-DStv36ik.mjs.map