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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (471) hide show
  1. package/README.md +79 -28
  2. package/package.json +94 -116
  3. package/src/adapters/README.md +2 -2
  4. package/src/adapters/abstract/application-adapter.d.ts +28 -2
  5. package/src/adapters/abstract/application-adapter.js +14 -2
  6. package/src/adapters/abstract/router-adapter.d.ts +1 -1
  7. package/src/adapters/abstract/server-adapter.d.ts +2 -2
  8. package/src/adapters/bun/client-bridge.d.ts +1 -1
  9. package/src/adapters/bun/create-app.d.ts +12 -12
  10. package/src/adapters/bun/create-app.js +64 -41
  11. package/src/adapters/bun/hmr-manager.d.ts +19 -115
  12. package/src/adapters/bun/hmr-manager.js +25 -301
  13. package/src/adapters/bun/index.d.ts +1 -1
  14. package/src/adapters/bun/index.js +2 -2
  15. package/src/adapters/bun/runtime-host.d.ts +52 -0
  16. package/src/adapters/bun/runtime-host.js +56 -0
  17. package/src/adapters/bun/server-adapter.d.ts +100 -32
  18. package/src/adapters/bun/server-adapter.js +142 -65
  19. package/src/adapters/bun/static-preview-host.d.ts +28 -0
  20. package/src/adapters/bun/static-preview-host.js +45 -0
  21. package/src/{create-app.d.ts → adapters/create-app.d.ts} +9 -6
  22. package/src/{create-app.js → adapters/create-app.js} +4 -4
  23. package/src/adapters/index.d.ts +1 -5
  24. package/src/adapters/index.js +1 -7
  25. package/src/adapters/node/create-app.d.ts +15 -12
  26. package/src/adapters/node/create-app.js +34 -85
  27. package/src/adapters/node/http-request-bridge.d.ts +57 -0
  28. package/src/adapters/node/http-request-bridge.js +118 -0
  29. package/src/adapters/node/node-client-bridge.d.ts +1 -1
  30. package/src/adapters/node/node-hmr-manager.d.ts +22 -103
  31. package/src/adapters/node/node-hmr-manager.js +26 -289
  32. package/src/adapters/node/runtime-host.d.ts +57 -0
  33. package/src/adapters/node/runtime-host.js +92 -0
  34. package/src/adapters/node/server-adapter-dependencies.d.ts +19 -0
  35. package/src/adapters/node/server-adapter-dependencies.js +18 -0
  36. package/src/adapters/node/server-adapter.d.ts +19 -42
  37. package/src/adapters/node/server-adapter.js +94 -139
  38. package/src/adapters/node/static-content-server.d.ts +1 -1
  39. package/src/adapters/node/static-content-server.js +1 -1
  40. package/src/adapters/node/static-preview-host.d.ts +55 -0
  41. package/src/adapters/node/static-preview-host.js +68 -0
  42. package/src/adapters/shared/application-adapter.d.ts +1 -1
  43. package/src/adapters/shared/define-api-handler.d.ts +1 -1
  44. package/src/adapters/shared/explicit-static-render-preparation.d.ts +25 -0
  45. package/src/adapters/shared/explicit-static-render-preparation.js +26 -0
  46. package/src/adapters/shared/explicit-static-route-matcher.d.ts +7 -4
  47. package/src/adapters/shared/explicit-static-route-matcher.js +14 -16
  48. package/src/adapters/shared/file-route-middleware-pipeline.d.ts +7 -10
  49. package/src/adapters/shared/file-route-middleware-pipeline.js +2 -11
  50. package/src/adapters/shared/fs-server-response-factory.d.ts +14 -10
  51. package/src/adapters/shared/fs-server-response-factory.js +11 -27
  52. package/src/adapters/shared/fs-server-response-matcher.d.ts +18 -18
  53. package/src/adapters/shared/fs-server-response-matcher.js +72 -46
  54. package/src/adapters/shared/hmr-entrypoint-registrar.js +1 -1
  55. package/src/adapters/shared/hmr-html-response.d.ts +1 -1
  56. package/src/adapters/shared/hmr-html-response.js +4 -3
  57. package/src/adapters/shared/render-context.d.ts +5 -3
  58. package/src/adapters/shared/render-context.js +24 -1
  59. package/src/adapters/shared/runtime-app-bootstrap.d.ts +26 -0
  60. package/src/adapters/shared/runtime-app-bootstrap.js +46 -0
  61. package/src/adapters/shared/runtime-host.d.ts +12 -0
  62. package/src/adapters/shared/server-adapter.d.ts +22 -11
  63. package/src/adapters/shared/server-adapter.js +183 -133
  64. package/src/adapters/shared/server-route-handler.d.ts +5 -5
  65. package/src/adapters/shared/server-route-handler.js +4 -4
  66. package/src/adapters/shared/server-static-builder.d.ts +8 -7
  67. package/src/adapters/shared/server-static-builder.js +6 -5
  68. package/src/adapters/shared/shared-hmr-manager.d.ts +59 -0
  69. package/src/adapters/shared/shared-hmr-manager.js +241 -0
  70. package/src/adapters/shared/static-preview-host.d.ts +10 -0
  71. package/src/build/README.md +57 -67
  72. package/src/build/browser-runtime-manifest.d.ts +31 -0
  73. package/src/build/browser-runtime-manifest.js +61 -0
  74. package/src/build/browser-runtime-plugin-helpers.d.ts +26 -0
  75. package/src/build/browser-runtime-plugin-helpers.js +14 -0
  76. package/src/build/browser-runtime-plugin.d.ts +78 -0
  77. package/src/build/browser-runtime-plugin.js +173 -0
  78. package/src/build/build-adapter.d.ts +384 -63
  79. package/src/build/build-adapter.js +129 -54
  80. package/src/build/build-manifest.d.ts +6 -0
  81. package/src/build/build-manifest.js +21 -2
  82. package/src/build/build-types.d.ts +2 -2
  83. package/src/build/rolldown-adapter-helpers.d.ts +58 -0
  84. package/src/build/rolldown-adapter-helpers.js +265 -0
  85. package/src/build/rolldown-build-adapter.d.ts +28 -0
  86. package/src/build/rolldown-build-adapter.js +65 -0
  87. package/src/build/rolldown-dev-build-adapter.d.ts +82 -0
  88. package/src/build/rolldown-dev-build-adapter.js +166 -0
  89. package/src/build/rolldown-plugin-bridge.d.ts +59 -0
  90. package/src/build/rolldown-plugin-bridge.js +199 -0
  91. package/src/build/runtime-build-executor.d.ts +15 -7
  92. package/src/build/runtime-build-executor.js +8 -9
  93. package/src/build/runtime-build-output-normalizer.d.ts +3 -0
  94. package/src/build/runtime-build-output-normalizer.js +111 -0
  95. package/src/build/serialized-build-executor.d.ts +64 -0
  96. package/src/build/serialized-build-executor.js +63 -0
  97. package/src/build/server-side-css-shim-plugin.d.ts +41 -0
  98. package/src/build/server-side-css-shim-plugin.js +35 -0
  99. package/src/cache/index.d.ts +6 -0
  100. package/src/cache/index.js +6 -0
  101. package/src/cache/module-parse-cache.d.ts +65 -0
  102. package/src/cache/module-parse-cache.js +75 -0
  103. package/src/config/README.md +5 -2
  104. package/src/config/config-builder.d.ts +41 -13
  105. package/src/config/config-builder.js +62 -24
  106. package/src/declarations.d.ts +1 -1
  107. package/src/dev/host-runtime.d.ts +10 -0
  108. package/src/dev/host-runtime.js +24 -0
  109. package/src/dev/sc-server.d.ts +1 -1
  110. package/src/dev/sc-server.js +1 -1
  111. package/src/eco/eco.browser.d.ts +2 -0
  112. package/src/eco/eco.browser.js +88 -0
  113. package/src/eco/eco.js +50 -45
  114. package/src/eco/eco.types.d.ts +60 -8
  115. package/src/eco/eco.utils.d.ts +1 -40
  116. package/src/eco/eco.utils.js +5 -35
  117. package/src/eco/global-injector-map.d.ts +3 -3
  118. package/src/eco/global-injector-map.js +2 -2
  119. package/src/eco/lazy-injector-map.d.ts +2 -2
  120. package/src/errors/index.d.ts +1 -0
  121. package/src/errors/index.js +3 -1
  122. package/src/hmr/client/hmr-runtime.js +9 -1
  123. package/src/hmr/hmr-strategy.d.ts +16 -13
  124. package/src/hmr/hmr-strategy.js +22 -7
  125. package/src/hmr/strategies/default-hmr-strategy.d.ts +2 -2
  126. package/src/hmr/strategies/default-hmr-strategy.js +1 -1
  127. package/src/hmr/strategies/js-hmr-strategy.d.ts +4 -9
  128. package/src/hmr/strategies/js-hmr-strategy.js +5 -10
  129. package/src/index.browser.d.ts +2 -2
  130. package/src/index.browser.js +1 -1
  131. package/src/index.d.ts +3 -2
  132. package/src/index.js +15 -4
  133. package/src/integrations/ghtml/ghtml-renderer.d.ts +2 -1
  134. package/src/integrations/ghtml/ghtml-renderer.js +24 -29
  135. package/src/integrations/ghtml/ghtml.constants.d.ts +1 -0
  136. package/src/integrations/ghtml/ghtml.constants.js +4 -0
  137. package/src/integrations/ghtml/ghtml.plugin.d.ts +2 -6
  138. package/src/integrations/ghtml/ghtml.plugin.js +3 -4
  139. package/src/plugins/README.md +1 -0
  140. package/src/plugins/alias-resolver-cache.d.ts +68 -0
  141. package/src/plugins/alias-resolver-cache.js +106 -0
  142. package/src/plugins/alias-resolver-plugin.d.ts +5 -1
  143. package/src/plugins/alias-resolver-plugin.js +19 -7
  144. package/src/plugins/eco-component-meta-plugin.d.ts +12 -1
  145. package/src/plugins/eco-component-meta-plugin.js +43 -25
  146. package/src/plugins/foreign-jsx-override-plugin.d.ts +33 -0
  147. package/src/plugins/foreign-jsx-override-plugin.js +41 -0
  148. package/src/plugins/integration-plugin.d.ts +136 -42
  149. package/src/plugins/integration-plugin.js +99 -31
  150. package/src/plugins/processor.d.ts +4 -2
  151. package/src/plugins/processor.js +8 -3
  152. package/src/plugins/source-transform.d.ts +46 -0
  153. package/src/plugins/source-transform.js +71 -0
  154. package/src/route-renderer/GRAPH.md +80 -318
  155. package/src/route-renderer/README.md +74 -78
  156. package/src/route-renderer/orchestration/component-render-context.d.ts +97 -0
  157. package/src/route-renderer/orchestration/component-render-context.js +147 -0
  158. package/src/route-renderer/orchestration/declared-ownership-graph.d.ts +18 -0
  159. package/src/route-renderer/orchestration/declared-ownership-graph.js +34 -0
  160. package/src/route-renderer/orchestration/foreign-subtree-execution.service.d.ts +110 -0
  161. package/src/route-renderer/orchestration/foreign-subtree-execution.service.js +233 -0
  162. package/src/route-renderer/orchestration/integration-renderer.d.ts +290 -128
  163. package/src/route-renderer/orchestration/integration-renderer.js +660 -258
  164. package/src/route-renderer/orchestration/ownership-planning.service.d.ts +24 -0
  165. package/src/route-renderer/orchestration/ownership-planning.service.js +63 -0
  166. package/src/route-renderer/orchestration/ownership-validation.service.d.ts +29 -0
  167. package/src/route-renderer/orchestration/ownership-validation.service.js +53 -0
  168. package/src/route-renderer/orchestration/processed-asset-dedupe.d.ts +3 -0
  169. package/src/route-renderer/orchestration/processed-asset-dedupe.js +27 -0
  170. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.d.ts +91 -0
  171. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.js +170 -0
  172. package/src/route-renderer/orchestration/render-output.utils.d.ts +66 -0
  173. package/src/route-renderer/orchestration/render-output.utils.js +171 -0
  174. package/src/route-renderer/orchestration/route-render-orchestrator.d.ts +156 -0
  175. package/src/route-renderer/orchestration/route-render-orchestrator.js +577 -0
  176. package/src/route-renderer/orchestration/template-serialization.d.ts +38 -0
  177. package/src/route-renderer/orchestration/template-serialization.js +45 -0
  178. package/src/route-renderer/page-loading/component-dependency-collection.d.ts +37 -0
  179. package/src/route-renderer/page-loading/component-dependency-collection.js +132 -0
  180. package/src/route-renderer/page-loading/declared-asset-collection.d.ts +24 -0
  181. package/src/route-renderer/page-loading/declared-asset-collection.js +106 -0
  182. package/src/route-renderer/page-loading/dependency-resolver.d.ts +2 -2
  183. package/src/route-renderer/page-loading/dependency-resolver.js +27 -354
  184. package/src/route-renderer/page-loading/ecopages-virtual-imports.d.ts +11 -0
  185. package/src/route-renderer/page-loading/ecopages-virtual-imports.js +57 -0
  186. package/src/route-renderer/page-loading/lazy-entry-collection.d.ts +45 -0
  187. package/src/route-renderer/page-loading/lazy-entry-collection.js +105 -0
  188. package/src/route-renderer/page-loading/lazy-trigger-planning.d.ts +19 -0
  189. package/src/route-renderer/page-loading/lazy-trigger-planning.js +40 -0
  190. package/src/route-renderer/page-loading/module-declaration-aggregation.d.ts +5 -0
  191. package/src/route-renderer/page-loading/module-declaration-aggregation.js +33 -0
  192. package/src/route-renderer/page-loading/module-declaration-scripts.d.ts +3 -0
  193. package/src/route-renderer/page-loading/module-declaration-scripts.js +18 -0
  194. package/src/route-renderer/page-loading/page-dependency-bundling.d.ts +13 -0
  195. package/src/route-renderer/page-loading/page-dependency-bundling.js +137 -0
  196. package/src/route-renderer/page-loading/page-module-loader.d.ts +7 -4
  197. package/src/route-renderer/page-loading/page-module-loader.js +8 -5
  198. package/src/route-renderer/route-renderer.d.ts +31 -23
  199. package/src/route-renderer/route-renderer.js +17 -24
  200. package/src/router/README.md +76 -8
  201. package/src/router/client/navigation-coordinator.d.ts +20 -0
  202. package/src/router/client/navigation-coordinator.js +2 -2
  203. package/src/router/server/route-registry.d.ts +78 -0
  204. package/src/router/server/route-registry.js +262 -0
  205. package/src/services/README.md +1 -2
  206. package/src/services/assets/asset-processing-service/asset-dependency-keys.d.ts +3 -0
  207. package/src/services/assets/asset-processing-service/asset-dependency-keys.js +56 -0
  208. package/src/services/assets/asset-processing-service/asset-processing.service.d.ts +3 -20
  209. package/src/services/assets/asset-processing-service/asset-processing.service.js +52 -98
  210. package/src/services/assets/asset-processing-service/asset.factory.d.ts +1 -1
  211. package/src/services/assets/asset-processing-service/asset.factory.js +2 -2
  212. package/src/services/assets/asset-processing-service/assets.types.d.ts +14 -0
  213. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.d.ts +2 -0
  214. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.js +1 -0
  215. package/src/services/assets/asset-processing-service/grouped-content-bundles.d.ts +30 -0
  216. package/src/services/assets/asset-processing-service/grouped-content-bundles.js +65 -0
  217. package/src/services/assets/asset-processing-service/index.d.ts +6 -5
  218. package/src/services/assets/asset-processing-service/index.js +6 -5
  219. package/src/services/assets/asset-processing-service/page-package.d.ts +6 -0
  220. package/src/services/assets/asset-processing-service/page-package.js +80 -0
  221. package/src/services/assets/asset-processing-service/processor.interface.d.ts +2 -2
  222. package/src/services/assets/asset-processing-service/processor.registry.d.ts +2 -2
  223. package/src/services/assets/asset-processing-service/processors/base/base-processor.d.ts +1 -1
  224. package/src/services/assets/asset-processing-service/processors/base/base-processor.js +3 -2
  225. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.d.ts +10 -5
  226. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.js +69 -5
  227. package/src/services/assets/asset-processing-service/processors/index.d.ts +5 -5
  228. package/src/services/assets/asset-processing-service/processors/index.js +5 -5
  229. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.d.ts +3 -2
  230. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.js +66 -3
  231. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.d.ts +4 -3
  232. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.js +27 -6
  233. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.d.ts +38 -3
  234. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.js +57 -6
  235. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.d.ts +5 -2
  236. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +39 -5
  237. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.d.ts +2 -2
  238. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.js +5 -2
  239. package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.d.ts +18 -0
  240. package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.js +45 -0
  241. package/src/services/assets/browser-bundle.service.d.ts +44 -3
  242. package/src/services/assets/browser-bundle.service.js +15 -7
  243. package/src/services/html/html-rewriter-provider.service.d.ts +3 -0
  244. package/src/services/html/html-rewriter-provider.service.js +4 -1
  245. package/src/services/html/html-transformer.service.d.ts +22 -3
  246. package/src/services/html/html-transformer.service.js +101 -35
  247. package/src/services/invalidation/development-invalidation.service.d.ts +1 -1
  248. package/src/services/invalidation/development-invalidation.service.js +1 -0
  249. package/src/services/module-loading/app-module-loader.service.d.ts +7 -0
  250. package/src/services/module-loading/app-module-loader.service.js +0 -0
  251. package/src/services/module-loading/app-server-module-transpiler.service.d.ts +9 -1
  252. package/src/services/module-loading/app-server-module-transpiler.service.js +102 -6
  253. package/src/services/module-loading/host-module-loader-registry.d.ts +4 -0
  254. package/src/services/module-loading/host-module-loader-registry.js +15 -0
  255. package/src/services/module-loading/module-loading-types.d.ts +2 -0
  256. package/src/services/module-loading/module-loading-types.js +0 -0
  257. package/src/services/module-loading/page-module-import.service.d.ts +32 -8
  258. package/src/services/module-loading/page-module-import.service.js +83 -22
  259. package/src/services/module-loading/server-module-transpiler.service.d.ts +8 -14
  260. package/src/services/module-loading/server-module-transpiler.service.js +5 -2
  261. package/src/services/module-loading/source-module-support.d.ts +5 -0
  262. package/src/services/module-loading/source-module-support.js +8 -0
  263. package/src/services/runtime-state/dev-graph.service.d.ts +6 -6
  264. package/src/services/runtime-state/dev-graph.service.js +10 -10
  265. package/src/services/runtime-state/entrypoint-dependency-graph.service.d.ts +1 -1
  266. package/src/services/runtime-state/server-invalidation-state.service.d.ts +1 -1
  267. package/src/static-site-generator/static-site-generator.d.ts +23 -28
  268. package/src/static-site-generator/static-site-generator.js +119 -156
  269. package/src/{internal-types.d.ts → types/internal-types.d.ts} +34 -23
  270. package/src/types/internal-types.js +0 -0
  271. package/src/{public-types.d.ts → types/public-types.d.ts} +195 -37
  272. package/src/types/public-types.js +0 -0
  273. package/src/utils/html-escaping.d.ts +7 -0
  274. package/src/utils/html-escaping.js +6 -0
  275. package/src/utils/locals-utils.d.ts +1 -1
  276. package/src/utils/parse-cli-args.d.ts +4 -1
  277. package/src/utils/parse-cli-args.js +16 -1
  278. package/src/utils/resolve-work-dir.js +1 -1
  279. package/src/watchers/project-watcher.d.ts +4 -4
  280. package/src/watchers/project-watcher.js +35 -41
  281. package/src/watchers/project-watcher.test-helpers.d.ts +2 -2
  282. package/src/watchers/project-watcher.test-helpers.js +5 -5
  283. package/CHANGELOG.md +0 -31
  284. package/src/adapters/abstract/application-adapter.ts +0 -337
  285. package/src/adapters/abstract/router-adapter.ts +0 -30
  286. package/src/adapters/abstract/server-adapter.ts +0 -79
  287. package/src/adapters/bun/client-bridge.ts +0 -62
  288. package/src/adapters/bun/create-app.ts +0 -189
  289. package/src/adapters/bun/hmr-manager.ts +0 -409
  290. package/src/adapters/bun/index.ts +0 -2
  291. package/src/adapters/bun/server-adapter.ts +0 -499
  292. package/src/adapters/bun/server-lifecycle.d.ts +0 -63
  293. package/src/adapters/bun/server-lifecycle.js +0 -92
  294. package/src/adapters/bun/server-lifecycle.ts +0 -124
  295. package/src/adapters/index.ts +0 -6
  296. package/src/adapters/node/bootstrap-dependency-resolver.d.ts +0 -44
  297. package/src/adapters/node/bootstrap-dependency-resolver.js +0 -172
  298. package/src/adapters/node/bootstrap-dependency-resolver.ts +0 -301
  299. package/src/adapters/node/create-app.ts +0 -179
  300. package/src/adapters/node/index.d.ts +0 -6
  301. package/src/adapters/node/index.js +0 -11
  302. package/src/adapters/node/index.ts +0 -16
  303. package/src/adapters/node/node-client-bridge.ts +0 -79
  304. package/src/adapters/node/node-hmr-manager.ts +0 -381
  305. package/src/adapters/node/runtime-adapter.d.ts +0 -46
  306. package/src/adapters/node/runtime-adapter.js +0 -306
  307. package/src/adapters/node/runtime-adapter.ts +0 -439
  308. package/src/adapters/node/server-adapter.ts +0 -488
  309. package/src/adapters/node/static-content-server.ts +0 -239
  310. package/src/adapters/node/write-runtime-manifest.d.ts +0 -26
  311. package/src/adapters/node/write-runtime-manifest.js +0 -12
  312. package/src/adapters/node/write-runtime-manifest.ts +0 -38
  313. package/src/adapters/shared/api-response.ts +0 -104
  314. package/src/adapters/shared/application-adapter.ts +0 -199
  315. package/src/adapters/shared/define-api-handler.ts +0 -66
  316. package/src/adapters/shared/explicit-static-route-matcher.ts +0 -140
  317. package/src/adapters/shared/file-route-middleware-pipeline.ts +0 -127
  318. package/src/adapters/shared/fs-server-response-factory.ts +0 -118
  319. package/src/adapters/shared/fs-server-response-matcher.ts +0 -205
  320. package/src/adapters/shared/hmr-entrypoint-registrar.ts +0 -149
  321. package/src/adapters/shared/hmr-html-response.ts +0 -52
  322. package/src/adapters/shared/render-context.ts +0 -120
  323. package/src/adapters/shared/runtime-bootstrap.d.ts +0 -38
  324. package/src/adapters/shared/runtime-bootstrap.js +0 -43
  325. package/src/adapters/shared/runtime-bootstrap.ts +0 -79
  326. package/src/adapters/shared/server-adapter.ts +0 -489
  327. package/src/adapters/shared/server-route-handler.ts +0 -153
  328. package/src/adapters/shared/server-static-builder.ts +0 -166
  329. package/src/build/build-adapter.ts +0 -361
  330. package/src/build/build-manifest.ts +0 -54
  331. package/src/build/build-types.ts +0 -83
  332. package/src/build/dev-build-coordinator.d.ts +0 -74
  333. package/src/build/dev-build-coordinator.js +0 -161
  334. package/src/build/dev-build-coordinator.ts +0 -221
  335. package/src/build/esbuild-build-adapter.d.ts +0 -72
  336. package/src/build/esbuild-build-adapter.js +0 -422
  337. package/src/build/esbuild-build-adapter.ts +0 -559
  338. package/src/build/runtime-build-executor.ts +0 -34
  339. package/src/build/runtime-specifier-alias-plugin.d.ts +0 -15
  340. package/src/build/runtime-specifier-alias-plugin.js +0 -31
  341. package/src/build/runtime-specifier-alias-plugin.ts +0 -58
  342. package/src/config/config-builder.ts +0 -706
  343. package/src/constants.ts +0 -54
  344. package/src/create-app.ts +0 -87
  345. package/src/dev/sc-server.ts +0 -143
  346. package/src/eco/component-render-context.d.ts +0 -105
  347. package/src/eco/component-render-context.js +0 -87
  348. package/src/eco/component-render-context.ts +0 -224
  349. package/src/eco/eco.ts +0 -242
  350. package/src/eco/eco.types.ts +0 -221
  351. package/src/eco/eco.utils.ts +0 -89
  352. package/src/eco/global-injector-map.ts +0 -112
  353. package/src/eco/lazy-injector-map.ts +0 -120
  354. package/src/eco/module-dependencies.ts +0 -75
  355. package/src/errors/http-error.ts +0 -72
  356. package/src/errors/index.ts +0 -2
  357. package/src/errors/locals-access-error.ts +0 -7
  358. package/src/global/app-logger.ts +0 -4
  359. package/src/hmr/client/hmr-runtime.ts +0 -152
  360. package/src/hmr/hmr-strategy.ts +0 -172
  361. package/src/hmr/hmr.postcss.test.e2e.ts +0 -41
  362. package/src/hmr/hmr.test.e2e.ts +0 -66
  363. package/src/hmr/strategies/default-hmr-strategy.ts +0 -60
  364. package/src/hmr/strategies/js-hmr-strategy.ts +0 -320
  365. package/src/index.browser.ts +0 -3
  366. package/src/index.ts +0 -5
  367. package/src/integrations/ghtml/ghtml-renderer.ts +0 -96
  368. package/src/integrations/ghtml/ghtml.plugin.ts +0 -32
  369. package/src/internal-types.ts +0 -232
  370. package/src/plugins/alias-resolver-plugin.ts +0 -63
  371. package/src/plugins/eco-component-meta-plugin.ts +0 -481
  372. package/src/plugins/integration-plugin.ts +0 -226
  373. package/src/plugins/processor.ts +0 -240
  374. package/src/plugins/runtime-capability.ts +0 -14
  375. package/src/public-types.ts +0 -1317
  376. package/src/route-renderer/component-graph/component-graph-executor.d.ts +0 -32
  377. package/src/route-renderer/component-graph/component-graph-executor.js +0 -31
  378. package/src/route-renderer/component-graph/component-graph-executor.ts +0 -84
  379. package/src/route-renderer/component-graph/component-graph.d.ts +0 -42
  380. package/src/route-renderer/component-graph/component-graph.js +0 -72
  381. package/src/route-renderer/component-graph/component-graph.ts +0 -159
  382. package/src/route-renderer/component-graph/component-marker.d.ts +0 -52
  383. package/src/route-renderer/component-graph/component-marker.js +0 -46
  384. package/src/route-renderer/component-graph/component-marker.ts +0 -117
  385. package/src/route-renderer/component-graph/component-reference.d.ts +0 -10
  386. package/src/route-renderer/component-graph/component-reference.js +0 -19
  387. package/src/route-renderer/component-graph/component-reference.ts +0 -29
  388. package/src/route-renderer/component-graph/marker-graph-resolver.d.ts +0 -77
  389. package/src/route-renderer/component-graph/marker-graph-resolver.js +0 -95
  390. package/src/route-renderer/component-graph/marker-graph-resolver.ts +0 -155
  391. package/src/route-renderer/orchestration/integration-renderer.ts +0 -790
  392. package/src/route-renderer/orchestration/render-execution.service.d.ts +0 -103
  393. package/src/route-renderer/orchestration/render-execution.service.js +0 -121
  394. package/src/route-renderer/orchestration/render-execution.service.ts +0 -230
  395. package/src/route-renderer/orchestration/render-preparation.service.d.ts +0 -121
  396. package/src/route-renderer/orchestration/render-preparation.service.js +0 -332
  397. package/src/route-renderer/orchestration/render-preparation.service.ts +0 -476
  398. package/src/route-renderer/page-loading/dependency-resolver.ts +0 -612
  399. package/src/route-renderer/page-loading/page-module-loader.ts +0 -181
  400. package/src/route-renderer/route-renderer.ts +0 -115
  401. package/src/router/client/link-intent.test.browser.ts +0 -51
  402. package/src/router/client/link-intent.ts +0 -92
  403. package/src/router/client/navigation-coordinator.ts +0 -433
  404. package/src/router/server/fs-router-scanner.d.ts +0 -41
  405. package/src/router/server/fs-router-scanner.js +0 -156
  406. package/src/router/server/fs-router-scanner.ts +0 -219
  407. package/src/router/server/fs-router.d.ts +0 -26
  408. package/src/router/server/fs-router.js +0 -100
  409. package/src/router/server/fs-router.ts +0 -122
  410. package/src/services/assets/asset-processing-service/asset-processing.service.ts +0 -401
  411. package/src/services/assets/asset-processing-service/asset.factory.ts +0 -105
  412. package/src/services/assets/asset-processing-service/assets.types.ts +0 -113
  413. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.ts +0 -95
  414. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.ts +0 -78
  415. package/src/services/assets/asset-processing-service/index.ts +0 -5
  416. package/src/services/assets/asset-processing-service/processor.interface.ts +0 -27
  417. package/src/services/assets/asset-processing-service/processor.registry.ts +0 -18
  418. package/src/services/assets/asset-processing-service/processors/base/base-processor.ts +0 -82
  419. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.ts +0 -95
  420. package/src/services/assets/asset-processing-service/processors/index.ts +0 -5
  421. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.ts +0 -66
  422. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.ts +0 -88
  423. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.ts +0 -85
  424. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.ts +0 -27
  425. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.ts +0 -80
  426. package/src/services/assets/browser-bundle.service.ts +0 -53
  427. package/src/services/cache/cache.types.ts +0 -126
  428. package/src/services/cache/index.ts +0 -18
  429. package/src/services/cache/memory-cache-store.ts +0 -130
  430. package/src/services/cache/page-cache-service.ts +0 -202
  431. package/src/services/cache/page-request-cache-coordinator.service.ts +0 -131
  432. package/src/services/html/html-rewriter-provider.service.ts +0 -103
  433. package/src/services/html/html-transformer.service.ts +0 -279
  434. package/src/services/invalidation/development-invalidation.service.ts +0 -261
  435. package/src/services/module-loading/app-server-module-transpiler.service.ts +0 -52
  436. package/src/services/module-loading/page-module-import.service.ts +0 -200
  437. package/src/services/module-loading/server-loader.service.d.ts +0 -96
  438. package/src/services/module-loading/server-loader.service.js +0 -32
  439. package/src/services/module-loading/server-loader.service.ts +0 -130
  440. package/src/services/module-loading/server-module-transpiler.service.ts +0 -105
  441. package/src/services/runtime-manifest/node-runtime-manifest.service.d.ts +0 -35
  442. package/src/services/runtime-manifest/node-runtime-manifest.service.js +0 -60
  443. package/src/services/runtime-manifest/node-runtime-manifest.service.ts +0 -101
  444. package/src/services/runtime-state/dev-graph.service.ts +0 -217
  445. package/src/services/runtime-state/entrypoint-dependency-graph.service.ts +0 -136
  446. package/src/services/runtime-state/runtime-specifier-registry.service.d.ts +0 -69
  447. package/src/services/runtime-state/runtime-specifier-registry.service.js +0 -37
  448. package/src/services/runtime-state/runtime-specifier-registry.service.ts +0 -96
  449. package/src/services/runtime-state/server-invalidation-state.service.ts +0 -68
  450. package/src/services/validation/schema-validation-service.ts +0 -204
  451. package/src/services/validation/standard-schema.types.ts +0 -68
  452. package/src/static-site-generator/static-site-generator.ts +0 -462
  453. package/src/utils/css.d.ts +0 -1
  454. package/src/utils/css.js +0 -7
  455. package/src/utils/css.ts +0 -5
  456. package/src/utils/deep-merge.ts +0 -47
  457. package/src/utils/hash.ts +0 -5
  458. package/src/utils/html.ts +0 -1
  459. package/src/utils/invariant.ts +0 -15
  460. package/src/utils/locals-utils.ts +0 -37
  461. package/src/utils/parse-cli-args.ts +0 -83
  462. package/src/utils/path-utils.module.ts +0 -14
  463. package/src/utils/resolve-work-dir.ts +0 -45
  464. package/src/utils/runtime.ts +0 -44
  465. package/src/utils/server-utils.module.ts +0 -67
  466. package/src/watchers/project-watcher.test-helpers.ts +0 -41
  467. package/src/watchers/project-watcher.ts +0 -363
  468. /package/src/{internal-types.js → adapters/shared/runtime-host.js} +0 -0
  469. /package/src/{public-types.js → adapters/shared/static-preview-host.js} +0 -0
  470. /package/src/{constants.d.ts → config/constants.d.ts} +0 -0
  471. /package/src/{constants.js → config/constants.js} +0 -0
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Bundler-backed build adapter.
3
+ *
4
+ * @remarks
5
+ * Implements {@link BuildAdapter} on top of Rolldown. This is the
6
+ * default adapter installed by `ConfigBuilder` and the adapter that
7
+ * issues real builds in production.
8
+ *
9
+ * Each `build()` creates a fresh `rolldown()` bundler, so there is no
10
+ * module-graph reuse across calls. For HMR/watch mode where the same
11
+ * entrypoints are rebuilt repeatedly, see {@link RolldownDevBuildAdapter}.
12
+ */
13
+ import type { BuildAdapter, BuildOptions, BuildResult, BuildTranspileOptions, BuildTranspileProfile } from './build-adapter.js';
14
+ export declare class RolldownBuildAdapter implements BuildAdapter {
15
+ readonly ownership: "rolldown";
16
+ /** Per-adapter require cache, keyed on resolved context root. */
17
+ private readonly appRootRequireCache;
18
+ /**
19
+ * Issues one build. Creates a fresh `rolldown()` bundler per call,
20
+ * so no module-graph reuse. For repeated rebuilds on the same
21
+ * entrypoints, use {@link RolldownDevBuildAdapter}.
22
+ */
23
+ buildOrThrow(options: BuildOptions): Promise<BuildResult>;
24
+ build(options: BuildOptions): Promise<BuildResult>;
25
+ resolve(importPath: string, rootDir: string): string;
26
+ getTranspileOptions(profile: BuildTranspileProfile): BuildTranspileOptions;
27
+ }
28
+ export declare function createRolldownBuildAdapter(): BuildAdapter;
@@ -0,0 +1,65 @@
1
+ import { createRequire } from "node:module";
2
+ import path from "node:path";
3
+ import { rolldown } from "rolldown";
4
+ import {
5
+ buildResultFromRolldownOutput,
6
+ resolveRolldownOptions,
7
+ rewriteBrowserRuntimeImportsInOutputs,
8
+ rewriteNodeRuntimeImportsInOutputs,
9
+ toBuildLogs,
10
+ transpileProfileToOptions
11
+ } from "./rolldown-adapter-helpers.js";
12
+ const moduleRequire = createRequire(import.meta.url);
13
+ class RolldownBuildAdapter {
14
+ ownership = "rolldown";
15
+ /** Per-adapter require cache, keyed on resolved context root. */
16
+ appRootRequireCache = /* @__PURE__ */ new Map();
17
+ /**
18
+ * Issues one build. Creates a fresh `rolldown()` bundler per call,
19
+ * so no module-graph reuse. For repeated rebuilds on the same
20
+ * entrypoints, use {@link RolldownDevBuildAdapter}.
21
+ */
22
+ async buildOrThrow(options) {
23
+ const contextRoot = options.root ? path.resolve(options.root) : process.cwd();
24
+ const outdir = path.resolve(options.outdir ?? "dist/assets");
25
+ const plugins = options.plugins ?? [];
26
+ const { inputOptions, outputOptions } = resolveRolldownOptions(
27
+ options,
28
+ contextRoot,
29
+ outdir,
30
+ this.appRootRequireCache
31
+ );
32
+ const bundle = await rolldown(inputOptions);
33
+ const output = await bundle.write(outputOptions);
34
+ await bundle.close();
35
+ const baseResult = buildResultFromRolldownOutput(output, outdir, contextRoot);
36
+ return rewriteNodeRuntimeImportsInOutputs(
37
+ rewriteBrowserRuntimeImportsInOutputs(baseResult, contextRoot, plugins),
38
+ contextRoot
39
+ );
40
+ }
41
+ async build(options) {
42
+ try {
43
+ return await this.buildOrThrow(options);
44
+ } catch (error) {
45
+ return {
46
+ success: false,
47
+ logs: toBuildLogs(error),
48
+ outputs: []
49
+ };
50
+ }
51
+ }
52
+ resolve(importPath, rootDir) {
53
+ return moduleRequire.resolve(importPath, { paths: [rootDir] });
54
+ }
55
+ getTranspileOptions(profile) {
56
+ return transpileProfileToOptions(profile);
57
+ }
58
+ }
59
+ function createRolldownBuildAdapter() {
60
+ return new RolldownBuildAdapter();
61
+ }
62
+ export {
63
+ RolldownBuildAdapter,
64
+ createRolldownBuildAdapter
65
+ };
@@ -0,0 +1,82 @@
1
+ /**
2
+ * DevEngine-backed build adapter for cached incremental rebuilds.
3
+ *
4
+ * @remarks
5
+ * Wraps Rolldown's experimental `DevEngine` to provide cached incremental
6
+ * rebuilds. Unlike the standard `RolldownBuildAdapter` which creates a new
7
+ * bundler for every build, this adapter keeps a `DevEngine` instance alive
8
+ * and reuses the internal module graph, resolver cache, and transform cache
9
+ * across builds.
10
+ *
11
+ * The adapter is designed for the HMR rebuild path where the same entrypoints
12
+ * are rebuilt repeatedly with small changes. For one-off production builds,
13
+ * use `RolldownBuildAdapter` instead.
14
+ *
15
+ * The first build creates the engine and runs it. Subsequent builds with the
16
+ * same plugin/target/format triple reuse the cached engine and call
17
+ * `triggerFullBuild()`. The cache key incorporates the context root, plugin
18
+ * names, target, and format; when any of those change, the cached engine is
19
+ * closed and a new one is created.
20
+ *
21
+ * Call `close()` to release the cached engine and free resources.
22
+ *
23
+ * @module
24
+ */
25
+ import type { BuildAdapter, BuildOptions, BuildResult, BuildTranspileOptions, BuildTranspileProfile } from './build-adapter.js';
26
+ /**
27
+ * Build adapter backed by Rolldown's DevEngine for cached incremental rebuilds.
28
+ */
29
+ export declare class RolldownDevBuildAdapter implements BuildAdapter {
30
+ /**
31
+ * `'rolldown-dev'` (not `'rolldown'`) so {@link getBuildAdapterOwnership}
32
+ * round-trips correctly and `createBuildAdapter({ ownership })` can
33
+ * re-select this class.
34
+ */
35
+ readonly ownership: "rolldown-dev";
36
+ private cachedEngine;
37
+ private engineInstanceCount;
38
+ private readonly pendingBuilds;
39
+ private readonly appRootRequireCache;
40
+ /**
41
+ * Stable key over the inputs that affect the engine configuration.
42
+ * Plugin order is intentionally not part of the key: two plugin
43
+ * sets with the same names are interchangeable for caching.
44
+ */
45
+ private getCacheKey;
46
+ /**
47
+ * Returns the cached engine, creating a new one when the cache
48
+ * key changes. On a cache miss the prior engine is closed and
49
+ * {@link engineInstanceCount} is incremented.
50
+ */
51
+ private getOrCreateEngine;
52
+ /**
53
+ * Triggers a build on the cached engine and returns the next
54
+ * `RolldownOutput` delivered to `onOutput`.
55
+ *
56
+ * First call after engine creation invokes `engine.run`; subsequent
57
+ * calls invoke `engine.triggerFullBuild` and reuse the cached
58
+ * module graph, resolver, and transform caches.
59
+ *
60
+ * If the trigger itself throws, the queued build is removed so
61
+ * the next `build()` does not consume a stale slot.
62
+ */
63
+ private runBuild;
64
+ /** Throws on error; see {@link build} for the no-throw variant. */
65
+ buildOrThrow(options: BuildOptions): Promise<BuildResult>;
66
+ build(options: BuildOptions): Promise<BuildResult>;
67
+ resolve(importPath: string, rootDir: string): string;
68
+ getTranspileOptions(profile: BuildTranspileProfile): BuildTranspileOptions;
69
+ /**
70
+ * Closes the cached DevEngine and rejects any in-flight builds
71
+ * with `'DevBuildAdapter closed'`.
72
+ *
73
+ * @remarks
74
+ * Not on the {@link BuildAdapter} interface, so it is only
75
+ * reachable through the concrete class. The adapter is meant to
76
+ * live for the process lifetime; this is for explicit teardown.
77
+ */
78
+ close(): Promise<void>;
79
+ /** Test-only: number of engines created over the adapter's lifetime. */
80
+ getEngineInstanceCountForTests(): number;
81
+ }
82
+ export declare function createRolldownDevBuildAdapter(): RolldownDevBuildAdapter;
@@ -0,0 +1,166 @@
1
+ import { createRequire } from "node:module";
2
+ import path from "node:path";
3
+ import { dev } from "rolldown/experimental";
4
+ import {
5
+ buildResultFromRolldownOutput,
6
+ resolveRolldownOptions,
7
+ rewriteBrowserRuntimeImportsInOutputs,
8
+ toBuildLogs,
9
+ transpileProfileToOptions
10
+ } from "./rolldown-adapter-helpers.js";
11
+ const moduleRequire = createRequire(import.meta.url);
12
+ class RolldownDevBuildAdapter {
13
+ /**
14
+ * `'rolldown-dev'` (not `'rolldown'`) so {@link getBuildAdapterOwnership}
15
+ * round-trips correctly and `createBuildAdapter({ ownership })` can
16
+ * re-select this class.
17
+ */
18
+ ownership = "rolldown-dev";
19
+ cachedEngine;
20
+ engineInstanceCount = 0;
21
+ pendingBuilds = [];
22
+ appRootRequireCache = /* @__PURE__ */ new Map();
23
+ /**
24
+ * Stable key over the inputs that affect the engine configuration.
25
+ * Plugin order is intentionally not part of the key: two plugin
26
+ * sets with the same names are interchangeable for caching.
27
+ */
28
+ getCacheKey(plugins, contextRoot, target, format) {
29
+ const pluginNames = plugins.map((p) => p.name).join(":");
30
+ return `${contextRoot}::${pluginNames}::${target ?? "default"}::${format ?? "esm"}`;
31
+ }
32
+ /**
33
+ * Returns the cached engine, creating a new one when the cache
34
+ * key changes. On a cache miss the prior engine is closed and
35
+ * {@link engineInstanceCount} is incremented.
36
+ */
37
+ async getOrCreateEngine(options, contextRoot) {
38
+ const bundlePlugins = options.plugins ?? [];
39
+ const cacheKey = this.getCacheKey(bundlePlugins, contextRoot, options.target, options.format);
40
+ if (this.cachedEngine) {
41
+ const existingKey = this.getCacheKey(
42
+ this.cachedEngine.bundlePlugins,
43
+ this.cachedEngine.contextRoot,
44
+ options.target,
45
+ options.format
46
+ );
47
+ if (existingKey === cacheKey) {
48
+ return this.cachedEngine;
49
+ }
50
+ await this.cachedEngine.engine.close();
51
+ this.cachedEngine = void 0;
52
+ }
53
+ const outdir = path.resolve(options.outdir ?? "dist/assets");
54
+ const { inputOptions, outputOptions } = resolveRolldownOptions(
55
+ options,
56
+ contextRoot,
57
+ outdir,
58
+ this.appRootRequireCache
59
+ );
60
+ const engine = await dev(inputOptions, outputOptions, {
61
+ rebuildStrategy: "never",
62
+ onOutput: (result) => {
63
+ if (result instanceof Error) {
64
+ return;
65
+ }
66
+ const next = this.pendingBuilds.shift();
67
+ if (next) {
68
+ next.resolve(result);
69
+ }
70
+ }
71
+ });
72
+ this.cachedEngine = {
73
+ engine,
74
+ engineStarted: false,
75
+ contextRoot,
76
+ bundlePlugins
77
+ };
78
+ this.engineInstanceCount += 1;
79
+ return this.cachedEngine;
80
+ }
81
+ /**
82
+ * Triggers a build on the cached engine and returns the next
83
+ * `RolldownOutput` delivered to `onOutput`.
84
+ *
85
+ * First call after engine creation invokes `engine.run`; subsequent
86
+ * calls invoke `engine.triggerFullBuild` and reuse the cached
87
+ * module graph, resolver, and transform caches.
88
+ *
89
+ * If the trigger itself throws, the queued build is removed so
90
+ * the next `build()` does not consume a stale slot.
91
+ */
92
+ async runBuild(cached) {
93
+ const outputPromise = new Promise((resolve, reject) => {
94
+ this.pendingBuilds.push({ resolve, reject });
95
+ });
96
+ try {
97
+ if (!cached.engineStarted) {
98
+ cached.engineStarted = true;
99
+ await cached.engine.run();
100
+ } else {
101
+ cached.engine.triggerFullBuild();
102
+ }
103
+ } catch (error) {
104
+ this.pendingBuilds.shift();
105
+ throw error;
106
+ }
107
+ return outputPromise;
108
+ }
109
+ /** Throws on error; see {@link build} for the no-throw variant. */
110
+ async buildOrThrow(options) {
111
+ const contextRoot = options.root ? path.resolve(options.root) : process.cwd();
112
+ const outdir = path.resolve(options.outdir ?? "dist/assets");
113
+ const plugins = options.plugins ?? [];
114
+ const cached = await this.getOrCreateEngine(options, contextRoot);
115
+ const output = await this.runBuild(cached);
116
+ const baseResult = buildResultFromRolldownOutput(output, outdir, contextRoot);
117
+ return rewriteBrowserRuntimeImportsInOutputs(baseResult, contextRoot, plugins);
118
+ }
119
+ async build(options) {
120
+ try {
121
+ return await this.buildOrThrow(options);
122
+ } catch (error) {
123
+ return {
124
+ success: false,
125
+ logs: toBuildLogs(error),
126
+ outputs: []
127
+ };
128
+ }
129
+ }
130
+ resolve(importPath, rootDir) {
131
+ return moduleRequire.resolve(importPath, { paths: [rootDir] });
132
+ }
133
+ getTranspileOptions(profile) {
134
+ return transpileProfileToOptions(profile);
135
+ }
136
+ /**
137
+ * Closes the cached DevEngine and rejects any in-flight builds
138
+ * with `'DevBuildAdapter closed'`.
139
+ *
140
+ * @remarks
141
+ * Not on the {@link BuildAdapter} interface, so it is only
142
+ * reachable through the concrete class. The adapter is meant to
143
+ * live for the process lifetime; this is for explicit teardown.
144
+ */
145
+ async close() {
146
+ if (this.cachedEngine) {
147
+ await this.cachedEngine.engine.close();
148
+ this.cachedEngine = void 0;
149
+ }
150
+ while (this.pendingBuilds.length > 0) {
151
+ const pending = this.pendingBuilds.shift();
152
+ pending?.reject(new Error("DevBuildAdapter closed"));
153
+ }
154
+ }
155
+ /** Test-only: number of engines created over the adapter's lifetime. */
156
+ getEngineInstanceCountForTests() {
157
+ return this.engineInstanceCount;
158
+ }
159
+ }
160
+ function createRolldownDevBuildAdapter() {
161
+ return new RolldownDevBuildAdapter();
162
+ }
163
+ export {
164
+ RolldownDevBuildAdapter,
165
+ createRolldownDevBuildAdapter
166
+ };
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Bundler plugin bridge.
3
+ *
4
+ * @remarks
5
+ * Translates an array of `EcoBuildPlugin` instances (the runtime-agnostic
6
+ * plugin contract used by Ecopages processors and integrations) into
7
+ * the bundler's native `Plugin` array. The bridge exposes the same
8
+ * three hooks (`onResolve`, `onLoad`, `module`) the `EcoBuildPlugin`
9
+ * contract uses, but maps them to the bundler's `resolveId`/`load`
10
+ * hooks.
11
+ *
12
+ * The shared `EcoBuildPlugin` contract stays the boundary between
13
+ * integrations and bundler backends.
14
+ *
15
+ * **Namespace handling.**
16
+ *
17
+ * The shared `EcoBuildPlugin` contract scopes `onResolve`/`onLoad`
18
+ * handlers with a `namespace` string. The bundler encodes namespaces
19
+ * into the module id (no separate field). The bridge prepends
20
+ * `<namespace>:` to the resolved id when the result includes a
21
+ * namespace, and matches `onLoad`/`onResolve` filters against that
22
+ * prefix. The bridge strips the prefix before forwarding the id back
23
+ * to the callback so plugin code keeps seeing the same `path` shape
24
+ * it did on the historical contract.
25
+ *
26
+ * **Plugin ordering is semantically significant.**
27
+ *
28
+ * The bundler's `resolveId` and `load` are "first" hooks: the first
29
+ * plugin that returns a non-null value wins. Because the bridge
30
+ * translates each `EcoBuildPlugin` into its own bundler plugin and
31
+ * preserves the array order, the position of each plugin in the
32
+ * `plugins` array determines its priority:
33
+ *
34
+ * - **Index 0** has the highest priority.
35
+ * - **Last index** has the lowest priority.
36
+ *
37
+ * When adding new integrations or processors, ensure security-critical
38
+ * plugins (e.g. `ecopages-client-graph-boundary`) are placed **before**
39
+ * general-purpose loaders in the array so they always get first refusal
40
+ * on every source file.
41
+ */
42
+ import type { Plugin } from 'rolldown';
43
+ import type { EcoBuildPlugin } from './build-types.js';
44
+ /**
45
+ * Creates a Rolldown `Plugin` array that drives the supplied
46
+ * `EcoBuildPlugin` instances.
47
+ *
48
+ * All eco plugins are merged into a single Rolldown plugin to minimize
49
+ * Rust→JS FFI overhead. Rolldown calls every hook for every module when
50
+ * there is no static filter, so N separate plugins would cause N
51
+ * `resolveId` + N `load` calls per module. Consolidating into one
52
+ * plugin reduces that to 1 call each, with JavaScript-side filtering
53
+ * routing to the correct eco plugin callback.
54
+ *
55
+ * Plugin ordering is preserved: registrations from earlier eco plugins
56
+ * are checked before registrations from later ones, matching the
57
+ * original per-plugin priority semantics.
58
+ */
59
+ export declare function createRolldownPluginBridge(plugins: EcoBuildPlugin[], contextRoot: string): Plugin[];
@@ -0,0 +1,199 @@
1
+ import path from "node:path";
2
+ import { escapeRegExp } from "./browser-runtime-plugin-helpers.js";
3
+ const NAMESPACE_SEPARATOR = ":";
4
+ function joinNamespace(namespace, value) {
5
+ return namespace ? `${namespace}${NAMESPACE_SEPARATOR}${value}` : value;
6
+ }
7
+ function splitNamespace(id) {
8
+ const separatorIndex = id.indexOf(NAMESPACE_SEPARATOR);
9
+ if (separatorIndex <= 0) {
10
+ return { namespace: void 0, path: id };
11
+ }
12
+ return {
13
+ namespace: id.slice(0, separatorIndex),
14
+ path: id.slice(separatorIndex + 1)
15
+ };
16
+ }
17
+ function inferRolldownModuleTypeFromPath(filePath) {
18
+ const extension = path.extname(filePath).toLowerCase();
19
+ switch (extension) {
20
+ case ".ts":
21
+ return "ts";
22
+ case ".tsx":
23
+ return "tsx";
24
+ case ".jsx":
25
+ return "jsx";
26
+ case ".json":
27
+ return "json";
28
+ case ".css":
29
+ return "css";
30
+ default:
31
+ return "js";
32
+ }
33
+ }
34
+ function normalizeRolldownModuleType(loader) {
35
+ switch (loader) {
36
+ case "js":
37
+ case "jsx":
38
+ case "ts":
39
+ case "tsx":
40
+ case "json":
41
+ case "css":
42
+ case "text":
43
+ case "base64":
44
+ case "dataurl":
45
+ case "binary":
46
+ case "empty":
47
+ return loader;
48
+ case "global-css":
49
+ case "local-css":
50
+ return "css";
51
+ case "file":
52
+ case "copy":
53
+ return "asset";
54
+ default:
55
+ return void 0;
56
+ }
57
+ }
58
+ function convertLoadResultToModuleSource(result) {
59
+ if (result.loader === "object" && result.exports && typeof result.exports === "object") {
60
+ return Object.entries(result.exports).map(
61
+ ([key, value]) => key === "default" ? `export default ${JSON.stringify(value)};` : `export const ${key} = ${JSON.stringify(value)};`
62
+ ).join("\n");
63
+ }
64
+ return void 0;
65
+ }
66
+ function buildIdFilter(filter, namespace) {
67
+ if (!namespace) {
68
+ return filter;
69
+ }
70
+ return new RegExp(`^${escapeRegExp(namespace)}${NAMESPACE_SEPARATOR}${filter.source.slice(1)}`);
71
+ }
72
+ function resolvePluginPath(value, importer, contextRoot) {
73
+ if (path.isAbsolute(value)) {
74
+ return value;
75
+ }
76
+ if (value.startsWith(".") || value.startsWith("..")) {
77
+ const baseDir = importer ? path.dirname(importer) : contextRoot;
78
+ return path.resolve(baseDir, value);
79
+ }
80
+ return value;
81
+ }
82
+ function convertPluginOnLoadResult(args, result) {
83
+ if (!result || typeof result !== "object") {
84
+ return void 0;
85
+ }
86
+ const candidate = result;
87
+ const { path: sourcePath } = splitNamespace(args.id);
88
+ const sourceFromExports = convertLoadResultToModuleSource(candidate);
89
+ if (sourceFromExports) {
90
+ const description = {
91
+ code: sourceFromExports,
92
+ moduleType: "js"
93
+ };
94
+ return description;
95
+ }
96
+ if (typeof candidate.contents === "string" || candidate.contents instanceof Uint8Array) {
97
+ const code = typeof candidate.contents === "string" ? candidate.contents : new TextDecoder().decode(candidate.contents);
98
+ const description = {
99
+ code,
100
+ moduleType: normalizeRolldownModuleType(candidate.loader) ?? inferRolldownModuleTypeFromPath(sourcePath)
101
+ };
102
+ return description;
103
+ }
104
+ return void 0;
105
+ }
106
+ function convertPluginOnResolveResult(result, importer, contextRoot) {
107
+ if (!result || typeof result !== "object") {
108
+ return void 0;
109
+ }
110
+ const candidate = result;
111
+ if (typeof candidate.path !== "string" && typeof candidate.namespace !== "string") {
112
+ if (typeof candidate.external !== "boolean") {
113
+ return void 0;
114
+ }
115
+ }
116
+ const partial = { id: "" };
117
+ if (typeof candidate.path === "string") {
118
+ partial.id = joinNamespace(candidate.namespace, resolvePluginPath(candidate.path, importer, contextRoot));
119
+ } else if (typeof candidate.namespace === "string") {
120
+ partial.id = joinNamespace(candidate.namespace, "");
121
+ }
122
+ if (typeof candidate.external === "boolean") {
123
+ partial.external = candidate.external;
124
+ }
125
+ return partial;
126
+ }
127
+ function createRolldownPluginBridge(plugins, contextRoot) {
128
+ if (plugins.length === 0) {
129
+ return [];
130
+ }
131
+ const moduleCounter = { value: 0 };
132
+ const resolveRegistrations = [];
133
+ const loadRegistrations = [];
134
+ const registerResolve = (filter, callback) => {
135
+ resolveRegistrations.push({ filter, callback });
136
+ };
137
+ const registerLoad = (filter, callback) => {
138
+ loadRegistrations.push({ filter, callback });
139
+ };
140
+ const resolveIdHandler = async (source, importer, _extraOptions) => {
141
+ for (const { filter, callback } of resolveRegistrations) {
142
+ if (!filter.test(source)) {
143
+ continue;
144
+ }
145
+ const { namespace, path: sourcePath } = splitNamespace(source);
146
+ const result = await callback({ path: sourcePath, importer, namespace });
147
+ const converted = convertPluginOnResolveResult(result, importer, contextRoot);
148
+ if (converted !== void 0) {
149
+ return converted;
150
+ }
151
+ }
152
+ return void 0;
153
+ };
154
+ const loadHandler = async (id) => {
155
+ for (const { filter, callback } of loadRegistrations) {
156
+ if (!filter.test(id)) {
157
+ continue;
158
+ }
159
+ const { namespace, path: sourcePath } = splitNamespace(id);
160
+ const result = await callback({ path: sourcePath, namespace });
161
+ const converted = convertPluginOnLoadResult({ id }, result);
162
+ if (converted !== void 0) {
163
+ return converted;
164
+ }
165
+ }
166
+ return void 0;
167
+ };
168
+ const plugin = {
169
+ name: "ecopages-plugin-bridge",
170
+ buildStart: async () => {
171
+ for (const ecoPlugin of plugins) {
172
+ const bridge = {
173
+ onResolve: (options, callback) => {
174
+ registerResolve(buildIdFilter(options.filter, options.namespace), callback);
175
+ },
176
+ onLoad: (options, callback) => {
177
+ registerLoad(buildIdFilter(options.filter, options.namespace), callback);
178
+ },
179
+ module: (specifier, callback) => {
180
+ const namespace = `ecopages-module-${moduleCounter.value}`;
181
+ moduleCounter.value += 1;
182
+ const filter = new RegExp(`^${escapeRegExp(specifier)}$`);
183
+ registerResolve(filter, async () => ({
184
+ path: joinNamespace(namespace, specifier)
185
+ }));
186
+ registerLoad(buildIdFilter(/.*/, namespace), async () => callback());
187
+ }
188
+ };
189
+ await ecoPlugin.setup(bridge);
190
+ }
191
+ },
192
+ resolveId: resolveIdHandler,
193
+ load: loadHandler
194
+ };
195
+ return [plugin];
196
+ }
197
+ export {
198
+ createRolldownPluginBridge
199
+ };
@@ -1,13 +1,21 @@
1
- import type { EcoPagesAppConfig } from '../internal-types.js';
1
+ import type { EcoPagesAppConfig } from '../types/internal-types.js';
2
2
  import { type BuildExecutor } from './build-adapter.js';
