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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (436) hide show
  1. package/CHANGELOG.md +66 -66
  2. package/README.md +268 -14
  3. package/package.json +72 -108
  4. package/src/adapters/README.md +39 -0
  5. package/src/adapters/abstract/application-adapter.d.ts +28 -2
  6. package/src/adapters/abstract/application-adapter.js +14 -2
  7. package/src/adapters/abstract/router-adapter.d.ts +1 -1
  8. package/src/adapters/abstract/server-adapter.d.ts +2 -2
  9. package/src/adapters/bun/client-bridge.d.ts +1 -1
  10. package/src/adapters/bun/create-app.d.ts +5 -12
  11. package/src/adapters/bun/create-app.js +43 -7
  12. package/src/adapters/bun/hmr-manager.d.ts +72 -26
  13. package/src/adapters/bun/hmr-manager.js +153 -81
  14. package/src/adapters/bun/index.d.ts +2 -3
  15. package/src/adapters/bun/index.js +3 -3
  16. package/src/adapters/bun/server-adapter.d.ts +5 -5
  17. package/src/adapters/bun/server-adapter.js +63 -38
  18. package/src/adapters/bun/server-lifecycle.d.ts +28 -17
  19. package/src/adapters/bun/server-lifecycle.js +34 -62
  20. package/src/{create-app.d.ts → adapters/create-app.d.ts} +9 -6
  21. package/src/{create-app.js → adapters/create-app.js} +4 -4
  22. package/src/adapters/index.d.ts +2 -6
  23. package/src/adapters/index.js +2 -8
  24. package/src/adapters/node/create-app.d.ts +6 -9
  25. package/src/adapters/node/create-app.js +12 -6
  26. package/src/adapters/node/node-client-bridge.d.ts +1 -1
  27. package/src/adapters/node/node-hmr-manager.d.ts +79 -21
  28. package/src/adapters/node/node-hmr-manager.js +167 -114
  29. package/src/adapters/node/server-adapter.d.ts +7 -35
  30. package/src/adapters/node/server-adapter.js +55 -107
  31. package/src/adapters/node/static-content-server.d.ts +37 -1
  32. package/src/adapters/node/static-content-server.js +29 -1
  33. package/src/adapters/shared/application-adapter.d.ts +1 -1
  34. package/src/{define-api-handler.d.ts → adapters/shared/define-api-handler.d.ts} +1 -1
  35. package/src/adapters/shared/explicit-static-render-preparation.d.ts +25 -0
  36. package/src/adapters/shared/explicit-static-render-preparation.js +26 -0
  37. package/src/adapters/shared/explicit-static-route-matcher.d.ts +7 -4
  38. package/src/adapters/shared/explicit-static-route-matcher.js +14 -13
  39. package/src/adapters/shared/file-route-middleware-pipeline.d.ts +7 -10
  40. package/src/adapters/shared/file-route-middleware-pipeline.js +3 -11
  41. package/src/adapters/shared/fs-server-response-factory.d.ts +14 -10
  42. package/src/adapters/shared/fs-server-response-factory.js +11 -27
  43. package/src/adapters/shared/fs-server-response-matcher.d.ts +20 -16
  44. package/src/adapters/shared/fs-server-response-matcher.js +76 -45
  45. package/src/adapters/shared/hmr-entrypoint-registrar.d.ts +55 -0
  46. package/src/adapters/shared/hmr-entrypoint-registrar.js +87 -0
  47. package/src/adapters/shared/hmr-html-response.d.ts +22 -0
  48. package/src/adapters/shared/hmr-html-response.js +32 -0
  49. package/src/adapters/shared/render-context.d.ts +4 -3
  50. package/src/adapters/shared/render-context.js +6 -3
  51. package/src/adapters/shared/runtime-bootstrap.d.ts +38 -0
  52. package/src/adapters/shared/runtime-bootstrap.js +43 -0
  53. package/src/adapters/shared/server-adapter.d.ts +33 -12
  54. package/src/adapters/shared/server-adapter.js +208 -132
  55. package/src/adapters/shared/server-route-handler.d.ts +5 -5
  56. package/src/adapters/shared/server-route-handler.js +7 -16
  57. package/src/adapters/shared/server-static-builder.d.ts +41 -8
  58. package/src/adapters/shared/server-static-builder.js +65 -11
  59. package/src/build/README.md +107 -0
  60. package/src/build/build-adapter.d.ts +168 -3
  61. package/src/build/build-adapter.js +604 -16
  62. package/src/build/build-manifest.d.ts +27 -0
  63. package/src/build/build-manifest.js +30 -0
  64. package/src/build/dev-build-coordinator.d.ts +72 -0
  65. package/src/build/dev-build-coordinator.js +154 -0
  66. package/src/build/esbuild-build-adapter.d.ts +15 -6
  67. package/src/build/esbuild-build-adapter.js +189 -74
  68. package/src/build/runtime-build-executor.d.ts +14 -0
  69. package/src/build/runtime-build-executor.js +22 -0
  70. package/src/build/runtime-specifier-alias-plugin.d.ts +15 -0
  71. package/src/build/runtime-specifier-alias-plugin.js +35 -0
  72. package/src/build/runtime-specifier-aliases.d.ts +5 -0
  73. package/src/build/runtime-specifier-aliases.js +95 -0
  74. package/src/config/README.md +36 -0
  75. package/src/config/config-builder.d.ts +54 -29
  76. package/src/config/config-builder.js +255 -49
  77. package/src/{constants.d.ts → config/constants.d.ts} +13 -0
  78. package/src/{constants.js → config/constants.js} +4 -0
  79. package/src/declarations.d.ts +19 -14
  80. package/src/dev/host-runtime.d.ts +10 -0
  81. package/src/dev/host-runtime.js +24 -0
  82. package/src/dev/sc-server.d.ts +1 -1
  83. package/src/dev/sc-server.js +1 -1
  84. package/src/eco/README.md +70 -16
  85. package/src/eco/eco.browser.d.ts +2 -0
  86. package/src/eco/eco.browser.js +83 -0
  87. package/src/eco/eco.js +32 -57
  88. package/src/eco/eco.types.d.ts +14 -6
  89. package/src/eco/eco.utils.d.ts +1 -40
  90. package/src/eco/eco.utils.js +5 -35
  91. package/src/eco/global-injector-map.d.ts +3 -3
  92. package/src/eco/global-injector-map.js +2 -2
  93. package/src/eco/lazy-injector-map.d.ts +2 -2
  94. package/src/errors/index.d.ts +1 -0
  95. package/src/errors/index.js +3 -1
  96. package/src/hmr/README.md +26 -0
  97. package/src/hmr/client/hmr-runtime.d.ts +1 -6
  98. package/src/hmr/client/hmr-runtime.js +38 -7
  99. package/src/hmr/hmr-strategy.d.ts +16 -13
  100. package/src/hmr/hmr-strategy.js +22 -7
  101. package/src/hmr/hmr.postcss.test.e2e.d.ts +1 -0
  102. package/src/hmr/hmr.postcss.test.e2e.js +31 -0
  103. package/src/hmr/hmr.test.e2e.js +26 -33
  104. package/src/hmr/strategies/default-hmr-strategy.d.ts +2 -2
  105. package/src/hmr/strategies/default-hmr-strategy.js +1 -1
  106. package/src/hmr/strategies/js-hmr-strategy.d.ts +46 -48
  107. package/src/hmr/strategies/js-hmr-strategy.js +64 -74
  108. package/src/index.browser.d.ts +2 -2
  109. package/src/index.browser.js +1 -1
  110. package/src/index.d.ts +4 -3
  111. package/src/index.js +16 -5
  112. package/src/integrations/ghtml/ghtml-renderer.d.ts +3 -2
  113. package/src/integrations/ghtml/ghtml-renderer.js +27 -30
  114. package/src/integrations/ghtml/ghtml.constants.d.ts +1 -0
  115. package/src/integrations/ghtml/ghtml.constants.js +4 -0
  116. package/src/integrations/ghtml/ghtml.plugin.d.ts +2 -6
  117. package/src/integrations/ghtml/ghtml.plugin.js +3 -4
  118. package/src/plugins/README.md +35 -0
  119. package/src/plugins/alias-resolver-plugin.js +17 -3
  120. package/src/plugins/eco-component-meta-plugin.d.ts +14 -1
  121. package/src/plugins/eco-component-meta-plugin.js +27 -22
  122. package/src/plugins/foreign-jsx-override-plugin.d.ts +31 -0
  123. package/src/plugins/foreign-jsx-override-plugin.js +35 -0
  124. package/src/plugins/integration-plugin.d.ts +142 -29
  125. package/src/plugins/integration-plugin.js +103 -14
  126. package/src/plugins/processor.d.ts +17 -2
  127. package/src/plugins/processor.js +22 -3
  128. package/src/plugins/runtime-capability.d.ts +9 -0
  129. package/src/plugins/source-transform.d.ts +46 -0
  130. package/src/plugins/source-transform.js +71 -0
  131. package/src/route-renderer/GRAPH.md +83 -325
  132. package/src/route-renderer/README.md +73 -90
  133. package/src/route-renderer/orchestration/component-render-context.d.ts +89 -0
  134. package/src/route-renderer/orchestration/component-render-context.js +147 -0
  135. package/src/route-renderer/orchestration/declared-ownership-graph.d.ts +18 -0
  136. package/src/route-renderer/orchestration/declared-ownership-graph.js +34 -0
  137. package/src/route-renderer/orchestration/foreign-subtree-execution.service.d.ts +108 -0
  138. package/src/route-renderer/orchestration/foreign-subtree-execution.service.js +206 -0
  139. package/src/route-renderer/orchestration/integration-renderer.d.ts +516 -0
  140. package/src/route-renderer/orchestration/integration-renderer.js +909 -0
  141. package/src/route-renderer/orchestration/ownership-planning.service.d.ts +24 -0
  142. package/src/route-renderer/orchestration/ownership-planning.service.js +63 -0
  143. package/src/route-renderer/orchestration/ownership-validation.service.d.ts +29 -0
  144. package/src/route-renderer/orchestration/ownership-validation.service.js +53 -0
  145. package/src/route-renderer/orchestration/processed-asset-dedupe.d.ts +2 -0
  146. package/src/route-renderer/orchestration/processed-asset-dedupe.js +23 -0
  147. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.d.ts +90 -0
  148. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.js +158 -0
  149. package/src/route-renderer/orchestration/render-output.utils.d.ts +66 -0
  150. package/src/route-renderer/orchestration/render-output.utils.js +171 -0
  151. package/src/route-renderer/orchestration/route-render-orchestrator.d.ts +120 -0
  152. package/src/route-renderer/orchestration/route-render-orchestrator.js +388 -0
  153. package/src/route-renderer/orchestration/template-serialization.d.ts +38 -0
  154. package/src/route-renderer/orchestration/template-serialization.js +45 -0
  155. package/src/route-renderer/page-loading/component-dependency-collection.d.ts +37 -0
  156. package/src/route-renderer/page-loading/component-dependency-collection.js +132 -0
  157. package/src/route-renderer/page-loading/declared-asset-collection.d.ts +24 -0
  158. package/src/route-renderer/page-loading/declared-asset-collection.js +106 -0
  159. package/src/route-renderer/{dependency-resolver.d.ts → page-loading/dependency-resolver.d.ts} +15 -4
  160. package/src/route-renderer/page-loading/dependency-resolver.js +115 -0
  161. package/src/route-renderer/page-loading/ecopages-virtual-imports.d.ts +11 -0
  162. package/src/route-renderer/page-loading/ecopages-virtual-imports.js +57 -0
  163. package/src/route-renderer/page-loading/lazy-entry-collection.d.ts +45 -0
  164. package/src/route-renderer/page-loading/lazy-entry-collection.js +105 -0
  165. package/src/route-renderer/page-loading/lazy-trigger-planning.d.ts +19 -0
  166. package/src/route-renderer/page-loading/lazy-trigger-planning.js +40 -0
  167. package/src/route-renderer/page-loading/module-declaration-aggregation.d.ts +5 -0
  168. package/src/route-renderer/page-loading/module-declaration-aggregation.js +33 -0
  169. package/src/route-renderer/page-loading/module-declaration-scripts.d.ts +3 -0
  170. package/src/route-renderer/page-loading/module-declaration-scripts.js +18 -0
  171. package/src/route-renderer/page-loading/page-dependency-bundling.d.ts +13 -0
  172. package/src/route-renderer/page-loading/page-dependency-bundling.js +137 -0
  173. package/src/route-renderer/page-loading/page-module-loader.d.ts +90 -0
  174. package/src/route-renderer/{page-module-loader.js → page-loading/page-module-loader.js} +39 -14
  175. package/src/route-renderer/route-renderer.d.ts +57 -14
  176. package/src/route-renderer/route-renderer.js +30 -18
  177. package/src/router/README.md +94 -0
  178. package/src/router/client/link-intent.d.ts +53 -0
  179. package/src/router/client/link-intent.js +34 -0
  180. package/src/router/client/link-intent.test.browser.d.ts +1 -0
  181. package/src/router/client/link-intent.test.browser.js +43 -0
  182. package/src/router/client/navigation-coordinator.d.ts +169 -0
  183. package/src/router/client/navigation-coordinator.js +215 -0
  184. package/src/router/server/route-registry.d.ts +78 -0
  185. package/src/router/server/route-registry.js +262 -0
  186. package/src/services/README.md +28 -0
  187. package/src/services/assets/asset-processing-service/asset-dependency-keys.d.ts +3 -0
  188. package/src/services/assets/asset-processing-service/asset-dependency-keys.js +56 -0
  189. package/src/services/assets/asset-processing-service/asset-processing.service.d.ts +103 -0
  190. package/src/services/{asset-processing-service → assets/asset-processing-service}/asset-processing.service.js +124 -89
  191. package/src/services/{asset-processing-service → assets/asset-processing-service}/asset.factory.d.ts +1 -1
  192. package/src/services/{asset-processing-service → assets/asset-processing-service}/asset.factory.js +2 -2
  193. package/src/services/{asset-processing-service → assets/asset-processing-service}/assets.types.d.ts +16 -1
  194. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.d.ts +55 -0
  195. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.js +49 -0
  196. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.d.ts +20 -0
  197. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.js +41 -0
  198. package/src/services/assets/asset-processing-service/grouped-content-bundles.d.ts +30 -0
  199. package/src/services/assets/asset-processing-service/grouped-content-bundles.js +65 -0
  200. package/src/services/assets/asset-processing-service/index.d.ts +6 -0
  201. package/src/services/assets/asset-processing-service/index.js +6 -0
  202. package/src/services/assets/asset-processing-service/page-package.d.ts +3 -0
  203. package/src/services/assets/asset-processing-service/page-package.js +74 -0
  204. package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.interface.d.ts +2 -2
  205. package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.registry.d.ts +2 -2
  206. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/base/base-processor.d.ts +1 -1
  207. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/base/base-processor.js +11 -5
  208. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.d.ts +22 -0
  209. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.js +136 -0
  210. package/src/services/assets/asset-processing-service/processors/index.d.ts +5 -0
  211. package/src/services/assets/asset-processing-service/processors/index.js +5 -0
  212. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/content-script.processor.d.ts +3 -2
  213. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.js +119 -0
  214. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/file-script.processor.d.ts +4 -3
  215. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/file-script.processor.js +28 -7
  216. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/node-module-script.processor.d.ts +3 -3
  217. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/node-module-script.processor.js +12 -7
  218. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/stylesheet/content-stylesheet.processor.d.ts +5 -2
  219. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +59 -0
  220. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/stylesheet/file-stylesheet.processor.d.ts +2 -2
  221. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/stylesheet/file-stylesheet.processor.js +9 -3
  222. package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.d.ts +18 -0
  223. package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.js +45 -0
  224. package/src/services/assets/browser-bundle.service.d.ts +73 -0
  225. package/src/services/assets/browser-bundle.service.js +41 -0
  226. package/src/services/{page-request-cache-coordinator.service.d.ts → cache/page-request-cache-coordinator.service.d.ts} +2 -2
  227. package/src/services/{page-request-cache-coordinator.service.js → cache/page-request-cache-coordinator.service.js} +3 -1
  228. package/src/services/html/html-rewriter-provider.service.d.ts +37 -0
  229. package/src/services/html/html-rewriter-provider.service.js +68 -0
  230. package/src/services/html/html-transformer.service.d.ts +87 -0
  231. package/src/services/html/html-transformer.service.js +216 -0
  232. package/src/services/invalidation/development-invalidation.service.d.ts +74 -0
  233. package/src/services/invalidation/development-invalidation.service.js +190 -0
  234. package/src/services/module-loading/app-module-loader.service.d.ts +7 -0
  235. package/src/services/module-loading/app-server-module-transpiler.service.d.ts +24 -0
  236. package/src/services/module-loading/app-server-module-transpiler.service.js +115 -0
  237. package/src/services/module-loading/host-module-loader-registry.d.ts +4 -0
  238. package/src/services/module-loading/host-module-loader-registry.js +15 -0
  239. package/src/services/module-loading/module-loading-types.d.ts +2 -0
  240. package/src/services/module-loading/module-loading-types.js +0 -0
  241. package/src/services/module-loading/node-bootstrap-plugin.d.ts +42 -0
  242. package/src/services/module-loading/node-bootstrap-plugin.js +216 -0
  243. package/src/services/module-loading/page-module-import.service.d.ts +76 -0
  244. package/src/services/module-loading/page-module-import.service.js +170 -0
  245. package/src/services/module-loading/server-module-transpiler.service.d.ts +63 -0
  246. package/src/services/module-loading/server-module-transpiler.service.js +64 -0
  247. package/src/services/module-loading/source-module-support.d.ts +5 -0
  248. package/src/services/module-loading/source-module-support.js +8 -0
  249. package/src/services/runtime-state/dev-graph.service.d.ts +118 -0
  250. package/src/services/runtime-state/dev-graph.service.js +162 -0
  251. package/src/services/runtime-state/entrypoint-dependency-graph.service.d.ts +41 -0
  252. package/src/services/runtime-state/entrypoint-dependency-graph.service.js +85 -0
  253. package/src/services/runtime-state/server-invalidation-state.service.d.ts +26 -0
  254. package/src/services/runtime-state/server-invalidation-state.service.js +35 -0
  255. package/src/services/{schema-validation-service.d.ts → validation/schema-validation-service.d.ts} +1 -1
  256. package/src/static-site-generator/README.md +26 -0
  257. package/src/static-site-generator/static-site-generator.d.ts +67 -20
  258. package/src/static-site-generator/static-site-generator.js +182 -138
  259. package/src/{internal-types.d.ts → types/internal-types.d.ts} +62 -30
  260. package/src/types/internal-types.js +0 -0
  261. package/src/{public-types.d.ts → types/public-types.d.ts} +201 -32
  262. package/src/types/public-types.js +0 -0
  263. package/src/utils/html-escaping.d.ts +7 -0
  264. package/src/utils/html-escaping.js +6 -0
  265. package/src/utils/locals-utils.d.ts +1 -1
  266. package/src/utils/parse-cli-args.d.ts +4 -1
  267. package/src/utils/parse-cli-args.js +16 -1
  268. package/src/utils/resolve-work-dir.d.ts +11 -0
  269. package/src/utils/resolve-work-dir.js +31 -0
  270. package/src/watchers/project-watcher.d.ts +40 -29
  271. package/src/watchers/project-watcher.js +126 -116
  272. package/src/watchers/project-watcher.test-helpers.d.ts +2 -2
  273. package/src/watchers/project-watcher.test-helpers.js +6 -6
  274. package/src/adapters/abstract/application-adapter.ts +0 -337
  275. package/src/adapters/abstract/router-adapter.ts +0 -30
  276. package/src/adapters/abstract/server-adapter.ts +0 -79
  277. package/src/adapters/bun/client-bridge.ts +0 -62
  278. package/src/adapters/bun/create-app.ts +0 -189
  279. package/src/adapters/bun/define-api-handler.d.ts +0 -61
  280. package/src/adapters/bun/define-api-handler.ts +0 -114
  281. package/src/adapters/bun/hmr-manager.ts +0 -296
  282. package/src/adapters/bun/index.ts +0 -3
  283. package/src/adapters/bun/server-adapter.ts +0 -492
  284. package/src/adapters/bun/server-lifecycle.ts +0 -154
  285. package/src/adapters/index.ts +0 -6
  286. package/src/adapters/node/create-app.ts +0 -179
  287. package/src/adapters/node/index.d.ts +0 -4
  288. package/src/adapters/node/index.js +0 -8
  289. package/src/adapters/node/index.ts +0 -9
  290. package/src/adapters/node/node-client-bridge.ts +0 -79
  291. package/src/adapters/node/node-hmr-manager.ts +0 -289
  292. package/src/adapters/node/server-adapter.ts +0 -561
  293. package/src/adapters/node/static-content-server.ts +0 -203
  294. package/src/adapters/shared/api-response.ts +0 -104
  295. package/src/adapters/shared/application-adapter.ts +0 -199
  296. package/src/adapters/shared/explicit-static-route-matcher.ts +0 -134
  297. package/src/adapters/shared/file-route-middleware-pipeline.ts +0 -123
  298. package/src/adapters/shared/fs-server-response-factory.ts +0 -118
  299. package/src/adapters/shared/fs-server-response-matcher.ts +0 -198
  300. package/src/adapters/shared/render-context.ts +0 -105
  301. package/src/adapters/shared/server-adapter.ts +0 -442
  302. package/src/adapters/shared/server-route-handler.ts +0 -166
  303. package/src/adapters/shared/server-static-builder.ts +0 -82
  304. package/src/build/build-adapter.ts +0 -132
  305. package/src/build/build-types.ts +0 -83
  306. package/src/build/esbuild-build-adapter.ts +0 -510
  307. package/src/config/config-builder.ts +0 -474
  308. package/src/constants.ts +0 -39
  309. package/src/create-app.ts +0 -87
  310. package/src/define-api-handler.js +0 -15
  311. package/src/define-api-handler.ts +0 -66
  312. package/src/dev/sc-server.ts +0 -143
  313. package/src/eco/component-render-context.d.ts +0 -105
  314. package/src/eco/component-render-context.js +0 -77
  315. package/src/eco/component-render-context.ts +0 -202
  316. package/src/eco/eco.ts +0 -221
  317. package/src/eco/eco.types.ts +0 -202
  318. package/src/eco/eco.utils.ts +0 -89
  319. package/src/eco/global-injector-map.ts +0 -112
  320. package/src/eco/lazy-injector-map.ts +0 -120
  321. package/src/eco/module-dependencies.ts +0 -75
  322. package/src/errors/http-error.ts +0 -72
  323. package/src/errors/index.ts +0 -2
  324. package/src/errors/locals-access-error.ts +0 -7
  325. package/src/global/app-logger.ts +0 -4
  326. package/src/hmr/client/__screenshots__/hmr-runtime.test.browser.ts/HMR-Runtime-HMR-Server-Integration-should-have-HMR-script-injected-in-page-1.png +0 -0
  327. package/src/hmr/client/__screenshots__/hmr-runtime.test.browser.ts/HMR-Runtime-HMR-Server-Integration-should-load-fixture-app-page-1.png +0 -0
  328. package/src/hmr/client/__screenshots__/hmr-runtime.test.browser.ts/HMR-Runtime-WebSocket-Connection-should-connect-to-correct-HMR-endpoint-1.png +0 -0
  329. package/src/hmr/client/hmr-runtime.ts +0 -121
  330. package/src/hmr/hmr-strategy.ts +0 -172
  331. package/src/hmr/hmr.test.e2e.ts +0 -75
  332. package/src/hmr/strategies/default-hmr-strategy.ts +0 -60
  333. package/src/hmr/strategies/js-hmr-strategy.ts +0 -320
  334. package/src/index.browser.ts +0 -3
  335. package/src/index.ts +0 -5
  336. package/src/integrations/ghtml/ghtml-renderer.ts +0 -93
  337. package/src/integrations/ghtml/ghtml.plugin.ts +0 -32
  338. package/src/internal-types.ts +0 -212
  339. package/src/plugins/alias-resolver-plugin.ts +0 -45
  340. package/src/plugins/eco-component-meta-plugin.ts +0 -474
  341. package/src/plugins/integration-plugin.ts +0 -184
  342. package/src/plugins/processor.ts +0 -220
  343. package/src/public-types.ts +0 -1260
  344. package/src/route-renderer/component-graph-executor.d.ts +0 -32
  345. package/src/route-renderer/component-graph-executor.js +0 -31
  346. package/src/route-renderer/component-graph-executor.ts +0 -84
  347. package/src/route-renderer/component-graph.d.ts +0 -42
  348. package/src/route-renderer/component-graph.js +0 -72
  349. package/src/route-renderer/component-graph.ts +0 -159
  350. package/src/route-renderer/component-marker.d.ts +0 -52
  351. package/src/route-renderer/component-marker.js +0 -46
  352. package/src/route-renderer/component-marker.ts +0 -117
  353. package/src/route-renderer/dependency-resolver.js +0 -428
  354. package/src/route-renderer/dependency-resolver.ts +0 -596
  355. package/src/route-renderer/html-post-processing.service.d.ts +0 -40
  356. package/src/route-renderer/html-post-processing.service.js +0 -86
  357. package/src/route-renderer/html-post-processing.service.ts +0 -103
  358. package/src/route-renderer/integration-renderer.d.ts +0 -339
  359. package/src/route-renderer/integration-renderer.js +0 -526
  360. package/src/route-renderer/integration-renderer.ts +0 -696
  361. package/src/route-renderer/marker-graph-resolver.d.ts +0 -76
  362. package/src/route-renderer/marker-graph-resolver.js +0 -93
  363. package/src/route-renderer/marker-graph-resolver.ts +0 -153
  364. package/src/route-renderer/page-module-loader.d.ts +0 -61
  365. package/src/route-renderer/page-module-loader.ts +0 -153
  366. package/src/route-renderer/render-execution.service.d.ts +0 -69
  367. package/src/route-renderer/render-execution.service.js +0 -91
  368. package/src/route-renderer/render-execution.service.ts +0 -158
  369. package/src/route-renderer/render-preparation.service.d.ts +0 -112
  370. package/src/route-renderer/render-preparation.service.js +0 -243
  371. package/src/route-renderer/render-preparation.service.ts +0 -358
  372. package/src/route-renderer/route-renderer.ts +0 -80
  373. package/src/router/fs-router-scanner.d.ts +0 -41
  374. package/src/router/fs-router-scanner.js +0 -155
  375. package/src/router/fs-router-scanner.ts +0 -217
  376. package/src/router/fs-router.d.ts +0 -26
  377. package/src/router/fs-router.js +0 -100
  378. package/src/router/fs-router.ts +0 -122
  379. package/src/services/asset-processing-service/asset-processing.service.d.ts +0 -41
  380. package/src/services/asset-processing-service/asset-processing.service.ts +0 -306
  381. package/src/services/asset-processing-service/asset.factory.ts +0 -105
  382. package/src/services/asset-processing-service/assets.types.ts +0 -112
  383. package/src/services/asset-processing-service/index.d.ts +0 -3
  384. package/src/services/asset-processing-service/index.js +0 -3
  385. package/src/services/asset-processing-service/index.ts +0 -3
  386. package/src/services/asset-processing-service/processor.interface.ts +0 -27
  387. package/src/services/asset-processing-service/processor.registry.ts +0 -18
  388. package/src/services/asset-processing-service/processors/base/base-processor.ts +0 -76
  389. package/src/services/asset-processing-service/processors/base/base-script-processor.d.ts +0 -16
  390. package/src/services/asset-processing-service/processors/base/base-script-processor.js +0 -80
  391. package/src/services/asset-processing-service/processors/base/base-script-processor.ts +0 -105
  392. package/src/services/asset-processing-service/processors/index.d.ts +0 -5
  393. package/src/services/asset-processing-service/processors/index.js +0 -5
  394. package/src/services/asset-processing-service/processors/index.ts +0 -5
  395. package/src/services/asset-processing-service/processors/script/content-script.processor.js +0 -57
  396. package/src/services/asset-processing-service/processors/script/content-script.processor.ts +0 -66
  397. package/src/services/asset-processing-service/processors/script/file-script.processor.ts +0 -88
  398. package/src/services/asset-processing-service/processors/script/node-module-script.processor.ts +0 -84
  399. package/src/services/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +0 -25
  400. package/src/services/asset-processing-service/processors/stylesheet/content-stylesheet.processor.ts +0 -27
  401. package/src/services/asset-processing-service/processors/stylesheet/file-stylesheet.processor.ts +0 -77
  402. package/src/services/cache/cache.types.ts +0 -126
  403. package/src/services/cache/index.ts +0 -18
  404. package/src/services/cache/memory-cache-store.ts +0 -130
  405. package/src/services/cache/page-cache-service.ts +0 -202
  406. package/src/services/html-transformer.service.d.ts +0 -50
  407. package/src/services/html-transformer.service.js +0 -163
  408. package/src/services/html-transformer.service.ts +0 -217
  409. package/src/services/page-module-import.service.d.ts +0 -37
  410. package/src/services/page-module-import.service.js +0 -88
  411. package/src/services/page-module-import.service.ts +0 -129
  412. package/src/services/page-request-cache-coordinator.service.ts +0 -128
  413. package/src/services/schema-validation-service.ts +0 -204
  414. package/src/services/validation/standard-schema.types.ts +0 -68
  415. package/src/static-site-generator/static-site-generator.ts +0 -359
  416. package/src/utils/css.d.ts +0 -1
  417. package/src/utils/css.js +0 -7
  418. package/src/utils/css.ts +0 -5
  419. package/src/utils/deep-merge.ts +0 -47
  420. package/src/utils/hash.ts +0 -5
  421. package/src/utils/html.ts +0 -1
  422. package/src/utils/invariant.ts +0 -15
  423. package/src/utils/locals-utils.ts +0 -37
  424. package/src/utils/parse-cli-args.ts +0 -83
  425. package/src/utils/path-utils.module.ts +0 -14
  426. package/src/utils/runtime.ts +0 -44
  427. package/src/utils/server-utils.module.ts +0 -67
  428. package/src/watchers/project-watcher.test-helpers.ts +0 -41
  429. package/src/watchers/project-watcher.ts +0 -344
  430. /package/src/adapters/{bun → shared}/define-api-handler.js +0 -0
  431. /package/src/{internal-types.js → plugins/runtime-capability.js} +0 -0
  432. /package/src/services/{asset-processing-service → assets/asset-processing-service}/assets.types.js +0 -0
  433. /package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.interface.js +0 -0
  434. /package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.registry.js +0 -0
  435. /package/src/{public-types.js → services/module-loading/app-module-loader.service.js} +0 -0
  436. /package/src/services/{schema-validation-service.js → validation/schema-validation-service.js} +0 -0
