@ecopages/core 0.2.0-beta.4 → 0.2.0-beta.41

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 (611) hide show
  1. package/README.md +40 -9
  2. package/package.json +371 -33
  3. package/src/adapters/README.md +6 -2
  4. package/src/adapters/abstract/application-adapter.d.ts +115 -6
  5. package/src/adapters/abstract/application-adapter.js +261 -120
  6. package/src/adapters/abstract/router-adapter.js +12 -4
  7. package/src/adapters/abstract/segment-path-matcher.d.ts +6 -0
  8. package/src/adapters/abstract/segment-path-matcher.js +147 -0
  9. package/src/adapters/abstract/server-adapter.d.ts +16 -2
  10. package/src/adapters/abstract/server-adapter.js +22 -14
  11. package/src/adapters/abstract/ws-pattern-matcher.d.ts +12 -0
  12. package/src/adapters/abstract/ws-pattern-matcher.js +28 -0
  13. package/src/adapters/bun/bun-user-websocket-lifecycle.d.ts +22 -0
  14. package/src/adapters/bun/bun-user-websocket-lifecycle.js +93 -0
  15. package/src/adapters/bun/client-bridge.d.ts +1 -0
  16. package/src/adapters/bun/client-bridge.js +51 -47
  17. package/src/adapters/bun/create-app.d.ts +9 -6
  18. package/src/adapters/bun/create-app.js +171 -130
  19. package/src/adapters/bun/hmr-manager.d.ts +1 -1
  20. package/src/adapters/bun/hmr-manager.js +62 -57
  21. package/src/adapters/bun/index.d.ts +1 -1
  22. package/src/adapters/bun/index.js +2 -8
  23. package/src/adapters/bun/runtime-host.d.ts +1 -1
  24. package/src/adapters/bun/runtime-host.js +61 -54
  25. package/src/adapters/bun/server-adapter.d.ts +91 -41
  26. package/src/adapters/bun/server-adapter.js +566 -426
  27. package/src/adapters/bun/static-preview-host.d.ts +1 -1
  28. package/src/adapters/bun/static-preview-host.js +43 -41
  29. package/src/adapters/create-app.d.ts +13 -11
  30. package/src/adapters/create-app.js +11 -63
  31. package/src/adapters/index.d.ts +2 -2
  32. package/src/adapters/index.js +2 -8
  33. package/src/adapters/node/create-app.d.ts +8 -3
  34. package/src/adapters/node/create-app.js +126 -84
  35. package/src/adapters/node/http-request-bridge.js +147 -106
  36. package/src/adapters/node/node-client-bridge.d.ts +1 -0
  37. package/src/adapters/node/node-client-bridge.js +62 -61
  38. package/src/adapters/node/node-hmr-manager.d.ts +1 -1
  39. package/src/adapters/node/node-hmr-manager.js +58 -48
  40. package/src/adapters/node/runtime-host.d.ts +1 -1
  41. package/src/adapters/node/runtime-host.js +96 -89
  42. package/src/adapters/node/server-adapter-dependencies.js +18 -17
  43. package/src/adapters/node/server-adapter.d.ts +63 -23
  44. package/src/adapters/node/server-adapter.js +346 -297
  45. package/src/adapters/node/static-content-server.d.ts +1 -0
  46. package/src/adapters/node/static-content-server.js +172 -183
  47. package/src/adapters/node/static-preview-host.d.ts +1 -1
  48. package/src/adapters/node/static-preview-host.js +88 -64
  49. package/src/adapters/shared/hmr/dev-transform-entrypoint-registry.d.ts +16 -0
  50. package/src/adapters/shared/hmr/dev-transform-entrypoint-registry.js +32 -0
  51. package/src/adapters/shared/{hmr-html-response.d.ts → hmr/hmr-html-response.d.ts} +2 -2
  52. package/src/adapters/shared/hmr/hmr-html-response.js +50 -0
  53. package/src/adapters/shared/hmr/shared-hmr-manager.d.ts +92 -0
  54. package/src/adapters/shared/hmr/shared-hmr-manager.js +446 -0
  55. package/src/adapters/shared/http/api-request-pipeline.d.ts +23 -0
  56. package/src/adapters/shared/http/api-request-pipeline.js +132 -0
  57. package/src/adapters/shared/{api-response.d.ts → http/api-response.d.ts} +1 -1
  58. package/src/adapters/shared/http/api-response.js +79 -0
  59. package/src/adapters/shared/http/create-body-response.d.ts +12 -0
  60. package/src/adapters/shared/http/create-body-response.js +26 -0
  61. package/src/adapters/shared/http/define-api-handler.d.ts +90 -0
  62. package/src/adapters/shared/http/define-api-handler.js +49 -0
  63. package/src/adapters/shared/{explicit-static-render-preparation.d.ts → http/explicit-static-render-preparation.d.ts} +3 -3
  64. package/src/adapters/shared/http/explicit-static-render-preparation.js +29 -0
  65. package/src/adapters/shared/{explicit-static-route-matcher.d.ts → http/explicit-static-route-matcher.d.ts} +3 -9
  66. package/src/adapters/shared/http/explicit-static-route-matcher.js +59 -0
  67. package/src/adapters/shared/{file-route-middleware-pipeline.d.ts → http/file-route-middleware-pipeline.d.ts} +2 -2
  68. package/src/adapters/shared/http/file-route-middleware-pipeline.js +84 -0
  69. package/src/adapters/shared/{fs-server-response-factory.d.ts → http/fs-server-response-factory.d.ts} +7 -2
  70. package/src/adapters/shared/http/fs-server-response-factory.js +106 -0
  71. package/src/adapters/shared/{fs-server-response-matcher.d.ts → http/fs-server-response-matcher.d.ts} +25 -5
  72. package/src/adapters/shared/http/fs-server-response-matcher.js +258 -0
  73. package/src/adapters/shared/http/run-middleware-chain.d.ts +5 -0
  74. package/src/adapters/shared/http/run-middleware-chain.js +17 -0
  75. package/src/adapters/shared/{application-adapter.d.ts → runtime/application-adapter.d.ts} +2 -2
  76. package/src/adapters/shared/runtime/application-adapter.js +75 -0
  77. package/src/adapters/shared/runtime/collect-dev-prewarm-plan.d.ts +11 -0
  78. package/src/adapters/shared/runtime/collect-dev-prewarm-plan.js +29 -0
  79. package/src/adapters/shared/runtime/copy-runtime-public-dir.d.ts +6 -0
  80. package/src/adapters/shared/runtime/copy-runtime-public-dir.js +27 -0
  81. package/src/adapters/shared/runtime/dev-static-route-prewarm.d.ts +16 -0
  82. package/src/adapters/shared/runtime/dev-static-route-prewarm.js +66 -0
  83. package/src/adapters/shared/runtime/port-manager.d.ts +116 -0
  84. package/src/adapters/shared/runtime/port-manager.js +226 -0
  85. package/src/adapters/shared/{render-context.d.ts → runtime/render-context.d.ts} +2 -2
  86. package/src/adapters/shared/runtime/render-context.js +99 -0
  87. package/src/adapters/shared/{runtime-app-bootstrap.d.ts → runtime/runtime-app-bootstrap.d.ts} +4 -3
  88. package/src/adapters/shared/runtime/runtime-app-bootstrap.js +38 -0
  89. package/src/adapters/shared/runtime/runtime-server-lifecycle.d.ts +45 -0
  90. package/src/adapters/shared/runtime/runtime-server-lifecycle.js +71 -0
  91. package/src/adapters/shared/{server-adapter.d.ts → runtime/server-adapter.d.ts} +31 -50
  92. package/src/adapters/shared/runtime/server-adapter.js +301 -0
  93. package/src/adapters/shared/{server-route-handler.d.ts → runtime/server-route-handler.d.ts} +6 -33
  94. package/src/adapters/shared/runtime/server-route-handler.js +77 -0
  95. package/src/adapters/shared/{server-static-builder.d.ts → runtime/server-static-builder.d.ts} +27 -35
  96. package/src/adapters/shared/runtime/server-static-builder.js +172 -0
  97. package/src/adapters/shared/{static-preview-host.d.ts → runtime/static-preview-host.d.ts} +6 -1
  98. package/src/adapters/shared/ws/node-http-websocket-upgrades.d.ts +21 -0
  99. package/src/adapters/shared/ws/node-http-websocket-upgrades.js +109 -0
  100. package/src/adapters/shared/ws/websocket-lifecycle.d.ts +24 -0
  101. package/src/adapters/shared/ws/websocket-lifecycle.js +62 -0
  102. package/src/build/README.md +191 -31
  103. package/src/build/app-build-manifest-runtime.d.ts +39 -0
  104. package/src/build/app-build-manifest-runtime.js +145 -0
  105. package/src/build/browser/browser-runtime-manifest.js +58 -0
  106. package/src/build/browser/browser-runtime-plugin-helpers.js +34 -0
  107. package/src/build/{browser-runtime-plugin.d.ts → browser/browser-runtime-plugin.d.ts} +1 -1
  108. package/src/build/browser/browser-runtime-plugin.js +216 -0
  109. package/src/build/browser/jsx-ownership-plugins.d.ts +24 -0
  110. package/src/build/browser/jsx-ownership-plugins.js +55 -0
  111. package/src/build/browser/lit-static-render-worker-context.d.ts +2 -0
  112. package/src/build/browser/lit-static-render-worker-context.js +4 -0
  113. package/src/build/build-adapter.d.ts +29 -334
  114. package/src/build/build-adapter.js +273 -237
  115. package/src/build/cache/build-input-fingerprint.d.ts +28 -0
  116. package/src/build/cache/build-input-fingerprint.js +33 -0
  117. package/src/build/cache/cache-constants.d.ts +4 -0
  118. package/src/build/cache/cache-constants.js +4 -0
  119. package/src/build/cache/cache-keys.d.ts +22 -0
  120. package/src/build/cache/cache-keys.js +71 -0
  121. package/src/build/cache/pages-unified-graph-build.d.ts +31 -0
  122. package/src/build/cache/pages-unified-graph-build.js +199 -0
  123. package/src/build/cache/production-build-cache.d.ts +21 -0
  124. package/src/build/cache/production-build-cache.js +56 -0
  125. package/src/build/cache/server-entry-build-cache.d.ts +43 -0
  126. package/src/build/cache/server-entry-build-cache.js +153 -0
  127. package/src/build/contracts/build-contracts.d.ts +96 -0
  128. package/src/build/contracts/build-contracts.js +1 -0
  129. package/src/build/contracts/build-manifest.d.ts +90 -0
  130. package/src/build/contracts/build-manifest.js +64 -0
  131. package/src/build/contracts/build-types.js +1 -0
  132. package/src/build/contracts/content-virtual-modules.d.ts +12 -0
  133. package/src/build/contracts/content-virtual-modules.js +29 -0
  134. package/src/build/{rolldown-adapter-helpers.d.ts → rolldown/rolldown-adapter-helpers.d.ts} +32 -9
  135. package/src/build/rolldown/rolldown-adapter-helpers.js +458 -0
  136. package/src/build/{rolldown-build-adapter.d.ts → rolldown/rolldown-build-adapter.d.ts} +3 -7
  137. package/src/build/rolldown/rolldown-build-adapter.js +57 -0
  138. package/src/build/rolldown/rolldown-build-invocation-metrics.d.ts +12 -0
  139. package/src/build/rolldown/rolldown-build-invocation-metrics.js +39 -0
  140. package/src/build/{rolldown-plugin-bridge.d.ts → rolldown/rolldown-plugin-bridge.d.ts} +16 -2
  141. package/src/build/rolldown/rolldown-plugin-bridge.js +284 -0
  142. package/src/build/rolldown/rolldown-source-transform-pass.d.ts +15 -0
  143. package/src/build/rolldown/rolldown-source-transform-pass.js +70 -0
  144. package/src/build/rolldown/runtime-build-output-normalizer.d.ts +10 -0
  145. package/src/build/rolldown/runtime-build-output-normalizer.js +253 -0
  146. package/src/build/rolldown/server-side-css-shim-plugin.js +58 -0
  147. package/src/build/runtime/build-profile-options.d.ts +7 -0
  148. package/src/build/runtime/build-profile-options.js +37 -0
  149. package/src/build/runtime/build-request-identity.d.ts +17 -0
  150. package/src/build/runtime/build-request-identity.js +79 -0
  151. package/src/build/runtime/build-request-policy.d.ts +58 -0
  152. package/src/build/runtime/build-request-policy.js +84 -0
  153. package/src/build/runtime/build-runtime.d.ts +28 -0
  154. package/src/build/runtime/build-runtime.js +75 -0
  155. package/src/build/runtime/deduping-build-executor.d.ts +21 -0
  156. package/src/build/runtime/deduping-build-executor.js +40 -0
  157. package/src/build/runtime/parallel-build-executor.d.ts +21 -0
  158. package/src/build/runtime/parallel-build-executor.js +60 -0
  159. package/src/build/{serialized-build-executor.d.ts → runtime/serialized-build-executor.d.ts} +1 -1
  160. package/src/build/runtime/serialized-build-executor.js +79 -0
  161. package/src/cache/index.d.ts +2 -1
  162. package/src/cache/index.js +7 -6
  163. package/src/cache/module-parse-cache.d.ts +5 -0
  164. package/src/cache/module-parse-cache.js +122 -67
  165. package/src/cache/module-transform-profiler.d.ts +8 -0
  166. package/src/cache/module-transform-profiler.js +8 -0
  167. package/src/client/navigation-scripts/classification.d.ts +16 -0
  168. package/src/client/navigation-scripts/classification.js +49 -0
  169. package/src/client/navigation-scripts/index.d.ts +3 -0
  170. package/src/client/navigation-scripts/index.js +3 -0
  171. package/src/client/navigation-scripts/navigation-scripts.test.browser.d.ts +1 -0
  172. package/src/client/navigation-scripts/navigation-scripts.test.browser.js +61 -0
  173. package/src/client/navigation-scripts/registry.d.ts +11 -0
  174. package/src/client/navigation-scripts/registry.js +16 -0
  175. package/src/client/navigation-scripts/rerun-queue.d.ts +37 -0
  176. package/src/client/navigation-scripts/rerun-queue.js +90 -0
  177. package/src/client/scroll.d.ts +17 -0
  178. package/src/client/scroll.js +33 -0
  179. package/src/client/scroll.test.browser.d.ts +1 -0
  180. package/src/client/scroll.test.browser.js +31 -0
  181. package/src/client/view-transitions.d.ts +32 -0
  182. package/src/client/view-transitions.js +120 -0
  183. package/src/client/view-transitions.test.browser.d.ts +1 -0
  184. package/src/client/view-transitions.test.browser.js +56 -0
  185. package/src/config/config-builder.d.ts +40 -10
  186. package/src/config/config-builder.js +647 -600
  187. package/src/config/constants.d.ts +1 -0
  188. package/src/config/constants.js +44 -23
  189. package/src/declarations.d.ts +1 -0
  190. package/src/dev/README.md +24 -0
  191. package/src/dev/client-bridge-registry.d.ts +5 -0
  192. package/src/dev/client-bridge-registry.js +10 -0
  193. package/src/dev/dev-client-ownership.d.ts +7 -0
  194. package/src/dev/dev-client-ownership.js +8 -0
  195. package/src/dev/hmr-manager-registry.d.ts +8 -0
  196. package/src/dev/hmr-manager-registry.js +10 -0
  197. package/src/dev/host-runtime.d.ts +3 -0
  198. package/src/dev/host-runtime.js +25 -23
  199. package/src/dev/runtime-server-started-message.d.ts +2 -0
  200. package/src/dev/runtime-server-started-message.js +3 -0
  201. package/src/dev/sc-server.js +106 -103
  202. package/src/dev/transform-server/dev-transform-bundler.d.ts +24 -0
  203. package/src/dev/transform-server/dev-transform-bundler.js +79 -0
  204. package/src/dev/transform-server/dev-transform-externalize-plugin.d.ts +12 -0
  205. package/src/dev/transform-server/dev-transform-externalize-plugin.js +29 -0
  206. package/src/dev/transform-server/dev-transform-import-rewriter.d.ts +16 -0
  207. package/src/dev/transform-server/dev-transform-import-rewriter.js +126 -0
  208. package/src/dev/transform-server/dev-transform-module-kind.d.ts +13 -0
  209. package/src/dev/transform-server/dev-transform-module-kind.js +17 -0
  210. package/src/dev/transform-server/dev-transform-runtime-specifiers.d.ts +5 -0
  211. package/src/dev/transform-server/dev-transform-runtime-specifiers.js +16 -0
  212. package/src/dev/transform-server/dev-transform-server.d.ts +41 -0
  213. package/src/dev/transform-server/dev-transform-server.js +191 -0
  214. package/src/dev/transform-server/dev-transform-url.d.ts +13 -0
  215. package/src/dev/transform-server/dev-transform-url.js +58 -0
  216. package/src/dev/transform-server/dev-transform-vendor-registry.d.ts +28 -0
  217. package/src/dev/transform-server/dev-transform-vendor-registry.js +158 -0
  218. package/src/dev/transform-server/index.d.ts +6 -0
  219. package/src/dev/transform-server/index.js +4 -0
  220. package/src/dev/transform-server/types.d.ts +15 -0
  221. package/src/dev/transform-server/types.js +1 -0
  222. package/src/dev-toolbar/README.md +52 -0
  223. package/src/dev-toolbar/define-dev-tool.d.ts +21 -0
  224. package/src/dev-toolbar/define-dev-tool.js +9 -0
  225. package/src/dev-toolbar/dev-toolbar-config.d.ts +25 -0
  226. package/src/dev-toolbar/dev-toolbar-config.js +19 -0
  227. package/src/dev-toolbar/dev-toolbar-host.d.ts +49 -0
  228. package/src/dev-toolbar/dev-toolbar-host.js +117 -0
  229. package/src/dev-toolbar/dev-toolbar-html-response.d.ts +11 -0
  230. package/src/dev-toolbar/dev-toolbar-html-response.js +14 -0
  231. package/src/dev-toolbar/dev-toolbar-manifest-contract.d.ts +22 -0
  232. package/src/dev-toolbar/dev-toolbar-manifest-contract.js +2 -0
  233. package/src/dev-toolbar/dev-toolbar-manifest.d.ts +15 -0
  234. package/src/dev-toolbar/dev-toolbar-manifest.js +52 -0
  235. package/src/dev-toolbar/dev-toolbar-package.d.ts +34 -0
  236. package/src/dev-toolbar/dev-toolbar-package.js +78 -0
  237. package/src/dev-toolbar/dev-toolbar-runtime-paths.d.ts +10 -0
  238. package/src/dev-toolbar/dev-toolbar-runtime-paths.js +13 -0
  239. package/src/diagnostics/request-build-dedupe.d.ts +18 -0
  240. package/src/diagnostics/request-build-dedupe.js +39 -0
  241. package/src/diagnostics/request-pipeline-metrics.d.ts +38 -0
  242. package/src/diagnostics/request-pipeline-metrics.js +121 -0
  243. package/src/diagnostics/startup-trace.d.ts +81 -0
  244. package/src/diagnostics/startup-trace.js +281 -0
  245. package/src/eco/README.md +17 -0
  246. package/src/eco/component-identity.d.ts +13 -0
  247. package/src/eco/component-identity.js +18 -0
  248. package/src/eco/eco-declared-component.d.ts +15 -0
  249. package/src/eco/eco-declared-component.js +23 -0
  250. package/src/eco/eco.browser.js +63 -70
  251. package/src/eco/eco.js +163 -97
  252. package/src/eco/eco.types.d.ts +47 -8
  253. package/src/eco/eco.types.js +5 -0
  254. package/src/eco/eco.utils.d.ts +1 -1
  255. package/src/eco/eco.utils.js +1 -10
  256. package/src/eco/global-injector-map.js +55 -41
  257. package/src/eco/lazy-injector-map.js +90 -60
  258. package/src/eco/module-dependencies.js +52 -44
  259. package/src/eco/page-layout-normalization.d.ts +21 -0
  260. package/src/eco/page-layout-normalization.js +69 -0
  261. package/src/env.d.ts +2 -0
  262. package/src/errors/http-error.d.ts +8 -0
  263. package/src/errors/http-error.js +66 -49
  264. package/src/errors/index.d.ts +1 -0
  265. package/src/errors/index.js +3 -6
  266. package/src/errors/locals-access-error.js +5 -8
  267. package/src/errors/undeclared-component-dependency-error.d.ts +11 -0
  268. package/src/errors/undeclared-component-dependency-error.js +17 -0
  269. package/src/global/app-logger.js +3 -6
  270. package/src/hmr/README.md +21 -0
  271. package/src/hmr/client/hmr-runtime.js +119 -110
  272. package/src/hmr/client/module-update.d.ts +13 -0
  273. package/src/hmr/client/module-update.js +39 -0
  274. package/src/hmr/hmr-asset-paths.d.ts +14 -0
  275. package/src/hmr/hmr-asset-paths.js +22 -0
  276. package/src/hmr/hmr-entrypoint-output.d.ts +21 -0
  277. package/src/hmr/hmr-entrypoint-output.js +34 -0
  278. package/src/hmr/hmr-file-change-prep.d.ts +10 -0
  279. package/src/hmr/hmr-file-change-prep.js +14 -0
  280. package/src/hmr/hmr-registered-entrypoints-context.d.ts +7 -0
  281. package/src/hmr/hmr-registered-entrypoints-context.js +1 -0
  282. package/src/hmr/hmr-runtime-paths.d.ts +10 -0
  283. package/src/hmr/hmr-runtime-paths.js +13 -0
  284. package/src/hmr/hmr-strategy.d.ts +9 -0
  285. package/src/hmr/hmr-strategy.js +113 -42
  286. package/src/hmr/strategies/default-hmr-strategy.js +55 -33
  287. package/src/hmr/strategies/js-hmr-strategy.d.ts +6 -97
  288. package/src/hmr/strategies/js-hmr-strategy.js +107 -167
  289. package/src/hmr/strategies/server-rendered-template-hmr-strategy.d.ts +17 -0
  290. package/src/hmr/strategies/server-rendered-template-hmr-strategy.js +35 -0
  291. package/src/index.browser.d.ts +1 -0
  292. package/src/index.browser.js +2 -4
  293. package/src/index.d.ts +4 -1
  294. package/src/index.js +7 -21
  295. package/src/integrations/ghtml/ghtml-renderer.d.ts +2 -6
  296. package/src/integrations/ghtml/ghtml-renderer.js +12 -56
  297. package/src/integrations/ghtml/ghtml.constants.js +1 -4
  298. package/src/integrations/ghtml/ghtml.plugin.d.ts +3 -16
  299. package/src/integrations/ghtml/ghtml.plugin.js +10 -20
  300. package/src/islands/README.md +25 -0
  301. package/src/islands/island-host.d.ts +37 -0
  302. package/src/islands/island-host.js +55 -0
  303. package/src/plugins/README.md +2 -1
  304. package/src/plugins/alias-resolver-cache.d.ts +6 -9
  305. package/src/plugins/alias-resolver-cache.js +114 -97
  306. package/src/plugins/alias-resolver-plugin.d.ts +3 -3
  307. package/src/plugins/alias-resolver-plugin.js +35 -62
  308. package/src/plugins/define-integration.d.ts +26 -0
  309. package/src/plugins/define-integration.js +20 -0
  310. package/src/plugins/eco-component-meta-plugin.d.ts +6 -102
  311. package/src/plugins/eco-component-meta-plugin.js +120 -162
  312. package/src/plugins/foreign-jsx-override-plugin.d.ts +1 -1
  313. package/src/plugins/foreign-jsx-override-plugin.js +49 -37
  314. package/src/plugins/integration-plugin.d.ts +43 -14
  315. package/src/plugins/integration-plugin.js +212 -190
  316. package/src/plugins/jsx-import-source.utils.d.ts +8 -0
  317. package/src/plugins/jsx-import-source.utils.js +21 -0
  318. package/src/plugins/processor.d.ts +71 -12
  319. package/src/plugins/processor.js +168 -130
  320. package/src/plugins/runtime-capability.js +1 -0
  321. package/src/plugins/source-transform.d.ts +32 -1
  322. package/src/plugins/source-transform.js +112 -60
  323. package/src/plugins/tsconfig-import-resolver.d.ts +35 -0
  324. package/src/plugins/tsconfig-import-resolver.js +235 -0
  325. package/src/route-renderer/GRAPH.md +26 -32
  326. package/src/route-renderer/README.md +54 -33
  327. package/src/route-renderer/orchestration/document-shell/document-shell-render.service.d.ts +107 -0
  328. package/src/route-renderer/orchestration/document-shell/document-shell-render.service.js +155 -0
  329. package/src/route-renderer/orchestration/document-shell/layout-shell-props.service.d.ts +20 -0
  330. package/src/route-renderer/orchestration/document-shell/layout-shell-props.service.js +37 -0
  331. package/src/route-renderer/orchestration/{component-render-context.d.ts → foreign-child/component-render-context.d.ts} +8 -15
  332. package/src/route-renderer/orchestration/foreign-child/component-render-context.js +196 -0
  333. package/src/route-renderer/orchestration/{render-output.utils.d.ts → foreign-child/foreign-child-output.utils.d.ts} +17 -7
  334. package/src/route-renderer/orchestration/foreign-child/foreign-child-output.utils.js +191 -0
  335. package/src/route-renderer/orchestration/{foreign-subtree-execution.service.d.ts → foreign-child/foreign-subtree-execution.service.d.ts} +64 -34
  336. package/src/route-renderer/orchestration/foreign-child/foreign-subtree-execution.service.js +354 -0
  337. package/src/route-renderer/orchestration/foreign-child/owning-renderer-resolution.d.ts +19 -0
  338. package/src/route-renderer/orchestration/foreign-child/owning-renderer-resolution.js +36 -0
  339. package/src/route-renderer/orchestration/integration-renderer.d.ts +41 -151
  340. package/src/route-renderer/orchestration/integration-renderer.js +798 -988
  341. package/src/route-renderer/orchestration/integration-renderer.test-fixtures.d.ts +75 -0
  342. package/src/route-renderer/orchestration/integration-renderer.test-fixtures.js +173 -0
  343. package/src/route-renderer/orchestration/ownership-graph/component-graph-collectors.d.ts +10 -0
  344. package/src/route-renderer/orchestration/ownership-graph/component-graph-collectors.js +132 -0
  345. package/src/route-renderer/orchestration/ownership-graph/component-graph.d.ts +34 -0
  346. package/src/route-renderer/orchestration/ownership-graph/component-graph.js +89 -0
  347. package/src/route-renderer/orchestration/{ownership-validation.service.d.ts → ownership-graph/ownership-validation.service.d.ts} +6 -2
  348. package/src/route-renderer/orchestration/ownership-graph/ownership-validation.service.js +77 -0
  349. package/src/route-renderer/orchestration/page-browser-graph/global-injector-assets.service.d.ts +7 -0
  350. package/src/route-renderer/orchestration/page-browser-graph/global-injector-assets.service.js +30 -0
  351. package/src/route-renderer/orchestration/page-browser-graph/grouped-graph-build-plan.d.ts +15 -0
  352. package/src/route-renderer/orchestration/page-browser-graph/grouped-graph-build-plan.js +9 -0
  353. package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-contribution.merge.d.ts +5 -0
  354. package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-contribution.merge.js +30 -0
  355. package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-merge.utils.d.ts +12 -0
  356. package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-merge.utils.js +32 -0
  357. package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-session.d.ts +126 -0
  358. package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-session.js +542 -0
  359. package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph.service.d.ts +47 -0
  360. package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph.service.js +232 -0
  361. package/src/route-renderer/orchestration/{processed-asset-dedupe.d.ts → page-browser-graph/processed-asset-dedupe.d.ts} +1 -1
  362. package/src/route-renderer/orchestration/page-browser-graph/processed-asset-dedupe.js +23 -0
  363. package/src/route-renderer/orchestration/page-browser-graph/route-instance-key.d.ts +29 -0
  364. package/src/route-renderer/orchestration/page-browser-graph/route-instance-key.js +54 -0
  365. package/src/route-renderer/orchestration/route-pipeline/integration-route-render-adapter.d.ts +38 -0
  366. package/src/route-renderer/orchestration/route-pipeline/integration-route-render-adapter.js +26 -0
  367. package/src/route-renderer/orchestration/route-pipeline/marker-artifact.utils.d.ts +6 -0
  368. package/src/route-renderer/orchestration/route-pipeline/marker-artifact.utils.js +25 -0
  369. package/src/route-renderer/orchestration/route-pipeline/robots-meta.contribution.d.ts +15 -0
  370. package/src/route-renderer/orchestration/route-pipeline/robots-meta.contribution.js +43 -0
  371. package/src/route-renderer/orchestration/route-pipeline/route-html-finalization.service.d.ts +25 -0
  372. package/src/route-renderer/orchestration/route-pipeline/route-html-finalization.service.js +44 -0
  373. package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.builder.d.ts +26 -0
  374. package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.builder.js +49 -0
  375. package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.utils.d.ts +4 -0
  376. package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.utils.js +30 -0
  377. package/src/route-renderer/orchestration/{route-render-orchestrator.d.ts → route-pipeline/route-render-orchestrator.d.ts} +24 -54
  378. package/src/route-renderer/orchestration/route-pipeline/route-render-orchestrator.js +215 -0
  379. package/src/route-renderer/orchestration/string-markup-renderer.d.ts +14 -0
  380. package/src/route-renderer/orchestration/string-markup-renderer.js +52 -0
  381. package/src/route-renderer/page-loading/component-dependency-collection.js +121 -121
  382. package/src/route-renderer/page-loading/declared-asset-collection.js +66 -94
  383. package/src/route-renderer/page-loading/dependency-resolver.js +101 -104
  384. package/src/route-renderer/page-loading/ecopages-virtual-imports.d.ts +1 -0
  385. package/src/route-renderer/page-loading/ecopages-virtual-imports.js +64 -51
  386. package/src/route-renderer/page-loading/file-scoped-dependency-components.d.ts +42 -0
  387. package/src/route-renderer/page-loading/file-scoped-dependency-components.js +94 -0
  388. package/src/route-renderer/page-loading/lazy-entry-collection.js +75 -98
  389. package/src/route-renderer/page-loading/lazy-trigger-planning.js +47 -36
  390. package/src/route-renderer/page-loading/module-declaration-aggregation.js +39 -28
  391. package/src/route-renderer/page-loading/module-declaration-scripts.js +10 -15
  392. package/src/route-renderer/page-loading/page-dependency-bundling.js +156 -113
  393. package/src/route-renderer/page-loading/page-module-loader.d.ts +2 -1
  394. package/src/route-renderer/page-loading/page-module-loader.js +136 -124
  395. package/src/route-renderer/page-loading/resolved-page-dependencies.d.ts +12 -0
  396. package/src/route-renderer/page-loading/resolved-page-dependencies.js +38 -0
  397. package/src/route-renderer/route-renderer.js +74 -76
  398. package/src/router/README.md +31 -0
  399. package/src/router/client/link-intent.d.ts +11 -21
  400. package/src/router/client/link-intent.js +56 -30
  401. package/src/router/client/link-intent.test.browser.js +50 -39
  402. package/src/router/client/link-navigation-policy.d.ts +45 -0
  403. package/src/router/client/link-navigation-policy.js +122 -0
  404. package/src/router/client/link-navigation-policy.test.browser.d.ts +1 -0
  405. package/src/router/client/link-navigation-policy.test.browser.js +82 -0
  406. package/src/router/client/navigation-coordinator.d.ts +1 -1
  407. package/src/router/client/navigation-coordinator.js +235 -201
  408. package/src/router/client/navigation-lifecycle.d.ts +55 -0
  409. package/src/router/client/navigation-lifecycle.js +50 -0
  410. package/src/router/client/navigation-lifecycle.test.browser.d.ts +1 -0
  411. package/src/router/client/navigation-lifecycle.test.browser.js +118 -0
  412. package/src/router/server/route-registry.js +237 -242
  413. package/src/services/README.md +5 -0
  414. package/src/services/assets/asset-processing-service/asset-dependency-keys.d.ts +13 -0
  415. package/src/services/assets/asset-processing-service/asset-dependency-keys.js +64 -50
  416. package/src/services/assets/asset-processing-service/asset-processing.service.d.ts +7 -1
  417. package/src/services/assets/asset-processing-service/asset-processing.service.js +308 -268
  418. package/src/services/assets/asset-processing-service/asset.factory.js +78 -81
  419. package/src/services/assets/asset-processing-service/assets.types.d.ts +1 -1
  420. package/src/services/assets/asset-processing-service/assets.types.js +1 -0
  421. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.d.ts +2 -1
  422. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.js +57 -45
  423. package/src/services/assets/asset-processing-service/browser-runtime-entry-resolution.d.ts +52 -0
  424. package/src/services/assets/asset-processing-service/browser-runtime-entry-resolution.js +115 -0
  425. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.d.ts +4 -2
  426. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.js +53 -38
  427. package/src/services/assets/asset-processing-service/finalize-processed-asset.d.ts +3 -0
  428. package/src/services/assets/asset-processing-service/finalize-processed-asset.js +5 -0
  429. package/src/services/assets/asset-processing-service/grouped-content-bundles.d.ts +2 -1
  430. package/src/services/assets/asset-processing-service/grouped-content-bundles.js +85 -60
  431. package/src/services/assets/asset-processing-service/index.d.ts +2 -0
  432. package/src/services/assets/asset-processing-service/index.js +8 -6
  433. package/src/services/assets/asset-processing-service/inline-content-script-body.d.ts +11 -0
  434. package/src/services/assets/asset-processing-service/inline-content-script-body.js +23 -0
  435. package/src/services/assets/asset-processing-service/materialize-content-script-asset.d.ts +9 -0
  436. package/src/services/assets/asset-processing-service/materialize-content-script-asset.js +22 -0
  437. package/src/services/assets/asset-processing-service/page-package.js +70 -72
  438. package/src/services/assets/asset-processing-service/processor.interface.js +7 -5
  439. package/src/services/assets/asset-processing-service/processor.registry.js +11 -14
  440. package/src/services/assets/asset-processing-service/processors/base/base-processor.js +59 -62
  441. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.d.ts +0 -2
  442. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.js +102 -130
  443. package/src/services/assets/asset-processing-service/processors/index.js +5 -5
  444. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.d.ts +8 -0
  445. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.js +111 -111
  446. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.d.ts +0 -1
  447. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.js +95 -94
  448. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.js +136 -121
  449. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.d.ts +0 -3
  450. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +26 -57
  451. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.d.ts +0 -3
  452. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.js +33 -67
  453. package/src/services/assets/asset-processing-service/processors/stylesheet/stylesheet-processor-pipeline.d.ts +2 -0
  454. package/src/services/assets/asset-processing-service/processors/stylesheet/stylesheet-processor-pipeline.js +44 -0
  455. package/src/services/assets/asset-processing-service/resolve-integration-plugin.d.ts +4 -0
  456. package/src/services/assets/asset-processing-service/resolve-integration-plugin.js +15 -0
  457. package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.d.ts +0 -1
  458. package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.js +27 -44
  459. package/src/services/assets/browser-bundle.service.d.ts +28 -30
  460. package/src/services/assets/browser-bundle.service.js +54 -40
  461. package/src/services/cache/cache.types.d.ts +4 -2
  462. package/src/services/cache/cache.types.js +5 -0
  463. package/src/services/cache/html-page-cache-dependency-index.d.ts +34 -0
  464. package/src/services/cache/html-page-cache-dependency-index.js +88 -0
  465. package/src/services/cache/index.d.ts +2 -0
  466. package/src/services/cache/index.js +8 -7
  467. package/src/services/cache/memory-cache-store.js +101 -89
  468. package/src/services/cache/page-cache-service.d.ts +31 -1
  469. package/src/services/cache/page-cache-service.js +237 -150
  470. package/src/services/cache/page-request-cache-coordinator.service.js +106 -102
  471. package/src/services/html/html-rewriter-provider.service.js +61 -61
  472. package/src/services/html/html-transformer.service.d.ts +1 -1
  473. package/src/services/html/html-transformer.service.js +249 -266
  474. package/src/services/invalidation/development-invalidation.service.d.ts +25 -2
  475. package/src/services/invalidation/development-invalidation.service.js +239 -175
  476. package/src/services/module-loading/README.md +52 -0
  477. package/src/services/module-loading/app-module-loader.service.js +1 -0
  478. package/src/services/module-loading/app-server-module-transpiler.service.d.ts +8 -0
  479. package/src/services/module-loading/app-server-module-transpiler.service.js +103 -118
  480. package/src/services/module-loading/collection-server-module-build.service.d.ts +19 -0
  481. package/src/services/module-loading/collection-server-module-build.service.js +83 -0
  482. package/src/services/module-loading/host-module-loader-registry.js +6 -11
  483. package/src/services/module-loading/module-loading-types.js +1 -0
  484. package/src/services/module-loading/page-module-import.service.d.ts +11 -13
  485. package/src/services/module-loading/page-module-import.service.js +222 -184
  486. package/src/services/module-loading/route-module-build-cache-registry.d.ts +24 -0
  487. package/src/services/module-loading/route-module-build-cache-registry.js +51 -0
  488. package/src/services/module-loading/route-module-build-cache.d.ts +4 -0
  489. package/src/services/module-loading/route-module-build-cache.js +3 -0
  490. package/src/services/module-loading/route-module-build-cache.store.d.ts +57 -0
  491. package/src/services/module-loading/route-module-build-cache.store.js +202 -0
  492. package/src/services/module-loading/route-module-build-manifest.d.ts +57 -0
  493. package/src/services/module-loading/route-module-build-manifest.js +60 -0
  494. package/src/services/module-loading/route-module-dependency-hasher.d.ts +81 -0
  495. package/src/services/module-loading/route-module-dependency-hasher.js +148 -0
  496. package/src/services/module-loading/server-module-transpiler.service.d.ts +1 -3
  497. package/src/services/module-loading/server-module-transpiler.service.js +65 -62
  498. package/src/services/module-loading/source-module-support.js +15 -7
  499. package/src/services/runtime-state/dev-graph.service.js +165 -157
  500. package/src/services/runtime-state/entrypoint-dependency-graph.service.js +85 -76
  501. package/src/services/runtime-state/server-invalidation-state.service.js +38 -30
  502. package/src/services/validation/schema-validation-service.d.ts +1 -4
  503. package/src/services/validation/schema-validation-service.js +156 -95
  504. package/src/services/validation/standard-schema.types.d.ts +9 -62
  505. package/src/services/validation/standard-schema.types.js +1 -0
  506. package/src/services/validation/validate-standard-schema.d.ts +7 -0
  507. package/src/services/validation/validate-standard-schema.js +14 -0
  508. package/src/static-site-generator/README.md +41 -0
  509. package/src/static-site-generator/production-page-browser-graph-prebuild.d.ts +32 -0
  510. package/src/static-site-generator/production-page-browser-graph-prebuild.js +57 -0
  511. package/src/static-site-generator/sitemap-routes.d.ts +14 -0
  512. package/src/static-site-generator/sitemap-routes.js +36 -0
  513. package/src/static-site-generator/sitemap.d.ts +15 -0
  514. package/src/static-site-generator/sitemap.js +42 -0
  515. package/src/static-site-generator/static-build-invalidation.d.ts +10 -0
  516. package/src/static-site-generator/static-build-invalidation.js +37 -0
  517. package/src/static-site-generator/static-export-context.d.ts +30 -0
  518. package/src/static-site-generator/static-export-context.js +1 -0
  519. package/src/static-site-generator/static-site-generator.d.ts +43 -25
  520. package/src/static-site-generator/static-site-generator.js +536 -294
  521. package/src/types/internal-types.d.ts +59 -13
  522. package/src/types/internal-types.js +1 -0
  523. package/src/types/public-types.d.ts +310 -95
  524. package/src/types/public-types.js +1 -0
  525. package/src/utils/deep-merge.js +39 -26
  526. package/src/utils/ecopages-route-info.d.ts +26 -0
  527. package/src/utils/ecopages-route-info.js +30 -0
  528. package/src/utils/hash.js +3 -6
  529. package/src/utils/html-escaping.d.ts +7 -0
  530. package/src/utils/html-escaping.js +22 -5
  531. package/src/utils/html.js +1 -4
  532. package/src/utils/invariant.js +11 -10
  533. package/src/utils/locals-utils.js +32 -22
  534. package/src/utils/parse-cli-args.d.ts +2 -0
  535. package/src/utils/parse-cli-args.js +73 -59
  536. package/src/utils/path-pattern.d.ts +23 -0
  537. package/src/utils/path-pattern.js +42 -0
  538. package/src/utils/path-utils.module.js +8 -11
  539. package/src/utils/resolve-entry-file.js +70 -38
  540. package/src/utils/resolve-work-dir.js +23 -27
  541. package/src/utils/runtime.js +24 -33
  542. package/src/utils/server-utils.module.d.ts +3 -2
  543. package/src/utils/server-utils.module.js +60 -53
  544. package/src/utils/static-file-extensions.d.ts +12 -0
  545. package/src/utils/static-file-extensions.js +54 -0
  546. package/src/watchers/project-watcher-ignore.d.ts +11 -0
  547. package/src/watchers/project-watcher-ignore.js +17 -0
  548. package/src/watchers/project-watcher.d.ts +29 -6
  549. package/src/watchers/project-watcher.js +402 -257
  550. package/src/watchers/project-watcher.test-helpers.js +45 -50
  551. package/src/adapters/shared/api-response.js +0 -96
  552. package/src/adapters/shared/application-adapter.js +0 -90
  553. package/src/adapters/shared/define-api-handler.d.ts +0 -25
  554. package/src/adapters/shared/define-api-handler.js +0 -15
  555. package/src/adapters/shared/explicit-static-render-preparation.js +0 -26
  556. package/src/adapters/shared/explicit-static-route-matcher.js +0 -101
  557. package/src/adapters/shared/file-route-middleware-pipeline.js +0 -90
  558. package/src/adapters/shared/fs-server-response-factory.js +0 -81
  559. package/src/adapters/shared/fs-server-response-matcher.js +0 -186
  560. package/src/adapters/shared/hmr-entrypoint-registrar.d.ts +0 -55
  561. package/src/adapters/shared/hmr-entrypoint-registrar.js +0 -87
  562. package/src/adapters/shared/hmr-html-response.js +0 -33
  563. package/src/adapters/shared/render-context.js +0 -93
  564. package/src/adapters/shared/runtime-app-bootstrap.js +0 -46
  565. package/src/adapters/shared/runtime-host.js +0 -0
  566. package/src/adapters/shared/server-adapter.js +0 -436
  567. package/src/adapters/shared/server-route-handler.js +0 -111
  568. package/src/adapters/shared/server-static-builder.js +0 -162
  569. package/src/adapters/shared/shared-hmr-manager.d.ts +0 -59
  570. package/src/adapters/shared/shared-hmr-manager.js +0 -241
  571. package/src/adapters/shared/static-preview-host.js +0 -0
  572. package/src/build/browser-runtime-manifest.js +0 -61
  573. package/src/build/browser-runtime-plugin-helpers.js +0 -14
  574. package/src/build/browser-runtime-plugin.js +0 -173
  575. package/src/build/build-manifest.d.ts +0 -33
  576. package/src/build/build-manifest.js +0 -49
  577. package/src/build/build-types.js +0 -0
  578. package/src/build/rolldown-adapter-helpers.js +0 -265
  579. package/src/build/rolldown-build-adapter.js +0 -65
  580. package/src/build/rolldown-dev-build-adapter.d.ts +0 -82
  581. package/src/build/rolldown-dev-build-adapter.js +0 -166
  582. package/src/build/rolldown-plugin-bridge.js +0 -199
  583. package/src/build/runtime-build-executor.d.ts +0 -21
  584. package/src/build/runtime-build-executor.js +0 -19
  585. package/src/build/runtime-build-output-normalizer.d.ts +0 -3
  586. package/src/build/runtime-build-output-normalizer.js +0 -111
  587. package/src/build/serialized-build-executor.js +0 -63
  588. package/src/build/server-side-css-shim-plugin.js +0 -35
  589. package/src/hmr/hmr.postcss.test.e2e.js +0 -31
  590. package/src/hmr/hmr.test.e2e.js +0 -43
  591. package/src/route-renderer/orchestration/component-render-context.js +0 -147
  592. package/src/route-renderer/orchestration/declared-ownership-graph.d.ts +0 -18
  593. package/src/route-renderer/orchestration/declared-ownership-graph.js +0 -34
  594. package/src/route-renderer/orchestration/foreign-subtree-execution.service.js +0 -233
  595. package/src/route-renderer/orchestration/ownership-planning.service.d.ts +0 -24
  596. package/src/route-renderer/orchestration/ownership-planning.service.js +0 -63
  597. package/src/route-renderer/orchestration/ownership-validation.service.js +0 -53
  598. package/src/route-renderer/orchestration/processed-asset-dedupe.js +0 -27
  599. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.d.ts +0 -91
  600. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.js +0 -170
  601. package/src/route-renderer/orchestration/render-output.utils.js +0 -171
  602. package/src/route-renderer/orchestration/route-render-orchestrator.js +0 -577
  603. package/src/route-renderer/orchestration/template-serialization.d.ts +0 -38
  604. package/src/route-renderer/orchestration/template-serialization.js +0 -45
  605. /package/src/adapters/shared/{runtime-host.d.ts → runtime/runtime-host.d.ts} +0 -0
  606. /package/src/{hmr/hmr.postcss.test.e2e.d.ts → adapters/shared/runtime/runtime-host.js} +0 -0
  607. /package/src/{hmr/hmr.test.e2e.d.ts → adapters/shared/runtime/static-preview-host.js} +0 -0
  608. /package/src/build/{browser-runtime-manifest.d.ts → browser/browser-runtime-manifest.d.ts} +0 -0
  609. /package/src/build/{browser-runtime-plugin-helpers.d.ts → browser/browser-runtime-plugin-helpers.d.ts} +0 -0
  610. /package/src/build/{build-types.d.ts → contracts/build-types.d.ts} +0 -0
  611. /package/src/build/{server-side-css-shim-plugin.d.ts → rolldown/server-side-css-shim-plugin.d.ts} +0 -0
