@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,193 +1,231 @@
1
- import path from "node:path";
2
- import { pathToFileURL } from "node:url";
3
- import { fileSystem } from "@ecopages/file-system";
4
- import { build } from "../../build/build-adapter.js";
5
- import { normalizeNodeRuntimeBuildOutputFile } from "../../build/runtime-build-output-normalizer.js";
6
- import { supportsSourceModuleLoading } from "./source-module-support.js";
7
- class PageModuleImportService {
8
- dependencies;
9
- importCache = /* @__PURE__ */ new Map();
10
- developmentInvalidationVersion = 0;
11
- constructor(dependencies) {
12
- this.dependencies = {
13
- hashFile: dependencies?.hashFile ?? ((filePath) => fileSystem.hash(filePath)),
14
- buildModule: dependencies?.buildModule ?? ((options, buildExecutor) => build(options, buildExecutor)),
15
- canLoadSourceModuleFromHost: dependencies?.canLoadSourceModuleFromHost ?? supportsSourceModuleLoading,
16
- getHostModuleLoader: dependencies?.getHostModuleLoader ?? (() => void 0)
17
- };
18
- }
19
- /**
20
- * Clears the shared import cache used by framework-owned page-module loads.
21
- */
22
- clearImportCache() {
23
- this.importCache.clear();
24
- }
25
- /**
26
- * Invalidates all previously imported modules in development by clearing the
27
- * import cache and incrementing the invalidation version included in cache keys.
28
- *
29
- * This forces all modules to be reloaded on the next import, even if their
30
- * source content hasn't changed. This is necessary to ensure that changes to
31
- * non-content aspects of modules (e.g. dependencies, transpilation output)
32
- * are picked up during development.
33
- */
34
- invalidateDevelopmentGraph() {
35
- this.clearImportCache();
36
- this.developmentInvalidationVersion += 1;
37
- }
38
- /**
39
- * Imports a page-like module from source.
40
- *
41
- * The caller controls the output directory and error wording so different
42
- * subsystems can reuse the same loading mechanism while preserving their
43
- * current diagnostics. Module identities stay stable for unchanged files and
44
- * roll forward automatically when the source hash changes during watch mode.
45
- *
46
- * @typeParam T Expected module shape.
47
- * @param options Runtime-specific import settings.
48
- * @returns The loaded module.
49
- */
50
- async importModule(options) {
51
- const { filePath } = options;
52
- const invalidationVersion = options.invalidationVersion ?? this.developmentInvalidationVersion;
53
- const { externalPackages, splitting } = options;
54
- const fileHash = this.dependencies.hashFile(filePath);
55
- const hostModuleLoader = typeof Bun === "undefined" && process.env.NODE_ENV === "development" && this.dependencies.canLoadSourceModuleFromHost(filePath) ? this.dependencies.getHostModuleLoader() : void 0;
56
- if (hostModuleLoader) {
57
- const sourceModuleUrl = createRuntimeModuleUrl(filePath, fileHash, invalidationVersion, options.cacheScope);
58
- return await hostModuleLoader(sourceModuleUrl.href);
1
+ import path from 'node:path';
2
+ import { pathToFileURL } from 'node:url';
3
+ import { fileSystem } from '@ecopages/file-system';
4
+ import { build } from '../../build/build-adapter.js';
5
+ import { createServerBuildRequest } from '../../build/runtime/build-request-policy.js';
6
+ import { resolveBuildProfileOptions } from '../../build/runtime/build-profile-options.js';
7
+ import { importPagesUnifiedGraphModule, isPagesUnifiedGraphPage, shouldBuildPagesUnifiedGraph, } from '../../build/cache/pages-unified-graph-build.js';
8
+ import { recordPageModuleBuildInvocation } from '../../build/rolldown/rolldown-build-invocation-metrics.js';
9
+ import { recordPageModuleLoad } from '../../diagnostics/request-pipeline-metrics.js';
10
+ import { createRouteModuleReuseIdentity, resolvePageModuleOutputFileName } from './route-module-build-manifest.js';
11
+ import { getSharedRouteModuleBuildCache } from './route-module-build-cache-registry.js';
12
+ import { RouteModuleDependencyHasher, resolveRouteModuleDependencyPaths, } from './route-module-dependency-hasher.js';
13
+ import { supportsSourceModuleLoading } from './source-module-support.js';
14
+ /**
15
+ * Loads page-like modules through the Ecopages build pipeline.
16
+ *
17
+ * This service centralizes the shared build-first import strategy used by route
18
+ * scanning, page data loading, and request-time page inspection. In Node
19
+ * development it can still delegate compatible source imports to the active
20
+ * host loader, but the public contract remains one transpile-targeted module
21
+ * loading path.
22
+ *
23
+ * Keeping this logic in one place prevents subtle drift in cache-busting,
24
+ * transpilation settings, and error semantics across the different callers.
25
+ */
26
+ export class PageModuleImportService {
27
+ appConfig;
28
+ dependencies;
29
+ dependencyHasher;
30
+ importCache = new Map();
31
+ developmentImportGeneration = 0;
32
+ constructor(appConfig, dependencies) {
33
+ this.appConfig = appConfig;
34
+ this.dependencies = {
35
+ hashFile: dependencies?.hashFile ?? ((filePath) => fileSystem.hash(filePath)),
36
+ buildModule: dependencies?.buildModule ?? ((options, buildExecutor) => build(options, buildExecutor)),
37
+ canLoadSourceModuleFromHost: dependencies?.canLoadSourceModuleFromHost ?? supportsSourceModuleLoading,
38
+ getHostModuleLoader: dependencies?.getHostModuleLoader ?? (() => undefined),
39
+ };
40
+ this.dependencyHasher = new RouteModuleDependencyHasher({
41
+ hashFile: (filePath) => this.dependencies.hashFile(filePath),
42
+ exists: (filePath) => fileSystem.exists(filePath),
43
+ });
59
44
  }
60
- if (options.bypassCache) {
61
- this.developmentInvalidationVersion += 1;
62
- return await this.loadModule({
63
- ...options,
64
- invalidationVersion: this.developmentInvalidationVersion,
65
- fileHash
66
- });
45
+ /**
46
+ * Clears the shared import cache used by framework-owned page-module loads.
47
+ */
48
+ clearImportCache() {
49
+ this.importCache.clear();
67
50
  }
68
- const runtime = typeof Bun !== "undefined" ? "bun" : "node-build";
69
- const cacheKey = [
70
- runtime,
71
- filePath,
72
- options.rootDir,
73
- splitting ?? "default",
74
- externalPackages ?? "default",
75
- options.cacheScope ?? "default",
76
- createJsxCacheKey(options.jsx),
77
- createPluginCacheKey(options.plugins),
78
- fileHash,
79
- invalidationVersion
80
- ].join("::");
81
- const cachedModule = this.importCache.get(cacheKey);
82
- if (cachedModule) {
83
- return await cachedModule;
51
+ /**
52
+ * Clears in-memory import promises and dependency-hash memoization so the next
53
+ * import revalidates against current source and transform identity.
54
+ */
55
+ invalidateDevelopmentGraph() {
56
+ this.developmentImportGeneration += 1;
57
+ this.clearImportCache();
58
+ this.dependencyHasher.clearMemo();
84
59
  }
85
- const importPromise = this.loadModule({
86
- ...options,
87
- fileHash
88
- });
89
- this.importCache.set(cacheKey, importPromise);
90
- try {
91
- return await importPromise;
92
- } catch (error) {
93
- this.importCache.delete(cacheKey);
94
- throw error;
60
+ /**
61
+ * Imports a page-like module from source.
62
+ *
63
+ * The caller controls the output directory and error wording so different
64
+ * subsystems can reuse the same loading mechanism while preserving their
65
+ * current diagnostics. Module identities stay stable for unchanged files and
66
+ * roll forward automatically when the source hash changes during watch mode.
67
+ *
68
+ * @typeParam T Expected module shape.
69
+ * @param options Runtime-specific import settings.
70
+ * @returns The loaded module.
71
+ */
72
+ async importModule(options) {
73
+ const { filePath } = options;
74
+ const fileHash = this.dependencies.hashFile(filePath);
75
+ const hostModuleLoader = typeof Bun === 'undefined' &&
76
+ process.env.NODE_ENV === 'development' &&
77
+ this.dependencies.canLoadSourceModuleFromHost(filePath)
78
+ ? this.dependencies.getHostModuleLoader()
79
+ : undefined;
80
+ if (hostModuleLoader) {
81
+ const sourceModuleUrl = createRuntimeModuleUrl(filePath, fileHash, this.developmentImportGeneration);
82
+ const loadedModule = (await hostModuleLoader(sourceModuleUrl.href));
83
+ recordPageModuleLoad('host-loader');
84
+ return loadedModule;
85
+ }
86
+ if (!options.bypassCache) {
87
+ const runtime = typeof Bun !== 'undefined' ? 'bun' : 'node-build';
88
+ const cacheKey = [
89
+ runtime,
90
+ filePath,
91
+ createRouteModuleReuseIdentity(options, options.sourceTransforms),
92
+ fileHash,
93
+ ].join('::');
94
+ const cachedModule = this.importCache.get(cacheKey);
95
+ if (cachedModule) {
96
+ if (!cachedModule.dependencyHashes) {
97
+ const loadedModule = (await cachedModule.promise);
98
+ recordPageModuleLoad('import-cache-hit');
99
+ return loadedModule;
100
+ }
101
+ if (this.dependencyHasher.matchesStoredHashes(cachedModule.dependencyHashes, filePath, fileHash)) {
102
+ const loadedModule = (await cachedModule.promise);
103
+ recordPageModuleLoad('import-cache-hit');
104
+ return loadedModule;
105
+ }
106
+ this.importCache.delete(cacheKey);
107
+ }
108
+ const importPromise = this.loadModule({
109
+ ...options,
110
+ fileHash,
111
+ importCacheKey: cacheKey,
112
+ });
113
+ this.importCache.set(cacheKey, { promise: importPromise });
114
+ try {
115
+ return await importPromise;
116
+ }
117
+ catch (error) {
118
+ this.importCache.delete(cacheKey);
119
+ throw error;
120
+ }
121
+ }
122
+ return await this.loadModule({
123
+ ...options,
124
+ fileHash,
125
+ });
95
126
  }
96
- }
97
- async loadModule(options) {
98
- const { filePath, invalidationVersion = this.developmentInvalidationVersion, cacheScope, fileHash } = options;
99
- const {
100
- rootDir,
101
- outdir,
102
- splitting,
103
- externalPackages,
104
- transpileErrorMessage = (details) => `Error transpiling page module: ${details}`,
105
- noOutputMessage = (targetFilePath) => `No transpiled output generated for page module: ${targetFilePath}`
106
- } = options;
107
- const fileBaseName = path.basename(filePath, path.extname(filePath));
108
- const cacheScopeSuffix = cacheScope ? `-${sanitizeCacheScope(cacheScope)}` : "";
109
- const invalidationSuffix = shouldVersionBuildOutputPath(invalidationVersion) ? `-v${invalidationVersion}` : "";
110
- const outputFileName = `${fileBaseName}-${fileHash}${cacheScopeSuffix}${invalidationSuffix}.mjs`;
111
- const outputNamingTemplate = `${fileBaseName}-${fileHash}${cacheScopeSuffix}${invalidationSuffix}.[ext]`;
112
- const buildResult = await this.dependencies.buildModule(
113
- {
114
- entrypoints: [filePath],
115
- root: rootDir,
116
- outdir,
117
- target: "es2022",
118
- format: "esm",
119
- sourcemap: "none",
120
- splitting: splitting ?? true,
121
- minify: false,
122
- naming: outputNamingTemplate,
123
- externalPackages: true,
124
- jsx: options.jsx,
125
- plugins: options.plugins,
126
- ...externalPackages !== void 0 ? { externalPackages } : {}
127
- },
128
- options.buildExecutor
129
- );
130
- if (!buildResult.success) {
131
- const details = buildResult.logs.map((log) => log.message).join(" | ");
132
- throw new Error(transpileErrorMessage(details));
127
+ async loadModule(options) {
128
+ const { filePath, fileHash, importCacheKey } = options;
129
+ const { rootDir, outdir, splitting, externalPackages, transpileErrorMessage = (details) => `Error transpiling page module: ${details}`, noOutputMessage = (targetFilePath) => `No transpiled output generated for page module: ${targetFilePath}`, } = options;
130
+ const outputFileName = resolvePageModuleOutputFileName({
131
+ filePath,
132
+ fileHash,
133
+ });
134
+ const outputNamingTemplate = outputFileName.replace(/\.mjs$/u, '.[ext]');
135
+ const preferredOutputPath = path.join(outdir, outputFileName);
136
+ const buildOptions = this.appConfig
137
+ ? createServerBuildRequest(this.appConfig, {
138
+ profile: 'route-module',
139
+ entrypoints: [filePath],
140
+ outdir,
141
+ naming: outputNamingTemplate,
142
+ splitting: splitting ?? true,
143
+ jsx: options.jsx,
144
+ plugins: options.plugins,
145
+ root: rootDir,
146
+ ...(externalPackages !== undefined ? { externalPackages } : {}),
147
+ })
148
+ : {
149
+ ...resolveBuildProfileOptions('route-module', { rootDir }, {
150
+ entrypoints: [filePath],
151
+ outdir,
152
+ naming: outputNamingTemplate,
153
+ splitting: splitting ?? true,
154
+ jsx: options.jsx,
155
+ plugins: options.plugins,
156
+ ...(externalPackages !== undefined ? { externalPackages } : {}),
157
+ }),
158
+ root: rootDir,
159
+ entrypoints: [filePath],
160
+ };
161
+ const cacheBuildOptions = {
162
+ ...options,
163
+ rootDir: buildOptions.root ?? rootDir,
164
+ outdir: buildOptions.outdir ?? outdir,
165
+ splitting: buildOptions.splitting,
166
+ externalPackages: buildOptions.externalPackages,
167
+ jsx: buildOptions.jsx,
168
+ plugins: buildOptions.plugins,
169
+ sourceTransforms: buildOptions.sourceTransforms,
170
+ fileHash,
171
+ };
172
+ const routeModuleBuildCache = this.getRouteModuleBuildCache(outdir);
173
+ const cachedBuild = routeModuleBuildCache.lookup(cacheBuildOptions);
174
+ if (cachedBuild) {
175
+ const loadedModule = (await import(/* @vite-ignore */ pathToFileURL(cachedBuild.outputPath).href));
176
+ recordPageModuleLoad('disk-cache-hit');
177
+ return loadedModule;
178
+ }
179
+ if (shouldBuildPagesUnifiedGraph() && this.appConfig && isPagesUnifiedGraphPage(filePath, this.appConfig)) {
180
+ const graphModule = await importPagesUnifiedGraphModule(this.appConfig, filePath);
181
+ if (graphModule !== undefined) {
182
+ recordPageModuleLoad('unified-graph');
183
+ return graphModule;
184
+ }
185
+ }
186
+ recordPageModuleBuildInvocation();
187
+ const buildResult = await this.dependencies.buildModule(buildOptions, options.buildExecutor);
188
+ recordPageModuleLoad('cold-build', buildResult.outputs.length);
189
+ if (!buildResult.success) {
190
+ const details = buildResult.logs.map((log) => log.message).join(' | ');
191
+ throw new Error(transpileErrorMessage(details));
192
+ }
193
+ const compiledOutput = buildResult.outputs.find((output) => output.path === preferredOutputPath)?.path ??
194
+ buildResult.outputs.find((output) => /\.(?:[cm]?js)$/u.test(output.path))?.path;
195
+ if (!compiledOutput) {
196
+ throw new Error(noOutputMessage(filePath));
197
+ }
198
+ const dependencyModulePaths = resolveRouteModuleDependencyPaths(buildResult, filePath, rootDir);
199
+ const dependencyHashes = this.dependencyHasher.createDependencyHashes(dependencyModulePaths);
200
+ dependencyHashes[path.normalize(filePath)] = fileHash;
201
+ if (importCacheKey) {
202
+ const cacheEntry = this.importCache.get(importCacheKey);
203
+ if (cacheEntry) {
204
+ cacheEntry.dependencyHashes = dependencyHashes;
205
+ }
206
+ }
207
+ routeModuleBuildCache.recordBuild({
208
+ ...cacheBuildOptions,
209
+ outputPath: compiledOutput,
210
+ dependencyModulePaths,
211
+ });
212
+ const compiledOutputUrl = pathToFileURL(compiledOutput);
213
+ if (shouldAddRuntimeUpdateQuery()) {
214
+ compiledOutputUrl.searchParams.set('update', `${fileHash}-${this.developmentImportGeneration}`);
215
+ }
216
+ return (await import(/* @vite-ignore */ compiledOutputUrl.href));
133
217
  }
134
- const preferredOutputPath = path.join(outdir, outputFileName);
135
- const compiledOutput = buildResult.outputs.find((output) => output.path === preferredOutputPath)?.path ?? buildResult.outputs.find((output) => /\.(?:[cm]?js)$/u.test(output.path))?.path;
136
- if (!compiledOutput) {
137
- throw new Error(noOutputMessage(filePath));
218
+ getRouteModuleBuildCache(outdir) {
219
+ return getSharedRouteModuleBuildCache(outdir, this.appConfig);
138
220
  }
139
- normalizeNodeRuntimeBuildOutputFile(compiledOutput, rootDir);
140
- const compiledOutputUrl = pathToFileURL(compiledOutput);
141
- if (shouldAddRuntimeUpdateQuery(invalidationVersion, cacheScope)) {
142
- compiledOutputUrl.searchParams.set(
143
- "update",
144
- [fileHash, invalidationVersion, cacheScope ? sanitizeCacheScope(cacheScope) : void 0].filter((value) => value !== void 0).join("-")
145
- );
146
- }
147
- return await import(
148
- /* @vite-ignore */
149
- compiledOutputUrl.href
150
- );
151
- }
152
- }
153
- function createRuntimeModuleUrl(filePath, fileHash, invalidationVersion, cacheScope) {
154
- const moduleUrl = pathToFileURL(filePath);
155
- if (shouldAddRuntimeUpdateQuery(invalidationVersion, cacheScope)) {
156
- moduleUrl.searchParams.set(
157
- "update",
158
- [fileHash, invalidationVersion, cacheScope ? sanitizeCacheScope(cacheScope) : void 0].filter((value) => value !== void 0).join("-")
159
- );
160
- }
161
- return moduleUrl;
162
- }
163
- function shouldAddRuntimeUpdateQuery(invalidationVersion, cacheScope) {
164
- return process.env.NODE_ENV === "development" || invalidationVersion > 0 || !!cacheScope;
165
221
  }
166
- function shouldVersionBuildOutputPath(invalidationVersion) {
167
- return typeof Bun !== "undefined" && invalidationVersion > 0;
168
- }
169
- function sanitizeCacheScope(cacheScope) {
170
- return cacheScope.replace(/[^a-zA-Z0-9_-]+/g, "-");
171
- }
172
- function createJsxCacheKey(jsx) {
173
- if (!jsx) {
174
- return "jsx:default";
175
- }
176
- return JSON.stringify({
177
- development: jsx.development ?? false,
178
- factory: jsx.factory ?? null,
179
- fragment: jsx.fragment ?? null,
180
- importSource: jsx.importSource ?? null,
181
- runtime: jsx.runtime ?? null,
182
- sideEffects: jsx.sideEffects ?? null
183
- });
222
+ function createRuntimeModuleUrl(filePath, fileHash, developmentImportGeneration) {
223
+ const moduleUrl = pathToFileURL(filePath);
224
+ if (shouldAddRuntimeUpdateQuery()) {
225
+ moduleUrl.searchParams.set('update', `${fileHash}-${developmentImportGeneration}`);
226
+ }
227
+ return moduleUrl;
184
228
  }
185
- function createPluginCacheKey(plugins) {
186
- if (!plugins || plugins.length === 0) {
187
- return "plugins:default";
188
- }
189
- return `plugins:${plugins.map((plugin) => plugin.name).join(",")}`;
229
+ function shouldAddRuntimeUpdateQuery() {
230
+ return process.env.NODE_ENV === 'development';
190
231
  }
191
- export {
192
- PageModuleImportService
193
- };
@@ -0,0 +1,24 @@
1
+ import type { EcoPagesAppConfig } from '../../types/internal-types.js';
2
+ import { RouteModuleBuildCache } from './route-module-build-cache.store.js';
3
+ /**
4
+ * Returns the outdir whose transpile cache backs incremental static generation.
5
+ *
6
+ * @remarks
7
+ * Static pages render through `.eco/.server-modules`. The manifest there carries
8
+ * import-graph hashes from transpile, so static-render reuse must read the same
9
+ * directory rather than `.server-route-modules`, which only serves route-registry
10
+ * scanning.
11
+ */
12
+ export declare function getServerModuleBuildCacheOutdir(appConfig: EcoPagesAppConfig): string;
13
+ /**
14
+ * @deprecated Use {@link getServerModuleBuildCacheOutdir}.
15
+ */
16
+ export declare const getRouteModuleBuildCacheOutdir: typeof getServerModuleBuildCacheOutdir;
17
+ /**
18
+ * Returns the shared production build cache for one server-module outdir.
19
+ *
20
+ * @remarks
21
+ * One app-scoped instance prevents manifest drift between page imports and static
22
+ * generation during the same build process.
23
+ */
24
+ export declare function getSharedRouteModuleBuildCache(outdir: string, appConfig?: EcoPagesAppConfig): RouteModuleBuildCache;
@@ -0,0 +1,51 @@
1
+ import path from 'node:path';
2
+ import { resolveInternalExecutionDir } from '../../utils/resolve-work-dir.js';
3
+ import { RouteModuleBuildCache } from './route-module-build-cache.store.js';
4
+ /**
5
+ * Returns the outdir whose transpile cache backs incremental static generation.
6
+ *
7
+ * @remarks
8
+ * Static pages render through `.eco/.server-modules`. The manifest there carries
9
+ * import-graph hashes from transpile, so static-render reuse must read the same
10
+ * directory rather than `.server-route-modules`, which only serves route-registry
11
+ * scanning.
12
+ */
13
+ export function getServerModuleBuildCacheOutdir(appConfig) {
14
+ return path.join(resolveInternalExecutionDir(appConfig), '.server-modules');
15
+ }
16
+ /**
17
+ * @deprecated Use {@link getServerModuleBuildCacheOutdir}.
18
+ */
19
+ export const getRouteModuleBuildCacheOutdir = getServerModuleBuildCacheOutdir;
20
+ function getRouteModuleBuildCacheMap(appConfig) {
21
+ const existing = appConfig.runtime?.routeModuleBuildCaches;
22
+ if (existing) {
23
+ return existing;
24
+ }
25
+ const routeModuleBuildCaches = new Map();
26
+ appConfig.runtime = {
27
+ ...(appConfig.runtime ?? {}),
28
+ routeModuleBuildCaches,
29
+ };
30
+ return routeModuleBuildCaches;
31
+ }
32
+ /**
33
+ * Returns the shared production build cache for one server-module outdir.
34
+ *
35
+ * @remarks
36
+ * One app-scoped instance prevents manifest drift between page imports and static
37
+ * generation during the same build process.
38
+ */
39
+ export function getSharedRouteModuleBuildCache(outdir, appConfig) {
40
+ if (!appConfig) {
41
+ return new RouteModuleBuildCache(outdir);
42
+ }
43
+ const caches = getRouteModuleBuildCacheMap(appConfig);
44
+ const existingCache = caches.get(outdir);
45
+ if (existingCache) {
46
+ return existingCache;
47
+ }
48
+ const routeModuleBuildCache = new RouteModuleBuildCache(outdir);
49
+ caches.set(outdir, routeModuleBuildCache);
50
+ return routeModuleBuildCache;
51
+ }
@@ -0,0 +1,4 @@
1
+ export type { RouteModuleDependencyHashes } from './route-module-dependency-hasher.js';
2
+ export { ROUTE_MODULE_BUILD_CACHE_FILENAME, createEmptyRouteModuleBuildCacheManifest, createPersistedRouteModuleBuildKey, createPluginCacheKey, createJsxCacheKey, hashPluginSetup, getCorePackageVersion, normalizeRouteModuleCachePath, readRouteModuleBuildCacheManifest, resolvePageModuleOutputFileName, shouldPersistRouteModuleBuildCache, writeRouteModuleBuildCacheManifest, type RouteModuleBuildCacheEntry, type RouteModuleBuildCacheLookup, type RouteModuleBuildCacheManifest, type RouteModuleStaticRenderCacheContext, type RouteModuleStaticRenderCacheEntry, } from './route-module-build-manifest.js';
3
+ export { RouteModuleBuildCache } from './route-module-build-cache.store.js';
4
+ export { getRouteModuleBuildCacheOutdir, getServerModuleBuildCacheOutdir, getSharedRouteModuleBuildCache, } from './route-module-build-cache-registry.js';
@@ -0,0 +1,3 @@
1
+ export { ROUTE_MODULE_BUILD_CACHE_FILENAME, createEmptyRouteModuleBuildCacheManifest, createPersistedRouteModuleBuildKey, createPluginCacheKey, createJsxCacheKey, hashPluginSetup, getCorePackageVersion, normalizeRouteModuleCachePath, readRouteModuleBuildCacheManifest, resolvePageModuleOutputFileName, shouldPersistRouteModuleBuildCache, writeRouteModuleBuildCacheManifest, } from './route-module-build-manifest.js';
2
+ export { RouteModuleBuildCache } from './route-module-build-cache.store.js';
3
+ export { getRouteModuleBuildCacheOutdir, getServerModuleBuildCacheOutdir, getSharedRouteModuleBuildCache, } from './route-module-build-cache-registry.js';
@@ -0,0 +1,57 @@
1
+ import type { PageModuleBuildImportOptions } from './page-module-import.service.js';
2
+ import { RouteModuleDependencyHasher, type RouteModuleDependencyHashes } from './route-module-dependency-hasher.js';
3
+ import { type RouteModuleBuildCacheLookup, type RouteModuleBuildCacheManifest, type RouteModuleStaticRenderCacheContext } from './route-module-build-manifest.js';
4
+ export type { RouteModuleDependencyHashes };
5
+ type RouteModuleBuildCacheDependencies = {
6
+ readManifest: (manifestPath: string) => RouteModuleBuildCacheManifest | undefined;
7
+ writeManifest: (manifestPath: string, manifest: RouteModuleBuildCacheManifest) => void;
8
+ exists: (filePath: string) => boolean;
9
+ getCorePackageVersion: () => string;
10
+ createDependencyHasher: () => RouteModuleDependencyHasher;
11
+ };
12
+ /**
13
+ * Persists route-module transpile and static-render metadata under one server outdir.
14
+ */
15
+ export declare class RouteModuleBuildCache {
16
+ private readonly manifestPath;
17
+ private readonly dependencies;
18
+ private readonly dependencyHasher;
19
+ private manifest;
20
+ private manifestLoaded;
21
+ constructor(outdir: string, dependencies?: Partial<RouteModuleBuildCacheDependencies>);
22
+ lookup(options: PageModuleBuildImportOptions & {
23
+ fileHash: string;
24
+ }): RouteModuleBuildCacheLookup | undefined;
25
+ recordBuild(options: PageModuleBuildImportOptions & {
26
+ fileHash: string;
27
+ outputPath: string;
28
+ dependencyModulePaths?: readonly string[];
29
+ }): void;
30
+ isIncrementalStaticGenerationAvailable(context: RouteModuleStaticRenderCacheContext): boolean;
31
+ ensureIncrementalStaticGenerationContext(context: RouteModuleStaticRenderCacheContext): void;
32
+ canReuseStaticRender(options: {
33
+ sourceFile: string;
34
+ pathname: string;
35
+ renderedOutputPath: string;
36
+ context: RouteModuleStaticRenderCacheContext;
37
+ force?: boolean;
38
+ }): boolean;
39
+ lookupStaticRender(options: {
40
+ filePath: string;
41
+ pathname: string;
42
+ sourceHash: string;
43
+ renderedOutputPath: string;
44
+ context: RouteModuleStaticRenderCacheContext;
45
+ }): boolean;
46
+ recordStaticRender(options: {
47
+ filePath: string;
48
+ pathname: string;
49
+ sourceHash: string;
50
+ renderedOutputPath: string;
51
+ context: RouteModuleStaticRenderCacheContext;
52
+ }): void;
53
+ resetMemory(): void;
54
+ pruneStaleRenderedOutputs(activePathnames: ReadonlySet<string>): string[];
55
+ private loadManifest;
56
+ private persistManifest;
57
+ }