@ecopages/core 0.2.0-beta.8 → 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 (623) hide show
  1. package/README.md +42 -13
  2. package/package.json +361 -58
  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 +29 -340
  111. package/src/build/build-adapter.js +258 -260
  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} +16 -2
  138. package/src/build/rolldown/rolldown-plugin-bridge.js +284 -0
  139. package/src/build/rolldown/rolldown-source-transform-pass.d.ts +15 -0
  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 +42 -12
  183. package/src/config/config-builder.js +645 -600
  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 +32 -1
  316. package/src/plugins/source-transform.js +112 -60
  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 -30
  453. package/src/services/assets/browser-bundle.service.js +54 -46
  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 -309
  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 -199
  587. package/src/build/runtime-build-executor.d.ts +0 -15
  588. package/src/build/runtime-build-executor.js +0 -43
  589. package/src/build/runtime-build-output-normalizer.js +0 -203
  590. package/src/build/serialized-build-executor.js +0 -63
  591. package/src/build/server-entry-build-cache.js +0 -169
  592. package/src/build/server-side-css-shim-plugin.js +0 -35
  593. package/src/hmr/hmr.postcss.test.e2e.js +0 -31
  594. package/src/hmr/hmr.test.e2e.js +0 -54
  595. package/src/integrations/ghtml/ghtml-renderer.js +0 -57
  596. package/src/integrations/ghtml/ghtml.constants.d.ts +0 -1
  597. package/src/integrations/ghtml/ghtml.constants.js +0 -4
  598. package/src/integrations/ghtml/ghtml.plugin.d.ts +0 -16
  599. package/src/integrations/ghtml/ghtml.plugin.js +0 -20
  600. package/src/route-renderer/orchestration/component-render-context.js +0 -147
  601. package/src/route-renderer/orchestration/declared-ownership-graph.d.ts +0 -18
  602. package/src/route-renderer/orchestration/declared-ownership-graph.js +0 -34
  603. package/src/route-renderer/orchestration/foreign-subtree-execution.service.js +0 -231
  604. package/src/route-renderer/orchestration/ownership-planning.service.d.ts +0 -24
  605. package/src/route-renderer/orchestration/ownership-planning.service.js +0 -63
  606. package/src/route-renderer/orchestration/ownership-validation.service.js +0 -53
  607. package/src/route-renderer/orchestration/processed-asset-dedupe.js +0 -27
  608. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.d.ts +0 -91
  609. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.js +0 -170
  610. package/src/route-renderer/orchestration/render-output.utils.js +0 -175
  611. package/src/route-renderer/orchestration/route-render-orchestrator.js +0 -578
  612. package/src/route-renderer/orchestration/template-serialization.d.ts +0 -38
  613. package/src/route-renderer/orchestration/template-serialization.js +0 -45
  614. package/src/utils/html.d.ts +0 -1
  615. package/src/utils/html.js +0 -4
  616. /package/src/adapters/{shared → bun}/bun-user-websocket-lifecycle.d.ts +0 -0
  617. /package/src/adapters/shared/{copy-runtime-public-dir.d.ts → runtime/copy-runtime-public-dir.d.ts} +0 -0
  618. /package/src/adapters/shared/{runtime-host.d.ts → runtime/runtime-host.d.ts} +0 -0
  619. /package/src/{hmr/hmr.postcss.test.e2e.d.ts → adapters/shared/runtime/runtime-host.js} +0 -0
  620. /package/src/{hmr/hmr.test.e2e.d.ts → adapters/shared/runtime/static-preview-host.js} +0 -0
  621. /package/src/build/{build-types.d.ts → contracts/build-types.d.ts} +0 -0
  622. /package/src/build/{runtime-build-output-normalizer.d.ts → rolldown/runtime-build-output-normalizer.d.ts} +0 -0
  623. /package/src/build/{server-side-css-shim-plugin.d.ts → rolldown/server-side-css-shim-plugin.d.ts} +0 -0