3
3
  /**
4
4
  * Installs the app-owned runtime build executor for one app instance.
5
5
  *
6
6
  * @remarks
7
- * This is the single coordinator boundary for runtime executor ownership across
8
- * adapters. It preserves an existing development coordinator when available and
9
- * always applies app server build plugins through one shared path.
7
+ * Wraps the app-owned adapter in a {@link SerializedBuildExecutor} so
8
+ * every dev-watch caller issues builds against a single FIFO queue.
9
+ * Plugin injection is applied here via {@link withBuildExecutorPlugins}
10
+ * so app-owned plugins are merged into every rebuild without callers
11
+ * having to know about the manifest.
12
+ *
13
+ * Idempotent across calls: re-invoking replaces the existing executor
14
+ * on `appConfig.runtime` with a fresh wrapper.
15
+ *
16
+ * @param appConfig - The app config whose runtime state is updated.
17
+ * The function reads the existing executor (falling back to the
18
+ * app-owned adapter) and writes the wrapped executor back.
19
+ * @returns The installed {@link BuildExecutor}.
10
20
  */
11
- export declare function installAppRuntimeBuildExecutor(appConfig: EcoPagesAppConfig, options: {
12
- development: boolean;
13
- }): BuildExecutor;
21
+ export declare function installAppRuntimeBuildExecutor(appConfig: EcoPagesAppConfig): BuildExecutor;
@@ -2,16 +2,15 @@ import {
2
2
  getAppBuildAdapter,
3
3
  getAppBuildExecutor,
4
4
  getAppServerBuildPlugins,
5
- setAppBuildExecutor
5
+ setAppBuildExecutor,
6
+ withBuildExecutorPlugins
6
7
  } from "./build-adapter.js";
