@ecopages/core 0.2.0-alpha.3 → 0.2.0-alpha.30

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 (436) hide show
  1. package/CHANGELOG.md +66 -66
  2. package/README.md +268 -14
  3. package/package.json +72 -108
  4. package/src/adapters/README.md +39 -0
  5. package/src/adapters/abstract/application-adapter.d.ts +28 -2
  6. package/src/adapters/abstract/application-adapter.js +14 -2
  7. package/src/adapters/abstract/router-adapter.d.ts +1 -1
  8. package/src/adapters/abstract/server-adapter.d.ts +2 -2
  9. package/src/adapters/bun/client-bridge.d.ts +1 -1
  10. package/src/adapters/bun/create-app.d.ts +5 -12
  11. package/src/adapters/bun/create-app.js +43 -7
  12. package/src/adapters/bun/hmr-manager.d.ts +72 -26
  13. package/src/adapters/bun/hmr-manager.js +153 -81
  14. package/src/adapters/bun/index.d.ts +2 -3
  15. package/src/adapters/bun/index.js +3 -3
  16. package/src/adapters/bun/server-adapter.d.ts +5 -5
  17. package/src/adapters/bun/server-adapter.js +63 -38
  18. package/src/adapters/bun/server-lifecycle.d.ts +28 -17
  19. package/src/adapters/bun/server-lifecycle.js +34 -62
  20. package/src/{create-app.d.ts → adapters/create-app.d.ts} +9 -6
  21. package/src/{create-app.js → adapters/create-app.js} +4 -4
  22. package/src/adapters/index.d.ts +2 -6
  23. package/src/adapters/index.js +2 -8
  24. package/src/adapters/node/create-app.d.ts +6 -9
  25. package/src/adapters/node/create-app.js +12 -6
  26. package/src/adapters/node/node-client-bridge.d.ts +1 -1
  27. package/src/adapters/node/node-hmr-manager.d.ts +79 -21
  28. package/src/adapters/node/node-hmr-manager.js +167 -114
  29. package/src/adapters/node/server-adapter.d.ts +7 -35
  30. package/src/adapters/node/server-adapter.js +55 -107
  31. package/src/adapters/node/static-content-server.d.ts +37 -1
  32. package/src/adapters/node/static-content-server.js +29 -1
  33. package/src/adapters/shared/application-adapter.d.ts +1 -1
  34. package/src/{define-api-handler.d.ts → adapters/shared/define-api-handler.d.ts} +1 -1
  35. package/src/adapters/shared/explicit-static-render-preparation.d.ts +25 -0
  36. package/src/adapters/shared/explicit-static-render-preparation.js +26 -0
  37. package/src/adapters/shared/explicit-static-route-matcher.d.ts +7 -4
  38. package/src/adapters/shared/explicit-static-route-matcher.js +14 -13
  39. package/src/adapters/shared/file-route-middleware-pipeline.d.ts +7 -10
  40. package/src/adapters/shared/file-route-middleware-pipeline.js +3 -11
  41. package/src/adapters/shared/fs-server-response-factory.d.ts +14 -10
  42. package/src/adapters/shared/fs-server-response-factory.js +11 -27
  43. package/src/adapters/shared/fs-server-response-matcher.d.ts +20 -16
  44. package/src/adapters/shared/fs-server-response-matcher.js +76 -45
  45. package/src/adapters/shared/hmr-entrypoint-registrar.d.ts +55 -0
  46. package/src/adapters/shared/hmr-entrypoint-registrar.js +87 -0
  47. package/src/adapters/shared/hmr-html-response.d.ts +22 -0
  48. package/src/adapters/shared/hmr-html-response.js +32 -0
  49. package/src/adapters/shared/render-context.d.ts +4 -3
  50. package/src/adapters/shared/render-context.js +6 -3
  51. package/src/adapters/shared/runtime-bootstrap.d.ts +38 -0
  52. package/src/adapters/shared/runtime-bootstrap.js +43 -0
  53. package/src/adapters/shared/server-adapter.d.ts +33 -12
  54. package/src/adapters/shared/server-adapter.js +208 -132
  55. package/src/adapters/shared/server-route-handler.d.ts +5 -5
  56. package/src/adapters/shared/server-route-handler.js +7 -16
  57. package/src/adapters/shared/server-static-builder.d.ts +41 -8
  58. package/src/adapters/shared/server-static-builder.js +65 -11
  59. package/src/build/README.md +107 -0
  60. package/src/build/build-adapter.d.ts +168 -3
  61. package/src/build/build-adapter.js +604 -16
  62. package/src/build/build-manifest.d.ts +27 -0
  63. package/src/build/build-manifest.js +30 -0
  64. package/src/build/dev-build-coordinator.d.ts +72 -0
  65. package/src/build/dev-build-coordinator.js +154 -0
  66. package/src/build/esbuild-build-adapter.d.ts +15 -6
  67. package/src/build/esbuild-build-adapter.js +189 -74
  68. package/src/build/runtime-build-executor.d.ts +14 -0
  69. package/src/build/runtime-build-executor.js +22 -0
  70. package/src/build/runtime-specifier-alias-plugin.d.ts +15 -0
  71. package/src/build/runtime-specifier-alias-plugin.js +35 -0
  72. package/src/build/runtime-specifier-aliases.d.ts +5 -0
  73. package/src/build/runtime-specifier-aliases.js +95 -0
  74. package/src/config/README.md +36 -0
  75. package/src/config/config-builder.d.ts +54 -29
  76. package/src/config/config-builder.js +255 -49
  77. package/src/{constants.d.ts → config/constants.d.ts} +13 -0
  78. package/src/{constants.js → config/constants.js} +4 -0
  79. package/src/declarations.d.ts +19 -14
  80. package/src/dev/host-runtime.d.ts +10 -0
  81. package/src/dev/host-runtime.js +24 -0
  82. package/src/dev/sc-server.d.ts +1 -1
  83. package/src/dev/sc-server.js +1 -1
  84. package/src/eco/README.md +70 -16
  85. package/src/eco/eco.browser.d.ts +2 -0
  86. package/src/eco/eco.browser.js +83 -0
  87. package/src/eco/eco.js +32 -57
  88. package/src/eco/eco.types.d.ts +14 -6
  89. package/src/eco/eco.utils.d.ts +1 -40
  90. package/src/eco/eco.utils.js +5 -35
  91. package/src/eco/global-injector-map.d.ts +3 -3
  92. package/src/eco/global-injector-map.js +2 -2
  93. package/src/eco/lazy-injector-map.d.ts +2 -2
  94. package/src/errors/index.d.ts +1 -0
  95. package/src/errors/index.js +3 -1
  96. package/src/hmr/README.md +26 -0
  97. package/src/hmr/client/hmr-runtime.d.ts +1 -6
  98. package/src/hmr/client/hmr-runtime.js +38 -7
  99. package/src/hmr/hmr-strategy.d.ts +16 -13
  100. package/src/hmr/hmr-strategy.js +22 -7
  101. package/src/hmr/hmr.postcss.test.e2e.d.ts +1 -0
  102. package/src/hmr/hmr.postcss.test.e2e.js +31 -0
  103. package/src/hmr/hmr.test.e2e.js +26 -33
  104. package/src/hmr/strategies/default-hmr-strategy.d.ts +2 -2
  105. package/src/hmr/strategies/default-hmr-strategy.js +1 -1
  106. package/src/hmr/strategies/js-hmr-strategy.d.ts +46 -48
  107. package/src/hmr/strategies/js-hmr-strategy.js +64 -74
  108. package/src/index.browser.d.ts +2 -2
  109. package/src/index.browser.js +1 -1
  110. package/src/index.d.ts +4 -3
  111. package/src/index.js +16 -5
  112. package/src/integrations/ghtml/ghtml-renderer.d.ts +3 -2
  113. package/src/integrations/ghtml/ghtml-renderer.js +27 -30
  114. package/src/integrations/ghtml/ghtml.constants.d.ts +1 -0
  115. package/src/integrations/ghtml/ghtml.constants.js +4 -0
  116. package/src/integrations/ghtml/ghtml.plugin.d.ts +2 -6
  117. package/src/integrations/ghtml/ghtml.plugin.js +3 -4
  118. package/src/plugins/README.md +35 -0
  119. package/src/plugins/alias-resolver-plugin.js +17 -3
  120. package/src/plugins/eco-component-meta-plugin.d.ts +14 -1
  121. package/src/plugins/eco-component-meta-plugin.js +27 -22
  122. package/src/plugins/foreign-jsx-override-plugin.d.ts +31 -0
  123. package/src/plugins/foreign-jsx-override-plugin.js +35 -0
  124. package/src/plugins/integration-plugin.d.ts +142 -29
  125. package/src/plugins/integration-plugin.js +103 -14
  126. package/src/plugins/processor.d.ts +17 -2
  127. package/src/plugins/processor.js +22 -3
  128. package/src/plugins/runtime-capability.d.ts +9 -0
  129. package/src/plugins/source-transform.d.ts +46 -0
  130. package/src/plugins/source-transform.js +71 -0
  131. package/src/route-renderer/GRAPH.md +83 -325
  132. package/src/route-renderer/README.md +73 -90
  133. package/src/route-renderer/orchestration/component-render-context.d.ts +89 -0
  134. package/src/route-renderer/orchestration/component-render-context.js +147 -0
  135. package/src/route-renderer/orchestration/declared-ownership-graph.d.ts +18 -0
  136. package/src/route-renderer/orchestration/declared-ownership-graph.js +34 -0
  137. package/src/route-renderer/orchestration/foreign-subtree-execution.service.d.ts +108 -0
  138. package/src/route-renderer/orchestration/foreign-subtree-execution.service.js +206 -0
  139. package/src/route-renderer/orchestration/integration-renderer.d.ts +516 -0
  140. package/src/route-renderer/orchestration/integration-renderer.js +909 -0
  141. package/src/route-renderer/orchestration/ownership-planning.service.d.ts +24 -0
  142. package/src/route-renderer/orchestration/ownership-planning.service.js +63 -0
  143. package/src/route-renderer/orchestration/ownership-validation.service.d.ts +29 -0
  144. package/src/route-renderer/orchestration/ownership-validation.service.js +53 -0
  145. package/src/route-renderer/orchestration/processed-asset-dedupe.d.ts +2 -0
  146. package/src/route-renderer/orchestration/processed-asset-dedupe.js +23 -0
  147. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.d.ts +90 -0
  148. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.js +158 -0
  149. package/src/route-renderer/orchestration/render-output.utils.d.ts +66 -0
  150. package/src/route-renderer/orchestration/render-output.utils.js +171 -0
  151. package/src/route-renderer/orchestration/route-render-orchestrator.d.ts +120 -0
  152. package/src/route-renderer/orchestration/route-render-orchestrator.js +388 -0
  153. package/src/route-renderer/orchestration/template-serialization.d.ts +38 -0
  154. package/src/route-renderer/orchestration/template-serialization.js +45 -0
  155. package/src/route-renderer/page-loading/component-dependency-collection.d.ts +37 -0
  156. package/src/route-renderer/page-loading/component-dependency-collection.js +132 -0
  157. package/src/route-renderer/page-loading/declared-asset-collection.d.ts +24 -0
  158. package/src/route-renderer/page-loading/declared-asset-collection.js +106 -0
  159. package/src/route-renderer/{dependency-resolver.d.ts → page-loading/dependency-resolver.d.ts} +15 -4
  160. package/src/route-renderer/page-loading/dependency-resolver.js +115 -0
  161. package/src/route-renderer/page-loading/ecopages-virtual-imports.d.ts +11 -0
  162. package/src/route-renderer/page-loading/ecopages-virtual-imports.js +57 -0
  163. package/src/route-renderer/page-loading/lazy-entry-collection.d.ts +45 -0
  164. package/src/route-renderer/page-loading/lazy-entry-collection.js +105 -0
  165. package/src/route-renderer/page-loading/lazy-trigger-planning.d.ts +19 -0
  166. package/src/route-renderer/page-loading/lazy-trigger-planning.js +40 -0
  167. package/src/route-renderer/page-loading/module-declaration-aggregation.d.ts +5 -0
  168. package/src/route-renderer/page-loading/module-declaration-aggregation.js +33 -0
  169. package/src/route-renderer/page-loading/module-declaration-scripts.d.ts +3 -0
  170. package/src/route-renderer/page-loading/module-declaration-scripts.js +18 -0
  171. package/src/route-renderer/page-loading/page-dependency-bundling.d.ts +13 -0
  172. package/src/route-renderer/page-loading/page-dependency-bundling.js +137 -0
  173. package/src/route-renderer/page-loading/page-module-loader.d.ts +90 -0
  174. package/src/route-renderer/{page-module-loader.js → page-loading/page-module-loader.js} +39 -14
  175. package/src/route-renderer/route-renderer.d.ts +57 -14
  176. package/src/route-renderer/route-renderer.js +30 -18
  177. package/src/router/README.md +94 -0
  178. package/src/router/client/link-intent.d.ts +53 -0
  179. package/src/router/client/link-intent.js +34 -0
  180. package/src/router/client/link-intent.test.browser.d.ts +1 -0
  181. package/src/router/client/link-intent.test.browser.js +43 -0
  182. package/src/router/client/navigation-coordinator.d.ts +169 -0
  183. package/src/router/client/navigation-coordinator.js +215 -0
  184. package/src/router/server/route-registry.d.ts +78 -0
  185. package/src/router/server/route-registry.js +262 -0
  186. package/src/services/README.md +28 -0
  187. package/src/services/assets/asset-processing-service/asset-dependency-keys.d.ts +3 -0
  188. package/src/services/assets/asset-processing-service/asset-dependency-keys.js +56 -0
  189. package/src/services/assets/asset-processing-service/asset-processing.service.d.ts +103 -0
  190. package/src/services/{asset-processing-service → assets/asset-processing-service}/asset-processing.service.js +124 -89
  191. package/src/services/{asset-processing-service → assets/asset-processing-service}/asset.factory.d.ts +1 -1
  192. package/src/services/{asset-processing-service → assets/asset-processing-service}/asset.factory.js +2 -2
  193. package/src/services/{asset-processing-service → assets/asset-processing-service}/assets.types.d.ts +16 -1
  194. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.d.ts +55 -0
  195. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.js +49 -0
  196. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.d.ts +20 -0
  197. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.js +41 -0
  198. package/src/services/assets/asset-processing-service/grouped-content-bundles.d.ts +30 -0
  199. package/src/services/assets/asset-processing-service/grouped-content-bundles.js +65 -0
  200. package/src/services/assets/asset-processing-service/index.d.ts +6 -0
  201. package/src/services/assets/asset-processing-service/index.js +6 -0
  202. package/src/services/assets/asset-processing-service/page-package.d.ts +3 -0
  203. package/src/services/assets/asset-processing-service/page-package.js +74 -0
  204. package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.interface.d.ts +2 -2
  205. package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.registry.d.ts +2 -2
  206. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/base/base-processor.d.ts +1 -1
  207. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/base/base-processor.js +11 -5
  208. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.d.ts +22 -0
  209. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.js +136 -0
  210. package/src/services/assets/asset-processing-service/processors/index.d.ts +5 -0
  211. package/src/services/assets/asset-processing-service/processors/index.js +5 -0
  212. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/content-script.processor.d.ts +3 -2
  213. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.js +119 -0
  214. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/file-script.processor.d.ts +4 -3
  215. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/file-script.processor.js +28 -7
  216. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/node-module-script.processor.d.ts +3 -3
  217. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/node-module-script.processor.js +12 -7
  218. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/stylesheet/content-stylesheet.processor.d.ts +5 -2
  219. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +59 -0
  220. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/stylesheet/file-stylesheet.processor.d.ts +2 -2
  221. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/stylesheet/file-stylesheet.processor.js +9 -3
  222. package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.d.ts +18 -0
  223. package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.js +45 -0
  224. package/src/services/assets/browser-bundle.service.d.ts +73 -0
  225. package/src/services/assets/browser-bundle.service.js +41 -0
  226. package/src/services/{page-request-cache-coordinator.service.d.ts → cache/page-request-cache-coordinator.service.d.ts} +2 -2
  227. package/src/services/{page-request-cache-coordinator.service.js → cache/page-request-cache-coordinator.service.js} +3 -1
  228. package/src/services/html/html-rewriter-provider.service.d.ts +37 -0
  229. package/src/services/html/html-rewriter-provider.service.js +68 -0
  230. package/src/services/html/html-transformer.service.d.ts +87 -0
  231. package/src/services/html/html-transformer.service.js +216 -0
  232. package/src/services/invalidation/development-invalidation.service.d.ts +74 -0
  233. package/src/services/invalidation/development-invalidation.service.js +190 -0
  234. package/src/services/module-loading/app-module-loader.service.d.ts +7 -0
  235. package/src/services/module-loading/app-server-module-transpiler.service.d.ts +24 -0
  236. package/src/services/module-loading/app-server-module-transpiler.service.js +115 -0
  237. package/src/services/module-loading/host-module-loader-registry.d.ts +4 -0
  238. package/src/services/module-loading/host-module-loader-registry.js +15 -0
  239. package/src/services/module-loading/module-loading-types.d.ts +2 -0
  240. package/src/services/module-loading/module-loading-types.js +0 -0
  241. package/src/services/module-loading/node-bootstrap-plugin.d.ts +42 -0
  242. package/src/services/module-loading/node-bootstrap-plugin.js +216 -0
  243. package/src/services/module-loading/page-module-import.service.d.ts +76 -0
  244. package/src/services/module-loading/page-module-import.service.js +170 -0
  245. package/src/services/module-loading/server-module-transpiler.service.d.ts +63 -0
  246. package/src/services/module-loading/server-module-transpiler.service.js +64 -0
  247. package/src/services/module-loading/source-module-support.d.ts +5 -0
  248. package/src/services/module-loading/source-module-support.js +8 -0
  249. package/src/services/runtime-state/dev-graph.service.d.ts +118 -0
  250. package/src/services/runtime-state/dev-graph.service.js +162 -0
  251. package/src/services/runtime-state/entrypoint-dependency-graph.service.d.ts +41 -0
  252. package/src/services/runtime-state/entrypoint-dependency-graph.service.js +85 -0
  253. package/src/services/runtime-state/server-invalidation-state.service.d.ts +26 -0
  254. package/src/services/runtime-state/server-invalidation-state.service.js +35 -0
  255. package/src/services/{schema-validation-service.d.ts → validation/schema-validation-service.d.ts} +1 -1
  256. package/src/static-site-generator/README.md +26 -0
  257. package/src/static-site-generator/static-site-generator.d.ts +67 -20
  258. package/src/static-site-generator/static-site-generator.js +182 -138
  259. package/src/{internal-types.d.ts → types/internal-types.d.ts} +62 -30
  260. package/src/types/internal-types.js +0 -0
  261. package/src/{public-types.d.ts → types/public-types.d.ts} +201 -32
  262. package/src/types/public-types.js +0 -0
  263. package/src/utils/html-escaping.d.ts +7 -0
  264. package/src/utils/html-escaping.js +6 -0
  265. package/src/utils/locals-utils.d.ts +1 -1
  266. package/src/utils/parse-cli-args.d.ts +4 -1
  267. package/src/utils/parse-cli-args.js +16 -1
  268. package/src/utils/resolve-work-dir.d.ts +11 -0
  269. package/src/utils/resolve-work-dir.js +31 -0
  270. package/src/watchers/project-watcher.d.ts +40 -29
  271. package/src/watchers/project-watcher.js +126 -116
  272. package/src/watchers/project-watcher.test-helpers.d.ts +2 -2
  273. package/src/watchers/project-watcher.test-helpers.js +6 -6
  274. package/src/adapters/abstract/application-adapter.ts +0 -337
  275. package/src/adapters/abstract/router-adapter.ts +0 -30
  276. package/src/adapters/abstract/server-adapter.ts +0 -79
  277. package/src/adapters/bun/client-bridge.ts +0 -62
  278. package/src/adapters/bun/create-app.ts +0 -189
  279. package/src/adapters/bun/define-api-handler.d.ts +0 -61
  280. package/src/adapters/bun/define-api-handler.ts +0 -114
  281. package/src/adapters/bun/hmr-manager.ts +0 -296
  282. package/src/adapters/bun/index.ts +0 -3
  283. package/src/adapters/bun/server-adapter.ts +0 -492
  284. package/src/adapters/bun/server-lifecycle.ts +0 -154
  285. package/src/adapters/index.ts +0 -6
  286. package/src/adapters/node/create-app.ts +0 -179
  287. package/src/adapters/node/index.d.ts +0 -4
  288. package/src/adapters/node/index.js +0 -8
  289. package/src/adapters/node/index.ts +0 -9
  290. package/src/adapters/node/node-client-bridge.ts +0 -79
  291. package/src/adapters/node/node-hmr-manager.ts +0 -289
  292. package/src/adapters/node/server-adapter.ts +0 -561
  293. package/src/adapters/node/static-content-server.ts +0 -203
  294. package/src/adapters/shared/api-response.ts +0 -104
  295. package/src/adapters/shared/application-adapter.ts +0 -199
  296. package/src/adapters/shared/explicit-static-route-matcher.ts +0 -134
  297. package/src/adapters/shared/file-route-middleware-pipeline.ts +0 -123
  298. package/src/adapters/shared/fs-server-response-factory.ts +0 -118
  299. package/src/adapters/shared/fs-server-response-matcher.ts +0 -198
  300. package/src/adapters/shared/render-context.ts +0 -105
  301. package/src/adapters/shared/server-adapter.ts +0 -442
  302. package/src/adapters/shared/server-route-handler.ts +0 -166
  303. package/src/adapters/shared/server-static-builder.ts +0 -82
  304. package/src/build/build-adapter.ts +0 -132
  305. package/src/build/build-types.ts +0 -83
  306. package/src/build/esbuild-build-adapter.ts +0 -510
  307. package/src/config/config-builder.ts +0 -474
  308. package/src/constants.ts +0 -39
  309. package/src/create-app.ts +0 -87
  310. package/src/define-api-handler.js +0 -15
  311. package/src/define-api-handler.ts +0 -66
  312. package/src/dev/sc-server.ts +0 -143
  313. package/src/eco/component-render-context.d.ts +0 -105
  314. package/src/eco/component-render-context.js +0 -77
  315. package/src/eco/component-render-context.ts +0 -202
  316. package/src/eco/eco.ts +0 -221
  317. package/src/eco/eco.types.ts +0 -202
  318. package/src/eco/eco.utils.ts +0 -89
  319. package/src/eco/global-injector-map.ts +0 -112
  320. package/src/eco/lazy-injector-map.ts +0 -120
  321. package/src/eco/module-dependencies.ts +0 -75
  322. package/src/errors/http-error.ts +0 -72
  323. package/src/errors/index.ts +0 -2
  324. package/src/errors/locals-access-error.ts +0 -7
  325. package/src/global/app-logger.ts +0 -4
  326. 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
  327. package/src/hmr/client/__screenshots__/hmr-runtime.test.browser.ts/HMR-Runtime-HMR-Server-Integration-should-load-fixture-app-page-1.png +0 -0
  328. package/src/hmr/client/__screenshots__/hmr-runtime.test.browser.ts/HMR-Runtime-WebSocket-Connection-should-connect-to-correct-HMR-endpoint-1.png +0 -0
  329. package/src/hmr/client/hmr-runtime.ts +0 -121
  330. package/src/hmr/hmr-strategy.ts +0 -172
  331. package/src/hmr/hmr.test.e2e.ts +0 -75
  332. package/src/hmr/strategies/default-hmr-strategy.ts +0 -60
  333. package/src/hmr/strategies/js-hmr-strategy.ts +0 -320
  334. package/src/index.browser.ts +0 -3
  335. package/src/index.ts +0 -5
  336. package/src/integrations/ghtml/ghtml-renderer.ts +0 -93
  337. package/src/integrations/ghtml/ghtml.plugin.ts +0 -32
  338. package/src/internal-types.ts +0 -212
  339. package/src/plugins/alias-resolver-plugin.ts +0 -45
  340. package/src/plugins/eco-component-meta-plugin.ts +0 -474
  341. package/src/plugins/integration-plugin.ts +0 -184
  342. package/src/plugins/processor.ts +0 -220
  343. package/src/public-types.ts +0 -1260
  344. package/src/route-renderer/component-graph-executor.d.ts +0 -32
  345. package/src/route-renderer/component-graph-executor.js +0 -31
  346. package/src/route-renderer/component-graph-executor.ts +0 -84
  347. package/src/route-renderer/component-graph.d.ts +0 -42
  348. package/src/route-renderer/component-graph.js +0 -72
  349. package/src/route-renderer/component-graph.ts +0 -159
  350. package/src/route-renderer/component-marker.d.ts +0 -52
  351. package/src/route-renderer/component-marker.js +0 -46
  352. package/src/route-renderer/component-marker.ts +0 -117
  353. package/src/route-renderer/dependency-resolver.js +0 -428
  354. package/src/route-renderer/dependency-resolver.ts +0 -596
  355. package/src/route-renderer/html-post-processing.service.d.ts +0 -40
  356. package/src/route-renderer/html-post-processing.service.js +0 -86
  357. package/src/route-renderer/html-post-processing.service.ts +0 -103
  358. package/src/route-renderer/integration-renderer.d.ts +0 -339
  359. package/src/route-renderer/integration-renderer.js +0 -526
  360. package/src/route-renderer/integration-renderer.ts +0 -696
  361. package/src/route-renderer/marker-graph-resolver.d.ts +0 -76
  362. package/src/route-renderer/marker-graph-resolver.js +0 -93
  363. package/src/route-renderer/marker-graph-resolver.ts +0 -153
  364. package/src/route-renderer/page-module-loader.d.ts +0 -61
  365. package/src/route-renderer/page-module-loader.ts +0 -153
  366. package/src/route-renderer/render-execution.service.d.ts +0 -69
  367. package/src/route-renderer/render-execution.service.js +0 -91
  368. package/src/route-renderer/render-execution.service.ts +0 -158
  369. package/src/route-renderer/render-preparation.service.d.ts +0 -112
  370. package/src/route-renderer/render-preparation.service.js +0 -243
  371. package/src/route-renderer/render-preparation.service.ts +0 -358
  372. package/src/route-renderer/route-renderer.ts +0 -80
  373. package/src/router/fs-router-scanner.d.ts +0 -41
  374. package/src/router/fs-router-scanner.js +0 -155
  375. package/src/router/fs-router-scanner.ts +0 -217
  376. package/src/router/fs-router.d.ts +0 -26
  377. package/src/router/fs-router.js +0 -100
  378. package/src/router/fs-router.ts +0 -122
  379. package/src/services/asset-processing-service/asset-processing.service.d.ts +0 -41
  380. package/src/services/asset-processing-service/asset-processing.service.ts +0 -306
  381. package/src/services/asset-processing-service/asset.factory.ts +0 -105
  382. package/src/services/asset-processing-service/assets.types.ts +0 -112
  383. package/src/services/asset-processing-service/index.d.ts +0 -3
  384. package/src/services/asset-processing-service/index.js +0 -3
  385. package/src/services/asset-processing-service/index.ts +0 -3
  386. package/src/services/asset-processing-service/processor.interface.ts +0 -27
  387. package/src/services/asset-processing-service/processor.registry.ts +0 -18
  388. package/src/services/asset-processing-service/processors/base/base-processor.ts +0 -76
  389. package/src/services/asset-processing-service/processors/base/base-script-processor.d.ts +0 -16
  390. package/src/services/asset-processing-service/processors/base/base-script-processor.js +0 -80
  391. package/src/services/asset-processing-service/processors/base/base-script-processor.ts +0 -105
  392. package/src/services/asset-processing-service/processors/index.d.ts +0 -5
  393. package/src/services/asset-processing-service/processors/index.js +0 -5
  394. package/src/services/asset-processing-service/processors/index.ts +0 -5
  395. package/src/services/asset-processing-service/processors/script/content-script.processor.js +0 -57
  396. package/src/services/asset-processing-service/processors/script/content-script.processor.ts +0 -66
  397. package/src/services/asset-processing-service/processors/script/file-script.processor.ts +0 -88
  398. package/src/services/asset-processing-service/processors/script/node-module-script.processor.ts +0 -84
  399. package/src/services/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +0 -25
  400. package/src/services/asset-processing-service/processors/stylesheet/content-stylesheet.processor.ts +0 -27
  401. package/src/services/asset-processing-service/processors/stylesheet/file-stylesheet.processor.ts +0 -77
  402. package/src/services/cache/cache.types.ts +0 -126
  403. package/src/services/cache/index.ts +0 -18
  404. package/src/services/cache/memory-cache-store.ts +0 -130
  405. package/src/services/cache/page-cache-service.ts +0 -202
  406. package/src/services/html-transformer.service.d.ts +0 -50
  407. package/src/services/html-transformer.service.js +0 -163
  408. package/src/services/html-transformer.service.ts +0 -217
  409. package/src/services/page-module-import.service.d.ts +0 -37
  410. package/src/services/page-module-import.service.js +0 -88
  411. package/src/services/page-module-import.service.ts +0 -129
  412. package/src/services/page-request-cache-coordinator.service.ts +0 -128
  413. package/src/services/schema-validation-service.ts +0 -204
  414. package/src/services/validation/standard-schema.types.ts +0 -68
  415. package/src/static-site-generator/static-site-generator.ts +0 -359
  416. package/src/utils/css.d.ts +0 -1
  417. package/src/utils/css.js +0 -7
  418. package/src/utils/css.ts +0 -5
  419. package/src/utils/deep-merge.ts +0 -47
  420. package/src/utils/hash.ts +0 -5
  421. package/src/utils/html.ts +0 -1
  422. package/src/utils/invariant.ts +0 -15
  423. package/src/utils/locals-utils.ts +0 -37
  424. package/src/utils/parse-cli-args.ts +0 -83
  425. package/src/utils/path-utils.module.ts +0 -14
  426. package/src/utils/runtime.ts +0 -44
  427. package/src/utils/server-utils.module.ts +0 -67
  428. package/src/watchers/project-watcher.test-helpers.ts +0 -41
  429. package/src/watchers/project-watcher.ts +0 -344
  430. /package/src/adapters/{bun → shared}/define-api-handler.js +0 -0
  431. /package/src/{internal-types.js → plugins/runtime-capability.js} +0 -0
  432. /package/src/services/{asset-processing-service → assets/asset-processing-service}/assets.types.js +0 -0
  433. /package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.interface.js +0 -0
  434. /package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.registry.js +0 -0
  435. /package/src/{public-types.js → services/module-loading/app-module-loader.service.js} +0 -0
  436. /package/src/services/{schema-validation-service.js → validation/schema-validation-service.js} +0 -0