@@ -1,10 +1,11 @@
1
- import type { EcoPagesAppConfig } from '../../internal-types';
2
- import type { StaticRoute } from '../../public-types';
3
- import type { RouteRendererFactory } from '../../route-renderer/route-renderer';
4
- import type { FSRouter } from '../../router/fs-router';
5
- import type { StaticSiteGenerator } from '../../static-site-generator/static-site-generator';
1
+ import type { EcoPagesAppConfig } from '../../types/internal-types.js';
2
+ import type { ApiHandler, StaticRoute } from '../../types/public-types.js';
3
+ import type { RouteRegistry } from '../../router/server/route-registry.js';
4
+ import type { StaticSiteGenerator } from '../../static-site-generator/static-site-generator.js';
5
+ import type { StaticGenerationRendererResolver } from '../../route-renderer/route-renderer.js';
6
6
  export interface StaticBuildOptions {
7
7
  preview?: boolean;
8
+ baseUrl?: string;
8
9
  }
9
10
  export interface ServeOptions {
10
11
  hostname?: string;
@@ -14,6 +15,32 @@ export interface ServerStaticBuilderParams {
14
15
  appConfig: EcoPagesAppConfig;
15
16
  staticSiteGenerator: StaticSiteGenerator;
16
17
  serveOptions: ServeOptions;
18
+ apiHandlers?: ApiHandler[];
19
+ logger?: ServerStaticBuilderLogger;
20
+ previewServerFactory?: ServerStaticPreviewServerFactory;
21
+ }
22
+ /**
23
+ * Minimal logger dependency used by the static builder.
24
+ */
25
+ export interface ServerStaticBuilderLogger {
26
+ warn(message: string, detail?: string): unknown;
27
+ info(message: string): unknown;
28
+ error(message: string): unknown;
29
+ }
30
+ /**
31
+ * Preview server factory dependency used when static preview mode is enabled.
32
+ */
33
+ export interface ServerStaticPreviewServerFactory {
34
+ createServer(args: {
35
+ appConfig: EcoPagesAppConfig;
36
+ options: {
37
+ port: number;
38
+ };
39
+ }): {
40
+ server?: {
41
+ port?: number;
42
+ } | null;
43
+ };
17
44
  }
18
45
  /**
19
46
  * Handles static site generation and previews.
@@ -22,7 +49,13 @@ export declare class ServerStaticBuilder {
22
49
  private readonly appConfig;
23
50
  private readonly staticSiteGenerator;
24
51
  private readonly serveOptions;
25
- constructor({ appConfig, staticSiteGenerator, serveOptions }: ServerStaticBuilderParams);
52
+ private readonly apiHandlers;
53
+ private readonly logger;
54
+ private readonly previewServerFactory;
55
+ constructor({ appConfig, staticSiteGenerator, serveOptions, apiHandlers, logger, previewServerFactory, }: ServerStaticBuilderParams);
56
+ private warnApiHandlersUnavailableInStaticMode;
57
+ private prepareExportDirectory;
58
+ private refreshRuntimeAssets;
26
59
  /**
27
60
  * Generates a static build of the site for deployment.
28
61
  * @param options.preview - If true, starts a preview server after build
@@ -31,8 +64,8 @@ export declare class ServerStaticBuilder {
31
64
  * @param dependencies.staticRoutes - Explicit static routes registered via app.static()
32
65
  */
33
66
  build(options: StaticBuildOptions | undefined, dependencies: {
34
- router: FSRouter;
35
- routeRendererFactory: RouteRendererFactory;
67
+ router: RouteRegistry;
68
+ routeRendererFactory: StaticGenerationRendererResolver;
36
69
  staticRoutes?: StaticRoute[];
37
70
  }): Promise<void>;
38
71
  }
