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

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 (454) hide show
  1. package/README.md +268 -14
  2. package/package.json +92 -110
  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 +99 -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/build-adapter.d.ts +175 -3
  74. package/src/build/build-adapter.js +625 -16
  75. package/src/build/build-manifest.d.ts +27 -0
  76. package/src/build/build-manifest.js +30 -0
  77. package/src/build/dev-build-coordinator.d.ts +72 -0
  78. package/src/build/dev-build-coordinator.js +154 -0
  79. package/src/build/esbuild-build-adapter.d.ts +16 -6
  80. package/src/build/esbuild-build-adapter.js +202 -75
  81. package/src/build/runtime-build-executor.d.ts +14 -0
  82. package/src/build/runtime-build-executor.js +22 -0
  83. package/src/build/runtime-specifier-alias-plugin.d.ts +15 -0
  84. package/src/build/runtime-specifier-alias-plugin.js +35 -0
  85. package/src/build/runtime-specifier-aliases.d.ts +5 -0
  86. package/src/build/runtime-specifier-aliases.js +95 -0
  87. package/src/config/README.md +36 -0
  88. package/src/config/config-builder.d.ts +54 -29
  89. package/src/config/config-builder.js +256 -50
  90. package/src/{constants.d.ts → config/constants.d.ts} +13 -0
  91. package/src/{constants.js → config/constants.js} +4 -0
  92. package/src/declarations.d.ts +19 -14
  93. package/src/dev/host-runtime.d.ts +10 -0
  94. package/src/dev/host-runtime.js +24 -0
  95. package/src/dev/sc-server.d.ts +1 -1
  96. package/src/dev/sc-server.js +1 -1
  97. package/src/eco/README.md +70 -16
  98. package/src/eco/eco.browser.d.ts +2 -0
  99. package/src/eco/eco.browser.js +88 -0
  100. package/src/eco/eco.js +63 -54
  101. package/src/eco/eco.types.d.ts +69 -6
  102. package/src/eco/eco.utils.d.ts +1 -40
  103. package/src/eco/eco.utils.js +5 -35
  104. package/src/eco/global-injector-map.d.ts +3 -3
  105. package/src/eco/global-injector-map.js +2 -2
  106. package/src/eco/lazy-injector-map.d.ts +2 -2
  107. package/src/errors/index.d.ts +1 -0
  108. package/src/errors/index.js +3 -1
  109. package/src/hmr/README.md +26 -0
  110. package/src/hmr/client/hmr-runtime.d.ts +1 -6
  111. package/src/hmr/client/hmr-runtime.js +38 -7
  112. package/src/hmr/hmr-strategy.d.ts +16 -13
  113. package/src/hmr/hmr-strategy.js +22 -7
  114. package/src/hmr/hmr.postcss.test.e2e.d.ts +1 -0
  115. package/src/hmr/hmr.postcss.test.e2e.js +31 -0
  116. package/src/hmr/hmr.test.e2e.js +26 -33
  117. package/src/hmr/strategies/default-hmr-strategy.d.ts +2 -2
  118. package/src/hmr/strategies/default-hmr-strategy.js +1 -1
  119. package/src/hmr/strategies/js-hmr-strategy.d.ts +40 -42
  120. package/src/hmr/strategies/js-hmr-strategy.js +24 -43
  121. package/src/index.browser.d.ts +2 -2
  122. package/src/index.browser.js +1 -1
  123. package/src/index.d.ts +4 -3
  124. package/src/index.js +16 -5
  125. package/src/integrations/ghtml/ghtml-renderer.d.ts +3 -2
  126. package/src/integrations/ghtml/ghtml-renderer.js +27 -30
  127. package/src/integrations/ghtml/ghtml.constants.d.ts +1 -0
  128. package/src/integrations/ghtml/ghtml.constants.js +4 -0
  129. package/src/integrations/ghtml/ghtml.plugin.d.ts +2 -6
  130. package/src/integrations/ghtml/ghtml.plugin.js +3 -4
  131. package/src/plugins/README.md +35 -0
  132. package/src/plugins/alias-resolver-plugin.d.ts +1 -0
  133. package/src/plugins/alias-resolver-plugin.js +27 -5
  134. package/src/plugins/eco-component-meta-plugin.d.ts +14 -1
  135. package/src/plugins/eco-component-meta-plugin.js +42 -24
  136. package/src/plugins/foreign-jsx-override-plugin.d.ts +33 -0
  137. package/src/plugins/foreign-jsx-override-plugin.js +41 -0
  138. package/src/plugins/integration-plugin.d.ts +147 -29
  139. package/src/plugins/integration-plugin.js +103 -14
  140. package/src/plugins/processor.d.ts +17 -2
  141. package/src/plugins/processor.js +22 -3
  142. package/src/plugins/runtime-capability.d.ts +9 -0
  143. package/src/plugins/source-transform.d.ts +46 -0
  144. package/src/plugins/source-transform.js +71 -0
  145. package/src/route-renderer/GRAPH.md +83 -325
  146. package/src/route-renderer/README.md +73 -90
  147. package/src/route-renderer/orchestration/component-render-context.d.ts +97 -0
  148. package/src/route-renderer/orchestration/component-render-context.js +147 -0
  149. package/src/route-renderer/orchestration/declared-ownership-graph.d.ts +18 -0
  150. package/src/route-renderer/orchestration/declared-ownership-graph.js +34 -0
  151. package/src/route-renderer/orchestration/foreign-subtree-execution.service.d.ts +110 -0
  152. package/src/route-renderer/orchestration/foreign-subtree-execution.service.js +233 -0
  153. package/src/route-renderer/orchestration/integration-renderer.d.ts +534 -0
  154. package/src/route-renderer/orchestration/integration-renderer.js +991 -0
  155. package/src/route-renderer/orchestration/ownership-planning.service.d.ts +24 -0
  156. package/src/route-renderer/orchestration/ownership-planning.service.js +63 -0
  157. package/src/route-renderer/orchestration/ownership-validation.service.d.ts +29 -0
  158. package/src/route-renderer/orchestration/ownership-validation.service.js +53 -0
  159. package/src/route-renderer/orchestration/processed-asset-dedupe.d.ts +3 -0
  160. package/src/route-renderer/orchestration/processed-asset-dedupe.js +27 -0
  161. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.d.ts +91 -0
  162. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.js +170 -0
  163. package/src/route-renderer/orchestration/render-output.utils.d.ts +66 -0
  164. package/src/route-renderer/orchestration/render-output.utils.js +171 -0
  165. package/src/route-renderer/orchestration/route-render-orchestrator.d.ts +156 -0
  166. package/src/route-renderer/orchestration/route-render-orchestrator.js +577 -0
  167. package/src/route-renderer/orchestration/template-serialization.d.ts +38 -0
  168. package/src/route-renderer/orchestration/template-serialization.js +45 -0
  169. package/src/route-renderer/page-loading/component-dependency-collection.d.ts +37 -0
  170. package/src/route-renderer/page-loading/component-dependency-collection.js +132 -0
  171. package/src/route-renderer/page-loading/declared-asset-collection.d.ts +24 -0
  172. package/src/route-renderer/page-loading/declared-asset-collection.js +106 -0
  173. package/src/route-renderer/{dependency-resolver.d.ts → page-loading/dependency-resolver.d.ts} +15 -4
  174. package/src/route-renderer/page-loading/dependency-resolver.js +115 -0
  175. package/src/route-renderer/page-loading/ecopages-virtual-imports.d.ts +11 -0
  176. package/src/route-renderer/page-loading/ecopages-virtual-imports.js +57 -0
  177. package/src/route-renderer/page-loading/lazy-entry-collection.d.ts +45 -0
  178. package/src/route-renderer/page-loading/lazy-entry-collection.js +105 -0
  179. package/src/route-renderer/page-loading/lazy-trigger-planning.d.ts +19 -0
  180. package/src/route-renderer/page-loading/lazy-trigger-planning.js +40 -0
  181. package/src/route-renderer/page-loading/module-declaration-aggregation.d.ts +5 -0
  182. package/src/route-renderer/page-loading/module-declaration-aggregation.js +33 -0
  183. package/src/route-renderer/page-loading/module-declaration-scripts.d.ts +3 -0
  184. package/src/route-renderer/page-loading/module-declaration-scripts.js +18 -0
  185. package/src/route-renderer/page-loading/page-dependency-bundling.d.ts +13 -0
  186. package/src/route-renderer/page-loading/page-dependency-bundling.js +137 -0
  187. package/src/route-renderer/page-loading/page-module-loader.d.ts +90 -0
  188. package/src/route-renderer/{page-module-loader.js → page-loading/page-module-loader.js} +39 -14
  189. package/src/route-renderer/route-renderer.d.ts +57 -14
  190. package/src/route-renderer/route-renderer.js +30 -18
  191. package/src/router/README.md +94 -0
  192. package/src/router/client/link-intent.d.ts +53 -0
  193. package/src/router/client/link-intent.js +34 -0
  194. package/src/router/client/link-intent.test.browser.d.ts +1 -0
  195. package/src/router/client/link-intent.test.browser.js +43 -0
  196. package/src/router/client/navigation-coordinator.d.ts +169 -0
  197. package/src/router/client/navigation-coordinator.js +215 -0
  198. package/src/router/server/route-registry.d.ts +78 -0
  199. package/src/router/server/route-registry.js +262 -0
  200. package/src/services/README.md +28 -0
  201. package/src/services/assets/asset-processing-service/asset-dependency-keys.d.ts +3 -0
  202. package/src/services/assets/asset-processing-service/asset-dependency-keys.js +56 -0
  203. package/src/services/assets/asset-processing-service/asset-processing.service.d.ts +103 -0
  204. package/src/services/{asset-processing-service → assets/asset-processing-service}/asset-processing.service.js +124 -89
  205. package/src/services/{asset-processing-service → assets/asset-processing-service}/asset.factory.d.ts +1 -1
  206. package/src/services/{asset-processing-service → assets/asset-processing-service}/asset.factory.js +2 -2
  207. package/src/services/{asset-processing-service → assets/asset-processing-service}/assets.types.d.ts +16 -1
  208. package/src/services/assets/asset-processing-service/assets.types.js +0 -0
  209. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.d.ts +55 -0
  210. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.js +49 -0
  211. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.d.ts +20 -0
  212. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.js +41 -0
  213. package/src/services/assets/asset-processing-service/grouped-content-bundles.d.ts +30 -0
  214. package/src/services/assets/asset-processing-service/grouped-content-bundles.js +65 -0
  215. package/src/services/assets/asset-processing-service/index.d.ts +6 -0
  216. package/src/services/assets/asset-processing-service/index.js +6 -0
  217. package/src/services/assets/asset-processing-service/page-package.d.ts +6 -0
  218. package/src/services/assets/asset-processing-service/page-package.js +80 -0
  219. package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.interface.d.ts +2 -2
  220. package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.registry.d.ts +2 -2
  221. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/base/base-processor.d.ts +1 -1
  222. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/base/base-processor.js +11 -5
  223. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.d.ts +22 -0
  224. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.js +136 -0
  225. package/src/services/assets/asset-processing-service/processors/index.d.ts +5 -0
  226. package/src/services/assets/asset-processing-service/processors/index.js +5 -0
  227. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/content-script.processor.d.ts +3 -2
  228. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.js +120 -0
  229. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/file-script.processor.d.ts +4 -3
  230. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/file-script.processor.js +28 -7
  231. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.d.ts +42 -0
  232. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.js +126 -0
  233. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/stylesheet/content-stylesheet.processor.d.ts +5 -2
  234. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +59 -0
  235. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/stylesheet/file-stylesheet.processor.d.ts +2 -2
  236. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/stylesheet/file-stylesheet.processor.js +9 -3
  237. package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.d.ts +18 -0
  238. package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.js +45 -0
  239. package/src/services/assets/browser-bundle.service.d.ts +73 -0
  240. package/src/services/assets/browser-bundle.service.js +41 -0
  241. package/src/services/{page-request-cache-coordinator.service.d.ts → cache/page-request-cache-coordinator.service.d.ts} +2 -2
  242. package/src/services/{page-request-cache-coordinator.service.js → cache/page-request-cache-coordinator.service.js} +3 -1
  243. package/src/services/html/html-rewriter-provider.service.d.ts +40 -0
  244. package/src/services/html/html-rewriter-provider.service.js +68 -0
  245. package/src/services/html/html-transformer.service.d.ts +96 -0
  246. package/src/services/html/html-transformer.service.js +287 -0
  247. package/src/services/invalidation/development-invalidation.service.d.ts +74 -0
  248. package/src/services/invalidation/development-invalidation.service.js +190 -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 +24 -0
  252. package/src/services/module-loading/app-server-module-transpiler.service.js +151 -0
  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/node-bootstrap-plugin.d.ts +38 -0
  258. package/src/services/module-loading/node-bootstrap-plugin.js +215 -0
  259. package/src/services/module-loading/page-module-import.service.d.ts +95 -0
  260. package/src/services/module-loading/page-module-import.service.js +191 -0
  261. package/src/services/module-loading/server-module-transpiler.service.d.ts +63 -0
  262. package/src/services/module-loading/server-module-transpiler.service.js +64 -0
  263. package/src/services/module-loading/source-module-support.d.ts +5 -0
  264. package/src/services/module-loading/source-module-support.js +8 -0
  265. package/src/services/runtime-state/dev-graph.service.d.ts +118 -0
  266. package/src/services/runtime-state/dev-graph.service.js +162 -0
  267. package/src/services/runtime-state/entrypoint-dependency-graph.service.d.ts +41 -0
  268. package/src/services/runtime-state/entrypoint-dependency-graph.service.js +85 -0
  269. package/src/services/runtime-state/server-invalidation-state.service.d.ts +26 -0
  270. package/src/services/runtime-state/server-invalidation-state.service.js +35 -0
  271. package/src/services/{schema-validation-service.d.ts → validation/schema-validation-service.d.ts} +1 -1
  272. package/src/static-site-generator/README.md +26 -0
  273. package/src/static-site-generator/static-site-generator.d.ts +67 -20
  274. package/src/static-site-generator/static-site-generator.js +182 -138
  275. package/src/{internal-types.d.ts → types/internal-types.d.ts} +62 -30
  276. package/src/types/internal-types.js +0 -0
  277. package/src/{public-types.d.ts → types/public-types.d.ts} +239 -31
  278. package/src/types/public-types.js +0 -0
  279. package/src/utils/html-escaping.d.ts +7 -0
  280. package/src/utils/html-escaping.js +6 -0
  281. package/src/utils/locals-utils.d.ts +1 -1
  282. package/src/utils/parse-cli-args.d.ts +4 -1
  283. package/src/utils/parse-cli-args.js +16 -1
  284. package/src/utils/resolve-work-dir.d.ts +11 -0
  285. package/src/utils/resolve-work-dir.js +31 -0
  286. package/src/watchers/project-watcher.d.ts +11 -7
  287. package/src/watchers/project-watcher.js +69 -75
  288. package/src/watchers/project-watcher.test-helpers.d.ts +2 -2
  289. package/src/watchers/project-watcher.test-helpers.js +6 -5
  290. package/CHANGELOG.md +0 -94
  291. package/src/adapters/abstract/application-adapter.ts +0 -337
  292. package/src/adapters/abstract/router-adapter.ts +0 -30
  293. package/src/adapters/abstract/server-adapter.ts +0 -79
  294. package/src/adapters/bun/client-bridge.ts +0 -62
  295. package/src/adapters/bun/create-app.ts +0 -189
  296. package/src/adapters/bun/define-api-handler.d.ts +0 -61
  297. package/src/adapters/bun/define-api-handler.ts +0 -114
  298. package/src/adapters/bun/hmr-manager.ts +0 -276
  299. package/src/adapters/bun/index.ts +0 -3
  300. package/src/adapters/bun/server-adapter.ts +0 -492
  301. package/src/adapters/bun/server-lifecycle.d.ts +0 -52
  302. package/src/adapters/bun/server-lifecycle.js +0 -120
  303. package/src/adapters/bun/server-lifecycle.ts +0 -154
  304. package/src/adapters/index.ts +0 -6
  305. package/src/adapters/node/create-app.ts +0 -179
  306. package/src/adapters/node/index.d.ts +0 -4
  307. package/src/adapters/node/index.js +0 -8
  308. package/src/adapters/node/index.ts +0 -9
  309. package/src/adapters/node/node-client-bridge.ts +0 -79
  310. package/src/adapters/node/node-hmr-manager.ts +0 -271
  311. package/src/adapters/node/server-adapter.ts +0 -561
  312. package/src/adapters/node/static-content-server.ts +0 -203
  313. package/src/adapters/shared/api-response.ts +0 -104
  314. package/src/adapters/shared/application-adapter.ts +0 -199
  315. package/src/adapters/shared/explicit-static-route-matcher.ts +0 -134
  316. package/src/adapters/shared/file-route-middleware-pipeline.ts +0 -123
  317. package/src/adapters/shared/fs-server-response-factory.ts +0 -118
  318. package/src/adapters/shared/fs-server-response-matcher.ts +0 -198
  319. package/src/adapters/shared/render-context.ts +0 -105
  320. package/src/adapters/shared/server-adapter.ts +0 -442
  321. package/src/adapters/shared/server-route-handler.ts +0 -166
  322. package/src/adapters/shared/server-static-builder.ts +0 -82
  323. package/src/build/build-adapter.ts +0 -133
  324. package/src/build/build-types.ts +0 -83
  325. package/src/build/esbuild-build-adapter.ts +0 -511
  326. package/src/config/config-builder.ts +0 -474
  327. package/src/constants.ts +0 -39
  328. package/src/create-app.ts +0 -87
  329. package/src/define-api-handler.js +0 -15
  330. package/src/define-api-handler.ts +0 -66
  331. package/src/dev/sc-server.ts +0 -143
  332. package/src/eco/component-render-context.d.ts +0 -105
  333. package/src/eco/component-render-context.js +0 -77
  334. package/src/eco/component-render-context.ts +0 -202
  335. package/src/eco/eco.ts +0 -221
  336. package/src/eco/eco.types.ts +0 -202
  337. package/src/eco/eco.utils.ts +0 -89
  338. package/src/eco/global-injector-map.ts +0 -112
  339. package/src/eco/lazy-injector-map.ts +0 -120
  340. package/src/eco/module-dependencies.ts +0 -75
  341. package/src/errors/http-error.ts +0 -72
  342. package/src/errors/index.ts +0 -2
  343. package/src/errors/locals-access-error.ts +0 -7
  344. package/src/global/app-logger.ts +0 -4
  345. package/src/hmr/client/hmr-runtime.ts +0 -121
  346. package/src/hmr/hmr-strategy.ts +0 -172
  347. package/src/hmr/hmr.test.e2e.ts +0 -75
  348. package/src/hmr/strategies/default-hmr-strategy.ts +0 -60
  349. package/src/hmr/strategies/js-hmr-strategy.ts +0 -327
  350. package/src/index.browser.ts +0 -3
  351. package/src/index.ts +0 -5
  352. package/src/integrations/ghtml/ghtml-renderer.ts +0 -93
  353. package/src/integrations/ghtml/ghtml.plugin.ts +0 -32
  354. package/src/internal-types.ts +0 -212
  355. package/src/plugins/alias-resolver-plugin.ts +0 -45
  356. package/src/plugins/eco-component-meta-plugin.ts +0 -474
  357. package/src/plugins/integration-plugin.ts +0 -184
  358. package/src/plugins/processor.ts +0 -220
  359. package/src/public-types.ts +0 -1255
  360. package/src/route-renderer/component-graph-executor.d.ts +0 -32
  361. package/src/route-renderer/component-graph-executor.js +0 -31
  362. package/src/route-renderer/component-graph-executor.ts +0 -84
  363. package/src/route-renderer/component-graph.d.ts +0 -42
  364. package/src/route-renderer/component-graph.js +0 -72
  365. package/src/route-renderer/component-graph.ts +0 -159
  366. package/src/route-renderer/component-marker.d.ts +0 -52
  367. package/src/route-renderer/component-marker.js +0 -46
  368. package/src/route-renderer/component-marker.ts +0 -117
  369. package/src/route-renderer/dependency-resolver.js +0 -428
  370. package/src/route-renderer/dependency-resolver.ts +0 -596
  371. package/src/route-renderer/html-post-processing.service.d.ts +0 -40
  372. package/src/route-renderer/html-post-processing.service.js +0 -86
  373. package/src/route-renderer/html-post-processing.service.ts +0 -103
  374. package/src/route-renderer/integration-renderer.d.ts +0 -339
  375. package/src/route-renderer/integration-renderer.js +0 -526
  376. package/src/route-renderer/integration-renderer.ts +0 -696
  377. package/src/route-renderer/marker-graph-resolver.d.ts +0 -76
  378. package/src/route-renderer/marker-graph-resolver.js +0 -93
  379. package/src/route-renderer/marker-graph-resolver.ts +0 -153
  380. package/src/route-renderer/page-module-loader.d.ts +0 -61
  381. package/src/route-renderer/page-module-loader.ts +0 -153
  382. package/src/route-renderer/render-execution.service.d.ts +0 -69
  383. package/src/route-renderer/render-execution.service.js +0 -91
  384. package/src/route-renderer/render-execution.service.ts +0 -158
  385. package/src/route-renderer/render-preparation.service.d.ts +0 -112
  386. package/src/route-renderer/render-preparation.service.js +0 -243
  387. package/src/route-renderer/render-preparation.service.ts +0 -358
  388. package/src/route-renderer/route-renderer.ts +0 -80
  389. package/src/router/fs-router-scanner.d.ts +0 -41
  390. package/src/router/fs-router-scanner.js +0 -155
  391. package/src/router/fs-router-scanner.ts +0 -217
  392. package/src/router/fs-router.d.ts +0 -26
  393. package/src/router/fs-router.js +0 -100
  394. package/src/router/fs-router.ts +0 -122
  395. package/src/services/asset-processing-service/asset-processing.service.d.ts +0 -41
  396. package/src/services/asset-processing-service/asset-processing.service.ts +0 -306
  397. package/src/services/asset-processing-service/asset.factory.ts +0 -105
  398. package/src/services/asset-processing-service/assets.types.ts +0 -112
  399. package/src/services/asset-processing-service/index.d.ts +0 -3
  400. package/src/services/asset-processing-service/index.js +0 -3
  401. package/src/services/asset-processing-service/index.ts +0 -3
  402. package/src/services/asset-processing-service/processor.interface.ts +0 -27
  403. package/src/services/asset-processing-service/processor.registry.ts +0 -18
  404. package/src/services/asset-processing-service/processors/base/base-processor.ts +0 -76
  405. package/src/services/asset-processing-service/processors/base/base-script-processor.d.ts +0 -16
  406. package/src/services/asset-processing-service/processors/base/base-script-processor.js +0 -80
  407. package/src/services/asset-processing-service/processors/base/base-script-processor.ts +0 -105
  408. package/src/services/asset-processing-service/processors/index.d.ts +0 -5
  409. package/src/services/asset-processing-service/processors/index.js +0 -5
  410. package/src/services/asset-processing-service/processors/index.ts +0 -5
  411. package/src/services/asset-processing-service/processors/script/content-script.processor.js +0 -57
  412. package/src/services/asset-processing-service/processors/script/content-script.processor.ts +0 -66
  413. package/src/services/asset-processing-service/processors/script/file-script.processor.ts +0 -88
  414. package/src/services/asset-processing-service/processors/script/node-module-script.processor.d.ts +0 -7
  415. package/src/services/asset-processing-service/processors/script/node-module-script.processor.js +0 -74
  416. package/src/services/asset-processing-service/processors/script/node-module-script.processor.ts +0 -84
  417. package/src/services/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +0 -25
  418. package/src/services/asset-processing-service/processors/stylesheet/content-stylesheet.processor.ts +0 -27
  419. package/src/services/asset-processing-service/processors/stylesheet/file-stylesheet.processor.ts +0 -77
  420. package/src/services/cache/cache.types.ts +0 -126
  421. package/src/services/cache/index.ts +0 -18
  422. package/src/services/cache/memory-cache-store.ts +0 -130
  423. package/src/services/cache/page-cache-service.ts +0 -202
  424. package/src/services/html-transformer.service.d.ts +0 -50
  425. package/src/services/html-transformer.service.js +0 -163
  426. package/src/services/html-transformer.service.ts +0 -217
  427. package/src/services/page-module-import.service.d.ts +0 -37
  428. package/src/services/page-module-import.service.js +0 -88
  429. package/src/services/page-module-import.service.ts +0 -129
  430. package/src/services/page-request-cache-coordinator.service.ts +0 -128
  431. package/src/services/schema-validation-service.ts +0 -204
  432. package/src/services/validation/standard-schema.types.ts +0 -68
  433. package/src/static-site-generator/static-site-generator.ts +0 -359
  434. package/src/utils/css.d.ts +0 -1
  435. package/src/utils/css.js +0 -7
  436. package/src/utils/css.ts +0 -5
  437. package/src/utils/deep-merge.ts +0 -47
  438. package/src/utils/hash.ts +0 -5
  439. package/src/utils/html.ts +0 -1
  440. package/src/utils/invariant.ts +0 -15
  441. package/src/utils/locals-utils.ts +0 -37
  442. package/src/utils/parse-cli-args.ts +0 -83
  443. package/src/utils/path-utils.module.ts +0 -14
  444. package/src/utils/runtime.ts +0 -44
  445. package/src/utils/server-utils.module.ts +0 -67
  446. package/src/watchers/project-watcher.test-helpers.ts +0 -40
  447. package/src/watchers/project-watcher.ts +0 -364
  448. /package/src/adapters/{bun → shared}/define-api-handler.js +0 -0
  449. /package/src/{internal-types.js → adapters/shared/runtime-host.js} +0 -0
  450. /package/src/{public-types.js → adapters/shared/static-preview-host.js} +0 -0
  451. /package/src/{services/asset-processing-service/assets.types.js → plugins/runtime-capability.js} +0 -0
  452. /package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.interface.js +0 -0
  453. /package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.registry.js +0 -0
  454. /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
  }