@ecopages/core 0.2.0-alpha.8 → 0.2.1

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 (357) hide show
  1. package/CHANGELOG.md +18 -11
  2. package/README.md +23 -26
  3. package/package.json +76 -58
  4. package/src/adapters/README.md +2 -2
  5. package/src/adapters/abstract/application-adapter.d.ts +28 -2
  6. package/src/adapters/abstract/application-adapter.js +14 -2
  7. package/src/adapters/abstract/router-adapter.d.ts +1 -1
  8. package/src/adapters/abstract/server-adapter.d.ts +2 -2
  9. package/src/adapters/bun/client-bridge.d.ts +1 -1
  10. package/src/adapters/bun/create-app.d.ts +4 -12
  11. package/src/adapters/bun/create-app.js +4 -5
  12. package/src/adapters/bun/hmr-manager.d.ts +4 -4
  13. package/src/adapters/bun/hmr-manager.js +8 -8
  14. package/src/adapters/bun/index.d.ts +1 -1
  15. package/src/adapters/bun/index.js +2 -2
  16. package/src/adapters/bun/server-adapter.d.ts +5 -5
  17. package/src/adapters/bun/server-adapter.js +6 -5
  18. package/src/adapters/bun/server-lifecycle.d.ts +4 -4
  19. package/src/adapters/bun/server-lifecycle.js +2 -2
  20. package/src/{create-app.d.ts → adapters/create-app.d.ts} +9 -6
  21. package/src/{create-app.js → adapters/create-app.js} +4 -4
  22. package/src/adapters/index.d.ts +1 -5
  23. package/src/adapters/index.js +1 -7
  24. package/src/adapters/node/create-app.d.ts +6 -9
  25. package/src/adapters/node/create-app.js +12 -6
  26. package/src/adapters/node/node-client-bridge.d.ts +1 -1
  27. package/src/adapters/node/node-hmr-manager.d.ts +2 -2
  28. package/src/adapters/node/node-hmr-manager.js +3 -3
  29. package/src/adapters/node/server-adapter.d.ts +4 -4
  30. package/src/adapters/node/server-adapter.js +13 -12
  31. package/src/adapters/node/static-content-server.d.ts +1 -1
  32. package/src/adapters/node/static-content-server.js +1 -1
  33. package/src/adapters/shared/application-adapter.d.ts +1 -1
  34. package/src/adapters/shared/define-api-handler.d.ts +1 -1
  35. package/src/adapters/shared/explicit-static-route-matcher.d.ts +2 -2
  36. package/src/adapters/shared/file-route-middleware-pipeline.d.ts +1 -1
  37. package/src/adapters/shared/fs-server-response-factory.d.ts +2 -2
  38. package/src/adapters/shared/fs-server-response-factory.js +1 -1
  39. package/src/adapters/shared/fs-server-response-matcher.d.ts +1 -1
  40. package/src/adapters/shared/hmr-entrypoint-registrar.js +1 -1
  41. package/src/adapters/shared/hmr-html-response.d.ts +1 -1
  42. package/src/adapters/shared/render-context.d.ts +2 -1
  43. package/src/adapters/shared/render-context.js +3 -1
  44. package/src/adapters/shared/runtime-bootstrap.d.ts +1 -1
  45. package/src/adapters/shared/runtime-bootstrap.js +1 -1
  46. package/src/adapters/shared/server-adapter.d.ts +1 -1
  47. package/src/adapters/shared/server-adapter.js +5 -1
  48. package/src/adapters/shared/server-route-handler.d.ts +4 -4
  49. package/src/adapters/shared/server-route-handler.js +3 -3
  50. package/src/adapters/shared/server-static-builder.d.ts +5 -5
  51. package/src/adapters/shared/server-static-builder.js +5 -4
  52. package/src/build/README.md +19 -13
  53. package/src/build/build-adapter.d.ts +67 -20
  54. package/src/build/build-adapter.js +420 -19
  55. package/src/build/dev-build-coordinator.d.ts +10 -12
  56. package/src/build/dev-build-coordinator.js +8 -15
  57. package/src/build/esbuild-build-adapter.d.ts +6 -0
  58. package/src/build/esbuild-build-adapter.js +94 -11
  59. package/src/build/runtime-build-executor.d.ts +5 -4
  60. package/src/build/runtime-build-executor.js +5 -3
  61. package/src/build/runtime-specifier-alias-plugin.js +19 -15
  62. package/src/build/runtime-specifier-aliases.d.ts +5 -0
  63. package/src/build/runtime-specifier-aliases.js +95 -0
  64. package/src/config/README.md +5 -2
  65. package/src/config/config-builder.d.ts +25 -2
  66. package/src/config/config-builder.js +44 -7
  67. package/src/declarations.d.ts +1 -1
  68. package/src/dev/sc-server.d.ts +1 -1
  69. package/src/dev/sc-server.js +1 -1
  70. package/src/eco/eco.browser.d.ts +2 -0
  71. package/src/eco/eco.browser.js +83 -0
  72. package/src/eco/eco.js +19 -48
  73. package/src/eco/eco.types.d.ts +1 -1
  74. package/src/eco/eco.utils.d.ts +1 -40
  75. package/src/eco/eco.utils.js +5 -35
  76. package/src/eco/global-injector-map.d.ts +1 -1
  77. package/src/eco/lazy-injector-map.d.ts +1 -1
  78. package/src/hmr/hmr-strategy.d.ts +16 -13
  79. package/src/hmr/hmr-strategy.js +22 -7
  80. package/src/hmr/strategies/default-hmr-strategy.d.ts +2 -2
  81. package/src/hmr/strategies/default-hmr-strategy.js +1 -1
  82. package/src/hmr/strategies/js-hmr-strategy.d.ts +2 -2
  83. package/src/hmr/strategies/js-hmr-strategy.js +2 -2
  84. package/src/index.browser.d.ts +2 -2
  85. package/src/index.browser.js +1 -1
  86. package/src/index.d.ts +3 -2
  87. package/src/index.js +15 -4
  88. package/src/integrations/ghtml/ghtml-renderer.d.ts +6 -1
  89. package/src/integrations/ghtml/ghtml-renderer.js +29 -28
  90. package/src/integrations/ghtml/ghtml.plugin.d.ts +2 -2
  91. package/src/integrations/ghtml/ghtml.plugin.js +2 -2
  92. package/src/plugins/README.md +1 -0
  93. package/src/plugins/eco-component-meta-plugin.d.ts +12 -1
  94. package/src/plugins/eco-component-meta-plugin.js +26 -20
  95. package/src/plugins/foreign-jsx-override-plugin.d.ts +31 -0
  96. package/src/plugins/foreign-jsx-override-plugin.js +35 -0
  97. package/src/plugins/integration-plugin.d.ts +99 -33
  98. package/src/plugins/integration-plugin.js +68 -21
  99. package/src/plugins/processor.d.ts +2 -2
  100. package/src/plugins/processor.js +2 -2
  101. package/src/plugins/source-transform.d.ts +46 -0
  102. package/src/plugins/source-transform.js +71 -0
  103. package/src/route-renderer/GRAPH.md +54 -84
  104. package/src/route-renderer/README.md +14 -20
  105. package/src/route-renderer/orchestration/component-render-context.d.ts +83 -0
  106. package/src/route-renderer/orchestration/component-render-context.js +147 -0
  107. package/src/route-renderer/orchestration/integration-renderer.d.ts +233 -76
  108. package/src/route-renderer/orchestration/integration-renderer.js +500 -143
  109. package/src/route-renderer/orchestration/queued-boundary-runtime.service.d.ts +93 -0
  110. package/src/route-renderer/orchestration/queued-boundary-runtime.service.js +155 -0
  111. package/src/route-renderer/orchestration/render-execution.service.d.ts +11 -71
  112. package/src/route-renderer/orchestration/render-execution.service.js +65 -80
  113. package/src/{eco/eco.utils.ts → route-renderer/orchestration/render-output.utils.d.ts} +10 -53
  114. package/src/route-renderer/orchestration/render-output.utils.js +65 -0
  115. package/src/route-renderer/orchestration/render-preparation.service.d.ts +2 -8
  116. package/src/route-renderer/orchestration/render-preparation.service.js +10 -17
  117. package/src/route-renderer/orchestration/template-serialization.d.ts +38 -0
  118. package/src/route-renderer/orchestration/template-serialization.js +45 -0
  119. package/src/route-renderer/page-loading/dependency-resolver.d.ts +2 -2
  120. package/src/route-renderer/page-loading/dependency-resolver.js +10 -8
  121. package/src/route-renderer/page-loading/page-module-loader.d.ts +6 -4
  122. package/src/route-renderer/page-loading/page-module-loader.js +7 -5
  123. package/src/route-renderer/route-renderer.d.ts +5 -3
  124. package/src/route-renderer/route-renderer.js +13 -3
  125. package/src/router/README.md +79 -8
  126. package/src/router/client/navigation-coordinator.js +2 -2
  127. package/src/router/server/fs-router-scanner.d.ts +1 -1
  128. package/src/router/server/fs-router-scanner.js +6 -1
  129. package/src/router/server/fs-router.d.ts +1 -1
  130. package/src/services/assets/asset-processing-service/asset-processing.service.d.ts +3 -3
  131. package/src/services/assets/asset-processing-service/asset-processing.service.js +6 -6
  132. package/src/services/assets/asset-processing-service/asset.factory.d.ts +1 -1
  133. package/src/services/assets/asset-processing-service/asset.factory.js +2 -2
  134. package/src/services/assets/asset-processing-service/index.d.ts +5 -5
  135. package/src/services/assets/asset-processing-service/index.js +5 -5
  136. package/src/services/assets/asset-processing-service/processor.interface.d.ts +2 -2
  137. package/src/services/assets/asset-processing-service/processor.registry.d.ts +2 -2
  138. package/src/services/assets/asset-processing-service/processors/base/base-processor.d.ts +1 -1
  139. package/src/services/assets/asset-processing-service/processors/base/base-processor.js +1 -1
  140. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.d.ts +3 -3
  141. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.js +2 -2
  142. package/src/services/assets/asset-processing-service/processors/index.d.ts +5 -5
  143. package/src/services/assets/asset-processing-service/processors/index.js +5 -5
  144. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.d.ts +2 -2
  145. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.js +1 -1
  146. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.d.ts +4 -3
  147. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.js +15 -3
  148. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.d.ts +3 -3
  149. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.js +1 -1
  150. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.d.ts +2 -2
  151. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +1 -1
  152. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.d.ts +2 -2
  153. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.js +1 -1
  154. package/src/services/assets/browser-bundle.service.d.ts +1 -1
  155. package/src/services/assets/browser-bundle.service.js +2 -2
  156. package/src/services/html/html-rewriter-provider.service.js +4 -1
  157. package/src/services/html/html-transformer.service.d.ts +2 -2
  158. package/src/services/html/html-transformer.service.js +4 -10
  159. package/src/services/invalidation/development-invalidation.service.d.ts +1 -1
  160. package/src/services/invalidation/development-invalidation.service.js +1 -0
  161. package/src/services/module-loading/app-module-loader.service.d.ts +25 -0
  162. package/src/services/module-loading/app-module-loader.service.js +31 -0
  163. package/src/services/module-loading/app-server-module-transpiler.service.d.ts +9 -1
  164. package/src/services/module-loading/app-server-module-transpiler.service.js +77 -2
  165. package/src/services/module-loading/host-module-loader-registry.d.ts +4 -0
  166. package/src/services/module-loading/host-module-loader-registry.js +15 -0
  167. package/src/services/module-loading/module-loading-types.d.ts +2 -0
  168. package/src/{adapters/node/bootstrap-dependency-resolver.d.ts → services/module-loading/node-bootstrap-plugin.d.ts} +2 -24
  169. package/src/{adapters/node/bootstrap-dependency-resolver.js → services/module-loading/node-bootstrap-plugin.js} +42 -22
  170. package/src/services/module-loading/page-module-import.service.d.ts +4 -0
  171. package/src/services/module-loading/page-module-import.service.js +38 -9
  172. package/src/services/module-loading/server-module-transpiler.service.d.ts +3 -0
  173. package/src/services/module-loading/server-module-transpiler.service.js +4 -1
  174. package/src/services/runtime-state/dev-graph.service.d.ts +6 -6
  175. package/src/services/runtime-state/dev-graph.service.js +10 -10
  176. package/src/services/runtime-state/entrypoint-dependency-graph.service.d.ts +1 -1
  177. package/src/services/runtime-state/runtime-specifier-registry.service.d.ts +1 -1
  178. package/src/services/runtime-state/server-invalidation-state.service.d.ts +1 -1
  179. package/src/static-site-generator/static-site-generator.d.ts +2 -2
  180. package/src/static-site-generator/static-site-generator.js +1 -1
  181. package/src/{internal-types.d.ts → types/internal-types.d.ts} +24 -14
  182. package/src/{public-types.d.ts → types/public-types.d.ts} +30 -14
  183. package/src/types/public-types.js +0 -0
  184. package/src/utils/html-escaping.d.ts +7 -0
  185. package/src/utils/html-escaping.js +6 -0
  186. package/src/utils/locals-utils.d.ts +1 -1
  187. package/src/utils/parse-cli-args.d.ts +4 -1
  188. package/src/utils/parse-cli-args.js +16 -1
  189. package/src/utils/resolve-work-dir.js +1 -1
  190. package/src/watchers/project-watcher.d.ts +4 -4
  191. package/src/watchers/project-watcher.js +4 -10
  192. package/src/watchers/project-watcher.test-helpers.d.ts +2 -2
  193. package/src/adapters/abstract/application-adapter.ts +0 -337
  194. package/src/adapters/abstract/router-adapter.ts +0 -30
  195. package/src/adapters/abstract/server-adapter.ts +0 -79
  196. package/src/adapters/bun/client-bridge.ts +0 -62
  197. package/src/adapters/bun/create-app.ts +0 -189
  198. package/src/adapters/bun/hmr-manager.ts +0 -409
  199. package/src/adapters/bun/index.ts +0 -2
  200. package/src/adapters/bun/server-adapter.ts +0 -499
  201. package/src/adapters/bun/server-lifecycle.ts +0 -124
  202. package/src/adapters/index.ts +0 -6
  203. package/src/adapters/node/bootstrap-dependency-resolver.ts +0 -301
  204. package/src/adapters/node/create-app.ts +0 -179
  205. package/src/adapters/node/index.d.ts +0 -6
  206. package/src/adapters/node/index.js +0 -11
  207. package/src/adapters/node/index.ts +0 -16
  208. package/src/adapters/node/node-client-bridge.ts +0 -79
  209. package/src/adapters/node/node-hmr-manager.ts +0 -381
  210. package/src/adapters/node/runtime-adapter.d.ts +0 -46
  211. package/src/adapters/node/runtime-adapter.js +0 -306
  212. package/src/adapters/node/runtime-adapter.ts +0 -439
  213. package/src/adapters/node/server-adapter.ts +0 -488
  214. package/src/adapters/node/static-content-server.ts +0 -239
  215. package/src/adapters/node/write-runtime-manifest.d.ts +0 -26
  216. package/src/adapters/node/write-runtime-manifest.js +0 -12
  217. package/src/adapters/node/write-runtime-manifest.ts +0 -38
  218. package/src/adapters/shared/api-response.ts +0 -104
  219. package/src/adapters/shared/application-adapter.ts +0 -199
  220. package/src/adapters/shared/define-api-handler.ts +0 -66
  221. package/src/adapters/shared/explicit-static-route-matcher.ts +0 -140
  222. package/src/adapters/shared/file-route-middleware-pipeline.ts +0 -127
  223. package/src/adapters/shared/fs-server-response-factory.ts +0 -118
  224. package/src/adapters/shared/fs-server-response-matcher.ts +0 -205
  225. package/src/adapters/shared/hmr-entrypoint-registrar.ts +0 -149
  226. package/src/adapters/shared/hmr-html-response.ts +0 -52
  227. package/src/adapters/shared/render-context.ts +0 -120
  228. package/src/adapters/shared/runtime-bootstrap.ts +0 -79
  229. package/src/adapters/shared/server-adapter.ts +0 -489
  230. package/src/adapters/shared/server-route-handler.ts +0 -153
  231. package/src/adapters/shared/server-static-builder.ts +0 -166
  232. package/src/build/build-adapter.ts +0 -361
  233. package/src/build/build-manifest.ts +0 -54
  234. package/src/build/build-types.ts +0 -83
  235. package/src/build/dev-build-coordinator.ts +0 -221
  236. package/src/build/esbuild-build-adapter.ts +0 -559
  237. package/src/build/runtime-build-executor.ts +0 -34
  238. package/src/build/runtime-specifier-alias-plugin.ts +0 -58
  239. package/src/config/config-builder.ts +0 -706
  240. package/src/constants.ts +0 -54
  241. package/src/create-app.ts +0 -87
  242. package/src/dev/sc-server.ts +0 -143
  243. package/src/eco/component-render-context.d.ts +0 -105
  244. package/src/eco/component-render-context.js +0 -87
  245. package/src/eco/component-render-context.ts +0 -224
  246. package/src/eco/eco.ts +0 -242
  247. package/src/eco/eco.types.ts +0 -221
  248. package/src/eco/global-injector-map.ts +0 -112
  249. package/src/eco/lazy-injector-map.ts +0 -120
  250. package/src/eco/module-dependencies.ts +0 -75
  251. package/src/errors/http-error.ts +0 -72
  252. package/src/errors/index.ts +0 -2
  253. package/src/errors/locals-access-error.ts +0 -7
  254. package/src/global/app-logger.ts +0 -4
  255. package/src/hmr/client/hmr-runtime.ts +0 -152
  256. package/src/hmr/hmr-strategy.ts +0 -172
  257. package/src/hmr/hmr.postcss.test.e2e.ts +0 -41
  258. package/src/hmr/hmr.test.e2e.ts +0 -66
  259. package/src/hmr/strategies/default-hmr-strategy.ts +0 -60
  260. package/src/hmr/strategies/js-hmr-strategy.ts +0 -320
  261. package/src/index.browser.ts +0 -3
  262. package/src/index.ts +0 -5
  263. package/src/integrations/ghtml/ghtml-renderer.ts +0 -96
  264. package/src/integrations/ghtml/ghtml.plugin.ts +0 -32
  265. package/src/internal-types.ts +0 -232
  266. package/src/plugins/alias-resolver-plugin.ts +0 -63
  267. package/src/plugins/eco-component-meta-plugin.ts +0 -481
  268. package/src/plugins/integration-plugin.ts +0 -226
  269. package/src/plugins/processor.ts +0 -240
  270. package/src/plugins/runtime-capability.ts +0 -14
  271. package/src/public-types.ts +0 -1317
  272. package/src/route-renderer/component-graph/component-graph-executor.d.ts +0 -32
  273. package/src/route-renderer/component-graph/component-graph-executor.js +0 -31
  274. package/src/route-renderer/component-graph/component-graph-executor.ts +0 -84
  275. package/src/route-renderer/component-graph/component-graph.d.ts +0 -42
  276. package/src/route-renderer/component-graph/component-graph.js +0 -72
  277. package/src/route-renderer/component-graph/component-graph.ts +0 -159
  278. package/src/route-renderer/component-graph/component-marker.d.ts +0 -52
  279. package/src/route-renderer/component-graph/component-marker.js +0 -46
  280. package/src/route-renderer/component-graph/component-marker.ts +0 -117
  281. package/src/route-renderer/component-graph/component-reference.d.ts +0 -10
  282. package/src/route-renderer/component-graph/component-reference.js +0 -19
  283. package/src/route-renderer/component-graph/component-reference.ts +0 -29
  284. package/src/route-renderer/component-graph/marker-graph-resolver.d.ts +0 -77
  285. package/src/route-renderer/component-graph/marker-graph-resolver.js +0 -95
  286. package/src/route-renderer/component-graph/marker-graph-resolver.ts +0 -155
  287. package/src/route-renderer/orchestration/integration-renderer.ts +0 -790
  288. package/src/route-renderer/orchestration/render-execution.service.ts +0 -230
  289. package/src/route-renderer/orchestration/render-preparation.service.ts +0 -476
  290. package/src/route-renderer/page-loading/dependency-resolver.ts +0 -612
  291. package/src/route-renderer/page-loading/page-module-loader.ts +0 -181
  292. package/src/route-renderer/route-renderer.ts +0 -115
  293. package/src/router/client/link-intent.test.browser.ts +0 -51
  294. package/src/router/client/link-intent.ts +0 -92
  295. package/src/router/client/navigation-coordinator.ts +0 -433
  296. package/src/router/server/fs-router-scanner.ts +0 -219
  297. package/src/router/server/fs-router.ts +0 -122
  298. package/src/services/assets/asset-processing-service/asset-processing.service.ts +0 -401
  299. package/src/services/assets/asset-processing-service/asset.factory.ts +0 -105
  300. package/src/services/assets/asset-processing-service/assets.types.ts +0 -113
  301. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.ts +0 -95
  302. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.ts +0 -78
  303. package/src/services/assets/asset-processing-service/index.ts +0 -5
  304. package/src/services/assets/asset-processing-service/processor.interface.ts +0 -27
  305. package/src/services/assets/asset-processing-service/processor.registry.ts +0 -18
  306. package/src/services/assets/asset-processing-service/processors/base/base-processor.ts +0 -82
  307. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.ts +0 -95
  308. package/src/services/assets/asset-processing-service/processors/index.ts +0 -5
  309. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.ts +0 -66
  310. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.ts +0 -88
  311. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.ts +0 -85
  312. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.ts +0 -27
  313. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.ts +0 -80
  314. package/src/services/assets/browser-bundle.service.ts +0 -53
  315. package/src/services/cache/cache.types.ts +0 -126
  316. package/src/services/cache/index.ts +0 -18
  317. package/src/services/cache/memory-cache-store.ts +0 -130
  318. package/src/services/cache/page-cache-service.ts +0 -202
  319. package/src/services/cache/page-request-cache-coordinator.service.ts +0 -131
  320. package/src/services/html/html-rewriter-provider.service.ts +0 -103
  321. package/src/services/html/html-transformer.service.ts +0 -279
  322. package/src/services/invalidation/development-invalidation.service.ts +0 -261
  323. package/src/services/module-loading/app-server-module-transpiler.service.ts +0 -52
  324. package/src/services/module-loading/page-module-import.service.ts +0 -200
  325. package/src/services/module-loading/server-loader.service.d.ts +0 -96
  326. package/src/services/module-loading/server-loader.service.js +0 -32
  327. package/src/services/module-loading/server-loader.service.ts +0 -130
  328. package/src/services/module-loading/server-module-transpiler.service.ts +0 -105
  329. package/src/services/runtime-manifest/node-runtime-manifest.service.d.ts +0 -35
  330. package/src/services/runtime-manifest/node-runtime-manifest.service.js +0 -60
  331. package/src/services/runtime-manifest/node-runtime-manifest.service.ts +0 -101
  332. package/src/services/runtime-state/dev-graph.service.ts +0 -217
  333. package/src/services/runtime-state/entrypoint-dependency-graph.service.ts +0 -136
  334. package/src/services/runtime-state/runtime-specifier-registry.service.ts +0 -96
  335. package/src/services/runtime-state/server-invalidation-state.service.ts +0 -68
  336. package/src/services/validation/schema-validation-service.ts +0 -204
  337. package/src/services/validation/standard-schema.types.ts +0 -68
  338. package/src/static-site-generator/static-site-generator.ts +0 -462
  339. package/src/utils/css.d.ts +0 -1
  340. package/src/utils/css.js +0 -7
  341. package/src/utils/css.ts +0 -5
  342. package/src/utils/deep-merge.ts +0 -47
  343. package/src/utils/hash.ts +0 -5
  344. package/src/utils/html.ts +0 -1
  345. package/src/utils/invariant.ts +0 -15
  346. package/src/utils/locals-utils.ts +0 -37
  347. package/src/utils/parse-cli-args.ts +0 -83
  348. package/src/utils/path-utils.module.ts +0 -14
  349. package/src/utils/resolve-work-dir.ts +0 -45
  350. package/src/utils/runtime.ts +0 -44
  351. package/src/utils/server-utils.module.ts +0 -67
  352. package/src/watchers/project-watcher.test-helpers.ts +0 -41
  353. package/src/watchers/project-watcher.ts +0 -363
  354. /package/src/{constants.d.ts → config/constants.d.ts} +0 -0
  355. /package/src/{constants.js → config/constants.js} +0 -0
  356. /package/src/{internal-types.js → services/module-loading/module-loading-types.js} +0 -0
  357. /package/src/{public-types.js → types/internal-types.js} +0 -0
