@ecopages/core 0.2.0-alpha.54 → 0.2.0-alpha.55

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 (594) hide show
  1. package/package.json +196 -91
  2. package/src/adapters/abstract/application-adapter.d.ts +194 -0
  3. package/src/adapters/abstract/application-adapter.js +121 -0
  4. package/src/adapters/abstract/router-adapter.d.ts +26 -0
  5. package/src/adapters/abstract/router-adapter.js +5 -0
  6. package/src/adapters/abstract/server-adapter.d.ts +69 -0
  7. package/src/adapters/abstract/server-adapter.js +15 -0
  8. package/src/adapters/bun/client-bridge.d.ts +34 -0
  9. package/src/adapters/bun/client-bridge.js +48 -0
  10. package/src/adapters/bun/create-app.d.ts +60 -0
  11. package/src/adapters/bun/create-app.js +140 -0
  12. package/src/adapters/bun/hmr-manager.d.ts +47 -0
  13. package/src/adapters/bun/hmr-manager.js +58 -0
  14. package/src/adapters/bun/index.d.ts +2 -0
  15. package/src/adapters/bun/index.js +8 -0
  16. package/src/adapters/bun/runtime-host.d.ts +52 -0
  17. package/src/adapters/bun/runtime-host.js +56 -0
  18. package/src/adapters/bun/server-adapter.d.ts +223 -0
  19. package/src/adapters/bun/server-adapter.js +450 -0
  20. package/src/adapters/bun/static-preview-host.d.ts +28 -0
  21. package/src/adapters/bun/static-preview-host.js +45 -0
  22. package/src/adapters/create-app.d.ts +20 -0
  23. package/src/adapters/create-app.js +66 -0
  24. package/src/adapters/index.d.ts +2 -0
  25. package/src/adapters/index.js +8 -0
  26. package/src/adapters/node/create-app.d.ts +24 -0
  27. package/src/adapters/node/create-app.js +92 -0
  28. package/src/adapters/node/http-request-bridge.d.ts +57 -0
  29. package/src/adapters/node/http-request-bridge.js +118 -0
  30. package/src/adapters/node/node-client-bridge.d.ts +26 -0
  31. package/src/adapters/node/node-client-bridge.js +66 -0
  32. package/src/adapters/node/node-hmr-manager.d.ts +52 -0
  33. package/src/adapters/node/node-hmr-manager.js +49 -0
  34. package/src/adapters/node/runtime-host.d.ts +57 -0
  35. package/src/adapters/node/runtime-host.js +92 -0
  36. package/src/adapters/node/server-adapter-dependencies.d.ts +19 -0
  37. package/src/adapters/node/server-adapter-dependencies.js +18 -0
  38. package/src/adapters/node/server-adapter.d.ts +138 -0
  39. package/src/adapters/node/server-adapter.js +313 -0
  40. package/src/adapters/node/static-content-server.d.ts +60 -0
  41. package/src/adapters/node/static-content-server.js +194 -0
  42. package/src/adapters/node/static-preview-host.d.ts +55 -0
  43. package/src/adapters/node/static-preview-host.js +68 -0
  44. package/src/adapters/shared/api-response.d.ts +52 -0
  45. package/src/adapters/shared/api-response.js +96 -0
  46. package/src/adapters/shared/application-adapter.d.ts +18 -0
  47. package/src/adapters/shared/application-adapter.js +90 -0
  48. package/src/adapters/shared/define-api-handler.d.ts +25 -0
  49. package/src/adapters/shared/define-api-handler.js +15 -0
  50. package/src/adapters/shared/explicit-static-render-preparation.d.ts +25 -0
  51. package/src/adapters/shared/explicit-static-render-preparation.js +26 -0
  52. package/src/adapters/shared/explicit-static-route-matcher.d.ts +41 -0
  53. package/src/adapters/shared/explicit-static-route-matcher.js +101 -0
  54. package/src/adapters/shared/file-route-middleware-pipeline.d.ts +62 -0
  55. package/src/adapters/shared/file-route-middleware-pipeline.js +90 -0
  56. package/src/adapters/shared/fs-server-response-factory.d.ts +23 -0
  57. package/src/adapters/shared/fs-server-response-factory.js +81 -0
  58. package/src/adapters/shared/fs-server-response-matcher.d.ts +75 -0
  59. package/src/adapters/shared/fs-server-response-matcher.js +186 -0
  60. package/src/adapters/shared/hmr-entrypoint-registrar.d.ts +55 -0
  61. package/src/adapters/shared/hmr-entrypoint-registrar.js +87 -0
  62. package/src/adapters/shared/hmr-html-response.d.ts +22 -0
  63. package/src/adapters/shared/hmr-html-response.js +33 -0
  64. package/src/adapters/shared/render-context.d.ts +16 -0
  65. package/src/adapters/shared/render-context.js +93 -0
  66. package/src/adapters/shared/runtime-app-bootstrap.d.ts +26 -0
  67. package/src/adapters/shared/runtime-app-bootstrap.js +46 -0
  68. package/src/adapters/shared/runtime-host.d.ts +12 -0
  69. package/src/adapters/shared/runtime-host.js +0 -0
  70. package/src/adapters/shared/server-adapter.d.ts +108 -0
  71. package/src/adapters/shared/server-adapter.js +436 -0
  72. package/src/adapters/shared/server-route-handler.d.ts +89 -0
  73. package/src/adapters/shared/server-route-handler.js +111 -0
  74. package/src/adapters/shared/server-static-builder.d.ts +71 -0
  75. package/src/adapters/shared/server-static-builder.js +100 -0
  76. package/src/adapters/shared/shared-hmr-manager.d.ts +59 -0
  77. package/src/adapters/shared/shared-hmr-manager.js +241 -0
  78. package/src/adapters/shared/static-preview-host.d.ts +10 -0
  79. package/src/adapters/shared/static-preview-host.js +0 -0
  80. package/src/build/browser-runtime-manifest.d.ts +31 -0
  81. package/src/build/browser-runtime-manifest.js +61 -0
  82. package/src/build/{browser-runtime-plugin-helpers.ts → browser-runtime-plugin-helpers.d.ts} +2 -13
  83. package/src/build/browser-runtime-plugin-helpers.js +14 -0
  84. package/src/build/browser-runtime-plugin.d.ts +78 -0
  85. package/src/build/browser-runtime-plugin.js +172 -0
  86. package/src/build/build-adapter.d.ts +504 -0
  87. package/src/build/build-adapter.js +240 -0
  88. package/src/build/build-manifest.d.ts +33 -0
  89. package/src/build/build-manifest.js +49 -0
  90. package/src/build/build-types.d.ts +57 -0
  91. package/src/build/build-types.js +0 -0
  92. package/src/build/rolldown-build-adapter.d.ts +32 -0
  93. package/src/build/rolldown-build-adapter.js +260 -0
  94. package/src/build/rolldown-plugin-bridge.d.ts +50 -0
  95. package/src/build/rolldown-plugin-bridge.js +194 -0
  96. package/src/build/{runtime-build-executor.ts → runtime-build-executor.d.ts} +3 -19
  97. package/src/build/runtime-build-executor.js +19 -0
  98. package/src/build/runtime-build-output-normalizer.d.ts +3 -0
  99. package/src/build/runtime-build-output-normalizer.js +111 -0
  100. package/src/build/serialized-build-executor.d.ts +64 -0
  101. package/src/build/serialized-build-executor.js +63 -0
  102. package/src/build/server-side-css-shim-plugin.d.ts +41 -0
  103. package/src/build/server-side-css-shim-plugin.js +35 -0
  104. package/src/cache/{index.ts → index.d.ts} +1 -1
  105. package/src/cache/index.js +6 -0
  106. package/src/cache/module-parse-cache.d.ts +65 -0
  107. package/src/cache/module-parse-cache.js +75 -0
  108. package/src/config/config-builder.d.ts +252 -0
  109. package/src/config/config-builder.js +589 -0
  110. package/src/config/{constants.ts → constants.d.ts} +13 -22
  111. package/src/config/constants.js +25 -0
  112. package/src/dev/host-runtime.d.ts +10 -0
  113. package/src/dev/host-runtime.js +24 -0
  114. package/src/dev/sc-server.d.ts +30 -0
  115. package/src/dev/sc-server.js +111 -0
  116. package/src/eco/eco.browser.d.ts +2 -0
  117. package/src/eco/eco.browser.js +88 -0
  118. package/src/eco/eco.d.ts +9 -0
  119. package/src/eco/eco.js +119 -0
  120. package/src/eco/eco.types.d.ts +230 -0
  121. package/src/eco/eco.types.js +0 -0
  122. package/src/eco/eco.utils.d.ts +1 -0
  123. package/src/eco/eco.utils.js +10 -0
  124. package/src/eco/global-injector-map.d.ts +16 -0
  125. package/src/eco/global-injector-map.js +80 -0
  126. package/src/eco/lazy-injector-map.d.ts +8 -0
  127. package/src/eco/lazy-injector-map.js +70 -0
  128. package/src/eco/module-dependencies.d.ts +18 -0
  129. package/src/eco/module-dependencies.js +49 -0
  130. package/src/errors/http-error.d.ts +31 -0
  131. package/src/errors/http-error.js +50 -0
  132. package/src/errors/index.d.ts +3 -0
  133. package/src/errors/index.js +6 -0
  134. package/src/errors/locals-access-error.d.ts +4 -0
  135. package/src/errors/locals-access-error.js +9 -0
  136. package/src/global/app-logger.d.ts +2 -0
  137. package/src/global/app-logger.js +6 -0
  138. package/src/hmr/client/hmr-runtime.d.ts +5 -0
  139. package/src/hmr/client/hmr-runtime.js +117 -0
  140. package/src/hmr/hmr-strategy.d.ts +162 -0
  141. package/src/hmr/hmr-strategy.js +44 -0
  142. package/src/hmr/hmr.postcss.test.e2e.d.ts +1 -0
  143. package/src/hmr/hmr.postcss.test.e2e.js +31 -0
  144. package/src/hmr/hmr.test.e2e.d.ts +1 -0
  145. package/src/hmr/hmr.test.e2e.js +43 -0
  146. package/src/hmr/strategies/default-hmr-strategy.d.ts +43 -0
  147. package/src/hmr/strategies/default-hmr-strategy.js +34 -0
  148. package/src/hmr/strategies/js-hmr-strategy.d.ts +134 -0
  149. package/src/hmr/strategies/js-hmr-strategy.js +173 -0
  150. package/src/index.browser.d.ts +3 -0
  151. package/src/index.browser.js +4 -0
  152. package/src/index.d.ts +6 -0
  153. package/src/index.js +21 -0
  154. package/src/integrations/ghtml/ghtml-renderer.d.ts +16 -0
  155. package/src/integrations/ghtml/ghtml-renderer.js +57 -0
  156. package/src/integrations/ghtml/ghtml.constants.d.ts +1 -0
  157. package/src/integrations/ghtml/ghtml.constants.js +4 -0
  158. package/src/integrations/ghtml/ghtml.plugin.d.ts +16 -0
  159. package/src/integrations/ghtml/ghtml.plugin.js +20 -0
  160. package/src/plugins/alias-resolver-cache.d.ts +68 -0
  161. package/src/plugins/alias-resolver-cache.js +106 -0
  162. package/src/plugins/alias-resolver-plugin.d.ts +6 -0
  163. package/src/plugins/alias-resolver-plugin.js +65 -0
  164. package/src/plugins/eco-component-meta-plugin.d.ts +108 -0
  165. package/src/plugins/eco-component-meta-plugin.js +175 -0
  166. package/src/plugins/foreign-jsx-override-plugin.d.ts +33 -0
  167. package/src/plugins/foreign-jsx-override-plugin.js +41 -0
  168. package/src/plugins/integration-plugin.d.ts +230 -0
  169. package/src/plugins/integration-plugin.js +201 -0
  170. package/src/plugins/processor.d.ts +97 -0
  171. package/src/plugins/processor.js +141 -0
  172. package/src/plugins/{runtime-capability.ts → runtime-capability.d.ts} +3 -8
  173. package/src/plugins/runtime-capability.js +0 -0
  174. package/src/plugins/source-transform.d.ts +46 -0
  175. package/src/plugins/source-transform.js +71 -0
  176. package/src/route-renderer/orchestration/component-render-context.d.ts +97 -0
  177. package/src/route-renderer/orchestration/component-render-context.js +147 -0
  178. package/src/route-renderer/orchestration/declared-ownership-graph.d.ts +18 -0
  179. package/src/route-renderer/orchestration/declared-ownership-graph.js +34 -0
  180. package/src/route-renderer/orchestration/foreign-subtree-execution.service.d.ts +110 -0
  181. package/src/route-renderer/orchestration/foreign-subtree-execution.service.js +233 -0
  182. package/src/route-renderer/orchestration/integration-renderer.d.ts +534 -0
  183. package/src/route-renderer/orchestration/integration-renderer.js +991 -0
  184. package/src/route-renderer/orchestration/ownership-planning.service.d.ts +24 -0
  185. package/src/route-renderer/orchestration/ownership-planning.service.js +63 -0
  186. package/src/route-renderer/orchestration/ownership-validation.service.d.ts +29 -0
  187. package/src/route-renderer/orchestration/ownership-validation.service.js +53 -0
  188. package/src/route-renderer/orchestration/processed-asset-dedupe.d.ts +3 -0
  189. package/src/route-renderer/orchestration/processed-asset-dedupe.js +27 -0
  190. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.d.ts +91 -0
  191. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.js +170 -0
  192. package/src/route-renderer/orchestration/render-output.utils.d.ts +66 -0
  193. package/src/route-renderer/orchestration/render-output.utils.js +171 -0
  194. package/src/route-renderer/orchestration/route-render-orchestrator.d.ts +156 -0
  195. package/src/route-renderer/orchestration/route-render-orchestrator.js +577 -0
  196. package/src/route-renderer/orchestration/template-serialization.d.ts +38 -0
  197. package/src/route-renderer/orchestration/template-serialization.js +45 -0
  198. package/src/route-renderer/page-loading/component-dependency-collection.d.ts +37 -0
  199. package/src/route-renderer/page-loading/component-dependency-collection.js +132 -0
  200. package/src/route-renderer/page-loading/declared-asset-collection.d.ts +24 -0
  201. package/src/route-renderer/page-loading/declared-asset-collection.js +106 -0
  202. package/src/route-renderer/page-loading/dependency-resolver.d.ts +35 -0
  203. package/src/route-renderer/page-loading/dependency-resolver.js +115 -0
  204. package/src/route-renderer/page-loading/ecopages-virtual-imports.d.ts +11 -0
  205. package/src/route-renderer/page-loading/ecopages-virtual-imports.js +57 -0
  206. package/src/route-renderer/page-loading/lazy-entry-collection.d.ts +45 -0
  207. package/src/route-renderer/page-loading/lazy-entry-collection.js +105 -0
  208. package/src/route-renderer/page-loading/lazy-trigger-planning.d.ts +19 -0
  209. package/src/route-renderer/page-loading/lazy-trigger-planning.js +40 -0
  210. package/src/route-renderer/page-loading/module-declaration-aggregation.d.ts +5 -0
  211. package/src/route-renderer/page-loading/module-declaration-aggregation.js +33 -0
  212. package/src/route-renderer/page-loading/module-declaration-scripts.d.ts +3 -0
  213. package/src/route-renderer/page-loading/module-declaration-scripts.js +18 -0
  214. package/src/route-renderer/page-loading/page-dependency-bundling.d.ts +13 -0
  215. package/src/route-renderer/page-loading/page-dependency-bundling.js +137 -0
  216. package/src/route-renderer/page-loading/page-module-loader.d.ts +90 -0
  217. package/src/route-renderer/page-loading/page-module-loader.js +127 -0
  218. package/src/route-renderer/route-renderer.d.ts +69 -0
  219. package/src/route-renderer/route-renderer.js +80 -0
  220. package/src/router/client/link-intent.js +34 -0
  221. package/src/router/client/link-intent.test.browser.d.ts +1 -0
  222. package/src/router/client/link-intent.test.browser.js +43 -0
  223. package/src/router/client/navigation-coordinator.d.ts +169 -0
  224. package/src/router/client/navigation-coordinator.js +215 -0
  225. package/src/router/server/route-registry.d.ts +78 -0
  226. package/src/router/server/route-registry.js +262 -0
  227. package/src/services/assets/asset-processing-service/asset-dependency-keys.d.ts +3 -0
  228. package/src/services/assets/asset-processing-service/asset-dependency-keys.js +56 -0
  229. package/src/services/assets/asset-processing-service/asset-processing.service.d.ts +103 -0
  230. package/src/services/assets/asset-processing-service/asset-processing.service.js +285 -0
  231. package/src/services/assets/asset-processing-service/asset.factory.d.ts +17 -0
  232. package/src/services/assets/asset-processing-service/asset.factory.js +82 -0
  233. package/src/services/assets/asset-processing-service/assets.types.d.ts +103 -0
  234. package/src/services/assets/asset-processing-service/assets.types.js +0 -0
  235. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.d.ts +57 -0
  236. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.js +49 -0
  237. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.d.ts +20 -0
  238. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.js +41 -0
  239. package/src/services/assets/asset-processing-service/grouped-content-bundles.d.ts +30 -0
  240. package/src/services/assets/asset-processing-service/grouped-content-bundles.js +65 -0
  241. package/src/services/assets/asset-processing-service/index.d.ts +6 -0
  242. package/src/services/assets/asset-processing-service/index.js +6 -0
  243. package/src/services/assets/asset-processing-service/page-package.d.ts +6 -0
  244. package/src/services/assets/asset-processing-service/page-package.js +80 -0
  245. package/src/services/assets/asset-processing-service/{processor.interface.ts → processor.interface.d.ts} +5 -10
  246. package/src/services/assets/asset-processing-service/processor.interface.js +6 -0
  247. package/src/services/assets/asset-processing-service/processor.registry.d.ts +8 -0
  248. package/src/services/assets/asset-processing-service/processor.registry.js +15 -0
  249. package/src/services/assets/asset-processing-service/processors/base/base-processor.d.ts +24 -0
  250. package/src/services/assets/asset-processing-service/processors/base/base-processor.js +65 -0
  251. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.d.ts +22 -0
  252. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.js +136 -0
  253. package/src/services/assets/asset-processing-service/processors/index.d.ts +5 -0
  254. package/src/services/assets/asset-processing-service/processors/index.js +5 -0
  255. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.d.ts +6 -0
  256. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.js +120 -0
  257. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.d.ts +9 -0
  258. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.js +97 -0
  259. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.d.ts +42 -0
  260. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.js +126 -0
  261. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.d.ts +8 -0
  262. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +59 -0
  263. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.d.ts +9 -0
  264. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.js +69 -0
  265. package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.d.ts +18 -0
  266. package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.js +45 -0
  267. package/src/services/assets/browser-bundle.service.d.ts +73 -0
  268. package/src/services/assets/browser-bundle.service.js +41 -0
  269. package/src/services/cache/cache.types.d.ts +107 -0
  270. package/src/services/cache/cache.types.js +0 -0
  271. package/src/services/cache/index.d.ts +7 -0
  272. package/src/services/cache/index.js +7 -0
  273. package/src/services/cache/memory-cache-store.d.ts +42 -0
  274. package/src/services/cache/memory-cache-store.js +98 -0
  275. package/src/services/cache/page-cache-service.d.ts +70 -0
  276. package/src/services/cache/page-cache-service.js +152 -0
  277. package/src/services/cache/page-request-cache-coordinator.service.d.ts +75 -0
  278. package/src/services/cache/page-request-cache-coordinator.service.js +109 -0
  279. package/src/services/html/html-rewriter-provider.service.d.ts +40 -0
  280. package/src/services/html/html-rewriter-provider.service.js +68 -0
  281. package/src/services/html/html-transformer.service.d.ts +96 -0
  282. package/src/services/html/html-transformer.service.js +287 -0
  283. package/src/services/invalidation/development-invalidation.service.d.ts +74 -0
  284. package/src/services/invalidation/development-invalidation.service.js +190 -0
  285. package/src/services/module-loading/app-module-loader.service.d.ts +7 -0
  286. package/src/services/module-loading/app-module-loader.service.js +0 -0
  287. package/src/services/module-loading/app-server-module-transpiler.service.d.ts +24 -0
  288. package/src/services/module-loading/app-server-module-transpiler.service.js +130 -0
  289. package/src/services/module-loading/host-module-loader-registry.d.ts +4 -0
  290. package/src/services/module-loading/host-module-loader-registry.js +15 -0
  291. package/src/services/module-loading/{module-loading-types.ts → module-loading-types.d.ts} +0 -1
  292. package/src/services/module-loading/module-loading-types.js +0 -0
  293. package/src/services/module-loading/page-module-import.service.d.ts +95 -0
  294. package/src/services/module-loading/page-module-import.service.js +193 -0
  295. package/src/services/module-loading/server-module-transpiler.service.d.ts +63 -0
  296. package/src/services/module-loading/server-module-transpiler.service.js +64 -0
  297. package/src/services/module-loading/source-module-support.d.ts +5 -0
  298. package/src/services/module-loading/source-module-support.js +8 -0
  299. package/src/services/runtime-state/dev-graph.service.d.ts +118 -0
  300. package/src/services/runtime-state/dev-graph.service.js +162 -0
  301. package/src/services/runtime-state/entrypoint-dependency-graph.service.d.ts +41 -0
  302. package/src/services/runtime-state/entrypoint-dependency-graph.service.js +85 -0
  303. package/src/services/runtime-state/server-invalidation-state.service.d.ts +26 -0
  304. package/src/services/runtime-state/server-invalidation-state.service.js +35 -0
  305. package/src/services/validation/schema-validation-service.d.ts +122 -0
  306. package/src/services/validation/schema-validation-service.js +101 -0
  307. package/src/services/validation/{standard-schema.types.ts → standard-schema.types.d.ts} +17 -20
  308. package/src/services/validation/standard-schema.types.js +0 -0
  309. package/src/static-site-generator/static-site-generator.d.ts +104 -0
  310. package/src/static-site-generator/static-site-generator.js +316 -0
  311. package/src/types/internal-types.d.ts +232 -0
  312. package/src/types/internal-types.js +0 -0
  313. package/src/types/public-types.d.ts +1307 -0
  314. package/src/types/public-types.js +0 -0
  315. package/src/utils/deep-merge.d.ts +14 -0
  316. package/src/utils/deep-merge.js +32 -0
  317. package/src/utils/hash.d.ts +1 -0
  318. package/src/utils/hash.js +7 -0
  319. package/src/utils/html-escaping.d.ts +7 -0
  320. package/src/utils/html-escaping.js +6 -0
  321. package/src/utils/html.js +4 -0
  322. package/src/utils/invariant.d.ts +5 -0
  323. package/src/utils/invariant.js +11 -0
  324. package/src/utils/locals-utils.d.ts +15 -0
  325. package/src/utils/locals-utils.js +24 -0
  326. package/src/utils/parse-cli-args.d.ts +27 -0
  327. package/src/utils/parse-cli-args.js +62 -0
  328. package/src/utils/path-utils.module.d.ts +5 -0
  329. package/src/utils/path-utils.module.js +14 -0
  330. package/src/utils/resolve-work-dir.d.ts +11 -0
  331. package/src/utils/resolve-work-dir.js +31 -0
  332. package/src/utils/runtime.d.ts +11 -0
  333. package/src/utils/runtime.js +40 -0
  334. package/src/utils/server-utils.module.d.ts +19 -0
  335. package/src/utils/server-utils.module.js +56 -0
  336. package/src/watchers/project-watcher.d.ts +136 -0
  337. package/src/watchers/project-watcher.js +275 -0
  338. package/src/watchers/project-watcher.test-helpers.d.ts +4 -0
  339. package/src/watchers/project-watcher.test-helpers.js +52 -0
  340. package/src/adapters/abstract/application-adapter.test.ts +0 -218
  341. package/src/adapters/abstract/application-adapter.ts +0 -379
  342. package/src/adapters/abstract/router-adapter.ts +0 -30
  343. package/src/adapters/abstract/server-adapter.ts +0 -79
  344. package/src/adapters/bun/client-bridge.ts +0 -62
  345. package/src/adapters/bun/create-app.ts +0 -214
  346. package/src/adapters/bun/hmr-manager.test.ts +0 -265
  347. package/src/adapters/bun/hmr-manager.ts +0 -88
  348. package/src/adapters/bun/index.ts +0 -2
  349. package/src/adapters/bun/runtime-host.ts +0 -76
  350. package/src/adapters/bun/server-adapter.ts +0 -605
  351. package/src/adapters/bun/static-preview-host.ts +0 -70
  352. package/src/adapters/create-app.test.ts +0 -10
  353. package/src/adapters/create-app.ts +0 -91
  354. package/src/adapters/index.ts +0 -2
  355. package/src/adapters/node/create-app.test.ts +0 -76
  356. package/src/adapters/node/create-app.ts +0 -116
  357. package/src/adapters/node/http-request-bridge.test.ts +0 -146
  358. package/src/adapters/node/http-request-bridge.ts +0 -176
  359. package/src/adapters/node/node-client-bridge.test.ts +0 -198
  360. package/src/adapters/node/node-client-bridge.ts +0 -79
  361. package/src/adapters/node/node-hmr-manager.test.ts +0 -374
  362. package/src/adapters/node/node-hmr-manager.ts +0 -72
  363. package/src/adapters/node/runtime-host.test.ts +0 -49
  364. package/src/adapters/node/runtime-host.ts +0 -113
  365. package/src/adapters/node/server-adapter-dependencies.ts +0 -28
  366. package/src/adapters/node/server-adapter.test.ts +0 -84
  367. package/src/adapters/node/server-adapter.ts +0 -423
  368. package/src/adapters/node/static-content-server.test.ts +0 -60
  369. package/src/adapters/node/static-content-server.ts +0 -239
  370. package/src/adapters/node/static-preview-host.test.ts +0 -89
  371. package/src/adapters/node/static-preview-host.ts +0 -101
  372. package/src/adapters/shared/api-response.test.ts +0 -97
  373. package/src/adapters/shared/api-response.ts +0 -104
  374. package/src/adapters/shared/application-adapter.ts +0 -199
  375. package/src/adapters/shared/define-api-handler.ts +0 -66
  376. package/src/adapters/shared/explicit-static-render-preparation.ts +0 -58
  377. package/src/adapters/shared/explicit-static-route-matcher.test.ts +0 -381
  378. package/src/adapters/shared/explicit-static-route-matcher.ts +0 -131
  379. package/src/adapters/shared/file-route-middleware-pipeline.test.ts +0 -85
  380. package/src/adapters/shared/file-route-middleware-pipeline.ts +0 -118
  381. package/src/adapters/shared/fs-server-response-factory.test.ts +0 -176
  382. package/src/adapters/shared/fs-server-response-factory.ts +0 -96
  383. package/src/adapters/shared/fs-server-response-matcher.test.ts +0 -311
  384. package/src/adapters/shared/fs-server-response-matcher.ts +0 -240
  385. package/src/adapters/shared/hmr-entrypoint-registrar.ts +0 -149
  386. package/src/adapters/shared/hmr-html-response.ts +0 -54
  387. package/src/adapters/shared/hmr-manager.contract.test.ts +0 -228
  388. package/src/adapters/shared/hmr-manager.dispatch.test.ts +0 -229
  389. package/src/adapters/shared/render-context.test.ts +0 -244
  390. package/src/adapters/shared/render-context.ts +0 -161
  391. package/src/adapters/shared/runtime-app-bootstrap.test.ts +0 -96
  392. package/src/adapters/shared/runtime-app-bootstrap.ts +0 -72
  393. package/src/adapters/shared/runtime-host.ts +0 -11
  394. package/src/adapters/shared/server-adapter.test.ts +0 -130
  395. package/src/adapters/shared/server-adapter.ts +0 -571
  396. package/src/adapters/shared/server-route-handler.test.ts +0 -112
  397. package/src/adapters/shared/server-route-handler.ts +0 -153
  398. package/src/adapters/shared/server-static-builder.test.ts +0 -338
  399. package/src/adapters/shared/server-static-builder.ts +0 -170
  400. package/src/adapters/shared/shared-hmr-manager.ts +0 -298
  401. package/src/adapters/shared/static-preview-host.ts +0 -12
  402. package/src/build/browser-runtime-manifest.test.ts +0 -121
  403. package/src/build/browser-runtime-manifest.ts +0 -105
  404. package/src/build/browser-runtime-plugin-helpers.test.ts +0 -49
  405. package/src/build/browser-runtime-plugin.test.ts +0 -256
  406. package/src/build/browser-runtime-plugin.ts +0 -306
  407. package/src/build/build-adapter.test.ts +0 -463
  408. package/src/build/build-adapter.ts +0 -788
  409. package/src/build/build-manifest.ts +0 -79
  410. package/src/build/build-types.ts +0 -83
  411. package/src/build/rolldown-build-adapter.test.ts +0 -352
  412. package/src/build/rolldown-build-adapter.ts +0 -363
  413. package/src/build/rolldown-plugin-bridge.test.ts +0 -256
  414. package/src/build/rolldown-plugin-bridge.ts +0 -309
  415. package/src/build/runtime-build-executor.test.ts +0 -130
  416. package/src/build/runtime-build-output-normalizer.ts +0 -137
  417. package/src/build/serialized-build-executor.test.ts +0 -96
  418. package/src/build/serialized-build-executor.ts +0 -90
  419. package/src/build/server-side-css-shim-plugin.ts +0 -77
  420. package/src/cache/module-parse-cache.test.ts +0 -73
  421. package/src/cache/module-parse-cache.ts +0 -137
  422. package/src/config/config-builder.test.ts +0 -456
  423. package/src/config/config-builder.ts +0 -728
  424. package/src/config/config-builder.typecheck.test.ts +0 -96
  425. package/src/dev/host-runtime.ts +0 -34
  426. package/src/dev/sc-server.ts +0 -143
  427. package/src/eco/eco.browser.test.ts +0 -43
  428. package/src/eco/eco.browser.ts +0 -137
  429. package/src/eco/eco.test.ts +0 -781
  430. package/src/eco/eco.ts +0 -262
  431. package/src/eco/eco.types.ts +0 -293
  432. package/src/eco/eco.utils.test.ts +0 -219
  433. package/src/eco/eco.utils.ts +0 -5
  434. package/src/eco/global-injector-map.test.ts +0 -42
  435. package/src/eco/global-injector-map.ts +0 -112
  436. package/src/eco/lazy-injector-map.test.ts +0 -66
  437. package/src/eco/lazy-injector-map.ts +0 -120
  438. package/src/eco/module-dependencies.test.ts +0 -30
  439. package/src/eco/module-dependencies.ts +0 -75
  440. package/src/errors/http-error.test.ts +0 -134
  441. package/src/errors/http-error.ts +0 -72
  442. package/src/errors/index.ts +0 -3
  443. package/src/errors/locals-access-error.ts +0 -7
  444. package/src/global/app-logger.ts +0 -4
  445. package/src/global/utils.test.ts +0 -12
  446. 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
  447. package/src/hmr/client/__screenshots__/hmr-runtime.test.browser.ts/HMR-Runtime-HMR-Server-Integration-should-load-fixture-app-page-1.png +0 -0
  448. package/src/hmr/client/__screenshots__/hmr-runtime.test.browser.ts/HMR-Runtime-WebSocket-Connection-should-connect-to-correct-HMR-endpoint-1.png +0 -0
  449. package/src/hmr/client/hmr-runtime.ts +0 -162
  450. package/src/hmr/hmr-strategy.test.ts +0 -124
  451. package/src/hmr/hmr-strategy.ts +0 -177
  452. package/src/hmr/hmr.postcss.test.e2e.ts +0 -41
  453. package/src/hmr/hmr.test.e2e.ts +0 -66
  454. package/src/hmr/strategies/default-hmr-strategy.ts +0 -60
  455. package/src/hmr/strategies/js-hmr-strategy.test.ts +0 -344
  456. package/src/hmr/strategies/js-hmr-strategy.ts +0 -307
  457. package/src/index.browser.ts +0 -3
  458. package/src/index.ts +0 -15
  459. package/src/integrations/ghtml/ghtml-renderer.test.ts +0 -253
  460. package/src/integrations/ghtml/ghtml-renderer.ts +0 -87
  461. package/src/integrations/ghtml/ghtml.constants.ts +0 -1
  462. package/src/integrations/ghtml/ghtml.plugin.ts +0 -28
  463. package/src/plugins/alias-resolver-cache.test.ts +0 -110
  464. package/src/plugins/alias-resolver-cache.ts +0 -145
  465. package/src/plugins/alias-resolver-plugin.test.ts +0 -41
  466. package/src/plugins/alias-resolver-plugin.ts +0 -75
  467. package/src/plugins/eco-component-meta-plugin.test.ts +0 -421
  468. package/src/plugins/eco-component-meta-plugin.ts +0 -518
  469. package/src/plugins/foreign-jsx-override-plugin.test.ts +0 -65
  470. package/src/plugins/foreign-jsx-override-plugin.ts +0 -76
  471. package/src/plugins/integration-plugin.test.ts +0 -151
  472. package/src/plugins/integration-plugin.ts +0 -344
  473. package/src/plugins/processor.test.ts +0 -148
  474. package/src/plugins/processor.ts +0 -257
  475. package/src/plugins/source-transform.test.ts +0 -82
  476. package/src/plugins/source-transform.ts +0 -123
  477. package/src/route-renderer/orchestration/component-render-context.ts +0 -338
  478. package/src/route-renderer/orchestration/declared-ownership-graph.ts +0 -62
  479. package/src/route-renderer/orchestration/foreign-subtree-execution.service.ts +0 -431
  480. package/src/route-renderer/orchestration/integration-renderer.test.ts +0 -2251
  481. package/src/route-renderer/orchestration/integration-renderer.ts +0 -1384
  482. package/src/route-renderer/orchestration/ownership-planning.service.ts +0 -97
  483. package/src/route-renderer/orchestration/ownership-validation.service.ts +0 -76
  484. package/src/route-renderer/orchestration/processed-asset-dedupe.ts +0 -29
  485. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.test.ts +0 -435
  486. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.ts +0 -310
  487. package/src/route-renderer/orchestration/render-output.utils.ts +0 -310
  488. package/src/route-renderer/orchestration/route-render-orchestrator.prepare-render-options.test.ts +0 -1365
  489. package/src/route-renderer/orchestration/route-render-orchestrator.test.ts +0 -267
  490. package/src/route-renderer/orchestration/route-render-orchestrator.ts +0 -879
  491. package/src/route-renderer/orchestration/template-serialization.test.ts +0 -110
  492. package/src/route-renderer/orchestration/template-serialization.ts +0 -117
  493. package/src/route-renderer/page-loading/component-dependency-collection.ts +0 -202
  494. package/src/route-renderer/page-loading/declared-asset-collection.ts +0 -153
  495. package/src/route-renderer/page-loading/dependency-resolver.test.ts +0 -761
  496. package/src/route-renderer/page-loading/dependency-resolver.ts +0 -144
  497. package/src/route-renderer/page-loading/ecopages-virtual-imports.ts +0 -75
  498. package/src/route-renderer/page-loading/lazy-entry-collection.ts +0 -167
  499. package/src/route-renderer/page-loading/lazy-trigger-planning.ts +0 -74
  500. package/src/route-renderer/page-loading/module-declaration-aggregation.ts +0 -60
  501. package/src/route-renderer/page-loading/module-declaration-scripts.ts +0 -16
  502. package/src/route-renderer/page-loading/page-dependency-bundling.ts +0 -244
  503. package/src/route-renderer/page-loading/page-module-loader.test.ts +0 -183
  504. package/src/route-renderer/page-loading/page-module-loader.ts +0 -184
  505. package/src/route-renderer/route-renderer.ts +0 -133
  506. package/src/router/client/link-intent.test.browser.ts +0 -51
  507. package/src/router/client/link-intent.ts +0 -92
  508. package/src/router/client/navigation-coordinator.test.ts +0 -237
  509. package/src/router/client/navigation-coordinator.ts +0 -453
  510. package/src/router/server/route-registry.test.ts +0 -176
  511. package/src/router/server/route-registry.ts +0 -382
  512. package/src/services/assets/asset-processing-service/asset-dependency-keys.ts +0 -66
  513. package/src/services/assets/asset-processing-service/asset-processing.service.test.ts +0 -473
  514. package/src/services/assets/asset-processing-service/asset-processing.service.ts +0 -344
  515. package/src/services/assets/asset-processing-service/asset.factory.test.ts +0 -63
  516. package/src/services/assets/asset-processing-service/asset.factory.ts +0 -105
  517. package/src/services/assets/asset-processing-service/assets.types.ts +0 -128
  518. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.test.ts +0 -74
  519. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.ts +0 -98
  520. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.test.ts +0 -67
  521. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.ts +0 -78
  522. package/src/services/assets/asset-processing-service/grouped-content-bundles.ts +0 -104
  523. package/src/services/assets/asset-processing-service/index.ts +0 -6
  524. package/src/services/assets/asset-processing-service/page-package.test.ts +0 -135
  525. package/src/services/assets/asset-processing-service/page-package.ts +0 -103
  526. package/src/services/assets/asset-processing-service/processor.registry.ts +0 -18
  527. package/src/services/assets/asset-processing-service/processors/base/base-processor.test.ts +0 -59
  528. package/src/services/assets/asset-processing-service/processors/base/base-processor.ts +0 -83
  529. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.ts +0 -173
  530. package/src/services/assets/asset-processing-service/processors/index.ts +0 -5
  531. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.test.ts +0 -188
  532. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.ts +0 -138
  533. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.test.ts +0 -326
  534. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.ts +0 -116
  535. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.test.ts +0 -270
  536. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.ts +0 -145
  537. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.test.ts +0 -261
  538. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.ts +0 -72
  539. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.ts +0 -83
  540. package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.ts +0 -65
  541. package/src/services/assets/browser-bundle.service.test.ts +0 -66
  542. package/src/services/assets/browser-bundle.service.ts +0 -109
  543. package/src/services/cache/cache.types.ts +0 -126
  544. package/src/services/cache/index.ts +0 -18
  545. package/src/services/cache/memory-cache-store.test.ts +0 -225
  546. package/src/services/cache/memory-cache-store.ts +0 -130
  547. package/src/services/cache/page-cache-service.test.ts +0 -175
  548. package/src/services/cache/page-cache-service.ts +0 -202
  549. package/src/services/cache/page-request-cache-coordinator.service.test.ts +0 -79
  550. package/src/services/cache/page-request-cache-coordinator.service.ts +0 -131
  551. package/src/services/html/html-rewriter-provider.service.test.ts +0 -183
  552. package/src/services/html/html-rewriter-provider.service.ts +0 -105
  553. package/src/services/html/html-transformer.service.test.ts +0 -544
  554. package/src/services/html/html-transformer.service.ts +0 -369
  555. package/src/services/invalidation/development-invalidation.service.test.ts +0 -87
  556. package/src/services/invalidation/development-invalidation.service.ts +0 -262
  557. package/src/services/module-loading/app-module-loader.service.ts +0 -9
  558. package/src/services/module-loading/app-server-module-transpiler.service.test.ts +0 -297
  559. package/src/services/module-loading/app-server-module-transpiler.service.ts +0 -168
  560. package/src/services/module-loading/host-module-loader-registry.ts +0 -15
  561. package/src/services/module-loading/page-module-import.service.test.ts +0 -652
  562. package/src/services/module-loading/page-module-import.service.ts +0 -302
  563. package/src/services/module-loading/server-module-transpiler.service.test.ts +0 -242
  564. package/src/services/module-loading/server-module-transpiler.service.ts +0 -104
  565. package/src/services/module-loading/source-module-support.ts +0 -19
  566. package/src/services/runtime-state/dev-graph.service.ts +0 -217
  567. package/src/services/runtime-state/entrypoint-dependency-graph.service.ts +0 -136
  568. package/src/services/runtime-state/server-invalidation-state.service.ts +0 -68
  569. package/src/services/validation/schema-validation-service.test.ts +0 -223
  570. package/src/services/validation/schema-validation-service.ts +0 -204
  571. package/src/static-site-generator/static-site-generator.test.ts +0 -408
  572. package/src/static-site-generator/static-site-generator.ts +0 -445
  573. package/src/types/internal-types.ts +0 -243
  574. package/src/types/public-types.ts +0 -1508
  575. package/src/utils/deep-merge.test.ts +0 -114
  576. package/src/utils/deep-merge.ts +0 -47
  577. package/src/utils/hash.ts +0 -5
  578. package/src/utils/html-escaping.ts +0 -9
  579. package/src/utils/invariant.test.ts +0 -22
  580. package/src/utils/invariant.ts +0 -15
  581. package/src/utils/locals-utils.ts +0 -37
  582. package/src/utils/parse-cli-args.test.ts +0 -69
  583. package/src/utils/parse-cli-args.ts +0 -105
  584. package/src/utils/path-utils.module.ts +0 -14
  585. package/src/utils/path-utils.test.ts +0 -15
  586. package/src/utils/resolve-work-dir.ts +0 -45
  587. package/src/utils/runtime.ts +0 -44
  588. package/src/utils/server-utils.module.ts +0 -67
  589. package/src/utils/server-utils.test.ts +0 -38
  590. package/src/watchers/project-watcher.integration.test.ts +0 -337
  591. package/src/watchers/project-watcher.test-helpers.ts +0 -42
  592. package/src/watchers/project-watcher.test.ts +0 -768
  593. package/src/watchers/project-watcher.ts +0 -357
  594. /package/src/utils/{html.ts → html.d.ts} +0 -0
