@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,121 @@
1
+ import { appLogger } from "../../global/app-logger.js";
2
+ import {
3
+ getAppModuleLoader,
4
+ setAppHostModuleLoader
5
+ } from "../../services/module-loading/app-server-module-transpiler.service.js";
6
+ import { getHostModuleLoader } from "../../services/module-loading/host-module-loader-registry.js";
7
+ import { invariant } from "../../utils/invariant.js";
8
+ import { fileSystem } from "@ecopages/file-system";
9
+ import { parseCliArgs } from "../../utils/parse-cli-args.js";
10
+ class AbstractApplicationAdapter {
11
+ appConfig;
12
+ serverOptions;
13
+ cliArgs;
14
+ runtimeOptions;
15
+ apiHandlers = [];
16
+ staticRoutes = [];
17
+ errorHandler;
18
+ constructor(options) {
19
+ this.appConfig = options.appConfig;
20
+ this.serverOptions = options.serverOptions || {};
21
+ this.runtimeOptions = options.runtime ?? {};
22
+ this.cliArgs = parseCliArgs({ embeddedRuntime: this.runtimeOptions.embedded });
23
+ const hostModuleLoader = this.runtimeOptions.hostModuleLoader ?? (this.runtimeOptions.embedded ? getHostModuleLoader() : void 0);
24
+ if (hostModuleLoader) {
25
+ setAppHostModuleLoader(this.appConfig, hostModuleLoader);
26
+ }
27
+ getAppModuleLoader(this.appConfig);
28
+ if (options.clearOutput) {
29
+ this.clearDistFolder().catch((error) => {
30
+ appLogger.error("Error clearing dist folder", error);
31
+ });
32
+ }
33
+ }
34
+ async clearDistFolder() {
35
+ const distPath = this.appConfig.absolutePaths.distDir;
36
+ const distExists = fileSystem.exists(distPath);
37
+ if (!distExists) return;
38
+ try {
39
+ await fileSystem.removeAsync(distPath);
40
+ appLogger.debug(`Cleared dist folder: ${distPath}`);
41
+ } catch (error) {
42
+ appLogger.error(`Error clearing dist folder: ${distPath}`, error);
43
+ }
44
+ }
45
+ /**
46
+ * Internal method to add route handlers to the API handlers array
47
+ */
48
+ addRouteHandler(path, method, handler, middleware, schema) {
49
+ invariant(
50
+ typeof path === "string",
51
+ `Invalid route path for ${method}: expected a string path starting with "/" but received ${Object.prototype.toString.call(path)}. If you're passing a prebuilt ApiHandler, use app.add(handler).`
52
+ );
53
+ invariant(
54
+ path.startsWith("/"),
55
+ `Invalid route path for ${method}: "${path}". Route paths must start with '/'.`
56
+ );
57
+ this.apiHandlers.push({
58
+ path,
59
+ method,
60
+ handler,
61
+ middleware,
62
+ schema
63
+ });
64
+ return this;
65
+ }
66
+ /**
67
+ * Get all registered API handlers
68
+ */
69
+ getApiHandlers() {
70
+ return this.apiHandlers;
71
+ }
72
+ /**
73
+ * Register a view for static generation at build time.
74
+ * The view must have staticPaths defined for dynamic routes.
75
+ *
76
+ * Uses a loader function to enable HMR in development.
77
+ *
78
+ * @param path - URL path pattern (e.g., '/posts/:slug')
79
+ * @param loader - A function that dynamically imports the eco.page view module
80
+ * @example
81
+ * ```typescript
82
+ * app.static('/login', () => import('./src/views/login.kita'))
83
+ * app.static('/posts/:slug', () => import('./src/views/post-view.kita'))
84
+ * ```
85
+ */
86
+ static(path, loader) {
87
+ this.staticRoutes.push({ path, loader });
88
+ return this;
89
+ }
90
+ /**
91
+ * Get all registered static routes
92
+ */
93
+ getStaticRoutes() {
94
+ return this.staticRoutes;
95
+ }
96
+ /**
97
+ * Register a global error handler for all routes.
98
+ * Useful for logging, monitoring integration, and custom error formatting.
99
+ *
100
+ * @example
101
+ * ```typescript
102
+ * app.onError(async (error, ctx) => {
103
+ * logger.error(error);
104
+ * return ctx.response.status(500).json({ error: 'Something went wrong' });
105
+ * });
106
+ * ```
107
+ */
108
+ onError(handler) {
109
+ this.errorHandler = handler;
110
+ return this;
111
+ }
112
+ /**
113
+ * Get the registered error handler
114
+ */
115
+ getErrorHandler() {
116
+ return this.errorHandler;
117
+ }
118
+ }
119
+ export {
120
+ AbstractApplicationAdapter
121
+ };
@@ -0,0 +1,26 @@
1
+ /**
2
+ * This file contains the abstract router adapter class and its methods.
3
+ * It is designed to be extended by specific router adapters for different runtimes.
4
+ * The class provides methods for converting paths, creating route handlers,
5
+ * and adapting routes to the expected format of the runtime.
6
+ *
7
+ * @module RouterAdapter
8
+ */
9
+ import type { Routes } from '../../types/internal-types.js';
10
+ /**
11
+ * Abstract base class for router adapters across different runtimes
12
+ */
13
+ export declare abstract class AbstractRouterAdapter<TRouteFormat = any> {
14
+ /**
15
+ * Convert a route path to the format expected by the runtime
16
+ */
17
+ protected abstract convertPath(pathname: string): string;
18
+ /**
19
+ * Create a route handler compatible with the runtime
20
+ */
21
+ protected abstract createRouteHandler(route: any): any;
22
+ /**
23
+ * Adapt framework routes to the format expected by the runtime
24
+ */
25
+ abstract adaptRoutes(routes: Routes): TRouteFormat;
26
+ }
@@ -0,0 +1,5 @@
1
+ class AbstractRouterAdapter {
2
+ }
3
+ export {
4
+ AbstractRouterAdapter
5
+ };
@@ -0,0 +1,69 @@
1
+ /**
2
+ * This file contains the abstract server adapter class and its related types.
3
+ * It is designed to be extended by specific server adapters for different runtimes.
4
+ * The class provides methods for initializing the server, creating server options,
5
+ * building static files, and handling HTTP requests.
6
+ *
7
+ * @module ServerAdapter
8
+ */
9
+ import type { EcoPagesAppConfig } from '../../types/internal-types.js';
10
+ import type { ApiHandler } from '../../types/public-types.js';
11
+ /**
12
+ * Configuration options for all server adapters
13
+ */
14
+ export interface ServerAdapterOptions {
15
+ appConfig: EcoPagesAppConfig;
16
+ apiHandlers?: ApiHandler<string, any>[];
17
+ options?: {
18
+ watch?: boolean;
19
+ [key: string]: any;
20
+ };
21
+ serveOptions?: Record<string, any>;
22
+ runtimeOrigin: string;
23
+ }
24
+ /**
25
+ * Base adapter result containing common functionalities
26
+ * across different runtime implementations
27
+ */
28
+ export interface ServerAdapterResult {
29
+ getServerOptions: (options?: {
30
+ enableHmr?: boolean;
31
+ }) => any;
32
+ buildStatic: (options?: {
33
+ preview?: boolean;
34
+ }) => Promise<void>;
35
+ }
36
+ /**
37
+ * Abstract base class for server adapters across different runtimes
38
+ */
39
+ export declare abstract class AbstractServerAdapter<TOptions extends ServerAdapterOptions = ServerAdapterOptions, TResult extends ServerAdapterResult = ServerAdapterResult> {
40
+ protected appConfig: EcoPagesAppConfig;
41
+ protected options: TOptions['options'];
42
+ protected serveOptions: TOptions['serveOptions'];
43
+ protected runtimeOrigin: string;
44
+ constructor(options: TOptions);
45
+ /**
46
+ * Initialize the server adapter
47
+ */
48
+ abstract initialize(): Promise<void>;
49
+ /**
50
+ * Create server options specific to the runtime
51
+ */
52
+ abstract getServerOptions(options?: {
53
+ enableHmr?: boolean;
54
+ }): any;
55
+ /**
56
+ * Build static files for the application
57
+ */
58
+ abstract buildStatic(options?: {
59
+ preview?: boolean;
60
+ }): Promise<void>;
61
+ /**
62
+ * Factory method to create a server adapter with runtime-specific functionality
63
+ */
64
+ abstract createAdapter(): Promise<TResult>;
65
+ /**
66
+ * Handle HTTP requests
67
+ */
68
+ abstract handleRequest(request: Request): Promise<Response>;
69
+ }
@@ -0,0 +1,15 @@
1
+ class AbstractServerAdapter {
2
+ appConfig;
3
+ options;
4
+ serveOptions;
5
+ runtimeOrigin;
6
+ constructor(options) {
7
+ this.appConfig = options.appConfig;
8
+ this.options = options.options || {};
9
+ this.serveOptions = options.serveOptions || {};
10
+ this.runtimeOrigin = options.runtimeOrigin;
11
+ }
12
+ }
13
+ export {
14
+ AbstractServerAdapter
15
+ };
@@ -0,0 +1,34 @@
1
+ import type { ServerWebSocket } from 'bun';
2
+ import type { ClientBridgeEvent, IClientBridge } from '../../types/public-types.js';
3
+ type BunSocket = ServerWebSocket<unknown>;
4
+ /**
5
+ * Manages WebSocket subscribers and broadcasts development events.
6
+ * Bridges the gap between the server and the development client.
7
+ */
8
+ export declare class ClientBridge implements IClientBridge {
9
+ private subscribers;
10
+ subscribe(ws: BunSocket): void;
11
+ unsubscribe(ws: BunSocket): void;
12
+ /**
13
+ * Broadcast a raw event to all connected clients.
14
+ */
15
+ broadcast(event: ClientBridgeEvent): void;
16
+ /**
17
+ * Trigger a full page reload on all connected clients.
18
+ */
19
+ reload(): void;
20
+ /**
21
+ * Broadcast a CSS update for hot stylesheet reload.
22
+ */
23
+ cssUpdate(path: string): void;
24
+ /**
25
+ * Broadcast a JS module update for hot module replacement.
26
+ */
27
+ update(path: string): void;
28
+ /**
29
+ * Broadcast an error message to connected clients.
30
+ */
31
+ error(message: string): void;
32
+ get subscriberCount(): number;
33
+ }
34
+ export {};
@@ -0,0 +1,48 @@
1
+ class ClientBridge {
2
+ subscribers = /* @__PURE__ */ new Set();
3
+ subscribe(ws) {
4
+ this.subscribers.add(ws);
5
+ }
6
+ unsubscribe(ws) {
7
+ this.subscribers.delete(ws);
8
+ }
9
+ /**
10
+ * Broadcast a raw event to all connected clients.
11
+ */
12
+ broadcast(event) {
13
+ const payload = JSON.stringify(event);
14
+ for (const ws of this.subscribers) {
15
+ ws.send(payload);
16
+ }
17
+ }
18
+ /**
19
+ * Trigger a full page reload on all connected clients.
20
+ */
21
+ reload() {
22
+ this.broadcast({ type: "reload" });
23
+ }
24
+ /**
25
+ * Broadcast a CSS update for hot stylesheet reload.
26
+ */
27
+ cssUpdate(path) {
28
+ this.broadcast({ type: "css-update", path, timestamp: Date.now() });
29
+ }
30
+ /**
31
+ * Broadcast a JS module update for hot module replacement.
32
+ */
33
+ update(path) {
34
+ this.broadcast({ type: "update", path, timestamp: Date.now() });
35
+ }
36
+ /**
37
+ * Broadcast an error message to connected clients.
38
+ */
39
+ error(message) {
40
+ this.broadcast({ type: "error", message });
41
+ }
42
+ get subscriberCount() {
43
+ return this.subscribers.size;
44
+ }
45
+ }
46
+ export {
47
+ ClientBridge
48
+ };
@@ -0,0 +1,60 @@
1
+ /**
2
+ * This file contains the implementation of the Bun application adapter for EcoPages.
3
+ * It extends the AbstractApplicationAdapter class and provides methods for handling
4
+ * HTTP requests, initializing the server adapter, and starting the Bun application server.
5
+ * The adapter is designed to work with the Bun runtime and provides a way to create
6
+ * EcoPages applications using Bun's features.
7
+ *
8
+ * @module EcopagesApp
9
+ */
10
+ import type { Server } from 'bun';
11
+ import type { ApiHandlerContext, RouteGroupBuilder } from '../../types/public-types.js';
12
+ import { SharedApplicationAdapter } from '../shared/application-adapter.js';
13
+ import type { RuntimeHost } from '../shared/runtime-host.js';
14
+ import type { StaticPreviewHost } from '../shared/static-preview-host.js';
15
+ import type { EcopagesAppOptions } from '../create-app.js';
16
+ import { type BunServerAdapterResult } from './server-adapter.js';
17
+ /**
18
+ * Bun-specific route group builder that properly infers route params from path patterns.
19
+ * When you define a route like `/posts/:slug`, the handler context will have
20
+ * `ctx.params.slug` typed as `string`.
21
+ *
22
+ * @typeParam WebSocketData - WebSocket data type for the server
23
+ * @typeParam TContext - Extended context type from middleware (e.g., `{ user: User }`)
24
+ */
25
+ export type BunRouteGroupBuilder<WebSocketData = undefined, TContext extends ApiHandlerContext<Request, Server<WebSocketData>> = ApiHandlerContext<Request, Server<WebSocketData>>> = RouteGroupBuilder<Request, Server<WebSocketData>, TContext>;
26
+ /**
27
+ * Bun-specific application adapter implementation
28
+ * This class extends the {@link AbstractApplicationAdapter}
29
+ * and provides methods for handling HTTP requests and managing the server.
30
+ */
31
+ export declare class BunEcopagesApp<WebSocketData = undefined> extends SharedApplicationAdapter<EcopagesAppOptions, Server<WebSocketData>, Request> {
32
+ serverAdapter: BunServerAdapterResult | undefined;
33
+ private server;
34
+ private readonly runtimeHost;
35
+ private readonly previewHost;
36
+ constructor(options: EcopagesAppOptions, dependencies: {
37
+ runtimeHost: RuntimeHost<Server<WebSocketData>, Bun.Serve.Options<WebSocketData>>;
38
+ previewHost: StaticPreviewHost;
39
+ });
40
+ fetch(request: Request): Promise<Response>;
41
+ /**
42
+ * Complete the initialization of the server adapter by processing dynamic routes
43
+ * @param server The Bun server instance
44
+ */
45
+ completeInitialization(server: Server<WebSocketData>): Promise<void>;
46
+ /**
47
+ * Initialize the Bun server adapter
48
+ */
49
+ protected initializeServerAdapter(): Promise<BunServerAdapterResult>;
50
+ /**
51
+ * Start the Bun application server
52
+ * @param options Optional settings
53
+ * @param options.autoCompleteInitialization Whether to automatically complete initialization with dynamic routes after server start (defaults to true)
54
+ */
55
+ start(): Promise<Server<WebSocketData> | void>;
56
+ }
57
+ /**
58
+ * Factory function to create a Bun application
59
+ */
60
+ export declare function createApp<WebSocketData = undefined>(options: EcopagesAppOptions): Promise<BunEcopagesApp<WebSocketData>>;
@@ -0,0 +1,140 @@
1
+ import { DEFAULT_ECOPAGES_HOSTNAME, DEFAULT_ECOPAGES_PORT } from "../../config/constants.js";
2
+ import { appLogger } from "../../global/app-logger.js";
3
+ import { SharedApplicationAdapter } from "../shared/application-adapter.js";
4
+ import { resolveRuntimeBinding, resolveStaticRuntimeMode } from "../shared/runtime-app-bootstrap.js";
5
+ import { createBunServerAdapter } from "./server-adapter.js";
6
+ import { BunStaticPreviewHost } from "./static-preview-host.js";
7
+ import { BunRuntimeHost } from "./runtime-host.js";
8
+ class BunEcopagesApp extends SharedApplicationAdapter {
9
+ serverAdapter;
10
+ server = null;
11
+ runtimeHost;
12
+ previewHost;
13
+ constructor(options, dependencies) {
14
+ super(options);
15
+ this.runtimeHost = dependencies.runtimeHost;
16
+ this.previewHost = dependencies.previewHost;
17
+ }
18
+ async fetch(request) {
19
+ if (!this.serverAdapter) {
20
+ this.serverAdapter = await this.initializeServerAdapter();
21
+ }
22
+ await this.serverAdapter.completeInitialization(this.server);
23
+ return this.serverAdapter.handleRequest(request);
24
+ }
25
+ /**
26
+ * Complete the initialization of the server adapter by processing dynamic routes
27
+ * @param server The Bun server instance
28
+ */
29
+ async completeInitialization(server) {
30
+ if (!this.serverAdapter) {
31
+ throw new Error("Server adapter not initialized. Call start() first.");
32
+ }
33
+ await this.serverAdapter.completeInitialization(server);
34
+ }
35
+ /**
36
+ * Initialize the Bun server adapter
37
+ */
38
+ async initializeServerAdapter() {
39
+ const binding = resolveRuntimeBinding({
40
+ cliArgs: this.cliArgs,
41
+ serverOptions: this.serverOptions
42
+ });
43
+ appLogger.debug("initializeServerAdapter", {
44
+ dev: this.cliArgs.dev,
45
+ cliPort: this.cliArgs.port,
46
+ cliHostname: this.cliArgs.hostname,
47
+ envPort: process.env.ECOPAGES_PORT,
48
+ envHostname: process.env.ECOPAGES_HOSTNAME,
49
+ preferredPort: binding.preferredPort,
50
+ preferredHostname: binding.preferredHostname,
51
+ composedUrl: binding.runtimeOrigin
52
+ });
53
+ return await createBunServerAdapter({
54
+ runtimeOrigin: binding.runtimeOrigin,
55
+ appConfig: this.appConfig,
56
+ apiHandlers: this.apiHandlers,
57
+ staticRoutes: this.staticRoutes,
58
+ errorHandler: this.errorHandler,
59
+ options: { watch: binding.watch },
60
+ serveOptions: binding.serveOptions
61
+ });
62
+ }
63
+ /**
64
+ * Start the Bun application server
65
+ * @param options Optional settings
66
+ * @param options.autoCompleteInitialization Whether to automatically complete initialization with dynamic routes after server start (defaults to true)
67
+ */
68
+ async start() {
69
+ if (!this.serverAdapter) {
70
+ this.serverAdapter = await this.initializeServerAdapter();
71
+ }
72
+ const { dev, preview, build } = this.cliArgs;
73
+ const staticRuntimeMode = resolveStaticRuntimeMode({
74
+ appConfig: this.appConfig,
75
+ cliArgs: this.cliArgs
76
+ });
77
+ if (staticRuntimeMode.canBuildWithoutRuntimeServer) {
78
+ appLogger.debugTime("Building static pages");
79
+ await this.serverAdapter.buildStatic({ preview });
80
+ appLogger.debugTimeEnd("Building static pages");
81
+ if (build) {
82
+ process.exit(0);
83
+ }
84
+ return;
85
+ }
86
+ const enableHmr = dev || !preview && !build;
87
+ const serverOptions = this.serverAdapter.getServerOptions({ enableHmr });
88
+ const configuredHostname = String(serverOptions.hostname ?? DEFAULT_ECOPAGES_HOSTNAME);
89
+ const configuredPort = Number(serverOptions.port ?? DEFAULT_ECOPAGES_PORT);
90
+ const runtimeServerOptions = (preview || build) && staticRuntimeMode.requiresFetchRuntime ? {
91
+ ...serverOptions,
92
+ port: 0
93
+ } : serverOptions;
94
+ this.server = await this.runtimeHost.start({
95
+ serveOptions: runtimeServerOptions,
96
+ handleRequest: async () => new Response(null, { status: 500 }),
97
+ onError: async () => {
98
+ }
99
+ });
100
+ await this.serverAdapter.completeInitialization(this.server).catch((error) => {
101
+ appLogger.error(`Failed to complete initialization: ${error}`);
102
+ });
103
+ if (!this.server) {
104
+ throw new Error("Server failed to start");
105
+ }
106
+ appLogger.info(
107
+ `Server running at ${this.runtimeHost.getOrigin(this.server, runtimeServerOptions)}`
108
+ );
109
+ if (build || preview) {
110
+ appLogger.debugTime("Building static pages");
111
+ await this.serverAdapter.buildStatic({ preview: false });
112
+ await this.runtimeHost.stop(this.server, { force: true });
113
+ if (preview) {
114
+ const previewPort = await this.previewHost.start({
115
+ appConfig: this.appConfig,
116
+ hostname: configuredHostname,
117
+ port: configuredPort
118
+ });
119
+ if (previewPort) {
120
+ appLogger.info(`Preview running at http://${configuredHostname}:${previewPort}`);
121
+ }
122
+ }
123
+ appLogger.debugTimeEnd("Building static pages");
124
+ if (build) {
125
+ process.exit(0);
126
+ }
127
+ }
128
+ return this.server;
129
+ }
130
+ }
131
+ async function createApp(options) {
132
+ return new BunEcopagesApp(options, {
133
+ runtimeHost: new BunRuntimeHost(),
134
+ previewHost: new BunStaticPreviewHost()
135
+ });
136
+ }
137
+ export {
138
+ BunEcopagesApp,
139
+ createApp
140
+ };
@@ -0,0 +1,47 @@
1
+ import type { WebSocketHandler } from 'bun';
2
+ import type { EcoPagesAppConfig } from '../../types/internal-types.js';
3
+ import type { ClientBridge } from './client-bridge.js';
4
+ import { InMemoryEntrypointDependencyGraph, type EntrypointDependencyGraph } from '../../services/runtime-state/entrypoint-dependency-graph.service.js';
5
+ import { SharedHmrManager } from '../shared/shared-hmr-manager.js';
6
+ type BunSocketHandler = WebSocketHandler<unknown>;
7
+ export interface HmrManagerParams {
8
+ appConfig: EcoPagesAppConfig;
9
+ bridge: ClientBridge;
10
+ }
11
+ /**
12
+ * Bun development HMR manager.
13
+ *
14
+ * @remarks
15
+ * Bun shares the same public contract as the Node manager: page entrypoints are
16
+ * strict integration-owned registrations, while generic script assets use their
17
+ * own explicit registration path.
18
+ */
19
+ export declare class HmrManager extends SharedHmrManager {
20
+ private wsHandler;
21
+ /**
22
+ * Creates the Bun HMR manager around the shared HMR orchestration pipeline.
23
+ *
24
+ * @remarks
25
+ * Bun delegates route watching, rebuild dispatch, and runtime bundle
26
+ * generation to `SharedHmrManager`. The Bun subclass only supplies the
27
+ * transport-specific dependency graph policy and websocket hook surface.
28
+ */
29
+ constructor({ appConfig, bridge }: HmrManagerParams);
30
+ /**
31
+ * Reuses the shared in-memory dependency graph when possible and otherwise
32
+ * creates the Bun-compatible default graph implementation.
33
+ */
34
+ protected createEntrypointDependencyGraph(existingEntrypointDependencyGraph: EntrypointDependencyGraph): InMemoryEntrypointDependencyGraph;
35
+ /**
36
+ * Returns the Bun websocket hooks that attach and detach live HMR subscribers.
37
+ *
38
+ * @remarks
39
+ * `SharedHmrManager` stores the bridge behind the transport-agnostic
40
+ * `IClientBridge` contract because most HMR coordination only needs broadcast
41
+ * behavior. Bun connection lifecycle wiring is the point where that abstraction
42
+ * intentionally narrows back to the concrete Bun bridge so websocket instances
43
+ * can be tracked directly.
44
+ */
45
+ getWebSocketHandler(): BunSocketHandler;
46
+ }
47
+ export {};
@@ -0,0 +1,58 @@
1
+ import { appLogger } from "../../global/app-logger.js";
2
+ import {
3
+ InMemoryEntrypointDependencyGraph
4
+ } from "../../services/runtime-state/entrypoint-dependency-graph.service.js";
5
+ import { SharedHmrManager } from "../shared/shared-hmr-manager.js";
6
+ class HmrManager extends SharedHmrManager {
7
+ wsHandler;
8
+ /**
9
+ * Creates the Bun HMR manager around the shared HMR orchestration pipeline.
10
+ *
11
+ * @remarks
12
+ * Bun delegates route watching, rebuild dispatch, and runtime bundle
13
+ * generation to `SharedHmrManager`. The Bun subclass only supplies the
14
+ * transport-specific dependency graph policy and websocket hook surface.
15
+ */
16
+ constructor({ appConfig, bridge }) {
17
+ super({ appConfig, bridge });
18
+ }
19
+ /**
20
+ * Reuses the shared in-memory dependency graph when possible and otherwise
21
+ * creates the Bun-compatible default graph implementation.
22
+ */
23
+ createEntrypointDependencyGraph(existingEntrypointDependencyGraph) {
24
+ return existingEntrypointDependencyGraph instanceof InMemoryEntrypointDependencyGraph ? existingEntrypointDependencyGraph : new InMemoryEntrypointDependencyGraph();
25
+ }
26
+ /**
27
+ * Returns the Bun websocket hooks that attach and detach live HMR subscribers.
28
+ *
29
+ * @remarks
30
+ * `SharedHmrManager` stores the bridge behind the transport-agnostic
31
+ * `IClientBridge` contract because most HMR coordination only needs broadcast
32
+ * behavior. Bun connection lifecycle wiring is the point where that abstraction
33
+ * intentionally narrows back to the concrete Bun bridge so websocket instances
34
+ * can be tracked directly.
35
+ */
36
+ getWebSocketHandler() {
37
+ const bridge = this.bridge;
38
+ const open = (ws) => {
39
+ bridge.subscribe(ws);
40
+ appLogger.debug(`[HmrManager] Connection opened. Subscribers: ${bridge.subscriberCount}`);
41
+ };
42
+ const close = (ws) => {
43
+ bridge.unsubscribe(ws);
44
+ appLogger.debug(`[HmrManager] Connection closed. Subscribers: ${bridge.subscriberCount}`);
45
+ };
46
+ this.wsHandler = { open, close };
47
+ return {
48
+ open: this.wsHandler.open,
49
+ close: this.wsHandler.close,
50
+ message: (_ws, message) => {
51
+ appLogger.debug("[HMR] Received message from client:", message);
52
+ }
53
+ };
54
+ }
55
+ }
56
+ export {
57
+ HmrManager
58
+ };
@@ -0,0 +1,2 @@
1
+ export { BunEcopagesApp, createApp } from './create-app.js';
2
+ export { defineApiHandler, defineGroupHandler, type GroupHandler } from '../shared/define-api-handler.js';
@@ -0,0 +1,8 @@
1
+ import { BunEcopagesApp, createApp } from "./create-app.js";
2
+ import { defineApiHandler, defineGroupHandler } from "../shared/define-api-handler.js";
3
+ export {
4
+ BunEcopagesApp,
5
+ createApp,
6
+ defineApiHandler,
7
+ defineGroupHandler
8
+ };