@ecopages/core 0.2.0-beta.4 → 0.2.0-beta.41

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 (611) hide show
  1. package/README.md +40 -9
  2. package/package.json +371 -33
  3. package/src/adapters/README.md +6 -2
  4. package/src/adapters/abstract/application-adapter.d.ts +115 -6
  5. package/src/adapters/abstract/application-adapter.js +261 -120
  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 +16 -2
  10. package/src/adapters/abstract/server-adapter.js +22 -14
  11. package/src/adapters/abstract/ws-pattern-matcher.d.ts +12 -0
  12. package/src/adapters/abstract/ws-pattern-matcher.js +28 -0
  13. package/src/adapters/bun/bun-user-websocket-lifecycle.d.ts +22 -0
  14. package/src/adapters/bun/bun-user-websocket-lifecycle.js +93 -0
  15. package/src/adapters/bun/client-bridge.d.ts +1 -0
  16. package/src/adapters/bun/client-bridge.js +51 -47
  17. package/src/adapters/bun/create-app.d.ts +9 -6
  18. package/src/adapters/bun/create-app.js +171 -130
  19. package/src/adapters/bun/hmr-manager.d.ts +1 -1
  20. package/src/adapters/bun/hmr-manager.js +62 -57
  21. package/src/adapters/bun/index.d.ts +1 -1
  22. package/src/adapters/bun/index.js +2 -8
  23. package/src/adapters/bun/runtime-host.d.ts +1 -1
  24. package/src/adapters/bun/runtime-host.js +61 -54
  25. package/src/adapters/bun/server-adapter.d.ts +91 -41
  26. package/src/adapters/bun/server-adapter.js +566 -426
  27. package/src/adapters/bun/static-preview-host.d.ts +1 -1
  28. package/src/adapters/bun/static-preview-host.js +43 -41
  29. package/src/adapters/create-app.d.ts +13 -11
  30. package/src/adapters/create-app.js +11 -63
  31. package/src/adapters/index.d.ts +2 -2
  32. package/src/adapters/index.js +2 -8
  33. package/src/adapters/node/create-app.d.ts +8 -3
  34. package/src/adapters/node/create-app.js +126 -84
  35. package/src/adapters/node/http-request-bridge.js +147 -106
  36. package/src/adapters/node/node-client-bridge.d.ts +1 -0
  37. package/src/adapters/node/node-client-bridge.js +62 -61
  38. package/src/adapters/node/node-hmr-manager.d.ts +1 -1
  39. package/src/adapters/node/node-hmr-manager.js +58 -48
  40. package/src/adapters/node/runtime-host.d.ts +1 -1
  41. package/src/adapters/node/runtime-host.js +96 -89
  42. package/src/adapters/node/server-adapter-dependencies.js +18 -17
  43. package/src/adapters/node/server-adapter.d.ts +63 -23
  44. package/src/adapters/node/server-adapter.js +346 -297
  45. package/src/adapters/node/static-content-server.d.ts +1 -0
  46. package/src/adapters/node/static-content-server.js +172 -183
  47. package/src/adapters/node/static-preview-host.d.ts +1 -1
  48. package/src/adapters/node/static-preview-host.js +88 -64
  49. package/src/adapters/shared/hmr/dev-transform-entrypoint-registry.d.ts +16 -0
  50. package/src/adapters/shared/hmr/dev-transform-entrypoint-registry.js +32 -0
  51. package/src/adapters/shared/{hmr-html-response.d.ts → hmr/hmr-html-response.d.ts} +2 -2
  52. package/src/adapters/shared/hmr/hmr-html-response.js +50 -0
  53. package/src/adapters/shared/hmr/shared-hmr-manager.d.ts +92 -0
  54. package/src/adapters/shared/hmr/shared-hmr-manager.js +446 -0
  55. package/src/adapters/shared/http/api-request-pipeline.d.ts +23 -0
  56. package/src/adapters/shared/http/api-request-pipeline.js +132 -0
  57. package/src/adapters/shared/{api-response.d.ts → http/api-response.d.ts} +1 -1
  58. package/src/adapters/shared/http/api-response.js +79 -0
  59. package/src/adapters/shared/http/create-body-response.d.ts +12 -0
  60. package/src/adapters/shared/http/create-body-response.js +26 -0
  61. package/src/adapters/shared/http/define-api-handler.d.ts +90 -0
  62. package/src/adapters/shared/http/define-api-handler.js +49 -0
  63. package/src/adapters/shared/{explicit-static-render-preparation.d.ts → http/explicit-static-render-preparation.d.ts} +3 -3
  64. package/src/adapters/shared/http/explicit-static-render-preparation.js +29 -0
  65. package/src/adapters/shared/{explicit-static-route-matcher.d.ts → http/explicit-static-route-matcher.d.ts} +3 -9
  66. package/src/adapters/shared/http/explicit-static-route-matcher.js +59 -0
  67. package/src/adapters/shared/{file-route-middleware-pipeline.d.ts → http/file-route-middleware-pipeline.d.ts} +2 -2
  68. package/src/adapters/shared/http/file-route-middleware-pipeline.js +84 -0
  69. package/src/adapters/shared/{fs-server-response-factory.d.ts → http/fs-server-response-factory.d.ts} +7 -2
  70. package/src/adapters/shared/http/fs-server-response-factory.js +106 -0
  71. package/src/adapters/shared/{fs-server-response-matcher.d.ts → http/fs-server-response-matcher.d.ts} +25 -5
  72. package/src/adapters/shared/http/fs-server-response-matcher.js +258 -0
  73. package/src/adapters/shared/http/run-middleware-chain.d.ts +5 -0
  74. package/src/adapters/shared/http/run-middleware-chain.js +17 -0
  75. package/src/adapters/shared/{application-adapter.d.ts → runtime/application-adapter.d.ts} +2 -2
  76. package/src/adapters/shared/runtime/application-adapter.js +75 -0
  77. package/src/adapters/shared/runtime/collect-dev-prewarm-plan.d.ts +11 -0
  78. package/src/adapters/shared/runtime/collect-dev-prewarm-plan.js +29 -0
  79. package/src/adapters/shared/runtime/copy-runtime-public-dir.d.ts +6 -0
  80. package/src/adapters/shared/runtime/copy-runtime-public-dir.js +27 -0
  81. package/src/adapters/shared/runtime/dev-static-route-prewarm.d.ts +16 -0
  82. package/src/adapters/shared/runtime/dev-static-route-prewarm.js +66 -0
  83. package/src/adapters/shared/runtime/port-manager.d.ts +116 -0
  84. package/src/adapters/shared/runtime/port-manager.js +226 -0
  85. package/src/adapters/shared/{render-context.d.ts → runtime/render-context.d.ts} +2 -2
  86. package/src/adapters/shared/runtime/render-context.js +99 -0
  87. package/src/adapters/shared/{runtime-app-bootstrap.d.ts → runtime/runtime-app-bootstrap.d.ts} +4 -3
  88. package/src/adapters/shared/runtime/runtime-app-bootstrap.js +38 -0
  89. package/src/adapters/shared/runtime/runtime-server-lifecycle.d.ts +45 -0
  90. package/src/adapters/shared/runtime/runtime-server-lifecycle.js +71 -0
  91. package/src/adapters/shared/{server-adapter.d.ts → runtime/server-adapter.d.ts} +31 -50
  92. package/src/adapters/shared/runtime/server-adapter.js +301 -0
  93. package/src/adapters/shared/{server-route-handler.d.ts → runtime/server-route-handler.d.ts} +6 -33
  94. package/src/adapters/shared/runtime/server-route-handler.js +77 -0
  95. package/src/adapters/shared/{server-static-builder.d.ts → runtime/server-static-builder.d.ts} +27 -35
  96. package/src/adapters/shared/runtime/server-static-builder.js +172 -0
  97. package/src/adapters/shared/{static-preview-host.d.ts → runtime/static-preview-host.d.ts} +6 -1
  98. package/src/adapters/shared/ws/node-http-websocket-upgrades.d.ts +21 -0
  99. package/src/adapters/shared/ws/node-http-websocket-upgrades.js +109 -0
  100. package/src/adapters/shared/ws/websocket-lifecycle.d.ts +24 -0
  101. package/src/adapters/shared/ws/websocket-lifecycle.js +62 -0
  102. package/src/build/README.md +191 -31
  103. package/src/build/app-build-manifest-runtime.d.ts +39 -0
  104. package/src/build/app-build-manifest-runtime.js +145 -0
  105. package/src/build/browser/browser-runtime-manifest.js +58 -0
  106. package/src/build/browser/browser-runtime-plugin-helpers.js +34 -0
  107. package/src/build/{browser-runtime-plugin.d.ts → browser/browser-runtime-plugin.d.ts} +1 -1
  108. package/src/build/browser/browser-runtime-plugin.js +216 -0
  109. package/src/build/browser/jsx-ownership-plugins.d.ts +24 -0
  110. package/src/build/browser/jsx-ownership-plugins.js +55 -0
  111. package/src/build/browser/lit-static-render-worker-context.d.ts +2 -0
  112. package/src/build/browser/lit-static-render-worker-context.js +4 -0
  113. package/src/build/build-adapter.d.ts +29 -334
  114. package/src/build/build-adapter.js +273 -237
  115. package/src/build/cache/build-input-fingerprint.d.ts +28 -0
  116. package/src/build/cache/build-input-fingerprint.js +33 -0
  117. package/src/build/cache/cache-constants.d.ts +4 -0
  118. package/src/build/cache/cache-constants.js +4 -0
  119. package/src/build/cache/cache-keys.d.ts +22 -0
  120. package/src/build/cache/cache-keys.js +71 -0
  121. package/src/build/cache/pages-unified-graph-build.d.ts +31 -0
  122. package/src/build/cache/pages-unified-graph-build.js +199 -0
  123. package/src/build/cache/production-build-cache.d.ts +21 -0
  124. package/src/build/cache/production-build-cache.js +56 -0
  125. package/src/build/cache/server-entry-build-cache.d.ts +43 -0
  126. package/src/build/cache/server-entry-build-cache.js +153 -0
  127. package/src/build/contracts/build-contracts.d.ts +96 -0
  128. package/src/build/contracts/build-contracts.js +1 -0
  129. package/src/build/contracts/build-manifest.d.ts +90 -0
  130. package/src/build/contracts/build-manifest.js +64 -0
  131. package/src/build/contracts/build-types.js +1 -0
  132. package/src/build/contracts/content-virtual-modules.d.ts +12 -0
  133. package/src/build/contracts/content-virtual-modules.js +29 -0
  134. package/src/build/{rolldown-adapter-helpers.d.ts → rolldown/rolldown-adapter-helpers.d.ts} +32 -9
  135. package/src/build/rolldown/rolldown-adapter-helpers.js +458 -0
  136. package/src/build/{rolldown-build-adapter.d.ts → rolldown/rolldown-build-adapter.d.ts} +3 -7
  137. package/src/build/rolldown/rolldown-build-adapter.js +57 -0
  138. package/src/build/rolldown/rolldown-build-invocation-metrics.d.ts +12 -0
  139. package/src/build/rolldown/rolldown-build-invocation-metrics.js +39 -0
  140. package/src/build/{rolldown-plugin-bridge.d.ts → rolldown/rolldown-plugin-bridge.d.ts} +16 -2
  141. package/src/build/rolldown/rolldown-plugin-bridge.js +284 -0
  142. package/src/build/rolldown/rolldown-source-transform-pass.d.ts +15 -0
  143. package/src/build/rolldown/rolldown-source-transform-pass.js +70 -0
  144. package/src/build/rolldown/runtime-build-output-normalizer.d.ts +10 -0
  145. package/src/build/rolldown/runtime-build-output-normalizer.js +253 -0
  146. package/src/build/rolldown/server-side-css-shim-plugin.js +58 -0
  147. package/src/build/runtime/build-profile-options.d.ts +7 -0
  148. package/src/build/runtime/build-profile-options.js +37 -0
  149. package/src/build/runtime/build-request-identity.d.ts +17 -0
  150. package/src/build/runtime/build-request-identity.js +79 -0
  151. package/src/build/runtime/build-request-policy.d.ts +58 -0
  152. package/src/build/runtime/build-request-policy.js +84 -0
  153. package/src/build/runtime/build-runtime.d.ts +28 -0
  154. package/src/build/runtime/build-runtime.js +75 -0
  155. package/src/build/runtime/deduping-build-executor.d.ts +21 -0
  156. package/src/build/runtime/deduping-build-executor.js +40 -0
  157. package/src/build/runtime/parallel-build-executor.d.ts +21 -0
  158. package/src/build/runtime/parallel-build-executor.js +60 -0
  159. package/src/build/{serialized-build-executor.d.ts → runtime/serialized-build-executor.d.ts} +1 -1
  160. package/src/build/runtime/serialized-build-executor.js +79 -0
  161. package/src/cache/index.d.ts +2 -1
  162. package/src/cache/index.js +7 -6
  163. package/src/cache/module-parse-cache.d.ts +5 -0
  164. package/src/cache/module-parse-cache.js +122 -67
  165. package/src/cache/module-transform-profiler.d.ts +8 -0
  166. package/src/cache/module-transform-profiler.js +8 -0
  167. package/src/client/navigation-scripts/classification.d.ts +16 -0
  168. package/src/client/navigation-scripts/classification.js +49 -0
  169. package/src/client/navigation-scripts/index.d.ts +3 -0
  170. package/src/client/navigation-scripts/index.js +3 -0
  171. package/src/client/navigation-scripts/navigation-scripts.test.browser.d.ts +1 -0
  172. package/src/client/navigation-scripts/navigation-scripts.test.browser.js +61 -0
  173. package/src/client/navigation-scripts/registry.d.ts +11 -0
  174. package/src/client/navigation-scripts/registry.js +16 -0
  175. package/src/client/navigation-scripts/rerun-queue.d.ts +37 -0
  176. package/src/client/navigation-scripts/rerun-queue.js +90 -0
  177. package/src/client/scroll.d.ts +17 -0
  178. package/src/client/scroll.js +33 -0
  179. package/src/client/scroll.test.browser.d.ts +1 -0
  180. package/src/client/scroll.test.browser.js +31 -0
  181. package/src/client/view-transitions.d.ts +32 -0
  182. package/src/client/view-transitions.js +120 -0
  183. package/src/client/view-transitions.test.browser.d.ts +1 -0
  184. package/src/client/view-transitions.test.browser.js +56 -0
  185. package/src/config/config-builder.d.ts +40 -10
  186. package/src/config/config-builder.js +647 -600
  187. package/src/config/constants.d.ts +1 -0
  188. package/src/config/constants.js +44 -23
  189. package/src/declarations.d.ts +1 -0
  190. package/src/dev/README.md +24 -0
  191. package/src/dev/client-bridge-registry.d.ts +5 -0
  192. package/src/dev/client-bridge-registry.js +10 -0
  193. package/src/dev/dev-client-ownership.d.ts +7 -0
  194. package/src/dev/dev-client-ownership.js +8 -0
  195. package/src/dev/hmr-manager-registry.d.ts +8 -0
  196. package/src/dev/hmr-manager-registry.js +10 -0
  197. package/src/dev/host-runtime.d.ts +3 -0
  198. package/src/dev/host-runtime.js +25 -23
  199. package/src/dev/runtime-server-started-message.d.ts +2 -0
  200. package/src/dev/runtime-server-started-message.js +3 -0
  201. package/src/dev/sc-server.js +106 -103
  202. package/src/dev/transform-server/dev-transform-bundler.d.ts +24 -0
  203. package/src/dev/transform-server/dev-transform-bundler.js +79 -0
  204. package/src/dev/transform-server/dev-transform-externalize-plugin.d.ts +12 -0
  205. package/src/dev/transform-server/dev-transform-externalize-plugin.js +29 -0
  206. package/src/dev/transform-server/dev-transform-import-rewriter.d.ts +16 -0
  207. package/src/dev/transform-server/dev-transform-import-rewriter.js +126 -0
  208. package/src/dev/transform-server/dev-transform-module-kind.d.ts +13 -0
  209. package/src/dev/transform-server/dev-transform-module-kind.js +17 -0
  210. package/src/dev/transform-server/dev-transform-runtime-specifiers.d.ts +5 -0
  211. package/src/dev/transform-server/dev-transform-runtime-specifiers.js +16 -0
  212. package/src/dev/transform-server/dev-transform-server.d.ts +41 -0
  213. package/src/dev/transform-server/dev-transform-server.js +191 -0
  214. package/src/dev/transform-server/dev-transform-url.d.ts +13 -0
  215. package/src/dev/transform-server/dev-transform-url.js +58 -0
  216. package/src/dev/transform-server/dev-transform-vendor-registry.d.ts +28 -0
  217. package/src/dev/transform-server/dev-transform-vendor-registry.js +158 -0
  218. package/src/dev/transform-server/index.d.ts +6 -0
  219. package/src/dev/transform-server/index.js +4 -0
  220. package/src/dev/transform-server/types.d.ts +15 -0
  221. package/src/dev/transform-server/types.js +1 -0
  222. package/src/dev-toolbar/README.md +52 -0
  223. package/src/dev-toolbar/define-dev-tool.d.ts +21 -0
  224. package/src/dev-toolbar/define-dev-tool.js +9 -0
  225. package/src/dev-toolbar/dev-toolbar-config.d.ts +25 -0
  226. package/src/dev-toolbar/dev-toolbar-config.js +19 -0
  227. package/src/dev-toolbar/dev-toolbar-host.d.ts +49 -0
  228. package/src/dev-toolbar/dev-toolbar-host.js +117 -0
  229. package/src/dev-toolbar/dev-toolbar-html-response.d.ts +11 -0
  230. package/src/dev-toolbar/dev-toolbar-html-response.js +14 -0
  231. package/src/dev-toolbar/dev-toolbar-manifest-contract.d.ts +22 -0
  232. package/src/dev-toolbar/dev-toolbar-manifest-contract.js +2 -0
  233. package/src/dev-toolbar/dev-toolbar-manifest.d.ts +15 -0
  234. package/src/dev-toolbar/dev-toolbar-manifest.js +52 -0
  235. package/src/dev-toolbar/dev-toolbar-package.d.ts +34 -0
  236. package/src/dev-toolbar/dev-toolbar-package.js +78 -0
  237. package/src/dev-toolbar/dev-toolbar-runtime-paths.d.ts +10 -0
  238. package/src/dev-toolbar/dev-toolbar-runtime-paths.js +13 -0
  239. package/src/diagnostics/request-build-dedupe.d.ts +18 -0
  240. package/src/diagnostics/request-build-dedupe.js +39 -0
  241. package/src/diagnostics/request-pipeline-metrics.d.ts +38 -0
  242. package/src/diagnostics/request-pipeline-metrics.js +121 -0
  243. package/src/diagnostics/startup-trace.d.ts +81 -0
  244. package/src/diagnostics/startup-trace.js +281 -0
  245. package/src/eco/README.md +17 -0
  246. package/src/eco/component-identity.d.ts +13 -0
  247. package/src/eco/component-identity.js +18 -0
  248. package/src/eco/eco-declared-component.d.ts +15 -0
  249. package/src/eco/eco-declared-component.js +23 -0
  250. package/src/eco/eco.browser.js +63 -70
  251. package/src/eco/eco.js +163 -97
  252. package/src/eco/eco.types.d.ts +47 -8
  253. package/src/eco/eco.types.js +5 -0
  254. package/src/eco/eco.utils.d.ts +1 -1
  255. package/src/eco/eco.utils.js +1 -10
  256. package/src/eco/global-injector-map.js +55 -41
  257. package/src/eco/lazy-injector-map.js +90 -60
  258. package/src/eco/module-dependencies.js +52 -44
  259. package/src/eco/page-layout-normalization.d.ts +21 -0
  260. package/src/eco/page-layout-normalization.js +69 -0
  261. package/src/env.d.ts +2 -0
  262. package/src/errors/http-error.d.ts +8 -0
  263. package/src/errors/http-error.js +66 -49
  264. package/src/errors/index.d.ts +1 -0
  265. package/src/errors/index.js +3 -6
  266. package/src/errors/locals-access-error.js +5 -8
  267. package/src/errors/undeclared-component-dependency-error.d.ts +11 -0
  268. package/src/errors/undeclared-component-dependency-error.js +17 -0
  269. package/src/global/app-logger.js +3 -6
  270. package/src/hmr/README.md +21 -0
  271. package/src/hmr/client/hmr-runtime.js +119 -110
  272. package/src/hmr/client/module-update.d.ts +13 -0
  273. package/src/hmr/client/module-update.js +39 -0
  274. package/src/hmr/hmr-asset-paths.d.ts +14 -0
  275. package/src/hmr/hmr-asset-paths.js +22 -0
  276. package/src/hmr/hmr-entrypoint-output.d.ts +21 -0
  277. package/src/hmr/hmr-entrypoint-output.js +34 -0
  278. package/src/hmr/hmr-file-change-prep.d.ts +10 -0
  279. package/src/hmr/hmr-file-change-prep.js +14 -0
  280. package/src/hmr/hmr-registered-entrypoints-context.d.ts +7 -0
  281. package/src/hmr/hmr-registered-entrypoints-context.js +1 -0
  282. package/src/hmr/hmr-runtime-paths.d.ts +10 -0
  283. package/src/hmr/hmr-runtime-paths.js +13 -0
  284. package/src/hmr/hmr-strategy.d.ts +9 -0
  285. package/src/hmr/hmr-strategy.js +113 -42
  286. package/src/hmr/strategies/default-hmr-strategy.js +55 -33
  287. package/src/hmr/strategies/js-hmr-strategy.d.ts +6 -97
  288. package/src/hmr/strategies/js-hmr-strategy.js +107 -167
  289. package/src/hmr/strategies/server-rendered-template-hmr-strategy.d.ts +17 -0
  290. package/src/hmr/strategies/server-rendered-template-hmr-strategy.js +35 -0
  291. package/src/index.browser.d.ts +1 -0
  292. package/src/index.browser.js +2 -4
  293. package/src/index.d.ts +4 -1
  294. package/src/index.js +7 -21
  295. package/src/integrations/ghtml/ghtml-renderer.d.ts +2 -6
  296. package/src/integrations/ghtml/ghtml-renderer.js +12 -56
  297. package/src/integrations/ghtml/ghtml.constants.js +1 -4
  298. package/src/integrations/ghtml/ghtml.plugin.d.ts +3 -16
  299. package/src/integrations/ghtml/ghtml.plugin.js +10 -20
  300. package/src/islands/README.md +25 -0
  301. package/src/islands/island-host.d.ts +37 -0
  302. package/src/islands/island-host.js +55 -0
  303. package/src/plugins/README.md +2 -1
  304. package/src/plugins/alias-resolver-cache.d.ts +6 -9
  305. package/src/plugins/alias-resolver-cache.js +114 -97
  306. package/src/plugins/alias-resolver-plugin.d.ts +3 -3
  307. package/src/plugins/alias-resolver-plugin.js +35 -62
  308. package/src/plugins/define-integration.d.ts +26 -0
  309. package/src/plugins/define-integration.js +20 -0
  310. package/src/plugins/eco-component-meta-plugin.d.ts +6 -102
  311. package/src/plugins/eco-component-meta-plugin.js +120 -162
  312. package/src/plugins/foreign-jsx-override-plugin.d.ts +1 -1
  313. package/src/plugins/foreign-jsx-override-plugin.js +49 -37
  314. package/src/plugins/integration-plugin.d.ts +43 -14
  315. package/src/plugins/integration-plugin.js +212 -190
  316. package/src/plugins/jsx-import-source.utils.d.ts +8 -0
  317. package/src/plugins/jsx-import-source.utils.js +21 -0
  318. package/src/plugins/processor.d.ts +71 -12
  319. package/src/plugins/processor.js +168 -130
  320. package/src/plugins/runtime-capability.js +1 -0
  321. package/src/plugins/source-transform.d.ts +32 -1
  322. package/src/plugins/source-transform.js +112 -60
  323. package/src/plugins/tsconfig-import-resolver.d.ts +35 -0
  324. package/src/plugins/tsconfig-import-resolver.js +235 -0
  325. package/src/route-renderer/GRAPH.md +26 -32
  326. package/src/route-renderer/README.md +54 -33
  327. package/src/route-renderer/orchestration/document-shell/document-shell-render.service.d.ts +107 -0
  328. package/src/route-renderer/orchestration/document-shell/document-shell-render.service.js +155 -0
  329. package/src/route-renderer/orchestration/document-shell/layout-shell-props.service.d.ts +20 -0
  330. package/src/route-renderer/orchestration/document-shell/layout-shell-props.service.js +37 -0
  331. package/src/route-renderer/orchestration/{component-render-context.d.ts → foreign-child/component-render-context.d.ts} +8 -15
  332. package/src/route-renderer/orchestration/foreign-child/component-render-context.js +196 -0
  333. package/src/route-renderer/orchestration/{render-output.utils.d.ts → foreign-child/foreign-child-output.utils.d.ts} +17 -7
  334. package/src/route-renderer/orchestration/foreign-child/foreign-child-output.utils.js +191 -0
  335. package/src/route-renderer/orchestration/{foreign-subtree-execution.service.d.ts → foreign-child/foreign-subtree-execution.service.d.ts} +64 -34
  336. package/src/route-renderer/orchestration/foreign-child/foreign-subtree-execution.service.js +354 -0
  337. package/src/route-renderer/orchestration/foreign-child/owning-renderer-resolution.d.ts +19 -0
  338. package/src/route-renderer/orchestration/foreign-child/owning-renderer-resolution.js +36 -0
  339. package/src/route-renderer/orchestration/integration-renderer.d.ts +41 -151
  340. package/src/route-renderer/orchestration/integration-renderer.js +798 -988
  341. package/src/route-renderer/orchestration/integration-renderer.test-fixtures.d.ts +75 -0
  342. package/src/route-renderer/orchestration/integration-renderer.test-fixtures.js +173 -0
  343. package/src/route-renderer/orchestration/ownership-graph/component-graph-collectors.d.ts +10 -0
  344. package/src/route-renderer/orchestration/ownership-graph/component-graph-collectors.js +132 -0
  345. package/src/route-renderer/orchestration/ownership-graph/component-graph.d.ts +34 -0
  346. package/src/route-renderer/orchestration/ownership-graph/component-graph.js +89 -0
  347. package/src/route-renderer/orchestration/{ownership-validation.service.d.ts → ownership-graph/ownership-validation.service.d.ts} +6 -2
  348. package/src/route-renderer/orchestration/ownership-graph/ownership-validation.service.js +77 -0
  349. package/src/route-renderer/orchestration/page-browser-graph/global-injector-assets.service.d.ts +7 -0
  350. package/src/route-renderer/orchestration/page-browser-graph/global-injector-assets.service.js +30 -0
  351. package/src/route-renderer/orchestration/page-browser-graph/grouped-graph-build-plan.d.ts +15 -0
  352. package/src/route-renderer/orchestration/page-browser-graph/grouped-graph-build-plan.js +9 -0
  353. package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-contribution.merge.d.ts +5 -0
  354. package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-contribution.merge.js +30 -0
  355. package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-merge.utils.d.ts +12 -0
  356. package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-merge.utils.js +32 -0
  357. package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-session.d.ts +126 -0
  358. package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-session.js +542 -0
  359. package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph.service.d.ts +47 -0
  360. package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph.service.js +232 -0
  361. package/src/route-renderer/orchestration/{processed-asset-dedupe.d.ts → page-browser-graph/processed-asset-dedupe.d.ts} +1 -1
  362. package/src/route-renderer/orchestration/page-browser-graph/processed-asset-dedupe.js +23 -0
  363. package/src/route-renderer/orchestration/page-browser-graph/route-instance-key.d.ts +29 -0
  364. package/src/route-renderer/orchestration/page-browser-graph/route-instance-key.js +54 -0
  365. package/src/route-renderer/orchestration/route-pipeline/integration-route-render-adapter.d.ts +38 -0
  366. package/src/route-renderer/orchestration/route-pipeline/integration-route-render-adapter.js +26 -0
  367. package/src/route-renderer/orchestration/route-pipeline/marker-artifact.utils.d.ts +6 -0
  368. package/src/route-renderer/orchestration/route-pipeline/marker-artifact.utils.js +25 -0
  369. package/src/route-renderer/orchestration/route-pipeline/robots-meta.contribution.d.ts +15 -0
  370. package/src/route-renderer/orchestration/route-pipeline/robots-meta.contribution.js +43 -0
  371. package/src/route-renderer/orchestration/route-pipeline/route-html-finalization.service.d.ts +25 -0
  372. package/src/route-renderer/orchestration/route-pipeline/route-html-finalization.service.js +44 -0
  373. package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.builder.d.ts +26 -0
  374. package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.builder.js +49 -0
  375. package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.utils.d.ts +4 -0
  376. package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.utils.js +30 -0
  377. package/src/route-renderer/orchestration/{route-render-orchestrator.d.ts → route-pipeline/route-render-orchestrator.d.ts} +24 -54
  378. package/src/route-renderer/orchestration/route-pipeline/route-render-orchestrator.js +215 -0
  379. package/src/route-renderer/orchestration/string-markup-renderer.d.ts +14 -0
  380. package/src/route-renderer/orchestration/string-markup-renderer.js +52 -0
  381. package/src/route-renderer/page-loading/component-dependency-collection.js +121 -121
  382. package/src/route-renderer/page-loading/declared-asset-collection.js +66 -94
  383. package/src/route-renderer/page-loading/dependency-resolver.js +101 -104
  384. package/src/route-renderer/page-loading/ecopages-virtual-imports.d.ts +1 -0
  385. package/src/route-renderer/page-loading/ecopages-virtual-imports.js +64 -51
  386. package/src/route-renderer/page-loading/file-scoped-dependency-components.d.ts +42 -0
  387. package/src/route-renderer/page-loading/file-scoped-dependency-components.js +94 -0
  388. package/src/route-renderer/page-loading/lazy-entry-collection.js +75 -98
  389. package/src/route-renderer/page-loading/lazy-trigger-planning.js +47 -36
  390. package/src/route-renderer/page-loading/module-declaration-aggregation.js +39 -28
  391. package/src/route-renderer/page-loading/module-declaration-scripts.js +10 -15
  392. package/src/route-renderer/page-loading/page-dependency-bundling.js +156 -113
  393. package/src/route-renderer/page-loading/page-module-loader.d.ts +2 -1
  394. package/src/route-renderer/page-loading/page-module-loader.js +136 -124
  395. package/src/route-renderer/page-loading/resolved-page-dependencies.d.ts +12 -0
  396. package/src/route-renderer/page-loading/resolved-page-dependencies.js +38 -0
  397. package/src/route-renderer/route-renderer.js +74 -76
  398. package/src/router/README.md +31 -0
  399. package/src/router/client/link-intent.d.ts +11 -21
  400. package/src/router/client/link-intent.js +56 -30
  401. package/src/router/client/link-intent.test.browser.js +50 -39
  402. package/src/router/client/link-navigation-policy.d.ts +45 -0
  403. package/src/router/client/link-navigation-policy.js +122 -0
  404. package/src/router/client/link-navigation-policy.test.browser.d.ts +1 -0
  405. package/src/router/client/link-navigation-policy.test.browser.js +82 -0
  406. package/src/router/client/navigation-coordinator.d.ts +1 -1
  407. package/src/router/client/navigation-coordinator.js +235 -201
  408. package/src/router/client/navigation-lifecycle.d.ts +55 -0
  409. package/src/router/client/navigation-lifecycle.js +50 -0
  410. package/src/router/client/navigation-lifecycle.test.browser.d.ts +1 -0
  411. package/src/router/client/navigation-lifecycle.test.browser.js +118 -0
  412. package/src/router/server/route-registry.js +237 -242
  413. package/src/services/README.md +5 -0
  414. package/src/services/assets/asset-processing-service/asset-dependency-keys.d.ts +13 -0
  415. package/src/services/assets/asset-processing-service/asset-dependency-keys.js +64 -50
  416. package/src/services/assets/asset-processing-service/asset-processing.service.d.ts +7 -1
  417. package/src/services/assets/asset-processing-service/asset-processing.service.js +308 -268
  418. package/src/services/assets/asset-processing-service/asset.factory.js +78 -81
  419. package/src/services/assets/asset-processing-service/assets.types.d.ts +1 -1
  420. package/src/services/assets/asset-processing-service/assets.types.js +1 -0
  421. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.d.ts +2 -1
  422. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.js +57 -45
  423. package/src/services/assets/asset-processing-service/browser-runtime-entry-resolution.d.ts +52 -0
  424. package/src/services/assets/asset-processing-service/browser-runtime-entry-resolution.js +115 -0
  425. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.d.ts +4 -2
  426. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.js +53 -38
  427. package/src/services/assets/asset-processing-service/finalize-processed-asset.d.ts +3 -0
  428. package/src/services/assets/asset-processing-service/finalize-processed-asset.js +5 -0
  429. package/src/services/assets/asset-processing-service/grouped-content-bundles.d.ts +2 -1
  430. package/src/services/assets/asset-processing-service/grouped-content-bundles.js +85 -60
  431. package/src/services/assets/asset-processing-service/index.d.ts +2 -0
  432. package/src/services/assets/asset-processing-service/index.js +8 -6
  433. package/src/services/assets/asset-processing-service/inline-content-script-body.d.ts +11 -0
  434. package/src/services/assets/asset-processing-service/inline-content-script-body.js +23 -0
  435. package/src/services/assets/asset-processing-service/materialize-content-script-asset.d.ts +9 -0
  436. package/src/services/assets/asset-processing-service/materialize-content-script-asset.js +22 -0
  437. package/src/services/assets/asset-processing-service/page-package.js +70 -72
  438. package/src/services/assets/asset-processing-service/processor.interface.js +7 -5
  439. package/src/services/assets/asset-processing-service/processor.registry.js +11 -14
  440. package/src/services/assets/asset-processing-service/processors/base/base-processor.js +59 -62
  441. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.d.ts +0 -2
  442. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.js +102 -130
  443. package/src/services/assets/asset-processing-service/processors/index.js +5 -5
  444. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.d.ts +8 -0
  445. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.js +111 -111
  446. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.d.ts +0 -1
  447. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.js +95 -94
  448. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.js +136 -121
  449. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.d.ts +0 -3
  450. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +26 -57
  451. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.d.ts +0 -3
  452. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.js +33 -67
  453. package/src/services/assets/asset-processing-service/processors/stylesheet/stylesheet-processor-pipeline.d.ts +2 -0
  454. package/src/services/assets/asset-processing-service/processors/stylesheet/stylesheet-processor-pipeline.js +44 -0
  455. package/src/services/assets/asset-processing-service/resolve-integration-plugin.d.ts +4 -0
  456. package/src/services/assets/asset-processing-service/resolve-integration-plugin.js +15 -0
  457. package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.d.ts +0 -1
  458. package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.js +27 -44
  459. package/src/services/assets/browser-bundle.service.d.ts +28 -30
  460. package/src/services/assets/browser-bundle.service.js +54 -40
  461. package/src/services/cache/cache.types.d.ts +4 -2
  462. package/src/services/cache/cache.types.js +5 -0
  463. package/src/services/cache/html-page-cache-dependency-index.d.ts +34 -0
  464. package/src/services/cache/html-page-cache-dependency-index.js +88 -0
  465. package/src/services/cache/index.d.ts +2 -0
  466. package/src/services/cache/index.js +8 -7
  467. package/src/services/cache/memory-cache-store.js +101 -89
  468. package/src/services/cache/page-cache-service.d.ts +31 -1
  469. package/src/services/cache/page-cache-service.js +237 -150
  470. package/src/services/cache/page-request-cache-coordinator.service.js +106 -102
  471. package/src/services/html/html-rewriter-provider.service.js +61 -61
  472. package/src/services/html/html-transformer.service.d.ts +1 -1
  473. package/src/services/html/html-transformer.service.js +249 -266
  474. package/src/services/invalidation/development-invalidation.service.d.ts +25 -2
  475. package/src/services/invalidation/development-invalidation.service.js +239 -175
  476. package/src/services/module-loading/README.md +52 -0
  477. package/src/services/module-loading/app-module-loader.service.js +1 -0
  478. package/src/services/module-loading/app-server-module-transpiler.service.d.ts +8 -0
  479. package/src/services/module-loading/app-server-module-transpiler.service.js +103 -118
  480. package/src/services/module-loading/collection-server-module-build.service.d.ts +19 -0
  481. package/src/services/module-loading/collection-server-module-build.service.js +83 -0
  482. package/src/services/module-loading/host-module-loader-registry.js +6 -11
  483. package/src/services/module-loading/module-loading-types.js +1 -0
  484. package/src/services/module-loading/page-module-import.service.d.ts +11 -13
  485. package/src/services/module-loading/page-module-import.service.js +222 -184
  486. package/src/services/module-loading/route-module-build-cache-registry.d.ts +24 -0
  487. package/src/services/module-loading/route-module-build-cache-registry.js +51 -0
  488. package/src/services/module-loading/route-module-build-cache.d.ts +4 -0
  489. package/src/services/module-loading/route-module-build-cache.js +3 -0
  490. package/src/services/module-loading/route-module-build-cache.store.d.ts +57 -0
  491. package/src/services/module-loading/route-module-build-cache.store.js +202 -0
  492. package/src/services/module-loading/route-module-build-manifest.d.ts +57 -0
  493. package/src/services/module-loading/route-module-build-manifest.js +60 -0
  494. package/src/services/module-loading/route-module-dependency-hasher.d.ts +81 -0
  495. package/src/services/module-loading/route-module-dependency-hasher.js +148 -0
  496. package/src/services/module-loading/server-module-transpiler.service.d.ts +1 -3
  497. package/src/services/module-loading/server-module-transpiler.service.js +65 -62
  498. package/src/services/module-loading/source-module-support.js +15 -7
  499. package/src/services/runtime-state/dev-graph.service.js +165 -157
  500. package/src/services/runtime-state/entrypoint-dependency-graph.service.js +85 -76
  501. package/src/services/runtime-state/server-invalidation-state.service.js +38 -30
  502. package/src/services/validation/schema-validation-service.d.ts +1 -4
  503. package/src/services/validation/schema-validation-service.js +156 -95
  504. package/src/services/validation/standard-schema.types.d.ts +9 -62
  505. package/src/services/validation/standard-schema.types.js +1 -0
  506. package/src/services/validation/validate-standard-schema.d.ts +7 -0
  507. package/src/services/validation/validate-standard-schema.js +14 -0
  508. package/src/static-site-generator/README.md +41 -0
  509. package/src/static-site-generator/production-page-browser-graph-prebuild.d.ts +32 -0
  510. package/src/static-site-generator/production-page-browser-graph-prebuild.js +57 -0
  511. package/src/static-site-generator/sitemap-routes.d.ts +14 -0
  512. package/src/static-site-generator/sitemap-routes.js +36 -0
  513. package/src/static-site-generator/sitemap.d.ts +15 -0
  514. package/src/static-site-generator/sitemap.js +42 -0
  515. package/src/static-site-generator/static-build-invalidation.d.ts +10 -0
  516. package/src/static-site-generator/static-build-invalidation.js +37 -0
  517. package/src/static-site-generator/static-export-context.d.ts +30 -0
  518. package/src/static-site-generator/static-export-context.js +1 -0
  519. package/src/static-site-generator/static-site-generator.d.ts +43 -25
  520. package/src/static-site-generator/static-site-generator.js +536 -294
  521. package/src/types/internal-types.d.ts +59 -13
  522. package/src/types/internal-types.js +1 -0
  523. package/src/types/public-types.d.ts +310 -95
  524. package/src/types/public-types.js +1 -0
  525. package/src/utils/deep-merge.js +39 -26
  526. package/src/utils/ecopages-route-info.d.ts +26 -0
  527. package/src/utils/ecopages-route-info.js +30 -0
  528. package/src/utils/hash.js +3 -6
  529. package/src/utils/html-escaping.d.ts +7 -0
  530. package/src/utils/html-escaping.js +22 -5
  531. package/src/utils/html.js +1 -4
  532. package/src/utils/invariant.js +11 -10
  533. package/src/utils/locals-utils.js +32 -22
  534. package/src/utils/parse-cli-args.d.ts +2 -0
  535. package/src/utils/parse-cli-args.js +73 -59
  536. package/src/utils/path-pattern.d.ts +23 -0
  537. package/src/utils/path-pattern.js +42 -0
  538. package/src/utils/path-utils.module.js +8 -11
  539. package/src/utils/resolve-entry-file.js +70 -38
  540. package/src/utils/resolve-work-dir.js +23 -27
  541. package/src/utils/runtime.js +24 -33
  542. package/src/utils/server-utils.module.d.ts +3 -2
  543. package/src/utils/server-utils.module.js +60 -53
  544. package/src/utils/static-file-extensions.d.ts +12 -0
  545. package/src/utils/static-file-extensions.js +54 -0
  546. package/src/watchers/project-watcher-ignore.d.ts +11 -0
  547. package/src/watchers/project-watcher-ignore.js +17 -0
  548. package/src/watchers/project-watcher.d.ts +29 -6
  549. package/src/watchers/project-watcher.js +402 -257
  550. package/src/watchers/project-watcher.test-helpers.js +45 -50
  551. package/src/adapters/shared/api-response.js +0 -96
  552. package/src/adapters/shared/application-adapter.js +0 -90
  553. package/src/adapters/shared/define-api-handler.d.ts +0 -25
  554. package/src/adapters/shared/define-api-handler.js +0 -15
  555. package/src/adapters/shared/explicit-static-render-preparation.js +0 -26
  556. package/src/adapters/shared/explicit-static-route-matcher.js +0 -101
  557. package/src/adapters/shared/file-route-middleware-pipeline.js +0 -90
  558. package/src/adapters/shared/fs-server-response-factory.js +0 -81
  559. package/src/adapters/shared/fs-server-response-matcher.js +0 -186
  560. package/src/adapters/shared/hmr-entrypoint-registrar.d.ts +0 -55
  561. package/src/adapters/shared/hmr-entrypoint-registrar.js +0 -87
  562. package/src/adapters/shared/hmr-html-response.js +0 -33
  563. package/src/adapters/shared/render-context.js +0 -93
  564. package/src/adapters/shared/runtime-app-bootstrap.js +0 -46
  565. package/src/adapters/shared/runtime-host.js +0 -0
  566. package/src/adapters/shared/server-adapter.js +0 -436
  567. package/src/adapters/shared/server-route-handler.js +0 -111
  568. package/src/adapters/shared/server-static-builder.js +0 -162
  569. package/src/adapters/shared/shared-hmr-manager.d.ts +0 -59
  570. package/src/adapters/shared/shared-hmr-manager.js +0 -241
  571. package/src/adapters/shared/static-preview-host.js +0 -0
  572. package/src/build/browser-runtime-manifest.js +0 -61
  573. package/src/build/browser-runtime-plugin-helpers.js +0 -14
  574. package/src/build/browser-runtime-plugin.js +0 -173
  575. package/src/build/build-manifest.d.ts +0 -33
  576. package/src/build/build-manifest.js +0 -49
  577. package/src/build/build-types.js +0 -0
  578. package/src/build/rolldown-adapter-helpers.js +0 -265
  579. package/src/build/rolldown-build-adapter.js +0 -65
  580. package/src/build/rolldown-dev-build-adapter.d.ts +0 -82
  581. package/src/build/rolldown-dev-build-adapter.js +0 -166
  582. package/src/build/rolldown-plugin-bridge.js +0 -199
  583. package/src/build/runtime-build-executor.d.ts +0 -21
  584. package/src/build/runtime-build-executor.js +0 -19
  585. package/src/build/runtime-build-output-normalizer.d.ts +0 -3
  586. package/src/build/runtime-build-output-normalizer.js +0 -111
  587. package/src/build/serialized-build-executor.js +0 -63
  588. package/src/build/server-side-css-shim-plugin.js +0 -35
  589. package/src/hmr/hmr.postcss.test.e2e.js +0 -31
  590. package/src/hmr/hmr.test.e2e.js +0 -43
  591. package/src/route-renderer/orchestration/component-render-context.js +0 -147
  592. package/src/route-renderer/orchestration/declared-ownership-graph.d.ts +0 -18
  593. package/src/route-renderer/orchestration/declared-ownership-graph.js +0 -34
  594. package/src/route-renderer/orchestration/foreign-subtree-execution.service.js +0 -233
  595. package/src/route-renderer/orchestration/ownership-planning.service.d.ts +0 -24
  596. package/src/route-renderer/orchestration/ownership-planning.service.js +0 -63
  597. package/src/route-renderer/orchestration/ownership-validation.service.js +0 -53
  598. package/src/route-renderer/orchestration/processed-asset-dedupe.js +0 -27
  599. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.d.ts +0 -91
  600. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.js +0 -170
  601. package/src/route-renderer/orchestration/render-output.utils.js +0 -171
  602. package/src/route-renderer/orchestration/route-render-orchestrator.js +0 -577
  603. package/src/route-renderer/orchestration/template-serialization.d.ts +0 -38
  604. package/src/route-renderer/orchestration/template-serialization.js +0 -45
  605. /package/src/adapters/shared/{runtime-host.d.ts → runtime/runtime-host.d.ts} +0 -0
  606. /package/src/{hmr/hmr.postcss.test.e2e.d.ts → adapters/shared/runtime/runtime-host.js} +0 -0
  607. /package/src/{hmr/hmr.test.e2e.d.ts → adapters/shared/runtime/static-preview-host.js} +0 -0
  608. /package/src/build/{browser-runtime-manifest.d.ts → browser/browser-runtime-manifest.d.ts} +0 -0
  609. /package/src/build/{browser-runtime-plugin-helpers.d.ts → browser/browser-runtime-plugin-helpers.d.ts} +0 -0
  610. /package/src/build/{build-types.d.ts → contracts/build-types.d.ts} +0 -0
  611. /package/src/build/{server-side-css-shim-plugin.d.ts → rolldown/server-side-css-shim-plugin.d.ts} +0 -0
