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

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 (418) hide show
  1. package/README.md +213 -12
  2. package/package.json +100 -188
  3. package/src/adapters/README.md +39 -0
  4. package/src/adapters/bun/hmr-manager.test.ts +267 -0
  5. package/src/adapters/bun/hmr-manager.ts +180 -47
  6. package/src/adapters/bun/index.ts +1 -2
  7. package/src/adapters/bun/server-adapter.ts +41 -34
  8. package/src/adapters/bun/server-lifecycle.ts +40 -70
  9. package/src/adapters/index.ts +1 -1
  10. package/src/adapters/node/bootstrap-dependency-resolver.test.ts +282 -0
  11. package/src/adapters/node/bootstrap-dependency-resolver.ts +301 -0
  12. package/src/adapters/node/index.ts +7 -0
  13. package/src/adapters/node/node-client-bridge.test.ts +198 -0
  14. package/src/adapters/node/node-hmr-manager.test.ts +322 -0
  15. package/src/adapters/node/node-hmr-manager.ts +207 -97
  16. package/src/adapters/node/runtime-adapter.test.ts +868 -0
  17. package/src/adapters/node/runtime-adapter.ts +439 -0
  18. package/src/adapters/node/server-adapter.ts +31 -104
  19. package/src/adapters/node/static-content-server.test.ts +60 -0
  20. package/src/adapters/node/static-content-server.ts +36 -0
  21. package/src/adapters/node/write-runtime-manifest.ts +38 -0
  22. package/src/adapters/shared/api-response.test.ts +97 -0
  23. package/src/{define-api-handler.ts → adapters/shared/define-api-handler.ts} +1 -1
  24. package/src/adapters/shared/explicit-static-route-matcher.test.ts +381 -0
  25. package/src/adapters/shared/explicit-static-route-matcher.ts +7 -1
  26. package/src/adapters/shared/file-route-middleware-pipeline.test.ts +90 -0
  27. package/src/adapters/shared/file-route-middleware-pipeline.ts +6 -2
  28. package/src/adapters/shared/fs-server-response-factory.test.ts +187 -0
  29. package/src/adapters/shared/fs-server-response-matcher.test.ts +286 -0
  30. package/src/adapters/shared/fs-server-response-matcher.ts +17 -10
  31. package/src/adapters/shared/hmr-entrypoint-registrar.ts +149 -0
  32. package/src/adapters/shared/hmr-html-response.ts +52 -0
  33. package/src/adapters/shared/hmr-manager.contract.test.ts +196 -0
  34. package/src/adapters/shared/hmr-manager.dispatch.test.ts +220 -0
  35. package/src/adapters/shared/render-context.test.ts +146 -0
  36. package/src/adapters/shared/render-context.ts +21 -6
  37. package/src/adapters/shared/runtime-bootstrap.ts +79 -0
  38. package/src/adapters/shared/server-adapter.test.ts +77 -0
  39. package/src/adapters/shared/server-adapter.ts +51 -4
  40. package/src/adapters/shared/server-route-handler.test.ts +110 -0
  41. package/src/adapters/shared/server-route-handler.ts +5 -18
  42. package/src/adapters/shared/server-static-builder.test.ts +316 -0
  43. package/src/adapters/shared/server-static-builder.ts +92 -8
  44. package/src/build/README.md +101 -0
  45. package/src/build/build-adapter-serialization.test.ts +268 -0
  46. package/src/build/build-adapter.test.ts +815 -0
  47. package/src/build/build-adapter.ts +234 -6
  48. package/src/build/build-manifest.ts +54 -0
  49. package/src/build/dev-build-coordinator.ts +221 -0
  50. package/src/build/esbuild-build-adapter.ts +132 -84
  51. package/src/build/runtime-build-executor.ts +34 -0
  52. package/src/build/runtime-specifier-alias-plugin.test.ts +43 -0
  53. package/src/build/runtime-specifier-alias-plugin.ts +58 -0
  54. package/src/config/README.md +33 -0
  55. package/src/config/config-builder.test.ts +410 -0
  56. package/src/config/config-builder.ts +281 -49
  57. package/src/constants.ts +15 -0
  58. package/src/declarations.d.ts +18 -13
  59. package/src/eco/README.md +70 -16
  60. package/src/eco/component-render-context.ts +39 -17
  61. package/src/eco/eco.test.ts +678 -0
  62. package/src/eco/eco.ts +29 -8
  63. package/src/eco/eco.types.ts +20 -1
  64. package/src/eco/eco.utils.test.ts +124 -0
  65. package/src/eco/global-injector-map.test.ts +42 -0
  66. package/src/eco/lazy-injector-map.test.ts +66 -0
  67. package/src/eco/module-dependencies.test.ts +30 -0
  68. package/src/errors/http-error.test.ts +134 -0
  69. package/src/global/utils.test.ts +12 -0
  70. package/src/hmr/README.md +26 -0
  71. package/src/hmr/client/__screenshots__/hmr-runtime.test.browser.ts/HMR-Runtime-HMR-Server-Integration-should-have-HMR-script-injected-in-page-1.png +0 -0
  72. package/src/hmr/client/__screenshots__/hmr-runtime.test.browser.ts/HMR-Runtime-HMR-Server-Integration-should-load-fixture-app-page-1.png +0 -0
  73. package/src/hmr/client/__screenshots__/hmr-runtime.test.browser.ts/HMR-Runtime-WebSocket-Connection-should-connect-to-correct-HMR-endpoint-1.png +0 -0
  74. package/src/hmr/client/hmr-runtime.ts +38 -7
  75. package/src/hmr/hmr-strategy.test.ts +124 -0
  76. package/src/hmr/hmr.postcss.test.e2e.ts +41 -0
  77. package/src/hmr/hmr.test.e2e.ts +29 -38
  78. package/src/hmr/strategies/js-hmr-strategy.test.ts +335 -0
  79. package/src/hmr/strategies/js-hmr-strategy.ts +71 -78
  80. package/src/index.ts +1 -1
  81. package/src/integrations/ghtml/ghtml-renderer.test.ts +63 -0
  82. package/src/integrations/ghtml/ghtml-renderer.ts +4 -1
  83. package/src/internal-types.ts +39 -19
  84. package/src/plugins/README.md +34 -0
  85. package/src/plugins/alias-resolver-plugin.test.ts +41 -0
  86. package/src/plugins/alias-resolver-plugin.ts +21 -3
  87. package/src/plugins/eco-component-meta-plugin.test.ts +380 -0
  88. package/src/plugins/eco-component-meta-plugin.ts +10 -3
  89. package/src/plugins/integration-plugin.test.ts +111 -0
  90. package/src/plugins/integration-plugin.ts +45 -3
  91. package/src/plugins/processor.test.ts +148 -0
  92. package/src/plugins/processor.ts +22 -2
  93. package/src/plugins/runtime-capability.ts +14 -0
  94. package/src/public-types.ts +73 -11
  95. package/src/route-renderer/GRAPH.md +16 -20
  96. package/src/route-renderer/README.md +8 -21
  97. package/src/route-renderer/component-graph/component-graph-executor.test.ts +41 -0
  98. package/src/route-renderer/component-graph/component-graph.test.ts +63 -0
  99. package/src/route-renderer/component-graph/component-marker.test.ts +73 -0
  100. package/src/route-renderer/component-graph/component-reference.ts +29 -0
  101. package/src/route-renderer/component-graph/marker-graph-resolver.test.ts +135 -0
  102. package/src/route-renderer/{marker-graph-resolver.ts → component-graph/marker-graph-resolver.ts} +11 -9
  103. package/src/route-renderer/orchestration/integration-renderer.test.ts +936 -0
  104. package/src/route-renderer/{integration-renderer.ts → orchestration/integration-renderer.ts} +113 -19
  105. package/src/route-renderer/orchestration/render-execution.service.test.ts +97 -0
  106. package/src/route-renderer/{render-execution.service.ts → orchestration/render-execution.service.ts} +109 -37
  107. package/src/route-renderer/orchestration/render-preparation.service.test.ts +235 -0
  108. package/src/route-renderer/{render-preparation.service.ts → orchestration/render-preparation.service.ts} +127 -9
  109. package/src/route-renderer/page-loading/dependency-resolver.test.ts +345 -0
  110. package/src/route-renderer/{dependency-resolver.ts → page-loading/dependency-resolver.ts} +28 -12
  111. package/src/route-renderer/page-loading/page-module-loader.test.ts +96 -0
  112. package/src/route-renderer/{page-module-loader.ts → page-loading/page-module-loader.ts} +49 -21
  113. package/src/route-renderer/route-renderer.ts +36 -1
  114. package/src/router/README.md +26 -0
  115. package/src/router/client/link-intent.d.ts +53 -0
  116. package/src/router/client/link-intent.test.browser.ts +51 -0
  117. package/src/router/client/link-intent.ts +92 -0
  118. package/src/router/client/navigation-coordinator.test.ts +237 -0
  119. package/src/router/client/navigation-coordinator.ts +433 -0
  120. package/src/router/server/fs-router-scanner.test.ts +83 -0
  121. package/src/router/{fs-router-scanner.ts → server/fs-router-scanner.ts} +12 -10
  122. package/src/router/server/fs-router.test.ts +214 -0
  123. package/src/router/{fs-router.ts → server/fs-router.ts} +2 -2
  124. package/src/services/README.md +29 -0
  125. package/src/services/assets/asset-processing-service/asset-processing.service.test.ts +385 -0
  126. package/src/services/{asset-processing-service → assets/asset-processing-service}/asset-processing.service.ts +101 -6
  127. package/src/services/assets/asset-processing-service/asset.factory.test.ts +63 -0
  128. package/src/services/{asset-processing-service → assets/asset-processing-service}/asset.factory.ts +2 -2
  129. package/src/services/{asset-processing-service → assets/asset-processing-service}/assets.types.ts +2 -1
  130. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.test.ts +72 -0
  131. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.ts +95 -0
  132. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.test.ts +67 -0
  133. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.ts +78 -0
  134. package/src/services/{asset-processing-service → assets/asset-processing-service}/index.ts +2 -0
  135. package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.interface.ts +1 -1
  136. package/src/services/assets/asset-processing-service/processors/base/base-processor.test.ts +59 -0
  137. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/base/base-processor.ts +11 -5
  138. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/base/base-script-processor.ts +17 -27
  139. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.test.ts +286 -0
  140. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/file-script.processor.ts +3 -3
  141. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.test.ts +227 -0
  142. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/node-module-script.processor.ts +5 -4
  143. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.test.ts +199 -0
  144. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/stylesheet/file-stylesheet.processor.ts +4 -1
  145. package/src/services/assets/browser-bundle.service.test.ts +36 -0
  146. package/src/services/assets/browser-bundle.service.ts +53 -0
  147. package/src/services/cache/index.ts +3 -3
  148. package/src/services/cache/memory-cache-store.test.ts +225 -0
  149. package/src/services/cache/memory-cache-store.ts +1 -1
  150. package/src/services/cache/page-cache-service.test.ts +175 -0
  151. package/src/services/cache/page-cache-service.ts +3 -3
  152. package/src/services/cache/page-request-cache-coordinator.service.test.ts +79 -0
  153. package/src/services/{page-request-cache-coordinator.service.ts → cache/page-request-cache-coordinator.service.ts} +9 -6
  154. package/src/services/html/html-rewriter-provider.service.test.ts +183 -0
  155. package/src/services/html/html-rewriter-provider.service.ts +103 -0
  156. package/src/services/html/html-transformer.service.test.ts +378 -0
  157. package/src/services/html/html-transformer.service.ts +279 -0
  158. package/src/services/invalidation/development-invalidation.service.test.ts +77 -0
  159. package/src/services/invalidation/development-invalidation.service.ts +261 -0
  160. package/src/services/module-loading/app-server-module-transpiler.service.ts +52 -0
  161. package/src/services/module-loading/page-module-import.service.test.ts +253 -0
  162. package/src/services/module-loading/page-module-import.service.ts +200 -0
  163. package/src/services/module-loading/server-loader.service.test.ts +161 -0
  164. package/src/services/module-loading/server-loader.service.ts +130 -0
  165. package/src/services/module-loading/server-module-transpiler.service.test.ts +115 -0
  166. package/src/services/module-loading/server-module-transpiler.service.ts +105 -0
  167. package/src/services/runtime-manifest/node-runtime-manifest.service.test.ts +95 -0
  168. package/src/services/runtime-manifest/node-runtime-manifest.service.ts +101 -0
  169. package/src/services/runtime-state/dev-graph.service.ts +217 -0
  170. package/src/services/runtime-state/entrypoint-dependency-graph.service.ts +136 -0
  171. package/src/services/runtime-state/runtime-specifier-registry.service.ts +96 -0
  172. package/src/services/runtime-state/server-invalidation-state.service.ts +68 -0
  173. package/src/services/validation/schema-validation-service.test.ts +223 -0
  174. package/src/services/{schema-validation-service.ts → validation/schema-validation-service.ts} +1 -1
  175. package/src/static-site-generator/README.md +26 -0
  176. package/src/static-site-generator/static-site-generator.test.ts +307 -0
  177. package/src/static-site-generator/static-site-generator.ts +109 -6
  178. package/src/utils/deep-merge.test.ts +114 -0
  179. package/src/utils/invariant.test.ts +22 -0
  180. package/src/utils/path-utils.test.ts +15 -0
  181. package/src/utils/resolve-work-dir.ts +45 -0
  182. package/src/utils/server-utils.test.ts +38 -0
  183. package/src/watchers/project-watcher.integration.test.ts +337 -0
  184. package/src/watchers/project-watcher.test-helpers.ts +1 -0
  185. package/src/watchers/project-watcher.test.ts +678 -0
  186. package/src/watchers/project-watcher.ts +49 -50
  187. package/CHANGELOG.md +0 -94
  188. package/src/adapters/abstract/application-adapter.d.ts +0 -168
  189. package/src/adapters/abstract/application-adapter.js +0 -109
  190. package/src/adapters/abstract/router-adapter.d.ts +0 -26
  191. package/src/adapters/abstract/router-adapter.js +0 -5
  192. package/src/adapters/abstract/server-adapter.d.ts +0 -69
  193. package/src/adapters/abstract/server-adapter.js +0 -15
  194. package/src/adapters/bun/client-bridge.d.ts +0 -34
  195. package/src/adapters/bun/client-bridge.js +0 -48
  196. package/src/adapters/bun/create-app.d.ts +0 -60
  197. package/src/adapters/bun/create-app.js +0 -117
  198. package/src/adapters/bun/define-api-handler.d.ts +0 -61
  199. package/src/adapters/bun/define-api-handler.js +0 -15
  200. package/src/adapters/bun/define-api-handler.ts +0 -114
  201. package/src/adapters/bun/hmr-manager.d.ts +0 -79
  202. package/src/adapters/bun/hmr-manager.js +0 -222
  203. package/src/adapters/bun/index.d.ts +0 -3
  204. package/src/adapters/bun/index.js +0 -8
  205. package/src/adapters/bun/server-adapter.d.ts +0 -155
  206. package/src/adapters/bun/server-adapter.js +0 -368
  207. package/src/adapters/bun/server-lifecycle.d.ts +0 -52
  208. package/src/adapters/bun/server-lifecycle.js +0 -120
  209. package/src/adapters/index.d.ts +0 -6
  210. package/src/adapters/index.js +0 -14
  211. package/src/adapters/node/create-app.d.ts +0 -21
  212. package/src/adapters/node/create-app.js +0 -143
  213. package/src/adapters/node/index.d.ts +0 -4
  214. package/src/adapters/node/index.js +0 -8
  215. package/src/adapters/node/node-client-bridge.d.ts +0 -26
  216. package/src/adapters/node/node-client-bridge.js +0 -66
  217. package/src/adapters/node/node-hmr-manager.d.ts +0 -62
  218. package/src/adapters/node/node-hmr-manager.js +0 -221
  219. package/src/adapters/node/server-adapter.d.ts +0 -190
  220. package/src/adapters/node/server-adapter.js +0 -420
  221. package/src/adapters/node/static-content-server.d.ts +0 -24
  222. package/src/adapters/node/static-content-server.js +0 -166
  223. package/src/adapters/shared/api-response.d.ts +0 -52
  224. package/src/adapters/shared/api-response.js +0 -96
  225. package/src/adapters/shared/application-adapter.d.ts +0 -18
  226. package/src/adapters/shared/application-adapter.js +0 -90
  227. package/src/adapters/shared/explicit-static-route-matcher.d.ts +0 -38
  228. package/src/adapters/shared/explicit-static-route-matcher.js +0 -100
  229. package/src/adapters/shared/file-route-middleware-pipeline.d.ts +0 -65
  230. package/src/adapters/shared/file-route-middleware-pipeline.js +0 -98
  231. package/src/adapters/shared/fs-server-response-factory.d.ts +0 -19
  232. package/src/adapters/shared/fs-server-response-factory.js +0 -97
  233. package/src/adapters/shared/fs-server-response-matcher.d.ts +0 -71
  234. package/src/adapters/shared/fs-server-response-matcher.js +0 -155
  235. package/src/adapters/shared/render-context.d.ts +0 -14
  236. package/src/adapters/shared/render-context.js +0 -69
  237. package/src/adapters/shared/server-adapter.d.ts +0 -87
  238. package/src/adapters/shared/server-adapter.js +0 -353
  239. package/src/adapters/shared/server-route-handler.d.ts +0 -89
  240. package/src/adapters/shared/server-route-handler.js +0 -120
  241. package/src/adapters/shared/server-static-builder.d.ts +0 -38
  242. package/src/adapters/shared/server-static-builder.js +0 -46
  243. package/src/build/build-adapter.d.ts +0 -75
  244. package/src/build/build-adapter.js +0 -54
  245. package/src/build/build-types.d.ts +0 -57
  246. package/src/build/build-types.js +0 -0
  247. package/src/build/esbuild-build-adapter.d.ts +0 -69
  248. package/src/build/esbuild-build-adapter.js +0 -391
  249. package/src/config/config-builder.d.ts +0 -227
  250. package/src/config/config-builder.js +0 -392
  251. package/src/constants.d.ts +0 -32
  252. package/src/constants.js +0 -21
  253. package/src/create-app.d.ts +0 -17
  254. package/src/create-app.js +0 -66
  255. package/src/define-api-handler.d.ts +0 -25
  256. package/src/define-api-handler.js +0 -15
  257. package/src/dev/sc-server.d.ts +0 -30
  258. package/src/dev/sc-server.js +0 -111
  259. package/src/eco/component-render-context.d.ts +0 -105
  260. package/src/eco/component-render-context.js +0 -77
  261. package/src/eco/eco.d.ts +0 -9
  262. package/src/eco/eco.js +0 -110
  263. package/src/eco/eco.types.d.ts +0 -170
  264. package/src/eco/eco.types.js +0 -0
  265. package/src/eco/eco.utils.d.ts +0 -40
  266. package/src/eco/eco.utils.js +0 -40
  267. package/src/eco/global-injector-map.d.ts +0 -16
  268. package/src/eco/global-injector-map.js +0 -80
  269. package/src/eco/lazy-injector-map.d.ts +0 -8
  270. package/src/eco/lazy-injector-map.js +0 -70
  271. package/src/eco/module-dependencies.d.ts +0 -18
  272. package/src/eco/module-dependencies.js +0 -49
  273. package/src/errors/http-error.d.ts +0 -31
  274. package/src/errors/http-error.js +0 -50
  275. package/src/errors/index.d.ts +0 -2
  276. package/src/errors/index.js +0 -4
  277. package/src/errors/locals-access-error.d.ts +0 -4
  278. package/src/errors/locals-access-error.js +0 -9
  279. package/src/global/app-logger.d.ts +0 -2
  280. package/src/global/app-logger.js +0 -6
  281. package/src/hmr/client/hmr-runtime.d.ts +0 -10
  282. package/src/hmr/client/hmr-runtime.js +0 -86
  283. package/src/hmr/hmr-strategy.d.ts +0 -159
  284. package/src/hmr/hmr-strategy.js +0 -29
  285. package/src/hmr/hmr.test.e2e.d.ts +0 -1
  286. package/src/hmr/hmr.test.e2e.js +0 -50
  287. package/src/hmr/strategies/default-hmr-strategy.d.ts +0 -43
  288. package/src/hmr/strategies/default-hmr-strategy.js +0 -34
  289. package/src/hmr/strategies/js-hmr-strategy.d.ts +0 -136
  290. package/src/hmr/strategies/js-hmr-strategy.js +0 -192
  291. package/src/index.browser.d.ts +0 -3
  292. package/src/index.browser.js +0 -4
  293. package/src/index.d.ts +0 -5
  294. package/src/index.js +0 -10
  295. package/src/integrations/ghtml/ghtml-renderer.d.ts +0 -15
  296. package/src/integrations/ghtml/ghtml-renderer.js +0 -60
  297. package/src/integrations/ghtml/ghtml.plugin.d.ts +0 -20
  298. package/src/integrations/ghtml/ghtml.plugin.js +0 -21
  299. package/src/internal-types.d.ts +0 -200
  300. package/src/internal-types.js +0 -0
  301. package/src/plugins/alias-resolver-plugin.d.ts +0 -2
  302. package/src/plugins/alias-resolver-plugin.js +0 -39
  303. package/src/plugins/eco-component-meta-plugin.d.ts +0 -95
  304. package/src/plugins/eco-component-meta-plugin.js +0 -157
  305. package/src/plugins/integration-plugin.d.ts +0 -102
  306. package/src/plugins/integration-plugin.js +0 -100
  307. package/src/plugins/processor.d.ts +0 -82
  308. package/src/plugins/processor.js +0 -122
  309. package/src/public-types.d.ts +0 -1094
  310. package/src/public-types.js +0 -0
  311. package/src/route-renderer/component-graph-executor.d.ts +0 -32
  312. package/src/route-renderer/component-graph-executor.js +0 -31
  313. package/src/route-renderer/component-graph.d.ts +0 -42
  314. package/src/route-renderer/component-graph.js +0 -72
  315. package/src/route-renderer/component-marker.d.ts +0 -52
  316. package/src/route-renderer/component-marker.js +0 -46
  317. package/src/route-renderer/dependency-resolver.d.ts +0 -24
  318. package/src/route-renderer/dependency-resolver.js +0 -428
  319. package/src/route-renderer/html-post-processing.service.d.ts +0 -40
  320. package/src/route-renderer/html-post-processing.service.js +0 -86
  321. package/src/route-renderer/html-post-processing.service.ts +0 -103
  322. package/src/route-renderer/integration-renderer.d.ts +0 -339
  323. package/src/route-renderer/integration-renderer.js +0 -526
  324. package/src/route-renderer/marker-graph-resolver.d.ts +0 -76
  325. package/src/route-renderer/marker-graph-resolver.js +0 -93
  326. package/src/route-renderer/page-module-loader.d.ts +0 -61
  327. package/src/route-renderer/page-module-loader.js +0 -102
  328. package/src/route-renderer/render-execution.service.d.ts +0 -69
  329. package/src/route-renderer/render-execution.service.js +0 -91
  330. package/src/route-renderer/render-preparation.service.d.ts +0 -112
  331. package/src/route-renderer/render-preparation.service.js +0 -243
  332. package/src/route-renderer/route-renderer.d.ts +0 -26
  333. package/src/route-renderer/route-renderer.js +0 -68
  334. package/src/router/fs-router-scanner.d.ts +0 -41
  335. package/src/router/fs-router-scanner.js +0 -155
  336. package/src/router/fs-router.d.ts +0 -26
  337. package/src/router/fs-router.js +0 -100
  338. package/src/services/asset-processing-service/asset-processing.service.d.ts +0 -41
  339. package/src/services/asset-processing-service/asset-processing.service.js +0 -250
  340. package/src/services/asset-processing-service/asset.factory.d.ts +0 -17
  341. package/src/services/asset-processing-service/asset.factory.js +0 -82
  342. package/src/services/asset-processing-service/assets.types.d.ts +0 -88
  343. package/src/services/asset-processing-service/assets.types.js +0 -0
  344. package/src/services/asset-processing-service/index.d.ts +0 -3
  345. package/src/services/asset-processing-service/index.js +0 -3
  346. package/src/services/asset-processing-service/processor.interface.d.ts +0 -22
  347. package/src/services/asset-processing-service/processor.interface.js +0 -6
  348. package/src/services/asset-processing-service/processor.registry.d.ts +0 -8
  349. package/src/services/asset-processing-service/processor.registry.js +0 -15
  350. package/src/services/asset-processing-service/processors/base/base-processor.d.ts +0 -24
  351. package/src/services/asset-processing-service/processors/base/base-processor.js +0 -59
  352. package/src/services/asset-processing-service/processors/base/base-script-processor.d.ts +0 -16
  353. package/src/services/asset-processing-service/processors/base/base-script-processor.js +0 -80
  354. package/src/services/asset-processing-service/processors/index.d.ts +0 -5
  355. package/src/services/asset-processing-service/processors/index.js +0 -5
  356. package/src/services/asset-processing-service/processors/script/content-script.processor.d.ts +0 -5
  357. package/src/services/asset-processing-service/processors/script/content-script.processor.js +0 -57
  358. package/src/services/asset-processing-service/processors/script/file-script.processor.d.ts +0 -8
  359. package/src/services/asset-processing-service/processors/script/file-script.processor.js +0 -76
  360. package/src/services/asset-processing-service/processors/script/node-module-script.processor.d.ts +0 -7
  361. package/src/services/asset-processing-service/processors/script/node-module-script.processor.js +0 -74
  362. package/src/services/asset-processing-service/processors/stylesheet/content-stylesheet.processor.d.ts +0 -5
  363. package/src/services/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +0 -25
  364. package/src/services/asset-processing-service/processors/stylesheet/file-stylesheet.processor.d.ts +0 -9
  365. package/src/services/asset-processing-service/processors/stylesheet/file-stylesheet.processor.js +0 -63
  366. package/src/services/cache/cache.types.d.ts +0 -107
  367. package/src/services/cache/cache.types.js +0 -0
  368. package/src/services/cache/index.d.ts +0 -7
  369. package/src/services/cache/index.js +0 -7
  370. package/src/services/cache/memory-cache-store.d.ts +0 -42
  371. package/src/services/cache/memory-cache-store.js +0 -98
  372. package/src/services/cache/page-cache-service.d.ts +0 -70
  373. package/src/services/cache/page-cache-service.js +0 -152
  374. package/src/services/html-transformer.service.d.ts +0 -50
  375. package/src/services/html-transformer.service.js +0 -163
  376. package/src/services/html-transformer.service.ts +0 -217
  377. package/src/services/page-module-import.service.d.ts +0 -37
  378. package/src/services/page-module-import.service.js +0 -88
  379. package/src/services/page-module-import.service.ts +0 -129
  380. package/src/services/page-request-cache-coordinator.service.d.ts +0 -75
  381. package/src/services/page-request-cache-coordinator.service.js +0 -107
  382. package/src/services/schema-validation-service.d.ts +0 -122
  383. package/src/services/schema-validation-service.js +0 -101
  384. package/src/services/validation/standard-schema.types.d.ts +0 -65
  385. package/src/services/validation/standard-schema.types.js +0 -0
  386. package/src/static-site-generator/static-site-generator.d.ts +0 -57
  387. package/src/static-site-generator/static-site-generator.js +0 -272
  388. package/src/utils/css.d.ts +0 -1
  389. package/src/utils/css.js +0 -7
  390. package/src/utils/deep-merge.d.ts +0 -14
  391. package/src/utils/deep-merge.js +0 -32
  392. package/src/utils/hash.d.ts +0 -1
  393. package/src/utils/hash.js +0 -7
  394. package/src/utils/html.d.ts +0 -1
  395. package/src/utils/html.js +0 -4
  396. package/src/utils/invariant.d.ts +0 -5
  397. package/src/utils/invariant.js +0 -11
  398. package/src/utils/locals-utils.d.ts +0 -15
  399. package/src/utils/locals-utils.js +0 -24
  400. package/src/utils/parse-cli-args.d.ts +0 -24
  401. package/src/utils/parse-cli-args.js +0 -47
  402. package/src/utils/path-utils.module.d.ts +0 -5
  403. package/src/utils/path-utils.module.js +0 -14
  404. package/src/utils/runtime.d.ts +0 -11
  405. package/src/utils/runtime.js +0 -40
  406. package/src/utils/server-utils.module.d.ts +0 -19
  407. package/src/utils/server-utils.module.js +0 -56
  408. package/src/watchers/project-watcher.d.ts +0 -132
  409. package/src/watchers/project-watcher.js +0 -281
  410. package/src/watchers/project-watcher.test-helpers.d.ts +0 -4
  411. package/src/watchers/project-watcher.test-helpers.js +0 -51
  412. /package/src/route-renderer/{component-graph-executor.ts → component-graph/component-graph-executor.ts} +0 -0
  413. /package/src/route-renderer/{component-graph.ts → component-graph/component-graph.ts} +0 -0
  414. /package/src/route-renderer/{component-marker.ts → component-graph/component-marker.ts} +0 -0
  415. /package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.registry.ts +0 -0
  416. /package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/index.ts +0 -0
  417. /package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/content-script.processor.ts +0 -0
  418. /package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/stylesheet/content-stylesheet.processor.ts +0 -0
