@ecopages/core 0.2.0-alpha.8 → 0.2.1-beta.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 (471) hide show
  1. package/README.md +79 -28
  2. package/package.json +94 -116
  3. package/src/adapters/README.md +2 -2
  4. package/src/adapters/abstract/application-adapter.d.ts +28 -2
  5. package/src/adapters/abstract/application-adapter.js +14 -2
  6. package/src/adapters/abstract/router-adapter.d.ts +1 -1
  7. package/src/adapters/abstract/server-adapter.d.ts +2 -2
  8. package/src/adapters/bun/client-bridge.d.ts +1 -1
  9. package/src/adapters/bun/create-app.d.ts +12 -12
  10. package/src/adapters/bun/create-app.js +64 -41
  11. package/src/adapters/bun/hmr-manager.d.ts +19 -115
  12. package/src/adapters/bun/hmr-manager.js +25 -301
  13. package/src/adapters/bun/index.d.ts +1 -1
  14. package/src/adapters/bun/index.js +2 -2
  15. package/src/adapters/bun/runtime-host.d.ts +52 -0
  16. package/src/adapters/bun/runtime-host.js +56 -0
  17. package/src/adapters/bun/server-adapter.d.ts +100 -32
  18. package/src/adapters/bun/server-adapter.js +142 -65
  19. package/src/adapters/bun/static-preview-host.d.ts +28 -0
  20. package/src/adapters/bun/static-preview-host.js +45 -0
  21. package/src/{create-app.d.ts → adapters/create-app.d.ts} +9 -6
  22. package/src/{create-app.js → adapters/create-app.js} +4 -4
  23. package/src/adapters/index.d.ts +1 -5
  24. package/src/adapters/index.js +1 -7
  25. package/src/adapters/node/create-app.d.ts +15 -12
  26. package/src/adapters/node/create-app.js +34 -85
  27. package/src/adapters/node/http-request-bridge.d.ts +57 -0
  28. package/src/adapters/node/http-request-bridge.js +118 -0
  29. package/src/adapters/node/node-client-bridge.d.ts +1 -1
  30. package/src/adapters/node/node-hmr-manager.d.ts +22 -103
  31. package/src/adapters/node/node-hmr-manager.js +26 -289
  32. package/src/adapters/node/runtime-host.d.ts +57 -0
  33. package/src/adapters/node/runtime-host.js +92 -0
  34. package/src/adapters/node/server-adapter-dependencies.d.ts +19 -0
  35. package/src/adapters/node/server-adapter-dependencies.js +18 -0
  36. package/src/adapters/node/server-adapter.d.ts +19 -42
  37. package/src/adapters/node/server-adapter.js +94 -139
  38. package/src/adapters/node/static-content-server.d.ts +1 -1
  39. package/src/adapters/node/static-content-server.js +1 -1
  40. package/src/adapters/node/static-preview-host.d.ts +55 -0
  41. package/src/adapters/node/static-preview-host.js +68 -0
  42. package/src/adapters/shared/application-adapter.d.ts +1 -1
  43. package/src/adapters/shared/define-api-handler.d.ts +1 -1
  44. package/src/adapters/shared/explicit-static-render-preparation.d.ts +25 -0
  45. package/src/adapters/shared/explicit-static-render-preparation.js +26 -0
  46. package/src/adapters/shared/explicit-static-route-matcher.d.ts +7 -4
  47. package/src/adapters/shared/explicit-static-route-matcher.js +14 -16
  48. package/src/adapters/shared/file-route-middleware-pipeline.d.ts +7 -10
  49. package/src/adapters/shared/file-route-middleware-pipeline.js +2 -11
  50. package/src/adapters/shared/fs-server-response-factory.d.ts +14 -10
  51. package/src/adapters/shared/fs-server-response-factory.js +11 -27
  52. package/src/adapters/shared/fs-server-response-matcher.d.ts +18 -18
  53. package/src/adapters/shared/fs-server-response-matcher.js +72 -46
  54. package/src/adapters/shared/hmr-entrypoint-registrar.js +1 -1
  55. package/src/adapters/shared/hmr-html-response.d.ts +1 -1
  56. package/src/adapters/shared/hmr-html-response.js +4 -3
  57. package/src/adapters/shared/render-context.d.ts +5 -3
  58. package/src/adapters/shared/render-context.js +24 -1
  59. package/src/adapters/shared/runtime-app-bootstrap.d.ts +26 -0
  60. package/src/adapters/shared/runtime-app-bootstrap.js +46 -0
  61. package/src/adapters/shared/runtime-host.d.ts +12 -0
  62. package/src/adapters/shared/server-adapter.d.ts +22 -11
  63. package/src/adapters/shared/server-adapter.js +183 -133
  64. package/src/adapters/shared/server-route-handler.d.ts +5 -5
  65. package/src/adapters/shared/server-route-handler.js +4 -4
  66. package/src/adapters/shared/server-static-builder.d.ts +8 -7
  67. package/src/adapters/shared/server-static-builder.js +6 -5
  68. package/src/adapters/shared/shared-hmr-manager.d.ts +59 -0
  69. package/src/adapters/shared/shared-hmr-manager.js +241 -0
  70. package/src/adapters/shared/static-preview-host.d.ts +10 -0
  71. package/src/build/README.md +57 -67
  72. package/src/build/browser-runtime-manifest.d.ts +31 -0
  73. package/src/build/browser-runtime-manifest.js +61 -0
  74. package/src/build/browser-runtime-plugin-helpers.d.ts +26 -0
  75. package/src/build/browser-runtime-plugin-helpers.js +14 -0
  76. package/src/build/browser-runtime-plugin.d.ts +78 -0
  77. package/src/build/browser-runtime-plugin.js +173 -0
  78. package/src/build/build-adapter.d.ts +384 -63
  79. package/src/build/build-adapter.js +129 -54
  80. package/src/build/build-manifest.d.ts +6 -0
  81. package/src/build/build-manifest.js +21 -2
  82. package/src/build/build-types.d.ts +2 -2
  83. package/src/build/rolldown-adapter-helpers.d.ts +58 -0
  84. package/src/build/rolldown-adapter-helpers.js +265 -0
  85. package/src/build/rolldown-build-adapter.d.ts +28 -0
  86. package/src/build/rolldown-build-adapter.js +65 -0
  87. package/src/build/rolldown-dev-build-adapter.d.ts +82 -0
  88. package/src/build/rolldown-dev-build-adapter.js +166 -0
  89. package/src/build/rolldown-plugin-bridge.d.ts +59 -0
  90. package/src/build/rolldown-plugin-bridge.js +199 -0
  91. package/src/build/runtime-build-executor.d.ts +15 -7
  92. package/src/build/runtime-build-executor.js +8 -9
  93. package/src/build/runtime-build-output-normalizer.d.ts +3 -0
  94. package/src/build/runtime-build-output-normalizer.js +111 -0
  95. package/src/build/serialized-build-executor.d.ts +64 -0
  96. package/src/build/serialized-build-executor.js +63 -0
  97. package/src/build/server-side-css-shim-plugin.d.ts +41 -0
  98. package/src/build/server-side-css-shim-plugin.js +35 -0
  99. package/src/cache/index.d.ts +6 -0
  100. package/src/cache/index.js +6 -0
  101. package/src/cache/module-parse-cache.d.ts +65 -0
  102. package/src/cache/module-parse-cache.js +75 -0
  103. package/src/config/README.md +5 -2
  104. package/src/config/config-builder.d.ts +41 -13
  105. package/src/config/config-builder.js +62 -24
  106. package/src/declarations.d.ts +1 -1
  107. package/src/dev/host-runtime.d.ts +10 -0
  108. package/src/dev/host-runtime.js +24 -0
  109. package/src/dev/sc-server.d.ts +1 -1
  110. package/src/dev/sc-server.js +1 -1
  111. package/src/eco/eco.browser.d.ts +2 -0
  112. package/src/eco/eco.browser.js +88 -0
  113. package/src/eco/eco.js +50 -45
  114. package/src/eco/eco.types.d.ts +60 -8
  115. package/src/eco/eco.utils.d.ts +1 -40
  116. package/src/eco/eco.utils.js +5 -35
  117. package/src/eco/global-injector-map.d.ts +3 -3
  118. package/src/eco/global-injector-map.js +2 -2
  119. package/src/eco/lazy-injector-map.d.ts +2 -2
  120. package/src/errors/index.d.ts +1 -0
  121. package/src/errors/index.js +3 -1
  122. package/src/hmr/client/hmr-runtime.js +9 -1
  123. package/src/hmr/hmr-strategy.d.ts +16 -13
  124. package/src/hmr/hmr-strategy.js +22 -7
  125. package/src/hmr/strategies/default-hmr-strategy.d.ts +2 -2
  126. package/src/hmr/strategies/default-hmr-strategy.js +1 -1
  127. package/src/hmr/strategies/js-hmr-strategy.d.ts +4 -9
  128. package/src/hmr/strategies/js-hmr-strategy.js +5 -10
  129. package/src/index.browser.d.ts +2 -2
  130. package/src/index.browser.js +1 -1
  131. package/src/index.d.ts +3 -2
  132. package/src/index.js +15 -4
  133. package/src/integrations/ghtml/ghtml-renderer.d.ts +2 -1
  134. package/src/integrations/ghtml/ghtml-renderer.js +24 -29
  135. package/src/integrations/ghtml/ghtml.constants.d.ts +1 -0
  136. package/src/integrations/ghtml/ghtml.constants.js +4 -0
  137. package/src/integrations/ghtml/ghtml.plugin.d.ts +2 -6
  138. package/src/integrations/ghtml/ghtml.plugin.js +3 -4
  139. package/src/plugins/README.md +1 -0
  140. package/src/plugins/alias-resolver-cache.d.ts +68 -0
  141. package/src/plugins/alias-resolver-cache.js +106 -0
  142. package/src/plugins/alias-resolver-plugin.d.ts +5 -1
  143. package/src/plugins/alias-resolver-plugin.js +19 -7
  144. package/src/plugins/eco-component-meta-plugin.d.ts +12 -1
  145. package/src/plugins/eco-component-meta-plugin.js +43 -25
  146. package/src/plugins/foreign-jsx-override-plugin.d.ts +33 -0
  147. package/src/plugins/foreign-jsx-override-plugin.js +41 -0
  148. package/src/plugins/integration-plugin.d.ts +136 -42
  149. package/src/plugins/integration-plugin.js +99 -31
  150. package/src/plugins/processor.d.ts +4 -2
  151. package/src/plugins/processor.js +8 -3
  152. package/src/plugins/source-transform.d.ts +46 -0
  153. package/src/plugins/source-transform.js +71 -0
  154. package/src/route-renderer/GRAPH.md +80 -318
  155. package/src/route-renderer/README.md +74 -78
  156. package/src/route-renderer/orchestration/component-render-context.d.ts +97 -0
  157. package/src/route-renderer/orchestration/component-render-context.js +147 -0
  158. package/src/route-renderer/orchestration/declared-ownership-graph.d.ts +18 -0
  159. package/src/route-renderer/orchestration/declared-ownership-graph.js +34 -0
  160. package/src/route-renderer/orchestration/foreign-subtree-execution.service.d.ts +110 -0
  161. package/src/route-renderer/orchestration/foreign-subtree-execution.service.js +233 -0
  162. package/src/route-renderer/orchestration/integration-renderer.d.ts +290 -128
  163. package/src/route-renderer/orchestration/integration-renderer.js +660 -258
  164. package/src/route-renderer/orchestration/ownership-planning.service.d.ts +24 -0
  165. package/src/route-renderer/orchestration/ownership-planning.service.js +63 -0
  166. package/src/route-renderer/orchestration/ownership-validation.service.d.ts +29 -0
  167. package/src/route-renderer/orchestration/ownership-validation.service.js +53 -0
  168. package/src/route-renderer/orchestration/processed-asset-dedupe.d.ts +3 -0
  169. package/src/route-renderer/orchestration/processed-asset-dedupe.js +27 -0
  170. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.d.ts +91 -0
  171. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.js +170 -0
  172. package/src/route-renderer/orchestration/render-output.utils.d.ts +66 -0
  173. package/src/route-renderer/orchestration/render-output.utils.js +171 -0
  174. package/src/route-renderer/orchestration/route-render-orchestrator.d.ts +156 -0
  175. package/src/route-renderer/orchestration/route-render-orchestrator.js +577 -0
  176. package/src/route-renderer/orchestration/template-serialization.d.ts +38 -0
  177. package/src/route-renderer/orchestration/template-serialization.js +45 -0
  178. package/src/route-renderer/page-loading/component-dependency-collection.d.ts +37 -0
  179. package/src/route-renderer/page-loading/component-dependency-collection.js +132 -0
  180. package/src/route-renderer/page-loading/declared-asset-collection.d.ts +24 -0
  181. package/src/route-renderer/page-loading/declared-asset-collection.js +106 -0
  182. package/src/route-renderer/page-loading/dependency-resolver.d.ts +2 -2
  183. package/src/route-renderer/page-loading/dependency-resolver.js +27 -354
  184. package/src/route-renderer/page-loading/ecopages-virtual-imports.d.ts +11 -0
  185. package/src/route-renderer/page-loading/ecopages-virtual-imports.js +57 -0
  186. package/src/route-renderer/page-loading/lazy-entry-collection.d.ts +45 -0
  187. package/src/route-renderer/page-loading/lazy-entry-collection.js +105 -0
  188. package/src/route-renderer/page-loading/lazy-trigger-planning.d.ts +19 -0
  189. package/src/route-renderer/page-loading/lazy-trigger-planning.js +40 -0
  190. package/src/route-renderer/page-loading/module-declaration-aggregation.d.ts +5 -0
  191. package/src/route-renderer/page-loading/module-declaration-aggregation.js +33 -0
  192. package/src/route-renderer/page-loading/module-declaration-scripts.d.ts +3 -0
  193. package/src/route-renderer/page-loading/module-declaration-scripts.js +18 -0
  194. package/src/route-renderer/page-loading/page-dependency-bundling.d.ts +13 -0
  195. package/src/route-renderer/page-loading/page-dependency-bundling.js +137 -0
  196. package/src/route-renderer/page-loading/page-module-loader.d.ts +7 -4
  197. package/src/route-renderer/page-loading/page-module-loader.js +8 -5
  198. package/src/route-renderer/route-renderer.d.ts +31 -23
  199. package/src/route-renderer/route-renderer.js +17 -24
  200. package/src/router/README.md +76 -8
  201. package/src/router/client/navigation-coordinator.d.ts +20 -0
  202. package/src/router/client/navigation-coordinator.js +2 -2
  203. package/src/router/server/route-registry.d.ts +78 -0
  204. package/src/router/server/route-registry.js +262 -0
  205. package/src/services/README.md +1 -2
  206. package/src/services/assets/asset-processing-service/asset-dependency-keys.d.ts +3 -0
  207. package/src/services/assets/asset-processing-service/asset-dependency-keys.js +56 -0
  208. package/src/services/assets/asset-processing-service/asset-processing.service.d.ts +3 -20
  209. package/src/services/assets/asset-processing-service/asset-processing.service.js +52 -98
  210. package/src/services/assets/asset-processing-service/asset.factory.d.ts +1 -1
  211. package/src/services/assets/asset-processing-service/asset.factory.js +2 -2
  212. package/src/services/assets/asset-processing-service/assets.types.d.ts +14 -0
  213. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.d.ts +2 -0
  214. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.js +1 -0
  215. package/src/services/assets/asset-processing-service/grouped-content-bundles.d.ts +30 -0
  216. package/src/services/assets/asset-processing-service/grouped-content-bundles.js +65 -0
  217. package/src/services/assets/asset-processing-service/index.d.ts +6 -5
  218. package/src/services/assets/asset-processing-service/index.js +6 -5
  219. package/src/services/assets/asset-processing-service/page-package.d.ts +6 -0
  220. package/src/services/assets/asset-processing-service/page-package.js +80 -0
  221. package/src/services/assets/asset-processing-service/processor.interface.d.ts +2 -2
  222. package/src/services/assets/asset-processing-service/processor.registry.d.ts +2 -2
  223. package/src/services/assets/asset-processing-service/processors/base/base-processor.d.ts +1 -1
  224. package/src/services/assets/asset-processing-service/processors/base/base-processor.js +3 -2
  225. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.d.ts +10 -5
  226. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.js +69 -5
  227. package/src/services/assets/asset-processing-service/processors/index.d.ts +5 -5
  228. package/src/services/assets/asset-processing-service/processors/index.js +5 -5
  229. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.d.ts +3 -2
  230. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.js +66 -3
  231. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.d.ts +4 -3
  232. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.js +27 -6
  233. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.d.ts +38 -3
  234. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.js +57 -6
  235. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.d.ts +5 -2
  236. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +39 -5
  237. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.d.ts +2 -2
  238. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.js +5 -2
  239. package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.d.ts +18 -0
  240. package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.js +45 -0
  241. package/src/services/assets/browser-bundle.service.d.ts +44 -3
  242. package/src/services/assets/browser-bundle.service.js +15 -7
  243. package/src/services/html/html-rewriter-provider.service.d.ts +3 -0
  244. package/src/services/html/html-rewriter-provider.service.js +4 -1
  245. package/src/services/html/html-transformer.service.d.ts +22 -3
  246. package/src/services/html/html-transformer.service.js +101 -35
  247. package/src/services/invalidation/development-invalidation.service.d.ts +1 -1
  248. package/src/services/invalidation/development-invalidation.service.js +1 -0
  249. package/src/services/module-loading/app-module-loader.service.d.ts +7 -0
  250. package/src/services/module-loading/app-module-loader.service.js +0 -0
  251. package/src/services/module-loading/app-server-module-transpiler.service.d.ts +9 -1
  252. package/src/services/module-loading/app-server-module-transpiler.service.js +102 -6
  253. package/src/services/module-loading/host-module-loader-registry.d.ts +4 -0
  254. package/src/services/module-loading/host-module-loader-registry.js +15 -0
  255. package/src/services/module-loading/module-loading-types.d.ts +2 -0
  256. package/src/services/module-loading/module-loading-types.js +0 -0
  257. package/src/services/module-loading/page-module-import.service.d.ts +32 -8
  258. package/src/services/module-loading/page-module-import.service.js +83 -22
  259. package/src/services/module-loading/server-module-transpiler.service.d.ts +8 -14
  260. package/src/services/module-loading/server-module-transpiler.service.js +5 -2
  261. package/src/services/module-loading/source-module-support.d.ts +5 -0
  262. package/src/services/module-loading/source-module-support.js +8 -0
  263. package/src/services/runtime-state/dev-graph.service.d.ts +6 -6
  264. package/src/services/runtime-state/dev-graph.service.js +10 -10
  265. package/src/services/runtime-state/entrypoint-dependency-graph.service.d.ts +1 -1
  266. package/src/services/runtime-state/server-invalidation-state.service.d.ts +1 -1
  267. package/src/static-site-generator/static-site-generator.d.ts +23 -28
  268. package/src/static-site-generator/static-site-generator.js +119 -156
  269. package/src/{internal-types.d.ts → types/internal-types.d.ts} +34 -23
  270. package/src/types/internal-types.js +0 -0
  271. package/src/{public-types.d.ts → types/public-types.d.ts} +195 -37
  272. package/src/types/public-types.js +0 -0
  273. package/src/utils/html-escaping.d.ts +7 -0
  274. package/src/utils/html-escaping.js +6 -0
  275. package/src/utils/locals-utils.d.ts +1 -1
  276. package/src/utils/parse-cli-args.d.ts +4 -1
  277. package/src/utils/parse-cli-args.js +16 -1
  278. package/src/utils/resolve-work-dir.js +1 -1
  279. package/src/watchers/project-watcher.d.ts +4 -4
  280. package/src/watchers/project-watcher.js +35 -41
  281. package/src/watchers/project-watcher.test-helpers.d.ts +2 -2
  282. package/src/watchers/project-watcher.test-helpers.js +5 -5
  283. package/CHANGELOG.md +0 -31
  284. package/src/adapters/abstract/application-adapter.ts +0 -337
  285. package/src/adapters/abstract/router-adapter.ts +0 -30
  286. package/src/adapters/abstract/server-adapter.ts +0 -79
  287. package/src/adapters/bun/client-bridge.ts +0 -62
  288. package/src/adapters/bun/create-app.ts +0 -189
  289. package/src/adapters/bun/hmr-manager.ts +0 -409
  290. package/src/adapters/bun/index.ts +0 -2
  291. package/src/adapters/bun/server-adapter.ts +0 -499
  292. package/src/adapters/bun/server-lifecycle.d.ts +0 -63
  293. package/src/adapters/bun/server-lifecycle.js +0 -92
  294. package/src/adapters/bun/server-lifecycle.ts +0 -124
  295. package/src/adapters/index.ts +0 -6
  296. package/src/adapters/node/bootstrap-dependency-resolver.d.ts +0 -44
  297. package/src/adapters/node/bootstrap-dependency-resolver.js +0 -172
  298. package/src/adapters/node/bootstrap-dependency-resolver.ts +0 -301
  299. package/src/adapters/node/create-app.ts +0 -179
  300. package/src/adapters/node/index.d.ts +0 -6
  301. package/src/adapters/node/index.js +0 -11
  302. package/src/adapters/node/index.ts +0 -16
  303. package/src/adapters/node/node-client-bridge.ts +0 -79
  304. package/src/adapters/node/node-hmr-manager.ts +0 -381
  305. package/src/adapters/node/runtime-adapter.d.ts +0 -46
  306. package/src/adapters/node/runtime-adapter.js +0 -306
  307. package/src/adapters/node/runtime-adapter.ts +0 -439
  308. package/src/adapters/node/server-adapter.ts +0 -488
  309. package/src/adapters/node/static-content-server.ts +0 -239
  310. package/src/adapters/node/write-runtime-manifest.d.ts +0 -26
  311. package/src/adapters/node/write-runtime-manifest.js +0 -12
  312. package/src/adapters/node/write-runtime-manifest.ts +0 -38
  313. package/src/adapters/shared/api-response.ts +0 -104
  314. package/src/adapters/shared/application-adapter.ts +0 -199
  315. package/src/adapters/shared/define-api-handler.ts +0 -66
  316. package/src/adapters/shared/explicit-static-route-matcher.ts +0 -140
  317. package/src/adapters/shared/file-route-middleware-pipeline.ts +0 -127
  318. package/src/adapters/shared/fs-server-response-factory.ts +0 -118
  319. package/src/adapters/shared/fs-server-response-matcher.ts +0 -205
  320. package/src/adapters/shared/hmr-entrypoint-registrar.ts +0 -149
  321. package/src/adapters/shared/hmr-html-response.ts +0 -52
  322. package/src/adapters/shared/render-context.ts +0 -120
  323. package/src/adapters/shared/runtime-bootstrap.d.ts +0 -38
  324. package/src/adapters/shared/runtime-bootstrap.js +0 -43
  325. package/src/adapters/shared/runtime-bootstrap.ts +0 -79
  326. package/src/adapters/shared/server-adapter.ts +0 -489
  327. package/src/adapters/shared/server-route-handler.ts +0 -153
  328. package/src/adapters/shared/server-static-builder.ts +0 -166
  329. package/src/build/build-adapter.ts +0 -361
  330. package/src/build/build-manifest.ts +0 -54
  331. package/src/build/build-types.ts +0 -83
  332. package/src/build/dev-build-coordinator.d.ts +0 -74
  333. package/src/build/dev-build-coordinator.js +0 -161
  334. package/src/build/dev-build-coordinator.ts +0 -221
  335. package/src/build/esbuild-build-adapter.d.ts +0 -72
  336. package/src/build/esbuild-build-adapter.js +0 -422
  337. package/src/build/esbuild-build-adapter.ts +0 -559
  338. package/src/build/runtime-build-executor.ts +0 -34
  339. package/src/build/runtime-specifier-alias-plugin.d.ts +0 -15
  340. package/src/build/runtime-specifier-alias-plugin.js +0 -31
  341. package/src/build/runtime-specifier-alias-plugin.ts +0 -58
  342. package/src/config/config-builder.ts +0 -706
  343. package/src/constants.ts +0 -54
  344. package/src/create-app.ts +0 -87
  345. package/src/dev/sc-server.ts +0 -143
  346. package/src/eco/component-render-context.d.ts +0 -105
  347. package/src/eco/component-render-context.js +0 -87
  348. package/src/eco/component-render-context.ts +0 -224
  349. package/src/eco/eco.ts +0 -242
  350. package/src/eco/eco.types.ts +0 -221
  351. package/src/eco/eco.utils.ts +0 -89
  352. package/src/eco/global-injector-map.ts +0 -112
  353. package/src/eco/lazy-injector-map.ts +0 -120
  354. package/src/eco/module-dependencies.ts +0 -75
  355. package/src/errors/http-error.ts +0 -72
  356. package/src/errors/index.ts +0 -2
  357. package/src/errors/locals-access-error.ts +0 -7
  358. package/src/global/app-logger.ts +0 -4
  359. package/src/hmr/client/hmr-runtime.ts +0 -152
  360. package/src/hmr/hmr-strategy.ts +0 -172
  361. package/src/hmr/hmr.postcss.test.e2e.ts +0 -41
  362. package/src/hmr/hmr.test.e2e.ts +0 -66
  363. package/src/hmr/strategies/default-hmr-strategy.ts +0 -60
  364. package/src/hmr/strategies/js-hmr-strategy.ts +0 -320
  365. package/src/index.browser.ts +0 -3
  366. package/src/index.ts +0 -5
  367. package/src/integrations/ghtml/ghtml-renderer.ts +0 -96
  368. package/src/integrations/ghtml/ghtml.plugin.ts +0 -32
  369. package/src/internal-types.ts +0 -232
  370. package/src/plugins/alias-resolver-plugin.ts +0 -63
  371. package/src/plugins/eco-component-meta-plugin.ts +0 -481
  372. package/src/plugins/integration-plugin.ts +0 -226
  373. package/src/plugins/processor.ts +0 -240
  374. package/src/plugins/runtime-capability.ts +0 -14
  375. package/src/public-types.ts +0 -1317
  376. package/src/route-renderer/component-graph/component-graph-executor.d.ts +0 -32
  377. package/src/route-renderer/component-graph/component-graph-executor.js +0 -31
  378. package/src/route-renderer/component-graph/component-graph-executor.ts +0 -84
  379. package/src/route-renderer/component-graph/component-graph.d.ts +0 -42
  380. package/src/route-renderer/component-graph/component-graph.js +0 -72
  381. package/src/route-renderer/component-graph/component-graph.ts +0 -159
  382. package/src/route-renderer/component-graph/component-marker.d.ts +0 -52
  383. package/src/route-renderer/component-graph/component-marker.js +0 -46
  384. package/src/route-renderer/component-graph/component-marker.ts +0 -117
  385. package/src/route-renderer/component-graph/component-reference.d.ts +0 -10
  386. package/src/route-renderer/component-graph/component-reference.js +0 -19
  387. package/src/route-renderer/component-graph/component-reference.ts +0 -29
  388. package/src/route-renderer/component-graph/marker-graph-resolver.d.ts +0 -77
  389. package/src/route-renderer/component-graph/marker-graph-resolver.js +0 -95
  390. package/src/route-renderer/component-graph/marker-graph-resolver.ts +0 -155
  391. package/src/route-renderer/orchestration/integration-renderer.ts +0 -790
  392. package/src/route-renderer/orchestration/render-execution.service.d.ts +0 -103
  393. package/src/route-renderer/orchestration/render-execution.service.js +0 -121
  394. package/src/route-renderer/orchestration/render-execution.service.ts +0 -230
  395. package/src/route-renderer/orchestration/render-preparation.service.d.ts +0 -121
  396. package/src/route-renderer/orchestration/render-preparation.service.js +0 -332
  397. package/src/route-renderer/orchestration/render-preparation.service.ts +0 -476
  398. package/src/route-renderer/page-loading/dependency-resolver.ts +0 -612
  399. package/src/route-renderer/page-loading/page-module-loader.ts +0 -181
  400. package/src/route-renderer/route-renderer.ts +0 -115
  401. package/src/router/client/link-intent.test.browser.ts +0 -51
  402. package/src/router/client/link-intent.ts +0 -92
  403. package/src/router/client/navigation-coordinator.ts +0 -433
  404. package/src/router/server/fs-router-scanner.d.ts +0 -41
  405. package/src/router/server/fs-router-scanner.js +0 -156
  406. package/src/router/server/fs-router-scanner.ts +0 -219
  407. package/src/router/server/fs-router.d.ts +0 -26
  408. package/src/router/server/fs-router.js +0 -100
  409. package/src/router/server/fs-router.ts +0 -122
  410. package/src/services/assets/asset-processing-service/asset-processing.service.ts +0 -401
  411. package/src/services/assets/asset-processing-service/asset.factory.ts +0 -105
  412. package/src/services/assets/asset-processing-service/assets.types.ts +0 -113
  413. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.ts +0 -95
  414. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.ts +0 -78
  415. package/src/services/assets/asset-processing-service/index.ts +0 -5
  416. package/src/services/assets/asset-processing-service/processor.interface.ts +0 -27
  417. package/src/services/assets/asset-processing-service/processor.registry.ts +0 -18
  418. package/src/services/assets/asset-processing-service/processors/base/base-processor.ts +0 -82
  419. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.ts +0 -95
  420. package/src/services/assets/asset-processing-service/processors/index.ts +0 -5
  421. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.ts +0 -66
  422. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.ts +0 -88
  423. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.ts +0 -85
  424. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.ts +0 -27
  425. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.ts +0 -80
  426. package/src/services/assets/browser-bundle.service.ts +0 -53
  427. package/src/services/cache/cache.types.ts +0 -126
  428. package/src/services/cache/index.ts +0 -18
  429. package/src/services/cache/memory-cache-store.ts +0 -130
  430. package/src/services/cache/page-cache-service.ts +0 -202
  431. package/src/services/cache/page-request-cache-coordinator.service.ts +0 -131
  432. package/src/services/html/html-rewriter-provider.service.ts +0 -103
  433. package/src/services/html/html-transformer.service.ts +0 -279
  434. package/src/services/invalidation/development-invalidation.service.ts +0 -261
  435. package/src/services/module-loading/app-server-module-transpiler.service.ts +0 -52
  436. package/src/services/module-loading/page-module-import.service.ts +0 -200
  437. package/src/services/module-loading/server-loader.service.d.ts +0 -96
  438. package/src/services/module-loading/server-loader.service.js +0 -32
  439. package/src/services/module-loading/server-loader.service.ts +0 -130
  440. package/src/services/module-loading/server-module-transpiler.service.ts +0 -105
  441. package/src/services/runtime-manifest/node-runtime-manifest.service.d.ts +0 -35
  442. package/src/services/runtime-manifest/node-runtime-manifest.service.js +0 -60
  443. package/src/services/runtime-manifest/node-runtime-manifest.service.ts +0 -101
  444. package/src/services/runtime-state/dev-graph.service.ts +0 -217
  445. package/src/services/runtime-state/entrypoint-dependency-graph.service.ts +0 -136
  446. package/src/services/runtime-state/runtime-specifier-registry.service.d.ts +0 -69
  447. package/src/services/runtime-state/runtime-specifier-registry.service.js +0 -37
  448. package/src/services/runtime-state/runtime-specifier-registry.service.ts +0 -96
  449. package/src/services/runtime-state/server-invalidation-state.service.ts +0 -68
  450. package/src/services/validation/schema-validation-service.ts +0 -204
  451. package/src/services/validation/standard-schema.types.ts +0 -68
  452. package/src/static-site-generator/static-site-generator.ts +0 -462
  453. package/src/utils/css.d.ts +0 -1
  454. package/src/utils/css.js +0 -7
  455. package/src/utils/css.ts +0 -5
  456. package/src/utils/deep-merge.ts +0 -47
  457. package/src/utils/hash.ts +0 -5
  458. package/src/utils/html.ts +0 -1
  459. package/src/utils/invariant.ts +0 -15
  460. package/src/utils/locals-utils.ts +0 -37
  461. package/src/utils/parse-cli-args.ts +0 -83
  462. package/src/utils/path-utils.module.ts +0 -14
  463. package/src/utils/resolve-work-dir.ts +0 -45
  464. package/src/utils/runtime.ts +0 -44
  465. package/src/utils/server-utils.module.ts +0 -67
  466. package/src/watchers/project-watcher.test-helpers.ts +0 -41
  467. package/src/watchers/project-watcher.ts +0 -363
  468. /package/src/{internal-types.js → adapters/shared/runtime-host.js} +0 -0
  469. /package/src/{public-types.js → adapters/shared/static-preview-host.js} +0 -0
  470. /package/src/{constants.d.ts → config/constants.d.ts} +0 -0
  471. /package/src/{constants.js → config/constants.js} +0 -0
