@ecopages/core 0.2.0-beta.9 → 0.2.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (624) hide show
  1. package/README.md +42 -13
  2. package/package.json +360 -57
  3. package/src/adapters/README.md +6 -2
  4. package/src/adapters/abstract/application-adapter.d.ts +57 -5
  5. package/src/adapters/abstract/application-adapter.js +261 -203
  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 +13 -2
  10. package/src/adapters/abstract/server-adapter.js +22 -14
  11. package/src/adapters/abstract/ws-pattern-matcher.d.ts +2 -50
  12. package/src/adapters/abstract/ws-pattern-matcher.js +24 -57
  13. package/src/adapters/bun/bun-user-websocket-lifecycle.js +93 -0
  14. package/src/adapters/bun/client-bridge.js +51 -50
  15. package/src/adapters/bun/create-app.d.ts +4 -6
  16. package/src/adapters/bun/create-app.js +169 -154
  17. package/src/adapters/bun/hmr-manager.d.ts +2 -3
  18. package/src/adapters/bun/hmr-manager.js +62 -57
  19. package/src/adapters/bun/index.d.ts +1 -1
  20. package/src/adapters/bun/index.js +2 -8
  21. package/src/adapters/bun/runtime-host.d.ts +1 -1
  22. package/src/adapters/bun/runtime-host.js +61 -54
  23. package/src/adapters/bun/server-adapter.d.ts +34 -53
  24. package/src/adapters/bun/server-adapter.js +557 -637
  25. package/src/adapters/bun/static-preview-host.d.ts +1 -1
  26. package/src/adapters/bun/static-preview-host.js +43 -41
  27. package/src/adapters/create-app.d.ts +1 -12
  28. package/src/adapters/create-app.js +11 -72
  29. package/src/adapters/index.d.ts +2 -2
  30. package/src/adapters/index.js +2 -8
  31. package/src/adapters/node/create-app.d.ts +4 -3
  32. package/src/adapters/node/create-app.js +123 -98
  33. package/src/adapters/node/http-request-bridge.js +147 -106
  34. package/src/adapters/node/node-client-bridge.js +62 -64
  35. package/src/adapters/node/node-hmr-manager.d.ts +2 -3
  36. package/src/adapters/node/node-hmr-manager.js +58 -48
  37. package/src/adapters/node/runtime-host.d.ts +1 -1
  38. package/src/adapters/node/runtime-host.js +96 -89
  39. package/src/adapters/node/server-adapter-dependencies.js +18 -17
  40. package/src/adapters/node/server-adapter.d.ts +28 -8
  41. package/src/adapters/node/server-adapter.js +349 -302
  42. package/src/adapters/node/static-content-server.js +172 -186
  43. package/src/adapters/node/static-preview-host.d.ts +1 -1
  44. package/src/adapters/node/static-preview-host.js +88 -64
  45. package/src/adapters/shared/hmr/dev-transform-entrypoint-registry.d.ts +16 -0
  46. package/src/adapters/shared/hmr/dev-transform-entrypoint-registry.js +32 -0
  47. package/src/adapters/shared/{hmr-html-response.d.ts → hmr/hmr-html-response.d.ts} +2 -2
  48. package/src/adapters/shared/hmr/hmr-html-response.js +50 -0
  49. package/src/adapters/shared/hmr/shared-hmr-manager.d.ts +92 -0
  50. package/src/adapters/shared/hmr/shared-hmr-manager.js +446 -0
  51. package/src/adapters/shared/http/api-request-pipeline.d.ts +23 -0
  52. package/src/adapters/shared/http/api-request-pipeline.js +132 -0
  53. package/src/adapters/shared/{api-response.d.ts → http/api-response.d.ts} +1 -1
  54. package/src/adapters/shared/http/api-response.js +79 -0
  55. package/src/adapters/shared/http/create-body-response.d.ts +12 -0
  56. package/src/adapters/shared/http/create-body-response.js +26 -0
  57. package/src/adapters/shared/http/define-api-handler.d.ts +90 -0
  58. package/src/adapters/shared/http/define-api-handler.js +49 -0
  59. package/src/adapters/shared/{explicit-static-render-preparation.d.ts → http/explicit-static-render-preparation.d.ts} +3 -3
  60. package/src/adapters/shared/http/explicit-static-render-preparation.js +29 -0
  61. package/src/adapters/shared/{explicit-static-route-matcher.d.ts → http/explicit-static-route-matcher.d.ts} +3 -9
  62. package/src/adapters/shared/http/explicit-static-route-matcher.js +59 -0
  63. package/src/adapters/shared/{file-route-middleware-pipeline.d.ts → http/file-route-middleware-pipeline.d.ts} +2 -2
  64. package/src/adapters/shared/http/file-route-middleware-pipeline.js +84 -0
  65. package/src/adapters/shared/{fs-server-response-factory.d.ts → http/fs-server-response-factory.d.ts} +7 -2
  66. package/src/adapters/shared/http/fs-server-response-factory.js +106 -0
  67. package/src/adapters/shared/{fs-server-response-matcher.d.ts → http/fs-server-response-matcher.d.ts} +25 -5
  68. package/src/adapters/shared/http/fs-server-response-matcher.js +260 -0
  69. package/src/adapters/shared/http/run-middleware-chain.d.ts +5 -0
  70. package/src/adapters/shared/http/run-middleware-chain.js +17 -0
  71. package/src/adapters/shared/{application-adapter.d.ts → runtime/application-adapter.d.ts} +2 -2
  72. package/src/adapters/shared/runtime/application-adapter.js +75 -0
  73. package/src/adapters/shared/runtime/collect-dev-prewarm-plan.d.ts +11 -0
  74. package/src/adapters/shared/runtime/collect-dev-prewarm-plan.js +29 -0
  75. package/src/adapters/shared/runtime/copy-runtime-public-dir.js +27 -0
  76. package/src/adapters/shared/runtime/dev-static-route-prewarm.d.ts +16 -0
  77. package/src/adapters/shared/runtime/dev-static-route-prewarm.js +66 -0
  78. package/src/adapters/shared/runtime/port-manager.d.ts +116 -0
  79. package/src/adapters/shared/runtime/port-manager.js +226 -0
  80. package/src/adapters/shared/{render-context.d.ts → runtime/render-context.d.ts} +2 -2
  81. package/src/adapters/shared/runtime/render-context.js +99 -0
  82. package/src/adapters/shared/{runtime-app-bootstrap.d.ts → runtime/runtime-app-bootstrap.d.ts} +4 -2
  83. package/src/adapters/shared/runtime/runtime-app-bootstrap.js +38 -0
  84. package/src/adapters/shared/runtime/runtime-server-lifecycle.d.ts +45 -0
  85. package/src/adapters/shared/runtime/runtime-server-lifecycle.js +71 -0
  86. package/src/adapters/shared/{server-adapter.d.ts → runtime/server-adapter.d.ts} +31 -50
  87. package/src/adapters/shared/runtime/server-adapter.js +301 -0
  88. package/src/adapters/shared/{server-route-handler.d.ts → runtime/server-route-handler.d.ts} +6 -33
  89. package/src/adapters/shared/runtime/server-route-handler.js +77 -0
  90. package/src/adapters/shared/{server-static-builder.d.ts → runtime/server-static-builder.d.ts} +26 -31
  91. package/src/adapters/shared/runtime/server-static-builder.js +172 -0
  92. package/src/adapters/shared/{static-preview-host.d.ts → runtime/static-preview-host.d.ts} +6 -1
  93. package/src/adapters/shared/{node-http-websocket-upgrades.d.ts → ws/node-http-websocket-upgrades.d.ts} +1 -1
  94. package/src/adapters/shared/ws/node-http-websocket-upgrades.js +109 -0
  95. package/src/adapters/shared/ws/websocket-lifecycle.d.ts +24 -0
  96. package/src/adapters/shared/ws/websocket-lifecycle.js +62 -0
  97. package/src/build/README.md +165 -45
  98. package/src/build/app-build-manifest-runtime.d.ts +39 -0
  99. package/src/build/app-build-manifest-runtime.js +145 -0
  100. package/src/build/{browser-runtime-manifest.d.ts → browser/browser-runtime-manifest.d.ts} +4 -0
  101. package/src/build/browser/browser-runtime-manifest.js +65 -0
  102. package/src/build/{browser-runtime-plugin-helpers.d.ts → browser/browser-runtime-plugin-helpers.d.ts} +3 -5
  103. package/src/build/browser/browser-runtime-plugin-helpers.js +32 -0
  104. package/src/build/{browser-runtime-plugin.d.ts → browser/browser-runtime-plugin.d.ts} +12 -13
  105. package/src/build/browser/browser-runtime-plugin.js +218 -0
  106. package/src/build/browser/jsx-ownership-plugins.d.ts +24 -0
  107. package/src/build/browser/jsx-ownership-plugins.js +55 -0
  108. package/src/build/browser/lit-static-render-worker-context.d.ts +2 -0
  109. package/src/build/browser/lit-static-render-worker-context.js +4 -0
  110. package/src/build/build-adapter.d.ts +25 -355
  111. package/src/build/build-adapter.js +258 -265
  112. package/src/build/{build-input-fingerprint.d.ts → cache/build-input-fingerprint.d.ts} +3 -3
  113. package/src/build/cache/build-input-fingerprint.js +33 -0
  114. package/src/build/cache/cache-constants.d.ts +4 -0
  115. package/src/build/cache/cache-constants.js +4 -0
  116. package/src/build/cache/cache-keys.d.ts +22 -0
  117. package/src/build/cache/cache-keys.js +71 -0
  118. package/src/build/{pages-unified-graph-build.d.ts → cache/pages-unified-graph-build.d.ts} +1 -1
  119. package/src/build/cache/pages-unified-graph-build.js +199 -0
  120. package/src/build/cache/production-build-cache.d.ts +21 -0
  121. package/src/build/cache/production-build-cache.js +56 -0
  122. package/src/build/{server-entry-build-cache.d.ts → cache/server-entry-build-cache.d.ts} +3 -4
  123. package/src/build/cache/server-entry-build-cache.js +153 -0
  124. package/src/build/contracts/build-contracts.d.ts +96 -0
  125. package/src/build/contracts/build-contracts.js +1 -0
  126. package/src/build/contracts/build-manifest.d.ts +90 -0
  127. package/src/build/contracts/build-manifest.js +64 -0
  128. package/src/build/contracts/build-types.js +1 -0
  129. package/src/build/contracts/content-virtual-modules.d.ts +12 -0
  130. package/src/build/contracts/content-virtual-modules.js +29 -0
  131. package/src/build/{rolldown-adapter-helpers.d.ts → rolldown/rolldown-adapter-helpers.d.ts} +32 -9
  132. package/src/build/rolldown/rolldown-adapter-helpers.js +463 -0
  133. package/src/build/{rolldown-build-adapter.d.ts → rolldown/rolldown-build-adapter.d.ts} +3 -7
  134. package/src/build/rolldown/rolldown-build-adapter.js +57 -0
  135. package/src/build/{rolldown-build-invocation-metrics.d.ts → rolldown/rolldown-build-invocation-metrics.d.ts} +1 -1
  136. package/src/build/rolldown/rolldown-build-invocation-metrics.js +39 -0
  137. package/src/build/{rolldown-plugin-bridge.d.ts → rolldown/rolldown-plugin-bridge.d.ts} +7 -2
  138. package/src/build/rolldown/rolldown-plugin-bridge.js +284 -0
  139. package/src/build/{rolldown-source-transform-pass.d.ts → rolldown/rolldown-source-transform-pass.d.ts} +1 -1
  140. package/src/build/rolldown/rolldown-source-transform-pass.js +70 -0
  141. package/src/build/rolldown/runtime-build-output-normalizer.js +253 -0
  142. package/src/build/rolldown/server-side-css-shim-plugin.js +58 -0
  143. package/src/build/runtime/build-profile-options.d.ts +7 -0
  144. package/src/build/runtime/build-profile-options.js +37 -0
  145. package/src/build/runtime/build-request-identity.d.ts +17 -0
  146. package/src/build/runtime/build-request-identity.js +79 -0
  147. package/src/build/runtime/build-request-policy.d.ts +58 -0
  148. package/src/build/runtime/build-request-policy.js +84 -0
  149. package/src/build/runtime/build-runtime.d.ts +28 -0
  150. package/src/build/runtime/build-runtime.js +75 -0
  151. package/src/build/runtime/deduping-build-executor.d.ts +21 -0
  152. package/src/build/runtime/deduping-build-executor.js +40 -0
  153. package/src/build/{parallel-build-executor.d.ts → runtime/parallel-build-executor.d.ts} +1 -1
  154. package/src/build/runtime/parallel-build-executor.js +60 -0
  155. package/src/build/{serialized-build-executor.d.ts → runtime/serialized-build-executor.d.ts} +1 -1
  156. package/src/build/runtime/serialized-build-executor.js +79 -0
  157. package/src/cache/index.d.ts +2 -1
  158. package/src/cache/index.js +7 -6
  159. package/src/cache/module-parse-cache.d.ts +5 -0
  160. package/src/cache/module-parse-cache.js +122 -67
  161. package/src/cache/module-transform-profiler.d.ts +8 -0
  162. package/src/cache/module-transform-profiler.js +8 -0
  163. package/src/client/navigation-scripts/classification.d.ts +16 -0
  164. package/src/client/navigation-scripts/classification.js +49 -0
  165. package/src/client/navigation-scripts/index.d.ts +3 -0
  166. package/src/client/navigation-scripts/index.js +3 -0
  167. package/src/client/navigation-scripts/navigation-scripts.test.browser.d.ts +1 -0
  168. package/src/client/navigation-scripts/navigation-scripts.test.browser.js +61 -0
  169. package/src/client/navigation-scripts/registry.d.ts +11 -0
  170. package/src/client/navigation-scripts/registry.js +16 -0
  171. package/src/client/navigation-scripts/rerun-queue.d.ts +37 -0
  172. package/src/client/navigation-scripts/rerun-queue.js +90 -0
  173. package/src/client/scroll.d.ts +17 -0
  174. package/src/client/scroll.js +33 -0
  175. package/src/client/scroll.test.browser.d.ts +1 -0
  176. package/src/client/scroll.test.browser.js +31 -0
  177. package/src/client/view-transitions.d.ts +32 -0
  178. package/src/client/view-transitions.js +120 -0
  179. package/src/client/view-transitions.test.browser.d.ts +1 -0
  180. package/src/client/view-transitions.test.browser.js +56 -0
  181. package/src/config/README.md +1 -1
  182. package/src/config/config-builder.d.ts +40 -20
  183. package/src/config/config-builder.js +645 -610
  184. package/src/config/constants.d.ts +1 -0
  185. package/src/config/constants.js +44 -23
  186. package/src/declarations.d.ts +1 -0
  187. package/src/dev/README.md +24 -0
  188. package/src/dev/client-bridge-registry.d.ts +5 -0
  189. package/src/dev/client-bridge-registry.js +10 -0
  190. package/src/dev/dev-client-ownership.d.ts +7 -0
  191. package/src/dev/dev-client-ownership.js +8 -0
  192. package/src/dev/hmr-manager-registry.d.ts +8 -0
  193. package/src/dev/hmr-manager-registry.js +10 -0
  194. package/src/dev/host-runtime.d.ts +3 -0
  195. package/src/dev/host-runtime.js +25 -23
  196. package/src/dev/runtime-server-started-message.d.ts +2 -0
  197. package/src/dev/runtime-server-started-message.js +3 -0
  198. package/src/dev/sc-server.js +106 -103
  199. package/src/dev/transform-server/dev-transform-bundler.d.ts +24 -0
  200. package/src/dev/transform-server/dev-transform-bundler.js +79 -0
  201. package/src/dev/transform-server/dev-transform-externalize-plugin.d.ts +12 -0
  202. package/src/dev/transform-server/dev-transform-externalize-plugin.js +29 -0
  203. package/src/dev/transform-server/dev-transform-import-rewriter.d.ts +16 -0
  204. package/src/dev/transform-server/dev-transform-import-rewriter.js +127 -0
  205. package/src/dev/transform-server/dev-transform-module-kind.d.ts +13 -0
  206. package/src/dev/transform-server/dev-transform-module-kind.js +17 -0
  207. package/src/dev/transform-server/dev-transform-runtime-specifiers.d.ts +5 -0
  208. package/src/dev/transform-server/dev-transform-runtime-specifiers.js +16 -0
  209. package/src/dev/transform-server/dev-transform-server.d.ts +41 -0
  210. package/src/dev/transform-server/dev-transform-server.js +191 -0
  211. package/src/dev/transform-server/dev-transform-url.d.ts +13 -0
  212. package/src/dev/transform-server/dev-transform-url.js +58 -0
  213. package/src/dev/transform-server/dev-transform-vendor-registry.d.ts +28 -0
  214. package/src/dev/transform-server/dev-transform-vendor-registry.js +166 -0
  215. package/src/dev/transform-server/index.d.ts +6 -0
  216. package/src/dev/transform-server/index.js +4 -0
  217. package/src/dev/transform-server/types.d.ts +15 -0
  218. package/src/dev/transform-server/types.js +1 -0
  219. package/src/dev-toolbar/README.md +52 -0
  220. package/src/dev-toolbar/define-dev-tool.d.ts +21 -0
  221. package/src/dev-toolbar/define-dev-tool.js +9 -0
  222. package/src/dev-toolbar/dev-toolbar-config.d.ts +25 -0
  223. package/src/dev-toolbar/dev-toolbar-config.js +19 -0
  224. package/src/dev-toolbar/dev-toolbar-host.d.ts +49 -0
  225. package/src/dev-toolbar/dev-toolbar-host.js +117 -0
  226. package/src/dev-toolbar/dev-toolbar-html-response.d.ts +11 -0
  227. package/src/dev-toolbar/dev-toolbar-html-response.js +14 -0
  228. package/src/dev-toolbar/dev-toolbar-manifest-contract.d.ts +22 -0
  229. package/src/dev-toolbar/dev-toolbar-manifest-contract.js +2 -0
  230. package/src/dev-toolbar/dev-toolbar-manifest.d.ts +15 -0
  231. package/src/dev-toolbar/dev-toolbar-manifest.js +52 -0
  232. package/src/dev-toolbar/dev-toolbar-package.d.ts +34 -0
  233. package/src/dev-toolbar/dev-toolbar-package.js +78 -0
  234. package/src/dev-toolbar/dev-toolbar-runtime-paths.d.ts +10 -0
  235. package/src/dev-toolbar/dev-toolbar-runtime-paths.js +13 -0
  236. package/src/diagnostics/request-build-dedupe.d.ts +18 -0
  237. package/src/diagnostics/request-build-dedupe.js +39 -0
  238. package/src/diagnostics/request-pipeline-metrics.d.ts +38 -0
  239. package/src/diagnostics/request-pipeline-metrics.js +121 -0
  240. package/src/diagnostics/startup-trace.d.ts +81 -0
  241. package/src/diagnostics/startup-trace.js +281 -0
  242. package/src/eco/README.md +17 -0
  243. package/src/eco/component-identity.d.ts +13 -0
  244. package/src/eco/component-identity.js +18 -0
  245. package/src/eco/eco-declared-component.d.ts +15 -0
  246. package/src/eco/eco-declared-component.js +23 -0
  247. package/src/eco/eco.browser.js +63 -70
  248. package/src/eco/eco.js +163 -97
  249. package/src/eco/eco.types.d.ts +47 -8
  250. package/src/eco/eco.types.js +5 -0
  251. package/src/eco/eco.utils.d.ts +1 -1
  252. package/src/eco/eco.utils.js +1 -10
  253. package/src/eco/global-injector-map.js +55 -41
  254. package/src/eco/lazy-injector-map.js +90 -60
  255. package/src/eco/module-dependencies.js +52 -44
  256. package/src/eco/page-layout-normalization.d.ts +21 -0
  257. package/src/eco/page-layout-normalization.js +69 -0
  258. package/src/env.d.ts +2 -0
  259. package/src/errors/http-error.d.ts +8 -0
  260. package/src/errors/http-error.js +66 -49
  261. package/src/errors/index.d.ts +1 -0
  262. package/src/errors/index.js +3 -6
  263. package/src/errors/locals-access-error.js +5 -8
  264. package/src/errors/undeclared-component-dependency-error.d.ts +11 -0
  265. package/src/errors/undeclared-component-dependency-error.js +17 -0
  266. package/src/global/app-logger.js +3 -6
  267. package/src/hmr/README.md +21 -0
  268. package/src/hmr/client/hmr-runtime.js +119 -110
  269. package/src/hmr/client/module-update.d.ts +13 -0
  270. package/src/hmr/client/module-update.js +39 -0
  271. package/src/hmr/hmr-asset-paths.d.ts +14 -0
  272. package/src/hmr/hmr-asset-paths.js +22 -0
  273. package/src/hmr/hmr-entrypoint-output.d.ts +21 -0
  274. package/src/hmr/hmr-entrypoint-output.js +34 -0
  275. package/src/hmr/hmr-file-change-prep.d.ts +10 -0
  276. package/src/hmr/hmr-file-change-prep.js +14 -0
  277. package/src/hmr/hmr-registered-entrypoints-context.d.ts +7 -0
  278. package/src/hmr/hmr-registered-entrypoints-context.js +1 -0
  279. package/src/hmr/hmr-runtime-paths.d.ts +10 -0
  280. package/src/hmr/hmr-runtime-paths.js +13 -0
  281. package/src/hmr/hmr-strategy.d.ts +9 -0
  282. package/src/hmr/hmr-strategy.js +113 -42
  283. package/src/hmr/strategies/default-hmr-strategy.js +55 -33
  284. package/src/hmr/strategies/js-hmr-strategy.d.ts +6 -97
  285. package/src/hmr/strategies/js-hmr-strategy.js +107 -167
  286. package/src/hmr/strategies/server-rendered-template-hmr-strategy.d.ts +17 -0
  287. package/src/hmr/strategies/server-rendered-template-hmr-strategy.js +35 -0
  288. package/src/index.browser.d.ts +1 -0
  289. package/src/index.browser.js +2 -4
  290. package/src/index.d.ts +4 -1
  291. package/src/index.js +7 -21
  292. package/src/islands/README.md +25 -0
  293. package/src/islands/island-host.d.ts +37 -0
  294. package/src/islands/island-host.js +55 -0
  295. package/src/plugins/README.md +2 -1
  296. package/src/plugins/alias-resolver-cache.d.ts +6 -9
  297. package/src/plugins/alias-resolver-cache.js +114 -97
  298. package/src/plugins/alias-resolver-plugin.d.ts +3 -3
  299. package/src/plugins/alias-resolver-plugin.js +35 -62
  300. package/src/plugins/define-integration.d.ts +26 -0
  301. package/src/plugins/define-integration.js +20 -0
  302. package/src/plugins/eco-component-meta-plugin.d.ts +6 -102
  303. package/src/plugins/eco-component-meta-plugin.js +123 -162
  304. package/src/plugins/foreign-jsx-override-plugin.d.ts +1 -1
  305. package/src/plugins/foreign-jsx-override-plugin.js +49 -37
  306. package/src/plugins/integration-plugin.d.ts +24 -6
  307. package/src/plugins/integration-plugin.js +212 -195
  308. package/src/plugins/jsx-import-source.utils.d.ts +8 -0
  309. package/src/plugins/jsx-import-source.utils.js +21 -0
  310. package/src/plugins/package-specifier.d.ts +12 -0
  311. package/src/plugins/package-specifier.js +33 -0
  312. package/src/plugins/processor.d.ts +66 -12
  313. package/src/plugins/processor.js +168 -137
  314. package/src/plugins/runtime-capability.js +1 -0
  315. package/src/plugins/source-transform.d.ts +1 -1
  316. package/src/plugins/source-transform.js +109 -79
  317. package/src/plugins/tsconfig-import-resolver.d.ts +37 -0
  318. package/src/plugins/tsconfig-import-resolver.js +262 -0
  319. package/src/route-renderer/GRAPH.md +24 -30
  320. package/src/route-renderer/README.md +52 -32
  321. package/src/route-renderer/orchestration/document-shell/document-shell-render.service.d.ts +107 -0
  322. package/src/route-renderer/orchestration/document-shell/document-shell-render.service.js +155 -0
  323. package/src/route-renderer/orchestration/document-shell/layout-shell-props.service.d.ts +20 -0
  324. package/src/route-renderer/orchestration/document-shell/layout-shell-props.service.js +37 -0
  325. package/src/route-renderer/orchestration/{component-render-context.d.ts → foreign-child/component-render-context.d.ts} +8 -15
  326. package/src/route-renderer/orchestration/foreign-child/component-render-context.js +196 -0
  327. package/src/route-renderer/orchestration/{render-output.utils.d.ts → foreign-child/foreign-child-output.utils.d.ts} +20 -7
  328. package/src/route-renderer/orchestration/foreign-child/foreign-child-output.utils.js +195 -0
  329. package/src/route-renderer/orchestration/{foreign-subtree-execution.service.d.ts → foreign-child/foreign-subtree-execution.service.d.ts} +64 -34
  330. package/src/route-renderer/orchestration/foreign-child/foreign-subtree-execution.service.js +354 -0
  331. package/src/route-renderer/orchestration/foreign-child/owning-renderer-resolution.d.ts +19 -0
  332. package/src/route-renderer/orchestration/foreign-child/owning-renderer-resolution.js +36 -0
  333. package/src/route-renderer/orchestration/integration-renderer.d.ts +37 -153
  334. package/src/route-renderer/orchestration/integration-renderer.js +803 -1008
  335. package/src/route-renderer/orchestration/integration-renderer.test-fixtures.d.ts +75 -0
  336. package/src/route-renderer/orchestration/integration-renderer.test-fixtures.js +173 -0
  337. package/src/route-renderer/orchestration/ownership-graph/component-graph-collectors.d.ts +10 -0
  338. package/src/route-renderer/orchestration/ownership-graph/component-graph-collectors.js +132 -0
  339. package/src/route-renderer/orchestration/ownership-graph/component-graph.d.ts +34 -0
  340. package/src/route-renderer/orchestration/ownership-graph/component-graph.js +89 -0
  341. package/src/route-renderer/orchestration/{ownership-validation.service.d.ts → ownership-graph/ownership-validation.service.d.ts} +6 -2
  342. package/src/route-renderer/orchestration/ownership-graph/ownership-validation.service.js +77 -0
  343. package/src/route-renderer/orchestration/page-browser-graph/global-injector-assets.service.d.ts +7 -0
  344. package/src/route-renderer/orchestration/page-browser-graph/global-injector-assets.service.js +30 -0
  345. package/src/route-renderer/orchestration/page-browser-graph/grouped-graph-build-plan.d.ts +15 -0
  346. package/src/route-renderer/orchestration/page-browser-graph/grouped-graph-build-plan.js +9 -0
  347. package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-contribution.merge.d.ts +5 -0
  348. package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-contribution.merge.js +30 -0
  349. package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-merge.utils.d.ts +12 -0
  350. package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-merge.utils.js +32 -0
  351. package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-session.d.ts +126 -0
  352. package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-session.js +542 -0
  353. package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph.service.d.ts +47 -0
  354. package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph.service.js +248 -0
  355. package/src/route-renderer/orchestration/{processed-asset-dedupe.d.ts → page-browser-graph/processed-asset-dedupe.d.ts} +1 -1
  356. package/src/route-renderer/orchestration/page-browser-graph/processed-asset-dedupe.js +23 -0
  357. package/src/route-renderer/orchestration/page-browser-graph/route-instance-key.d.ts +29 -0
  358. package/src/route-renderer/orchestration/page-browser-graph/route-instance-key.js +54 -0
  359. package/src/route-renderer/orchestration/route-pipeline/integration-route-render-adapter.d.ts +38 -0
  360. package/src/route-renderer/orchestration/route-pipeline/integration-route-render-adapter.js +26 -0
  361. package/src/route-renderer/orchestration/route-pipeline/marker-artifact.utils.d.ts +6 -0
  362. package/src/route-renderer/orchestration/route-pipeline/marker-artifact.utils.js +25 -0
  363. package/src/route-renderer/orchestration/route-pipeline/robots-meta.contribution.d.ts +15 -0
  364. package/src/route-renderer/orchestration/route-pipeline/robots-meta.contribution.js +43 -0
  365. package/src/route-renderer/orchestration/route-pipeline/route-html-finalization.service.d.ts +25 -0
  366. package/src/route-renderer/orchestration/route-pipeline/route-html-finalization.service.js +44 -0
  367. package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.builder.d.ts +26 -0
  368. package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.builder.js +44 -0
  369. package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.utils.d.ts +4 -0
  370. package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.utils.js +30 -0
  371. package/src/route-renderer/orchestration/{route-render-orchestrator.d.ts → route-pipeline/route-render-orchestrator.d.ts} +24 -54
  372. package/src/route-renderer/orchestration/route-pipeline/route-render-orchestrator.js +215 -0
  373. package/src/{integrations/ghtml/ghtml-renderer.d.ts → route-renderer/orchestration/string-markup-renderer.d.ts} +8 -10
  374. package/src/route-renderer/orchestration/string-markup-renderer.js +52 -0
  375. package/src/route-renderer/page-loading/component-dependency-collection.js +121 -121
  376. package/src/route-renderer/page-loading/declared-asset-collection.js +66 -94
  377. package/src/route-renderer/page-loading/dependency-resolver.js +101 -104
  378. package/src/route-renderer/page-loading/ecopages-virtual-imports.d.ts +1 -0
  379. package/src/route-renderer/page-loading/ecopages-virtual-imports.js +64 -51
  380. package/src/route-renderer/page-loading/file-scoped-dependency-components.d.ts +42 -0
  381. package/src/route-renderer/page-loading/file-scoped-dependency-components.js +94 -0
  382. package/src/route-renderer/page-loading/lazy-entry-collection.js +75 -98
  383. package/src/route-renderer/page-loading/lazy-trigger-planning.js +47 -36
  384. package/src/route-renderer/page-loading/module-declaration-aggregation.js +39 -28
  385. package/src/route-renderer/page-loading/module-declaration-scripts.js +10 -15
  386. package/src/route-renderer/page-loading/page-dependency-bundling.js +156 -113
  387. package/src/route-renderer/page-loading/page-module-loader.d.ts +2 -1
  388. package/src/route-renderer/page-loading/page-module-loader.js +136 -124
  389. package/src/route-renderer/page-loading/resolved-page-dependencies.d.ts +12 -0
  390. package/src/route-renderer/page-loading/resolved-page-dependencies.js +38 -0
  391. package/src/route-renderer/route-renderer.js +74 -76
  392. package/src/router/README.md +31 -0
  393. package/src/router/client/link-intent.d.ts +11 -21
  394. package/src/router/client/link-intent.js +56 -30
  395. package/src/router/client/link-intent.test.browser.js +50 -39
  396. package/src/router/client/link-navigation-policy.d.ts +45 -0
  397. package/src/router/client/link-navigation-policy.js +122 -0
  398. package/src/router/client/link-navigation-policy.test.browser.d.ts +1 -0
  399. package/src/router/client/link-navigation-policy.test.browser.js +82 -0
  400. package/src/router/client/navigation-coordinator.d.ts +1 -1
  401. package/src/router/client/navigation-coordinator.js +235 -211
  402. package/src/router/client/navigation-lifecycle.d.ts +55 -0
  403. package/src/router/client/navigation-lifecycle.js +50 -0
  404. package/src/router/client/navigation-lifecycle.test.browser.d.ts +1 -0
  405. package/src/router/client/navigation-lifecycle.test.browser.js +118 -0
  406. package/src/router/server/route-registry.js +237 -242
  407. package/src/services/README.md +5 -0
  408. package/src/services/assets/asset-processing-service/asset-dependency-keys.d.ts +13 -0
  409. package/src/services/assets/asset-processing-service/asset-dependency-keys.js +64 -50
  410. package/src/services/assets/asset-processing-service/asset-processing.service.d.ts +12 -1
  411. package/src/services/assets/asset-processing-service/asset-processing.service.js +335 -268
  412. package/src/services/assets/asset-processing-service/asset.factory.js +78 -81
  413. package/src/services/assets/asset-processing-service/assets.types.d.ts +1 -1
  414. package/src/services/assets/asset-processing-service/assets.types.js +1 -0
  415. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.d.ts +1 -1
  416. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.js +57 -46
  417. package/src/services/assets/asset-processing-service/browser-runtime-entry-resolution.d.ts +52 -0
  418. package/src/services/assets/asset-processing-service/browser-runtime-entry-resolution.js +115 -0
  419. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.js +53 -58
  420. package/src/services/assets/asset-processing-service/finalize-processed-asset.d.ts +3 -0
  421. package/src/services/assets/asset-processing-service/finalize-processed-asset.js +5 -0
  422. package/src/services/assets/asset-processing-service/grouped-content-bundles.d.ts +2 -1
  423. package/src/services/assets/asset-processing-service/grouped-content-bundles.js +85 -60
  424. package/src/services/assets/asset-processing-service/index.d.ts +2 -0
  425. package/src/services/assets/asset-processing-service/index.js +8 -6
  426. package/src/services/assets/asset-processing-service/inline-content-script-body.d.ts +11 -0
  427. package/src/services/assets/asset-processing-service/inline-content-script-body.js +23 -0
  428. package/src/services/assets/asset-processing-service/materialize-content-script-asset.d.ts +9 -0
  429. package/src/services/assets/asset-processing-service/materialize-content-script-asset.js +22 -0
  430. package/src/services/assets/asset-processing-service/page-package.js +70 -72
  431. package/src/services/assets/asset-processing-service/processor.interface.js +7 -5
  432. package/src/services/assets/asset-processing-service/processor.registry.js +11 -14
  433. package/src/services/assets/asset-processing-service/processors/base/base-processor.js +59 -62
  434. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.d.ts +0 -2
  435. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.js +102 -130
  436. package/src/services/assets/asset-processing-service/processors/index.js +5 -5
  437. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.d.ts +8 -0
  438. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.js +111 -111
  439. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.d.ts +0 -1
  440. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.js +95 -94
  441. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.js +136 -135
  442. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.d.ts +0 -3
  443. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +26 -57
  444. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.d.ts +0 -3
  445. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.js +33 -67
  446. package/src/services/assets/asset-processing-service/processors/stylesheet/stylesheet-processor-pipeline.d.ts +2 -0
  447. package/src/services/assets/asset-processing-service/processors/stylesheet/stylesheet-processor-pipeline.js +44 -0
  448. package/src/services/assets/asset-processing-service/resolve-integration-plugin.d.ts +4 -0
  449. package/src/services/assets/asset-processing-service/resolve-integration-plugin.js +15 -0
  450. package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.d.ts +0 -1
  451. package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.js +27 -44
  452. package/src/services/assets/browser-bundle.service.d.ts +27 -31
  453. package/src/services/assets/browser-bundle.service.js +54 -49
  454. package/src/services/assets/browser-runtime-asset-generation.d.ts +17 -0
  455. package/src/services/assets/browser-runtime-asset-generation.js +28 -0
  456. package/src/services/cache/cache.types.d.ts +4 -2
  457. package/src/services/cache/cache.types.js +5 -0
  458. package/src/services/cache/html-page-cache-dependency-index.d.ts +34 -0
  459. package/src/services/cache/html-page-cache-dependency-index.js +88 -0
  460. package/src/services/cache/index.d.ts +2 -0
  461. package/src/services/cache/index.js +8 -7
  462. package/src/services/cache/memory-cache-store.js +101 -89
  463. package/src/services/cache/page-cache-service.d.ts +31 -1
  464. package/src/services/cache/page-cache-service.js +237 -150
  465. package/src/services/cache/page-request-cache-coordinator.service.d.ts +2 -1
  466. package/src/services/cache/page-request-cache-coordinator.service.js +112 -102
  467. package/src/services/html/html-rewriter-provider.service.js +61 -61
  468. package/src/services/html/html-transformer.service.js +249 -266
  469. package/src/services/invalidation/development-invalidation.service.d.ts +15 -1
  470. package/src/services/invalidation/development-invalidation.service.js +241 -204
  471. package/src/services/module-loading/README.md +9 -6
  472. package/src/services/module-loading/app-module-loader.service.js +1 -0
  473. package/src/services/module-loading/app-server-module-transpiler.service.d.ts +8 -0
  474. package/src/services/module-loading/app-server-module-transpiler.service.js +104 -106
  475. package/src/services/module-loading/collection-server-module-build.service.d.ts +19 -0
  476. package/src/services/module-loading/collection-server-module-build.service.js +83 -0
  477. package/src/services/module-loading/host-module-loader-registry.js +6 -11
  478. package/src/services/module-loading/module-loading-types.js +1 -0
  479. package/src/services/module-loading/page-module-import.service.d.ts +7 -12
  480. package/src/services/module-loading/page-module-import.service.js +232 -206
  481. package/src/services/module-loading/route-module-build-cache-registry.d.ts +2 -0
  482. package/src/services/module-loading/route-module-build-cache-registry.js +59 -33
  483. package/src/services/module-loading/route-module-build-cache.js +3 -38
  484. package/src/services/module-loading/route-module-build-cache.store.d.ts +10 -0
  485. package/src/services/module-loading/route-module-build-cache.store.js +213 -196
  486. package/src/services/module-loading/route-module-build-manifest.d.ts +10 -14
  487. package/src/services/module-loading/route-module-build-manifest.js +54 -118
  488. package/src/services/module-loading/route-module-dependency-hasher.d.ts +2 -2
  489. package/src/services/module-loading/route-module-dependency-hasher.js +136 -109
  490. package/src/services/module-loading/server-module-transpiler.service.d.ts +1 -3
  491. package/src/services/module-loading/server-module-transpiler.service.js +65 -62
  492. package/src/services/module-loading/source-module-support.js +15 -7
  493. package/src/services/runtime-state/dev-graph.service.js +165 -157
  494. package/src/services/runtime-state/entrypoint-dependency-graph.service.js +85 -76
  495. package/src/services/runtime-state/server-invalidation-state.service.js +38 -30
  496. package/src/services/validation/schema-validation-service.d.ts +1 -4
  497. package/src/services/validation/schema-validation-service.js +156 -95
  498. package/src/services/validation/standard-schema.types.d.ts +9 -62
  499. package/src/services/validation/standard-schema.types.js +1 -0
  500. package/src/services/validation/validate-standard-schema.d.ts +7 -0
  501. package/src/services/validation/validate-standard-schema.js +14 -0
  502. package/src/static-site-generator/README.md +10 -2
  503. package/src/static-site-generator/production-page-browser-graph-prebuild.d.ts +32 -0
  504. package/src/static-site-generator/production-page-browser-graph-prebuild.js +57 -0
  505. package/src/static-site-generator/sitemap-routes.d.ts +14 -0
  506. package/src/static-site-generator/sitemap-routes.js +36 -0
  507. package/src/static-site-generator/sitemap.d.ts +15 -0
  508. package/src/static-site-generator/sitemap.js +42 -0
  509. package/src/static-site-generator/static-build-invalidation.d.ts +2 -2
  510. package/src/static-site-generator/static-build-invalidation.js +33 -74
  511. package/src/static-site-generator/static-export-context.d.ts +9 -1
  512. package/src/static-site-generator/static-export-context.js +1 -0
  513. package/src/static-site-generator/static-site-generator.d.ts +27 -6
  514. package/src/static-site-generator/static-site-generator.js +528 -389
  515. package/src/types/internal-types.d.ts +55 -17
  516. package/src/types/internal-types.js +1 -0
  517. package/src/types/public-types.d.ts +236 -95
  518. package/src/types/public-types.js +1 -0
  519. package/src/utils/deep-merge.js +39 -26
  520. package/src/utils/ecopages-route-info.d.ts +26 -0
  521. package/src/utils/ecopages-route-info.js +30 -0
  522. package/src/utils/hash.js +3 -6
  523. package/src/utils/html-escaping.d.ts +7 -0
  524. package/src/utils/html-escaping.js +22 -5
  525. package/src/utils/invariant.js +11 -10
  526. package/src/utils/locals-utils.js +32 -22
  527. package/src/utils/parse-cli-args.d.ts +1 -0
  528. package/src/utils/parse-cli-args.js +73 -62
  529. package/src/utils/path-pattern.d.ts +23 -0
  530. package/src/utils/path-pattern.js +42 -0
  531. package/src/utils/path-utils.module.js +8 -11
  532. package/src/utils/resolve-entry-file.js +70 -38
  533. package/src/utils/resolve-work-dir.js +23 -27
  534. package/src/utils/runtime.js +24 -33
  535. package/src/utils/server-utils.module.d.ts +3 -2
  536. package/src/utils/server-utils.module.js +60 -53
  537. package/src/utils/static-file-extensions.d.ts +12 -0
  538. package/src/utils/static-file-extensions.js +54 -0
  539. package/src/watchers/project-watcher-ignore.d.ts +11 -0
  540. package/src/watchers/project-watcher-ignore.js +17 -0
  541. package/src/watchers/project-watcher.d.ts +21 -6
  542. package/src/watchers/project-watcher.js +402 -277
  543. package/src/watchers/project-watcher.test-helpers.js +45 -50
  544. package/src/adapters/shared/api-response.js +0 -96
  545. package/src/adapters/shared/application-adapter.js +0 -90
  546. package/src/adapters/shared/bun-user-websocket-lifecycle.js +0 -102
  547. package/src/adapters/shared/copy-runtime-public-dir.js +0 -24
  548. package/src/adapters/shared/define-api-handler.d.ts +0 -25
  549. package/src/adapters/shared/define-api-handler.js +0 -15
  550. package/src/adapters/shared/explicit-static-render-preparation.js +0 -26
  551. package/src/adapters/shared/explicit-static-route-matcher.js +0 -101
  552. package/src/adapters/shared/file-route-middleware-pipeline.js +0 -90
  553. package/src/adapters/shared/fs-server-response-factory.js +0 -81
  554. package/src/adapters/shared/fs-server-response-matcher.js +0 -186
  555. package/src/adapters/shared/hmr-entrypoint-registrar.d.ts +0 -55
  556. package/src/adapters/shared/hmr-entrypoint-registrar.js +0 -87
  557. package/src/adapters/shared/hmr-html-response.js +0 -33
  558. package/src/adapters/shared/node-http-websocket-upgrades.js +0 -125
  559. package/src/adapters/shared/render-context.js +0 -93
  560. package/src/adapters/shared/runtime-app-bootstrap.js +0 -41
  561. package/src/adapters/shared/runtime-host.js +0 -0
  562. package/src/adapters/shared/server-adapter.js +0 -436
  563. package/src/adapters/shared/server-route-handler.js +0 -111
  564. package/src/adapters/shared/server-static-builder.js +0 -202
  565. package/src/adapters/shared/shared-hmr-manager.d.ts +0 -61
  566. package/src/adapters/shared/shared-hmr-manager.js +0 -273
  567. package/src/adapters/shared/static-preview-host.js +0 -0
  568. package/src/adapters/shared/websocket-lifecycle.d.ts +0 -3
  569. package/src/adapters/shared/websocket-lifecycle.js +0 -19
  570. package/src/build/browser-runtime-manifest.js +0 -61
  571. package/src/build/browser-runtime-plugin-helpers.js +0 -14
  572. package/src/build/browser-runtime-plugin.js +0 -173
  573. package/src/build/build-input-fingerprint.js +0 -31
  574. package/src/build/build-manifest.d.ts +0 -33
  575. package/src/build/build-manifest.js +0 -49
  576. package/src/build/build-types.js +0 -0
  577. package/src/build/jsx-ownership-plugins.d.ts +0 -10
  578. package/src/build/jsx-ownership-plugins.js +0 -17
  579. package/src/build/pages-unified-graph-build.js +0 -208
  580. package/src/build/parallel-build-executor.js +0 -52
  581. package/src/build/rolldown-adapter-helpers.js +0 -310
  582. package/src/build/rolldown-build-adapter.js +0 -67
  583. package/src/build/rolldown-build-invocation-metrics.js +0 -43
  584. package/src/build/rolldown-dev-build-adapter.d.ts +0 -82
  585. package/src/build/rolldown-dev-build-adapter.js +0 -182
  586. package/src/build/rolldown-plugin-bridge.js +0 -211
  587. package/src/build/rolldown-source-transform-pass.js +0 -58
  588. package/src/build/runtime-build-executor.d.ts +0 -15
  589. package/src/build/runtime-build-executor.js +0 -43
  590. package/src/build/runtime-build-output-normalizer.js +0 -203
  591. package/src/build/serialized-build-executor.js +0 -63
  592. package/src/build/server-entry-build-cache.js +0 -169
  593. package/src/build/server-side-css-shim-plugin.js +0 -35
  594. package/src/hmr/hmr.postcss.test.e2e.js +0 -31
  595. package/src/hmr/hmr.test.e2e.js +0 -54
  596. package/src/integrations/ghtml/ghtml-renderer.js +0 -57
  597. package/src/integrations/ghtml/ghtml.constants.d.ts +0 -1
  598. package/src/integrations/ghtml/ghtml.constants.js +0 -4
  599. package/src/integrations/ghtml/ghtml.plugin.d.ts +0 -16
  600. package/src/integrations/ghtml/ghtml.plugin.js +0 -20
  601. package/src/route-renderer/orchestration/component-render-context.js +0 -147
  602. package/src/route-renderer/orchestration/declared-ownership-graph.d.ts +0 -18
  603. package/src/route-renderer/orchestration/declared-ownership-graph.js +0 -34
  604. package/src/route-renderer/orchestration/foreign-subtree-execution.service.js +0 -231
  605. package/src/route-renderer/orchestration/ownership-planning.service.d.ts +0 -24
  606. package/src/route-renderer/orchestration/ownership-planning.service.js +0 -63
  607. package/src/route-renderer/orchestration/ownership-validation.service.js +0 -53
  608. package/src/route-renderer/orchestration/processed-asset-dedupe.js +0 -27
  609. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.d.ts +0 -91
  610. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.js +0 -170
  611. package/src/route-renderer/orchestration/render-output.utils.js +0 -175
  612. package/src/route-renderer/orchestration/route-render-orchestrator.js +0 -578
  613. package/src/route-renderer/orchestration/template-serialization.d.ts +0 -38
  614. package/src/route-renderer/orchestration/template-serialization.js +0 -45
  615. package/src/utils/html.d.ts +0 -1
  616. package/src/utils/html.js +0 -4
  617. /package/src/adapters/{shared → bun}/bun-user-websocket-lifecycle.d.ts +0 -0
  618. /package/src/adapters/shared/{copy-runtime-public-dir.d.ts → runtime/copy-runtime-public-dir.d.ts} +0 -0
  619. /package/src/adapters/shared/{runtime-host.d.ts → runtime/runtime-host.d.ts} +0 -0
  620. /package/src/{hmr/hmr.postcss.test.e2e.d.ts → adapters/shared/runtime/runtime-host.js} +0 -0
  621. /package/src/{hmr/hmr.test.e2e.d.ts → adapters/shared/runtime/static-preview-host.js} +0 -0
  622. /package/src/build/{build-types.d.ts → contracts/build-types.d.ts} +0 -0
  623. /package/src/build/{runtime-build-output-normalizer.d.ts → rolldown/runtime-build-output-normalizer.d.ts} +0 -0
  624. /package/src/build/{server-side-css-shim-plugin.d.ts → rolldown/server-side-css-shim-plugin.d.ts} +0 -0
