@ecopages/core 0.2.0-alpha.9 → 0.2.1-beta.0

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 (471) hide show
  1. package/README.md +79 -28
  2. package/package.json +94 -116
  3. package/src/adapters/README.md +2 -2
  4. package/src/adapters/abstract/application-adapter.d.ts +28 -2
  5. package/src/adapters/abstract/application-adapter.js +14 -2
  6. package/src/adapters/abstract/router-adapter.d.ts +1 -1
  7. package/src/adapters/abstract/server-adapter.d.ts +2 -2
  8. package/src/adapters/bun/client-bridge.d.ts +1 -1
  9. package/src/adapters/bun/create-app.d.ts +12 -12
  10. package/src/adapters/bun/create-app.js +64 -41
  11. package/src/adapters/bun/hmr-manager.d.ts +19 -115
  12. package/src/adapters/bun/hmr-manager.js +25 -301
  13. package/src/adapters/bun/index.d.ts +1 -1
  14. package/src/adapters/bun/index.js +2 -2
  15. package/src/adapters/bun/runtime-host.d.ts +52 -0
  16. package/src/adapters/bun/runtime-host.js +56 -0
  17. package/src/adapters/bun/server-adapter.d.ts +100 -32
  18. package/src/adapters/bun/server-adapter.js +142 -65
  19. package/src/adapters/bun/static-preview-host.d.ts +28 -0
  20. package/src/adapters/bun/static-preview-host.js +45 -0
  21. package/src/{create-app.d.ts → adapters/create-app.d.ts} +9 -6
  22. package/src/{create-app.js → adapters/create-app.js} +4 -4
  23. package/src/adapters/index.d.ts +1 -5
  24. package/src/adapters/index.js +1 -7
  25. package/src/adapters/node/create-app.d.ts +15 -12
  26. package/src/adapters/node/create-app.js +34 -85
  27. package/src/adapters/node/http-request-bridge.d.ts +57 -0
  28. package/src/adapters/node/http-request-bridge.js +118 -0
  29. package/src/adapters/node/node-client-bridge.d.ts +1 -1
  30. package/src/adapters/node/node-hmr-manager.d.ts +22 -103
  31. package/src/adapters/node/node-hmr-manager.js +26 -289
  32. package/src/adapters/node/runtime-host.d.ts +57 -0
  33. package/src/adapters/node/runtime-host.js +92 -0
  34. package/src/adapters/node/server-adapter-dependencies.d.ts +19 -0
  35. package/src/adapters/node/server-adapter-dependencies.js +18 -0
  36. package/src/adapters/node/server-adapter.d.ts +19 -42
  37. package/src/adapters/node/server-adapter.js +94 -139
  38. package/src/adapters/node/static-content-server.d.ts +1 -1
  39. package/src/adapters/node/static-content-server.js +1 -1
  40. package/src/adapters/node/static-preview-host.d.ts +55 -0
  41. package/src/adapters/node/static-preview-host.js +68 -0
  42. package/src/adapters/shared/application-adapter.d.ts +1 -1
  43. package/src/adapters/shared/define-api-handler.d.ts +1 -1
  44. package/src/adapters/shared/explicit-static-render-preparation.d.ts +25 -0
  45. package/src/adapters/shared/explicit-static-render-preparation.js +26 -0
  46. package/src/adapters/shared/explicit-static-route-matcher.d.ts +7 -4
  47. package/src/adapters/shared/explicit-static-route-matcher.js +14 -16
  48. package/src/adapters/shared/file-route-middleware-pipeline.d.ts +7 -10
  49. package/src/adapters/shared/file-route-middleware-pipeline.js +2 -11
  50. package/src/adapters/shared/fs-server-response-factory.d.ts +14 -10
  51. package/src/adapters/shared/fs-server-response-factory.js +11 -27
  52. package/src/adapters/shared/fs-server-response-matcher.d.ts +18 -18
  53. package/src/adapters/shared/fs-server-response-matcher.js +72 -46
  54. package/src/adapters/shared/hmr-entrypoint-registrar.js +1 -1
  55. package/src/adapters/shared/hmr-html-response.d.ts +1 -1
  56. package/src/adapters/shared/hmr-html-response.js +4 -3
  57. package/src/adapters/shared/render-context.d.ts +5 -3
  58. package/src/adapters/shared/render-context.js +24 -1
  59. package/src/adapters/shared/runtime-app-bootstrap.d.ts +26 -0
  60. package/src/adapters/shared/runtime-app-bootstrap.js +46 -0
  61. package/src/adapters/shared/runtime-host.d.ts +12 -0
  62. package/src/adapters/shared/server-adapter.d.ts +22 -11
  63. package/src/adapters/shared/server-adapter.js +183 -133
  64. package/src/adapters/shared/server-route-handler.d.ts +5 -5
  65. package/src/adapters/shared/server-route-handler.js +4 -4
  66. package/src/adapters/shared/server-static-builder.d.ts +8 -7
  67. package/src/adapters/shared/server-static-builder.js +6 -5
  68. package/src/adapters/shared/shared-hmr-manager.d.ts +59 -0
  69. package/src/adapters/shared/shared-hmr-manager.js +241 -0
  70. package/src/adapters/shared/static-preview-host.d.ts +10 -0
  71. package/src/build/README.md +57 -67
  72. package/src/build/browser-runtime-manifest.d.ts +31 -0
  73. package/src/build/browser-runtime-manifest.js +61 -0
  74. package/src/build/browser-runtime-plugin-helpers.d.ts +26 -0
  75. package/src/build/browser-runtime-plugin-helpers.js +14 -0
  76. package/src/build/browser-runtime-plugin.d.ts +78 -0
  77. package/src/build/browser-runtime-plugin.js +173 -0
  78. package/src/build/build-adapter.d.ts +384 -63
  79. package/src/build/build-adapter.js +129 -54
  80. package/src/build/build-manifest.d.ts +6 -0
  81. package/src/build/build-manifest.js +21 -2
  82. package/src/build/build-types.d.ts +2 -2
  83. package/src/build/rolldown-adapter-helpers.d.ts +58 -0
  84. package/src/build/rolldown-adapter-helpers.js +265 -0
  85. package/src/build/rolldown-build-adapter.d.ts +28 -0
  86. package/src/build/rolldown-build-adapter.js +65 -0
  87. package/src/build/rolldown-dev-build-adapter.d.ts +82 -0
  88. package/src/build/rolldown-dev-build-adapter.js +166 -0
  89. package/src/build/rolldown-plugin-bridge.d.ts +59 -0
  90. package/src/build/rolldown-plugin-bridge.js +199 -0
  91. package/src/build/runtime-build-executor.d.ts +15 -7
  92. package/src/build/runtime-build-executor.js +8 -9
  93. package/src/build/runtime-build-output-normalizer.d.ts +3 -0
  94. package/src/build/runtime-build-output-normalizer.js +111 -0
  95. package/src/build/serialized-build-executor.d.ts +64 -0
  96. package/src/build/serialized-build-executor.js +63 -0
  97. package/src/build/server-side-css-shim-plugin.d.ts +41 -0
  98. package/src/build/server-side-css-shim-plugin.js +35 -0
  99. package/src/cache/index.d.ts +6 -0
  100. package/src/cache/index.js +6 -0
  101. package/src/cache/module-parse-cache.d.ts +65 -0
  102. package/src/cache/module-parse-cache.js +75 -0
  103. package/src/config/README.md +5 -2
  104. package/src/config/config-builder.d.ts +41 -13
  105. package/src/config/config-builder.js +62 -24
  106. package/src/declarations.d.ts +1 -1
  107. package/src/dev/host-runtime.d.ts +10 -0
  108. package/src/dev/host-runtime.js +24 -0
  109. package/src/dev/sc-server.d.ts +1 -1
  110. package/src/dev/sc-server.js +1 -1
  111. package/src/eco/eco.browser.d.ts +2 -0
  112. package/src/eco/eco.browser.js +88 -0
  113. package/src/eco/eco.js +50 -45
  114. package/src/eco/eco.types.d.ts +60 -8
  115. package/src/eco/eco.utils.d.ts +1 -40
  116. package/src/eco/eco.utils.js +5 -35
  117. package/src/eco/global-injector-map.d.ts +3 -3
  118. package/src/eco/global-injector-map.js +2 -2
  119. package/src/eco/lazy-injector-map.d.ts +2 -2
  120. package/src/errors/index.d.ts +1 -0
  121. package/src/errors/index.js +3 -1
  122. package/src/hmr/client/hmr-runtime.js +9 -1
  123. package/src/hmr/hmr-strategy.d.ts +16 -13
  124. package/src/hmr/hmr-strategy.js +22 -7
  125. package/src/hmr/strategies/default-hmr-strategy.d.ts +2 -2
  126. package/src/hmr/strategies/default-hmr-strategy.js +1 -1
  127. package/src/hmr/strategies/js-hmr-strategy.d.ts +4 -9
  128. package/src/hmr/strategies/js-hmr-strategy.js +5 -10
  129. package/src/index.browser.d.ts +2 -2
  130. package/src/index.browser.js +1 -1
  131. package/src/index.d.ts +3 -2
  132. package/src/index.js +15 -4
  133. package/src/integrations/ghtml/ghtml-renderer.d.ts +2 -1
  134. package/src/integrations/ghtml/ghtml-renderer.js +24 -29
  135. package/src/integrations/ghtml/ghtml.constants.d.ts +1 -0
  136. package/src/integrations/ghtml/ghtml.constants.js +4 -0
  137. package/src/integrations/ghtml/ghtml.plugin.d.ts +2 -6
  138. package/src/integrations/ghtml/ghtml.plugin.js +3 -4
  139. package/src/plugins/README.md +1 -0
  140. package/src/plugins/alias-resolver-cache.d.ts +68 -0
  141. package/src/plugins/alias-resolver-cache.js +106 -0
  142. package/src/plugins/alias-resolver-plugin.d.ts +5 -1
  143. package/src/plugins/alias-resolver-plugin.js +19 -7
  144. package/src/plugins/eco-component-meta-plugin.d.ts +12 -1
  145. package/src/plugins/eco-component-meta-plugin.js +43 -25
  146. package/src/plugins/foreign-jsx-override-plugin.d.ts +33 -0
  147. package/src/plugins/foreign-jsx-override-plugin.js +41 -0
  148. package/src/plugins/integration-plugin.d.ts +136 -42
  149. package/src/plugins/integration-plugin.js +99 -31
  150. package/src/plugins/processor.d.ts +4 -2
  151. package/src/plugins/processor.js +8 -3
  152. package/src/plugins/source-transform.d.ts +46 -0
  153. package/src/plugins/source-transform.js +71 -0
  154. package/src/route-renderer/GRAPH.md +80 -318
  155. package/src/route-renderer/README.md +74 -78
  156. package/src/route-renderer/orchestration/component-render-context.d.ts +97 -0
  157. package/src/route-renderer/orchestration/component-render-context.js +147 -0
  158. package/src/route-renderer/orchestration/declared-ownership-graph.d.ts +18 -0
  159. package/src/route-renderer/orchestration/declared-ownership-graph.js +34 -0
  160. package/src/route-renderer/orchestration/foreign-subtree-execution.service.d.ts +110 -0
  161. package/src/route-renderer/orchestration/foreign-subtree-execution.service.js +233 -0
  162. package/src/route-renderer/orchestration/integration-renderer.d.ts +290 -128
  163. package/src/route-renderer/orchestration/integration-renderer.js +660 -258
  164. package/src/route-renderer/orchestration/ownership-planning.service.d.ts +24 -0
  165. package/src/route-renderer/orchestration/ownership-planning.service.js +63 -0
  166. package/src/route-renderer/orchestration/ownership-validation.service.d.ts +29 -0
  167. package/src/route-renderer/orchestration/ownership-validation.service.js +53 -0
  168. package/src/route-renderer/orchestration/processed-asset-dedupe.d.ts +3 -0
  169. package/src/route-renderer/orchestration/processed-asset-dedupe.js +27 -0
  170. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.d.ts +91 -0
  171. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.js +170 -0
  172. package/src/route-renderer/orchestration/render-output.utils.d.ts +66 -0
  173. package/src/route-renderer/orchestration/render-output.utils.js +171 -0
  174. package/src/route-renderer/orchestration/route-render-orchestrator.d.ts +156 -0
  175. package/src/route-renderer/orchestration/route-render-orchestrator.js +577 -0
  176. package/src/route-renderer/orchestration/template-serialization.d.ts +38 -0
  177. package/src/route-renderer/orchestration/template-serialization.js +45 -0
  178. package/src/route-renderer/page-loading/component-dependency-collection.d.ts +37 -0
  179. package/src/route-renderer/page-loading/component-dependency-collection.js +132 -0
  180. package/src/route-renderer/page-loading/declared-asset-collection.d.ts +24 -0
  181. package/src/route-renderer/page-loading/declared-asset-collection.js +106 -0
  182. package/src/route-renderer/page-loading/dependency-resolver.d.ts +2 -2
  183. package/src/route-renderer/page-loading/dependency-resolver.js +27 -354
  184. package/src/route-renderer/page-loading/ecopages-virtual-imports.d.ts +11 -0
  185. package/src/route-renderer/page-loading/ecopages-virtual-imports.js +57 -0
  186. package/src/route-renderer/page-loading/lazy-entry-collection.d.ts +45 -0
  187. package/src/route-renderer/page-loading/lazy-entry-collection.js +105 -0
  188. package/src/route-renderer/page-loading/lazy-trigger-planning.d.ts +19 -0
  189. package/src/route-renderer/page-loading/lazy-trigger-planning.js +40 -0
  190. package/src/route-renderer/page-loading/module-declaration-aggregation.d.ts +5 -0
  191. package/src/route-renderer/page-loading/module-declaration-aggregation.js +33 -0
  192. package/src/route-renderer/page-loading/module-declaration-scripts.d.ts +3 -0
  193. package/src/route-renderer/page-loading/module-declaration-scripts.js +18 -0
  194. package/src/route-renderer/page-loading/page-dependency-bundling.d.ts +13 -0
  195. package/src/route-renderer/page-loading/page-dependency-bundling.js +137 -0
  196. package/src/route-renderer/page-loading/page-module-loader.d.ts +7 -4
  197. package/src/route-renderer/page-loading/page-module-loader.js +8 -5
  198. package/src/route-renderer/route-renderer.d.ts +31 -23
  199. package/src/route-renderer/route-renderer.js +17 -24
  200. package/src/router/README.md +76 -8
  201. package/src/router/client/navigation-coordinator.d.ts +20 -0
  202. package/src/router/client/navigation-coordinator.js +2 -2
  203. package/src/router/server/route-registry.d.ts +78 -0
  204. package/src/router/server/route-registry.js +262 -0
  205. package/src/services/README.md +1 -2
  206. package/src/services/assets/asset-processing-service/asset-dependency-keys.d.ts +3 -0
  207. package/src/services/assets/asset-processing-service/asset-dependency-keys.js +56 -0
  208. package/src/services/assets/asset-processing-service/asset-processing.service.d.ts +3 -20
  209. package/src/services/assets/asset-processing-service/asset-processing.service.js +52 -98
  210. package/src/services/assets/asset-processing-service/asset.factory.d.ts +1 -1
  211. package/src/services/assets/asset-processing-service/asset.factory.js +2 -2
  212. package/src/services/assets/asset-processing-service/assets.types.d.ts +14 -0
  213. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.d.ts +2 -0
  214. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.js +1 -0
  215. package/src/services/assets/asset-processing-service/grouped-content-bundles.d.ts +30 -0
  216. package/src/services/assets/asset-processing-service/grouped-content-bundles.js +65 -0
  217. package/src/services/assets/asset-processing-service/index.d.ts +6 -5
  218. package/src/services/assets/asset-processing-service/index.js +6 -5
  219. package/src/services/assets/asset-processing-service/page-package.d.ts +6 -0
  220. package/src/services/assets/asset-processing-service/page-package.js +80 -0
  221. package/src/services/assets/asset-processing-service/processor.interface.d.ts +2 -2
  222. package/src/services/assets/asset-processing-service/processor.registry.d.ts +2 -2
  223. package/src/services/assets/asset-processing-service/processors/base/base-processor.d.ts +1 -1
  224. package/src/services/assets/asset-processing-service/processors/base/base-processor.js +3 -2
  225. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.d.ts +10 -5
  226. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.js +69 -5
  227. package/src/services/assets/asset-processing-service/processors/index.d.ts +5 -5
  228. package/src/services/assets/asset-processing-service/processors/index.js +5 -5
  229. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.d.ts +3 -2
  230. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.js +66 -3
  231. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.d.ts +4 -3
  232. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.js +27 -6
  233. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.d.ts +38 -3
  234. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.js +57 -6
  235. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.d.ts +5 -2
  236. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +39 -5
  237. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.d.ts +2 -2
  238. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.js +5 -2
  239. package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.d.ts +18 -0
  240. package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.js +45 -0
  241. package/src/services/assets/browser-bundle.service.d.ts +44 -3
  242. package/src/services/assets/browser-bundle.service.js +15 -7
  243. package/src/services/html/html-rewriter-provider.service.d.ts +3 -0
  244. package/src/services/html/html-rewriter-provider.service.js +4 -1
  245. package/src/services/html/html-transformer.service.d.ts +22 -3
  246. package/src/services/html/html-transformer.service.js +101 -35
  247. package/src/services/invalidation/development-invalidation.service.d.ts +1 -1
  248. package/src/services/invalidation/development-invalidation.service.js +1 -0
  249. package/src/services/module-loading/app-module-loader.service.d.ts +7 -0
  250. package/src/services/module-loading/app-module-loader.service.js +0 -0
  251. package/src/services/module-loading/app-server-module-transpiler.service.d.ts +9 -1
  252. package/src/services/module-loading/app-server-module-transpiler.service.js +102 -6
  253. package/src/services/module-loading/host-module-loader-registry.d.ts +4 -0
  254. package/src/services/module-loading/host-module-loader-registry.js +15 -0
  255. package/src/services/module-loading/module-loading-types.d.ts +2 -0
  256. package/src/services/module-loading/module-loading-types.js +0 -0
  257. package/src/services/module-loading/page-module-import.service.d.ts +32 -8
  258. package/src/services/module-loading/page-module-import.service.js +83 -22
  259. package/src/services/module-loading/server-module-transpiler.service.d.ts +8 -14
  260. package/src/services/module-loading/server-module-transpiler.service.js +5 -2
  261. package/src/services/module-loading/source-module-support.d.ts +5 -0
  262. package/src/services/module-loading/source-module-support.js +8 -0
  263. package/src/services/runtime-state/dev-graph.service.d.ts +6 -6
  264. package/src/services/runtime-state/dev-graph.service.js +10 -10
  265. package/src/services/runtime-state/entrypoint-dependency-graph.service.d.ts +1 -1
  266. package/src/services/runtime-state/server-invalidation-state.service.d.ts +1 -1
  267. package/src/static-site-generator/static-site-generator.d.ts +23 -28
  268. package/src/static-site-generator/static-site-generator.js +119 -156
  269. package/src/{internal-types.d.ts → types/internal-types.d.ts} +34 -23
  270. package/src/types/internal-types.js +0 -0
  271. package/src/{public-types.d.ts → types/public-types.d.ts} +195 -37
  272. package/src/types/public-types.js +0 -0
  273. package/src/utils/html-escaping.d.ts +7 -0
  274. package/src/utils/html-escaping.js +6 -0
  275. package/src/utils/locals-utils.d.ts +1 -1
  276. package/src/utils/parse-cli-args.d.ts +4 -1
  277. package/src/utils/parse-cli-args.js +16 -1
  278. package/src/utils/resolve-work-dir.js +1 -1
  279. package/src/watchers/project-watcher.d.ts +4 -4
  280. package/src/watchers/project-watcher.js +35 -41
  281. package/src/watchers/project-watcher.test-helpers.d.ts +2 -2
  282. package/src/watchers/project-watcher.test-helpers.js +5 -5
  283. package/CHANGELOG.md +0 -31
  284. package/src/adapters/abstract/application-adapter.ts +0 -337
  285. package/src/adapters/abstract/router-adapter.ts +0 -30
  286. package/src/adapters/abstract/server-adapter.ts +0 -79
  287. package/src/adapters/bun/client-bridge.ts +0 -62
  288. package/src/adapters/bun/create-app.ts +0 -189
  289. package/src/adapters/bun/hmr-manager.ts +0 -409
  290. package/src/adapters/bun/index.ts +0 -2
  291. package/src/adapters/bun/server-adapter.ts +0 -499
  292. package/src/adapters/bun/server-lifecycle.d.ts +0 -63
  293. package/src/adapters/bun/server-lifecycle.js +0 -92
  294. package/src/adapters/bun/server-lifecycle.ts +0 -124
  295. package/src/adapters/index.ts +0 -6
  296. package/src/adapters/node/bootstrap-dependency-resolver.d.ts +0 -44
  297. package/src/adapters/node/bootstrap-dependency-resolver.js +0 -172
  298. package/src/adapters/node/bootstrap-dependency-resolver.ts +0 -301
  299. package/src/adapters/node/create-app.ts +0 -179
  300. package/src/adapters/node/index.d.ts +0 -6
  301. package/src/adapters/node/index.js +0 -11
  302. package/src/adapters/node/index.ts +0 -16
  303. package/src/adapters/node/node-client-bridge.ts +0 -79
  304. package/src/adapters/node/node-hmr-manager.ts +0 -381
  305. package/src/adapters/node/runtime-adapter.d.ts +0 -46
  306. package/src/adapters/node/runtime-adapter.js +0 -306
  307. package/src/adapters/node/runtime-adapter.ts +0 -439
  308. package/src/adapters/node/server-adapter.ts +0 -488
  309. package/src/adapters/node/static-content-server.ts +0 -239
  310. package/src/adapters/node/write-runtime-manifest.d.ts +0 -26
  311. package/src/adapters/node/write-runtime-manifest.js +0 -12
  312. package/src/adapters/node/write-runtime-manifest.ts +0 -38
  313. package/src/adapters/shared/api-response.ts +0 -104
  314. package/src/adapters/shared/application-adapter.ts +0 -199
  315. package/src/adapters/shared/define-api-handler.ts +0 -66
  316. package/src/adapters/shared/explicit-static-route-matcher.ts +0 -140
  317. package/src/adapters/shared/file-route-middleware-pipeline.ts +0 -127
  318. package/src/adapters/shared/fs-server-response-factory.ts +0 -118
  319. package/src/adapters/shared/fs-server-response-matcher.ts +0 -205
  320. package/src/adapters/shared/hmr-entrypoint-registrar.ts +0 -149
  321. package/src/adapters/shared/hmr-html-response.ts +0 -52
  322. package/src/adapters/shared/render-context.ts +0 -120
  323. package/src/adapters/shared/runtime-bootstrap.d.ts +0 -38
  324. package/src/adapters/shared/runtime-bootstrap.js +0 -43
  325. package/src/adapters/shared/runtime-bootstrap.ts +0 -79
  326. package/src/adapters/shared/server-adapter.ts +0 -489
  327. package/src/adapters/shared/server-route-handler.ts +0 -153
  328. package/src/adapters/shared/server-static-builder.ts +0 -166
  329. package/src/build/build-adapter.ts +0 -361
  330. package/src/build/build-manifest.ts +0 -54
  331. package/src/build/build-types.ts +0 -83
  332. package/src/build/dev-build-coordinator.d.ts +0 -74
  333. package/src/build/dev-build-coordinator.js +0 -161
  334. package/src/build/dev-build-coordinator.ts +0 -221
  335. package/src/build/esbuild-build-adapter.d.ts +0 -72
  336. package/src/build/esbuild-build-adapter.js +0 -422
  337. package/src/build/esbuild-build-adapter.ts +0 -559
  338. package/src/build/runtime-build-executor.ts +0 -34
  339. package/src/build/runtime-specifier-alias-plugin.d.ts +0 -15
  340. package/src/build/runtime-specifier-alias-plugin.js +0 -31
  341. package/src/build/runtime-specifier-alias-plugin.ts +0 -58
  342. package/src/config/config-builder.ts +0 -706
  343. package/src/constants.ts +0 -54
  344. package/src/create-app.ts +0 -87
  345. package/src/dev/sc-server.ts +0 -143
  346. package/src/eco/component-render-context.d.ts +0 -105
  347. package/src/eco/component-render-context.js +0 -87
  348. package/src/eco/component-render-context.ts +0 -224
  349. package/src/eco/eco.ts +0 -242
  350. package/src/eco/eco.types.ts +0 -221
  351. package/src/eco/eco.utils.ts +0 -89
  352. package/src/eco/global-injector-map.ts +0 -112
  353. package/src/eco/lazy-injector-map.ts +0 -120
  354. package/src/eco/module-dependencies.ts +0 -75
  355. package/src/errors/http-error.ts +0 -72
  356. package/src/errors/index.ts +0 -2
  357. package/src/errors/locals-access-error.ts +0 -7
  358. package/src/global/app-logger.ts +0 -4
  359. package/src/hmr/client/hmr-runtime.ts +0 -152
  360. package/src/hmr/hmr-strategy.ts +0 -172
  361. package/src/hmr/hmr.postcss.test.e2e.ts +0 -41
  362. package/src/hmr/hmr.test.e2e.ts +0 -66
  363. package/src/hmr/strategies/default-hmr-strategy.ts +0 -60
  364. package/src/hmr/strategies/js-hmr-strategy.ts +0 -320
  365. package/src/index.browser.ts +0 -3
  366. package/src/index.ts +0 -5
  367. package/src/integrations/ghtml/ghtml-renderer.ts +0 -96
  368. package/src/integrations/ghtml/ghtml.plugin.ts +0 -32
  369. package/src/internal-types.ts +0 -232
  370. package/src/plugins/alias-resolver-plugin.ts +0 -63
  371. package/src/plugins/eco-component-meta-plugin.ts +0 -481
  372. package/src/plugins/integration-plugin.ts +0 -226
  373. package/src/plugins/processor.ts +0 -240
  374. package/src/plugins/runtime-capability.ts +0 -14
  375. package/src/public-types.ts +0 -1317
  376. package/src/route-renderer/component-graph/component-graph-executor.d.ts +0 -32
  377. package/src/route-renderer/component-graph/component-graph-executor.js +0 -31
  378. package/src/route-renderer/component-graph/component-graph-executor.ts +0 -84
  379. package/src/route-renderer/component-graph/component-graph.d.ts +0 -42
  380. package/src/route-renderer/component-graph/component-graph.js +0 -72
  381. package/src/route-renderer/component-graph/component-graph.ts +0 -159
  382. package/src/route-renderer/component-graph/component-marker.d.ts +0 -52
  383. package/src/route-renderer/component-graph/component-marker.js +0 -46
  384. package/src/route-renderer/component-graph/component-marker.ts +0 -117
  385. package/src/route-renderer/component-graph/component-reference.d.ts +0 -10
  386. package/src/route-renderer/component-graph/component-reference.js +0 -19
  387. package/src/route-renderer/component-graph/component-reference.ts +0 -29
  388. package/src/route-renderer/component-graph/marker-graph-resolver.d.ts +0 -77
  389. package/src/route-renderer/component-graph/marker-graph-resolver.js +0 -95
  390. package/src/route-renderer/component-graph/marker-graph-resolver.ts +0 -155
  391. package/src/route-renderer/orchestration/integration-renderer.ts +0 -790
  392. package/src/route-renderer/orchestration/render-execution.service.d.ts +0 -103
  393. package/src/route-renderer/orchestration/render-execution.service.js +0 -121
  394. package/src/route-renderer/orchestration/render-execution.service.ts +0 -230
  395. package/src/route-renderer/orchestration/render-preparation.service.d.ts +0 -121
  396. package/src/route-renderer/orchestration/render-preparation.service.js +0 -332
  397. package/src/route-renderer/orchestration/render-preparation.service.ts +0 -476
  398. package/src/route-renderer/page-loading/dependency-resolver.ts +0 -612
  399. package/src/route-renderer/page-loading/page-module-loader.ts +0 -181
  400. package/src/route-renderer/route-renderer.ts +0 -115
  401. package/src/router/client/link-intent.test.browser.ts +0 -51
  402. package/src/router/client/link-intent.ts +0 -92
  403. package/src/router/client/navigation-coordinator.ts +0 -433
  404. package/src/router/server/fs-router-scanner.d.ts +0 -41
  405. package/src/router/server/fs-router-scanner.js +0 -156
  406. package/src/router/server/fs-router-scanner.ts +0 -219
  407. package/src/router/server/fs-router.d.ts +0 -26
  408. package/src/router/server/fs-router.js +0 -100
  409. package/src/router/server/fs-router.ts +0 -122
  410. package/src/services/assets/asset-processing-service/asset-processing.service.ts +0 -401
  411. package/src/services/assets/asset-processing-service/asset.factory.ts +0 -105
  412. package/src/services/assets/asset-processing-service/assets.types.ts +0 -113
  413. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.ts +0 -95
  414. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.ts +0 -78
  415. package/src/services/assets/asset-processing-service/index.ts +0 -5
  416. package/src/services/assets/asset-processing-service/processor.interface.ts +0 -27
  417. package/src/services/assets/asset-processing-service/processor.registry.ts +0 -18
  418. package/src/services/assets/asset-processing-service/processors/base/base-processor.ts +0 -82
  419. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.ts +0 -95
  420. package/src/services/assets/asset-processing-service/processors/index.ts +0 -5
  421. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.ts +0 -66
  422. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.ts +0 -88
  423. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.ts +0 -85
  424. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.ts +0 -27
  425. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.ts +0 -80
  426. package/src/services/assets/browser-bundle.service.ts +0 -53
  427. package/src/services/cache/cache.types.ts +0 -126
  428. package/src/services/cache/index.ts +0 -18
  429. package/src/services/cache/memory-cache-store.ts +0 -130
  430. package/src/services/cache/page-cache-service.ts +0 -202
  431. package/src/services/cache/page-request-cache-coordinator.service.ts +0 -131
  432. package/src/services/html/html-rewriter-provider.service.ts +0 -103
  433. package/src/services/html/html-transformer.service.ts +0 -279
  434. package/src/services/invalidation/development-invalidation.service.ts +0 -261
  435. package/src/services/module-loading/app-server-module-transpiler.service.ts +0 -52
  436. package/src/services/module-loading/page-module-import.service.ts +0 -200
  437. package/src/services/module-loading/server-loader.service.d.ts +0 -96
  438. package/src/services/module-loading/server-loader.service.js +0 -32
  439. package/src/services/module-loading/server-loader.service.ts +0 -130
  440. package/src/services/module-loading/server-module-transpiler.service.ts +0 -105
  441. package/src/services/runtime-manifest/node-runtime-manifest.service.d.ts +0 -35
  442. package/src/services/runtime-manifest/node-runtime-manifest.service.js +0 -60
  443. package/src/services/runtime-manifest/node-runtime-manifest.service.ts +0 -101
  444. package/src/services/runtime-state/dev-graph.service.ts +0 -217
  445. package/src/services/runtime-state/entrypoint-dependency-graph.service.ts +0 -136
  446. package/src/services/runtime-state/runtime-specifier-registry.service.d.ts +0 -69
  447. package/src/services/runtime-state/runtime-specifier-registry.service.js +0 -37
  448. package/src/services/runtime-state/runtime-specifier-registry.service.ts +0 -96
  449. package/src/services/runtime-state/server-invalidation-state.service.ts +0 -68
  450. package/src/services/validation/schema-validation-service.ts +0 -204
  451. package/src/services/validation/standard-schema.types.ts +0 -68
  452. package/src/static-site-generator/static-site-generator.ts +0 -462
  453. package/src/utils/css.d.ts +0 -1
  454. package/src/utils/css.js +0 -7
  455. package/src/utils/css.ts +0 -5
  456. package/src/utils/deep-merge.ts +0 -47
  457. package/src/utils/hash.ts +0 -5
  458. package/src/utils/html.ts +0 -1
  459. package/src/utils/invariant.ts +0 -15
  460. package/src/utils/locals-utils.ts +0 -37
  461. package/src/utils/parse-cli-args.ts +0 -83
  462. package/src/utils/path-utils.module.ts +0 -14
  463. package/src/utils/resolve-work-dir.ts +0 -45
  464. package/src/utils/runtime.ts +0 -44
  465. package/src/utils/server-utils.module.ts +0 -67
  466. package/src/watchers/project-watcher.test-helpers.ts +0 -41
  467. package/src/watchers/project-watcher.ts +0 -363
  468. /package/src/{internal-types.js → adapters/shared/runtime-host.js} +0 -0
  469. /package/src/{public-types.js → adapters/shared/static-preview-host.js} +0 -0
  470. /package/src/{constants.d.ts → config/constants.d.ts} +0 -0
  471. /package/src/{constants.js → config/constants.js} +0 -0
