@tokenoftrust/storefront-runner 2.0.2 → 2.0.4

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 (254) hide show
  1. package/apps/storefront/.astro/content.d.ts +159 -0
  2. package/apps/storefront/.astro/integrations/_astrojs_cloudflare/cloudflare.d.ts +1 -0
  3. package/apps/storefront/.astro/types.d.ts +3 -0
  4. package/apps/storefront/node_modules/.bin/acorn +43 -0
  5. package/apps/storefront/node_modules/.bin/astro +43 -0
  6. package/apps/storefront/node_modules/.bin/astro-check +43 -0
  7. package/apps/storefront/node_modules/.bin/browserslist +43 -0
  8. package/apps/storefront/node_modules/.bin/cf-wrangler +43 -0
  9. package/apps/storefront/node_modules/.bin/depcruise +43 -0
  10. package/apps/storefront/node_modules/.bin/depcruise-baseline +43 -0
  11. package/apps/storefront/node_modules/.bin/depcruise-fmt +43 -0
  12. package/apps/storefront/node_modules/.bin/depcruise-wrap-stream-in-html +43 -0
  13. package/apps/storefront/node_modules/.bin/dependency-cruise +43 -0
  14. package/apps/storefront/node_modules/.bin/dependency-cruiser +43 -0
  15. package/apps/storefront/node_modules/.bin/drizzle-kit +43 -0
  16. package/apps/storefront/node_modules/.bin/esbuild +43 -0
  17. package/apps/storefront/node_modules/.bin/jiti +43 -0
  18. package/apps/storefront/node_modules/.bin/playwright +43 -0
  19. package/apps/storefront/node_modules/.bin/playwright-core +43 -0
  20. package/apps/storefront/node_modules/.bin/prettier +43 -0
  21. package/apps/storefront/node_modules/.bin/rollup +43 -0
  22. package/apps/storefront/node_modules/.bin/tsc +43 -0
  23. package/apps/storefront/node_modules/.bin/tsserver +43 -0
  24. package/apps/storefront/node_modules/.bin/tsx +43 -0
  25. package/apps/storefront/node_modules/.bin/vite +43 -0
  26. package/apps/storefront/node_modules/.bin/vitest +43 -0
  27. package/apps/storefront/node_modules/.bin/workerd +43 -0
  28. package/apps/storefront/node_modules/.bin/wrangler +43 -0
  29. package/apps/storefront/node_modules/.bin/wrangler2 +43 -0
  30. package/apps/storefront/node_modules/.bin/yaml +43 -0
  31. package/apps/storefront/node_modules/.vite/deps/@astrojs_preact_client__js.js +58 -0
  32. package/apps/storefront/node_modules/.vite/deps/@astrojs_preact_client__js.js.map +1 -0
  33. package/apps/storefront/node_modules/.vite/deps/@astrojs_preact_n_@preact_signals.js +741 -0
  34. package/apps/storefront/node_modules/.vite/deps/@astrojs_preact_n_@preact_signals.js.map +1 -0
  35. package/apps/storefront/node_modules/.vite/deps/@astrojs_preact_server__js.js +2549 -0
  36. package/apps/storefront/node_modules/.vite/deps/@astrojs_preact_server__js.js.map +1 -0
  37. package/apps/storefront/node_modules/.vite/deps/_metadata.json +150 -0
  38. package/apps/storefront/node_modules/.vite/deps/astro-BIHuWFxm.js +434 -0
  39. package/apps/storefront/node_modules/.vite/deps/astro-BIHuWFxm.js.map +1 -0
  40. package/apps/storefront/node_modules/.vite/deps/astro_n_aria-query.js +6390 -0
  41. package/apps/storefront/node_modules/.vite/deps/astro_n_aria-query.js.map +1 -0
  42. package/apps/storefront/node_modules/.vite/deps/astro_n_axobject-query.js +2705 -0
  43. package/apps/storefront/node_modules/.vite/deps/astro_n_axobject-query.js.map +1 -0
  44. package/apps/storefront/node_modules/.vite/deps/astro_n_html-escaper.js +65 -0
  45. package/apps/storefront/node_modules/.vite/deps/astro_n_html-escaper.js.map +1 -0
  46. package/apps/storefront/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js +455 -0
  47. package/apps/storefront/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js.map +1 -0
  48. package/apps/storefront/node_modules/.vite/deps/audit-DKDpcdEI.js +1535 -0
  49. package/apps/storefront/node_modules/.vite/deps/audit-DKDpcdEI.js.map +1 -0
  50. package/apps/storefront/node_modules/.vite/deps/highlight-B9UoX1wa.js +48 -0
  51. package/apps/storefront/node_modules/.vite/deps/highlight-B9UoX1wa.js.map +1 -0
  52. package/apps/storefront/node_modules/.vite/deps/icons-BWi2wI9n.js +42 -0
  53. package/apps/storefront/node_modules/.vite/deps/icons-BWi2wI9n.js.map +1 -0
  54. package/apps/storefront/node_modules/.vite/deps/package.json +3 -0
  55. package/apps/storefront/node_modules/.vite/deps/preact.js +310 -0
  56. package/apps/storefront/node_modules/.vite/deps/preact.js.map +1 -0
  57. package/apps/storefront/node_modules/.vite/deps/preact_compat.js +420 -0
  58. package/apps/storefront/node_modules/.vite/deps/preact_compat.js.map +1 -0
  59. package/apps/storefront/node_modules/.vite/deps/preact_compat_jsx-runtime.js +4 -0
  60. package/apps/storefront/node_modules/.vite/deps/preact_debug.js +236 -0
  61. package/apps/storefront/node_modules/.vite/deps/preact_debug.js.map +1 -0
  62. package/apps/storefront/node_modules/.vite/deps/preact_devtools.js +12 -0
  63. package/apps/storefront/node_modules/.vite/deps/preact_devtools.js.map +1 -0
  64. package/apps/storefront/node_modules/.vite/deps/preact_hooks.js +192 -0
  65. package/apps/storefront/node_modules/.vite/deps/preact_hooks.js.map +1 -0
  66. package/apps/storefront/node_modules/.vite/deps/preact_jsx-dev-runtime.js +3 -0
  67. package/apps/storefront/node_modules/.vite/deps/preact_jsx-runtime.js +92 -0
  68. package/apps/storefront/node_modules/.vite/deps/preact_jsx-runtime.js.map +1 -0
  69. package/apps/storefront/node_modules/.vite/deps/preact_test-utils.js +59 -0
  70. package/apps/storefront/node_modules/.vite/deps/preact_test-utils.js.map +1 -0
  71. package/apps/storefront/node_modules/.vite/deps/rolldown-runtime-BPOCksWG.js +24 -0
  72. package/apps/storefront/node_modules/.vite/deps/settings-BVDV0Roj.js +189 -0
  73. package/apps/storefront/node_modules/.vite/deps/settings-BVDV0Roj.js.map +1 -0
  74. package/apps/storefront/node_modules/.vite/deps/static-html-DveYqwMo.js +13 -0
  75. package/apps/storefront/node_modules/.vite/deps/static-html-DveYqwMo.js.map +1 -0
  76. package/apps/storefront/node_modules/.vite/deps/toolbar-B3VIHCXg.js +458 -0
  77. package/apps/storefront/node_modules/.vite/deps/toolbar-B3VIHCXg.js.map +1 -0
  78. package/apps/storefront/node_modules/.vite/deps/ui-library-BK6ricUd.js +1016 -0
  79. package/apps/storefront/node_modules/.vite/deps/ui-library-BK6ricUd.js.map +1 -0
  80. package/apps/storefront/node_modules/.vite/deps/window-BvxDenKN.js +32 -0
  81. package/apps/storefront/node_modules/.vite/deps/window-BvxDenKN.js.map +1 -0
  82. package/apps/storefront/node_modules/.vite/deps/xray-YFiRUU0Z.js +113 -0
  83. package/apps/storefront/node_modules/.vite/deps/xray-YFiRUU0Z.js.map +1 -0
  84. package/apps/storefront/node_modules/.vite/deps_ssr/_metadata.json +8 -0
  85. package/apps/storefront/node_modules/.vite/deps_ssr/package.json +3 -0
  86. package/apps/storefront/src/layouts/Layout.astro +1 -1
  87. package/apps/storefront/src/lib/apps/registryAccess.ts +45 -0
  88. package/apps/storefront/src/lib/auth/adminEntry.ts +4 -4
  89. package/apps/storefront/src/lib/shared/capability.ts +68 -0
  90. package/apps/storefront/src/lib/shared/developerInvites.ts +1250 -0
  91. package/apps/storefront/src/lib/shared/invitePreflight.ts +123 -0
  92. package/apps/storefront/src/lib/webhooks/deliveryEngine.ts +38 -4
  93. package/apps/storefront/src/lib/webhooks/emit.ts +1 -1
  94. package/apps/storefront/src/lib/webhooks/getDispatcher.ts +1 -1
  95. package/apps/storefront/src/pages/api/auth/magic-exchange.ts +1 -1
  96. package/apps/storefront/src/pages/index.astro +1 -1
  97. package/apps/storefront/src/pages/products/[handle].astro +1 -1
  98. package/package.json +1 -1
  99. package/packages/public-runtime/node_modules/.bin/tsc +43 -0
  100. package/packages/public-runtime/node_modules/.bin/tsserver +43 -0
  101. package/packages/public-runtime/node_modules/.bin/vitest +43 -0
  102. package/pnpm-workspace.yaml +3 -0
  103. package/scripts/lib/tenant-dirs.mjs +80 -0
  104. package/scripts/tenant/lint-embeds.mjs +180 -0
  105. package/scripts/tenant/materialize-tenant-content.mjs +533 -0
  106. package/scripts/tenant/validate.mjs +837 -0
  107. package/apps/storefront/scripts/build-v84-clean-clone-standalone.mjs +0 -68
  108. package/apps/storefront/scripts/deny-v84-clean-clone-standalone-capabilities.mjs +0 -111
  109. package/apps/storefront/scripts/deny-v84-dogfood-capabilities.mjs +0 -2
  110. package/apps/storefront/scripts/deny-v84-lifecycle-capabilities.mjs +0 -247
  111. package/apps/storefront/scripts/dogfood-v84-nonportable-routes.ts +0 -73
  112. package/apps/storefront/scripts/fixed-v84-native-install-producer.ts +0 -79
  113. package/apps/storefront/scripts/generated/v84-clean-clone-replay.bundle.mjs +0 -10982
  114. package/apps/storefront/scripts/import-v84-through-ws2.ts +0 -38
  115. package/apps/storefront/scripts/initialize-v84-lifecycle-tooling-dependency.ts +0 -2
  116. package/apps/storefront/scripts/initialize-v84-lifecycle-tooling.ts +0 -4
  117. package/apps/storefront/scripts/install-v84-native-through-ws1.ts +0 -185
  118. package/apps/storefront/scripts/prove-clone-isolation.ts +0 -506
  119. package/apps/storefront/scripts/replay-v84-clean-clone-pass.ts +0 -148
  120. package/apps/storefront/scripts/replay-v84-clean-clone-standalone.ts +0 -35
  121. package/apps/storefront/scripts/replay-v84-clean-clone.ts +0 -214
  122. package/apps/storefront/scripts/run-fixed-v84-native-install-producer.mjs +0 -18
  123. package/apps/storefront/scripts/run-v84-clone-isolation-proof.mjs +0 -18
  124. package/apps/storefront/scripts/run-v84-clone-lifecycle-proof.mjs +0 -18
  125. package/apps/storefront/scripts/run-v84-import-through-ws2-proof.mjs +0 -17
  126. package/apps/storefront/scripts/run-v84-nonportable-route-dogfood.mjs +0 -15
  127. package/apps/storefront/scripts/sanitize-v84-proof-environment.mjs +0 -21
  128. package/apps/storefront/scripts/v84CleanCloneGraphPin.ts +0 -42
  129. package/apps/storefront/scripts/v84CleanCloneSourceGraph.ts +0 -145
  130. package/apps/storefront/scripts/validate-v84-clone-lifecycle.ts +0 -18
  131. package/apps/storefront/src/components/admin/AdminAIWorkflowsTab.astro +0 -531
  132. package/apps/storefront/src/components/admin/AdminBlogDetailRail.astro +0 -878
  133. package/apps/storefront/src/components/admin/AdminBlogTab.astro +0 -1435
  134. package/apps/storefront/src/components/admin/AdminCheckoutSettingsPanel.astro +0 -226
  135. package/apps/storefront/src/components/admin/AdminCustomersTab.astro +0 -593
  136. package/apps/storefront/src/components/admin/AdminFulfillmentTab.astro +0 -465
  137. package/apps/storefront/src/components/admin/AdminIntegrationsTab.astro +0 -105
  138. package/apps/storefront/src/components/admin/AdminProductsTab.astro +0 -901
  139. package/apps/storefront/src/components/admin/AdminPublishTab.astro +0 -2983
  140. package/apps/storefront/src/components/admin/AdminReportingTab.astro +0 -435
  141. package/apps/storefront/src/components/admin/AdminSettingsTab.astro +0 -782
  142. package/apps/storefront/src/components/admin/AdminSubscriptionsTab.astro +0 -611
  143. package/apps/storefront/src/components/admin/orders/OrdersWorkspace.astro +0 -1223
  144. package/apps/storefront/src/lib/apps/adminService.ts +0 -116
  145. package/apps/storefront/src/lib/apps/adminSession.ts +0 -214
  146. package/apps/storefront/src/lib/apps/apiAuth.ts +0 -91
  147. package/apps/storefront/src/lib/apps/apiRoute.ts +0 -35
  148. package/apps/storefront/src/lib/apps/catalogMapper.ts +0 -39
  149. package/apps/storefront/src/lib/apps/consentConfigStore.ts +0 -228
  150. package/apps/storefront/src/lib/apps/gtmMigrationInstall.ts +0 -447
  151. package/apps/storefront/src/lib/apps/gtmMigrationReport.ts +0 -367
  152. package/apps/storefront/src/lib/apps/gtmMigrationTab.ts +0 -315
  153. package/apps/storefront/src/lib/apps/healthAggregate.ts +0 -66
  154. package/apps/storefront/src/lib/apps/integrationLifecycle.ts +0 -614
  155. package/apps/storefront/src/lib/apps/integrationLifecycleController.ts +0 -125
  156. package/apps/storefront/src/lib/apps/integrationReadModel.ts +0 -563
  157. package/apps/storefront/src/lib/apps/integrationsTab.ts +0 -547
  158. package/apps/storefront/src/lib/apps/integrationsView.ts +0 -106
  159. package/apps/storefront/src/lib/apps/managedAnalyticsService.ts +0 -599
  160. package/apps/storefront/src/lib/apps/tenantIntegrationMaterialization.ts +0 -170
  161. package/apps/storefront/src/lib/apps/tokenIssuer.ts +0 -121
  162. package/apps/storefront/src/lib/apps/tokenVerifier.ts +0 -148
  163. package/apps/storefront/src/lib/apps/v84CleanCloneReplayContext.ts +0 -16
  164. package/apps/storefront/src/lib/apps/v84CloneLifecycleCacheEvidence.ts +0 -105
  165. package/apps/storefront/src/lib/apps/v84CloneLifecycleEvidence.ts +0 -177
  166. package/apps/storefront/src/lib/apps/v84CloneLifecycleMaterialization.ts +0 -251
  167. package/apps/storefront/src/lib/apps/v84CloneLifecycleSemantics.ts +0 -241
  168. package/apps/storefront/src/lib/apps/v84CloneMigrationEvidence.ts +0 -211
  169. package/apps/storefront/src/lib/apps/v84CloneNativeInstallEvidence.ts +0 -409
  170. package/apps/storefront/src/lib/apps/v84NonportableCodeCoaching.ts +0 -368
  171. package/apps/storefront/src/lib/apps/v84NonportableRouteContract.ts +0 -188
  172. package/apps/storefront/src/lib/apps/v84NonportableRouteDogfood.ts +0 -291
  173. package/apps/storefront/src/lib/apps/ws1ManagedAnalyticsClient.ts +0 -95
  174. package/apps/storefront/src/lib/content-edit/applyDiff.ts +0 -91
  175. package/apps/storefront/src/lib/content-edit/client.ts +0 -286
  176. package/apps/storefront/src/lib/content-edit/index.ts +0 -14
  177. package/apps/storefront/src/lib/content-edit/route.ts +0 -25
  178. package/apps/storefront/src/lib/content-edit/types.ts +0 -19
  179. package/apps/storefront/src/lib/dev/cockpitStore.ts +0 -57
  180. package/apps/storefront/src/lib/publish/adminPublishTab.ts +0 -4625
  181. package/apps/storefront/src/lib/publish/apex-readiness.ts +0 -360
  182. package/apps/storefront/src/lib/publish/buildStream.ts +0 -269
  183. package/apps/storefront/src/lib/publish/collapsePersistence.ts +0 -72
  184. package/apps/storefront/src/lib/publish/dispatchHealth.ts +0 -267
  185. package/apps/storefront/src/lib/publish/domainState.ts +0 -360
  186. package/apps/storefront/src/lib/publish/lifecycleState.ts +0 -369
  187. package/apps/storefront/src/lib/publish/liveReleaseSummary.ts +0 -29
  188. package/apps/storefront/src/lib/publish/mergeDoctorOnFailure.ts +0 -78
  189. package/apps/storefront/src/lib/publish/mergeHealthBanner.ts +0 -62
  190. package/apps/storefront/src/lib/publish/mergeRowFindings.ts +0 -124
  191. package/apps/storefront/src/lib/publish/mergeSupportEscalation.ts +0 -75
  192. package/apps/storefront/src/lib/publish/panelPolling.ts +0 -78
  193. package/apps/storefront/src/lib/publish/publish-guard.ts +0 -88
  194. package/apps/storefront/src/lib/publish/publishFormat.ts +0 -165
  195. package/apps/storefront/src/lib/publish/publishHero.ts +0 -177
  196. package/apps/storefront/src/lib/publish/reviewRelease/changeState.ts +0 -66
  197. package/apps/storefront/src/lib/publish/reviewRelease/copy.ts +0 -141
  198. package/apps/storefront/src/lib/publish/reviewRelease/index.ts +0 -41
  199. package/apps/storefront/src/lib/publish/reviewRelease/permissions.ts +0 -47
  200. package/apps/storefront/src/lib/publish/reviewRelease/releaseState.ts +0 -42
  201. package/apps/storefront/src/lib/publish/reviewRelease/types.ts +0 -59
  202. package/apps/storefront/src/lib/publish/reviewRelease/viewModel.ts +0 -440
  203. package/apps/storefront/src/lib/publish/reviewReleaseWorkspace/actions.ts +0 -161
  204. package/apps/storefront/src/lib/publish/reviewReleaseWorkspace/controller.ts +0 -325
  205. package/apps/storefront/src/lib/publish/reviewReleaseWorkspace/render.ts +0 -241
  206. package/apps/storefront/src/lib/publish/shipWorkspace.ts +0 -439
  207. package/apps/storefront/src/lib/publish/sseRoute.ts +0 -119
  208. package/apps/storefront/src/lib/publish/stageBundleUpload.ts +0 -215
  209. package/apps/storefront/src/lib/publish/streamLogConsole.ts +0 -142
  210. package/apps/storefront/src/lib/publish/versionNumber.ts +0 -52
  211. package/apps/storefront/src/pages/admin/ops-timeline.astro +0 -420
  212. package/apps/storefront/src/pages/admin/review-release.astro +0 -265
  213. package/apps/storefront/src/pages/admin/select.astro +0 -96
  214. package/apps/storefront/src/pages/admin.astro +0 -570
  215. package/apps/storefront/src/pages/api/apps/admin/credentials/rotate.ts +0 -86
  216. package/apps/storefront/src/pages/api/apps/admin/gtm-migration-install.ts +0 -174
  217. package/apps/storefront/src/pages/api/apps/admin/gtm-migration.ts +0 -96
  218. package/apps/storefront/src/pages/api/apps/admin/health.ts +0 -44
  219. package/apps/storefront/src/pages/api/apps/admin/install.ts +0 -125
  220. package/apps/storefront/src/pages/api/apps/admin/integration-lifecycle.ts +0 -118
  221. package/apps/storefront/src/pages/api/apps/admin/integrations.ts +0 -89
  222. package/apps/storefront/src/pages/api/apps/admin/list.ts +0 -26
  223. package/apps/storefront/src/pages/api/apps/admin/platform-adapters.ts +0 -85
  224. package/apps/storefront/src/pages/api/apps/admin/resume.ts +0 -79
  225. package/apps/storefront/src/pages/api/apps/admin/suspend.ts +0 -80
  226. package/apps/storefront/src/pages/api/apps/admin/uninstall.ts +0 -98
  227. package/apps/storefront/src/pages/api/apps/admin/update.ts +0 -126
  228. package/apps/storefront/src/pages/api/apps/admin/webhooks/deliveries/[deliveryId]/replay.ts +0 -70
  229. package/apps/storefront/src/pages/api/apps/admin/webhooks/deliveries.ts +0 -51
  230. package/apps/storefront/src/pages/api/apps/internal/order-forward.ts +0 -255
  231. package/apps/storefront/src/pages/api/apps/oauth/token.ts +0 -87
  232. package/apps/storefront/src/pages/api/apps/v1/attribution.ts +0 -162
  233. package/apps/storefront/src/pages/api/apps/v1/catalog/products/[handle].ts +0 -39
  234. package/apps/storefront/src/pages/api/apps/v1/catalog/products.ts +0 -49
  235. package/apps/storefront/src/pages/api/apps/v1/health.ts +0 -32
  236. package/apps/storefront/src/pages/api/apps/v1/inventory.ts +0 -59
  237. package/apps/storefront/src/pages/api/apps/v1/orders/[id].ts +0 -48
  238. package/apps/storefront/src/pages/api/apps/v1/orders.ts +0 -73
  239. package/apps/storefront/src/pages/api/apps/v1/reports.ts +0 -21
  240. package/apps/storefront/src/pages/api/apps/v1/webhooks/deliveries/[deliveryId]/replay.ts +0 -74
  241. package/apps/storefront/src/pages/api/apps/v1/webhooks/deliveries.ts +0 -47
  242. package/apps/storefront/src/pages/api/cache-purge.ts +0 -55
  243. package/apps/storefront/src/pages/api/compliance/tamper.ts +0 -88
  244. package/apps/storefront/src/pages/api/content-edit/ai-edit.ts +0 -164
  245. package/apps/storefront/src/pages/api/dashboard/enter-vendor.ts +0 -154
  246. package/apps/storefront/src/pages/api/dashboard/vendor-search.ts +0 -120
  247. package/apps/storefront/src/pages/api/integrations/v1/[operation].ts +0 -108
  248. package/apps/storefront/src/pages/api/publish/stage-bundle.ts +0 -70
  249. package/apps/storefront/src/pages/api/test/dev-session.ts +0 -133
  250. package/apps/storefront/src/pages/cockpit.astro +0 -1548
  251. package/apps/storefront/src/pages/dashboard/[appDomain]/apps/index.astro +0 -119
  252. package/apps/storefront/src/pages/dashboard/[appDomain]/index.astro +0 -105
  253. package/apps/storefront/src/pages/dashboard/[appDomain]/team.astro +0 -177
  254. package/apps/storefront/src/pages/dashboard/index.astro +0 -160
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-library-BK6ricUd.js","names":["sizes","styles","styles","styles","styles","styles","styles"],"sources":["../../../../../node_modules/.pnpm/astro@7.2.10_@emnapi+core@1.11.1_@emnapi+runtime@1.11.3_@types+node@26.4.1_jiti@2.7.0_tsx@4.23.13_yaml@2.9.0/node_modules/astro/dist/runtime/client/dev-toolbar/ui-library/badge.js","../../../../../node_modules/.pnpm/astro@7.2.10_@emnapi+core@1.11.1_@emnapi+runtime@1.11.3_@types+node@26.4.1_jiti@2.7.0_tsx@4.23.13_yaml@2.9.0/node_modules/astro/dist/runtime/client/dev-toolbar/ui-library/button.js","../../../../../node_modules/.pnpm/astro@7.2.10_@emnapi+core@1.11.1_@emnapi+runtime@1.11.3_@types+node@26.4.1_jiti@2.7.0_tsx@4.23.13_yaml@2.9.0/node_modules/astro/dist/runtime/client/dev-toolbar/ui-library/card.js","../../../../../node_modules/.pnpm/astro@7.2.10_@emnapi+core@1.11.1_@emnapi+runtime@1.11.3_@types+node@26.4.1_jiti@2.7.0_tsx@4.23.13_yaml@2.9.0/node_modules/astro/dist/runtime/client/dev-toolbar/ui-library/highlight.js","../../../../../node_modules/.pnpm/astro@7.2.10_@emnapi+core@1.11.1_@emnapi+runtime@1.11.3_@types+node@26.4.1_jiti@2.7.0_tsx@4.23.13_yaml@2.9.0/node_modules/astro/dist/runtime/client/dev-toolbar/ui-library/icon.js","../../../../../node_modules/.pnpm/astro@7.2.10_@emnapi+core@1.11.1_@emnapi+runtime@1.11.3_@types+node@26.4.1_jiti@2.7.0_tsx@4.23.13_yaml@2.9.0/node_modules/astro/dist/runtime/client/dev-toolbar/ui-library/radio-checkbox.js","../../../../../node_modules/.pnpm/astro@7.2.10_@emnapi+core@1.11.1_@emnapi+runtime@1.11.3_@types+node@26.4.1_jiti@2.7.0_tsx@4.23.13_yaml@2.9.0/node_modules/astro/dist/runtime/client/dev-toolbar/ui-library/select.js","../../../../../node_modules/.pnpm/astro@7.2.10_@emnapi+core@1.11.1_@emnapi+runtime@1.11.3_@types+node@26.4.1_jiti@2.7.0_tsx@4.23.13_yaml@2.9.0/node_modules/astro/dist/runtime/client/dev-toolbar/ui-library/toggle.js","../../../../../node_modules/.pnpm/astro@7.2.10_@emnapi+core@1.11.1_@emnapi+runtime@1.11.3_@types+node@26.4.1_jiti@2.7.0_tsx@4.23.13_yaml@2.9.0/node_modules/astro/dist/runtime/client/dev-toolbar/ui-library/tooltip.js"],"sourcesContent":["import { settings } from \"../settings.js\";\nconst sizes = [\"small\", \"large\"];\nconst styles = [\"purple\", \"gray\", \"red\", \"green\", \"yellow\", \"blue\"];\nclass DevToolbarBadge extends HTMLElement {\n _size = \"small\";\n _badgeStyle = \"purple\";\n get size() {\n return this._size;\n }\n set size(value) {\n if (!sizes.includes(value)) {\n settings.logger.error(\n `Invalid size: ${value}, expected one of ${sizes.join(\", \")}, got ${value}.`\n );\n return;\n }\n this._size = value;\n this.updateStyle();\n }\n get badgeStyle() {\n return this._badgeStyle;\n }\n set badgeStyle(value) {\n if (!styles.includes(value)) {\n settings.logger.error(\n `Invalid style: ${value}, expected one of ${styles.join(\", \")}, got ${value}.`\n );\n return;\n }\n this._badgeStyle = value;\n this.updateStyle();\n }\n shadowRoot;\n static observedAttributes = [\"badge-style\", \"size\"];\n constructor() {\n super();\n this.shadowRoot = this.attachShadow({ mode: \"open\" });\n this.shadowRoot.innerHTML = `\n\t\t\t<style>\n\t\t\t\t.badge {\n\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\tborder-radius: 4px;\n\t\t\t\t\tborder: 1px solid transparent;\n\t\t\t\t\tpadding: 8px;\n\t\t\t\t\tfont-size: 12px;\n\t\t\t\t\tcolor: var(--text-color);\n\t\t\t\t\theight: var(--size);\n\t\t\t\t\tborder: 1px solid var(--border-color);\n\t\t\t\t\tdisplay: flex;\n\t\t\t\t\talign-items: center;\n\t\t\t\t\tjustify-content: center;\n\t\t\t\t\tfont-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n\n\t\t\t\t\t--purple-text: rgba(224, 204, 250, 1);\n\t\t\t\t\t--purple-border: rgba(113, 24, 226, 1);\n\n\t\t\t\t\t--gray-text: rgba(191, 193, 201, 1);\n\t\t\t\t\t--gray-border:rgba(191, 193, 201, 1);\n\n\t\t\t\t\t--red-text: rgba(249, 196, 215, 1);\n\t\t\t\t\t--red-border: rgba(179, 62, 102, 1);\n\n\t\t\t\t\t--green-text: rgba(213, 249, 196, 1);\n\t\t\t\t\t--green-border: rgba(61, 125, 31, 1);\n\n\t\t\t\t\t--yellow-text: rgba(249, 233, 196, 1);\n\t\t\t\t\t--yellow-border: rgba(181, 138, 45, 1);\n\n\t\t\t\t\t--blue-text: rgba(189, 195, 255, 1);\n\t\t\t\t\t--blue-border: rgba(54, 69, 217, 1);\n\n\t\t\t\t\t--large: 24px;\n\t\t\t\t\t--small: 20px;\n\t\t\t\t}\n\t\t\t</style>\n\t\t\t<style id=\"selected-style\"></style>\n\n\t\t\t<div class=\"badge\">\n\t\t\t\t<slot></slot>\n\t\t\t</div>\n\t\t\t`;\n }\n connectedCallback() {\n this.updateStyle();\n }\n attributeChangedCallback() {\n if (this.hasAttribute(\"badge-style\"))\n this.badgeStyle = this.getAttribute(\"badge-style\");\n if (this.hasAttribute(\"size\")) this.size = this.getAttribute(\"size\");\n }\n updateStyle() {\n const style = this.shadowRoot.querySelector(\"#selected-style\");\n if (style) {\n style.innerHTML = `\n\t\t\t.badge {\n\t\t\t\t--text-color: var(--${this.badgeStyle}-text);\n\t\t\t\t--border-color: var(--${this.badgeStyle}-border);\n\t\t\t\t--size: var(--${this.size});\n\t\t\t}`;\n }\n }\n}\nexport {\n DevToolbarBadge\n};\n","import { settings } from \"../settings.js\";\nconst sizes = [\"small\", \"medium\", \"large\"];\nconst styles = [\"ghost\", \"outline\", \"purple\", \"gray\", \"red\", \"green\", \"yellow\", \"blue\"];\nconst borderRadii = [\"normal\", \"rounded\"];\nclass DevToolbarButton extends HTMLElement {\n _size = \"small\";\n _buttonStyle = \"purple\";\n _buttonBorderRadius = \"normal\";\n get size() {\n return this._size;\n }\n set size(value) {\n if (!sizes.includes(value)) {\n settings.logger.error(\n `Invalid size: ${value}, expected one of ${sizes.join(\", \")}, got ${value}.`\n );\n return;\n }\n this._size = value;\n this.updateStyle();\n }\n get buttonStyle() {\n return this._buttonStyle;\n }\n set buttonStyle(value) {\n if (!styles.includes(value)) {\n settings.logger.error(\n `Invalid style: ${value}, expected one of ${styles.join(\", \")}, got ${value}.`\n );\n return;\n }\n this._buttonStyle = value;\n this.updateStyle();\n }\n get buttonBorderRadius() {\n return this._buttonBorderRadius;\n }\n set buttonBorderRadius(value) {\n if (!borderRadii.includes(value)) {\n settings.logger.error(\n `Invalid border-radius: ${value}, expected one of ${borderRadii.join(\", \")}, got ${value}.`\n );\n return;\n }\n this._buttonBorderRadius = value;\n this.updateStyle();\n }\n static observedAttributes = [\"button-style\", \"size\", \"button-border-radius\"];\n shadowRoot;\n constructor() {\n super();\n this.shadowRoot = this.attachShadow({ mode: \"open\" });\n this.shadowRoot.innerHTML = `\n\t\t\t<style>\n\t\t\t\tbutton {\n\t\t\t\t\t--purple-background: rgba(113, 24, 226, 1);\n\t\t\t\t\t--purple-border: rgba(224, 204, 250, 0.33);\n\t\t\t\t\t--purple-text: #fff;\n\n\t\t\t\t\t--gray-background: rgba(52, 56, 65, 1);\n\t\t\t\t\t--gray-border: rgba(71, 78, 94, 1);\n\t\t\t\t\t--gray-text: #fff;\n\n\t\t\t\t\t--red-background: rgba(179, 62, 102, 1);\n\t\t\t\t\t--red-border: rgba(249, 196, 215, 0.33);\n\t\t\t\t\t--red-text: #fff;\n\n\t\t\t\t\t--green-background: rgba(213, 249, 196, 1);\n\t\t\t\t\t--green-border: rgba(61, 125, 31, 1);\n\t\t\t\t\t--green-text: #000;\n\n\t\t\t\t\t--yellow-background: rgba(255, 236, 179, 1);\n\t\t\t\t\t--yellow-border: rgba(255, 191, 0, 1);\n\t\t\t\t\t--yellow-text: #000;\n\n\t\t\t\t\t--blue-background: rgba(54, 69, 217, 1);\n\t\t\t\t\t--blue-border: rgba(189, 195, 255, 1);\n\t\t\t\t\t--blue-text: #fff;\n\n\t\t\t\t\t--outline-background: transparent;\n\t\t\t\t\t--outline-border: #fff;\n\t\t\t\t\t--outline-text: #fff;\n\n\t\t\t\t\t--ghost-background: transparent;\n\t\t\t\t\t--ghost-border: transparent;\n\t\t\t\t\t--ghost-text: #fff;\n\n\t\t\t\t\t--large-font-size: 16px;\n\t\t\t\t\t--medium-font-size: 14px;\n\t\t\t\t\t--small-font-size: 12px;\n\n\t\t\t\t\t--large-padding: 12px 16px;\n\t\t\t\t\t--large-rounded-padding: 12px 12px;\n\t\t\t\t\t--medium-padding: 8px 12px;\n\t\t\t\t\t--medium-rounded-padding: 8px 8px;\n\t\t\t\t\t--small-padding: 4px 8px;\n\t\t\t\t\t--small-rounded-padding: 4px 4px;\n\n\t\t\t\t\t--normal-border-radius: 4px;\n\t\t\t\t\t--rounded-border-radius: 9999px;\n\n\t\t\t\t\tborder: 1px solid var(--border);\n\t\t\t\t\tpadding: var(--padding);\n\t\t\t\t\tfont-size: var(--font-size);\n\t\t\t\t\tbackground: var(--background);\n\n\t\t\t\t\tcolor: var(--text-color);\n\t\t\t\t\tborder-radius: var(--border-radius);\n\t\t\t\t\tdisplay: flex;\n\t\t\t\t\talign-items: center;\n\t\t\t\t\tjustify-content: center;\n\t\t\t\t}\n\n\t\t\t\tbutton:hover {\n\t\t\t\t\tcursor: pointer;\n\t\t\t\t}\n\n\t\t\t\t::slotted(astro-dev-toolbar-icon) {\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\theight: 1em;\n\t\t\t\t\twidth: 1em;\n\t\t\t\t\tmargin-left: 0.5em;\n\t\t\t\t}\n\t\t\t</style>\n\t\t\t<style id=\"selected-style\"></style>\n\n\t\t\t<button>\n\t\t\t\t<slot></slot>\n\t\t\t</button>\n\t\t`;\n }\n connectedCallback() {\n this.updateStyle();\n }\n updateStyle() {\n const style = this.shadowRoot.querySelector(\"#selected-style\");\n if (style) {\n style.innerHTML = `\n\t\t\tbutton {\n\t\t\t\t--background: var(--${this.buttonStyle}-background);\n\t\t\t\t--border: var(--${this.buttonStyle}-border);\n\t\t\t\t--font-size: var(--${this.size}-font-size);\n\t\t\t\t--text-color: var(--${this.buttonStyle}-text);\n\t\t\t\t${this.buttonBorderRadius === \"normal\" ? \"--padding: var(--\" + this.size + \"-padding);\" : \"--padding: var(--\" + this.size + \"-rounded-padding);\"}\n\t\t\t\t--border-radius: var(--${this.buttonBorderRadius}-border-radius);\n\t\t\t}`;\n }\n }\n attributeChangedCallback() {\n if (this.hasAttribute(\"size\")) this.size = this.getAttribute(\"size\");\n if (this.hasAttribute(\"button-style\"))\n this.buttonStyle = this.getAttribute(\"button-style\");\n }\n}\nexport {\n DevToolbarButton\n};\n","import { settings } from \"../settings.js\";\nconst styles = [\"purple\", \"gray\", \"red\", \"green\", \"yellow\", \"blue\"];\nclass DevToolbarCard extends HTMLElement {\n link;\n clickAction;\n shadowRoot;\n _cardStyle = \"purple\";\n get cardStyle() {\n return this._cardStyle;\n }\n set cardStyle(value) {\n if (!styles.includes(value)) {\n settings.logger.error(\n `Invalid style: ${value}, expected one of ${styles.join(\", \")}, got ${value}.`\n );\n return;\n }\n this._cardStyle = value;\n this.updateStyle();\n }\n static observedAttributes = [\"card-style\"];\n constructor() {\n super();\n this.shadowRoot = this.attachShadow({ mode: \"open\" });\n this.link = this.getAttribute(\"link\");\n }\n attributeChangedCallback() {\n if (this.hasAttribute(\"card-style\"))\n this.cardStyle = this.getAttribute(\"card-style\");\n this.updateStyle();\n }\n updateStyle() {\n const style = this.shadowRoot.querySelector(\"#selected-style\");\n if (style) {\n style.innerHTML = `\n\t\t\t\t:host {\n\t\t\t\t\t--hover-background: var(--${this.cardStyle}-hover-background);\n\t\t\t\t\t--hover-border: var(--${this.cardStyle}-hover-border);\n\t\t\t\t}\n\t\t\t`;\n }\n }\n connectedCallback() {\n const element = this.link ? \"a\" : this.clickAction ? \"button\" : \"div\";\n this.shadowRoot.innerHTML += `\n\t\t\t<style>\n\t\t\t\t:host {\n\t\t\t\t\t--purple-hover-background: rgba(136, 58, 234, 0.33);\n\t\t\t\t\t--purple-hover-border: 1px solid rgba(113, 24, 226, 1);\n\n\t\t\t\t\t--gray-hover-background: rgba(191, 193, 201, 0.33);\n\t\t\t\t\t--gray-hover-border: 1px solid rgba(191, 193, 201, 1);\n\n\t\t\t\t\t--red-hover-background: rgba(249, 196, 215, 0.33);\n\t\t\t\t\t--red-hover-border: 1px solid rgba(179, 62, 102, 1);\n\n\t\t\t\t\t--green-hover-background: rgba(213, 249, 196, 0.33);\n\t\t\t\t\t--green-hover-border: 1px solid rgba(61, 125, 31, 1);\n\n\t\t\t\t\t--yellow-hover-background: rgba(255, 236, 179, 0.33);\n\t\t\t\t\t--yellow-hover-border: 1px solid rgba(255, 191, 0, 1);\n\n\t\t\t\t\t--blue-hover-background: rgba(189, 195, 255, 0.33);\n\t\t\t\t\t--blue-hover-border: 1px solid rgba(54, 69, 217, 1);\n\t\t\t\t}\n\n\t\t\t\t:host>a, :host>button, :host>div {\n\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\tpadding: 16px;\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\tborder-radius: 8px;\n\t\t\t\t\tborder: 1px solid rgba(35, 38, 45, 1);\n\t\t\t\t\tcolor: rgba(191, 193, 201, 1);\n\t\t\t\t\ttext-decoration: none;\n\t\t\t\t\tbackground-color: #13151A;\n\t\t\t\t\tbox-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.10), 0px 1px 2px 0px rgba(0, 0, 0, 0.10), 0px 4px 4px 0px rgba(0, 0, 0, 0.09), 0px 10px 6px 0px rgba(0, 0, 0, 0.05), 0px 17px 7px 0px rgba(0, 0, 0, 0.01), 0px 26px 7px 0px rgba(0, 0, 0, 0.00);\n\t\t\t\t\twidth: 100%;\n \t\t\theight: 100%;\n\t\t\t\t}\n\n\t\t\t\th1, h2, h3, h4, h5, h6 {\n\t\t\t\t\tcolor: #fff;\n\t\t\t\t\tfont-weight: 600;\n\t\t\t\t}\n\n\t\t\t\ta:hover, button:hover {\n\t\t\t\t\tbackground: var(--hover-background);\n\t\t\t\t\tborder: var(--hover-border);\n\t\t\t\t}\n\n\t\t\t\tsvg {\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\tmargin: 0 auto;\n\t\t\t\t}\n\n\t\t\t\tspan {\n\t\t\t\t\tmargin-top: 8px;\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\ttext-align: center;\n\t\t\t\t}\n\t\t\t</style>\n\t\t\t<style id=\"selected-style\"></style>\n\n\t\t\t<${element}${this.link ? ` href=\"${this.link}\" target=\"_blank\"` : ``} id=\"astro-overlay-card\">\n\t\t\t\t<slot />\n\t\t\t</${element}>\n\t\t`;\n this.updateStyle();\n if (this.clickAction) {\n this.shadowRoot.getElementById(\"astro-overlay-card\")?.addEventListener(\"click\", this.clickAction);\n }\n }\n}\nexport {\n DevToolbarCard\n};\n","import { settings } from \"../settings.js\";\nimport { getIconElement, isDefinedIcon } from \"./icons.js\";\nconst styles = [\"purple\", \"gray\", \"red\", \"green\", \"yellow\", \"blue\"];\nclass DevToolbarHighlight extends HTMLElement {\n icon;\n _highlightStyle = \"purple\";\n get highlightStyle() {\n return this._highlightStyle;\n }\n set highlightStyle(value) {\n if (!styles.includes(value)) {\n settings.logger.error(\n `Invalid style: ${value}, expected one of ${styles.join(\", \")}, got ${value}.`\n );\n return;\n }\n this._highlightStyle = value;\n this.updateStyle();\n }\n static observedAttributes = [\"highlight-style\"];\n shadowRoot;\n constructor() {\n super();\n this.shadowRoot = this.attachShadow({ mode: \"open\" });\n this.icon = this.hasAttribute(\"icon\") ? this.getAttribute(\"icon\") : void 0;\n this.shadowRoot.innerHTML = `\n\t\t\t<style>\n\t\t\t\t:host {\n\t\t\t\t\t--purple-background: linear-gradient(180deg, rgba(224, 204, 250, 0.33) 0%, rgba(224, 204, 250, 0.0825) 100%);\n\t\t\t\t\t--purple-border: 1px solid rgba(113, 24, 226, 1);\n\n\t\t\t\t\t--gray-background: linear-gradient(180deg, rgba(191, 193, 201, 0.33) 0%, rgba(191, 193, 201, 0.0825) 100%);\n\t\t\t\t\t--gray-border: 1px solid rgba(191, 193, 201, 1);\n\n\t\t\t\t\t--red-background: linear-gradient(180deg, rgba(249, 196, 215, 0.33) 0%, rgba(249, 196, 215, 0.0825) 100%);\n\t\t\t\t\t--red-border: 1px solid rgba(179, 62, 102, 1);\n\n\t\t\t\t\t--green-background: linear-gradient(180deg, rgba(213, 249, 196, 0.33) 0%, rgba(213, 249, 196, 0.0825) 100%);\n\t\t\t\t\t--green-border: 1px solid rgba(61, 125, 31, 1);\n\n\t\t\t\t\t--yellow-background: linear-gradient(180deg, rgba(255, 236, 179, 0.33) 0%, rgba(255, 236, 179, 0.0825) 100%);\n\t\t\t\t\t--yellow-border: 1px solid rgba(181, 138, 45, 1);\n\n\t\t\t\t\t--blue-background: linear-gradient(180deg, rgba(189, 195, 255, 0.33) 0%, rgba(189, 195, 255, 0.0825) 100%);\n\t\t\t\t\t--blue-border: 1px solid rgba(54, 69, 217, 1);\n\n\t\t\t\t\tborder-radius: 4px;\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\twidth: 100%;\n\t\t\t\t\theight: 100%;\n\t\t\t\t\tposition: absolute;\n\t\t\t\t\tz-index: 2000000000;\n\n\t\t\t\t\tbackground: var(--background);\n\t\t\t\t\tborder: var(--border);\n\t\t\t\t}\n\n\t\t\t\t.icon {\n\t\t\t\t\twidth: 24px;\n\t\t\t\t\theight: 24px;\n\t\t\t\t\tcolor: white;\n\t\t\t\t\tbackground: linear-gradient(0deg, #B33E66, #B33E66), linear-gradient(0deg, #351722, #351722);\n\t\t\t\t\tborder: 1px solid rgba(53, 23, 34, 1);\n\t\t\t\t\tborder-radius: 9999px;\n\t\t\t\t\tdisplay: flex;\n\t\t\t\t\tjustify-content: center;\n\t\t\t\t\talign-items: center;\n\t\t\t\t\tposition: absolute;\n\t\t\t\t\ttop: -15px;\n\t\t\t\t\tright: -15px;\n\t\t\t\t}\n\t\t\t</style>\n\t\t\t<style id=\"selected-style\"></style>\n\t\t`;\n }\n updateStyle() {\n const style = this.shadowRoot.querySelector(\"#selected-style\");\n if (style) {\n style.innerHTML = `\n\t\t\t:host {\n\t\t\t\t--background: var(--${this.highlightStyle}-background);\n\t\t\t\t--border: var(--${this.highlightStyle}-border);\n\t\t\t}`;\n }\n }\n attributeChangedCallback() {\n if (this.hasAttribute(\"highlight-style\"))\n this.highlightStyle = this.getAttribute(\"highlight-style\");\n }\n connectedCallback() {\n this.updateStyle();\n if (this.icon) {\n let iconContainer = document.createElement(\"div\");\n iconContainer.classList.add(\"icon\");\n let iconElement;\n if (isDefinedIcon(this.icon)) {\n iconElement = getIconElement(this.icon);\n } else {\n iconElement = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n iconElement.setAttribute(\"viewBox\", \"0 0 16 16\");\n iconElement.innerHTML = this.icon;\n }\n if (iconElement) {\n iconElement?.style.setProperty(\"width\", \"16px\");\n iconElement?.style.setProperty(\"height\", \"16px\");\n iconContainer.append(iconElement);\n this.shadowRoot.append(iconContainer);\n }\n }\n }\n}\nexport {\n DevToolbarHighlight\n};\n","import { getIconElement, isDefinedIcon } from \"./icons.js\";\nclass DevToolbarIcon extends HTMLElement {\n _icon = void 0;\n shadowRoot;\n get icon() {\n return this._icon;\n }\n set icon(name) {\n this._icon = name;\n this.buildTemplate();\n }\n constructor() {\n super();\n this.shadowRoot = this.attachShadow({ mode: \"open\" });\n if (this.hasAttribute(\"icon\")) {\n this.icon = this.getAttribute(\"icon\");\n } else {\n this.buildTemplate();\n }\n }\n getIconHTML(icon) {\n if (icon && isDefinedIcon(icon)) {\n return getIconElement(icon)?.outerHTML ?? \"\";\n }\n return \"<slot />\";\n }\n buildTemplate() {\n this.shadowRoot.innerHTML = `\n\t\t\t<style>\n\t\t\t\tsvg {\n\t\t\t\t\twidth: 100%;\n\t\t\t\t\theight: 100%;\n\t\t\t\t}\n\n\t\t\t\t@media (forced-colors: active) {\n\t\t\t\t\tsvg path[fill=\"#fff\"] {\n\t\t\t\t\t\tfill: black;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t</style>\n${this.getIconHTML(this._icon)}`;\n }\n}\nexport {\n DevToolbarIcon\n};\n","const styles = [\"purple\", \"gray\", \"red\", \"green\", \"yellow\", \"blue\"];\nclass DevToolbarRadioCheckbox extends HTMLElement {\n _radioStyle = \"purple\";\n input;\n shadowRoot;\n get radioStyle() {\n return this._radioStyle;\n }\n set radioStyle(value) {\n if (!styles.includes(value)) {\n console.error(`Invalid style: ${value}, expected one of ${styles.join(\", \")}.`);\n return;\n }\n this._radioStyle = value;\n this.updateStyle();\n }\n static observedAttributes = [\"radio-style\", \"checked\", \"disabled\", \"name\", \"value\"];\n constructor() {\n super();\n this.shadowRoot = this.attachShadow({ mode: \"open\" });\n this.shadowRoot.innerHTML = `\n\t\t<style>\n\t\t\t:host {\n\t\t\t\t--purple-unchecked: rgba(224, 204, 250, 0.33);\n\t\t\t\t--purple-checked: rgba(224, 204, 250, 1);\n\n\t\t\t\t--gray-unchecked: rgba(191, 193, 201, 0.33);\n\t\t\t\t--gray-checked: rgba(191, 193, 201, 1);\n\n\t\t\t\t--red-unchecked: rgba(249, 196, 215, 0.33);\n\t\t\t\t--red-checked: rgba(179, 62, 102, 1);\n\n\t\t\t\t--green-unchecked: rgba(213, 249, 196, 0.33);\n\t\t\t\t--green-checked: rgba(61, 125, 31, 1);\n\n\t\t\t\t--yellow-unchecked: rgba(255, 236, 179, 0.33);\n\t\t\t\t--yellow-checked: rgba(181, 138, 45, 1);\n\n\t\t\t\t--blue-unchecked: rgba(189, 195, 255, 0.33);\n\t\t\t\t--blue-checked: rgba(54, 69, 217, 1);\n\t\t\t}\n\n\t\t\tinput[type=\"radio\"] {\n\t\t\t\tappearance: none;\n\t\t\t\t-webkit-appearance: none;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-content: center;\n\t\t\t\tjustify-content: center;\n\t\t\t\tborder: 2px solid var(--unchecked-color);\n\t\t\t\tborder-radius: 9999px;\n\t\t\t\twidth: 16px;\n\t\t\t\theight: 16px;\n\t\t\t}\n\n\t\t\tinput[type=\"radio\"]::before {\n\t\t\t\tcontent: \"\";\n\t\t\t\tbackground-color: var(--checked-color);\n\t\t\t\twidth: 8px;\n\t\t\t\theight: 8px;\n\t\t\t\tborder-radius: 9999px;\n\t\t\t\tvisibility: hidden;\n\t\t\t\tmargin: 2px;\n\t\t\t}\n\n\t\t\tinput[type=\"radio\"]:checked {\n\t\t\t\tborder-color: var(--checked-color);\n\t\t\t}\n\n\t\t\tinput[type=\"radio\"]:checked::before {\n\t\t\t\tvisibility: visible;\n\t\t\t}\n\t\t</style>\n\t\t<style id=\"selected-style\"></style>\n\t\t`;\n this.input = document.createElement(\"input\");\n this.input.type = \"radio\";\n this.shadowRoot.append(this.input);\n }\n connectedCallback() {\n this.updateInputState();\n this.updateStyle();\n }\n updateStyle() {\n const styleElement = this.shadowRoot.querySelector(\"#selected-style\");\n if (styleElement) {\n styleElement.innerHTML = `\n\t\t\t\t:host {\n\t\t\t\t\t--unchecked-color: var(--${this._radioStyle}-unchecked);\n\t\t\t\t\t--checked-color: var(--${this._radioStyle}-checked);\n\t\t\t\t}\n\t\t\t`;\n }\n }\n updateInputState() {\n this.input.checked = this.hasAttribute(\"checked\");\n this.input.disabled = this.hasAttribute(\"disabled\");\n this.input.name = this.getAttribute(\"name\") || \"\";\n this.input.value = this.getAttribute(\"value\") || \"\";\n }\n attributeChangedCallback() {\n if (this.hasAttribute(\"radio-style\")) {\n this.radioStyle = this.getAttribute(\"radio-style\");\n }\n this.updateInputState();\n }\n}\nexport {\n DevToolbarRadioCheckbox\n};\n","import { settings } from \"../settings.js\";\nconst styles = [\"purple\", \"gray\", \"red\", \"green\", \"yellow\", \"blue\"];\nclass DevToolbarSelect extends HTMLElement {\n shadowRoot;\n element;\n _selectStyle = \"gray\";\n get selectStyle() {\n return this._selectStyle;\n }\n set selectStyle(value) {\n if (!styles.includes(value)) {\n settings.logger.error(`Invalid style: ${value}, expected one of ${styles.join(\", \")}.`);\n return;\n }\n this._selectStyle = value;\n this.updateStyle();\n }\n static observedAttributes = [\"select-style\"];\n constructor() {\n super();\n this.shadowRoot = this.attachShadow({ mode: \"open\" });\n this.shadowRoot.innerHTML = `\n <style>\n :host {\n --purple-text: rgba(224, 204, 250, 1);\n\t\t\t\t\t--purple-border: rgba(113, 24, 226, 1);\n\n --gray-text: rgba(191, 193, 201, 1);\n\t\t\t\t\t--gray-border:rgba(191, 193, 201, 1);\n\n\t\t\t\t\t--red-text: rgba(249, 196, 215, 1);\n\t\t\t\t\t--red-border: rgba(179, 62, 102, 1);\n\n\t\t\t\t\t--green-text: rgba(213, 249, 196, 1);\n\t\t\t\t\t--green-border: rgba(61, 125, 31, 1);\n\n\t\t\t\t\t--yellow-text: rgba(249, 233, 196, 1);\n\t\t\t\t\t--yellow-border: rgba(181, 138, 45, 1);\n\n\t\t\t\t\t--blue-text: rgba(189, 195, 255, 1);\n\t\t\t\t\t--blue-border: rgba(54, 69, 217, 1);\n\n --text-color: var(--gray-text);\n --border-color: var(--gray-border);\n }\n select {\n appearance: none;\n text-align-last: center;\n display: inline-block;\n font-family: system-ui, sans-serif;\n font-size: 14px;\n padding: 4px 24px 4px 8px;\n border: 1px solid var(--border-color);\n border-radius: 4px;\n color: var(--text-color);\n background-color: transparent;\n background-image:\n linear-gradient(45deg, transparent 50%, var(--text-color) 50%),\n linear-gradient(135deg, var(--text-color) 50%, transparent 50%);\n background-position:\n calc(100% - 12px) calc(1em - 2px),\n calc(100% - 8px) calc(1em - 2px);\n background-size: 4px 4px;\n background-repeat: no-repeat;\n }\n </style>\n <style id=\"selected-style\"></style>\n <slot></slot>\n `;\n this.element = document.createElement(\"select\");\n this.shadowRoot.addEventListener(\"slotchange\", (event) => {\n if (event.target instanceof HTMLSlotElement) {\n this.element.append(...event.target.assignedNodes());\n }\n });\n }\n connectedCallback() {\n this.element.name = \"dev-toolbar-select\";\n this.shadowRoot.append(this.element);\n this.updateStyle();\n }\n attributeChangedCallback() {\n if (this.hasAttribute(\"select-style\")) {\n this.selectStyle = this.getAttribute(\"select-style\");\n }\n }\n updateStyle() {\n const style = this.shadowRoot.querySelector(\"#selected-style\");\n if (style) {\n style.innerHTML = `\n :host {\n --text-color: var(--${this.selectStyle}-text);\n --border-color: var(--${this.selectStyle}-border);\n }\n `;\n }\n }\n}\nexport {\n DevToolbarSelect\n};\n","import { settings } from \"../settings.js\";\nconst styles = [\"purple\", \"gray\", \"red\", \"green\", \"yellow\", \"blue\"];\nclass DevToolbarToggle extends HTMLElement {\n shadowRoot;\n input;\n _toggleStyle = \"gray\";\n get toggleStyle() {\n return this._toggleStyle;\n }\n set toggleStyle(value) {\n if (!styles.includes(value)) {\n settings.logger.error(`Invalid style: ${value}, expected one of ${styles.join(\", \")}.`);\n return;\n }\n this._toggleStyle = value;\n this.updateStyle();\n }\n static observedAttributes = [\"toggle-style\"];\n constructor() {\n super();\n this.shadowRoot = this.attachShadow({ mode: \"open\" });\n this.shadowRoot.innerHTML = `\n\t\t<style>\n\t\t\t:host {\n\t\t\t\t--purple-bg-on: rgba(113, 24, 226, 1);\n\t\t\t\t--purple-border-off: rgba(113, 24, 226, 1);\n\t\t\t\t--purple-border-on: rgba(224, 204, 250, 1);\n\n\t\t\t\t--gray-bg-on: rgba(61, 125, 31, 1);\n\t\t\t\t--gray-border-off: rgba(145, 152, 173, 1);\n\t\t\t\t--gray-border-on: rgba(213, 249, 196, 1);\n\n\t\t\t\t--red-bg-on: rgba(179, 62, 102, 1);\n\t\t\t\t--red-border-off: rgba(179, 62, 102, 1);\n\t\t\t\t--red-border-on: rgba(249, 196, 215, 1);\n\n\t\t\t\t--green-bg-on: rgba(61, 125, 31, 1);\n\t\t\t\t--green-border-off: rgba(61, 125, 31, 1);\n\t\t\t\t--green-border-on: rgba(213, 249, 196, 1);\n\n\t\t\t\t--yellow-bg-on: rgba(181, 138, 45, 1);\n\t\t\t\t--yellow-border-off: rgba(181, 138, 45, 1);\n\t\t\t\t--yellow-border-on: rgba(255, 236, 179, 1);\n\n\t\t\t\t--blue-bg-on: rgba(54, 69, 217, 1);\n\t\t\t\t--blue-border-off: rgba(54, 69, 217, 1);\n\t\t\t\t--blue-border-on: rgba(189, 195, 255, 1);\n\t\t\t}\n\n\t\t\tinput {\n\t\t\t\tappearance: none;\n\t\t\t\twidth: 32px;\n\t\t\t\theight: 20px;\n\t\t\t\tborder: 1px solid var(--border-off);\n\t\t\t\ttransition: background-color 0.2s ease, border-color 0.2s ease;\n\t\t\t\tborder-radius: 9999px;\n\t\t\t}\n\n\t\t\tinput::after {\n\t\t\t\tcontent: '';\n\t\t\t\twidth: 16px;\n\t\t\t\tdisplay: inline-block;\n\t\t\t\theight: 16px;\n\t\t\t\tbackground-color: var(--border-off);\n\t\t\t\tborder-radius: 9999px;\n\t\t\t\ttransition: transform 0.2s ease, background-color 0.2s ease;\n\t\t\t\ttop: 1px;\n\t\t\t\tleft: 1px;\n\t\t\t\tposition: relative;\n\t\t\t}\n\n\t\t\t@media (forced-colors: active) {\n\t\t\t\tinput::after {\n\t\t\t\t\tborder: 1px solid black;\n\t\t\t\t\ttop: 0px;\n\t\t\t\t\tleft: 0px;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tinput:checked {\n\t\t\t\tborder: 1px solid var(--border-on);\n\t\t\t\tbackground-color: var(--bg-on);\n\t\t\t}\n\n\t\t\tinput:checked::after {\n\t\t\t\ttransform: translateX(12px);\n\t\t\t\tbackground: var(--border-on);\n\t\t\t}\n\t\t</style>\n\t\t<style id=\"selected-style\"></style>\n\t\t`;\n this.input = document.createElement(\"input\");\n }\n attributeChangedCallback() {\n if (this.hasAttribute(\"toggle-style\"))\n this.toggleStyle = this.getAttribute(\"toggle-style\");\n }\n updateStyle() {\n const style = this.shadowRoot.querySelector(\"#selected-style\");\n if (style) {\n style.innerHTML = `\n\t\t\t:host {\n\t\t\t\t--bg-on: var(--${this.toggleStyle}-bg-on);\n\t\t\t\t--border-off: var(--${this.toggleStyle}-border-off);\n\t\t\t\t--border-on: var(--${this.toggleStyle}-border-on);\n\t\t\t}\n\t\t`;\n }\n }\n connectedCallback() {\n this.input.type = \"checkbox\";\n this.input.name = \"dev-toolbar-toggle\";\n this.shadowRoot.append(this.input);\n this.updateStyle();\n }\n get value() {\n return this.input.value;\n }\n set value(val) {\n this.input.value = val;\n }\n}\nexport {\n DevToolbarToggle\n};\n","import { getIconElement, isDefinedIcon } from \"./icons.js\";\nclass DevToolbarTooltip extends HTMLElement {\n sections = [];\n shadowRoot;\n constructor() {\n super();\n this.shadowRoot = this.attachShadow({ mode: \"open\" });\n }\n connectedCallback() {\n this.shadowRoot.innerHTML = `\n\t\t\t<style>\n\t\t\t:host {\n\t\t\t\tposition: absolute;\n\t\t\t\tdisplay: none;\n\t\t\t\tcolor: white;\n\t\t\t\tbackground: linear-gradient(0deg, #310A65, #310A65), linear-gradient(0deg, #7118E2, #7118E2);\n\t\t\t\tborder: 1px solid rgba(113, 24, 226, 1);\n\t\t\t\tborder-radius: 4px;\n\t\t\t\tpadding: 0;\n\t\t\t\tfont-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n\t\t\t\tfont-size: 14px;\n\t\t\t\tmargin: 0;\n\t\t\t\tz-index: 2000000001;\n\t\t\t\tmax-width: 45ch;\n\t\t\t\twidth: fit-content;\n\t\t\t\tmin-width: 30ch;\n\t\t\t\tbox-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.30), 0px 1px 2px 0px rgba(0, 0, 0, 0.29), 0px 4px 4px 0px rgba(0, 0, 0, 0.26), 0px 10px 6px 0px rgba(0, 0, 0, 0.15), 0px 17px 7px 0px rgba(0, 0, 0, 0.04), 0px 26px 7px 0px rgba(0, 0, 0, 0.01);\n\t\t\t}\n\n\t\t\t:host([data-show=\"true\"]) {\n\t\t\t\tdisplay: block;\n\t\t\t}\n\n\t\t\tsvg {\n\t\t\t\tvertical-align: bottom;\n\t\t\t\tmargin-inline-end: 4px;\n\t\t\t}\n\n\t\t\thr {\n\t\t\t\tborder: 1px solid rgba(136, 58, 234, 0.33);\n\t\t\t\tpadding: 0;\n\t\t\t\tmargin: 0;\n\t\t\t}\n\n\t\t\tsection {\n\t\t\t\tpadding: 8px;\n\t\t\t}\n\n\t\t\t.section-content {\n\t\t\t\tmax-height: 250px;\n \t\toverflow-y: auto;\n\t\t\t}\n\n\t\t\t.modal-title {\n\t\t\t\tdisplay: flex;\n\t\t\t\tjustify-content: space-between;\n\t\t\t\talign-items: center;\n\t\t\t}\n\n\t\t\t.modal-main-title {\n\t\t\t\tfont-weight: bold;\n\t\t\t}\n\n\t\t\t.modal-title + div {\n\t\t\t\tmargin-top: 8px;\n\t\t\t}\n\n\t\t\t.modal-cta {\n\t\t\t\tdisplay: block;\n\t\t\t\tfont-weight: bold;\n\t\t\t\tfont-size: 0.9em;\n\t\t\t}\n\n\t\t\t.clickable-section {\n\t\t\t\tbackground: rgba(113, 24, 226, 1);\n\t\t\t\tpadding: 8px;\n\t\t\t\tborder: 0;\n\t\t\t\tcolor: white;\n\t\t\t\tfont-family: system-ui, sans-serif;\n\t\t\t\ttext-align: left;\n\t\t\t\tline-height: 1.2;\n\t\t\t\twhite-space: nowrap;\n\t\t\t\ttext-decoration: none;\n\t\t\t\tmargin: 0;\n\t\t\t\twidth: 100%;\n\t\t\t}\n\n\t\t\t.clickable-section:hover {\n\t\t\t\tcursor: pointer;\n\t\t\t}\n\n\t\t\tpre, code {\n\t\t\t\tbackground: rgb(78, 27, 145);\n\t\t\t\tfont-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n\t\t\t\tborder-radius: 2px;\n\t\t\t\tfont-size: 14px;\n\t\t\t\tpadding: 2px;\n\t\t\t}\n\t\t\tpre {\n\t\t\t\tpadding: 1em;\n\t\t\t\tmargin: 0 0;\n\t\t\t\toverflow: auto;\n\t\t\t}\n\t\t\t`;\n const fragment = new DocumentFragment();\n this.sections.forEach((section, index) => {\n const sectionElement = section.clickAction ? document.createElement(\"button\") : document.createElement(\"section\");\n if (section.clickAction) {\n sectionElement.classList.add(\"clickable-section\");\n sectionElement.addEventListener(\"click\", async () => {\n await section.clickAction();\n });\n }\n sectionElement.innerHTML = `\n\t\t\t\t${section.title ? `<div class=\"modal-title\"><span class=\"modal-main-title\">\n\t\t\t\t\t\t${section.icon ? this.getElementForIcon(section.icon) : \"\"}${section.title}</span>${section.inlineTitle ?? \"\"}</div>` : \"\"}\n\t\t\t\t${section.content ? `<div class=\"section-content\">${section.content}</div>` : \"\"}\n\t\t\t\t${section.clickDescription ? `<span class=\"modal-cta\">${section.clickDescription}</span>` : \"\"}\n\t\t\t`;\n fragment.append(sectionElement);\n if (index < this.sections.length - 1) {\n fragment.append(document.createElement(\"hr\"));\n }\n });\n this.shadowRoot.append(fragment);\n }\n getElementForIcon(icon) {\n let iconElement;\n if (isDefinedIcon(icon)) {\n iconElement = getIconElement(icon);\n } else {\n iconElement = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n iconElement.setAttribute(\"viewBox\", \"0 0 16 16\");\n iconElement.innerHTML = icon;\n }\n iconElement?.style.setProperty(\"width\", \"16px\");\n iconElement?.style.setProperty(\"height\", \"16px\");\n return iconElement?.outerHTML ?? \"\";\n }\n}\nexport {\n DevToolbarTooltip\n};\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import { t as settings } from "./astro_runtime_client_dev-toolbar_entrypoint__js.js";
2
+ //#region ../../node_modules/.pnpm/astro@7.2.10_@emnapi+core@1.11.1_@emnapi+runtime@1.11.3_@types+node@26.4.1_jiti@2.7.0_tsx@4.23.13_yaml@2.9.0/node_modules/astro/dist/runtime/client/dev-toolbar/apps/utils/window.js
3
+ function createWindowElement(content, placement = settings.config.placement) {
4
+ const windowElement = document.createElement("astro-dev-toolbar-window");
5
+ windowElement.innerHTML = content;
6
+ windowElement.placement = placement;
7
+ return windowElement;
8
+ }
9
+ function closeOnOutsideClick(eventTarget, additionalCheck) {
10
+ function onPageClick(event) {
11
+ const target = event.target;
12
+ if (!target) return;
13
+ if (!target.closest) return;
14
+ if (target.closest("astro-dev-toolbar")) return;
15
+ if (additionalCheck && additionalCheck(target)) return;
16
+ eventTarget.dispatchEvent(new CustomEvent("toggle-app", { detail: { state: false } }));
17
+ }
18
+ eventTarget.addEventListener("app-toggled", (event) => {
19
+ if (event.detail.state === true) document.addEventListener("click", onPageClick, true);
20
+ else document.removeEventListener("click", onPageClick, true);
21
+ });
22
+ }
23
+ function synchronizePlacementOnUpdate(eventTarget, canvas) {
24
+ eventTarget.addEventListener("placement-updated", (evt) => {
25
+ if (!(evt instanceof CustomEvent)) return;
26
+ const windowElement = canvas.querySelector("astro-dev-toolbar-window");
27
+ if (!windowElement) return;
28
+ windowElement.placement = evt.detail.placement;
29
+ });
30
+ }
31
+ //#endregion
32
+ export { createWindowElement as n, synchronizePlacementOnUpdate as r, closeOnOutsideClick as t };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"window-BvxDenKN.js","names":["event"],"sources":["../../../../../node_modules/.pnpm/astro@7.2.10_@emnapi+core@1.11.1_@emnapi+runtime@1.11.3_@types+node@26.4.1_jiti@2.7.0_tsx@4.23.13_yaml@2.9.0/node_modules/astro/dist/runtime/client/dev-toolbar/apps/utils/window.js"],"sourcesContent":["import { settings } from \"../../settings.js\";\nfunction createWindowElement(content, placement = settings.config.placement) {\n const windowElement = document.createElement(\"astro-dev-toolbar-window\");\n windowElement.innerHTML = content;\n windowElement.placement = placement;\n return windowElement;\n}\nfunction closeOnOutsideClick(eventTarget, additionalCheck) {\n function onPageClick(event) {\n const target = event.target;\n if (!target) return;\n if (!target.closest) return;\n if (target.closest(\"astro-dev-toolbar\")) return;\n if (additionalCheck && additionalCheck(target)) return;\n eventTarget.dispatchEvent(\n new CustomEvent(\"toggle-app\", {\n detail: {\n state: false\n }\n })\n );\n }\n eventTarget.addEventListener(\"app-toggled\", (event) => {\n if (event.detail.state === true) {\n document.addEventListener(\"click\", onPageClick, true);\n } else {\n document.removeEventListener(\"click\", onPageClick, true);\n }\n });\n}\nfunction synchronizePlacementOnUpdate(eventTarget, canvas) {\n eventTarget.addEventListener(\"placement-updated\", (evt) => {\n if (!(evt instanceof CustomEvent)) {\n return;\n }\n const windowElement = canvas.querySelector(\"astro-dev-toolbar-window\");\n if (!windowElement) {\n return;\n }\n const event = evt;\n windowElement.placement = event.detail.placement;\n });\n}\nexport {\n closeOnOutsideClick,\n createWindowElement,\n synchronizePlacementOnUpdate\n};\n"],"x_google_ignoreList":[0],"mappings":";;AACA,SAAS,oBAAoB,SAAS,YAAY,SAAS,OAAO,WAAW;CAC3E,MAAM,gBAAgB,SAAS,cAAc,0BAA0B;CACvE,cAAc,YAAY;CAC1B,cAAc,YAAY;CAC1B,OAAO;AACT;AACA,SAAS,oBAAoB,aAAa,iBAAiB;CACzD,SAAS,YAAY,OAAO;EAC1B,MAAM,SAAS,MAAM;EACrB,IAAI,CAAC,QAAQ;EACb,IAAI,CAAC,OAAO,SAAS;EACrB,IAAI,OAAO,QAAQ,mBAAmB,GAAG;EACzC,IAAI,mBAAmB,gBAAgB,MAAM,GAAG;EAChD,YAAY,cACV,IAAI,YAAY,cAAc,EAC5B,QAAQ,EACN,OAAO,MACT,EACF,CAAC,CACH;CACF;CACA,YAAY,iBAAiB,gBAAgB,UAAU;EACrD,IAAI,MAAM,OAAO,UAAU,MACzB,SAAS,iBAAiB,SAAS,aAAa,IAAI;OAEpD,SAAS,oBAAoB,SAAS,aAAa,IAAI;CAE3D,CAAC;AACH;AACA,SAAS,6BAA6B,aAAa,QAAQ;CACzD,YAAY,iBAAiB,sBAAsB,QAAQ;EACzD,IAAI,EAAE,eAAe,cACnB;EAEF,MAAM,gBAAgB,OAAO,cAAc,0BAA0B;EACrE,IAAI,CAAC,eACH;EAGF,cAAc,YAAYA,IAAM,OAAO;CACzC,CAAC;AACH"}
@@ -0,0 +1,113 @@
1
+ import { escape } from "./astro_n_html-escaper.js";
2
+ import { n as createWindowElement, r as synchronizePlacementOnUpdate, t as closeOnOutsideClick } from "./window-BvxDenKN.js";
3
+ import { i as positionHighlight, n as createHighlight, r as getElementsPositionInDocument, t as attachTooltipToHighlight } from "./highlight-B9UoX1wa.js";
4
+ //#region ../../node_modules/.pnpm/astro@7.2.10_@emnapi+core@1.11.1_@emnapi+runtime@1.11.3_@types+node@26.4.1_jiti@2.7.0_tsx@4.23.13_yaml@2.9.0/node_modules/astro/dist/runtime/client/dev-toolbar/apps/xray.js
5
+ var xray_default = {
6
+ id: "astro:xray",
7
+ name: "Inspect",
8
+ icon: "<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path fill=\"#fff\" d=\"M7.9 1.5v-.4a1.1 1.1 0 0 1 2.2 0v.4a1.1 1.1 0 1 1-2.2 0Zm-6.4 8.6a1.1 1.1 0 1 0 0-2.2h-.4a1.1 1.1 0 0 0 0 2.2h.4ZM12 3.7a1.1 1.1 0 0 0 1.4-.7l.4-1.1a1.1 1.1 0 0 0-2.1-.8l-.4 1.2a1.1 1.1 0 0 0 .7 1.4Zm-9.7 7.6-1.2.4a1.1 1.1 0 1 0 .8 2.1l1-.4a1.1 1.1 0 1 0-.6-2ZM20.8 17a1.9 1.9 0 0 1 0 2.6l-1.2 1.2a1.9 1.9 0 0 1-2.6 0l-4.3-4.2-1.6 3.6a1.9 1.9 0 0 1-1.7 1.2A1.9 1.9 0 0 1 7.5 20L2.7 5a1.9 1.9 0 0 1 2.4-2.4l15 5a1.9 1.9 0 0 1 .2 3.4l-3.7 1.6 4.2 4.3ZM19 18.3 14.6 14a1.9 1.9 0 0 1 .6-3l3.2-1.5L5.1 5.1l4.3 13.3 1.5-3.2a1.9 1.9 0 0 1 3-.6l4.4 4.4.7-.7Z\"/></svg>",
9
+ init(canvas, eventTarget) {
10
+ let islandsOverlays = [];
11
+ addIslandsOverlay();
12
+ document.addEventListener("astro:after-swap", addIslandsOverlay);
13
+ document.addEventListener("astro:page-load", refreshIslandsOverlayPositions);
14
+ closeOnOutsideClick(eventTarget);
15
+ synchronizePlacementOnUpdate(eventTarget, canvas);
16
+ function addIslandsOverlay() {
17
+ islandsOverlays.forEach(({ highlightElement }) => {
18
+ highlightElement.remove();
19
+ });
20
+ islandsOverlays = [];
21
+ const islands = document.querySelectorAll("astro-island");
22
+ if (islands.length === 0) {
23
+ const window2 = createWindowElement(`<style>
24
+ header {
25
+ display: flex;
26
+ }
27
+
28
+ h1 {
29
+ display: flex;
30
+ align-items: center;
31
+ gap: 8px;
32
+ font-weight: 600;
33
+ color: #fff;
34
+ margin: 0;
35
+ font-size: 22px;
36
+ }
37
+
38
+ astro-dev-toolbar-icon {
39
+ width: 1em;
40
+ height: 1em;
41
+ padding: 8px;
42
+ display: block;
43
+ background: #5f9ea0;
44
+ border-radius: 9999px;
45
+ }
46
+ </style>
47
+ <header>
48
+ <h1><astro-dev-toolbar-icon icon="lightbulb"></astro-dev-toolbar-icon>No islands detected.</h1>
49
+ </header>
50
+ <p>
51
+ It looks like there are no interactive component islands on this page. Did you forget to add a client directive to your interactive UI component?
52
+ </p>
53
+ `);
54
+ canvas.append(window2);
55
+ return;
56
+ }
57
+ islands.forEach((island) => {
58
+ const computedStyle = window.getComputedStyle(island);
59
+ const islandElement = island.children[0] || island;
60
+ if (islandElement.offsetParent === null || computedStyle.display === "none") return;
61
+ const rect = islandElement.getBoundingClientRect();
62
+ const highlight = createHighlight(rect);
63
+ const tooltip = buildIslandTooltip(island);
64
+ const { isFixed } = getElementsPositionInDocument(islandElement);
65
+ if (isFixed) tooltip.style.position = highlight.style.position = "fixed";
66
+ attachTooltipToHighlight(highlight, tooltip, islandElement);
67
+ canvas.append(highlight);
68
+ islandsOverlays.push({
69
+ highlightElement: highlight,
70
+ island: islandElement
71
+ });
72
+ });
73
+ ["scroll", "resize"].forEach((event) => {
74
+ window.addEventListener(event, refreshIslandsOverlayPositions);
75
+ });
76
+ }
77
+ function refreshIslandsOverlayPositions() {
78
+ islandsOverlays.forEach(({ highlightElement, island: islandElement }) => {
79
+ const rect = islandElement.getBoundingClientRect();
80
+ positionHighlight(highlightElement, rect);
81
+ });
82
+ }
83
+ function buildIslandTooltip(island) {
84
+ const tooltip = document.createElement("astro-dev-toolbar-tooltip");
85
+ tooltip.sections = [];
86
+ const islandProps = island.getAttribute("props") ? JSON.parse(island.getAttribute("props")) : {};
87
+ const islandClientDirective = island.getAttribute("client");
88
+ if (islandClientDirective) tooltip.sections.push({
89
+ title: "Client directive",
90
+ inlineTitle: `<code>client:${islandClientDirective}</code>`
91
+ });
92
+ const islandPropsEntries = Object.entries(islandProps).filter((prop) => !prop[0].startsWith("data-astro-cid-"));
93
+ if (islandPropsEntries.length > 0) {
94
+ const stringifiedProps = JSON.stringify(Object.fromEntries(islandPropsEntries.map((prop) => [prop[0], prop[1][1]])), void 0, 2);
95
+ tooltip.sections.push({
96
+ title: "Props",
97
+ content: `<pre><code>${escape(stringifiedProps)}</code></pre>`
98
+ });
99
+ }
100
+ const islandComponentPath = island.getAttribute("component-url");
101
+ if (islandComponentPath) tooltip.sections.push({
102
+ content: islandComponentPath,
103
+ clickDescription: "Click to go to file",
104
+ async clickAction() {
105
+ await fetch("/__open-in-editor?file=" + encodeURIComponent(window.__astro_dev_toolbar__.root + islandComponentPath.slice(1)));
106
+ }
107
+ });
108
+ return tooltip;
109
+ }
110
+ }
111
+ };
112
+ //#endregion
113
+ export { xray_default as default };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xray-YFiRUU0Z.js","names":["escapeHTML"],"sources":["../../../../../node_modules/.pnpm/astro@7.2.10_@emnapi+core@1.11.1_@emnapi+runtime@1.11.3_@types+node@26.4.1_jiti@2.7.0_tsx@4.23.13_yaml@2.9.0/node_modules/astro/dist/runtime/client/dev-toolbar/apps/xray.js"],"sourcesContent":["import { escape as escapeHTML } from \"html-escaper\";\nimport {\n attachTooltipToHighlight,\n createHighlight,\n getElementsPositionInDocument,\n positionHighlight\n} from \"./utils/highlight.js\";\nimport {\n closeOnOutsideClick,\n createWindowElement,\n synchronizePlacementOnUpdate\n} from \"./utils/window.js\";\nconst icon = '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path fill=\"#fff\" d=\"M7.9 1.5v-.4a1.1 1.1 0 0 1 2.2 0v.4a1.1 1.1 0 1 1-2.2 0Zm-6.4 8.6a1.1 1.1 0 1 0 0-2.2h-.4a1.1 1.1 0 0 0 0 2.2h.4ZM12 3.7a1.1 1.1 0 0 0 1.4-.7l.4-1.1a1.1 1.1 0 0 0-2.1-.8l-.4 1.2a1.1 1.1 0 0 0 .7 1.4Zm-9.7 7.6-1.2.4a1.1 1.1 0 1 0 .8 2.1l1-.4a1.1 1.1 0 1 0-.6-2ZM20.8 17a1.9 1.9 0 0 1 0 2.6l-1.2 1.2a1.9 1.9 0 0 1-2.6 0l-4.3-4.2-1.6 3.6a1.9 1.9 0 0 1-1.7 1.2A1.9 1.9 0 0 1 7.5 20L2.7 5a1.9 1.9 0 0 1 2.4-2.4l15 5a1.9 1.9 0 0 1 .2 3.4l-3.7 1.6 4.2 4.3ZM19 18.3 14.6 14a1.9 1.9 0 0 1 .6-3l3.2-1.5L5.1 5.1l4.3 13.3 1.5-3.2a1.9 1.9 0 0 1 3-.6l4.4 4.4.7-.7Z\"/></svg>';\nvar xray_default = {\n id: \"astro:xray\",\n name: \"Inspect\",\n icon,\n init(canvas, eventTarget) {\n let islandsOverlays = [];\n addIslandsOverlay();\n document.addEventListener(\"astro:after-swap\", addIslandsOverlay);\n document.addEventListener(\"astro:page-load\", refreshIslandsOverlayPositions);\n closeOnOutsideClick(eventTarget);\n synchronizePlacementOnUpdate(eventTarget, canvas);\n function addIslandsOverlay() {\n islandsOverlays.forEach(({ highlightElement }) => {\n highlightElement.remove();\n });\n islandsOverlays = [];\n const islands = document.querySelectorAll(\"astro-island\");\n if (islands.length === 0) {\n const window2 = createWindowElement(\n `<style>\n\t\t\t\t\t\theader {\n\t\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\th1 {\n\t\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\t\talign-items: center;\n\t\t\t\t\t\t\tgap: 8px;\n\t\t\t\t\t\t\tfont-weight: 600;\n\t\t\t\t\t\t\tcolor: #fff;\n\t\t\t\t\t\t\tmargin: 0;\n\t\t\t\t\t\t\tfont-size: 22px;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tastro-dev-toolbar-icon {\n\t\t\t\t\t\t\twidth: 1em;\n\t\t\t\t\t\t height: 1em;\n\t\t\t\t\t\t padding: 8px;\n\t\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t\t\tbackground: #5f9ea0;\n\t\t\t\t\t\t\tborder-radius: 9999px;\n\t\t\t\t\t\t}\n\t\t\t\t\t</style>\n\t\t\t\t\t<header>\n\t\t\t\t\t\t<h1><astro-dev-toolbar-icon icon=\"lightbulb\"></astro-dev-toolbar-icon>No islands detected.</h1>\n\t\t\t\t\t</header>\n\t\t\t\t\t<p>\n\t\t\t\t\t\tIt looks like there are no interactive component islands on this page. Did you forget to add a client directive to your interactive UI component?\n\t\t\t\t\t</p>\n\t\t\t\t\t`\n );\n canvas.append(window2);\n return;\n }\n islands.forEach((island) => {\n const computedStyle = window.getComputedStyle(island);\n const islandElement = island.children[0] || island;\n if (islandElement.offsetParent === null || computedStyle.display === \"none\") {\n return;\n }\n const rect = islandElement.getBoundingClientRect();\n const highlight = createHighlight(rect);\n const tooltip = buildIslandTooltip(island);\n const { isFixed } = getElementsPositionInDocument(islandElement);\n if (isFixed) {\n tooltip.style.position = highlight.style.position = \"fixed\";\n }\n attachTooltipToHighlight(highlight, tooltip, islandElement);\n canvas.append(highlight);\n islandsOverlays.push({ highlightElement: highlight, island: islandElement });\n });\n [\"scroll\", \"resize\"].forEach((event) => {\n window.addEventListener(event, refreshIslandsOverlayPositions);\n });\n }\n function refreshIslandsOverlayPositions() {\n islandsOverlays.forEach(({ highlightElement, island: islandElement }) => {\n const rect = islandElement.getBoundingClientRect();\n positionHighlight(highlightElement, rect);\n });\n }\n function buildIslandTooltip(island) {\n const tooltip = document.createElement(\"astro-dev-toolbar-tooltip\");\n tooltip.sections = [];\n const islandProps = island.getAttribute(\"props\") ? JSON.parse(island.getAttribute(\"props\")) : {};\n const islandClientDirective = island.getAttribute(\"client\");\n if (islandClientDirective) {\n tooltip.sections.push({\n title: \"Client directive\",\n inlineTitle: `<code>client:${islandClientDirective}</code>`\n });\n }\n const islandPropsEntries = Object.entries(islandProps).filter(\n (prop) => !prop[0].startsWith(\"data-astro-cid-\")\n );\n if (islandPropsEntries.length > 0) {\n const stringifiedProps = JSON.stringify(\n Object.fromEntries(islandPropsEntries.map((prop) => [prop[0], prop[1][1]])),\n void 0,\n 2\n );\n tooltip.sections.push({\n title: \"Props\",\n content: `<pre><code>${escapeHTML(stringifiedProps)}</code></pre>`\n });\n }\n const islandComponentPath = island.getAttribute(\"component-url\");\n if (islandComponentPath) {\n tooltip.sections.push({\n content: islandComponentPath,\n clickDescription: \"Click to go to file\",\n async clickAction() {\n await fetch(\n \"/__open-in-editor?file=\" + encodeURIComponent(\n window.__astro_dev_toolbar__.root + islandComponentPath.slice(1)\n )\n );\n }\n });\n }\n return tooltip;\n }\n }\n};\nexport {\n xray_default as default\n};\n"],"x_google_ignoreList":[0],"mappings":";;;;AAaA,IAAI,eAAe;CACjB,IAAI;CACJ,MAAM;CACN,MAAA;CACA,KAAK,QAAQ,aAAa;EACxB,IAAI,kBAAkB,CAAC;EACvB,kBAAkB;EAClB,SAAS,iBAAiB,oBAAoB,iBAAiB;EAC/D,SAAS,iBAAiB,mBAAmB,8BAA8B;EAC3E,oBAAoB,WAAW;EAC/B,6BAA6B,aAAa,MAAM;EAChD,SAAS,oBAAoB;GAC3B,gBAAgB,SAAS,EAAE,uBAAuB;IAChD,iBAAiB,OAAO;GAC1B,CAAC;GACD,kBAAkB,CAAC;GACnB,MAAM,UAAU,SAAS,iBAAiB,cAAc;GACxD,IAAI,QAAQ,WAAW,GAAG;IACxB,MAAM,UAAU,oBACd;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA+BF;IACA,OAAO,OAAO,OAAO;IACrB;GACF;GACA,QAAQ,SAAS,WAAW;IAC1B,MAAM,gBAAgB,OAAO,iBAAiB,MAAM;IACpD,MAAM,gBAAgB,OAAO,SAAS,MAAM;IAC5C,IAAI,cAAc,iBAAiB,QAAQ,cAAc,YAAY,QACnE;IAEF,MAAM,OAAO,cAAc,sBAAsB;IACjD,MAAM,YAAY,gBAAgB,IAAI;IACtC,MAAM,UAAU,mBAAmB,MAAM;IACzC,MAAM,EAAE,YAAY,8BAA8B,aAAa;IAC/D,IAAI,SACF,QAAQ,MAAM,WAAW,UAAU,MAAM,WAAW;IAEtD,yBAAyB,WAAW,SAAS,aAAa;IAC1D,OAAO,OAAO,SAAS;IACvB,gBAAgB,KAAK;KAAE,kBAAkB;KAAW,QAAQ;IAAc,CAAC;GAC7E,CAAC;GACD,CAAC,UAAU,QAAQ,CAAC,CAAC,SAAS,UAAU;IACtC,OAAO,iBAAiB,OAAO,8BAA8B;GAC/D,CAAC;EACH;EACA,SAAS,iCAAiC;GACxC,gBAAgB,SAAS,EAAE,kBAAkB,QAAQ,oBAAoB;IACvE,MAAM,OAAO,cAAc,sBAAsB;IACjD,kBAAkB,kBAAkB,IAAI;GAC1C,CAAC;EACH;EACA,SAAS,mBAAmB,QAAQ;GAClC,MAAM,UAAU,SAAS,cAAc,2BAA2B;GAClE,QAAQ,WAAW,CAAC;GACpB,MAAM,cAAc,OAAO,aAAa,OAAO,IAAI,KAAK,MAAM,OAAO,aAAa,OAAO,CAAC,IAAI,CAAC;GAC/F,MAAM,wBAAwB,OAAO,aAAa,QAAQ;GAC1D,IAAI,uBACF,QAAQ,SAAS,KAAK;IACpB,OAAO;IACP,aAAa,gBAAgB,sBAAsB;GACrD,CAAC;GAEH,MAAM,qBAAqB,OAAO,QAAQ,WAAW,CAAC,CAAC,QACpD,SAAS,CAAC,KAAK,EAAE,CAAC,WAAW,iBAAiB,CACjD;GACA,IAAI,mBAAmB,SAAS,GAAG;IACjC,MAAM,mBAAmB,KAAK,UAC5B,OAAO,YAAY,mBAAmB,KAAK,SAAS,CAAC,KAAK,IAAI,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,GAC1E,KAAK,GACL,CACF;IACA,QAAQ,SAAS,KAAK;KACpB,OAAO;KACP,SAAS,cAAcA,OAAW,gBAAgB,EAAE;IACtD,CAAC;GACH;GACA,MAAM,sBAAsB,OAAO,aAAa,eAAe;GAC/D,IAAI,qBACF,QAAQ,SAAS,KAAK;IACpB,SAAS;IACT,kBAAkB;IAClB,MAAM,cAAc;KAClB,MAAM,MACJ,4BAA4B,mBAC1B,OAAO,sBAAsB,OAAO,oBAAoB,MAAM,CAAC,CACjE,CACF;IACF;GACF,CAAC;GAEH,OAAO;EACT;CACF;AACF"}
@@ -0,0 +1,8 @@
1
+ {
2
+ "hash": "1e6e1930",
3
+ "configHash": "d885ab85",
4
+ "lockfileHash": "07672895",
5
+ "browserHash": "2860703c",
6
+ "optimized": {},
7
+ "chunks": {}
8
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "module"
3
+ }
@@ -28,7 +28,7 @@ import type { HeaderVariant, FooterVariant } from "@/lib/chrome/model";
28
28
  import { renderIntegrationPhases } from "@tot/public-runtime";