@@ -0,0 +1,450 @@
1
+ import path from "node:path";
2
+ import { DEFAULT_ECOPAGES_HOSTNAME, DEFAULT_ECOPAGES_PORT } from "../../config/constants.js";
3
+ import { RESOLVED_ASSETS_DIR } from "../../config/constants.js";
4
+ import { appLogger } from "../../global/app-logger.js";
5
+ import { HttpError } from "../../errors/http-error.js";
6
+ import { createRequire } from "../../utils/locals-utils.js";
7
+ import { fileSystem } from "@ecopages/file-system";
8
+ import { getAppBrowserBuildPlugins, setupAppRuntimePlugins } from "../../build/build-adapter.js";
9
+ import { installAppRuntimeBuildExecutor } from "../../build/runtime-build-executor.js";
10
+ import { StaticSiteGenerator } from "../../static-site-generator/static-site-generator.js";
11
+ import { ProjectWatcher } from "../../watchers/project-watcher.js";
12
+ import { SharedServerAdapter } from "../shared/server-adapter.js";
13
+ import { ApiResponseBuilder } from "../shared/api-response.js";
14
+ import { ServerStaticBuilder } from "../shared/server-static-builder.js";
15
+ import {
16
+ injectHmrRuntimeIntoHtmlResponse,
17
+ isHtmlResponse,
18
+ shouldInjectHmrHtmlResponse
19
+ } from "../shared/hmr-html-response.js";
20
+ import { resolveServeRuntimeOrigin } from "../shared/runtime-app-bootstrap.js";
21
+ import { ClientBridge } from "./client-bridge.js";
22
+ import { HmrManager } from "./hmr-manager.js";
23
+ import { BunStaticPreviewHost } from "./static-preview-host.js";
24
+ class BunServerAdapter extends SharedServerAdapter {
25
+ apiHandlers;
26
+ staticRoutes;
27
+ errorHandler;
28
+ bridge;
29
+ hmrManager;
30
+ initializationPromise = null;
31
+ fullyInitialized = false;
32
+ previewHost;
33
+ /**
34
+ * Creates a Bun server adapter with already-resolved runtime collaborators.
35
+ *
36
+ * @remarks
37
+ * The public params interface keeps `hmrManager`, `bridge`, and `previewHost`
38
+ * optional so factory callers can omit them. By the time the concrete adapter
39
+ * is constructed, those collaborators are mandatory because the adapter cannot
40
+ * initialize Bun HMR or preview flows without them.
41
+ */
42
+ constructor({
43
+ appConfig,
44
+ runtimeOrigin,
45
+ serveOptions,
46
+ apiHandlers,
47
+ staticRoutes,
48
+ errorHandler,
49
+ options,
50
+ hmrManager,
51
+ bridge,
52
+ previewHost
53
+ }) {
54
+ super({ appConfig, runtimeOrigin, serveOptions, options });
55
+ this.apiHandlers = apiHandlers || [];
56
+ this.staticRoutes = staticRoutes || [];
57
+ this.errorHandler = errorHandler;
58
+ this.bridge = bridge;
59
+ this.hmrManager = hmrManager;
60
+ this.previewHost = previewHost;
61
+ }
62
+ /**
63
+ * Returns whether adapter-level HTML responses still need HMR runtime injection.
64
+ *
65
+ * @remarks
66
+ * Filesystem-routed pages are wrapped later in the shared route layer. This
67
+ * adapter-level check exists for explicit API handlers that return HTML and
68
+ * would otherwise bypass the route wrapper entirely.
69
+ */
70
+ shouldInjectHmrScript() {
71
+ return shouldInjectHmrHtmlResponse(this.options?.watch === true, this.hmrManager);
72
+ }
73
+ /**
74
+ * Delegates the HTML-response test to the shared response helper used by both
75
+ * adapters.
76
+ */
77
+ isHtmlResponse(response) {
78
+ return isHtmlResponse(response);
79
+ }
80
+ /**
81
+ * Injects HMR script into HTML responses in development mode.
82
+ * Ensures explicit API handlers that return HTML get auto-reload capability.
83
+ */
84
+ async maybeInjectHmrScript(response) {
85
+ if (this.shouldInjectHmrScript() && this.isHtmlResponse(response)) {
86
+ return injectHmrRuntimeIntoHtmlResponse(response);
87
+ }
88
+ return response;
89
+ }
90
+ /**
91
+ * Initializes the server adapter's core runtime components.
92
+ */
93
+ async initialize() {
94
+ installAppRuntimeBuildExecutor(this.appConfig);
95
+ this.staticSiteGenerator = new StaticSiteGenerator({ appConfig: this.appConfig });
96
+ await this.hmrManager.buildRuntime();
97
+ this.prepareRuntimePublicDir();
98
+ const staticBuilderOptions = {
99
+ appConfig: this.appConfig,
100
+ staticSiteGenerator: this.staticSiteGenerator,
101
+ serveOptions: this.serveOptions,
102
+ apiHandlers: this.apiHandlers
103
+ };
104
+ this.staticBuilder = new ServerStaticBuilder(staticBuilderOptions);
105
+ await this.initializeRuntimePlugins({ watch: this.options?.watch });
106
+ }
107
+ /**
108
+ * Copies the source `public` directory into the runtime output and ensures the
109
+ * HMR assets directory exists before any runtime bundles are emitted.
110
+ */
111
+ prepareRuntimePublicDir() {
112
+ const srcPublicDir = path.join(this.appConfig.rootDir, this.appConfig.srcDir, this.appConfig.publicDir);
113
+ if (fileSystem.exists(srcPublicDir)) {
114
+ fileSystem.copyDir(srcPublicDir, path.join(this.appConfig.rootDir, this.appConfig.distDir));
115
+ }
116
+ fileSystem.ensureDir(path.join(this.appConfig.absolutePaths.distDir, RESOLVED_ASSETS_DIR));
117
+ }
118
+ /**
119
+ * Registers runtime plugins and propagates the final HMR manager into each
120
+ * integration.
121
+ *
122
+ * @remarks
123
+ * This is where Bun's runtime-plugin registration path meets the integration
124
+ * lifecycle. A failure here leaves the runtime partially bootstrapped, so the
125
+ * method logs the underlying error and rethrows instead of trying to limp on.
126
+ */
127
+ async initializeRuntimePlugins(options) {
128
+ try {
129
+ this.hmrManager.setEnabled(Boolean(options?.watch));
130
+ await setupAppRuntimePlugins({
131
+ appConfig: this.appConfig,
132
+ runtimeOrigin: this.runtimeOrigin,
133
+ hmrManager: this.hmrManager,
134
+ onRuntimePlugin: (plugin) => {
135
+ Bun.plugin(plugin);
136
+ }
137
+ });
138
+ const browserBuildPlugins = getAppBrowserBuildPlugins(this.appConfig);
139
+ this.hmrManager.setPlugins(browserBuildPlugins);
140
+ for (const integration of this.appConfig.integrations) {
141
+ integration.setHmrManager(this.hmrManager);
142
+ }
143
+ } catch (error) {
144
+ appLogger.error(`Failed to initialize plugins: ${error instanceof Error ? error.message : String(error)}`);
145
+ throw error;
146
+ }
147
+ }
148
+ /**
149
+ * Rebuilds the shared routing state and hot-reloads the live Bun server when a
150
+ * watched route file changes.
151
+ */
152
+ async refreshRouterRoutes() {
153
+ if (!this.serverInstance || typeof this.serverInstance.reload !== "function") {
154
+ appLogger.error("Server instance is not available for reloading");
155
+ return;
156
+ }
157
+ await this.createSharedWatchRefreshCallback({
158
+ staticRoutes: this.staticRoutes,
159
+ hmrManager: this.hmrManager,
160
+ onRoutesReady: () => {
161
+ const options = this.getServerOptions({ enableHmr: true });
162
+ this.serverInstance.reload(options);
163
+ appLogger.debug("Server routes updated with dynamic routes");
164
+ },
165
+ onError: (error) => {
166
+ this.hmrManager.broadcast({ type: "error", message: error.message });
167
+ appLogger.error("Failed to refresh router routes:", error);
168
+ }
169
+ })();
170
+ }
171
+ async watch() {
172
+ const watcher = new ProjectWatcher({
173
+ config: this.appConfig,
174
+ refreshRouterRoutesCallback: this.refreshRouterRoutes.bind(this),
175
+ hmrManager: this.hmrManager,
176
+ bridge: this.bridge
177
+ });
178
+ await watcher.createWatcherSubscription();
179
+ }
180
+ /**
181
+ * Builds the `Bun.serve()` options for the current adapter state.
182
+ *
183
+ * @remarks
184
+ * The HMR-enabled variant wraps the base fetch handler so one Bun server can
185
+ * serve normal requests, accept HMR websocket upgrades, and expose the HMR
186
+ * runtime asset without splitting responsibility across separate listeners.
187
+ */
188
+ getServerOptions({ enableHmr = false } = {}) {
189
+ appLogger.debug(`[BunServerAdapter] getServerOptions called with enableHmr: ${enableHmr}`);
190
+ const serverOptions = this.buildServerSettings();
191
+ if (enableHmr) {
192
+ const originalFetch = serverOptions.fetch;
193
+ const hmrHandler = this.hmrManager.getWebSocketHandler();
194
+ const hmrManager = this.hmrManager;
195
+ serverOptions.development = true;
196
+ serverOptions.websocket = hmrHandler;
197
+ serverOptions.fetch = async function(request, _server) {
198
+ const url = new URL(request.url);
199
+ appLogger.debug(`[HMR] Request: ${url.pathname}`);
200
+ if (url.pathname === "/_hmr") {
201
+ const success = this.upgrade(request, {
202
+ data: void 0
203
+ });
204
+ if (success) return;
205
+ return new Response("WebSocket upgrade failed", { status: 400 });
206
+ }
207
+ if (url.pathname === "/_hmr_runtime.js") {
208
+ appLogger.debug(`[HMR] Serving runtime from ${hmrManager.getRuntimePath()}`);
209
+ return new Response(fileSystem.readFileAsBuffer(hmrManager.getRuntimePath()), {
210
+ headers: { "Content-Type": "application/javascript" }
211
+ });
212
+ }
213
+ let response;
214
+ if (originalFetch) {
215
+ const res = await originalFetch.call(this, request, this);
216
+ response = res instanceof Response ? res : new Response("Not Found", { status: 404 });
217
+ } else {
218
+ response = new Response("Not Found", { status: 404 });
219
+ }
220
+ return response;
221
+ };
222
+ }
223
+ return serverOptions;
224
+ }
225
+ /**
226
+ * Helper method to retrieve and parse the request body.
227
+ * Handles JSON and plain text content types.
228
+ * For FormData (multipart/form-data, x-www-form-urlencoded), use ctx.request.formData() directly.
229
+ * Returns undefined for unsupported content types.
230
+ */
231
+ async retrieveBodyFromRequest(request) {
232
+ const contentType = request.headers.get("Content-Type") || "";
233
+ if (contentType.includes("application/json")) {
234
+ return await request.json();
235
+ }
236
+ if (contentType.includes("text/plain")) {
237
+ return await request.text();
238
+ }
239
+ return void 0;
240
+ }
241
+ /**
242
+ * Composes the base Bun server settings that all runtime modes build from.
243
+ *
244
+ * @remarks
245
+ * This method centralizes the Bun-specific error boundary. It preserves the
246
+ * shared route pipeline while still allowing adapter-level custom error-handler
247
+ * execution and `HttpError` passthrough.
248
+ */
249
+ buildServerSettings() {
250
+ const serverOptions = { ...this.serveOptions };
251
+ const handleNoMatch = this.handleNoMatch.bind(this);
252
+ const waitForInit = this.waitForInitialization.bind(this);
253
+ const handleReq = this.handleRequest.bind(this);
254
+ const errorHandler = this.errorHandler;
255
+ const getCacheService = () => this.getCacheService();
256
+ const getRenderContext = () => this.getRenderContext();
257
+ appLogger.debug(`[BunServerAdapter] Building server settings`);
258
+ const finalOptions = {
259
+ ...serverOptions,
260
+ async fetch(request, _server) {
261
+ try {
262
+ await waitForInit();
263
+ return await handleReq(request);
264
+ } catch (error) {
265
+ if (error instanceof Response) return error;
266
+ if (errorHandler) {
267
+ try {
268
+ const locals = {};
269
+ const context = {
270
+ request,
271
+ params: {},
272
+ response: new ApiResponseBuilder(),
273
+ server: _server,
274
+ locals,
275
+ require: createRequire(() => locals),
276
+ services: {
277
+ cache: getCacheService()
278
+ },
279
+ ...getRenderContext()
280
+ };
281
+ return await errorHandler(error, context);
282
+ } catch (handlerError) {
283
+ appLogger.error(`[ecopages] Error in custom error handler: ${handlerError}`);
284
+ }
285
+ }
286
+ if (error instanceof HttpError) return error.toResponse();
287
+ appLogger.error(`[ecopages] Error handling request: ${error}`);
288
+ return new Response("Internal Server Error", { status: 500 });
289
+ }
290
+ },
291
+ error(error) {
292
+ appLogger.error(`[ecopages] Error handling request: ${error}`);
293
+ return handleNoMatch(new Request("http://localhost"));
294
+ }
295
+ };
296
+ return finalOptions;
297
+ }
298
+ /**
299
+ * Generates a static build of the site for deployment.
300
+ * @param options.preview - If true, starts a preview server after build
301
+ */
302
+ async buildStatic(options) {
303
+ if (!this.fullyInitialized) {
304
+ await this.initializeSharedRouteHandling({
305
+ staticRoutes: this.staticRoutes,
306
+ hmrManager: this.hmrManager
307
+ });
308
+ }
309
+ const buildRuntimeOrigin = this.serverInstance ? `http://${this.serverInstance.hostname || DEFAULT_ECOPAGES_HOSTNAME}:${this.serverInstance.port || DEFAULT_ECOPAGES_PORT}` : void 0;
310
+ await this.staticBuilder.build(
311
+ { ...options, preview: false, baseUrl: buildRuntimeOrigin },
312
+ {
313
+ router: this.router,
314
+ routeRendererFactory: this.routeRendererFactory,
315
+ staticRoutes: this.staticRoutes
316
+ }
317
+ );
318
+ if (!options?.preview) {
319
+ return;
320
+ }
321
+ const previewHostname = this.serveOptions.hostname || DEFAULT_ECOPAGES_HOSTNAME;
322
+ const previewPort = Number(this.serveOptions.port || DEFAULT_ECOPAGES_PORT);
323
+ const activePreviewPort = await this.previewHost.start({
324
+ appConfig: this.appConfig,
325
+ hostname: String(previewHostname),
326
+ port: previewPort
327
+ });
328
+ if (activePreviewPort) {
329
+ appLogger.info(`Preview running at http://${previewHostname}:${activePreviewPort}`);
330
+ return;
331
+ }
332
+ }
333
+ /**
334
+ * Initializes the server with dynamic routes after server creation.
335
+ * Must be called before handling any requests.
336
+ * @param server - The Bun server instance
337
+ */
338
+ async completeInitialization(server) {
339
+ if (this.fullyInitialized) {
340
+ if (server && !this.serverInstance) {
341
+ this.serverInstance = server;
342
+ }
343
+ return;
344
+ }
345
+ if (!this.initializationPromise) {
346
+ this.initializationPromise = this._performInitialization(server ?? null);
347
+ }
348
+ return this.initializationPromise;
349
+ }
350
+ /**
351
+ * Performs the one-time post-bind initialization path for Bun servers.
352
+ *
353
+ * @remarks
354
+ * This is intentionally split from `initialize()` because shared route handling
355
+ * and file watching need the live server instance to exist before Bun can
356
+ * reload updated route handlers in place.
357
+ */
358
+ async _performInitialization(server) {
359
+ this.serverInstance = server;
360
+ appLogger.debug("Completing server initialization with dynamic routes");
361
+ await this.initializeSharedRouteHandling({
362
+ staticRoutes: this.staticRoutes,
363
+ hmrManager: this.hmrManager
364
+ });
365
+ this.fullyInitialized = true;
366
+ if (this.options?.watch) await this.watch();
367
+ if (server && typeof server.reload === "function") {
368
+ const updatedOptions = this.getServerOptions(this.options?.watch ? { enableHmr: true } : void 0);
369
+ server.reload(updatedOptions);
370
+ appLogger.debug("Server routes updated with dynamic routes");
371
+ }
372
+ }
373
+ /**
374
+ * Creates and initializes the Bun server adapter.
375
+ * @returns Configured adapter with server methods
376
+ */
377
+ async createAdapter() {
378
+ await this.initialize();
379
+ return {
380
+ getServerOptions: this.getServerOptions.bind(this),
381
+ buildStatic: this.buildStatic.bind(this),
382
+ completeInitialization: this.completeInitialization.bind(this),
383
+ handleRequest: this.handleRequest.bind(this)
384
+ };
385
+ }
386
+ /**
387
+ * Handles HTTP requests by passing them securely to the shared core router adapter.
388
+ *
389
+ * @remarks
390
+ * Filesystem page responses are wrapped by `ServerRouteHandler`. This
391
+ * adapter-level pass only covers HTML returned by explicit API handlers,
392
+ * which bypass that route-layer wrapper and would otherwise miss the
393
+ * dev HMR runtime — so the HMR script injection happens here, after
394
+ * the shared handler runs.
395
+ */
396
+ async handleRequest(request) {
397
+ const response = await this.handleSharedRequest(request, {
398
+ apiHandlers: this.apiHandlers,
399
+ errorHandler: this.errorHandler,
400
+ serverInstance: this.serverInstance,
401
+ hmrManager: this.hmrManager
402
+ });
403
+ return await this.maybeInjectHmrScript(response);
404
+ }
405
+ /**
406
+ * Ensures server initialization completes before request handling.
407
+ * Prevents race conditions during startup.
408
+ */
409
+ async waitForInitialization() {
410
+ if (this.fullyInitialized) {
411
+ return;
412
+ }
413
+ if (this.initializationPromise) {
414
+ return this.initializationPromise;
415
+ }
416
+ throw new Error("Server not initialized. Call completeInitialization() first.");
417
+ }
418
+ /**
419
+ * Handles HTTP requests from the router adapter.
420
+ */
421
+ async handleResponse(request) {
422
+ await this.waitForInitialization();
423
+ return this.routeHandler.handleResponse(request);
424
+ }
425
+ /**
426
+ * Handles requests that do not match any routes.
427
+ */
428
+ async handleNoMatch(request) {
429
+ await this.waitForInitialization();
430
+ return this.routeHandler.handleNoMatch(request);
431
+ }
432
+ }
433
+ async function createBunServerAdapter(params) {
434
+ const runtimeOrigin = params.runtimeOrigin ?? resolveServeRuntimeOrigin(params.serveOptions);
435
+ const bridge = params.bridge ?? new ClientBridge();
436
+ const hmrManager = params.hmrManager ?? new HmrManager({ appConfig: params.appConfig, bridge });
437
+ const previewHost = params.previewHost ?? new BunStaticPreviewHost();
438
+ const adapter = new BunServerAdapter({
439
+ ...params,
440
+ runtimeOrigin,
441
+ bridge,
442
+ hmrManager,
443
+ previewHost
444
+ });
445
+ return adapter.createAdapter();
446
+ }
447
+ export {
448
+ BunServerAdapter,
449
+ createBunServerAdapter
450
+ };
@@ -0,0 +1,28 @@
1
+ import type { EcoPagesAppConfig } from '../../types/internal-types.js';
2
+ import type { StaticPreviewHost, StaticPreviewHostStartOptions } from '../shared/static-preview-host.js';
3
+ type BunStaticPreviewServer = {
4
+ server: {
5
+ port?: number;
6
+ } | null;
7
+ stop(): void;
8
+ };
9
+ type BunStaticPreviewServerFactory = {
10
+ createServer(args: {
11
+ appConfig: EcoPagesAppConfig;
12
+ options: {
13
+ port: number;
14
+ };
15
+ }): BunStaticPreviewServer;
16
+ };
17
+ type BunStaticPreviewLogger = {
18
+ error(message: string): unknown;
19
+ };
20
+ export declare class BunStaticPreviewHost implements StaticPreviewHost {
21
+ private readonly previewServerFactory;
22
+ private readonly logger;
23
+ private previewServer;
24
+ constructor(previewServerFactory?: BunStaticPreviewServerFactory, logger?: BunStaticPreviewLogger);
25
+ start(options: StaticPreviewHostStartOptions): Promise<number | null>;
26
+ stop(): Promise<void>;
27
+ }
28
+ export {};
@@ -0,0 +1,45 @@
1
+ import { StaticContentServer } from "../../dev/sc-server.js";
2
+ import { appLogger } from "../../global/app-logger.js";
3
+ class BunStaticPreviewHost {
4
+ constructor(previewServerFactory = StaticContentServer, logger = appLogger) {
5
+ this.previewServerFactory = previewServerFactory;
6
+ this.logger = logger;
7
+ }
8
+ previewServerFactory;
9
+ logger;
10
+ previewServer = null;
11
+ async start(options) {
12
+ await this.stop();
13
+ await new Promise((resolve) => setTimeout(resolve, 100));
14
+ for (let attempt = 0; attempt < 20; attempt += 1) {
15
+ try {
16
+ this.previewServer = this.previewServerFactory.createServer({
17
+ appConfig: options.appConfig,
18
+ options: { port: options.port }
19
+ });
20
+ const previewPort = this.previewServer.server?.port;
21
+ if (previewPort) {
22
+ return previewPort;
23
+ }
24
+ break;
25
+ } catch (error) {
26
+ const errorMessage = error instanceof Error ? error.message : String(error);
27
+ const errorCode = typeof error === "object" && error !== null && "code" in error ? String(error.code) : void 0;
28
+ const isPortReleaseRace = errorCode === "EADDRINUSE" || errorMessage.includes("EADDRINUSE");
29
+ if (!isPortReleaseRace || attempt === 19) {
30
+ throw error;
31
+ }
32
+ await new Promise((resolve) => setTimeout(resolve, 100));
33
+ }
34
+ }
35
+ this.logger.error("Failed to start preview server");
36
+ return null;
37
+ }
38
+ async stop() {
39
+ this.previewServer?.stop();
40
+ this.previewServer = null;
41
+ }
42
+ }
43
+ export {
44
+ BunStaticPreviewHost
45
+ };
@@ -0,0 +1,20 @@
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>;
10
+ export declare function createApp<WebSocketData = undefined>(options: EcopagesAppOptions): Promise<UniversalEcopagesApp>;
11
+ export declare class EcopagesApp extends SharedApplicationAdapter<EcopagesAppOptions, unknown, Request> {
12
+ private readonly appOptions;
13
+ private runtimeApp;
14
+ private runtimeAppPromise;
15
+ constructor(options: EcopagesAppOptions);
16
+ private getRuntimeApp;
17
+ protected initializeServerAdapter(): Promise<UniversalEcopagesApp>;
18
+ start(): Promise<unknown>;
19
+ fetch(request: Request): Promise<Response>;
20
+ }
@@ -0,0 +1,66 @@
1
+ import { AbstractApplicationAdapter } from "./abstract/application-adapter.js";
2
+ import { SharedApplicationAdapter } from "./shared/application-adapter.js";
3
+ import { createApp as createBunApp } from "./bun/create-app.js";
4
+ import { createNodeApp } from "./node/create-app.js";
5
+ async function createRuntimeApp(options) {
6
+ const bun = globalThis.Bun;
7
+ if (bun) {
8
+ return await createBunApp(options);
9
+ }
10
+ return await createNodeApp(options);
11
+ }
12
+ async function createApp(options) {
13
+ return createRuntimeApp(options);
14
+ }
15
+ class EcopagesApp extends SharedApplicationAdapter {
16
+ appOptions;
17
+ runtimeApp = null;
18
+ runtimeAppPromise = null;
19
+ constructor(options) {
20
+ super(options);
21
+ this.appOptions = options;
22
+ }
23
+ async getRuntimeApp() {
24
+ if (this.runtimeApp) {
25
+ return this.runtimeApp;
26
+ }
27
+ if (!this.runtimeAppPromise) {
28
+ this.runtimeAppPromise = createRuntimeApp({
29
+ ...this.appOptions,
30
+ clearOutput: false
31
+ }).then((app) => {
32
+ for (const handler of this.apiHandlers) {
33
+ app.add(handler);
34
+ }
35
+ for (const route of this.staticRoutes) {
36
+ app.static(route.path, route.loader);
37
+ }
38
+ if (this.errorHandler) {
39
+ app.onError(this.errorHandler);
40
+ }
41
+ this.runtimeApp = app;
42
+ return app;
43
+ });
44
+ }
45
+ return this.runtimeAppPromise;
46
+ }
47
+ async initializeServerAdapter() {
48
+ return this.getRuntimeApp();
49
+ }
50
+ async start() {
51
+ const runtimeApp = await this.getRuntimeApp();
52
+ return runtimeApp.start();
53
+ }
54
+ async fetch(request) {
55
+ const runtimeApp = await this.getRuntimeApp();
56
+ const candidate = runtimeApp;
57
+ if (!candidate.fetch) {
58
+ throw new Error("The selected runtime adapter does not expose fetch()");
59
+ }
60
+ return candidate.fetch(request);
61
+ }
62
+ }
63
+ export {
64
+ EcopagesApp,
65
+ createApp
66
+ };
@@ -0,0 +1,2 @@
1
+ export { EcopagesApp, createApp } from './create-app.js';
2
+ export { defineApiHandler, defineGroupHandler, type GroupHandler } from './shared/define-api-handler.js';
@@ -0,0 +1,8 @@
1
+ import { EcopagesApp, createApp } from "./create-app.js";
2
+ import { defineApiHandler, defineGroupHandler } from "./shared/define-api-handler.js";
3
+ export {
4
+ EcopagesApp,
5
+ createApp,
6
+ defineApiHandler,
7
+ defineGroupHandler
8
+ };
@@ -0,0 +1,24 @@
1
+ import { SharedApplicationAdapter } from '../shared/application-adapter.js';
2
+ import type { RuntimeHost } from '../shared/runtime-host.js';
3
+ import type { EcopagesAppOptions } from '../create-app.js';
4
+ import { type NodeServerAdapterResult, createNodeServerAdapter } from './server-adapter.js';
5
+ import type { NodeServerInstance } from './server-adapter.js';
6
+ export declare class NodeEcopagesApp extends SharedApplicationAdapter<EcopagesAppOptions, NodeServerInstance, Request> {
7
+ serverAdapter: NodeServerAdapterResult | undefined;
8
+ private server;
9
+ private runtimeOrigin;
10
+ private readonly runtimeHost;
11
+ constructor(options: EcopagesAppOptions, dependencies: {
12
+ runtimeHost: RuntimeHost<NodeServerInstance, {
13
+ port?: number;
14
+ hostname?: string;
15
+ }>;
16
+ });
17
+ protected createServerAdapter(params: Parameters<typeof createNodeServerAdapter>[0]): Promise<NodeServerAdapterResult>;
18
+ stop(force?: boolean): Promise<void>;
19
+ protected initializeServerAdapter(): Promise<NodeServerAdapterResult>;
20
+ start(): Promise<NodeServerInstance | void>;
21
+ fetch(request: Request): Promise<Response>;
22
+ }
23
+ export declare function createNodeApp(options: EcopagesAppOptions): Promise<NodeEcopagesApp>;
24
+ export declare function createApp(options: EcopagesAppOptions): Promise<NodeEcopagesApp>;