@@ -1,243 +1,279 @@
1
- import { mergeBrowserRuntimeManifests } from "./browser-runtime-manifest.js";
2
- import { normalizeNodeRuntimeBuildOutputs } from "./runtime-build-output-normalizer.js";
3
- import { createForeignJsxOverridePlugin } from "../plugins/foreign-jsx-override-plugin.js";
4
- import {
5
- createAppBuildManifest,
6
- getBrowserBuildPlugins,
7
- getServerBuildPlugins
8
- } from "./build-manifest.js";
9
- import { createRolldownBuildAdapter } from "./rolldown-build-adapter.js";
10
- import { createRolldownDevBuildAdapter } from "./rolldown-dev-build-adapter.js";
11
- function mergeBuildExecutorPlugins(existing, appPlugins) {
12
- if (!existing || existing.length === 0) {
13
- return appPlugins;
14
- }
15
- const byName = /* @__PURE__ */ new Map();
16
- for (const plugin of existing) {
17
- byName.set(plugin.name, plugin);
18
- }
19
- for (const plugin of appPlugins) {
20
- byName.set(plugin.name, plugin);
21
- }
22
- return Array.from(byName.values());
23
- }
24
- function withBuildExecutorPlugins(executor, getPlugins) {
25
- return {
26
- async build(options) {
27
- const appPlugins = getPlugins();
28
- if (appPlugins.length === 0) {
29
- return executor.build(options);
30
- }
31
- return executor.build({
32
- ...options,
33
- plugins: mergeBuildExecutorPlugins(options.plugins, appPlugins)
34
- });
35
- }
36
- };
1
+ /**
2
+ * Build pipeline contracts and app-owned adapter wiring.
3
+ *
4
+ * @remarks
5
+ * The build layer exposes three concentric shapes:
6
+ *
7
+ * - `BuildAdapter` — the low-level backend contract. Two implementations
8
+ * exist: a bundler-backed adapter (the real backend) and
9
+ * {@link ViteHostBuildAdapter} (a host-owned boundary marker that throws
10
+ * on direct use, for host runtimes that own their own build pipeline).
11
+ * - `BuildExecutor` — the runtime-facing facade stored on
12
+ * `appConfig.runtime.buildRuntime` via profile-based accessors.
13
+ * - App-owned helpers (`getAppBuildAdapter` and the `set*` counterparts) —
14
+ * the supported way for runtime code to read and mutate the active adapter
15
+ * per `EcoPagesAppConfig`. Profile executors live on
16
+ * `appConfig.runtime.buildRuntime`.
17
+ */
18
+ import {} from './contracts/build-contracts.js';
19
+ import { createAppBuildManifest, getBrowserBuildPlugins, getServerBuildPlugins, } from './contracts/build-manifest.js';
20
+ import { getAppSourceTransforms } from '../plugins/source-transform.js';
21
+ import { createAliasResolverPlugin } from '../plugins/alias-resolver-plugin.js';
22
+ import { getJsxOwnershipPlugins } from './browser/jsx-ownership-plugins.js';
23
+ import { createRolldownBuildAdapter } from './rolldown/rolldown-build-adapter.js';
24
+ /**
25
+ * @remarks
26
+ * All runtime-bag setters funnel through here so `appConfig.runtime` is patched
27
+ * in one place instead of repeating the spread-merge at every call site.
28
+ */
29
+ function patchAppRuntime(appConfig, patch) {
30
+ appConfig.runtime = {
31
+ ...(appConfig.runtime ?? {}),
32
+ ...patch,
33
+ };
37
34
  }
38
35
  function createHostOwnedBuildError(methodName) {
39
- return new Error(
40
- `Vite-hosted builds are owned by the host runtime. Core cannot ${methodName} through the host-owned compatibility adapter.`
41
- );
42
- }
43
- class ViteHostBuildAdapter {
44
- ownership = "vite-host";
45
- async build(_options) {
46
- throw createHostOwnedBuildError("build");
47
- }
48
- resolve(_importPath, _rootDir) {
49
- throw createHostOwnedBuildError("resolve imports");
50
- }
51
- getTranspileOptions(_profile) {
52
- throw createHostOwnedBuildError("derive transpile options");
53
- }
54
- }
55
- function createViteHostBuildAdapter() {
56
- return new ViteHostBuildAdapter();
57
- }
58
- function createBuildAdapter(options) {
59
- switch (options?.ownership ?? "rolldown") {
60
- case "vite-host":
61
- return createViteHostBuildAdapter();
62
- case "rolldown-dev":
63
- return createRolldownDevBuildAdapter();
64
- case "rolldown":
65
- default:
66
- return createRolldownBuildAdapter();
67
- }
68
- }
69
- const defaultRolldownBuildAdapter = createBuildAdapter({ ownership: "rolldown" });
70
- const defaultViteHostBuildAdapter = createBuildAdapter({ ownership: "vite-host" });
71
- const defaultBuildAdapter = defaultRolldownBuildAdapter;
72
- function getDefaultBuildAdapter(ownership = "rolldown") {
73
- return ownership === "vite-host" ? defaultViteHostBuildAdapter : defaultRolldownBuildAdapter;
74
- }
75
- function getBuildAdapterOwnership(buildAdapter) {
76
- return buildAdapter?.ownership ?? "rolldown";
77
- }
78
- function getAppBuildOwnership(appConfig) {
79
- return appConfig.runtime?.buildOwnership ?? getBuildAdapterOwnership(appConfig.runtime?.buildAdapter);
80
- }
81
- function setAppBuildOwnership(appConfig, buildOwnership) {
82
- appConfig.runtime = {
83
- ...appConfig.runtime ?? {},
84
- buildOwnership
85
- };
86
- }
87
- function getAppBuildAdapter(appConfig) {
88
- return appConfig.runtime?.buildAdapter ?? getDefaultBuildAdapter(getAppBuildOwnership(appConfig));
89
- }
90
- function setAppBuildAdapter(appConfig, buildAdapter) {
91
- appConfig.runtime = {
92
- ...appConfig.runtime ?? {},
93
- buildOwnership: getBuildAdapterOwnership(buildAdapter),
94
- buildAdapter
95
- };
96
- }
97
- function getAppBuildManifest(appConfig) {
98
- return appConfig.runtime?.buildManifest ?? createAppBuildManifest({
99
- loaderPlugins: Array.from(appConfig.loaders.values())
100
- });
101
- }
102
- function setAppBuildManifest(appConfig, buildManifest) {
103
- appConfig.runtime = {
104
- ...appConfig.runtime ?? {},
105
- buildManifest
106
- };
107
- }
108
- function createConfiguredAppBuildManifest(appConfig, input) {
109
- return createAppBuildManifest({
110
- loaderPlugins: input?.loaderPlugins ?? Array.from(appConfig.loaders.values()),
111
- runtimePlugins: input?.runtimePlugins,
112
- browserBundlePlugins: input?.browserBundlePlugins,
113
- browserRuntimeManifest: input?.browserRuntimeManifest
114
- });
115
- }
116
- function updateAppBuildManifest(appConfig, input) {
117
- setAppBuildManifest(appConfig, createConfiguredAppBuildManifest(appConfig, input));
118
- }
119
- async function collectConfiguredAppBuildManifestContributions(appConfig) {
120
- const runtimePlugins = [];
121
- const browserBundlePlugins = [];
122
- const browserRuntimeManifests = [];
123
- for (const processor of appConfig.processors.values()) {
124
- await processor.prepareBuildContributions();
125
- if (processor.plugins) {
126
- runtimePlugins.push(...processor.plugins);
127
- }
128
- if (processor.buildPlugins) {
129
- browserBundlePlugins.push(...processor.buildPlugins);
130
- }
131
- }
132
- for (const integration of appConfig.integrations) {
133
- integration.setConfig(appConfig);
134
- await integration.prepareBuildContributions();
135
- runtimePlugins.push(...integration.plugins ?? []);
136
- browserBundlePlugins.push(...integration.browserBuildPlugins ?? []);
137
- browserRuntimeManifests.push(integration.browserRuntimeManifest);
138
- }
139
- return {
140
- runtimePlugins,
141
- browserBundlePlugins,
142
- browserRuntimeManifest: mergeBrowserRuntimeManifests(...browserRuntimeManifests)
143
- };
144
- }
145
- async function setupAppRuntimePlugins(options) {
146
- for (const loader of options.appConfig.loaders.values()) {
147
- options.onRuntimePlugin?.(loader);
148
- }
149
- for (const processor of options.appConfig.processors.values()) {
150
- await processor.setup();
151
- if (processor.plugins) {
152
- for (const plugin of processor.plugins) {
153
- options.onRuntimePlugin?.(plugin);
154
- }
36
+ return new Error(`Vite-hosted builds are owned by the host runtime. Core cannot ${methodName} through the host-owned compatibility adapter.`);
37
+ }
38
+ /**
39
+ * Boundary-marker adapter for Vite-host ownership.
40
+ *
41
+ * @remarks
42
+ * This is not a real backend. It exists so `appConfig.runtime.buildAdapter`
43
+ * can carry the `'vite-host'` ownership without falling back to a
44
+ * framework-owned bundler path. Every method throws a
45
+ * {@link createHostOwnedBuildError} so misrouted calls fail loudly
46
+ * with a clear message instead of silently executing under a
47
+ * different backend.
48
+ *
49
+ * The class stays in the public surface for host runtimes that own
50
+ * their build pipeline (e.g. Nitro) and for app code that wants to
51
+ * opt into host-owned ownership before its host wires up the build.
52
+ */
53
+ export class ViteHostBuildAdapter {
54
+ ownership = 'vite-host';
55
+ async build(_options) {
56
+ throw createHostOwnedBuildError('build');
155
57
  }
156
- }
157
- for (const integration of options.appConfig.integrations) {
158
- integration.setConfig(options.appConfig);
159
- integration.setRuntimeOrigin(options.runtimeOrigin);
160
- if (options.hmrManager) {
161
- integration.setHmrManager(options.hmrManager);
58
+ resolve(_importPath, _rootDir) {
59
+ throw createHostOwnedBuildError('resolve imports');
162
60
  }
163
- await integration.setup();
164
- for (const plugin of integration.plugins) {
165
- options.onRuntimePlugin?.(plugin);
61
+ getTranspileOptions(_profile) {
62
+ throw createHostOwnedBuildError('derive transpile options');
166
63
  }
167
- }
168
- }
169
- function getAppServerBuildPlugins(appConfig) {
170
- return getServerBuildPlugins(getAppBuildManifest(appConfig));
171
- }
172
- function getAppBrowserBuildPlugins(appConfig) {
173
- const manifest = getAppBuildManifest(appConfig);
174
- const jsxOwnershipPlugins = collectJsxOwnershipPlugins(appConfig);
175
- return [...getBrowserBuildPlugins(manifest), ...jsxOwnershipPlugins];
176
- }
177
- function collectJsxOwnershipPlugins(appConfig) {
178
- const jsxExtensions = (appConfig.integrations ?? []).filter((integration) => integration.jsxImportSource).flatMap(
179
- (integration) => integration.extensions.filter((extension) => extension.endsWith(".tsx") || extension.endsWith(".jsx")).map((extension) => ({ integration, extension }))
180
- ).sort((left, right) => right.extension.length - left.extension.length);
181
- return jsxExtensions.map(
182
- ({ integration, extension }) => createForeignJsxOverridePlugin({
183
- hostJsxImportSource: integration.jsxImportSource,
184
- foreignExtensions: [extension],
185
- excludeExtensions: jsxExtensions.filter((candidate) => candidate.extension.length > extension.length).filter((candidate) => candidate.extension.endsWith(extension)).map((candidate) => candidate.extension),
186
- name: `ecopages-jsx-ownership-${integration.name}-${extension.replace(/[^a-zA-Z0-9]+/g, "-")}`
187
- })
188
- );
189
- }
190
- function getAppBuildExecutor(appConfig) {
191
- return appConfig.runtime?.buildExecutor ?? getAppBuildAdapter(appConfig);
192
- }
193
- function setAppBuildExecutor(appConfig, buildExecutor) {
194
- appConfig.runtime = {
195
- ...appConfig.runtime ?? {},
196
- buildExecutor
197
- };
198
- }
199
- function build(options, executor = defaultRolldownBuildAdapter) {
200
- return executor.build(options).then((result) => {
201
- if (result.success) {
202
- normalizeNodeRuntimeBuildOutputs(
203
- result.outputs.map((output) => output.path),
204
- options.root ?? process.cwd()
205
- );
64
+ }
65
+ /**
66
+ * Constructs a {@link ViteHostBuildAdapter}. Use only in code paths
67
+ * that explicitly opt into the host-owned boundary.
68
+ */
69
+ export function createViteHostBuildAdapter() {
70
+ return new ViteHostBuildAdapter();
71
+ }
72
+ /**
73
+ * Constructs a build adapter for the given ownership.
74
+ *
75
+ * @param options - When `options.ownership` is omitted, the default is
76
+ * `'rolldown'`. The Vite-host path is opt-in.
77
+ */
78
+ export function createBuildAdapter(options) {
79
+ switch (options?.ownership ?? 'rolldown') {
80
+ case 'vite-host':
81
+ return createViteHostBuildAdapter();
82
+ case 'rolldown':
83
+ default:
84
+ return createRolldownBuildAdapter();
206
85
  }
207
- return result;
208
- });
209
- }
210
- function getTranspileOptions(profile) {
211
- return defaultRolldownBuildAdapter.getTranspileOptions(profile);
212
- }
213
- function getAppTranspileOptions(appConfig, profile) {
214
- return getAppBuildAdapter(appConfig).getTranspileOptions(profile);
215
- }
216
- export {
217
- ViteHostBuildAdapter,
218
- build,
219
- collectConfiguredAppBuildManifestContributions,
220
- createBuildAdapter,
221
- createConfiguredAppBuildManifest,
222
- createViteHostBuildAdapter,
223
- defaultBuildAdapter,
224
- defaultRolldownBuildAdapter,
225
- defaultViteHostBuildAdapter,
226
- getAppBrowserBuildPlugins,
227
- getAppBuildAdapter,
228
- getAppBuildExecutor,
229
- getAppBuildManifest,
230
- getAppBuildOwnership,
231
- getAppServerBuildPlugins,
232
- getAppTranspileOptions,
233
- getBuildAdapterOwnership,
234
- getDefaultBuildAdapter,
235
- getTranspileOptions,
236
- setAppBuildAdapter,
237
- setAppBuildExecutor,
238
- setAppBuildManifest,
239
- setAppBuildOwnership,
240
- setupAppRuntimePlugins,
241
- updateAppBuildManifest,
242
- withBuildExecutorPlugins
243
- };
86
+ }
87
+ /** The shared default-bundler backend instance. Use {@link getAppBuildAdapter} in app-aware code. */
88
+ export const defaultRolldownBuildAdapter = createBuildAdapter({ ownership: 'rolldown' });
89
+ /** The shared Vite-host boundary instance. Use {@link getAppBuildAdapter} in app-aware code. */
90
+ export const defaultViteHostBuildAdapter = createBuildAdapter({ ownership: 'vite-host' });
91
+ /**
92
+ * Global default build adapter.
93
+ *
94
+ * @remarks
95
+ * Resolves to the bundled default-bundler adapter. New app-aware
96
+ * code should prefer {@link getAppBuildAdapter}.
97
+ */
98
+ export const defaultBuildAdapter = defaultRolldownBuildAdapter;
99
+ /**
100
+ * Resolves the default build adapter for an ownership value.
101
+ *
102
+ * @param ownership - Defaults to `'rolldown'`. Returns the
103
+ * {@link ViteHostBuildAdapter} only when the caller explicitly asks
104
+ * for `'vite-host'`.
105
+ */
106
+ export function getDefaultBuildAdapter(ownership = 'rolldown') {
107
+ return ownership === 'vite-host' ? defaultViteHostBuildAdapter : defaultRolldownBuildAdapter;
108
+ }
109
+ /**
110
+ * Reads the {@link BuildOwnership} declared on a {@link BuildAdapter}.
111
+ *
112
+ * @param buildAdapter - When `undefined`, defaults to `'rolldown'`.
113
+ */
114
+ export function getBuildAdapterOwnership(buildAdapter) {
115
+ return buildAdapter?.ownership ?? 'rolldown';
116
+ }
117
+ /**
118
+ * Resolves the build ownership of an app config.
119
+ *
120
+ * @remarks
121
+ * Resolution order: `appConfig.runtime.buildOwnership` (explicit), then
122
+ * the ownership declared on `appConfig.runtime.buildAdapter`, then the
123
+ * default `'rolldown'`.
124
+ */
125
+ export function getAppBuildOwnership(appConfig) {
126
+ return appConfig.runtime?.buildOwnership ?? getBuildAdapterOwnership(appConfig.runtime?.buildAdapter);
127
+ }
128
+ /**
129
+ * Sets the explicit build ownership on an app config.
130
+ *
131
+ * @remarks
132
+ * The `ConfigBuilder` uses this when the caller calls
133
+ * `setBuildOwnership`. App code that needs a different ownership
134
+ * should call this directly with a new value; passing the same
135
+ * value is a no-op.
136
+ */
137
+ export function setAppBuildOwnership(appConfig, buildOwnership) {
138
+ patchAppRuntime(appConfig, { buildOwnership });
139
+ }
140
+ /**
141
+ * Returns the adapter owned by an app/runtime instance.
142
+ *
143
+ * @remarks
144
+ * Falls back through `appConfig.runtime.buildAdapter` →
145
+ * {@link getDefaultBuildAdapter} on the resolved ownership. Throws
146
+ * never; a missing adapter resolves to the global default.
147
+ */
148
+ export function getAppBuildAdapter(appConfig) {
149
+ return appConfig.runtime?.buildAdapter ?? getDefaultBuildAdapter(getAppBuildOwnership(appConfig));
150
+ }
151
+ /**
152
+ * Installs the adapter that should serve future builds for one app
153
+ * instance, and aligns the ownership field to the new adapter's
154
+ * declared ownership.
155
+ */
156
+ export function setAppBuildAdapter(appConfig, buildAdapter) {
157
+ patchAppRuntime(appConfig, {
158
+ buildOwnership: getBuildAdapterOwnership(buildAdapter),
159
+ buildAdapter,
160
+ });
161
+ }
162
+ /**
163
+ * Returns the build manifest owned by an app/runtime instance.
164
+ *
165
+ * @remarks
166
+ * Falls back to a fresh manifest seeded from the config's loaders when
167
+ * the app config has no manifest yet. This is the supported way to
168
+ * read the manifest across the source-loading and asset-processing
169
+ * services.
170
+ */
171
+ export function getAppBuildManifest(appConfig) {
172
+ return (appConfig.runtime?.buildManifest ??
173
+ createAppBuildManifest({
174
+ loaderPlugins: Array.from(appConfig.loaders?.values() ?? []),
175
+ }));
176
+ }
177
+ /** Installs the build manifest that should be visible to one app instance.
178
+ *
179
+ * @remarks
180
+ * Production apps are sealed via {@link updateAppBuildManifest} during
181
+ * {@link ConfigBuilder.build}. Call `setAppBuildManifest` directly only in tests or
182
+ * when replacing the entire manifest object; partial updates should use
183
+ * {@link updateAppBuildManifest}.
184
+ */
185
+ export function setAppBuildManifest(appConfig, buildManifest) {
186
+ patchAppRuntime(appConfig, { buildManifest });
187
+ }
188
+ /**
189
+ * Builds a fresh app manifest from the config's loaders plus optional
190
+ * caller-supplied runtime/browser contributions.
191
+ *
192
+ * @remarks
193
+ * Loader plugins are always taken from the config; runtime and
194
+ * browser-bundle plugins are passed through from the caller when
195
+ * supplied, otherwise left empty for later population by
196
+ * {@link collectConfiguredAppBuildManifestContributions}.
197
+ */
198
+ export function createConfiguredAppBuildManifest(appConfig, input) {
199
+ return createAppBuildManifest({
200
+ loaderPlugins: input?.loaderPlugins ?? Array.from(appConfig.loaders.values()),
201
+ runtimePlugins: input?.runtimePlugins,
202
+ browserBundlePlugins: input?.browserBundlePlugins,
203
+ browserRuntimeManifest: input?.browserRuntimeManifest,
204
+ });
205
+ }
206
+ /**
207
+ * Replaces the app-owned manifest using config-owned loaders and the
208
+ * caller-supplied contribution input.
209
+ *
210
+ * @remarks
211
+ * Primary production entry: `ConfigBuilder.build()` passes the return value of
212
+ * {@link collectConfiguredAppBuildManifestContributions} here to seal
213
+ * `appConfig.runtime.buildManifest` before startup.
214
+ */
215
+ export function updateAppBuildManifest(appConfig, input) {
216
+ setAppBuildManifest(appConfig, createConfiguredAppBuildManifest(appConfig, input));
217
+ }
218
+ export { collectConfiguredAppBuildManifestContributions, ensureIntegrationRuntimeReady, setupAppRuntimePlugins, } from './app-build-manifest-runtime.js';
219
+ /**
220
+ * Returns the server-bundle plugin list for one app/runtime instance.
221
+ *
222
+ * @remarks
223
+ * Reads from the app's sealed build manifest; the manifest itself is
224
+ * the source of truth for which plugins participate in the server
225
+ * bundle.
226
+ */
227
+ export function getAppServerBuildPlugins(appConfig) {
228
+ const projectDir = appConfig.absolutePaths?.projectDir;
229
+ const aliasPlugin = projectDir ? [createAliasResolverPlugin(projectDir)] : [];
230
+ return [...aliasPlugin, ...getServerBuildPlugins(getAppBuildManifest(appConfig))];
231
+ }
232
+ /**
233
+ * Returns the browser-bundle plugin list for one app/runtime instance.
234
+ *
235
+ * @remarks
236
+ * Reads from the app's sealed build manifest. The browser-bundle
237
+ * manifest is the source of truth for which plugins participate in the
238
+ * browser bundle.
239
+ *
240
+ * Plugins whose `name` matches a registered {@link EcoSourceTransform} are
241
+ * excluded here because browser builds run those transforms via the Rolldown
242
+ * bridge post-load pass instead of as competing `onLoad` handlers.
243
+ */
244
+ export function getAppBrowserBuildPlugins(appConfig) {
245
+ const manifest = getAppBuildManifest(appConfig);
246
+ const sourceTransformNames = new Set(getAppSourceTransforms(appConfig).map((transform) => transform.name));
247
+ const browserPlugins = getBrowserBuildPlugins(manifest).filter((plugin) => !sourceTransformNames.has(plugin.name));
248
+ const projectDir = appConfig.absolutePaths?.projectDir;
249
+ const aliasPlugin = projectDir ? [createAliasResolverPlugin(projectDir)] : [];
250
+ return [...aliasPlugin, ...browserPlugins, ...getJsxOwnershipPlugins(appConfig)];
251
+ }
252
+ /**
253
+ * Runs a build through the active pipeline.
254
+ *
255
+ * @remarks
256
+ * `executor` defaults to the default-bundler adapter for non-app-aware
257
+ * callsites. App-aware code should pass a profile executor from
258
+ * {@link requireBuildRuntime} to honor the per-app pipeline.
259
+ */
260
+ export function build(options, executor = defaultRolldownBuildAdapter) {
261
+ return executor.build(options);
262
+ }
263
+ /**
264
+ * Default transpile-options helper for callsites without app runtime
265
+ * context.
266
+ *
267
+ * @remarks
268
+ * New app-aware code should prefer {@link getAppTranspileOptions}.
269
+ */
270
+ export function getTranspileOptions(profile) {
271
+ return defaultRolldownBuildAdapter.getTranspileOptions(profile);
272
+ }
273
+ /**
274
+ * Resolves transpile options for one app/runtime instance by asking
275
+ * the app's adapter.
276
+ */
277
+ export function getAppTranspileOptions(appConfig, profile) {
278
+ return getAppBuildAdapter(appConfig).getTranspileOptions(profile);
279
+ }
@@ -0,0 +1,28 @@
1
+ import type { IntegrationPlugin } from '../../plugins/integration-plugin.js';
2
+ import type { Processor } from '../../plugins/processor.js';
3
+ import type { EcoPagesAppConfig } from '../../types/internal-types.js';
4
+ /**
5
+ * Optional contributor surface for build-time cache invalidation.
6
+ *
7
+ * @remarks
8
+ * Processors and integrations may override {@link didChange} to report that
9
+ * their build inputs changed independently of route source files.
10
+ */
11
+ export interface BuildInputChangeContributor {
12
+ /**
13
+ * Returns `true` when this contributor's build inputs changed since the last
14
+ * persisted incremental build metadata was written.
15
+ */
16
+ didChange?(): boolean;
17
+ }
18
+ /** Returns whether a processor or integration signals changed build inputs. */
19
+ export declare function didBuildInputContributorChange(contributor: BuildInputChangeContributor): boolean;
20
+ /** Hashes the app's eco.config.ts file when present. */
21
+ export declare function hashAppConfigFile(appConfig: EcoPagesAppConfig): string;
22
+ /** Fingerprints processor/integration build-input state for cache invalidation. */
23
+ export declare function createBuildInputsFingerprint(appConfig: EcoPagesAppConfig): string;
24
+ /** Returns true when any processor or integration reports changed build inputs. */
25
+ export declare function haveBuildInputsChanged(appConfig: EcoPagesAppConfig): boolean;
26
+ /** Collects every processor and integration that can invalidate incremental builds. */
27
+ export declare function collectBuildInputContributors(appConfig: EcoPagesAppConfig): BuildInputChangeContributor[];
28
+ export type { Processor, IntegrationPlugin };
@@ -0,0 +1,33 @@
1
+ import { fileSystem } from '@ecopages/file-system';
2
+ /** Returns whether a processor or integration signals changed build inputs. */
3
+ export function didBuildInputContributorChange(contributor) {
4
+ return contributor.didChange?.() === true;
5
+ }
6
+ /** Hashes the app's eco.config.ts file when present. */
7
+ export function hashAppConfigFile(appConfig) {
8
+ const configPath = appConfig.absolutePaths?.config;
9
+ if (!configPath || !fileSystem.exists(configPath)) {
10
+ return 'missing';
11
+ }
12
+ return fileSystem.hash(configPath);
13
+ }
14
+ /** Fingerprints processor/integration build-input state for cache invalidation. */
15
+ export function createBuildInputsFingerprint(appConfig) {
16
+ const changedContributors = [
17
+ ...Array.from(appConfig.processors?.values() ?? [])
18
+ .filter((processor) => didBuildInputContributorChange(processor))
19
+ .map((processor) => `processor:${processor.getName()}`),
20
+ ...(appConfig.integrations ?? [])
21
+ .filter((integration) => didBuildInputContributorChange(integration))
22
+ .map((integration) => `integration:${integration.name}`),
23
+ ];
24
+ return changedContributors.length > 0 ? changedContributors.sort().join('|') : 'stable';
25
+ }
26
+ /** Returns true when any processor or integration reports changed build inputs. */
27
+ export function haveBuildInputsChanged(appConfig) {
28
+ return createBuildInputsFingerprint(appConfig) !== 'stable';
29
+ }
30
+ /** Collects every processor and integration that can invalidate incremental builds. */
31
+ export function collectBuildInputContributors(appConfig) {
32
+ return [...Array.from(appConfig.processors?.values() ?? []), ...(appConfig.integrations ?? [])];
33
+ }
@@ -0,0 +1,4 @@
1
+ /** Filename written beside persisted production build artifacts that store incremental metadata. */
2
+ export declare const ROUTE_MODULE_BUILD_CACHE_FILENAME = ".build-cache.json";
3
+ /** @deprecated Use {@link ROUTE_MODULE_BUILD_CACHE_FILENAME}; server-entry caches share the same filename. */
4
+ export declare const SERVER_ENTRY_BUILD_CACHE_FILENAME = ".build-cache.json";
@@ -0,0 +1,4 @@
1
+ /** Filename written beside persisted production build artifacts that store incremental metadata. */
2
+ export const ROUTE_MODULE_BUILD_CACHE_FILENAME = '.build-cache.json';
3
+ /** @deprecated Use {@link ROUTE_MODULE_BUILD_CACHE_FILENAME}; server-entry caches share the same filename. */
4
+ export const SERVER_ENTRY_BUILD_CACHE_FILENAME = ROUTE_MODULE_BUILD_CACHE_FILENAME;
@@ -0,0 +1,22 @@
1
+ import type { EcoBuildPlugin } from '../contracts/build-types.js';
2
+ import type { BuildOptions } from '../contracts/build-contracts.js';
3
+ /**
4
+ * Returns the installed `@ecopages/core` package version for cache invalidation.
5
+ */
6
+ export declare function getCorePackageVersion(): string;
7
+ /** Stable fingerprint for JSX options used in build and disk cache keys. */
8
+ export declare function createJsxCacheKey(jsx: BuildOptions['jsx']): string;
9
+ /** Stable fingerprint for ordered build plugins. */
10
+ export declare function createPluginCacheKey(plugins?: EcoBuildPlugin[]): string;
11
+ /** Stable fingerprint for ordered source transforms. */
12
+ export declare function createSourceTransformCacheKey(sourceTransforms: BuildOptions['sourceTransforms']): string;
13
+ /**
14
+ * Stable fingerprint of a function body for cache and request identity keys.
15
+ *
16
+ * @remarks
17
+ * Hashes `fn.toString()`. Suitable for in-process and persisted keys that must
18
+ * agree within one install; not stable across minifiers or renames.
19
+ */
20
+ export declare function hashFunctionIdentity(fn: (...args: never[]) => unknown): string;
21
+ /** @deprecated Use {@link hashFunctionIdentity}. */
22
+ export declare const hashPluginSetup: typeof hashFunctionIdentity;