emdash 0.40.0 → 0.41.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 (1258) hide show
  1. package/dist/action-token-CbKDcPJi.mjs +26 -0
  2. package/dist/action-token-CbKDcPJi.mjs.map +1 -0
  3. package/dist/activation-PtniBLt9.mjs +382 -0
  4. package/dist/activation-PtniBLt9.mjs.map +1 -0
  5. package/dist/adapters-C_Tf5x90.d.mts +171 -0
  6. package/dist/adapters-C_Tf5x90.d.mts.map +1 -0
  7. package/dist/allowed-origins-U1z4TdEZ.mjs +116 -0
  8. package/dist/allowed-origins-U1z4TdEZ.mjs.map +1 -0
  9. package/dist/api/route-utils.d.mts +4 -4
  10. package/dist/api/route-utils.mjs +46 -45
  11. package/dist/api/route-utils.mjs.map +1 -1
  12. package/dist/api/schemas/index.d.mts +2 -2
  13. package/dist/api/schemas/index.mjs +10 -10
  14. package/dist/api-CXwQkV_m.mjs +5122 -0
  15. package/dist/api-CXwQkV_m.mjs.map +1 -0
  16. package/dist/api-tokens-89WlohEN.mjs +166 -0
  17. package/dist/api-tokens-89WlohEN.mjs.map +1 -0
  18. package/dist/apply-Do3KNnUk.mjs +1659 -0
  19. package/dist/apply-Do3KNnUk.mjs.map +1 -0
  20. package/dist/approvals-CAX9Yw33.mjs +460 -0
  21. package/dist/approvals-CAX9Yw33.mjs.map +1 -0
  22. package/dist/artifact-fetch-B9W4CEST.mjs +659 -0
  23. package/dist/artifact-fetch-B9W4CEST.mjs.map +1 -0
  24. package/dist/astro/index.d.mts +14 -14
  25. package/dist/astro/index.mjs +26 -30
  26. package/dist/astro/index.mjs.map +1 -1
  27. package/dist/astro/middleware/auth.d.mts +12 -12
  28. package/dist/astro/middleware/auth.mjs +10 -10
  29. package/dist/astro/middleware/media-usage-write-fence.mjs +5 -5
  30. package/dist/astro/middleware/redirect.mjs +7 -7
  31. package/dist/astro/middleware/request-context.mjs +3 -3
  32. package/dist/astro/middleware/setup.mjs +1 -1
  33. package/dist/astro/middleware.d.mts +12 -12
  34. package/dist/astro/middleware.d.mts.map +1 -1
  35. package/dist/astro/middleware.mjs +110 -106
  36. package/dist/astro/middleware.mjs.map +1 -1
  37. package/dist/astro/routes/api/admin/allowed-domains/_domain_.mjs +14 -14
  38. package/dist/astro/routes/api/admin/allowed-domains/index.mjs +14 -14
  39. package/dist/astro/routes/api/admin/api-tokens/_id_.mjs +6 -6
  40. package/dist/astro/routes/api/admin/api-tokens/index.mjs +7 -7
  41. package/dist/astro/routes/api/admin/byline-fields/_slug_/usage.mjs +7 -7
  42. package/dist/astro/routes/api/admin/byline-fields/_slug_.mjs +17 -17
  43. package/dist/astro/routes/api/admin/byline-fields/index.mjs +17 -17
  44. package/dist/astro/routes/api/admin/byline-fields/reorder.mjs +17 -17
  45. package/dist/astro/routes/api/admin/bylines/_id_/index.mjs +23 -23
  46. package/dist/astro/routes/api/admin/bylines/_id_/translations.mjs +23 -23
  47. package/dist/astro/routes/api/admin/bylines/index.mjs +23 -23
  48. package/dist/astro/routes/api/admin/comments/_id_/status.mjs +18 -18
  49. package/dist/astro/routes/api/admin/comments/_id_.mjs +7 -7
  50. package/dist/astro/routes/api/admin/comments/bulk.mjs +17 -17
  51. package/dist/astro/routes/api/admin/comments/counts.mjs +7 -7
  52. package/dist/astro/routes/api/admin/comments/index.mjs +17 -17
  53. package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.mjs +6 -6
  54. package/dist/astro/routes/api/admin/hooks/exclusive/index.mjs +5 -5
  55. package/dist/astro/routes/api/admin/media-usage/activation.mjs +20 -20
  56. package/dist/astro/routes/api/admin/media-usage/collection-deletions/index.mjs +22 -22
  57. package/dist/astro/routes/api/admin/media-usage/collection-deletions/retry.mjs +22 -22
  58. package/dist/astro/routes/api/admin/media-usage/progress.mjs +25 -25
  59. package/dist/astro/routes/api/admin/media-usage/repair.mjs +31 -31
  60. package/dist/astro/routes/api/admin/media-usage/work/index.mjs +22 -22
  61. package/dist/astro/routes/api/admin/media-usage/work/retry.mjs +22 -22
  62. package/dist/astro/routes/api/admin/oauth-clients/_id_.mjs +6 -6
  63. package/dist/astro/routes/api/admin/oauth-clients/index.mjs +6 -6
  64. package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs +8 -8
  65. package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs +8 -8
  66. package/dist/astro/routes/api/admin/plugins/_id_/index.mjs +72 -68
  67. package/dist/astro/routes/api/admin/plugins/_id_/index.mjs.map +1 -1
  68. package/dist/astro/routes/api/admin/plugins/_id_/mcp.mjs +7 -7
  69. package/dist/astro/routes/api/admin/plugins/_id_/settings.mjs +71 -67
  70. package/dist/astro/routes/api/admin/plugins/_id_/settings.mjs.map +1 -1
  71. package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs +72 -68
  72. package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs.map +1 -1
  73. package/dist/astro/routes/api/admin/plugins/_id_/update.mjs +82 -78
  74. package/dist/astro/routes/api/admin/plugins/_id_/update.mjs.map +1 -1
  75. package/dist/astro/routes/api/admin/plugins/index.mjs +72 -68
  76. package/dist/astro/routes/api/admin/plugins/index.mjs.map +1 -1
  77. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.mjs +5 -5
  78. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs +71 -67
  79. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs.map +1 -1
  80. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs +81 -77
  81. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs.map +1 -1
  82. package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs +71 -67
  83. package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs.map +1 -1
  84. package/dist/astro/routes/api/admin/plugins/registry/_id_/uninstall.mjs +72 -68
  85. package/dist/astro/routes/api/admin/plugins/registry/_id_/uninstall.mjs.map +1 -1
  86. package/dist/astro/routes/api/admin/plugins/registry/_id_/update.mjs +83 -79
  87. package/dist/astro/routes/api/admin/plugins/registry/_id_/update.mjs.map +1 -1
  88. package/dist/astro/routes/api/admin/plugins/registry/artifact.mjs +9 -9
  89. package/dist/astro/routes/api/admin/plugins/registry/install.mjs +74 -70
  90. package/dist/astro/routes/api/admin/plugins/registry/install.mjs.map +1 -1
  91. package/dist/astro/routes/api/admin/plugins/registry/publisher-handle.mjs +7 -7
  92. package/dist/astro/routes/api/admin/plugins/registry/verify.mjs +72 -68
  93. package/dist/astro/routes/api/admin/plugins/registry/verify.mjs.map +1 -1
  94. package/dist/astro/routes/api/admin/plugins/updates.mjs +71 -67
  95. package/dist/astro/routes/api/admin/plugins/updates.mjs.map +1 -1
  96. package/dist/astro/routes/api/admin/scheduled-policy-rejections/_collection_/_id_.mjs +6 -6
  97. package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs +71 -67
  98. package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs.map +1 -1
  99. package/dist/astro/routes/api/admin/themes/marketplace/_id_/thumbnail.mjs +5 -5
  100. package/dist/astro/routes/api/admin/themes/marketplace/index.mjs +71 -67
  101. package/dist/astro/routes/api/admin/themes/marketplace/index.mjs.map +1 -1
  102. package/dist/astro/routes/api/admin/transfer/_...path_.mjs +4 -4
  103. package/dist/astro/routes/api/admin/transfer/approvals/_id_/approve.mjs +40 -40
  104. package/dist/astro/routes/api/admin/transfer/approvals/_id_/deny.mjs +40 -40
  105. package/dist/astro/routes/api/admin/transfer/approvals/index.mjs +42 -42
  106. package/dist/astro/routes/api/admin/transfer/capabilities.mjs +42 -42
  107. package/dist/astro/routes/api/admin/transfer/exports/_id_/advance.mjs +42 -42
  108. package/dist/astro/routes/api/admin/transfer/exports/_id_/archive.mjs +43 -43
  109. package/dist/astro/routes/api/admin/transfer/exports/_id_/files/_...path_.mjs +43 -43
  110. package/dist/astro/routes/api/admin/transfer/exports/_id_/index.mjs +42 -42
  111. package/dist/astro/routes/api/admin/transfer/exports/_id_/manifest.mjs +43 -43
  112. package/dist/astro/routes/api/admin/transfer/exports/index.mjs +44 -44
  113. package/dist/astro/routes/api/admin/transfer/imports/_id_/abandon.mjs +42 -42
  114. package/dist/astro/routes/api/admin/transfer/imports/_id_/advance.mjs +42 -42
  115. package/dist/astro/routes/api/admin/transfer/imports/_id_/analyze.mjs +44 -44
  116. package/dist/astro/routes/api/admin/transfer/imports/_id_/cancel.mjs +42 -42
  117. package/dist/astro/routes/api/admin/transfer/imports/_id_/execute.mjs +44 -44
  118. package/dist/astro/routes/api/admin/transfer/imports/_id_/files/_...path_.mjs +42 -42
  119. package/dist/astro/routes/api/admin/transfer/imports/_id_/index.mjs +42 -42
  120. package/dist/astro/routes/api/admin/transfer/imports/_id_/missing.mjs +44 -44
  121. package/dist/astro/routes/api/admin/transfer/imports/_id_/plan.mjs +42 -42
  122. package/dist/astro/routes/api/admin/transfer/imports/_id_/receipt.mjs +42 -42
  123. package/dist/astro/routes/api/admin/transfer/imports/index.mjs +44 -44
  124. package/dist/astro/routes/api/admin/users/_id_/disable.mjs +5 -5
  125. package/dist/astro/routes/api/admin/users/_id_/enable.mjs +4 -4
  126. package/dist/astro/routes/api/admin/users/_id_/index.mjs +15 -15
  127. package/dist/astro/routes/api/admin/users/_id_/send-recovery.mjs +6 -6
  128. package/dist/astro/routes/api/admin/users/index.mjs +14 -14
  129. package/dist/astro/routes/api/auth/dev-bypass.mjs +6 -6
  130. package/dist/astro/routes/api/auth/invite/accept.mjs +4 -4
  131. package/dist/astro/routes/api/auth/invite/complete.mjs +18 -18
  132. package/dist/astro/routes/api/auth/invite/index.mjs +16 -16
  133. package/dist/astro/routes/api/auth/invite/register-options.mjs +17 -17
  134. package/dist/astro/routes/api/auth/logout.mjs +5 -5
  135. package/dist/astro/routes/api/auth/magic-link/send.mjs +18 -18
  136. package/dist/astro/routes/api/auth/magic-link/verify.mjs +14 -14
  137. package/dist/astro/routes/api/auth/me.mjs +15 -15
  138. package/dist/astro/routes/api/auth/mode.mjs +5 -5
  139. package/dist/astro/routes/api/auth/oauth/_provider_/callback.mjs +3 -3
  140. package/dist/astro/routes/api/auth/oauth/_provider_.mjs +2 -2
  141. package/dist/astro/routes/api/auth/passkey/_id_.mjs +14 -14
  142. package/dist/astro/routes/api/auth/passkey/index.mjs +4 -4
  143. package/dist/astro/routes/api/auth/passkey/options.mjs +19 -19
  144. package/dist/astro/routes/api/auth/passkey/register/options.mjs +17 -17
  145. package/dist/astro/routes/api/auth/passkey/register/verify.mjs +18 -18
  146. package/dist/astro/routes/api/auth/passkey/verify.mjs +18 -18
  147. package/dist/astro/routes/api/auth/signup/complete.mjs +18 -18
  148. package/dist/astro/routes/api/auth/signup/request.mjs +17 -17
  149. package/dist/astro/routes/api/auth/signup/verify.mjs +4 -4
  150. package/dist/astro/routes/api/comments/_collection_/_contentId_/index.mjs +12 -12
  151. package/dist/astro/routes/api/comments/_collection_/_contentId_/reactions.mjs +18 -18
  152. package/dist/astro/routes/api/content/_collection_/_id_/compare.mjs +5 -5
  153. package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs +17 -17
  154. package/dist/astro/routes/api/content/_collection_/_id_/duplicate.mjs +5 -5
  155. package/dist/astro/routes/api/content/_collection_/_id_/lock.mjs +17 -17
  156. package/dist/astro/routes/api/content/_collection_/_id_/permanent.mjs +5 -5
  157. package/dist/astro/routes/api/content/_collection_/_id_/plugin-extensions/_pluginId_/_kind_/_extensionId_.mjs +11 -11
  158. package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs +31 -31
  159. package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs +17 -17
  160. package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/children.d.mts +1 -2
  161. package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/children.d.mts.map +1 -1
  162. package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/children.mjs +42 -53
  163. package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/children.mjs.map +1 -1
  164. package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/parents.mjs +34 -29
  165. package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/parents.mjs.map +1 -1
  166. package/dist/astro/routes/api/content/_collection_/_id_/restore.mjs +5 -5
  167. package/dist/astro/routes/api/content/_collection_/_id_/revisions.mjs +5 -5
  168. package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs +17 -17
  169. package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs +25 -24
  170. package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs.map +1 -1
  171. package/dist/astro/routes/api/content/_collection_/_id_/translations.mjs +5 -5
  172. package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs +17 -17
  173. package/dist/astro/routes/api/content/_collection_/_id_.d.mts.map +1 -1
  174. package/dist/astro/routes/api/content/_collection_/_id_.mjs +18 -18
  175. package/dist/astro/routes/api/content/_collection_/_id_.mjs.map +1 -1
  176. package/dist/astro/routes/api/content/_collection_/authors.mjs +5 -5
  177. package/dist/astro/routes/api/content/_collection_/index.mjs +15 -15
  178. package/dist/astro/routes/api/content/_collection_/trash.mjs +15 -15
  179. package/dist/astro/routes/api/dashboard.mjs +10 -9
  180. package/dist/astro/routes/api/dashboard.mjs.map +1 -1
  181. package/dist/astro/routes/api/dev/emails.mjs +5 -5
  182. package/dist/astro/routes/api/health.mjs +6 -6
  183. package/dist/astro/routes/api/import/probe.d.mts +3 -3
  184. package/dist/astro/routes/api/import/probe.mjs +23 -23
  185. package/dist/astro/routes/api/import/wordpress/analyze.mjs +6 -6
  186. package/dist/astro/routes/api/import/wordpress/execute.d.mts +13 -13
  187. package/dist/astro/routes/api/import/wordpress/execute.mjs +16 -16
  188. package/dist/astro/routes/api/import/wordpress/media.d.mts +12 -12
  189. package/dist/astro/routes/api/import/wordpress/media.mjs +19 -19
  190. package/dist/astro/routes/api/import/wordpress/prepare.mjs +18 -18
  191. package/dist/astro/routes/api/import/wordpress/rewrite-urls.d.mts +13 -13
  192. package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs +28 -28
  193. package/dist/astro/routes/api/import/wordpress-plugin/analyze.d.mts +1 -1
  194. package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs +23 -23
  195. package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts +13 -13
  196. package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs +34 -34
  197. package/dist/astro/routes/api/manifest.mjs +6 -6
  198. package/dist/astro/routes/api/mcp.mjs +98 -118
  199. package/dist/astro/routes/api/mcp.mjs.map +1 -1
  200. package/dist/astro/routes/api/media/_id_/confirm.mjs +19 -19
  201. package/dist/astro/routes/api/media/_id_/replace.mjs +16 -16
  202. package/dist/astro/routes/api/media/_id_/upload.mjs +9 -9
  203. package/dist/astro/routes/api/media/_id_/usage.mjs +33 -33
  204. package/dist/astro/routes/api/media/_id_.mjs +31 -31
  205. package/dist/astro/routes/api/media/asset/_id_/_filename_.mjs +6 -6
  206. package/dist/astro/routes/api/media/file/_...key_.mjs +9 -9
  207. package/dist/astro/routes/api/media/folders/_id_.mjs +16 -16
  208. package/dist/astro/routes/api/media/folders/index.mjs +16 -16
  209. package/dist/astro/routes/api/media/providers/_providerId_/_itemId_.mjs +5 -5
  210. package/dist/astro/routes/api/media/providers/_providerId_/index.mjs +5 -5
  211. package/dist/astro/routes/api/media/providers/index.mjs +5 -5
  212. package/dist/astro/routes/api/media/upload-url.mjs +18 -18
  213. package/dist/astro/routes/api/media.mjs +35 -35
  214. package/dist/astro/routes/api/menus/_name_/items/_id_.mjs +17 -17
  215. package/dist/astro/routes/api/menus/_name_/items.mjs +17 -17
  216. package/dist/astro/routes/api/menus/_name_/reorder.mjs +17 -17
  217. package/dist/astro/routes/api/menus/_name_/translations.mjs +17 -17
  218. package/dist/astro/routes/api/menus/_name_.mjs +17 -17
  219. package/dist/astro/routes/api/menus/index.mjs +17 -17
  220. package/dist/astro/routes/api/oauth/authorize.mjs +6 -6
  221. package/dist/astro/routes/api/oauth/device/authorize.d.mts +2 -1
  222. package/dist/astro/routes/api/oauth/device/authorize.d.mts.map +1 -1
  223. package/dist/astro/routes/api/oauth/device/authorize.mjs +23 -9
  224. package/dist/astro/routes/api/oauth/device/authorize.mjs.map +1 -1
  225. package/dist/astro/routes/api/oauth/device/code.mjs +11 -11
  226. package/dist/astro/routes/api/oauth/device/token.mjs +10 -10
  227. package/dist/astro/routes/api/oauth/register.mjs +5 -5
  228. package/dist/astro/routes/api/oauth/token/refresh.mjs +8 -8
  229. package/dist/astro/routes/api/oauth/token/revoke.mjs +8 -8
  230. package/dist/astro/routes/api/oauth/token.mjs +8 -8
  231. package/dist/astro/routes/api/openapi.json.mjs +20 -20
  232. package/dist/astro/routes/api/plugins/_pluginId_/_...path_.mjs +11 -11
  233. package/dist/astro/routes/api/redirects/404s/index.mjs +19 -19
  234. package/dist/astro/routes/api/redirects/404s/summary.mjs +19 -19
  235. package/dist/astro/routes/api/redirects/_id_.mjs +19 -19
  236. package/dist/astro/routes/api/redirects/index.mjs +19 -19
  237. package/dist/astro/routes/api/relations/_id_/index.mjs +34 -29
  238. package/dist/astro/routes/api/relations/_id_/index.mjs.map +1 -1
  239. package/dist/astro/routes/api/relations/index.mjs +36 -31
  240. package/dist/astro/routes/api/relations/index.mjs.map +1 -1
  241. package/dist/astro/routes/api/revisions/_revisionId_/index.mjs +5 -5
  242. package/dist/astro/routes/api/revisions/_revisionId_/restore.mjs +5 -5
  243. package/dist/astro/routes/api/schema/block-types/_slug_/index.mjs +71 -67
  244. package/dist/astro/routes/api/schema/block-types/_slug_/index.mjs.map +1 -1
  245. package/dist/astro/routes/api/schema/block-types/_slug_/versions/_version_/activate.mjs +71 -67
  246. package/dist/astro/routes/api/schema/block-types/_slug_/versions/_version_/activate.mjs.map +1 -1
  247. package/dist/astro/routes/api/schema/block-types/index.mjs +71 -67
  248. package/dist/astro/routes/api/schema/block-types/index.mjs.map +1 -1
  249. package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs +73 -69
  250. package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs.map +1 -1
  251. package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs +71 -67
  252. package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs.map +1 -1
  253. package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs +71 -67
  254. package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs.map +1 -1
  255. package/dist/astro/routes/api/schema/collections/_slug_/index.mjs +71 -67
  256. package/dist/astro/routes/api/schema/collections/_slug_/index.mjs.map +1 -1
  257. package/dist/astro/routes/api/schema/collections/index.mjs +71 -67
  258. package/dist/astro/routes/api/schema/collections/index.mjs.map +1 -1
  259. package/dist/astro/routes/api/schema/collections/reorder.mjs +71 -67
  260. package/dist/astro/routes/api/schema/collections/reorder.mjs.map +1 -1
  261. package/dist/astro/routes/api/schema/index.mjs +16 -16
  262. package/dist/astro/routes/api/schema/orphans/_slug_.mjs +71 -67
  263. package/dist/astro/routes/api/schema/orphans/_slug_.mjs.map +1 -1
  264. package/dist/astro/routes/api/schema/orphans/index.mjs +71 -67
  265. package/dist/astro/routes/api/schema/orphans/index.mjs.map +1 -1
  266. package/dist/astro/routes/api/search/enable.mjs +19 -19
  267. package/dist/astro/routes/api/search/index.mjs +18 -18
  268. package/dist/astro/routes/api/search/rebuild.mjs +19 -19
  269. package/dist/astro/routes/api/search/stats.mjs +9 -9
  270. package/dist/astro/routes/api/search/suggest.mjs +18 -18
  271. package/dist/astro/routes/api/sections/_slug_.mjs +18 -18
  272. package/dist/astro/routes/api/sections/index.mjs +18 -18
  273. package/dist/astro/routes/api/settings/backups/archives/_name_.mjs +7 -7
  274. package/dist/astro/routes/api/settings/backups/archives/index.mjs +7 -7
  275. package/dist/astro/routes/api/settings/backups/export.mjs +7 -7
  276. package/dist/astro/routes/api/settings/backups/index.mjs +8 -8
  277. package/dist/astro/routes/api/settings/email.mjs +6 -6
  278. package/dist/astro/routes/api/settings.mjs +21 -21
  279. package/dist/astro/routes/api/setup/admin-verify.mjs +19 -19
  280. package/dist/astro/routes/api/setup/admin.mjs +18 -18
  281. package/dist/astro/routes/api/setup/dev-bypass.mjs +45 -39
  282. package/dist/astro/routes/api/setup/dev-bypass.mjs.map +1 -1
  283. package/dist/astro/routes/api/setup/dev-reset.mjs +4 -4
  284. package/dist/astro/routes/api/setup/index.d.mts.map +1 -1
  285. package/dist/astro/routes/api/setup/index.mjs +80 -49
  286. package/dist/astro/routes/api/setup/index.mjs.map +1 -1
  287. package/dist/astro/routes/api/setup/status.mjs +6 -6
  288. package/dist/astro/routes/api/snapshot.mjs +9 -9
  289. package/dist/astro/routes/api/snapshot.mjs.map +1 -1
  290. package/dist/astro/routes/api/taxonomies/_name_/reorder.mjs +23 -23
  291. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs +23 -23
  292. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs +23 -23
  293. package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs +23 -23
  294. package/dist/astro/routes/api/taxonomies/_name_/translations.mjs +22 -22
  295. package/dist/astro/routes/api/taxonomies/_name_.mjs +23 -23
  296. package/dist/astro/routes/api/taxonomies/bulk-tag.mjs +36 -35
  297. package/dist/astro/routes/api/taxonomies/bulk-tag.mjs.map +1 -1
  298. package/dist/astro/routes/api/taxonomies/index.mjs +23 -23
  299. package/dist/astro/routes/api/themes/preview.mjs +6 -6
  300. package/dist/astro/routes/api/typegen.mjs +8 -8
  301. package/dist/astro/routes/api/visual-editing/action-token.mjs +6 -6
  302. package/dist/astro/routes/api/visual-editing/content/_collection_/_id_/publish.mjs +19 -19
  303. package/dist/astro/routes/api/visual-editing/toolbar-labels.mjs +4 -4
  304. package/dist/astro/routes/api/well-known/auth.mjs +1 -1
  305. package/dist/astro/routes/api/well-known/oauth-authorization-server.mjs +2 -2
  306. package/dist/astro/routes/api/well-known/oauth-protected-resource.mjs +2 -2
  307. package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs +16 -16
  308. package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs +19 -19
  309. package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs +19 -19
  310. package/dist/astro/routes/api/widget-areas/_name_.mjs +9 -9
  311. package/dist/astro/routes/api/widget-areas/index.mjs +19 -19
  312. package/dist/astro/routes/api/widget-components.mjs +5 -5
  313. package/dist/astro/routes/robots.txt.mjs +6 -6
  314. package/dist/astro/routes/sitemap-_collection_.xml.mjs +9 -9
  315. package/dist/astro/routes/sitemap.xml.mjs +7 -7
  316. package/dist/astro/types.d.mts +28 -18
  317. package/dist/astro/types.d.mts.map +1 -1
  318. package/dist/audit-CrgmE9LE.mjs +127 -0
  319. package/dist/audit-CrgmE9LE.mjs.map +1 -0
  320. package/dist/auth/providers/github.d.mts +1 -1
  321. package/dist/auth/providers/google.d.mts +1 -1
  322. package/dist/authoritative-records-C2YzIdbu.mjs +5172 -0
  323. package/dist/authoritative-records-C2YzIdbu.mjs.map +1 -0
  324. package/dist/authorize-WgdKF8QY.mjs +49 -0
  325. package/dist/authorize-WgdKF8QY.mjs.map +1 -0
  326. package/dist/backup-Ck8_lMO3.mjs +246 -0
  327. package/dist/backup-Ck8_lMO3.mjs.map +1 -0
  328. package/dist/block-types-BQ90asVI.mjs +132 -0
  329. package/dist/block-types-BQ90asVI.mjs.map +1 -0
  330. package/dist/block-values-ACFqgB1D.mjs +175 -0
  331. package/dist/block-values-ACFqgB1D.mjs.map +1 -0
  332. package/dist/bundle-Db1iNMv_.mjs +667 -0
  333. package/dist/bundle-Db1iNMv_.mjs.map +1 -0
  334. package/dist/byline-BayaYGoj.mjs +909 -0
  335. package/dist/byline-BayaYGoj.mjs.map +1 -0
  336. package/dist/byline-fields-B8HH-35f.mjs +254 -0
  337. package/dist/byline-fields-B8HH-35f.mjs.map +1 -0
  338. package/dist/byline-fields-hMPjf6Eu.mjs +123 -0
  339. package/dist/byline-fields-hMPjf6Eu.mjs.map +1 -0
  340. package/dist/byline-registry-B_EK_TQf.mjs +406 -0
  341. package/dist/byline-registry-B_EK_TQf.mjs.map +1 -0
  342. package/dist/bylines-DFAaFXWi.mjs +214 -0
  343. package/dist/bylines-DFAaFXWi.mjs.map +1 -0
  344. package/dist/bylines-DkIxUxmr.mjs +232 -0
  345. package/dist/bylines-DkIxUxmr.mjs.map +1 -0
  346. package/dist/cache-DkvhQ8XE.mjs +108 -0
  347. package/dist/cache-DkvhQ8XE.mjs.map +1 -0
  348. package/dist/canonical-CcSuuTlH.mjs +174 -0
  349. package/dist/canonical-CcSuuTlH.mjs.map +1 -0
  350. package/dist/capture-triggers-DJEoOTOq.mjs +362 -0
  351. package/dist/capture-triggers-DJEoOTOq.mjs.map +1 -0
  352. package/dist/challenge-store-CvBl81AQ.mjs +51 -0
  353. package/dist/challenge-store-CvBl81AQ.mjs.map +1 -0
  354. package/dist/checksum-CClweQzI.mjs +162 -0
  355. package/dist/checksum-CClweQzI.mjs.map +1 -0
  356. package/dist/chrome-tags-D5caJwwp.mjs +24 -0
  357. package/dist/chrome-tags-D5caJwwp.mjs.map +1 -0
  358. package/dist/chunks-DwBaj8aT.mjs +25 -0
  359. package/dist/chunks-DwBaj8aT.mjs.map +1 -0
  360. package/dist/cli/index.mjs +374 -761
  361. package/dist/cli/index.mjs.map +1 -1
  362. package/dist/client/cf-access.d.mts +1 -1
  363. package/dist/client/index.d.mts +18 -18
  364. package/dist/client/index.mjs +2 -2
  365. package/dist/collection-deletion-CLCdXsnV.mjs +436 -0
  366. package/dist/collection-deletion-CLCdXsnV.mjs.map +1 -0
  367. package/dist/collection-deletion-processor-hNw8x01F.mjs +217 -0
  368. package/dist/collection-deletion-processor-hNw8x01F.mjs.map +1 -0
  369. package/dist/collection-slugs-cache-CUuiduLq.mjs +85 -0
  370. package/dist/collection-slugs-cache-CUuiduLq.mjs.map +1 -0
  371. package/dist/comment-D2uvL63j.mjs +313 -0
  372. package/dist/comment-D2uvL63j.mjs.map +1 -0
  373. package/dist/comment-reaction-DevUuzg4.mjs +85 -0
  374. package/dist/comment-reaction-DevUuzg4.mjs.map +1 -0
  375. package/dist/comments-Cq0s7_hO.mjs +195 -0
  376. package/dist/comments-Cq0s7_hO.mjs.map +1 -0
  377. package/dist/comments-M4EDYAHw.mjs +99 -0
  378. package/dist/comments-M4EDYAHw.mjs.map +1 -0
  379. package/dist/components-CuIGwXMs.mjs +108 -0
  380. package/dist/components-CuIGwXMs.mjs.map +1 -0
  381. package/dist/config-52Ea5IWt.d.mts +39 -0
  382. package/dist/config-52Ea5IWt.d.mts.map +1 -0
  383. package/dist/config-CCz3xOLc.mjs +242 -0
  384. package/dist/config-CCz3xOLc.mjs.map +1 -0
  385. package/dist/config-D3d5Qudq.d.mts +6669 -0
  386. package/dist/config-D3d5Qudq.d.mts.map +1 -0
  387. package/dist/content-CbnufDsM.mjs +2018 -0
  388. package/dist/content-CbnufDsM.mjs.map +1 -0
  389. package/dist/content-list-query-D_7B1FE5.d.mts +26 -0
  390. package/dist/content-list-query-D_7B1FE5.d.mts.map +1 -0
  391. package/dist/content-policy-CYu6K1KB.mjs +46 -0
  392. package/dist/content-policy-CYu6K1KB.mjs.map +1 -0
  393. package/dist/content-repair-DlDUgFGp.mjs +442 -0
  394. package/dist/content-repair-DlDUgFGp.mjs.map +1 -0
  395. package/dist/context-CGQLA1-a.mjs +1922 -0
  396. package/dist/context-CGQLA1-a.mjs.map +1 -0
  397. package/dist/cron-c4D5C5Fx.mjs +284 -0
  398. package/dist/cron-c4D5C5Fx.mjs.map +1 -0
  399. package/dist/dashboard-CBq9kmOn.mjs +151 -0
  400. package/dist/dashboard-CBq9kmOn.mjs.map +1 -0
  401. package/dist/db/index.d.mts +3 -3
  402. package/dist/db/index.mjs +1 -1
  403. package/dist/db/libsql-migrations.d.mts +1 -1
  404. package/dist/db/libsql-migrations.mjs +4 -4
  405. package/dist/db/libsql.d.mts +1 -1
  406. package/dist/db/postgres-migrations.d.mts +1 -1
  407. package/dist/db/postgres-migrations.mjs +4 -4
  408. package/dist/db/postgres.d.mts +1 -1
  409. package/dist/db/sqlite-migrations.d.mts +1 -1
  410. package/dist/db/sqlite-migrations.mjs +4 -4
  411. package/dist/db/sqlite.d.mts +1 -1
  412. package/dist/db/sqlite.mjs +1 -1
  413. package/dist/default-DPsys51U.mjs +81 -0
  414. package/dist/default-DPsys51U.mjs.map +1 -0
  415. package/dist/deferred-tasks-CZ7rzBdo.d.mts +9 -0
  416. package/dist/deferred-tasks-CZ7rzBdo.d.mts.map +1 -0
  417. package/dist/dev-typegen-HRxwLRcT.mjs +29 -0
  418. package/dist/dev-typegen-HRxwLRcT.mjs.map +1 -0
  419. package/dist/device-flow-OcSqE9uY.mjs +521 -0
  420. package/dist/device-flow-OcSqE9uY.mjs.map +1 -0
  421. package/dist/digest-DVZ--cE9.mjs +194 -0
  422. package/dist/digest-DVZ--cE9.mjs.map +1 -0
  423. package/dist/direct-executor-DyjAqkpT.mjs +104 -0
  424. package/dist/direct-executor-DyjAqkpT.mjs.map +1 -0
  425. package/dist/dist-FPR93_xf.mjs +810 -0
  426. package/dist/dist-FPR93_xf.mjs.map +1 -0
  427. package/dist/email-console-DyQIgEnz.mjs +50 -0
  428. package/dist/email-console-DyQIgEnz.mjs.map +1 -0
  429. package/dist/email-locale-BYb16rVd.mjs +25 -0
  430. package/dist/email-locale-BYb16rVd.mjs.map +1 -0
  431. package/dist/emdash-runtime-CrzxJFmF.mjs +4214 -0
  432. package/dist/emdash-runtime-CrzxJFmF.mjs.map +1 -0
  433. package/dist/enrich-DBtCncE2.mjs +194 -0
  434. package/dist/enrich-DBtCncE2.mjs.map +1 -0
  435. package/dist/entry-lock-BN5y4YbO.d.mts +4481 -0
  436. package/dist/entry-lock-BN5y4YbO.d.mts.map +1 -0
  437. package/dist/entry-lock-BaRBHCsH.mjs +1173 -0
  438. package/dist/entry-lock-BaRBHCsH.mjs.map +1 -0
  439. package/dist/entry-lock-C6NcnZPV.mjs +163 -0
  440. package/dist/entry-lock-C6NcnZPV.mjs.map +1 -0
  441. package/dist/entry-locks-BTyQLdbC.mjs +167 -0
  442. package/dist/entry-locks-BTyQLdbC.mjs.map +1 -0
  443. package/dist/error-BfsNNrIE.mjs +90 -0
  444. package/dist/error-BfsNNrIE.mjs.map +1 -0
  445. package/dist/errors-BN1QAnEY.mjs +460 -0
  446. package/dist/errors-BN1QAnEY.mjs.map +1 -0
  447. package/dist/errors-Bt3goF8I.mjs +120 -0
  448. package/dist/errors-Bt3goF8I.mjs.map +1 -0
  449. package/dist/escape-BveidMa2.mjs +9 -0
  450. package/dist/escape-BveidMa2.mjs.map +1 -0
  451. package/dist/fence-Bb_IbCxI.mjs +162 -0
  452. package/dist/fence-Bb_IbCxI.mjs.map +1 -0
  453. package/dist/field-defs-cache-CsZctvbu.mjs +77 -0
  454. package/dist/field-defs-cache-CsZctvbu.mjs.map +1 -0
  455. package/dist/field-map-6m9rF49t.mjs +83 -0
  456. package/dist/field-map-6m9rF49t.mjs.map +1 -0
  457. package/dist/focal-point-CZ3d1wK5.mjs +23 -0
  458. package/dist/focal-point-CZ3d1wK5.mjs.map +1 -0
  459. package/dist/fts-manager-CCaZTp8y.mjs +443 -0
  460. package/dist/fts-manager-CCaZTp8y.mjs.map +1 -0
  461. package/dist/gc-xowRjczI.mjs +75 -0
  462. package/dist/gc-xowRjczI.mjs.map +1 -0
  463. package/dist/hash-COVK27Pc.mjs +37 -0
  464. package/dist/hash-COVK27Pc.mjs.map +1 -0
  465. package/dist/hook-result-CYSk0XFe.d.mts +31 -0
  466. package/dist/hook-result-CYSk0XFe.d.mts.map +1 -0
  467. package/dist/hreflang-CChPV7jx.mjs +105 -0
  468. package/dist/hreflang-CChPV7jx.mjs.map +1 -0
  469. package/dist/hreflang-DRslq3QI.d.mts +50 -0
  470. package/dist/hreflang-DRslq3QI.d.mts.map +1 -0
  471. package/dist/http-route-dispatch-CAdp2onn.mjs +339 -0
  472. package/dist/http-route-dispatch-CAdp2onn.mjs.map +1 -0
  473. package/dist/identity-NVTOOQyq.mjs +35 -0
  474. package/dist/identity-NVTOOQyq.mjs.map +1 -0
  475. package/dist/import-wpSO2N0x.mjs +2020 -0
  476. package/dist/import-wpSO2N0x.mjs.map +1 -0
  477. package/dist/index-CDs2wq4X.d.mts +623 -0
  478. package/dist/index-CDs2wq4X.d.mts.map +1 -0
  479. package/dist/index.d.mts +24 -24
  480. package/dist/index.mjs +103 -101
  481. package/dist/install-finalization-D9R9R-W8.mjs +58 -0
  482. package/dist/install-finalization-D9R9R-W8.mjs.map +1 -0
  483. package/dist/keys-Bck6LBfF.mjs +61 -0
  484. package/dist/keys-Bck6LBfF.mjs.map +1 -0
  485. package/dist/kinds-CYmRESWj.mjs +974 -0
  486. package/dist/kinds-CYmRESWj.mjs.map +1 -0
  487. package/dist/lifecycle-C815ZQfV.mjs +25 -0
  488. package/dist/lifecycle-C815ZQfV.mjs.map +1 -0
  489. package/dist/load-D99axixL.mjs +28 -0
  490. package/dist/load-D99axixL.mjs.map +1 -0
  491. package/dist/loader-CrRPfkHS.mjs +1197 -0
  492. package/dist/loader-CrRPfkHS.mjs.map +1 -0
  493. package/dist/loops-DMKlygqX.mjs +203 -0
  494. package/dist/loops-DMKlygqX.mjs.map +1 -0
  495. package/dist/manifest-builder-BQzCHNgB.mjs +189 -0
  496. package/dist/manifest-builder-BQzCHNgB.mjs.map +1 -0
  497. package/dist/manifest-schema-Ci2gmd0u.mjs +492 -0
  498. package/dist/manifest-schema-Ci2gmd0u.mjs.map +1 -0
  499. package/dist/media/image-endpoint.mjs +1 -1
  500. package/dist/media/index.d.mts +1 -1
  501. package/dist/media/index.mjs +4 -4
  502. package/dist/media/local-runtime.d.mts +14 -14
  503. package/dist/media/local-runtime.mjs +6 -6
  504. package/dist/media-BUQePMxP.mjs +373 -0
  505. package/dist/media-BUQePMxP.mjs.map +1 -0
  506. package/dist/media-DH8ibNlY.mjs +294 -0
  507. package/dist/media-DH8ibNlY.mjs.map +1 -0
  508. package/dist/media-OEIQ3bVc.mjs +408 -0
  509. package/dist/media-OEIQ3bVc.mjs.map +1 -0
  510. package/dist/media-allowlist-pYtaBA95.mjs +44 -0
  511. package/dist/media-allowlist-pYtaBA95.mjs.map +1 -0
  512. package/dist/media-folders-Bf8_s4de.mjs +210 -0
  513. package/dist/media-folders-Bf8_s4de.mjs.map +1 -0
  514. package/dist/media-url-C6klEuNd.mjs +43 -0
  515. package/dist/media-url-C6klEuNd.mjs.map +1 -0
  516. package/dist/media-usage-D7Y64m6v.mjs +1629 -0
  517. package/dist/media-usage-D7Y64m6v.mjs.map +1 -0
  518. package/dist/media-usage-activation-DrqbmgLA.mjs +78 -0
  519. package/dist/media-usage-activation-DrqbmgLA.mjs.map +1 -0
  520. package/dist/media-usage-work-DommYhYA.mjs +152 -0
  521. package/dist/media-usage-work-DommYhYA.mjs.map +1 -0
  522. package/dist/media-usage-work-HU63hNDu.mjs +586 -0
  523. package/dist/media-usage-work-HU63hNDu.mjs.map +1 -0
  524. package/dist/menus-BQfusWEC.mjs +3608 -0
  525. package/dist/menus-BQfusWEC.mjs.map +1 -0
  526. package/dist/menus-BtwjQt5s.mjs +753 -0
  527. package/dist/menus-BtwjQt5s.mjs.map +1 -0
  528. package/dist/menus-p_M1V7J_.mjs +139 -0
  529. package/dist/menus-p_M1V7J_.mjs.map +1 -0
  530. package/dist/migrations/index.d.mts +1 -1
  531. package/dist/migrations/index.mjs +3 -3
  532. package/dist/mime-C94qBG-P.mjs +36 -0
  533. package/dist/mime-C94qBG-P.mjs.map +1 -0
  534. package/dist/mode-DpYW3w6U.mjs +23 -0
  535. package/dist/mode-DpYW3w6U.mjs.map +1 -0
  536. package/dist/node-sqlite-compat-pWFw0lcc.mjs +46 -0
  537. package/dist/node-sqlite-compat-pWFw0lcc.mjs.map +1 -0
  538. package/dist/normalize-DduyxBjf.mjs +191 -0
  539. package/dist/normalize-DduyxBjf.mjs.map +1 -0
  540. package/dist/oauth-authorization-DAXsH1H9.mjs +274 -0
  541. package/dist/oauth-authorization-DAXsH1H9.mjs.map +1 -0
  542. package/dist/oauth-clients-DENiDQri.mjs +266 -0
  543. package/dist/oauth-clients-DENiDQri.mjs.map +1 -0
  544. package/dist/oauth-state-store-y8mEYVq9.mjs +50 -0
  545. package/dist/oauth-state-store-y8mEYVq9.mjs.map +1 -0
  546. package/dist/oauth-user-lookup-CtTYAy-O.mjs +26 -0
  547. package/dist/oauth-user-lookup-CtTYAy-O.mjs.map +1 -0
  548. package/dist/object-cache/memory.d.mts +1 -1
  549. package/dist/options-BYa1FgIM.d.mts +81 -0
  550. package/dist/options-BYa1FgIM.d.mts.map +1 -0
  551. package/dist/page/index.d.mts +2 -2
  552. package/dist/page/index.mjs +5 -5
  553. package/dist/parse-CORGGhHf.mjs +81 -0
  554. package/dist/parse-CORGGhHf.mjs.map +1 -0
  555. package/dist/parse-avNM1xWV.d.mts +168 -0
  556. package/dist/parse-avNM1xWV.d.mts.map +1 -0
  557. package/dist/passkey-config-Dih5YeIS.mjs +46 -0
  558. package/dist/passkey-config-Dih5YeIS.mjs.map +1 -0
  559. package/dist/paths-d51RFm8M.mjs +77 -0
  560. package/dist/paths-d51RFm8M.mjs.map +1 -0
  561. package/dist/patterns-CoqlXUvk.mjs +145 -0
  562. package/dist/patterns-CoqlXUvk.mjs.map +1 -0
  563. package/dist/placeholder-D2aksPMF.d.mts +306 -0
  564. package/dist/placeholder-D2aksPMF.d.mts.map +1 -0
  565. package/dist/plan-DqeZKuaR.mjs +135 -0
  566. package/dist/plan-DqeZKuaR.mjs.map +1 -0
  567. package/dist/plugin-test-runtime.d.mts +14 -14
  568. package/dist/plugin-test-runtime.mjs +110 -107
  569. package/dist/plugin-types.d.mts +2 -2
  570. package/dist/plugin-utils.d.mts +12 -12
  571. package/dist/plugins/adapt-sandbox-entry.d.mts +12 -12
  572. package/dist/plugins/adapt-sandbox-entry.mjs +3 -3
  573. package/dist/plugins/host.d.mts +5 -5
  574. package/dist/plugins/host.mjs +42 -41
  575. package/dist/plugins-Bb7oqjQA.mjs +277 -0
  576. package/dist/plugins-Bb7oqjQA.mjs.map +1 -0
  577. package/dist/policy-BcEqut3n.mjs +45 -0
  578. package/dist/policy-BcEqut3n.mjs.map +1 -0
  579. package/dist/portable-text-DXE8ymtD.mjs +307 -0
  580. package/dist/portable-text-DXE8ymtD.mjs.map +1 -0
  581. package/dist/preview-DEDWbwA_.mjs +107 -0
  582. package/dist/preview-DEDWbwA_.mjs.map +1 -0
  583. package/dist/protocol-BJbTzvwl.d.mts +61 -0
  584. package/dist/protocol-BJbTzvwl.d.mts.map +1 -0
  585. package/dist/public-submission-D9c9S14m.mjs +250 -0
  586. package/dist/public-submission-D9c9S14m.mjs.map +1 -0
  587. package/dist/public-url-CIRe-2T6.mjs +101 -0
  588. package/dist/public-url-CIRe-2T6.mjs.map +1 -0
  589. package/dist/query-BzifXlPS.mjs +1156 -0
  590. package/dist/query-BzifXlPS.mjs.map +1 -0
  591. package/dist/query-OzMJ6vJP.mjs +41 -0
  592. package/dist/query-OzMJ6vJP.mjs.map +1 -0
  593. package/dist/rate-limit-Csp60Vik.mjs +120 -0
  594. package/dist/rate-limit-Csp60Vik.mjs.map +1 -0
  595. package/dist/receipt-B-aU4hpJ.mjs +43 -0
  596. package/dist/receipt-B-aU4hpJ.mjs.map +1 -0
  597. package/dist/redirect-CDSw1sU3.mjs +17 -0
  598. package/dist/redirect-CDSw1sU3.mjs.map +1 -0
  599. package/dist/redirect-D1ArbO85.mjs +411 -0
  600. package/dist/redirect-D1ArbO85.mjs.map +1 -0
  601. package/dist/redirects-BjTwDTsV.mjs +148 -0
  602. package/dist/redirects-BjTwDTsV.mjs.map +1 -0
  603. package/dist/redirects-Ck50kH3n.mjs +446 -0
  604. package/dist/redirects-Ck50kH3n.mjs.map +1 -0
  605. package/dist/registry/testing.mjs +3 -3
  606. package/dist/registry-CFcNCayZ.mjs +6754 -0
  607. package/dist/registry-CFcNCayZ.mjs.map +1 -0
  608. package/dist/relations-Cfaa1fDl.mjs +776 -0
  609. package/dist/relations-Cfaa1fDl.mjs.map +1 -0
  610. package/dist/request-cache-iHRlHx1d.mjs +104 -0
  611. package/dist/request-cache-iHRlHx1d.mjs.map +1 -0
  612. package/dist/request-context.d.mts +1 -1
  613. package/dist/request-meta-D47mqyev.mjs +141 -0
  614. package/dist/request-meta-D47mqyev.mjs.map +1 -0
  615. package/dist/resolve-BPE8sMvx.mjs +99 -0
  616. package/dist/resolve-BPE8sMvx.mjs.map +1 -0
  617. package/dist/resolve-C0s1E_fH.mjs +199 -0
  618. package/dist/resolve-C0s1E_fH.mjs.map +1 -0
  619. package/dist/revision-j1p4-bOj.mjs +302 -0
  620. package/dist/revision-j1p4-bOj.mjs.map +1 -0
  621. package/dist/route-wire-C9PJV9aL.mjs +197 -0
  622. package/dist/route-wire-C9PJV9aL.mjs.map +1 -0
  623. package/dist/routes-lyYw0mMf.mjs +272 -0
  624. package/dist/routes-lyYw0mMf.mjs.map +1 -0
  625. package/dist/runner-B3eyB9Gb.mjs +6121 -0
  626. package/dist/runner-B3eyB9Gb.mjs.map +1 -0
  627. package/dist/runner-DoYH2Jcu.d.mts +68 -0
  628. package/dist/runner-DoYH2Jcu.d.mts.map +1 -0
  629. package/dist/runtime.d.mts +13 -13
  630. package/dist/runtime.mjs +3 -3
  631. package/dist/schema-BAayK46S.mjs +13 -0
  632. package/dist/schema-BAayK46S.mjs.map +1 -0
  633. package/dist/schema-Gqcl-8G4.mjs +815 -0
  634. package/dist/schema-Gqcl-8G4.mjs.map +1 -0
  635. package/dist/scopes-BqPOKoKf.mjs +34 -0
  636. package/dist/scopes-BqPOKoKf.mjs.map +1 -0
  637. package/dist/search-YJKPIEV6.mjs +448 -0
  638. package/dist/search-YJKPIEV6.mjs.map +1 -0
  639. package/dist/sections-BR_e-wK5.mjs +346 -0
  640. package/dist/sections-BR_e-wK5.mjs.map +1 -0
  641. package/dist/seed/index.d.mts +2 -2
  642. package/dist/seed/index.mjs +37 -31
  643. package/dist/seo/index.d.mts +3 -3
  644. package/dist/seo/index.mjs +22 -21
  645. package/dist/seo/index.mjs.map +1 -1
  646. package/dist/seo-Dsj8hy3j.mjs +114 -0
  647. package/dist/seo-Dsj8hy3j.mjs.map +1 -0
  648. package/dist/seo-XvH4LNNp.mjs +133 -0
  649. package/dist/seo-XvH4LNNp.mjs.map +1 -0
  650. package/dist/service-BsVG05gS.mjs +150 -0
  651. package/dist/service-BsVG05gS.mjs.map +1 -0
  652. package/dist/session-user-DgKbYrlj.mjs +51 -0
  653. package/dist/session-user-DgKbYrlj.mjs.map +1 -0
  654. package/dist/settings-CNPUntkh.mjs +51 -0
  655. package/dist/settings-CNPUntkh.mjs.map +1 -0
  656. package/dist/settings-D5EHi0Tk.mjs +439 -0
  657. package/dist/settings-D5EHi0Tk.mjs.map +1 -0
  658. package/dist/settings-DSfE7wOa.mjs +61 -0
  659. package/dist/settings-DSfE7wOa.mjs.map +1 -0
  660. package/dist/setup-complete-B8W8sJ9v.mjs +26 -0
  661. package/dist/setup-complete-B8W8sJ9v.mjs.map +1 -0
  662. package/dist/setup-nonce-DnSBP260.mjs +25 -0
  663. package/dist/setup-nonce-DnSBP260.mjs.map +1 -0
  664. package/dist/site-settings-NGzdrt7O.mjs +50 -0
  665. package/dist/site-settings-NGzdrt7O.mjs.map +1 -0
  666. package/dist/site-url-D6JB7tLW.mjs +16 -0
  667. package/dist/site-url-D6JB7tLW.mjs.map +1 -0
  668. package/dist/snapshot-CdcwwWAf.mjs +414 -0
  669. package/dist/snapshot-CdcwwWAf.mjs.map +1 -0
  670. package/dist/ssrf-Dv0_tRpo.mjs +406 -0
  671. package/dist/ssrf-Dv0_tRpo.mjs.map +1 -0
  672. package/dist/stage-CUjhED3P.mjs +662 -0
  673. package/dist/stage-CUjhED3P.mjs.map +1 -0
  674. package/dist/staged-C36IWXff.mjs +659 -0
  675. package/dist/staged-C36IWXff.mjs.map +1 -0
  676. package/dist/state-CKouMCSY.mjs +153 -0
  677. package/dist/state-CKouMCSY.mjs.map +1 -0
  678. package/dist/status-lzyj4Uu7.mjs +30 -0
  679. package/dist/status-lzyj4Uu7.mjs.map +1 -0
  680. package/dist/storage/local.d.mts +1 -1
  681. package/dist/storage/local.mjs +1 -1
  682. package/dist/storage/s3.d.mts +1 -1
  683. package/dist/storage/s3.mjs +1 -1
  684. package/dist/storage-query-B-cWcTjJ.d.mts +1594 -0
  685. package/dist/storage-query-B-cWcTjJ.d.mts.map +1 -0
  686. package/dist/tar-DsTXX6ch.mjs +449 -0
  687. package/dist/tar-DsTXX6ch.mjs.map +1 -0
  688. package/dist/target-DLQCwp_Z.mjs +27 -0
  689. package/dist/target-DLQCwp_Z.mjs.map +1 -0
  690. package/dist/taxonomies-BlAjr4BL.mjs +697 -0
  691. package/dist/taxonomies-BlAjr4BL.mjs.map +1 -0
  692. package/dist/taxonomies-Byyo7LOZ.mjs +939 -0
  693. package/dist/taxonomies-Byyo7LOZ.mjs.map +1 -0
  694. package/dist/taxonomy-CKDwM61Y.mjs +525 -0
  695. package/dist/taxonomy-CKDwM61Y.mjs.map +1 -0
  696. package/dist/tokens-BojXlk49.mjs +171 -0
  697. package/dist/tokens-BojXlk49.mjs.map +1 -0
  698. package/dist/transaction-DLPQWik1.mjs +29 -0
  699. package/dist/transaction-DLPQWik1.mjs.map +1 -0
  700. package/dist/transfer-XSTh2BCr.mjs +8706 -0
  701. package/dist/transfer-XSTh2BCr.mjs.map +1 -0
  702. package/dist/transfer-download-DkoCDA9d.mjs +33 -0
  703. package/dist/transfer-download-DkoCDA9d.mjs.map +1 -0
  704. package/dist/transfer-iQ26J-RT.mjs +166 -0
  705. package/dist/transfer-iQ26J-RT.mjs.map +1 -0
  706. package/dist/transformations-C7RQabKQ.mjs +196 -0
  707. package/dist/transformations-C7RQabKQ.mjs.map +1 -0
  708. package/dist/transport-D3RulfD6.mjs +136 -0
  709. package/dist/transport-D3RulfD6.mjs.map +1 -0
  710. package/dist/transport-DhlZlf4D.d.mts +42 -0
  711. package/dist/transport-DhlZlf4D.d.mts.map +1 -0
  712. package/dist/trusted-proxy-B6ECOZJc.mjs +51 -0
  713. package/dist/trusted-proxy-B6ECOZJc.mjs.map +1 -0
  714. package/dist/turnstile-lqUiY7lP.mjs +53 -0
  715. package/dist/turnstile-lqUiY7lP.mjs.map +1 -0
  716. package/dist/types-4Dn9bZhu.mjs +77 -0
  717. package/dist/types-4Dn9bZhu.mjs.map +1 -0
  718. package/dist/types-5LSo7PPx.d.mts +85 -0
  719. package/dist/types-5LSo7PPx.d.mts.map +1 -0
  720. package/dist/types-BQ3hwYJT.d.mts +896 -0
  721. package/dist/types-BQ3hwYJT.d.mts.map +1 -0
  722. package/dist/types-BYEk7qo3.d.mts +198 -0
  723. package/dist/types-BYEk7qo3.d.mts.map +1 -0
  724. package/dist/types-CJKsWVFR.mjs +199 -0
  725. package/dist/types-CJKsWVFR.mjs.map +1 -0
  726. package/dist/types-Ca_w8mmY.d.mts +363 -0
  727. package/dist/types-Ca_w8mmY.d.mts.map +1 -0
  728. package/dist/types-CkE41ZAG.mjs +18 -0
  729. package/dist/types-CkE41ZAG.mjs.map +1 -0
  730. package/dist/types-D0aJW2uR.d.mts +1641 -0
  731. package/dist/types-D0aJW2uR.d.mts.map +1 -0
  732. package/dist/types-DbpN4Qto.d.mts +372 -0
  733. package/dist/types-DbpN4Qto.d.mts.map +1 -0
  734. package/dist/types-ILDI1sdY.mjs +16 -0
  735. package/dist/types-ILDI1sdY.mjs.map +1 -0
  736. package/dist/types-OC5c-edM.mjs +22 -0
  737. package/dist/types-OC5c-edM.mjs.map +1 -0
  738. package/dist/types-aOOxRSx6.mjs +103 -0
  739. package/dist/types-aOOxRSx6.mjs.map +1 -0
  740. package/dist/types-m1WbUffD.d.mts +198 -0
  741. package/dist/types-m1WbUffD.d.mts.map +1 -0
  742. package/dist/types-uxLoPBio.d.mts +124 -0
  743. package/dist/types-uxLoPBio.d.mts.map +1 -0
  744. package/dist/types-we5uR-tV.d.mts +287 -0
  745. package/dist/types-we5uR-tV.d.mts.map +1 -0
  746. package/dist/upload-attempts-DduMy6B0.mjs +32 -0
  747. package/dist/upload-attempts-DduMy6B0.mjs.map +1 -0
  748. package/dist/url-pattern-B3EwxAAk.mjs +33 -0
  749. package/dist/url-pattern-B3EwxAAk.mjs.map +1 -0
  750. package/dist/user-ElwQjTQT.mjs +171 -0
  751. package/dist/user-ElwQjTQT.mjs.map +1 -0
  752. package/dist/utils-BlAXmfOG.mjs +439 -0
  753. package/dist/utils-BlAXmfOG.mjs.map +1 -0
  754. package/dist/validate-CH0X5b2c.d.mts +468 -0
  755. package/dist/validate-CH0X5b2c.d.mts.map +1 -0
  756. package/dist/validate-CfgRpcjA.mjs +492 -0
  757. package/dist/validate-CfgRpcjA.mjs.map +1 -0
  758. package/dist/validation-DvYJtv4k.mjs +218 -0
  759. package/dist/validation-DvYJtv4k.mjs.map +1 -0
  760. package/dist/version-DgYjhTud.mjs +9 -0
  761. package/dist/version-DgYjhTud.mjs.map +1 -0
  762. package/dist/version-Dq71scUb.mjs +7 -0
  763. package/dist/version-Dq71scUb.mjs.map +1 -0
  764. package/dist/widgets-ChFIj0be.mjs +126 -0
  765. package/dist/widgets-ChFIj0be.mjs.map +1 -0
  766. package/dist/wxr-taxonomies-CBZMp2YX.mjs +372 -0
  767. package/dist/wxr-taxonomies-CBZMp2YX.mjs.map +1 -0
  768. package/dist/wxr-taxonomies-DlKDpWN1.d.mts +34 -0
  769. package/dist/wxr-taxonomies-DlKDpWN1.d.mts.map +1 -0
  770. package/dist/zod-generator-DmTKI-Ig.mjs +426 -0
  771. package/dist/zod-generator-DmTKI-Ig.mjs.map +1 -0
  772. package/package.json +7 -6
  773. package/src/api/handlers/content.ts +593 -16
  774. package/src/api/handlers/device-flow.ts +74 -21
  775. package/src/api/handlers/index.ts +1 -0
  776. package/src/api/handlers/manifest.ts +79 -5
  777. package/src/api/handlers/media-upload.ts +17 -71
  778. package/src/api/handlers/media.ts +97 -3
  779. package/src/api/handlers/relations.ts +638 -157
  780. package/src/api/handlers/revision.ts +30 -0
  781. package/src/api/handlers/schema.ts +403 -1
  782. package/src/api/handlers/snapshot.ts +257 -3
  783. package/src/api/handlers/staged-references.ts +142 -0
  784. package/src/api/handlers/validate-references.ts +146 -0
  785. package/src/api/schemas/content.ts +13 -0
  786. package/src/api/schemas/relations.ts +54 -44
  787. package/src/api/schemas/schema.ts +14 -0
  788. package/src/astro/integration/routes.ts +15 -19
  789. package/src/astro/integration/vite-config.ts +10 -4
  790. package/src/astro/middleware.ts +1 -0
  791. package/src/astro/routes/api/content/[collection]/[id]/references/[relation]/children.ts +11 -54
  792. package/src/astro/routes/api/content/[collection]/[id].ts +3 -1
  793. package/src/astro/routes/api/oauth/device/authorize.ts +33 -4
  794. package/src/astro/routes/api/relations/index.ts +4 -4
  795. package/src/astro/routes/api/schema/collections/[slug]/fields/[fieldSlug].ts +6 -2
  796. package/src/astro/routes/api/setup/index.ts +66 -23
  797. package/src/astro/routes/api/snapshot.ts +2 -1
  798. package/src/astro/types.ts +10 -0
  799. package/src/cleanup.ts +10 -0
  800. package/src/cli/commands/export-seed.ts +510 -89
  801. package/src/components/Columns.astro +3 -1
  802. package/src/components/Cover.astro +3 -1
  803. package/src/components/WidgetArea.astro +3 -2
  804. package/src/database/migrations/086_relations_structural.ts +197 -0
  805. package/src/database/migrations/087_reference_field_relations.ts +407 -0
  806. package/src/database/migrations/runner.ts +4 -0
  807. package/src/database/reference-backfill.ts +141 -0
  808. package/src/database/repositories/content.ts +43 -8
  809. package/src/database/repositories/media.ts +40 -1
  810. package/src/database/repositories/redirect.ts +17 -34
  811. package/src/database/repositories/relation.ts +620 -208
  812. package/src/database/repositories/revision.ts +16 -0
  813. package/src/database/repositories/types.ts +38 -0
  814. package/src/database/transaction.ts +12 -1
  815. package/src/database/types.ts +14 -5
  816. package/src/emdash-runtime.ts +114 -11
  817. package/src/index.ts +11 -0
  818. package/src/loader.ts +169 -22
  819. package/src/mcp/server.ts +13 -48
  820. package/src/query.ts +455 -25
  821. package/src/references/field-map.ts +115 -0
  822. package/src/references/resolve.ts +160 -0
  823. package/src/references/staged.ts +117 -0
  824. package/src/references/types.ts +16 -0
  825. package/src/registry/artifact-fetch.ts +45 -271
  826. package/src/schema/registry.ts +99 -24
  827. package/src/schema/types.ts +58 -0
  828. package/src/schema/zod-generator.ts +67 -1
  829. package/src/seed/apply.ts +841 -103
  830. package/src/seed/types.ts +36 -2
  831. package/src/seed/validate.ts +78 -2
  832. package/src/transfer/analyze/unique-keys.ts +3 -12
  833. package/src/transfer/analyze/validate.ts +65 -39
  834. package/src/transfer/analyze/values.ts +12 -1
  835. package/src/transfer/export/readers.ts +12 -8
  836. package/src/transfer/format/columns.ts +26 -6
  837. package/src/transfer/format/kinds.ts +21 -5
  838. package/src/transfer/import/context.ts +8 -1
  839. package/src/transfer/ops/package-index.ts +1 -1
  840. package/dist/action-token-DYwe4Pk0.mjs +0 -26
  841. package/dist/action-token-DYwe4Pk0.mjs.map +0 -1
  842. package/dist/activation-LOkDM5WT.mjs +0 -382
  843. package/dist/activation-LOkDM5WT.mjs.map +0 -1
  844. package/dist/adapters-B64LbYcB.d.mts +0 -171
  845. package/dist/adapters-B64LbYcB.d.mts.map +0 -1
  846. package/dist/allowed-origins-CHB8oZNM.mjs +0 -116
  847. package/dist/allowed-origins-CHB8oZNM.mjs.map +0 -1
  848. package/dist/api-cFFZpyS0.mjs +0 -4718
  849. package/dist/api-cFFZpyS0.mjs.map +0 -1
  850. package/dist/api-tokens-s4i4aUp_.mjs +0 -166
  851. package/dist/api-tokens-s4i4aUp_.mjs.map +0 -1
  852. package/dist/apply-CoT603H3.mjs +0 -1163
  853. package/dist/apply-CoT603H3.mjs.map +0 -1
  854. package/dist/approvals-CqMfNxak.mjs +0 -460
  855. package/dist/approvals-CqMfNxak.mjs.map +0 -1
  856. package/dist/artifact-fetch-DZMOGZ3-.mjs +0 -818
  857. package/dist/artifact-fetch-DZMOGZ3-.mjs.map +0 -1
  858. package/dist/astro/routes/api/relations/_id_/translations.d.mts +0 -8
  859. package/dist/astro/routes/api/relations/_id_/translations.d.mts.map +0 -1
  860. package/dist/astro/routes/api/relations/_id_/translations.mjs +0 -47
  861. package/dist/astro/routes/api/relations/_id_/translations.mjs.map +0 -1
  862. package/dist/audit-RfCugiSB.mjs +0 -127
  863. package/dist/audit-RfCugiSB.mjs.map +0 -1
  864. package/dist/authoritative-records-CoJvBXAD.mjs +0 -5172
  865. package/dist/authoritative-records-CoJvBXAD.mjs.map +0 -1
  866. package/dist/authorize-seCifOMJ.mjs +0 -49
  867. package/dist/authorize-seCifOMJ.mjs.map +0 -1
  868. package/dist/backup-CBu0LrXf.mjs +0 -246
  869. package/dist/backup-CBu0LrXf.mjs.map +0 -1
  870. package/dist/block-type-registry-DUI_3KxT.mjs +0 -6709
  871. package/dist/block-type-registry-DUI_3KxT.mjs.map +0 -1
  872. package/dist/block-types-BmZmLmAD.mjs +0 -132
  873. package/dist/block-types-BmZmLmAD.mjs.map +0 -1
  874. package/dist/block-values-C_VIPr5t.mjs +0 -175
  875. package/dist/block-values-C_VIPr5t.mjs.map +0 -1
  876. package/dist/byline-DYmkXqvo.mjs +0 -909
  877. package/dist/byline-DYmkXqvo.mjs.map +0 -1
  878. package/dist/byline-fields-D28AT-Fh.mjs +0 -123
  879. package/dist/byline-fields-D28AT-Fh.mjs.map +0 -1
  880. package/dist/byline-registry-gnKscbQX.mjs +0 -406
  881. package/dist/byline-registry-gnKscbQX.mjs.map +0 -1
  882. package/dist/bylines-BPwJqoYH.mjs +0 -232
  883. package/dist/bylines-BPwJqoYH.mjs.map +0 -1
  884. package/dist/bylines-ukLaYpVZ.mjs +0 -214
  885. package/dist/bylines-ukLaYpVZ.mjs.map +0 -1
  886. package/dist/cache-m7UEkRFV.mjs +0 -108
  887. package/dist/cache-m7UEkRFV.mjs.map +0 -1
  888. package/dist/canonical-YhEQezjg.mjs +0 -174
  889. package/dist/canonical-YhEQezjg.mjs.map +0 -1
  890. package/dist/capture-triggers-kJyl_yyM.mjs +0 -362
  891. package/dist/capture-triggers-kJyl_yyM.mjs.map +0 -1
  892. package/dist/challenge-store-ppU6Uv13.mjs +0 -51
  893. package/dist/challenge-store-ppU6Uv13.mjs.map +0 -1
  894. package/dist/checksum-B2IINIlN.mjs +0 -162
  895. package/dist/checksum-B2IINIlN.mjs.map +0 -1
  896. package/dist/chrome-tags-DApCQSIk.mjs +0 -24
  897. package/dist/chrome-tags-DApCQSIk.mjs.map +0 -1
  898. package/dist/chunks-Dms7Uxbt.mjs +0 -25
  899. package/dist/chunks-Dms7Uxbt.mjs.map +0 -1
  900. package/dist/collection-deletion-BIm28mo3.mjs +0 -436
  901. package/dist/collection-deletion-BIm28mo3.mjs.map +0 -1
  902. package/dist/collection-deletion-processor-Br6rxs3u.mjs +0 -217
  903. package/dist/collection-deletion-processor-Br6rxs3u.mjs.map +0 -1
  904. package/dist/collection-slugs-cache-CjGk__zp.mjs +0 -85
  905. package/dist/collection-slugs-cache-CjGk__zp.mjs.map +0 -1
  906. package/dist/comment-CrBl22OF.mjs +0 -313
  907. package/dist/comment-CrBl22OF.mjs.map +0 -1
  908. package/dist/comment-reaction-JEQ2Fpd8.mjs +0 -85
  909. package/dist/comment-reaction-JEQ2Fpd8.mjs.map +0 -1
  910. package/dist/comments-2ah9du9y.mjs +0 -195
  911. package/dist/comments-2ah9du9y.mjs.map +0 -1
  912. package/dist/comments-fHZ8ON9O.mjs +0 -99
  913. package/dist/comments-fHZ8ON9O.mjs.map +0 -1
  914. package/dist/components-CXbq7CSM.mjs +0 -108
  915. package/dist/components-CXbq7CSM.mjs.map +0 -1
  916. package/dist/config-5ii2haYu.d.mts +0 -6528
  917. package/dist/config-5ii2haYu.d.mts.map +0 -1
  918. package/dist/config-IhybvkIQ.mjs +0 -242
  919. package/dist/config-IhybvkIQ.mjs.map +0 -1
  920. package/dist/config-Py43JK9r.d.mts +0 -39
  921. package/dist/config-Py43JK9r.d.mts.map +0 -1
  922. package/dist/content-DFaIEDj9.mjs +0 -2281
  923. package/dist/content-DFaIEDj9.mjs.map +0 -1
  924. package/dist/content-list-query-Dra4Dalc.d.mts +0 -26
  925. package/dist/content-list-query-Dra4Dalc.d.mts.map +0 -1
  926. package/dist/content-policy-DFNw91-d.mjs +0 -46
  927. package/dist/content-policy-DFNw91-d.mjs.map +0 -1
  928. package/dist/content-repair-Q8IUrpLL.mjs +0 -442
  929. package/dist/content-repair-Q8IUrpLL.mjs.map +0 -1
  930. package/dist/context-BeGccdUX.mjs +0 -1921
  931. package/dist/context-BeGccdUX.mjs.map +0 -1
  932. package/dist/cron-7DCJwPXq.mjs +0 -284
  933. package/dist/cron-7DCJwPXq.mjs.map +0 -1
  934. package/dist/dashboard-DjrB-xxZ.mjs +0 -151
  935. package/dist/dashboard-DjrB-xxZ.mjs.map +0 -1
  936. package/dist/default-DQ6vsviu.mjs +0 -81
  937. package/dist/default-DQ6vsviu.mjs.map +0 -1
  938. package/dist/deferred-tasks-BPxXUB4x.d.mts +0 -9
  939. package/dist/deferred-tasks-BPxXUB4x.d.mts.map +0 -1
  940. package/dist/dev-typegen-CZaPLl3V.mjs +0 -29
  941. package/dist/dev-typegen-CZaPLl3V.mjs.map +0 -1
  942. package/dist/device-flow-CRd6DXmW.mjs +0 -466
  943. package/dist/device-flow-CRd6DXmW.mjs.map +0 -1
  944. package/dist/digest-BarSh-pN.mjs +0 -194
  945. package/dist/digest-BarSh-pN.mjs.map +0 -1
  946. package/dist/direct-executor-BmuFJJZV.mjs +0 -104
  947. package/dist/direct-executor-BmuFJJZV.mjs.map +0 -1
  948. package/dist/dist-BNwANFJR.mjs +0 -810
  949. package/dist/dist-BNwANFJR.mjs.map +0 -1
  950. package/dist/email-console-bJn3ctqA.mjs +0 -50
  951. package/dist/email-console-bJn3ctqA.mjs.map +0 -1
  952. package/dist/email-locale-CN6WAMx0.mjs +0 -25
  953. package/dist/email-locale-CN6WAMx0.mjs.map +0 -1
  954. package/dist/emdash-runtime-DAjghyEG.mjs +0 -4186
  955. package/dist/emdash-runtime-DAjghyEG.mjs.map +0 -1
  956. package/dist/enrich-Dl3kZ-lP.mjs +0 -194
  957. package/dist/enrich-Dl3kZ-lP.mjs.map +0 -1
  958. package/dist/entry-lock-BJYdBfXb.mjs +0 -1097
  959. package/dist/entry-lock-BJYdBfXb.mjs.map +0 -1
  960. package/dist/entry-lock-DHQOxN7R.mjs +0 -163
  961. package/dist/entry-lock-DHQOxN7R.mjs.map +0 -1
  962. package/dist/entry-lock-DVhCt49A.d.mts +0 -4368
  963. package/dist/entry-lock-DVhCt49A.d.mts.map +0 -1
  964. package/dist/entry-locks-D0foLdjQ.mjs +0 -167
  965. package/dist/entry-locks-D0foLdjQ.mjs.map +0 -1
  966. package/dist/error-CfvOHP0M.mjs +0 -90
  967. package/dist/error-CfvOHP0M.mjs.map +0 -1
  968. package/dist/errors-BF0_LFhW.mjs +0 -460
  969. package/dist/errors-BF0_LFhW.mjs.map +0 -1
  970. package/dist/errors-DgE1zJGG.mjs +0 -120
  971. package/dist/errors-DgE1zJGG.mjs.map +0 -1
  972. package/dist/escape-CuaZhZvL.mjs +0 -9
  973. package/dist/escape-CuaZhZvL.mjs.map +0 -1
  974. package/dist/fence-CMDXJYc_.mjs +0 -162
  975. package/dist/fence-CMDXJYc_.mjs.map +0 -1
  976. package/dist/field-defs-cache-HIgBbqZZ.mjs +0 -77
  977. package/dist/field-defs-cache-HIgBbqZZ.mjs.map +0 -1
  978. package/dist/focal-point-Gr34o-4o.mjs +0 -23
  979. package/dist/focal-point-Gr34o-4o.mjs.map +0 -1
  980. package/dist/fts-manager-S-K0laoS.mjs +0 -443
  981. package/dist/fts-manager-S-K0laoS.mjs.map +0 -1
  982. package/dist/gc-DjKY0Ay1.mjs +0 -75
  983. package/dist/gc-DjKY0Ay1.mjs.map +0 -1
  984. package/dist/hash-SDAW6zC-.mjs +0 -37
  985. package/dist/hash-SDAW6zC-.mjs.map +0 -1
  986. package/dist/hook-result-B5bXDgS2.d.mts +0 -31
  987. package/dist/hook-result-B5bXDgS2.d.mts.map +0 -1
  988. package/dist/hreflang-D5uNnsGJ.d.mts +0 -50
  989. package/dist/hreflang-D5uNnsGJ.d.mts.map +0 -1
  990. package/dist/hreflang-DMFBL2eb.mjs +0 -105
  991. package/dist/hreflang-DMFBL2eb.mjs.map +0 -1
  992. package/dist/http-route-dispatch-BitqzwMy.mjs +0 -339
  993. package/dist/http-route-dispatch-BitqzwMy.mjs.map +0 -1
  994. package/dist/identity-IyNWwXr6.mjs +0 -35
  995. package/dist/identity-IyNWwXr6.mjs.map +0 -1
  996. package/dist/import-C3JZplWq.mjs +0 -2020
  997. package/dist/import-C3JZplWq.mjs.map +0 -1
  998. package/dist/index-D-hdtLe8.d.mts +0 -623
  999. package/dist/index-D-hdtLe8.d.mts.map +0 -1
  1000. package/dist/install-finalization-DfM1fj5x.mjs +0 -58
  1001. package/dist/install-finalization-DfM1fj5x.mjs.map +0 -1
  1002. package/dist/keys-yxLm5l35.mjs +0 -61
  1003. package/dist/keys-yxLm5l35.mjs.map +0 -1
  1004. package/dist/kinds-CRu_T5T5.mjs +0 -961
  1005. package/dist/kinds-CRu_T5T5.mjs.map +0 -1
  1006. package/dist/lifecycle-BzeGPeQ-.mjs +0 -25
  1007. package/dist/lifecycle-BzeGPeQ-.mjs.map +0 -1
  1008. package/dist/load-XgJiE6_3.mjs +0 -28
  1009. package/dist/load-XgJiE6_3.mjs.map +0 -1
  1010. package/dist/loader-BzqeR1ZN.mjs +0 -1086
  1011. package/dist/loader-BzqeR1ZN.mjs.map +0 -1
  1012. package/dist/loops-BQSzv5Zn.mjs +0 -203
  1013. package/dist/loops-BQSzv5Zn.mjs.map +0 -1
  1014. package/dist/manifest-builder-B8zR-73J.mjs +0 -189
  1015. package/dist/manifest-builder-B8zR-73J.mjs.map +0 -1
  1016. package/dist/manifest-schema-CY3zng_M.mjs +0 -492
  1017. package/dist/manifest-schema-CY3zng_M.mjs.map +0 -1
  1018. package/dist/media-Pu1L6xir.mjs +0 -408
  1019. package/dist/media-Pu1L6xir.mjs.map +0 -1
  1020. package/dist/media-Qp5S3eH3.mjs +0 -355
  1021. package/dist/media-Qp5S3eH3.mjs.map +0 -1
  1022. package/dist/media-allowlist-BSoa9Vvm.mjs +0 -44
  1023. package/dist/media-allowlist-BSoa9Vvm.mjs.map +0 -1
  1024. package/dist/media-folders-BE0oo2eX.mjs +0 -210
  1025. package/dist/media-folders-BE0oo2eX.mjs.map +0 -1
  1026. package/dist/media-h7tOiDLj.mjs +0 -221
  1027. package/dist/media-h7tOiDLj.mjs.map +0 -1
  1028. package/dist/media-url-jArBpzIG.mjs +0 -43
  1029. package/dist/media-url-jArBpzIG.mjs.map +0 -1
  1030. package/dist/media-usage-My-Vi-ex.mjs +0 -1629
  1031. package/dist/media-usage-My-Vi-ex.mjs.map +0 -1
  1032. package/dist/media-usage-activation-HKp7zk7W.mjs +0 -78
  1033. package/dist/media-usage-activation-HKp7zk7W.mjs.map +0 -1
  1034. package/dist/media-usage-work-C2OZLCAd.mjs +0 -586
  1035. package/dist/media-usage-work-C2OZLCAd.mjs.map +0 -1
  1036. package/dist/media-usage-work-DwUNbgvS.mjs +0 -152
  1037. package/dist/media-usage-work-DwUNbgvS.mjs.map +0 -1
  1038. package/dist/menus-BM7BPLOb.mjs +0 -139
  1039. package/dist/menus-BM7BPLOb.mjs.map +0 -1
  1040. package/dist/menus-ITeAbcIF.mjs +0 -753
  1041. package/dist/menus-ITeAbcIF.mjs.map +0 -1
  1042. package/dist/menus-TsSGmSR4.mjs +0 -3608
  1043. package/dist/menus-TsSGmSR4.mjs.map +0 -1
  1044. package/dist/mime-ChLqYwDk.mjs +0 -36
  1045. package/dist/mime-ChLqYwDk.mjs.map +0 -1
  1046. package/dist/mode-CCuKXUci.mjs +0 -23
  1047. package/dist/mode-CCuKXUci.mjs.map +0 -1
  1048. package/dist/node-sqlite-compat-CONMsl-x.mjs +0 -46
  1049. package/dist/node-sqlite-compat-CONMsl-x.mjs.map +0 -1
  1050. package/dist/normalize-CO2P8-iE.mjs +0 -191
  1051. package/dist/normalize-CO2P8-iE.mjs.map +0 -1
  1052. package/dist/oauth-authorization-DlMIL5_h.mjs +0 -274
  1053. package/dist/oauth-authorization-DlMIL5_h.mjs.map +0 -1
  1054. package/dist/oauth-clients-Djq9r_KP.mjs +0 -266
  1055. package/dist/oauth-clients-Djq9r_KP.mjs.map +0 -1
  1056. package/dist/oauth-state-store-BbjnZXNC.mjs +0 -50
  1057. package/dist/oauth-state-store-BbjnZXNC.mjs.map +0 -1
  1058. package/dist/oauth-user-lookup-vue9a64A.mjs +0 -26
  1059. package/dist/oauth-user-lookup-vue9a64A.mjs.map +0 -1
  1060. package/dist/options-SQCHQCPH.d.mts +0 -81
  1061. package/dist/options-SQCHQCPH.d.mts.map +0 -1
  1062. package/dist/parse-CVgO-Qai.d.mts +0 -168
  1063. package/dist/parse-CVgO-Qai.d.mts.map +0 -1
  1064. package/dist/parse-DY6OD1j_.mjs +0 -81
  1065. package/dist/parse-DY6OD1j_.mjs.map +0 -1
  1066. package/dist/passkey-config-X_H8128a.mjs +0 -46
  1067. package/dist/passkey-config-X_H8128a.mjs.map +0 -1
  1068. package/dist/paths-JxokKIbr.mjs +0 -77
  1069. package/dist/paths-JxokKIbr.mjs.map +0 -1
  1070. package/dist/patterns-BhAvqO0S.mjs +0 -145
  1071. package/dist/patterns-BhAvqO0S.mjs.map +0 -1
  1072. package/dist/placeholder-MSEd8gty.d.mts +0 -306
  1073. package/dist/placeholder-MSEd8gty.d.mts.map +0 -1
  1074. package/dist/plan-xjcWrAah.mjs +0 -135
  1075. package/dist/plan-xjcWrAah.mjs.map +0 -1
  1076. package/dist/plugins-DUXUt8B9.mjs +0 -277
  1077. package/dist/plugins-DUXUt8B9.mjs.map +0 -1
  1078. package/dist/policy-CUvwAARc.mjs +0 -45
  1079. package/dist/policy-CUvwAARc.mjs.map +0 -1
  1080. package/dist/portable-text-5O_ZGUjB.mjs +0 -307
  1081. package/dist/portable-text-5O_ZGUjB.mjs.map +0 -1
  1082. package/dist/preview-CIUcPYr6.mjs +0 -107
  1083. package/dist/preview-CIUcPYr6.mjs.map +0 -1
  1084. package/dist/protocol-B97DZaFr.d.mts +0 -61
  1085. package/dist/protocol-B97DZaFr.d.mts.map +0 -1
  1086. package/dist/public-submission-BFBUrqst.mjs +0 -250
  1087. package/dist/public-submission-BFBUrqst.mjs.map +0 -1
  1088. package/dist/public-url-Bn7U0D7-.mjs +0 -101
  1089. package/dist/public-url-Bn7U0D7-.mjs.map +0 -1
  1090. package/dist/query-B48peoRT.mjs +0 -890
  1091. package/dist/query-B48peoRT.mjs.map +0 -1
  1092. package/dist/query-C4IH0uhR.mjs +0 -41
  1093. package/dist/query-C4IH0uhR.mjs.map +0 -1
  1094. package/dist/rate-limit-BZ6nybgc.mjs +0 -120
  1095. package/dist/rate-limit-BZ6nybgc.mjs.map +0 -1
  1096. package/dist/receipt-B4wJj5Jq.mjs +0 -43
  1097. package/dist/receipt-B4wJj5Jq.mjs.map +0 -1
  1098. package/dist/redirect-Cd1E7VUt.mjs +0 -17
  1099. package/dist/redirect-Cd1E7VUt.mjs.map +0 -1
  1100. package/dist/redirect-iJf5fltD.mjs +0 -415
  1101. package/dist/redirect-iJf5fltD.mjs.map +0 -1
  1102. package/dist/redirects-CYu1u1aK.mjs +0 -446
  1103. package/dist/redirects-CYu1u1aK.mjs.map +0 -1
  1104. package/dist/redirects-Cv9apQKj.mjs +0 -148
  1105. package/dist/redirects-Cv9apQKj.mjs.map +0 -1
  1106. package/dist/relation-M4NUCb0b.mjs +0 -334
  1107. package/dist/relation-M4NUCb0b.mjs.map +0 -1
  1108. package/dist/relations-CCif47Oq.mjs +0 -403
  1109. package/dist/relations-CCif47Oq.mjs.map +0 -1
  1110. package/dist/relations-CK9CYUyr.mjs +0 -310
  1111. package/dist/relations-CK9CYUyr.mjs.map +0 -1
  1112. package/dist/request-cache-DzLYKm_x.mjs +0 -104
  1113. package/dist/request-cache-DzLYKm_x.mjs.map +0 -1
  1114. package/dist/request-meta-sZXt3sRo.mjs +0 -141
  1115. package/dist/request-meta-sZXt3sRo.mjs.map +0 -1
  1116. package/dist/resolve-2WbQsCvT.mjs +0 -199
  1117. package/dist/resolve-2WbQsCvT.mjs.map +0 -1
  1118. package/dist/route-wire--1hLuACz.mjs +0 -197
  1119. package/dist/route-wire--1hLuACz.mjs.map +0 -1
  1120. package/dist/routes-CUsM40Cc.mjs +0 -272
  1121. package/dist/routes-CUsM40Cc.mjs.map +0 -1
  1122. package/dist/runner-1y4J9fJB.mjs +0 -5742
  1123. package/dist/runner-1y4J9fJB.mjs.map +0 -1
  1124. package/dist/runner-D5_LzKXI.d.mts +0 -68
  1125. package/dist/runner-D5_LzKXI.d.mts.map +0 -1
  1126. package/dist/schema-BABiRdsH.mjs +0 -13
  1127. package/dist/schema-BABiRdsH.mjs.map +0 -1
  1128. package/dist/schema-Du3MzCG0.mjs +0 -446
  1129. package/dist/schema-Du3MzCG0.mjs.map +0 -1
  1130. package/dist/scopes-Dbk-ElhT.mjs +0 -34
  1131. package/dist/scopes-Dbk-ElhT.mjs.map +0 -1
  1132. package/dist/search-Bt1PL1jf.mjs +0 -448
  1133. package/dist/search-Bt1PL1jf.mjs.map +0 -1
  1134. package/dist/sections-Ddptx_o9.mjs +0 -346
  1135. package/dist/sections-Ddptx_o9.mjs.map +0 -1
  1136. package/dist/seo-CZT2oLtT.mjs +0 -114
  1137. package/dist/seo-CZT2oLtT.mjs.map +0 -1
  1138. package/dist/seo-D5w3-Azy.mjs +0 -133
  1139. package/dist/seo-D5w3-Azy.mjs.map +0 -1
  1140. package/dist/service-DuykXPyW.mjs +0 -150
  1141. package/dist/service-DuykXPyW.mjs.map +0 -1
  1142. package/dist/session-user-BhaVp8w0.mjs +0 -51
  1143. package/dist/session-user-BhaVp8w0.mjs.map +0 -1
  1144. package/dist/settings-2xNYr90o.mjs +0 -51
  1145. package/dist/settings-2xNYr90o.mjs.map +0 -1
  1146. package/dist/settings-CgjRWGW9.mjs +0 -439
  1147. package/dist/settings-CgjRWGW9.mjs.map +0 -1
  1148. package/dist/settings-DYidIB26.mjs +0 -61
  1149. package/dist/settings-DYidIB26.mjs.map +0 -1
  1150. package/dist/setup-complete-bOogcHWG.mjs +0 -26
  1151. package/dist/setup-complete-bOogcHWG.mjs.map +0 -1
  1152. package/dist/setup-nonce-0EGuKM4s.mjs +0 -25
  1153. package/dist/setup-nonce-0EGuKM4s.mjs.map +0 -1
  1154. package/dist/site-settings-DOgRUoFX.mjs +0 -50
  1155. package/dist/site-settings-DOgRUoFX.mjs.map +0 -1
  1156. package/dist/site-url-BU_bbxwj.mjs +0 -16
  1157. package/dist/site-url-BU_bbxwj.mjs.map +0 -1
  1158. package/dist/snapshot-CugwUqKQ.mjs +0 -237
  1159. package/dist/snapshot-CugwUqKQ.mjs.map +0 -1
  1160. package/dist/ssrf-CJUnJymJ.mjs +0 -406
  1161. package/dist/ssrf-CJUnJymJ.mjs.map +0 -1
  1162. package/dist/stage-DgrBz_du.mjs +0 -662
  1163. package/dist/stage-DgrBz_du.mjs.map +0 -1
  1164. package/dist/state-DDiPySSG.mjs +0 -153
  1165. package/dist/state-DDiPySSG.mjs.map +0 -1
  1166. package/dist/status-DZKIG4a9.mjs +0 -30
  1167. package/dist/status-DZKIG4a9.mjs.map +0 -1
  1168. package/dist/storage-query-Bdv7A62k.d.mts +0 -1576
  1169. package/dist/storage-query-Bdv7A62k.d.mts.map +0 -1
  1170. package/dist/tar-_1AgTYFu.mjs +0 -449
  1171. package/dist/tar-_1AgTYFu.mjs.map +0 -1
  1172. package/dist/target-_7pn2Gbg.mjs +0 -27
  1173. package/dist/target-_7pn2Gbg.mjs.map +0 -1
  1174. package/dist/taxonomies-C1IwNe8Q.mjs +0 -697
  1175. package/dist/taxonomies-C1IwNe8Q.mjs.map +0 -1
  1176. package/dist/taxonomies-C_XMoRcX.mjs +0 -939
  1177. package/dist/taxonomies-C_XMoRcX.mjs.map +0 -1
  1178. package/dist/taxonomy-C3Fu1YeH.mjs +0 -525
  1179. package/dist/taxonomy-C3Fu1YeH.mjs.map +0 -1
  1180. package/dist/tokens-u78jETkX.mjs +0 -171
  1181. package/dist/tokens-u78jETkX.mjs.map +0 -1
  1182. package/dist/transaction-BcJO4Tmc.mjs +0 -29
  1183. package/dist/transaction-BcJO4Tmc.mjs.map +0 -1
  1184. package/dist/transfer-BhUCrgDc.mjs +0 -8675
  1185. package/dist/transfer-BhUCrgDc.mjs.map +0 -1
  1186. package/dist/transfer-DIGvR9Af.mjs +0 -166
  1187. package/dist/transfer-DIGvR9Af.mjs.map +0 -1
  1188. package/dist/transfer-download-Pml7RMio.mjs +0 -33
  1189. package/dist/transfer-download-Pml7RMio.mjs.map +0 -1
  1190. package/dist/transformations-9gfpwY65.mjs +0 -196
  1191. package/dist/transformations-9gfpwY65.mjs.map +0 -1
  1192. package/dist/transport-BIfH7_hx.d.mts +0 -42
  1193. package/dist/transport-BIfH7_hx.d.mts.map +0 -1
  1194. package/dist/transport-DKWIq53q.mjs +0 -136
  1195. package/dist/transport-DKWIq53q.mjs.map +0 -1
  1196. package/dist/trusted-proxy-tKiVtyTD.mjs +0 -51
  1197. package/dist/trusted-proxy-tKiVtyTD.mjs.map +0 -1
  1198. package/dist/turnstile-DpsoyOfg.mjs +0 -53
  1199. package/dist/turnstile-DpsoyOfg.mjs.map +0 -1
  1200. package/dist/types-B4sUC2p1.d.mts +0 -198
  1201. package/dist/types-B4sUC2p1.d.mts.map +0 -1
  1202. package/dist/types-B7Lmsh1E.d.mts +0 -887
  1203. package/dist/types-B7Lmsh1E.d.mts.map +0 -1
  1204. package/dist/types-BZakh7Ym.mjs +0 -22
  1205. package/dist/types-BZakh7Ym.mjs.map +0 -1
  1206. package/dist/types-B_CppEmv.d.mts +0 -264
  1207. package/dist/types-B_CppEmv.d.mts.map +0 -1
  1208. package/dist/types-BcrBrE6-.mjs +0 -159
  1209. package/dist/types-BcrBrE6-.mjs.map +0 -1
  1210. package/dist/types-BkUg2yHx.mjs +0 -92
  1211. package/dist/types-BkUg2yHx.mjs.map +0 -1
  1212. package/dist/types-CAZgq9fO.d.mts +0 -124
  1213. package/dist/types-CAZgq9fO.d.mts.map +0 -1
  1214. package/dist/types-Cd-O03VG.d.mts +0 -363
  1215. package/dist/types-Cd-O03VG.d.mts.map +0 -1
  1216. package/dist/types-Cr-Kg-3D.d.mts +0 -1641
  1217. package/dist/types-Cr-Kg-3D.d.mts.map +0 -1
  1218. package/dist/types-D2fvWd1i.d.mts +0 -359
  1219. package/dist/types-D2fvWd1i.d.mts.map +0 -1
  1220. package/dist/types-D7HUsguf.mjs +0 -77
  1221. package/dist/types-D7HUsguf.mjs.map +0 -1
  1222. package/dist/types-DA1Te3Oy.d.mts +0 -198
  1223. package/dist/types-DA1Te3Oy.d.mts.map +0 -1
  1224. package/dist/types-DhV6Q5bP.mjs +0 -18
  1225. package/dist/types-DhV6Q5bP.mjs.map +0 -1
  1226. package/dist/types-DnnVSl6Y.d.mts +0 -85
  1227. package/dist/types-DnnVSl6Y.d.mts.map +0 -1
  1228. package/dist/types-VT4-BugW.mjs +0 -16
  1229. package/dist/types-VT4-BugW.mjs.map +0 -1
  1230. package/dist/upload-attempts-B68ZGNu9.mjs +0 -32
  1231. package/dist/upload-attempts-B68ZGNu9.mjs.map +0 -1
  1232. package/dist/url-pattern-CCeZMGOh.mjs +0 -33
  1233. package/dist/url-pattern-CCeZMGOh.mjs.map +0 -1
  1234. package/dist/user-DDSL-sGw.mjs +0 -171
  1235. package/dist/user-DDSL-sGw.mjs.map +0 -1
  1236. package/dist/utils-DdhmO9w9.mjs +0 -439
  1237. package/dist/utils-DdhmO9w9.mjs.map +0 -1
  1238. package/dist/validate-CHosPEhs.mjs +0 -453
  1239. package/dist/validate-CHosPEhs.mjs.map +0 -1
  1240. package/dist/validate-CM79QXYE.d.mts +0 -432
  1241. package/dist/validate-CM79QXYE.d.mts.map +0 -1
  1242. package/dist/validation-BFecQczG.mjs +0 -218
  1243. package/dist/validation-BFecQczG.mjs.map +0 -1
  1244. package/dist/version-BRZXVifl.mjs +0 -9
  1245. package/dist/version-BRZXVifl.mjs.map +0 -1
  1246. package/dist/version-DUQDHgrf.mjs +0 -7
  1247. package/dist/version-DUQDHgrf.mjs.map +0 -1
  1248. package/dist/widgets-WdV72brA.mjs +0 -126
  1249. package/dist/widgets-WdV72brA.mjs.map +0 -1
  1250. package/dist/wxr-taxonomies-BHTdqkmZ.d.mts +0 -34
  1251. package/dist/wxr-taxonomies-BHTdqkmZ.d.mts.map +0 -1
  1252. package/dist/wxr-taxonomies-DP6ESgMN.mjs +0 -372
  1253. package/dist/wxr-taxonomies-DP6ESgMN.mjs.map +0 -1
  1254. package/dist/zod-generator-D6uE4WiS.mjs +0 -389
  1255. package/dist/zod-generator-D6uE4WiS.mjs.map +0 -1
  1256. package/src/astro/routes/api/relations/[id]/translations.ts +0 -33
  1257. /package/dist/{api-tokens-CE1ECIg0.mjs → api-tokens-FaG1zPsj.mjs} +0 -0
  1258. /package/dist/{ssrf-DpBH7aOt.mjs → ssrf-DZOt8Qof.mjs} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundle-Db1iNMv_.mjs","names":["capabilitiesToDeclaredAccess","declaredAccessToCapabilities"],"sources":["../src/cli/commands/bundle-utils.ts","../src/cli/commands/bundle.ts"],"sourcesContent":["/**\n * Bundle utility functions\n *\n * Shared logic extracted from the bundle command so it can be tested\n * without the CLI harness and tsdown dependency.\n */\n\nimport { createWriteStream } from \"node:fs\";\nimport { readdir, stat, access } from \"node:fs/promises\";\nimport { resolve, join } from \"node:path\";\nimport { pipeline } from \"node:stream/promises\";\nimport { pathToFileURL } from \"node:url\";\n\nimport { extractManifestRoute, isJsonPostRouteContract } from \"@emdash-cms/plugin-types\";\nimport { imageSize } from \"image-size\";\nimport { packTar } from \"modern-tar/fs\";\nimport { z } from \"zod\";\n\nimport { capabilitiesToDeclaredAccess, declaredAccessToCapabilities } from \"../../plugins/types.js\";\nimport type {\n\tPluginManifest,\n\tResolvedPlugin,\n\tHookName,\n\tManifestHookEntry,\n\tManifestMcpTool,\n\tManifestRouteEntry,\n} from \"../../plugins/types.js\";\n\n// ── Constants ────────────────────────────────────────────────────────────────\n\n// Bundle size caps per RFC 0001 §\"Bundle size limits\". These are decompressed\n// sizes; the gzipped tarball is typically a fraction of MAX_BUNDLE_SIZE.\nexport const MAX_BUNDLE_SIZE = 256 * 1024;\nexport const MAX_FILE_SIZE = 128 * 1024;\nexport const MAX_FILE_COUNT = 20;\n\nexport const MAX_SCREENSHOTS = 5;\nexport const MAX_SCREENSHOT_WIDTH = 1920;\nexport const MAX_SCREENSHOT_HEIGHT = 1080;\nexport const ICON_SIZE = 256;\nconst MCP_TOOL_NAME_PATTERN = /^[a-zA-Z0-9_-]+$/;\n\n// ── Regex patterns (module-scope to avoid re-compilation) ────────────────────\n\n/**\n * Matches Node.js built-in imports in bundled output:\n * - require(\"node:xxx\") / require(\"xxx\")\n * - import(\"node:xxx\") / import(\"xxx\")\n * - import X from \"node:xxx\" / import { X } from \"node:xxx\"\n * - import * as X from \"node:xxx\"\n * - export { X } from \"node:xxx\"\n * Captures the base module name (e.g. \"fs\" from \"node:fs/promises\").\n */\nconst NODE_BUILTIN_IMPORT_RE =\n\t/(?:import|export|require)\\s*(?:\\(|[^(]*?\\bfrom\\s+)[\"'](?:node:)?([a-z_]+)(?:\\/[^\"']*)?\\s*[\"']\\)?/g;\nconst LEADING_DOT_SLASH_RE = /^\\.\\//;\nconst DIST_PREFIX_RE = /^dist\\//;\nconst MJS_EXT_RE = /\\.m?js$/;\nconst TS_TO_TSX_RE = /\\.ts$/;\n\n/** Node.js built-in modules that shouldn't appear in sandbox code */\nconst NODE_BUILTINS = new Set([\n\t\"assert\",\n\t\"buffer\",\n\t\"child_process\",\n\t\"cluster\",\n\t\"crypto\",\n\t\"dgram\",\n\t\"dns\",\n\t\"domain\",\n\t\"events\",\n\t\"fs\",\n\t\"http\",\n\t\"http2\",\n\t\"https\",\n\t\"inspector\",\n\t\"module\",\n\t\"net\",\n\t\"os\",\n\t\"path\",\n\t\"perf_hooks\",\n\t\"process\",\n\t\"punycode\",\n\t\"querystring\",\n\t\"readline\",\n\t\"repl\",\n\t\"stream\",\n\t\"string_decoder\",\n\t\"sys\",\n\t\"timers\",\n\t\"tls\",\n\t\"trace_events\",\n\t\"tty\",\n\t\"url\",\n\t\"util\",\n\t\"v8\",\n\t\"vm\",\n\t\"wasi\",\n\t\"worker_threads\",\n\t\"zlib\",\n]);\n\n// ── File helpers ─────────────────────────────────────────────────────────────\n\nexport async function fileExists(path: string): Promise<boolean> {\n\ttry {\n\t\tawait access(path);\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n}\n\n/** Convert an absolute build artifact path into a portable ESM import specifier. */\nexport function toFileImportSpecifier(path: string): string {\n\treturn pathToFileURL(path).href;\n}\n\n// ── Image dimension readers ──────────────────────────────────────────────────\n\n/**\n * Read image dimensions from a buffer.\n * Returns [width, height] or null if the format is unrecognized.\n */\nexport function readImageDimensions(buf: Uint8Array): [number, number] | null {\n\ttry {\n\t\tconst result = imageSize(buf);\n\t\tif (result.width != null && result.height != null) {\n\t\t\treturn [result.width, result.height];\n\t\t}\n\t\treturn null;\n\t} catch {\n\t\treturn null;\n\t}\n}\n\n// ── Manifest extraction ──────────────────────────────────────────────────────\n\n/**\n * Extract manifest metadata from a ResolvedPlugin.\n * Strips functions (hooks, route handlers) and keeps only serializable metadata.\n */\nexport function extractManifest(plugin: ResolvedPlugin): PluginManifest {\n\tif ((plugin.admin.pages?.length ?? 0) > 0 || (plugin.admin.widgets?.length ?? 0) > 0) {\n\t\tconst adminRoute = plugin.routes.admin;\n\t\tif (adminRoute && (adminRoute.public === true || !isJsonPostRouteContract(adminRoute))) {\n\t\t\tthrow new Error(\"Block Kit admin route must accept POST JSON requests and return JSON\");\n\t\t}\n\t}\n\tconst declaredAccess = capabilitiesToDeclaredAccess(plugin.capabilities, plugin.allowedHosts);\n\tconst enforcedAccess = declaredAccessToCapabilities(declaredAccess);\n\t// Build hook entries preserving exclusive/priority/timeout metadata.\n\t// Plain HookName strings are emitted for hooks with default settings;\n\t// structured ManifestHookEntry objects are emitted when metadata differs.\n\tconst hooks: Array<ManifestHookEntry | HookName> = [];\n\tfor (const [name, resolved] of Object.entries(plugin.hooks)) {\n\t\tif (!resolved) continue;\n\t\tconst hasMetadata =\n\t\t\tresolved.exclusive || resolved.priority !== 100 || resolved.timeout !== 5000;\n\t\tif (hasMetadata) {\n\t\t\tconst entry: ManifestHookEntry = { name };\n\t\t\tif (resolved.exclusive) entry.exclusive = true;\n\t\t\tif (resolved.priority !== 100) entry.priority = resolved.priority;\n\t\t\tif (resolved.timeout !== 5000) entry.timeout = resolved.timeout;\n\t\t\thooks.push(entry);\n\t\t} else {\n\t\t\thooks.push(name as HookName);\n\t\t}\n\t}\n\n\tconst routes: Array<ManifestRouteEntry | string> = Object.entries(plugin.routes).map(\n\t\t([name, route]) => extractManifestRoute(name, route),\n\t);\n\tconst tools: ManifestMcpTool[] = Object.entries(plugin.mcp?.tools ?? {}).map(([name, tool]) => {\n\t\tif (!MCP_TOOL_NAME_PATTERN.test(name)) throw new Error(`Invalid MCP tool name \"${name}\"`);\n\t\tconst route = plugin.routes[tool.route];\n\t\tif (!route?.permission || route.public || route.response === \"raw\") {\n\t\t\tthrow new Error(`MCP tool \"${name}\" must reference a private route with a permission`);\n\t\t}\n\t\tif (!isJsonPostRouteContract(route)) {\n\t\t\tthrow new Error(`MCP tool \"${name}\" must reference a POST-compatible JSON route`);\n\t\t}\n\t\treturn {\n\t\t\tname,\n\t\t\tdescription: tool.description,\n\t\t\troute: tool.route,\n\t\t\tpermission: route.permission,\n\t\t\tdestructive: tool.destructive ?? false,\n\t\t\tinputSchema: z.toJSONSchema(tool.input, { target: \"draft-7\" }),\n\t\t\t...(tool.output\n\t\t\t\t? {\n\t\t\t\t\t\toutputSchema: z.toJSONSchema(tool.output, { target: \"draft-7\" }),\n\t\t\t\t\t}\n\t\t\t\t: {}),\n\t\t};\n\t});\n\n\treturn {\n\t\tid: plugin.id,\n\t\tversion: plugin.version,\n\t\tdeclaredAccess,\n\t\tcapabilities: enforcedAccess.capabilities,\n\t\tallowedHosts: plugin.allowedHosts,\n\t\tstorage: plugin.storage,\n\t\thooks,\n\t\troutes,\n\t\t...(tools.length > 0 ? { mcp: { tools } } : {}),\n\t\tadmin: {\n\t\t\t// Omit entry (it's a module specifier for the host, not relevant in bundles)\n\t\t\tsettingsSchema: plugin.admin.settingsSchema,\n\t\t\tpages: plugin.admin.pages,\n\t\t\twidgets: plugin.admin.widgets,\n\t\t\teditorPanels: plugin.admin.editorPanels,\n\t\t\teditorActions: plugin.admin.editorActions,\n\t\t},\n\t};\n}\n\n// ── Node.js built-in detection ───────────────────────────────────────────────\n\n/**\n * Scan bundled code for Node.js built-in imports.\n * Matches require(\"node:xxx\"), require(\"xxx\"), import(\"node:xxx\") — the patterns\n * that appear in bundled ESM/CJS output (not source-level named imports).\n * Returns deduplicated array of built-in module names found.\n */\nexport function findNodeBuiltinImports(code: string): string[] {\n\tconst found: string[] = [];\n\tNODE_BUILTIN_IMPORT_RE.lastIndex = 0;\n\tlet match;\n\twhile ((match = NODE_BUILTIN_IMPORT_RE.exec(code)) !== null) {\n\t\tconst mod = match[1];\n\t\tif (NODE_BUILTINS.has(mod)) {\n\t\t\tfound.push(mod);\n\t\t}\n\t}\n\treturn [...new Set(found)];\n}\n\n// ── Path resolution ──────────────────────────────────────────────────────────\n\n/**\n * Find a build output file by base name, checking common extensions.\n * tsdown may output .mjs, .js, or .cjs depending on format and config.\n */\nexport async function findBuildOutput(dir: string, baseName: string): Promise<string | undefined> {\n\tfor (const ext of [\".mjs\", \".js\", \".cjs\"]) {\n\t\tconst candidate = join(dir, `${baseName}${ext}`);\n\t\tif (await fileExists(candidate)) return candidate;\n\t}\n\treturn undefined;\n}\n\n/**\n * Resolve a dist/built path back to its source .ts/.tsx equivalent.\n * E.g., \"./dist/index.mjs\" → \"src/index.ts\"\n */\nexport async function resolveSourceEntry(\n\tpluginDir: string,\n\tdistPath: string,\n): Promise<string | undefined> {\n\tconst cleaned = distPath.replace(LEADING_DOT_SLASH_RE, \"\");\n\n\t// Prefer source over dist — dist/foo.mjs → src/foo.ts\n\tconst srcPath = cleaned.replace(DIST_PREFIX_RE, \"src/\").replace(MJS_EXT_RE, \".ts\");\n\tconst srcFull = resolve(pluginDir, srcPath);\n\tif (await fileExists(srcFull)) return srcFull;\n\n\t// Try .tsx\n\tconst tsxPath = srcPath.replace(TS_TO_TSX_RE, \".tsx\");\n\tconst tsxFull = resolve(pluginDir, tsxPath);\n\tif (await fileExists(tsxFull)) return tsxFull;\n\n\t// Fall back to direct path (might be source already, or pre-compiled plugin)\n\tconst direct = resolve(pluginDir, cleaned);\n\tif (await fileExists(direct)) return direct;\n\n\treturn undefined;\n}\n\n// ── Export validation ───────────────────────────────────────────────────────\n\nconst TS_SOURCE_EXPORT_RE = /\\.(?:ts|tsx|mts|cts|jsx)$/;\n\n/**\n * Find package.json exports that point to source files instead of built output.\n * Returns an array of `{ exportPath, resolvedPath }` for each offending export.\n */\nexport function findSourceExports(\n\texports: Record<string, unknown>,\n): Array<{ exportPath: string; resolvedPath: string }> {\n\tconst issues: Array<{ exportPath: string; resolvedPath: string }> = [];\n\tfor (const [exportPath, exportValue] of Object.entries(exports)) {\n\t\tconst resolved =\n\t\t\ttypeof exportValue === \"string\"\n\t\t\t\t? exportValue\n\t\t\t\t: exportValue && typeof exportValue === \"object\" && \"import\" in exportValue\n\t\t\t\t\t? (exportValue as { import: string }).import\n\t\t\t\t\t: null;\n\t\tif (resolved && TS_SOURCE_EXPORT_RE.test(resolved)) {\n\t\t\tissues.push({ exportPath, resolvedPath: resolved });\n\t\t}\n\t}\n\treturn issues;\n}\n\n// ── Directory helpers ────────────────────────────────────────────────────────\n\n/**\n * One file in a bundle: a tarball-relative path and its byte length.\n * Produced by `collectBundleEntries` (from a staging dir) or by the publish\n * flow (from tarball entries); consumed by `validateBundleSize`.\n */\nexport interface BundleFileEntry {\n\tname: string;\n\tbytes: number;\n}\n\n/**\n * Recursively walk a staging directory and return a flat list of all files\n * with sizes. Names are relative to `dir` so they match what would appear\n * as the tarball entry name.\n */\nexport async function collectBundleEntries(dir: string): Promise<BundleFileEntry[]> {\n\tconst entries: BundleFileEntry[] = [];\n\tawait walkBundle(dir, \"\", entries);\n\treturn entries;\n}\n\nasync function walkBundle(dir: string, prefix: string, into: BundleFileEntry[]): Promise<void> {\n\tconst items = await readdir(dir, { withFileTypes: true });\n\tfor (const item of items) {\n\t\tconst fullPath = join(dir, item.name);\n\t\tconst relPath = prefix ? `${prefix}/${item.name}` : item.name;\n\t\tif (item.isFile()) {\n\t\t\tconst s = await stat(fullPath);\n\t\t\tinto.push({ name: relPath, bytes: s.size });\n\t\t} else if (item.isDirectory()) {\n\t\t\tawait walkBundle(fullPath, relPath, into);\n\t\t}\n\t}\n}\n\n/**\n * Sum the byte sizes of all entries.\n */\nexport function totalBundleBytes(entries: readonly BundleFileEntry[]): number {\n\tlet total = 0;\n\tfor (const e of entries) total += e.bytes;\n\treturn total;\n}\n\n/**\n * Check a bundle against the three size caps from RFC 0001:\n * - total decompressed ≤ MAX_BUNDLE_SIZE\n * - per-file decompressed ≤ MAX_FILE_SIZE\n * - file count ≤ MAX_FILE_COUNT\n *\n * Returns a list of violation messages (empty if the bundle is within all\n * caps). Messages are deterministic per input — the total/count violations\n * come first, then oversized files in alphabetical order — so the same\n * bundle always produces the same error text.\n */\nexport function validateBundleSize(entries: readonly BundleFileEntry[]): string[] {\n\tconst violations: string[] = [];\n\tconst total = totalBundleBytes(entries);\n\tif (total > MAX_BUNDLE_SIZE) {\n\t\tviolations.push(\n\t\t\t`Bundle size ${formatBytes(total)} exceeds maximum of ${formatBytes(MAX_BUNDLE_SIZE)}.`,\n\t\t);\n\t}\n\tif (entries.length > MAX_FILE_COUNT) {\n\t\tviolations.push(\n\t\t\t`Bundle contains ${entries.length} files, exceeds maximum of ${MAX_FILE_COUNT}.`,\n\t\t);\n\t}\n\tconst oversized = entries\n\t\t.filter((e) => e.bytes > MAX_FILE_SIZE)\n\t\t.toSorted((a, b) => a.name.localeCompare(b.name));\n\tfor (const e of oversized) {\n\t\tviolations.push(\n\t\t\t`File ${e.name} is ${formatBytes(e.bytes)}, exceeds per-file maximum of ${formatBytes(MAX_FILE_SIZE)}.`,\n\t\t);\n\t}\n\treturn violations;\n}\n\n/**\n * Render a byte count as a human-friendly string (e.g. \"256.0 KB\").\n */\nexport function formatBytes(n: number): string {\n\tif (n < 1024) return `${n} B`;\n\tif (n < 1024 * 1024) return `${(n / 1024).toFixed(1)} KB`;\n\treturn `${(n / 1024 / 1024).toFixed(2)} MB`;\n}\n\n// ── Tarball creation ─────────────────────────────────────────────────────────\n\n/**\n * Create a gzipped tarball from a directory.\n */\nexport async function createTarball(sourceDir: string, outputPath: string): Promise<void> {\n\tconst { createGzip } = await import(\"node:zlib\");\n\tconst tarStream = packTar(sourceDir);\n\tconst gzip = createGzip({ level: 9 });\n\tconst out = createWriteStream(outputPath);\n\tawait pipeline(tarStream, gzip, out);\n}\n","/**\n * emdash plugin bundle\n *\n * Produces a publishable plugin tarball from a plugin source directory.\n *\n * Steps:\n * 1. Resolve plugin entrypoint (finds definePlugin() export)\n * 2. Bundle backend code with tsdown → backend.js (single ES module, tree-shaken)\n * 3. Bundle admin code if present → admin.js\n * 4. Extract manifest from definePlugin() → manifest.json\n * 5. Collect assets (README.md, icon.png, screenshots/)\n * 6. Validate bundle (manifest schema, size limits, no Node.js builtins)\n * 7. Create tarball ({id}-{version}.tar.gz)\n */\n\nimport { createHash } from \"node:crypto\";\nimport { readFile, stat, mkdir, writeFile, rm, copyFile, symlink, readdir } from \"node:fs/promises\";\nimport { resolve, join, extname, basename } from \"node:path\";\n\nimport { extractRouteOptions } from \"@emdash-cms/plugin-types\";\nimport { defineCommand } from \"citty\";\nimport consola from \"consola\";\n\nimport { CAPABILITY_RENAMES, isDeprecatedCapability } from \"../../plugins/types.js\";\nimport type { ResolvedPlugin } from \"../../plugins/types.js\";\nimport {\n\tcollectBundleEntries,\n\tcreateTarball,\n\textractManifest,\n\tfileExists,\n\tfindBuildOutput,\n\tfindNodeBuiltinImports,\n\tfindSourceExports,\n\tformatBytes,\n\tICON_SIZE,\n\tMAX_SCREENSHOTS,\n\tMAX_SCREENSHOT_WIDTH,\n\tMAX_SCREENSHOT_HEIGHT,\n\treadImageDimensions,\n\tresolveSourceEntry,\n\ttoFileImportSpecifier,\n\ttotalBundleBytes,\n\tvalidateBundleSize,\n} from \"./bundle-utils.js\";\n\nconst TS_EXT_RE = /\\.(tsx?|[mc]?js)$/;\nconst SLASH_RE = /\\//g;\nconst LEADING_AT_RE = /^@/;\nconst emdash_SCOPE_RE = /^@emdash-cms\\//;\n\nexport const bundleCommand = defineCommand({\n\tmeta: {\n\t\tname: \"bundle\",\n\t\tdescription: \"Bundle a plugin for marketplace distribution\",\n\t},\n\targs: {\n\t\tdir: {\n\t\t\ttype: \"string\",\n\t\t\tdescription: \"Plugin directory (default: current directory)\",\n\t\t\tdefault: process.cwd(),\n\t\t},\n\t\toutDir: {\n\t\t\ttype: \"string\",\n\t\t\talias: \"o\",\n\t\t\tdescription: \"Output directory for the tarball (default: ./dist)\",\n\t\t\tdefault: \"dist\",\n\t\t},\n\t\tvalidateOnly: {\n\t\t\ttype: \"boolean\",\n\t\t\tdescription: \"Run validation only, skip tarball creation\",\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tasync run({ args }) {\n\t\tconst pluginDir = resolve(args.dir);\n\t\tconst outDir = resolve(pluginDir, args.outDir);\n\t\tconst validateOnly = args.validateOnly;\n\n\t\tconsola.start(validateOnly ? \"Validating plugin...\" : \"Bundling plugin...\");\n\n\t\t// ── Step 1: Read package.json and resolve entrypoints ──\n\n\t\tconst pkgPath = join(pluginDir, \"package.json\");\n\t\tif (!(await fileExists(pkgPath))) {\n\t\t\tconsola.error(\"No package.json found in\", pluginDir);\n\t\t\tprocess.exit(1);\n\t\t}\n\n\t\tconst pkg = JSON.parse(await readFile(pkgPath, \"utf-8\")) as {\n\t\t\tname?: string;\n\t\t\tmain?: string;\n\t\t\texports?: Record<string, unknown>;\n\t\t};\n\n\t\t// Find the sandbox entrypoint — look for ./sandbox export first, then main\n\t\tlet backendEntry: string | undefined;\n\t\tlet adminEntry: string | undefined;\n\n\t\tif (pkg.exports) {\n\t\t\t// Check for explicit sandbox export\n\t\t\tconst sandboxExport = pkg.exports[\"./sandbox\"];\n\t\t\tif (typeof sandboxExport === \"string\") {\n\t\t\t\tbackendEntry = await resolveSourceEntry(pluginDir, sandboxExport);\n\t\t\t} else if (sandboxExport && typeof sandboxExport === \"object\" && \"import\" in sandboxExport) {\n\t\t\t\tbackendEntry = await resolveSourceEntry(\n\t\t\t\t\tpluginDir,\n\t\t\t\t\t(sandboxExport as { import: string }).import,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Check for admin export\n\t\t\tconst adminExport = pkg.exports[\"./admin\"];\n\t\t\tif (typeof adminExport === \"string\") {\n\t\t\t\tadminEntry = await resolveSourceEntry(pluginDir, adminExport);\n\t\t\t} else if (adminExport && typeof adminExport === \"object\" && \"import\" in adminExport) {\n\t\t\t\tadminEntry = await resolveSourceEntry(\n\t\t\t\t\tpluginDir,\n\t\t\t\t\t(adminExport as { import: string }).import,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\t// If no sandbox export, look for src/sandbox-entry.ts\n\t\tif (!backendEntry) {\n\t\t\tconst defaultSandbox = join(pluginDir, \"src/sandbox-entry.ts\");\n\t\t\tif (await fileExists(defaultSandbox)) {\n\t\t\t\tbackendEntry = defaultSandbox;\n\t\t\t}\n\t\t}\n\n\t\t// Find the main entry for manifest extraction\n\t\tlet mainEntry: string | undefined;\n\t\tif (pkg.exports?.[\".\"] !== undefined) {\n\t\t\tconst mainExport = pkg.exports[\".\"];\n\t\t\tif (typeof mainExport === \"string\") {\n\t\t\t\tmainEntry = await resolveSourceEntry(pluginDir, mainExport);\n\t\t\t} else if (mainExport && typeof mainExport === \"object\" && \"import\" in mainExport) {\n\t\t\t\tmainEntry = await resolveSourceEntry(pluginDir, (mainExport as { import: string }).import);\n\t\t\t}\n\t\t}\n\t\tif (!mainEntry && pkg.main) {\n\t\t\tmainEntry = await resolveSourceEntry(pluginDir, pkg.main);\n\t\t}\n\t\tif (!mainEntry) {\n\t\t\tconst defaultMain = join(pluginDir, \"src/index.ts\");\n\t\t\tif (await fileExists(defaultMain)) {\n\t\t\t\tmainEntry = defaultMain;\n\t\t\t}\n\t\t}\n\n\t\tif (!mainEntry) {\n\t\t\tconsola.error(\n\t\t\t\t\"Cannot find plugin entrypoint. Expected src/index.ts or main/exports in package.json\",\n\t\t\t);\n\t\t\tprocess.exit(1);\n\t\t}\n\n\t\tconsola.info(`Main entry: ${mainEntry}`);\n\t\tif (backendEntry) consola.info(`Backend entry: ${backendEntry}`);\n\t\tif (adminEntry) consola.info(`Admin entry: ${adminEntry}`);\n\n\t\t// ── Step 2: Extract manifest by importing the plugin ──\n\n\t\tconsola.start(\"Extracting plugin manifest...\");\n\n\t\t// Build the main entry first so we can import it\n\t\tconst { build } = await import(\"tsdown\");\n\t\tconst tmpDir = join(pluginDir, \".emdash-bundle-tmp\");\n\n\t\ttry {\n\t\t\t// Clean up any stale temp directory from a previous failed run\n\t\t\tawait rm(tmpDir, { recursive: true, force: true });\n\t\t\tawait mkdir(tmpDir, { recursive: true });\n\n\t\t\t// Build main entry to extract manifest.\n\t\t\t// Externalize emdash and sibling packages — they'll resolve\n\t\t\t// via the symlinked node_modules below.\n\t\t\tconst mainOutDir = join(tmpDir, \"main\");\n\t\t\tawait build({\n\t\t\t\tconfig: false,\n\t\t\t\tentry: [mainEntry],\n\t\t\t\tformat: \"esm\",\n\t\t\t\toutDir: mainOutDir,\n\t\t\t\tdts: false,\n\t\t\t\tplatform: \"node\",\n\t\t\t\texternal: [\"emdash\", emdash_SCOPE_RE],\n\t\t\t});\n\n\t\t\t// Symlink plugin's node_modules so the built module can resolve\n\t\t\t// external dependencies (emdash, @emdash-cms/*, etc.)\n\t\t\tconst pluginNodeModules = join(pluginDir, \"node_modules\");\n\t\t\tconst tmpNodeModules = join(mainOutDir, \"node_modules\");\n\t\t\tif (await fileExists(pluginNodeModules)) {\n\t\t\t\tawait symlink(pluginNodeModules, tmpNodeModules, \"junction\");\n\t\t\t}\n\n\t\t\t// Import the built module to get the resolved plugin\n\t\t\tconst mainBaseName = basename(mainEntry).replace(TS_EXT_RE, \"\");\n\t\t\tconst mainOutputPath = await findBuildOutput(mainOutDir, mainBaseName);\n\n\t\t\tif (!mainOutputPath) {\n\t\t\t\tconsola.error(\"Failed to build main entry — no output found in\", mainOutDir);\n\t\t\t\tprocess.exit(1);\n\t\t\t}\n\n\t\t\t// Dynamic import of the built plugin\n\t\t\tconst pluginModule = (await import(toFileImportSpecifier(mainOutputPath))) as Record<\n\t\t\t\tstring,\n\t\t\t\tunknown\n\t\t\t>;\n\n\t\t\t// Extract manifest from the imported module.\n\t\t\t// Supports three patterns:\n\t\t\t// 1. Native: createPlugin() export -> ResolvedPlugin\n\t\t\t// 2. Native: default export that is/returns a ResolvedPlugin (has id+version)\n\t\t\t// 3. Standard: descriptor factory function (returns { id, version, ... })\n\t\t\tlet resolvedPlugin: ResolvedPlugin | undefined;\n\n\t\t\tif (typeof pluginModule.createPlugin === \"function\") {\n\t\t\t\tresolvedPlugin = pluginModule.createPlugin() as ResolvedPlugin;\n\t\t\t} else if (typeof pluginModule.default === \"function\") {\n\t\t\t\tresolvedPlugin = pluginModule.default() as ResolvedPlugin;\n\t\t\t} else if (typeof pluginModule.default === \"object\" && pluginModule.default !== null) {\n\t\t\t\tconst defaultExport = pluginModule.default as Record<string, unknown>;\n\t\t\t\tif (\"id\" in defaultExport && \"version\" in defaultExport) {\n\t\t\t\t\tresolvedPlugin = defaultExport as unknown as ResolvedPlugin;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Standard format: no createPlugin, no default with id/version.\n\t\t\t// Look for a descriptor factory -- any named export function that\n\t\t\t// returns an object with { id, version }.\n\t\t\tif (!resolvedPlugin) {\n\t\t\t\tfor (const [key, value] of Object.entries(pluginModule)) {\n\t\t\t\t\tif (key === \"default\" || typeof value !== \"function\") continue;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst result = (value as () => unknown)() as Record<string, unknown> | null;\n\t\t\t\t\t\tif (result && typeof result === \"object\" && \"id\" in result && \"version\" in result) {\n\t\t\t\t\t\t\tresolvedPlugin = {\n\t\t\t\t\t\t\t\tid: result.id,\n\t\t\t\t\t\t\t\tversion: result.version,\n\t\t\t\t\t\t\t\tcapabilities: result.capabilities ?? [],\n\t\t\t\t\t\t\t\tallowedHosts: result.allowedHosts ?? [],\n\t\t\t\t\t\t\t\tstorage: result.storage ?? {},\n\t\t\t\t\t\t\t\thooks: {},\n\t\t\t\t\t\t\t\troutes: {},\n\t\t\t\t\t\t\t\tadmin: {\n\t\t\t\t\t\t\t\t\tpages: result.adminPages,\n\t\t\t\t\t\t\t\t\twidgets: result.adminWidgets,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t} as ResolvedPlugin;\n\n\t\t\t\t\t\t\t// If there's a sandbox entry, build and import it\n\t\t\t\t\t\t\t// to get hook/route names for the manifest.\n\t\t\t\t\t\t\tif (backendEntry) {\n\t\t\t\t\t\t\t\tconst backendProbeDir = join(tmpDir, \"backend-probe\");\n\t\t\t\t\t\t\t\tconst probeShimDir = join(tmpDir, \"probe-shims\");\n\t\t\t\t\t\t\t\tawait mkdir(probeShimDir, { recursive: true });\n\t\t\t\t\t\t\t\tawait writeFile(\n\t\t\t\t\t\t\t\t\tjoin(probeShimDir, \"emdash.mjs\"),\n\t\t\t\t\t\t\t\t\t\"export const definePlugin = (d) => d;\\n\",\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tawait build({\n\t\t\t\t\t\t\t\t\tconfig: false,\n\t\t\t\t\t\t\t\t\tentry: [backendEntry],\n\t\t\t\t\t\t\t\t\tformat: \"esm\",\n\t\t\t\t\t\t\t\t\toutDir: backendProbeDir,\n\t\t\t\t\t\t\t\t\tdts: false,\n\t\t\t\t\t\t\t\t\tplatform: \"neutral\",\n\t\t\t\t\t\t\t\t\texternal: [],\n\t\t\t\t\t\t\t\t\talias: { emdash: join(probeShimDir, \"emdash.mjs\") },\n\t\t\t\t\t\t\t\t\ttreeshake: true,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tconst backendBaseName = basename(backendEntry).replace(TS_EXT_RE, \"\");\n\t\t\t\t\t\t\t\tconst backendProbePath = await findBuildOutput(backendProbeDir, backendBaseName);\n\t\t\t\t\t\t\t\tif (backendProbePath) {\n\t\t\t\t\t\t\t\t\tconst backendModule = (await import(\n\t\t\t\t\t\t\t\t\t\ttoFileImportSpecifier(backendProbePath)\n\t\t\t\t\t\t\t\t\t)) as Record<string, unknown>;\n\t\t\t\t\t\t\t\t\tconst standardDef = (backendModule.default ?? {}) as Record<string, unknown>;\n\t\t\t\t\t\t\t\t\tconst hooks = standardDef.hooks as Record<string, unknown> | undefined;\n\t\t\t\t\t\t\t\t\tconst routes = standardDef.routes as Record<string, unknown> | undefined;\n\t\t\t\t\t\t\t\t\tif (hooks) {\n\t\t\t\t\t\t\t\t\t\tfor (const hookName of Object.keys(hooks)) {\n\t\t\t\t\t\t\t\t\t\t\tconst hookEntry = hooks[hookName];\n\t\t\t\t\t\t\t\t\t\t\tconst isConfig =\n\t\t\t\t\t\t\t\t\t\t\t\ttypeof hookEntry === \"object\" &&\n\t\t\t\t\t\t\t\t\t\t\t\thookEntry !== null &&\n\t\t\t\t\t\t\t\t\t\t\t\t\"handler\" in hookEntry;\n\t\t\t\t\t\t\t\t\t\t\tconst config = isConfig ? (hookEntry as Record<string, unknown>) : {};\n\t\t\t\t\t\t\t\t\t\t\t(resolvedPlugin.hooks as Record<string, unknown>)[hookName] = {\n\t\t\t\t\t\t\t\t\t\t\t\thandler: isConfig\n\t\t\t\t\t\t\t\t\t\t\t\t\t? (hookEntry as Record<string, unknown>).handler\n\t\t\t\t\t\t\t\t\t\t\t\t\t: hookEntry,\n\t\t\t\t\t\t\t\t\t\t\t\tpriority: (config.priority as number) ?? 100,\n\t\t\t\t\t\t\t\t\t\t\t\ttimeout: (config.timeout as number) ?? 5000,\n\t\t\t\t\t\t\t\t\t\t\t\tdependencies: (config.dependencies as string[]) ?? [],\n\t\t\t\t\t\t\t\t\t\t\t\terrorPolicy: (config.errorPolicy as string) ?? \"abort\",\n\t\t\t\t\t\t\t\t\t\t\t\texclusive: (config.exclusive as boolean) ?? false,\n\t\t\t\t\t\t\t\t\t\t\t\tpluginId: result.id,\n\t\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif (routes) {\n\t\t\t\t\t\t\t\t\t\tfor (const [name, route] of Object.entries(routes)) {\n\t\t\t\t\t\t\t\t\t\t\tconst routeObj =\n\t\t\t\t\t\t\t\t\t\t\t\ttypeof route === \"object\" && route !== null\n\t\t\t\t\t\t\t\t\t\t\t\t\t? (route as Record<string, unknown>)\n\t\t\t\t\t\t\t\t\t\t\t\t\t: {};\n\t\t\t\t\t\t\t\t\t\t\t(resolvedPlugin.routes as Record<string, unknown>)[name] = {\n\t\t\t\t\t\t\t\t\t\t\t\thandler: typeof route === \"function\" ? route : routeObj.handler,\n\t\t\t\t\t\t\t\t\t\t\t\t...extractRouteOptions(route),\n\t\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tif (resolvedPlugin) throw error;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!resolvedPlugin?.id || !resolvedPlugin?.version) {\n\t\t\t\tconsola.error(\n\t\t\t\t\t\"Could not extract plugin definition. Expected one of:\\n\" +\n\t\t\t\t\t\t\" - createPlugin() export (native format)\\n\" +\n\t\t\t\t\t\t\" - Descriptor factory function returning { id, version, ... } (standard format)\",\n\t\t\t\t);\n\t\t\t\tprocess.exit(1);\n\t\t\t}\n\n\t\t\tconst manifest = extractManifest(resolvedPlugin);\n\n\t\t\t// Validate format consistency: bundled plugins are for the marketplace\n\t\t\t// (sandboxed), so they must be standard format without trusted-only features.\n\t\t\tif (resolvedPlugin.admin?.entry) {\n\t\t\t\tconsola.error(\n\t\t\t\t\t`Plugin declares adminEntry — React admin components require native/trusted mode. ` +\n\t\t\t\t\t\t`Use Block Kit for sandboxed admin pages, or remove adminEntry.`,\n\t\t\t\t);\n\t\t\t\tprocess.exit(1);\n\t\t\t}\n\t\t\tif (\n\t\t\t\tresolvedPlugin.admin?.portableTextBlocks &&\n\t\t\t\tresolvedPlugin.admin.portableTextBlocks.length > 0\n\t\t\t) {\n\t\t\t\tconsola.error(\n\t\t\t\t\t`Plugin declares portableTextBlocks — these require native/trusted mode ` +\n\t\t\t\t\t\t`and cannot be bundled for the marketplace.`,\n\t\t\t\t);\n\t\t\t\tprocess.exit(1);\n\t\t\t}\n\n\t\t\tconsola.success(`Plugin: ${manifest.id}@${manifest.version}`);\n\t\t\tconsola.info(\n\t\t\t\t` Capabilities: ${manifest.capabilities.length > 0 ? manifest.capabilities.join(\", \") : \"(none)\"}`,\n\t\t\t);\n\t\t\tconsola.info(\n\t\t\t\t` Hooks: ${manifest.hooks.length > 0 ? manifest.hooks.map((h) => (typeof h === \"string\" ? h : h.name)).join(\", \") : \"(none)\"}`,\n\t\t\t);\n\t\t\tconsola.info(\n\t\t\t\t` Routes: ${manifest.routes.length > 0 ? manifest.routes.map((r) => (typeof r === \"string\" ? r : r.name)).join(\", \") : \"(none)\"}`,\n\t\t\t);\n\n\t\t\t// ── Step 3: Bundle backend.js ──\n\n\t\t\tconst bundleDir = join(tmpDir, \"bundle\");\n\t\t\tawait mkdir(bundleDir, { recursive: true });\n\n\t\t\tif (backendEntry) {\n\t\t\t\tconsola.start(\"Bundling backend...\");\n\n\t\t\t\t// Create a shim for emdash so the sandbox entry doesn't pull in the\n\t\t\t\t// entire core package. definePlugin is an identity function for standard\n\t\t\t\t// format, and PluginContext is a type-only import that disappears.\n\t\t\t\tconst shimDir = join(tmpDir, \"shims\");\n\t\t\t\tawait mkdir(shimDir, { recursive: true });\n\t\t\t\tawait writeFile(join(shimDir, \"emdash.mjs\"), \"export const definePlugin = (d) => d;\\n\");\n\n\t\t\t\tawait build({\n\t\t\t\t\tconfig: false,\n\t\t\t\t\tentry: [backendEntry],\n\t\t\t\t\tformat: \"esm\",\n\t\t\t\t\toutDir: join(tmpDir, \"backend\"),\n\t\t\t\t\tdts: false,\n\t\t\t\t\tplatform: \"neutral\",\n\t\t\t\t\t// Bundle everything for a self-contained sandbox file,\n\t\t\t\t\t// but alias emdash to our shim so we don't pull in the core.\n\t\t\t\t\texternal: [],\n\t\t\t\t\talias: { emdash: join(shimDir, \"emdash.mjs\") },\n\t\t\t\t\tminify: true,\n\t\t\t\t\ttreeshake: true,\n\t\t\t\t});\n\n\t\t\t\tconst backendBaseName = basename(backendEntry).replace(TS_EXT_RE, \"\");\n\t\t\t\tconst backendOutputPath = await findBuildOutput(join(tmpDir, \"backend\"), backendBaseName);\n\n\t\t\t\tif (backendOutputPath) {\n\t\t\t\t\tawait copyFile(backendOutputPath, join(bundleDir, \"backend.js\"));\n\t\t\t\t\tconsola.success(\"Built backend.js\");\n\t\t\t\t} else {\n\t\t\t\t\tconsola.error(\"Backend build produced no output\");\n\t\t\t\t\tprocess.exit(1);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconsola.warn(\"No sandbox entry found — bundle will have no backend.js\");\n\t\t\t\tconsola.warn(' Add a \"sandbox-entry.ts\" in src/ or a \"./sandbox\" export in package.json');\n\t\t\t}\n\n\t\t\t// ── Step 4: Bundle admin.js ──\n\n\t\t\tif (adminEntry) {\n\t\t\t\tconsola.start(\"Bundling admin...\");\n\t\t\t\tawait build({\n\t\t\t\t\tconfig: false,\n\t\t\t\t\tentry: [adminEntry],\n\t\t\t\t\tformat: \"esm\",\n\t\t\t\t\toutDir: join(tmpDir, \"admin\"),\n\t\t\t\t\tdts: false,\n\t\t\t\t\tplatform: \"neutral\",\n\t\t\t\t\texternal: [],\n\t\t\t\t\tminify: true,\n\t\t\t\t\ttreeshake: true,\n\t\t\t\t});\n\n\t\t\t\tconst adminBaseName = basename(adminEntry).replace(TS_EXT_RE, \"\");\n\t\t\t\tconst adminOutputPath = await findBuildOutput(join(tmpDir, \"admin\"), adminBaseName);\n\n\t\t\t\tif (adminOutputPath) {\n\t\t\t\t\tawait copyFile(adminOutputPath, join(bundleDir, \"admin.js\"));\n\t\t\t\t\tconsola.success(\"Built admin.js\");\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// ── Step 5: Write manifest.json ──\n\n\t\t\tawait writeFile(join(bundleDir, \"manifest.json\"), JSON.stringify(manifest, null, 2));\n\n\t\t\t// ── Step 6: Collect assets ──\n\n\t\t\tconsola.start(\"Collecting assets...\");\n\n\t\t\t// README.md\n\t\t\tconst readmePath = join(pluginDir, \"README.md\");\n\t\t\tif (await fileExists(readmePath)) {\n\t\t\t\tawait copyFile(readmePath, join(bundleDir, \"README.md\"));\n\t\t\t\tconsola.success(\"Included README.md\");\n\t\t\t}\n\n\t\t\t// icon.png\n\t\t\tconst iconPath = join(pluginDir, \"icon.png\");\n\t\t\tif (await fileExists(iconPath)) {\n\t\t\t\tconst iconBuf = await readFile(iconPath);\n\t\t\t\tconst dims = readImageDimensions(iconBuf);\n\t\t\t\tif (!dims) {\n\t\t\t\t\tconsola.warn(\"icon.png is not a valid PNG — skipping\");\n\t\t\t\t} else if (dims[0] !== ICON_SIZE || dims[1] !== ICON_SIZE) {\n\t\t\t\t\tconsola.warn(\n\t\t\t\t\t\t`icon.png is ${dims[0]}x${dims[1]}, expected ${ICON_SIZE}x${ICON_SIZE} — including anyway`,\n\t\t\t\t\t);\n\t\t\t\t\tawait copyFile(iconPath, join(bundleDir, \"icon.png\"));\n\t\t\t\t} else {\n\t\t\t\t\tawait copyFile(iconPath, join(bundleDir, \"icon.png\"));\n\t\t\t\t\tconsola.success(\"Included icon.png\");\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// screenshots/\n\t\t\tconst screenshotsDir = join(pluginDir, \"screenshots\");\n\t\t\tif (await fileExists(screenshotsDir)) {\n\t\t\t\tconst screenshotFiles = (await readdir(screenshotsDir))\n\t\t\t\t\t.filter((f) => {\n\t\t\t\t\t\tconst ext = extname(f).toLowerCase();\n\t\t\t\t\t\treturn ext === \".png\" || ext === \".jpg\" || ext === \".jpeg\";\n\t\t\t\t\t})\n\t\t\t\t\t.toSorted()\n\t\t\t\t\t.slice(0, MAX_SCREENSHOTS);\n\n\t\t\t\tif (screenshotFiles.length > 0) {\n\t\t\t\t\tawait mkdir(join(bundleDir, \"screenshots\"), { recursive: true });\n\n\t\t\t\t\tfor (const file of screenshotFiles) {\n\t\t\t\t\t\tconst filePath = join(screenshotsDir, file);\n\t\t\t\t\t\tconst buf = await readFile(filePath);\n\n\t\t\t\t\t\tconst dims = readImageDimensions(buf);\n\n\t\t\t\t\t\tif (!dims) {\n\t\t\t\t\t\t\tconsola.warn(`screenshots/${file} — cannot read dimensions, skipping`);\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (dims[0] > MAX_SCREENSHOT_WIDTH || dims[1] > MAX_SCREENSHOT_HEIGHT) {\n\t\t\t\t\t\t\tconsola.warn(\n\t\t\t\t\t\t\t\t`screenshots/${file} is ${dims[0]}x${dims[1]}, max ${MAX_SCREENSHOT_WIDTH}x${MAX_SCREENSHOT_HEIGHT} — including anyway`,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tawait copyFile(filePath, join(bundleDir, \"screenshots\", file));\n\t\t\t\t\t}\n\n\t\t\t\t\tconsola.success(`Included ${screenshotFiles.length} screenshot(s)`);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// ── Step 7: Validation ──\n\n\t\t\tconsola.start(\"Validating bundle...\");\n\t\t\tlet hasErrors = false;\n\n\t\t\t// Check that package.json exports point to built files, not source.\n\t\t\t// Plugins published to npm with source exports will break site builds\n\t\t\t// because the sandbox module generator embeds the resolved file as-is.\n\t\t\tif (pkg.exports) {\n\t\t\t\tfor (const issue of findSourceExports(pkg.exports)) {\n\t\t\t\t\tconsola.error(\n\t\t\t\t\t\t`Export \"${issue.exportPath}\" points to source (${issue.resolvedPath}). ` +\n\t\t\t\t\t\t\t`Package exports must point to built files (e.g. dist/*.mjs). ` +\n\t\t\t\t\t\t\t`Add a build step and update the exports map.`,\n\t\t\t\t\t);\n\t\t\t\t\thasErrors = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Check for Node.js builtins in backend.js\n\t\t\tconst backendPath = join(bundleDir, \"backend.js\");\n\t\t\tif (await fileExists(backendPath)) {\n\t\t\t\tconst backendCode = await readFile(backendPath, \"utf-8\");\n\t\t\t\tconst builtins = findNodeBuiltinImports(backendCode);\n\t\t\t\tif (builtins.length > 0) {\n\t\t\t\t\tconsola.error(`backend.js imports Node.js built-in modules: ${builtins.join(\", \")}`);\n\t\t\t\t\tconsola.error(\"Sandboxed plugins cannot use Node.js APIs\");\n\t\t\t\t\thasErrors = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Check capabilities warnings — use canonical names. Deprecated\n\t\t\t// names are accepted (and warned about separately below) so we\n\t\t\t// also check the legacy aliases here for the duration of the\n\t\t\t// deprecation window.\n\t\t\tconst declaresUnrestricted =\n\t\t\t\tmanifest.capabilities.includes(\"network:request:unrestricted\") ||\n\t\t\t\tmanifest.capabilities.includes(\"network:fetch:any\");\n\t\t\tconst declaresHostRestricted =\n\t\t\t\tmanifest.capabilities.includes(\"network:request\") ||\n\t\t\t\tmanifest.capabilities.includes(\"network:fetch\");\n\t\t\tif (declaresUnrestricted) {\n\t\t\t\tconsola.warn(\n\t\t\t\t\t\"Plugin declares unrestricted network access (network:request:unrestricted) — it can make requests to any host\",\n\t\t\t\t);\n\t\t\t} else if (declaresHostRestricted && manifest.allowedHosts.length === 0) {\n\t\t\t\tconsola.warn(\n\t\t\t\t\t\"Plugin declares network:request capability but no allowedHosts — all requests will be blocked\",\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Warn for each deprecated capability used. The warning points\n\t\t\t// to the new name so the fix is mechanical. We continue (not\n\t\t\t// error) here — the hard fail lives in `publish` so authors\n\t\t\t// can still build and test locally.\n\t\t\tconst deprecatedCaps = manifest.capabilities.filter(isDeprecatedCapability);\n\t\t\tif (deprecatedCaps.length > 0) {\n\t\t\t\tconsola.warn(\"Plugin uses deprecated capability names. Rename them before publishing:\");\n\t\t\t\tfor (const cap of deprecatedCaps) {\n\t\t\t\t\tconst replacement = CAPABILITY_RENAMES[cap];\n\t\t\t\t\tconsola.warn(` ${cap} → ${replacement}`);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Check for features that won't work in sandboxed mode\n\t\t\tif (\n\t\t\t\tresolvedPlugin.admin?.portableTextBlocks &&\n\t\t\t\tresolvedPlugin.admin.portableTextBlocks.length > 0\n\t\t\t) {\n\t\t\t\tconsola.warn(\n\t\t\t\t\t\"Plugin declares portableTextBlocks — these require trusted mode and will be ignored in sandboxed plugins\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (resolvedPlugin.admin?.entry) {\n\t\t\t\tconsola.warn(\n\t\t\t\t\t\"Plugin declares admin.entry — custom React components require trusted mode. Use Block Kit for sandboxed admin pages\",\n\t\t\t\t);\n\t\t\t}\n\t\t\t// Check for page:fragments hook — trusted-only, not allowed in sandbox\n\t\t\tif (resolvedPlugin.hooks[\"page:fragments\"]) {\n\t\t\t\tconsola.warn(\n\t\t\t\t\t\"Plugin declares page:fragments hook — this is trusted-only and will not work in sandboxed mode\",\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Check: if plugin declares admin pages or widgets, it must have an \"admin\" route\n\t\t\tconst hasAdminPages = (manifest.admin?.pages?.length ?? 0) > 0;\n\t\t\tconst hasAdminWidgets = (manifest.admin?.widgets?.length ?? 0) > 0;\n\t\t\tif (hasAdminPages || hasAdminWidgets) {\n\t\t\t\tconst routeNames = manifest.routes.map((r: string | { name: string }) =>\n\t\t\t\t\ttypeof r === \"string\" ? r : r.name,\n\t\t\t\t);\n\t\t\t\tif (!routeNames.includes(\"admin\")) {\n\t\t\t\t\tconsola.error(\n\t\t\t\t\t\t`Plugin declares ${hasAdminPages ? \"adminPages\" : \"\"}${hasAdminPages && hasAdminWidgets ? \" and \" : \"\"}${hasAdminWidgets ? \"adminWidgets\" : \"\"} ` +\n\t\t\t\t\t\t\t`but the sandbox entry has no \"admin\" route. ` +\n\t\t\t\t\t\t\t`Add an admin route handler to serve Block Kit pages.`,\n\t\t\t\t\t);\n\t\t\t\t\thasErrors = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Bundle size caps (RFC 0001 §\"Bundle size limits\").\n\t\t\tconst bundleEntries = await collectBundleEntries(bundleDir);\n\t\t\tconst sizeViolations = validateBundleSize(bundleEntries);\n\t\t\tif (sizeViolations.length > 0) {\n\t\t\t\tfor (const v of sizeViolations) consola.error(v);\n\t\t\t\thasErrors = true;\n\t\t\t} else {\n\t\t\t\tconsola.info(\n\t\t\t\t\t`Bundle size: ${formatBytes(totalBundleBytes(bundleEntries))} across ${bundleEntries.length} file${bundleEntries.length === 1 ? \"\" : \"s\"}`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (hasErrors) {\n\t\t\t\tconsola.error(\"Bundle validation failed\");\n\t\t\t\tprocess.exit(1);\n\t\t\t}\n\n\t\t\tconsola.success(\"Validation passed\");\n\n\t\t\tif (validateOnly) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// ── Step 8: Create tarball ──\n\n\t\t\tawait mkdir(outDir, { recursive: true });\n\t\t\tconst tarballName = `${manifest.id.replace(SLASH_RE, \"-\").replace(LEADING_AT_RE, \"\")}-${manifest.version}.tar.gz`;\n\t\t\tconst tarballPath = join(outDir, tarballName);\n\n\t\t\tconsola.start(\"Creating tarball...\");\n\t\t\tawait createTarball(bundleDir, tarballPath);\n\n\t\t\tconst tarballStat = await stat(tarballPath);\n\t\t\tconst tarballSizeKB = (tarballStat.size / 1024).toFixed(1);\n\n\t\t\t// Calculate checksum\n\t\t\tconst tarballBuf = await readFile(tarballPath);\n\t\t\tconst checksum = createHash(\"sha256\").update(tarballBuf).digest(\"hex\");\n\n\t\t\tconsola.success(`Created ${tarballName} (${tarballSizeKB}KB)`);\n\t\t\tconsola.info(` SHA-256: ${checksum}`);\n\t\t\tconsola.info(` Path: ${tarballPath}`);\n\t\t} finally {\n\t\t\tif (tmpDir.endsWith(\".emdash-bundle-tmp\")) {\n\t\t\t\tawait rm(tmpDir, { recursive: true, force: true });\n\t\t\t}\n\t\t}\n\t},\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAgCA,MAAa,kBAAkB,MAAM;AACrC,MAAa,gBAAgB,MAAM;AACnC,MAAa,iBAAiB;AAE9B,MAAa,kBAAkB;AAC/B,MAAa,uBAAuB;AACpC,MAAa,wBAAwB;AACrC,MAAa,YAAY;AACzB,MAAM,wBAAwB;;;;;;;;;;AAa9B,MAAM,yBACL;AACD,MAAM,uBAAuB;AAC7B,MAAM,iBAAiB;AACvB,MAAM,aAAa;AACnB,MAAM,eAAe;;AAGrB,MAAM,gBAAgB,IAAI,IAAI;CAC7B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,CAAC;AAIF,eAAsB,WAAW,MAAgC;AAChE,KAAI;AACH,QAAM,OAAO,KAAK;AAClB,SAAO;SACA;AACP,SAAO;;;;AAKT,SAAgB,sBAAsB,MAAsB;AAC3D,QAAO,cAAc,KAAK,CAAC;;;;;;AAS5B,SAAgB,oBAAoB,KAA0C;AAC7E,KAAI;EACH,MAAM,SAAS,UAAU,IAAI;AAC7B,MAAI,OAAO,SAAS,QAAQ,OAAO,UAAU,KAC5C,QAAO,CAAC,OAAO,OAAO,OAAO,OAAO;AAErC,SAAO;SACA;AACP,SAAO;;;;;;;AAUT,SAAgB,gBAAgB,QAAwC;AACvE,MAAK,OAAO,MAAM,OAAO,UAAU,KAAK,MAAM,OAAO,MAAM,SAAS,UAAU,KAAK,GAAG;EACrF,MAAM,aAAa,OAAO,OAAO;AACjC,MAAI,eAAe,WAAW,WAAW,QAAQ,CAAC,wBAAwB,WAAW,EACpF,OAAM,IAAI,MAAM,uEAAuE;;CAGzF,MAAM,iBAAiBA,+BAA6B,OAAO,cAAc,OAAO,aAAa;CAC7F,MAAM,iBAAiBC,+BAA6B,eAAe;CAInE,MAAM,QAA6C,EAAE;AACrD,MAAK,MAAM,CAAC,MAAM,aAAa,OAAO,QAAQ,OAAO,MAAM,EAAE;AAC5D,MAAI,CAAC,SAAU;AAGf,MADC,SAAS,aAAa,SAAS,aAAa,OAAO,SAAS,YAAY,KACxD;GAChB,MAAM,QAA2B,EAAE,MAAM;AACzC,OAAI,SAAS,UAAW,OAAM,YAAY;AAC1C,OAAI,SAAS,aAAa,IAAK,OAAM,WAAW,SAAS;AACzD,OAAI,SAAS,YAAY,IAAM,OAAM,UAAU,SAAS;AACxD,SAAM,KAAK,MAAM;QAEjB,OAAM,KAAK,KAAiB;;CAI9B,MAAM,SAA6C,OAAO,QAAQ,OAAO,OAAO,CAAC,KAC/E,CAAC,MAAM,WAAW,qBAAqB,MAAM,MAAM,CACpD;CACD,MAAM,QAA2B,OAAO,QAAQ,OAAO,KAAK,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,UAAU;AAC9F,MAAI,CAAC,sBAAsB,KAAK,KAAK,CAAE,OAAM,IAAI,MAAM,0BAA0B,KAAK,GAAG;EACzF,MAAM,QAAQ,OAAO,OAAO,KAAK;AACjC,MAAI,CAAC,OAAO,cAAc,MAAM,UAAU,MAAM,aAAa,MAC5D,OAAM,IAAI,MAAM,aAAa,KAAK,oDAAoD;AAEvF,MAAI,CAAC,wBAAwB,MAAM,CAClC,OAAM,IAAI,MAAM,aAAa,KAAK,+CAA+C;AAElF,SAAO;GACN;GACA,aAAa,KAAK;GAClB,OAAO,KAAK;GACZ,YAAY,MAAM;GAClB,aAAa,KAAK,eAAe;GACjC,aAAa,EAAE,aAAa,KAAK,OAAO,EAAE,QAAQ,WAAW,CAAC;GAC9D,GAAI,KAAK,SACN,EACA,cAAc,EAAE,aAAa,KAAK,QAAQ,EAAE,QAAQ,WAAW,CAAC,EAChE,GACA,EAAE;GACL;GACA;AAEF,QAAO;EACN,IAAI,OAAO;EACX,SAAS,OAAO;EAChB;EACA,cAAc,eAAe;EAC7B,cAAc,OAAO;EACrB,SAAS,OAAO;EAChB;EACA;EACA,GAAI,MAAM,SAAS,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE;EAC9C,OAAO;GAEN,gBAAgB,OAAO,MAAM;GAC7B,OAAO,OAAO,MAAM;GACpB,SAAS,OAAO,MAAM;GACtB,cAAc,OAAO,MAAM;GAC3B,eAAe,OAAO,MAAM;GAC5B;EACD;;;;;;;;AAWF,SAAgB,uBAAuB,MAAwB;CAC9D,MAAM,QAAkB,EAAE;AAC1B,wBAAuB,YAAY;CACnC,IAAI;AACJ,SAAQ,QAAQ,uBAAuB,KAAK,KAAK,MAAM,MAAM;EAC5D,MAAM,MAAM,MAAM;AAClB,MAAI,cAAc,IAAI,IAAI,CACzB,OAAM,KAAK,IAAI;;AAGjB,QAAO,CAAC,GAAG,IAAI,IAAI,MAAM,CAAC;;;;;;AAS3B,eAAsB,gBAAgB,KAAa,UAA+C;AACjG,MAAK,MAAM,OAAO;EAAC;EAAQ;EAAO;EAAO,EAAE;EAC1C,MAAM,YAAY,KAAK,KAAK,GAAG,WAAW,MAAM;AAChD,MAAI,MAAM,WAAW,UAAU,CAAE,QAAO;;;;;;;AAS1C,eAAsB,mBACrB,WACA,UAC8B;CAC9B,MAAM,UAAU,SAAS,QAAQ,sBAAsB,GAAG;CAG1D,MAAM,UAAU,QAAQ,QAAQ,gBAAgB,OAAO,CAAC,QAAQ,YAAY,MAAM;CAClF,MAAM,UAAU,QAAQ,WAAW,QAAQ;AAC3C,KAAI,MAAM,WAAW,QAAQ,CAAE,QAAO;CAItC,MAAM,UAAU,QAAQ,WADR,QAAQ,QAAQ,cAAc,OAAO,CACV;AAC3C,KAAI,MAAM,WAAW,QAAQ,CAAE,QAAO;CAGtC,MAAM,SAAS,QAAQ,WAAW,QAAQ;AAC1C,KAAI,MAAM,WAAW,OAAO,CAAE,QAAO;;AAOtC,MAAM,sBAAsB;;;;;AAM5B,SAAgB,kBACf,SACsD;CACtD,MAAM,SAA8D,EAAE;AACtE,MAAK,MAAM,CAAC,YAAY,gBAAgB,OAAO,QAAQ,QAAQ,EAAE;EAChE,MAAM,WACL,OAAO,gBAAgB,WACpB,cACA,eAAe,OAAO,gBAAgB,YAAY,YAAY,cAC5D,YAAmC,SACpC;AACL,MAAI,YAAY,oBAAoB,KAAK,SAAS,CACjD,QAAO,KAAK;GAAE;GAAY,cAAc;GAAU,CAAC;;AAGrD,QAAO;;;;;;;AAoBR,eAAsB,qBAAqB,KAAyC;CACnF,MAAM,UAA6B,EAAE;AACrC,OAAM,WAAW,KAAK,IAAI,QAAQ;AAClC,QAAO;;AAGR,eAAe,WAAW,KAAa,QAAgB,MAAwC;CAC9F,MAAM,QAAQ,MAAM,QAAQ,KAAK,EAAE,eAAe,MAAM,CAAC;AACzD,MAAK,MAAM,QAAQ,OAAO;EACzB,MAAM,WAAW,KAAK,KAAK,KAAK,KAAK;EACrC,MAAM,UAAU,SAAS,GAAG,OAAO,GAAG,KAAK,SAAS,KAAK;AACzD,MAAI,KAAK,QAAQ,EAAE;GAClB,MAAM,IAAI,MAAM,KAAK,SAAS;AAC9B,QAAK,KAAK;IAAE,MAAM;IAAS,OAAO,EAAE;IAAM,CAAC;aACjC,KAAK,aAAa,CAC5B,OAAM,WAAW,UAAU,SAAS,KAAK;;;;;;AAQ5C,SAAgB,iBAAiB,SAA6C;CAC7E,IAAI,QAAQ;AACZ,MAAK,MAAM,KAAK,QAAS,UAAS,EAAE;AACpC,QAAO;;;;;;;;;;;;;AAcR,SAAgB,mBAAmB,SAA+C;CACjF,MAAM,aAAuB,EAAE;CAC/B,MAAM,QAAQ,iBAAiB,QAAQ;AACvC,KAAI,QAAQ,gBACX,YAAW,KACV,eAAe,YAAY,MAAM,CAAC,sBAAsB,YAAY,gBAAgB,CAAC,GACrF;AAEF,KAAI,QAAQ,SAAS,eACpB,YAAW,KACV,mBAAmB,QAAQ,OAAO,6BAA6B,eAAe,GAC9E;CAEF,MAAM,YAAY,QAChB,QAAQ,MAAM,EAAE,QAAQ,cAAc,CACtC,UAAU,GAAG,MAAM,EAAE,KAAK,cAAc,EAAE,KAAK,CAAC;AAClD,MAAK,MAAM,KAAK,UACf,YAAW,KACV,QAAQ,EAAE,KAAK,MAAM,YAAY,EAAE,MAAM,CAAC,gCAAgC,YAAY,cAAc,CAAC,GACrG;AAEF,QAAO;;;;;AAMR,SAAgB,YAAY,GAAmB;AAC9C,KAAI,IAAI,KAAM,QAAO,GAAG,EAAE;AAC1B,KAAI,IAAI,OAAO,KAAM,QAAO,IAAI,IAAI,MAAM,QAAQ,EAAE,CAAC;AACrD,QAAO,IAAI,IAAI,OAAO,MAAM,QAAQ,EAAE,CAAC;;;;;AAQxC,eAAsB,cAAc,WAAmB,YAAmC;CACzF,MAAM,EAAE,eAAe,MAAM,OAAO;AAIpC,OAAM,SAHY,QAAQ,UAAU,EACvB,WAAW,EAAE,OAAO,GAAG,CAAC,EACzB,kBAAkB,WAAW,CACL;;;;;;;;;;;;;;;;;;;;ACzWrC,MAAM,YAAY;AAClB,MAAM,WAAW;AACjB,MAAM,gBAAgB;AACtB,MAAM,kBAAkB;AAExB,MAAa,gBAAgB,cAAc;CAC1C,MAAM;EACL,MAAM;EACN,aAAa;EACb;CACD,MAAM;EACL,KAAK;GACJ,MAAM;GACN,aAAa;GACb,SAAS,QAAQ,KAAK;GACtB;EACD,QAAQ;GACP,MAAM;GACN,OAAO;GACP,aAAa;GACb,SAAS;GACT;EACD,cAAc;GACb,MAAM;GACN,aAAa;GACb,SAAS;GACT;EACD;CACD,MAAM,IAAI,EAAE,QAAQ;EACnB,MAAM,YAAY,QAAQ,KAAK,IAAI;EACnC,MAAM,SAAS,QAAQ,WAAW,KAAK,OAAO;EAC9C,MAAM,eAAe,KAAK;AAE1B,UAAQ,MAAM,eAAe,yBAAyB,qBAAqB;EAI3E,MAAM,UAAU,KAAK,WAAW,eAAe;AAC/C,MAAI,CAAE,MAAM,WAAW,QAAQ,EAAG;AACjC,WAAQ,MAAM,4BAA4B,UAAU;AACpD,WAAQ,KAAK,EAAE;;EAGhB,MAAM,MAAM,KAAK,MAAM,MAAM,SAAS,SAAS,QAAQ,CAAC;EAOxD,IAAI;EACJ,IAAI;AAEJ,MAAI,IAAI,SAAS;GAEhB,MAAM,gBAAgB,IAAI,QAAQ;AAClC,OAAI,OAAO,kBAAkB,SAC5B,gBAAe,MAAM,mBAAmB,WAAW,cAAc;YACvD,iBAAiB,OAAO,kBAAkB,YAAY,YAAY,cAC5E,gBAAe,MAAM,mBACpB,WACC,cAAqC,OACtC;GAIF,MAAM,cAAc,IAAI,QAAQ;AAChC,OAAI,OAAO,gBAAgB,SAC1B,cAAa,MAAM,mBAAmB,WAAW,YAAY;YACnD,eAAe,OAAO,gBAAgB,YAAY,YAAY,YACxE,cAAa,MAAM,mBAClB,WACC,YAAmC,OACpC;;AAKH,MAAI,CAAC,cAAc;GAClB,MAAM,iBAAiB,KAAK,WAAW,uBAAuB;AAC9D,OAAI,MAAM,WAAW,eAAe,CACnC,gBAAe;;EAKjB,IAAI;AACJ,MAAI,IAAI,UAAU,SAAS,QAAW;GACrC,MAAM,aAAa,IAAI,QAAQ;AAC/B,OAAI,OAAO,eAAe,SACzB,aAAY,MAAM,mBAAmB,WAAW,WAAW;YACjD,cAAc,OAAO,eAAe,YAAY,YAAY,WACtE,aAAY,MAAM,mBAAmB,WAAY,WAAkC,OAAO;;AAG5F,MAAI,CAAC,aAAa,IAAI,KACrB,aAAY,MAAM,mBAAmB,WAAW,IAAI,KAAK;AAE1D,MAAI,CAAC,WAAW;GACf,MAAM,cAAc,KAAK,WAAW,eAAe;AACnD,OAAI,MAAM,WAAW,YAAY,CAChC,aAAY;;AAId,MAAI,CAAC,WAAW;AACf,WAAQ,MACP,uFACA;AACD,WAAQ,KAAK,EAAE;;AAGhB,UAAQ,KAAK,eAAe,YAAY;AACxC,MAAI,aAAc,SAAQ,KAAK,kBAAkB,eAAe;AAChE,MAAI,WAAY,SAAQ,KAAK,gBAAgB,aAAa;AAI1D,UAAQ,MAAM,gCAAgC;EAG9C,MAAM,EAAE,UAAU,MAAM,OAAO;EAC/B,MAAM,SAAS,KAAK,WAAW,qBAAqB;AAEpD,MAAI;AAEH,SAAM,GAAG,QAAQ;IAAE,WAAW;IAAM,OAAO;IAAM,CAAC;AAClD,SAAM,MAAM,QAAQ,EAAE,WAAW,MAAM,CAAC;GAKxC,MAAM,aAAa,KAAK,QAAQ,OAAO;AACvC,SAAM,MAAM;IACX,QAAQ;IACR,OAAO,CAAC,UAAU;IAClB,QAAQ;IACR,QAAQ;IACR,KAAK;IACL,UAAU;IACV,UAAU,CAAC,UAAU,gBAAgB;IACrC,CAAC;GAIF,MAAM,oBAAoB,KAAK,WAAW,eAAe;GACzD,MAAM,iBAAiB,KAAK,YAAY,eAAe;AACvD,OAAI,MAAM,WAAW,kBAAkB,CACtC,OAAM,QAAQ,mBAAmB,gBAAgB,WAAW;GAK7D,MAAM,iBAAiB,MAAM,gBAAgB,YADxB,SAAS,UAAU,CAAC,QAAQ,WAAW,GAAG,CACO;AAEtE,OAAI,CAAC,gBAAgB;AACpB,YAAQ,MAAM,mDAAmD,WAAW;AAC5E,YAAQ,KAAK,EAAE;;GAIhB,MAAM,eAAgB,MAAM,OAAO,sBAAsB,eAAe;GAUxE,IAAI;AAEJ,OAAI,OAAO,aAAa,iBAAiB,WACxC,kBAAiB,aAAa,cAAc;YAClC,OAAO,aAAa,YAAY,WAC1C,kBAAiB,aAAa,SAAS;YAC7B,OAAO,aAAa,YAAY,YAAY,aAAa,YAAY,MAAM;IACrF,MAAM,gBAAgB,aAAa;AACnC,QAAI,QAAQ,iBAAiB,aAAa,cACzC,kBAAiB;;AAOnB,OAAI,CAAC,eACJ,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,aAAa,EAAE;AACxD,QAAI,QAAQ,aAAa,OAAO,UAAU,WAAY;AACtD,QAAI;KACH,MAAM,SAAU,OAAyB;AACzC,SAAI,UAAU,OAAO,WAAW,YAAY,QAAQ,UAAU,aAAa,QAAQ;AAClF,uBAAiB;OAChB,IAAI,OAAO;OACX,SAAS,OAAO;OAChB,cAAc,OAAO,gBAAgB,EAAE;OACvC,cAAc,OAAO,gBAAgB,EAAE;OACvC,SAAS,OAAO,WAAW,EAAE;OAC7B,OAAO,EAAE;OACT,QAAQ,EAAE;OACV,OAAO;QACN,OAAO,OAAO;QACd,SAAS,OAAO;QAChB;OACD;AAID,UAAI,cAAc;OACjB,MAAM,kBAAkB,KAAK,QAAQ,gBAAgB;OACrD,MAAM,eAAe,KAAK,QAAQ,cAAc;AAChD,aAAM,MAAM,cAAc,EAAE,WAAW,MAAM,CAAC;AAC9C,aAAM,UACL,KAAK,cAAc,aAAa,EAChC,0CACA;AACD,aAAM,MAAM;QACX,QAAQ;QACR,OAAO,CAAC,aAAa;QACrB,QAAQ;QACR,QAAQ;QACR,KAAK;QACL,UAAU;QACV,UAAU,EAAE;QACZ,OAAO,EAAE,QAAQ,KAAK,cAAc,aAAa,EAAE;QACnD,WAAW;QACX,CAAC;OAEF,MAAM,mBAAmB,MAAM,gBAAgB,iBADvB,SAAS,aAAa,CAAC,QAAQ,WAAW,GAAG,CACW;AAChF,WAAI,kBAAkB;QAIrB,MAAM,eAHiB,MAAM,OAC5B,sBAAsB,iBAAiB,GAEL,WAAW,EAAE;QAChD,MAAM,QAAQ,YAAY;QAC1B,MAAM,SAAS,YAAY;AAC3B,YAAI,MACH,MAAK,MAAM,YAAY,OAAO,KAAK,MAAM,EAAE;SAC1C,MAAM,YAAY,MAAM;SACxB,MAAM,WACL,OAAO,cAAc,YACrB,cAAc,QACd,aAAa;SACd,MAAM,SAAS,WAAY,YAAwC,EAAE;AACrE,SAAC,eAAe,MAAkC,YAAY;UAC7D,SAAS,WACL,UAAsC,UACvC;UACH,UAAW,OAAO,YAAuB;UACzC,SAAU,OAAO,WAAsB;UACvC,cAAe,OAAO,gBAA6B,EAAE;UACrD,aAAc,OAAO,eAA0B;UAC/C,WAAY,OAAO,aAAyB;UAC5C,UAAU,OAAO;UACjB;;AAGH,YAAI,OACH,MAAK,MAAM,CAAC,MAAM,UAAU,OAAO,QAAQ,OAAO,EAAE;SACnD,MAAM,WACL,OAAO,UAAU,YAAY,UAAU,OACnC,QACD,EAAE;AACN,SAAC,eAAe,OAAmC,QAAQ;UAC1D,SAAS,OAAO,UAAU,aAAa,QAAQ,SAAS;UACxD,GAAG,oBAAoB,MAAM;UAC7B;;;;AAKL;;aAEO,OAAO;AACf,SAAI,eAAgB,OAAM;;;AAK7B,OAAI,CAAC,gBAAgB,MAAM,CAAC,gBAAgB,SAAS;AACpD,YAAQ,MACP,qLAGA;AACD,YAAQ,KAAK,EAAE;;GAGhB,MAAM,WAAW,gBAAgB,eAAe;AAIhD,OAAI,eAAe,OAAO,OAAO;AAChC,YAAQ,MACP,kJAEA;AACD,YAAQ,KAAK,EAAE;;AAEhB,OACC,eAAe,OAAO,sBACtB,eAAe,MAAM,mBAAmB,SAAS,GAChD;AACD,YAAQ,MACP,oHAEA;AACD,YAAQ,KAAK,EAAE;;AAGhB,WAAQ,QAAQ,WAAW,SAAS,GAAG,GAAG,SAAS,UAAU;AAC7D,WAAQ,KACP,mBAAmB,SAAS,aAAa,SAAS,IAAI,SAAS,aAAa,KAAK,KAAK,GAAG,WACzF;AACD,WAAQ,KACP,YAAY,SAAS,MAAM,SAAS,IAAI,SAAS,MAAM,KAAK,MAAO,OAAO,MAAM,WAAW,IAAI,EAAE,KAAM,CAAC,KAAK,KAAK,GAAG,WACrH;AACD,WAAQ,KACP,aAAa,SAAS,OAAO,SAAS,IAAI,SAAS,OAAO,KAAK,MAAO,OAAO,MAAM,WAAW,IAAI,EAAE,KAAM,CAAC,KAAK,KAAK,GAAG,WACxH;GAID,MAAM,YAAY,KAAK,QAAQ,SAAS;AACxC,SAAM,MAAM,WAAW,EAAE,WAAW,MAAM,CAAC;AAE3C,OAAI,cAAc;AACjB,YAAQ,MAAM,sBAAsB;IAKpC,MAAM,UAAU,KAAK,QAAQ,QAAQ;AACrC,UAAM,MAAM,SAAS,EAAE,WAAW,MAAM,CAAC;AACzC,UAAM,UAAU,KAAK,SAAS,aAAa,EAAE,0CAA0C;AAEvF,UAAM,MAAM;KACX,QAAQ;KACR,OAAO,CAAC,aAAa;KACrB,QAAQ;KACR,QAAQ,KAAK,QAAQ,UAAU;KAC/B,KAAK;KACL,UAAU;KAGV,UAAU,EAAE;KACZ,OAAO,EAAE,QAAQ,KAAK,SAAS,aAAa,EAAE;KAC9C,QAAQ;KACR,WAAW;KACX,CAAC;IAEF,MAAM,kBAAkB,SAAS,aAAa,CAAC,QAAQ,WAAW,GAAG;IACrE,MAAM,oBAAoB,MAAM,gBAAgB,KAAK,QAAQ,UAAU,EAAE,gBAAgB;AAEzF,QAAI,mBAAmB;AACtB,WAAM,SAAS,mBAAmB,KAAK,WAAW,aAAa,CAAC;AAChE,aAAQ,QAAQ,mBAAmB;WAC7B;AACN,aAAQ,MAAM,mCAAmC;AACjD,aAAQ,KAAK,EAAE;;UAEV;AACN,YAAQ,KAAK,0DAA0D;AACvE,YAAQ,KAAK,iFAA6E;;AAK3F,OAAI,YAAY;AACf,YAAQ,MAAM,oBAAoB;AAClC,UAAM,MAAM;KACX,QAAQ;KACR,OAAO,CAAC,WAAW;KACnB,QAAQ;KACR,QAAQ,KAAK,QAAQ,QAAQ;KAC7B,KAAK;KACL,UAAU;KACV,UAAU,EAAE;KACZ,QAAQ;KACR,WAAW;KACX,CAAC;IAEF,MAAM,gBAAgB,SAAS,WAAW,CAAC,QAAQ,WAAW,GAAG;IACjE,MAAM,kBAAkB,MAAM,gBAAgB,KAAK,QAAQ,QAAQ,EAAE,cAAc;AAEnF,QAAI,iBAAiB;AACpB,WAAM,SAAS,iBAAiB,KAAK,WAAW,WAAW,CAAC;AAC5D,aAAQ,QAAQ,iBAAiB;;;AAMnC,SAAM,UAAU,KAAK,WAAW,gBAAgB,EAAE,KAAK,UAAU,UAAU,MAAM,EAAE,CAAC;AAIpF,WAAQ,MAAM,uBAAuB;GAGrC,MAAM,aAAa,KAAK,WAAW,YAAY;AAC/C,OAAI,MAAM,WAAW,WAAW,EAAE;AACjC,UAAM,SAAS,YAAY,KAAK,WAAW,YAAY,CAAC;AACxD,YAAQ,QAAQ,qBAAqB;;GAItC,MAAM,WAAW,KAAK,WAAW,WAAW;AAC5C,OAAI,MAAM,WAAW,SAAS,EAAE;IAE/B,MAAM,OAAO,oBADG,MAAM,SAAS,SAAS,CACC;AACzC,QAAI,CAAC,KACJ,SAAQ,KAAK,yCAAyC;aAC5C,KAAK,OAAO,aAAa,KAAK,OAAO,WAAW;AAC1D,aAAQ,KACP,eAAe,KAAK,GAAG,GAAG,KAAK,GAAG,aAAa,UAAU,GAAG,UAAU,qBACtE;AACD,WAAM,SAAS,UAAU,KAAK,WAAW,WAAW,CAAC;WAC/C;AACN,WAAM,SAAS,UAAU,KAAK,WAAW,WAAW,CAAC;AACrD,aAAQ,QAAQ,oBAAoB;;;GAKtC,MAAM,iBAAiB,KAAK,WAAW,cAAc;AACrD,OAAI,MAAM,WAAW,eAAe,EAAE;IACrC,MAAM,mBAAmB,MAAM,QAAQ,eAAe,EACpD,QAAQ,MAAM;KACd,MAAM,MAAM,QAAQ,EAAE,CAAC,aAAa;AACpC,YAAO,QAAQ,UAAU,QAAQ,UAAU,QAAQ;MAClD,CACD,UAAU,CACV,MAAM,GAAG,gBAAgB;AAE3B,QAAI,gBAAgB,SAAS,GAAG;AAC/B,WAAM,MAAM,KAAK,WAAW,cAAc,EAAE,EAAE,WAAW,MAAM,CAAC;AAEhE,UAAK,MAAM,QAAQ,iBAAiB;MACnC,MAAM,WAAW,KAAK,gBAAgB,KAAK;MAG3C,MAAM,OAAO,oBAFD,MAAM,SAAS,SAAS,CAEC;AAErC,UAAI,CAAC,MAAM;AACV,eAAQ,KAAK,eAAe,KAAK,qCAAqC;AACtE;;AAGD,UAAI,KAAK,KAAK,wBAAwB,KAAK,KAAK,sBAC/C,SAAQ,KACP,eAAe,KAAK,MAAM,KAAK,GAAG,GAAG,KAAK,GAAG,QAAQ,qBAAqB,GAAG,sBAAsB,qBACnG;AAGF,YAAM,SAAS,UAAU,KAAK,WAAW,eAAe,KAAK,CAAC;;AAG/D,aAAQ,QAAQ,YAAY,gBAAgB,OAAO,gBAAgB;;;AAMrE,WAAQ,MAAM,uBAAuB;GACrC,IAAI,YAAY;AAKhB,OAAI,IAAI,QACP,MAAK,MAAM,SAAS,kBAAkB,IAAI,QAAQ,EAAE;AACnD,YAAQ,MACP,WAAW,MAAM,WAAW,sBAAsB,MAAM,aAAa,8GAGrE;AACD,gBAAY;;GAKd,MAAM,cAAc,KAAK,WAAW,aAAa;AACjD,OAAI,MAAM,WAAW,YAAY,EAAE;IAElC,MAAM,WAAW,uBADG,MAAM,SAAS,aAAa,QAAQ,CACJ;AACpD,QAAI,SAAS,SAAS,GAAG;AACxB,aAAQ,MAAM,gDAAgD,SAAS,KAAK,KAAK,GAAG;AACpF,aAAQ,MAAM,4CAA4C;AAC1D,iBAAY;;;GAQd,MAAM,uBACL,SAAS,aAAa,SAAS,+BAA+B,IAC9D,SAAS,aAAa,SAAS,oBAAoB;GACpD,MAAM,yBACL,SAAS,aAAa,SAAS,kBAAkB,IACjD,SAAS,aAAa,SAAS,gBAAgB;AAChD,OAAI,qBACH,SAAQ,KACP,gHACA;YACS,0BAA0B,SAAS,aAAa,WAAW,EACrE,SAAQ,KACP,gGACA;GAOF,MAAM,iBAAiB,SAAS,aAAa,OAAO,uBAAuB;AAC3E,OAAI,eAAe,SAAS,GAAG;AAC9B,YAAQ,KAAK,0EAA0E;AACvF,SAAK,MAAM,OAAO,gBAAgB;KACjC,MAAM,cAAc,mBAAmB;AACvC,aAAQ,KAAK,KAAK,IAAI,KAAK,cAAc;;;AAK3C,OACC,eAAe,OAAO,sBACtB,eAAe,MAAM,mBAAmB,SAAS,EAEjD,SAAQ,KACP,2GACA;AAEF,OAAI,eAAe,OAAO,MACzB,SAAQ,KACP,sHACA;AAGF,OAAI,eAAe,MAAM,kBACxB,SAAQ,KACP,iGACA;GAIF,MAAM,iBAAiB,SAAS,OAAO,OAAO,UAAU,KAAK;GAC7D,MAAM,mBAAmB,SAAS,OAAO,SAAS,UAAU,KAAK;AACjE,OAAI,iBAAiB,iBAIpB;QAAI,CAHe,SAAS,OAAO,KAAK,MACvC,OAAO,MAAM,WAAW,IAAI,EAAE,KAC9B,CACe,SAAS,QAAQ,EAAE;AAClC,aAAQ,MACP,mBAAmB,gBAAgB,eAAe,KAAK,iBAAiB,kBAAkB,UAAU,KAAK,kBAAkB,iBAAiB,GAAG,mGAG/I;AACD,iBAAY;;;GAKd,MAAM,gBAAgB,MAAM,qBAAqB,UAAU;GAC3D,MAAM,iBAAiB,mBAAmB,cAAc;AACxD,OAAI,eAAe,SAAS,GAAG;AAC9B,SAAK,MAAM,KAAK,eAAgB,SAAQ,MAAM,EAAE;AAChD,gBAAY;SAEZ,SAAQ,KACP,gBAAgB,YAAY,iBAAiB,cAAc,CAAC,CAAC,UAAU,cAAc,OAAO,OAAO,cAAc,WAAW,IAAI,KAAK,MACrI;AAGF,OAAI,WAAW;AACd,YAAQ,MAAM,2BAA2B;AACzC,YAAQ,KAAK,EAAE;;AAGhB,WAAQ,QAAQ,oBAAoB;AAEpC,OAAI,aACH;AAKD,SAAM,MAAM,QAAQ,EAAE,WAAW,MAAM,CAAC;GACxC,MAAM,cAAc,GAAG,SAAS,GAAG,QAAQ,UAAU,IAAI,CAAC,QAAQ,eAAe,GAAG,CAAC,GAAG,SAAS,QAAQ;GACzG,MAAM,cAAc,KAAK,QAAQ,YAAY;AAE7C,WAAQ,MAAM,sBAAsB;AACpC,SAAM,cAAc,WAAW,YAAY;GAG3C,MAAM,kBADc,MAAM,KAAK,YAAY,EACR,OAAO,MAAM,QAAQ,EAAE;GAG1D,MAAM,aAAa,MAAM,SAAS,YAAY;GAC9C,MAAM,WAAW,WAAW,SAAS,CAAC,OAAO,WAAW,CAAC,OAAO,MAAM;AAEtE,WAAQ,QAAQ,WAAW,YAAY,IAAI,cAAc,KAAK;AAC9D,WAAQ,KAAK,cAAc,WAAW;AACtC,WAAQ,KAAK,WAAW,cAAc;YAC7B;AACT,OAAI,OAAO,SAAS,qBAAqB,CACxC,OAAM,GAAG,QAAQ;IAAE,WAAW;IAAM,OAAO;IAAM,CAAC;;;CAIrD,CAAC"}