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