@@ -0,0 +1,6 @@
1
+ export { DevTransformServer } from './dev-transform-server.js';
2
+ export type { DevTransformServerOptions } from './dev-transform-server.js';
3
+ export { DevTransformBundler } from './dev-transform-bundler.js';
4
+ export type { DevTransformBundleContributor, DevTransformBundleResult } from './types.js';
5
+ export { DevTransformVendorRegistry } from './dev-transform-vendor-registry.js';
6
+ export { resolveDevTransformModuleUrl, DEV_TRANSFORM_URL_PREFIX } from './dev-transform-url.js';
@@ -0,0 +1,4 @@
1
+ export { DevTransformServer } from './dev-transform-server.js';
2
+ export { DevTransformBundler } from './dev-transform-bundler.js';
3
+ export { DevTransformVendorRegistry } from './dev-transform-vendor-registry.js';
4
+ export { resolveDevTransformModuleUrl, DEV_TRANSFORM_URL_PREFIX } from './dev-transform-url.js';
@@ -0,0 +1,15 @@
1
+ import type { EcoBuildPlugin } from '../../build/contracts/build-types.js';
2
+ export type DevTransformBundleResult = {
3
+ code: string;
4
+ dependencies?: string[];
5
+ };
6
+ export type DevTransformBundleContributor = {
7
+ /** Returns whether this contributor owns the source module path. */
8
+ ownsModule(sourcePath: string): boolean;
9
+ /** Integration-owned plugins for one dev-transform module (boundary, MDX, etc.). */
10
+ getModulePlugins(sourcePath: string): Promise<readonly EcoBuildPlugin[]>;
11
+ /** Runtime manifest specifiers already served from `/assets/vendors/*`. */
12
+ getRuntimeSpecifierMap?(): ReadonlyMap<string, string>;
13
+ /** Plugins applied to lazy vendor prebundles (client-graph boundary, runtime rewrites). */
14
+ getVendorBundlePlugins?(): Promise<readonly EcoBuildPlugin[]>;
15
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,52 @@
1
+ # Dev toolbar (core)
2
+
3
+ Server-side wiring for the development-only in-browser inspector. Public docs: [Dev toolbar](/docs/core/dev-toolbar).
4
+
5
+ ## Boundaries
6
+
7
+ | Layer | Owns |
8
+ | ----------------------------------------- | ------------------------------------------------------------------------------------------------- |
9
+ | **Core** (`DevToolbarHost`) | Enablement, `/_dev_toolbar.js` delivery, per-route `#__ECO_DEV_MANIFEST__`, HTML script injection |
10
+ | **Client package** (`devToolbar.package`) | Dock UI, panels, and any extra apps |
11
+ | **Integrations** | Page rendering and browser assets — not toolbar dock apps |
12
+
13
+ `@ecopages/dev-toolbar` is an optional peer. Core does not import it at runtime unless `devToolbar.package` is configured. The dev manifest contract (`dev-toolbar-manifest-contract.ts`) lives in core so apps and custom toolbar clients can type the payload without installing the reference toolbar package.
14
+
15
+ ## Module map
16
+
17
+ | File | Role |
18
+ | ---------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
19
+ | `dev-toolbar-host.ts` | Enablement, manifest contribution, runtime bundling, HTML injection |
20
+ | `dev-toolbar-manifest-contract.ts` | `#__ECO_DEV_MANIFEST__` id and payload types (public: `@ecopages/core/dev-toolbar/dev-toolbar-manifest-contract`; mirrored in `@ecopages/dev-toolbar` for browser bundling) |
21
+ | `dev-toolbar-manifest.ts` | Builds and serializes the per-page dev manifest |
22
+ | `dev-toolbar-package.ts` | Resolves `devToolbar.package` bootstrap entry (`bootstrap.js`, then `.ts`) |
23
+ | `dev-toolbar-config.ts` | `isDevToolbarEnabled` — watch mode, env var, package required |
24
+ | `dev-toolbar-html-response.ts` | Adapter helpers for injecting `import '/_dev_toolbar.js'` |
25
+ | `dev-toolbar-runtime-paths.ts` | `/_dev_toolbar.js` URL and work-dir paths |
26
+ | `define-dev-tool.ts` | Config helper for bring-your-own client packages |
27
+
28
+ ## Injection order
29
+
30
+ 1. Route HTML is finalized with `#__ECO_DEV_MANIFEST__` appended to `<body>` (`route-html-finalization.service.ts`).
31
+ 2. The server adapter injects `import '/_dev_toolbar.js'` before `</html>` when the toolbar is enabled (`server-adapter.ts` → `DevToolbarHost.injectHtmlResponse`).
32
+ 3. HMR manager copies or bundles the configured client package to `/_dev_toolbar.js` during watch mode (`shared-hmr-manager.ts`).
33
+
34
+ ## Config
35
+
36
+ ```ts
37
+ import { devToolbar } from '@ecopages/dev-toolbar/config';
38
+
39
+ .setDevToolbar(devToolbar())
40
+ ```
41
+
42
+ Bring-your-own client:
43
+
44
+ ```ts
45
+ import { defineDevTool } from '@ecopages/core/dev-toolbar/define-dev-tool';
46
+
47
+ .setDevToolbar(defineDevTool('@acme/my-dev-toolbar'))
48
+ ```
49
+
50
+ Disable per project with `devToolbar: { enabled: false }`, or per process with `ECOPAGES_DEV_TOOLBAR=false`.
51
+
52
+ Parent index: [dev/README.md](../dev/README.md).
@@ -0,0 +1,21 @@
1
+ import type { DevToolbarConfig } from './dev-toolbar-config.js';
2
+ export type DefineDevToolOptions = {
3
+ /**
4
+ * Client package resolved from the application project.
5
+ *
6
+ * @example '@ecopages/dev-toolbar'
7
+ */
8
+ package: string;
9
+ /** @default true */
10
+ enabled?: boolean;
11
+ };
12
+ /**
13
+ * Builds a `devToolbar` config block for bring-your-own client packages.
14
+ *
15
+ * @remarks
16
+ * Prefer importing `devToolbar` from `@ecopages/dev-toolbar/config` for the
17
+ * official toolbar. Keep server config limited to package resolution and
18
+ * enablement; UI preferences stay in the client package.
19
+ */
20
+ export declare function defineDevTool(packageName: string): DevToolbarConfig;
21
+ export declare function defineDevTool(options: DefineDevToolOptions): DevToolbarConfig;
@@ -0,0 +1,9 @@
1
+ export function defineDevTool(packageNameOrOptions) {
2
+ if (typeof packageNameOrOptions === 'string') {
3
+ return { package: packageNameOrOptions };
4
+ }
5
+ return {
6
+ package: packageNameOrOptions.package,
7
+ ...(packageNameOrOptions.enabled === undefined ? {} : { enabled: packageNameOrOptions.enabled }),
8
+ };
9
+ }
@@ -0,0 +1,25 @@
1
+ import type { EcoPagesAppConfig } from '../types/internal-types.js';
2
+ export type DevToolbarConfig = {
3
+ /**
4
+ * Whether the in-browser dev toolbar is enabled during development.
5
+ *
6
+ * @default true when `package` is configured
7
+ */
8
+ enabled?: boolean;
9
+ /**
10
+ * Client package entry resolved from the application project.
11
+ *
12
+ * @remarks
13
+ * Install the package in the app (for example `@ecopages/dev-toolbar`) and
14
+ * point `package` at its browser bootstrap export. Core bundles that module
15
+ * to `/_dev_toolbar.js` during watch mode.
16
+ */
17
+ package?: string;
18
+ };
19
+ /**
20
+ * Returns whether the dev toolbar should be injected for the current process.
21
+ */
22
+ export declare function isDevToolbarEnabled(appConfig: Pick<EcoPagesAppConfig, 'devToolbar'>, options: {
23
+ watch: boolean;
24
+ hostOwnsDevClient?: boolean;
25
+ }): boolean;
@@ -0,0 +1,19 @@
1
+ import { getDevToolbarPackageSpec } from './dev-toolbar-package.js';
2
+ /**
3
+ * Returns whether the dev toolbar should be injected for the current process.
4
+ */
5
+ export function isDevToolbarEnabled(appConfig, options) {
6
+ if (options.hostOwnsDevClient) {
7
+ return false;
8
+ }
9
+ if (!options.watch) {
10
+ return false;
11
+ }
12
+ if (process.env.ECOPAGES_DEV_TOOLBAR === 'false') {
13
+ return false;
14
+ }
15
+ if (!getDevToolbarPackageSpec(appConfig)) {
16
+ return false;
17
+ }
18
+ return appConfig.devToolbar?.enabled !== false;
19
+ }
@@ -0,0 +1,49 @@
1
+ import type { HtmlDocumentContribution } from '../services/html/html-transformer.service.js';
2
+ import type { EcoPagesAppConfig } from '../types/internal-types.js';
3
+ import type { PagePackageResult } from '../types/public-types.js';
4
+ export type DevToolbarHostOptions = {
5
+ watch: boolean;
6
+ hostOwnsDevClient?: boolean;
7
+ };
8
+ type DevToolbarBundleService = {
9
+ bundle: (options: {
10
+ profile: 'hmr-runtime';
11
+ entrypoints: string[];
12
+ outdir: string;
13
+ naming: string;
14
+ minify: boolean;
15
+ }) => Promise<{
16
+ success: boolean;
17
+ logs: unknown;
18
+ outputs: Array<{
19
+ path: string;
20
+ }>;
21
+ }>;
22
+ };
23
+ /**
24
+ * Server-side entry point for dev toolbar config, HTML injection, manifest, and runtime bundling.
25
+ */
26
+ export declare class DevToolbarHost {
27
+ private readonly appConfig;
28
+ private readonly options;
29
+ constructor(appConfig: EcoPagesAppConfig, options: DevToolbarHostOptions);
30
+ static forApp(appConfig: EcoPagesAppConfig, options: DevToolbarHostOptions): DevToolbarHost;
31
+ isEnabled(): boolean;
32
+ getRuntimeScriptUrl(): string;
33
+ getRuntimeScriptImport(): string;
34
+ resolveRuntimeWorkDir(workDir: string): string;
35
+ shouldInjectHtml(): boolean;
36
+ injectHtmlResponse(response: Response): Promise<Response>;
37
+ buildRouteManifestContribution(input: {
38
+ routeFile: string;
39
+ integrationName: string;
40
+ pagePackage?: PagePackageResult;
41
+ }): HtmlDocumentContribution | undefined;
42
+ bundleClientRuntime(options: {
43
+ browserBundleService: DevToolbarBundleService;
44
+ workDir: string;
45
+ onFailure: (error: unknown) => void;
46
+ }): Promise<boolean>;
47
+ readBundledRuntime(workDir: string): Response | null;
48
+ }
49
+ export {};
@@ -0,0 +1,117 @@
1
+ import path from 'node:path';
2
+ import { fileSystem } from '@ecopages/file-system';
3
+ import { removeStaleHmrEntrypointOutput } from '../hmr/hmr-entrypoint-output.js';
4
+ import { isDevToolbarEnabled } from './dev-toolbar-config.js';
5
+ import { resolveConfiguredDevToolbarClient } from './dev-toolbar-package.js';
6
+ import { buildDevToolbarManifestPayload, serializeDevToolbarManifestScript } from './dev-toolbar-manifest.js';
7
+ import { DEV_TOOLBAR_RUNTIME_IMPORT, DEV_TOOLBAR_RUNTIME_SCRIPT_URL, resolveDevToolbarRuntimeWorkDir, } from './dev-toolbar-runtime-paths.js';
8
+ /**
9
+ * Server-side entry point for dev toolbar config, HTML injection, manifest, and runtime bundling.
10
+ */
11
+ export class DevToolbarHost {
12
+ appConfig;
13
+ options;
14
+ constructor(appConfig, options) {
15
+ this.appConfig = appConfig;
16
+ this.options = options;
17
+ }
18
+ static forApp(appConfig, options) {
19
+ return new DevToolbarHost(appConfig, options);
20
+ }
21
+ isEnabled() {
22
+ return isDevToolbarEnabled(this.appConfig, this.options);
23
+ }
24
+ getRuntimeScriptUrl() {
25
+ return DEV_TOOLBAR_RUNTIME_SCRIPT_URL;
26
+ }
27
+ getRuntimeScriptImport() {
28
+ return DEV_TOOLBAR_RUNTIME_IMPORT;
29
+ }
30
+ resolveRuntimeWorkDir(workDir) {
31
+ return resolveDevToolbarRuntimeWorkDir(workDir);
32
+ }
33
+ shouldInjectHtml() {
34
+ return this.isEnabled();
35
+ }
36
+ async injectHtmlResponse(response) {
37
+ const html = await response.text();
38
+ const headers = new Headers(response.headers);
39
+ headers.set('Cache-Control', 'no-store, must-revalidate');
40
+ headers.delete('Content-Length');
41
+ if (html.includes(this.getRuntimeScriptImport())) {
42
+ return new Response(html, {
43
+ status: response.status,
44
+ statusText: response.statusText,
45
+ headers,
46
+ });
47
+ }
48
+ const script = `<script type="module">${this.getRuntimeScriptImport()};</script>`;
49
+ const updatedHtml = html.replace(/<\/html>/i, `${script}</html>`);
50
+ return new Response(updatedHtml, {
51
+ status: response.status,
52
+ statusText: response.statusText,
53
+ headers,
54
+ });
55
+ }
56
+ buildRouteManifestContribution(input) {
57
+ if (!this.isEnabled()) {
58
+ return undefined;
59
+ }
60
+ const payload = buildDevToolbarManifestPayload({
61
+ routeFile: input.routeFile,
62
+ integrationName: input.integrationName,
63
+ pagePackage: input.pagePackage,
64
+ });
65
+ return {
66
+ placement: 'body-append',
67
+ html: serializeDevToolbarManifestScript(payload),
68
+ };
69
+ }
70
+ async bundleClientRuntime(options) {
71
+ if (!this.isEnabled()) {
72
+ return true;
73
+ }
74
+ const client = resolveConfiguredDevToolbarClient(this.appConfig);
75
+ if (!client) {
76
+ options.onFailure(new Error('[DevToolbar] No client package configured. Set devToolbar.package in your app config.'));
77
+ return false;
78
+ }
79
+ const runtimePath = path.join(options.workDir, path.basename(DEV_TOOLBAR_RUNTIME_SCRIPT_URL));
80
+ removeStaleHmrEntrypointOutput(runtimePath, 'DevToolbar');
81
+ try {
82
+ const result = await options.browserBundleService.bundle({
83
+ profile: 'hmr-runtime',
84
+ entrypoints: [client.entryPath],
85
+ outdir: options.workDir,
86
+ naming: path.basename(DEV_TOOLBAR_RUNTIME_SCRIPT_URL),
87
+ minify: false,
88
+ });
89
+ if (!result.success) {
90
+ options.onFailure(result.logs);
91
+ return false;
92
+ }
93
+ const emittedRuntime = result.outputs.find((output) => path.resolve(output.path) === path.resolve(runtimePath));
94
+ if (!emittedRuntime || !fileSystem.exists(runtimePath)) {
95
+ options.onFailure(new Error(`[DevToolbar] Runtime bundle missing expected output at ${runtimePath}`));
96
+ return false;
97
+ }
98
+ return true;
99
+ }
100
+ catch (error) {
101
+ options.onFailure(error);
102
+ return false;
103
+ }
104
+ }
105
+ readBundledRuntime(workDir) {
106
+ const runtimePath = path.join(workDir, path.basename(DEV_TOOLBAR_RUNTIME_SCRIPT_URL));
107
+ if (!fileSystem.exists(runtimePath)) {
108
+ return null;
109
+ }
110
+ return new Response(fileSystem.readFileAsBuffer(runtimePath), {
111
+ headers: {
112
+ 'Content-Type': 'application/javascript',
113
+ 'Cache-Control': 'no-store, must-revalidate',
114
+ },
115
+ });
116
+ }
117
+ }
@@ -0,0 +1,11 @@
1
+ import type { EcoPagesAppConfig } from '../types/internal-types.js';
2
+ import { type DevToolbarHostOptions } from './dev-toolbar-host.js';
3
+ export { DEV_TOOLBAR_RUNTIME_IMPORT } from './dev-toolbar-runtime-paths.js';
4
+ /**
5
+ * Returns whether HTML responses should receive the dev toolbar bootstrap.
6
+ */
7
+ export declare function shouldInjectDevToolbarHtmlResponse(appConfig: EcoPagesAppConfig, options: DevToolbarHostOptions): boolean;
8
+ /**
9
+ * Injects the development dev toolbar runtime script into an HTML response if it is not already present.
10
+ */
11
+ export declare function injectDevToolbarIntoHtmlResponse(appConfig: EcoPagesAppConfig, options: DevToolbarHostOptions, response: Response): Promise<Response>;
@@ -0,0 +1,14 @@
1
+ import { DevToolbarHost } from './dev-toolbar-host.js';
2
+ export { DEV_TOOLBAR_RUNTIME_IMPORT } from './dev-toolbar-runtime-paths.js';
3
+ /**
4
+ * Returns whether HTML responses should receive the dev toolbar bootstrap.
5
+ */
6
+ export function shouldInjectDevToolbarHtmlResponse(appConfig, options) {
7
+ return DevToolbarHost.forApp(appConfig, options).shouldInjectHtml();
8
+ }
9
+ /**
10
+ * Injects the development dev toolbar runtime script into an HTML response if it is not already present.
11
+ */
12
+ export async function injectDevToolbarIntoHtmlResponse(appConfig, options, response) {
13
+ return DevToolbarHost.forApp(appConfig, options).injectHtmlResponse(response);
14
+ }
@@ -0,0 +1,22 @@
1
+ /** DOM id core uses when injecting `#__ECO_DEV_MANIFEST__` during watch mode. */
2
+ export declare const DEV_MANIFEST_ELEMENT_ID = "__ECO_DEV_MANIFEST__";
3
+ export type DevManifestAsset = {
4
+ srcUrl?: string;
5
+ kind: 'script' | 'stylesheet';
6
+ packageRole?: string;
7
+ inline?: boolean;
8
+ };
9
+ export type DevManifestPageBrowserGraph = {
10
+ entryAssets: DevManifestAsset[];
11
+ chunkAssets: DevManifestAsset[];
12
+ };
13
+ /**
14
+ * Server-serialized development metadata injected into HTML responses.
15
+ */
16
+ export type EcoDevManifest = {
17
+ route: string;
18
+ integration?: string;
19
+ pageBrowserGraph?: DevManifestPageBrowserGraph;
20
+ vendorUrls: string[];
21
+ devTransformUrls: string[];
22
+ };
@@ -0,0 +1,2 @@
1
+ /** DOM id core uses when injecting `#__ECO_DEV_MANIFEST__` during watch mode. */
2
+ export const DEV_MANIFEST_ELEMENT_ID = '__ECO_DEV_MANIFEST__';
@@ -0,0 +1,15 @@
1
+ import type { PagePackageResult } from '../types/public-types.js';
2
+ import { DEV_MANIFEST_ELEMENT_ID, type DevManifestAsset, type EcoDevManifest } from './dev-toolbar-manifest-contract.js';
3
+ export { DEV_MANIFEST_ELEMENT_ID, type DevManifestAsset as DevToolbarManifestAsset, type EcoDevManifest as DevToolbarManifestPayload, };
4
+ /**
5
+ * Builds the dev toolbar manifest payload for one rendered page.
6
+ */
7
+ export declare function buildDevToolbarManifestPayload(input: {
8
+ routeFile: string;
9
+ integrationName?: string;
10
+ pagePackage?: PagePackageResult;
11
+ }): EcoDevManifest;
12
+ /**
13
+ * Serializes the dev toolbar manifest as an HTML contribution snippet.
14
+ */
15
+ export declare function serializeDevToolbarManifestScript(payload: EcoDevManifest): string;
@@ -0,0 +1,52 @@
1
+ import { DEV_TRANSFORM_URL_PREFIX, VENDOR_URL_PREFIX } from '../hmr/hmr-asset-paths.js';
2
+ import { DEV_MANIFEST_ELEMENT_ID, } from './dev-toolbar-manifest-contract.js';
3
+ export { DEV_MANIFEST_ELEMENT_ID, };
4
+ function serializeAsset(asset) {
5
+ if (!asset.srcUrl) {
6
+ return undefined;
7
+ }
8
+ return {
9
+ srcUrl: asset.srcUrl,
10
+ kind: asset.kind,
11
+ packageRole: asset.packageRole,
12
+ inline: asset.inline,
13
+ };
14
+ }
15
+ function collectUrlsFromAssets(assets, prefix) {
16
+ const urls = new Set();
17
+ for (const asset of assets) {
18
+ if (asset.srcUrl?.startsWith(prefix)) {
19
+ urls.add(asset.srcUrl);
20
+ }
21
+ }
22
+ return [...urls];
23
+ }
24
+ /**
25
+ * Builds the dev toolbar manifest payload for one rendered page.
26
+ */
27
+ export function buildDevToolbarManifestPayload(input) {
28
+ const assets = input.pagePackage?.assets ?? [];
29
+ const graph = input.pagePackage?.pageBrowserGraph;
30
+ return {
31
+ route: input.routeFile,
32
+ integration: input.integrationName,
33
+ pageBrowserGraph: graph
34
+ ? {
35
+ entryAssets: graph.entryAssets
36
+ .map((asset) => serializeAsset(asset))
37
+ .filter((asset) => asset !== undefined),
38
+ chunkAssets: graph.chunkAssets
39
+ .map((asset) => serializeAsset(asset))
40
+ .filter((asset) => asset !== undefined),
41
+ }
42
+ : undefined,
43
+ vendorUrls: collectUrlsFromAssets(assets, VENDOR_URL_PREFIX),
44
+ devTransformUrls: collectUrlsFromAssets(assets, DEV_TRANSFORM_URL_PREFIX),
45
+ };
46
+ }
47
+ /**
48
+ * Serializes the dev toolbar manifest as an HTML contribution snippet.
49
+ */
50
+ export function serializeDevToolbarManifestScript(payload) {
51
+ return `<script type="application/json" id="${DEV_MANIFEST_ELEMENT_ID}">${JSON.stringify(payload)}</script>`;
52
+ }
@@ -0,0 +1,34 @@
1
+ import type { EcoPagesAppConfig } from '../types/internal-types.js';
2
+ export type DevToolbarClientResolution = {
3
+ entryPath: string;
4
+ };
5
+ /**
6
+ * Returns the configured dev-toolbar client package specifier, if any.
7
+ */
8
+ export declare function getDevToolbarPackageSpec(appConfig: Pick<EcoPagesAppConfig, 'devToolbar'>): string | undefined;
9
+ /**
10
+ * Resolves the dev-toolbar package root from an application project directory.
11
+ *
12
+ * @remarks Walks up from the package entry rather than resolving `package.json`
13
+ * directly so packages with strict `exports` (no `./package.json` subpath) still work.
14
+ */
15
+ export declare function resolveDevToolbarPackageRoot(rootDir: string, packageSpec: string): string;
16
+ /**
17
+ * Resolves the browser entrypoint core bundles into `/_dev_toolbar.js`.
18
+ *
19
+ * @remarks Prefers `src/bootstrap.js` when present (published npm or `file:` to
20
+ * `dist`), then `bootstrap.ts` for workspace source checkouts.
21
+ */
22
+ export declare function resolveDevToolbarClient(rootDir: string, packageSpec: string): DevToolbarClientResolution | undefined;
23
+ /**
24
+ * Resolves the configured dev-toolbar client for an app config, when present.
25
+ */
26
+ export declare function resolveConfiguredDevToolbarClient(appConfig: EcoPagesAppConfig): DevToolbarClientResolution | undefined;
27
+ /**
28
+ * Resolves a dev-toolbar client entry module from the application project root.
29
+ */
30
+ export declare function resolveDevToolbarPackageEntry(rootDir: string, packageSpec: string): string;
31
+ /**
32
+ * Resolves the configured dev-toolbar entry for an app config, when present.
33
+ */
34
+ export declare function resolveConfiguredDevToolbarEntry(appConfig: EcoPagesAppConfig): string | undefined;
@@ -0,0 +1,78 @@
1
+ import { createRequire } from 'node:module';
2
+ import path from 'node:path';
3
+ import { fileSystem } from '@ecopages/file-system';
4
+ const SOURCE_CLIENT_FILE = 'src/bootstrap.ts';
5
+ const COMPILED_CLIENT_FILE = 'src/bootstrap.js';
6
+ /**
7
+ * Returns the configured dev-toolbar client package specifier, if any.
8
+ */
9
+ export function getDevToolbarPackageSpec(appConfig) {
10
+ const spec = appConfig.devToolbar?.package?.trim();
11
+ return spec || undefined;
12
+ }
13
+ /**
14
+ * Resolves the dev-toolbar package root from an application project directory.
15
+ *
16
+ * @remarks Walks up from the package entry rather than resolving `package.json`
17
+ * directly so packages with strict `exports` (no `./package.json` subpath) still work.
18
+ */
19
+ export function resolveDevToolbarPackageRoot(rootDir, packageSpec) {
20
+ const require = createRequire(path.join(rootDir, 'package.json'));
21
+ let dir = path.dirname(require.resolve(packageSpec));
22
+ while (dir !== path.dirname(dir)) {
23
+ if (fileSystem.exists(path.join(dir, 'package.json'))) {
24
+ return dir;
25
+ }
26
+ dir = path.dirname(dir);
27
+ }
28
+ throw new Error(`Could not resolve package root for ${packageSpec}`);
29
+ }
30
+ /**
31
+ * Resolves the browser entrypoint core bundles into `/_dev_toolbar.js`.
32
+ *
33
+ * @remarks Prefers `src/bootstrap.js` when present (published npm or `file:` to
34
+ * `dist`), then `bootstrap.ts` for workspace source checkouts.
35
+ */
36
+ export function resolveDevToolbarClient(rootDir, packageSpec) {
37
+ const require = createRequire(path.join(rootDir, 'package.json'));
38
+ const packageRoot = resolveDevToolbarPackageRoot(rootDir, packageSpec);
39
+ const entryCandidates = [path.join(packageRoot, COMPILED_CLIENT_FILE), path.join(packageRoot, SOURCE_CLIENT_FILE)];
40
+ for (const entryPath of entryCandidates) {
41
+ if (fileSystem.exists(entryPath)) {
42
+ return { entryPath };
43
+ }
44
+ }
45
+ try {
46
+ return { entryPath: require.resolve(packageSpec) };
47
+ }
48
+ catch {
49
+ return undefined;
50
+ }
51
+ }
52
+ /**
53
+ * Resolves the configured dev-toolbar client for an app config, when present.
54
+ */
55
+ export function resolveConfiguredDevToolbarClient(appConfig) {
56
+ const packageSpec = getDevToolbarPackageSpec(appConfig);
57
+ if (!packageSpec) {
58
+ return undefined;
59
+ }
60
+ return resolveDevToolbarClient(appConfig.absolutePaths.projectDir, packageSpec);
61
+ }
62
+ /**
63
+ * Resolves a dev-toolbar client entry module from the application project root.
64
+ */
65
+ export function resolveDevToolbarPackageEntry(rootDir, packageSpec) {
66
+ const client = resolveDevToolbarClient(rootDir, packageSpec);
67
+ if (!client) {
68
+ const require = createRequire(path.join(rootDir, 'package.json'));
69
+ return require.resolve(packageSpec);
70
+ }
71
+ return client.entryPath;
72
+ }
73
+ /**
74
+ * Resolves the configured dev-toolbar entry for an app config, when present.
75
+ */
76
+ export function resolveConfiguredDevToolbarEntry(appConfig) {
77
+ return resolveConfiguredDevToolbarClient(appConfig)?.entryPath;
78
+ }
@@ -0,0 +1,10 @@
1
+ /** On-disk work directory segment for the bundled dev toolbar client runtime. */
2
+ export declare const DEV_TOOLBAR_RUNTIME_WORK_DIR_SEGMENT = "dev-toolbar-runtime";
3
+ /** Browser URL for the bundled dev toolbar client runtime script. */
4
+ export declare const DEV_TOOLBAR_RUNTIME_SCRIPT_URL = "/_dev_toolbar.js";
5
+ /** Module import emitted into dev HTML responses. */
6
+ export declare const DEV_TOOLBAR_RUNTIME_IMPORT = "import '/_dev_toolbar.js'";
7
+ /**
8
+ * Absolute work-directory path for dev toolbar runtime artifacts under an app work dir.
9
+ */
10
+ export declare function resolveDevToolbarRuntimeWorkDir(workDir: string): string;
@@ -0,0 +1,13 @@
1
+ import { RESOLVED_ASSETS_DIR } from '../config/constants.js';
2
+ /** On-disk work directory segment for the bundled dev toolbar client runtime. */
3
+ export const DEV_TOOLBAR_RUNTIME_WORK_DIR_SEGMENT = 'dev-toolbar-runtime';
4
+ /** Browser URL for the bundled dev toolbar client runtime script. */
5
+ export const DEV_TOOLBAR_RUNTIME_SCRIPT_URL = '/_dev_toolbar.js';
6
+ /** Module import emitted into dev HTML responses. */
7
+ export const DEV_TOOLBAR_RUNTIME_IMPORT = `import '${DEV_TOOLBAR_RUNTIME_SCRIPT_URL}'`;
8
+ /**
9
+ * Absolute work-directory path for dev toolbar runtime artifacts under an app work dir.
10
+ */
11
+ export function resolveDevToolbarRuntimeWorkDir(workDir) {
12
+ return `${workDir}/${RESOLVED_ASSETS_DIR}/${DEV_TOOLBAR_RUNTIME_WORK_DIR_SEGMENT}`;
13
+ }
@@ -0,0 +1,18 @@
1
+ import type { BuildResult } from '../build/build-adapter.js';
2
+ /**
3
+ * Per-request browser build dedupe cache.
4
+ *
5
+ * @remarks
6
+ * `DedupingBuildExecutor` only coalesces concurrent identical builds. Asset
7
+ * processing can call the same logical bundle several times in one request
8
+ * (page graph, HMR, content scripts) after the first build settles. This cache
9
+ * reuses the settled result until the request scope ends.
10
+ */
11
+ declare class RequestBuildDedupe {
12
+ private readonly storage;
13
+ run<T>(fn: () => Promise<T>): Promise<T>;
14
+ dedupeBuild(key: string, build: () => Promise<BuildResult>): Promise<BuildResult>;
15
+ getCachedCountForTests(): number;
16
+ }
17
+ export declare const requestBuildDedupe: RequestBuildDedupe;
18
+ export {};
@@ -0,0 +1,39 @@
1
+ import { AsyncLocalStorage } from 'node:async_hooks';
2
+ /**
3
+ * Per-request browser build dedupe cache.
4
+ *
5
+ * @remarks
6
+ * `DedupingBuildExecutor` only coalesces concurrent identical builds. Asset
7
+ * processing can call the same logical bundle several times in one request
8
+ * (page graph, HMR, content scripts) after the first build settles. This cache
9
+ * reuses the settled result until the request scope ends.
10
+ */
11
+ class RequestBuildDedupe {
12
+ storage = new AsyncLocalStorage();
13
+ run(fn) {
14
+ if (this.storage.getStore()) {
15
+ return fn();
16
+ }
17
+ return this.storage.run(new Map(), fn);
18
+ }
19
+ dedupeBuild(key, build) {
20
+ const store = this.storage.getStore();
21
+ if (!store) {
22
+ return build();
23
+ }
24
+ const existing = store.get(key);
25
+ if (existing) {
26
+ return existing;
27
+ }
28
+ const buildPromise = build().catch((error) => {
29
+ store.delete(key);
30
+ throw error;
31
+ });
32
+ store.set(key, buildPromise);
33
+ return buildPromise;
34
+ }
35
+ getCachedCountForTests() {
36
+ return this.storage.getStore()?.size ?? 0;
37
+ }
38
+ }
39
+ export const requestBuildDedupe = new RequestBuildDedupe();