@@ -1,149 +1,47 @@
1
- import fs from "node:fs";
2
- import path from "node:path";
3
- import { RESOLVED_ASSETS_DIR } from "../../constants";
4
- import { getAppBuildExecutor } from "../../build/build-adapter.js";
5
- import { fileSystem } from "@ecopages/file-system";
6
- import { HmrStrategyType } from "../../hmr/hmr-strategy";
7
- import { DefaultHmrStrategy } from "../../hmr/strategies/default-hmr-strategy";
8
- import { JsHmrStrategy } from "../../hmr/strategies/js-hmr-strategy";
9
- import { appLogger } from "../../global/app-logger";
10
- import { HmrEntrypointRegistrar } from "../shared/hmr-entrypoint-registrar.js";
11
- import { BrowserBundleService } from "../../services/assets/browser-bundle.service.js";
12
- import { getAppServerModuleTranspiler } from "../../services/module-loading/app-server-module-transpiler.service";
1
+ import { appLogger } from "../../global/app-logger.js";
13
2
  import {
14
- getAppEntrypointDependencyGraph,
15
- NoopEntrypointDependencyGraph,
16
- setAppEntrypointDependencyGraph
3
+ InMemoryEntrypointDependencyGraph
17
4
  } from "../../services/runtime-state/entrypoint-dependency-graph.service.js";