@@ -4,11 +4,11 @@ import {
4
4
  getServerBuildPlugins
5
5
  } from "./build-manifest.js";
6
6
  import { EsbuildBuildAdapter } from "./esbuild-build-adapter.js";
7
- import { getRequiredBunRuntime } from "../utils/runtime.js";
7
+ import { collectRuntimeSpecifierAliasMap, rewriteRuntimeSpecifierAliases } from "./runtime-specifier-aliases.js";
8
+ import { getBunRuntime } from "../utils/runtime.js";
9
+ import fs from "node:fs";
10
+ import path from "node:path";
8
11
  import { EsbuildBuildAdapter as EsbuildBuildAdapter2 } from "./esbuild-build-adapter.js";
9
- function createBuildAdapter() {
10
- return new EsbuildBuildAdapter();
11
- }
12
12
  function transpileProfileToOptions(profile) {
13
13
  switch (profile) {
14
14
  case "browser-script":
@@ -32,32 +32,419 @@ function transpileProfileToOptions(profile) {
32
32
  }
33
33
  }
34
34
  class BunBuildAdapter {
35
- async build(options) {
36
- const bun = getRequiredBunRuntime();
37
- const result = await bun.build({
38
- ...options,
39
- plugins: options.plugins
40
- });
35
+ ownership = "bun-native";
36
+ fallbackAdapter = new EsbuildBuildAdapter();
37
+ getPluginsForBuild(additionalPlugins) {
38
+ const byName = /* @__PURE__ */ new Map();
39
+ for (const plugin of additionalPlugins ?? []) {
40
+ if (!byName.has(plugin.name)) {
41
+ byName.set(plugin.name, plugin);
42
+ }
43
+ }
44
+ return Array.from(byName.values());
45
+ }
46
+ escapeRegExp(value) {
47
+ return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
48
+ }
49
+ resolvePluginPath(value, importer, contextRoot) {
50
+ if (path.isAbsolute(value)) {
51
+ return value;
52
+ }
53
+ if (value.startsWith(".") || value.startsWith("..")) {
54
+ const baseDir = importer ? path.dirname(importer) : contextRoot;
55
+ return path.resolve(baseDir, value);
56
+ }
57
+ return value;
58
+ }
59
+ inferLoaderFromPath(filePath) {
60
+ const extension = path.extname(filePath).toLowerCase();
61
+ switch (extension) {
62
+ case ".ts":
63
+ return "ts";
64
+ case ".tsx":
65
+ return "tsx";
66
+ case ".jsx":
67
+ return "jsx";
68
+ case ".json":
69
+ return "json";
70
+ case ".css":
71
+ return "css";
72
+ default:
73
+ return "js";
74
+ }
75
+ }
76
+ normalizeBunLoader(loader) {
77
+ switch (loader) {
78
+ case "js":
79
+ case "jsx":
80
+ case "ts":
81
+ case "tsx":
82
+ case "json":
83
+ case "toml":
84
+ case "text":
85
+ case "file":
86
+ case "css":
87
+ return loader;
88
+ case "global-css":
89
+ case "local-css":
90
+ return "css";
91
+ default:
92
+ return void 0;
93
+ }
94
+ }
95
+ convertLoadResultToModuleSource(result) {
96
+ if (!result || typeof result !== "object") {
97
+ return void 0;
98
+ }
99
+ const candidate = result;
100
+ if (typeof candidate.contents === "string") {
101
+ return candidate.contents;
102
+ }
103
+ if (candidate.loader === "object" && candidate.exports && typeof candidate.exports === "object") {
104
+ return Object.entries(candidate.exports).map(
105
+ ([key, value]) => key === "default" ? `export default ${JSON.stringify(value)};` : `export const ${key} = ${JSON.stringify(value)};`
106
+ ).join("\n");
107
+ }
108
+ return void 0;
109
+ }
110
+ convertPluginOnLoadResult(args, result) {
111
+ if (!result || typeof result !== "object") {
112
+ return void 0;
113
+ }
114
+ const candidate = result;
115
+ const sourceFromExports = candidate.loader === "object" && candidate.exports && typeof candidate.exports === "object" ? this.convertLoadResultToModuleSource(candidate) : void 0;
116
+ if (sourceFromExports) {
117
+ return {
118
+ contents: sourceFromExports,
119
+ loader: "js",
120
+ ...typeof candidate.resolveDir === "string" ? { resolveDir: candidate.resolveDir } : {}
121
+ };
122
+ }
123
+ if (typeof candidate.contents === "string" || candidate.contents instanceof Uint8Array) {
124
+ return {
125
+ contents: candidate.contents,
126
+ loader: this.normalizeBunLoader(candidate.loader) ?? this.inferLoaderFromPath(args.path),
127
+ ...typeof candidate.resolveDir === "string" ? { resolveDir: candidate.resolveDir } : {}
128
+ };
129
+ }
130
+ return void 0;
131
+ }
132
+ createEcoPluginBridge(plugins, contextRoot) {
133
+ return {
134
+ name: "ecopages-plugin-bridge",
135
+ setup: async (build2) => {
136
+ let moduleCounter = 0;
137
+ const bridge = {
138
+ onResolve: (options, callback) => {
139
+ build2.onResolve(options, async (args) => {
140
+ const result = await callback({
141
+ path: args.path,
142
+ importer: args.importer,
143
+ namespace: args.namespace
144
+ });
145
+ if (!result || typeof result !== "object") {
146
+ return void 0;
147
+ }
148
+ return {
149
+ ...typeof result.path === "string" ? { path: this.resolvePluginPath(result.path, args.importer, contextRoot) } : {},
150
+ ...typeof result.namespace === "string" ? { namespace: result.namespace } : {},
151
+ ...typeof result.external === "boolean" ? { external: result.external } : {}
152
+ };
153
+ });
154
+ },
155
+ onLoad: (options, callback) => {
156
+ build2.onLoad(
157
+ options,
158
+ async (args) => this.convertPluginOnLoadResult(
159
+ { path: args.path },
160
+ await callback({
161
+ path: args.path,
162
+ namespace: args.namespace
163
+ })
164
+ )
165
+ );
166
+ },
167
+ module: (specifier, callback) => {
168
+ const namespace = `ecopages-module-${moduleCounter}`;
169
+ moduleCounter += 1;
170
+ const filter = new RegExp(`^${this.escapeRegExp(specifier)}$`);
171
+ build2.onResolve({ filter }, async () => ({
172
+ path: specifier,
173
+ namespace
174
+ }));
175
+ build2.onLoad(
176
+ { filter, namespace },
177
+ async () => this.convertPluginOnLoadResult({ path: specifier }, await callback())
178
+ );
179
+ }
180
+ };
181
+ for (const plugin of plugins) {
182
+ await plugin.setup(bridge);
183
+ }
184
+ }
185
+ };
186
+ }
187
+ toBuildLogs(error) {
188
+ if (error instanceof Error) {
189
+ return [{ message: error.message }];
190
+ }
191
+ return [{ message: "Unknown Bun build error" }];
192
+ }
193
+ mapBunTarget(value) {
194
+ return value === "browser" ? "browser" : "bun";
195
+ }
196
+ mapBunFormat(value) {
197
+ switch (value) {
198
+ case "cjs":
199
+ return "cjs";
200
+ case "esm":
201
+ default:
202
+ return "esm";
203
+ }
204
+ }
205
+ getOutputExtension(options, entrypointPath) {
206
+ const entryExtension = path.extname(entrypointPath).toLowerCase();
207
+ if (entryExtension === ".css") {
208
+ return ".css";
209
+ }
210
+ if (entryExtension === ".json") {
211
+ return ".json";
212
+ }
213
+ if (entryExtension === ".toml") {
214
+ return ".toml";
215
+ }
216
+ return options.format === "cjs" || options.format === "esm" ? ".js" : ".js";
217
+ }
218
+ resolveConcreteOutputPath(outputPath) {
219
+ if (fs.existsSync(outputPath)) {
220
+ return outputPath;
221
+ }
222
+ if (!outputPath.includes("[hash]")) {
223
+ return outputPath;
224
+ }
225
+ const directory = path.dirname(outputPath);
226
+ if (!fs.existsSync(directory)) {
227
+ return void 0;
228
+ }
229
+ const basenamePattern = path.basename(outputPath);
230
+ const matcher = new RegExp(`^${this.escapeRegExp(basenamePattern).replace(/\\\[hash\\\]/g, "(.+)")}$`);
231
+ const matches = fs.readdirSync(directory).filter((candidate) => matcher.test(candidate)).sort();
232
+ if (matches.length === 0) {
233
+ return void 0;
234
+ }
235
+ return path.join(directory, matches[0]);
236
+ }
237
+ resolveTemplatedOutputPath(options, entrypointPath, concreteOutputPath) {
238
+ if (!options.outdir) {
239
+ return void 0;
240
+ }
241
+ const template = typeof options.naming === "string" ? options.naming : "[dir]/[name]";
242
+ const outdir = path.resolve(options.outdir);
243
+ const outputExtension = this.getOutputExtension(options, entrypointPath);
244
+ const relativeBase = path.resolve(options.outbase ?? options.root ?? process.cwd());
245
+ const relativeEntrypoint = path.relative(relativeBase, entrypointPath);
246
+ const relativeDir = path.dirname(relativeEntrypoint);
247
+ const dirToken = relativeDir === "." ? "" : relativeDir.split(path.sep).join("/");
248
+ const nameToken = path.basename(relativeEntrypoint, path.extname(relativeEntrypoint));
249
+ const extToken = outputExtension.replace(/^\./, "");
250
+ let resolvedPath = template.replaceAll("[dir]", dirToken).replaceAll("[name]", nameToken).replaceAll("[ext]", extToken);
251
+ if (outputExtension && !resolvedPath.endsWith(outputExtension)) {
252
+ resolvedPath += outputExtension;
253
+ }
254
+ resolvedPath = resolvedPath.replace(/^\.\//, "");
255
+ if (resolvedPath.includes("[hash]")) {
256
+ if (!concreteOutputPath) {
257
+ return path.join(outdir, resolvedPath);
258
+ }
259
+ const concreteRelativePath = path.relative(outdir, concreteOutputPath).split(path.sep).join("/");
260
+ const matcher = new RegExp(`^${this.escapeRegExp(resolvedPath).replace(/\\\[hash\\\]/g, "(.+)")}$`);
261
+ const match = concreteRelativePath.match(matcher);
262
+ if (!match?.[1]) {
263
+ return concreteOutputPath;
264
+ }
265
+ resolvedPath = resolvedPath.replaceAll("[hash]", match[1]);
266
+ }
267
+ return path.join(outdir, resolvedPath);
268
+ }
269
+ relocateOutputFile(currentPath, targetPath) {
270
+ if (currentPath === targetPath || !fs.existsSync(currentPath)) {
271
+ return fs.existsSync(targetPath) ? targetPath : currentPath;
272
+ }
273
+ fs.mkdirSync(path.dirname(targetPath), { recursive: true });
274
+ fs.rmSync(targetPath, { force: true });
275
+ fs.renameSync(currentPath, targetPath);
276
+ return targetPath;
277
+ }
278
+ normalizeBunOutputs(result, options) {
279
+ if (!result.success || result.outputs.length === 0) {
280
+ return result;
281
+ }
282
+ const normalizedOutputs = [...result.outputs];
283
+ const canMapEntrypointsByIndex = options.entrypoints.length === normalizedOutputs.length;
284
+ if (canMapEntrypointsByIndex) {
285
+ for (const [index, entrypointPath] of options.entrypoints.entries()) {
286
+ const concreteOutputPath = this.resolveConcreteOutputPath(normalizedOutputs[index].path);
287
+ const expectedOutputPath = this.resolveTemplatedOutputPath(options, entrypointPath, concreteOutputPath);
288
+ if (!expectedOutputPath) {
289
+ continue;
290
+ }
291
+ normalizedOutputs[index] = {
292
+ path: this.relocateOutputFile(
293
+ concreteOutputPath ?? normalizedOutputs[index].path,
294
+ expectedOutputPath
295
+ )
296
+ };
297
+ }
298
+ return {
299
+ ...result,
300
+ outputs: normalizedOutputs
301
+ };
302
+ }
41
303
  return {
42
- success: result.success,
43
- logs: result.logs.map((log) => ({ message: log.message })),
44
- outputs: result.outputs.map((output) => ({ path: output.path }))
304
+ ...result,
305
+ outputs: normalizedOutputs.map((output) => {
306
+ const concreteOutputPath = this.resolveConcreteOutputPath(output.path) ?? output.path;
307
+ if (path.extname(concreteOutputPath) !== "") {
308
+ return output;
309
+ }
310
+ const normalizedPath = `${concreteOutputPath}.js`;
311
+ return {
312
+ path: this.relocateOutputFile(concreteOutputPath, normalizedPath)
313
+ };
314
+ })
45
315
  };
46
316
  }
317
+ rewriteAliasedRuntimeSpecifiers(result, plugins) {
318
+ if (!result.success || result.outputs.length === 0) {
319
+ return result;
320
+ }
321
+ const aliasMap = collectRuntimeSpecifierAliasMap(plugins);
322
+ if (aliasMap.size === 0) {
323
+ return result;
324
+ }
325
+ for (const output of result.outputs) {
326
+ if (!/\.(?:[cm]?js)$/u.test(output.path) || !fs.existsSync(output.path)) {
327
+ continue;
328
+ }
329
+ const code = fs.readFileSync(output.path, "utf-8");
330
+ const rewritten = rewriteRuntimeSpecifierAliases(code, aliasMap);
331
+ if (rewritten !== code) {
332
+ fs.writeFileSync(output.path, rewritten);
333
+ }
334
+ }
335
+ return result;
336
+ }
337
+ async build(options) {
338
+ const bun = getBunRuntime();
339
+ if (!bun) {
340
+ return this.fallbackAdapter.build(options);
341
+ }
342
+ try {
343
+ const contextRoot = options.root ? path.resolve(options.root) : process.cwd();
344
+ const outdir = path.resolve(options.outdir ?? "dist/assets");
345
+ const plugins = this.getPluginsForBuild(options.plugins);
346
+ const result = await bun.build({
347
+ entrypoints: options.entrypoints,
348
+ outdir,
349
+ root: contextRoot,
350
+ naming: typeof options.naming === "string" ? options.naming : void 0,
351
+ define: options.define,
352
+ external: options.external,
353
+ format: this.mapBunFormat(options.format),
354
+ target: this.mapBunTarget(options.target),
355
+ sourcemap: options.sourcemap,
356
+ splitting: !!options.splitting,
357
+ minify: !!options.minify,
358
+ packages: options.target !== "browser" && options.externalPackages !== false ? "external" : void 0,
359
+ plugins: plugins.length > 0 ? [this.createEcoPluginBridge(plugins, contextRoot)] : void 0
360
+ });
361
+ return this.rewriteAliasedRuntimeSpecifiers(
362
+ this.normalizeBunOutputs(
363
+ {
364
+ success: result.success,
365
+ logs: result.logs.map((log) => ({ message: log.message })),
366
+ outputs: result.outputs.map((output) => ({ path: output.path }))
367
+ },
368
+ options
369
+ ),
370
+ plugins
371
+ );
372
+ } catch (error) {
373
+ return {
374
+ success: false,
375
+ logs: this.toBuildLogs(error),
376
+ outputs: []
377
+ };
378
+ }
379
+ }
47
380
  resolve(importPath, rootDir) {
48
- return getRequiredBunRuntime().resolveSync(importPath, rootDir);
381
+ const bun = getBunRuntime();
382
+ if (!bun) {
383
+ return this.fallbackAdapter.resolve(importPath, rootDir);
384
+ }
385
+ return bun.resolveSync(importPath, rootDir);
49
386
  }
50
387
  getTranspileOptions(profile) {
51
388
  return transpileProfileToOptions(profile);
52
389
  }
53
390
  }
54
- const defaultBuildAdapter = createBuildAdapter();
391
+ function createHostOwnedBuildError(methodName) {
392
+ return new Error(
393
+ `Vite-hosted builds are owned by the host runtime. Core cannot ${methodName} through the host-owned compatibility adapter.`
394
+ );
395
+ }
396
+ class ViteHostBuildAdapter {
397
+ ownership = "vite-host";
398
+ async build(_options) {
399
+ throw createHostOwnedBuildError("build");
400
+ }
401
+ resolve(_importPath, _rootDir) {
402
+ throw createHostOwnedBuildError("resolve imports");
403
+ }
404
+ getTranspileOptions(_profile) {
405
+ throw createHostOwnedBuildError("derive transpile options");
406
+ }
407
+ }
408
+ function createBunBuildAdapter() {
409
+ return new BunBuildAdapter();
410
+ }
411
+ function createViteHostBuildAdapter() {
412
+ return new ViteHostBuildAdapter();
413
+ }
414
+ function createBuildAdapter(options) {
415
+ switch (options?.ownership ?? "bun-native") {
416
+ case "vite-host":
417
+ return createViteHostBuildAdapter();
418
+ case "bun-native":
419
+ default:
420
+ return createBunBuildAdapter();
421
+ }
422
+ }
423
+ const defaultBunBuildAdapter = createBuildAdapter({ ownership: "bun-native" });
424
+ const defaultViteHostBuildAdapter = createBuildAdapter({ ownership: "vite-host" });
425
+ const defaultBuildAdapter = defaultBunBuildAdapter;
426
+ function getDefaultBuildAdapter(ownership = "bun-native") {
427
+ return ownership === "vite-host" ? defaultViteHostBuildAdapter : defaultBunBuildAdapter;
428
+ }
429
+ function getBuildAdapterOwnership(buildAdapter) {
430
+ return buildAdapter?.ownership ?? "bun-native";
431
+ }
432
+ function getAppBuildOwnership(appConfig) {
433
+ return appConfig.runtime?.buildOwnership ?? getBuildAdapterOwnership(appConfig.runtime?.buildAdapter);
434
+ }
435
+ function setAppBuildOwnership(appConfig, buildOwnership) {
436
+ appConfig.runtime = {
437
+ ...appConfig.runtime ?? {},
438
+ buildOwnership
439
+ };
440
+ }
55
441
  function getAppBuildAdapter(appConfig) {
56
- return appConfig.runtime?.buildAdapter ?? defaultBuildAdapter;
442
+ return appConfig.runtime?.buildAdapter ?? getDefaultBuildAdapter(getAppBuildOwnership(appConfig));
57
443
  }
58
444
  function setAppBuildAdapter(appConfig, buildAdapter) {
59
445
  appConfig.runtime = {
60
446
  ...appConfig.runtime ?? {},
447
+ buildOwnership: getBuildAdapterOwnership(buildAdapter),
61
448
  buildAdapter
62
449
  };
63
450
  }
@@ -97,7 +484,8 @@ async function collectConfiguredAppBuildManifestContributions(appConfig) {
97
484
  for (const integration of appConfig.integrations) {
98
485
  integration.setConfig(appConfig);
99
486
  await integration.prepareBuildContributions();
100
- runtimePlugins.push(...integration.plugins);
487
+ runtimePlugins.push(...integration.plugins ?? []);
488
+ browserBundlePlugins.push(...integration.browserBuildPlugins ?? []);
101
489
  }
102
490
  return {
103
491
  runtimePlugins,
@@ -140,29 +528,42 @@ function setAppBuildExecutor(appConfig, buildExecutor) {
140
528
  buildExecutor
141
529
  };
142
530
  }
143
- function build(options, executor = defaultBuildAdapter) {
531
+ function build(options, executor = defaultBunBuildAdapter) {
144
532
  return executor.build(options);
145
533
  }
146
534
  function getTranspileOptions(profile) {
147
- return defaultBuildAdapter.getTranspileOptions(profile);
535
+ return defaultBunBuildAdapter.getTranspileOptions(profile);
536
+ }
537
+ function getAppTranspileOptions(appConfig, profile) {
538
+ return getAppBuildAdapter(appConfig).getTranspileOptions(profile);
148
539
  }
149
540
  export {
150
541
  BunBuildAdapter,
151
542
  EsbuildBuildAdapter2 as EsbuildBuildAdapter,
543
+ ViteHostBuildAdapter,
152
544
  build,
153
545
  collectConfiguredAppBuildManifestContributions,
154
546
  createBuildAdapter,
547
+ createBunBuildAdapter,
155
548
  createConfiguredAppBuildManifest,
549
+ createViteHostBuildAdapter,
156
550
  defaultBuildAdapter,
551
+ defaultBunBuildAdapter,
552
+ defaultViteHostBuildAdapter,
157
553
  getAppBrowserBuildPlugins,
158
554
  getAppBuildAdapter,
159
555
  getAppBuildExecutor,
160
556
  getAppBuildManifest,
557
+ getAppBuildOwnership,
161
558
  getAppServerBuildPlugins,
559
+ getAppTranspileOptions,
560
+ getBuildAdapterOwnership,
561
+ getDefaultBuildAdapter,
162
562
  getTranspileOptions,
163
563
  setAppBuildAdapter,
164
564
  setAppBuildExecutor,
165
565
  setAppBuildManifest,
566
+ setAppBuildOwnership,
166
567
  setupAppRuntimePlugins,
167
568
  updateAppBuildManifest
168
569
  };
@@ -1,20 +1,20 @@
1
- import { type BuildAdapter, type BuildExecutor, type BuildOptions, type BuildResult, EsbuildBuildAdapter } from './build-adapter.js';
1
+ import { type BuildAdapter, type BuildExecutor, type BuildOptions, type BuildResult } from './build-adapter.js';
2
+ import { EsbuildBuildAdapter } from './esbuild-build-adapter.js';
2
3
  import type { EcoBuildPlugin } from './build-types.js';
3
4
  export declare function withBuildExecutorPlugins(executor: BuildExecutor, getPlugins: () => EcoBuildPlugin[]): BuildExecutor;
4
5
  /**
5
- * Serialized development build coordinator for the shared esbuild adapter.
6
+ * Serialized build coordinator for the shared esbuild adapter.
6
7
  *
7
8
  * The underlying adapter remains responsible for plain build execution. This
8
- * coordinator owns the policy that must be shared across callers in dev mode:
9
+ * coordinator owns the policy that must be shared across callers while Bun-native
10
+ * execution still uses the shared esbuild compatibility backend:
9
11
  *
10
12
  * - serialized access to the shared esbuild service
11
- * - warm-service recycling for Node-target builds
12
13
  * - recovery from known esbuild worker protocol faults
13
14
  *
14
15
  * Unlike the previous design, the coordinator does not monkey-patch the adapter
15
16
  * or install process-level fault handlers. The owning app/runtime passes this
16
- * executor explicitly to build consumers that need coordinated development
17
- * builds.
17
+ * executor explicitly to build consumers that need coordinated builds.
18
18
  */
19
19
  export declare class DevBuildCoordinator implements BuildExecutor {
20
20
  private buildQueue;
@@ -25,9 +25,6 @@ export declare class DevBuildCoordinator implements BuildExecutor {
25
25
  /**
26
26
  * Executes a build through the serialized development queue.
27
27
  *
28
- * Node-target builds recycle the warmed esbuild service between requests to
29
- * avoid stale worker state accumulating across long-lived dev sessions.
30
- *
31
28
  * If an esbuild protocol fault is detected, the coordinator resets the queue,
32
29
  * stops the corrupted service, increments the module generation, and retries
33
30
  * the build once.
@@ -52,14 +49,15 @@ export declare class DevBuildCoordinator implements BuildExecutor {
52
49
  * Returns the current internal queue promise for fault-recovery tests.
53
50
  */
54
51
  getBuildQueueForTests(): Promise<void>;
55
- private shouldRecycleEsbuildService;
56
52
  private runSerialized;
57
53
  }
58
54
  /**
59
55
  * Creates the appropriate build executor for one app/runtime instance.
60
56
  *
61
- * Development runtimes get a dedicated coordinator around the shared esbuild
62
- * adapter. Non-development runtimes use the adapter directly.
57
+ * Bun-native esbuild execution always uses the compatibility coordinator so
58
+ * preview/static generation and development flows share the same serialized
59
+ * access and protocol-fault recovery policy. Host-owned execution stays on the
60
+ * plain adapter boundary.
63
61
  */
64
62
  export declare function createAppBuildExecutor(options: {
65
63
  development: boolean;
@@ -1,9 +1,12 @@
1
1
  import { appLogger } from "../global/app-logger.js";
2
2
  import {
3
- defaultBuildAdapter,
4
- EsbuildBuildAdapter
3
+ defaultBunBuildAdapter
5
4
  } from "./build-adapter.js";
5
+ import { EsbuildBuildAdapter, ESBUILD_ADAPTER_BRAND } from "./esbuild-build-adapter.js";
6
6
  import { mergeEcoBuildPlugins } from "./build-manifest.js";
7
+ function isEsbuildBuildAdapter(adapter) {
8
+ return adapter instanceof EsbuildBuildAdapter || typeof adapter === "object" && adapter !== null && adapter[ESBUILD_ADAPTER_BRAND] === true;
9
+ }
7
10
  function mergeBuildPlugins(options, appPlugins) {
8
11
  if (appPlugins.length === 0) {
9
12
  return options;
@@ -47,9 +50,6 @@ class DevBuildCoordinator {
47
50
  /**
48
51
  * Executes a build through the serialized development queue.
49
52
  *
50
- * Node-target builds recycle the warmed esbuild service between requests to
51
- * avoid stale worker state accumulating across long-lived dev sessions.
52
- *
53
53
  * If an esbuild protocol fault is detected, the coordinator resets the queue,
54
54
  * stops the corrupted service, increments the module generation, and retries
55
55
  * the build once.
@@ -57,10 +57,6 @@ class DevBuildCoordinator {
57
57
  async build(options) {
58
58
  return this.runSerialized(async () => {
59
59
  try {
60
- if (this.shouldRecycleEsbuildService(options)) {
61
- await this.adapter.stopEsbuildService(this.esbuildModuleGeneration);
62
- this.esbuildSessionWarm = false;
63
- }
64
60
  const result = await this.adapter.buildOrThrow(options, this.esbuildModuleGeneration);
65
61
  this.esbuildSessionWarm = true;
66
62
  return result;
@@ -115,9 +111,6 @@ class DevBuildCoordinator {
115
111
  getBuildQueueForTests() {
116
112
  return this.buildQueue;
117
113
  }
118
- shouldRecycleEsbuildService(options) {
119
- return process.env.NODE_ENV === "development" && options.target !== "browser" && this.esbuildSessionWarm;
120
- }
121
114
  async runSerialized(operation) {
122
115
  let releaseBuild;
123
116
  const currentBuild = new Promise((resolve) => {
@@ -134,15 +127,15 @@ class DevBuildCoordinator {
134
127
  }
135
128
  }
136
129
  function createAppBuildExecutor(options) {
137
- const adapter = options.adapter ?? defaultBuildAdapter;
138
- const baseExecutor = !options.development || !(adapter instanceof EsbuildBuildAdapter) ? adapter : new DevBuildCoordinator(adapter);
130
+ const adapter = options.adapter ?? defaultBunBuildAdapter;
131
+ const baseExecutor = isEsbuildBuildAdapter(adapter) ? new DevBuildCoordinator(adapter) : adapter;
139
132
  if (!options.getPlugins) {
140
133
  return baseExecutor;
141
134
  }
142
135
  return new BuildExecutorWithPlugins(baseExecutor, options.getPlugins);
143
136
  }
144
137
  function createOrReuseAppBuildExecutor(options) {
145
- const adapter = options.adapter ?? defaultBuildAdapter;
138
+ const adapter = options.adapter ?? defaultBunBuildAdapter;
146
139
  const currentBaseExecutor = options.currentExecutor ? unwrapBuildExecutor(options.currentExecutor) : void 0;
147
140
  const baseExecutor = options.development && currentBaseExecutor instanceof DevBuildCoordinator ? currentBaseExecutor : createAppBuildExecutor({
148
141
  development: options.development,
@@ -5,7 +5,13 @@ import type { BuildAdapter, BuildOptions, BuildResult, BuildTranspileOptions, Bu
5
5
  * This adapter keeps Ecopages build plugin compatibility (`onResolve`, `onLoad`,
6
6
  * and `module`) while delegating bundling and TypeScript/decorator transforms to esbuild.
7
7
  */
8
+ export declare const ESBUILD_ADAPTER_BRAND: unique symbol;
8
9
  export declare class EsbuildBuildAdapter implements BuildAdapter {
10
+ readonly ownership: "bun-native";
11
+ readonly [ESBUILD_ADAPTER_BRAND] = true;
12
+ private collectWorkspaceNodePaths;
13
+ private getFallbackNodePaths;
14
+ private rewriteAliasedRuntimeSpecifiers;
9
15
  private escapeRegExp;
10
16
  private getPluginsForBuild;
11
17
  private normalizeEsbuildLoader;