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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (456) hide show
  1. package/README.md +267 -14
  2. package/package.json +98 -108
  3. package/src/adapters/README.md +39 -0
  4. package/src/adapters/abstract/application-adapter.d.ts +28 -2
  5. package/src/adapters/abstract/application-adapter.js +14 -2
  6. package/src/adapters/abstract/router-adapter.d.ts +1 -1
  7. package/src/adapters/abstract/server-adapter.d.ts +2 -2
  8. package/src/adapters/bun/client-bridge.d.ts +1 -1
  9. package/src/adapters/bun/create-app.d.ts +12 -12
  10. package/src/adapters/bun/create-app.js +64 -41
  11. package/src/adapters/bun/hmr-manager.d.ts +30 -62
  12. package/src/adapters/bun/hmr-manager.js +30 -194
  13. package/src/adapters/bun/index.d.ts +2 -3
  14. package/src/adapters/bun/index.js +3 -3
  15. package/src/adapters/bun/runtime-host.d.ts +52 -0
  16. package/src/adapters/bun/runtime-host.js +56 -0
  17. package/src/adapters/bun/server-adapter.d.ts +93 -32
  18. package/src/adapters/bun/server-adapter.js +166 -89
  19. package/src/adapters/bun/static-preview-host.d.ts +28 -0
  20. package/src/adapters/bun/static-preview-host.js +45 -0
  21. package/src/{create-app.d.ts → adapters/create-app.d.ts} +9 -6
  22. package/src/{create-app.js → adapters/create-app.js} +4 -4
  23. package/src/adapters/index.d.ts +2 -6
  24. package/src/adapters/index.js +2 -8
  25. package/src/adapters/node/create-app.d.ts +15 -12
  26. package/src/adapters/node/create-app.js +34 -85
  27. package/src/adapters/node/http-request-bridge.d.ts +57 -0
  28. package/src/adapters/node/http-request-bridge.js +118 -0
  29. package/src/adapters/node/node-client-bridge.d.ts +1 -1
  30. package/src/adapters/node/node-hmr-manager.d.ts +38 -48
  31. package/src/adapters/node/node-hmr-manager.js +31 -203
  32. package/src/adapters/node/runtime-host.d.ts +57 -0
  33. package/src/adapters/node/runtime-host.js +92 -0
  34. package/src/adapters/node/server-adapter-dependencies.d.ts +19 -0
  35. package/src/adapters/node/server-adapter-dependencies.js +18 -0
  36. package/src/adapters/node/server-adapter.d.ts +20 -72
  37. package/src/adapters/node/server-adapter.js +98 -203
  38. package/src/adapters/node/static-content-server.d.ts +37 -1
  39. package/src/adapters/node/static-content-server.js +29 -1
  40. package/src/adapters/node/static-preview-host.d.ts +55 -0
  41. package/src/adapters/node/static-preview-host.js +68 -0
  42. package/src/adapters/shared/application-adapter.d.ts +1 -1
  43. package/src/{define-api-handler.d.ts → adapters/shared/define-api-handler.d.ts} +1 -1
  44. package/src/adapters/shared/explicit-static-render-preparation.d.ts +25 -0
  45. package/src/adapters/shared/explicit-static-render-preparation.js +26 -0
  46. package/src/adapters/shared/explicit-static-route-matcher.d.ts +7 -4
  47. package/src/adapters/shared/explicit-static-route-matcher.js +14 -13
  48. package/src/adapters/shared/file-route-middleware-pipeline.d.ts +7 -10
  49. package/src/adapters/shared/file-route-middleware-pipeline.js +3 -11
  50. package/src/adapters/shared/fs-server-response-factory.d.ts +14 -10
  51. package/src/adapters/shared/fs-server-response-factory.js +11 -27
  52. package/src/adapters/shared/fs-server-response-matcher.d.ts +20 -16
  53. package/src/adapters/shared/fs-server-response-matcher.js +76 -45
  54. package/src/adapters/shared/hmr-entrypoint-registrar.d.ts +55 -0
  55. package/src/adapters/shared/hmr-entrypoint-registrar.js +87 -0
  56. package/src/adapters/shared/hmr-html-response.d.ts +22 -0
  57. package/src/adapters/shared/hmr-html-response.js +33 -0
  58. package/src/adapters/shared/render-context.d.ts +5 -3
  59. package/src/adapters/shared/render-context.js +27 -3
  60. package/src/adapters/shared/runtime-app-bootstrap.d.ts +26 -0
  61. package/src/adapters/shared/runtime-app-bootstrap.js +46 -0
  62. package/src/adapters/shared/runtime-host.d.ts +12 -0
  63. package/src/adapters/shared/server-adapter.d.ts +33 -12
  64. package/src/adapters/shared/server-adapter.js +215 -132
  65. package/src/adapters/shared/server-route-handler.d.ts +5 -5
  66. package/src/adapters/shared/server-route-handler.js +7 -16
  67. package/src/adapters/shared/server-static-builder.d.ts +41 -8
  68. package/src/adapters/shared/server-static-builder.js +65 -11
  69. package/src/adapters/shared/shared-hmr-manager.d.ts +59 -0
  70. package/src/adapters/shared/shared-hmr-manager.js +240 -0
  71. package/src/adapters/shared/static-preview-host.d.ts +10 -0
  72. package/src/build/README.md +107 -0
  73. package/src/build/browser-runtime-import-rewrite-plugin.d.ts +26 -0
  74. package/src/build/browser-runtime-import-rewrite-plugin.js +162 -0
  75. package/src/build/browser-runtime-manifest.d.ts +31 -0
  76. package/src/build/browser-runtime-manifest.js +61 -0
  77. package/src/build/build-adapter.d.ts +175 -3
  78. package/src/build/build-adapter.js +633 -16
  79. package/src/build/build-manifest.d.ts +33 -0
  80. package/src/build/build-manifest.js +52 -0
  81. package/src/build/dev-build-coordinator.d.ts +72 -0
  82. package/src/build/dev-build-coordinator.js +154 -0
  83. package/src/build/esbuild-build-adapter.d.ts +16 -6
  84. package/src/build/esbuild-build-adapter.js +205 -75
  85. package/src/build/runtime-build-executor.d.ts +14 -0
  86. package/src/build/runtime-build-executor.js +22 -0
  87. package/src/build/runtime-specifier-alias-plugin.d.ts +15 -0
  88. package/src/build/runtime-specifier-alias-plugin.js +31 -0
  89. package/src/config/README.md +36 -0
  90. package/src/config/config-builder.d.ts +54 -29
  91. package/src/config/config-builder.js +256 -50
  92. package/src/{constants.d.ts → config/constants.d.ts} +13 -0
  93. package/src/{constants.js → config/constants.js} +4 -0
  94. package/src/declarations.d.ts +19 -14
  95. package/src/dev/host-runtime.d.ts +10 -0
  96. package/src/dev/host-runtime.js +24 -0
  97. package/src/dev/sc-server.d.ts +1 -1
  98. package/src/dev/sc-server.js +1 -1
  99. package/src/eco/README.md +70 -16
  100. package/src/eco/eco.browser.d.ts +2 -0
  101. package/src/eco/eco.browser.js +88 -0
  102. package/src/eco/eco.js +63 -54
  103. package/src/eco/eco.types.d.ts +69 -6
  104. package/src/eco/eco.utils.d.ts +1 -40
  105. package/src/eco/eco.utils.js +5 -35
  106. package/src/eco/global-injector-map.d.ts +3 -3
  107. package/src/eco/global-injector-map.js +2 -2
  108. package/src/eco/lazy-injector-map.d.ts +2 -2
  109. package/src/errors/index.d.ts +1 -0
  110. package/src/errors/index.js +3 -1
  111. package/src/hmr/README.md +26 -0
  112. package/src/hmr/client/hmr-runtime.d.ts +1 -6
  113. package/src/hmr/client/hmr-runtime.js +38 -7
  114. package/src/hmr/hmr-strategy.d.ts +16 -13
  115. package/src/hmr/hmr-strategy.js +22 -7
  116. package/src/hmr/hmr.postcss.test.e2e.d.ts +1 -0
  117. package/src/hmr/hmr.postcss.test.e2e.js +31 -0
  118. package/src/hmr/hmr.test.e2e.js +26 -33
  119. package/src/hmr/strategies/default-hmr-strategy.d.ts +2 -2
  120. package/src/hmr/strategies/default-hmr-strategy.js +1 -1
  121. package/src/hmr/strategies/js-hmr-strategy.d.ts +40 -42
  122. package/src/hmr/strategies/js-hmr-strategy.js +24 -43
  123. package/src/index.browser.d.ts +2 -2
  124. package/src/index.browser.js +1 -1
  125. package/src/index.d.ts +4 -3
  126. package/src/index.js +16 -5
  127. package/src/integrations/ghtml/ghtml-renderer.d.ts +3 -2
  128. package/src/integrations/ghtml/ghtml-renderer.js +27 -30
  129. package/src/integrations/ghtml/ghtml.constants.d.ts +1 -0
  130. package/src/integrations/ghtml/ghtml.constants.js +4 -0
  131. package/src/integrations/ghtml/ghtml.plugin.d.ts +2 -6
  132. package/src/integrations/ghtml/ghtml.plugin.js +3 -4
  133. package/src/plugins/README.md +35 -0
  134. package/src/plugins/alias-resolver-plugin.d.ts +1 -0
  135. package/src/plugins/alias-resolver-plugin.js +27 -5
  136. package/src/plugins/eco-component-meta-plugin.d.ts +14 -1
  137. package/src/plugins/eco-component-meta-plugin.js +42 -24
  138. package/src/plugins/foreign-jsx-override-plugin.d.ts +33 -0
  139. package/src/plugins/foreign-jsx-override-plugin.js +41 -0
  140. package/src/plugins/integration-plugin.d.ts +157 -29
  141. package/src/plugins/integration-plugin.js +115 -14
  142. package/src/plugins/processor.d.ts +17 -2
  143. package/src/plugins/processor.js +22 -3
  144. package/src/plugins/runtime-capability.d.ts +9 -0
  145. package/src/plugins/source-transform.d.ts +46 -0
  146. package/src/plugins/source-transform.js +71 -0
  147. package/src/route-renderer/GRAPH.md +83 -325
  148. package/src/route-renderer/README.md +73 -90
  149. package/src/route-renderer/orchestration/component-render-context.d.ts +97 -0
  150. package/src/route-renderer/orchestration/component-render-context.js +147 -0
  151. package/src/route-renderer/orchestration/declared-ownership-graph.d.ts +18 -0
  152. package/src/route-renderer/orchestration/declared-ownership-graph.js +34 -0
  153. package/src/route-renderer/orchestration/foreign-subtree-execution.service.d.ts +110 -0
  154. package/src/route-renderer/orchestration/foreign-subtree-execution.service.js +233 -0
  155. package/src/route-renderer/orchestration/integration-renderer.d.ts +534 -0
  156. package/src/route-renderer/orchestration/integration-renderer.js +991 -0
  157. package/src/route-renderer/orchestration/ownership-planning.service.d.ts +24 -0
  158. package/src/route-renderer/orchestration/ownership-planning.service.js +63 -0
  159. package/src/route-renderer/orchestration/ownership-validation.service.d.ts +29 -0
  160. package/src/route-renderer/orchestration/ownership-validation.service.js +53 -0
  161. package/src/route-renderer/orchestration/processed-asset-dedupe.d.ts +3 -0
  162. package/src/route-renderer/orchestration/processed-asset-dedupe.js +27 -0
  163. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.d.ts +91 -0
  164. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.js +170 -0
  165. package/src/route-renderer/orchestration/render-output.utils.d.ts +66 -0
  166. package/src/route-renderer/orchestration/render-output.utils.js +171 -0
  167. package/src/route-renderer/orchestration/route-render-orchestrator.d.ts +156 -0
  168. package/src/route-renderer/orchestration/route-render-orchestrator.js +577 -0
  169. package/src/route-renderer/orchestration/template-serialization.d.ts +38 -0
  170. package/src/route-renderer/orchestration/template-serialization.js +45 -0
  171. package/src/route-renderer/page-loading/component-dependency-collection.d.ts +37 -0
  172. package/src/route-renderer/page-loading/component-dependency-collection.js +132 -0
  173. package/src/route-renderer/page-loading/declared-asset-collection.d.ts +24 -0
  174. package/src/route-renderer/page-loading/declared-asset-collection.js +106 -0
  175. package/src/route-renderer/{dependency-resolver.d.ts → page-loading/dependency-resolver.d.ts} +15 -4
  176. package/src/route-renderer/page-loading/dependency-resolver.js +115 -0
  177. package/src/route-renderer/page-loading/ecopages-virtual-imports.d.ts +11 -0
  178. package/src/route-renderer/page-loading/ecopages-virtual-imports.js +57 -0
  179. package/src/route-renderer/page-loading/lazy-entry-collection.d.ts +45 -0
  180. package/src/route-renderer/page-loading/lazy-entry-collection.js +105 -0
  181. package/src/route-renderer/page-loading/lazy-trigger-planning.d.ts +19 -0
  182. package/src/route-renderer/page-loading/lazy-trigger-planning.js +40 -0
  183. package/src/route-renderer/page-loading/module-declaration-aggregation.d.ts +5 -0
  184. package/src/route-renderer/page-loading/module-declaration-aggregation.js +33 -0
  185. package/src/route-renderer/page-loading/module-declaration-scripts.d.ts +3 -0
  186. package/src/route-renderer/page-loading/module-declaration-scripts.js +18 -0
  187. package/src/route-renderer/page-loading/page-dependency-bundling.d.ts +13 -0
  188. package/src/route-renderer/page-loading/page-dependency-bundling.js +137 -0
  189. package/src/route-renderer/page-loading/page-module-loader.d.ts +90 -0
  190. package/src/route-renderer/{page-module-loader.js → page-loading/page-module-loader.js} +39 -14
  191. package/src/route-renderer/route-renderer.d.ts +57 -14
  192. package/src/route-renderer/route-renderer.js +30 -18
  193. package/src/router/README.md +94 -0
  194. package/src/router/client/link-intent.d.ts +53 -0
  195. package/src/router/client/link-intent.js +34 -0
  196. package/src/router/client/link-intent.test.browser.d.ts +1 -0
  197. package/src/router/client/link-intent.test.browser.js +43 -0
  198. package/src/router/client/navigation-coordinator.d.ts +169 -0
  199. package/src/router/client/navigation-coordinator.js +215 -0
  200. package/src/router/server/route-registry.d.ts +78 -0
  201. package/src/router/server/route-registry.js +262 -0
  202. package/src/services/README.md +28 -0
  203. package/src/services/assets/asset-processing-service/asset-dependency-keys.d.ts +3 -0
  204. package/src/services/assets/asset-processing-service/asset-dependency-keys.js +56 -0
  205. package/src/services/assets/asset-processing-service/asset-processing.service.d.ts +103 -0
  206. package/src/services/{asset-processing-service → assets/asset-processing-service}/asset-processing.service.js +124 -89
  207. package/src/services/{asset-processing-service → assets/asset-processing-service}/asset.factory.d.ts +1 -1
  208. package/src/services/{asset-processing-service → assets/asset-processing-service}/asset.factory.js +2 -2
  209. package/src/services/{asset-processing-service → assets/asset-processing-service}/assets.types.d.ts +16 -1
  210. package/src/services/assets/asset-processing-service/assets.types.js +0 -0
  211. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.d.ts +57 -0
  212. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.js +49 -0
  213. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.d.ts +20 -0
  214. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.js +41 -0
  215. package/src/services/assets/asset-processing-service/grouped-content-bundles.d.ts +30 -0
  216. package/src/services/assets/asset-processing-service/grouped-content-bundles.js +65 -0
  217. package/src/services/assets/asset-processing-service/index.d.ts +6 -0
  218. package/src/services/assets/asset-processing-service/index.js +6 -0
  219. package/src/services/assets/asset-processing-service/page-package.d.ts +6 -0
  220. package/src/services/assets/asset-processing-service/page-package.js +80 -0
  221. package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.interface.d.ts +2 -2
  222. package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.registry.d.ts +2 -2
  223. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/base/base-processor.d.ts +1 -1
  224. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/base/base-processor.js +11 -5
  225. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.d.ts +22 -0
  226. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.js +136 -0
  227. package/src/services/assets/asset-processing-service/processors/index.d.ts +5 -0
  228. package/src/services/assets/asset-processing-service/processors/index.js +5 -0
  229. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/content-script.processor.d.ts +3 -2
  230. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.js +120 -0
  231. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/file-script.processor.d.ts +4 -3
  232. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/file-script.processor.js +28 -7
  233. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.d.ts +42 -0
  234. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.js +126 -0
  235. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/stylesheet/content-stylesheet.processor.d.ts +5 -2
  236. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +59 -0
  237. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/stylesheet/file-stylesheet.processor.d.ts +2 -2
  238. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/stylesheet/file-stylesheet.processor.js +9 -3
  239. package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.d.ts +18 -0
  240. package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.js +45 -0
  241. package/src/services/assets/browser-bundle.service.d.ts +73 -0
  242. package/src/services/assets/browser-bundle.service.js +41 -0
  243. package/src/services/{page-request-cache-coordinator.service.d.ts → cache/page-request-cache-coordinator.service.d.ts} +2 -2
  244. package/src/services/{page-request-cache-coordinator.service.js → cache/page-request-cache-coordinator.service.js} +3 -1
  245. package/src/services/html/html-rewriter-provider.service.d.ts +40 -0
  246. package/src/services/html/html-rewriter-provider.service.js +68 -0
  247. package/src/services/html/html-transformer.service.d.ts +96 -0
  248. package/src/services/html/html-transformer.service.js +287 -0
  249. package/src/services/invalidation/development-invalidation.service.d.ts +74 -0
  250. package/src/services/invalidation/development-invalidation.service.js +190 -0
  251. package/src/services/module-loading/app-module-loader.service.d.ts +7 -0
  252. package/src/services/module-loading/app-module-loader.service.js +0 -0
  253. package/src/services/module-loading/app-server-module-transpiler.service.d.ts +24 -0
  254. package/src/services/module-loading/app-server-module-transpiler.service.js +151 -0
  255. package/src/services/module-loading/host-module-loader-registry.d.ts +4 -0
  256. package/src/services/module-loading/host-module-loader-registry.js +15 -0
  257. package/src/services/module-loading/module-loading-types.d.ts +2 -0
  258. package/src/services/module-loading/module-loading-types.js +0 -0
  259. package/src/services/module-loading/node-bootstrap-plugin.d.ts +38 -0
  260. package/src/services/module-loading/node-bootstrap-plugin.js +215 -0
  261. package/src/services/module-loading/page-module-import.service.d.ts +95 -0
  262. package/src/services/module-loading/page-module-import.service.js +191 -0
  263. package/src/services/module-loading/server-module-transpiler.service.d.ts +63 -0
  264. package/src/services/module-loading/server-module-transpiler.service.js +64 -0
  265. package/src/services/module-loading/source-module-support.d.ts +5 -0
  266. package/src/services/module-loading/source-module-support.js +8 -0
  267. package/src/services/runtime-state/dev-graph.service.d.ts +118 -0
  268. package/src/services/runtime-state/dev-graph.service.js +162 -0
  269. package/src/services/runtime-state/entrypoint-dependency-graph.service.d.ts +41 -0
  270. package/src/services/runtime-state/entrypoint-dependency-graph.service.js +85 -0
  271. package/src/services/runtime-state/server-invalidation-state.service.d.ts +26 -0
  272. package/src/services/runtime-state/server-invalidation-state.service.js +35 -0
  273. package/src/services/{schema-validation-service.d.ts → validation/schema-validation-service.d.ts} +1 -1
  274. package/src/static-site-generator/README.md +26 -0
  275. package/src/static-site-generator/static-site-generator.d.ts +67 -20
  276. package/src/static-site-generator/static-site-generator.js +182 -138
  277. package/src/{internal-types.d.ts → types/internal-types.d.ts} +62 -30
  278. package/src/types/internal-types.js +0 -0
  279. package/src/{public-types.d.ts → types/public-types.d.ts} +239 -31
  280. package/src/types/public-types.js +0 -0
  281. package/src/utils/html-escaping.d.ts +7 -0
  282. package/src/utils/html-escaping.js +6 -0
  283. package/src/utils/locals-utils.d.ts +1 -1
  284. package/src/utils/parse-cli-args.d.ts +4 -1
  285. package/src/utils/parse-cli-args.js +16 -1
  286. package/src/utils/resolve-work-dir.d.ts +11 -0
  287. package/src/utils/resolve-work-dir.js +31 -0
  288. package/src/watchers/project-watcher.d.ts +11 -7
  289. package/src/watchers/project-watcher.js +69 -75
  290. package/src/watchers/project-watcher.test-helpers.d.ts +2 -2
  291. package/src/watchers/project-watcher.test-helpers.js +6 -5
  292. package/CHANGELOG.md +0 -94
  293. package/src/adapters/abstract/application-adapter.ts +0 -337
  294. package/src/adapters/abstract/router-adapter.ts +0 -30
  295. package/src/adapters/abstract/server-adapter.ts +0 -79
  296. package/src/adapters/bun/client-bridge.ts +0 -62
  297. package/src/adapters/bun/create-app.ts +0 -189
  298. package/src/adapters/bun/define-api-handler.d.ts +0 -61
  299. package/src/adapters/bun/define-api-handler.ts +0 -114
  300. package/src/adapters/bun/hmr-manager.ts +0 -276
  301. package/src/adapters/bun/index.ts +0 -3
  302. package/src/adapters/bun/server-adapter.ts +0 -492
  303. package/src/adapters/bun/server-lifecycle.d.ts +0 -52
  304. package/src/adapters/bun/server-lifecycle.js +0 -120
  305. package/src/adapters/bun/server-lifecycle.ts +0 -154
  306. package/src/adapters/index.ts +0 -6
  307. package/src/adapters/node/create-app.ts +0 -179
  308. package/src/adapters/node/index.d.ts +0 -4
  309. package/src/adapters/node/index.js +0 -8
  310. package/src/adapters/node/index.ts +0 -9
  311. package/src/adapters/node/node-client-bridge.ts +0 -79
  312. package/src/adapters/node/node-hmr-manager.ts +0 -271
  313. package/src/adapters/node/server-adapter.ts +0 -561
  314. package/src/adapters/node/static-content-server.ts +0 -203
  315. package/src/adapters/shared/api-response.ts +0 -104
  316. package/src/adapters/shared/application-adapter.ts +0 -199
  317. package/src/adapters/shared/explicit-static-route-matcher.ts +0 -134
  318. package/src/adapters/shared/file-route-middleware-pipeline.ts +0 -123
  319. package/src/adapters/shared/fs-server-response-factory.ts +0 -118
  320. package/src/adapters/shared/fs-server-response-matcher.ts +0 -198
  321. package/src/adapters/shared/render-context.ts +0 -105
  322. package/src/adapters/shared/server-adapter.ts +0 -442
  323. package/src/adapters/shared/server-route-handler.ts +0 -166
  324. package/src/adapters/shared/server-static-builder.ts +0 -82
  325. package/src/build/build-adapter.ts +0 -133
  326. package/src/build/build-types.ts +0 -83
  327. package/src/build/esbuild-build-adapter.ts +0 -511
  328. package/src/config/config-builder.ts +0 -474
  329. package/src/constants.ts +0 -39
  330. package/src/create-app.ts +0 -87
  331. package/src/define-api-handler.js +0 -15
  332. package/src/define-api-handler.ts +0 -66
  333. package/src/dev/sc-server.ts +0 -143
  334. package/src/eco/component-render-context.d.ts +0 -105
  335. package/src/eco/component-render-context.js +0 -77
  336. package/src/eco/component-render-context.ts +0 -202
  337. package/src/eco/eco.ts +0 -221
  338. package/src/eco/eco.types.ts +0 -202
  339. package/src/eco/eco.utils.ts +0 -89
  340. package/src/eco/global-injector-map.ts +0 -112
  341. package/src/eco/lazy-injector-map.ts +0 -120
  342. package/src/eco/module-dependencies.ts +0 -75
  343. package/src/errors/http-error.ts +0 -72
  344. package/src/errors/index.ts +0 -2
  345. package/src/errors/locals-access-error.ts +0 -7
  346. package/src/global/app-logger.ts +0 -4
  347. package/src/hmr/client/hmr-runtime.ts +0 -121
  348. package/src/hmr/hmr-strategy.ts +0 -172
  349. package/src/hmr/hmr.test.e2e.ts +0 -75
  350. package/src/hmr/strategies/default-hmr-strategy.ts +0 -60
  351. package/src/hmr/strategies/js-hmr-strategy.ts +0 -327
  352. package/src/index.browser.ts +0 -3
  353. package/src/index.ts +0 -5
  354. package/src/integrations/ghtml/ghtml-renderer.ts +0 -93
  355. package/src/integrations/ghtml/ghtml.plugin.ts +0 -32
  356. package/src/internal-types.ts +0 -212
  357. package/src/plugins/alias-resolver-plugin.ts +0 -45
  358. package/src/plugins/eco-component-meta-plugin.ts +0 -474
  359. package/src/plugins/integration-plugin.ts +0 -184
  360. package/src/plugins/processor.ts +0 -220
  361. package/src/public-types.ts +0 -1255
  362. package/src/route-renderer/component-graph-executor.d.ts +0 -32
  363. package/src/route-renderer/component-graph-executor.js +0 -31
  364. package/src/route-renderer/component-graph-executor.ts +0 -84
  365. package/src/route-renderer/component-graph.d.ts +0 -42
  366. package/src/route-renderer/component-graph.js +0 -72
  367. package/src/route-renderer/component-graph.ts +0 -159
  368. package/src/route-renderer/component-marker.d.ts +0 -52
  369. package/src/route-renderer/component-marker.js +0 -46
  370. package/src/route-renderer/component-marker.ts +0 -117
  371. package/src/route-renderer/dependency-resolver.js +0 -428
  372. package/src/route-renderer/dependency-resolver.ts +0 -596
  373. package/src/route-renderer/html-post-processing.service.d.ts +0 -40
  374. package/src/route-renderer/html-post-processing.service.js +0 -86
  375. package/src/route-renderer/html-post-processing.service.ts +0 -103
  376. package/src/route-renderer/integration-renderer.d.ts +0 -339
  377. package/src/route-renderer/integration-renderer.js +0 -526
  378. package/src/route-renderer/integration-renderer.ts +0 -696
  379. package/src/route-renderer/marker-graph-resolver.d.ts +0 -76
  380. package/src/route-renderer/marker-graph-resolver.js +0 -93
  381. package/src/route-renderer/marker-graph-resolver.ts +0 -153
  382. package/src/route-renderer/page-module-loader.d.ts +0 -61
  383. package/src/route-renderer/page-module-loader.ts +0 -153
  384. package/src/route-renderer/render-execution.service.d.ts +0 -69
  385. package/src/route-renderer/render-execution.service.js +0 -91
  386. package/src/route-renderer/render-execution.service.ts +0 -158
  387. package/src/route-renderer/render-preparation.service.d.ts +0 -112
  388. package/src/route-renderer/render-preparation.service.js +0 -243
  389. package/src/route-renderer/render-preparation.service.ts +0 -358
  390. package/src/route-renderer/route-renderer.ts +0 -80
  391. package/src/router/fs-router-scanner.d.ts +0 -41
  392. package/src/router/fs-router-scanner.js +0 -155
  393. package/src/router/fs-router-scanner.ts +0 -217
  394. package/src/router/fs-router.d.ts +0 -26
  395. package/src/router/fs-router.js +0 -100
  396. package/src/router/fs-router.ts +0 -122
  397. package/src/services/asset-processing-service/asset-processing.service.d.ts +0 -41
  398. package/src/services/asset-processing-service/asset-processing.service.ts +0 -306
  399. package/src/services/asset-processing-service/asset.factory.ts +0 -105
  400. package/src/services/asset-processing-service/assets.types.ts +0 -112
  401. package/src/services/asset-processing-service/index.d.ts +0 -3
  402. package/src/services/asset-processing-service/index.js +0 -3
  403. package/src/services/asset-processing-service/index.ts +0 -3
  404. package/src/services/asset-processing-service/processor.interface.ts +0 -27
  405. package/src/services/asset-processing-service/processor.registry.ts +0 -18
  406. package/src/services/asset-processing-service/processors/base/base-processor.ts +0 -76
  407. package/src/services/asset-processing-service/processors/base/base-script-processor.d.ts +0 -16
  408. package/src/services/asset-processing-service/processors/base/base-script-processor.js +0 -80
  409. package/src/services/asset-processing-service/processors/base/base-script-processor.ts +0 -105
  410. package/src/services/asset-processing-service/processors/index.d.ts +0 -5
  411. package/src/services/asset-processing-service/processors/index.js +0 -5
  412. package/src/services/asset-processing-service/processors/index.ts +0 -5
  413. package/src/services/asset-processing-service/processors/script/content-script.processor.js +0 -57
  414. package/src/services/asset-processing-service/processors/script/content-script.processor.ts +0 -66
  415. package/src/services/asset-processing-service/processors/script/file-script.processor.ts +0 -88
  416. package/src/services/asset-processing-service/processors/script/node-module-script.processor.d.ts +0 -7
  417. package/src/services/asset-processing-service/processors/script/node-module-script.processor.js +0 -74
  418. package/src/services/asset-processing-service/processors/script/node-module-script.processor.ts +0 -84
  419. package/src/services/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +0 -25
  420. package/src/services/asset-processing-service/processors/stylesheet/content-stylesheet.processor.ts +0 -27
  421. package/src/services/asset-processing-service/processors/stylesheet/file-stylesheet.processor.ts +0 -77
  422. package/src/services/cache/cache.types.ts +0 -126
  423. package/src/services/cache/index.ts +0 -18
  424. package/src/services/cache/memory-cache-store.ts +0 -130
  425. package/src/services/cache/page-cache-service.ts +0 -202
  426. package/src/services/html-transformer.service.d.ts +0 -50
  427. package/src/services/html-transformer.service.js +0 -163
  428. package/src/services/html-transformer.service.ts +0 -217
  429. package/src/services/page-module-import.service.d.ts +0 -37
  430. package/src/services/page-module-import.service.js +0 -88
  431. package/src/services/page-module-import.service.ts +0 -129
  432. package/src/services/page-request-cache-coordinator.service.ts +0 -128
  433. package/src/services/schema-validation-service.ts +0 -204
  434. package/src/services/validation/standard-schema.types.ts +0 -68
  435. package/src/static-site-generator/static-site-generator.ts +0 -359
  436. package/src/utils/css.d.ts +0 -1
  437. package/src/utils/css.js +0 -7
  438. package/src/utils/css.ts +0 -5
  439. package/src/utils/deep-merge.ts +0 -47
  440. package/src/utils/hash.ts +0 -5
  441. package/src/utils/html.ts +0 -1
  442. package/src/utils/invariant.ts +0 -15
  443. package/src/utils/locals-utils.ts +0 -37
  444. package/src/utils/parse-cli-args.ts +0 -83
  445. package/src/utils/path-utils.module.ts +0 -14
  446. package/src/utils/runtime.ts +0 -44
  447. package/src/utils/server-utils.module.ts +0 -67
  448. package/src/watchers/project-watcher.test-helpers.ts +0 -40
  449. package/src/watchers/project-watcher.ts +0 -364
  450. /package/src/adapters/{bun → shared}/define-api-handler.js +0 -0
  451. /package/src/{internal-types.js → adapters/shared/runtime-host.js} +0 -0
  452. /package/src/{public-types.js → adapters/shared/static-preview-host.js} +0 -0
  453. /package/src/{services/asset-processing-service/assets.types.js → plugins/runtime-capability.js} +0 -0
  454. /package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.interface.js +0 -0
  455. /package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.registry.js +0 -0
  456. /package/src/services/{schema-validation-service.js → validation/schema-validation-service.js} +0 -0
