@ecopages/core 0.2.0-alpha.9 → 0.2.0-beta.1

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 (473) hide show
  1. package/README.md +79 -28
  2. package/package.json +104 -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 +32 -8
  67. package/src/adapters/shared/server-static-builder.js +69 -6
  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-entry-file.d.ts +72 -0
  279. package/src/utils/resolve-entry-file.js +41 -0
  280. package/src/utils/resolve-work-dir.js +1 -1
  281. package/src/watchers/project-watcher.d.ts +4 -4
  282. package/src/watchers/project-watcher.js +35 -41
  283. package/src/watchers/project-watcher.test-helpers.d.ts +2 -2
  284. package/src/watchers/project-watcher.test-helpers.js +5 -5
  285. package/CHANGELOG.md +0 -31
  286. package/src/adapters/abstract/application-adapter.ts +0 -337
  287. package/src/adapters/abstract/router-adapter.ts +0 -30
  288. package/src/adapters/abstract/server-adapter.ts +0 -79
  289. package/src/adapters/bun/client-bridge.ts +0 -62
  290. package/src/adapters/bun/create-app.ts +0 -189
  291. package/src/adapters/bun/hmr-manager.ts +0 -409
  292. package/src/adapters/bun/index.ts +0 -2
  293. package/src/adapters/bun/server-adapter.ts +0 -499
  294. package/src/adapters/bun/server-lifecycle.d.ts +0 -63
  295. package/src/adapters/bun/server-lifecycle.js +0 -92
  296. package/src/adapters/bun/server-lifecycle.ts +0 -124
  297. package/src/adapters/index.ts +0 -6
  298. package/src/adapters/node/bootstrap-dependency-resolver.d.ts +0 -44
  299. package/src/adapters/node/bootstrap-dependency-resolver.js +0 -172
  300. package/src/adapters/node/bootstrap-dependency-resolver.ts +0 -301
  301. package/src/adapters/node/create-app.ts +0 -179
  302. package/src/adapters/node/index.d.ts +0 -6
  303. package/src/adapters/node/index.js +0 -11
  304. package/src/adapters/node/index.ts +0 -16
  305. package/src/adapters/node/node-client-bridge.ts +0 -79
  306. package/src/adapters/node/node-hmr-manager.ts +0 -381
  307. package/src/adapters/node/runtime-adapter.d.ts +0 -46
  308. package/src/adapters/node/runtime-adapter.js +0 -306
  309. package/src/adapters/node/runtime-adapter.ts +0 -439
  310. package/src/adapters/node/server-adapter.ts +0 -488
  311. package/src/adapters/node/static-content-server.ts +0 -239
  312. package/src/adapters/node/write-runtime-manifest.d.ts +0 -26
  313. package/src/adapters/node/write-runtime-manifest.js +0 -12
  314. package/src/adapters/node/write-runtime-manifest.ts +0 -38
  315. package/src/adapters/shared/api-response.ts +0 -104
  316. package/src/adapters/shared/application-adapter.ts +0 -199
  317. package/src/adapters/shared/define-api-handler.ts +0 -66
  318. package/src/adapters/shared/explicit-static-route-matcher.ts +0 -140
  319. package/src/adapters/shared/file-route-middleware-pipeline.ts +0 -127
  320. package/src/adapters/shared/fs-server-response-factory.ts +0 -118
  321. package/src/adapters/shared/fs-server-response-matcher.ts +0 -205
  322. package/src/adapters/shared/hmr-entrypoint-registrar.ts +0 -149
  323. package/src/adapters/shared/hmr-html-response.ts +0 -52
  324. package/src/adapters/shared/render-context.ts +0 -120
  325. package/src/adapters/shared/runtime-bootstrap.d.ts +0 -38
  326. package/src/adapters/shared/runtime-bootstrap.js +0 -43
  327. package/src/adapters/shared/runtime-bootstrap.ts +0 -79
  328. package/src/adapters/shared/server-adapter.ts +0 -489
  329. package/src/adapters/shared/server-route-handler.ts +0 -153
  330. package/src/adapters/shared/server-static-builder.ts +0 -166
  331. package/src/build/build-adapter.ts +0 -361
  332. package/src/build/build-manifest.ts +0 -54
  333. package/src/build/build-types.ts +0 -83
  334. package/src/build/dev-build-coordinator.d.ts +0 -74
  335. package/src/build/dev-build-coordinator.js +0 -161
  336. package/src/build/dev-build-coordinator.ts +0 -221
  337. package/src/build/esbuild-build-adapter.d.ts +0 -72
  338. package/src/build/esbuild-build-adapter.js +0 -422
  339. package/src/build/esbuild-build-adapter.ts +0 -559
  340. package/src/build/runtime-build-executor.ts +0 -34
  341. package/src/build/runtime-specifier-alias-plugin.d.ts +0 -15
  342. package/src/build/runtime-specifier-alias-plugin.js +0 -31
  343. package/src/build/runtime-specifier-alias-plugin.ts +0 -58
  344. package/src/config/config-builder.ts +0 -706
  345. package/src/constants.ts +0 -54
  346. package/src/create-app.ts +0 -87
  347. package/src/dev/sc-server.ts +0 -143
  348. package/src/eco/component-render-context.d.ts +0 -105
  349. package/src/eco/component-render-context.js +0 -87
  350. package/src/eco/component-render-context.ts +0 -224
  351. package/src/eco/eco.ts +0 -242
  352. package/src/eco/eco.types.ts +0 -221
  353. package/src/eco/eco.utils.ts +0 -89
  354. package/src/eco/global-injector-map.ts +0 -112
  355. package/src/eco/lazy-injector-map.ts +0 -120
  356. package/src/eco/module-dependencies.ts +0 -75
  357. package/src/errors/http-error.ts +0 -72
  358. package/src/errors/index.ts +0 -2
  359. package/src/errors/locals-access-error.ts +0 -7
  360. package/src/global/app-logger.ts +0 -4
  361. package/src/hmr/client/hmr-runtime.ts +0 -152
  362. package/src/hmr/hmr-strategy.ts +0 -172
  363. package/src/hmr/hmr.postcss.test.e2e.ts +0 -41
  364. package/src/hmr/hmr.test.e2e.ts +0 -66
  365. package/src/hmr/strategies/default-hmr-strategy.ts +0 -60
  366. package/src/hmr/strategies/js-hmr-strategy.ts +0 -320
  367. package/src/index.browser.ts +0 -3
  368. package/src/index.ts +0 -5
  369. package/src/integrations/ghtml/ghtml-renderer.ts +0 -96
  370. package/src/integrations/ghtml/ghtml.plugin.ts +0 -32
  371. package/src/internal-types.ts +0 -232
  372. package/src/plugins/alias-resolver-plugin.ts +0 -63
  373. package/src/plugins/eco-component-meta-plugin.ts +0 -481
  374. package/src/plugins/integration-plugin.ts +0 -226
  375. package/src/plugins/processor.ts +0 -240
  376. package/src/plugins/runtime-capability.ts +0 -14
  377. package/src/public-types.ts +0 -1317
  378. package/src/route-renderer/component-graph/component-graph-executor.d.ts +0 -32
  379. package/src/route-renderer/component-graph/component-graph-executor.js +0 -31
  380. package/src/route-renderer/component-graph/component-graph-executor.ts +0 -84
  381. package/src/route-renderer/component-graph/component-graph.d.ts +0 -42
  382. package/src/route-renderer/component-graph/component-graph.js +0 -72
  383. package/src/route-renderer/component-graph/component-graph.ts +0 -159
  384. package/src/route-renderer/component-graph/component-marker.d.ts +0 -52
  385. package/src/route-renderer/component-graph/component-marker.js +0 -46
  386. package/src/route-renderer/component-graph/component-marker.ts +0 -117
  387. package/src/route-renderer/component-graph/component-reference.d.ts +0 -10
  388. package/src/route-renderer/component-graph/component-reference.js +0 -19
  389. package/src/route-renderer/component-graph/component-reference.ts +0 -29
  390. package/src/route-renderer/component-graph/marker-graph-resolver.d.ts +0 -77
  391. package/src/route-renderer/component-graph/marker-graph-resolver.js +0 -95
  392. package/src/route-renderer/component-graph/marker-graph-resolver.ts +0 -155
  393. package/src/route-renderer/orchestration/integration-renderer.ts +0 -790
  394. package/src/route-renderer/orchestration/render-execution.service.d.ts +0 -103
  395. package/src/route-renderer/orchestration/render-execution.service.js +0 -121
  396. package/src/route-renderer/orchestration/render-execution.service.ts +0 -230
  397. package/src/route-renderer/orchestration/render-preparation.service.d.ts +0 -121
  398. package/src/route-renderer/orchestration/render-preparation.service.js +0 -332
  399. package/src/route-renderer/orchestration/render-preparation.service.ts +0 -476
  400. package/src/route-renderer/page-loading/dependency-resolver.ts +0 -612
  401. package/src/route-renderer/page-loading/page-module-loader.ts +0 -181
  402. package/src/route-renderer/route-renderer.ts +0 -115
  403. package/src/router/client/link-intent.test.browser.ts +0 -51
  404. package/src/router/client/link-intent.ts +0 -92
  405. package/src/router/client/navigation-coordinator.ts +0 -433
  406. package/src/router/server/fs-router-scanner.d.ts +0 -41
  407. package/src/router/server/fs-router-scanner.js +0 -156
  408. package/src/router/server/fs-router-scanner.ts +0 -219
  409. package/src/router/server/fs-router.d.ts +0 -26
  410. package/src/router/server/fs-router.js +0 -100
  411. package/src/router/server/fs-router.ts +0 -122
  412. package/src/services/assets/asset-processing-service/asset-processing.service.ts +0 -401
  413. package/src/services/assets/asset-processing-service/asset.factory.ts +0 -105
  414. package/src/services/assets/asset-processing-service/assets.types.ts +0 -113
  415. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.ts +0 -95
  416. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.ts +0 -78
  417. package/src/services/assets/asset-processing-service/index.ts +0 -5
  418. package/src/services/assets/asset-processing-service/processor.interface.ts +0 -27
  419. package/src/services/assets/asset-processing-service/processor.registry.ts +0 -18
  420. package/src/services/assets/asset-processing-service/processors/base/base-processor.ts +0 -82
  421. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.ts +0 -95
  422. package/src/services/assets/asset-processing-service/processors/index.ts +0 -5
  423. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.ts +0 -66
  424. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.ts +0 -88
  425. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.ts +0 -85
  426. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.ts +0 -27
  427. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.ts +0 -80
  428. package/src/services/assets/browser-bundle.service.ts +0 -53
  429. package/src/services/cache/cache.types.ts +0 -126
  430. package/src/services/cache/index.ts +0 -18
  431. package/src/services/cache/memory-cache-store.ts +0 -130
  432. package/src/services/cache/page-cache-service.ts +0 -202
  433. package/src/services/cache/page-request-cache-coordinator.service.ts +0 -131
  434. package/src/services/html/html-rewriter-provider.service.ts +0 -103
  435. package/src/services/html/html-transformer.service.ts +0 -279
  436. package/src/services/invalidation/development-invalidation.service.ts +0 -261
  437. package/src/services/module-loading/app-server-module-transpiler.service.ts +0 -52
  438. package/src/services/module-loading/page-module-import.service.ts +0 -200
  439. package/src/services/module-loading/server-loader.service.d.ts +0 -96
  440. package/src/services/module-loading/server-loader.service.js +0 -32
  441. package/src/services/module-loading/server-loader.service.ts +0 -130
  442. package/src/services/module-loading/server-module-transpiler.service.ts +0 -105
  443. package/src/services/runtime-manifest/node-runtime-manifest.service.d.ts +0 -35
  444. package/src/services/runtime-manifest/node-runtime-manifest.service.js +0 -60
  445. package/src/services/runtime-manifest/node-runtime-manifest.service.ts +0 -101
  446. package/src/services/runtime-state/dev-graph.service.ts +0 -217
  447. package/src/services/runtime-state/entrypoint-dependency-graph.service.ts +0 -136
  448. package/src/services/runtime-state/runtime-specifier-registry.service.d.ts +0 -69
  449. package/src/services/runtime-state/runtime-specifier-registry.service.js +0 -37
  450. package/src/services/runtime-state/runtime-specifier-registry.service.ts +0 -96
  451. package/src/services/runtime-state/server-invalidation-state.service.ts +0 -68
  452. package/src/services/validation/schema-validation-service.ts +0 -204
  453. package/src/services/validation/standard-schema.types.ts +0 -68
  454. package/src/static-site-generator/static-site-generator.ts +0 -462
  455. package/src/utils/css.d.ts +0 -1
  456. package/src/utils/css.js +0 -7
  457. package/src/utils/css.ts +0 -5
  458. package/src/utils/deep-merge.ts +0 -47
  459. package/src/utils/hash.ts +0 -5
  460. package/src/utils/html.ts +0 -1
  461. package/src/utils/invariant.ts +0 -15
  462. package/src/utils/locals-utils.ts +0 -37
  463. package/src/utils/parse-cli-args.ts +0 -83
  464. package/src/utils/path-utils.module.ts +0 -14
  465. package/src/utils/resolve-work-dir.ts +0 -45
  466. package/src/utils/runtime.ts +0 -44
  467. package/src/utils/server-utils.module.ts +0 -67
  468. package/src/watchers/project-watcher.test-helpers.ts +0 -41
  469. package/src/watchers/project-watcher.ts +0 -363
  470. /package/src/{internal-types.js → adapters/shared/runtime-host.js} +0 -0
  471. /package/src/{public-types.js → adapters/shared/static-preview-host.js} +0 -0
  472. /package/src/{constants.d.ts → config/constants.d.ts} +0 -0
  473. /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
+ };