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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (473) hide show
  1. package/README.md +79 -28
  2. package/package.json +104 -116
  3. package/src/adapters/README.md +2 -2
  4. package/src/adapters/abstract/application-adapter.d.ts +28 -2
  5. package/src/adapters/abstract/application-adapter.js +14 -2
  6. package/src/adapters/abstract/router-adapter.d.ts +1 -1
  7. package/src/adapters/abstract/server-adapter.d.ts +2 -2
  8. package/src/adapters/bun/client-bridge.d.ts +1 -1
  9. package/src/adapters/bun/create-app.d.ts +12 -12
  10. package/src/adapters/bun/create-app.js +64 -41
  11. package/src/adapters/bun/hmr-manager.d.ts +19 -115
  12. package/src/adapters/bun/hmr-manager.js +25 -301
  13. package/src/adapters/bun/index.d.ts +1 -1
  14. package/src/adapters/bun/index.js +2 -2
  15. package/src/adapters/bun/runtime-host.d.ts +52 -0
  16. package/src/adapters/bun/runtime-host.js +56 -0
  17. package/src/adapters/bun/server-adapter.d.ts +100 -32
  18. package/src/adapters/bun/server-adapter.js +142 -65
  19. package/src/adapters/bun/static-preview-host.d.ts +28 -0
  20. package/src/adapters/bun/static-preview-host.js +45 -0
  21. package/src/{create-app.d.ts → adapters/create-app.d.ts} +9 -6
  22. package/src/{create-app.js → adapters/create-app.js} +4 -4
  23. package/src/adapters/index.d.ts +1 -5
  24. package/src/adapters/index.js +1 -7
  25. package/src/adapters/node/create-app.d.ts +15 -12
  26. package/src/adapters/node/create-app.js +34 -85
  27. package/src/adapters/node/http-request-bridge.d.ts +57 -0
  28. package/src/adapters/node/http-request-bridge.js +118 -0
  29. package/src/adapters/node/node-client-bridge.d.ts +1 -1
  30. package/src/adapters/node/node-hmr-manager.d.ts +22 -103
  31. package/src/adapters/node/node-hmr-manager.js +26 -289
  32. package/src/adapters/node/runtime-host.d.ts +57 -0
  33. package/src/adapters/node/runtime-host.js +92 -0
  34. package/src/adapters/node/server-adapter-dependencies.d.ts +19 -0
  35. package/src/adapters/node/server-adapter-dependencies.js +18 -0
  36. package/src/adapters/node/server-adapter.d.ts +19 -42
  37. package/src/adapters/node/server-adapter.js +94 -139
  38. package/src/adapters/node/static-content-server.d.ts +1 -1
  39. package/src/adapters/node/static-content-server.js +1 -1
  40. package/src/adapters/node/static-preview-host.d.ts +55 -0
  41. package/src/adapters/node/static-preview-host.js +68 -0
  42. package/src/adapters/shared/application-adapter.d.ts +1 -1
  43. package/src/adapters/shared/define-api-handler.d.ts +1 -1
  44. package/src/adapters/shared/explicit-static-render-preparation.d.ts +25 -0
  45. package/src/adapters/shared/explicit-static-render-preparation.js +26 -0
  46. package/src/adapters/shared/explicit-static-route-matcher.d.ts +7 -4
  47. package/src/adapters/shared/explicit-static-route-matcher.js +14 -16
  48. package/src/adapters/shared/file-route-middleware-pipeline.d.ts +7 -10
  49. package/src/adapters/shared/file-route-middleware-pipeline.js +2 -11
  50. package/src/adapters/shared/fs-server-response-factory.d.ts +14 -10
  51. package/src/adapters/shared/fs-server-response-factory.js +11 -27
  52. package/src/adapters/shared/fs-server-response-matcher.d.ts +18 -18
  53. package/src/adapters/shared/fs-server-response-matcher.js +72 -46
  54. package/src/adapters/shared/hmr-entrypoint-registrar.js +1 -1
  55. package/src/adapters/shared/hmr-html-response.d.ts +1 -1
  56. package/src/adapters/shared/hmr-html-response.js +4 -3
  57. package/src/adapters/shared/render-context.d.ts +5 -3
  58. package/src/adapters/shared/render-context.js +24 -1
  59. package/src/adapters/shared/runtime-app-bootstrap.d.ts +26 -0
  60. package/src/adapters/shared/runtime-app-bootstrap.js +46 -0
  61. package/src/adapters/shared/runtime-host.d.ts +12 -0
  62. package/src/adapters/shared/server-adapter.d.ts +22 -11
  63. package/src/adapters/shared/server-adapter.js +183 -133
  64. package/src/adapters/shared/server-route-handler.d.ts +5 -5
  65. package/src/adapters/shared/server-route-handler.js +4 -4
  66. package/src/adapters/shared/server-static-builder.d.ts +32 -8
  67. package/src/adapters/shared/server-static-builder.js +69 -6
  68. package/src/adapters/shared/shared-hmr-manager.d.ts +59 -0
  69. package/src/adapters/shared/shared-hmr-manager.js +241 -0
  70. package/src/adapters/shared/static-preview-host.d.ts +10 -0
  71. package/src/build/README.md +57 -67
  72. package/src/build/browser-runtime-manifest.d.ts +31 -0
  73. package/src/build/browser-runtime-manifest.js +61 -0
  74. package/src/build/browser-runtime-plugin-helpers.d.ts +26 -0
  75. package/src/build/browser-runtime-plugin-helpers.js +14 -0
  76. package/src/build/browser-runtime-plugin.d.ts +78 -0
  77. package/src/build/browser-runtime-plugin.js +173 -0
  78. package/src/build/build-adapter.d.ts +384 -63
  79. package/src/build/build-adapter.js +129 -54
  80. package/src/build/build-manifest.d.ts +6 -0
  81. package/src/build/build-manifest.js +21 -2
  82. package/src/build/build-types.d.ts +2 -2
  83. package/src/build/rolldown-adapter-helpers.d.ts +58 -0
  84. package/src/build/rolldown-adapter-helpers.js +265 -0
  85. package/src/build/rolldown-build-adapter.d.ts +28 -0
  86. package/src/build/rolldown-build-adapter.js +65 -0
  87. package/src/build/rolldown-dev-build-adapter.d.ts +82 -0
  88. package/src/build/rolldown-dev-build-adapter.js +166 -0
  89. package/src/build/rolldown-plugin-bridge.d.ts +59 -0
  90. package/src/build/rolldown-plugin-bridge.js +199 -0
  91. package/src/build/runtime-build-executor.d.ts +15 -7
  92. package/src/build/runtime-build-executor.js +8 -9
  93. package/src/build/runtime-build-output-normalizer.d.ts +3 -0
  94. package/src/build/runtime-build-output-normalizer.js +111 -0
  95. package/src/build/serialized-build-executor.d.ts +64 -0
  96. package/src/build/serialized-build-executor.js +63 -0
  97. package/src/build/server-side-css-shim-plugin.d.ts +41 -0
  98. package/src/build/server-side-css-shim-plugin.js +35 -0
  99. package/src/cache/index.d.ts +6 -0
  100. package/src/cache/index.js +6 -0
  101. package/src/cache/module-parse-cache.d.ts +65 -0
  102. package/src/cache/module-parse-cache.js +75 -0
  103. package/src/config/README.md +5 -2
  104. package/src/config/config-builder.d.ts +41 -13
  105. package/src/config/config-builder.js +62 -24
  106. package/src/declarations.d.ts +1 -1
  107. package/src/dev/host-runtime.d.ts +10 -0
  108. package/src/dev/host-runtime.js +24 -0
  109. package/src/dev/sc-server.d.ts +1 -1
  110. package/src/dev/sc-server.js +1 -1
  111. package/src/eco/eco.browser.d.ts +2 -0
  112. package/src/eco/eco.browser.js +88 -0
  113. package/src/eco/eco.js +50 -45
  114. package/src/eco/eco.types.d.ts +60 -8
  115. package/src/eco/eco.utils.d.ts +1 -40
  116. package/src/eco/eco.utils.js +5 -35
  117. package/src/eco/global-injector-map.d.ts +3 -3
  118. package/src/eco/global-injector-map.js +2 -2
  119. package/src/eco/lazy-injector-map.d.ts +2 -2
  120. package/src/errors/index.d.ts +1 -0
  121. package/src/errors/index.js +3 -1
  122. package/src/hmr/client/hmr-runtime.js +9 -1
  123. package/src/hmr/hmr-strategy.d.ts +16 -13
  124. package/src/hmr/hmr-strategy.js +22 -7
  125. package/src/hmr/strategies/default-hmr-strategy.d.ts +2 -2
  126. package/src/hmr/strategies/default-hmr-strategy.js +1 -1
  127. package/src/hmr/strategies/js-hmr-strategy.d.ts +4 -9
  128. package/src/hmr/strategies/js-hmr-strategy.js +5 -10
  129. package/src/index.browser.d.ts +2 -2
  130. package/src/index.browser.js +1 -1
  131. package/src/index.d.ts +3 -2
  132. package/src/index.js +15 -4
  133. package/src/integrations/ghtml/ghtml-renderer.d.ts +2 -1
  134. package/src/integrations/ghtml/ghtml-renderer.js +24 -29
  135. package/src/integrations/ghtml/ghtml.constants.d.ts +1 -0
  136. package/src/integrations/ghtml/ghtml.constants.js +4 -0
  137. package/src/integrations/ghtml/ghtml.plugin.d.ts +2 -6
  138. package/src/integrations/ghtml/ghtml.plugin.js +3 -4
  139. package/src/plugins/README.md +1 -0
  140. package/src/plugins/alias-resolver-cache.d.ts +68 -0
  141. package/src/plugins/alias-resolver-cache.js +106 -0
  142. package/src/plugins/alias-resolver-plugin.d.ts +5 -1
  143. package/src/plugins/alias-resolver-plugin.js +19 -7
  144. package/src/plugins/eco-component-meta-plugin.d.ts +12 -1
  145. package/src/plugins/eco-component-meta-plugin.js +43 -25
  146. package/src/plugins/foreign-jsx-override-plugin.d.ts +33 -0
  147. package/src/plugins/foreign-jsx-override-plugin.js +41 -0
  148. package/src/plugins/integration-plugin.d.ts +136 -42
  149. package/src/plugins/integration-plugin.js +99 -31
  150. package/src/plugins/processor.d.ts +4 -2
  151. package/src/plugins/processor.js +8 -3
  152. package/src/plugins/source-transform.d.ts +46 -0
  153. package/src/plugins/source-transform.js +71 -0
  154. package/src/route-renderer/GRAPH.md +80 -318
  155. package/src/route-renderer/README.md +74 -78
  156. package/src/route-renderer/orchestration/component-render-context.d.ts +97 -0
  157. package/src/route-renderer/orchestration/component-render-context.js +147 -0
  158. package/src/route-renderer/orchestration/declared-ownership-graph.d.ts +18 -0
  159. package/src/route-renderer/orchestration/declared-ownership-graph.js +34 -0
  160. package/src/route-renderer/orchestration/foreign-subtree-execution.service.d.ts +110 -0
  161. package/src/route-renderer/orchestration/foreign-subtree-execution.service.js +233 -0
  162. package/src/route-renderer/orchestration/integration-renderer.d.ts +290 -128
  163. package/src/route-renderer/orchestration/integration-renderer.js +660 -258
  164. package/src/route-renderer/orchestration/ownership-planning.service.d.ts +24 -0
  165. package/src/route-renderer/orchestration/ownership-planning.service.js +63 -0
  166. package/src/route-renderer/orchestration/ownership-validation.service.d.ts +29 -0
  167. package/src/route-renderer/orchestration/ownership-validation.service.js +53 -0
  168. package/src/route-renderer/orchestration/processed-asset-dedupe.d.ts +3 -0
  169. package/src/route-renderer/orchestration/processed-asset-dedupe.js +27 -0
  170. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.d.ts +91 -0
  171. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.js +170 -0
  172. package/src/route-renderer/orchestration/render-output.utils.d.ts +66 -0
  173. package/src/route-renderer/orchestration/render-output.utils.js +171 -0
  174. package/src/route-renderer/orchestration/route-render-orchestrator.d.ts +156 -0
  175. package/src/route-renderer/orchestration/route-render-orchestrator.js +577 -0
  176. package/src/route-renderer/orchestration/template-serialization.d.ts +38 -0
  177. package/src/route-renderer/orchestration/template-serialization.js +45 -0
  178. package/src/route-renderer/page-loading/component-dependency-collection.d.ts +37 -0
  179. package/src/route-renderer/page-loading/component-dependency-collection.js +132 -0
  180. package/src/route-renderer/page-loading/declared-asset-collection.d.ts +24 -0
  181. package/src/route-renderer/page-loading/declared-asset-collection.js +106 -0
  182. package/src/route-renderer/page-loading/dependency-resolver.d.ts +2 -2
  183. package/src/route-renderer/page-loading/dependency-resolver.js +27 -354
  184. package/src/route-renderer/page-loading/ecopages-virtual-imports.d.ts +11 -0
  185. package/src/route-renderer/page-loading/ecopages-virtual-imports.js +57 -0
  186. package/src/route-renderer/page-loading/lazy-entry-collection.d.ts +45 -0
  187. package/src/route-renderer/page-loading/lazy-entry-collection.js +105 -0
  188. package/src/route-renderer/page-loading/lazy-trigger-planning.d.ts +19 -0
  189. package/src/route-renderer/page-loading/lazy-trigger-planning.js +40 -0
  190. package/src/route-renderer/page-loading/module-declaration-aggregation.d.ts +5 -0
  191. package/src/route-renderer/page-loading/module-declaration-aggregation.js +33 -0
  192. package/src/route-renderer/page-loading/module-declaration-scripts.d.ts +3 -0
  193. package/src/route-renderer/page-loading/module-declaration-scripts.js +18 -0
  194. package/src/route-renderer/page-loading/page-dependency-bundling.d.ts +13 -0
  195. package/src/route-renderer/page-loading/page-dependency-bundling.js +137 -0
  196. package/src/route-renderer/page-loading/page-module-loader.d.ts +7 -4
  197. package/src/route-renderer/page-loading/page-module-loader.js +8 -5
  198. package/src/route-renderer/route-renderer.d.ts +31 -23
  199. package/src/route-renderer/route-renderer.js +17 -24
  200. package/src/router/README.md +76 -8
  201. package/src/router/client/navigation-coordinator.d.ts +20 -0
  202. package/src/router/client/navigation-coordinator.js +2 -2
  203. package/src/router/server/route-registry.d.ts +78 -0
  204. package/src/router/server/route-registry.js +262 -0
  205. package/src/services/README.md +1 -2
  206. package/src/services/assets/asset-processing-service/asset-dependency-keys.d.ts +3 -0
  207. package/src/services/assets/asset-processing-service/asset-dependency-keys.js +56 -0
  208. package/src/services/assets/asset-processing-service/asset-processing.service.d.ts +3 -20
  209. package/src/services/assets/asset-processing-service/asset-processing.service.js +52 -98
  210. package/src/services/assets/asset-processing-service/asset.factory.d.ts +1 -1
  211. package/src/services/assets/asset-processing-service/asset.factory.js +2 -2
  212. package/src/services/assets/asset-processing-service/assets.types.d.ts +14 -0
  213. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.d.ts +2 -0
  214. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.js +1 -0
  215. package/src/services/assets/asset-processing-service/grouped-content-bundles.d.ts +30 -0
  216. package/src/services/assets/asset-processing-service/grouped-content-bundles.js +65 -0
  217. package/src/services/assets/asset-processing-service/index.d.ts +6 -5
  218. package/src/services/assets/asset-processing-service/index.js +6 -5
  219. package/src/services/assets/asset-processing-service/page-package.d.ts +6 -0
  220. package/src/services/assets/asset-processing-service/page-package.js +80 -0
  221. package/src/services/assets/asset-processing-service/processor.interface.d.ts +2 -2
  222. package/src/services/assets/asset-processing-service/processor.registry.d.ts +2 -2
  223. package/src/services/assets/asset-processing-service/processors/base/base-processor.d.ts +1 -1
  224. package/src/services/assets/asset-processing-service/processors/base/base-processor.js +3 -2
  225. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.d.ts +10 -5
  226. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.js +69 -5
  227. package/src/services/assets/asset-processing-service/processors/index.d.ts +5 -5
  228. package/src/services/assets/asset-processing-service/processors/index.js +5 -5
  229. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.d.ts +3 -2
  230. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.js +66 -3
  231. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.d.ts +4 -3
  232. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.js +27 -6
  233. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.d.ts +38 -3
  234. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.js +57 -6
  235. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.d.ts +5 -2
  236. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +39 -5
  237. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.d.ts +2 -2
  238. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.js +5 -2
  239. package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.d.ts +18 -0
  240. package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.js +45 -0
  241. package/src/services/assets/browser-bundle.service.d.ts +44 -3
  242. package/src/services/assets/browser-bundle.service.js +15 -7
  243. package/src/services/html/html-rewriter-provider.service.d.ts +3 -0
  244. package/src/services/html/html-rewriter-provider.service.js +4 -1
  245. package/src/services/html/html-transformer.service.d.ts +22 -3
  246. package/src/services/html/html-transformer.service.js +101 -35
  247. package/src/services/invalidation/development-invalidation.service.d.ts +1 -1
  248. package/src/services/invalidation/development-invalidation.service.js +1 -0
  249. package/src/services/module-loading/app-module-loader.service.d.ts +7 -0
  250. package/src/services/module-loading/app-module-loader.service.js +0 -0
  251. package/src/services/module-loading/app-server-module-transpiler.service.d.ts +9 -1
  252. package/src/services/module-loading/app-server-module-transpiler.service.js +102 -6
  253. package/src/services/module-loading/host-module-loader-registry.d.ts +4 -0
  254. package/src/services/module-loading/host-module-loader-registry.js +15 -0
  255. package/src/services/module-loading/module-loading-types.d.ts +2 -0
  256. package/src/services/module-loading/module-loading-types.js +0 -0
  257. package/src/services/module-loading/page-module-import.service.d.ts +32 -8
  258. package/src/services/module-loading/page-module-import.service.js +83 -22
  259. package/src/services/module-loading/server-module-transpiler.service.d.ts +8 -14
  260. package/src/services/module-loading/server-module-transpiler.service.js +5 -2
  261. package/src/services/module-loading/source-module-support.d.ts +5 -0
  262. package/src/services/module-loading/source-module-support.js +8 -0
  263. package/src/services/runtime-state/dev-graph.service.d.ts +6 -6
  264. package/src/services/runtime-state/dev-graph.service.js +10 -10
  265. package/src/services/runtime-state/entrypoint-dependency-graph.service.d.ts +1 -1
  266. package/src/services/runtime-state/server-invalidation-state.service.d.ts +1 -1
  267. package/src/static-site-generator/static-site-generator.d.ts +23 -28
  268. package/src/static-site-generator/static-site-generator.js +119 -156
  269. package/src/{internal-types.d.ts → types/internal-types.d.ts} +34 -23
  270. package/src/types/internal-types.js +0 -0
  271. package/src/{public-types.d.ts → types/public-types.d.ts} +195 -37
  272. package/src/types/public-types.js +0 -0
  273. package/src/utils/html-escaping.d.ts +7 -0
  274. package/src/utils/html-escaping.js +6 -0
  275. package/src/utils/locals-utils.d.ts +1 -1
  276. package/src/utils/parse-cli-args.d.ts +4 -1
  277. package/src/utils/parse-cli-args.js +16 -1
  278. package/src/utils/resolve-entry-file.d.ts +72 -0
  279. package/src/utils/resolve-entry-file.js +41 -0
  280. package/src/utils/resolve-work-dir.js +1 -1
  281. package/src/watchers/project-watcher.d.ts +4 -4
  282. package/src/watchers/project-watcher.js +35 -41
  283. package/src/watchers/project-watcher.test-helpers.d.ts +2 -2
  284. package/src/watchers/project-watcher.test-helpers.js +5 -5
  285. package/CHANGELOG.md +0 -31
  286. package/src/adapters/abstract/application-adapter.ts +0 -337
  287. package/src/adapters/abstract/router-adapter.ts +0 -30
  288. package/src/adapters/abstract/server-adapter.ts +0 -79
  289. package/src/adapters/bun/client-bridge.ts +0 -62
  290. package/src/adapters/bun/create-app.ts +0 -189
  291. package/src/adapters/bun/hmr-manager.ts +0 -409
  292. package/src/adapters/bun/index.ts +0 -2
  293. package/src/adapters/bun/server-adapter.ts +0 -499
  294. package/src/adapters/bun/server-lifecycle.d.ts +0 -63
  295. package/src/adapters/bun/server-lifecycle.js +0 -92
  296. package/src/adapters/bun/server-lifecycle.ts +0 -124
  297. package/src/adapters/index.ts +0 -6
  298. package/src/adapters/node/bootstrap-dependency-resolver.d.ts +0 -44
  299. package/src/adapters/node/bootstrap-dependency-resolver.js +0 -172
  300. package/src/adapters/node/bootstrap-dependency-resolver.ts +0 -301
  301. package/src/adapters/node/create-app.ts +0 -179
  302. package/src/adapters/node/index.d.ts +0 -6
  303. package/src/adapters/node/index.js +0 -11
  304. package/src/adapters/node/index.ts +0 -16
  305. package/src/adapters/node/node-client-bridge.ts +0 -79
  306. package/src/adapters/node/node-hmr-manager.ts +0 -381
  307. package/src/adapters/node/runtime-adapter.d.ts +0 -46
  308. package/src/adapters/node/runtime-adapter.js +0 -306
  309. package/src/adapters/node/runtime-adapter.ts +0 -439
  310. package/src/adapters/node/server-adapter.ts +0 -488
  311. package/src/adapters/node/static-content-server.ts +0 -239
  312. package/src/adapters/node/write-runtime-manifest.d.ts +0 -26
  313. package/src/adapters/node/write-runtime-manifest.js +0 -12
  314. package/src/adapters/node/write-runtime-manifest.ts +0 -38
  315. package/src/adapters/shared/api-response.ts +0 -104
  316. package/src/adapters/shared/application-adapter.ts +0 -199
  317. package/src/adapters/shared/define-api-handler.ts +0 -66
  318. package/src/adapters/shared/explicit-static-route-matcher.ts +0 -140
  319. package/src/adapters/shared/file-route-middleware-pipeline.ts +0 -127
  320. package/src/adapters/shared/fs-server-response-factory.ts +0 -118
  321. package/src/adapters/shared/fs-server-response-matcher.ts +0 -205
  322. package/src/adapters/shared/hmr-entrypoint-registrar.ts +0 -149
  323. package/src/adapters/shared/hmr-html-response.ts +0 -52
  324. package/src/adapters/shared/render-context.ts +0 -120
  325. package/src/adapters/shared/runtime-bootstrap.d.ts +0 -38
  326. package/src/adapters/shared/runtime-bootstrap.js +0 -43
  327. package/src/adapters/shared/runtime-bootstrap.ts +0 -79
  328. package/src/adapters/shared/server-adapter.ts +0 -489
  329. package/src/adapters/shared/server-route-handler.ts +0 -153
  330. package/src/adapters/shared/server-static-builder.ts +0 -166
  331. package/src/build/build-adapter.ts +0 -361
  332. package/src/build/build-manifest.ts +0 -54
  333. package/src/build/build-types.ts +0 -83
  334. package/src/build/dev-build-coordinator.d.ts +0 -74
  335. package/src/build/dev-build-coordinator.js +0 -161
  336. package/src/build/dev-build-coordinator.ts +0 -221
  337. package/src/build/esbuild-build-adapter.d.ts +0 -72
  338. package/src/build/esbuild-build-adapter.js +0 -422
  339. package/src/build/esbuild-build-adapter.ts +0 -559
  340. package/src/build/runtime-build-executor.ts +0 -34
  341. package/src/build/runtime-specifier-alias-plugin.d.ts +0 -15
  342. package/src/build/runtime-specifier-alias-plugin.js +0 -31
  343. package/src/build/runtime-specifier-alias-plugin.ts +0 -58
  344. package/src/config/config-builder.ts +0 -706
  345. package/src/constants.ts +0 -54
  346. package/src/create-app.ts +0 -87
  347. package/src/dev/sc-server.ts +0 -143
  348. package/src/eco/component-render-context.d.ts +0 -105
  349. package/src/eco/component-render-context.js +0 -87
  350. package/src/eco/component-render-context.ts +0 -224
  351. package/src/eco/eco.ts +0 -242
  352. package/src/eco/eco.types.ts +0 -221
  353. package/src/eco/eco.utils.ts +0 -89
  354. package/src/eco/global-injector-map.ts +0 -112
  355. package/src/eco/lazy-injector-map.ts +0 -120
  356. package/src/eco/module-dependencies.ts +0 -75
  357. package/src/errors/http-error.ts +0 -72
  358. package/src/errors/index.ts +0 -2
  359. package/src/errors/locals-access-error.ts +0 -7
  360. package/src/global/app-logger.ts +0 -4
  361. package/src/hmr/client/hmr-runtime.ts +0 -152
  362. package/src/hmr/hmr-strategy.ts +0 -172
  363. package/src/hmr/hmr.postcss.test.e2e.ts +0 -41
  364. package/src/hmr/hmr.test.e2e.ts +0 -66
  365. package/src/hmr/strategies/default-hmr-strategy.ts +0 -60
  366. package/src/hmr/strategies/js-hmr-strategy.ts +0 -320
  367. package/src/index.browser.ts +0 -3
  368. package/src/index.ts +0 -5
  369. package/src/integrations/ghtml/ghtml-renderer.ts +0 -96
  370. package/src/integrations/ghtml/ghtml.plugin.ts +0 -32
  371. package/src/internal-types.ts +0 -232
  372. package/src/plugins/alias-resolver-plugin.ts +0 -63
  373. package/src/plugins/eco-component-meta-plugin.ts +0 -481
  374. package/src/plugins/integration-plugin.ts +0 -226
  375. package/src/plugins/processor.ts +0 -240
  376. package/src/plugins/runtime-capability.ts +0 -14
  377. package/src/public-types.ts +0 -1317
  378. package/src/route-renderer/component-graph/component-graph-executor.d.ts +0 -32
  379. package/src/route-renderer/component-graph/component-graph-executor.js +0 -31
  380. package/src/route-renderer/component-graph/component-graph-executor.ts +0 -84
  381. package/src/route-renderer/component-graph/component-graph.d.ts +0 -42
  382. package/src/route-renderer/component-graph/component-graph.js +0 -72
  383. package/src/route-renderer/component-graph/component-graph.ts +0 -159
  384. package/src/route-renderer/component-graph/component-marker.d.ts +0 -52
  385. package/src/route-renderer/component-graph/component-marker.js +0 -46
  386. package/src/route-renderer/component-graph/component-marker.ts +0 -117
  387. package/src/route-renderer/component-graph/component-reference.d.ts +0 -10
  388. package/src/route-renderer/component-graph/component-reference.js +0 -19
  389. package/src/route-renderer/component-graph/component-reference.ts +0 -29
  390. package/src/route-renderer/component-graph/marker-graph-resolver.d.ts +0 -77
  391. package/src/route-renderer/component-graph/marker-graph-resolver.js +0 -95
  392. package/src/route-renderer/component-graph/marker-graph-resolver.ts +0 -155
  393. package/src/route-renderer/orchestration/integration-renderer.ts +0 -790
  394. package/src/route-renderer/orchestration/render-execution.service.d.ts +0 -103
  395. package/src/route-renderer/orchestration/render-execution.service.js +0 -121
  396. package/src/route-renderer/orchestration/render-execution.service.ts +0 -230
  397. package/src/route-renderer/orchestration/render-preparation.service.d.ts +0 -121
  398. package/src/route-renderer/orchestration/render-preparation.service.js +0 -332
  399. package/src/route-renderer/orchestration/render-preparation.service.ts +0 -476
  400. package/src/route-renderer/page-loading/dependency-resolver.ts +0 -612
  401. package/src/route-renderer/page-loading/page-module-loader.ts +0 -181
  402. package/src/route-renderer/route-renderer.ts +0 -115
  403. package/src/router/client/link-intent.test.browser.ts +0 -51
  404. package/src/router/client/link-intent.ts +0 -92
  405. package/src/router/client/navigation-coordinator.ts +0 -433
  406. package/src/router/server/fs-router-scanner.d.ts +0 -41
  407. package/src/router/server/fs-router-scanner.js +0 -156
  408. package/src/router/server/fs-router-scanner.ts +0 -219
  409. package/src/router/server/fs-router.d.ts +0 -26
  410. package/src/router/server/fs-router.js +0 -100
  411. package/src/router/server/fs-router.ts +0 -122
  412. package/src/services/assets/asset-processing-service/asset-processing.service.ts +0 -401
  413. package/src/services/assets/asset-processing-service/asset.factory.ts +0 -105
  414. package/src/services/assets/asset-processing-service/assets.types.ts +0 -113
  415. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.ts +0 -95
  416. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.ts +0 -78
  417. package/src/services/assets/asset-processing-service/index.ts +0 -5
  418. package/src/services/assets/asset-processing-service/processor.interface.ts +0 -27
  419. package/src/services/assets/asset-processing-service/processor.registry.ts +0 -18
  420. package/src/services/assets/asset-processing-service/processors/base/base-processor.ts +0 -82
  421. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.ts +0 -95
  422. package/src/services/assets/asset-processing-service/processors/index.ts +0 -5
  423. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.ts +0 -66
  424. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.ts +0 -88
  425. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.ts +0 -85
  426. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.ts +0 -27
  427. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.ts +0 -80
  428. package/src/services/assets/browser-bundle.service.ts +0 -53
  429. package/src/services/cache/cache.types.ts +0 -126
  430. package/src/services/cache/index.ts +0 -18
  431. package/src/services/cache/memory-cache-store.ts +0 -130
  432. package/src/services/cache/page-cache-service.ts +0 -202
  433. package/src/services/cache/page-request-cache-coordinator.service.ts +0 -131
  434. package/src/services/html/html-rewriter-provider.service.ts +0 -103
  435. package/src/services/html/html-transformer.service.ts +0 -279
  436. package/src/services/invalidation/development-invalidation.service.ts +0 -261
  437. package/src/services/module-loading/app-server-module-transpiler.service.ts +0 -52
  438. package/src/services/module-loading/page-module-import.service.ts +0 -200
  439. package/src/services/module-loading/server-loader.service.d.ts +0 -96
  440. package/src/services/module-loading/server-loader.service.js +0 -32
  441. package/src/services/module-loading/server-loader.service.ts +0 -130
  442. package/src/services/module-loading/server-module-transpiler.service.ts +0 -105
  443. package/src/services/runtime-manifest/node-runtime-manifest.service.d.ts +0 -35
  444. package/src/services/runtime-manifest/node-runtime-manifest.service.js +0 -60
  445. package/src/services/runtime-manifest/node-runtime-manifest.service.ts +0 -101
  446. package/src/services/runtime-state/dev-graph.service.ts +0 -217
  447. package/src/services/runtime-state/entrypoint-dependency-graph.service.ts +0 -136
  448. package/src/services/runtime-state/runtime-specifier-registry.service.d.ts +0 -69
  449. package/src/services/runtime-state/runtime-specifier-registry.service.js +0 -37
  450. package/src/services/runtime-state/runtime-specifier-registry.service.ts +0 -96
  451. package/src/services/runtime-state/server-invalidation-state.service.ts +0 -68
  452. package/src/services/validation/schema-validation-service.ts +0 -204
  453. package/src/services/validation/standard-schema.types.ts +0 -68
  454. package/src/static-site-generator/static-site-generator.ts +0 -462
  455. package/src/utils/css.d.ts +0 -1
  456. package/src/utils/css.js +0 -7
  457. package/src/utils/css.ts +0 -5
  458. package/src/utils/deep-merge.ts +0 -47
  459. package/src/utils/hash.ts +0 -5
  460. package/src/utils/html.ts +0 -1
  461. package/src/utils/invariant.ts +0 -15
  462. package/src/utils/locals-utils.ts +0 -37
  463. package/src/utils/parse-cli-args.ts +0 -83
  464. package/src/utils/path-utils.module.ts +0 -14
  465. package/src/utils/resolve-work-dir.ts +0 -45
  466. package/src/utils/runtime.ts +0 -44
  467. package/src/utils/server-utils.module.ts +0 -67
  468. package/src/watchers/project-watcher.test-helpers.ts +0 -41
  469. package/src/watchers/project-watcher.ts +0 -363
  470. /package/src/{internal-types.js → adapters/shared/runtime-host.js} +0 -0
  471. /package/src/{public-types.js → adapters/shared/static-preview-host.js} +0 -0
  472. /package/src/{constants.d.ts → config/constants.d.ts} +0 -0
  473. /package/src/{constants.js → config/constants.js} +0 -0