@@ -1,13 +1,21 @@
1
+ import { DEFAULT_ECOPAGES_HOSTNAME, DEFAULT_ECOPAGES_PORT } from "../../config/constants.js";
1
2
  import { appLogger } from "../../global/app-logger.js";
2
3
  import { HttpError } from "../../errors/http-error.js";
3
4
  import { createRequire } from "../../utils/locals-utils.js";
4
5
  import { fileSystem } from "@ecopages/file-system";
5
6
  import { SharedServerAdapter } from "../shared/server-adapter.js";
6
7
  import { ApiResponseBuilder } from "../shared/api-response.js";
8
+ import { installSharedRuntimeBuildExecutor } from "../shared/runtime-bootstrap.js";
9
+ import { StaticContentServer } from "../../dev/sc-server.js";
7
10
  import { ServerRouteHandler } from "../shared/server-route-handler.js";
8
- import { ServerStaticBuilder } from "../shared/server-static-builder";
9
- import { ClientBridge } from "./client-bridge";
10
- import { HmrManager } from "./hmr-manager";
11
+ import { ServerStaticBuilder } from "../shared/server-static-builder.js";
12
+ import {
13
+ injectHmrRuntimeIntoHtmlResponse,
14
+ isHtmlResponse,
15
+ shouldInjectHmrHtmlResponse
16
+ } from "../shared/hmr-html-response.js";
17
+ import { ClientBridge } from "./client-bridge.js";
18
+ import { HmrManager } from "./hmr-manager.js";
11
19
  import { ServerLifecycle } from "./server-lifecycle.js";
