@ecopages/core 0.2.0-beta.9 → 0.2.0-rc.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 (624) hide show
  1. package/README.md +42 -13
  2. package/package.json +360 -57
  3. package/src/adapters/README.md +6 -2
  4. package/src/adapters/abstract/application-adapter.d.ts +57 -5
  5. package/src/adapters/abstract/application-adapter.js +261 -203
  6. package/src/adapters/abstract/router-adapter.js +12 -4
  7. package/src/adapters/abstract/segment-path-matcher.d.ts +6 -0
  8. package/src/adapters/abstract/segment-path-matcher.js +147 -0
  9. package/src/adapters/abstract/server-adapter.d.ts +13 -2
  10. package/src/adapters/abstract/server-adapter.js +22 -14
  11. package/src/adapters/abstract/ws-pattern-matcher.d.ts +2 -50
  12. package/src/adapters/abstract/ws-pattern-matcher.js +24 -57
  13. package/src/adapters/bun/bun-user-websocket-lifecycle.js +93 -0
  14. package/src/adapters/bun/client-bridge.js +51 -50
  15. package/src/adapters/bun/create-app.d.ts +4 -6
  16. package/src/adapters/bun/create-app.js +169 -154
  17. package/src/adapters/bun/hmr-manager.d.ts +2 -3
  18. package/src/adapters/bun/hmr-manager.js +62 -57
  19. package/src/adapters/bun/index.d.ts +1 -1
  20. package/src/adapters/bun/index.js +2 -8
  21. package/src/adapters/bun/runtime-host.d.ts +1 -1
  22. package/src/adapters/bun/runtime-host.js +61 -54
  23. package/src/adapters/bun/server-adapter.d.ts +34 -53
  24. package/src/adapters/bun/server-adapter.js +557 -637
  25. package/src/adapters/bun/static-preview-host.d.ts +1 -1
  26. package/src/adapters/bun/static-preview-host.js +43 -41
  27. package/src/adapters/create-app.d.ts +1 -12
  28. package/src/adapters/create-app.js +11 -72
  29. package/src/adapters/index.d.ts +2 -2
  30. package/src/adapters/index.js +2 -8
  31. package/src/adapters/node/create-app.d.ts +4 -3
  32. package/src/adapters/node/create-app.js +123 -98
  33. package/src/adapters/node/http-request-bridge.js +147 -106
  34. package/src/adapters/node/node-client-bridge.js +62 -64
  35. package/src/adapters/node/node-hmr-manager.d.ts +2 -3
  36. package/src/adapters/node/node-hmr-manager.js +58 -48
  37. package/src/adapters/node/runtime-host.d.ts +1 -1
  38. package/src/adapters/node/runtime-host.js +96 -89
  39. package/src/adapters/node/server-adapter-dependencies.js +18 -17
  40. package/src/adapters/node/server-adapter.d.ts +28 -8
  41. package/src/adapters/node/server-adapter.js +349 -302
  42. package/src/adapters/node/static-content-server.js +172 -186
  43. package/src/adapters/node/static-preview-host.d.ts +1 -1
  44. package/src/adapters/node/static-preview-host.js +88 -64
  45. package/src/adapters/shared/hmr/dev-transform-entrypoint-registry.d.ts +16 -0
  46. package/src/adapters/shared/hmr/dev-transform-entrypoint-registry.js +32 -0
  47. package/src/adapters/shared/{hmr-html-response.d.ts → hmr/hmr-html-response.d.ts} +2 -2
  48. package/src/adapters/shared/hmr/hmr-html-response.js +50 -0
  49. package/src/adapters/shared/hmr/shared-hmr-manager.d.ts +92 -0
  50. package/src/adapters/shared/hmr/shared-hmr-manager.js +446 -0
  51. package/src/adapters/shared/http/api-request-pipeline.d.ts +23 -0
  52. package/src/adapters/shared/http/api-request-pipeline.js +132 -0
  53. package/src/adapters/shared/{api-response.d.ts → http/api-response.d.ts} +1 -1
  54. package/src/adapters/shared/http/api-response.js +79 -0
  55. package/src/adapters/shared/http/create-body-response.d.ts +12 -0
  56. package/src/adapters/shared/http/create-body-response.js +26 -0
  57. package/src/adapters/shared/http/define-api-handler.d.ts +90 -0
  58. package/src/adapters/shared/http/define-api-handler.js +49 -0
  59. package/src/adapters/shared/{explicit-static-render-preparation.d.ts → http/explicit-static-render-preparation.d.ts} +3 -3
  60. package/src/adapters/shared/http/explicit-static-render-preparation.js +29 -0
  61. package/src/adapters/shared/{explicit-static-route-matcher.d.ts → http/explicit-static-route-matcher.d.ts} +3 -9
  62. package/src/adapters/shared/http/explicit-static-route-matcher.js +59 -0
  63. package/src/adapters/shared/{file-route-middleware-pipeline.d.ts → http/file-route-middleware-pipeline.d.ts} +2 -2
  64. package/src/adapters/shared/http/file-route-middleware-pipeline.js +84 -0
  65. package/src/adapters/shared/{fs-server-response-factory.d.ts → http/fs-server-response-factory.d.ts} +7 -2
  66. package/src/adapters/shared/http/fs-server-response-factory.js +106 -0
  67. package/src/adapters/shared/{fs-server-response-matcher.d.ts → http/fs-server-response-matcher.d.ts} +25 -5
  68. package/src/adapters/shared/http/fs-server-response-matcher.js +260 -0
  69. package/src/adapters/shared/http/run-middleware-chain.d.ts +5 -0
  70. package/src/adapters/shared/http/run-middleware-chain.js +17 -0
  71. package/src/adapters/shared/{application-adapter.d.ts → runtime/application-adapter.d.ts} +2 -2
  72. package/src/adapters/shared/runtime/application-adapter.js +75 -0
  73. package/src/adapters/shared/runtime/collect-dev-prewarm-plan.d.ts +11 -0
  74. package/src/adapters/shared/runtime/collect-dev-prewarm-plan.js +29 -0
  75. package/src/adapters/shared/runtime/copy-runtime-public-dir.js +27 -0
  76. package/src/adapters/shared/runtime/dev-static-route-prewarm.d.ts +16 -0
  77. package/src/adapters/shared/runtime/dev-static-route-prewarm.js +66 -0
  78. package/src/adapters/shared/runtime/port-manager.d.ts +116 -0
  79. package/src/adapters/shared/runtime/port-manager.js +226 -0
  80. package/src/adapters/shared/{render-context.d.ts → runtime/render-context.d.ts} +2 -2
  81. package/src/adapters/shared/runtime/render-context.js +99 -0
  82. package/src/adapters/shared/{runtime-app-bootstrap.d.ts → runtime/runtime-app-bootstrap.d.ts} +4 -2
  83. package/src/adapters/shared/runtime/runtime-app-bootstrap.js +38 -0
  84. package/src/adapters/shared/runtime/runtime-server-lifecycle.d.ts +45 -0
  85. package/src/adapters/shared/runtime/runtime-server-lifecycle.js +71 -0
  86. package/src/adapters/shared/{server-adapter.d.ts → runtime/server-adapter.d.ts} +31 -50
  87. package/src/adapters/shared/runtime/server-adapter.js +301 -0
  88. package/src/adapters/shared/{server-route-handler.d.ts → runtime/server-route-handler.d.ts} +6 -33
  89. package/src/adapters/shared/runtime/server-route-handler.js +77 -0
  90. package/src/adapters/shared/{server-static-builder.d.ts → runtime/server-static-builder.d.ts} +26 -31
  91. package/src/adapters/shared/runtime/server-static-builder.js +172 -0
  92. package/src/adapters/shared/{static-preview-host.d.ts → runtime/static-preview-host.d.ts} +6 -1
  93. package/src/adapters/shared/{node-http-websocket-upgrades.d.ts → ws/node-http-websocket-upgrades.d.ts} +1 -1
  94. package/src/adapters/shared/ws/node-http-websocket-upgrades.js +109 -0
  95. package/src/adapters/shared/ws/websocket-lifecycle.d.ts +24 -0
  96. package/src/adapters/shared/ws/websocket-lifecycle.js +62 -0
  97. package/src/build/README.md +165 -45
  98. package/src/build/app-build-manifest-runtime.d.ts +39 -0
  99. package/src/build/app-build-manifest-runtime.js +145 -0
  100. package/src/build/{browser-runtime-manifest.d.ts → browser/browser-runtime-manifest.d.ts} +4 -0
  101. package/src/build/browser/browser-runtime-manifest.js +65 -0
  102. package/src/build/{browser-runtime-plugin-helpers.d.ts → browser/browser-runtime-plugin-helpers.d.ts} +3 -5
  103. package/src/build/browser/browser-runtime-plugin-helpers.js +32 -0
  104. package/src/build/{browser-runtime-plugin.d.ts → browser/browser-runtime-plugin.d.ts} +12 -13
  105. package/src/build/browser/browser-runtime-plugin.js +218 -0
  106. package/src/build/browser/jsx-ownership-plugins.d.ts +24 -0
  107. package/src/build/browser/jsx-ownership-plugins.js +55 -0
  108. package/src/build/browser/lit-static-render-worker-context.d.ts +2 -0
  109. package/src/build/browser/lit-static-render-worker-context.js +4 -0
  110. package/src/build/build-adapter.d.ts +25 -355
  111. package/src/build/build-adapter.js +258 -265
  112. package/src/build/{build-input-fingerprint.d.ts → cache/build-input-fingerprint.d.ts} +3 -3
  113. package/src/build/cache/build-input-fingerprint.js +33 -0
  114. package/src/build/cache/cache-constants.d.ts +4 -0
  115. package/src/build/cache/cache-constants.js +4 -0
  116. package/src/build/cache/cache-keys.d.ts +22 -0
  117. package/src/build/cache/cache-keys.js +71 -0
  118. package/src/build/{pages-unified-graph-build.d.ts → cache/pages-unified-graph-build.d.ts} +1 -1
  119. package/src/build/cache/pages-unified-graph-build.js +199 -0
  120. package/src/build/cache/production-build-cache.d.ts +21 -0
  121. package/src/build/cache/production-build-cache.js +56 -0
  122. package/src/build/{server-entry-build-cache.d.ts → cache/server-entry-build-cache.d.ts} +3 -4
  123. package/src/build/cache/server-entry-build-cache.js +153 -0
  124. package/src/build/contracts/build-contracts.d.ts +96 -0
  125. package/src/build/contracts/build-contracts.js +1 -0
  126. package/src/build/contracts/build-manifest.d.ts +90 -0
  127. package/src/build/contracts/build-manifest.js +64 -0
  128. package/src/build/contracts/build-types.js +1 -0
  129. package/src/build/contracts/content-virtual-modules.d.ts +12 -0
  130. package/src/build/contracts/content-virtual-modules.js +29 -0
  131. package/src/build/{rolldown-adapter-helpers.d.ts → rolldown/rolldown-adapter-helpers.d.ts} +32 -9
  132. package/src/build/rolldown/rolldown-adapter-helpers.js +463 -0
  133. package/src/build/{rolldown-build-adapter.d.ts → rolldown/rolldown-build-adapter.d.ts} +3 -7
  134. package/src/build/rolldown/rolldown-build-adapter.js +57 -0
  135. package/src/build/{rolldown-build-invocation-metrics.d.ts → rolldown/rolldown-build-invocation-metrics.d.ts} +1 -1
  136. package/src/build/rolldown/rolldown-build-invocation-metrics.js +39 -0
  137. package/src/build/{rolldown-plugin-bridge.d.ts → rolldown/rolldown-plugin-bridge.d.ts} +7 -2
  138. package/src/build/rolldown/rolldown-plugin-bridge.js +284 -0
  139. package/src/build/{rolldown-source-transform-pass.d.ts → rolldown/rolldown-source-transform-pass.d.ts} +1 -1
  140. package/src/build/rolldown/rolldown-source-transform-pass.js +70 -0
  141. package/src/build/rolldown/runtime-build-output-normalizer.js +253 -0
  142. package/src/build/rolldown/server-side-css-shim-plugin.js +58 -0
  143. package/src/build/runtime/build-profile-options.d.ts +7 -0
  144. package/src/build/runtime/build-profile-options.js +37 -0
  145. package/src/build/runtime/build-request-identity.d.ts +17 -0
  146. package/src/build/runtime/build-request-identity.js +79 -0
  147. package/src/build/runtime/build-request-policy.d.ts +58 -0
  148. package/src/build/runtime/build-request-policy.js +84 -0
  149. package/src/build/runtime/build-runtime.d.ts +28 -0
  150. package/src/build/runtime/build-runtime.js +75 -0
  151. package/src/build/runtime/deduping-build-executor.d.ts +21 -0
  152. package/src/build/runtime/deduping-build-executor.js +40 -0
  153. package/src/build/{parallel-build-executor.d.ts → runtime/parallel-build-executor.d.ts} +1 -1
  154. package/src/build/runtime/parallel-build-executor.js +60 -0
  155. package/src/build/{serialized-build-executor.d.ts → runtime/serialized-build-executor.d.ts} +1 -1
  156. package/src/build/runtime/serialized-build-executor.js +79 -0
  157. package/src/cache/index.d.ts +2 -1
  158. package/src/cache/index.js +7 -6
  159. package/src/cache/module-parse-cache.d.ts +5 -0
  160. package/src/cache/module-parse-cache.js +122 -67
  161. package/src/cache/module-transform-profiler.d.ts +8 -0
  162. package/src/cache/module-transform-profiler.js +8 -0
  163. package/src/client/navigation-scripts/classification.d.ts +16 -0
  164. package/src/client/navigation-scripts/classification.js +49 -0
  165. package/src/client/navigation-scripts/index.d.ts +3 -0
  166. package/src/client/navigation-scripts/index.js +3 -0
  167. package/src/client/navigation-scripts/navigation-scripts.test.browser.d.ts +1 -0
  168. package/src/client/navigation-scripts/navigation-scripts.test.browser.js +61 -0
  169. package/src/client/navigation-scripts/registry.d.ts +11 -0
  170. package/src/client/navigation-scripts/registry.js +16 -0
  171. package/src/client/navigation-scripts/rerun-queue.d.ts +37 -0
  172. package/src/client/navigation-scripts/rerun-queue.js +90 -0
  173. package/src/client/scroll.d.ts +17 -0
  174. package/src/client/scroll.js +33 -0
  175. package/src/client/scroll.test.browser.d.ts +1 -0
  176. package/src/client/scroll.test.browser.js +31 -0
  177. package/src/client/view-transitions.d.ts +32 -0
  178. package/src/client/view-transitions.js +120 -0
  179. package/src/client/view-transitions.test.browser.d.ts +1 -0
  180. package/src/client/view-transitions.test.browser.js +56 -0
  181. package/src/config/README.md +1 -1
  182. package/src/config/config-builder.d.ts +40 -20
  183. package/src/config/config-builder.js +645 -610
  184. package/src/config/constants.d.ts +1 -0
  185. package/src/config/constants.js +44 -23
  186. package/src/declarations.d.ts +1 -0
  187. package/src/dev/README.md +24 -0
  188. package/src/dev/client-bridge-registry.d.ts +5 -0
  189. package/src/dev/client-bridge-registry.js +10 -0
  190. package/src/dev/dev-client-ownership.d.ts +7 -0
  191. package/src/dev/dev-client-ownership.js +8 -0
  192. package/src/dev/hmr-manager-registry.d.ts +8 -0
  193. package/src/dev/hmr-manager-registry.js +10 -0
  194. package/src/dev/host-runtime.d.ts +3 -0
  195. package/src/dev/host-runtime.js +25 -23
  196. package/src/dev/runtime-server-started-message.d.ts +2 -0
  197. package/src/dev/runtime-server-started-message.js +3 -0
  198. package/src/dev/sc-server.js +106 -103
  199. package/src/dev/transform-server/dev-transform-bundler.d.ts +24 -0
  200. package/src/dev/transform-server/dev-transform-bundler.js +79 -0
  201. package/src/dev/transform-server/dev-transform-externalize-plugin.d.ts +12 -0
  202. package/src/dev/transform-server/dev-transform-externalize-plugin.js +29 -0
  203. package/src/dev/transform-server/dev-transform-import-rewriter.d.ts +16 -0
  204. package/src/dev/transform-server/dev-transform-import-rewriter.js +127 -0
  205. package/src/dev/transform-server/dev-transform-module-kind.d.ts +13 -0
  206. package/src/dev/transform-server/dev-transform-module-kind.js +17 -0
  207. package/src/dev/transform-server/dev-transform-runtime-specifiers.d.ts +5 -0
  208. package/src/dev/transform-server/dev-transform-runtime-specifiers.js +16 -0
  209. package/src/dev/transform-server/dev-transform-server.d.ts +41 -0
  210. package/src/dev/transform-server/dev-transform-server.js +191 -0
  211. package/src/dev/transform-server/dev-transform-url.d.ts +13 -0
  212. package/src/dev/transform-server/dev-transform-url.js +58 -0
  213. package/src/dev/transform-server/dev-transform-vendor-registry.d.ts +28 -0
  214. package/src/dev/transform-server/dev-transform-vendor-registry.js +166 -0
  215. package/src/dev/transform-server/index.d.ts +6 -0
  216. package/src/dev/transform-server/index.js +4 -0
  217. package/src/dev/transform-server/types.d.ts +15 -0
  218. package/src/dev/transform-server/types.js +1 -0
  219. package/src/dev-toolbar/README.md +52 -0
  220. package/src/dev-toolbar/define-dev-tool.d.ts +21 -0
  221. package/src/dev-toolbar/define-dev-tool.js +9 -0
  222. package/src/dev-toolbar/dev-toolbar-config.d.ts +25 -0
  223. package/src/dev-toolbar/dev-toolbar-config.js +19 -0
  224. package/src/dev-toolbar/dev-toolbar-host.d.ts +49 -0
  225. package/src/dev-toolbar/dev-toolbar-host.js +117 -0
  226. package/src/dev-toolbar/dev-toolbar-html-response.d.ts +11 -0
  227. package/src/dev-toolbar/dev-toolbar-html-response.js +14 -0
  228. package/src/dev-toolbar/dev-toolbar-manifest-contract.d.ts +22 -0
  229. package/src/dev-toolbar/dev-toolbar-manifest-contract.js +2 -0
  230. package/src/dev-toolbar/dev-toolbar-manifest.d.ts +15 -0
  231. package/src/dev-toolbar/dev-toolbar-manifest.js +52 -0
  232. package/src/dev-toolbar/dev-toolbar-package.d.ts +34 -0
  233. package/src/dev-toolbar/dev-toolbar-package.js +78 -0
  234. package/src/dev-toolbar/dev-toolbar-runtime-paths.d.ts +10 -0
  235. package/src/dev-toolbar/dev-toolbar-runtime-paths.js +13 -0
  236. package/src/diagnostics/request-build-dedupe.d.ts +18 -0
  237. package/src/diagnostics/request-build-dedupe.js +39 -0
  238. package/src/diagnostics/request-pipeline-metrics.d.ts +38 -0
  239. package/src/diagnostics/request-pipeline-metrics.js +121 -0
  240. package/src/diagnostics/startup-trace.d.ts +81 -0
  241. package/src/diagnostics/startup-trace.js +281 -0
  242. package/src/eco/README.md +17 -0
  243. package/src/eco/component-identity.d.ts +13 -0
  244. package/src/eco/component-identity.js +18 -0
  245. package/src/eco/eco-declared-component.d.ts +15 -0
  246. package/src/eco/eco-declared-component.js +23 -0
  247. package/src/eco/eco.browser.js +63 -70
  248. package/src/eco/eco.js +163 -97
  249. package/src/eco/eco.types.d.ts +47 -8
  250. package/src/eco/eco.types.js +5 -0
  251. package/src/eco/eco.utils.d.ts +1 -1
  252. package/src/eco/eco.utils.js +1 -10
  253. package/src/eco/global-injector-map.js +55 -41
  254. package/src/eco/lazy-injector-map.js +90 -60
  255. package/src/eco/module-dependencies.js +52 -44
  256. package/src/eco/page-layout-normalization.d.ts +21 -0
  257. package/src/eco/page-layout-normalization.js +69 -0
  258. package/src/env.d.ts +2 -0
  259. package/src/errors/http-error.d.ts +8 -0
  260. package/src/errors/http-error.js +66 -49
  261. package/src/errors/index.d.ts +1 -0
  262. package/src/errors/index.js +3 -6
  263. package/src/errors/locals-access-error.js +5 -8
  264. package/src/errors/undeclared-component-dependency-error.d.ts +11 -0
  265. package/src/errors/undeclared-component-dependency-error.js +17 -0
  266. package/src/global/app-logger.js +3 -6
  267. package/src/hmr/README.md +21 -0
  268. package/src/hmr/client/hmr-runtime.js +119 -110
  269. package/src/hmr/client/module-update.d.ts +13 -0
  270. package/src/hmr/client/module-update.js +39 -0
  271. package/src/hmr/hmr-asset-paths.d.ts +14 -0
  272. package/src/hmr/hmr-asset-paths.js +22 -0
  273. package/src/hmr/hmr-entrypoint-output.d.ts +21 -0
  274. package/src/hmr/hmr-entrypoint-output.js +34 -0
  275. package/src/hmr/hmr-file-change-prep.d.ts +10 -0
  276. package/src/hmr/hmr-file-change-prep.js +14 -0
  277. package/src/hmr/hmr-registered-entrypoints-context.d.ts +7 -0
  278. package/src/hmr/hmr-registered-entrypoints-context.js +1 -0
  279. package/src/hmr/hmr-runtime-paths.d.ts +10 -0
  280. package/src/hmr/hmr-runtime-paths.js +13 -0
  281. package/src/hmr/hmr-strategy.d.ts +9 -0
  282. package/src/hmr/hmr-strategy.js +113 -42
  283. package/src/hmr/strategies/default-hmr-strategy.js +55 -33
  284. package/src/hmr/strategies/js-hmr-strategy.d.ts +6 -97
  285. package/src/hmr/strategies/js-hmr-strategy.js +107 -167
  286. package/src/hmr/strategies/server-rendered-template-hmr-strategy.d.ts +17 -0
  287. package/src/hmr/strategies/server-rendered-template-hmr-strategy.js +35 -0
  288. package/src/index.browser.d.ts +1 -0
  289. package/src/index.browser.js +2 -4
  290. package/src/index.d.ts +4 -1
  291. package/src/index.js +7 -21
  292. package/src/islands/README.md +25 -0
  293. package/src/islands/island-host.d.ts +37 -0
  294. package/src/islands/island-host.js +55 -0
  295. package/src/plugins/README.md +2 -1
  296. package/src/plugins/alias-resolver-cache.d.ts +6 -9
  297. package/src/plugins/alias-resolver-cache.js +114 -97
  298. package/src/plugins/alias-resolver-plugin.d.ts +3 -3
  299. package/src/plugins/alias-resolver-plugin.js +35 -62
  300. package/src/plugins/define-integration.d.ts +26 -0
  301. package/src/plugins/define-integration.js +20 -0
  302. package/src/plugins/eco-component-meta-plugin.d.ts +6 -102
  303. package/src/plugins/eco-component-meta-plugin.js +123 -162
  304. package/src/plugins/foreign-jsx-override-plugin.d.ts +1 -1
  305. package/src/plugins/foreign-jsx-override-plugin.js +49 -37
  306. package/src/plugins/integration-plugin.d.ts +24 -6
  307. package/src/plugins/integration-plugin.js +212 -195
  308. package/src/plugins/jsx-import-source.utils.d.ts +8 -0
  309. package/src/plugins/jsx-import-source.utils.js +21 -0
  310. package/src/plugins/package-specifier.d.ts +12 -0
  311. package/src/plugins/package-specifier.js +33 -0
  312. package/src/plugins/processor.d.ts +66 -12
  313. package/src/plugins/processor.js +168 -137
  314. package/src/plugins/runtime-capability.js +1 -0
  315. package/src/plugins/source-transform.d.ts +1 -1
  316. package/src/plugins/source-transform.js +109 -79
  317. package/src/plugins/tsconfig-import-resolver.d.ts +37 -0
  318. package/src/plugins/tsconfig-import-resolver.js +262 -0
  319. package/src/route-renderer/GRAPH.md +24 -30
  320. package/src/route-renderer/README.md +52 -32
  321. package/src/route-renderer/orchestration/document-shell/document-shell-render.service.d.ts +107 -0
  322. package/src/route-renderer/orchestration/document-shell/document-shell-render.service.js +155 -0
  323. package/src/route-renderer/orchestration/document-shell/layout-shell-props.service.d.ts +20 -0
  324. package/src/route-renderer/orchestration/document-shell/layout-shell-props.service.js +37 -0
  325. package/src/route-renderer/orchestration/{component-render-context.d.ts → foreign-child/component-render-context.d.ts} +8 -15
  326. package/src/route-renderer/orchestration/foreign-child/component-render-context.js +196 -0
  327. package/src/route-renderer/orchestration/{render-output.utils.d.ts → foreign-child/foreign-child-output.utils.d.ts} +20 -7
  328. package/src/route-renderer/orchestration/foreign-child/foreign-child-output.utils.js +195 -0
  329. package/src/route-renderer/orchestration/{foreign-subtree-execution.service.d.ts → foreign-child/foreign-subtree-execution.service.d.ts} +64 -34
  330. package/src/route-renderer/orchestration/foreign-child/foreign-subtree-execution.service.js +354 -0
  331. package/src/route-renderer/orchestration/foreign-child/owning-renderer-resolution.d.ts +19 -0
  332. package/src/route-renderer/orchestration/foreign-child/owning-renderer-resolution.js +36 -0
  333. package/src/route-renderer/orchestration/integration-renderer.d.ts +37 -153
  334. package/src/route-renderer/orchestration/integration-renderer.js +803 -1008
  335. package/src/route-renderer/orchestration/integration-renderer.test-fixtures.d.ts +75 -0
  336. package/src/route-renderer/orchestration/integration-renderer.test-fixtures.js +173 -0
  337. package/src/route-renderer/orchestration/ownership-graph/component-graph-collectors.d.ts +10 -0
  338. package/src/route-renderer/orchestration/ownership-graph/component-graph-collectors.js +132 -0
  339. package/src/route-renderer/orchestration/ownership-graph/component-graph.d.ts +34 -0
  340. package/src/route-renderer/orchestration/ownership-graph/component-graph.js +89 -0
  341. package/src/route-renderer/orchestration/{ownership-validation.service.d.ts → ownership-graph/ownership-validation.service.d.ts} +6 -2
  342. package/src/route-renderer/orchestration/ownership-graph/ownership-validation.service.js +77 -0
  343. package/src/route-renderer/orchestration/page-browser-graph/global-injector-assets.service.d.ts +7 -0
  344. package/src/route-renderer/orchestration/page-browser-graph/global-injector-assets.service.js +30 -0
  345. package/src/route-renderer/orchestration/page-browser-graph/grouped-graph-build-plan.d.ts +15 -0
  346. package/src/route-renderer/orchestration/page-browser-graph/grouped-graph-build-plan.js +9 -0
  347. package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-contribution.merge.d.ts +5 -0
  348. package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-contribution.merge.js +30 -0
  349. package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-merge.utils.d.ts +12 -0
  350. package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-merge.utils.js +32 -0
  351. package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-session.d.ts +126 -0
  352. package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-session.js +542 -0
  353. package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph.service.d.ts +47 -0
  354. package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph.service.js +248 -0
  355. package/src/route-renderer/orchestration/{processed-asset-dedupe.d.ts → page-browser-graph/processed-asset-dedupe.d.ts} +1 -1
  356. package/src/route-renderer/orchestration/page-browser-graph/processed-asset-dedupe.js +23 -0
  357. package/src/route-renderer/orchestration/page-browser-graph/route-instance-key.d.ts +29 -0
  358. package/src/route-renderer/orchestration/page-browser-graph/route-instance-key.js +54 -0
  359. package/src/route-renderer/orchestration/route-pipeline/integration-route-render-adapter.d.ts +38 -0
  360. package/src/route-renderer/orchestration/route-pipeline/integration-route-render-adapter.js +26 -0
  361. package/src/route-renderer/orchestration/route-pipeline/marker-artifact.utils.d.ts +6 -0
  362. package/src/route-renderer/orchestration/route-pipeline/marker-artifact.utils.js +25 -0
  363. package/src/route-renderer/orchestration/route-pipeline/robots-meta.contribution.d.ts +15 -0
  364. package/src/route-renderer/orchestration/route-pipeline/robots-meta.contribution.js +43 -0
  365. package/src/route-renderer/orchestration/route-pipeline/route-html-finalization.service.d.ts +25 -0
  366. package/src/route-renderer/orchestration/route-pipeline/route-html-finalization.service.js +44 -0
  367. package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.builder.d.ts +26 -0
  368. package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.builder.js +44 -0
  369. package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.utils.d.ts +4 -0
  370. package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.utils.js +30 -0
  371. package/src/route-renderer/orchestration/{route-render-orchestrator.d.ts → route-pipeline/route-render-orchestrator.d.ts} +24 -54
  372. package/src/route-renderer/orchestration/route-pipeline/route-render-orchestrator.js +215 -0
  373. package/src/{integrations/ghtml/ghtml-renderer.d.ts → route-renderer/orchestration/string-markup-renderer.d.ts} +8 -10
  374. package/src/route-renderer/orchestration/string-markup-renderer.js +52 -0
  375. package/src/route-renderer/page-loading/component-dependency-collection.js +121 -121
  376. package/src/route-renderer/page-loading/declared-asset-collection.js +66 -94
  377. package/src/route-renderer/page-loading/dependency-resolver.js +101 -104
  378. package/src/route-renderer/page-loading/ecopages-virtual-imports.d.ts +1 -0
  379. package/src/route-renderer/page-loading/ecopages-virtual-imports.js +64 -51
  380. package/src/route-renderer/page-loading/file-scoped-dependency-components.d.ts +42 -0
  381. package/src/route-renderer/page-loading/file-scoped-dependency-components.js +94 -0
  382. package/src/route-renderer/page-loading/lazy-entry-collection.js +75 -98
  383. package/src/route-renderer/page-loading/lazy-trigger-planning.js +47 -36
  384. package/src/route-renderer/page-loading/module-declaration-aggregation.js +39 -28
  385. package/src/route-renderer/page-loading/module-declaration-scripts.js +10 -15
  386. package/src/route-renderer/page-loading/page-dependency-bundling.js +156 -113
  387. package/src/route-renderer/page-loading/page-module-loader.d.ts +2 -1
  388. package/src/route-renderer/page-loading/page-module-loader.js +136 -124
  389. package/src/route-renderer/page-loading/resolved-page-dependencies.d.ts +12 -0
  390. package/src/route-renderer/page-loading/resolved-page-dependencies.js +38 -0
  391. package/src/route-renderer/route-renderer.js +74 -76
  392. package/src/router/README.md +31 -0
  393. package/src/router/client/link-intent.d.ts +11 -21
  394. package/src/router/client/link-intent.js +56 -30
  395. package/src/router/client/link-intent.test.browser.js +50 -39
  396. package/src/router/client/link-navigation-policy.d.ts +45 -0
  397. package/src/router/client/link-navigation-policy.js +122 -0
  398. package/src/router/client/link-navigation-policy.test.browser.d.ts +1 -0
  399. package/src/router/client/link-navigation-policy.test.browser.js +82 -0
  400. package/src/router/client/navigation-coordinator.d.ts +1 -1
  401. package/src/router/client/navigation-coordinator.js +235 -211
  402. package/src/router/client/navigation-lifecycle.d.ts +55 -0
  403. package/src/router/client/navigation-lifecycle.js +50 -0
  404. package/src/router/client/navigation-lifecycle.test.browser.d.ts +1 -0
  405. package/src/router/client/navigation-lifecycle.test.browser.js +118 -0
  406. package/src/router/server/route-registry.js +237 -242
  407. package/src/services/README.md +5 -0
  408. package/src/services/assets/asset-processing-service/asset-dependency-keys.d.ts +13 -0
  409. package/src/services/assets/asset-processing-service/asset-dependency-keys.js +64 -50
  410. package/src/services/assets/asset-processing-service/asset-processing.service.d.ts +12 -1
  411. package/src/services/assets/asset-processing-service/asset-processing.service.js +335 -268
  412. package/src/services/assets/asset-processing-service/asset.factory.js +78 -81
  413. package/src/services/assets/asset-processing-service/assets.types.d.ts +1 -1
  414. package/src/services/assets/asset-processing-service/assets.types.js +1 -0
  415. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.d.ts +1 -1
  416. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.js +57 -46
  417. package/src/services/assets/asset-processing-service/browser-runtime-entry-resolution.d.ts +52 -0
  418. package/src/services/assets/asset-processing-service/browser-runtime-entry-resolution.js +115 -0
  419. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.js +53 -58
  420. package/src/services/assets/asset-processing-service/finalize-processed-asset.d.ts +3 -0
  421. package/src/services/assets/asset-processing-service/finalize-processed-asset.js +5 -0
  422. package/src/services/assets/asset-processing-service/grouped-content-bundles.d.ts +2 -1
  423. package/src/services/assets/asset-processing-service/grouped-content-bundles.js +85 -60
  424. package/src/services/assets/asset-processing-service/index.d.ts +2 -0
  425. package/src/services/assets/asset-processing-service/index.js +8 -6
  426. package/src/services/assets/asset-processing-service/inline-content-script-body.d.ts +11 -0
  427. package/src/services/assets/asset-processing-service/inline-content-script-body.js +23 -0
  428. package/src/services/assets/asset-processing-service/materialize-content-script-asset.d.ts +9 -0
  429. package/src/services/assets/asset-processing-service/materialize-content-script-asset.js +22 -0
  430. package/src/services/assets/asset-processing-service/page-package.js +70 -72
  431. package/src/services/assets/asset-processing-service/processor.interface.js +7 -5
  432. package/src/services/assets/asset-processing-service/processor.registry.js +11 -14
  433. package/src/services/assets/asset-processing-service/processors/base/base-processor.js +59 -62
  434. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.d.ts +0 -2
  435. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.js +102 -130
  436. package/src/services/assets/asset-processing-service/processors/index.js +5 -5
  437. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.d.ts +8 -0
  438. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.js +111 -111
  439. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.d.ts +0 -1
  440. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.js +95 -94
  441. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.js +136 -135
  442. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.d.ts +0 -3
  443. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +26 -57
  444. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.d.ts +0 -3
  445. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.js +33 -67
  446. package/src/services/assets/asset-processing-service/processors/stylesheet/stylesheet-processor-pipeline.d.ts +2 -0
  447. package/src/services/assets/asset-processing-service/processors/stylesheet/stylesheet-processor-pipeline.js +44 -0
  448. package/src/services/assets/asset-processing-service/resolve-integration-plugin.d.ts +4 -0
  449. package/src/services/assets/asset-processing-service/resolve-integration-plugin.js +15 -0
  450. package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.d.ts +0 -1
  451. package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.js +27 -44
  452. package/src/services/assets/browser-bundle.service.d.ts +27 -31
  453. package/src/services/assets/browser-bundle.service.js +54 -49
  454. package/src/services/assets/browser-runtime-asset-generation.d.ts +17 -0
  455. package/src/services/assets/browser-runtime-asset-generation.js +28 -0
  456. package/src/services/cache/cache.types.d.ts +4 -2
  457. package/src/services/cache/cache.types.js +5 -0
  458. package/src/services/cache/html-page-cache-dependency-index.d.ts +34 -0
  459. package/src/services/cache/html-page-cache-dependency-index.js +88 -0
  460. package/src/services/cache/index.d.ts +2 -0
  461. package/src/services/cache/index.js +8 -7
  462. package/src/services/cache/memory-cache-store.js +101 -89
  463. package/src/services/cache/page-cache-service.d.ts +31 -1
  464. package/src/services/cache/page-cache-service.js +237 -150
  465. package/src/services/cache/page-request-cache-coordinator.service.d.ts +2 -1
  466. package/src/services/cache/page-request-cache-coordinator.service.js +112 -102
  467. package/src/services/html/html-rewriter-provider.service.js +61 -61
  468. package/src/services/html/html-transformer.service.js +249 -266
  469. package/src/services/invalidation/development-invalidation.service.d.ts +15 -1
  470. package/src/services/invalidation/development-invalidation.service.js +241 -204
  471. package/src/services/module-loading/README.md +9 -6
  472. package/src/services/module-loading/app-module-loader.service.js +1 -0
  473. package/src/services/module-loading/app-server-module-transpiler.service.d.ts +8 -0
  474. package/src/services/module-loading/app-server-module-transpiler.service.js +104 -106
  475. package/src/services/module-loading/collection-server-module-build.service.d.ts +19 -0
  476. package/src/services/module-loading/collection-server-module-build.service.js +83 -0
  477. package/src/services/module-loading/host-module-loader-registry.js +6 -11
  478. package/src/services/module-loading/module-loading-types.js +1 -0
  479. package/src/services/module-loading/page-module-import.service.d.ts +7 -12
  480. package/src/services/module-loading/page-module-import.service.js +232 -206
  481. package/src/services/module-loading/route-module-build-cache-registry.d.ts +2 -0
  482. package/src/services/module-loading/route-module-build-cache-registry.js +59 -33
  483. package/src/services/module-loading/route-module-build-cache.js +3 -38
  484. package/src/services/module-loading/route-module-build-cache.store.d.ts +10 -0
  485. package/src/services/module-loading/route-module-build-cache.store.js +213 -196
  486. package/src/services/module-loading/route-module-build-manifest.d.ts +10 -14
  487. package/src/services/module-loading/route-module-build-manifest.js +54 -118
  488. package/src/services/module-loading/route-module-dependency-hasher.d.ts +2 -2
  489. package/src/services/module-loading/route-module-dependency-hasher.js +136 -109
  490. package/src/services/module-loading/server-module-transpiler.service.d.ts +1 -3
  491. package/src/services/module-loading/server-module-transpiler.service.js +65 -62
  492. package/src/services/module-loading/source-module-support.js +15 -7
  493. package/src/services/runtime-state/dev-graph.service.js +165 -157
  494. package/src/services/runtime-state/entrypoint-dependency-graph.service.js +85 -76
  495. package/src/services/runtime-state/server-invalidation-state.service.js +38 -30
  496. package/src/services/validation/schema-validation-service.d.ts +1 -4
  497. package/src/services/validation/schema-validation-service.js +156 -95
  498. package/src/services/validation/standard-schema.types.d.ts +9 -62
  499. package/src/services/validation/standard-schema.types.js +1 -0
  500. package/src/services/validation/validate-standard-schema.d.ts +7 -0
  501. package/src/services/validation/validate-standard-schema.js +14 -0
  502. package/src/static-site-generator/README.md +10 -2
  503. package/src/static-site-generator/production-page-browser-graph-prebuild.d.ts +32 -0
  504. package/src/static-site-generator/production-page-browser-graph-prebuild.js +57 -0
  505. package/src/static-site-generator/sitemap-routes.d.ts +14 -0
  506. package/src/static-site-generator/sitemap-routes.js +36 -0
  507. package/src/static-site-generator/sitemap.d.ts +15 -0
  508. package/src/static-site-generator/sitemap.js +42 -0
  509. package/src/static-site-generator/static-build-invalidation.d.ts +2 -2
  510. package/src/static-site-generator/static-build-invalidation.js +33 -74
  511. package/src/static-site-generator/static-export-context.d.ts +9 -1
  512. package/src/static-site-generator/static-export-context.js +1 -0
  513. package/src/static-site-generator/static-site-generator.d.ts +27 -6
  514. package/src/static-site-generator/static-site-generator.js +528 -389
  515. package/src/types/internal-types.d.ts +55 -17
  516. package/src/types/internal-types.js +1 -0
  517. package/src/types/public-types.d.ts +236 -95
  518. package/src/types/public-types.js +1 -0
  519. package/src/utils/deep-merge.js +39 -26
  520. package/src/utils/ecopages-route-info.d.ts +26 -0
  521. package/src/utils/ecopages-route-info.js +30 -0
  522. package/src/utils/hash.js +3 -6
  523. package/src/utils/html-escaping.d.ts +7 -0
  524. package/src/utils/html-escaping.js +22 -5
  525. package/src/utils/invariant.js +11 -10
  526. package/src/utils/locals-utils.js +32 -22
  527. package/src/utils/parse-cli-args.d.ts +1 -0
  528. package/src/utils/parse-cli-args.js +73 -62
  529. package/src/utils/path-pattern.d.ts +23 -0
  530. package/src/utils/path-pattern.js +42 -0
  531. package/src/utils/path-utils.module.js +8 -11
  532. package/src/utils/resolve-entry-file.js +70 -38
  533. package/src/utils/resolve-work-dir.js +23 -27
  534. package/src/utils/runtime.js +24 -33
  535. package/src/utils/server-utils.module.d.ts +3 -2
  536. package/src/utils/server-utils.module.js +60 -53
  537. package/src/utils/static-file-extensions.d.ts +12 -0
  538. package/src/utils/static-file-extensions.js +54 -0
  539. package/src/watchers/project-watcher-ignore.d.ts +11 -0
  540. package/src/watchers/project-watcher-ignore.js +17 -0
  541. package/src/watchers/project-watcher.d.ts +21 -6
  542. package/src/watchers/project-watcher.js +402 -277
  543. package/src/watchers/project-watcher.test-helpers.js +45 -50
  544. package/src/adapters/shared/api-response.js +0 -96
  545. package/src/adapters/shared/application-adapter.js +0 -90
  546. package/src/adapters/shared/bun-user-websocket-lifecycle.js +0 -102
  547. package/src/adapters/shared/copy-runtime-public-dir.js +0 -24
  548. package/src/adapters/shared/define-api-handler.d.ts +0 -25
  549. package/src/adapters/shared/define-api-handler.js +0 -15
  550. package/src/adapters/shared/explicit-static-render-preparation.js +0 -26
  551. package/src/adapters/shared/explicit-static-route-matcher.js +0 -101
  552. package/src/adapters/shared/file-route-middleware-pipeline.js +0 -90
  553. package/src/adapters/shared/fs-server-response-factory.js +0 -81
  554. package/src/adapters/shared/fs-server-response-matcher.js +0 -186
  555. package/src/adapters/shared/hmr-entrypoint-registrar.d.ts +0 -55
  556. package/src/adapters/shared/hmr-entrypoint-registrar.js +0 -87
  557. package/src/adapters/shared/hmr-html-response.js +0 -33
  558. package/src/adapters/shared/node-http-websocket-upgrades.js +0 -125
  559. package/src/adapters/shared/render-context.js +0 -93
  560. package/src/adapters/shared/runtime-app-bootstrap.js +0 -41
  561. package/src/adapters/shared/runtime-host.js +0 -0
  562. package/src/adapters/shared/server-adapter.js +0 -436
  563. package/src/adapters/shared/server-route-handler.js +0 -111
  564. package/src/adapters/shared/server-static-builder.js +0 -202
  565. package/src/adapters/shared/shared-hmr-manager.d.ts +0 -61
  566. package/src/adapters/shared/shared-hmr-manager.js +0 -273
  567. package/src/adapters/shared/static-preview-host.js +0 -0
  568. package/src/adapters/shared/websocket-lifecycle.d.ts +0 -3
  569. package/src/adapters/shared/websocket-lifecycle.js +0 -19
  570. package/src/build/browser-runtime-manifest.js +0 -61
  571. package/src/build/browser-runtime-plugin-helpers.js +0 -14
  572. package/src/build/browser-runtime-plugin.js +0 -173
  573. package/src/build/build-input-fingerprint.js +0 -31
  574. package/src/build/build-manifest.d.ts +0 -33
  575. package/src/build/build-manifest.js +0 -49
  576. package/src/build/build-types.js +0 -0
  577. package/src/build/jsx-ownership-plugins.d.ts +0 -10
  578. package/src/build/jsx-ownership-plugins.js +0 -17
  579. package/src/build/pages-unified-graph-build.js +0 -208
  580. package/src/build/parallel-build-executor.js +0 -52
  581. package/src/build/rolldown-adapter-helpers.js +0 -310
  582. package/src/build/rolldown-build-adapter.js +0 -67
  583. package/src/build/rolldown-build-invocation-metrics.js +0 -43
  584. package/src/build/rolldown-dev-build-adapter.d.ts +0 -82
  585. package/src/build/rolldown-dev-build-adapter.js +0 -182
  586. package/src/build/rolldown-plugin-bridge.js +0 -211
  587. package/src/build/rolldown-source-transform-pass.js +0 -58
  588. package/src/build/runtime-build-executor.d.ts +0 -15
  589. package/src/build/runtime-build-executor.js +0 -43
  590. package/src/build/runtime-build-output-normalizer.js +0 -203
  591. package/src/build/serialized-build-executor.js +0 -63
  592. package/src/build/server-entry-build-cache.js +0 -169
  593. package/src/build/server-side-css-shim-plugin.js +0 -35
  594. package/src/hmr/hmr.postcss.test.e2e.js +0 -31
  595. package/src/hmr/hmr.test.e2e.js +0 -54
  596. package/src/integrations/ghtml/ghtml-renderer.js +0 -57
  597. package/src/integrations/ghtml/ghtml.constants.d.ts +0 -1
  598. package/src/integrations/ghtml/ghtml.constants.js +0 -4
  599. package/src/integrations/ghtml/ghtml.plugin.d.ts +0 -16
  600. package/src/integrations/ghtml/ghtml.plugin.js +0 -20
  601. package/src/route-renderer/orchestration/component-render-context.js +0 -147
  602. package/src/route-renderer/orchestration/declared-ownership-graph.d.ts +0 -18
  603. package/src/route-renderer/orchestration/declared-ownership-graph.js +0 -34
  604. package/src/route-renderer/orchestration/foreign-subtree-execution.service.js +0 -231
  605. package/src/route-renderer/orchestration/ownership-planning.service.d.ts +0 -24
  606. package/src/route-renderer/orchestration/ownership-planning.service.js +0 -63
  607. package/src/route-renderer/orchestration/ownership-validation.service.js +0 -53
  608. package/src/route-renderer/orchestration/processed-asset-dedupe.js +0 -27
  609. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.d.ts +0 -91
  610. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.js +0 -170
  611. package/src/route-renderer/orchestration/render-output.utils.js +0 -175
  612. package/src/route-renderer/orchestration/route-render-orchestrator.js +0 -578
  613. package/src/route-renderer/orchestration/template-serialization.d.ts +0 -38
  614. package/src/route-renderer/orchestration/template-serialization.js +0 -45
  615. package/src/utils/html.d.ts +0 -1
  616. package/src/utils/html.js +0 -4
  617. /package/src/adapters/{shared → bun}/bun-user-websocket-lifecycle.d.ts +0 -0
  618. /package/src/adapters/shared/{copy-runtime-public-dir.d.ts → runtime/copy-runtime-public-dir.d.ts} +0 -0
  619. /package/src/adapters/shared/{runtime-host.d.ts → runtime/runtime-host.d.ts} +0 -0
  620. /package/src/{hmr/hmr.postcss.test.e2e.d.ts → adapters/shared/runtime/runtime-host.js} +0 -0
  621. /package/src/{hmr/hmr.test.e2e.d.ts → adapters/shared/runtime/static-preview-host.js} +0 -0
  622. /package/src/build/{build-types.d.ts → contracts/build-types.d.ts} +0 -0
  623. /package/src/build/{runtime-build-output-normalizer.d.ts → rolldown/runtime-build-output-normalizer.d.ts} +0 -0
  624. /package/src/build/{server-side-css-shim-plugin.d.ts → rolldown/server-side-css-shim-plugin.d.ts} +0 -0
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Resolves shared Rolldown options for a build profile.
3
+ */
4
+ export function resolveBuildProfileOptions(profile, appConfig, overrides = {}) {
5
+ const root = appConfig.rootDir;
6
+ switch (profile) {
7
+ case 'server-entry':
8
+ return {
9
+ root,
10
+ target: 'node',
11
+ format: 'esm',
12
+ sourcemap: 'none',
13
+ minify: false,
14
+ externalPackages: true,
15
+ ...overrides,
16
+ };
17
+ case 'route-module':
18
+ return {
19
+ root,
20
+ target: 'es2022',
21
+ format: 'esm',
22
+ sourcemap: 'none',
23
+ minify: false,
24
+ externalPackages: true,
25
+ ...overrides,
26
+ };
27
+ case 'browser-hmr':
28
+ return {
29
+ root,
30
+ target: 'browser',
31
+ format: 'esm',
32
+ sourcemap: 'none',
33
+ minify: false,
34
+ ...overrides,
35
+ };
36
+ }
37
+ }
@@ -0,0 +1,17 @@
1
+ import type { BuildOptions } from '../contracts/build-contracts.js';
2
+ /**
3
+ * Canonical identity for one complete {@link BuildOptions} request.
4
+ *
5
+ * @remarks
6
+ * Semantically unordered collections (`external`, `define` keys, array entrypoints)
7
+ * are sorted. Plugin, `conditions`, and source-transform order is preserved because
8
+ * Rolldown hook and `conditionNames` precedence depend on it.
9
+ *
10
+ * Deprecated / ignored adapter fields (`splitting`, `bundle`, `outbase`) still
11
+ * participate in the key so requests that differ only on those fields do not
12
+ * coalesce. Empty `conditions` / `define` / `external` normalize to the same
13
+ * sentinel as `undefined`.
14
+ */
15
+ export declare function createBuildRequestIdentity(options: BuildOptions): string;
16
+ /** @deprecated Use {@link createBuildRequestIdentity}. */
17
+ export declare const createBuildOptionsDedupeKey: typeof createBuildRequestIdentity;
@@ -0,0 +1,79 @@
1
+ import path from 'node:path';
2
+ import { createJsxCacheKey, createPluginCacheKey, createSourceTransformCacheKey } from '../cache/cache-keys.js';
3
+ function normalizeEntrypoints(entrypoints) {
4
+ if (Array.isArray(entrypoints)) {
5
+ return entrypoints
6
+ .map((entrypoint) => path.resolve(entrypoint))
7
+ .sort()
8
+ .join('|');
9
+ }
10
+ return Object.entries(entrypoints)
11
+ .sort(([left], [right]) => left.localeCompare(right))
12
+ .map(([key, value]) => `${key}:${path.resolve(value)}`)
13
+ .join('|');
14
+ }
15
+ /**
16
+ * Preserves list order for collections where Rolldown precedence depends on position.
17
+ */
18
+ function normalizeOrderedStringList(values, label) {
19
+ if (!values || values.length === 0) {
20
+ return `${label}:default`;
21
+ }
22
+ return `${label}:${values.join(',')}`;
23
+ }
24
+ /**
25
+ * Sorts unordered sets so equivalent membership produces one identity.
26
+ */
27
+ function normalizeUnorderedStringList(values, label) {
28
+ if (!values || values.length === 0) {
29
+ return `${label}:default`;
30
+ }
31
+ return `${label}:${[...values].sort().join(',')}`;
32
+ }
33
+ function normalizeDefine(define) {
34
+ if (!define || Object.keys(define).length === 0) {
35
+ return 'define:default';
36
+ }
37
+ return `define:${Object.entries(define)
38
+ .sort(([left], [right]) => left.localeCompare(right))
39
+ .map(([key, value]) => `${key}=${value}`)
40
+ .join(',')}`;
41
+ }
42
+ /**
43
+ * Canonical identity for one complete {@link BuildOptions} request.
44
+ *
45
+ * @remarks
46
+ * Semantically unordered collections (`external`, `define` keys, array entrypoints)
47
+ * are sorted. Plugin, `conditions`, and source-transform order is preserved because
48
+ * Rolldown hook and `conditionNames` precedence depend on it.
49
+ *
50
+ * Deprecated / ignored adapter fields (`splitting`, `bundle`, `outbase`) still
51
+ * participate in the key so requests that differ only on those fields do not
52
+ * coalesce. Empty `conditions` / `define` / `external` normalize to the same
53
+ * sentinel as `undefined`.
54
+ */
55
+ export function createBuildRequestIdentity(options) {
56
+ return [
57
+ normalizeEntrypoints(options.entrypoints),
58
+ options.root ? path.resolve(options.root) : 'root:default',
59
+ options.outdir ? path.resolve(options.outdir) : 'outdir:default',
60
+ options.outbase ? path.resolve(options.outbase) : 'outbase:default',
61
+ options.splitting ?? 'splitting:default',
62
+ options.bundle ?? 'bundle:default',
63
+ options.externalPackages ?? 'externalPackages:default',
64
+ options.target ?? 'target:default',
65
+ options.format ?? 'format:default',
66
+ options.sourcemap ?? 'sourcemap:default',
67
+ options.minify ?? 'minify:default',
68
+ options.treeshaking ?? 'treeshaking:default',
69
+ options.naming ?? 'naming:default',
70
+ normalizeOrderedStringList(options.conditions, 'conditions'),
71
+ normalizeDefine(options.define),
72
+ normalizeUnorderedStringList(options.external, 'external'),
73
+ createJsxCacheKey(options.jsx),
74
+ createPluginCacheKey(options.plugins),
75
+ createSourceTransformCacheKey(options.sourceTransforms),
76
+ ].join('::');
77
+ }
78
+ /** @deprecated Use {@link createBuildRequestIdentity}. */
79
+ export const createBuildOptionsDedupeKey = createBuildRequestIdentity;
@@ -0,0 +1,58 @@
1
+ import type { EcoPagesAppConfig } from '../../types/internal-types.js';
2
+ import type { EcoBuildPlugin } from '../contracts/build-types.js';
3
+ import type { BuildOptions, BuildTranspileProfile } from '../contracts/build-contracts.js';
4
+ import type { BuildProfile } from './build-runtime.js';
5
+ /**
6
+ * Resolves app-owned server plugins plus JSX ownership for one config.
7
+ *
8
+ * @remarks
9
+ * Always goes through {@link getAppServerBuildPlugins} so sealed-manifest and
10
+ * source-transform apps share one plugin list with the alias resolver. Used by
11
+ * both request assembly and unified-graph cache keys.
12
+ */
13
+ export declare function resolveServerAppBuildPlugins(appConfig: EcoPagesAppConfig): EcoBuildPlugin[];
14
+ /**
15
+ * Merges caller plugins with app-owned manifest plugins.
16
+ *
17
+ * @remarks
18
+ * App-manifest plugins cannot be silently replaced by same-name caller plugins.
19
+ * Unique caller plugins are prepended so first-wins Rolldown hooks (for example
20
+ * React vendor/alias rewrites) still run before general app loaders. Use
21
+ * `excludeAppBuildPlugins` on browser requests to omit app-owned plugins.
22
+ */
23
+ export declare function mergeCallerBuildPlugins(appPlugins: EcoBuildPlugin[], callerPlugins?: EcoBuildPlugin[]): EcoBuildPlugin[];
24
+ export type ServerBuildRequestInput = Partial<BuildOptions> & {
25
+ entrypoints: BuildOptions['entrypoints'];
26
+ profile?: Extract<BuildProfile, 'server-entry' | 'route-module'>;
27
+ };
28
+ export type BrowserBuildRequestInput = Partial<BuildOptions> & {
29
+ entrypoints: BuildOptions['entrypoints'];
30
+ profile: BuildTranspileProfile;
31
+ excludeAppBuildPlugins?: string[];
32
+ };
33
+ /**
34
+ * Assembles a complete server-oriented {@link BuildOptions} before scheduling.
35
+ *
36
+ * @remarks
37
+ * Defaults `profile` to `'route-module'`. Plugins are
38
+ * {@link resolveServerAppBuildPlugins} plus unique caller contributions via
39
+ * {@link mergeCallerBuildPlugins}. Source transforms are applied on every
40
+ * compilation target, so server module loading shares browser attribution.
41
+ */
42
+ export declare function createServerBuildRequest(appConfig: EcoPagesAppConfig, input: ServerBuildRequestInput): BuildOptions;
43
+ /**
44
+ * Assembles a complete browser-oriented {@link BuildOptions} before scheduling.
45
+ *
46
+ * @remarks
47
+ * Applies {@link resolveBuildProfileOptions} for `'browser-hmr'` (browser target
48
+ * defaults), then overlays {@link getAppTranspileOptions} for the given
49
+ * {@link BuildTranspileProfile}. That profile selects transpile settings only;
50
+ * the {@link BuildRuntime} executor slot is chosen later by the caller
51
+ * (typically {@link BrowserBundleService}).
52
+ *
53
+ * Always attaches {@link getAppSourceTransforms}. App browser plugins come from
54
+ * {@link getAppBrowserBuildPlugins} (includes JSX ownership); use
55
+ * `excludeAppBuildPlugins` to omit app-owned names. Caller plugins cannot
56
+ * replace app-manifest names ({@link mergeCallerBuildPlugins}).
57
+ */
58
+ export declare function createBrowserBuildRequest(appConfig: EcoPagesAppConfig, input: BrowserBuildRequestInput): BuildOptions;
@@ -0,0 +1,84 @@
1
+ import { getAppBrowserBuildPlugins, getAppServerBuildPlugins, getAppTranspileOptions } from '../build-adapter.js';
2
+ import { resolveBuildProfileOptions } from './build-profile-options.js';
3
+ import { getJsxOwnershipPlugins } from '../browser/jsx-ownership-plugins.js';
4
+ import { getAppSourceTransforms } from '../../plugins/source-transform.js';
5
+ /**
6
+ * Resolves app-owned server plugins plus JSX ownership for one config.
7
+ *
8
+ * @remarks
9
+ * Always goes through {@link getAppServerBuildPlugins} so sealed-manifest and
10
+ * source-transform apps share one plugin list with the alias resolver. Used by
11
+ * both request assembly and unified-graph cache keys.
12
+ */
13
+ export function resolveServerAppBuildPlugins(appConfig) {
14
+ return [...getAppServerBuildPlugins(appConfig), ...getJsxOwnershipPlugins(appConfig)];
15
+ }
16
+ /**
17
+ * Merges caller plugins with app-owned manifest plugins.
18
+ *
19
+ * @remarks
20
+ * App-manifest plugins cannot be silently replaced by same-name caller plugins.
21
+ * Unique caller plugins are prepended so first-wins Rolldown hooks (for example
22
+ * React vendor/alias rewrites) still run before general app loaders. Use
23
+ * `excludeAppBuildPlugins` on browser requests to omit app-owned plugins.
24
+ */
25
+ export function mergeCallerBuildPlugins(appPlugins, callerPlugins) {
26
+ if (!callerPlugins || callerPlugins.length === 0) {
27
+ return appPlugins;
28
+ }
29
+ const appByName = new Map(appPlugins.map((plugin) => [plugin.name, plugin]));
30
+ const uniqueCallerPlugins = callerPlugins.filter((plugin) => !appByName.has(plugin.name));
31
+ return [...uniqueCallerPlugins, ...appPlugins];
32
+ }
33
+ /**
34
+ * Assembles a complete server-oriented {@link BuildOptions} before scheduling.
35
+ *
36
+ * @remarks
37
+ * Defaults `profile` to `'route-module'`. Plugins are
38
+ * {@link resolveServerAppBuildPlugins} plus unique caller contributions via
39
+ * {@link mergeCallerBuildPlugins}. Source transforms are applied on every
40
+ * compilation target, so server module loading shares browser attribution.
41
+ */
42
+ export function createServerBuildRequest(appConfig, input) {
43
+ const profile = input.profile ?? 'route-module';
44
+ const plugins = mergeCallerBuildPlugins(resolveServerAppBuildPlugins(appConfig), input.plugins);
45
+ const { plugins: _callerPlugins, profile: _profile, ...overrides } = input;
46
+ return {
47
+ ...resolveBuildProfileOptions(profile, appConfig, overrides),
48
+ ...overrides,
49
+ entrypoints: input.entrypoints,
50
+ ...(plugins.length > 0 ? { plugins } : {}),
51
+ sourceTransforms: getAppSourceTransforms(appConfig),
52
+ };
53
+ }
54
+ /**
55
+ * Assembles a complete browser-oriented {@link BuildOptions} before scheduling.
56
+ *
57
+ * @remarks
58
+ * Applies {@link resolveBuildProfileOptions} for `'browser-hmr'` (browser target
59
+ * defaults), then overlays {@link getAppTranspileOptions} for the given
60
+ * {@link BuildTranspileProfile}. That profile selects transpile settings only;
61
+ * the {@link BuildRuntime} executor slot is chosen later by the caller
62
+ * (typically {@link BrowserBundleService}).
63
+ *
64
+ * Always attaches {@link getAppSourceTransforms}. App browser plugins come from
65
+ * {@link getAppBrowserBuildPlugins} (includes JSX ownership); use
66
+ * `excludeAppBuildPlugins` to omit app-owned names. Caller plugins cannot
67
+ * replace app-manifest names ({@link mergeCallerBuildPlugins}).
68
+ */
69
+ export function createBrowserBuildRequest(appConfig, input) {
70
+ const { profile, excludeAppBuildPlugins, plugins: callerPlugins, ...overrides } = input;
71
+ const appBrowserPlugins = getAppBrowserBuildPlugins(appConfig);
72
+ const filteredAppBrowserPlugins = excludeAppBuildPlugins && excludeAppBuildPlugins.length > 0
73
+ ? appBrowserPlugins.filter((plugin) => !excludeAppBuildPlugins.includes(plugin.name))
74
+ : appBrowserPlugins;
75
+ const plugins = mergeCallerBuildPlugins(filteredAppBrowserPlugins, callerPlugins);
76
+ return {
77
+ ...resolveBuildProfileOptions('browser-hmr', appConfig, overrides),
78
+ ...getAppTranspileOptions(appConfig, profile),
79
+ ...overrides,
80
+ entrypoints: input.entrypoints,
81
+ plugins,
82
+ sourceTransforms: getAppSourceTransforms(appConfig),
83
+ };
84
+ }
@@ -0,0 +1,28 @@
1
+ import type { EcoPagesAppConfig } from '../../types/internal-types.js';
2
+ import { type BuildExecutor } from '../build-adapter.js';
3
+ export type BuildProfile = 'server-entry' | 'route-module' | 'browser-hmr';
4
+ export interface BuildRuntime {
5
+ getProfile(profile: BuildProfile): BuildExecutor;
6
+ dispose(): Promise<void>;
7
+ }
8
+ export declare function getBuildRuntime(appConfig: EcoPagesAppConfig): BuildRuntime | undefined;
9
+ /**
10
+ * Returns the installed build runtime, installing it when missing.
11
+ */
12
+ export declare function requireBuildRuntime(appConfig: EcoPagesAppConfig): BuildRuntime;
13
+ /**
14
+ * Installs profile-based build executors for one app instance.
15
+ *
16
+ * @remarks
17
+ * For Rolldown ownership, server-entry stays serialized single-flight while
18
+ * route-module and browser-HMR run in parallel one-shot builds. Vite-host
19
+ * profiles wrap a boundary marker and reject framework-owned build attempts.
20
+ * Profiles do not inject app plugins — assemble complete
21
+ * {@link BuildOptions} with {@link createServerBuildRequest} /
22
+ * {@link createBrowserBuildRequest} (or {@link BrowserBundleService}) first.
23
+ */
24
+ export declare function installBuildRuntime(appConfig: EcoPagesAppConfig): BuildRuntime;
25
+ /**
26
+ * No-op retained for server teardown call sites.
27
+ */
28
+ export declare function disposeAppBuildRuntime(appConfig: EcoPagesAppConfig): Promise<void>;
@@ -0,0 +1,75 @@
1
+ import { availableParallelism } from 'node:os';
2
+ import { getAppBuildAdapter } from '../build-adapter.js';
3
+ import { ParallelBuildExecutor } from './parallel-build-executor.js';
4
+ import { DedupingBuildExecutor } from './deduping-build-executor.js';
5
+ import { SerializedBuildExecutor } from './serialized-build-executor.js';
6
+ function resolveParallelismLimit() {
7
+ return Math.max(1, availableParallelism() - 1);
8
+ }
9
+ function patchAppRuntime(appConfig, patch) {
10
+ appConfig.runtime = {
11
+ ...(appConfig.runtime ?? {}),
12
+ ...patch,
13
+ };
14
+ }
15
+ class AppBuildRuntime {
16
+ serverEntryExecutor;
17
+ routeModuleExecutor;
18
+ hmrExecutor;
19
+ constructor(appConfig) {
20
+ const adapter = getAppBuildAdapter(appConfig);
21
+ const limit = resolveParallelismLimit();
22
+ this.serverEntryExecutor = new SerializedBuildExecutor(adapter);
23
+ this.routeModuleExecutor = new DedupingBuildExecutor(new ParallelBuildExecutor(adapter, limit));
24
+ this.hmrExecutor = new DedupingBuildExecutor(new ParallelBuildExecutor(adapter, Math.min(3, limit)));
25
+ }
26
+ getProfile(profile) {
27
+ switch (profile) {
28
+ case 'server-entry':
29
+ return this.serverEntryExecutor;
30
+ case 'route-module':
31
+ return this.routeModuleExecutor;
32
+ case 'browser-hmr':
33
+ return this.hmrExecutor;
34
+ }
35
+ }
36
+ /**
37
+ * No-op for profile teardown.
38
+ *
39
+ * @remarks
40
+ * Rolldown-owned profiles use one-shot builds, and Vite-host profiles only
41
+ * wrap a boundary marker. Neither owns a long-lived engine to close.
42
+ */
43
+ async dispose() { }
44
+ }
45
+ export function getBuildRuntime(appConfig) {
46
+ return appConfig.runtime?.buildRuntime;
47
+ }
48
+ /**
49
+ * Returns the installed build runtime, installing it when missing.
50
+ */
51
+ export function requireBuildRuntime(appConfig) {
52
+ return getBuildRuntime(appConfig) ?? installBuildRuntime(appConfig);
53
+ }
54
+ /**
55
+ * Installs profile-based build executors for one app instance.
56
+ *
57
+ * @remarks
58
+ * For Rolldown ownership, server-entry stays serialized single-flight while
59
+ * route-module and browser-HMR run in parallel one-shot builds. Vite-host
60
+ * profiles wrap a boundary marker and reject framework-owned build attempts.
61
+ * Profiles do not inject app plugins — assemble complete
62
+ * {@link BuildOptions} with {@link createServerBuildRequest} /
63
+ * {@link createBrowserBuildRequest} (or {@link BrowserBundleService}) first.
64
+ */
65
+ export function installBuildRuntime(appConfig) {
66
+ const buildRuntime = new AppBuildRuntime(appConfig);
67
+ patchAppRuntime(appConfig, { buildRuntime });
68
+ return buildRuntime;
69
+ }
70
+ /**
71
+ * No-op retained for server teardown call sites.
72
+ */
73
+ export async function disposeAppBuildRuntime(appConfig) {
74
+ await getBuildRuntime(appConfig)?.dispose();
75
+ }
@@ -0,0 +1,21 @@
1
+ import type { BuildExecutor, BuildOptions, BuildResult } from '../build-adapter.js';
2
+ export { createBuildRequestIdentity, createBuildOptionsDedupeKey } from './build-request-identity.js';
3
+ /**
4
+ * In-flight build coalescing wrapper.
5
+ *
6
+ * @remarks
7
+ * `ParallelBuildExecutor` allows concurrent builds but does not dedupe identical
8
+ * options. Multiple callers (route import, browser bundles, HMR) can hit the
9
+ * same Rolldown request before disk or import caches warm. This wrapper shares
10
+ * one inner `build()` promise per dedupe key until it settles.
11
+ *
12
+ * Wrap route-module and browser-hmr profiles only; server-entry stays serialized.
13
+ */
14
+ export declare class DedupingBuildExecutor implements BuildExecutor {
15
+ private readonly inner;
16
+ private readonly inFlight;
17
+ constructor(inner: BuildExecutor);
18
+ build(options: BuildOptions): Promise<BuildResult>;
19
+ unwrap(): BuildExecutor;
20
+ getInFlightCountForTests(): number;
21
+ }
@@ -0,0 +1,40 @@
1
+ import { createBuildRequestIdentity } from './build-request-identity.js';
2
+ export { createBuildRequestIdentity, createBuildOptionsDedupeKey } from './build-request-identity.js';
3
+ /**
4
+ * In-flight build coalescing wrapper.
5
+ *
6
+ * @remarks
7
+ * `ParallelBuildExecutor` allows concurrent builds but does not dedupe identical
8
+ * options. Multiple callers (route import, browser bundles, HMR) can hit the
9
+ * same Rolldown request before disk or import caches warm. This wrapper shares
10
+ * one inner `build()` promise per dedupe key until it settles.
11
+ *
12
+ * Wrap route-module and browser-hmr profiles only; server-entry stays serialized.
13
+ */
14
+ export class DedupingBuildExecutor {
15
+ inner;
16
+ inFlight = new Map();
17
+ constructor(inner) {
18
+ this.inner = inner;
19
+ }
20
+ build(options) {
21
+ const key = createBuildRequestIdentity(options);
22
+ const existing = this.inFlight.get(key);
23
+ if (existing) {
24
+ return existing;
25
+ }
26
+ const buildPromise = this.inner.build(options).finally(() => {
27
+ if (this.inFlight.get(key) === buildPromise) {
28
+ this.inFlight.delete(key);
29
+ }
30
+ });
31
+ this.inFlight.set(key, buildPromise);
32
+ return buildPromise;
33
+ }
34
+ unwrap() {
35
+ return this.inner;
36
+ }
37
+ getInFlightCountForTests() {
38
+ return this.inFlight.size;
39
+ }
40
+ }
@@ -1,4 +1,4 @@
1
- import type { BuildExecutor, BuildOptions, BuildResult } from './build-adapter.js';
1
+ import type { BuildExecutor, BuildOptions, BuildResult } from '../build-adapter.js';
2
2
  /**
3
3
  * Concurrency-limited build executor wrapper.
4
4
  *
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Concurrency-limited build executor wrapper.
3
+ *
4
+ * @remarks
5
+ * Runs up to `limit` builds concurrently. Use for independent route-module
6
+ * and HMR browser builds where FIFO serialization is unnecessary.
7
+ */
8
+ export class ParallelBuildExecutor {
9
+ inner;
10
+ limit;
11
+ activeCount = 0;
12
+ queue = [];
13
+ constructor(inner, limit) {
14
+ this.inner = inner;
15
+ this.limit = Math.max(1, limit);
16
+ }
17
+ build(options) {
18
+ return new Promise((resolve, reject) => {
19
+ this.queue.push({
20
+ operation: () => this.inner.build(options),
21
+ resolve,
22
+ reject,
23
+ });
24
+ this.drainQueue();
25
+ });
26
+ }
27
+ drainQueue() {
28
+ while (this.activeCount < this.limit && this.queue.length > 0) {
29
+ const next = this.queue.shift();
30
+ if (!next) {
31
+ return;
32
+ }
33
+ this.activeCount += 1;
34
+ void next
35
+ .operation()
36
+ .then((result) => {
37
+ next.resolve(result);
38
+ })
39
+ .catch((error) => {
40
+ next.reject(error);
41
+ })
42
+ .finally(() => {
43
+ this.activeCount -= 1;
44
+ this.drainQueue();
45
+ });
46
+ }
47
+ }
48
+ unwrap() {
49
+ return this.inner;
50
+ }
51
+ getConcurrencyLimitForTests() {
52
+ return this.limit;
53
+ }
54
+ getActiveCountForTests() {
55
+ return this.activeCount;
56
+ }
57
+ getQueuedCountForTests() {
58
+ return this.queue.length;
59
+ }
60
+ }
@@ -1,4 +1,4 @@
1
- import type { BuildExecutor, BuildOptions, BuildResult } from './build-adapter.js';
1
+ import type { BuildExecutor, BuildOptions, BuildResult } from '../build-adapter.js';
2
2
  /**
3
3
  * FIFO-serialized build executor wrapper.
4
4
  *
@@ -0,0 +1,79 @@
1
+ /**
2
+ * FIFO-serialized build executor wrapper.
3
+ *
4
+ * @remarks
5
+ * Wraps any `BuildExecutor` and ensures that no two builds run
6
+ * concurrently. The next build waits for the previous one to finish
7
+ * (success or failure) before starting.
8
+ *
9
+ * This is a bundler-agnostic primitive. It is unaware of bundler
10
+ * lifecycle events and exists purely to enforce one build at a time.
11
+ * Use it from the dev watch pipeline, the static preview path, or any
12
+ * caller that issues builds concurrently.
13
+ */
14
+ /**
15
+ * FIFO-serialized wrapper around a {@link BuildExecutor}.
16
+ *
17
+ * Every `build()` call enqueues onto the wrapper's internal queue. A
18
+ * build only starts after the previous build's promise has settled.
19
+ */
20
+ export class SerializedBuildExecutor {
21
+ inner;
22
+ tail = Promise.resolve();
23
+ constructor(inner) {
24
+ this.inner = inner;
25
+ }
26
+ /**
27
+ * Run a build through the serialized queue. The returned promise
28
+ * resolves with the inner executor's `BuildResult`. A rejected
29
+ * inner build does not block the queue — the next caller can
30
+ * proceed.
31
+ */
32
+ build(options) {
33
+ return this.run(() => this.inner.build(options));
34
+ }
35
+ /**
36
+ * Run an arbitrary async operation through the serialized queue.
37
+ *
38
+ * Use this when the work is not a `build()` call against a wrapped
39
+ * executor (e.g. when composing with a coordinator that needs to
40
+ * inject recovery around the inner call). The returned promise
41
+ * resolves with the operation's result. A rejected operation does
42
+ * not block the queue.
43
+ */
44
+ run(operation) {
45
+ const next = this.tail.catch(() => undefined).then(() => operation());
46
+ this.tail = next.catch(() => undefined);
47
+ return next;
48
+ }
49
+ /**
50
+ * Returns the wrapped executor. Tests use this to assert the
51
+ * delegation chain.
52
+ */
53
+ unwrap() {
54
+ return this.inner;
55
+ }
56
+ /**
57
+ * Reset the queue to an empty state. Tests use this to recover
58
+ * from a poisoned tail.
59
+ */
60
+ resetForTests() {
61
+ this.tail = Promise.resolve();
62
+ }
63
+ /**
64
+ * Overrides the internal queue tail for fault-recovery tests. The
65
+ * supplied promise is awaited before the next enqueued operation
66
+ * starts.
67
+ */
68
+ setBuildQueueForTests(queue) {
69
+ this.tail = queue;
70
+ }
71
+ /**
72
+ * Returns the current internal queue tail for fault-recovery
73
+ * tests. Tests await this to assert that recovery has cleared a
74
+ * wedged queue.
75
+ */
76
+ getBuildQueueForTests() {
77
+ return this.tail;
78
+ }
79
+ }
@@ -3,4 +3,5 @@
3
3
  *