@@ -1,63 +1,96 @@
1
+ import { mergeBrowserRuntimeManifests } from "./browser-runtime-manifest.js";
2
+ import { normalizeNodeRuntimeBuildOutputs } from "./runtime-build-output-normalizer.js";
3
+ import { createForeignJsxOverridePlugin } from "../plugins/foreign-jsx-override-plugin.js";
1
4
  import {
2
5
  createAppBuildManifest,
3
6
  getBrowserBuildPlugins,
4
7
  getServerBuildPlugins
5
8
  } from "./build-manifest.js";
6
- import { EsbuildBuildAdapter } from "./esbuild-build-adapter.js";
7
- import { getRequiredBunRuntime } from "../utils/runtime.js";
8
- import { EsbuildBuildAdapter as EsbuildBuildAdapter2 } from "./esbuild-build-adapter.js";
9
- function createBuildAdapter() {
10
- return new EsbuildBuildAdapter();
11
- }
12
- function transpileProfileToOptions(profile) {
13
- switch (profile) {
14
- case "browser-script":
15
- return {
16
- target: "browser",
17
- format: "esm",
18
- sourcemap: "none"
19
- };
20
- case "hmr-runtime":
21
- return {
22
- target: "browser",
23
- format: "esm",
24
- sourcemap: "none"
25
- };
26
- case "hmr-entrypoint":
27
- return {
28
- target: "browser",
29
- format: "esm",
30
- sourcemap: "none"
31
- };
9
+ import { createRolldownBuildAdapter } from "./rolldown-build-adapter.js";
10
+ import { createRolldownDevBuildAdapter } from "./rolldown-dev-build-adapter.js";
11
+ function mergeBuildExecutorPlugins(existing, appPlugins) {
12
+ if (!existing || existing.length === 0) {
13
+ return appPlugins;
32
14
  }
15
+ const byName = /* @__PURE__ */ new Map();
16
+ for (const plugin of existing) {
17
+ byName.set(plugin.name, plugin);
18
+ }
19
+ for (const plugin of appPlugins) {
20
+ byName.set(plugin.name, plugin);
21
+ }
22
+ return Array.from(byName.values());
33
23
  }
34
- class BunBuildAdapter {
35
- async build(options) {
36
- const bun = getRequiredBunRuntime();
37
- const result = await bun.build({
38
- ...options,
39
- plugins: options.plugins
40
- });
41
- return {
42
- success: result.success,
43
- logs: result.logs.map((log) => ({ message: log.message })),
44
- outputs: result.outputs.map((output) => ({ path: output.path }))
45
- };
24
+ function withBuildExecutorPlugins(executor, getPlugins) {
25
+ return {
26
+ async build(options) {
27
+ const appPlugins = getPlugins();
28
+ if (appPlugins.length === 0) {
29
+ return executor.build(options);
30
+ }
31
+ return executor.build({
32
+ ...options,
33
+ plugins: mergeBuildExecutorPlugins(options.plugins, appPlugins)
34
+ });
35
+ }
36
+ };
37
+ }
38
+ function createHostOwnedBuildError(methodName) {
39
+ return new Error(
40
+ `Vite-hosted builds are owned by the host runtime. Core cannot ${methodName} through the host-owned compatibility adapter.`
41
+ );
42
+ }
43
+ class ViteHostBuildAdapter {
44
+ ownership = "vite-host";
45
+ async build(_options) {
46
+ throw createHostOwnedBuildError("build");
46
47
  }
47
- resolve(importPath, rootDir) {
48
- return getRequiredBunRuntime().resolveSync(importPath, rootDir);
48
+ resolve(_importPath, _rootDir) {
49
+ throw createHostOwnedBuildError("resolve imports");
49
50
  }
50
- getTranspileOptions(profile) {
51
- return transpileProfileToOptions(profile);
51
+ getTranspileOptions(_profile) {
52
+ throw createHostOwnedBuildError("derive transpile options");
52
53
  }
53
54
  }
54
- const defaultBuildAdapter = createBuildAdapter();
55
+ function createViteHostBuildAdapter() {
56
+ return new ViteHostBuildAdapter();
57
+ }
58
+ function createBuildAdapter(options) {
59
+ switch (options?.ownership ?? "rolldown") {
60
+ case "vite-host":
61
+ return createViteHostBuildAdapter();
62
+ case "rolldown-dev":
63
+ return createRolldownDevBuildAdapter();
64
+ case "rolldown":
65
+ default:
66
+ return createRolldownBuildAdapter();
67
+ }
68
+ }
69
+ const defaultRolldownBuildAdapter = createBuildAdapter({ ownership: "rolldown" });
70
+ const defaultViteHostBuildAdapter = createBuildAdapter({ ownership: "vite-host" });
71
+ const defaultBuildAdapter = defaultRolldownBuildAdapter;
72
+ function getDefaultBuildAdapter(ownership = "rolldown") {
73
+ return ownership === "vite-host" ? defaultViteHostBuildAdapter : defaultRolldownBuildAdapter;
74
+ }
75
+ function getBuildAdapterOwnership(buildAdapter) {
76
+ return buildAdapter?.ownership ?? "rolldown";
77
+ }
78
+ function getAppBuildOwnership(appConfig) {
79
+ return appConfig.runtime?.buildOwnership ?? getBuildAdapterOwnership(appConfig.runtime?.buildAdapter);
80
+ }
81
+ function setAppBuildOwnership(appConfig, buildOwnership) {
82
+ appConfig.runtime = {
83
+ ...appConfig.runtime ?? {},
84
+ buildOwnership
85
+ };
86
+ }
55
87
  function getAppBuildAdapter(appConfig) {
56
- return appConfig.runtime?.buildAdapter ?? defaultBuildAdapter;
88
+ return appConfig.runtime?.buildAdapter ?? getDefaultBuildAdapter(getAppBuildOwnership(appConfig));
57
89
  }
58
90
  function setAppBuildAdapter(appConfig, buildAdapter) {
59
91
  appConfig.runtime = {
60
92
  ...appConfig.runtime ?? {},
93
+ buildOwnership: getBuildAdapterOwnership(buildAdapter),
61
94
  buildAdapter
62
95
  };
63
96
  }
@@ -76,7 +109,8 @@ function createConfiguredAppBuildManifest(appConfig, input) {
76
109
  return createAppBuildManifest({
77
110
  loaderPlugins: input?.loaderPlugins ?? Array.from(appConfig.loaders.values()),
78
111
  runtimePlugins: input?.runtimePlugins,
79
- browserBundlePlugins: input?.browserBundlePlugins
112
+ browserBundlePlugins: input?.browserBundlePlugins,
113
+ browserRuntimeManifest: input?.browserRuntimeManifest
80
114
  });
81
115
  }
82
116
  function updateAppBuildManifest(appConfig, input) {
@@ -85,6 +119,7 @@ function updateAppBuildManifest(appConfig, input) {
85
119
  async function collectConfiguredAppBuildManifestContributions(appConfig) {
86
120
  const runtimePlugins = [];
87
121
  const browserBundlePlugins = [];
122
+ const browserRuntimeManifests = [];
88
123
  for (const processor of appConfig.processors.values()) {
89
124
  await processor.prepareBuildContributions();
90
125
  if (processor.plugins) {
@@ -97,14 +132,20 @@ async function collectConfiguredAppBuildManifestContributions(appConfig) {
97
132
  for (const integration of appConfig.integrations) {
98
133
  integration.setConfig(appConfig);
99
134
  await integration.prepareBuildContributions();
100
- runtimePlugins.push(...integration.plugins);
135
+ runtimePlugins.push(...integration.plugins ?? []);
136
+ browserBundlePlugins.push(...integration.browserBuildPlugins ?? []);
137
+ browserRuntimeManifests.push(integration.browserRuntimeManifest);
101
138
  }
102
139
  return {
103
140
  runtimePlugins,
104
- browserBundlePlugins
141
+ browserBundlePlugins,
142
+ browserRuntimeManifest: mergeBrowserRuntimeManifests(...browserRuntimeManifests)
105
143
  };
106
144
  }
107
145
  async function setupAppRuntimePlugins(options) {
146
+ for (const loader of options.appConfig.loaders.values()) {
147
+ options.onRuntimePlugin?.(loader);
148
+ }
108
149
  for (const processor of options.appConfig.processors.values()) {
109
150
  await processor.setup();
110
151
  if (processor.plugins) {
@@ -129,7 +170,22 @@ function getAppServerBuildPlugins(appConfig) {
129
170
  return getServerBuildPlugins(getAppBuildManifest(appConfig));
130
171
  }
131
172
  function getAppBrowserBuildPlugins(appConfig) {
132
- return getBrowserBuildPlugins(getAppBuildManifest(appConfig));
173
+ const manifest = getAppBuildManifest(appConfig);
174
+ const jsxOwnershipPlugins = collectJsxOwnershipPlugins(appConfig);
175
+ return [...getBrowserBuildPlugins(manifest), ...jsxOwnershipPlugins];
176
+ }
177
+ function collectJsxOwnershipPlugins(appConfig) {
178
+ const jsxExtensions = (appConfig.integrations ?? []).filter((integration) => integration.jsxImportSource).flatMap(
179
+ (integration) => integration.extensions.filter((extension) => extension.endsWith(".tsx") || extension.endsWith(".jsx")).map((extension) => ({ integration, extension }))
180
+ ).sort((left, right) => right.extension.length - left.extension.length);
181
+ return jsxExtensions.map(
182
+ ({ integration, extension }) => createForeignJsxOverridePlugin({
183
+ hostJsxImportSource: integration.jsxImportSource,
184
+ foreignExtensions: [extension],
185
+ excludeExtensions: jsxExtensions.filter((candidate) => candidate.extension.length > extension.length).filter((candidate) => candidate.extension.endsWith(extension)).map((candidate) => candidate.extension),
186
+ name: `ecopages-jsx-ownership-${integration.name}-${extension.replace(/[^a-zA-Z0-9]+/g, "-")}`
187
+ })
188
+ );
133
189
  }
134
190
  function getAppBuildExecutor(appConfig) {
135
191
  return appConfig.runtime?.buildExecutor ?? getAppBuildAdapter(appConfig);
@@ -140,29 +196,48 @@ function setAppBuildExecutor(appConfig, buildExecutor) {
140
196
  buildExecutor
141
197
  };
142
198
  }
143
- function build(options, executor = defaultBuildAdapter) {
144
- return executor.build(options);
199
+ function build(options, executor = defaultRolldownBuildAdapter) {
200
+ return executor.build(options).then((result) => {
201
+ if (result.success) {
202
+ normalizeNodeRuntimeBuildOutputs(
203
+ result.outputs.map((output) => output.path),
204
+ options.root ?? process.cwd()
205
+ );
206
+ }
207
+ return result;
208
+ });
145
209
  }
146
210
  function getTranspileOptions(profile) {
147
- return defaultBuildAdapter.getTranspileOptions(profile);
211
+ return defaultRolldownBuildAdapter.getTranspileOptions(profile);
212
+ }
213
+ function getAppTranspileOptions(appConfig, profile) {
214
+ return getAppBuildAdapter(appConfig).getTranspileOptions(profile);
148
215
  }
149
216
  export {
150
- BunBuildAdapter,
151
- EsbuildBuildAdapter2 as EsbuildBuildAdapter,
217
+ ViteHostBuildAdapter,
152
218
  build,
153
219
  collectConfiguredAppBuildManifestContributions,
154
220
  createBuildAdapter,
155
221
  createConfiguredAppBuildManifest,
222
+ createViteHostBuildAdapter,
156
223
  defaultBuildAdapter,
224
+ defaultRolldownBuildAdapter,
225
+ defaultViteHostBuildAdapter,
157
226
  getAppBrowserBuildPlugins,
158
227
  getAppBuildAdapter,
159
228
  getAppBuildExecutor,
160
229
  getAppBuildManifest,
230
+ getAppBuildOwnership,
161
231
  getAppServerBuildPlugins,
232
+ getAppTranspileOptions,
233
+ getBuildAdapterOwnership,
234
+ getDefaultBuildAdapter,
162
235
  getTranspileOptions,
163
236
  setAppBuildAdapter,
164
237
  setAppBuildExecutor,
165
238
  setAppBuildManifest,
239
+ setAppBuildOwnership,
166
240
  setupAppRuntimePlugins,
167
- updateAppBuildManifest
241
+ updateAppBuildManifest,
242
+ withBuildExecutorPlugins
168
243
  };
@@ -1,8 +1,10 @@
1
1
  import type { EcoBuildPlugin } from './build-types.js';
2
+ import { type BrowserRuntimeManifest } from './browser-runtime-manifest.js';
2
3
  export interface AppBuildManifest {
3
4
  loaderPlugins: EcoBuildPlugin[];
4
5
  runtimePlugins: EcoBuildPlugin[];
5
6
  browserBundlePlugins: EcoBuildPlugin[];
7
+ browserRuntimeManifest: BrowserRuntimeManifest;
6
8
  }
7
9
  /**
8
10
  * Merges plugin lists while preserving first-registration precedence by name.
@@ -17,6 +19,10 @@ export declare function mergeEcoBuildPlugins(...pluginLists: Array<EcoBuildPlugi
17
19
  * Creates one app-owned build manifest from the supplied plugin buckets.
18
20
  */
19
21
  export declare function createAppBuildManifest(input?: Partial<AppBuildManifest>): AppBuildManifest;
22
+ /**
23
+ * Returns the shared browser runtime asset manifest sealed into the app build manifest.
24
+ */
25
+ export declare function getBrowserRuntimeManifest(manifest: AppBuildManifest): BrowserRuntimeManifest;
20
26
  /**
21
27
  * Returns the plugin list used for server-oriented builds.
22
28
  */
@@ -1,3 +1,8 @@
1
+ import { createBrowserRuntimePlugin, DEFAULT_BROWSER_RUNTIME_PLUGIN_NAME } from "./browser-runtime-plugin.js";
2
+ import {
3
+ createBrowserRuntimeManifest,
4
+ mergeBrowserRuntimeManifests
5
+ } from "./browser-runtime-manifest.js";
1
6
  function mergeEcoBuildPlugins(...pluginLists) {
2
7
  const byName = /* @__PURE__ */ new Map();
3
8
  for (const plugins of pluginLists) {
@@ -13,18 +18,32 @@ function createAppBuildManifest(input) {
13
18
  return {
14
19
  loaderPlugins: mergeEcoBuildPlugins(input?.loaderPlugins),
15
20
  runtimePlugins: mergeEcoBuildPlugins(input?.runtimePlugins),
16
- browserBundlePlugins: mergeEcoBuildPlugins(input?.browserBundlePlugins)
21
+ browserBundlePlugins: mergeEcoBuildPlugins(input?.browserBundlePlugins),
22
+ browserRuntimeManifest: mergeBrowserRuntimeManifests(input?.browserRuntimeManifest)
17
23
  };
18
24
  }
25
+ function getBrowserRuntimeManifest(manifest) {
26
+ return manifest.browserRuntimeManifest ?? createBrowserRuntimeManifest();
27
+ }
19
28
  function getServerBuildPlugins(manifest) {
20
29
  return mergeEcoBuildPlugins(manifest.loaderPlugins, manifest.runtimePlugins);
21
30
  }
22
31
  function getBrowserBuildPlugins(manifest) {
23
- return mergeEcoBuildPlugins(manifest.loaderPlugins, manifest.runtimePlugins, manifest.browserBundlePlugins);
32
+ const runtimeRewritePlugin = createBrowserRuntimePlugin({
33
+ name: DEFAULT_BROWSER_RUNTIME_PLUGIN_NAME,
34
+ manifest: getBrowserRuntimeManifest(manifest)
35
+ });
36
+ return mergeEcoBuildPlugins(
37
+ manifest.loaderPlugins,
38
+ manifest.runtimePlugins,
39
+ runtimeRewritePlugin ? [runtimeRewritePlugin] : [],
40
+ manifest.browserBundlePlugins
41
+ );
24
42
  }
25
43
  export {
26
44
  createAppBuildManifest,
27
45
  getBrowserBuildPlugins,
46
+ getBrowserRuntimeManifest,
28
47
  getServerBuildPlugins,
29
48
  mergeEcoBuildPlugins
30
49
  };
@@ -22,7 +22,7 @@ export type EcoBuildOnLoadArgs = {
22
22
  namespace?: string;
23
23
  };
24
24
  /**
25
- * Loader kinds supported across Bun/esbuild bridge points.
25
+ * Loader kinds supported by the build plugin contract.
26
26
  */
27
27
  export type EcoBuildLoader = 'base64' | 'binary' | 'copy' | 'css' | 'dataurl' | 'empty' | 'file' | 'global-css' | 'js' | 'json' | 'jsx' | 'local-css' | 'object' | 'text' | 'ts' | 'tsx';
28
28
  /**
@@ -35,7 +35,7 @@ export type EcoBuildOnLoadResult = {
35
35
  resolveDir?: string;
36
36
  };
37
37
  /**
38
- * Shared plugin builder contract used by Ecopages across Bun and esbuild.
38
+ * Plugin builder contract consumed by build adapters.
39
39
  */
40
40
  export interface EcoBuildPluginBuilder {
41
41
  onResolve(options: {
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Shared helpers for the Rolldown-backed build adapters.
3
+ *
4
+ * @remarks
5
+ * The standard {@link RolldownBuildAdapter} (one-shot production builds)
6
+ * and the dev {@link RolldownDevBuildAdapter} (DevEngine-backed
7
+ * incremental rebuilds) both need the same BuildOptions → Rolldown
8
+ * mapping, the same dependency-graph extraction, and the same
9
+ * post-build rewriting pipeline. This module hosts the shared code so
10
+ * the two adapters stay semantically identical.
11
+ *
12
+ * @module
13
+ */
14
+ import type { InputOptions, OutputOptions } from 'rolldown';
15
+ import type { EcoBuildPlugin } from './build-types.js';
16
+ import type { BuildDependencyGraph, BuildLog, BuildOptions, BuildResult, BuildTranspileOptions, BuildTranspileProfile } from './build-adapter.js';
17
+ export declare function transpileProfileToOptions(profile: BuildTranspileProfile): BuildTranspileOptions;
18
+ export declare function extractDependencyGraph(chunks: Array<{
19
+ facadeModuleId: string | null;
20
+ moduleIds: string[];
21
+ }>, contextRoot: string): BuildDependencyGraph;
22
+ export declare function toBuildLogs(error: unknown): BuildLog[];
23
+ /** Translated Rolldown options for one {@link BuildOptions} request. */
24
+ export interface ResolvedRolldownOptions {
25
+ inputOptions: InputOptions;
26
+ outputOptions: OutputOptions;
27
+ }
28
+ /**
29
+ * Translates a {@link BuildOptions} into Rolldown's `InputOptions` and
30
+ * `OutputOptions`. Always sets `experimental.nativeMagicString: true`
31
+ * and always consolidates eco plugins via the bridge.
32
+ */
33
+ export declare function resolveRolldownOptions(options: BuildOptions, contextRoot: string, outdir: string, appRootRequireCache: Map<string, NodeJS.Require>): ResolvedRolldownOptions;
34
+ /**
35
+ * Rewrites manifest-owned runtime specifiers in emitted JS output
36
+ * files. Skips work when the specifier map is empty or when a
37
+ * `(specifierMap, path, content)` tuple was already seen.
38
+ *
39
+ * The content cache is module-level and is keyed on a djb2 hash of
40
+ * the input bytes plus a sorted fingerprint of the specifier map. A
41
+ * manifest change correctly invalidates prior entries; different
42
+ * content of the same length does not collide.
43
+ */
44
+ export declare function rewriteBrowserRuntimeImportsInOutputs(result: BuildResult, contextRoot: string, plugins: EcoBuildPlugin[]): BuildResult;
45
+ /** Test-only: clears the rewriter content cache. */
46
+ export declare function clearRewriteCacheForTests(): void;
47
+ /** Normalizes node-runtime import paths in emitted outputs. */
48
+ export declare function rewriteNodeRuntimeImportsInOutputs(result: BuildResult, contextRoot: string): BuildResult;
49
+ /** Maps a Rolldown `output` to a normalized {@link BuildResult}. */
50
+ export declare function buildResultFromRolldownOutput(output: {
51
+ output: Array<{
52
+ fileName: string;
53
+ type?: string;
54
+ isEntry?: boolean;
55
+ facadeModuleId?: string | null;
56
+ moduleIds?: string[];
57
+ }>;
58
+ }, outdir: string, contextRoot: string): BuildResult;
@@ -0,0 +1,265 @@
1
+ import { createRequire } from "node:module";
2
+ import path from "node:path";
3
+ import { collectBrowserRuntimeImportRewriteMap, rewriteBrowserRuntimeImports } from "./browser-runtime-plugin.js";
4
+ import { createServerSideCssShimPlugin } from "./server-side-css-shim-plugin.js";
5
+ import { createRolldownPluginBridge } from "./rolldown-plugin-bridge.js";
6
+ import { isDeclaredAppPackageImport, normalizeNodeRuntimeBuildOutputs } from "./runtime-build-output-normalizer.js";
7
+ const corePackageRequire = createRequire(new URL("../../package.json", import.meta.url));
8
+ function transpileProfileToOptions(profile) {
9
+ switch (profile) {
10
+ case "browser-script":
11
+ case "hmr-runtime":
12
+ case "hmr-entrypoint":
13
+ return {
14
+ target: "browser",
15
+ format: "esm",
16
+ sourcemap: "none"
17
+ };
18
+ }
19
+ }
20
+ function isPackageImport(id) {
21
+ return !id.startsWith(".") && !path.isAbsolute(id) && !id.startsWith("/") && !id.startsWith("node:") && !id.startsWith("@/") && !id.startsWith("~/") && !id.startsWith("#") && !id.includes(":");
22
+ }
23
+ function tryResolveModule(id, resolver) {
24
+ try {
25
+ return resolver.resolve(id);
26
+ } catch {
27
+ return void 0;
28
+ }
29
+ }
30
+ function getAppRootRequire(cache, contextRoot) {
31
+ const cacheKey = path.resolve(contextRoot);
32
+ let req = cache.get(cacheKey);
33
+ if (!req) {
34
+ req = createRequire(path.join(cacheKey, "package.json"));
35
+ cache.set(cacheKey, req);
36
+ }
37
+ return req;
38
+ }
39
+ function shouldBundlePackageImport(id, contextRoot, appRootRequireCache) {
40
+ if (isDeclaredAppPackageImport(id, contextRoot)) {
41
+ const appRootRequire = getAppRootRequire(appRootRequireCache, contextRoot);
42
+ const appResolvedPath = tryResolveModule(id, appRootRequire);
43
+ return Boolean(appResolvedPath && /\.(?:[cm]?ts|tsx|jsx)$/u.test(appResolvedPath));
44
+ }
45
+ const coreResolvedPath = tryResolveModule(id, corePackageRequire);
46
+ return Boolean(coreResolvedPath && /\.(?:[cm]?ts|tsx|jsx)$/u.test(coreResolvedPath));
47
+ }
48
+ function createExternalMatcher(options, appRootRequireCache) {
49
+ const explicitExternals = new Set(options.external ?? []);
50
+ const externalPackages = options.externalPackages === true;
51
+ const contextRoot = options.root ? path.resolve(options.root) : process.cwd();
52
+ return (id) => {
53
+ if (explicitExternals.has(id)) {
54
+ return true;
55
+ }
56
+ if (!externalPackages || !isPackageImport(id)) {
57
+ return false;
58
+ }
59
+ return !shouldBundlePackageImport(id, contextRoot, appRootRequireCache);
60
+ };
61
+ }
62
+ function mapRolldownFormat(value) {
63
+ switch (value) {
64
+ case "cjs":
65
+ return "cjs";
66
+ case "iife":
67
+ return "iife";
68
+ default:
69
+ return "esm";
70
+ }
71
+ }
72
+ function mapRolldownPlatform(value) {
73
+ if (value === "browser") return "browser";
74
+ if (value === "node") return "node";
75
+ if (value && /^(?:es\d+|chrome\d+|edge\d+|firefox\d+|safari\d+|hermes|deno\d+|ios\d+)$/.test(value)) {
76
+ return "node";
77
+ }
78
+ return "neutral";
79
+ }
80
+ function mapRolldownSourcemap(value) {
81
+ switch (value) {
82
+ case "none":
83
+ return false;
84
+ case "inline":
85
+ return "inline";
86
+ case "external":
87
+ case "linked":
88
+ return "hidden";
89
+ default:
90
+ return true;
91
+ }
92
+ }
93
+ function mapRolldownJsx(jsx) {
94
+ const { factory, fragment, ...rest } = jsx;
95
+ const out = { ...rest };
96
+ if (factory !== void 0) {
97
+ out.pragma = factory;
98
+ }
99
+ if (fragment !== void 0) {
100
+ out.pragmaFrag = fragment;
101
+ }
102
+ return out;
103
+ }
104
+ function toEntryFileNamesPattern(value) {
105
+ if (!value) {
106
+ return void 0;
107
+ }
108
+ const literal = !/\[[^\]]+\]/u.test(value);
109
+ const stripped = value.replaceAll(/\.?\[ext\]/g, "");
110
+ if (stripped.length === 0) {
111
+ return void 0;
112
+ }
113
+ return { pattern: stripped, literal };
114
+ }
115
+ function getJavaScriptOutExtension(options, literal) {
116
+ if (literal) {
117
+ return void 0;
118
+ }
119
+ if (options.target === "browser") {
120
+ return ".js";
121
+ }
122
+ if (options.format === "cjs") {
123
+ return ".cjs";
124
+ }
125
+ return ".mjs";
126
+ }
127
+ function normalizeOutputPath(outputPath, outdir) {
128
+ return path.isAbsolute(outputPath) ? path.normalize(outputPath) : path.normalize(path.join(outdir, outputPath));
129
+ }
130
+ function normalizeModulePath(modulePath, contextRoot) {
131
+ return path.isAbsolute(modulePath) ? path.normalize(modulePath) : path.normalize(path.resolve(contextRoot, modulePath));
132
+ }
133
+ function extractDependencyGraph(chunks, contextRoot) {
134
+ const entrypoints = {};
135
+ for (const chunk of chunks) {
136
+ if (!chunk.facadeModuleId) {
137
+ continue;
138
+ }
139
+ const entrypointPath = normalizeModulePath(chunk.facadeModuleId, contextRoot);
140
+ entrypoints[entrypointPath] = Array.from(
141
+ /* @__PURE__ */ new Set([entrypointPath, ...chunk.moduleIds.map((id) => normalizeModulePath(id, contextRoot))])
142
+ );
143
+ }
144
+ return { entrypoints };
145
+ }
146
+ function toBuildLogs(error) {
147
+ if (error instanceof Error) {
148
+ return [{ message: error.message }];
149
+ }
150
+ return [{ message: "Unknown build error" }];
151
+ }
152
+ function resolveRolldownOptions(options, contextRoot, outdir, appRootRequireCache) {
153
+ const external = createExternalMatcher(options, appRootRequireCache);
154
+ const transformOptions = {};
155
+ if (options.define) {
156
+ transformOptions.define = options.define;
157
+ }
158
+ if (options.jsx) {
159
+ transformOptions.jsx = mapRolldownJsx(options.jsx);
160
+ }
161
+ if (options.target && /^(?:es|chrome|edge|firefox|safari|hermes|deno|ios)/.test(options.target)) {
162
+ transformOptions.target = options.target;
163
+ }
164
+ const bundlePlugins = options.plugins ?? [];
165
+ const appPlugins = createRolldownPluginBridge(bundlePlugins, contextRoot);
166
+ const allPlugins = [...options.target !== "browser" ? [createServerSideCssShimPlugin()] : [], ...appPlugins];
167
+ const inputOptions = {
168
+ input: options.entrypoints,
169
+ cwd: contextRoot,
170
+ external,
171
+ platform: mapRolldownPlatform(options.target),
172
+ transform: Object.keys(transformOptions).length > 0 ? transformOptions : void 0,
173
+ resolve: options.conditions ? { conditionNames: options.conditions } : void 0,
174
+ treeshake: typeof options.treeshaking === "boolean" ? options.treeshaking : true,
175
+ experimental: {
176
+ nativeMagicString: true
177
+ },
178
+ plugins: allPlugins
179
+ };
180
+ const entryFileNames = toEntryFileNamesPattern(options.naming);
181
+ const jsExtension = getJavaScriptOutExtension(options, entryFileNames?.literal ?? false);
182
+ const finalEntryFileNames = entryFileNames ? jsExtension ? `${entryFileNames.pattern}${jsExtension}` : entryFileNames.pattern : jsExtension ? `[name]${jsExtension}` : "[name]";
183
+ const outputOptions = {
184
+ dir: outdir,
185
+ format: mapRolldownFormat(options.format),
186
+ minify: !!options.minify,
187
+ entryFileNames: finalEntryFileNames,
188
+ chunkFileNames: "[name]-[hash].js",
189
+ assetFileNames: "[name]-[hash][extname]",
190
+ sourcemap: mapRolldownSourcemap(options.sourcemap)
191
+ };
192
+ return { inputOptions, outputOptions };
193
+ }
194
+ function rewriteBrowserRuntimeImportsInOutputs(result, contextRoot, plugins) {
195
+ if (!result.success || result.outputs.length === 0) {
196
+ return result;
197
+ }
198
+ const specifierMap = collectBrowserRuntimeImportRewriteMap(plugins);
199
+ if (specifierMap.size === 0) {
200
+ return result;
201
+ }
202
+ const moduleRequireFromContext = createRequire(path.join(contextRoot, "package.json"));
203
+ const fs = moduleRequireFromContext("node:fs");
204
+ const cacheFingerprint = `${Array.from(specifierMap.entries()).sort().join("|")}`;
205
+ for (const output of result.outputs) {
206
+ if (!/\.(?:[cm]?js)$/u.test(output.path)) {
207
+ continue;
208
+ }
209
+ const code = fs.readFileSync(output.path, "utf-8");
210
+ const contentKey = `${cacheFingerprint}::${output.path}::${djb2(code)}`;
211
+ if (rewriteCache.has(contentKey)) {
212
+ continue;
213
+ }
214
+ const rewritten = rewriteBrowserRuntimeImports(code, specifierMap, output.path);
215
+ if (rewritten !== code) {
216
+ fs.writeFileSync(output.path, rewritten);
217
+ }
218
+ rewriteCache.add(contentKey);
219
+ }
220
+ return result;
221
+ }
222
+ const rewriteCache = /* @__PURE__ */ new Set();
223
+ function djb2(input) {
224
+ let hash = 5381;
225
+ for (let i = 0; i < input.length; i++) {
226
+ hash = (hash << 5) + hash + input.charCodeAt(i) | 0;
227
+ }
228
+ return hash.toString(36);
229
+ }
230
+ function clearRewriteCacheForTests() {
231
+ rewriteCache.clear();
232
+ }
233
+ function rewriteNodeRuntimeImportsInOutputs(result, contextRoot) {
234
+ if (!result.success || result.outputs.length === 0) {
235
+ return result;
236
+ }
237
+ normalizeNodeRuntimeBuildOutputs(
238
+ result.outputs.map((output) => output.path),
239
+ contextRoot
240
+ );
241
+ return result;
242
+ }
243
+ function buildResultFromRolldownOutput(output, outdir, contextRoot) {
244
+ const outputs = output.output.map((entry) => ({
245
+ path: normalizeOutputPath(entry.fileName, outdir)
246
+ }));
247
+ const entryChunks = output.output.filter((entry) => entry.type === "chunk" && entry.isEntry);
248
+ const dependencyGraph = entryChunks.length > 0 ? extractDependencyGraph(entryChunks, contextRoot) : void 0;
249
+ return {
250
+ success: true,
251
+ logs: [],
252
+ outputs,
253
+ dependencyGraph
254
+ };
255
+ }
256
+ export {
257
+ buildResultFromRolldownOutput,
258
+ clearRewriteCacheForTests,
259
+ extractDependencyGraph,
260
+ resolveRolldownOptions,
261
+ rewriteBrowserRuntimeImportsInOutputs,
262
+ rewriteNodeRuntimeImportsInOutputs,
263
+ toBuildLogs,
264
+ transpileProfileToOptions
265
+ };