@ecopages/core 0.2.0-alpha.5 → 0.2.0-alpha.51

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 (456) hide show
  1. package/README.md +267 -14
  2. package/package.json +98 -108
  3. package/src/adapters/README.md +39 -0
  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 +30 -62
  12. package/src/adapters/bun/hmr-manager.js +30 -194
  13. package/src/adapters/bun/index.d.ts +2 -3
  14. package/src/adapters/bun/index.js +3 -3
  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 +93 -32
  18. package/src/adapters/bun/server-adapter.js +166 -89
  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 +2 -6
  24. package/src/adapters/index.js +2 -8
  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 +38 -48
  31. package/src/adapters/node/node-hmr-manager.js +31 -203
  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 +20 -72
  37. package/src/adapters/node/server-adapter.js +98 -203
  38. package/src/adapters/node/static-content-server.d.ts +37 -1
  39. package/src/adapters/node/static-content-server.js +29 -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/{define-api-handler.d.ts → 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 -13
  48. package/src/adapters/shared/file-route-middleware-pipeline.d.ts +7 -10
  49. package/src/adapters/shared/file-route-middleware-pipeline.js +3 -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 +20 -16
  53. package/src/adapters/shared/fs-server-response-matcher.js +76 -45
  54. package/src/adapters/shared/hmr-entrypoint-registrar.d.ts +55 -0
  55. package/src/adapters/shared/hmr-entrypoint-registrar.js +87 -0
  56. package/src/adapters/shared/hmr-html-response.d.ts +22 -0
  57. package/src/adapters/shared/hmr-html-response.js +33 -0
  58. package/src/adapters/shared/render-context.d.ts +5 -3
  59. package/src/adapters/shared/render-context.js +27 -3
  60. package/src/adapters/shared/runtime-app-bootstrap.d.ts +26 -0
  61. package/src/adapters/shared/runtime-app-bootstrap.js +46 -0
  62. package/src/adapters/shared/runtime-host.d.ts +12 -0
  63. package/src/adapters/shared/server-adapter.d.ts +33 -12
  64. package/src/adapters/shared/server-adapter.js +215 -132
  65. package/src/adapters/shared/server-route-handler.d.ts +5 -5
  66. package/src/adapters/shared/server-route-handler.js +7 -16
  67. package/src/adapters/shared/server-static-builder.d.ts +41 -8
  68. package/src/adapters/shared/server-static-builder.js +65 -11
  69. package/src/adapters/shared/shared-hmr-manager.d.ts +59 -0
  70. package/src/adapters/shared/shared-hmr-manager.js +240 -0
  71. package/src/adapters/shared/static-preview-host.d.ts +10 -0
  72. package/src/build/README.md +107 -0
  73. package/src/build/browser-runtime-import-rewrite-plugin.d.ts +26 -0
  74. package/src/build/browser-runtime-import-rewrite-plugin.js +162 -0
  75. package/src/build/browser-runtime-manifest.d.ts +31 -0
  76. package/src/build/browser-runtime-manifest.js +61 -0
  77. package/src/build/build-adapter.d.ts +175 -3
  78. package/src/build/build-adapter.js +633 -16
  79. package/src/build/build-manifest.d.ts +33 -0
  80. package/src/build/build-manifest.js +52 -0
  81. package/src/build/dev-build-coordinator.d.ts +72 -0
  82. package/src/build/dev-build-coordinator.js +154 -0
  83. package/src/build/esbuild-build-adapter.d.ts +16 -6
  84. package/src/build/esbuild-build-adapter.js +205 -75
  85. package/src/build/runtime-build-executor.d.ts +14 -0
  86. package/src/build/runtime-build-executor.js +22 -0
  87. package/src/build/runtime-specifier-alias-plugin.d.ts +15 -0
  88. package/src/build/runtime-specifier-alias-plugin.js +31 -0
  89. package/src/config/README.md +36 -0
  90. package/src/config/config-builder.d.ts +54 -29
  91. package/src/config/config-builder.js +256 -50
  92. package/src/{constants.d.ts → config/constants.d.ts} +13 -0
  93. package/src/{constants.js → config/constants.js} +4 -0
  94. package/src/declarations.d.ts +19 -14
  95. package/src/dev/host-runtime.d.ts +10 -0
  96. package/src/dev/host-runtime.js +24 -0
  97. package/src/dev/sc-server.d.ts +1 -1
  98. package/src/dev/sc-server.js +1 -1
  99. package/src/eco/README.md +70 -16
  100. package/src/eco/eco.browser.d.ts +2 -0
  101. package/src/eco/eco.browser.js +88 -0
  102. package/src/eco/eco.js +63 -54
  103. package/src/eco/eco.types.d.ts +69 -6
  104. package/src/eco/eco.utils.d.ts +1 -40
  105. package/src/eco/eco.utils.js +5 -35
  106. package/src/eco/global-injector-map.d.ts +3 -3
  107. package/src/eco/global-injector-map.js +2 -2
  108. package/src/eco/lazy-injector-map.d.ts +2 -2
  109. package/src/errors/index.d.ts +1 -0
  110. package/src/errors/index.js +3 -1
  111. package/src/hmr/README.md +26 -0
  112. package/src/hmr/client/hmr-runtime.d.ts +1 -6
  113. package/src/hmr/client/hmr-runtime.js +38 -7
  114. package/src/hmr/hmr-strategy.d.ts +16 -13
  115. package/src/hmr/hmr-strategy.js +22 -7
  116. package/src/hmr/hmr.postcss.test.e2e.d.ts +1 -0
  117. package/src/hmr/hmr.postcss.test.e2e.js +31 -0
  118. package/src/hmr/hmr.test.e2e.js +26 -33
  119. package/src/hmr/strategies/default-hmr-strategy.d.ts +2 -2
  120. package/src/hmr/strategies/default-hmr-strategy.js +1 -1
  121. package/src/hmr/strategies/js-hmr-strategy.d.ts +40 -42
  122. package/src/hmr/strategies/js-hmr-strategy.js +24 -43
  123. package/src/index.browser.d.ts +2 -2
  124. package/src/index.browser.js +1 -1
  125. package/src/index.d.ts +4 -3
  126. package/src/index.js +16 -5
  127. package/src/integrations/ghtml/ghtml-renderer.d.ts +3 -2
  128. package/src/integrations/ghtml/ghtml-renderer.js +27 -30
  129. package/src/integrations/ghtml/ghtml.constants.d.ts +1 -0
  130. package/src/integrations/ghtml/ghtml.constants.js +4 -0
  131. package/src/integrations/ghtml/ghtml.plugin.d.ts +2 -6
  132. package/src/integrations/ghtml/ghtml.plugin.js +3 -4
  133. package/src/plugins/README.md +35 -0
  134. package/src/plugins/alias-resolver-plugin.d.ts +1 -0
  135. package/src/plugins/alias-resolver-plugin.js +27 -5
  136. package/src/plugins/eco-component-meta-plugin.d.ts +14 -1
  137. package/src/plugins/eco-component-meta-plugin.js +42 -24
  138. package/src/plugins/foreign-jsx-override-plugin.d.ts +33 -0
  139. package/src/plugins/foreign-jsx-override-plugin.js +41 -0
  140. package/src/plugins/integration-plugin.d.ts +157 -29
  141. package/src/plugins/integration-plugin.js +115 -14
  142. package/src/plugins/processor.d.ts +17 -2
  143. package/src/plugins/processor.js +22 -3
  144. package/src/plugins/runtime-capability.d.ts +9 -0
  145. package/src/plugins/source-transform.d.ts +46 -0
  146. package/src/plugins/source-transform.js +71 -0
  147. package/src/route-renderer/GRAPH.md +83 -325
  148. package/src/route-renderer/README.md +73 -90
  149. package/src/route-renderer/orchestration/component-render-context.d.ts +97 -0
  150. package/src/route-renderer/orchestration/component-render-context.js +147 -0
  151. package/src/route-renderer/orchestration/declared-ownership-graph.d.ts +18 -0
  152. package/src/route-renderer/orchestration/declared-ownership-graph.js +34 -0
  153. package/src/route-renderer/orchestration/foreign-subtree-execution.service.d.ts +110 -0
  154. package/src/route-renderer/orchestration/foreign-subtree-execution.service.js +233 -0
  155. package/src/route-renderer/orchestration/integration-renderer.d.ts +534 -0
  156. package/src/route-renderer/orchestration/integration-renderer.js +991 -0
  157. package/src/route-renderer/orchestration/ownership-planning.service.d.ts +24 -0
  158. package/src/route-renderer/orchestration/ownership-planning.service.js +63 -0
  159. package/src/route-renderer/orchestration/ownership-validation.service.d.ts +29 -0
  160. package/src/route-renderer/orchestration/ownership-validation.service.js +53 -0
  161. package/src/route-renderer/orchestration/processed-asset-dedupe.d.ts +3 -0
  162. package/src/route-renderer/orchestration/processed-asset-dedupe.js +27 -0
  163. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.d.ts +91 -0
  164. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.js +170 -0
  165. package/src/route-renderer/orchestration/render-output.utils.d.ts +66 -0
  166. package/src/route-renderer/orchestration/render-output.utils.js +171 -0
  167. package/src/route-renderer/orchestration/route-render-orchestrator.d.ts +156 -0
  168. package/src/route-renderer/orchestration/route-render-orchestrator.js +577 -0
  169. package/src/route-renderer/orchestration/template-serialization.d.ts +38 -0
  170. package/src/route-renderer/orchestration/template-serialization.js +45 -0
  171. package/src/route-renderer/page-loading/component-dependency-collection.d.ts +37 -0
  172. package/src/route-renderer/page-loading/component-dependency-collection.js +132 -0
  173. package/src/route-renderer/page-loading/declared-asset-collection.d.ts +24 -0
  174. package/src/route-renderer/page-loading/declared-asset-collection.js +106 -0
  175. package/src/route-renderer/{dependency-resolver.d.ts → page-loading/dependency-resolver.d.ts} +15 -4
  176. package/src/route-renderer/page-loading/dependency-resolver.js +115 -0
  177. package/src/route-renderer/page-loading/ecopages-virtual-imports.d.ts +11 -0
  178. package/src/route-renderer/page-loading/ecopages-virtual-imports.js +57 -0
  179. package/src/route-renderer/page-loading/lazy-entry-collection.d.ts +45 -0
  180. package/src/route-renderer/page-loading/lazy-entry-collection.js +105 -0
  181. package/src/route-renderer/page-loading/lazy-trigger-planning.d.ts +19 -0
  182. package/src/route-renderer/page-loading/lazy-trigger-planning.js +40 -0
  183. package/src/route-renderer/page-loading/module-declaration-aggregation.d.ts +5 -0
  184. package/src/route-renderer/page-loading/module-declaration-aggregation.js +33 -0
  185. package/src/route-renderer/page-loading/module-declaration-scripts.d.ts +3 -0
  186. package/src/route-renderer/page-loading/module-declaration-scripts.js +18 -0
  187. package/src/route-renderer/page-loading/page-dependency-bundling.d.ts +13 -0
  188. package/src/route-renderer/page-loading/page-dependency-bundling.js +137 -0
  189. package/src/route-renderer/page-loading/page-module-loader.d.ts +90 -0
  190. package/src/route-renderer/{page-module-loader.js → page-loading/page-module-loader.js} +39 -14
  191. package/src/route-renderer/route-renderer.d.ts +57 -14
  192. package/src/route-renderer/route-renderer.js +30 -18
  193. package/src/router/README.md +94 -0
  194. package/src/router/client/link-intent.d.ts +53 -0
  195. package/src/router/client/link-intent.js +34 -0
  196. package/src/router/client/link-intent.test.browser.d.ts +1 -0
  197. package/src/router/client/link-intent.test.browser.js +43 -0
  198. package/src/router/client/navigation-coordinator.d.ts +169 -0
  199. package/src/router/client/navigation-coordinator.js +215 -0
  200. package/src/router/server/route-registry.d.ts +78 -0
  201. package/src/router/server/route-registry.js +262 -0
  202. package/src/services/README.md +28 -0
  203. package/src/services/assets/asset-processing-service/asset-dependency-keys.d.ts +3 -0
  204. package/src/services/assets/asset-processing-service/asset-dependency-keys.js +56 -0
  205. package/src/services/assets/asset-processing-service/asset-processing.service.d.ts +103 -0
  206. package/src/services/{asset-processing-service → assets/asset-processing-service}/asset-processing.service.js +124 -89
  207. package/src/services/{asset-processing-service → assets/asset-processing-service}/asset.factory.d.ts +1 -1
  208. package/src/services/{asset-processing-service → assets/asset-processing-service}/asset.factory.js +2 -2
  209. package/src/services/{asset-processing-service → assets/asset-processing-service}/assets.types.d.ts +16 -1
  210. package/src/services/assets/asset-processing-service/assets.types.js +0 -0
  211. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.d.ts +57 -0
  212. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.js +49 -0
  213. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.d.ts +20 -0
  214. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.js +41 -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 -0
  218. package/src/services/assets/asset-processing-service/index.js +6 -0
  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/{asset-processing-service → assets/asset-processing-service}/processor.interface.d.ts +2 -2
  222. package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.registry.d.ts +2 -2
  223. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/base/base-processor.d.ts +1 -1
  224. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/base/base-processor.js +11 -5
  225. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.d.ts +22 -0
  226. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.js +136 -0
  227. package/src/services/assets/asset-processing-service/processors/index.d.ts +5 -0
  228. package/src/services/assets/asset-processing-service/processors/index.js +5 -0
  229. package/src/services/{asset-processing-service → 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 +120 -0
  231. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/file-script.processor.d.ts +4 -3
  232. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/file-script.processor.js +28 -7
  233. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.d.ts +42 -0
  234. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.js +126 -0
  235. package/src/services/{asset-processing-service → 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 +59 -0
  237. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/stylesheet/file-stylesheet.processor.d.ts +2 -2
  238. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/stylesheet/file-stylesheet.processor.js +9 -3
  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 +73 -0
  242. package/src/services/assets/browser-bundle.service.js +41 -0
  243. package/src/services/{page-request-cache-coordinator.service.d.ts → cache/page-request-cache-coordinator.service.d.ts} +2 -2
  244. package/src/services/{page-request-cache-coordinator.service.js → cache/page-request-cache-coordinator.service.js} +3 -1
  245. package/src/services/html/html-rewriter-provider.service.d.ts +40 -0
  246. package/src/services/html/html-rewriter-provider.service.js +68 -0
  247. package/src/services/html/html-transformer.service.d.ts +96 -0
  248. package/src/services/html/html-transformer.service.js +287 -0
  249. package/src/services/invalidation/development-invalidation.service.d.ts +74 -0
  250. package/src/services/invalidation/development-invalidation.service.js +190 -0
  251. package/src/services/module-loading/app-module-loader.service.d.ts +7 -0
  252. package/src/services/module-loading/app-module-loader.service.js +0 -0
  253. package/src/services/module-loading/app-server-module-transpiler.service.d.ts +24 -0
  254. package/src/services/module-loading/app-server-module-transpiler.service.js +151 -0
  255. package/src/services/module-loading/host-module-loader-registry.d.ts +4 -0
  256. package/src/services/module-loading/host-module-loader-registry.js +15 -0
  257. package/src/services/module-loading/module-loading-types.d.ts +2 -0
  258. package/src/services/module-loading/module-loading-types.js +0 -0
  259. package/src/services/module-loading/node-bootstrap-plugin.d.ts +38 -0
  260. package/src/services/module-loading/node-bootstrap-plugin.js +215 -0
  261. package/src/services/module-loading/page-module-import.service.d.ts +95 -0
  262. package/src/services/module-loading/page-module-import.service.js +191 -0
  263. package/src/services/module-loading/server-module-transpiler.service.d.ts +63 -0
  264. package/src/services/module-loading/server-module-transpiler.service.js +64 -0
  265. package/src/services/module-loading/source-module-support.d.ts +5 -0
  266. package/src/services/module-loading/source-module-support.js +8 -0
  267. package/src/services/runtime-state/dev-graph.service.d.ts +118 -0
  268. package/src/services/runtime-state/dev-graph.service.js +162 -0
  269. package/src/services/runtime-state/entrypoint-dependency-graph.service.d.ts +41 -0
  270. package/src/services/runtime-state/entrypoint-dependency-graph.service.js +85 -0
  271. package/src/services/runtime-state/server-invalidation-state.service.d.ts +26 -0
  272. package/src/services/runtime-state/server-invalidation-state.service.js +35 -0
  273. package/src/services/{schema-validation-service.d.ts → validation/schema-validation-service.d.ts} +1 -1
  274. package/src/static-site-generator/README.md +26 -0
  275. package/src/static-site-generator/static-site-generator.d.ts +67 -20
  276. package/src/static-site-generator/static-site-generator.js +182 -138
  277. package/src/{internal-types.d.ts → types/internal-types.d.ts} +62 -30
  278. package/src/types/internal-types.js +0 -0
  279. package/src/{public-types.d.ts → types/public-types.d.ts} +239 -31
  280. package/src/types/public-types.js +0 -0
  281. package/src/utils/html-escaping.d.ts +7 -0
  282. package/src/utils/html-escaping.js +6 -0
  283. package/src/utils/locals-utils.d.ts +1 -1
  284. package/src/utils/parse-cli-args.d.ts +4 -1
  285. package/src/utils/parse-cli-args.js +16 -1
  286. package/src/utils/resolve-work-dir.d.ts +11 -0
  287. package/src/utils/resolve-work-dir.js +31 -0
  288. package/src/watchers/project-watcher.d.ts +11 -7
  289. package/src/watchers/project-watcher.js +69 -75
  290. package/src/watchers/project-watcher.test-helpers.d.ts +2 -2
  291. package/src/watchers/project-watcher.test-helpers.js +6 -5
  292. package/CHANGELOG.md +0 -94
  293. package/src/adapters/abstract/application-adapter.ts +0 -337
  294. package/src/adapters/abstract/router-adapter.ts +0 -30
  295. package/src/adapters/abstract/server-adapter.ts +0 -79
  296. package/src/adapters/bun/client-bridge.ts +0 -62
  297. package/src/adapters/bun/create-app.ts +0 -189
  298. package/src/adapters/bun/define-api-handler.d.ts +0 -61
  299. package/src/adapters/bun/define-api-handler.ts +0 -114
  300. package/src/adapters/bun/hmr-manager.ts +0 -276
  301. package/src/adapters/bun/index.ts +0 -3
  302. package/src/adapters/bun/server-adapter.ts +0 -492
  303. package/src/adapters/bun/server-lifecycle.d.ts +0 -52
  304. package/src/adapters/bun/server-lifecycle.js +0 -120
  305. package/src/adapters/bun/server-lifecycle.ts +0 -154
  306. package/src/adapters/index.ts +0 -6
  307. package/src/adapters/node/create-app.ts +0 -179
  308. package/src/adapters/node/index.d.ts +0 -4
  309. package/src/adapters/node/index.js +0 -8
  310. package/src/adapters/node/index.ts +0 -9
  311. package/src/adapters/node/node-client-bridge.ts +0 -79
  312. package/src/adapters/node/node-hmr-manager.ts +0 -271
  313. package/src/adapters/node/server-adapter.ts +0 -561
  314. package/src/adapters/node/static-content-server.ts +0 -203
  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/explicit-static-route-matcher.ts +0 -134
  318. package/src/adapters/shared/file-route-middleware-pipeline.ts +0 -123
  319. package/src/adapters/shared/fs-server-response-factory.ts +0 -118
  320. package/src/adapters/shared/fs-server-response-matcher.ts +0 -198
  321. package/src/adapters/shared/render-context.ts +0 -105
  322. package/src/adapters/shared/server-adapter.ts +0 -442
  323. package/src/adapters/shared/server-route-handler.ts +0 -166
  324. package/src/adapters/shared/server-static-builder.ts +0 -82
  325. package/src/build/build-adapter.ts +0 -133
  326. package/src/build/build-types.ts +0 -83
  327. package/src/build/esbuild-build-adapter.ts +0 -511
  328. package/src/config/config-builder.ts +0 -474
  329. package/src/constants.ts +0 -39
  330. package/src/create-app.ts +0 -87
  331. package/src/define-api-handler.js +0 -15
  332. package/src/define-api-handler.ts +0 -66
  333. package/src/dev/sc-server.ts +0 -143
  334. package/src/eco/component-render-context.d.ts +0 -105
  335. package/src/eco/component-render-context.js +0 -77
  336. package/src/eco/component-render-context.ts +0 -202
  337. package/src/eco/eco.ts +0 -221
  338. package/src/eco/eco.types.ts +0 -202
  339. package/src/eco/eco.utils.ts +0 -89
  340. package/src/eco/global-injector-map.ts +0 -112
  341. package/src/eco/lazy-injector-map.ts +0 -120
  342. package/src/eco/module-dependencies.ts +0 -75
  343. package/src/errors/http-error.ts +0 -72
  344. package/src/errors/index.ts +0 -2
  345. package/src/errors/locals-access-error.ts +0 -7
  346. package/src/global/app-logger.ts +0 -4
  347. package/src/hmr/client/hmr-runtime.ts +0 -121
  348. package/src/hmr/hmr-strategy.ts +0 -172
  349. package/src/hmr/hmr.test.e2e.ts +0 -75
  350. package/src/hmr/strategies/default-hmr-strategy.ts +0 -60
  351. package/src/hmr/strategies/js-hmr-strategy.ts +0 -327
  352. package/src/index.browser.ts +0 -3
  353. package/src/index.ts +0 -5
  354. package/src/integrations/ghtml/ghtml-renderer.ts +0 -93
  355. package/src/integrations/ghtml/ghtml.plugin.ts +0 -32
  356. package/src/internal-types.ts +0 -212
  357. package/src/plugins/alias-resolver-plugin.ts +0 -45
  358. package/src/plugins/eco-component-meta-plugin.ts +0 -474
  359. package/src/plugins/integration-plugin.ts +0 -184
  360. package/src/plugins/processor.ts +0 -220
  361. package/src/public-types.ts +0 -1255
  362. package/src/route-renderer/component-graph-executor.d.ts +0 -32
  363. package/src/route-renderer/component-graph-executor.js +0 -31
  364. package/src/route-renderer/component-graph-executor.ts +0 -84
  365. package/src/route-renderer/component-graph.d.ts +0 -42
  366. package/src/route-renderer/component-graph.js +0 -72
  367. package/src/route-renderer/component-graph.ts +0 -159
  368. package/src/route-renderer/component-marker.d.ts +0 -52
  369. package/src/route-renderer/component-marker.js +0 -46
  370. package/src/route-renderer/component-marker.ts +0 -117
  371. package/src/route-renderer/dependency-resolver.js +0 -428
  372. package/src/route-renderer/dependency-resolver.ts +0 -596
  373. package/src/route-renderer/html-post-processing.service.d.ts +0 -40
  374. package/src/route-renderer/html-post-processing.service.js +0 -86
  375. package/src/route-renderer/html-post-processing.service.ts +0 -103
  376. package/src/route-renderer/integration-renderer.d.ts +0 -339
  377. package/src/route-renderer/integration-renderer.js +0 -526
  378. package/src/route-renderer/integration-renderer.ts +0 -696
  379. package/src/route-renderer/marker-graph-resolver.d.ts +0 -76
  380. package/src/route-renderer/marker-graph-resolver.js +0 -93
  381. package/src/route-renderer/marker-graph-resolver.ts +0 -153
  382. package/src/route-renderer/page-module-loader.d.ts +0 -61
  383. package/src/route-renderer/page-module-loader.ts +0 -153
  384. package/src/route-renderer/render-execution.service.d.ts +0 -69
  385. package/src/route-renderer/render-execution.service.js +0 -91
  386. package/src/route-renderer/render-execution.service.ts +0 -158
  387. package/src/route-renderer/render-preparation.service.d.ts +0 -112
  388. package/src/route-renderer/render-preparation.service.js +0 -243
  389. package/src/route-renderer/render-preparation.service.ts +0 -358
  390. package/src/route-renderer/route-renderer.ts +0 -80
  391. package/src/router/fs-router-scanner.d.ts +0 -41
  392. package/src/router/fs-router-scanner.js +0 -155
  393. package/src/router/fs-router-scanner.ts +0 -217
  394. package/src/router/fs-router.d.ts +0 -26
  395. package/src/router/fs-router.js +0 -100
  396. package/src/router/fs-router.ts +0 -122
  397. package/src/services/asset-processing-service/asset-processing.service.d.ts +0 -41
  398. package/src/services/asset-processing-service/asset-processing.service.ts +0 -306
  399. package/src/services/asset-processing-service/asset.factory.ts +0 -105
  400. package/src/services/asset-processing-service/assets.types.ts +0 -112
  401. package/src/services/asset-processing-service/index.d.ts +0 -3
  402. package/src/services/asset-processing-service/index.js +0 -3
  403. package/src/services/asset-processing-service/index.ts +0 -3
  404. package/src/services/asset-processing-service/processor.interface.ts +0 -27
  405. package/src/services/asset-processing-service/processor.registry.ts +0 -18
  406. package/src/services/asset-processing-service/processors/base/base-processor.ts +0 -76
  407. package/src/services/asset-processing-service/processors/base/base-script-processor.d.ts +0 -16
  408. package/src/services/asset-processing-service/processors/base/base-script-processor.js +0 -80
  409. package/src/services/asset-processing-service/processors/base/base-script-processor.ts +0 -105
  410. package/src/services/asset-processing-service/processors/index.d.ts +0 -5
  411. package/src/services/asset-processing-service/processors/index.js +0 -5
  412. package/src/services/asset-processing-service/processors/index.ts +0 -5
  413. package/src/services/asset-processing-service/processors/script/content-script.processor.js +0 -57
  414. package/src/services/asset-processing-service/processors/script/content-script.processor.ts +0 -66
  415. package/src/services/asset-processing-service/processors/script/file-script.processor.ts +0 -88
  416. package/src/services/asset-processing-service/processors/script/node-module-script.processor.d.ts +0 -7
  417. package/src/services/asset-processing-service/processors/script/node-module-script.processor.js +0 -74
  418. package/src/services/asset-processing-service/processors/script/node-module-script.processor.ts +0 -84
  419. package/src/services/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +0 -25
  420. package/src/services/asset-processing-service/processors/stylesheet/content-stylesheet.processor.ts +0 -27
  421. package/src/services/asset-processing-service/processors/stylesheet/file-stylesheet.processor.ts +0 -77
  422. package/src/services/cache/cache.types.ts +0 -126
  423. package/src/services/cache/index.ts +0 -18
  424. package/src/services/cache/memory-cache-store.ts +0 -130
  425. package/src/services/cache/page-cache-service.ts +0 -202
  426. package/src/services/html-transformer.service.d.ts +0 -50
  427. package/src/services/html-transformer.service.js +0 -163
  428. package/src/services/html-transformer.service.ts +0 -217
  429. package/src/services/page-module-import.service.d.ts +0 -37
  430. package/src/services/page-module-import.service.js +0 -88
  431. package/src/services/page-module-import.service.ts +0 -129
  432. package/src/services/page-request-cache-coordinator.service.ts +0 -128
  433. package/src/services/schema-validation-service.ts +0 -204
  434. package/src/services/validation/standard-schema.types.ts +0 -68
  435. package/src/static-site-generator/static-site-generator.ts +0 -359
  436. package/src/utils/css.d.ts +0 -1
  437. package/src/utils/css.js +0 -7
  438. package/src/utils/css.ts +0 -5
  439. package/src/utils/deep-merge.ts +0 -47
  440. package/src/utils/hash.ts +0 -5
  441. package/src/utils/html.ts +0 -1
  442. package/src/utils/invariant.ts +0 -15
  443. package/src/utils/locals-utils.ts +0 -37
  444. package/src/utils/parse-cli-args.ts +0 -83
  445. package/src/utils/path-utils.module.ts +0 -14
  446. package/src/utils/runtime.ts +0 -44
  447. package/src/utils/server-utils.module.ts +0 -67
  448. package/src/watchers/project-watcher.test-helpers.ts +0 -40
  449. package/src/watchers/project-watcher.ts +0 -364
  450. /package/src/adapters/{bun → shared}/define-api-handler.js +0 -0
  451. /package/src/{internal-types.js → adapters/shared/runtime-host.js} +0 -0
  452. /package/src/{public-types.js → adapters/shared/static-preview-host.js} +0 -0
  453. /package/src/{services/asset-processing-service/assets.types.js → plugins/runtime-capability.js} +0 -0
  454. /package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.interface.js +0 -0
  455. /package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.registry.js +0 -0
  456. /package/src/services/{schema-validation-service.js → validation/schema-validation-service.js} +0 -0
@@ -1,53 +1,43 @@
1
- import { createServer } from "node:http";
2
- import { Readable } from "node:stream";
3
- import { DEFAULT_ECOPAGES_HOSTNAME, DEFAULT_ECOPAGES_PORT } from "../../constants.js";
4
1
  import { appLogger } from "../../global/app-logger.js";
5
- import {} from "../abstract/application-adapter.js";
6
2
  import { SharedApplicationAdapter } from "../shared/application-adapter.js";
3
+ import { resolveRuntimeBinding } from "../shared/runtime-app-bootstrap.js";
7
4
  import { createNodeServerAdapter } from "./server-adapter.js";
8
- class EcopagesApp extends SharedApplicationAdapter {
5
+ import { NodeHttpRequestBridge } from "./http-request-bridge.js";
6
+ import { NodeRuntimeHost } from "./runtime-host.js";
7
+ class NodeEcopagesApp extends SharedApplicationAdapter {
9
8
  serverAdapter;
10
9
  server = null;
11
10
  runtimeOrigin = "";
11
+ runtimeHost;
12
+ constructor(options, dependencies) {
13
+ super(options);
14
+ this.runtimeHost = dependencies.runtimeHost;
15
+ }
16
+ createServerAdapter(params) {
17
+ return createNodeServerAdapter(params);
18
+ }
12
19
  async stop(force = true) {
13
20
  if (!this.server) {
14
21
  return;
15
22
  }
16
23
  const activeServer = this.server;
17
24
  this.server = null;
18
- await new Promise((resolve, reject) => {
19
- activeServer.close((error) => {
20
- if (error) {
21
- reject(error);
22
- return;
23
- }
24
- resolve();
25
- });
26
- if (force) {
27
- activeServer.closeAllConnections();
28
- }
29
- });
25
+ await this.runtimeHost.stop(activeServer, { force });
30
26
  }
31
27
  async initializeServerAdapter() {
32
- const { dev } = this.cliArgs;
33
- const { port: cliPort, hostname: cliHostname } = this.cliArgs;
34
- const envPort = process.env.ECOPAGES_PORT;
35
- const envHostname = process.env.ECOPAGES_HOSTNAME;
36
- const preferredPort = cliPort ?? (envPort ? Number(envPort) : void 0) ?? DEFAULT_ECOPAGES_PORT;
37
- const preferredHostname = cliHostname ?? envHostname ?? DEFAULT_ECOPAGES_HOSTNAME;
38
- this.runtimeOrigin = `http://${preferredHostname}:${preferredPort}`;
39
- return createNodeServerAdapter({
28
+ const binding = resolveRuntimeBinding({
29
+ cliArgs: this.cliArgs,
30
+ serverOptions: this.serverOptions
31
+ });
32
+ this.runtimeOrigin = binding.runtimeOrigin;
33
+ return this.createServerAdapter({
40
34
  runtimeOrigin: this.runtimeOrigin,
41
35
  appConfig: this.appConfig,
42
36
  apiHandlers: this.apiHandlers,
43
37
  staticRoutes: this.staticRoutes,
44
38
  errorHandler: this.errorHandler,
45
- options: { watch: dev },
46
- serveOptions: {
47
- port: preferredPort,
48
- hostname: preferredHostname,
49
- ...this.serverOptions
50
- }
39
+ options: { watch: binding.watch },
40
+ serveOptions: binding.serveOptions
51
41
  });
52
42
  }
53
43
  async start() {
@@ -69,64 +59,17 @@ class EcopagesApp extends SharedApplicationAdapter {
69
59
  return;
70
60
  }
71
61
  const serveOptions = this.serverAdapter.getServerOptions();
72
- const hostname = String(serveOptions.hostname ?? DEFAULT_ECOPAGES_HOSTNAME);
73
- const port = Number(serveOptions.port ?? DEFAULT_ECOPAGES_PORT);
74
- this.runtimeOrigin = `http://${hostname}:${port}`;
75
- this.server = createServer(async (req, res) => {
76
- try {
77
- const webRequest = this.createWebRequest(req);
78
- const response = await this.serverAdapter.handleRequest(webRequest);
79
- await this.sendNodeResponse(res, response);
80
- } catch (error) {
81
- appLogger.error("Node server adapter request failed", error);
82
- res.statusCode = 500;
83
- res.end("Internal Server Error");
62
+ this.server = await this.runtimeHost.start({
63
+ serveOptions,
64
+ handleRequest: async (request) => await this.serverAdapter.handleRequest(request),
65
+ onError: async () => {
84
66
  }
85
67
  });
86
- await new Promise((resolve) => {
87
- this.server.listen(port, hostname, () => resolve());
88
- });
68
+ this.runtimeOrigin = this.runtimeHost.getOrigin(this.server, serveOptions);
89
69
  await this.serverAdapter.completeInitialization(this.server);
90
70
  appLogger.info(`Node server running at ${this.runtimeOrigin}`);
91
71
  return this.server;
92
72
  }
93
- createWebRequest(req) {
94
- const url = new URL(req.url ?? "/", this.runtimeOrigin);
95
- const headers = new Headers();
96
- for (const [key, value] of Object.entries(req.headers)) {
97
- if (Array.isArray(value)) {
98
- for (const item of value) {
99
- headers.append(key, item);
100
- }
101
- continue;
102
- }
103
- if (value !== void 0) {
104
- headers.set(key, value);
105
- }
106
- }
107
- const method = (req.method ?? "GET").toUpperCase();
108
- const requestInit = {
109
- method,
110
- headers
111
- };
112
- if (method !== "GET" && method !== "HEAD") {
113
- requestInit.body = Readable.toWeb(req);
114
- requestInit.duplex = "half";
115
- }
116
- return new Request(url, requestInit);
117
- }
118
- async sendNodeResponse(res, response) {
119
- res.statusCode = response.status;
120
- response.headers.forEach((value, key) => {
121
- res.setHeader(key, value);
122
- });
123
- if (!response.body) {
124
- res.end();
125
- return;
126
- }
127
- const body = Buffer.from(await response.arrayBuffer());
128
- res.end(body);
129
- }
130
73
  async fetch(request) {
131
74
  if (!this.serverAdapter) {
132
75
  this.serverAdapter = await this.initializeServerAdapter();
@@ -135,9 +78,15 @@ class EcopagesApp extends SharedApplicationAdapter {
135
78
  }
136
79
  }
137
80
  async function createNodeApp(options) {
138
- return new EcopagesApp(options);
81
+ return new NodeEcopagesApp(options, {
82
+ runtimeHost: new NodeRuntimeHost(new NodeHttpRequestBridge())
83
+ });
84
+ }
85
+ async function createApp(options) {
86
+ return createNodeApp(options);
139
87
  }
140
88
  export {
141
- EcopagesApp,
89
+ NodeEcopagesApp,
90
+ createApp,
142
91
  createNodeApp
143
92
  };
@@ -0,0 +1,57 @@
1
+ import type { IncomingMessage, ServerResponse } from 'node:http';
2
+ /**
3
+ * Signals that the remote client closed the HTTP exchange before the Node
4
+ * adapter finished reading or writing the body.
5
+ *
6
+ * @remarks
7
+ * This error represents a transport-level disconnect, not an application
8
+ * failure. Higher layers may safely suppress logging for this error when the
9
+ * client socket is already gone and no meaningful response can still be sent.
10
+ */
11
+ export declare class NodeClientAbortError extends Error {
12
+ /**
13
+ * Creates the canonical Node transport abort error used across request-body
14
+ * reads and response-body writes.
15
+ */
16
+ constructor();
17
+ }
18
+ /**
19
+ * Type guard for the canonical client-abort error used by the Node adapter.
20
+ *
21
+ * @remarks
22
+ * Runtime hosts use this guard before logging so only explicitly classified
23
+ * client disconnects are muted. All other failures continue through the normal
24
+ * error-reporting path.
25
+ */
26
+ export declare function isNodeClientAbortError(error: unknown): error is NodeClientAbortError;
27
+ /**
28
+ * Bridges Node's `IncomingMessage` / `ServerResponse` pair to the Web
29
+ * `Request` / `Response` contract used by the shared routing pipeline.
30
+ *
31
+ * @remarks
32
+ * This class is the Node transport boundary. It owns the translation of request
33
+ * headers and bodies into Web primitives and the reverse translation of Web
34
+ * responses back onto Node streams, including client-abort normalization.
35
+ */
36
+ export declare class NodeHttpRequestBridge {
37
+ /**
38
+ * Converts one incoming Node request into the Web `Request` shape consumed by
39
+ * the shared server adapter.
40
+ *
41
+ * @remarks
42
+ * Non-GET/HEAD requests retain streaming semantics via a `ReadableStream` so
43
+ * large request bodies do not need to be buffered before route handling begins.
44
+ */
45
+ createWebRequest(req: IncomingMessage, runtimeOrigin: string): Request;
46
+ /**
47
+ * Sends a Web `Response` through Node's `ServerResponse` without buffering the
48
+ * full body in memory first.
49
+ *
50
+ * @remarks
51
+ * Streaming responses matter for large payloads and long-lived transports such
52
+ * as server-sent events. The bridge therefore forwards the `ReadableStream`
53
+ * directly into the Node writable response instead of materializing an
54
+ * intermediate `ArrayBuffer`.
55
+ */
56
+ sendNodeResponse(res: ServerResponse, response: Response): Promise<void>;
57
+ }
@@ -0,0 +1,118 @@
1
+ import { Readable } from "node:stream";
2
+ import { pipeline } from "node:stream/promises";
3
+ class NodeClientAbortError extends Error {
4
+ /**
5
+ * Creates the canonical Node transport abort error used across request-body
6
+ * reads and response-body writes.
7
+ */
8
+ constructor() {
9
+ super("Client closed the request");
10
+ this.name = "ClientAbortError";
11
+ }
12
+ }
13
+ function isNodeClientDisconnectCode(code) {
14
+ return [
15
+ "ECONNRESET",
16
+ "EPIPE",
17
+ "ERR_STREAM_DESTROYED",
18
+ "ERR_STREAM_PREMATURE_CLOSE",
19
+ "ERR_STREAM_UNABLE_TO_PIPE"
20
+ ].includes(code ?? "");
21
+ }
22
+ function isNodeClientAbortError(error) {
23
+ return error instanceof NodeClientAbortError;
24
+ }
25
+ function toNodeClientAbortError(error) {
26
+ if (error instanceof NodeClientAbortError) {
27
+ return error;
28
+ }
29
+ if (typeof error === "object" && error !== null && "code" in error) {
30
+ const code = typeof error.code === "string" ? error.code : void 0;
31
+ if (isNodeClientDisconnectCode(code)) {
32
+ return new NodeClientAbortError();
33
+ }
34
+ }
35
+ return null;
36
+ }
37
+ class NodeHttpRequestBridge {
38
+ /**
39
+ * Converts one incoming Node request into the Web `Request` shape consumed by
40
+ * the shared server adapter.
41
+ *
42
+ * @remarks
43
+ * Non-GET/HEAD requests retain streaming semantics via a `ReadableStream` so
44
+ * large request bodies do not need to be buffered before route handling begins.
45
+ */
46
+ createWebRequest(req, runtimeOrigin) {
47
+ const url = new URL(req.url ?? "/", runtimeOrigin);
48
+ const headers = new Headers();
49
+ for (const [key, value] of Object.entries(req.headers)) {
50
+ if (Array.isArray(value)) {
51
+ for (const item of value) {
52
+ headers.append(key, item);
53
+ }
54
+ continue;
55
+ }
56
+ if (value !== void 0) {
57
+ headers.set(key, value);
58
+ }
59
+ }
60
+ const method = (req.method ?? "GET").toUpperCase();
61
+ const requestInit = {
62
+ method,
63
+ headers
64
+ };
65
+ if (method !== "GET" && method !== "HEAD") {
66
+ const body = new ReadableStream({
67
+ start(controller) {
68
+ req.on("data", (chunk) => controller.enqueue(chunk));
69
+ req.once("end", () => controller.close());
70
+ req.once("aborted", () => {
71
+ controller.error(new NodeClientAbortError());
72
+ });
73
+ req.once("error", (err) => {
74
+ const isClientAbort = err.code === "ECONNRESET";
75
+ controller.error(isClientAbort ? new NodeClientAbortError() : err);
76
+ });
77
+ },
78
+ cancel() {
79
+ req.destroy();
80
+ }
81
+ });
82
+ requestInit.body = body;
83
+ requestInit.duplex = "half";
84
+ }
85
+ return new Request(url, requestInit);
86
+ }
87
+ /**
88
+ * Sends a Web `Response` through Node's `ServerResponse` without buffering the
89
+ * full body in memory first.
90
+ *
91
+ * @remarks
92
+ * Streaming responses matter for large payloads and long-lived transports such
93
+ * as server-sent events. The bridge therefore forwards the `ReadableStream`
94
+ * directly into the Node writable response instead of materializing an
95
+ * intermediate `ArrayBuffer`.
96
+ */
97
+ async sendNodeResponse(res, response) {
98
+ res.statusCode = response.status;
99
+ response.headers.forEach((value, key) => {
100
+ res.setHeader(key, value);
101
+ });
102
+ if (!response.body) {
103
+ res.end();
104
+ return;
105
+ }
106
+ const responseBody = response.body;
107
+ try {
108
+ await pipeline(Readable.fromWeb(responseBody), res);
109
+ } catch (error) {
110
+ throw toNodeClientAbortError(error) ?? error;
111
+ }
112
+ }
113
+ }
114
+ export {
115
+ NodeClientAbortError,
116
+ NodeHttpRequestBridge,
117
+ isNodeClientAbortError
118
+ };
@@ -1,5 +1,5 @@
1
1
  import type { WebSocket } from 'ws';
2
- import type { ClientBridgeEvent, IClientBridge } from '../../public-types.js';
2
+ import type { ClientBridgeEvent, IClientBridge } from '../../types/public-types.js';
3
3
  export declare class NodeClientBridge implements IClientBridge {
4
4
  private subscribers;
5
5
  private heartbeatTimer;
@@ -1,62 +1,52 @@
1
- import type { DefaultHmrContext, EcoPagesAppConfig, IHmrManager, IClientBridge } from '../../internal-types.js';
2
- import type { EcoBuildPlugin } from '../../build/build-types.js';
3
- import type { HmrStrategy } from '../../hmr/hmr-strategy.js';
4
- import type { ClientBridgeEvent } from '../../public-types.js';
1
+ import type { EcoPagesAppConfig, IClientBridge } from '../../types/internal-types.js';
2
+ import { InMemoryEntrypointDependencyGraph, type EntrypointDependencyGraph } from '../../services/runtime-state/entrypoint-dependency-graph.service.js';
3
+ import { SharedHmrManager } from '../shared/shared-hmr-manager.js';
5
4
  export interface NodeHmrManagerParams {
6
5
  appConfig: EcoPagesAppConfig;
7
6
  bridge: IClientBridge;
8
7
  }
9
- export declare class NodeHmrManager implements IHmrManager {
10
- readonly appConfig: EcoPagesAppConfig;
11
- private readonly bridge;
12
- private watchers;
13
- private watchedFiles;
14
- private specifierMap;
8
+ /**
9
+ * Node development HMR manager.
10
+ *
11
+ * @remarks
12
+ * This manager owns three separate concerns:
13
+ * - runtime websocket event fanout
14
+ * - entrypoint registration and dedupe
15
+ * - strategy coordination for rebuilds and invalidation
16
+ *
17
+ * The strict page-entrypoint contract lives here: `registerEntrypoint()` is
18
+ * reserved for integration-owned page bundles, while generic script assets must
19
+ * go through `registerScriptEntrypoint()`.
20
+ */
21
+ export declare class NodeHmrManager extends SharedHmrManager {
15
22
  /**
16
- * Node-only reverse invalidation index: dependency file -> affected entrypoints.
17
- */
18
- private dependencyEntrypoints;
19
- /**
20
- * Node-only forward index: entrypoint -> latest dependency set.
23
+ * Creates the Node HMR manager over the shared coordination pipeline.
24
+ *
25
+ * @remarks
26
+ * Unlike Bun, Node keeps websocket subscription wiring in the server adapter,
27
+ * so this manager only specializes the shared manager where runtime behavior
28
+ * actually differs: dependency-graph storage, missing-file tolerance, and how
29
+ * runtime bundle failures disable HMR.
21
30
  */
22
- private entrypointDependencies;
23
- private distDir;
24
- private plugins;
25
- private enabled;
26
- private strategies;
27
31
  constructor({ appConfig, bridge }: NodeHmrManagerParams);
28
32
  /**
29
- * Ensures the HMR output directory exists.
30
- *
31
- * This must not remove the directory because multiple app processes
32
- * can share the same dist path during e2e runs.
33
+ * Reuses the shared in-memory dependency graph when the app already has one and
34
+ * otherwise creates the default Node development graph.
33
35
  */
34
- private cleanDistDir;
35
- private initializeStrategies;
36
- registerStrategy(strategy: HmrStrategy): void;
37
- setPlugins(plugins: EcoBuildPlugin[]): void;
38
- setEnabled(enabled: boolean): void;
39
- isEnabled(): boolean;
40
- registerSpecifierMap(map: Record<string, string>): void;
41
- buildRuntime(): Promise<void>;
42
- getRuntimePath(): string;
43
- broadcast(event: ClientBridgeEvent): void;
44
- handleFileChange(filePath: string): Promise<void>;
45
- getOutputUrl(entrypointPath: string): string | undefined;
46
- getWatchedFiles(): Map<string, string>;
47
- getSpecifierMap(): Map<string, string>;
48
- getDistDir(): string;
49
- getPlugins(): EcoBuildPlugin[];
50
- getDefaultContext(): DefaultHmrContext;
36
+ protected createEntrypointDependencyGraph(existingEntrypointDependencyGraph: EntrypointDependencyGraph): InMemoryEntrypointDependencyGraph;
51
37
  /**
52
- * Updates Node HMR dependency indexes for selective invalidation.
38
+ * Tells the shared HMR manager to ignore missing-file events during Node watch
39
+ * mode.
53
40
  *
54
41
  * @remarks
55
- * Graph data comes from Node/esbuild build metadata and does not affect Bun
56
- * HMR behavior.
42
+ * Node file watching can briefly report remove-and-recreate sequences while a
43
+ * file is being rewritten. Treating those transient gaps as fatal would disable
44
+ * otherwise healthy development sessions.
45
+ */
46
+ protected shouldSkipMissingFileChange(_filePath: string): boolean;
47
+ /**
48
+ * Disables HMR after a runtime bundle failure so the Node dev server can keep
49
+ * serving requests without repeatedly emitting broken updates.
57
50
  */
58
- private setEntrypointDependencies;
59
- registerEntrypoint(entrypointPath: string): Promise<string>;
60
- private encodeDynamicSegments;
61
- stop(): void;
51
+ protected onRuntimeBundleFailure(error: unknown): void;
62
52
  }