4
4
  * @module @ecopages/core/cache
5
5
  */
6
- export { ModuleParseCache, moduleParseCache, cachedParseSync, type ModuleParseOptions } from './module-parse-cache.js';
6
+ export { ModuleParseCache, moduleParseCache, cachedParseSync, parseModuleSource, parserLanguageForFile, type ModuleParseOptions, type ParserLanguage, } from './module-parse-cache.js';
7
+ export { recordModuleTransformProfile } from './module-transform-profiler.js';
@@ -1,6 +1,7 @@
1
- import { ModuleParseCache, moduleParseCache, cachedParseSync } from "./module-parse-cache.js";
2
- export {
3
- ModuleParseCache,
4
- cachedParseSync,
5
- moduleParseCache
6
- };
1
+ /**
2
+ * Public cache exports for the bundler plugin chain.
3
+ *
4
+ * @module @ecopages/core/cache
5
+ */
6
+ export { ModuleParseCache, moduleParseCache, cachedParseSync, parseModuleSource, parserLanguageForFile, } from './module-parse-cache.js';
7
+ export { recordModuleTransformProfile } from './module-transform-profiler.js';
@@ -22,6 +22,11 @@ export type ModuleParseOptions = ParserOptions & {
22
22
  */
23
23
  lang?: ParserOptions['lang'];
24
24
  };
25
+ export type ParserLanguage = 'js' | 'jsx' | 'ts' | 'tsx';
26
+ /** Resolves the Oxc dialect for a source module from its file extension. */
27
+ export declare function parserLanguageForFile(filePath: string): ParserLanguage;
28
+ /** Parses an ECMAScript module with the shared, normalized cache contract. */
29
+ export declare function parseModuleSource(filePath: string, source: string, options?: ModuleParseOptions): ParseResult;
25
30
  /**
26
31
  * LRU-bounded module parse cache.
27
32
  *