@@ -1,90 +1,47 @@
1
- import fs from "node:fs";
2
- import path from "node:path";
3
- import { RESOLVED_ASSETS_DIR } from "../../constants";
4
- import { defaultBuildAdapter } from "../../build/build-adapter.js";
5
- import { fileSystem } from "@ecopages/file-system";
6
- import { DefaultHmrStrategy } from "../../hmr/strategies/default-hmr-strategy";
7
- import { JsHmrStrategy } from "../../hmr/strategies/js-hmr-strategy";
8
- import { appLogger } from "../../global/app-logger";
9
- class HmrManager {
10
- appConfig;
11
- bridge;
12
- /** Keep track of watchers */
13
- watchers = /* @__PURE__ */ new Map();
14
- /** entrypoint -> output path */
15
- watchedFiles = /* @__PURE__ */ new Map();
16
- /** bare specifier -> runtime URL (e.g., 'react' -> '/assets/vendors/react.js') */
17
- specifierMap = /* @__PURE__ */ new Map();
18
- distDir;
19
- plugins = [];
20
- enabled = true;
21
- strategies = [];
1
+ import { appLogger } from "../../global/app-logger.js";
2
+ import {
3
+ InMemoryEntrypointDependencyGraph
4
+ } from "../../services/runtime-state/entrypoint-dependency-graph.service.js";
5
+ import { SharedHmrManager } from "../shared/shared-hmr-manager.js";
6
+ class HmrManager extends SharedHmrManager {
22
7
  wsHandler;
23
- constructor({ appConfig, bridge }) {
24
- this.appConfig = appConfig;
25
- this.bridge = bridge;
26
- this.distDir = path.join(this.appConfig.absolutePaths.distDir, RESOLVED_ASSETS_DIR, "_hmr");
27
- this.cleanDistDir();
28
- this.initializeStrategies();
29
- }
30
8
  /**
31
- * Ensures the HMR output directory exists.
9
+ * Creates the Bun HMR manager around the shared HMR orchestration pipeline.
32
10
  *
33
- * This must not remove the directory because multiple app processes
34
- * can share the same dist path during e2e runs.
35
- */
36
- cleanDistDir() {
37
- fileSystem.ensureDir(this.distDir);
38
- }
39
- /**
40
- * Initializes core HMR strategies.
41
- * Strategies are evaluated in priority order (highest first).
11
+ * @remarks
12
+ * Bun delegates route watching, rebuild dispatch, and runtime bundle
13
+ * generation to `SharedHmrManager`. The Bun subclass only supplies the
14
+ * transport-specific dependency graph policy and websocket hook surface.
42
15
  */
43
- initializeStrategies() {
44
- const jsContext = {
45
- getWatchedFiles: () => this.watchedFiles,
46
- getSpecifierMap: () => this.specifierMap,
47
- getDistDir: () => this.distDir,
48
- getPlugins: () => this.plugins,
49
- getSrcDir: () => this.appConfig.absolutePaths.srcDir
50
- };
51
- this.strategies = [new JsHmrStrategy(jsContext), new DefaultHmrStrategy()];
16
+ constructor({ appConfig, bridge }) {
17
+ super({ appConfig, bridge });
52
18
  }
53
19
  /**
54
- * Registers a custom HMR strategy.
55
- * Used by integrations to provide framework-specific HMR handling.
56
- * @param strategy - The HMR strategy to register
20
+ * Reuses the shared in-memory dependency graph when possible and otherwise
21
+ * creates the Bun-compatible default graph implementation.
57
22
  */
58
- registerStrategy(strategy) {
59
- this.strategies.push(strategy);
60
- }
61
- setPlugins(plugins) {
62
- this.plugins = [...plugins];
63
- }
64
- setEnabled(enabled) {
65
- this.enabled = enabled;
66
- }
67
- isEnabled() {
68
- return this.enabled;
23
+ createEntrypointDependencyGraph(existingEntrypointDependencyGraph) {
24
+ return existingEntrypointDependencyGraph instanceof InMemoryEntrypointDependencyGraph ? existingEntrypointDependencyGraph : new InMemoryEntrypointDependencyGraph();
69
25
  }
70
26
  /**
71
- * Registers a mapping from bare specifiers to vendor URLs.
72
- * Used by integrations to provide their module resolution mappings.
73
- * @param map - Object mapping bare specifiers to vendor URLs
27
+ * Returns the Bun websocket hooks that attach and detach live HMR subscribers.
28
+ *
29
+ * @remarks
30
+ * `SharedHmrManager` stores the bridge behind the transport-agnostic
31
+ * `IClientBridge` contract because most HMR coordination only needs broadcast
32
+ * behavior. Bun connection lifecycle wiring is the point where that abstraction
33
+ * intentionally narrows back to the concrete Bun bridge so websocket instances
34
+ * can be tracked directly.
74
35
  */
75
- registerSpecifierMap(map) {
76
- for (const [specifier, url] of Object.entries(map)) {
77
- this.specifierMap.set(specifier, url);
78
- }
79
- }
80
36
  getWebSocketHandler() {
37
+ const bridge = this.bridge;
81
38
  const open = (ws) => {
82
- this.bridge.subscribe(ws);
83
- appLogger.debug(`[HmrManager] Connection opened. Subscribers: ${this.bridge.subscriberCount}`);
39
+ bridge.subscribe(ws);
40
+ appLogger.debug(`[HmrManager] Connection opened. Subscribers: ${bridge.subscriberCount}`);
84
41
  };
85
42
  const close = (ws) => {
86
- this.bridge.unsubscribe(ws);
87
- appLogger.debug(`[HmrManager] Connection closed. Subscribers: ${this.bridge.subscriberCount}`);
43
+ bridge.unsubscribe(ws);
44
+ appLogger.debug(`[HmrManager] Connection closed. Subscribers: ${bridge.subscriberCount}`);
88
45
  };
89
46
  this.wsHandler = { open, close };
90
47
  return {
@@ -95,127 +52,6 @@ class HmrManager {
95
52
  }
96
53
  };
97
54
  }
98
- /**
99
- * Builds the client-side HMR runtime script.
100
- */
101
- async buildRuntime() {
102
- const runtimeSource = path.resolve(import.meta.dirname, "../../hmr/client/hmr-runtime.js");
103
- const result = await defaultBuildAdapter.build({
104
- entrypoints: [runtimeSource],
105
- outdir: this.distDir,
106
- naming: "_hmr_runtime.js",
107
- minify: false,
108
- ...defaultBuildAdapter.getTranspileOptions("hmr-runtime"),
109
- plugins: this.plugins
110
- });
111
- if (!result.success) {
112
- appLogger.error("[HMR] Failed to build runtime script:", result.logs);
113
- }
114
- }
115
- getRuntimePath() {
116
- return path.join(this.distDir, "_hmr_runtime.js");
117
- }
118
- broadcast(event) {
119
- appLogger.debug(
120
- `[HMR] Broadcasting ${event.type} event, path=${event.path || "all"}, subscribers=${this.bridge.subscriberCount}`
121
- );
122
- this.bridge.broadcast(event);
123
- }
124
- async handleFileChange(filePath) {
125
- const sorted = [...this.strategies].sort((a, b) => b.priority - a.priority);
126
- const strategy = sorted.find((s) => {
127
- try {
128
- return s.matches(filePath);
129
- } catch (err) {
130
- appLogger.error(err);
131
- return false;
132
- }
133
- });
134
- if (!strategy) {
135
- appLogger.warn(`[HMR] No strategy found for ${filePath}`);
136
- return;
137
- }
138
- appLogger.debug(`[HmrManager] Selected strategy: ${strategy.constructor.name}`);
139
- const action = await strategy.process(filePath);
140
- if (action.type === "broadcast") {
141
- if (action.events) {
142
- for (const event of action.events) {
143
- this.broadcast(event);
144
- }
145
- }
146
- }
147
- }
148
- /**
149
- * Registers a client entrypoint to be built and watched by Bun.
150
- */
151
- getOutputUrl(entrypointPath) {
152
- return this.watchedFiles.get(entrypointPath);
153
- }
154
- getWatchedFiles() {
155
- return this.watchedFiles;
156
- }
157
- getSpecifierMap() {
158
- return this.specifierMap;
159
- }
160
- getDistDir() {
161
- return this.distDir;
162
- }
163
- getPlugins() {
164
- return this.plugins;
165
- }
166
- getDefaultContext() {
167
- return {
168
- getWatchedFiles: () => this.watchedFiles,
169
- getSpecifierMap: () => this.specifierMap,
170
- getDistDir: () => this.distDir,
171
- getPlugins: () => this.plugins,
172
- getSrcDir: () => this.appConfig.absolutePaths.srcDir,
173
- getLayoutsDir: () => this.appConfig.absolutePaths.layoutsDir,
174
- getPagesDir: () => this.appConfig.absolutePaths.pagesDir
175
- };
176
- }
177
- async registerEntrypoint(entrypointPath) {
178
- if (this.watchedFiles.has(entrypointPath)) {
179
- return this.watchedFiles.get(entrypointPath);
180
- }
181
- const srcDir = this.appConfig.absolutePaths.srcDir;
182
- const relativePath = path.relative(srcDir, entrypointPath);
183
- const relativePathJs = relativePath.replace(/\.(tsx?|jsx?|mdx?)$/, ".js");
184
- const encodedPathJs = this.encodeDynamicSegments(relativePathJs);
185
- const urlPath = encodedPathJs.split(path.sep).join("/");
186
- const outputUrl = `/${path.join(RESOLVED_ASSETS_DIR, "_hmr", urlPath)}`;
187
- const outputPath = path.join(this.distDir, urlPath);
188
- this.watchedFiles.set(entrypointPath, outputUrl);
189
- await this.handleFileChange(entrypointPath);
190
- if (!fileSystem.exists(outputPath)) {
191
- const fallback = await defaultBuildAdapter.build({
192
- entrypoints: [entrypointPath],
193
- outdir: this.distDir,
194
- naming: encodedPathJs,
195
- minify: false,
196
- external: Array.from(this.specifierMap.keys()),
197
- ...defaultBuildAdapter.getTranspileOptions("hmr-entrypoint"),
198
- plugins: this.plugins
199
- });
200
- if (!fallback.success) {
201
- appLogger.error(`[HMR] Fallback build failed for ${entrypointPath}:`, fallback.logs);
202
- }
203
- }
204
- return outputUrl;
205
- }
206
- /**
207
- * Encodes dynamic route segments (brackets) in file paths.
208
- * Converts `[slug]` to `_slug_` to avoid filesystem/URL issues.
209
- */
210
- encodeDynamicSegments(filepath) {
211
- return filepath.replace(/\[([^\]]+)\]/g, "_$1_");
212
- }
213
- stop() {
214
- for (const watcher of this.watchers.values()) {
215
- watcher.close();
216
- }
217
- this.watchers.clear();
218
- }
219
55
  }
220
56
  export {
221
57
  HmrManager
@@ -1,3 +1,2 @@
1
- export { EcopagesApp, createApp } from './create-app.js';
2
- export { defineApiHandler, defineGroupHandler } from './define-api-handler.js';
3
- export type { GroupHandler } from './define-api-handler.js';
1
+ export { BunEcopagesApp, createApp } from './create-app.js';
2
+ export { defineApiHandler, defineGroupHandler, type GroupHandler } from '../shared/define-api-handler.js';
@@ -1,7 +1,7 @@
1
- import { EcopagesApp, createApp } from "./create-app.js";
2
- import { defineApiHandler, defineGroupHandler } from "./define-api-handler.js";
1
+ import { BunEcopagesApp, createApp } from "./create-app.js";
2
+ import { defineApiHandler, defineGroupHandler } from "../shared/define-api-handler.js";
3
3
  export {
4
- EcopagesApp,
4
+ BunEcopagesApp,
5
5
  createApp,
6
6
  defineApiHandler,
7
7
  defineGroupHandler
@@ -0,0 +1,52 @@
1
+ import type { Server } from 'bun';
2
+ import type { RuntimeHost, RuntimeHostStartOptions } from '../shared/runtime-host.js';
3
+ type BunRuntimeProvider = {
4
+ serve(options: Bun.Serve.Options<unknown>): Server<unknown>;
5
+ };
6
+ /**
7
+ * Bun runtime host that adapts the shared runtime lifecycle contract onto
8
+ * `Bun.serve()`.
9
+ *
10
+ * @remarks
11
+ * The injected runtime provider exists so tests and non-Bun call sites can
12
+ * construct the host without assuming `globalThis.Bun` is present. The provider
13
+ * returns `null` instead of `undefined` to keep that absence explicit at the
14
+ * host boundary.
15
+ */
16
+ export declare class BunRuntimeHost<WebSocketData = undefined> implements RuntimeHost<Server<WebSocketData>, Bun.Serve.Options<WebSocketData>> {
17
+ private readonly runtimeProvider;
18
+ /**
19
+ * Creates a Bun runtime host with an injectable runtime lookup.
20
+ *
21
+ * @remarks
22
+ * Production code uses the default `getBunRuntime()` lookup. Tests may inject a
23
+ * fake provider that either supplies a `serve()` implementation or returns
24
+ * `null` to verify the runtime-required failure path.
25
+ */
26
+ constructor(runtimeProvider?: () => BunRuntimeProvider | null);
27
+ /**
28
+ * Starts the Bun server using the already-composed serve options from the
29
+ * shared application bootstrap.
30
+ */
31
+ start(options: RuntimeHostStartOptions<Bun.Serve.Options<WebSocketData>>): Promise<Server<WebSocketData>>;
32
+ /**
33
+ * Stops the active Bun server immediately.
34
+ *
35
+ * @remarks
36
+ * The shared runtime-host contract accepts optional stop options, but Bun's
37
+ * server API already models the shutdown behavior directly. This host always
38
+ * uses Bun's forceful stop path so preview and embedded runtime shutdowns do
39
+ * not linger on open connections.
40
+ */
41
+ stop(server: Server<WebSocketData>): Promise<void>;
42
+ /**
43
+ * Resolves the externally reported runtime origin from the active server.
44
+ *
45
+ * @remarks
46
+ * Bun may finalize the hostname or port differently from the requested serve
47
+ * options. This method prefers the live server binding and only falls back to
48
+ * the requested options when Bun leaves a field unset.
49
+ */
50
+ getOrigin(server: Server<WebSocketData>, fallbackServeOptions: Bun.Serve.Options<WebSocketData>): string;
51
+ }
52
+ export {};
@@ -0,0 +1,56 @@
1
+ import { getBunRuntime } from "../../utils/runtime.js";
2
+ import { resolveServeRuntimeOrigin } from "../shared/runtime-app-bootstrap.js";
3
+ class BunRuntimeHost {
4
+ /**
5
+ * Creates a Bun runtime host with an injectable runtime lookup.
6
+ *
7
+ * @remarks
8
+ * Production code uses the default `getBunRuntime()` lookup. Tests may inject a
9
+ * fake provider that either supplies a `serve()` implementation or returns
10
+ * `null` to verify the runtime-required failure path.
11
+ */
12
+ constructor(runtimeProvider = () => getBunRuntime() ?? null) {
13
+ this.runtimeProvider = runtimeProvider;
14
+ }
15
+ runtimeProvider;
16
+ /**
17
+ * Starts the Bun server using the already-composed serve options from the
18
+ * shared application bootstrap.
19
+ */
20
+ async start(options) {
21
+ const bun = this.runtimeProvider();
22
+ if (!bun) {
23
+ throw new Error("Bun runtime is required for the Bun adapter");
24
+ }
25
+ return bun.serve(options.serveOptions);
26
+ }
27
+ /**
28
+ * Stops the active Bun server immediately.
29
+ *
30
+ * @remarks
31
+ * The shared runtime-host contract accepts optional stop options, but Bun's
32
+ * server API already models the shutdown behavior directly. This host always
33
+ * uses Bun's forceful stop path so preview and embedded runtime shutdowns do
34
+ * not linger on open connections.
35
+ */
36
+ async stop(server) {
37
+ server.stop(true);
38
+ }
39
+ /**
40
+ * Resolves the externally reported runtime origin from the active server.
41
+ *
42
+ * @remarks
43
+ * Bun may finalize the hostname or port differently from the requested serve
44
+ * options. This method prefers the live server binding and only falls back to
45
+ * the requested options when Bun leaves a field unset.
46
+ */
47
+ getOrigin(server, fallbackServeOptions) {
48
+ return resolveServeRuntimeOrigin({
49
+ hostname: server.hostname ?? fallbackServeOptions.hostname,
50
+ port: server.port ?? fallbackServeOptions.port
51
+ });
52
+ }
53
+ }
54
+ export {
55
+ BunRuntimeHost
56
+ };
@@ -1,13 +1,11 @@
1
1
  import type { Server, WebSocketHandler } from 'bun';
2
- import type { EcoPagesAppConfig } from '../../internal-types.js';
3
- import type { ApiHandler, ErrorHandler, StaticRoute } from '../../public-types.js';
2
+ import type { EcoPagesAppConfig } from '../../types/internal-types.js';
3
+ import type { ApiHandler, ErrorHandler, StaticRoute } from '../../types/public-types.js';
4
4
  import { SharedServerAdapter } from '../shared/server-adapter.js';
5
5
  import type { ServerAdapterResult } from '../abstract/server-adapter.js';
6
- import { ServerRouteHandler, type ServerRouteHandlerParams } from '../shared/server-route-handler.js';
7
- import { ServerStaticBuilder, type ServerStaticBuilderParams } from '../shared/server-static-builder';
8
- import { ClientBridge } from './client-bridge';
9
- import { HmrManager } from './hmr-manager';
10
- import { ServerLifecycle } from './server-lifecycle.js';
6
+ import type { StaticPreviewHost } from '../shared/static-preview-host.js';
7
+ import { ClientBridge } from './client-bridge.js';
8
+ import { HmrManager } from './hmr-manager.js';
11
9
  type BunServerInstance = Server<unknown>;
12
10
  type BunNativeServeOptions = Bun.Serve.Options<unknown>;
13
11
  export type BunServerRoutes = Bun.Serve.Routes<unknown, string>;
@@ -18,6 +16,15 @@ export type BunServeOptions = Omit<BunNativeServeOptions, 'fetch'> & {
18
16
  fetch?: (this: BunServerInstance, request: Request, server: BunServerInstance) => Promise<void | Response>;
19
17
  websocket?: WebSocketHandler<unknown>;
20
18
  };
19
+ /**
20
+ * Construction parameters for the Bun server adapter.
21
+ *
22
+ * @remarks
23
+ * Callers normally provide only the app-facing fields such as routes, handlers,
24
+ * and `serveOptions`. The transport collaborators remain optional here because
25
+ * `createBunServerAdapter()` fills in Bun-specific defaults before the concrete
26
+ * adapter instance is created.
27
+ */
21
28
  export interface BunServerAdapterParams {
22
29
  appConfig: EcoPagesAppConfig;
23
30
  runtimeOrigin: string;
@@ -28,11 +35,9 @@ export interface BunServerAdapterParams {
28
35
  options?: {
29
36
  watch?: boolean;
30
37
  };
31
- lifecycle?: ServerLifecycle;
32
- staticBuilderFactory?: (params: ServerStaticBuilderParams) => ServerStaticBuilder;
33
- routeHandlerFactory?: (params: ServerRouteHandlerParams) => ServerRouteHandler;
34
38
  hmrManager?: HmrManager;
35
39
  bridge?: ClientBridge;
40
+ previewHost?: StaticPreviewHost;
36
41
  }
37
42
  export interface BunServerAdapterResult extends ServerAdapterResult {
38
43
  getServerOptions: (options?: {
@@ -44,6 +49,16 @@ export interface BunServerAdapterResult extends ServerAdapterResult {
44
49
  completeInitialization: (server?: BunServerInstance | null) => Promise<void>;
45
50
  handleRequest: (request: Request) => Promise<Response>;
46
51
  }
52
+ /**
53
+ * Bun transport adapter that wires shared Ecopages request handling onto a live
54
+ * `Bun.serve()` runtime.
55
+ *
56
+ * @remarks
57
+ * The adapter owns Bun-specific concerns that do not exist in the shared server
58
+ * abstraction: websocket-backed HMR transport, runtime plugin registration, and
59
+ * preview-host startup for static builds. Routing, rendering, and response
60
+ * composition still delegate to the shared server adapter base.
61
+ */
47
62
  export declare class BunServerAdapter extends SharedServerAdapter<BunServerAdapterParams, BunServerAdapterResult> {
48
63
  appConfig: EcoPagesAppConfig;
49
64
  options: BunServerAdapterParams['options'];
@@ -52,24 +67,37 @@ export declare class BunServerAdapter extends SharedServerAdapter<BunServerAdapt
52
67
  protected staticRoutes: StaticRoute[];
53
68
  protected errorHandler?: ErrorHandler;
54
69
  private bridge;
55
- private lifecycle;
56
70
  hmrManager: HmrManager;
57
71
  private initializationPromise;
58
72
  private fullyInitialized;
59
73
  serverInstance: BunServerInstance | null;
60
- private readonly lifecycleFactory?;
61
- private readonly staticBuilderFactory?;
62
- private readonly routeHandlerFactory?;
63
- private readonly hmrManagerFactory?;
64
- private readonly bridgeFactory?;
65
- constructor({ appConfig, runtimeOrigin, serveOptions, apiHandlers, staticRoutes, errorHandler, options, lifecycle, staticBuilderFactory, routeHandlerFactory, hmrManager, bridge, }: BunServerAdapterParams);
66
- /**
67
- * Determines if HMR script should be injected.
68
- * Only injects in watch mode when HMR manager is enabled.
74
+ private readonly previewHost;
75
+ /**
76
+ * Creates a Bun server adapter with already-resolved runtime collaborators.
77
+ *
78
+ * @remarks
79
+ * The public params interface keeps `hmrManager`, `bridge`, and `previewHost`
80
+ * optional so factory callers can omit them. By the time the concrete adapter
81
+ * is constructed, those collaborators are mandatory because the adapter cannot
82
+ * initialize Bun HMR or preview flows without them.
83
+ */
84
+ constructor({ appConfig, runtimeOrigin, serveOptions, apiHandlers, staticRoutes, errorHandler, options, hmrManager, bridge, previewHost, }: BunServerAdapterParams & {
85
+ hmrManager: HmrManager;
86
+ bridge: ClientBridge;
87
+ previewHost: StaticPreviewHost;
88
+ });
89
+ /**
90
+ * Returns whether adapter-level HTML responses still need HMR runtime injection.
91
+ *
92
+ * @remarks
93
+ * Filesystem-routed pages are wrapped later in the shared route layer. This
94
+ * adapter-level check exists for explicit API handlers that return HTML and
95
+ * would otherwise bypass the route wrapper entirely.
69
96
  */
70
97
  private shouldInjectHmrScript;
71
98
  /**
72
- * Checks if a response contains HTML content.
99
+ * Delegates the HTML-response test to the shared response helper used by both
100
+ * adapters.
73
101
  */
74
102
  private isHtmlResponse;
75
103
  /**
@@ -78,20 +106,37 @@ export declare class BunServerAdapter extends SharedServerAdapter<BunServerAdapt
78
106
  */
79
107
  private maybeInjectHmrScript;
80
108
  /**
81
- * Initializes the server adapter's core components.
82
- * Delegates to ServerLifecycle for setup.
109
+ * Initializes the server adapter's core runtime components.
83
110
  */
84
111
  initialize(): Promise<void>;
85
112
  /**
86
- * Refreshes the router routes during watch mode.
113
+ * Copies the source `public` directory into the runtime output and ensures the
114
+ * HMR assets directory exists before any runtime bundles are emitted.
115
+ */
116
+ private prepareRuntimePublicDir;
117
+ /**
118
+ * Registers runtime plugins and propagates the final HMR manager into each
119
+ * integration.
120
+ *
121
+ * @remarks
122
+ * This is where Bun's runtime-plugin registration path meets the integration
123
+ * lifecycle. A failure here leaves the runtime partially bootstrapped, so the
124
+ * method logs the underlying error and rethrows instead of trying to limp on.
125
+ */
126
+ private initializeRuntimePlugins;
127
+ /**
128
+ * Rebuilds the shared routing state and hot-reloads the live Bun server when a
129
+ * watched route file changes.
87
130
  */
88
131
  private refreshRouterRoutes;
89
132
  private watch;
90
133
  /**
91
- * Retrieves the current server options, optionally enabling HMR.
92
- * If HMR is enabled, modifies fetch to handle WebSocket upgrades and serve HMR runtime.
93
- * Ensures original fetch logic is preserved and called for non-HMR requests.
94
- * @param options.enableHmr Whether to enable Hot Module Replacement
134
+ * Builds the `Bun.serve()` options for the current adapter state.
135
+ *
136
+ * @remarks
137
+ * The HMR-enabled variant wraps the base fetch handler so one Bun server can
138
+ * serve normal requests, accept HMR websocket upgrades, and expose the HMR
139
+ * runtime asset without splitting responsibility across separate listeners.
95
140
  */
96
141
  getServerOptions({ enableHmr }?: {
97
142
  enableHmr?: boolean | undefined;
@@ -104,8 +149,12 @@ export declare class BunServerAdapter extends SharedServerAdapter<BunServerAdapt
104
149
  */
105
150
  private retrieveBodyFromRequest;
106
151
  /**
107
- * Creates complete server configuration with request handling.
108
- * @returns Server options ready for Bun.serve()
152
+ * Composes the base Bun server settings that all runtime modes build from.
153
+ *
154
+ * @remarks
155
+ * This method centralizes the Bun-specific error boundary. It preserves the
156
+ * shared route pipeline while still allowing adapter-level custom error-handler
157
+ * execution and `HttpError` passthrough.
109
158
  */
110
159
  private buildServerSettings;
111
160
  /**
@@ -122,7 +171,12 @@ export declare class BunServerAdapter extends SharedServerAdapter<BunServerAdapt
122
171
  */
123
172
  completeInitialization(server?: BunServerInstance | null): Promise<void>;
124
173
  /**
125
- * Performs complete server setup including routing, watchers, and HMR.
174
+ * Performs the one-time post-bind initialization path for Bun servers.
175
+ *
176
+ * @remarks
177
+ * This is intentionally split from `initialize()` because shared route handling
178
+ * and file watching need the live server instance to exist before Bun can
179
+ * reload updated route handlers in place.
126
180
  */
127
181
  private _performInitialization;
128
182
  /**
@@ -149,7 +203,14 @@ export declare class BunServerAdapter extends SharedServerAdapter<BunServerAdapt
149
203
  private handleNoMatch;
150
204
  }
151
205
  /**
152
- * Factory function to create a Bun server adapter
206
+ * Creates the Bun server adapter and fills in the runtime-specific collaborators
207
+ * that Bun callers usually leave implicit.
208
+ *
209
+ * @remarks
210
+ * This is the canonical entry point for Bun server-adapter construction. It
211
+ * guarantees that the concrete adapter receives a Bun websocket bridge, HMR
212
+ * manager, and preview host even though those dependencies are optional on the
213
+ * public params type.
153
214
  */
154
215
  export declare function createBunServerAdapter(params: BunServerAdapterParams): Promise<BunServerAdapterResult>;
155
216
  export {};