@@ -1,66 +0,0 @@
1
- import { test, expect } from '@playwright/test';
2
- import { readFileSync } from 'node:fs';
3
- import { writeFile } from 'node:fs/promises';
4
- import { resolve } from 'node:path';
5
-
6
- /**
7
- * HMR E2E Tests
8
- *
9
- * True end-to-end tests for Hot Module Replacement using Playwright.
10
- * These tests modify actual source files and verify the browser updates.
11
- *
12
- * Run with: bunx playwright test packages/core/src/hmr/hmr.e2e.test.ts
13
- */
14
-
15
- const FIXTURE_DIR = resolve(process.cwd(), 'packages/core/__fixtures__/app');
16
- const TEST_CSS_FILE = resolve(FIXTURE_DIR, 'src/pages/index.css');
17
-
18
- test.describe('HMR E2E', () => {
19
- test('should load page with .main-title element', async ({ page }) => {
20
- await page.goto('/', { waitUntil: 'networkidle' });
21
- const title = page.locator('.main-title').first();
22
- await expect(title).toBeVisible();
23
- });
24
-
25
- test('should connect to HMR WebSocket', async ({ page }) => {
26
- const socketPromise = page.waitForEvent('websocket', {
27
- predicate: (socket) => socket.url().endsWith('/_hmr'),
28
- timeout: 10000,
29
- });
30
-
31
- await page.goto('/', { waitUntil: 'networkidle' });
32
- const socket = await socketPromise;
33
-
34
- expect(socket.url()).toMatch(/\/_hmr$/);
35
- });
36
-
37
- test('should fall back to a full page reload when raw CSS file changes', async ({ page }) => {
38
- const originalCss = readFileSync(TEST_CSS_FILE, 'utf-8');
39
- const title = page.locator('.main-title').first();
40
-
41
- try {
42
- await page.goto('/', { waitUntil: 'networkidle' });
43
- await expect(title).toBeVisible();
44
-
45
- const initialColor = await title.evaluate((el) => getComputedStyle(el).color);
46
- expect(initialColor).toBeTruthy();
47
-
48
- const modifiedCss = originalCss.replace('.main-title {', '.main-title {\n\tcolor: rgb(255, 0, 0);');
49
- const reloadPromise = page.waitForEvent('framenavigated', {
50
- predicate: (frame) => frame === page.mainFrame(),
51
- timeout: 10000,
52
- });
53
-
54
- await writeFile(TEST_CSS_FILE, modifiedCss, { flush: true });
55
-
56
- await reloadPromise;
57
- await page.waitForLoadState('networkidle');
58
-
59
- await expect
60
- .poll(async () => title.evaluate((el) => getComputedStyle(el).color), { timeout: 10000 })
61
- .toBe('rgb(255, 0, 0)');
62
- } finally {
63
- await writeFile(TEST_CSS_FILE, originalCss, { flush: true });
64
- }
65
- });
66
- });
@@ -1,60 +0,0 @@
1
- /**
2
- * Default HMR Strategy
3
- *
4
- * Fallback strategy for file types that don't have specialized handling.
5
- * Triggers a full page reload to ensure changes are reflected.
6
- *
7
- * @module
8
- */
9
-
10
- import { HmrStrategy, HmrStrategyType, type HmrAction } from '../hmr-strategy';
11
-
12
- /**
13
- * Default fallback strategy for unhandled file types.
14
- *
15
- * This strategy matches all files and triggers a full page reload.
16
- * It has the lowest priority (FALLBACK) and acts as a catch-all when
17
- * no other strategy matches the changed file.
18
- *
19
- * @remarks
20
- * This strategy ensures that all file changes result in some action,
21
- * even if we don't have specialized handling for that file type.
22
- *
23
- * @example
24
- * ```typescript
25
- * const strategy = new DefaultHmrStrategy();
26
- * const action = await strategy.process('/path/to/unknown.file');
27
- * ```
28
- */
29
- export class DefaultHmrStrategy extends HmrStrategy {
30
- readonly type = HmrStrategyType.FALLBACK;
31
-
32
- /**
33
- * Matches all file paths.
34
- *
35
- * @param _filePath - Absolute path to the changed file (unused)
36
- * @returns Always returns true as this is a catch-all strategy
37
- */
38
- matches(_filePath: string): boolean {
39
- return true;
40
- }
41
-
42
- /**
43
- * Processes a file change by triggering a full page reload.
44
- *
45
- * @param filePath - Absolute path to the changed file
46
- * @returns Action to broadcast a reload event
47
- */
48
- async process(filePath: string): Promise<HmrAction> {
49
- return {
50
- type: 'broadcast',
51
- events: [
52
- {
53
- type: 'reload',
54
- path: filePath,
55
- message: 'fallback-strategy',
56
- },
57
- ],
58
- };
59
- }
60
- }
@@ -1,320 +0,0 @@
1
- /**
2
- * JavaScript HMR Strategy
3
- *
4
- * Handles hot module replacement for JavaScript and TypeScript entrypoints.
5
- * Bundles files, inspects the emitted output, and decides whether the browser
6
- * can hot-accept the change or must reload.
7
- *
8
- * @module
9
- */
10
-
11
- import path from 'node:path';
12
- import { fileSystem } from '@ecopages/file-system';
13
- import { HmrStrategy, HmrStrategyType, type HmrAction } from '../hmr-strategy';
14
- import { appLogger } from '../../global/app-logger';
15
- import type { EcoBuildPlugin } from '../../build/build-types.ts';
16
- import type { BrowserBundleExecutor } from '../../services/assets/browser-bundle.service.ts';
17
- import type { EntrypointDependencyGraph } from '../../services/runtime-state/entrypoint-dependency-graph.service.ts';
18
-
19
- /**
20
- * Context interface providing access to HmrManager state.
21
- * Required for JsHmrStrategy to access registered entrypoints and configuration.
22
- */
23
- export interface JsHmrContext {
24
- /**
25
- * Map of registered entrypoints to their output URLs.
26
- */
27
- getWatchedFiles(): Map<string, string>;
28
-
29
- /**
30
- * Map of bare specifiers to vendor URLs for import resolution.
31
- */
32
- getSpecifierMap(): Map<string, string>;
33
-
34
- getEntrypointDependencyGraph(): EntrypointDependencyGraph;
35
-
36
- /**
37
- * Directory where HMR bundles are written.
38
- */
39
- getDistDir(): string;
40
-
41
- /**
42
- * Build plugins to use during bundling.
43
- */
44
- getPlugins(): EcoBuildPlugin[];
45
-
46
- /**
47
- * Absolute path to the source directory.
48
- */
49
- getSrcDir(): string;
50
-
51
- /**
52
- * Absolute path to the pages directory.
53
- */
54
- getPagesDir(): string;
55
-
56
- /**
57
- * Absolute path to the layouts directory.
58
- */
59
- getLayoutsDir(): string;
60
-
61
- /**
62
- * All configured route-template extensions across integrations.
63
- */
64
- getTemplateExtensions(): string[];
65
-
66
- /**
67
- * Browser bundler used to rebuild changed entrypoints.
68
- */
69
- getBrowserBundleService(): BrowserBundleExecutor;
70
-
71
- /**
72
- * Returns whether a watched entrypoint should be rebuilt by the generic JS strategy.
73
- *
74
- * @remarks
75
- * Integrations with higher-priority HMR strategies can use this to keep the
76
- * generic JS strategy from overwriting their emitted entrypoints when a shared
77
- * dependency changes.
78
- */
79
- shouldProcessEntrypoint?(entrypointPath: string): boolean;
80
- }
81
-
82
- /**
83
- * Strategy for handling JavaScript/TypeScript file changes with hot reloading.
84
- *
85
- * The processing steps are:
86
- * 1. Check if any entrypoints are registered
87
- * 2. Rebuild impacted entrypoints, or all watched entrypoints when no runtime
88
- * dependency graph is available
89
- * 3. Emit rebuilt entrypoint bundles for browser delivery
90
- * 4. Inject generic HMR boilerplate
91
- * 5. Broadcast update events for each rebuilt entrypoint
92
- *
93
- * @remarks
94
- * Node can provide dependency-graph metadata, so this strategy can rebuild only
95
- * the entrypoints impacted by a changed dependency. Runtimes that do not expose
96
- * that metadata intentionally keep the rebuild-all fallback.
97
- *
98
- * @see https://bun.sh/docs/runtime/transpiler
99
- *
100
- * @example
101
- * ```typescript
102
- * const context = {
103
- * getWatchedFiles: () => watchedFilesMap,
104
- * getSpecifierMap: () => specifierMap,
105
- * getDistDir: () => '/path/to/dist/_hmr',
106
- * getPlugins: () => [],
107
- * getSrcDir: () => '/path/to/src'
108
- * };
109
- * const strategy = new JsHmrStrategy(context);
110
- * ```
111
- */
112
- export class JsHmrStrategy extends HmrStrategy {
113
- readonly type = HmrStrategyType.SCRIPT;
114
- private context: JsHmrContext;
115
-
116
- constructor(context: JsHmrContext) {
117
- super();
118
- this.context = context;
119
- }
120
-
121
- /**
122
- * Determines if the file is a JS/TS file that could affect registered entrypoints.
123
- *
124
- * Matches if:
125
- * 1. There are registered entrypoints to rebuild
126
- * 2. The changed file is a JS/TS file in the src directory
127
- *
128
- * @param filePath - Absolute path to the changed file
129
- * @returns True if this file should trigger entrypoint rebuilds
130
- */
131
- matches(filePath: string): boolean {
132
- const watchedFiles = this.context.getWatchedFiles();
133
- const isJsTs = /\.(ts|tsx|js|jsx)$/.test(filePath);
134
- const isInSrc = filePath.startsWith(this.context.getSrcDir());
135
- const isRouteTemplate =
136
- filePath.startsWith(this.context.getPagesDir()) || filePath.startsWith(this.context.getLayoutsDir());
137
- const isIntegrationTemplate =
138
- isRouteTemplate && this.context.getTemplateExtensions().some((extension) => filePath.endsWith(extension));
139
-
140
- if (watchedFiles.size === 0) {
141
- return false;
142
- }
143
-
144
- if (!isJsTs || !isInSrc) {
145
- return false;
146
- }
147
-
148
- if (isIntegrationTemplate) {
149
- return false;
150
- }
151
-
152
- if (watchedFiles.has(filePath)) {
153
- return true;
154
- }
155
-
156
- const entrypointDependencyGraph = this.context.getEntrypointDependencyGraph();
157
- if (entrypointDependencyGraph.supportsSelectiveInvalidation()) {
158
- return entrypointDependencyGraph.getDependencyEntrypoints(filePath).size > 0;
159
- }
160
-
161
- return true;
162
- }
163
-
164
- /**
165
- * Processes a file change by rebuilding affected entrypoints.
166
- *
167
- * @param filePath - Absolute path to the changed file
168
- *
169
- * @remarks
170
- * If runtime-specific dependency graph hooks are unavailable, this strategy
171
- * falls back to rebuilding all watched entrypoints.
172
- * When multiple entrypoints are impacted they are bundled in a single esbuild
173
- * invocation to share AST parsing and chunk deduplication.
174
- * @returns Action to broadcast update events
175
- */
176
- async process(filePath: string): Promise<HmrAction> {
177
- appLogger.debug(`[JsHmrStrategy] Processing ${filePath}`);
178
- const watchedFiles = this.context.getWatchedFiles();
179
-
180
- if (watchedFiles.size === 0) {
181
- appLogger.debug(`[JsHmrStrategy] No watched files to rebuild`);
182
- return { type: 'none' };
183
- }
184
-
185
- const dependencyHits = this.context.getEntrypointDependencyGraph().getDependencyEntrypoints(filePath);
186
- const hasDependencyHit = dependencyHits.size > 0;
187
- const impactedEntrypoints = hasDependencyHit
188
- ? Array.from(dependencyHits).filter((entrypoint) => watchedFiles.has(entrypoint))
189
- : Array.from(watchedFiles.keys());
190
- const buildableEntrypoints = impactedEntrypoints.filter(
191
- (entrypoint) => this.context.shouldProcessEntrypoint?.(entrypoint) ?? true,
192
- );
193
-
194
- if (!hasDependencyHit) {
195
- appLogger.debug('[JsHmrStrategy] Dependency graph miss, rebuilding all watched entrypoints');
196
- }
197
-
198
- if (buildableEntrypoints.length === 0) {
199
- return { type: 'none' };
200
- }
201
-
202
- const buildResult = await this.bundleEntrypoints(buildableEntrypoints);
203
-
204
- if (!buildResult.success) {
205
- return { type: 'none' };
206
- }
207
-
208
- const updates: string[] = [];
209
- let reloadRequired = false;
210
-
211
- for (const entrypoint of buildableEntrypoints) {
212
- const outputUrl = watchedFiles.get(entrypoint);
213
- if (!outputUrl) continue;
214
-
215
- if (buildResult.dependencies) {
216
- const entrypointDeps = buildResult.dependencies.get(path.resolve(entrypoint)) ?? [];
217
- this.context.getEntrypointDependencyGraph().setEntrypointDependencies(entrypoint, entrypointDeps);
218
- }
219
-
220
- const srcDir = this.context.getSrcDir();
221
- const relativePath = path.relative(srcDir, entrypoint);
222
- const relativePathJs = relativePath.replace(/\.(tsx?|jsx?|mdx?)$/, '.js');
223
- const outputPath = path.join(this.context.getDistDir(), relativePathJs);
224
-
225
- const result = await this.processOutput(outputPath, outputUrl);
226
- if (result.success) {
227
- updates.push(outputUrl);
228
- if (result.requiresReload) {
229
- reloadRequired = true;
230
- }
231
- }
232
- }
233
-
234
- if (updates.length > 0) {
235
- if (reloadRequired) {
236
- appLogger.debug(`[JsHmrStrategy] Full reload required (no HMR accept found)`);
237
- return {
238
- type: 'broadcast',
239
- events: [{ type: 'reload' }],
240
- };
241
- }
242
-
243
- return {
244
- type: 'broadcast',
245
- events: updates.map((p) => ({
246
- type: 'update',
247
- path: p,
248
- timestamp: Date.now(),
249
- })),
250
- };
251
- }
252
-
253
- return { type: 'none' };
254
- }
255
-
256
- /**
257
- * Bundles one or more entrypoints in a single esbuild invocation.
258
- * Uses the source directory as the output base so that the directory structure
259
- * is preserved under the HMR dist folder.
260
- */
261
- private async bundleEntrypoints(
262
- entrypoints: string[],
263
- ): Promise<{ success: boolean; dependencies?: Map<string, string[]> }> {
264
- try {
265
- const result = await this.context.getBrowserBundleService().bundle({
266
- profile: 'hmr-entrypoint',
267
- entrypoints,
268
- outdir: this.context.getDistDir(),
269
- outbase: this.context.getSrcDir(),
270
- naming: '[dir]/[name]',
271
- plugins: this.context.getPlugins(),
272
- minify: false,
273
- });
274
-
275
- if (!result.success) {
276
- appLogger.error('[JsHmrStrategy] Batched build failed:', result.logs);
277
- return { success: false };
278
- }
279
-
280
- const dependencies = new Map<string, string[]>();
281
- if (result.dependencyGraph?.entrypoints) {
282
- for (const [entrypoint, deps] of Object.entries(result.dependencyGraph.entrypoints)) {
283
- dependencies.set(path.resolve(entrypoint), deps);
284
- }
285
- }
286
-
287
- return { success: true, dependencies };
288
- } catch (error) {
289
- appLogger.error('[JsHmrStrategy] Error in batched build:', error as Error);
290
- return { success: false };
291
- }
292
- }
293
-
294
- /**
295
- * Processes bundled output and determines whether the browser can hot-accept
296
- * the update or must fall back to a full reload.
297
- *
298
- * @param filepath - Path to the bundled output file
299
- * @param url - URL path for the bundled file
300
- * @returns True if processing was successful and update should be broadcast
301
- */
302
- private async processOutput(filepath: string, url: string): Promise<{ success: boolean; requiresReload: boolean }> {
303
- try {
304
- const code = await fileSystem.readFile(filepath);
305
-
306
- if (code.includes('/* [ecopages] hmr */')) {
307
- // Legacy safety: previously processed bundles already carry the marker.
308
- return { success: true, requiresReload: !code.includes('import.meta.hot.accept') };
309
- }
310
-
311
- appLogger.debug(`[JsHmrStrategy] Processed ${url}`);
312
-
313
- const hasHmrAccept = code.includes('import.meta.hot.accept');
314
- return { success: true, requiresReload: !hasHmrAccept };
315
- } catch (error) {
316
- appLogger.error(`[JsHmrStrategy] Error processing output for ${url}:`, error as Error);
317
- return { success: false, requiresReload: false };
318
- }
319
- }
320
- }
@@ -1,3 +0,0 @@
1
- export type * from './public-types.ts';
2
- export type * from './eco/eco.types.ts';
3
- export { eco } from './eco/eco.ts';
package/src/index.ts DELETED
@@ -1,5 +0,0 @@
1
- export type * from './public-types.ts';
2
- export type * from './eco/eco.types.ts';
3
- export { eco } from './eco/eco.ts';
4
- export { EcopagesApp, createApp, type EcopagesAppOptions } from './create-app.ts';
5
- export { defineApiHandler, defineGroupHandler, type GroupHandler } from './adapters/shared/define-api-handler.ts';
@@ -1,96 +0,0 @@
1
- /**
2
- * This module contains the ghtml renderer
3
- * @module
4
- */
5
-
6
- import type {
7
- EcoComponent,
8
- EcoPagesElement,
9
- IntegrationRendererRenderOptions,
10
- PageMetadataProps,
11
- RouteRendererBody,
12
- } from '../../public-types.ts';
13
- import {
14
- IntegrationRenderer,
15
- type RenderToResponseContext,
16
- } from '../../route-renderer/orchestration/integration-renderer.ts';
17
- import { GHTML_PLUGIN_NAME } from './ghtml.plugin.ts';
18
-
19
- /**
20
- * A renderer for the ghtml integration.
21
- * It renders a page using the HtmlTemplate and Page components.
22
- */
23
- export class GhtmlRenderer extends IntegrationRenderer<EcoPagesElement> {
24
- name = GHTML_PLUGIN_NAME;
25
-
26
- async render({
27
- params,
28
- query,
29
- props,
30
- locals,
31
- pageLocals,
32
- metadata,
33
- Page,
34
- Layout,
35
- HtmlTemplate,
36
- }: IntegrationRendererRenderOptions): Promise<RouteRendererBody> {
37
- try {
38
- const pageContent = await Page({ params, query, ...props, locals: pageLocals });
39
- const children =
40
- Layout && typeof Layout === 'function' ? await Layout({ children: pageContent, locals }) : pageContent;
41
- const body = await HtmlTemplate({
42
- metadata,
43
- children,
44
- pageProps: props || {},
45
- });
46
-
47
- return this.DOC_TYPE + body;
48
- } catch (error) {
49
- throw this.createRenderError('Error rendering page', error);
50
- }
51
- }
52
-
53
- async renderToResponse<P = Record<string, unknown>>(
54
- view: EcoComponent<P>,
55
- props: P,
56
- ctx: RenderToResponseContext,
57
- ): Promise<Response> {
58
- try {
59
- const Layout = view.config?.layout as
60
- | ((props: { children: EcoPagesElement } & Record<string, unknown>) => Promise<EcoPagesElement>)
61
- | undefined;
62
-
63
- const viewFn = view as (props: P) => Promise<EcoPagesElement>;
64
- const pageContent = await viewFn(props);
65
-
66
- let body: string;
67
- if (ctx.partial) {
68
- body = pageContent as string;
69
- } else {
70
- const children = Layout ? await Layout({ children: pageContent }) : pageContent;
71
-
72
- const HtmlTemplate = await this.getHtmlTemplate();
73
- const metadata: PageMetadataProps = view.metadata
74
- ? await view.metadata({
75
- params: {},
76
- query: {},
77
- props: props as Record<string, unknown>,
78
- appConfig: this.appConfig,
79
- })
80
- : this.appConfig.defaultMetadata;
81
-
82
- body =
83
- this.DOC_TYPE +
84
- (await HtmlTemplate({
85
- metadata,
86
- children: children as EcoPagesElement,
87
- pageProps: props as Record<string, unknown>,
88
- }));
89
- }
90
-
91
- return this.createHtmlResponse(body, ctx);
92
- } catch (error) {
93
- throw this.createRenderError('Error rendering view', error);
94
- }
95
- }
96
- }
@@ -1,32 +0,0 @@
1
- import { IntegrationPlugin, type IntegrationPluginConfig } from '../../plugins/integration-plugin';
2
- import { GhtmlRenderer } from './ghtml-renderer';
3
-
4
- /**
5
- * The name of the ghtml plugin
6
- */
7
- export const GHTML_PLUGIN_NAME = 'ghtml';
8
-
9
- /**
10
- * The Ghtml plugin class
11
- * This plugin provides support for ghtml components in Ecopages
12
- */
13
- export class GhtmlPlugin extends IntegrationPlugin {
14
- renderer = GhtmlRenderer;
15
-
16
- constructor(options?: Omit<IntegrationPluginConfig, 'name'>) {
17
- super({
18
- name: GHTML_PLUGIN_NAME,
19
- extensions: ['.ghtml.ts', '.ghtml.tsx', '.ghtml'],
20
- ...options,
21
- });
22
- }
23
- }
24
-
25
- /**
26
- * Factory function to create a Ghtml plugin instance
27
- * @param options Configuration options for the Ghtml plugin
28
- * @returns A new GhtmlPlugin instance
29
- */
30
- export function ghtmlPlugin(options?: Omit<IntegrationPluginConfig, 'name'>): GhtmlPlugin {
31
- return new GhtmlPlugin(options);
32
- }