12
20
  class BunServerAdapter extends SharedServerAdapter {
13
21
  apiHandlers;
@@ -52,14 +60,13 @@ class BunServerAdapter extends SharedServerAdapter {
52
60
  * Only injects in watch mode when HMR manager is enabled.
53
61
  */
54
62
  shouldInjectHmrScript() {
55
- return this.options?.watch === true && this.hmrManager?.isEnabled() === true;
63
+ return shouldInjectHmrHtmlResponse(this.options?.watch === true, this.hmrManager);
56
64
  }
57
65
  /**
58
66
  * Checks if a response contains HTML content.
59
67
  */
60
68
  isHtmlResponse(response) {
61
- const contentType = response.headers.get("Content-Type");
62
- return contentType !== null && contentType.startsWith("text/html");
69
+ return isHtmlResponse(response);
63
70
  }
64
71
  /**
65
72
  * Injects HMR script into HTML responses in development mode.
@@ -67,16 +74,7 @@ class BunServerAdapter extends SharedServerAdapter {
67
74
  */
68
75
  async maybeInjectHmrScript(response) {
69
76
  if (this.shouldInjectHmrScript() && this.isHtmlResponse(response)) {
70
- const html = await response.text();
71
- const hmrScript = `<script type="module">import '/_hmr_runtime.js';<\/script>`;
72
- const updatedHtml = html.replace(/<\/html>/i, `${hmrScript}</html>`);
73
- const headers = new Headers(response.headers);
74
- headers.delete("Content-Length");
75
- return new Response(updatedHtml, {
76
- status: response.status,
77
- statusText: response.statusText,
78
- headers
79
- });
77
+ return injectHmrRuntimeIntoHtmlResponse(response);
80
78
  }
81
79
  return response;
82
80
  }
@@ -85,6 +83,9 @@ class BunServerAdapter extends SharedServerAdapter {
85
83
  * Delegates to ServerLifecycle for setup.
86
84
  */
87
85
  async initialize() {
86
+ installSharedRuntimeBuildExecutor(this.appConfig, {
87
+ development: this.options?.watch === true
88
+ });
88
89
  this.bridge = this.bridgeFactory ?? new ClientBridge();
89
90
  this.hmrManager = this.hmrManagerFactory ?? new HmrManager({ appConfig: this.appConfig, bridge: this.bridge });
90
91
  this.lifecycle = this.lifecycleFactory ?? new ServerLifecycle({
@@ -97,7 +98,8 @@ class BunServerAdapter extends SharedServerAdapter {
97
98
  const staticBuilderOptions = {
98
99
  appConfig: this.appConfig,
99
100
  staticSiteGenerator: this.staticSiteGenerator,
100
- serveOptions: this.serveOptions
101
+ serveOptions: this.serveOptions,
102
+ apiHandlers: this.apiHandlers
101
103
  };
102
104
  this.staticBuilder = this.staticBuilderFactory ? this.staticBuilderFactory(staticBuilderOptions) : new ServerStaticBuilder(staticBuilderOptions);
103
105
  await this.lifecycle.initializePlugins({ watch: this.options?.watch });
@@ -106,22 +108,23 @@ class BunServerAdapter extends SharedServerAdapter {
106
108
  * Refreshes the router routes during watch mode.
107
109
  */
108
110
  async refreshRouterRoutes() {
109
- if (this.serverInstance && typeof this.serverInstance.reload === "function") {
110
- try {
111
- await this.initSharedRouter();
112
- this.configureSharedResponseHandlers(this.staticRoutes, this.hmrManager);
111
+ if (!this.serverInstance || typeof this.serverInstance.reload !== "function") {
112
+ appLogger.error("Server instance is not available for reloading");
113
+ return;
114
+ }
115
+ await this.createSharedWatchRefreshCallback({
116
+ staticRoutes: this.staticRoutes,
117
+ hmrManager: this.hmrManager,
118
+ onRoutesReady: () => {
113
119
  const options = this.getServerOptions({ enableHmr: true });
114
120
  this.serverInstance.reload(options);
115
121
  appLogger.debug("Server routes updated with dynamic routes");
116
- } catch (error) {
117
- if (error instanceof Error) {
118
- this.hmrManager.broadcast({ type: "error", message: error.message });
119
- appLogger.error("Failed to refresh router routes:", error);
120
- }
122
+ },
123
+ onError: (error) => {
124
+ this.hmrManager.broadcast({ type: "error", message: error.message });
125
+ appLogger.error("Failed to refresh router routes:", error);
121
126
  }
122
- } else {
123
- appLogger.error("Server instance is not available for reloading");
124
- }
127
+ })();
125
128
  }
126
129
  async watch() {
127
130
  await this.lifecycle.startWatching({
@@ -246,14 +249,34 @@ class BunServerAdapter extends SharedServerAdapter {
246
249
  */
247
250
  async buildStatic(options) {
248
251
  if (!this.fullyInitialized) {
249
- await this.initSharedRouter();
250
- this.configureSharedResponseHandlers(this.staticRoutes, this.hmrManager);
252
+ await this.initializeSharedRouteHandling({
253
+ staticRoutes: this.staticRoutes,
254
+ hmrManager: this.hmrManager
255
+ });
251
256
  }
252
- await this.staticBuilder.build(options, {
253
- router: this.router,
254
- routeRendererFactory: this.routeRendererFactory,
255
- staticRoutes: this.staticRoutes
257
+ const buildRuntimeOrigin = this.serverInstance ? `http://${this.serverInstance.hostname || DEFAULT_ECOPAGES_HOSTNAME}:${this.serverInstance.port || DEFAULT_ECOPAGES_PORT}` : void 0;
258
+ await this.staticBuilder.build(
259
+ { ...options, preview: false, baseUrl: buildRuntimeOrigin },
260
+ {
261
+ router: this.router,
262
+ routeRendererFactory: this.routeRendererFactory,
263
+ staticRoutes: this.staticRoutes
264
+ }
265
+ );
266
+ if (!options?.preview) {
267
+ return;
268
+ }
269
+ const previewHostname = this.serveOptions.hostname || DEFAULT_ECOPAGES_HOSTNAME;
270
+ const previewPort = Number(this.serveOptions.port || DEFAULT_ECOPAGES_PORT);
271
+ const previewServer = StaticContentServer.createServer({
272
+ appConfig: this.appConfig,
273
+ options: { port: previewPort }
256
274
  });
275
+ if (previewServer.server?.port) {
276
+ appLogger.info(`Preview running at http://${previewHostname}:${previewServer.server.port}`);
277
+ return;
278
+ }
279
+ appLogger.error("Failed to start preview server");
257
280
  }
258
281
  /**
259
282
  * Initializes the server with dynamic routes after server creation.
@@ -278,8 +301,10 @@ class BunServerAdapter extends SharedServerAdapter {
278
301
  async _performInitialization(server) {
279
302
  this.serverInstance = server;
280
303
  appLogger.debug("Completing server initialization with dynamic routes");
281
- await this.initSharedRouter();
282
- this.configureSharedResponseHandlers(this.staticRoutes, this.hmrManager);
304
+ await this.initializeSharedRouteHandling({
305
+ staticRoutes: this.staticRoutes,
306
+ hmrManager: this.hmrManager
307
+ });
283
308
  this.fullyInitialized = true;
284
309
  if (this.options?.watch) await this.watch();
285
310
  if (server && typeof server.reload === "function") {
@@ -342,7 +367,7 @@ class BunServerAdapter extends SharedServerAdapter {
342
367
  }
343
368
  }
344
369
  async function createBunServerAdapter(params) {
345
- const runtimeOrigin = params.runtimeOrigin ?? `http://${params.serveOptions.hostname || "localhost"}:${params.serveOptions.port || 3e3}`;
370
+ const runtimeOrigin = params.runtimeOrigin ?? `http://${params.serveOptions.hostname || DEFAULT_ECOPAGES_HOSTNAME}:${params.serveOptions.port || DEFAULT_ECOPAGES_PORT}`;
346
371
  const bridge = params.bridge ?? new ClientBridge();
347
372
  const hmrManager = params.hmrManager ?? new HmrManager({ appConfig: params.appConfig, bridge });
348
373
  const lifecycle = params.lifecycle ?? new ServerLifecycle({
@@ -1,8 +1,8 @@
1
- import type { EcoPagesAppConfig } from '../../internal-types';
1
+ import type { EcoPagesAppConfig } from '../../types/internal-types.js';
2
2
  import type { EcoBuildPlugin } from '../../build/build-types.js';
3
- import { StaticSiteGenerator } from '../../static-site-generator/static-site-generator';
4
- import type { ClientBridge } from './client-bridge';
5
- import type { HmrManager } from './hmr-manager';
3
+ import { StaticSiteGenerator } from '../../static-site-generator/static-site-generator.js';
4
+ import type { ClientBridge } from './client-bridge.js';
5
+ import type { HmrManager } from './hmr-manager.js';
6
6
  export interface WatcherCallbacks {
7
7
  refreshRouterRoutesCallback: () => Promise<void>;
8
8
  }
@@ -13,7 +13,13 @@ export interface ServerLifecycleParams {
13
13
  bridge: ClientBridge;
14
14
  }
15
15
  /**
16
- * Handles server lifecycle: initialization, plugins, loaders, and file watching.
16
+ * Coordinates Bun-runtime server startup side effects for one app instance.
17
+ *
18
+ * @remarks
19
+ * This class keeps runtime-only concerns together: build-runtime bootstrapping,
20
+ * Bun loader registration, public asset preparation, plugin setup, and file
21
+ * watching. Core config/build state is expected to already be finalized before
22
+ * this lifecycle runs.
17
23
  */
18
24
  export declare class ServerLifecycle {
19
25
  private readonly appConfig;
@@ -23,30 +29,35 @@ export declare class ServerLifecycle {
23
29
  private staticSiteGenerator;
24
30
  constructor({ appConfig, runtimeOrigin, hmrManager, bridge }: ServerLifecycleParams);
25
31
  /**
26
- * Initializes the server's core components.
27
- * @returns The static site generator instance for use by other components
32
+ * Initializes the runtime services that Bun startup depends on.
33
+ *
34
+ * @returns The static-site generator instance reused by the adapter.
28
35
  */
29
36
  initialize(): Promise<StaticSiteGenerator>;
30
37
  /**
31
- * Sets up Bun loaders from config.
32
- * Note: This will be abstracted to a LoaderStrategy interface in #4 Runtime Abstraction.
38
+ * Registers config-owned build loaders with Bun's runtime plugin API.
39
+ *
40
+ * @remarks
41
+ * Bun remains responsible only for transport-level plugin registration here.
42
+ * Loader ownership and composition were already finalized during config build.
33
43
  */
34
44
  setupLoaders(): void;
35
45
  /**
36
- * Copies public directory contents to dist root.
37
- * Static files are served from root (e.g., /favicon.ico, /robots.txt).
38
- */
39
- copyPublicDir(): void;
40
- /**
41
- * Initializes processors and integrations.
42
- * @param options.watch - Whether watch mode is enabled
46
+ * Runs runtime-only processor and integration setup for this Bun app session.
47
+ *
48
+ * @param options.watch Whether watch mode is enabled.
49
+ * @returns The browser build plugins visible to HMR after runtime setup.
43
50
  */
44
51
  initializePlugins(options?: {
45
52
  watch?: boolean;
46
53
  }): Promise<EcoBuildPlugin[]>;
47
54
  /**
48
- * Starts file watching for HMR.
55
+ * Starts file watching and wires change events back into the adapter refresh
56
+ * callback.
49
57
  */
50
58
  startWatching(callbacks: WatcherCallbacks): Promise<void>;
59
+ /**
60
+ * Returns the static-site generator created during initialization.
61
+ */
51
62
  getStaticSiteGenerator(): StaticSiteGenerator;
52
63
  }
@@ -1,11 +1,12 @@
1
- import path from "node:path";
2
1
  import { getBunRuntime } from "../../utils/runtime.js";
3
- import { RESOLVED_ASSETS_DIR } from "../../constants";
4
- import { defaultBuildAdapter } from "../../build/build-adapter.js";
5
- import { appLogger } from "../../global/app-logger";
6
- import { fileSystem } from "@ecopages/file-system";
7
- import { StaticSiteGenerator } from "../../static-site-generator/static-site-generator";
8
- import { ProjectWatcher } from "../../watchers/project-watcher";
2
+ import { appLogger } from "../../global/app-logger.js";
3
+ import { StaticSiteGenerator } from "../../static-site-generator/static-site-generator.js";
4
+ import {
5
+ bindSharedRuntimeHmrManager,
6
+ initializeSharedRuntimePlugins,
7
+ prepareSharedRuntimePublicDir,
8
+ startSharedProjectWatching
9
+ } from "../shared/runtime-bootstrap.js";
9
10
  class ServerLifecycle {
10
11
  appConfig;
11
12
  hmrManager;
@@ -19,98 +20,69 @@ class ServerLifecycle {
19
20
  this.bridge = bridge;
20
21
  }
21
22
  /**
22
- * Initializes the server's core components.
23
- * @returns The static site generator instance for use by other components
23
+ * Initializes the runtime services that Bun startup depends on.
24
+ *
25
+ * @returns The static-site generator instance reused by the adapter.
24
26
  */
25
27
  async initialize() {
26
28
  this.staticSiteGenerator = new StaticSiteGenerator({ appConfig: this.appConfig });
27
29
  await this.hmrManager.buildRuntime();
28
30
  this.setupLoaders();
29
- this.copyPublicDir();
31
+ prepareSharedRuntimePublicDir(this.appConfig);
30
32
  return this.staticSiteGenerator;
31
33
  }
32
34
  /**
33
- * Sets up Bun loaders from config.
34
- * Note: This will be abstracted to a LoaderStrategy interface in #4 Runtime Abstraction.
35
+ * Registers config-owned build loaders with Bun's runtime plugin API.
36
+ *
37
+ * @remarks
38
+ * Bun remains responsible only for transport-level plugin registration here.
39
+ * Loader ownership and composition were already finalized during config build.
35
40
  */
36
41
  setupLoaders() {
37
42
  const loaders = this.appConfig.loaders;
38
43
  for (const loader of loaders.values()) {
39
- defaultBuildAdapter.registerPlugin(loader);
40
44
  getBunRuntime()?.plugin(loader);
41
45
  }
42
46
  }
43
47
  /**
44
- * Copies public directory contents to dist root.
45
- * Static files are served from root (e.g., /favicon.ico, /robots.txt).
46
- */
47
- copyPublicDir() {
48
- try {
49
- const srcPublicDir = path.join(this.appConfig.rootDir, this.appConfig.srcDir, this.appConfig.publicDir);
50
- if (fileSystem.exists(srcPublicDir)) {
51
- fileSystem.copyDir(srcPublicDir, path.join(this.appConfig.rootDir, this.appConfig.distDir));
52
- }
53
- fileSystem.ensureDir(path.join(this.appConfig.absolutePaths.distDir, RESOLVED_ASSETS_DIR));
54
- } catch (error) {
55
- appLogger.error(
56
- `Failed to copy public directory: ${error instanceof Error ? error.message : String(error)}`
57
- );
58
- throw error;
59
- }
60
- }
61
- /**
62
- * Initializes processors and integrations.
63
- * @param options.watch - Whether watch mode is enabled
48
+ * Runs runtime-only processor and integration setup for this Bun app session.
49
+ *
50
+ * @param options.watch Whether watch mode is enabled.
51
+ * @returns The browser build plugins visible to HMR after runtime setup.
64
52
  */
65
53
  async initializePlugins(options) {
66
54
  try {
67
55
  const hmrEnabled = !!options?.watch;
68
56
  this.hmrManager.setEnabled(hmrEnabled);
69
- const processorBuildPlugins = [];
70
- const processorPromises = Array.from(this.appConfig.processors.values()).map(async (processor) => {
71
- await processor.setup();
72
- if (processor.plugins) {
73
- for (const plugin of processor.plugins) {
74
- defaultBuildAdapter.registerPlugin(plugin);
75
- getBunRuntime()?.plugin(plugin);
76
- }
77
- }
78
- if (processor.buildPlugins) {
79
- processorBuildPlugins.push(...processor.buildPlugins);
80
- }
81
- });
82
- const integrationPromises = this.appConfig.integrations.map(async (integration) => {
83
- integration.setConfig(this.appConfig);
84
- integration.setRuntimeOrigin(this.runtimeOrigin);
85
- integration.setHmrManager(this.hmrManager);
86
- await integration.setup();
87
- for (const plugin of integration.plugins) {
88
- defaultBuildAdapter.registerPlugin(plugin);
57
+ await initializeSharedRuntimePlugins({
58
+ appConfig: this.appConfig,
59
+ runtimeOrigin: this.runtimeOrigin,
60
+ hmrManager: this.hmrManager,
61
+ onRuntimePlugin: (plugin) => {
89
62
  getBunRuntime()?.plugin(plugin);
90
63
  }
91
64
  });
92
- await Promise.all([...processorPromises, ...integrationPromises]);
93
- const loaderPlugins = Array.from(this.appConfig.loaders.values());
94
- const allBuildPlugins = [...loaderPlugins, ...processorBuildPlugins];
95
- this.hmrManager.setPlugins(allBuildPlugins);
96
- return allBuildPlugins;
65
+ return bindSharedRuntimeHmrManager(this.appConfig, this.hmrManager);
97
66
  } catch (error) {
98
67
  appLogger.error(`Failed to initialize plugins: ${error instanceof Error ? error.message : String(error)}`);
99
68
  throw error;
100
69
  }
101
70
  }
102
71
  /**
103
- * Starts file watching for HMR.
72
+ * Starts file watching and wires change events back into the adapter refresh
73
+ * callback.
104
74
  */
105
75
  async startWatching(callbacks) {
106
- const watcherInstance = new ProjectWatcher({
107
- config: this.appConfig,
76
+ await startSharedProjectWatching({
77
+ appConfig: this.appConfig,
108
78
  refreshRouterRoutesCallback: callbacks.refreshRouterRoutesCallback,
109
79
  hmrManager: this.hmrManager,
110
80
  bridge: this.bridge
111
81
  });
112
- await watcherInstance.createWatcherSubscription();
113
82
  }
83
+ /**
84
+ * Returns the static-site generator created during initialization.
85
+ */
114
86
  getStaticSiteGenerator() {
115
87
  return this.staticSiteGenerator;
116
88
  }
@@ -1,9 +1,12 @@
1
- import type { EcopagesAppOptions as BunOptions } from './adapters/bun/create-app.js';
2
- import type { EcopagesAppOptions as NodeOptions } from './adapters/node/create-app.js';
3
- import { AbstractApplicationAdapter } from './adapters/abstract/application-adapter.js';
4
- import { SharedApplicationAdapter } from './adapters/shared/application-adapter.js';
5
- export type EcopagesAppOptions = BunOptions | NodeOptions;
6
- export type UniversalEcopagesApp = AbstractApplicationAdapter<EcopagesAppOptions, any, Request>;
1
+ import type { EcoPagesAppConfig } from '../types/internal-types.js';
2
+ import { AbstractApplicationAdapter } from './abstract/application-adapter.js';
3
+ import type { ApplicationAdapterOptions } from './abstract/application-adapter.js';
4
+ import { SharedApplicationAdapter } from './shared/application-adapter.js';
5
+ export interface EcopagesAppOptions extends ApplicationAdapterOptions {
6
+ appConfig: EcoPagesAppConfig;
7
+ serverOptions?: Record<string, any>;
8
+ }
9
+ export type UniversalEcopagesApp = AbstractApplicationAdapter<EcopagesAppOptions, unknown, Request>;
7
10
  export declare function createApp<WebSocketData = undefined>(options: EcopagesAppOptions): Promise<UniversalEcopagesApp>;
8
11
  export declare class EcopagesApp extends SharedApplicationAdapter<EcopagesAppOptions, unknown, Request> {
9
12
  private readonly appOptions;
@@ -1,12 +1,12 @@
1
- import { AbstractApplicationAdapter } from "./adapters/abstract/application-adapter.js";
2
- import { SharedApplicationAdapter } from "./adapters/shared/application-adapter.js";
1
+ import { AbstractApplicationAdapter } from "./abstract/application-adapter.js";
2
+ import { SharedApplicationAdapter } from "./shared/application-adapter.js";
3
3
  async function createRuntimeApp(options) {
4
4
  const bun = globalThis.Bun;
5
5
  if (bun) {
6
- const { createApp: createBunApp } = await import("./adapters/bun/create-app.js");
6
+ const { createApp: createBunApp } = await import("./bun/create-app.js");
7
7
  return await createBunApp(options);
8
8
  }
9
- const { createNodeApp } = await import("./adapters/node/create-app.js");
9
+ const { createApp: createNodeApp } = await import("./node/create-app.js");
10
10
  return await createNodeApp(options);
11
11
  }
12
12
  async function createApp(options) {
@@ -1,6 +1,2 @@
1
- export { EcopagesApp, createApp } from './bun/create-app.js';
2
- export { defineApiHandler, defineGroupHandler } from './bun/define-api-handler.js';
3
- export { NodeServerAdapter, createNodeServerAdapter } from './node/server-adapter.js';
4
- export { EcopagesApp as NodeAdapterEcopagesApp, createNodeApp } from './node/create-app.js';
5
- export type { NodeServerAdapterParams, NodeServerAdapterResult } from './node/server-adapter.js';
6
- export type { EcopagesAppOptions as NodeEcopagesAppOptions } from './node/create-app.js';
1
+ export { EcopagesApp, createApp } from './create-app.js';
2
+ export { defineApiHandler, defineGroupHandler, type GroupHandler } from './shared/define-api-handler.js';
@@ -1,14 +1,8 @@
1
- import { EcopagesApp, createApp } from "./bun/create-app.js";
2
- import { defineApiHandler, defineGroupHandler } from "./bun/define-api-handler.js";
3
- import { NodeServerAdapter, createNodeServerAdapter } from "./node/server-adapter.js";
4
- import { EcopagesApp as EcopagesApp2, createNodeApp } from "./node/create-app.js";
1
+ import { EcopagesApp, createApp } from "./create-app.js";
2
+ import { defineApiHandler, defineGroupHandler } from "./shared/define-api-handler.js";
5
3
  export {
6
4
  EcopagesApp,
7
- EcopagesApp2 as NodeAdapterEcopagesApp,
8
- NodeServerAdapter,
9
5
  createApp,
10
- createNodeApp,
11
- createNodeServerAdapter,
12
6
  defineApiHandler,
13
7
  defineGroupHandler
14
8
  };
@@ -1,16 +1,12 @@
1
1
  import { type Server as NodeServerInstance } from 'node:http';
2
- import type { EcoPagesAppConfig } from '../../internal-types.js';
3
- import { type ApplicationAdapterOptions } from '../abstract/application-adapter.js';
4
2
  import { SharedApplicationAdapter } from '../shared/application-adapter.js';
5
- import { type NodeServerAdapterResult } from './server-adapter.js';
6
- export interface EcopagesAppOptions extends ApplicationAdapterOptions {
7
- appConfig: EcoPagesAppConfig;
8
- serverOptions?: Record<string, any>;
9
- }
10
- export declare class EcopagesApp extends SharedApplicationAdapter<EcopagesAppOptions, NodeServerInstance, Request> {
3
+ import type { EcopagesAppOptions } from '../create-app.js';
4
+ import { type NodeServerAdapterResult, createNodeServerAdapter } from './server-adapter.js';
5
+ export declare class NodeEcopagesApp extends SharedApplicationAdapter<EcopagesAppOptions, NodeServerInstance, Request> {
11
6
  serverAdapter: NodeServerAdapterResult | undefined;
12
7
  private server;
13
8
  private runtimeOrigin;
9
+ protected createServerAdapter(params: Parameters<typeof createNodeServerAdapter>[0]): Promise<NodeServerAdapterResult>;
14
10
  stop(force?: boolean): Promise<void>;
15
11
  protected initializeServerAdapter(): Promise<NodeServerAdapterResult>;
16
12
  start(): Promise<NodeServerInstance | void>;
@@ -18,4 +14,5 @@ export declare class EcopagesApp extends SharedApplicationAdapter<EcopagesAppOpt
18
14
  private sendNodeResponse;
19
15
  fetch(request: Request): Promise<Response>;
20
16
  }
21
- export declare function createNodeApp(options: EcopagesAppOptions): Promise<EcopagesApp>;
17
+ export declare function createNodeApp(options: EcopagesAppOptions): Promise<NodeEcopagesApp>;
18
+ export declare function createApp(options: EcopagesAppOptions): Promise<NodeEcopagesApp>;
@@ -1,14 +1,16 @@
1
1
  import { createServer } from "node:http";
2
2
  import { Readable } from "node:stream";
3
- import { DEFAULT_ECOPAGES_HOSTNAME, DEFAULT_ECOPAGES_PORT } from "../../constants.js";
3
+ import { DEFAULT_ECOPAGES_HOSTNAME, DEFAULT_ECOPAGES_PORT } from "../../config/constants.js";
4
4
  import { appLogger } from "../../global/app-logger.js";
5
- import {} from "../abstract/application-adapter.js";
6
5
  import { SharedApplicationAdapter } from "../shared/application-adapter.js";
7
6
  import { createNodeServerAdapter } from "./server-adapter.js";
8
- class EcopagesApp extends SharedApplicationAdapter {
7
+ class NodeEcopagesApp extends SharedApplicationAdapter {
9
8
  serverAdapter;
10
9
  server = null;
11
10
  runtimeOrigin = "";
11
+ createServerAdapter(params) {
12
+ return createNodeServerAdapter(params);
13
+ }
12
14
  async stop(force = true) {
13
15
  if (!this.server) {
14
16
  return;
@@ -36,7 +38,7 @@ class EcopagesApp extends SharedApplicationAdapter {
36
38
  const preferredPort = cliPort ?? (envPort ? Number(envPort) : void 0) ?? DEFAULT_ECOPAGES_PORT;
37
39
  const preferredHostname = cliHostname ?? envHostname ?? DEFAULT_ECOPAGES_HOSTNAME;
38
40
  this.runtimeOrigin = `http://${preferredHostname}:${preferredPort}`;
39
- return createNodeServerAdapter({
41
+ return this.createServerAdapter({
40
42
  runtimeOrigin: this.runtimeOrigin,
41
43
  appConfig: this.appConfig,
42
44
  apiHandlers: this.apiHandlers,
@@ -135,9 +137,13 @@ class EcopagesApp extends SharedApplicationAdapter {
135
137
  }
136
138
  }
137
139
  async function createNodeApp(options) {
138
- return new EcopagesApp(options);
140
+ return new NodeEcopagesApp(options);
141
+ }
142
+ async function createApp(options) {
143
+ return createNodeApp(options);
139
144
  }
140
145
  export {
141
- EcopagesApp,
146
+ NodeEcopagesApp,
147
+ createApp,
142
148
  createNodeApp
143
149
  };
@@ -1,5 +1,5 @@
1
1
  import type { WebSocket } from 'ws';
2
- import type { ClientBridgeEvent, IClientBridge } from '../../public-types.js';
2
+ import type { ClientBridgeEvent, IClientBridge } from '../../types/public-types.js';
3
3
  export declare class NodeClientBridge implements IClientBridge {
4
4
  private subscribers;
5
5
  private heartbeatTimer;