@@ -1,13 +1,64 @@
1
- import { StaticContentServer } from "../../dev/sc-server";
2
- import { appLogger } from "../../global/app-logger";
1
+ import path from "node:path";
2
+ import { fileSystem } from "@ecopages/file-system";
3
+ import { DEFAULT_ECOPAGES_HOSTNAME, DEFAULT_ECOPAGES_PORT } from "../../config/constants.js";
4
+ import { StaticContentServer } from "../../dev/sc-server.js";
5
+ import { appLogger } from "../../global/app-logger.js";
3
6
  class ServerStaticBuilder {
4
7
  appConfig;
5
8
  staticSiteGenerator;
6
9
  serveOptions;
7
- constructor({ appConfig, staticSiteGenerator, serveOptions }) {
10
+ apiHandlers;
11
+ logger;
12
+ previewServerFactory;
13
+ constructor({
14
+ appConfig,
15
+ staticSiteGenerator,
16
+ serveOptions,
17
+ apiHandlers,
18
+ logger,
19
+ previewServerFactory
20
+ }) {
8
21
  this.appConfig = appConfig;
9
22
  this.staticSiteGenerator = staticSiteGenerator;
10
23
  this.serveOptions = serveOptions;
24
+ this.apiHandlers = apiHandlers ?? [];
25
+ this.logger = logger ?? appLogger;
26
+ this.previewServerFactory = previewServerFactory ?? StaticContentServer;
27
+ }
28
+ warnApiHandlersUnavailableInStaticMode() {
29
+ if (this.apiHandlers.length === 0) {
30
+ return;
31
+ }
32
+ const uniqueHandlers = Array.from(
33
+ new Set(this.apiHandlers.map((handler) => `${handler.method} ${handler.path}`))
34
+ );
35
+ const visibleHandlers = uniqueHandlers.slice(0, 5).join(", ");
36
+ const remainingCount = uniqueHandlers.length - Math.min(uniqueHandlers.length, 5);
37
+ const summary = remainingCount > 0 ? `${visibleHandlers}, +${remainingCount} more` : visibleHandlers;
38
+ this.logger.warn(
39
+ "Registered API endpoints are not available in static build or preview modes because no server runtime is started. They are excluded from the generated output.\n",
40
+ `\u27A4 ${summary}`
41
+ );
42
+ }
43
+ prepareExportDirectory() {
44
+ const exportDir = this.appConfig.absolutePaths?.distDir ?? path.join(this.appConfig.rootDir, this.appConfig.distDir);
45
+ fileSystem.ensureDir(exportDir, true);
46
+ const srcPublicDir = path.join(
47
+ this.appConfig.rootDir,
48
+ this.appConfig.srcDir ?? "src",
49
+ this.appConfig.publicDir ?? "public"
50
+ );
51
+ if (fileSystem.exists(srcPublicDir)) {
52
+ fileSystem.copyDir(srcPublicDir, exportDir);
53
+ }
54
+ }
55
+ async refreshRuntimeAssets() {
56
+ for (const processor of this.appConfig.processors.values()) {
57
+ await processor.setup();
58
+ }
59
+ for (const integration of this.appConfig.integrations) {
60
+ await integration.setup();
61
+ }
11
62
  }
12
63
  /**
13
64
  * Generates a static build of the site for deployment.
@@ -17,8 +68,11 @@ class ServerStaticBuilder {
17
68
  * @param dependencies.staticRoutes - Explicit static routes registered via app.static()
18
69
  */
19
70
  async build(options, dependencies) {
20
- const { preview = false } = options ?? {};
21
- const baseUrl = `http://${this.serveOptions.hostname || "localhost"}:${this.serveOptions.port || 3e3}`;
71
+ const { preview = false, baseUrl: explicitBaseUrl } = options ?? {};
72
+ const baseUrl = explicitBaseUrl ?? `http://${this.serveOptions.hostname || DEFAULT_ECOPAGES_HOSTNAME}:${this.serveOptions.port || DEFAULT_ECOPAGES_PORT}`;
73
+ this.warnApiHandlersUnavailableInStaticMode();
74
+ this.prepareExportDirectory();
75
+ await this.refreshRuntimeAssets();
22
76
  await this.staticSiteGenerator.run({
23
77
  router: dependencies.router,
24
78
  baseUrl,
@@ -26,18 +80,18 @@ class ServerStaticBuilder {
26
80
  staticRoutes: dependencies.staticRoutes
27
81
  });
28
82
  if (!preview) {
29
- appLogger.info("Build completed");
83
+ this.logger.info("Build completed");
30
84
  return;
31
85
  }
32
- const previewPort = this.serveOptions.port || 3e3;
33
- const { server } = StaticContentServer.createServer({
86
+ const previewPort = this.serveOptions.port || DEFAULT_ECOPAGES_PORT;
87
+ const { server } = this.previewServerFactory.createServer({
34
88
  appConfig: this.appConfig,
35
89
  options: { port: Number(previewPort) }
36
90
  });
37
- if (server) {
38
- appLogger.info(`Preview running at http://localhost:${server.port}`);
91
+ if (server?.port) {
92
+ this.logger.info(`Preview running at http://localhost:${server.port}`);
39
93
  } else {
40
- appLogger.error("Failed to start preview server");
94
+ this.logger.error("Failed to start preview server");
41
95
  }
42
96
  }
43
97
  }
@@ -0,0 +1,107 @@
1
+ # Build Layer
2
+
3
+ This directory contains the runtime-neutral build contract used across Ecopages, the Bun-native adapter that currently uses esbuild under the hood, and the explicit host-owned Vite compatibility boundary.
4
+
5
+ ## Files
6
+
7
+ - `build-adapter.ts`: shared build interfaces, explicit Bun-native versus Vite-host ownership helpers, app-owned adapter/executor helpers, and compatibility fallback helpers for older Bun-native call paths.
8
+ - `build-types.ts`: plugin bridge types used by integrations and processors.
9
+ - `esbuild-build-adapter.ts`: the concrete Bun-native adapter implementation. It is compatibility infrastructure, not strategic architecture.
10
+ - `dev-build-coordinator.ts`: development-only orchestration around the temporary Bun-native esbuild backend.
11
+ - `*.test.ts`: focused regression coverage for plain builds and development serialization and recovery.
12
+
13
+ ## Responsibilities
14
+
15
+ The build layer is intentionally split into two parts.
16
+
17
+ `BuildExecutor` is the runtime-facing contract.
18
+
19
+ - It is the narrow facade stored on `appConfig.runtime.buildExecutor`.
20
+ - It answers only how a given app instance should execute builds right now.
21
+ - the Bun-native adapter satisfies this contract directly in plain flows.
22
+ - `DevBuildCoordinator` also satisfies this contract by wrapping the temporary Bun-native esbuild adapter with development-only serialization and recovery policy.
23
+
24
+ `EsbuildBuildAdapter` is the current Bun-native backend. It knows how to:
25
+
26
+ - load the esbuild module
27
+ - translate Ecopages `BuildOptions` into esbuild options
28
+ - bridge Ecopages build plugins into esbuild hooks
29
+ - normalize build output, logs, and dependency graph metadata
30
+ - detect the subset of runtime faults that mean the esbuild worker protocol is corrupted
31
+
32
+ `ViteHostBuildAdapter` is a boundary marker, not a real backend. It exists so app/runtime state can represent that Vite owns host-side build execution instead of silently falling back to a framework-owned esbuild path.
33
+
34
+ `DevBuildCoordinator` is the development policy layer. It exists because one app/runtime can have many build callers during dev mode, including:
35
+
36
+ - page module imports
37
+ - HMR entrypoint builds
38
+ - script and asset processors
39
+ - React integration build paths
40
+
41
+ Those callers must not race each other against one long-lived esbuild worker. The coordinator therefore owns temporary compatibility policy for the Bun-native path:
42
+
43
+ - serialized access to the shared adapter in development
44
+ - recycling warm Node-target esbuild sessions between builds
45
+ - recovery from known esbuild worker protocol faults
46
+
47
+ ## Default Flow
48
+
49
+ Each `EcoPagesAppConfig` owns explicit build ownership, a build adapter, a build manifest, and a `buildExecutor` in `appConfig.runtime`. `ConfigBuilder.build()` now creates that app-owned build state up front so later runtime startup can reuse it rather than mutating a shared adapter.
50
+
51
+ When a Bun server adapter starts in watch mode, it replaces that executor with a per-app `DevBuildCoordinator`. Vite-hosted flows should not use that coordinator; the host owns watch, graph, and HMR policy there. Build consumers then either call the executor directly or pass it explicitly to the top-level `build()` helper.
52
+
53
+ The exported `defaultBuildAdapter` and top-level `getTranspileOptions()` helper are compatibility fallbacks only. New runtime code should prefer app-owned access through `getAppBuildAdapter()`, `getAppBuildExecutor()`, and `getAppTranspileOptions()`.
54
+
55
+ The same rule applies to source-module loading: host-owned import behavior must be injected through abstract runtime state rather than imported directly into core services.
56
+
57
+ Plugins are part of app-owned manifest or per-build input now. The source build contract no longer exposes adapter-level plugin registration, which keeps build composition scoped to an app/runtime instance instead of leaking across instances.
58
+
59
+ HMR callers follow the same ownership model. Integration-specific runtime aliasing stays with the integration that owns those specifiers, rather than in generic core HMR bundling.
60
+
61
+ ## Orchestration Diagram
62
+
63
+ ```mermaid
64
+ flowchart TD
65
+ Config["ConfigBuilder.build()"] --> DefaultExec["appConfig.runtime.buildExecutor = createAppBuildExecutor(app adapter, manifest)"]
66
+ Adapter["Server adapter initialize() in watch mode"] --> DevExec["appConfig.runtime.buildExecutor = DevBuildCoordinator"]
67
+ Caller["Any build caller with app/runtime context"] --> Build["executor.build(options) or build(options, executor)"]
68
+ Build --> Executor["BuildExecutor"]
69
+ Executor --> Coordinator["DevBuildCoordinator.build()"]
70
+ Coordinator --> Backend["EsbuildBuildAdapter.buildOrThrow()"]
71
+ Executor -->|plain flow| Direct["EsbuildBuildAdapter.build()"]
72
+ Backend --> Result["BuildResult"]
73
+ Direct --> Result["BuildResult"]
74
+ Result --> Browser["Browser consumes emitted bundle directly"]
75
+ ```
76
+
77
+ ## Recovery Model
78
+
79
+ The recovery path is narrow on purpose. The coordinator only treats an error as recoverable when `EsbuildBuildAdapter.isEsbuildProtocolError()` matches one of the known worker-protocol failure signatures.
80
+
81
+ When that happens, recovery does three things in order:
82
+
83
+ 1. Reset the serialized queue so future builds are not stuck behind a wedged promise.
84
+ 2. Stop the current esbuild service instance.
85
+ 3. Increment the esbuild module generation so the next import gets a fresh worker instance.
86
+
87
+ After that reset, the coordinator retries the failed build once.
88
+
89
+ ## Why Explicit App Ownership
90
+
91
+ There are many build callsites across core and integrations. The coordinator still needs to stay centralized for the remaining Bun-native compatibility path, but process-global installation hid the real dependency and tied behavior to startup order.
92
+
93
+ The explicit app-owned executor model keeps the design honest:
94
+
95
+ - each app/runtime owns its own build executor
96
+ - development policy stays in one place (`DevBuildCoordinator`) for the remaining Bun-native path only
97
+ - callers with app context use that executor explicitly instead of consulting global state
98
+ - tests can still instantiate `EsbuildBuildAdapter`, `ViteHostBuildAdapter`, or `DevBuildCoordinator` directly when they want the raw ownership boundary or compatibility backend only
99
+
100
+ ## Testing Strategy
101
+
102
+ The build tests are split by concern.
103
+
104
+ - `build-adapter.test.ts` verifies plain backend behavior and plugin bridging.
105
+ - `build-adapter-serialization.test.ts` verifies development orchestration behavior such as serialization, warm-session recycling, and protocol-fault recovery.
106
+
107
+ If you change the build orchestration rules, update the coordinator tests first. If you change esbuild option mapping or plugin behavior, update the backend tests first.
@@ -1,5 +1,9 @@
1
1
  import type { EcoBuildPlugin } from './build-types.js';
2
+ import { type AppBuildManifest } from './build-manifest.js';
3
+ import type { EcoPagesAppConfig } from '../types/internal-types.js';
4
+ import type { IHmrManager } from '../types/public-types.js';
2
5
  export { EsbuildBuildAdapter } from './esbuild-build-adapter.js';
6
+ export type BuildOwnership = 'bun-native' | 'vite-host';
3
7
  export interface BuildLog {
4
8
  message: string;
5
9
  }
@@ -36,7 +40,10 @@ export interface BuildResult {
36
40
  export interface BuildOptions {
37
41
  entrypoints: string[];
38
42
  outdir?: string;
43
+ outbase?: string;
39
44
  naming?: string;
45
+ conditions?: string[];
46
+ define?: Record<string, string>;
40
47
  minify?: boolean;
41
48
  treeshaking?: boolean;
42
49
  target?: string;
@@ -57,18 +64,176 @@ export interface BuildTranspileOptions {
57
64
  sourcemap: string;
58
65
  }
59
66
  export interface BuildAdapter {
67
+ readonly ownership?: BuildOwnership;
68
+ /**
69
+ * Executes one concrete backend build.
70
+ *
71
+ * @remarks
72
+ * `BuildAdapter` is the low-level backend contract. Bun-native execution owns
73
+ * one adapter directly; Vite-hosted execution is represented as an explicit
74
+ * host-owned compatibility path rather than an implicit esbuild default.
75
+ */
60
76
  build(options: BuildOptions): Promise<BuildResult>;
61
77
  resolve(importPath: string, rootDir: string): string;
62
- registerPlugin(plugin: EcoBuildPlugin): void;
63
78
  getTranspileOptions(profile: BuildTranspileProfile): BuildTranspileOptions;
64
79
  }
65
80
  /**
66
- * @deprecated Use EsbuildBuildAdapter instead. Bun native build is missing some dependency graph features.
81
+ * Runtime-owned facade for issuing builds.
82
+ *
83
+ * @remarks
84
+ * This is intentionally narrower than `BuildAdapter`. A build executor answers
85
+ * only the question "how should this app execute a build right now?".
86
+ *
87
+ * In Bun-native production and non-watch flows the executor is usually the
88
+ * adapter itself. In development watch flows the executor may be a
89
+ * compatibility coordinator around the Bun-native adapter while the Vite host
90
+ * path continues migrating toward host-owned execution.
67
91
  */
92
+ export interface BuildExecutor {
93
+ build(options: BuildOptions): Promise<BuildResult>;
94
+ }
68
95
  export declare class BunBuildAdapter implements BuildAdapter {
96
+ readonly ownership: "bun-native";
97
+ private readonly fallbackAdapter;
98
+ private getPluginsForBuild;
99
+ private escapeRegExp;
100
+ private resolvePluginPath;
101
+ private inferLoaderFromPath;
102
+ private normalizeBunLoader;
103
+ private convertLoadResultToModuleSource;
104
+ private convertPluginOnLoadResult;
105
+ private createEcoPluginBridge;
106
+ private toBuildLogs;
107
+ private mapBunTarget;
108
+ private mapBunFormat;
109
+ private getOutputExtension;
110
+ private resolveConcreteOutputPath;
111
+ private normalizePathForMatch;
112
+ private normalizeOutputPathForMatch;
113
+ private extractTemplateHashTokens;
114
+ private applyTemplateHashTokens;
115
+ private resolveTemplatedOutputPath;
116
+ private relocateOutputFile;
117
+ private hasJavaScriptExtension;
118
+ private findOutputMatchForEntrypoint;
119
+ private normalizeBunOutputs;
120
+ private rewriteAliasedRuntimeSpecifiers;
69
121
  build(options: BuildOptions): Promise<BuildResult>;
70
122
  resolve(importPath: string, rootDir: string): string;
71
- registerPlugin(plugin: EcoBuildPlugin): void;
72
123
  getTranspileOptions(profile: BuildTranspileProfile): BuildTranspileOptions;
73
124
  }
125
+ export declare class ViteHostBuildAdapter implements BuildAdapter {
126
+ readonly ownership: "vite-host";
127
+ build(_options: BuildOptions): Promise<BuildResult>;
128
+ resolve(_importPath: string, _rootDir: string): string;
129
+ getTranspileOptions(_profile: BuildTranspileProfile): BuildTranspileOptions;
130
+ }
131
+ export declare function createBunBuildAdapter(): BuildAdapter;
132
+ export declare function createViteHostBuildAdapter(): BuildAdapter;
133
+ export declare function createBuildAdapter(options?: {
134
+ ownership?: BuildOwnership;
135
+ }): BuildAdapter;
136
+ export declare const defaultBunBuildAdapter: BuildAdapter;
137
+ export declare const defaultViteHostBuildAdapter: BuildAdapter;
138
+ /**
139
+ * Bun-native fallback export for callsites that still resolve build state
140
+ * globally.
141
+ *
142
+ * New app-aware code should prefer `getAppBuildAdapter()`.
143
+ */
74
144
  export declare const defaultBuildAdapter: BuildAdapter;
145
+ export declare function getDefaultBuildAdapter(ownership?: BuildOwnership): BuildAdapter;
146
+ export declare function getBuildAdapterOwnership(buildAdapter: BuildAdapter | undefined): BuildOwnership;
147
+ export declare function getAppBuildOwnership(appConfig: EcoPagesAppConfig): BuildOwnership;
148
+ export declare function setAppBuildOwnership(appConfig: EcoPagesAppConfig, buildOwnership: BuildOwnership): void;
149
+ /**
150
+ * Returns the adapter owned by an app/runtime instance.
151
+ *
152
+ * @remarks
153
+ * The config builder installs an explicit adapter per app. The Bun-native
154
+ * fallback remains only as compatibility scaffolding for helpers that do not
155
+ * yet thread app runtime state explicitly.
156
+ */
157
+ export declare function getAppBuildAdapter(appConfig: EcoPagesAppConfig): BuildAdapter;
158
+ /**
159
+ * Installs the adapter that should serve future builds for one app instance.
160
+ */
161
+ export declare function setAppBuildAdapter(appConfig: EcoPagesAppConfig, buildAdapter: BuildAdapter): void;
162
+ /**
163
+ * Returns the build manifest owned by an app/runtime instance.
164
+ */
165
+ export declare function getAppBuildManifest(appConfig: EcoPagesAppConfig): AppBuildManifest;
166
+ /**
167
+ * Installs the build manifest that should be visible to one app instance.
168
+ */
169
+ export declare function setAppBuildManifest(appConfig: EcoPagesAppConfig, buildManifest: AppBuildManifest): void;
170
+ /**
171
+ * Rebuilds an app-owned manifest from config-owned loaders plus explicit
172
+ * runtime/browser contribution input.
173
+ *
174
+ * @remarks
175
+ * This keeps loader ownership with config finalization while still letting a
176
+ * caller supply the non-loader plugin buckets that were discovered elsewhere.
177
+ */
178
+ export declare function createConfiguredAppBuildManifest(appConfig: EcoPagesAppConfig, input?: Partial<AppBuildManifest>): AppBuildManifest;
179
+ /**
180
+ * Replaces the app-owned manifest using config-owned loaders and explicit
181
+ * contribution input.
182
+ */
183
+ export declare function updateAppBuildManifest(appConfig: EcoPagesAppConfig, input?: Partial<AppBuildManifest>): void;
184
+ /**
185
+ * Collects the build-facing processor and integration contributions that should
186
+ * be sealed into the app manifest during config finalization.
187
+ *
188
+ * @remarks
189
+ * This runs `prepareBuildContributions()` only. Runtime-only side effects such
190
+ * as HMR registration, cache prewarming, and runtime-origin wiring belong to
191
+ * the startup path and must not be triggered here.
192
+ */
193
+ export declare function collectConfiguredAppBuildManifestContributions(appConfig: EcoPagesAppConfig): Promise<Pick<AppBuildManifest, 'runtimePlugins' | 'browserBundlePlugins'>>;
194
+ /**
195
+ * Runs runtime-only processor and integration setup against an already sealed
196
+ * app manifest.
197
+ *
198
+ * @remarks
199
+ * Startup paths call this after config build has finalized manifest
200
+ * contributions. The manifest is reused as-is; this helper only performs the
201
+ * runtime side effects that still need live startup context.
202
+ */
203
+ export declare function setupAppRuntimePlugins(options: {
204
+ appConfig: EcoPagesAppConfig;
205
+ runtimeOrigin: string;
206
+ hmrManager?: IHmrManager;
207
+ onRuntimePlugin?: (plugin: EcoBuildPlugin) => void;
208
+ }): Promise<void>;
209
+ export declare function getAppServerBuildPlugins(appConfig: EcoPagesAppConfig): EcoBuildPlugin[];
210
+ export declare function getAppBrowserBuildPlugins(appConfig: EcoPagesAppConfig): EcoBuildPlugin[];
211
+ /**
212
+ * Returns the executor owned by an app/runtime instance.
213
+ *
214
+ * @remarks
215
+ * The config builder seeds this with the app-owned adapter. Runtime adapters
216
+ * may replace it with a compatibility coordinator while keeping ownership tied
217
+ * to the same Bun-native backend.
218
+ */
219
+ export declare function getAppBuildExecutor(appConfig: EcoPagesAppConfig): BuildExecutor;
220
+ /**
221
+ * Installs the executor that should serve future builds for one app instance.
222
+ */
223
+ export declare function setAppBuildExecutor(appConfig: EcoPagesAppConfig, buildExecutor: BuildExecutor): void;
224
+ /**
225
+ * Runs a build through the active pipeline.
226
+ *
227
+ * @remarks
228
+ * Callers can pass an explicit executor when builds should be routed through an
229
+ * app-owned development coordinator. Without one, the Bun-native default
230
+ * adapter is used directly.
231
+ */
232
+ export declare function build(options: BuildOptions, executor?: BuildExecutor): Promise<BuildResult>;
233
+ /**
234
+ * Bun-native fallback helper for callsites without app runtime context.
235
+ *
236
+ * New app-aware code should prefer `getAppTranspileOptions()`.
237
+ */
238
+ export declare function getTranspileOptions(profile: BuildTranspileProfile): BuildTranspileOptions;
239
+ export declare function getAppTranspileOptions(appConfig: EcoPagesAppConfig, profile: BuildTranspileProfile): BuildTranspileOptions;