@ecopages/core 0.2.0-alpha.5 → 0.2.0-alpha.51

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 (456) hide show
  1. package/README.md +267 -14
  2. package/package.json +98 -108
  3. package/src/adapters/README.md +39 -0
  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 +30 -62
  12. package/src/adapters/bun/hmr-manager.js +30 -194
  13. package/src/adapters/bun/index.d.ts +2 -3
  14. package/src/adapters/bun/index.js +3 -3
  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 +93 -32
  18. package/src/adapters/bun/server-adapter.js +166 -89
  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 +2 -6
  24. package/src/adapters/index.js +2 -8
  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 +38 -48
  31. package/src/adapters/node/node-hmr-manager.js +31 -203
  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 +20 -72
  37. package/src/adapters/node/server-adapter.js +98 -203
  38. package/src/adapters/node/static-content-server.d.ts +37 -1
  39. package/src/adapters/node/static-content-server.js +29 -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/{define-api-handler.d.ts → 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 -13
  48. package/src/adapters/shared/file-route-middleware-pipeline.d.ts +7 -10
  49. package/src/adapters/shared/file-route-middleware-pipeline.js +3 -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 +20 -16
  53. package/src/adapters/shared/fs-server-response-matcher.js +76 -45
  54. package/src/adapters/shared/hmr-entrypoint-registrar.d.ts +55 -0
  55. package/src/adapters/shared/hmr-entrypoint-registrar.js +87 -0
  56. package/src/adapters/shared/hmr-html-response.d.ts +22 -0
  57. package/src/adapters/shared/hmr-html-response.js +33 -0
  58. package/src/adapters/shared/render-context.d.ts +5 -3
  59. package/src/adapters/shared/render-context.js +27 -3
  60. package/src/adapters/shared/runtime-app-bootstrap.d.ts +26 -0
  61. package/src/adapters/shared/runtime-app-bootstrap.js +46 -0
  62. package/src/adapters/shared/runtime-host.d.ts +12 -0
  63. package/src/adapters/shared/server-adapter.d.ts +33 -12
  64. package/src/adapters/shared/server-adapter.js +215 -132
  65. package/src/adapters/shared/server-route-handler.d.ts +5 -5
  66. package/src/adapters/shared/server-route-handler.js +7 -16
  67. package/src/adapters/shared/server-static-builder.d.ts +41 -8
  68. package/src/adapters/shared/server-static-builder.js +65 -11
  69. package/src/adapters/shared/shared-hmr-manager.d.ts +59 -0
  70. package/src/adapters/shared/shared-hmr-manager.js +240 -0
  71. package/src/adapters/shared/static-preview-host.d.ts +10 -0
  72. package/src/build/README.md +107 -0
  73. package/src/build/browser-runtime-import-rewrite-plugin.d.ts +26 -0
  74. package/src/build/browser-runtime-import-rewrite-plugin.js +162 -0
  75. package/src/build/browser-runtime-manifest.d.ts +31 -0
  76. package/src/build/browser-runtime-manifest.js +61 -0
  77. package/src/build/build-adapter.d.ts +175 -3
  78. package/src/build/build-adapter.js +633 -16
  79. package/src/build/build-manifest.d.ts +33 -0
  80. package/src/build/build-manifest.js +52 -0
  81. package/src/build/dev-build-coordinator.d.ts +72 -0
  82. package/src/build/dev-build-coordinator.js +154 -0
  83. package/src/build/esbuild-build-adapter.d.ts +16 -6
  84. package/src/build/esbuild-build-adapter.js +205 -75
  85. package/src/build/runtime-build-executor.d.ts +14 -0
  86. package/src/build/runtime-build-executor.js +22 -0
  87. package/src/build/runtime-specifier-alias-plugin.d.ts +15 -0
  88. package/src/build/runtime-specifier-alias-plugin.js +31 -0
  89. package/src/config/README.md +36 -0
  90. package/src/config/config-builder.d.ts +54 -29
  91. package/src/config/config-builder.js +256 -50
  92. package/src/{constants.d.ts → config/constants.d.ts} +13 -0
  93. package/src/{constants.js → config/constants.js} +4 -0
  94. package/src/declarations.d.ts +19 -14
  95. package/src/dev/host-runtime.d.ts +10 -0
  96. package/src/dev/host-runtime.js +24 -0
  97. package/src/dev/sc-server.d.ts +1 -1
  98. package/src/dev/sc-server.js +1 -1
  99. package/src/eco/README.md +70 -16
  100. package/src/eco/eco.browser.d.ts +2 -0
  101. package/src/eco/eco.browser.js +88 -0
  102. package/src/eco/eco.js +63 -54
  103. package/src/eco/eco.types.d.ts +69 -6
  104. package/src/eco/eco.utils.d.ts +1 -40
  105. package/src/eco/eco.utils.js +5 -35
  106. package/src/eco/global-injector-map.d.ts +3 -3
  107. package/src/eco/global-injector-map.js +2 -2
  108. package/src/eco/lazy-injector-map.d.ts +2 -2
  109. package/src/errors/index.d.ts +1 -0
  110. package/src/errors/index.js +3 -1
  111. package/src/hmr/README.md +26 -0
  112. package/src/hmr/client/hmr-runtime.d.ts +1 -6
  113. package/src/hmr/client/hmr-runtime.js +38 -7
  114. package/src/hmr/hmr-strategy.d.ts +16 -13
  115. package/src/hmr/hmr-strategy.js +22 -7
  116. package/src/hmr/hmr.postcss.test.e2e.d.ts +1 -0
  117. package/src/hmr/hmr.postcss.test.e2e.js +31 -0
  118. package/src/hmr/hmr.test.e2e.js +26 -33
  119. package/src/hmr/strategies/default-hmr-strategy.d.ts +2 -2
  120. package/src/hmr/strategies/default-hmr-strategy.js +1 -1
  121. package/src/hmr/strategies/js-hmr-strategy.d.ts +40 -42
  122. package/src/hmr/strategies/js-hmr-strategy.js +24 -43
  123. package/src/index.browser.d.ts +2 -2
  124. package/src/index.browser.js +1 -1
  125. package/src/index.d.ts +4 -3
  126. package/src/index.js +16 -5
  127. package/src/integrations/ghtml/ghtml-renderer.d.ts +3 -2
  128. package/src/integrations/ghtml/ghtml-renderer.js +27 -30
  129. package/src/integrations/ghtml/ghtml.constants.d.ts +1 -0
  130. package/src/integrations/ghtml/ghtml.constants.js +4 -0
  131. package/src/integrations/ghtml/ghtml.plugin.d.ts +2 -6
  132. package/src/integrations/ghtml/ghtml.plugin.js +3 -4
  133. package/src/plugins/README.md +35 -0
  134. package/src/plugins/alias-resolver-plugin.d.ts +1 -0
  135. package/src/plugins/alias-resolver-plugin.js +27 -5
  136. package/src/plugins/eco-component-meta-plugin.d.ts +14 -1
  137. package/src/plugins/eco-component-meta-plugin.js +42 -24
  138. package/src/plugins/foreign-jsx-override-plugin.d.ts +33 -0
  139. package/src/plugins/foreign-jsx-override-plugin.js +41 -0
  140. package/src/plugins/integration-plugin.d.ts +157 -29
  141. package/src/plugins/integration-plugin.js +115 -14
  142. package/src/plugins/processor.d.ts +17 -2
  143. package/src/plugins/processor.js +22 -3
  144. package/src/plugins/runtime-capability.d.ts +9 -0
  145. package/src/plugins/source-transform.d.ts +46 -0
  146. package/src/plugins/source-transform.js +71 -0
  147. package/src/route-renderer/GRAPH.md +83 -325
  148. package/src/route-renderer/README.md +73 -90
  149. package/src/route-renderer/orchestration/component-render-context.d.ts +97 -0
  150. package/src/route-renderer/orchestration/component-render-context.js +147 -0
  151. package/src/route-renderer/orchestration/declared-ownership-graph.d.ts +18 -0
  152. package/src/route-renderer/orchestration/declared-ownership-graph.js +34 -0
  153. package/src/route-renderer/orchestration/foreign-subtree-execution.service.d.ts +110 -0
  154. package/src/route-renderer/orchestration/foreign-subtree-execution.service.js +233 -0
  155. package/src/route-renderer/orchestration/integration-renderer.d.ts +534 -0
  156. package/src/route-renderer/orchestration/integration-renderer.js +991 -0
  157. package/src/route-renderer/orchestration/ownership-planning.service.d.ts +24 -0
  158. package/src/route-renderer/orchestration/ownership-planning.service.js +63 -0
  159. package/src/route-renderer/orchestration/ownership-validation.service.d.ts +29 -0
  160. package/src/route-renderer/orchestration/ownership-validation.service.js +53 -0
  161. package/src/route-renderer/orchestration/processed-asset-dedupe.d.ts +3 -0
  162. package/src/route-renderer/orchestration/processed-asset-dedupe.js +27 -0
  163. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.d.ts +91 -0
  164. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.js +170 -0
  165. package/src/route-renderer/orchestration/render-output.utils.d.ts +66 -0
  166. package/src/route-renderer/orchestration/render-output.utils.js +171 -0
  167. package/src/route-renderer/orchestration/route-render-orchestrator.d.ts +156 -0
  168. package/src/route-renderer/orchestration/route-render-orchestrator.js +577 -0
  169. package/src/route-renderer/orchestration/template-serialization.d.ts +38 -0
  170. package/src/route-renderer/orchestration/template-serialization.js +45 -0
  171. package/src/route-renderer/page-loading/component-dependency-collection.d.ts +37 -0
  172. package/src/route-renderer/page-loading/component-dependency-collection.js +132 -0
  173. package/src/route-renderer/page-loading/declared-asset-collection.d.ts +24 -0
  174. package/src/route-renderer/page-loading/declared-asset-collection.js +106 -0
  175. package/src/route-renderer/{dependency-resolver.d.ts → page-loading/dependency-resolver.d.ts} +15 -4
  176. package/src/route-renderer/page-loading/dependency-resolver.js +115 -0
  177. package/src/route-renderer/page-loading/ecopages-virtual-imports.d.ts +11 -0
  178. package/src/route-renderer/page-loading/ecopages-virtual-imports.js +57 -0
  179. package/src/route-renderer/page-loading/lazy-entry-collection.d.ts +45 -0
  180. package/src/route-renderer/page-loading/lazy-entry-collection.js +105 -0
  181. package/src/route-renderer/page-loading/lazy-trigger-planning.d.ts +19 -0
  182. package/src/route-renderer/page-loading/lazy-trigger-planning.js +40 -0
  183. package/src/route-renderer/page-loading/module-declaration-aggregation.d.ts +5 -0
  184. package/src/route-renderer/page-loading/module-declaration-aggregation.js +33 -0
  185. package/src/route-renderer/page-loading/module-declaration-scripts.d.ts +3 -0
  186. package/src/route-renderer/page-loading/module-declaration-scripts.js +18 -0
  187. package/src/route-renderer/page-loading/page-dependency-bundling.d.ts +13 -0
  188. package/src/route-renderer/page-loading/page-dependency-bundling.js +137 -0
  189. package/src/route-renderer/page-loading/page-module-loader.d.ts +90 -0
  190. package/src/route-renderer/{page-module-loader.js → page-loading/page-module-loader.js} +39 -14
  191. package/src/route-renderer/route-renderer.d.ts +57 -14
  192. package/src/route-renderer/route-renderer.js +30 -18
  193. package/src/router/README.md +94 -0
  194. package/src/router/client/link-intent.d.ts +53 -0
  195. package/src/router/client/link-intent.js +34 -0
  196. package/src/router/client/link-intent.test.browser.d.ts +1 -0
  197. package/src/router/client/link-intent.test.browser.js +43 -0
  198. package/src/router/client/navigation-coordinator.d.ts +169 -0
  199. package/src/router/client/navigation-coordinator.js +215 -0
  200. package/src/router/server/route-registry.d.ts +78 -0
  201. package/src/router/server/route-registry.js +262 -0
  202. package/src/services/README.md +28 -0
  203. package/src/services/assets/asset-processing-service/asset-dependency-keys.d.ts +3 -0
  204. package/src/services/assets/asset-processing-service/asset-dependency-keys.js +56 -0
  205. package/src/services/assets/asset-processing-service/asset-processing.service.d.ts +103 -0
  206. package/src/services/{asset-processing-service → assets/asset-processing-service}/asset-processing.service.js +124 -89
  207. package/src/services/{asset-processing-service → assets/asset-processing-service}/asset.factory.d.ts +1 -1
  208. package/src/services/{asset-processing-service → assets/asset-processing-service}/asset.factory.js +2 -2
  209. package/src/services/{asset-processing-service → assets/asset-processing-service}/assets.types.d.ts +16 -1
  210. package/src/services/assets/asset-processing-service/assets.types.js +0 -0
  211. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.d.ts +57 -0
  212. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.js +49 -0
  213. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.d.ts +20 -0
  214. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.js +41 -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 -0
  218. package/src/services/assets/asset-processing-service/index.js +6 -0
  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/{asset-processing-service → assets/asset-processing-service}/processor.interface.d.ts +2 -2
  222. package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.registry.d.ts +2 -2
  223. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/base/base-processor.d.ts +1 -1
  224. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/base/base-processor.js +11 -5
  225. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.d.ts +22 -0
  226. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.js +136 -0
  227. package/src/services/assets/asset-processing-service/processors/index.d.ts +5 -0
  228. package/src/services/assets/asset-processing-service/processors/index.js +5 -0
  229. package/src/services/{asset-processing-service → 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 +120 -0
  231. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/file-script.processor.d.ts +4 -3
  232. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/file-script.processor.js +28 -7
  233. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.d.ts +42 -0
  234. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.js +126 -0
  235. package/src/services/{asset-processing-service → 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 +59 -0
  237. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/stylesheet/file-stylesheet.processor.d.ts +2 -2
  238. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/stylesheet/file-stylesheet.processor.js +9 -3
  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 +73 -0
  242. package/src/services/assets/browser-bundle.service.js +41 -0
  243. package/src/services/{page-request-cache-coordinator.service.d.ts → cache/page-request-cache-coordinator.service.d.ts} +2 -2
  244. package/src/services/{page-request-cache-coordinator.service.js → cache/page-request-cache-coordinator.service.js} +3 -1
  245. package/src/services/html/html-rewriter-provider.service.d.ts +40 -0
  246. package/src/services/html/html-rewriter-provider.service.js +68 -0
  247. package/src/services/html/html-transformer.service.d.ts +96 -0
  248. package/src/services/html/html-transformer.service.js +287 -0
  249. package/src/services/invalidation/development-invalidation.service.d.ts +74 -0
  250. package/src/services/invalidation/development-invalidation.service.js +190 -0
  251. package/src/services/module-loading/app-module-loader.service.d.ts +7 -0
  252. package/src/services/module-loading/app-module-loader.service.js +0 -0
  253. package/src/services/module-loading/app-server-module-transpiler.service.d.ts +24 -0
  254. package/src/services/module-loading/app-server-module-transpiler.service.js +151 -0
  255. package/src/services/module-loading/host-module-loader-registry.d.ts +4 -0
  256. package/src/services/module-loading/host-module-loader-registry.js +15 -0
  257. package/src/services/module-loading/module-loading-types.d.ts +2 -0
  258. package/src/services/module-loading/module-loading-types.js +0 -0
  259. package/src/services/module-loading/node-bootstrap-plugin.d.ts +38 -0
  260. package/src/services/module-loading/node-bootstrap-plugin.js +215 -0
  261. package/src/services/module-loading/page-module-import.service.d.ts +95 -0
  262. package/src/services/module-loading/page-module-import.service.js +191 -0
  263. package/src/services/module-loading/server-module-transpiler.service.d.ts +63 -0
  264. package/src/services/module-loading/server-module-transpiler.service.js +64 -0
  265. package/src/services/module-loading/source-module-support.d.ts +5 -0
  266. package/src/services/module-loading/source-module-support.js +8 -0
  267. package/src/services/runtime-state/dev-graph.service.d.ts +118 -0
  268. package/src/services/runtime-state/dev-graph.service.js +162 -0
  269. package/src/services/runtime-state/entrypoint-dependency-graph.service.d.ts +41 -0
  270. package/src/services/runtime-state/entrypoint-dependency-graph.service.js +85 -0
  271. package/src/services/runtime-state/server-invalidation-state.service.d.ts +26 -0
  272. package/src/services/runtime-state/server-invalidation-state.service.js +35 -0
  273. package/src/services/{schema-validation-service.d.ts → validation/schema-validation-service.d.ts} +1 -1
  274. package/src/static-site-generator/README.md +26 -0
  275. package/src/static-site-generator/static-site-generator.d.ts +67 -20
  276. package/src/static-site-generator/static-site-generator.js +182 -138
  277. package/src/{internal-types.d.ts → types/internal-types.d.ts} +62 -30
  278. package/src/types/internal-types.js +0 -0
  279. package/src/{public-types.d.ts → types/public-types.d.ts} +239 -31
  280. package/src/types/public-types.js +0 -0
  281. package/src/utils/html-escaping.d.ts +7 -0
  282. package/src/utils/html-escaping.js +6 -0
  283. package/src/utils/locals-utils.d.ts +1 -1
  284. package/src/utils/parse-cli-args.d.ts +4 -1
  285. package/src/utils/parse-cli-args.js +16 -1
  286. package/src/utils/resolve-work-dir.d.ts +11 -0
  287. package/src/utils/resolve-work-dir.js +31 -0
  288. package/src/watchers/project-watcher.d.ts +11 -7
  289. package/src/watchers/project-watcher.js +69 -75
  290. package/src/watchers/project-watcher.test-helpers.d.ts +2 -2
  291. package/src/watchers/project-watcher.test-helpers.js +6 -5
  292. package/CHANGELOG.md +0 -94
  293. package/src/adapters/abstract/application-adapter.ts +0 -337
  294. package/src/adapters/abstract/router-adapter.ts +0 -30
  295. package/src/adapters/abstract/server-adapter.ts +0 -79
  296. package/src/adapters/bun/client-bridge.ts +0 -62
  297. package/src/adapters/bun/create-app.ts +0 -189
  298. package/src/adapters/bun/define-api-handler.d.ts +0 -61
  299. package/src/adapters/bun/define-api-handler.ts +0 -114
  300. package/src/adapters/bun/hmr-manager.ts +0 -276
  301. package/src/adapters/bun/index.ts +0 -3
  302. package/src/adapters/bun/server-adapter.ts +0 -492
  303. package/src/adapters/bun/server-lifecycle.d.ts +0 -52
  304. package/src/adapters/bun/server-lifecycle.js +0 -120
  305. package/src/adapters/bun/server-lifecycle.ts +0 -154
  306. package/src/adapters/index.ts +0 -6
  307. package/src/adapters/node/create-app.ts +0 -179
  308. package/src/adapters/node/index.d.ts +0 -4
  309. package/src/adapters/node/index.js +0 -8
  310. package/src/adapters/node/index.ts +0 -9
  311. package/src/adapters/node/node-client-bridge.ts +0 -79
  312. package/src/adapters/node/node-hmr-manager.ts +0 -271
  313. package/src/adapters/node/server-adapter.ts +0 -561
  314. package/src/adapters/node/static-content-server.ts +0 -203
  315. package/src/adapters/shared/api-response.ts +0 -104
  316. package/src/adapters/shared/application-adapter.ts +0 -199
  317. package/src/adapters/shared/explicit-static-route-matcher.ts +0 -134
  318. package/src/adapters/shared/file-route-middleware-pipeline.ts +0 -123
  319. package/src/adapters/shared/fs-server-response-factory.ts +0 -118
  320. package/src/adapters/shared/fs-server-response-matcher.ts +0 -198
  321. package/src/adapters/shared/render-context.ts +0 -105
  322. package/src/adapters/shared/server-adapter.ts +0 -442
  323. package/src/adapters/shared/server-route-handler.ts +0 -166
  324. package/src/adapters/shared/server-static-builder.ts +0 -82
  325. package/src/build/build-adapter.ts +0 -133
  326. package/src/build/build-types.ts +0 -83
  327. package/src/build/esbuild-build-adapter.ts +0 -511
  328. package/src/config/config-builder.ts +0 -474
  329. package/src/constants.ts +0 -39
  330. package/src/create-app.ts +0 -87
  331. package/src/define-api-handler.js +0 -15
  332. package/src/define-api-handler.ts +0 -66
  333. package/src/dev/sc-server.ts +0 -143
  334. package/src/eco/component-render-context.d.ts +0 -105
  335. package/src/eco/component-render-context.js +0 -77
  336. package/src/eco/component-render-context.ts +0 -202
  337. package/src/eco/eco.ts +0 -221
  338. package/src/eco/eco.types.ts +0 -202
  339. package/src/eco/eco.utils.ts +0 -89
  340. package/src/eco/global-injector-map.ts +0 -112
  341. package/src/eco/lazy-injector-map.ts +0 -120
  342. package/src/eco/module-dependencies.ts +0 -75
  343. package/src/errors/http-error.ts +0 -72
  344. package/src/errors/index.ts +0 -2
  345. package/src/errors/locals-access-error.ts +0 -7
  346. package/src/global/app-logger.ts +0 -4
  347. package/src/hmr/client/hmr-runtime.ts +0 -121
  348. package/src/hmr/hmr-strategy.ts +0 -172
  349. package/src/hmr/hmr.test.e2e.ts +0 -75
  350. package/src/hmr/strategies/default-hmr-strategy.ts +0 -60
  351. package/src/hmr/strategies/js-hmr-strategy.ts +0 -327
  352. package/src/index.browser.ts +0 -3
  353. package/src/index.ts +0 -5
  354. package/src/integrations/ghtml/ghtml-renderer.ts +0 -93
  355. package/src/integrations/ghtml/ghtml.plugin.ts +0 -32
  356. package/src/internal-types.ts +0 -212
  357. package/src/plugins/alias-resolver-plugin.ts +0 -45
  358. package/src/plugins/eco-component-meta-plugin.ts +0 -474
  359. package/src/plugins/integration-plugin.ts +0 -184
  360. package/src/plugins/processor.ts +0 -220
  361. package/src/public-types.ts +0 -1255
  362. package/src/route-renderer/component-graph-executor.d.ts +0 -32
  363. package/src/route-renderer/component-graph-executor.js +0 -31
  364. package/src/route-renderer/component-graph-executor.ts +0 -84
  365. package/src/route-renderer/component-graph.d.ts +0 -42
  366. package/src/route-renderer/component-graph.js +0 -72
  367. package/src/route-renderer/component-graph.ts +0 -159
  368. package/src/route-renderer/component-marker.d.ts +0 -52
  369. package/src/route-renderer/component-marker.js +0 -46
  370. package/src/route-renderer/component-marker.ts +0 -117
  371. package/src/route-renderer/dependency-resolver.js +0 -428
  372. package/src/route-renderer/dependency-resolver.ts +0 -596
  373. package/src/route-renderer/html-post-processing.service.d.ts +0 -40
  374. package/src/route-renderer/html-post-processing.service.js +0 -86
  375. package/src/route-renderer/html-post-processing.service.ts +0 -103
  376. package/src/route-renderer/integration-renderer.d.ts +0 -339
  377. package/src/route-renderer/integration-renderer.js +0 -526
  378. package/src/route-renderer/integration-renderer.ts +0 -696
  379. package/src/route-renderer/marker-graph-resolver.d.ts +0 -76
  380. package/src/route-renderer/marker-graph-resolver.js +0 -93
  381. package/src/route-renderer/marker-graph-resolver.ts +0 -153
  382. package/src/route-renderer/page-module-loader.d.ts +0 -61
  383. package/src/route-renderer/page-module-loader.ts +0 -153
  384. package/src/route-renderer/render-execution.service.d.ts +0 -69
  385. package/src/route-renderer/render-execution.service.js +0 -91
  386. package/src/route-renderer/render-execution.service.ts +0 -158
  387. package/src/route-renderer/render-preparation.service.d.ts +0 -112
  388. package/src/route-renderer/render-preparation.service.js +0 -243
  389. package/src/route-renderer/render-preparation.service.ts +0 -358
  390. package/src/route-renderer/route-renderer.ts +0 -80
  391. package/src/router/fs-router-scanner.d.ts +0 -41
  392. package/src/router/fs-router-scanner.js +0 -155
  393. package/src/router/fs-router-scanner.ts +0 -217
  394. package/src/router/fs-router.d.ts +0 -26
  395. package/src/router/fs-router.js +0 -100
  396. package/src/router/fs-router.ts +0 -122
  397. package/src/services/asset-processing-service/asset-processing.service.d.ts +0 -41
  398. package/src/services/asset-processing-service/asset-processing.service.ts +0 -306
  399. package/src/services/asset-processing-service/asset.factory.ts +0 -105
  400. package/src/services/asset-processing-service/assets.types.ts +0 -112
  401. package/src/services/asset-processing-service/index.d.ts +0 -3
  402. package/src/services/asset-processing-service/index.js +0 -3
  403. package/src/services/asset-processing-service/index.ts +0 -3
  404. package/src/services/asset-processing-service/processor.interface.ts +0 -27
  405. package/src/services/asset-processing-service/processor.registry.ts +0 -18
  406. package/src/services/asset-processing-service/processors/base/base-processor.ts +0 -76
  407. package/src/services/asset-processing-service/processors/base/base-script-processor.d.ts +0 -16
  408. package/src/services/asset-processing-service/processors/base/base-script-processor.js +0 -80
  409. package/src/services/asset-processing-service/processors/base/base-script-processor.ts +0 -105
  410. package/src/services/asset-processing-service/processors/index.d.ts +0 -5
  411. package/src/services/asset-processing-service/processors/index.js +0 -5
  412. package/src/services/asset-processing-service/processors/index.ts +0 -5
  413. package/src/services/asset-processing-service/processors/script/content-script.processor.js +0 -57
  414. package/src/services/asset-processing-service/processors/script/content-script.processor.ts +0 -66
  415. package/src/services/asset-processing-service/processors/script/file-script.processor.ts +0 -88
  416. package/src/services/asset-processing-service/processors/script/node-module-script.processor.d.ts +0 -7
  417. package/src/services/asset-processing-service/processors/script/node-module-script.processor.js +0 -74
  418. package/src/services/asset-processing-service/processors/script/node-module-script.processor.ts +0 -84
  419. package/src/services/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +0 -25
  420. package/src/services/asset-processing-service/processors/stylesheet/content-stylesheet.processor.ts +0 -27
  421. package/src/services/asset-processing-service/processors/stylesheet/file-stylesheet.processor.ts +0 -77
  422. package/src/services/cache/cache.types.ts +0 -126
  423. package/src/services/cache/index.ts +0 -18
  424. package/src/services/cache/memory-cache-store.ts +0 -130
  425. package/src/services/cache/page-cache-service.ts +0 -202
  426. package/src/services/html-transformer.service.d.ts +0 -50
  427. package/src/services/html-transformer.service.js +0 -163
  428. package/src/services/html-transformer.service.ts +0 -217
  429. package/src/services/page-module-import.service.d.ts +0 -37
  430. package/src/services/page-module-import.service.js +0 -88
  431. package/src/services/page-module-import.service.ts +0 -129
  432. package/src/services/page-request-cache-coordinator.service.ts +0 -128
  433. package/src/services/schema-validation-service.ts +0 -204
  434. package/src/services/validation/standard-schema.types.ts +0 -68
  435. package/src/static-site-generator/static-site-generator.ts +0 -359
  436. package/src/utils/css.d.ts +0 -1
  437. package/src/utils/css.js +0 -7
  438. package/src/utils/css.ts +0 -5
  439. package/src/utils/deep-merge.ts +0 -47
  440. package/src/utils/hash.ts +0 -5
  441. package/src/utils/html.ts +0 -1
  442. package/src/utils/invariant.ts +0 -15
  443. package/src/utils/locals-utils.ts +0 -37
  444. package/src/utils/parse-cli-args.ts +0 -83
  445. package/src/utils/path-utils.module.ts +0 -14
  446. package/src/utils/runtime.ts +0 -44
  447. package/src/utils/server-utils.module.ts +0 -67
  448. package/src/watchers/project-watcher.test-helpers.ts +0 -40
  449. package/src/watchers/project-watcher.ts +0 -364
  450. /package/src/adapters/{bun → shared}/define-api-handler.js +0 -0
  451. /package/src/{internal-types.js → adapters/shared/runtime-host.js} +0 -0
  452. /package/src/{public-types.js → adapters/shared/static-preview-host.js} +0 -0
  453. /package/src/{services/asset-processing-service/assets.types.js → plugins/runtime-capability.js} +0 -0
  454. /package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.interface.js +0 -0
  455. /package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.registry.js +0 -0
  456. /package/src/services/{schema-validation-service.js → validation/schema-validation-service.js} +0 -0
@@ -1,5 +1,17 @@
1
+ import { mergeBrowserRuntimeManifests } from "./browser-runtime-manifest.js";
2
+ import {
3
+ collectBrowserRuntimeImportRewriteMap,
4
+ rewriteBrowserRuntimeImports
5
+ } from "./browser-runtime-import-rewrite-plugin.js";
6
+ import {
7
+ createAppBuildManifest,
8
+ getBrowserBuildPlugins,
9
+ getServerBuildPlugins
10
+ } from "./build-manifest.js";
1
11
  import { EsbuildBuildAdapter } from "./esbuild-build-adapter.js";
2
- import { getRequiredBunRuntime } from "../utils/runtime.js";
12
+ import { getBunRuntime } from "../utils/runtime.js";
13
+ import fs from "node:fs";
14
+ import path from "node:path";
3
15
  import { EsbuildBuildAdapter as EsbuildBuildAdapter2 } from "./esbuild-build-adapter.js";
4
16
  function transpileProfileToOptions(profile) {
5
17
  switch (profile) {
@@ -24,31 +36,636 @@ function transpileProfileToOptions(profile) {
24
36
  }
25
37
  }
26
38
  class BunBuildAdapter {
27
- async build(options) {
28
- const bun = getRequiredBunRuntime();
29
- const result = await bun.build({
30
- ...options,
31
- plugins: options.plugins
32
- });
39
+ ownership = "bun-native";
40
+ fallbackAdapter = new EsbuildBuildAdapter();
41
+ getPluginsForBuild(additionalPlugins) {
42
+ const byName = /* @__PURE__ */ new Map();
43
+ for (const plugin of additionalPlugins ?? []) {
44
+ if (!byName.has(plugin.name)) {
45
+ byName.set(plugin.name, plugin);
46
+ }
47
+ }
48
+ return Array.from(byName.values());
49
+ }
50
+ escapeRegExp(value) {
51
+ return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
52
+ }
53
+ resolvePluginPath(value, importer, contextRoot) {
54
+ if (path.isAbsolute(value)) {
55
+ return value;
56
+ }
57
+ if (value.startsWith(".") || value.startsWith("..")) {
58
+ const baseDir = importer ? path.dirname(importer) : contextRoot;
59
+ return path.resolve(baseDir, value);
60
+ }
61
+ return value;
62
+ }
63
+ inferLoaderFromPath(filePath) {
64
+ const extension = path.extname(filePath).toLowerCase();
65
+ switch (extension) {
66
+ case ".ts":
67
+ return "ts";
68
+ case ".tsx":
69
+ return "tsx";
70
+ case ".jsx":
71
+ return "jsx";
72
+ case ".json":
73
+ return "json";
74
+ case ".css":
75
+ return "css";
76
+ default:
77
+ return "js";
78
+ }
79
+ }
80
+ normalizeBunLoader(loader) {
81
+ switch (loader) {
82
+ case "js":
83
+ case "jsx":
84
+ case "ts":
85
+ case "tsx":
86
+ case "json":
87
+ case "toml":
88
+ case "text":
89
+ case "file":
90
+ case "css":
91
+ return loader;
92
+ case "global-css":
93
+ case "local-css":
94
+ return "css";
95
+ default:
96
+ return void 0;
97
+ }
98
+ }
99
+ convertLoadResultToModuleSource(result) {
100
+ if (!result || typeof result !== "object") {
101
+ return void 0;
102
+ }
103
+ const candidate = result;
104
+ if (typeof candidate.contents === "string") {
105
+ return candidate.contents;
106
+ }
107
+ if (candidate.loader === "object" && candidate.exports && typeof candidate.exports === "object") {
108
+ return Object.entries(candidate.exports).map(
109
+ ([key, value]) => key === "default" ? `export default ${JSON.stringify(value)};` : `export const ${key} = ${JSON.stringify(value)};`
110
+ ).join("\n");
111
+ }
112
+ return void 0;
113
+ }
114
+ convertPluginOnLoadResult(args, result) {
115
+ if (!result || typeof result !== "object") {
116
+ return void 0;
117
+ }
118
+ const candidate = result;
119
+ const sourceFromExports = candidate.loader === "object" && candidate.exports && typeof candidate.exports === "object" ? this.convertLoadResultToModuleSource(candidate) : void 0;
120
+ if (sourceFromExports) {
121
+ return {
122
+ contents: sourceFromExports,
123
+ loader: "js",
124
+ ...typeof candidate.resolveDir === "string" ? { resolveDir: candidate.resolveDir } : {}
125
+ };
126
+ }
127
+ if (typeof candidate.contents === "string" || candidate.contents instanceof Uint8Array) {
128
+ return {
129
+ contents: candidate.contents,
130
+ loader: this.normalizeBunLoader(candidate.loader) ?? this.inferLoaderFromPath(args.path),
131
+ ...typeof candidate.resolveDir === "string" ? { resolveDir: candidate.resolveDir } : {}
132
+ };
133
+ }
134
+ return void 0;
135
+ }
136
+ createEcoPluginBridge(plugins, contextRoot) {
33
137
  return {
34
- success: result.success,
35
- logs: result.logs.map((log) => ({ message: log.message })),
36
- outputs: result.outputs.map((output) => ({ path: output.path }))
138
+ name: "ecopages-plugin-bridge",
139
+ setup: async (build2) => {
140
+ let moduleCounter = 0;
141
+ const bridge = {
142
+ onResolve: (options, callback) => {
143
+ build2.onResolve(options, async (args) => {
144
+ const result = await callback({
145
+ path: args.path,
146
+ importer: args.importer,
147
+ namespace: args.namespace
148
+ });
149
+ if (!result || typeof result !== "object") {
150
+ return void 0;
151
+ }
152
+ return {
153
+ ...typeof result.path === "string" ? { path: this.resolvePluginPath(result.path, args.importer, contextRoot) } : {},
154
+ ...typeof result.namespace === "string" ? { namespace: result.namespace } : {},
155
+ ...typeof result.external === "boolean" ? { external: result.external } : {}
156
+ };
157
+ });
158
+ },
159
+ onLoad: (options, callback) => {
160
+ build2.onLoad(
161
+ options,
162
+ async (args) => this.convertPluginOnLoadResult(
163
+ { path: args.path },
164
+ await callback({
165
+ path: args.path,
166
+ namespace: args.namespace
167
+ })
168
+ )
169
+ );
170
+ },
171
+ module: (specifier, callback) => {
172
+ const namespace = `ecopages-module-${moduleCounter}`;
173
+ moduleCounter += 1;
174
+ const filter = new RegExp(`^${this.escapeRegExp(specifier)}$`);
175
+ build2.onResolve({ filter }, async () => ({
176
+ path: specifier,
177
+ namespace
178
+ }));
179
+ build2.onLoad(
180
+ { filter, namespace },
181
+ async () => this.convertPluginOnLoadResult({ path: specifier }, await callback())
182
+ );
183
+ }
184
+ };
185
+ for (const plugin of plugins) {
186
+ await plugin.setup(bridge);
187
+ }
188
+ }
37
189
  };
38
190
  }
39
- resolve(importPath, rootDir) {
40
- return getRequiredBunRuntime().resolveSync(importPath, rootDir);
191
+ toBuildLogs(error) {
192
+ if (error instanceof Error) {
193
+ return [{ message: error.message }];
194
+ }
195
+ return [{ message: "Unknown Bun build error" }];
196
+ }
197
+ mapBunTarget(value) {
198
+ return value === "browser" ? "browser" : "bun";
199
+ }
200
+ mapBunFormat(value) {
201
+ switch (value) {
202
+ case "cjs":
203
+ return "cjs";
204
+ case "esm":
205
+ default:
206
+ return "esm";
207
+ }
208
+ }
209
+ getOutputExtension(options, entrypointPath) {
210
+ const entryExtension = path.extname(entrypointPath).toLowerCase();
211
+ if (entryExtension === ".css") {
212
+ return ".css";
213
+ }
214
+ if (entryExtension === ".json") {
215
+ return ".json";
216
+ }
217
+ if (entryExtension === ".toml") {
218
+ return ".toml";
219
+ }
220
+ if (options.target !== "browser") {
221
+ if (options.format === "cjs") {
222
+ return ".cjs";
223
+ }
224
+ if (options.format === "esm") {
225
+ return ".mjs";
226
+ }
227
+ }
228
+ return ".js";
229
+ }
230
+ resolveConcreteOutputPath(outputPath) {
231
+ if (fs.existsSync(outputPath)) {
232
+ return outputPath;
233
+ }
234
+ for (const extension of [".js", ".mjs", ".cjs"]) {
235
+ const outputPathWithExtension = `${outputPath}${extension}`;
236
+ if (fs.existsSync(outputPathWithExtension)) {
237
+ return outputPathWithExtension;
238
+ }
239
+ }
240
+ if (!outputPath.includes("[hash]")) {
241
+ return outputPath;
242
+ }
243
+ const directory = path.dirname(outputPath);
244
+ if (!fs.existsSync(directory)) {
245
+ return void 0;
246
+ }
247
+ const basenamePattern = path.basename(outputPath);
248
+ const matcher = new RegExp(`^${this.escapeRegExp(basenamePattern).replace(/\\\[hash\\\]/g, "(.+)")}$`);
249
+ const matches = fs.readdirSync(directory).filter((candidate) => matcher.test(candidate)).sort();
250
+ if (matches.length === 0) {
251
+ return void 0;
252
+ }
253
+ return path.join(directory, matches[0]);
41
254
  }
42
- registerPlugin(plugin) {
43
- getRequiredBunRuntime().plugin(plugin);
255
+ normalizePathForMatch(filePath) {
256
+ return path.normalize(filePath).split(path.sep).join("/");
257
+ }
258
+ normalizeOutputPathForMatch(outputPath, templatePath) {
259
+ const normalizedOutputPath = path.normalize(outputPath);
260
+ const templateExtension = path.extname(templatePath);
261
+ if (!templateExtension) {
262
+ return normalizedOutputPath;
263
+ }
264
+ if (templateExtension === ".js") {
265
+ if (this.hasJavaScriptExtension(normalizedOutputPath)) {
266
+ return path.normalize(normalizedOutputPath.replace(/\.(?:[cm]?js)$/u, ".js"));
267
+ }
268
+ return path.normalize(`${normalizedOutputPath}.js`);
269
+ }
270
+ if (normalizedOutputPath.endsWith(templateExtension)) {
271
+ return normalizedOutputPath;
272
+ }
273
+ return path.normalize(`${normalizedOutputPath}${templateExtension}`);
274
+ }
275
+ extractTemplateHashTokens(templatePath, candidatePath) {
276
+ const normalizedTemplatePath = this.normalizePathForMatch(templatePath);
277
+ const normalizedCandidatePath = this.normalizePathForMatch(
278
+ this.normalizeOutputPathForMatch(candidatePath, templatePath)
279
+ );
280
+ const matcher = new RegExp(
281
+ `^${this.escapeRegExp(normalizedTemplatePath).replace(/\\\[hash\\\]/g, "([^/]+)")}$`
282
+ );
283
+ const match = normalizedCandidatePath.match(matcher);
284
+ if (!match) {
285
+ return void 0;
286
+ }
287
+ return match.slice(1);
288
+ }
289
+ applyTemplateHashTokens(templatePath, hashTokens) {
290
+ const hashTokenCount = templatePath.match(/\[hash\]/g)?.length ?? 0;
291
+ if (hashTokenCount !== hashTokens.length) {
292
+ return void 0;
293
+ }
294
+ if (hashTokenCount === 0) {
295
+ return templatePath;
296
+ }
297
+ let hashTokenIndex = 0;
298
+ return templatePath.replace(/\[hash\]/g, () => hashTokens[hashTokenIndex++] ?? "");
299
+ }
300
+ resolveTemplatedOutputPath(options, entrypointPath) {
301
+ if (!options.outdir) {
302
+ return void 0;
303
+ }
304
+ const template = typeof options.naming === "string" ? options.naming : "[dir]/[name]";
305
+ const outdir = path.resolve(options.outdir);
306
+ const outputExtension = this.getOutputExtension(options, entrypointPath);
307
+ const relativeBase = path.resolve(options.outbase ?? options.root ?? process.cwd());
308
+ const relativeEntrypoint = path.relative(relativeBase, entrypointPath);
309
+ const relativeDir = path.dirname(relativeEntrypoint);
310
+ const dirToken = relativeDir === "." ? "" : relativeDir.split(path.sep).join("/");
311
+ const nameToken = path.basename(relativeEntrypoint, path.extname(relativeEntrypoint));
312
+ const extToken = outputExtension.replace(/^\./, "");
313
+ let resolvedPath = template.replaceAll("[dir]", dirToken).replaceAll("[name]", nameToken).replaceAll("[ext]", extToken);
314
+ if (outputExtension && !resolvedPath.endsWith(outputExtension)) {
315
+ resolvedPath += outputExtension;
316
+ }
317
+ resolvedPath = resolvedPath.replace(/^\.\//, "");
318
+ return path.join(outdir, resolvedPath);
319
+ }
320
+ relocateOutputFile(currentPath, targetPath) {
321
+ if (currentPath === targetPath || !fs.existsSync(currentPath)) {
322
+ return fs.existsSync(targetPath) ? targetPath : currentPath;
323
+ }
324
+ fs.mkdirSync(path.dirname(targetPath), { recursive: true });
325
+ fs.rmSync(targetPath, { force: true });
326
+ fs.renameSync(currentPath, targetPath);
327
+ return targetPath;
328
+ }
329
+ hasJavaScriptExtension(outputPath) {
330
+ return /\.(?:[cm]?js)$/u.test(outputPath);
331
+ }
332
+ rewriteBrowserRuntimeImportsInOutputs(result, plugins) {
333
+ if (!result.success || result.outputs.length === 0) {
334
+ return result;
335
+ }
336
+ const specifierMap = collectBrowserRuntimeImportRewriteMap(plugins);
337
+ if (specifierMap.size === 0) {
338
+ return result;
339
+ }
340
+ for (const output of result.outputs) {
341
+ if (!this.hasJavaScriptExtension(output.path) || !fs.existsSync(output.path)) {
342
+ continue;
343
+ }
344
+ const code = fs.readFileSync(output.path, "utf-8");
345
+ const rewritten = rewriteBrowserRuntimeImports(code, specifierMap, output.path);
346
+ if (rewritten !== code) {
347
+ fs.writeFileSync(output.path, rewritten);
348
+ }
349
+ }
350
+ return result;
351
+ }
352
+ findOutputMatchForEntrypoint(options, entrypointPath, outputs, usedOutputIndexes) {
353
+ const expectedOutputPath = this.resolveTemplatedOutputPath(options, entrypointPath);
354
+ if (!expectedOutputPath) {
355
+ return void 0;
356
+ }
357
+ const expectedMatchPaths = [expectedOutputPath];
358
+ if (options.outbase) {
359
+ const bunRootRelativeOutputPath = this.resolveTemplatedOutputPath(
360
+ { ...options, outbase: void 0 },
361
+ entrypointPath
362
+ );
363
+ if (bunRootRelativeOutputPath && bunRootRelativeOutputPath !== expectedOutputPath) {
364
+ expectedMatchPaths.push(bunRootRelativeOutputPath);
365
+ }
366
+ }
367
+ for (const [outputIndex, output] of outputs.entries()) {
368
+ if (usedOutputIndexes.has(outputIndex)) {
369
+ continue;
370
+ }
371
+ for (const matchPath of expectedMatchPaths) {
372
+ const hashTokens = this.extractTemplateHashTokens(matchPath, output.concretePath);
373
+ if (!hashTokens) {
374
+ continue;
375
+ }
376
+ const targetPath = this.applyTemplateHashTokens(expectedOutputPath, hashTokens);
377
+ if (!targetPath) {
378
+ continue;
379
+ }
380
+ usedOutputIndexes.add(outputIndex);
381
+ return { outputIndex, targetPath };
382
+ }
383
+ }
384
+ return void 0;
385
+ }
386
+ normalizeBunOutputs(result, options) {
387
+ if (!result.success || result.outputs.length === 0) {
388
+ return result;
389
+ }
390
+ const normalizedOutputs = result.outputs.map((output) => ({
391
+ concretePath: this.resolveConcreteOutputPath(output.path) ?? output.path
392
+ }));
393
+ const matchedTargetsByIndex = /* @__PURE__ */ new Map();
394
+ const usedOutputIndexes = /* @__PURE__ */ new Set();
395
+ for (const entrypointPath of options.entrypoints) {
396
+ const matchedOutput = this.findOutputMatchForEntrypoint(
397
+ options,
398
+ entrypointPath,
399
+ normalizedOutputs,
400
+ usedOutputIndexes
401
+ );
402
+ if (matchedOutput) {
403
+ matchedTargetsByIndex.set(matchedOutput.outputIndex, matchedOutput.targetPath);
404
+ }
405
+ }
406
+ return {
407
+ ...result,
408
+ outputs: normalizedOutputs.map((output, index) => {
409
+ const expectedOutputPath = matchedTargetsByIndex.get(index);
410
+ const concreteOutputPath = output.concretePath;
411
+ if (expectedOutputPath) {
412
+ return {
413
+ path: this.relocateOutputFile(concreteOutputPath, expectedOutputPath)
414
+ };
415
+ }
416
+ if (this.hasJavaScriptExtension(concreteOutputPath)) {
417
+ return {
418
+ path: concreteOutputPath
419
+ };
420
+ }
421
+ const normalizedPath = `${concreteOutputPath}.js`;
422
+ return {
423
+ path: this.relocateOutputFile(concreteOutputPath, normalizedPath)
424
+ };
425
+ })
426
+ };
427
+ }
428
+ async build(options) {
429
+ const bun = getBunRuntime();
430
+ if (!bun) {
431
+ return this.fallbackAdapter.build(options);
432
+ }
433
+ try {
434
+ const contextRoot = options.root ? path.resolve(options.root) : process.cwd();
435
+ const outdir = path.resolve(options.outdir ?? "dist/assets");
436
+ const tsconfigPath = path.join(contextRoot, "tsconfig.json");
437
+ const tsconfigExists = fs.existsSync(tsconfigPath);
438
+ const plugins = this.getPluginsForBuild(options.plugins);
439
+ const result = await bun.build({
440
+ entrypoints: options.entrypoints,
441
+ outdir,
442
+ root: contextRoot,
443
+ naming: typeof options.naming === "string" ? options.naming : void 0,
444
+ define: options.define,
445
+ external: options.external,
446
+ format: this.mapBunFormat(options.format),
447
+ target: this.mapBunTarget(options.target),
448
+ sourcemap: options.sourcemap,
449
+ splitting: !!options.splitting,
450
+ minify: !!options.minify,
451
+ packages: options.target !== "browser" && options.externalPackages !== false ? "external" : void 0,
452
+ tsconfig: tsconfigExists ? tsconfigPath : void 0,
453
+ jsx: options.jsx,
454
+ plugins: plugins.length > 0 ? [this.createEcoPluginBridge(plugins, contextRoot)] : void 0
455
+ });
456
+ return this.rewriteBrowserRuntimeImportsInOutputs(
457
+ this.normalizeBunOutputs(
458
+ {
459
+ success: result.success,
460
+ logs: result.logs.map((log) => ({ message: log.message })),
461
+ outputs: result.outputs.map((output) => ({ path: output.path }))
462
+ },
463
+ options
464
+ ),
465
+ plugins
466
+ );
467
+ } catch (error) {
468
+ return {
469
+ success: false,
470
+ logs: this.toBuildLogs(error),
471
+ outputs: []
472
+ };
473
+ }
474
+ }
475
+ resolve(importPath, rootDir) {
476
+ const bun = getBunRuntime();
477
+ if (!bun) {
478
+ return this.fallbackAdapter.resolve(importPath, rootDir);
479
+ }
480
+ return bun.resolveSync(importPath, rootDir);
44
481
  }
45
482
  getTranspileOptions(profile) {
46
483
  return transpileProfileToOptions(profile);
47
484
  }
48
485
  }
49
- const defaultBuildAdapter = new EsbuildBuildAdapter();
486
+ function createHostOwnedBuildError(methodName) {
487
+ return new Error(
488
+ `Vite-hosted builds are owned by the host runtime. Core cannot ${methodName} through the host-owned compatibility adapter.`
489
+ );
490
+ }
491
+ class ViteHostBuildAdapter {
492
+ ownership = "vite-host";
493
+ async build(_options) {
494
+ throw createHostOwnedBuildError("build");
495
+ }
496
+ resolve(_importPath, _rootDir) {
497
+ throw createHostOwnedBuildError("resolve imports");
498
+ }
499
+ getTranspileOptions(_profile) {
500
+ throw createHostOwnedBuildError("derive transpile options");
501
+ }
502
+ }
503
+ function createBunBuildAdapter() {
504
+ return new BunBuildAdapter();
505
+ }
506
+ function createViteHostBuildAdapter() {
507
+ return new ViteHostBuildAdapter();
508
+ }
509
+ function createBuildAdapter(options) {
510
+ switch (options?.ownership ?? "bun-native") {
511
+ case "vite-host":
512
+ return createViteHostBuildAdapter();
513
+ case "bun-native":
514
+ default:
515
+ return createBunBuildAdapter();
516
+ }
517
+ }
518
+ const defaultBunBuildAdapter = createBuildAdapter({ ownership: "bun-native" });
519
+ const defaultViteHostBuildAdapter = createBuildAdapter({ ownership: "vite-host" });
520
+ const defaultBuildAdapter = defaultBunBuildAdapter;
521
+ function getDefaultBuildAdapter(ownership = "bun-native") {
522
+ return ownership === "vite-host" ? defaultViteHostBuildAdapter : defaultBunBuildAdapter;
523
+ }
524
+ function getBuildAdapterOwnership(buildAdapter) {
525
+ return buildAdapter?.ownership ?? "bun-native";
526
+ }
527
+ function getAppBuildOwnership(appConfig) {
528
+ return appConfig.runtime?.buildOwnership ?? getBuildAdapterOwnership(appConfig.runtime?.buildAdapter);
529
+ }
530
+ function setAppBuildOwnership(appConfig, buildOwnership) {
531
+ appConfig.runtime = {
532
+ ...appConfig.runtime ?? {},
533
+ buildOwnership
534
+ };
535
+ }
536
+ function getAppBuildAdapter(appConfig) {
537
+ return appConfig.runtime?.buildAdapter ?? getDefaultBuildAdapter(getAppBuildOwnership(appConfig));
538
+ }
539
+ function setAppBuildAdapter(appConfig, buildAdapter) {
540
+ appConfig.runtime = {
541
+ ...appConfig.runtime ?? {},
542
+ buildOwnership: getBuildAdapterOwnership(buildAdapter),
543
+ buildAdapter
544
+ };
545
+ }
546
+ function getAppBuildManifest(appConfig) {
547
+ return appConfig.runtime?.buildManifest ?? createAppBuildManifest({
548
+ loaderPlugins: Array.from(appConfig.loaders.values())
549
+ });
550
+ }
551
+ function setAppBuildManifest(appConfig, buildManifest) {
552
+ appConfig.runtime = {
553
+ ...appConfig.runtime ?? {},
554
+ buildManifest
555
+ };
556
+ }
557
+ function createConfiguredAppBuildManifest(appConfig, input) {
558
+ return createAppBuildManifest({
559
+ loaderPlugins: input?.loaderPlugins ?? Array.from(appConfig.loaders.values()),
560
+ runtimePlugins: input?.runtimePlugins,
561
+ browserBundlePlugins: input?.browserBundlePlugins,
562
+ browserRuntimeManifest: input?.browserRuntimeManifest
563
+ });
564
+ }
565
+ function updateAppBuildManifest(appConfig, input) {
566
+ setAppBuildManifest(appConfig, createConfiguredAppBuildManifest(appConfig, input));
567
+ }
568
+ async function collectConfiguredAppBuildManifestContributions(appConfig) {
569
+ const runtimePlugins = [];
570
+ const browserBundlePlugins = [];
571
+ const browserRuntimeManifests = [];
572
+ for (const processor of appConfig.processors.values()) {
573
+ await processor.prepareBuildContributions();
574
+ if (processor.plugins) {
575
+ runtimePlugins.push(...processor.plugins);
576
+ }
577
+ if (processor.buildPlugins) {
578
+ browserBundlePlugins.push(...processor.buildPlugins);
579
+ }
580
+ }
581
+ for (const integration of appConfig.integrations) {
582
+ integration.setConfig(appConfig);
583
+ await integration.prepareBuildContributions();
584
+ runtimePlugins.push(...integration.plugins ?? []);
585
+ browserBundlePlugins.push(...integration.browserBuildPlugins ?? []);
586
+ browserRuntimeManifests.push(integration.browserRuntimeManifest);
587
+ }
588
+ return {
589
+ runtimePlugins,
590
+ browserBundlePlugins,
591
+ browserRuntimeManifest: mergeBrowserRuntimeManifests(...browserRuntimeManifests)
592
+ };
593
+ }
594
+ async function setupAppRuntimePlugins(options) {
595
+ for (const loader of options.appConfig.loaders.values()) {
596
+ options.onRuntimePlugin?.(loader);
597
+ }
598
+ for (const processor of options.appConfig.processors.values()) {
599
+ await processor.setup();
600
+ if (processor.plugins) {
601
+ for (const plugin of processor.plugins) {
602
+ options.onRuntimePlugin?.(plugin);
603
+ }
604
+ }
605
+ }
606
+ for (const integration of options.appConfig.integrations) {
607
+ integration.setConfig(options.appConfig);
608
+ integration.setRuntimeOrigin(options.runtimeOrigin);
609
+ if (options.hmrManager) {
610
+ integration.setHmrManager(options.hmrManager);
611
+ }
612
+ await integration.setup();
613
+ for (const plugin of integration.plugins) {
614
+ options.onRuntimePlugin?.(plugin);
615
+ }
616
+ }
617
+ }
618
+ function getAppServerBuildPlugins(appConfig) {
619
+ return getServerBuildPlugins(getAppBuildManifest(appConfig));
620
+ }
621
+ function getAppBrowserBuildPlugins(appConfig) {
622
+ return getBrowserBuildPlugins(getAppBuildManifest(appConfig));
623
+ }
624
+ function getAppBuildExecutor(appConfig) {
625
+ return appConfig.runtime?.buildExecutor ?? getAppBuildAdapter(appConfig);
626
+ }
627
+ function setAppBuildExecutor(appConfig, buildExecutor) {
628
+ appConfig.runtime = {
629
+ ...appConfig.runtime ?? {},
630
+ buildExecutor
631
+ };
632
+ }
633
+ function build(options, executor = defaultBunBuildAdapter) {
634
+ return executor.build(options);
635
+ }
636
+ function getTranspileOptions(profile) {
637
+ return defaultBunBuildAdapter.getTranspileOptions(profile);
638
+ }
639
+ function getAppTranspileOptions(appConfig, profile) {
640
+ return getAppBuildAdapter(appConfig).getTranspileOptions(profile);
641
+ }
50
642
  export {
51
643
  BunBuildAdapter,
52
644
  EsbuildBuildAdapter2 as EsbuildBuildAdapter,
53
- defaultBuildAdapter
645
+ ViteHostBuildAdapter,
646
+ build,
647
+ collectConfiguredAppBuildManifestContributions,
648
+ createBuildAdapter,
649
+ createBunBuildAdapter,
650
+ createConfiguredAppBuildManifest,
651
+ createViteHostBuildAdapter,
652
+ defaultBuildAdapter,
653
+ defaultBunBuildAdapter,
654
+ defaultViteHostBuildAdapter,
655
+ getAppBrowserBuildPlugins,
656
+ getAppBuildAdapter,
657
+ getAppBuildExecutor,
658
+ getAppBuildManifest,
659
+ getAppBuildOwnership,
660
+ getAppServerBuildPlugins,
661
+ getAppTranspileOptions,
662
+ getBuildAdapterOwnership,
663
+ getDefaultBuildAdapter,
664
+ getTranspileOptions,
665
+ setAppBuildAdapter,
666
+ setAppBuildExecutor,
667
+ setAppBuildManifest,
668
+ setAppBuildOwnership,
669
+ setupAppRuntimePlugins,
670
+ updateAppBuildManifest
54
671
  };
@@ -0,0 +1,33 @@
1
+ import type { EcoBuildPlugin } from './build-types.js';
2
+ import { type BrowserRuntimeManifest } from './browser-runtime-manifest.js';
3
+ export interface AppBuildManifest {
4
+ loaderPlugins: EcoBuildPlugin[];
5
+ runtimePlugins: EcoBuildPlugin[];
6
+ browserBundlePlugins: EcoBuildPlugin[];
7
+ browserRuntimeManifest: BrowserRuntimeManifest;
8
+ }
9
+ /**
10
+ * Merges plugin lists while preserving first-registration precedence by name.
11
+ *
12
+ * @remarks
13
+ * Build manifests treat plugin names as stable identities. The first plugin
14
+ * with a given name wins so config-time assembly stays deterministic across
15
+ * loader, runtime, and browser buckets.
16
+ */
17
+ export declare function mergeEcoBuildPlugins(...pluginLists: Array<EcoBuildPlugin[] | undefined>): EcoBuildPlugin[];
18
+ /**
19
+ * Creates one app-owned build manifest from the supplied plugin buckets.
20
+ */
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;
26
+ /**
27
+ * Returns the plugin list used for server-oriented builds.
28
+ */
29
+ export declare function getServerBuildPlugins(manifest: AppBuildManifest): EcoBuildPlugin[];
30
+ /**
31
+ * Returns the plugin list used for browser-oriented builds.
32
+ */
33
+ export declare function getBrowserBuildPlugins(manifest: AppBuildManifest): EcoBuildPlugin[];