@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,71 @@
1
+ import { readFileSync } from 'node:fs';
2
+ let cachedCorePackageVersion;
3
+ /**
4
+ * Returns the installed `@ecopages/core` package version for cache invalidation.
5
+ */
6
+ export function getCorePackageVersion() {
7
+ if (cachedCorePackageVersion) {
8
+ return cachedCorePackageVersion;
9
+ }
10
+ const packageJsonPath = new URL('../../../package.json', import.meta.url);
11
+ const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));
12
+ cachedCorePackageVersion = packageJson.version ?? '0.0.0';
13
+ return cachedCorePackageVersion;
14
+ }
15
+ /** Stable fingerprint for JSX options used in build and disk cache keys. */
16
+ export function createJsxCacheKey(jsx) {
17
+ if (!jsx) {
18
+ return 'jsx:default';
19
+ }
20
+ return JSON.stringify({
21
+ development: jsx.development ?? false,
22
+ factory: jsx.factory ?? null,
23
+ fragment: jsx.fragment ?? null,
24
+ importSource: jsx.importSource ?? null,
25
+ runtime: jsx.runtime ?? null,
26
+ sideEffects: jsx.sideEffects ?? null,
27
+ });
28
+ }
29
+ /** Stable fingerprint for ordered build plugins. */
30
+ export function createPluginCacheKey(plugins) {
31
+ if (!plugins || plugins.length === 0) {
32
+ return 'plugins:default';
33
+ }
34
+ return `plugins:${plugins.map((plugin) => `${plugin.name}:${hashFunctionIdentity(plugin.setup)}`).join(',')}`;
35
+ }
36
+ /** Stable fingerprint for ordered source transforms. */
37
+ export function createSourceTransformCacheKey(sourceTransforms) {
38
+ if (!sourceTransforms || sourceTransforms.length === 0) {
39
+ return 'sourceTransforms:default';
40
+ }
41
+ return `sourceTransforms:${sourceTransforms
42
+ .map((transform) => {
43
+ const filterSource = transform.filter.source;
44
+ const filterFlags = transform.filter.flags;
45
+ return [
46
+ transform.name,
47
+ transform.enforce ?? 'default',
48
+ filterSource,
49
+ filterFlags,
50
+ hashFunctionIdentity(transform.transform),
51
+ ].join(':');
52
+ })
53
+ .join(',')}`;
54
+ }
55
+ /**
56
+ * Stable fingerprint of a function body for cache and request identity keys.
57
+ *
58
+ * @remarks
59
+ * Hashes `fn.toString()`. Suitable for in-process and persisted keys that must
60
+ * agree within one install; not stable across minifiers or renames.
61
+ */
62
+ export function hashFunctionIdentity(fn) {
63
+ let hash = 0;
64
+ const source = fn.toString();
65
+ for (let index = 0; index < source.length; index += 1) {
66
+ hash = (hash * 31 + source.charCodeAt(index)) | 0;
67
+ }
68
+ return (hash >>> 0).toString(36);
69
+ }
70
+ /** @deprecated Use {@link hashFunctionIdentity}. */
71
+ export const hashPluginSetup = hashFunctionIdentity;
@@ -5,7 +5,7 @@
5
5
  * `ECOPAGES_UNIFIED_PAGES_GRAPH=0`. Covers all static page template extensions
6
6
  * registered on the app config.
7
7
  */
8
- import type { EcoPagesAppConfig } from '../types/internal-types.js';
8
+ import type { EcoPagesAppConfig } from '../../types/internal-types.js';
9
9
  export declare const PAGES_UNIFIED_GRAPH_CACHE_DIR = ".server-pages-graph";
10
10
  export declare const PAGES_UNIFIED_GRAPH_CACHE_FILENAME = ".build-cache.json";