18
- import { getAppRuntimeSpecifierRegistry } from "../../services/runtime-state/runtime-specifier-registry.service.js";
19
- import { resolveInternalExecutionDir, resolveInternalWorkDir } from "../../utils/resolve-work-dir.js";
20
- class HmrManager {
21
- static entrypointRegistrationTimeoutMs = 4e3;
22
- appConfig;
23
- bridge;
24
- /** Keep track of watchers */
25
- watchers = /* @__PURE__ */ new Map();
26
- /** entrypoint -> output path */
27
- watchedFiles = /* @__PURE__ */ new Map();
28
- entrypointRegistrations = /* @__PURE__ */ new Map();
29
- distDir;
30
- plugins = [];
31
- enabled = true;
32
- strategies = [];
33
- entrypointRegistrar;
34
- browserBundleService;
35
- entrypointDependencyGraph;
36
- runtimeSpecifierRegistry;
37
- serverModuleTranspiler;
5
+ import { SharedHmrManager } from "../shared/shared-hmr-manager.js";
6
+ class HmrManager extends SharedHmrManager {
38
7
  wsHandler;
39
- constructor({ appConfig, bridge }) {
40
- this.appConfig = appConfig;
41
- this.bridge = bridge;
42
- this.distDir = path.join(resolveInternalWorkDir(this.appConfig), RESOLVED_ASSETS_DIR, "_hmr");
43
- this.entrypointRegistrar = new HmrEntrypointRegistrar({
44
- srcDir: this.appConfig.absolutePaths.srcDir,
45
- distDir: this.distDir,
46
- entrypointRegistrations: this.entrypointRegistrations,
47
- watchedFiles: this.watchedFiles,
48
- clearFailedRegistration: (entrypointPath) => this.clearFailedEntrypointRegistration(entrypointPath),
49
- registrationTimeoutMs: HmrManager.entrypointRegistrationTimeoutMs
50
- });
51
- this.browserBundleService = new BrowserBundleService(appConfig);
52
- const existingEntrypointDependencyGraph = getAppEntrypointDependencyGraph(appConfig);
53
- this.entrypointDependencyGraph = existingEntrypointDependencyGraph instanceof NoopEntrypointDependencyGraph ? existingEntrypointDependencyGraph : new NoopEntrypointDependencyGraph();
54
- setAppEntrypointDependencyGraph(this.appConfig, this.entrypointDependencyGraph);
55
- this.runtimeSpecifierRegistry = getAppRuntimeSpecifierRegistry(this.appConfig);
56
- this.serverModuleTranspiler = getAppServerModuleTranspiler(this.appConfig);
57
- this.cleanDistDir();
58
- this.initializeStrategies();
59
- }
60
- /**
61
- * Ensures the HMR output directory exists.
62
- *
63
- * This must not remove the directory because multiple app processes
64
- * can share the same dist path during e2e runs.
65
- */
66
- cleanDistDir() {
67
- fileSystem.ensureDir(this.distDir);
68
- }
69
8
  /**
70
- * Returns whether the generic JS strategy may rebuild an entrypoint.
9
+ * Creates the Bun HMR manager around the shared HMR orchestration pipeline.
71
10
  *
72
11
  * @remarks
73
- * Integration-owned page entrypoints are excluded so a shared dependency
74
- * invalidation cannot replace framework-owned browser output with a generic JS
75
- * rebuild.
12
+ * Bun delegates route watching, rebuild dispatch, and runtime bundle
13
+ * generation to `SharedHmrManager`. The Bun subclass only supplies the
14
+ * transport-specific dependency graph policy and websocket hook surface.
76
15
  */
77
- shouldJsStrategyProcessEntrypoint(entrypointPath) {
78
- return !this.strategies.some((strategy) => {
79
- if (strategy.type !== HmrStrategyType.INTEGRATION || strategy.priority <= HmrStrategyType.SCRIPT) {
80
- return false;
81
- }
82
- try {
83
- return strategy.matches(entrypointPath);
84
- } catch (error) {
85
- appLogger.error(error);
86
- return false;
87
- }
88
- });
89
- }
90
- /**
91
- * Initializes core HMR strategies.
92
- * Strategies are evaluated in priority order (highest first).
93
- */
94
- initializeStrategies() {
95
- const jsContext = {
96
- getWatchedFiles: () => this.watchedFiles,
97
- getSpecifierMap: () => this.runtimeSpecifierRegistry.getAll(),
98
- getDistDir: () => this.distDir,
99
- getPlugins: () => this.plugins,
100
- getSrcDir: () => this.appConfig.absolutePaths.srcDir,
101
- getPagesDir: () => this.appConfig.absolutePaths.pagesDir,
102
- getLayoutsDir: () => this.appConfig.absolutePaths.layoutsDir,
103
- getTemplateExtensions: () => this.appConfig.templatesExt,
104
- getBrowserBundleService: () => this.browserBundleService,
105
- getEntrypointDependencyGraph: () => this.entrypointDependencyGraph,
106
- shouldProcessEntrypoint: (entrypointPath) => this.shouldJsStrategyProcessEntrypoint(entrypointPath)
107
- };
108
- this.strategies = [new JsHmrStrategy(jsContext), new DefaultHmrStrategy()];
16
+ constructor({ appConfig, bridge }) {
17
+ super({ appConfig, bridge });
109
18
  }
110
19
  /**
111
- * Registers a custom HMR strategy.
112
- * Used by integrations to provide framework-specific HMR handling.
113
- * @param strategy - The HMR strategy to register
20
+ * Reuses the shared in-memory dependency graph when possible and otherwise
21
+ * creates the Bun-compatible default graph implementation.
114
22
  */
115
- registerStrategy(strategy) {
116
- this.strategies.push(strategy);
117
- }
118
- setPlugins(plugins) {
119
- this.plugins = [...plugins];
120
- }
121
- setEnabled(enabled) {
122
- this.enabled = enabled;
123
- }
124
- isEnabled() {
125
- return this.enabled;
23
+ createEntrypointDependencyGraph(existingEntrypointDependencyGraph) {
24
+ return existingEntrypointDependencyGraph instanceof InMemoryEntrypointDependencyGraph ? existingEntrypointDependencyGraph : new InMemoryEntrypointDependencyGraph();
126
25
  }
127
26
  /**
128
- * Registers runtime bare-specifier mappings exposed by integrations.
27
+ * Returns the Bun websocket hooks that attach and detach live HMR subscribers.
129
28
  *
130
29
  * @remarks
131
- * These mappings are consumed by framework-owned HMR strategies that preserve
132
- * shared runtime imports in browser bundles. The registry stays generic so
133
- * these mappings can later support broader import-map-style runtime features
134
- * without moving integration semantics into core.
30
+ * `SharedHmrManager` stores the bridge behind the transport-agnostic
31
+ * `IClientBridge` contract because most HMR coordination only needs broadcast
32
+ * behavior. Bun connection lifecycle wiring is the point where that abstraction
33
+ * intentionally narrows back to the concrete Bun bridge so websocket instances
34
+ * can be tracked directly.
135
35
  */
136
- registerSpecifierMap(map) {
137
- this.runtimeSpecifierRegistry.register(map);
138
- }
139
36
  getWebSocketHandler() {
37
+ const bridge = this.bridge;
140
38
  const open = (ws) => {
141
- this.bridge.subscribe(ws);
142
- appLogger.debug(`[HmrManager] Connection opened. Subscribers: ${this.bridge.subscriberCount}`);
39
+ bridge.subscribe(ws);
40
+ appLogger.debug(`[HmrManager] Connection opened. Subscribers: ${bridge.subscriberCount}`);
143
41
  };
144
42
  const close = (ws) => {
145
- this.bridge.unsubscribe(ws);
146
- appLogger.debug(`[HmrManager] Connection closed. Subscribers: ${this.bridge.subscriberCount}`);
43
+ bridge.unsubscribe(ws);
44
+ appLogger.debug(`[HmrManager] Connection closed. Subscribers: ${bridge.subscriberCount}`);
147
45
  };
148
46
  this.wsHandler = { open, close };
149
47
  return {
@@ -154,180 +52,6 @@ class HmrManager {
154
52
  }
155
53
  };
156
54
  }
157
- /**
158
- * Builds the client-side HMR runtime script.
159
- */
160
- async buildRuntime() {
161
- const runtimeSource = path.resolve(import.meta.dirname, "../../hmr/client/hmr-runtime.js");
162
- const result = await this.browserBundleService.bundle({
163
- profile: "hmr-runtime",
164
- entrypoints: [runtimeSource],
165
- outdir: this.distDir,
166
- naming: "_hmr_runtime.js",
167
- minify: false,
168
- plugins: this.plugins
169
- });
170
- if (!result.success) {
171
- appLogger.error("[HMR] Failed to build runtime script:", result.logs);
172
- }
173
- }
174
- getRuntimePath() {
175
- return path.join(this.distDir, "_hmr_runtime.js");
176
- }
177
- broadcast(event) {
178
- appLogger.debug(
179
- `[HMR] Broadcasting ${event.type} event, path=${event.path || "all"}, subscribers=${this.bridge.subscriberCount}`
180
- );
181
- this.bridge.broadcast(event);
182
- }
183
- async handleFileChange(filePath, options = {}) {
184
- const sorted = [...this.strategies].sort((a, b) => b.priority - a.priority);
185
- const strategy = sorted.find((s) => {
186
- try {
187
- return s.matches(filePath);
188
- } catch (err) {
189
- appLogger.error(err);
190
- return false;
191
- }
192
- });
193
- if (!strategy) {
194
- appLogger.warn(`[HMR] No strategy found for ${filePath}`);
195
- return;
196
- }
197
- appLogger.debug(`[HmrManager] Selected strategy: ${strategy.constructor.name}`);
198
- const action = await strategy.process(filePath);
199
- const shouldBroadcast = options.broadcast ?? true;
200
- if (shouldBroadcast && action.type === "broadcast") {
201
- if (action.events) {
202
- for (const event of action.events) {
203
- this.broadcast(event);
204
- }
205
- }
206
- }
207
- }
208
- getOutputUrl(entrypointPath) {
209
- return this.watchedFiles.get(entrypointPath);
210
- }
211
- getWatchedFiles() {
212
- return this.watchedFiles;
213
- }
214
- getSpecifierMap() {
215
- return this.runtimeSpecifierRegistry.getAll();
216
- }
217
- getDistDir() {
218
- return this.distDir;
219
- }
220
- getPlugins() {
221
- return this.plugins;
222
- }
223
- getDefaultContext() {
224
- return {
225
- getWatchedFiles: () => this.watchedFiles,
226
- getSpecifierMap: () => this.runtimeSpecifierRegistry.getAll(),
227
- getDistDir: () => this.distDir,
228
- getPlugins: () => this.plugins,
229
- getSrcDir: () => this.appConfig.absolutePaths.srcDir,
230
- getLayoutsDir: () => this.appConfig.absolutePaths.layoutsDir,
231
- getPagesDir: () => this.appConfig.absolutePaths.pagesDir,
232
- getBuildExecutor: () => getAppBuildExecutor(this.appConfig),
233
- getBrowserBundleService: () => this.browserBundleService,
234
- importServerModule: async (filePath) => await this.serverModuleTranspiler.importModule({
235
- filePath,
236
- outdir: path.join(resolveInternalExecutionDir(this.appConfig), ".server-modules"),
237
- externalPackages: true
238
- })
239
- };
240
- }
241
- clearFailedEntrypointRegistration(entrypointPath) {
242
- this.watchedFiles.delete(entrypointPath);
243
- }
244
- /**
245
- * Registers one integration-owned page entrypoint.
246
- *
247
- * @remarks
248
- * Concurrent callers share one in-flight registration. The registration is
249
- * cleared from the dedupe map when it settles so later callers cannot inherit a
250
- * stale promise.
251
- */
252
- async registerEntrypoint(entrypointPath) {
253
- return await this.entrypointRegistrar.registerEntrypoint(entrypointPath, {
254
- emit: async (normalizedEntrypoint, outputPath) => await this.emitStrictEntrypoint(normalizedEntrypoint, outputPath),
255
- getMissingOutputError: (normalizedEntrypoint, outputPath) => new Error(
256
- `[HMR] Integration failed to emit entrypoint ${normalizedEntrypoint} to ${outputPath}. Page entrypoints must be produced by their owning integration.`
257
- )
258
- });
259
- }
260
- /**
261
- * Registers one generic script entrypoint.
262
- *
263
- * @remarks
264
- * This explicit path keeps the page-entrypoint contract strict while still
265
- * allowing generic script assets to use the fallback build path.
266
- */
267
- async registerScriptEntrypoint(entrypointPath) {
268
- return await this.entrypointRegistrar.registerEntrypoint(entrypointPath, {
269
- emit: async (normalizedEntrypoint, outputPath) => await this.emitScriptEntrypoint(normalizedEntrypoint, outputPath),
270
- getMissingOutputError: (normalizedEntrypoint) => new Error(`[HMR] Failed to register script entrypoint: ${normalizedEntrypoint}`)
271
- });
272
- }
273
- /**
274
- * Performs strict integration-owned registration for one normalized path.
275
- *
276
- * @remarks
277
- * The manager reserves the output URL, removes any stale emitted file, runs
278
- * strategy processing without broadcasting, and then verifies that the owning
279
- * integration emitted the expected file.
280
- */
281
- async emitStrictEntrypoint(entrypointPath, _outputPath) {
282
- await this.handleFileChange(entrypointPath, { broadcast: false });
283
- }
284
- /**
285
- * Performs registration for a generic script asset.
286
- *
287
- * @remarks
288
- * Strategies get the first chance to emit output. If no output exists after
289
- * that pass, Bun falls back to the generic browser build for this explicit
290
- * script-only path.
291
- */
292
- async emitScriptEntrypoint(entrypointPath, outputPath) {
293
- const naming = path.relative(this.distDir, outputPath).split(path.sep).join("/");
294
- await this.handleFileChange(entrypointPath, { broadcast: false });
295
- if (!fileSystem.exists(outputPath)) {
296
- const buildResult = await this.browserBundleService.bundle({
297
- profile: "hmr-entrypoint",
298
- entrypoints: [entrypointPath],
299
- outdir: this.distDir,
300
- naming,
301
- minify: false,
302
- plugins: this.plugins
303
- });
304
- if (!buildResult.success) {
305
- appLogger.error(
306
- `[HMR] Generic script entrypoint build failed for ${entrypointPath}:`,
307
- buildResult.logs
308
- );
309
- }
310
- }
311
- }
312
- /**
313
- * Stops active watchers and releases retained registration state.
314
- *
315
- * @remarks
316
- * Emitted `_hmr` files remain on disk because parallel app processes may share
317
- * the same dist directory. The in-memory indexes are cleared so stale
318
- * entrypoints and specifier maps cannot leak through a reused manager object.
319
- */
320
- stop() {
321
- this.entrypointRegistrations.clear();
322
- for (const watcher of this.watchers.values()) {
323
- watcher.close();
324
- }
325
- this.watchers.clear();
326
- this.watchedFiles.clear();
327
- this.runtimeSpecifierRegistry.clear();
328
- this.entrypointDependencyGraph.reset();
329
- this.plugins = [];
330
- }
331
55
  }
332
56
  export {
333
57
  HmrManager
@@ -1,2 +1,2 @@
1
- export { EcopagesApp, createApp } from './create-app.js';
1
+ export { BunEcopagesApp, createApp } from './create-app.js';
2
2
  export { defineApiHandler, defineGroupHandler, type GroupHandler } from '../shared/define-api-handler.js';
@@ -1,7 +1,7 @@
1
- import { EcopagesApp, createApp } from "./create-app.js";
1
+ import { BunEcopagesApp, createApp } from "./create-app.js";
2
2
  import { defineApiHandler, defineGroupHandler } from "../shared/define-api-handler.js";
3
3
  export {
4
- EcopagesApp,
4
+ BunEcopagesApp,
5
5
  createApp,
6
6
  defineApiHandler,
7
7
  defineGroupHandler
@@ -0,0 +1,52 @@
1
+ import type { Server } from 'bun';
2
+ import type { RuntimeHost, RuntimeHostStartOptions } from '../shared/runtime-host.js';
3
+ type BunRuntimeProvider = {
4
+ serve(options: Bun.Serve.Options<unknown>): Server<unknown>;
5
+ };
6
+ /**
7
+ * Bun runtime host that adapts the shared runtime lifecycle contract onto
8
+ * `Bun.serve()`.
9
+ *
10
+ * @remarks
11
+ * The injected runtime provider exists so tests and non-Bun call sites can
12
+ * construct the host without assuming `globalThis.Bun` is present. The provider
13
+ * returns `null` instead of `undefined` to keep that absence explicit at the
14
+ * host boundary.
15
+ */
16
+ export declare class BunRuntimeHost<WebSocketData = undefined> implements RuntimeHost<Server<WebSocketData>, Bun.Serve.Options<WebSocketData>> {
17
+ private readonly runtimeProvider;
18
+ /**
19
+ * Creates a Bun runtime host with an injectable runtime lookup.
20
+ *
21
+ * @remarks
22
+ * Production code uses the default `getBunRuntime()` lookup. Tests may inject a
23
+ * fake provider that either supplies a `serve()` implementation or returns
24
+ * `null` to verify the runtime-required failure path.
25
+ */
26
+ constructor(runtimeProvider?: () => BunRuntimeProvider | null);
27
+ /**
28
+ * Starts the Bun server using the already-composed serve options from the
29
+ * shared application bootstrap.
30
+ */
31
+ start(options: RuntimeHostStartOptions<Bun.Serve.Options<WebSocketData>>): Promise<Server<WebSocketData>>;
32
+ /**
33
+ * Stops the active Bun server immediately.
34
+ *
35
+ * @remarks
36
+ * The shared runtime-host contract accepts optional stop options, but Bun's
37
+ * server API already models the shutdown behavior directly. This host always
38
+ * uses Bun's forceful stop path so preview and embedded runtime shutdowns do
39
+ * not linger on open connections.
40
+ */
41
+ stop(server: Server<WebSocketData>): Promise<void>;
42
+ /**
43
+ * Resolves the externally reported runtime origin from the active server.
44
+ *
45
+ * @remarks
46
+ * Bun may finalize the hostname or port differently from the requested serve
47
+ * options. This method prefers the live server binding and only falls back to
48
+ * the requested options when Bun leaves a field unset.
49
+ */
50
+ getOrigin(server: Server<WebSocketData>, fallbackServeOptions: Bun.Serve.Options<WebSocketData>): string;
51
+ }
52
+ export {};
@@ -0,0 +1,56 @@
1
+ import { getBunRuntime } from "../../utils/runtime.js";
2
+ import { resolveServeRuntimeOrigin } from "../shared/runtime-app-bootstrap.js";
3
+ class BunRuntimeHost {
4
+ /**
5
+ * Creates a Bun runtime host with an injectable runtime lookup.
6
+ *
7
+ * @remarks
8
+ * Production code uses the default `getBunRuntime()` lookup. Tests may inject a
9
+ * fake provider that either supplies a `serve()` implementation or returns
10
+ * `null` to verify the runtime-required failure path.
11
+ */
12
+ constructor(runtimeProvider = () => getBunRuntime() ?? null) {
13
+ this.runtimeProvider = runtimeProvider;
14
+ }
15
+ runtimeProvider;
16
+ /**
17
+ * Starts the Bun server using the already-composed serve options from the
18
+ * shared application bootstrap.
19
+ */
20
+ async start(options) {
21
+ const bun = this.runtimeProvider();
22
+ if (!bun) {
23
+ throw new Error("Bun runtime is required for the Bun adapter");
24
+ }
25
+ return bun.serve(options.serveOptions);
26
+ }
27
+ /**
28
+ * Stops the active Bun server immediately.
29
+ *
30
+ * @remarks
31
+ * The shared runtime-host contract accepts optional stop options, but Bun's
32
+ * server API already models the shutdown behavior directly. This host always
33
+ * uses Bun's forceful stop path so preview and embedded runtime shutdowns do
34
+ * not linger on open connections.
35
+ */
36
+ async stop(server) {
37
+ server.stop(true);
38
+ }
39
+ /**
40
+ * Resolves the externally reported runtime origin from the active server.
41
+ *
42
+ * @remarks
43
+ * Bun may finalize the hostname or port differently from the requested serve
44
+ * options. This method prefers the live server binding and only falls back to
45
+ * the requested options when Bun leaves a field unset.
46
+ */
47
+ getOrigin(server, fallbackServeOptions) {
48
+ return resolveServeRuntimeOrigin({
49
+ hostname: server.hostname ?? fallbackServeOptions.hostname,
50
+ port: server.port ?? fallbackServeOptions.port
51
+ });
52
+ }
53
+ }
54
+ export {
55
+ BunRuntimeHost
56
+ };