29
29
  import { readViewerSession } from "@/lib/auth/route";
30
30
  import AppWidgetFrame from "@/components/apps/AppWidgetFrame.astro";
31
- import { getRegistryService } from "@/lib/apps/adminService.js";
31
+ import { getRegistryService } from "@/lib/apps/registryAccess.js";
32
32
  import { renderWidgetSlot } from "@/lib/apps/widgets/renderSlot.js";
33
33
 
34
34
  interface Props {
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Renderer-shared registry access — split out of `adminService.ts` (2026-09-02
3
+ * audit) because `getRegistryService`/`json` are needed by the actual page
4
+ * render path (Layout.astro, index.astro, products/[handle].astro resolve
5
+ * installed app widgets on every request) AND by the webhook dispatcher
6
+ * (`getDispatcher.ts`/`emit.ts`), while the REST of `adminService.ts`
7
+ * (`getManagedAnalyticsService`, `registryErrorResponse`, `parseInstallId`,
8
+ * `requireOwnedInstall`, `requireManageRole`) is reached only from the
9
+ * operator-only `/api/apps/admin/*` cluster. ESM loads a whole file's imports
10
+ * regardless of which export is used, so keeping both halves in one file meant
11
+ * every page render transitively pulled in the admin-only chain too (and made
12
+ * `adminService.ts` impossible to drop from the public storefront-runner
13
+ * without also breaking the renderer). This file is the renderer-safe half;
14
+ * `adminService.ts` re-exports `json` from here for its own admin-only helpers.
15
+ */
16
+ import { AppRegistryService } from "./registryService.js";
17
+ import { D1CredentialStore } from "./credentials.js";
18
+ import { DEFAULT_APP_GATEWAY_KID, APP_GATEWAY_KID_ENV } from "./gatewayKeys.js";
19
+ import { fromD1 } from "../d1/catalog.js";
20
+ import { readD1, readEnv } from "../env.js";
21
+
22
+ /**
23
+ * No-store JSON response — install/rotate bodies carry a one-time client
24
+ * secret and must never be edge- or browser-cached.
25
+ */
26
+ export function json(body: unknown, status = 200): Response {
27
+ return new Response(JSON.stringify(body), {
28
+ status,
29
+ headers: { "content-type": "application/json", "cache-control": "no-store" },
30
+ });
31
+ }
32
+
33
+ /**
34
+ * Build an `AppRegistryService` over the real `STOREFRONT_APPS_DB` D1
35
+ * binding, or return a 503 Response when that binding isn't configured in
36
+ * this runtime. Never leaks binding/secret detail in the response body.
37
+ */
38
+ export async function getRegistryService(): Promise<AppRegistryService | Response> {
39
+ const d1 = await readD1("STOREFRONT_APPS_DB");
40
+ if (!d1) return json({ error: "app registry not configured" }, 503);
41
+ const db = fromD1(d1);
42
+ const activeKid = (await readEnv(APP_GATEWAY_KID_ENV)) ?? DEFAULT_APP_GATEWAY_KID;
43
+ const credentials = new D1CredentialStore(db, activeKid);
44
+ return new AppRegistryService(db, credentials);
45
+ }
@@ -30,13 +30,13 @@
30
30
  */
31
31
  import type { SessionRecord } from "./session.js";
32
32
  import { sessionHostCapability } from "./loginGate.js";
33
- import { decideIsOwner } from "@/lib/change/route/route";
34
33
  import {
34
+ decideIsOwner,
35
35
  resolveShipCapabilities,
36
+ OWNER_CAPABILITIES,
37
+ type Capability,
36
38
  type ShipCapabilities,
37
- } from "@/lib/change/route/ship-capabilities";
38
- import type { Capability } from "@/lib/change/types";
39
- import { OWNER_CAPABILITIES } from "@/lib/grants/session";
39
+ } from "@/lib/shared/capability";
40
40
 