@@ -1,44 +1,115 @@
1
- const HmrStrategyType = {
2
- /**
3
- * Integration-specific strategies (React, Lit, etc.)
4
- * Highest priority to allow framework-specific HMR handling.
5
- */
6
- INTEGRATION: 100,
7
- /**
8
- * Asset processing strategies (CSS, images, etc.)
9
- * High priority for specialized asset handling.
10
- */
11
- ASSET: 50,
12
- /**
13
- * Generic script bundling strategies (JS/TS)
14
- * Medium priority for standard script processing.
15
- */
16
- SCRIPT: 25,
17
- /**
18
- * Fallback strategy for unhandled file types.
19
- * Lowest priority, triggers full page reload.
20
- */
21
- FALLBACK: 0
1
+ /**
2
+ * HMR Strategy Pattern
3
+ *
4
+ * This module defines the base classes and types for Hot Module Replacement strategies.
5
+ * Each strategy handles a specific type of file change and determines how to process it.
6
+ *
7
+ * @module
8
+ * @example
9
+ * ```typescript
10
+ * class CustomHmrStrategy extends HmrStrategy {
11
+ * readonly type = HmrStrategyType.INTEGRATION;
12
+ *
13
+ * matches(filePath: string): boolean {
14
+ * return filePath.endsWith('.custom');
15
+ * }
16
+ *
17
+ * async process(filePath: string): Promise<HmrAction> {
18
+ * return {
19
+ * type: 'broadcast',
20
+ * events: [{ type: 'update', path: filePath, timestamp: Date.now() }],
21
+ * };
22
+ * }
23
+ * }
24
+ * ```
25
+ */
26
+ /**
27
+ * Defines the category of an HMR strategy, which determines its execution priority.
28
+ * Strategies are evaluated in descending order: INTEGRATION → ASSET → SCRIPT → FALLBACK.
29
+ *
30
+ * @remarks
31
+ * The numeric values represent base priorities. Strategies can fine-tune their priority
32
+ * using the `priorityOffset` property.
33
+ */
34
+ export const HmrStrategyType = {
35
+ /**
36
+ * Integration-specific strategies (React, Lit, etc.)
37
+ * Highest priority to allow framework-specific HMR handling.
38
+ */
39
+ INTEGRATION: 100,
40
+ /**
41
+ * Asset processing strategies (CSS, images, etc.)
42
+ * High priority for specialized asset handling.
43
+ */
44
+ ASSET: 50,
45
+ /**
46
+ * Generic script bundling strategies (JS/TS)
47
+ * Medium priority for standard script processing.
48
+ */
49
+ SCRIPT: 25,
50
+ /**
51
+ * Fallback strategy for unhandled file types.
52
+ * Lowest priority, triggers full page reload.
53
+ */
54
+ FALLBACK: 0,
22
55
  };
23
- class HmrStrategy {
24
- /**
25
- * Optional offset to fine-tune priority within the same category.
26
- * Useful when multiple strategies share the same type.
27
- *
28
- * @defaultValue 0
29
- */
30
- priorityOffset = 0;
31
- /**
32
- * Computed priority for strategy selection.
33
- * Higher values are evaluated first.
34
- *
35
- * @returns The sum of the strategy type and priority offset
36
- */
37
- get priority() {
38
- return this.type + this.priorityOffset;
39
- }
56
+ /**
57
+ * Base class for HMR strategies.
58
+ *
59
+ * Each strategy handles a specific type of file change and determines how to process it.
60
+ * Strategies are selected based on their priority (higher values are evaluated first) and
61
+ * whether they match the changed file path.
62
+ *
63
+ * @remarks
64
+ * Strategies are expected to be stateless and idempotent. The same file change
65
+ * should produce the same result when processed by the same strategy.
66
+ *
67
+ * @example
68
+ * ```typescript
69
+ * class MyAssetStrategy extends HmrStrategy {
70
+ * readonly type = HmrStrategyType.ASSET;
71
+ * readonly priorityOffset = 5;
72
+ *
73
+ * matches(filePath: string): boolean {
74
+ * return /\.(png|jpg|svg)$/.test(filePath);
75
+ * }
76
+ *
77
+ * async process(filePath: string): Promise<HmrAction> {
78
+ * await this.optimizeImage(filePath);
79
+ * return {
80
+ * type: 'broadcast',
81
+ * events: [{ type: 'update', path: filePath, timestamp: Date.now() }]
82
+ * };
83
+ * }
84
+ * }
85
+ * ```
86
+ */
87
+ export class HmrStrategy {
88
+ /**
89
+ * Optional offset to fine-tune priority within the same category.
90
+ * Useful when multiple strategies share the same type.
91
+ *
92
+ * @defaultValue 0
93
+ */
94
+ priorityOffset = 0;
95
+ /**
96
+ * Computed priority for strategy selection.
97
+ * Higher values are evaluated first.
98
+ *
99
+ * @returns The sum of the strategy type and priority offset
100
+ */
101
+ get priority() {
102
+ return this.type + this.priorityOffset;
103
+ }
104
+ /**
105
+ * Returns whether this strategy supplies dev-transform plugins for a source module.
106
+ *
107
+ * @remarks
108
+ * Used by {@link DevTransformBundler} to select integration-owned plugins for any
109
+ * module in the per-file ESM graph (pages and imported children). File-change
110
+ * dispatch continues to use {@link matches}.
111
+ */
112
+ ownsDevTransformEntrypoint(_sourcePath) {
113
+ return false;
114
+ }
40
115
  }
41
- export {
42
- HmrStrategy,
43
- HmrStrategyType
44
- };
@@ -1,34 +1,56 @@
1
- import { HmrStrategy, HmrStrategyType } from "../hmr-strategy.js";
2
- class DefaultHmrStrategy extends HmrStrategy {
3
- type = HmrStrategyType.FALLBACK;
4
- /**
5
- * Matches all file paths.
6
- *
7
- * @param _filePath - Absolute path to the changed file (unused)
8
- * @returns Always returns true as this is a catch-all strategy
9
- */
10
- matches(_filePath) {
11
- return true;
12
- }
13
- /**
14
- * Processes a file change by triggering a full page reload.
15
- *
16
- * @param filePath - Absolute path to the changed file
17
- * @returns Action to broadcast a reload event
18
- */
19
- async process(filePath) {
20
- return {
21
- type: "broadcast",
22
- events: [
23
- {
24
- type: "reload",
25
- path: filePath,
26
- message: "fallback-strategy"
27
- }
28
- ]
29
- };
30
- }
1
+ /**
2
+ * Default HMR Strategy
3
+ *
4
+ * Fallback strategy for file types that don't have specialized handling.
5
+ * Triggers a full page reload to ensure changes are reflected.
6
+ *
7
+ * @module
8
+ */
9
+ import { HmrStrategy, HmrStrategyType } from '../hmr-strategy.js';
10
+ /**
11
+ * Default fallback strategy for unhandled file types.
12
+ *
13
+ * This strategy matches all files and triggers a full page reload.
14
+ * It has the lowest priority (FALLBACK) and acts as a catch-all when
15
+ * no other strategy matches the changed file.
16
+ *
17
+ * @remarks
18
+ * This strategy ensures that all file changes result in some action,
19
+ * even if we don't have specialized handling for that file type.
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * const strategy = new DefaultHmrStrategy();
24
+ * const action = await strategy.process('/path/to/unknown.file');
25
+ * ```
26
+ */
27
+ export class DefaultHmrStrategy extends HmrStrategy {
28
+ type = HmrStrategyType.FALLBACK;
29
+ /**
30
+ * Matches all file paths.
31
+ *
32
+ * @param _filePath - Absolute path to the changed file (unused)
33
+ * @returns Always returns true as this is a catch-all strategy
34
+ */
35
+ matches(_filePath) {
36
+ return true;
37
+ }
38
+ /**
39
+ * Processes a file change by triggering a full page reload.
40
+ *
41
+ * @param filePath - Absolute path to the changed file
42
+ * @returns Action to broadcast a reload event
43
+ */
44
+ async process(filePath) {
45
+ return {
46
+ type: 'broadcast',
47
+ events: [
48
+ {
49
+ type: 'reload',
50
+ path: filePath,
51
+ message: 'fallback-strategy',
52
+ },
53
+ ],
54
+ };
55
+ }
31
56
  }
32
- export {
33
- DefaultHmrStrategy
34
- };
@@ -2,133 +2,42 @@
2
2
  * JavaScript HMR Strategy
3
3
  *
4
4
  * Handles hot module replacement for JavaScript and TypeScript entrypoints.
5
- * Bundles files, inspects the emitted output, and decides whether the browser
6
- * can hot-accept the change or must reload.
5
+ * Invalidates dev-transform modules and decides whether the browser can hot-accept
6
+ * the change or must reload.
7
7
  *
8
8
  * @module
9
9
  */
10
10
  import { HmrStrategy, type HmrAction } from '../hmr-strategy.js';
11
- import type { EcoBuildPlugin } from '../../build/build-types.js';
12
- import type { BrowserBundleExecutor } from '../../services/assets/browser-bundle.service.js';
11
+ import type { HmrRegisteredEntrypointsContext } from '../hmr-registered-entrypoints-context.js';
13
12
  import type { EntrypointDependencyGraph } from '../../services/runtime-state/entrypoint-dependency-graph.service.js';
14
13
  /**
15
14
  * Context interface providing access to HmrManager state.
16
15
  * Required for JsHmrStrategy to access registered entrypoints and configuration.
17
16
  */
18
- export interface JsHmrContext {
19
- /**
20
- * Map of registered entrypoints to their output URLs.
21
- */
17
+ export interface JsHmrContext extends HmrRegisteredEntrypointsContext {
22
18
  getWatchedFiles(): Map<string, string>;
23
19
  getEntrypointDependencyGraph(): EntrypointDependencyGraph;
24
- /**
25
- * Directory where HMR bundles are written.
26
- */
27
- getDistDir(): string;
28
- /**
29
- * Build plugins to use during bundling.
30
- */
31
- getPlugins(): EcoBuildPlugin[];
32
- /**
33
- * Absolute path to the source directory.
34
- */
35
20
  getSrcDir(): string;
36
- /**
37
- * Absolute path to the pages directory.
38
- */
39
21
  getPagesDir(): string;
40
- /**
41
- * Absolute path to the layouts directory.
42
- */
43
22
  getLayoutsDir(): string;
44
- /**
45
- * All configured route-template extensions across integrations.
46
- */
47
23
  getTemplateExtensions(): string[];
48
24
  /**
49
- * Browser bundler used to rebuild changed entrypoints.
50
- */
51
- getBrowserBundleService(): BrowserBundleExecutor;
52
- /**
53
- * Returns whether a watched entrypoint should be rebuilt by the generic JS strategy.
54
- *
55
25
  * @remarks
56
26
  * Integrations with higher-priority HMR strategies can use this to keep the
57
27
  * generic JS strategy from overwriting their emitted entrypoints when a shared
58
28
  * dependency changes.
59
29
  */
60
30
  shouldProcessEntrypoint?(entrypointPath: string): boolean;
31
+ invalidateDevTransformSource?(sourcePath: string): void;
32
+ consumeRegisteredScriptReloadRequired?(filePath: string): boolean;
61
33
  }
62
34
  /**
63
35
  * Strategy for handling JavaScript/TypeScript file changes with hot reloading.
64
- *
65
- * The processing steps are:
66
- * 1. Check if any entrypoints are registered
67
- * 2. Rebuild impacted entrypoints, or all watched entrypoints when no runtime
68
- * dependency graph is available
69
- * 3. Emit rebuilt entrypoint bundles for browser delivery
70
- * 4. Inject generic HMR boilerplate
71
- * 5. Broadcast update events for each rebuilt entrypoint
72
- *
73
- * @remarks
74
- * Node can provide dependency-graph metadata, so this strategy can rebuild only
75
- * the entrypoints impacted by a changed dependency. Runtimes that do not expose
76
- * that metadata intentionally keep the rebuild-all fallback.
77
- *
78
- * @see https://bun.sh/docs/runtime/transpiler
79
- *
80
- * @example
81
- * ```typescript
82
- * const context = {
83
- * getWatchedFiles: () => watchedFilesMap,
84
- * getDistDir: () => '/path/to/dist/_hmr',
85
- * getPlugins: () => [],
86
- * getSrcDir: () => '/path/to/src'
87
- * };
88
- * const strategy = new JsHmrStrategy(context);
89
- * ```
90
36
  */
91
37
  export declare class JsHmrStrategy extends HmrStrategy {
92
38
  readonly type: 25;
93
39
  private context;
94
40
  constructor(context: JsHmrContext);
95
- /**
96
- * Determines if the file is a JS/TS file that could affect registered entrypoints.
97
- *
98
- * Matches if:
99
- * 1. There are registered entrypoints to rebuild
100
- * 2. The changed file is a JS/TS file in the src directory
101
- *
102
- * @param filePath - Absolute path to the changed file
103
- * @returns True if this file should trigger entrypoint rebuilds
104
- */
105
41
  matches(filePath: string): boolean;
106
- /**
107
- * Processes a file change by rebuilding affected entrypoints.
108
- *
109
- * @param filePath - Absolute path to the changed file
110
- *
111
- * @remarks
112
- * If runtime-specific dependency graph hooks are unavailable, this strategy
113
- * falls back to rebuilding all watched entrypoints.
114
- * When multiple entrypoints are impacted they are bundled in a single
115
- * invocation to share AST parsing and chunk deduplication.
116
- * @returns Action to broadcast update events
117
- */
118
42
  process(filePath: string): Promise<HmrAction>;
119
- /**
120
- * Bundles one or more entrypoints in a single build invocation.
121
- * Uses the source directory as the output base so that the directory structure
122
- * is preserved under the HMR dist folder.
123
- */
124
- private bundleEntrypoints;
125
- /**
126
- * Processes bundled output and determines whether the browser can hot-accept
127
- * the update or must fall back to a full reload.
128
- *
129
- * @param filepath - Path to the bundled output file
130
- * @param url - URL path for the bundled file
131
- * @returns True if processing was successful and update should be broadcast
132
- */
133
- private processOutput;
134
43
  }
@@ -1,173 +1,113 @@
1
- import path from "node:path";
2
- import { fileSystem } from "@ecopages/file-system";
3
- import { HmrStrategy, HmrStrategyType } from "../hmr-strategy.js";
4
- import { appLogger } from "../../global/app-logger.js";
5
- class JsHmrStrategy extends HmrStrategy {
6
- type = HmrStrategyType.SCRIPT;
7
- context;
8
- constructor(context) {
9
- super();
10
- this.context = context;
11
- }
12
- /**
13
- * Determines if the file is a JS/TS file that could affect registered entrypoints.
14
- *
15
- * Matches if:
16
- * 1. There are registered entrypoints to rebuild
17
- * 2. The changed file is a JS/TS file in the src directory
18
- *
19
- * @param filePath - Absolute path to the changed file
20
- * @returns True if this file should trigger entrypoint rebuilds
21
- */
22
- matches(filePath) {
23
- const watchedFiles = this.context.getWatchedFiles();
24
- const isJsTs = /\.(ts|tsx|js|jsx)$/.test(filePath);
25
- const isInSrc = filePath.startsWith(this.context.getSrcDir());
26
- const isIntegrationTemplate = this.context.getTemplateExtensions().some((extension) => filePath.endsWith(extension));
27
- if (watchedFiles.size === 0) {
28
- return false;
1
+ /**
2
+ * JavaScript HMR Strategy
3
+ *
4
+ * Handles hot module replacement for JavaScript and TypeScript entrypoints.
5
+ * Invalidates dev-transform modules and decides whether the browser can hot-accept
6
+ * the change or must reload.
7
+ *
8
+ * @module
9
+ */
10
+ import path from 'node:path';
11
+ import { HmrStrategy, HmrStrategyType } from '../hmr-strategy.js';
12
+ import { appLogger } from '../../global/app-logger.js';
13
+ import { isRegisteredDevTransformEntrypoint, isRegisteredScriptEntrypoint } from '../hmr-entrypoint-output.js';
14
+ import { isDevTransformModuleUrl } from '../hmr-asset-paths.js';
15
+ /**
16
+ * Strategy for handling JavaScript/TypeScript file changes with hot reloading.
17
+ */
18
+ export class JsHmrStrategy extends HmrStrategy {
19
+ type = HmrStrategyType.SCRIPT;
20
+ context;
21
+ constructor(context) {
22
+ super();
23
+ this.context = context;
29
24
  }
30
- if (!isJsTs || !isInSrc) {
31
- return false;
32
- }
33
- if (isIntegrationTemplate) {
34
- return false;
35
- }
36
- if (watchedFiles.has(filePath)) {
37
- return true;
38
- }
39
- return true;
40
- }
41
- /**
42
- * Processes a file change by rebuilding affected entrypoints.
43
- *
44
- * @param filePath - Absolute path to the changed file
45
- *
46
- * @remarks
47
- * If runtime-specific dependency graph hooks are unavailable, this strategy
48
- * falls back to rebuilding all watched entrypoints.
49
- * When multiple entrypoints are impacted they are bundled in a single
50
- * invocation to share AST parsing and chunk deduplication.
51
- * @returns Action to broadcast update events
52
- */
53
- async process(filePath) {
54
- appLogger.debug(`[JsHmrStrategy] Processing ${filePath}`);
55
- const watchedFiles = this.context.getWatchedFiles();
56
- if (watchedFiles.size === 0) {
57
- appLogger.debug(`[JsHmrStrategy] No watched files to rebuild`);
58
- return { type: "none" };
59
- }
60
- const dependencyHits = this.context.getEntrypointDependencyGraph().getDependencyEntrypoints(filePath);
61
- const hasDependencyHit = dependencyHits.size > 0;
62
- const impactedEntrypoints = hasDependencyHit ? Array.from(dependencyHits).filter((entrypoint) => watchedFiles.has(entrypoint)) : Array.from(watchedFiles.keys());
63
- const buildableEntrypoints = impactedEntrypoints.filter(
64
- (entrypoint) => this.context.shouldProcessEntrypoint?.(entrypoint) ?? true
65
- );
66
- if (!hasDependencyHit) {
67
- appLogger.debug("[JsHmrStrategy] Dependency graph miss, rebuilding all watched entrypoints");
68
- }
69
- if (buildableEntrypoints.length === 0) {
70
- return { type: "none" };
71
- }
72
- const buildResult = await this.bundleEntrypoints(buildableEntrypoints);
73
- if (!buildResult.success) {
74
- return { type: "none" };
75
- }
76
- const updates = [];
77
- let reloadRequired = false;
78
- for (const entrypoint of buildableEntrypoints) {
79
- const outputUrl = watchedFiles.get(entrypoint);
80
- if (!outputUrl) continue;
81
- if (buildResult.dependencies) {
82
- const entrypointDeps = buildResult.dependencies.get(path.resolve(entrypoint)) ?? [];
83
- this.context.getEntrypointDependencyGraph().setEntrypointDependencies(entrypoint, entrypointDeps);
84
- }
85
- const srcDir = this.context.getSrcDir();
86
- const relativePath = path.relative(srcDir, entrypoint);
87
- const relativePathJs = relativePath.replace(/\.(tsx?|jsx?|mdx?)$/, ".js");
88
- const outputPath = path.join(this.context.getDistDir(), relativePathJs);
89
- const result = await this.processOutput(outputPath, outputUrl);
90
- if (result.success) {
91
- updates.push(outputUrl);
92
- if (result.requiresReload) {
93
- reloadRequired = true;
25
+ matches(filePath) {
26
+ const watchedFiles = this.context.getWatchedFiles();
27
+ const resolvedPath = path.resolve(filePath);
28
+ const isJsTs = /\.(ts|tsx|js|jsx)$/.test(resolvedPath);
29
+ const srcDir = path.resolve(this.context.getSrcDir());
30
+ const isInSrc = resolvedPath.startsWith(`${srcDir}${path.sep}`) || resolvedPath === srcDir;
31
+ const isIntegrationTemplate = this.context
32
+ .getTemplateExtensions()
33
+ .some((extension) => resolvedPath.endsWith(extension));
34
+ if (watchedFiles.size === 0) {
35
+ return false;
94
36
  }
95
- }
96
- }
97
- if (updates.length > 0) {
98
- if (reloadRequired) {
99
- appLogger.debug(`[JsHmrStrategy] Full reload required (no HMR accept found)`);
100
- return {
101
- type: "broadcast",
102
- events: [{ type: "reload" }]
103
- };
104
- }
105
- return {
106
- type: "broadcast",
107
- events: updates.map((p) => ({
108
- type: "update",
109
- path: p,
110
- timestamp: Date.now()
111
- }))
112
- };
113
- }
114
- return { type: "none" };
115
- }
116
- /**
117
- * Bundles one or more entrypoints in a single build invocation.
118
- * Uses the source directory as the output base so that the directory structure
119
- * is preserved under the HMR dist folder.
120
- */
121
- async bundleEntrypoints(entrypoints) {
122
- try {
123
- const result = await this.context.getBrowserBundleService().bundle({
124
- profile: "hmr-entrypoint",
125
- entrypoints,
126
- outdir: this.context.getDistDir(),
127
- outbase: this.context.getSrcDir(),
128
- naming: "[dir]/[name]",
129
- plugins: this.context.getPlugins(),
130
- minify: false
131
- });
132
- if (!result.success) {
133
- appLogger.error("[JsHmrStrategy] Batched build failed:", result.logs);
134
- return { success: false };
135
- }
136
- const dependencies = /* @__PURE__ */ new Map();
137
- if (result.dependencyGraph?.entrypoints) {
138
- for (const [entrypoint, deps] of Object.entries(result.dependencyGraph.entrypoints)) {
139
- dependencies.set(path.resolve(entrypoint), deps);
37
+ if (!isJsTs || !isInSrc) {
38
+ return false;
140
39
  }
141
- }
142
- return { success: true, dependencies };
143
- } catch (error) {
144
- appLogger.error("[JsHmrStrategy] Error in batched build:", error);
145
- return { success: false };
40
+ if (watchedFiles.has(resolvedPath)) {
41
+ return true;
42
+ }
43
+ if (isIntegrationTemplate) {
44
+ return false;
45
+ }
46
+ return true;
146
47
  }
147
- }
148
- /**
149
- * Processes bundled output and determines whether the browser can hot-accept
150
- * the update or must fall back to a full reload.
151
- *
152
- * @param filepath - Path to the bundled output file
153
- * @param url - URL path for the bundled file
154
- * @returns True if processing was successful and update should be broadcast
155
- */
156
- async processOutput(filepath, url) {
157
- try {
158
- const code = await fileSystem.readFile(filepath);
159
- if (code.includes("/* [ecopages] hmr */")) {
160
- return { success: true, requiresReload: !code.includes("import.meta.hot.accept") };
161
- }
162
- appLogger.debug(`[JsHmrStrategy] Processed ${url}`);
163
- const hasHmrAccept = code.includes("import.meta.hot.accept");
164
- return { success: true, requiresReload: !hasHmrAccept };
165
- } catch (error) {
166
- appLogger.error(`[JsHmrStrategy] Error processing output for ${url}:`, error);
167
- return { success: false, requiresReload: false };
48
+ async process(filePath) {
49
+ appLogger.debug(`[JsHmrStrategy] Processing ${filePath}`);
50
+ const watchedFiles = this.context.getWatchedFiles();
51
+ const resolvedChanged = path.resolve(filePath);
52
+ const registeredEntrypoints = this.context.getRegisteredEntrypoints();
53
+ const isRegisteredEntrypointEdit = isRegisteredDevTransformEntrypoint(registeredEntrypoints, resolvedChanged);
54
+ if (watchedFiles.size === 0) {
55
+ appLogger.debug(`[JsHmrStrategy] No watched files to rebuild`);
56
+ return { type: 'none' };
57
+ }
58
+ const dependencyHits = this.context.getEntrypointDependencyGraph().getDependencyEntrypoints(filePath);
59
+ const hasDependencyHit = dependencyHits.size > 0;
60
+ const impactedEntrypoints = isRegisteredEntrypointEdit
61
+ ? [resolvedChanged]
62
+ : hasDependencyHit
63
+ ? Array.from(dependencyHits).filter((entrypoint) => watchedFiles.has(path.resolve(entrypoint)))
64
+ : Array.from(watchedFiles.keys());
65
+ const buildableEntrypoints = impactedEntrypoints.filter((entrypoint) => this.context.shouldProcessEntrypoint?.(entrypoint) ?? true);
66
+ if (!hasDependencyHit && !isRegisteredEntrypointEdit) {
67
+ appLogger.debug('[JsHmrStrategy] Dependency graph miss, rebuilding all watched entrypoints');
68
+ }
69
+ if (buildableEntrypoints.length === 0) {
70
+ return { type: 'none' };
71
+ }
72
+ const devTransformUpdates = [];
73
+ let devTransformReloadRequired = false;
74
+ for (const entrypoint of buildableEntrypoints) {
75
+ const resolvedEntrypoint = path.resolve(entrypoint);
76
+ const outputUrl = watchedFiles.get(resolvedEntrypoint);
77
+ if (!outputUrl || !isDevTransformModuleUrl(outputUrl)) {
78
+ appLogger.debug(`[JsHmrStrategy] Skipping non-dev-transform entrypoint ${resolvedEntrypoint}: ${outputUrl ?? 'unregistered'}`);
79
+ continue;
80
+ }
81
+ this.context.invalidateDevTransformSource?.(resolvedEntrypoint);
82
+ if (isRegisteredScriptEntrypoint(registeredEntrypoints, resolvedEntrypoint)) {
83
+ if (this.context.consumeRegisteredScriptReloadRequired?.(resolvedEntrypoint)) {
84
+ devTransformReloadRequired = true;
85
+ }
86
+ else {
87
+ devTransformUpdates.push(outputUrl);
88
+ }
89
+ }
90
+ else {
91
+ devTransformUpdates.push(outputUrl);
92
+ }
93
+ }
94
+ if (devTransformReloadRequired) {
95
+ appLogger.debug(`[JsHmrStrategy] Full reload required (no HMR accept found)`);
96
+ return {
97
+ type: 'broadcast',
98
+ events: [{ type: 'reload' }],
99
+ };
100
+ }
101
+ if (devTransformUpdates.length > 0) {
102
+ return {
103
+ type: 'broadcast',
104
+ events: devTransformUpdates.map((p) => ({
105
+ type: 'update',
106
+ path: p,
107
+ timestamp: Date.now(),
108
+ })),
109
+ };
110
+ }
111
+ return { type: 'none' };
168
112
  }
169
- }
170
113
  }
171
- export {
172
- JsHmrStrategy
173
- };