11
11
  export interface PagesUnifiedGraphCacheManifest {
@@ -0,0 +1,199 @@
1
+ /**
2
+ * Unified pages Rolldown graph (Phase A build + Phase C import).
3
+ *
4
+ * Enabled by default in production builds. Opt out with
5
+ * `ECOPAGES_UNIFIED_PAGES_GRAPH=0`. Covers all static page template extensions
6
+ * registered on the app config.
7
+ */
8
+ import path from 'node:path';
9
+ import { pathToFileURL } from 'node:url';
10
+ import { fileSystem } from '@ecopages/file-system';
11
+ import { appLogger } from '../../global/app-logger.js';
12
+ import { build } from '../build-adapter.js';
13
+ import { requireBuildRuntime } from '../runtime/build-runtime.js';
14
+ import { createServerBuildRequest, resolveServerAppBuildPlugins } from '../runtime/build-request-policy.js';
15
+ import { createBuildInputsFingerprint, hashAppConfigFile } from './build-input-fingerprint.js';
16
+ import { isProductionCacheManifestCurrent, matchesProductionCacheBuildKey, matchesProductionCacheFingerprint, readProductionCacheManifest, writeProductionCacheManifest, } from './production-build-cache.js';
17
+ import { getCorePackageVersion } from './cache-keys.js';
18
+ import { resolveInternalExecutionDir } from '../../utils/resolve-work-dir.js';
19
+ import { getSharedRouteModuleBuildCache } from '../../services/module-loading/route-module-build-cache-registry.js';
20
+ import { resolveRouteModuleDependencyPaths } from '../../services/module-loading/route-module-dependency-hasher.js';
21
+ export const PAGES_UNIFIED_GRAPH_CACHE_DIR = '.server-pages-graph';
22
+ export const PAGES_UNIFIED_GRAPH_CACHE_FILENAME = '.build-cache.json';
23
+ export function isPagesUnifiedGraphEnabled() {
24
+ if (process.env.ECOPAGES_UNIFIED_PAGES_GRAPH === '0') {
25
+ return false;
26
+ }
27
+ if (process.env.ECOPAGES_UNIFIED_PAGES_GRAPH === '1') {
28
+ return true;
29
+ }
30
+ return process.env.NODE_ENV === 'production';
31
+ }
32
+ /** True when the unified graph should build or serve prebuilt page modules. */
33
+ export function shouldBuildPagesUnifiedGraph() {
34
+ return isPagesUnifiedGraphEnabled() && process.env.NODE_ENV === 'production';
35
+ }
36
+ export function isPagesUnifiedGraphPage(filePath, appConfig) {
37
+ const normalizedPath = path.normalize(filePath);
38
+ return appConfig.templatesExt.some((extension) => normalizedPath.endsWith(extension));
39
+ }
40
+ function getPagesUnifiedGraphCachePath(appConfig) {
41
+ return path.join(resolveInternalExecutionDir(appConfig), PAGES_UNIFIED_GRAPH_CACHE_DIR, PAGES_UNIFIED_GRAPH_CACHE_FILENAME);
42
+ }
43
+ function createPagesUnifiedGraphBuildKey(appConfig, outdir) {
44
+ const pluginNames = resolveServerAppBuildPlugins(appConfig)
45
+ .map((plugin) => plugin.name)
46
+ .sort()
47
+ .join('|');
48
+ const templateExtensions = [...appConfig.templatesExt].sort().join('|');
49
+ return [
50
+ path.resolve(outdir),
51
+ hashAppConfigFile(appConfig),
52
+ templateExtensions,
53
+ pluginNames,
54
+ 'es2022',
55
+ 'esm',
56
+ 'external-packages',
57
+ ].join('::');
58
+ }
59
+ function readPagesUnifiedGraphManifest(appConfig) {
60
+ const manifest = readProductionCacheManifest(getPagesUnifiedGraphCachePath(appConfig));
61
+ if (!manifest?.outputs) {
62
+ return undefined;
63
+ }
64
+ return manifest;
65
+ }
66
+ function writePagesUnifiedGraphManifest(appConfig, manifest) {
67
+ writeProductionCacheManifest(getPagesUnifiedGraphCachePath(appConfig), manifest);
68
+ }
69
+ function createSafeGraphEntryKey(entryPath, rootDir) {
70
+ const relativePath = path.relative(rootDir, entryPath).replace(/\.[^.]+$/u, '');
71
+ const safeKey = relativePath.replace(/[^a-zA-Z0-9]+/gu, '-').replace(/^-+|-+$/gu, '');
72
+ return safeKey.length > 0 ? safeKey : 'page';
73
+ }
74
+ /**
75
+ * @remarks
76
+ * Uses {@link BuildResult.entryOutputs} when present so resolution follows the
77
+ * bundler's `facadeModuleId` instead of guessing from sanitized entry keys.
78
+ * Basename prefix matching remains only as a fallback for backends that omit
79
+ * `entryOutputs`; it can mis-associate keys such as `pages-blog` and
80
+ * `pages-blog-index`.
81
+ */
82
+ function resolveOutputForEntrypoint(entryPath, entryKey, buildResult) {
83
+ const exactOutput = buildResult.entryOutputs?.[path.resolve(entryPath)];
84
+ if (exactOutput) {
85
+ return exactOutput;
86
+ }
87
+ for (const { path: outputPath } of buildResult.outputs) {
88
+ const outputBaseName = path.basename(outputPath);
89
+ if (outputBaseName.startsWith(`${entryKey}-`) && /\.(?:m?js)$/u.test(outputBaseName)) {
90
+ return outputPath;
91
+ }
92
+ if (outputBaseName === `${entryKey}.js` || outputBaseName === `${entryKey}.mjs`) {
93
+ return outputPath;
94
+ }
95
+ }
96
+ return undefined;
97
+ }
98
+ function isManifestValidForEntries(manifest, appConfig, outdir, entryPaths) {
99
+ if (!isProductionCacheManifestCurrent(manifest, getCorePackageVersion())) {
100
+ return false;
101
+ }
102
+ if (!matchesProductionCacheFingerprint(manifest, createBuildInputsFingerprint(appConfig))) {
103
+ return false;
104
+ }
105
+ if (!matchesProductionCacheBuildKey(manifest, createPagesUnifiedGraphBuildKey(appConfig, outdir))) {
106
+ return false;
107
+ }
108
+ return entryPaths.every((entryPath) => {
109
+ const resolvedEntryPath = path.resolve(entryPath);
110
+ const outputPath = manifest.outputs[resolvedEntryPath];
111
+ return outputPath ? fileSystem.exists(outputPath) : false;
112
+ });
113
+ }
114
+ /**
115
+ * Builds eligible static pages in one Rolldown invocation and seeds route-module disk cache.
116
+ */
117
+ export async function ensurePagesUnifiedGraphBuilt(options) {
118
+ if (!shouldBuildPagesUnifiedGraph()) {
119
+ return undefined;
120
+ }
121
+ const eligibleEntryPaths = options.entryPaths
122
+ .map((entryPath) => path.resolve(entryPath))
123
+ .filter((entryPath) => isPagesUnifiedGraphPage(entryPath, options.appConfig));
124
+ if (eligibleEntryPaths.length === 0) {
125
+ return undefined;
126
+ }
127
+ const outdir = path.resolve(options.outdir);
128
+ const existingManifest = options.force ? undefined : readPagesUnifiedGraphManifest(options.appConfig);
129
+ if (existingManifest &&
130
+ isManifestValidForEntries(existingManifest, options.appConfig, outdir, eligibleEntryPaths)) {
131
+ appLogger.debug('Reusing pages unified graph cache');
132
+ return existingManifest;
133
+ }
134
+ const routeModuleBuildCache = getSharedRouteModuleBuildCache(outdir, options.appConfig);
135
+ const entryRecord = {};
136
+ const entryKeysByPath = new Map();
137
+ for (const entryPath of eligibleEntryPaths) {
138
+ const entryKey = createSafeGraphEntryKey(entryPath, options.appConfig.rootDir);
139
+ entryRecord[entryKey] = entryPath;
140
+ entryKeysByPath.set(entryPath, entryKey);
141
+ }
142
+ appLogger.debugTime('pagesUnifiedGraphBuild');
143
+ const buildOptions = createServerBuildRequest(options.appConfig, {
144
+ profile: 'route-module',
145
+ entrypoints: entryRecord,
146
+ outdir,
147
+ splitting: true,
148
+ naming: '[name]-[hash].[ext]',
149
+ });
150
+ const plugins = buildOptions.plugins ?? [];
151
+ const buildResult = await build(buildOptions, requireBuildRuntime(options.appConfig).getProfile('route-module'));
152
+ appLogger.debugTimeEnd('pagesUnifiedGraphBuild');
153
+ if (!buildResult.success) {
154
+ const details = buildResult.logs.map((log) => log.message).join(' | ');
155
+ throw new Error(`Pages unified graph build failed: ${details}`);
156
+ }
157
+ const outputs = {};
158
+ for (const entryPath of eligibleEntryPaths) {
159
+ const fileHash = fileSystem.hash(entryPath);
160
+ const entryKey = entryKeysByPath.get(entryPath);
161
+ const compiledOutput = entryKey ? resolveOutputForEntrypoint(entryPath, entryKey, buildResult) : undefined;
162
+ if (!compiledOutput) {
163
+ throw new Error(`Pages unified graph build produced no output for ${entryPath}`);
164
+ }
165
+ outputs[entryPath] = compiledOutput;
166
+ routeModuleBuildCache.recordBuild({
167
+ filePath: entryPath,
168
+ rootDir: options.appConfig.rootDir,
169
+ outdir,
170
+ fileHash,
171
+ outputPath: compiledOutput,
172
+ dependencyModulePaths: resolveRouteModuleDependencyPaths(buildResult, entryPath, options.appConfig.rootDir),
173
+ externalPackages: true,
174
+ plugins,
175
+ });
176
+ }
177
+ const manifest = {
178
+ invalidationVersion: getCorePackageVersion(),
179
+ buildInputsFingerprint: createBuildInputsFingerprint(options.appConfig),
180
+ buildKey: createPagesUnifiedGraphBuildKey(options.appConfig, outdir),
181
+ builtAt: Date.now(),
182
+ outputs,
183
+ };
184
+ writePagesUnifiedGraphManifest(options.appConfig, manifest);
185
+ appLogger.debug(`Built pages unified graph for ${eligibleEntryPaths.length} entries`);
186
+ return manifest;
187
+ }
188
+ export async function importPagesUnifiedGraphModule(appConfig, filePath) {
189
+ const manifest = readPagesUnifiedGraphManifest(appConfig);
190
+ if (!manifest) {
191
+ return undefined;
192
+ }
193
+ const resolvedFilePath = path.resolve(filePath);
194
+ const outputPath = manifest.outputs[resolvedFilePath];
195
+ if (!outputPath || !fileSystem.exists(outputPath)) {
196
+ return undefined;
197
+ }
198
+ return (await import(/* @vite-ignore */ pathToFileURL(outputPath).href));
199
+ }
@@ -0,0 +1,21 @@
1
+ import type { EcoPagesAppConfig } from '../../types/internal-types.js';
2
+ /**
3
+ * Shared manifest fields for persisted production build caches.
4
+ */
5
+ export interface ProductionCacheManifestBase {
6
+ invalidationVersion?: string;
7
+ corePackageVersion?: string;
8
+ buildInputsFingerprint?: string;
9
+ buildKey?: string;
10
+ builtAt?: number;
11
+ }
12
+ export type ProductionBuildCacheKind = 'server-entry' | 'route-module' | 'pages-graph';
13
+ /** Returns every persisted production cache manifest path for one app. */
14
+ export declare function getProductionBuildCacheManifestPaths(appConfig: EcoPagesAppConfig): string[];
15
+ /** Removes all persisted production cache manifests for one app. */
16
+ export declare function clearPersistedProductionBuildCacheManifests(appConfig: EcoPagesAppConfig): void;
17
+ export declare function readProductionCacheManifest<T extends ProductionCacheManifestBase>(manifestPath: string): T | undefined;
18
+ export declare function writeProductionCacheManifest(manifestPath: string, manifest: unknown): void;
19
+ export declare function isProductionCacheManifestCurrent(manifest: ProductionCacheManifestBase | undefined, packageVersion: string): boolean;
20
+ export declare function matchesProductionCacheFingerprint(manifest: ProductionCacheManifestBase | undefined, buildInputsFingerprint: string): boolean;
21
+ export declare function matchesProductionCacheBuildKey(manifest: ProductionCacheManifestBase | undefined, buildKey: string): boolean;
@@ -0,0 +1,56 @@
1
+ import { fileSystem } from '@ecopages/file-system';
2
+ import path from 'node:path';
3
+ import { ROUTE_MODULE_BUILD_CACHE_FILENAME } from './cache-constants.js';
4
+ import { resolveInternalExecutionDir } from '../../utils/resolve-work-dir.js';
5
+ const ROUTE_MODULE_CACHE_OUTDIRS = ['.server-modules', '.server-route-modules'];
6
+ const PAGES_GRAPH_CACHE_DIR = '.server-pages-graph';
7
+ /** Returns every persisted production cache manifest path for one app. */
8
+ export function getProductionBuildCacheManifestPaths(appConfig) {
9
+ const executionDir = resolveInternalExecutionDir(appConfig);
10
+ const paths = [];
11
+ for (const subdir of ROUTE_MODULE_CACHE_OUTDIRS) {
12
+ paths.push(path.join(executionDir, subdir, ROUTE_MODULE_BUILD_CACHE_FILENAME));
13
+ }
14
+ paths.push(path.join(executionDir, '.server-entry', ROUTE_MODULE_BUILD_CACHE_FILENAME));
15
+ paths.push(path.join(executionDir, PAGES_GRAPH_CACHE_DIR, ROUTE_MODULE_BUILD_CACHE_FILENAME));
16
+ return paths;
17
+ }
18
+ /** Removes all persisted production cache manifests for one app. */
19
+ export function clearPersistedProductionBuildCacheManifests(appConfig) {
20
+ if (process.env.NODE_ENV !== 'production') {
21
+ return;
22
+ }
23
+ for (const manifestPath of getProductionBuildCacheManifestPaths(appConfig)) {
24
+ if (fileSystem.exists(manifestPath)) {
25
+ fileSystem.remove(manifestPath);
26
+ }
27
+ }
28
+ }
29
+ export function readProductionCacheManifest(manifestPath) {
30
+ if (!fileSystem.exists(manifestPath)) {
31
+ return undefined;
32
+ }
33
+ try {
34
+ const parsed = JSON.parse(fileSystem.readFileSync(manifestPath));
35
+ if (!parsed || typeof parsed !== 'object') {
36
+ return undefined;
37
+ }
38
+ return parsed;
39
+ }
40
+ catch {
41
+ return undefined;
42
+ }
43
+ }
44
+ export function writeProductionCacheManifest(manifestPath, manifest) {
45
+ fileSystem.ensureDir(path.dirname(manifestPath));
46
+ fileSystem.write(manifestPath, `${JSON.stringify(manifest, null, '\t')}\n`);
47
+ }
48
+ export function isProductionCacheManifestCurrent(manifest, packageVersion) {
49
+ return (manifest?.corePackageVersion ?? manifest?.invalidationVersion) === packageVersion;
50
+ }
51
+ export function matchesProductionCacheFingerprint(manifest, buildInputsFingerprint) {
52
+ return manifest?.buildInputsFingerprint === buildInputsFingerprint;
53
+ }
54
+ export function matchesProductionCacheBuildKey(manifest, buildKey) {
55
+ return manifest?.buildKey === buildKey;
56
+ }
@@ -1,7 +1,6 @@
1
- import type { BuildResult } from './build-adapter.js';
2
- import type { EcoPagesAppConfig } from '../types/internal-types.js';
3
- /** @deprecated Use {@link ROUTE_MODULE_BUILD_CACHE_FILENAME}; both caches share the same manifest filename. */
4
- export declare const SERVER_ENTRY_BUILD_CACHE_FILENAME = ".build-cache.json";
1
+ import type { BuildResult } from '../build-adapter.js';
2
+ import type { EcoPagesAppConfig } from '../../types/internal-types.js';
3
+ export { SERVER_ENTRY_BUILD_CACHE_FILENAME } from './cache-constants.js';
5
4
  export declare const SERVER_BUNDLE_MANIFEST_FILENAME = "manifest.json";
6
5
  export interface ServerBundleDeployManifest {
7
6
  serverEntry: string;
@@ -0,0 +1,153 @@
1
+ import path from 'node:path';
2
+ import { fileSystem } from '@ecopages/file-system';
3
+ import { resolveServerAppBuildPlugins } from '../runtime/build-request-policy.js';
4
+ import { createBuildInputsFingerprint } from './build-input-fingerprint.js';
5
+ import { isProductionCacheManifestCurrent, matchesProductionCacheBuildKey, matchesProductionCacheFingerprint, readProductionCacheManifest, writeProductionCacheManifest, } from './production-build-cache.js';
6
+ import { createPluginCacheKey, getCorePackageVersion } from './cache-keys.js';
7
+ import { RouteModuleDependencyHasher, createRouteModuleDependencyHashes, } from '../../services/module-loading/route-module-dependency-hasher.js';
8
+ import { resolveInternalExecutionDir } from '../../utils/resolve-work-dir.js';
9
+ import { SERVER_BUNDLE_DIR, SERVER_BUNDLE_FILENAME } from '../../utils/resolve-entry-file.js';
10
+ import { SERVER_ENTRY_BUILD_CACHE_FILENAME } from './cache-constants.js';
11
+ export { SERVER_ENTRY_BUILD_CACHE_FILENAME } from './cache-constants.js';
12
+ export const SERVER_BUNDLE_MANIFEST_FILENAME = 'manifest.json';
13
+ function getServerEntryCacheDir(appConfig) {
14
+ return path.join(resolveInternalExecutionDir(appConfig), '.server-entry');
15
+ }
16
+ function getServerEntryCacheManifestPath(appConfig) {
17
+ return path.join(getServerEntryCacheDir(appConfig), SERVER_ENTRY_BUILD_CACHE_FILENAME);
18
+ }
19
+ function hashDependencyGraph(entryPath, dependencyGraph, hasher, rootDir) {
20
+ if (!dependencyGraph) {
21
+ return { [path.resolve(entryPath)]: fileSystem.hash(entryPath) };
22
+ }
23
+ return createRouteModuleDependencyHashes(hasher, { dependencyGraph }, entryPath, rootDir);
24
+ }
25
+ /**
26
+ * Fingerprints the app-owned output-affecting server request policy.
27
+ *
28
+ * @remarks
29
+ * Includes ordered server plugins and JSX ownership plugins via
30
+ * {@link resolveServerAppBuildPlugins}. The versioned prefix intentionally
31
+ * invalidates manifests written before server requests included JSX ownership.
32
+ */
33
+ function createServerEntryBuildKey(appConfig) {
34
+ try {
35
+ return [
36
+ 'server-entry-request-v2',
37
+ 'node',
38
+ 'esm',
39
+ 'external-packages',
40
+ createPluginCacheKey(resolveServerAppBuildPlugins(appConfig)),
41
+ ].join('::');
42
+ }
43
+ catch {
44
+ return 'server-entry-request-v2::node::esm::external-packages';
45
+ }
46
+ }
47
+ export function getServerBundleOutputPaths(appConfig) {
48
+ const distDir = appConfig.absolutePaths?.distDir ?? path.join(appConfig.rootDir, appConfig.distDir);
49
+ const serverOutdir = path.join(distDir, SERVER_BUNDLE_DIR);
50
+ const serverEntryPath = path.join(serverOutdir, SERVER_BUNDLE_FILENAME);
51
+ const manifestPath = path.join(serverOutdir, SERVER_BUNDLE_MANIFEST_FILENAME);
52
+ return { distDir, serverOutdir, serverEntryPath, manifestPath };
53
+ }
54
+ export function readServerEntryBuildCacheManifest(appConfig) {
55
+ return readProductionCacheManifest(getServerEntryCacheManifestPath(appConfig));
56
+ }
57
+ function writeServerEntryBuildCacheManifest(appConfig, manifest) {
58
+ writeProductionCacheManifest(path.join(getServerEntryCacheDir(appConfig), SERVER_ENTRY_BUILD_CACHE_FILENAME), manifest);
59
+ }
60
+ export function writeServerBundleDeployManifest(appConfig, serverEntryPath) {
61
+ const { distDir, manifestPath } = getServerBundleOutputPaths(appConfig);
62
+ fileSystem.ensureDir(path.dirname(manifestPath));
63
+ const payload = {
64
+ serverEntry: path.relative(path.dirname(manifestPath), serverEntryPath) || SERVER_BUNDLE_FILENAME,
65
+ distDir,
66
+ builtAt: Date.now(),
67
+ };
68
+ fileSystem.write(manifestPath, `${JSON.stringify(payload, null, '\t')}\n`);
69
+ }
70
+ export function lookupServerEntryBuildCache(options) {
71
+ if (options.force) {
72
+ return undefined;
73
+ }
74
+ if (process.env.NODE_ENV !== 'production') {
75
+ return undefined;
76
+ }
77
+ const entryPath = path.resolve(options.entryPath);
78
+ const entryHash = fileSystem.hash(entryPath);
79
+ const buildInputsFingerprint = createBuildInputsFingerprint(options.appConfig);
80
+ const buildKey = createServerEntryBuildKey(options.appConfig);
81
+ const manifest = readServerEntryBuildCacheManifest(options.appConfig);
82
+ if (!manifest) {
83
+ return undefined;
84
+ }
85
+ if (!isProductionCacheManifestCurrent(manifest, getCorePackageVersion())) {
86
+ return undefined;
87
+ }
88
+ if (manifest.entryPath !== entryPath ||
89
+ manifest.entryHash !== entryHash ||
90
+ !matchesProductionCacheFingerprint(manifest, buildInputsFingerprint) ||
91
+ !matchesProductionCacheBuildKey(manifest, buildKey)) {
92
+ return undefined;
93
+ }
94
+ const hasher = new RouteModuleDependencyHasher();
95
+ if (!hasher.matchesStoredHashes(manifest.dependencyHashes, entryPath, entryHash)) {
96
+ return undefined;
97
+ }
98
+ const existingOutputs = manifest.outputPaths.filter((outputPath) => fileSystem.exists(outputPath));
99
+ if (existingOutputs.length === 0) {
100
+ return undefined;
101
+ }
102
+ return {
103
+ manifest,
104
+ outputPaths: existingOutputs,
105
+ };
106
+ }
107
+ export function recordServerEntryBuildCache(options) {
108
+ if (process.env.NODE_ENV !== 'production') {
109
+ return;
110
+ }
111
+ const entryPath = path.resolve(options.entryPath);
112
+ const entryHash = fileSystem.hash(entryPath);
113
+ const hasher = new RouteModuleDependencyHasher();
114
+ const dependencyHashes = hashDependencyGraph(entryPath, options.buildResult.dependencyGraph, hasher, options.appConfig.rootDir);
115
+ const manifest = {
116
+ invalidationVersion: getCorePackageVersion(),
117
+ entryPath,
118
+ entryHash,
119
+ buildInputsFingerprint: createBuildInputsFingerprint(options.appConfig),
120
+ buildKey: createServerEntryBuildKey(options.appConfig),
121
+ outputPaths: options.outputPaths,
122
+ dependencyHashes,
123
+ builtAt: Date.now(),
124
+ };
125
+ writeServerEntryBuildCacheManifest(options.appConfig, manifest);
126
+ }
127
+ export function resolveProductionServerEntry(cwd = process.cwd()) {
128
+ const manifestPath = path.join(cwd, 'dist', SERVER_BUNDLE_DIR, SERVER_BUNDLE_MANIFEST_FILENAME);
129
+ if (fileSystem.exists(manifestPath)) {
130
+ try {
131
+ const parsed = JSON.parse(fileSystem.readFileSync(manifestPath));
132
+ if (parsed?.serverEntry) {
133
+ const fromManifest = path.isAbsolute(parsed.serverEntry)
134
+ ? parsed.serverEntry
135
+ : path.join(path.dirname(manifestPath), parsed.serverEntry);
136
+ if (fileSystem.exists(fromManifest)) {
137
+ return fromManifest;
138
+ }
139
+ }
140
+ if (parsed?.distDir) {
141
+ const fromDistDir = path.join(parsed.distDir, SERVER_BUNDLE_DIR, SERVER_BUNDLE_FILENAME);
142
+ if (fileSystem.exists(fromDistDir)) {
143
+ return fromDistDir;
144
+ }
145
+ }
146
+ }
147
+ catch {
148
+ // fall through to legacy path
149
+ }
150
+ }
151
+ const legacyPath = path.join(cwd, 'dist', SERVER_BUNDLE_DIR, SERVER_BUNDLE_FILENAME);
152
+ return fileSystem.exists(legacyPath) ? legacyPath : undefined;
153
+ }
@@ -0,0 +1,96 @@
1
+ import type { EcoSourceTransform } from '../../plugins/source-transform.js';
2
+ import type { EcoBuildPlugin } from './build-types.js';
3
+ /**
4
+ * Which backend owns the app's build pipeline.
5
+ *
6
+ * - `'rolldown'`: the default. Ecopages runs the build directly through
7
+ * its bundler-backed adapter.
8
+ * - `'vite-host'`: a host runtime owns the build. {@link ViteHostBuildAdapter}
9
+ * is exposed as a boundary marker; any direct call into it throws.
10
+ */
11
+ export type BuildOwnership = 'vite-host' | 'rolldown';
12
+ /** A single message emitted by the build backend. */
13
+ export interface BuildLog {
14
+ message: string;
15
+ }
16
+ /** A single artifact emitted by the build backend. */
17
+ export interface BuildOutput {
18
+ path: string;
19
+ }
20
+ /** Per-entrypoint dependency metadata surfaced alongside a build. */
21
+ export interface BuildDependencyGraph {
22
+ entrypoints: Record<string, string[]>;
23
+ }
24
+ /** The full result of one `BuildAdapter.build` call. */
25
+ export interface BuildResult {
26
+ success: boolean;
27
+ logs: BuildLog[];
28
+ outputs: BuildOutput[];
29
+ dependencyGraph?: BuildDependencyGraph;
30
+ entryOutputs?: Record<string, string>;
31
+ }
32
+ /**
33
+ * Options accepted by every `BuildAdapter.build` call.
34
+ *
35
+ * @remarks
36
+ * Fields that the adapter can forward are honored. `splitting: false` disables
37
+ * Rolldown code splitting for single-entrypoint builds. `bundle` and `outbase`
38
+ * are accepted for call-site compatibility but ignored.
39
+ */
40
+ export interface BuildOptions {
41
+ entrypoints: string[] | Record<string, string>;
42
+ outdir?: string;
43
+ /**
44
+ * Base directory for `[dir]` placeholders in `naming`. Currently
45
+ * the bundled adapter derives the base from `root` directly and
46
+ * ignores this field.
47
+ *
48
+ * @deprecated Accepted for call-site compatibility only. Use record-form
49
+ * `entrypoints` keys to preserve directory structure.
50
+ */
51
+ outbase?: string;
52
+ naming?: string;
53
+ conditions?: string[];
54
+ define?: Record<string, string>;
55
+ minify?: boolean;
56
+ treeshaking?: boolean;
57
+ target?: string;
58
+ format?: string;
59
+ sourcemap?: string;
60
+ /** When `false` with a single entrypoint, inlines dynamic imports into one output file. */
61
+ splitting?: boolean;
62
+ root?: string;
63
+ /** @deprecated Accepted for call-site compatibility only. */
64
+ bundle?: boolean;
65
+ externalPackages?: boolean;
66
+ external?: string[];
67
+ jsx?: {
68
+ development?: boolean;
69
+ factory?: string;
70
+ fragment?: string;
71
+ importSource?: string;
72
+ runtime?: 'classic' | 'automatic';
73
+ sideEffects?: boolean;
74
+ };
75
+ plugins?: EcoBuildPlugin[];
76
+ sourceTransforms?: EcoSourceTransform[];
77
+ }
78
+ /** Stable profile identifiers for `BuildAdapter.getTranspileOptions`. */
79
+ export type BuildTranspileProfile = 'browser-script' | 'hmr-runtime' | 'hmr-entrypoint';
80
+ /** Resolved transpile settings for a given profile. */
81
+ export interface BuildTranspileOptions {
82
+ target: string;
83
+ format: string;
84
+ sourcemap: string;
85
+ }
86
+ /** Low-level build backend contract. */
87
+ export interface BuildAdapter {
88
+ readonly ownership?: BuildOwnership;
89
+ build(options: BuildOptions): Promise<BuildResult>;
90
+ resolve(importPath: string, rootDir: string): string;
91
+ getTranspileOptions(profile: BuildTranspileProfile): BuildTranspileOptions;
92
+ }
93
+ /** Runtime-facing facade for issuing builds. */
94
+ export interface BuildExecutor {
95
+ build(options: BuildOptions): Promise<BuildResult>;
96
+ }
@@ -0,0 +1 @@
1
+ export {};