41
41
  /** Which entry case a viewer is in, for chrome + the DoD test matrix. */
42
42
  export type AdminEntryPrincipal =
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Ship/owner capability primitives — genuinely shared between the control-plane
3
+ * ship surface (`@/lib/change`, `@/lib/grants`, `@/lib/forge` — all moat, dropped
4
+ * from the public storefront-runner) and renderer-adjacent code that ships in the
5
+ * runner (`@/lib/auth/adminEntry`, the order-admin API guard). Pure types + pure
6
+ * functions only — no I/O, no MCP/forge calls, no secrets — which is exactly why
7
+ * they can live outside the moat cluster instead of forcing a KEPT file to import
8
+ * a DROPped one.
9
+ *
10
+ * Canonical home for these five exports; `@/lib/forge/types`, `@/lib/grants/session`,
11
+ * `@/lib/change/route/route`, and `@/lib/change/route/ship-capabilities` re-export
12
+ * from here (not the other way around) so the moat cluster still has one place to
13
+ * read them, while nothing outside the moat needs to import INTO it.
14
+ */
15
+
16
+ /** Access level the acting operator holds. */
17
+ export type Capability = "preview-access" | "ship-on-behalf";
18
+
19
+ /** Capabilities that carry tenant-owner standing (vs. a granted developer). */
20
+ export const OWNER_CAPABILITIES: ReadonlySet<string> = new Set(["owner", "admin"]);
21
+
22
+ /** Pure inputs to the owner-principal decision (session only, no I/O). */
23
+ export interface OwnerPrincipalInput {
24
+ /** Whether the request is authenticated for the resolved tenant. */
25
+ authorized: boolean;
26
+ /** The signed-in viewer's capability over the resolved tenant, if any. */
27
+ viewerCapability: string | undefined;
28
+ }
29
+
30
+ /**
31
+ * Decide whether the acting principal IS the tenant owner. Owner iff the
32
+ * request is authorized AND a signed-in viewer holds an owner/admin capability
33
+ * over the resolved tenant.
34
+ */
35
+ export function decideIsOwner(input: OwnerPrincipalInput): boolean {
36
+ if (!input.authorized) return false;
37
+ return !!input.viewerCapability && OWNER_CAPABILITIES.has(input.viewerCapability);
38
+ }
39
+
40
+ /**
41
+ * The acting principal's ship-relevant relationship to the tenant, resolved
42
+ * SERVER-SIDE (never from request input).
43
+ */
44
+ export interface ShipPrincipal {
45
+ /** True when the acting principal IS the tenant owner (see {@link decideIsOwner}). */
46
+ isOwner: boolean;
47
+ /** The developer grant capability the principal holds. Fail-closed default is `preview-access`. */
48
+ capability: Capability;
49
+ }
50
+
51
+ /** The two distinct ship-gate capabilities, derived per-principal. */
52
+ export interface ShipCapabilities {
53
+ /** May invoke ship-on-behalf (accept / reject / rollback). Owner is a superset. */
54
+ shipOnBehalf: boolean;
55
+ /** May invoke the apex (DNS) cutover. OWNER-ONLY. */
56
+ apexCutover: boolean;
57
+ }
58
+
59
+ /**
60
+ * Resolve the two capabilities from the principal. Owner ⊇ ship-on-behalf for the
61
+ * ship axis; apex-cutover is owner-only.
62
+ */
63
+ export function resolveShipCapabilities(principal: ShipPrincipal): ShipCapabilities {
64
+ return {
65
+ shipOnBehalf: principal.isOwner || principal.capability === "ship-on-behalf",
66
+ apexCutover: principal.isOwner,
67
+ };
68
+ }