7
- import { createOrReuseAppBuildExecutor } from "./dev-build-coordinator.js";
8
- function installAppRuntimeBuildExecutor(appConfig, options) {
9
- const buildExecutor = createOrReuseAppBuildExecutor({
10
- development: options.development,
11
- adapter: getAppBuildAdapter(appConfig),
12
- currentExecutor: getAppBuildExecutor(appConfig),
13
- getPlugins: () => getAppServerBuildPlugins(appConfig)
14
- });
8
+ import { SerializedBuildExecutor } from "./serialized-build-executor.js";
9
+ function installAppRuntimeBuildExecutor(appConfig) {
10
+ const baseExecutor = getAppBuildExecutor(appConfig) ?? getAppBuildAdapter(appConfig);
11
+ const buildExecutor = new SerializedBuildExecutor(
12
+ withBuildExecutorPlugins(baseExecutor, () => getAppServerBuildPlugins(appConfig))
13
+ );
15
14
  setAppBuildExecutor(appConfig, buildExecutor);
16
15
  return buildExecutor;
17
16
  }
@@ -0,0 +1,3 @@
1
+ export declare function isDeclaredAppPackageImport(specifier: string, rootDir: string): boolean;
2
+ export declare function normalizeNodeRuntimeBuildOutputFile(filePath: string, rootDir: string): void;
3
+ export declare function normalizeNodeRuntimeBuildOutputs(outputPaths: string[], rootDir: string): void;