@@ -1,143 +0,0 @@
1
- import { createServer } from "node:http";
2
- import { Readable } from "node:stream";
3
- import { DEFAULT_ECOPAGES_HOSTNAME, DEFAULT_ECOPAGES_PORT } from "../../constants.js";
4
- import { appLogger } from "../../global/app-logger.js";
5
- import {} from "../abstract/application-adapter.js";
6
- import { SharedApplicationAdapter } from "../shared/application-adapter.js";
7
- import { createNodeServerAdapter } from "./server-adapter.js";
8
- class EcopagesApp extends SharedApplicationAdapter {
9
- serverAdapter;
10
- server = null;
11
- runtimeOrigin = "";
12
- async stop(force = true) {
13
- if (!this.server) {
14
- return;
15
- }
16
- const activeServer = this.server;
17
- 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
- });
30
- }
31
- 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({
40
- runtimeOrigin: this.runtimeOrigin,
41
- appConfig: this.appConfig,
42
- apiHandlers: this.apiHandlers,
43
- staticRoutes: this.staticRoutes,
44
- errorHandler: this.errorHandler,
45
- options: { watch: dev },
46
- serveOptions: {
47
- port: preferredPort,
48
- hostname: preferredHostname,
49
- ...this.serverOptions
50
- }
51
- });
52
- }
53
- async start() {
54
- if (!this.serverAdapter) {
55
- this.serverAdapter = await this.initializeServerAdapter();
56
- }
57
- if (this.server) {
58
- return this.server;
59
- }
60
- const { build, preview } = this.cliArgs;
61
- if (build || preview) {
62
- appLogger.debugTime("Building static pages");
63
- await this.serverAdapter.buildStatic({ preview });
64
- await this.stop(true);
65
- appLogger.debugTimeEnd("Building static pages");
66
- if (build) {
67
- process.exit(0);
68
- }
69
- return;
70
- }
71
- 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");
84
- }
85
- });
86
- await new Promise((resolve) => {
87
- this.server.listen(port, hostname, () => resolve());
88
- });
89
- await this.serverAdapter.completeInitialization(this.server);
90
- appLogger.info(`Node server running at ${this.runtimeOrigin}`);
91
- return this.server;
92
- }
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
- async fetch(request) {
131
- if (!this.serverAdapter) {
132
- this.serverAdapter = await this.initializeServerAdapter();
133
- }
134
- return this.serverAdapter.handleRequest(request);
135
- }
136
- }
137
- async function createNodeApp(options) {
138
- return new EcopagesApp(options);
139
- }
140
- export {
141
- EcopagesApp,
142
- createNodeApp
143
- };
@@ -1,4 +0,0 @@
1
- export { NodeServerAdapter, createNodeServerAdapter } from './server-adapter.js';
2
- export { EcopagesApp, createNodeApp } from './create-app.js';
3
- export type { EcopagesAppOptions } from './create-app.js';
4
- export type { NodeServerAdapterParams, NodeServerAdapterResult, NodeServerInstance, NodeServeAdapterServerOptions, } from './server-adapter.js';
@@ -1,8 +0,0 @@
1
- import { NodeServerAdapter, createNodeServerAdapter } from "./server-adapter.js";
2
- import { EcopagesApp, createNodeApp } from "./create-app.js";
3
- export {
4
- EcopagesApp,
5
- NodeServerAdapter,
6
- createNodeApp,
7
- createNodeServerAdapter
8
- };
@@ -1,26 +0,0 @@
1
- import type { WebSocket } from 'ws';
2
- import type { ClientBridgeEvent, IClientBridge } from '../../public-types.js';
3
- export declare class NodeClientBridge implements IClientBridge {
4
- private subscribers;
5
- private heartbeatTimer;
6
- constructor();
7
- /**
8
- * Pings all open subscribers and removes any that are no longer in OPEN state.
9
- * This prevents a slow memory leak caused by zombie connections that never
10
- * send a close event (e.g. abruptly killed browsers, orphaned tabs, network drops).
11
- */
12
- private sweep;
13
- subscribe(ws: WebSocket): void;
14
- unsubscribe(ws: WebSocket): void;
15
- broadcast(event: ClientBridgeEvent): void;
16
- reload(): void;
17
- cssUpdate(path: string): void;
18
- update(path: string): void;
19
- error(message: string): void;
20
- get subscriberCount(): number;
21
- /**
22
- * Stops the heartbeat timer and clears all subscribers.
23
- * Call this when the dev server is shutting down.
24
- */
25
- destroy(): void;
26
- }
@@ -1,66 +0,0 @@
1
- const HEARTBEAT_INTERVAL_MS = 3e4;
2
- class NodeClientBridge {
3
- subscribers = /* @__PURE__ */ new Set();
4
- heartbeatTimer = null;
5
- constructor() {
6
- this.heartbeatTimer = setInterval(() => this.sweep(), HEARTBEAT_INTERVAL_MS);
7
- this.heartbeatTimer.unref?.();
8
- }
9
- /**
10
- * Pings all open subscribers and removes any that are no longer in OPEN state.
11
- * This prevents a slow memory leak caused by zombie connections that never
12
- * send a close event (e.g. abruptly killed browsers, orphaned tabs, network drops).
13
- */
14
- sweep() {
15
- for (const ws of this.subscribers) {
16
- if (ws.readyState !== 1) {
17
- this.subscribers.delete(ws);
18
- continue;
19
- }
20
- ws.ping();
21
- }
22
- }
23
- subscribe(ws) {
24
- this.subscribers.add(ws);
25
- }
26
- unsubscribe(ws) {
27
- this.subscribers.delete(ws);
28
- }
29
- broadcast(event) {
30
- const payload = JSON.stringify(event);
31
- for (const ws of this.subscribers) {
32
- if (ws.readyState === 1) {
33
- ws.send(payload);
34
- }
35
- }
36
- }
37
- reload() {
38
- this.broadcast({ type: "reload" });
39
- }
40
- cssUpdate(path) {
41
- this.broadcast({ type: "css-update", path, timestamp: Date.now() });
42
- }
43
- update(path) {
44
- this.broadcast({ type: "update", path, timestamp: Date.now() });
45
- }
46
- error(message) {
47
- this.broadcast({ type: "error", message });
48
- }
49
- get subscriberCount() {
50
- return this.subscribers.size;
51
- }
52
- /**
53
- * Stops the heartbeat timer and clears all subscribers.
54
- * Call this when the dev server is shutting down.
55
- */
56
- destroy() {
57
- if (this.heartbeatTimer !== null) {
58
- clearInterval(this.heartbeatTimer);
59
- this.heartbeatTimer = null;
60
- }
61
- this.subscribers.clear();
62
- }
63
- }
64
- export {
65
- NodeClientBridge
66
- };
@@ -1,62 +0,0 @@
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';
5
- export interface NodeHmrManagerParams {
6
- appConfig: EcoPagesAppConfig;
7
- bridge: IClientBridge;
8
- }
9
- export declare class NodeHmrManager implements IHmrManager {
10
- readonly appConfig: EcoPagesAppConfig;
11
- private readonly bridge;
12
- private watchers;
13
- private watchedFiles;
14
- private specifierMap;
15
- /**
16
- * Node-only reverse invalidation index: dependency file -> affected entrypoints.
17
- */
18
- private dependencyEntrypoints;
19
- /**
20
- * Node-only forward index: entrypoint -> latest dependency set.
21
- */
22
- private entrypointDependencies;
23
- private distDir;
24
- private plugins;
25
- private enabled;
26
- private strategies;
27
- constructor({ appConfig, bridge }: NodeHmrManagerParams);
28
- /**
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
- */
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;
51
- /**
52
- * Updates Node HMR dependency indexes for selective invalidation.
53
- *
54
- * @remarks
55
- * Graph data comes from Node/esbuild build metadata and does not affect Bun
56
- * HMR behavior.
57
- */
58
- private setEntrypointDependencies;
59
- registerEntrypoint(entrypointPath: string): Promise<string>;
60
- private encodeDynamicSegments;
61
- stop(): void;
62
- }
@@ -1,221 +0,0 @@
1
- import fs from "node:fs";
2
- import path from "node:path";
3
- import { fileURLToPath } from "node:url";
4
- import { RESOLVED_ASSETS_DIR } from "../../constants.js";
5
- import { defaultBuildAdapter } from "../../build/build-adapter.js";
6
- import { fileSystem } from "@ecopages/file-system";
7
- import { DefaultHmrStrategy } from "../../hmr/strategies/default-hmr-strategy.js";
8
- import { JsHmrStrategy } from "../../hmr/strategies/js-hmr-strategy.js";
9
- import { appLogger } from "../../global/app-logger.js";
10
- class NodeHmrManager {
11
- appConfig;
12
- bridge;
13
- watchers = /* @__PURE__ */ new Map();
14
- watchedFiles = /* @__PURE__ */ new Map();
15
- specifierMap = /* @__PURE__ */ new Map();
16
- /**
17
- * Node-only reverse invalidation index: dependency file -> affected entrypoints.
18
- */
19
- dependencyEntrypoints = /* @__PURE__ */ new Map();
20
- /**
21
- * Node-only forward index: entrypoint -> latest dependency set.
22
- */
23
- entrypointDependencies = /* @__PURE__ */ new Map();
24
- distDir;
25
- plugins = [];
26
- enabled = true;
27
- strategies = [];
28
- constructor({ appConfig, bridge }) {
29
- this.appConfig = appConfig;
30
- this.bridge = bridge;
31
- this.distDir = path.join(this.appConfig.absolutePaths.distDir, RESOLVED_ASSETS_DIR, "_hmr");
32
- this.cleanDistDir();
33
- this.initializeStrategies();
34
- }
35
- /**
36
- * Ensures the HMR output directory exists.
37
- *
38
- * This must not remove the directory because multiple app processes
39
- * can share the same dist path during e2e runs.
40
- */
41
- cleanDistDir() {
42
- fileSystem.ensureDir(this.distDir);
43
- }
44
- initializeStrategies() {
45
- const jsContext = {
46
- getWatchedFiles: () => this.watchedFiles,
47
- getSpecifierMap: () => this.specifierMap,
48
- getDependencyEntrypoints: (filePath) => new Set(this.dependencyEntrypoints.get(path.resolve(filePath)) ?? []),
49
- setEntrypointDependencies: (entrypointPath, dependencies) => this.setEntrypointDependencies(entrypointPath, dependencies),
50
- getDistDir: () => this.distDir,
51
- getPlugins: () => this.plugins,
52
- getSrcDir: () => this.appConfig.absolutePaths.srcDir
53
- };
54
- this.strategies = [new JsHmrStrategy(jsContext), new DefaultHmrStrategy()];
55
- }
56
- registerStrategy(strategy) {
57
- this.strategies.push(strategy);
58
- }
59
- setPlugins(plugins) {
60
- this.plugins = [...plugins];
61
- }
62
- setEnabled(enabled) {
63
- this.enabled = enabled;
64
- }
65
- isEnabled() {
66
- return this.enabled;
67
- }
68
- registerSpecifierMap(map) {
69
- for (const [specifier, url] of Object.entries(map)) {
70
- this.specifierMap.set(specifier, url);
71
- }
72
- }
73
- async buildRuntime() {
74
- const currentDir = path.dirname(fileURLToPath(import.meta.url));
75
- const runtimeSource = path.resolve(currentDir, "../../hmr/client/hmr-runtime.js");
76
- const result = await defaultBuildAdapter.build({
77
- entrypoints: [runtimeSource],
78
- outdir: this.distDir,
79
- naming: "_hmr_runtime.js",
80
- minify: false,
81
- ...defaultBuildAdapter.getTranspileOptions("hmr-runtime"),
82
- plugins: this.plugins
83
- });
84
- if (!result.success) {
85
- appLogger.error("[HMR] Failed to build runtime script:", result.logs);
86
- }
87
- }
88
- getRuntimePath() {
89
- return path.join(this.distDir, "_hmr_runtime.js");
90
- }
91
- broadcast(event) {
92
- appLogger.debug(
93
- `[HMR] Broadcasting ${event.type} event, path=${event.path || "all"}, subscribers=${this.bridge.subscriberCount}`
94
- );
95
- this.bridge.broadcast(event);
96
- }
97
- async handleFileChange(filePath) {
98
- const sorted = [...this.strategies].sort((a, b) => b.priority - a.priority);
99
- const strategy = sorted.find((s) => {
100
- try {
101
- return s.matches(filePath);
102
- } catch (err) {
103
- appLogger.error(err);
104
- return false;
105
- }
106
- });
107
- if (!strategy) {
108
- appLogger.warn(`[HMR] No strategy found for ${filePath}`);
109
- return;
110
- }
111
- appLogger.debug(`[NodeHmrManager] Selected strategy: ${strategy.constructor.name}`);
112
- const action = await strategy.process(filePath);
113
- if (action.type === "broadcast") {
114
- if (action.events) {
115
- for (const event of action.events) {
116
- this.broadcast(event);
117
- }
118
- }
119
- }
120
- }
121
- getOutputUrl(entrypointPath) {
122
- return this.watchedFiles.get(entrypointPath);
123
- }
124
- getWatchedFiles() {
125
- return this.watchedFiles;
126
- }
127
- getSpecifierMap() {
128
- return this.specifierMap;
129
- }
130
- getDistDir() {
131
- return this.distDir;
132
- }
133
- getPlugins() {
134
- return this.plugins;
135
- }
136
- getDefaultContext() {
137
- return {
138
- getWatchedFiles: () => this.watchedFiles,
139
- getSpecifierMap: () => this.specifierMap,
140
- getDistDir: () => this.distDir,
141
- getPlugins: () => this.plugins,
142
- getSrcDir: () => this.appConfig.absolutePaths.srcDir,
143
- getLayoutsDir: () => this.appConfig.absolutePaths.layoutsDir,
144
- getPagesDir: () => this.appConfig.absolutePaths.pagesDir
145
- };
146
- }
147
- /**
148
- * Updates Node HMR dependency indexes for selective invalidation.
149
- *
150
- * @remarks
151
- * Graph data comes from Node/esbuild build metadata and does not affect Bun
152
- * HMR behavior.
153
- */
154
- setEntrypointDependencies(entrypointPath, dependencies) {
155
- const normalizedEntrypoint = path.resolve(entrypointPath);
156
- const previousDependencies = this.entrypointDependencies.get(normalizedEntrypoint);
157
- if (previousDependencies) {
158
- for (const dependencyPath of previousDependencies) {
159
- const entrypoints = this.dependencyEntrypoints.get(dependencyPath);
160
- if (!entrypoints) {
161
- continue;
162
- }
163
- entrypoints.delete(normalizedEntrypoint);
164
- if (entrypoints.size === 0) {
165
- this.dependencyEntrypoints.delete(dependencyPath);
166
- }
167
- }
168
- }
169
- const normalizedDependencies = /* @__PURE__ */ new Set([
170
- normalizedEntrypoint,
171
- ...dependencies.map((dependencyPath) => path.resolve(dependencyPath))
172
- ]);
173
- this.entrypointDependencies.set(normalizedEntrypoint, normalizedDependencies);
174
- for (const dependencyPath of normalizedDependencies) {
175
- const entrypoints = this.dependencyEntrypoints.get(dependencyPath) ?? /* @__PURE__ */ new Set();
176
- entrypoints.add(normalizedEntrypoint);
177
- this.dependencyEntrypoints.set(dependencyPath, entrypoints);
178
- }
179
- }
180
- async registerEntrypoint(entrypointPath) {
181
- if (this.watchedFiles.has(entrypointPath)) {
182
- return this.watchedFiles.get(entrypointPath);
183
- }
184
- const srcDir = this.appConfig.absolutePaths.srcDir;
185
- const relativePath = path.relative(srcDir, entrypointPath);
186
- const relativePathJs = relativePath.replace(/\.(tsx?|jsx?|mdx?)$/, ".js");
187
- const encodedPathJs = this.encodeDynamicSegments(relativePathJs);
188
- const urlPath = encodedPathJs.split(path.sep).join("/");
189
- const outputUrl = `/${path.join(RESOLVED_ASSETS_DIR, "_hmr", urlPath)}`;
190
- const outputPath = path.join(this.distDir, urlPath);
191
- this.watchedFiles.set(entrypointPath, outputUrl);
192
- await this.handleFileChange(entrypointPath);
193
- if (!fileSystem.exists(outputPath)) {
194
- const fallback = await defaultBuildAdapter.build({
195
- entrypoints: [entrypointPath],
196
- outdir: this.distDir,
197
- naming: encodedPathJs,
198
- minify: false,
199
- external: Array.from(this.specifierMap.keys()),
200
- ...defaultBuildAdapter.getTranspileOptions("hmr-entrypoint"),
201
- plugins: this.plugins
202
- });
203
- if (!fallback.success) {
204
- appLogger.error(`[HMR] Fallback build failed for ${entrypointPath}:`, fallback.logs);
205
- }
206
- }
207
- return outputUrl;
208
- }
209
- encodeDynamicSegments(filepath) {
210
- return filepath.replace(/\[([^\]]+)\]/g, "_$1_");
211
- }
212
- stop() {
213
- for (const watcher of this.watchers.values()) {
214
- watcher.close();
215
- }
216
- this.watchers.clear();
217
- }
218
- }
219
- export {
220
- NodeHmrManager
221
- };