@@ -1,69 +1,35 @@
1
- import path from "node:path";
2
- import { fileSystem } from "@ecopages/file-system";
3
- import { BaseProcessor } from "../base/base-processor.js";
4
- class FileStylesheetProcessor extends BaseProcessor {
5
- static PROCESSABLE_STYLESHEET_EXTENSIONS = /* @__PURE__ */ new Set([".css", ".scss", ".sass", ".less"]);
6
- getStyleContent = (srcUrl) => {
7
- return fileSystem.readFileAsBuffer(srcUrl);
8
- };
9
- isProcessableStylesheet(filepath) {
10
- return FileStylesheetProcessor.PROCESSABLE_STYLESHEET_EXTENSIONS.has(path.extname(filepath));
11
- }
12
- async applyStylesheetProcessors(content, filepath) {
13
- if (!this.isProcessableStylesheet(filepath)) {
14
- return content;
1
+ import path from 'node:path';
2
+ import { fileSystem } from '@ecopages/file-system';
3
+ import { BaseProcessor } from '../base/base-processor.js';
4
+ import { applyStylesheetProcessors } from './stylesheet-processor-pipeline.js';
5
+ export class FileStylesheetProcessor extends BaseProcessor {
6
+ getStyleContent = (srcUrl) => {
7
+ return fileSystem.readFileAsBuffer(srcUrl);
8
+ };
9
+ async process(dep) {
10
+ const buffer = this.getStyleContent(dep.filepath);
11
+ const rawContent = buffer.toString();
12
+ const processedContent = await applyStylesheetProcessors(this.appConfig, rawContent, dep.filepath);
13
+ const hash = this.generateHash(processedContent);
14
+ const cachekey = this.buildCacheKey(dep.filepath, hash, dep);
15
+ return this.getOrProcess(cachekey, () => {
16
+ const filepath = path.join(this.getAssetsDir(), path.relative(this.appConfig.absolutePaths.srcDir, dep.filepath));
17
+ const outputBuffer = Buffer.from(processedContent);
18
+ if (!dep.inline) {
19
+ fileSystem.ensureDir(path.dirname(filepath));
20
+ fileSystem.write(filepath, outputBuffer);
21
+ }
22
+ return {
23
+ filepath: filepath,
24
+ sourceFilepath: dep.filepath,
25
+ content: dep.inline ? processedContent : undefined,
26
+ kind: 'stylesheet',
27
+ position: dep.position,
28
+ attributes: dep.attributes,
29
+ inline: dep.inline,
30
+ packageRole: dep.packageRole,
31
+ bundledSourceFilepaths: dep.bundledSourceFilepaths,
32
+ };
33
+ });
15
34
  }
16
- let transformedContent = content;
17
- for (const processor of this.appConfig.processors.values()) {
18
- const hasCapabilities = processor.getAssetCapabilities().length > 0;
19
- const canProcessStylesheet = processor.canProcessAsset("stylesheet", filepath);
20
- if (!canProcessStylesheet && (hasCapabilities || !processor.getName().includes("postcss"))) {
21
- continue;
22
- }
23
- if (!processor.matchesFileFilter(filepath)) {
24
- continue;
25
- }
26
- const result = await processor.process(transformedContent, filepath);
27
- if (typeof result === "string") {
28
- transformedContent = result;
29
- continue;
30
- }
31
- if (result instanceof Buffer) {
32
- transformedContent = result.toString();
33
- }
34
- }
35
- return transformedContent;
36
- }
37
- async process(dep) {
38
- const buffer = this.getStyleContent(dep.filepath);
39
- const rawContent = buffer.toString();
40
- const processedContent = await this.applyStylesheetProcessors(rawContent, dep.filepath);
41
- const hash = this.generateHash(processedContent);
42
- const cachekey = this.buildCacheKey(dep.filepath, hash, dep);
43
- return this.getOrProcess(cachekey, () => {
44
- const filepath = path.join(
45
- this.getAssetsDir(),
46
- path.relative(this.appConfig.absolutePaths.srcDir, dep.filepath)
47
- );
48
- const outputBuffer = Buffer.from(processedContent);
49
- if (!dep.inline) {
50
- fileSystem.ensureDir(path.dirname(filepath));
51
- fileSystem.write(filepath, outputBuffer);
52
- }
53
- return {
54
- filepath,
55
- sourceFilepath: dep.filepath,
56
- content: dep.inline ? processedContent : void 0,
57
- kind: "stylesheet",
58
- position: dep.position,
59
- attributes: dep.attributes,
60
- inline: dep.inline,
61
- packageRole: dep.packageRole,
62
- bundledSourceFilepaths: dep.bundledSourceFilepaths
63
- };
64
- });
65
- }
66
35
  }
67
- export {
68
- FileStylesheetProcessor
69
- };
@@ -0,0 +1,2 @@
1
+ import type { EcoPagesAppConfig } from '../../../../../types/internal-types.js';
2
+ export declare function applyStylesheetProcessors(appConfig: EcoPagesAppConfig, content: string, filepath: string): Promise<string>;
@@ -0,0 +1,44 @@
1
+ import path from 'node:path';
2
+ const PROCESSABLE_STYLESHEET_EXTENSIONS = new Set(['.css', '.scss', '.sass', '.less']);
3
+ function isProcessableStylesheet(filepath) {
4
+ return PROCESSABLE_STYLESHEET_EXTENSIONS.has(path.extname(filepath));
5
+ }
6
+ /**
7
+ * Legacy fallback for processors that transform stylesheets without declaring
8
+ * capabilities (notably PostCSS before capability metadata was required).
9
+ */
10
+ function shouldRunStylesheetProcessor(processor, filepath) {
11
+ const hasCapabilities = processor.getAssetCapabilities().length > 0;
12
+ const canProcessStylesheet = processor.canProcessAsset('stylesheet', filepath);
13
+ if (canProcessStylesheet) {
14
+ return true;
15
+ }
16
+ if (hasCapabilities) {
17
+ return false;
18
+ }
19
+ return processor.getName().includes('postcss');
20
+ }
21
+ export async function applyStylesheetProcessors(appConfig, content, filepath) {
22
+ if (!isProcessableStylesheet(filepath)) {
23
+ return content;
24
+ }
25
+ let transformedContent = content;
26
+ const processors = appConfig.processors ? Array.from(appConfig.processors.values()) : [];
27
+ for (const processor of processors) {
28
+ if (!shouldRunStylesheetProcessor(processor, filepath)) {
29
+ continue;
30
+ }
31
+ if (!processor.matchesFileFilter(filepath)) {
32
+ continue;
33
+ }
34
+ const result = await processor.process(transformedContent, filepath);
35
+ if (typeof result === 'string') {
36
+ transformedContent = result;
37
+ continue;
38
+ }
39
+ if (result instanceof Buffer) {
40
+ transformedContent = result.toString();
41
+ }
42
+ }
43
+ return transformedContent;
44
+ }
@@ -0,0 +1,4 @@
1
+ import type { AnyIntegrationPlugin } from '../../../plugins/integration-plugin.js';
2
+ import type { EcoPagesAppConfig } from '../../../types/internal-types.js';
3
+ /** Resolves the integration plugin that owns one asset-processing batch key. */
4
+ export declare function resolveIntegrationPluginForProcessingKey(appConfig: EcoPagesAppConfig, processingKey: string): AnyIntegrationPlugin | undefined;
@@ -0,0 +1,15 @@
1
+ /** Resolves the integration plugin that owns one asset-processing batch key. */
2
+ export function resolveIntegrationPluginForProcessingKey(appConfig, processingKey) {
3
+ if (!appConfig.integrations?.length) {
4
+ return undefined;
5
+ }
6
+ const exactMatch = appConfig.integrations.find((integration) => integration.name === processingKey);
7
+ if (exactMatch) {
8
+ return exactMatch;
9
+ }
10
+ const baseName = processingKey.split(':')[0];
11
+ if (!baseName || baseName === processingKey) {
12
+ return undefined;
13
+ }
14
+ return appConfig.integrations.find((integration) => integration.name === baseName);
15
+ }
@@ -2,7 +2,6 @@ import type { AssetProcessor } from './processor.interface.js';
2
2
  import type { AssetDefinition, ProcessedAsset } from './assets.types.js';
3
3
  type ProcessUngroupedDependencyOptions = {
4
4
  dep: AssetDefinition;
5
- key: string;
6
5
  depKey: string;
7
6
  getCachedAsset: (dep: AssetDefinition, depKey: string) => ProcessedAsset | null;
8
7
  getProcessor: (dep: AssetDefinition) => AssetProcessor | undefined;
@@ -1,45 +1,28 @@
1
- import { fileSystem } from "@ecopages/file-system";
2
- async function processUngroupedDependency(options) {
3
- const {
4
- dep,
5
- key,
6
- depKey,
7
- getCachedAsset,
8
- getProcessor,
9
- resolveProcessedAssetSrcUrl,
10
- setCachedAsset,
11
- logMissingProcessor,
12
- logMissingFile,
13
- logProcessingError
14
- } = options;
15
- const cached = getCachedAsset(dep, depKey);
16
- if (cached) {
17
- return { key, ...cached };
18
- }
19
- const processor = getProcessor(dep);
20
- if (!processor) {
21
- logMissingProcessor(dep);
22
- return null;
23
- }
24
- if (dep.source === "file" && "filepath" in dep && !fileSystem.exists(dep.filepath)) {
25
- logMissingFile(dep);
26
- return null;
27
- }
28
- try {
29
- const processed = await processor.process(dep);
30
- const srcUrl = resolveProcessedAssetSrcUrl(processed);
31
- const processedWithKey = {
32
- key,
33
- ...processed,
34
- srcUrl
35
- };
36
- setCachedAsset(dep, depKey, processedWithKey);
37
- return processedWithKey;
38
- } catch (error) {
39
- logProcessingError(dep, error);
40
- return null;
41
- }
1
+ import { fileSystem } from '@ecopages/file-system';
2
+ import { finalizeProcessedAsset } from './finalize-processed-asset.js';
3
+ export async function processUngroupedDependency(options) {
4
+ const { dep, depKey, getCachedAsset, getProcessor, resolveProcessedAssetSrcUrl, setCachedAsset, logMissingProcessor, logMissingFile, logProcessingError, } = options;
5
+ const cached = getCachedAsset(dep, depKey);
6
+ if (cached) {
7
+ return finalizeProcessedAsset(cached, resolveProcessedAssetSrcUrl);
8
+ }
9
+ const processor = getProcessor(dep);
10
+ if (!processor) {
11
+ logMissingProcessor(dep);
12
+ return null;
13
+ }
14
+ if (dep.source === 'file' && 'filepath' in dep && !fileSystem.exists(dep.filepath)) {
15
+ logMissingFile(dep);
16
+ return null;
17
+ }
18
+ try {
19
+ const processed = await processor.process(dep);
20
+ const finalized = finalizeProcessedAsset(processed, resolveProcessedAssetSrcUrl);
21
+ setCachedAsset(dep, depKey, finalized);
22
+ return finalized;
23
+ }
24
+ catch (error) {
25
+ logProcessingError(dep, error);
26
+ return null;
27
+ }
42
28
  }
43
- export {
44
- processUngroupedDependency
45
- };
@@ -1,6 +1,24 @@
1
- import type { BuildResult, BuildTranspileProfile } from '../../build/build-adapter.js';
2
- import type { EcoBuildPlugin } from '../../build/build-types.js';
1
+ import type { BuildResult } from '../../build/build-adapter.js';
2
+ import type { BuildTranspileProfile } from '../../build/build-adapter.js';
3
+ import type { EcoBuildPlugin } from '../../build/contracts/build-types.js';
3
4
  import type { EcoPagesAppConfig } from '../../types/internal-types.js';
5
+ /**
6
+ * Browser-oriented build request accepted by {@link BrowserBundleService}.
7
+ *
8
+ * @remarks
9
+ * `profile` is a {@link BuildTranspileProfile} (transpile settings only).
10
+ * `executor` selects the {@link BuildRuntime} concurrency slot:
11
+ * - `'hmr'` + (`hmr-entrypoint` | `hmr-runtime`) → `'browser-hmr'`
12
+ * - everything else (including `browser-script`, and `'build'`) → `'route-module'`
13
+ *
14
+ * Defaults `executor` to `'hmr'`. Request options are always assembled with
15
+ * browser-hmr *defaults* via {@link createBrowserBuildRequest}; only the
16
+ * concurrency/dedupe wrapper differs.
17
+ *
18
+ * Uses request-scope {@link requestBuildDedupe} plus in-flight
19
+ * {@link DedupingBuildExecutor} coalescing; both key on
20
+ * {@link createBuildRequestIdentity}.
21
+ */
4
22
  export type BrowserBundleOptions = {
5
23
  entrypoints: string[] | Record<string, string>;
6
24
  outdir?: string;
@@ -17,28 +35,10 @@ export type BrowserBundleOptions = {
17
35
  external?: string[];
18
36
  plugins?: EcoBuildPlugin[];
19
37
  executor?: 'build' | 'hmr';
20
- [key: string]: unknown;
21
- profile: BuildTranspileProfile;
22
- excludeAppBuildPlugins?: string[];
23
- };
24
- type BrowserBundleGroupedOptions = {
25
- outdir?: string;
26
- outbase?: string;
27
- naming?: string;
28
- conditions?: string[];
29
- define?: Record<string, string>;
30
- minify?: boolean;
31
- treeshaking?: boolean;
32
- splitting?: boolean;
33
- root?: string;
34
- bundle?: boolean;
35
- externalPackages?: boolean;
36
- external?: string[];
37
- plugins?: EcoBuildPlugin[];
38
- [key: string]: unknown;
39
38
  profile: BuildTranspileProfile;
40
39
  excludeAppBuildPlugins?: string[];
41
40
  };
41
+ type BrowserBundleGroupedOptions = Omit<BrowserBundleOptions, 'entrypoints'>;
42
42
  export interface BrowserBundleExecutor {
43
43
  bundle(options: BrowserBundleOptions): Promise<BuildResult>;
44
44
  }
@@ -50,23 +50,20 @@ export type BrowserBundleGroupedEntry = {
50
50
  * App-owned boundary for browser-oriented bundle work.
51
51
  *
52
52
  * @remarks
53
- * This service owns the shared browser transpile defaults and ensures browser
54
- * builds always run through the app-owned executor rather than direct backend
55
- * calls scattered across HMR and asset processing paths.
53
+ * Owns shared browser transpile defaults and ensures browser builds run through
54
+ * the app-owned executor rather than direct backend calls. Assembles a complete
55
+ * request via {@link createBrowserBuildRequest} before scheduling.
56
56
  */
57
57
  export declare class BrowserBundleService implements BrowserBundleExecutor {
58
58
  private readonly appConfig;
59
- /**
60
- * Creates the browser bundle boundary for one finalized app instance.
61
- */
62
59
  constructor(appConfig: EcoPagesAppConfig);
63
60
  /**
64
61
  * Runs one browser-targeted build through the app-owned executor.
65
62
  *
66
63
  * @remarks
67
- * Browser defaults and app-owned browser build plugins are applied here so HMR
68
- * and runtime asset generation do not have to recreate that policy at each call
69
- * site.
64
+ * Browser defaults, app-owned browser plugins, and
65
+ * {@link getAppSourceTransforms | app source transforms} are applied here
66
+ * so HMR and asset generation do not recreate that policy at each call site.
70
67
  */
71
68
  bundle(options: BrowserBundleOptions): Promise<BuildResult>;
72
69
  bundleGroupedEntries(entries: BrowserBundleGroupedEntry[], options: BrowserBundleGroupedOptions): Promise<BuildResult>;
@@ -1,47 +1,55 @@
1
- import {
2
- getAppBrowserBuildPlugins,
3
- getAppBuildExecutor,
4
- getAppHmrBuildExecutor,
5
- getAppTranspileOptions
6
- } from "../../build/build-adapter.js";
7
- import { mergeEcoBuildPlugins } from "../../build/build-manifest.js";
8
- class BrowserBundleService {
9
- appConfig;
10
- /**
11
- * Creates the browser bundle boundary for one finalized app instance.
12
- */
13
- constructor(appConfig) {
14
- this.appConfig = appConfig;
15
- }
16
- /**
17
- * Runs one browser-targeted build through the app-owned executor.
18
- *
19
- * @remarks
20
- * Browser defaults and app-owned browser build plugins are applied here so HMR
21
- * and runtime asset generation do not have to recreate that policy at each call
22
- * site.
23
- */
24
- async bundle(options) {
25
- const { profile, excludeAppBuildPlugins, plugins, executor = "hmr", ...rawBuildOptions } = options;
26
- const appBrowserPlugins = getAppBrowserBuildPlugins(this.appConfig);
27
- const filteredAppBrowserPlugins = excludeAppBuildPlugins && excludeAppBuildPlugins.length > 0 ? appBrowserPlugins.filter((plugin) => !excludeAppBuildPlugins.includes(plugin.name)) : appBrowserPlugins;
28
- const request = {
29
- ...rawBuildOptions,
30
- entrypoints: options.entrypoints,
31
- ...getAppTranspileOptions(this.appConfig, profile),
32
- plugins: mergeEcoBuildPlugins(plugins, filteredAppBrowserPlugins)
33
- };
34
- const buildExecutor = executor === "build" ? getAppBuildExecutor(this.appConfig) : getAppHmrBuildExecutor(this.appConfig);
35
- return await buildExecutor.build(request);
36
- }
37
- async bundleGroupedEntries(entries, options) {
38
- const request = {
39
- ...options,
40
- entrypoints: entries.map((entry) => entry.entrypoint)
41
- };
42
- return this.bundle(request);
43
- }
1
+ import { createBrowserBuildRequest } from '../../build/runtime/build-request-policy.js';
2
+ import { requireBuildRuntime } from '../../build/runtime/build-runtime.js';
3
+ import { startupTrace } from '../../diagnostics/startup-trace.js';
4
+ import { requestBuildDedupe } from '../../diagnostics/request-build-dedupe.js';
5
+ import { createBuildRequestIdentity } from '../../build/runtime/build-request-identity.js';
6
+ function resolveBrowserBundleExecutor(appConfig, profile, executor) {
7
+ const buildRuntime = requireBuildRuntime(appConfig);
8
+ if (executor === 'hmr' && (profile === 'hmr-entrypoint' || profile === 'hmr-runtime')) {
9
+ return buildRuntime.getProfile('browser-hmr');
10
+ }
11
+ return buildRuntime.getProfile('route-module');
12
+ }
13
+ /**
14
+ * App-owned boundary for browser-oriented bundle work.
15
+ *
16
+ * @remarks
17
+ * Owns shared browser transpile defaults and ensures browser builds run through
18
+ * the app-owned executor rather than direct backend calls. Assembles a complete
19
+ * request via {@link createBrowserBuildRequest} before scheduling.
20
+ */
21
+ export class BrowserBundleService {
22
+ appConfig;
23
+ constructor(appConfig) {
24
+ this.appConfig = appConfig;
25
+ }
26
+ /**
27
+ * Runs one browser-targeted build through the app-owned executor.
28
+ *
29
+ * @remarks
30
+ * Browser defaults, app-owned browser plugins, and
31
+ * {@link getAppSourceTransforms | app source transforms} are applied here
32
+ * so HMR and asset generation do not recreate that policy at each call site.
33
+ */
34
+ async bundle(options) {
35
+ const { profile, executor = 'hmr', ...requestInput } = options;
36
+ const request = createBrowserBuildRequest(this.appConfig, {
37
+ ...requestInput,
38
+ profile,
39
+ });
40
+ const buildExecutor = resolveBrowserBundleExecutor(this.appConfig, profile, executor);
41
+ const dedupeKey = createBuildRequestIdentity(request);
42
+ return requestBuildDedupe.dedupeBuild(dedupeKey, async () => {
43
+ const result = await buildExecutor.build(request);
44
+ startupTrace.recordBrowserBundle(result.outputs);
45
+ return result;
46
+ });
47
+ }
48
+ async bundleGroupedEntries(entries, options) {
49
+ const request = {
50
+ ...options,
51
+ entrypoints: Object.fromEntries(entries.map((entry) => [entry.entryName, entry.entrypoint])),
52
+ };
53
+ return this.bundle(request);
54
+ }
44
55
  }
45
- export {
46
- BrowserBundleService
47
- };
@@ -0,0 +1,17 @@
1
+ import type { EcoPagesAppConfig } from '../../types/internal-types.js';
2
+ /**
3
+ * Returns the current browser-runtime asset generation for one app.
4
+ *
5
+ * @remarks
6
+ * Development HTML caches include this generation so rebuilt bootstrap and
7
+ * vendor URLs cannot leave stale script references behind.
8
+ */
9
+ export declare function getBrowserRuntimeAssetGeneration(appConfig: EcoPagesAppConfig): number;
10
+ /**
11
+ * Bumps browser-runtime asset generation and clears rendered HTML cache entries.
12
+ *
13
+ * @remarks
14
+ * Only call this when a previously cached runtime/page-script asset filepath changes.
15
+ * First inserts must not bump generation or cold start thrash-clears the HTML cache.
16
+ */
17
+ export declare function bumpBrowserRuntimeAssetGeneration(appConfig: EcoPagesAppConfig): Promise<void>;
@@ -0,0 +1,28 @@
1
+ import { clearAppPageCache } from '../cache/page-cache-service.js';
2
+ import { isDevelopmentRuntime } from '../../utils/runtime.js';
3
+ const generationByAppConfig = new WeakMap();
4
+ /**
5
+ * Returns the current browser-runtime asset generation for one app.
6
+ *
7
+ * @remarks
8
+ * Development HTML caches include this generation so rebuilt bootstrap and
9
+ * vendor URLs cannot leave stale script references behind.
10
+ */
11
+ export function getBrowserRuntimeAssetGeneration(appConfig) {
12
+ return generationByAppConfig.get(appConfig) ?? 0;
13
+ }
14
+ /**
15
+ * Bumps browser-runtime asset generation and clears rendered HTML cache entries.
16
+ *
17
+ * @remarks
18
+ * Only call this when a previously cached runtime/page-script asset filepath changes.
19
+ * First inserts must not bump generation or cold start thrash-clears the HTML cache.
20
+ */
21
+ export async function bumpBrowserRuntimeAssetGeneration(appConfig) {
22
+ if (!isDevelopmentRuntime()) {
23
+ return;
24
+ }
25
+ const nextGeneration = getBrowserRuntimeAssetGeneration(appConfig) + 1;
26
+ generationByAppConfig.set(appConfig, nextGeneration);
27
+ await clearAppPageCache(appConfig);
28
+ }
@@ -8,6 +8,8 @@
8
8
  export interface RenderResult {
9
9
  html: string;
10
10
  strategy: CacheStrategy;
11
+ /** Source paths that contributed to this render; used for selective HTML cache invalidation. */
12
+ sourceDependencyPaths?: readonly string[];
11
13
  }
12
14
  /**
13
15
  * Render strategy configuration for pages.
@@ -83,8 +85,8 @@ export interface CacheConfig {
83
85
  defaultStrategy?: CacheStrategy;
84
86
  /**
85
87
  * Whether caching is enabled.
86
- * Automatically disabled in dev mode unless explicitly set.
87
- * @default true (production), false (development)
88
+ * In watch mode, defaults to `false` unless explicitly enabled.
89
+ * @default true in production builds, false in watch when omitted
88
90
  */
89
91
  enabled?: boolean;
90
92
  /**
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Cache types and interfaces for page caching and ISR
3
+ * @module
4
+ */
5
+ export {};
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Maps source dependency paths to rendered HTML cache keys for selective invalidation.
3
+ */
4
+ export declare class HtmlPageCacheDependencyIndex {
5
+ private readonly sourcePathToCacheKeys;
6
+ private readonly cacheKeyToSourcePaths;
7
+ /**
8
+ * Records which source paths contributed to one cached HTML entry.
9
+ */
10
+ register(cacheKey: string, sourcePaths: readonly string[]): void;
11
+ /**
12
+ * Removes dependency metadata for one cache key.
13
+ */
14
+ unregister(cacheKey: string): void;
15
+ /**
16
+ * Returns cache keys that depend on any of the given source paths.
17
+ */
18
+ resolveCacheKeysForSourcePaths(sourcePaths: readonly string[]): string[];
19
+ clear(): void;
20
+ }
21
+ type CollectHtmlCacheSourceDependencyPathsInput = {
22
+ routeFile: string;
23
+ processedAssets: readonly {
24
+ sourceFilepath?: string;
25
+ bundledSourceFilepaths?: readonly string[];
26
+ }[];
27
+ graphDependencyPaths?: ReadonlySet<string>;
28
+ additionalSourcePaths?: readonly string[];
29
+ };
30
+ /**
31
+ * Merges route, graph, processed-asset, and caller-supplied source paths for HTML cache invalidation.
32
+ */
33
+ export declare function collectHtmlCacheSourceDependencyPaths(input: CollectHtmlCacheSourceDependencyPathsInput): string[];
34
+ export {};
@@ -0,0 +1,88 @@
1
+ import path from 'node:path';
2
+ /**
3
+ * Maps source dependency paths to rendered HTML cache keys for selective invalidation.
4
+ */
5
+ export class HtmlPageCacheDependencyIndex {
6
+ sourcePathToCacheKeys = new Map();
7
+ cacheKeyToSourcePaths = new Map();
8
+ /**
9
+ * Records which source paths contributed to one cached HTML entry.
10
+ */
11
+ register(cacheKey, sourcePaths) {
12
+ this.unregister(cacheKey);
13
+ if (sourcePaths.length === 0) {
14
+ return;
15
+ }
16
+ const normalizedSourcePaths = new Set(sourcePaths.map((sourcePath) => normalizeSourcePath(sourcePath)));
17
+ this.cacheKeyToSourcePaths.set(cacheKey, normalizedSourcePaths);
18
+ for (const sourcePath of normalizedSourcePaths) {
19
+ const cacheKeys = this.sourcePathToCacheKeys.get(sourcePath) ?? new Set();
20
+ cacheKeys.add(cacheKey);
21
+ this.sourcePathToCacheKeys.set(sourcePath, cacheKeys);
22
+ }
23
+ }
24
+ /**
25
+ * Removes dependency metadata for one cache key.
26
+ */
27
+ unregister(cacheKey) {
28
+ const sourcePaths = this.cacheKeyToSourcePaths.get(cacheKey);
29
+ if (!sourcePaths) {
30
+ return;
31
+ }
32
+ for (const sourcePath of sourcePaths) {
33
+ const cacheKeys = this.sourcePathToCacheKeys.get(sourcePath);
34
+ cacheKeys?.delete(cacheKey);
35
+ if (cacheKeys?.size === 0) {
36
+ this.sourcePathToCacheKeys.delete(sourcePath);
37
+ }
38
+ }
39
+ this.cacheKeyToSourcePaths.delete(cacheKey);
40
+ }
41
+ /**
42
+ * Returns cache keys that depend on any of the given source paths.
43
+ */
44
+ resolveCacheKeysForSourcePaths(sourcePaths) {
45
+ const cacheKeys = new Set();
46
+ for (const sourcePath of sourcePaths) {
47
+ const normalizedSourcePath = normalizeSourcePath(sourcePath);
48
+ const matches = this.sourcePathToCacheKeys.get(normalizedSourcePath);
49
+ if (!matches) {
50
+ continue;
51
+ }
52
+ for (const cacheKey of matches) {
53
+ cacheKeys.add(cacheKey);
54
+ }
55
+ }
56
+ return [...cacheKeys];
57
+ }
58
+ clear() {
59
+ this.sourcePathToCacheKeys.clear();
60
+ this.cacheKeyToSourcePaths.clear();
61
+ }
62
+ }
63
+ function normalizeSourcePath(sourcePath) {
64
+ return path.resolve(sourcePath);
65
+ }
66
+ /**
67
+ * Merges route, graph, processed-asset, and caller-supplied source paths for HTML cache invalidation.
68
+ */
69
+ export function collectHtmlCacheSourceDependencyPaths(input) {
70
+ const sourcePaths = new Set([normalizeSourcePath(input.routeFile)]);
71
+ for (const additionalPath of input.additionalSourcePaths ?? []) {
72
+ sourcePaths.add(normalizeSourcePath(additionalPath));
73
+ }
74
+ if (input.graphDependencyPaths) {
75
+ for (const graphPath of input.graphDependencyPaths) {
76
+ sourcePaths.add(normalizeSourcePath(graphPath));
77
+ }
78
+ }
79
+ for (const asset of input.processedAssets) {
80
+ if (asset.sourceFilepath) {
81
+ sourcePaths.add(normalizeSourcePath(asset.sourceFilepath));
82
+ }
83
+ for (const bundledSourceFilepath of asset.bundledSourceFilepaths ?? []) {
84
+ sourcePaths.add(normalizeSourcePath(bundledSourceFilepath));
85
+ }
86
+ }
87
+ return [...sourcePaths];
88
+ }
@@ -4,4 +4,6 @@
4
4
  */
5
5
  export type { CacheConfig, CacheEntry, CacheResult, CacheStats, CacheStore, CacheStrategy, RenderResult, } from './cache.types.js';
6
6
  export { MemoryCacheStore, type MemoryCacheStoreOptions } from './memory-cache-store.js';
7
+ export { HtmlPageCacheDependencyIndex } from './html-page-cache-dependency-index.js';
7
8
  export { getCacheControlHeader, PageCacheService, type PageCacheServiceOptions } from './page-cache-service.js';
9
+ export { clearAppPageCache, getAppPageCacheService, invalidateAppPageCacheBySourcePaths, registerAppPageCacheService, } from './page-cache-service.js';