@ecopages/core 0.2.0-beta.9 → 0.2.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (624) hide show
  1. package/README.md +42 -13
  2. package/package.json +360 -57
  3. package/src/adapters/README.md +6 -2
  4. package/src/adapters/abstract/application-adapter.d.ts +57 -5
  5. package/src/adapters/abstract/application-adapter.js +261 -203
  6. package/src/adapters/abstract/router-adapter.js +12 -4
  7. package/src/adapters/abstract/segment-path-matcher.d.ts +6 -0
  8. package/src/adapters/abstract/segment-path-matcher.js +147 -0
  9. package/src/adapters/abstract/server-adapter.d.ts +13 -2
  10. package/src/adapters/abstract/server-adapter.js +22 -14
  11. package/src/adapters/abstract/ws-pattern-matcher.d.ts +2 -50
  12. package/src/adapters/abstract/ws-pattern-matcher.js +24 -57
  13. package/src/adapters/bun/bun-user-websocket-lifecycle.js +93 -0
  14. package/src/adapters/bun/client-bridge.js +51 -50
  15. package/src/adapters/bun/create-app.d.ts +4 -6
  16. package/src/adapters/bun/create-app.js +169 -154
  17. package/src/adapters/bun/hmr-manager.d.ts +2 -3
  18. package/src/adapters/bun/hmr-manager.js +62 -57
  19. package/src/adapters/bun/index.d.ts +1 -1
  20. package/src/adapters/bun/index.js +2 -8
  21. package/src/adapters/bun/runtime-host.d.ts +1 -1
  22. package/src/adapters/bun/runtime-host.js +61 -54
  23. package/src/adapters/bun/server-adapter.d.ts +34 -53
  24. package/src/adapters/bun/server-adapter.js +557 -637
  25. package/src/adapters/bun/static-preview-host.d.ts +1 -1
  26. package/src/adapters/bun/static-preview-host.js +43 -41
  27. package/src/adapters/create-app.d.ts +1 -12
  28. package/src/adapters/create-app.js +11 -72
  29. package/src/adapters/index.d.ts +2 -2
  30. package/src/adapters/index.js +2 -8
  31. package/src/adapters/node/create-app.d.ts +4 -3
  32. package/src/adapters/node/create-app.js +123 -98
  33. package/src/adapters/node/http-request-bridge.js +147 -106
  34. package/src/adapters/node/node-client-bridge.js +62 -64
  35. package/src/adapters/node/node-hmr-manager.d.ts +2 -3
  36. package/src/adapters/node/node-hmr-manager.js +58 -48
  37. package/src/adapters/node/runtime-host.d.ts +1 -1
  38. package/src/adapters/node/runtime-host.js +96 -89
  39. package/src/adapters/node/server-adapter-dependencies.js +18 -17
  40. package/src/adapters/node/server-adapter.d.ts +28 -8
  41. package/src/adapters/node/server-adapter.js +349 -302
  42. package/src/adapters/node/static-content-server.js +172 -186
  43. package/src/adapters/node/static-preview-host.d.ts +1 -1
  44. package/src/adapters/node/static-preview-host.js +88 -64
  45. package/src/adapters/shared/hmr/dev-transform-entrypoint-registry.d.ts +16 -0
  46. package/src/adapters/shared/hmr/dev-transform-entrypoint-registry.js +32 -0
  47. package/src/adapters/shared/{hmr-html-response.d.ts → hmr/hmr-html-response.d.ts} +2 -2
  48. package/src/adapters/shared/hmr/hmr-html-response.js +50 -0
  49. package/src/adapters/shared/hmr/shared-hmr-manager.d.ts +92 -0
  50. package/src/adapters/shared/hmr/shared-hmr-manager.js +446 -0
  51. package/src/adapters/shared/http/api-request-pipeline.d.ts +23 -0
  52. package/src/adapters/shared/http/api-request-pipeline.js +132 -0
  53. package/src/adapters/shared/{api-response.d.ts → http/api-response.d.ts} +1 -1
  54. package/src/adapters/shared/http/api-response.js +79 -0
  55. package/src/adapters/shared/http/create-body-response.d.ts +12 -0
  56. package/src/adapters/shared/http/create-body-response.js +26 -0
  57. package/src/adapters/shared/http/define-api-handler.d.ts +90 -0
  58. package/src/adapters/shared/http/define-api-handler.js +49 -0
  59. package/src/adapters/shared/{explicit-static-render-preparation.d.ts → http/explicit-static-render-preparation.d.ts} +3 -3
  60. package/src/adapters/shared/http/explicit-static-render-preparation.js +29 -0
  61. package/src/adapters/shared/{explicit-static-route-matcher.d.ts → http/explicit-static-route-matcher.d.ts} +3 -9
  62. package/src/adapters/shared/http/explicit-static-route-matcher.js +59 -0
  63. package/src/adapters/shared/{file-route-middleware-pipeline.d.ts → http/file-route-middleware-pipeline.d.ts} +2 -2
  64. package/src/adapters/shared/http/file-route-middleware-pipeline.js +84 -0
  65. package/src/adapters/shared/{fs-server-response-factory.d.ts → http/fs-server-response-factory.d.ts} +7 -2
  66. package/src/adapters/shared/http/fs-server-response-factory.js +106 -0
  67. package/src/adapters/shared/{fs-server-response-matcher.d.ts → http/fs-server-response-matcher.d.ts} +25 -5
  68. package/src/adapters/shared/http/fs-server-response-matcher.js +260 -0
  69. package/src/adapters/shared/http/run-middleware-chain.d.ts +5 -0
  70. package/src/adapters/shared/http/run-middleware-chain.js +17 -0
  71. package/src/adapters/shared/{application-adapter.d.ts → runtime/application-adapter.d.ts} +2 -2
  72. package/src/adapters/shared/runtime/application-adapter.js +75 -0
  73. package/src/adapters/shared/runtime/collect-dev-prewarm-plan.d.ts +11 -0
  74. package/src/adapters/shared/runtime/collect-dev-prewarm-plan.js +29 -0
  75. package/src/adapters/shared/runtime/copy-runtime-public-dir.js +27 -0
  76. package/src/adapters/shared/runtime/dev-static-route-prewarm.d.ts +16 -0
  77. package/src/adapters/shared/runtime/dev-static-route-prewarm.js +66 -0
  78. package/src/adapters/shared/runtime/port-manager.d.ts +116 -0
  79. package/src/adapters/shared/runtime/port-manager.js +226 -0
  80. package/src/adapters/shared/{render-context.d.ts → runtime/render-context.d.ts} +2 -2
  81. package/src/adapters/shared/runtime/render-context.js +99 -0
  82. package/src/adapters/shared/{runtime-app-bootstrap.d.ts → runtime/runtime-app-bootstrap.d.ts} +4 -2
  83. package/src/adapters/shared/runtime/runtime-app-bootstrap.js +38 -0
  84. package/src/adapters/shared/runtime/runtime-server-lifecycle.d.ts +45 -0
  85. package/src/adapters/shared/runtime/runtime-server-lifecycle.js +71 -0
  86. package/src/adapters/shared/{server-adapter.d.ts → runtime/server-adapter.d.ts} +31 -50
  87. package/src/adapters/shared/runtime/server-adapter.js +301 -0
  88. package/src/adapters/shared/{server-route-handler.d.ts → runtime/server-route-handler.d.ts} +6 -33
  89. package/src/adapters/shared/runtime/server-route-handler.js +77 -0
  90. package/src/adapters/shared/{server-static-builder.d.ts → runtime/server-static-builder.d.ts} +26 -31
  91. package/src/adapters/shared/runtime/server-static-builder.js +172 -0
  92. package/src/adapters/shared/{static-preview-host.d.ts → runtime/static-preview-host.d.ts} +6 -1
  93. package/src/adapters/shared/{node-http-websocket-upgrades.d.ts → ws/node-http-websocket-upgrades.d.ts} +1 -1
  94. package/src/adapters/shared/ws/node-http-websocket-upgrades.js +109 -0
  95. package/src/adapters/shared/ws/websocket-lifecycle.d.ts +24 -0
  96. package/src/adapters/shared/ws/websocket-lifecycle.js +62 -0
  97. package/src/build/README.md +165 -45
  98. package/src/build/app-build-manifest-runtime.d.ts +39 -0
  99. package/src/build/app-build-manifest-runtime.js +145 -0
  100. package/src/build/{browser-runtime-manifest.d.ts → browser/browser-runtime-manifest.d.ts} +4 -0
  101. package/src/build/browser/browser-runtime-manifest.js +65 -0
  102. package/src/build/{browser-runtime-plugin-helpers.d.ts → browser/browser-runtime-plugin-helpers.d.ts} +3 -5
  103. package/src/build/browser/browser-runtime-plugin-helpers.js +32 -0
  104. package/src/build/{browser-runtime-plugin.d.ts → browser/browser-runtime-plugin.d.ts} +12 -13
  105. package/src/build/browser/browser-runtime-plugin.js +218 -0
  106. package/src/build/browser/jsx-ownership-plugins.d.ts +24 -0
  107. package/src/build/browser/jsx-ownership-plugins.js +55 -0
  108. package/src/build/browser/lit-static-render-worker-context.d.ts +2 -0
  109. package/src/build/browser/lit-static-render-worker-context.js +4 -0
  110. package/src/build/build-adapter.d.ts +25 -355
  111. package/src/build/build-adapter.js +258 -265
  112. package/src/build/{build-input-fingerprint.d.ts → cache/build-input-fingerprint.d.ts} +3 -3
  113. package/src/build/cache/build-input-fingerprint.js +33 -0
  114. package/src/build/cache/cache-constants.d.ts +4 -0
  115. package/src/build/cache/cache-constants.js +4 -0
  116. package/src/build/cache/cache-keys.d.ts +22 -0
  117. package/src/build/cache/cache-keys.js +71 -0
  118. package/src/build/{pages-unified-graph-build.d.ts → cache/pages-unified-graph-build.d.ts} +1 -1
  119. package/src/build/cache/pages-unified-graph-build.js +199 -0
  120. package/src/build/cache/production-build-cache.d.ts +21 -0
  121. package/src/build/cache/production-build-cache.js +56 -0
  122. package/src/build/{server-entry-build-cache.d.ts → cache/server-entry-build-cache.d.ts} +3 -4
  123. package/src/build/cache/server-entry-build-cache.js +153 -0
  124. package/src/build/contracts/build-contracts.d.ts +96 -0
  125. package/src/build/contracts/build-contracts.js +1 -0
  126. package/src/build/contracts/build-manifest.d.ts +90 -0
  127. package/src/build/contracts/build-manifest.js +64 -0
  128. package/src/build/contracts/build-types.js +1 -0
  129. package/src/build/contracts/content-virtual-modules.d.ts +12 -0
  130. package/src/build/contracts/content-virtual-modules.js +29 -0
  131. package/src/build/{rolldown-adapter-helpers.d.ts → rolldown/rolldown-adapter-helpers.d.ts} +32 -9
  132. package/src/build/rolldown/rolldown-adapter-helpers.js +463 -0
  133. package/src/build/{rolldown-build-adapter.d.ts → rolldown/rolldown-build-adapter.d.ts} +3 -7
  134. package/src/build/rolldown/rolldown-build-adapter.js +57 -0
  135. package/src/build/{rolldown-build-invocation-metrics.d.ts → rolldown/rolldown-build-invocation-metrics.d.ts} +1 -1
  136. package/src/build/rolldown/rolldown-build-invocation-metrics.js +39 -0
  137. package/src/build/{rolldown-plugin-bridge.d.ts → rolldown/rolldown-plugin-bridge.d.ts} +7 -2
  138. package/src/build/rolldown/rolldown-plugin-bridge.js +284 -0
  139. package/src/build/{rolldown-source-transform-pass.d.ts → rolldown/rolldown-source-transform-pass.d.ts} +1 -1
  140. package/src/build/rolldown/rolldown-source-transform-pass.js +70 -0
  141. package/src/build/rolldown/runtime-build-output-normalizer.js +253 -0
  142. package/src/build/rolldown/server-side-css-shim-plugin.js +58 -0
  143. package/src/build/runtime/build-profile-options.d.ts +7 -0
  144. package/src/build/runtime/build-profile-options.js +37 -0
  145. package/src/build/runtime/build-request-identity.d.ts +17 -0
  146. package/src/build/runtime/build-request-identity.js +79 -0
  147. package/src/build/runtime/build-request-policy.d.ts +58 -0
  148. package/src/build/runtime/build-request-policy.js +84 -0
  149. package/src/build/runtime/build-runtime.d.ts +28 -0
  150. package/src/build/runtime/build-runtime.js +75 -0
  151. package/src/build/runtime/deduping-build-executor.d.ts +21 -0
  152. package/src/build/runtime/deduping-build-executor.js +40 -0
  153. package/src/build/{parallel-build-executor.d.ts → runtime/parallel-build-executor.d.ts} +1 -1
  154. package/src/build/runtime/parallel-build-executor.js +60 -0
  155. package/src/build/{serialized-build-executor.d.ts → runtime/serialized-build-executor.d.ts} +1 -1
  156. package/src/build/runtime/serialized-build-executor.js +79 -0
  157. package/src/cache/index.d.ts +2 -1
  158. package/src/cache/index.js +7 -6
  159. package/src/cache/module-parse-cache.d.ts +5 -0
  160. package/src/cache/module-parse-cache.js +122 -67
  161. package/src/cache/module-transform-profiler.d.ts +8 -0
  162. package/src/cache/module-transform-profiler.js +8 -0
  163. package/src/client/navigation-scripts/classification.d.ts +16 -0
  164. package/src/client/navigation-scripts/classification.js +49 -0
  165. package/src/client/navigation-scripts/index.d.ts +3 -0
  166. package/src/client/navigation-scripts/index.js +3 -0
  167. package/src/client/navigation-scripts/navigation-scripts.test.browser.d.ts +1 -0
  168. package/src/client/navigation-scripts/navigation-scripts.test.browser.js +61 -0
  169. package/src/client/navigation-scripts/registry.d.ts +11 -0
  170. package/src/client/navigation-scripts/registry.js +16 -0
  171. package/src/client/navigation-scripts/rerun-queue.d.ts +37 -0
  172. package/src/client/navigation-scripts/rerun-queue.js +90 -0
  173. package/src/client/scroll.d.ts +17 -0
  174. package/src/client/scroll.js +33 -0
  175. package/src/client/scroll.test.browser.d.ts +1 -0
  176. package/src/client/scroll.test.browser.js +31 -0
  177. package/src/client/view-transitions.d.ts +32 -0
  178. package/src/client/view-transitions.js +120 -0
  179. package/src/client/view-transitions.test.browser.d.ts +1 -0
  180. package/src/client/view-transitions.test.browser.js +56 -0
  181. package/src/config/README.md +1 -1
  182. package/src/config/config-builder.d.ts +40 -20
  183. package/src/config/config-builder.js +645 -610
  184. package/src/config/constants.d.ts +1 -0
  185. package/src/config/constants.js +44 -23
  186. package/src/declarations.d.ts +1 -0
  187. package/src/dev/README.md +24 -0
  188. package/src/dev/client-bridge-registry.d.ts +5 -0
  189. package/src/dev/client-bridge-registry.js +10 -0
  190. package/src/dev/dev-client-ownership.d.ts +7 -0
  191. package/src/dev/dev-client-ownership.js +8 -0
  192. package/src/dev/hmr-manager-registry.d.ts +8 -0
  193. package/src/dev/hmr-manager-registry.js +10 -0
  194. package/src/dev/host-runtime.d.ts +3 -0
  195. package/src/dev/host-runtime.js +25 -23
  196. package/src/dev/runtime-server-started-message.d.ts +2 -0
  197. package/src/dev/runtime-server-started-message.js +3 -0
  198. package/src/dev/sc-server.js +106 -103
  199. package/src/dev/transform-server/dev-transform-bundler.d.ts +24 -0
  200. package/src/dev/transform-server/dev-transform-bundler.js +79 -0
  201. package/src/dev/transform-server/dev-transform-externalize-plugin.d.ts +12 -0
  202. package/src/dev/transform-server/dev-transform-externalize-plugin.js +29 -0
  203. package/src/dev/transform-server/dev-transform-import-rewriter.d.ts +16 -0
  204. package/src/dev/transform-server/dev-transform-import-rewriter.js +127 -0
  205. package/src/dev/transform-server/dev-transform-module-kind.d.ts +13 -0
  206. package/src/dev/transform-server/dev-transform-module-kind.js +17 -0
  207. package/src/dev/transform-server/dev-transform-runtime-specifiers.d.ts +5 -0
  208. package/src/dev/transform-server/dev-transform-runtime-specifiers.js +16 -0
  209. package/src/dev/transform-server/dev-transform-server.d.ts +41 -0
  210. package/src/dev/transform-server/dev-transform-server.js +191 -0
  211. package/src/dev/transform-server/dev-transform-url.d.ts +13 -0
  212. package/src/dev/transform-server/dev-transform-url.js +58 -0
  213. package/src/dev/transform-server/dev-transform-vendor-registry.d.ts +28 -0
  214. package/src/dev/transform-server/dev-transform-vendor-registry.js +166 -0
  215. package/src/dev/transform-server/index.d.ts +6 -0
  216. package/src/dev/transform-server/index.js +4 -0
  217. package/src/dev/transform-server/types.d.ts +15 -0
  218. package/src/dev/transform-server/types.js +1 -0
  219. package/src/dev-toolbar/README.md +52 -0
  220. package/src/dev-toolbar/define-dev-tool.d.ts +21 -0
  221. package/src/dev-toolbar/define-dev-tool.js +9 -0
  222. package/src/dev-toolbar/dev-toolbar-config.d.ts +25 -0
  223. package/src/dev-toolbar/dev-toolbar-config.js +19 -0
  224. package/src/dev-toolbar/dev-toolbar-host.d.ts +49 -0
  225. package/src/dev-toolbar/dev-toolbar-host.js +117 -0
  226. package/src/dev-toolbar/dev-toolbar-html-response.d.ts +11 -0
  227. package/src/dev-toolbar/dev-toolbar-html-response.js +14 -0
  228. package/src/dev-toolbar/dev-toolbar-manifest-contract.d.ts +22 -0
  229. package/src/dev-toolbar/dev-toolbar-manifest-contract.js +2 -0
  230. package/src/dev-toolbar/dev-toolbar-manifest.d.ts +15 -0
  231. package/src/dev-toolbar/dev-toolbar-manifest.js +52 -0
  232. package/src/dev-toolbar/dev-toolbar-package.d.ts +34 -0
  233. package/src/dev-toolbar/dev-toolbar-package.js +78 -0
  234. package/src/dev-toolbar/dev-toolbar-runtime-paths.d.ts +10 -0
  235. package/src/dev-toolbar/dev-toolbar-runtime-paths.js +13 -0
  236. package/src/diagnostics/request-build-dedupe.d.ts +18 -0
  237. package/src/diagnostics/request-build-dedupe.js +39 -0
  238. package/src/diagnostics/request-pipeline-metrics.d.ts +38 -0
  239. package/src/diagnostics/request-pipeline-metrics.js +121 -0
  240. package/src/diagnostics/startup-trace.d.ts +81 -0
  241. package/src/diagnostics/startup-trace.js +281 -0
  242. package/src/eco/README.md +17 -0
  243. package/src/eco/component-identity.d.ts +13 -0
  244. package/src/eco/component-identity.js +18 -0
  245. package/src/eco/eco-declared-component.d.ts +15 -0
  246. package/src/eco/eco-declared-component.js +23 -0
  247. package/src/eco/eco.browser.js +63 -70
  248. package/src/eco/eco.js +163 -97
  249. package/src/eco/eco.types.d.ts +47 -8
  250. package/src/eco/eco.types.js +5 -0
  251. package/src/eco/eco.utils.d.ts +1 -1
  252. package/src/eco/eco.utils.js +1 -10
  253. package/src/eco/global-injector-map.js +55 -41
  254. package/src/eco/lazy-injector-map.js +90 -60
  255. package/src/eco/module-dependencies.js +52 -44
  256. package/src/eco/page-layout-normalization.d.ts +21 -0
  257. package/src/eco/page-layout-normalization.js +69 -0
  258. package/src/env.d.ts +2 -0
  259. package/src/errors/http-error.d.ts +8 -0
  260. package/src/errors/http-error.js +66 -49
  261. package/src/errors/index.d.ts +1 -0
  262. package/src/errors/index.js +3 -6
  263. package/src/errors/locals-access-error.js +5 -8
  264. package/src/errors/undeclared-component-dependency-error.d.ts +11 -0
  265. package/src/errors/undeclared-component-dependency-error.js +17 -0
  266. package/src/global/app-logger.js +3 -6
  267. package/src/hmr/README.md +21 -0
  268. package/src/hmr/client/hmr-runtime.js +119 -110
  269. package/src/hmr/client/module-update.d.ts +13 -0
  270. package/src/hmr/client/module-update.js +39 -0
  271. package/src/hmr/hmr-asset-paths.d.ts +14 -0
  272. package/src/hmr/hmr-asset-paths.js +22 -0
  273. package/src/hmr/hmr-entrypoint-output.d.ts +21 -0
  274. package/src/hmr/hmr-entrypoint-output.js +34 -0
  275. package/src/hmr/hmr-file-change-prep.d.ts +10 -0
  276. package/src/hmr/hmr-file-change-prep.js +14 -0
  277. package/src/hmr/hmr-registered-entrypoints-context.d.ts +7 -0
  278. package/src/hmr/hmr-registered-entrypoints-context.js +1 -0
  279. package/src/hmr/hmr-runtime-paths.d.ts +10 -0
  280. package/src/hmr/hmr-runtime-paths.js +13 -0
  281. package/src/hmr/hmr-strategy.d.ts +9 -0
  282. package/src/hmr/hmr-strategy.js +113 -42
  283. package/src/hmr/strategies/default-hmr-strategy.js +55 -33
  284. package/src/hmr/strategies/js-hmr-strategy.d.ts +6 -97
  285. package/src/hmr/strategies/js-hmr-strategy.js +107 -167
  286. package/src/hmr/strategies/server-rendered-template-hmr-strategy.d.ts +17 -0
  287. package/src/hmr/strategies/server-rendered-template-hmr-strategy.js +35 -0
  288. package/src/index.browser.d.ts +1 -0
  289. package/src/index.browser.js +2 -4
  290. package/src/index.d.ts +4 -1
  291. package/src/index.js +7 -21
  292. package/src/islands/README.md +25 -0
  293. package/src/islands/island-host.d.ts +37 -0
  294. package/src/islands/island-host.js +55 -0
  295. package/src/plugins/README.md +2 -1
  296. package/src/plugins/alias-resolver-cache.d.ts +6 -9
  297. package/src/plugins/alias-resolver-cache.js +114 -97
  298. package/src/plugins/alias-resolver-plugin.d.ts +3 -3
  299. package/src/plugins/alias-resolver-plugin.js +35 -62
  300. package/src/plugins/define-integration.d.ts +26 -0
  301. package/src/plugins/define-integration.js +20 -0
  302. package/src/plugins/eco-component-meta-plugin.d.ts +6 -102
  303. package/src/plugins/eco-component-meta-plugin.js +123 -162
  304. package/src/plugins/foreign-jsx-override-plugin.d.ts +1 -1
  305. package/src/plugins/foreign-jsx-override-plugin.js +49 -37
  306. package/src/plugins/integration-plugin.d.ts +24 -6
  307. package/src/plugins/integration-plugin.js +212 -195
  308. package/src/plugins/jsx-import-source.utils.d.ts +8 -0
  309. package/src/plugins/jsx-import-source.utils.js +21 -0
  310. package/src/plugins/package-specifier.d.ts +12 -0
  311. package/src/plugins/package-specifier.js +33 -0
  312. package/src/plugins/processor.d.ts +66 -12
  313. package/src/plugins/processor.js +168 -137
  314. package/src/plugins/runtime-capability.js +1 -0
  315. package/src/plugins/source-transform.d.ts +1 -1
  316. package/src/plugins/source-transform.js +109 -79
  317. package/src/plugins/tsconfig-import-resolver.d.ts +37 -0
  318. package/src/plugins/tsconfig-import-resolver.js +262 -0
  319. package/src/route-renderer/GRAPH.md +24 -30
  320. package/src/route-renderer/README.md +52 -32
  321. package/src/route-renderer/orchestration/document-shell/document-shell-render.service.d.ts +107 -0
  322. package/src/route-renderer/orchestration/document-shell/document-shell-render.service.js +155 -0
  323. package/src/route-renderer/orchestration/document-shell/layout-shell-props.service.d.ts +20 -0
  324. package/src/route-renderer/orchestration/document-shell/layout-shell-props.service.js +37 -0
  325. package/src/route-renderer/orchestration/{component-render-context.d.ts → foreign-child/component-render-context.d.ts} +8 -15
  326. package/src/route-renderer/orchestration/foreign-child/component-render-context.js +196 -0
  327. package/src/route-renderer/orchestration/{render-output.utils.d.ts → foreign-child/foreign-child-output.utils.d.ts} +20 -7
  328. package/src/route-renderer/orchestration/foreign-child/foreign-child-output.utils.js +195 -0
  329. package/src/route-renderer/orchestration/{foreign-subtree-execution.service.d.ts → foreign-child/foreign-subtree-execution.service.d.ts} +64 -34
  330. package/src/route-renderer/orchestration/foreign-child/foreign-subtree-execution.service.js +354 -0
  331. package/src/route-renderer/orchestration/foreign-child/owning-renderer-resolution.d.ts +19 -0
  332. package/src/route-renderer/orchestration/foreign-child/owning-renderer-resolution.js +36 -0
  333. package/src/route-renderer/orchestration/integration-renderer.d.ts +37 -153
  334. package/src/route-renderer/orchestration/integration-renderer.js +803 -1008
  335. package/src/route-renderer/orchestration/integration-renderer.test-fixtures.d.ts +75 -0
  336. package/src/route-renderer/orchestration/integration-renderer.test-fixtures.js +173 -0
  337. package/src/route-renderer/orchestration/ownership-graph/component-graph-collectors.d.ts +10 -0
  338. package/src/route-renderer/orchestration/ownership-graph/component-graph-collectors.js +132 -0
  339. package/src/route-renderer/orchestration/ownership-graph/component-graph.d.ts +34 -0
  340. package/src/route-renderer/orchestration/ownership-graph/component-graph.js +89 -0
  341. package/src/route-renderer/orchestration/{ownership-validation.service.d.ts → ownership-graph/ownership-validation.service.d.ts} +6 -2
  342. package/src/route-renderer/orchestration/ownership-graph/ownership-validation.service.js +77 -0
  343. package/src/route-renderer/orchestration/page-browser-graph/global-injector-assets.service.d.ts +7 -0
  344. package/src/route-renderer/orchestration/page-browser-graph/global-injector-assets.service.js +30 -0
  345. package/src/route-renderer/orchestration/page-browser-graph/grouped-graph-build-plan.d.ts +15 -0
  346. package/src/route-renderer/orchestration/page-browser-graph/grouped-graph-build-plan.js +9 -0
  347. package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-contribution.merge.d.ts +5 -0
  348. package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-contribution.merge.js +30 -0
  349. package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-merge.utils.d.ts +12 -0
  350. package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-merge.utils.js +32 -0
  351. package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-session.d.ts +126 -0
  352. package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-session.js +542 -0
  353. package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph.service.d.ts +47 -0
  354. package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph.service.js +248 -0
  355. package/src/route-renderer/orchestration/{processed-asset-dedupe.d.ts → page-browser-graph/processed-asset-dedupe.d.ts} +1 -1
  356. package/src/route-renderer/orchestration/page-browser-graph/processed-asset-dedupe.js +23 -0
  357. package/src/route-renderer/orchestration/page-browser-graph/route-instance-key.d.ts +29 -0
  358. package/src/route-renderer/orchestration/page-browser-graph/route-instance-key.js +54 -0
  359. package/src/route-renderer/orchestration/route-pipeline/integration-route-render-adapter.d.ts +38 -0
  360. package/src/route-renderer/orchestration/route-pipeline/integration-route-render-adapter.js +26 -0
  361. package/src/route-renderer/orchestration/route-pipeline/marker-artifact.utils.d.ts +6 -0
  362. package/src/route-renderer/orchestration/route-pipeline/marker-artifact.utils.js +25 -0
  363. package/src/route-renderer/orchestration/route-pipeline/robots-meta.contribution.d.ts +15 -0
  364. package/src/route-renderer/orchestration/route-pipeline/robots-meta.contribution.js +43 -0
  365. package/src/route-renderer/orchestration/route-pipeline/route-html-finalization.service.d.ts +25 -0
  366. package/src/route-renderer/orchestration/route-pipeline/route-html-finalization.service.js +44 -0
  367. package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.builder.d.ts +26 -0
  368. package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.builder.js +44 -0
  369. package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.utils.d.ts +4 -0
  370. package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.utils.js +30 -0
  371. package/src/route-renderer/orchestration/{route-render-orchestrator.d.ts → route-pipeline/route-render-orchestrator.d.ts} +24 -54
  372. package/src/route-renderer/orchestration/route-pipeline/route-render-orchestrator.js +215 -0
  373. package/src/{integrations/ghtml/ghtml-renderer.d.ts → route-renderer/orchestration/string-markup-renderer.d.ts} +8 -10
  374. package/src/route-renderer/orchestration/string-markup-renderer.js +52 -0
  375. package/src/route-renderer/page-loading/component-dependency-collection.js +121 -121
  376. package/src/route-renderer/page-loading/declared-asset-collection.js +66 -94
  377. package/src/route-renderer/page-loading/dependency-resolver.js +101 -104
  378. package/src/route-renderer/page-loading/ecopages-virtual-imports.d.ts +1 -0
  379. package/src/route-renderer/page-loading/ecopages-virtual-imports.js +64 -51
  380. package/src/route-renderer/page-loading/file-scoped-dependency-components.d.ts +42 -0
  381. package/src/route-renderer/page-loading/file-scoped-dependency-components.js +94 -0
  382. package/src/route-renderer/page-loading/lazy-entry-collection.js +75 -98
  383. package/src/route-renderer/page-loading/lazy-trigger-planning.js +47 -36
  384. package/src/route-renderer/page-loading/module-declaration-aggregation.js +39 -28
  385. package/src/route-renderer/page-loading/module-declaration-scripts.js +10 -15
  386. package/src/route-renderer/page-loading/page-dependency-bundling.js +156 -113
  387. package/src/route-renderer/page-loading/page-module-loader.d.ts +2 -1
  388. package/src/route-renderer/page-loading/page-module-loader.js +136 -124
  389. package/src/route-renderer/page-loading/resolved-page-dependencies.d.ts +12 -0
  390. package/src/route-renderer/page-loading/resolved-page-dependencies.js +38 -0
  391. package/src/route-renderer/route-renderer.js +74 -76
  392. package/src/router/README.md +31 -0
  393. package/src/router/client/link-intent.d.ts +11 -21
  394. package/src/router/client/link-intent.js +56 -30
  395. package/src/router/client/link-intent.test.browser.js +50 -39
  396. package/src/router/client/link-navigation-policy.d.ts +45 -0
  397. package/src/router/client/link-navigation-policy.js +122 -0
  398. package/src/router/client/link-navigation-policy.test.browser.d.ts +1 -0
  399. package/src/router/client/link-navigation-policy.test.browser.js +82 -0
  400. package/src/router/client/navigation-coordinator.d.ts +1 -1
  401. package/src/router/client/navigation-coordinator.js +235 -211
  402. package/src/router/client/navigation-lifecycle.d.ts +55 -0
  403. package/src/router/client/navigation-lifecycle.js +50 -0
  404. package/src/router/client/navigation-lifecycle.test.browser.d.ts +1 -0
  405. package/src/router/client/navigation-lifecycle.test.browser.js +118 -0
  406. package/src/router/server/route-registry.js +237 -242
  407. package/src/services/README.md +5 -0
  408. package/src/services/assets/asset-processing-service/asset-dependency-keys.d.ts +13 -0
  409. package/src/services/assets/asset-processing-service/asset-dependency-keys.js +64 -50
  410. package/src/services/assets/asset-processing-service/asset-processing.service.d.ts +12 -1
  411. package/src/services/assets/asset-processing-service/asset-processing.service.js +335 -268
  412. package/src/services/assets/asset-processing-service/asset.factory.js +78 -81
  413. package/src/services/assets/asset-processing-service/assets.types.d.ts +1 -1
  414. package/src/services/assets/asset-processing-service/assets.types.js +1 -0
  415. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.d.ts +1 -1
  416. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.js +57 -46
  417. package/src/services/assets/asset-processing-service/browser-runtime-entry-resolution.d.ts +52 -0
  418. package/src/services/assets/asset-processing-service/browser-runtime-entry-resolution.js +115 -0
  419. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.js +53 -58
  420. package/src/services/assets/asset-processing-service/finalize-processed-asset.d.ts +3 -0
  421. package/src/services/assets/asset-processing-service/finalize-processed-asset.js +5 -0
  422. package/src/services/assets/asset-processing-service/grouped-content-bundles.d.ts +2 -1
  423. package/src/services/assets/asset-processing-service/grouped-content-bundles.js +85 -60
  424. package/src/services/assets/asset-processing-service/index.d.ts +2 -0
  425. package/src/services/assets/asset-processing-service/index.js +8 -6
  426. package/src/services/assets/asset-processing-service/inline-content-script-body.d.ts +11 -0
  427. package/src/services/assets/asset-processing-service/inline-content-script-body.js +23 -0
  428. package/src/services/assets/asset-processing-service/materialize-content-script-asset.d.ts +9 -0
  429. package/src/services/assets/asset-processing-service/materialize-content-script-asset.js +22 -0
  430. package/src/services/assets/asset-processing-service/page-package.js +70 -72
  431. package/src/services/assets/asset-processing-service/processor.interface.js +7 -5
  432. package/src/services/assets/asset-processing-service/processor.registry.js +11 -14
  433. package/src/services/assets/asset-processing-service/processors/base/base-processor.js +59 -62
  434. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.d.ts +0 -2
  435. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.js +102 -130
  436. package/src/services/assets/asset-processing-service/processors/index.js +5 -5
  437. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.d.ts +8 -0
  438. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.js +111 -111
  439. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.d.ts +0 -1
  440. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.js +95 -94
  441. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.js +136 -135
  442. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.d.ts +0 -3
  443. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +26 -57
  444. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.d.ts +0 -3
  445. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.js +33 -67
  446. package/src/services/assets/asset-processing-service/processors/stylesheet/stylesheet-processor-pipeline.d.ts +2 -0
  447. package/src/services/assets/asset-processing-service/processors/stylesheet/stylesheet-processor-pipeline.js +44 -0
  448. package/src/services/assets/asset-processing-service/resolve-integration-plugin.d.ts +4 -0
  449. package/src/services/assets/asset-processing-service/resolve-integration-plugin.js +15 -0
  450. package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.d.ts +0 -1
  451. package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.js +27 -44
  452. package/src/services/assets/browser-bundle.service.d.ts +27 -31
  453. package/src/services/assets/browser-bundle.service.js +54 -49
  454. package/src/services/assets/browser-runtime-asset-generation.d.ts +17 -0
  455. package/src/services/assets/browser-runtime-asset-generation.js +28 -0
  456. package/src/services/cache/cache.types.d.ts +4 -2
  457. package/src/services/cache/cache.types.js +5 -0
  458. package/src/services/cache/html-page-cache-dependency-index.d.ts +34 -0
  459. package/src/services/cache/html-page-cache-dependency-index.js +88 -0
  460. package/src/services/cache/index.d.ts +2 -0
  461. package/src/services/cache/index.js +8 -7
  462. package/src/services/cache/memory-cache-store.js +101 -89
  463. package/src/services/cache/page-cache-service.d.ts +31 -1
  464. package/src/services/cache/page-cache-service.js +237 -150
  465. package/src/services/cache/page-request-cache-coordinator.service.d.ts +2 -1
  466. package/src/services/cache/page-request-cache-coordinator.service.js +112 -102
  467. package/src/services/html/html-rewriter-provider.service.js +61 -61
  468. package/src/services/html/html-transformer.service.js +249 -266
  469. package/src/services/invalidation/development-invalidation.service.d.ts +15 -1
  470. package/src/services/invalidation/development-invalidation.service.js +241 -204
  471. package/src/services/module-loading/README.md +9 -6
  472. package/src/services/module-loading/app-module-loader.service.js +1 -0
  473. package/src/services/module-loading/app-server-module-transpiler.service.d.ts +8 -0
  474. package/src/services/module-loading/app-server-module-transpiler.service.js +104 -106
  475. package/src/services/module-loading/collection-server-module-build.service.d.ts +19 -0
  476. package/src/services/module-loading/collection-server-module-build.service.js +83 -0
  477. package/src/services/module-loading/host-module-loader-registry.js +6 -11
  478. package/src/services/module-loading/module-loading-types.js +1 -0
  479. package/src/services/module-loading/page-module-import.service.d.ts +7 -12
  480. package/src/services/module-loading/page-module-import.service.js +232 -206
  481. package/src/services/module-loading/route-module-build-cache-registry.d.ts +2 -0
  482. package/src/services/module-loading/route-module-build-cache-registry.js +59 -33
  483. package/src/services/module-loading/route-module-build-cache.js +3 -38
  484. package/src/services/module-loading/route-module-build-cache.store.d.ts +10 -0
  485. package/src/services/module-loading/route-module-build-cache.store.js +213 -196
  486. package/src/services/module-loading/route-module-build-manifest.d.ts +10 -14
  487. package/src/services/module-loading/route-module-build-manifest.js +54 -118
  488. package/src/services/module-loading/route-module-dependency-hasher.d.ts +2 -2
  489. package/src/services/module-loading/route-module-dependency-hasher.js +136 -109
  490. package/src/services/module-loading/server-module-transpiler.service.d.ts +1 -3
  491. package/src/services/module-loading/server-module-transpiler.service.js +65 -62
  492. package/src/services/module-loading/source-module-support.js +15 -7
  493. package/src/services/runtime-state/dev-graph.service.js +165 -157
  494. package/src/services/runtime-state/entrypoint-dependency-graph.service.js +85 -76
  495. package/src/services/runtime-state/server-invalidation-state.service.js +38 -30
  496. package/src/services/validation/schema-validation-service.d.ts +1 -4
  497. package/src/services/validation/schema-validation-service.js +156 -95
  498. package/src/services/validation/standard-schema.types.d.ts +9 -62
  499. package/src/services/validation/standard-schema.types.js +1 -0
  500. package/src/services/validation/validate-standard-schema.d.ts +7 -0
  501. package/src/services/validation/validate-standard-schema.js +14 -0
  502. package/src/static-site-generator/README.md +10 -2
  503. package/src/static-site-generator/production-page-browser-graph-prebuild.d.ts +32 -0
  504. package/src/static-site-generator/production-page-browser-graph-prebuild.js +57 -0
  505. package/src/static-site-generator/sitemap-routes.d.ts +14 -0
  506. package/src/static-site-generator/sitemap-routes.js +36 -0
  507. package/src/static-site-generator/sitemap.d.ts +15 -0
  508. package/src/static-site-generator/sitemap.js +42 -0
  509. package/src/static-site-generator/static-build-invalidation.d.ts +2 -2
  510. package/src/static-site-generator/static-build-invalidation.js +33 -74
  511. package/src/static-site-generator/static-export-context.d.ts +9 -1
  512. package/src/static-site-generator/static-export-context.js +1 -0
  513. package/src/static-site-generator/static-site-generator.d.ts +27 -6
  514. package/src/static-site-generator/static-site-generator.js +528 -389
  515. package/src/types/internal-types.d.ts +55 -17
  516. package/src/types/internal-types.js +1 -0
  517. package/src/types/public-types.d.ts +236 -95
  518. package/src/types/public-types.js +1 -0
  519. package/src/utils/deep-merge.js +39 -26
  520. package/src/utils/ecopages-route-info.d.ts +26 -0
  521. package/src/utils/ecopages-route-info.js +30 -0
  522. package/src/utils/hash.js +3 -6
  523. package/src/utils/html-escaping.d.ts +7 -0
  524. package/src/utils/html-escaping.js +22 -5
  525. package/src/utils/invariant.js +11 -10
  526. package/src/utils/locals-utils.js +32 -22
  527. package/src/utils/parse-cli-args.d.ts +1 -0
  528. package/src/utils/parse-cli-args.js +73 -62
  529. package/src/utils/path-pattern.d.ts +23 -0
  530. package/src/utils/path-pattern.js +42 -0
  531. package/src/utils/path-utils.module.js +8 -11
  532. package/src/utils/resolve-entry-file.js +70 -38
  533. package/src/utils/resolve-work-dir.js +23 -27
  534. package/src/utils/runtime.js +24 -33
  535. package/src/utils/server-utils.module.d.ts +3 -2
  536. package/src/utils/server-utils.module.js +60 -53
  537. package/src/utils/static-file-extensions.d.ts +12 -0
  538. package/src/utils/static-file-extensions.js +54 -0
  539. package/src/watchers/project-watcher-ignore.d.ts +11 -0
  540. package/src/watchers/project-watcher-ignore.js +17 -0
  541. package/src/watchers/project-watcher.d.ts +21 -6
  542. package/src/watchers/project-watcher.js +402 -277
  543. package/src/watchers/project-watcher.test-helpers.js +45 -50
  544. package/src/adapters/shared/api-response.js +0 -96
  545. package/src/adapters/shared/application-adapter.js +0 -90
  546. package/src/adapters/shared/bun-user-websocket-lifecycle.js +0 -102
  547. package/src/adapters/shared/copy-runtime-public-dir.js +0 -24
  548. package/src/adapters/shared/define-api-handler.d.ts +0 -25
  549. package/src/adapters/shared/define-api-handler.js +0 -15
  550. package/src/adapters/shared/explicit-static-render-preparation.js +0 -26
  551. package/src/adapters/shared/explicit-static-route-matcher.js +0 -101
  552. package/src/adapters/shared/file-route-middleware-pipeline.js +0 -90
  553. package/src/adapters/shared/fs-server-response-factory.js +0 -81
  554. package/src/adapters/shared/fs-server-response-matcher.js +0 -186
  555. package/src/adapters/shared/hmr-entrypoint-registrar.d.ts +0 -55
  556. package/src/adapters/shared/hmr-entrypoint-registrar.js +0 -87
  557. package/src/adapters/shared/hmr-html-response.js +0 -33
  558. package/src/adapters/shared/node-http-websocket-upgrades.js +0 -125
  559. package/src/adapters/shared/render-context.js +0 -93
  560. package/src/adapters/shared/runtime-app-bootstrap.js +0 -41
  561. package/src/adapters/shared/runtime-host.js +0 -0
  562. package/src/adapters/shared/server-adapter.js +0 -436
  563. package/src/adapters/shared/server-route-handler.js +0 -111
  564. package/src/adapters/shared/server-static-builder.js +0 -202
  565. package/src/adapters/shared/shared-hmr-manager.d.ts +0 -61
  566. package/src/adapters/shared/shared-hmr-manager.js +0 -273
  567. package/src/adapters/shared/static-preview-host.js +0 -0
  568. package/src/adapters/shared/websocket-lifecycle.d.ts +0 -3
  569. package/src/adapters/shared/websocket-lifecycle.js +0 -19
  570. package/src/build/browser-runtime-manifest.js +0 -61
  571. package/src/build/browser-runtime-plugin-helpers.js +0 -14
  572. package/src/build/browser-runtime-plugin.js +0 -173
  573. package/src/build/build-input-fingerprint.js +0 -31
  574. package/src/build/build-manifest.d.ts +0 -33
  575. package/src/build/build-manifest.js +0 -49
  576. package/src/build/build-types.js +0 -0
  577. package/src/build/jsx-ownership-plugins.d.ts +0 -10
  578. package/src/build/jsx-ownership-plugins.js +0 -17
  579. package/src/build/pages-unified-graph-build.js +0 -208
  580. package/src/build/parallel-build-executor.js +0 -52
  581. package/src/build/rolldown-adapter-helpers.js +0 -310
  582. package/src/build/rolldown-build-adapter.js +0 -67
  583. package/src/build/rolldown-build-invocation-metrics.js +0 -43
  584. package/src/build/rolldown-dev-build-adapter.d.ts +0 -82
  585. package/src/build/rolldown-dev-build-adapter.js +0 -182
  586. package/src/build/rolldown-plugin-bridge.js +0 -211
  587. package/src/build/rolldown-source-transform-pass.js +0 -58
  588. package/src/build/runtime-build-executor.d.ts +0 -15
  589. package/src/build/runtime-build-executor.js +0 -43
  590. package/src/build/runtime-build-output-normalizer.js +0 -203
  591. package/src/build/serialized-build-executor.js +0 -63
  592. package/src/build/server-entry-build-cache.js +0 -169
  593. package/src/build/server-side-css-shim-plugin.js +0 -35
  594. package/src/hmr/hmr.postcss.test.e2e.js +0 -31
  595. package/src/hmr/hmr.test.e2e.js +0 -54
  596. package/src/integrations/ghtml/ghtml-renderer.js +0 -57
  597. package/src/integrations/ghtml/ghtml.constants.d.ts +0 -1
  598. package/src/integrations/ghtml/ghtml.constants.js +0 -4
  599. package/src/integrations/ghtml/ghtml.plugin.d.ts +0 -16
  600. package/src/integrations/ghtml/ghtml.plugin.js +0 -20
  601. package/src/route-renderer/orchestration/component-render-context.js +0 -147
  602. package/src/route-renderer/orchestration/declared-ownership-graph.d.ts +0 -18
  603. package/src/route-renderer/orchestration/declared-ownership-graph.js +0 -34
  604. package/src/route-renderer/orchestration/foreign-subtree-execution.service.js +0 -231
  605. package/src/route-renderer/orchestration/ownership-planning.service.d.ts +0 -24
  606. package/src/route-renderer/orchestration/ownership-planning.service.js +0 -63
  607. package/src/route-renderer/orchestration/ownership-validation.service.js +0 -53
  608. package/src/route-renderer/orchestration/processed-asset-dedupe.js +0 -27
  609. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.d.ts +0 -91
  610. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.js +0 -170
  611. package/src/route-renderer/orchestration/render-output.utils.js +0 -175
  612. package/src/route-renderer/orchestration/route-render-orchestrator.js +0 -578
  613. package/src/route-renderer/orchestration/template-serialization.d.ts +0 -38
  614. package/src/route-renderer/orchestration/template-serialization.js +0 -45
  615. package/src/utils/html.d.ts +0 -1
  616. package/src/utils/html.js +0 -4
  617. /package/src/adapters/{shared → bun}/bun-user-websocket-lifecycle.d.ts +0 -0
  618. /package/src/adapters/shared/{copy-runtime-public-dir.d.ts → runtime/copy-runtime-public-dir.d.ts} +0 -0
  619. /package/src/adapters/shared/{runtime-host.d.ts → runtime/runtime-host.d.ts} +0 -0
  620. /package/src/{hmr/hmr.postcss.test.e2e.d.ts → adapters/shared/runtime/runtime-host.js} +0 -0
  621. /package/src/{hmr/hmr.test.e2e.d.ts → adapters/shared/runtime/static-preview-host.js} +0 -0
  622. /package/src/build/{build-types.d.ts → contracts/build-types.d.ts} +0 -0
  623. /package/src/build/{runtime-build-output-normalizer.d.ts → rolldown/runtime-build-output-normalizer.d.ts} +0 -0
  624. /package/src/build/{server-side-css-shim-plugin.d.ts → rolldown/server-side-css-shim-plugin.d.ts} +0 -0
@@ -1,52 +1,47 @@
1
- import { vi } from "vitest";
2
- const createMockHmrManager = () => ({
3
- handleFileChange: vi.fn(async () => {
4
- }),
5
- broadcast: vi.fn(() => {
6
- }),
7
- setEnabled: vi.fn(() => {
8
- }),
9
- setPlugins: vi.fn(() => {
10
- }),
11
- registerEntrypoint: vi.fn(async () => ""),
12
- registerScriptEntrypoint: vi.fn(async () => ""),
13
- registerStrategy: vi.fn(() => {
14
- }),
15
- isEnabled: vi.fn(() => true),
16
- getOutputUrl: vi.fn(() => void 0),
17
- getWatchedFiles: vi.fn(() => /* @__PURE__ */ new Map()),
18
- getDistDir: vi.fn(() => ""),
19
- getPlugins: vi.fn(() => []),
20
- getDefaultContext: vi.fn(() => ({
21
- getWatchedFiles: () => /* @__PURE__ */ new Map(),
22
- getDistDir: () => "",
23
- getPlugins: () => [],
24
- getSrcDir: () => "",
25
- getLayoutsDir: () => "",
26
- getPagesDir: () => "",
27
- getBuildExecutor: () => ({ build: vi.fn(async () => ({ success: true, logs: [], outputs: [] })) }),
28
- getBrowserBundleService: () => ({ bundle: vi.fn(async () => ({ success: true, logs: [], outputs: [] })) }),
29
- importServerModule: vi.fn(async () => ({}))
30
- }))
1
+ import { vi } from 'vitest';
2
+ export const createMockHmrManager = () => ({
3
+ handleFileChange: vi.fn(async () => { }),
4
+ broadcast: vi.fn(() => { }),
5
+ setEnabled: vi.fn(() => { }),
6
+ registerEntrypoint: vi.fn(async () => ''),
7
+ registerDevTransformContributor: vi.fn(() => { }),
8
+ registerScriptEntrypoint: vi.fn(async () => ({
9
+ sourcePath: '',
10
+ outputPath: '',
11
+ outputUrl: '',
12
+ role: 'script',
13
+ })),
14
+ registerStrategy: vi.fn(() => { }),
15
+ isEnabled: vi.fn(() => true),
16
+ getOutputUrl: vi.fn(() => undefined),
17
+ getWatchedFiles: vi.fn(() => new Map()),
18
+ getRegisteredEntrypoints: vi.fn(() => new Map()),
19
+ getRuntimeWorkDir: vi.fn(() => ''),
20
+ getRuntimePath: vi.fn(() => ''),
21
+ tryHandleAssetRequest: vi.fn(() => null),
22
+ getDefaultContext: vi.fn(() => ({
23
+ getWatchedFiles: () => new Map(),
24
+ getRegisteredEntrypoints: () => new Map(),
25
+ getSrcDir: () => '',
26
+ getLayoutsDir: () => '',
27
+ getPagesDir: () => '',
28
+ getEntrypointDependencyGraph: () => ({
29
+ supportsSelectiveInvalidation: () => false,
30
+ getDependencyEntrypoints: () => new Set(),
31
+ setEntrypointDependencies: () => { },
32
+ clearEntrypointDependencies: () => { },
33
+ reset: () => { },
34
+ }),
35
+ importServerModule: vi.fn(async () => ({})),
36
+ })),
31
37
  });
32
- const createMockBridge = () => ({
33
- reload: vi.fn(() => {
34
- }),
35
- error: vi.fn(() => {
36
- }),
37
- cssUpdate: vi.fn(() => {
38
- }),
39
- update: vi.fn(() => {
40
- }),
41
- subscribe: vi.fn(() => {
42
- }),
43
- unsubscribe: vi.fn(() => {
44
- }),
45
- broadcast: vi.fn(() => {
46
- }),
47
- subscriberCount: 0
38
+ export const createMockBridge = () => ({
39
+ reload: vi.fn(() => { }),
40
+ error: vi.fn(() => { }),
41
+ cssUpdate: vi.fn(() => { }),
42
+ update: vi.fn(() => { }),
43
+ subscribe: vi.fn(() => { }),
44
+ unsubscribe: vi.fn(() => { }),
45
+ broadcast: vi.fn(() => { }),
46
+ subscriberCount: 0,
48
47
  });
49
- export {
50
- createMockBridge,
51
- createMockHmrManager
52
- };
@@ -1,96 +0,0 @@
1
- class ApiResponseBuilder {
2
- _status = 200;
3
- _headers = new Headers();
4
- /**
5
- * Sets the HTTP status code for the response.
6
- * @param code - The HTTP status code.
7
- * @returns The builder instance for chaining.
8
- */
9
- status(code) {
10
- this._status = code;
11
- return this;
12
- }
13
- /**
14
- * Adds or merges headers for the response.
15
- * @param headersInit - Headers to add or merge.
16
- * @returns The builder instance for chaining.
17
- */
18
- headers(headersInit) {
19
- const inputHeaders = new Headers(headersInit);
20
- inputHeaders.forEach((value, key) => {
21
- this._headers.set(key, value);
22
- });
23
- return this;
24
- }
25
- /**
26
- * Creates a JSON response using the configured status and headers.
27
- * @param data - The data to serialize.
28
- * @returns A Response object.
29
- */
30
- json(data) {
31
- if (!this._headers.has("Content-Type")) {
32
- this._headers.set("Content-Type", "application/json; charset=utf-8");
33
- }
34
- return new Response(JSON.stringify(data), { status: this._status, headers: this._headers });
35
- }
36
- /**
37
- * Creates a plain text response using the configured status and headers.
38
- * @param data - The text content.
39
- * @returns A Response object.
40
- */
41
- text(data) {
42
- if (!this._headers.has("Content-Type")) {
43
- this._headers.set("Content-Type", "text/plain; charset=utf-8");
44
- }
45
- return new Response(data, { status: this._status, headers: this._headers });
46
- }
47
- /**
48
- * Creates an HTML response using the configured status and headers.
49
- * @param data - The HTML content.
50
- * @returns A Response object.
51
- */
52
- html(data) {
53
- if (!this._headers.has("Content-Type")) {
54
- this._headers.set("Content-Type", "text/html; charset=utf-8");
55
- }
56
- return new Response(data, { status: this._status, headers: this._headers });
57
- }
58
- /**
59
- * Creates a redirect response.
60
- * @param url - The URL to redirect to.
61
- * @param explicitStatus - Optional explicit status code (overrides status() if provided). Defaults to 302 if not set via status().
62
- * @returns A Response object.
63
- */
64
- redirect(url, explicitStatus) {
65
- const redirectStatus = explicitStatus ?? (this._status === 200 ? 302 : this._status);
66
- this._headers.set("Location", url);
67
- return new Response(null, { status: redirectStatus, headers: this._headers });
68
- }
69
- /**
70
- * Creates an error response using the configured status and headers.
71
- * If data is an object, it's treated as JSON, otherwise as text.
72
- * @param data - The error data (string or object).
73
- * @param explicitStatus - Optional explicit status code (overrides status() if provided). Defaults to 500 if not set via status().
74
- * @returns A Response object.
75
- */
76
- error(data, explicitStatus) {
77
- const errorStatus = explicitStatus ?? (this._status === 200 ? 500 : this._status);
78
- this.status(errorStatus);
79
- if (typeof data === "object" && data !== null) {
80
- if (!this._headers.has("Content-Type")) {
81
- this._headers.set("Content-Type", "application/json; charset=utf-8");
82
- }
83
- return new Response(JSON.stringify({ error: data }), {
84
- status: this._status,
85
- headers: this._headers
86
- });
87
- }
88
- if (!this._headers.has("Content-Type")) {
89
- this._headers.set("Content-Type", "text/plain; charset=utf-8");
90
- }
91
- return new Response(String(data), { status: this._status, headers: this._headers });
92
- }
93
- }
94
- export {
95
- ApiResponseBuilder
96
- };
@@ -1,90 +0,0 @@
1
- import {
2
- AbstractApplicationAdapter
3
- } from "../abstract/application-adapter.js";
4
- class SharedApplicationAdapter extends AbstractApplicationAdapter {
5
- register(path, method, handler, options) {
6
- return this.addRouteHandler(path, method, handler, options?.middleware, options?.schema);
7
- }
8
- get(path, handler, options) {
9
- return this.register(path, "GET", handler, options);
10
- }
11
- post(path, handler, options) {
12
- return this.register(path, "POST", handler, options);
13
- }
14
- put(path, handler, options) {
15
- return this.register(path, "PUT", handler, options);
16
- }
17
- delete(path, handler, options) {
18
- return this.register(path, "DELETE", handler, options);
19
- }
20
- patch(path, handler, options) {
21
- return this.register(path, "PATCH", handler, options);
22
- }
23
- options(path, handler, options) {
24
- return this.register(path, "OPTIONS", handler, options);
25
- }
26
- head(path, handler, options) {
27
- return this.register(path, "HEAD", handler, options);
28
- }
29
- route(path, method, handler, options) {
30
- return this.register(path, method, handler, options);
31
- }
32
- add(handler) {
33
- return this.addRouteHandler(handler.path, handler.method, handler.handler, handler.middleware, handler.schema);
34
- }
35
- group(prefixOrGroup, callback, options) {
36
- if (typeof prefixOrGroup === "object") {
37
- return this.registerGroup(prefixOrGroup);
38
- }
39
- const normalizedPrefix = prefixOrGroup.endsWith("/") ? prefixOrGroup.slice(0, -1) : prefixOrGroup;
40
- const groupMiddleware = options?.middleware ?? [];
41
- const createHandler = (method) => {
42
- return ((path, handler, routeOptions) => {
43
- const combinedMiddleware = [
44
- ...groupMiddleware,
45
- ...routeOptions?.middleware ?? []
46
- ];
47
- const fullPath = path === "/" ? normalizedPrefix : `${normalizedPrefix}${path}`;
48
- this.addRouteHandler(
49
- fullPath,
50
- method,
51
- handler,
52
- combinedMiddleware.length > 0 ? combinedMiddleware : void 0,
53
- routeOptions?.schema
54
- );
55
- return builder;
56
- });
57
- };
58
- const builder = {
59
- get: createHandler("GET"),
60
- post: createHandler("POST"),
61
- put: createHandler("PUT"),
62
- delete: createHandler("DELETE"),
63
- patch: createHandler("PATCH"),
64
- options: createHandler("OPTIONS"),
65
- head: createHandler("HEAD")
66
- };
67
- callback?.(builder);
68
- return this;
69
- }
70
- registerGroup(group) {
71
- const normalizedPrefix = group.prefix.endsWith("/") ? group.prefix.slice(0, -1) : group.prefix;
72
- const groupMiddleware = group.middleware ?? [];
73
- for (const route of group.routes) {
74
- const normalizedPath = route.path.startsWith("/") ? route.path : `/${route.path}`;
75
- const fullPath = route.path === "/" ? normalizedPrefix : `${normalizedPrefix}${normalizedPath}`;
76
- const combinedMiddleware = [...groupMiddleware, ...route.middleware ?? []];
77
- this.addRouteHandler(
78
- fullPath,
79
- route.method,
80
- route.handler,
81
- combinedMiddleware.length > 0 ? combinedMiddleware : void 0,
82
- route.schema
83
- );
84
- }
85
- return this;
86
- }
87
- }
88
- export {
89
- SharedApplicationAdapter
90
- };
@@ -1,102 +0,0 @@
1
- import { appLogger } from "../../global/app-logger.js";
2
- import { invokeWebSocketHandlerHook, toWebSocketCloseInfo } from "./websocket-lifecycle.js";
3
- function toUpgradeRequest(ws, runtimeOrigin) {
4
- const upgradeUrl = ws.data?.upgradeUrl;
5
- if (upgradeUrl) {
6
- return new Request(upgradeUrl);
7
- }
8
- return new Request(runtimeOrigin);
9
- }
10
- async function runUserWebSocketOpen(ws, kind, deps) {
11
- const handler = deps.userHandlers.get(kind);
12
- if (!handler) {
13
- return;
14
- }
15
- const params = ws.data?.params ?? {};
16
- const search = ws.data?.search ?? {};
17
- const request = toUpgradeRequest(ws, deps.runtimeOrigin);
18
- let context;
19
- try {
20
- context = await deps.resolveContext(request, handler, kind, params, search);
21
- } catch {
22
- ws.close(1011, "context initialization failed");
23
- return;
24
- }
25
- ws.data.context = context;
26
- const socket = deps.adaptSocket(ws, kind, params, search, context);
27
- try {
28
- await handler.onConnect?.(socket);
29
- } catch (error) {
30
- appLogger.error(`[WS:${kind}] onConnect failed:`, error);
31
- ws.close(1011, "onConnect failed");
32
- }
33
- }
34
- function createBunUserWebSocketLifecycle(deps) {
35
- return {
36
- open(ws) {
37
- const kind = ws.data?.kind;
38
- if (!kind) {
39
- return;
40
- }
41
- void runUserWebSocketOpen(ws, kind, deps).catch((error) => {
42
- appLogger.error(`[WS:${kind}] open failed:`, error);
43
- ws.close(1011, "internal error");
44
- });
45
- },
46
- message(ws, msg) {
47
- const kind = ws.data?.kind;
48
- if (!kind) {
49
- return;
50
- }
51
- const handler = deps.userHandlers.get(kind);
52
- if (!handler) {
53
- return;
54
- }
55
- const context = ws.data?.context;
56
- if (context === void 0 && handler.context) {
57
- appLogger.warn(`[WS:${kind}] message received before context resolved; dropping.`);
58
- return;
59
- }
60
- const params = ws.data?.params ?? {};
61
- const search = ws.data?.search ?? {};
62
- const socket = deps.adaptSocket(ws, kind, params, search, context);
63
- const message = typeof msg === "string" ? { kind: "text", text: msg } : { kind: "binary", data: new Uint8Array(msg.buffer, msg.byteOffset, msg.byteLength) };
64
- invokeWebSocketHandlerHook(kind, "onMessage", handler.onMessage?.(socket, message));
65
- },
66
- close(ws, code, reason) {
67
- const kind = ws.data?.kind;
68
- if (!kind) {
69
- return;
70
- }
71
- const handler = deps.userHandlers.get(kind);
72
- if (!handler) {
73
- return;
74
- }
75
- const context = ws.data?.context;
76
- const params = ws.data?.params ?? {};
77
- const search = ws.data?.search ?? {};
78
- const socket = deps.adaptSocket(ws, kind, params, search, context);
79
- const event = toWebSocketCloseInfo(code, reason);
80
- invokeWebSocketHandlerHook(kind, "onClose", handler.onClose?.(socket, event));
81
- },
82
- error(ws, error) {
83
- const kind = ws.data?.kind;
84
- if (!kind) {
85
- return;
86
- }
87
- const handler = deps.userHandlers.get(kind);
88
- if (!handler) {
89
- return;
90
- }
91
- appLogger.error(`[WS:${kind}] error:`, error);
92
- const context = ws.data?.context;
93
- const params = ws.data?.params ?? {};
94
- const search = ws.data?.search ?? {};
95
- const socket = deps.adaptSocket(ws, kind, params, search, context);
96
- invokeWebSocketHandlerHook(kind, "onError", handler.onError?.(socket, error));
97
- }
98
- };
99
- }
100
- export {
101
- createBunUserWebSocketLifecycle
102
- };
@@ -1,24 +0,0 @@
1
- import { readdirSync } from "node:fs";
2
- import path from "node:path";
3
- import { fileSystem } from "@ecopages/file-system";
4
- function copyRuntimePublicDirIfChanged(sourceDir, destinationDir) {
5
- fileSystem.ensureDir(destinationDir);
6
- for (const entry of readdirSync(sourceDir, { withFileTypes: true })) {
7
- const sourcePath = path.join(sourceDir, entry.name);
8
- const destinationPath = path.join(destinationDir, entry.name);
9
- if (entry.isDirectory()) {
10
- copyRuntimePublicDirIfChanged(sourcePath, destinationPath);
11
- continue;
12
- }
13
- if (!entry.isFile()) {
14
- continue;
15
- }
16
- if (fileSystem.exists(destinationPath) && Buffer.compare(fileSystem.readFileAsBuffer(sourcePath), fileSystem.readFileAsBuffer(destinationPath)) === 0) {
17
- continue;
18
- }
19
- fileSystem.copyFile(sourcePath, destinationPath);
20
- }
21
- }
22
- export {
23
- copyRuntimePublicDirIfChanged
24
- };
@@ -1,25 +0,0 @@
1
- import type { ApiHandler, ApiHandlerContext, Middleware, RouteSchema, TypedGroupHandlerContext } from '../../types/public-types.js';
2
- type UniversalContext = ApiHandlerContext<Request, unknown>;
3
- type SchemaHandlerContext<TSchema extends RouteSchema | undefined, TContext extends UniversalContext> = TSchema extends RouteSchema ? TypedGroupHandlerContext<TSchema, TContext> : TContext;
4
- export declare function defineApiHandler<TPath extends string, TSchema extends RouteSchema | undefined = undefined, TContext extends UniversalContext = UniversalContext>(handler: Omit<ApiHandler<TPath, Request, unknown>, 'handler' | 'middleware' | 'schema'> & {
5
- handler: (context: SchemaHandlerContext<TSchema, TContext>) => Promise<Response> | Response;
6
- middleware?: Middleware<Request, unknown, TContext>[];
7
- schema?: TSchema;
8
- }): ApiHandler<TPath, Request, unknown>;
9
- export interface GroupHandler<TPrefix extends string = string> {
10
- prefix: TPrefix;
11
- middleware?: readonly Middleware<Request, unknown, any>[];
12
- routes: readonly ApiHandler<string, Request, unknown>[];
13
- }
14
- type GroupDefineHandler<TContext extends UniversalContext> = <const TPath extends string, TSchema extends RouteSchema | undefined = undefined>(handler: Omit<ApiHandler<TPath, Request, unknown>, 'handler' | 'middleware' | 'schema'> & {
15
- path: TPath;
16
- handler: (context: SchemaHandlerContext<TSchema, TContext>) => Promise<Response> | Response;
17
- middleware?: Middleware<Request, unknown, TContext>[];
18
- schema?: TSchema;
19
- }) => ApiHandler<TPath, Request, unknown>;
20
- export declare function defineGroupHandler<TPrefix extends string, TMiddleware extends readonly Middleware<Request, unknown, any>[] = [], TContext extends UniversalContext = TMiddleware extends readonly Middleware<Request, unknown, infer TGroupContext>[] ? TGroupContext : UniversalContext>(config: {
21
- prefix: TPrefix;
22
- middleware?: TMiddleware;
23
- routes: (define: GroupDefineHandler<TContext>) => readonly ApiHandler<string, Request, unknown>[];
24
- }): GroupHandler<TPrefix>;
25
- export {};
@@ -1,15 +0,0 @@
1
- function defineApiHandler(handler) {
2
- return handler;
3
- }
4
- function defineGroupHandler(config) {
5
- const define = ((handler) => handler);
6
- return {
7
- prefix: config.prefix,
8
- middleware: config.middleware,
9
- routes: config.routes(define)
10
- };
11
- }
12
- export {
13
- defineApiHandler,
14
- defineGroupHandler
15
- };
@@ -1,26 +0,0 @@
1
- function getViewIntegrationName(view) {
2
- return view.config?.integration ?? view.config?.__eco?.integration;
3
- }
4
- async function prepareExplicitStaticRender(input) {
5
- const integrationName = getViewIntegrationName(input.view);
6
- if (!integrationName) {
7
- throw new Error(input.errors.missingIntegration(input.routePath));
8
- }
9
- const renderer = input.routeRendererFactory.getExplicitViewRenderer(integrationName);
10
- if (!renderer) {
11
- throw new Error(input.errors.noRendererForIntegration(integrationName));
12
- }
13
- const props = input.view.staticProps ? (await input.view.staticProps({
14
- pathname: { params: input.params },
15
- appConfig: input.appConfig,
16
- runtimeOrigin: input.runtimeOrigin
17
- })).props : {};
18
- return {
19
- renderer,
20
- props,
21
- view: input.view
22
- };
23
- }
24
- export {
25
- prepareExplicitStaticRender
26
- };
@@ -1,101 +0,0 @@
1
- import { appLogger } from "../../global/app-logger.js";
2
- import { prepareExplicitStaticRender } from "./explicit-static-render-preparation.js";
3
- const EXPLICIT_STATIC_ROUTE_MATCHER_ERRORS = {
4
- missingIntegration: (routePath) => `View at ${routePath} is missing __eco.integration. Ensure it's defined with eco.page() and exported as default.`,
5
- noRendererForIntegration: (integrationName) => `No renderer found for integration: ${integrationName}`
6
- };
7
- class ExplicitStaticRouteMatcher {
8
- appConfig;
9
- routeRendererFactory;
10
- staticRoutes;
11
- constructor({ appConfig, routeRendererFactory, staticRoutes }) {
12
- this.appConfig = appConfig;
13
- this.routeRendererFactory = routeRendererFactory;
14
- this.staticRoutes = staticRoutes;
15
- }
16
- /**
17
- * Match a request URL against explicit static routes.
18
- * Returns the matched route and extracted params, or null if no match.
19
- */
20
- match(url) {
21
- const pathname = new URL(url).pathname;
22
- for (const route of this.staticRoutes) {
23
- const params = this.matchRoute(route.path, pathname);
24
- if (params !== null) {
25
- return { route, params };
26
- }
27
- }
28
- return null;
29
- }
30
- /**
31
- * Match a route pattern against a pathname.
32
- * Supports :param and [param] syntax.
33
- * Returns extracted params or null if no match.
34
- */
35
- matchRoute(pattern, pathname) {
36
- const patternSegments = pattern.split("/").filter(Boolean);
37
- const pathSegments = pathname.split("/").filter(Boolean);
38
- if (patternSegments.length !== pathSegments.length) {
39
- const lastPattern = patternSegments[patternSegments.length - 1];
40
- const isCatchAll = lastPattern?.startsWith("[...") || lastPattern?.startsWith(":...");
41
- if (!isCatchAll) {
42
- return null;
43
- }
44
- }
45
- const params = {};
46
- for (let i = 0; i < patternSegments.length; i++) {
47
- const patternPart = patternSegments[i];
48
- const pathPart = pathSegments[i];
49
- if (patternPart.startsWith(":...") || patternPart.startsWith("[...")) {
50
- const paramName = patternPart.replace(/^(:\.\.\.|\[\.\.\.)/, "").replace(/\]$/, "");
51
- params[paramName] = pathSegments.slice(i).join("/");
52
- return params;
53
- }
54
- if (patternPart.startsWith(":")) {
55
- const paramName = patternPart.slice(1);
56
- params[paramName] = pathPart;
57
- } else if (patternPart.startsWith("[") && patternPart.endsWith("]")) {
58
- const paramName = patternPart.slice(1, -1);
59
- params[paramName] = pathPart;
60
- } else if (patternPart !== pathPart) {
61
- return null;
62
- }
63
- }
64
- return params;
65
- }
66
- /**
67
- * Handle a matched explicit static route.
68
- * Resolves the loader and renders the view using the appropriate integration renderer.
69
- */
70
- async handleMatch(match) {
71
- const { route, params } = match;
72
- try {
73
- const mod = await route.loader();
74
- const view = mod.default;
75
- const {
76
- renderer,
77
- props,
78
- view: renderableView
79
- } = await prepareExplicitStaticRender({
80
- routePath: route.path,
81
- view,
82
- params,
83
- appConfig: this.appConfig,
84
- runtimeOrigin: this.appConfig.baseUrl,
85
- routeRendererFactory: this.routeRendererFactory,
86
- errors: EXPLICIT_STATIC_ROUTE_MATCHER_ERRORS
87
- });
88
- return renderer.renderToResponse(renderableView, props, {});
89
- } catch (error) {
90
- appLogger.error(
91
- `Error rendering explicit static route ${route.path}:`,
92
- error instanceof Error ? error : String(error)
93
- );
94
- throw error;
95
- }
96
- }
97
- }
98
- export {
99
- EXPLICIT_STATIC_ROUTE_MATCHER_ERRORS,
100
- ExplicitStaticRouteMatcher
101
- };
@@ -1,90 +0,0 @@
1
- import { createRequire } from "../../utils/locals-utils.js";
2
- import { ApiResponseBuilder } from "./api-response.js";
3
- import { LocalsAccessError } from "../../errors/locals-access-error.js";
4
- const FILE_ROUTE_MIDDLEWARE_PIPELINE_ERRORS = {
5
- middlewareRequiresDynamic: (filePath) => `[ecopages] Page middleware requires cache: 'dynamic'. Page: ${filePath}`
6
- };
7
- class FileRouteMiddlewarePipeline {
8
- cacheService;
9
- constructor(cacheService) {
10
- this.cacheService = cacheService;
11
- }
12
- /**
13
- * Enforces the current middleware contract for file-routed pages.
14
- *
15
- * Middleware depends on request-scoped locals and therefore must not run when
16
- * the page is treated as statically cacheable.
17
- *
18
- * @param input Middleware list, effective cache strategy, and page path.
19
- * @throws LocalsAccessError When middleware is configured for a non-dynamic page.
20
- */
21
- assertValidConfiguration(input) {
22
- if (input.middleware.length > 0 && input.pageCacheStrategy !== "dynamic") {
23
- throw new LocalsAccessError(
24
- FILE_ROUTE_MIDDLEWARE_PIPELINE_ERRORS.middlewareRequiresDynamic(input.filePath)
25
- );
26
- }
27
- }
28
- /**
29
- * Creates the request-scoped middleware context used by page middleware.
30
- *
31
- * The context intentionally omits `render()` and `renderPartial()` because
32
- * rendering is owned by the page route pipeline, not by middleware stages.
33
- *
34
- * @param input Request details and the mutable locals store.
35
- * @returns Middleware execution context.
36
- */
37
- createContext(input) {
38
- const context = {
39
- request: input.request,
40
- params: input.params,
41
- response: new ApiResponseBuilder(),
42
- server: null,
43
- services: {
44
- cache: this.cacheService
45
- },
46
- locals: input.locals,
47
- require: createRequire(() => context.locals),
48
- json: (data, options) => {
49
- const builder = new ApiResponseBuilder();
50
- if (options?.status) builder.status(options.status);
51
- if (options?.headers) builder.headers(options.headers);
52
- return builder.json(data);
53
- },
54
- html: (content, options) => {
55
- const builder = new ApiResponseBuilder();
56
- if (options?.status) builder.status(options.status);
57
- if (options?.headers) builder.headers(options.headers);
58
- return builder.html(content);
59
- }
60
- };
61
- return context;
62
- }
63
- /**
64
- * Runs the middleware chain and eventually delegates to the render callback.
65
- *
66
- * Middleware may short-circuit by returning a response directly. If the chain
67
- * completes, the supplied `renderResponse` callback is executed exactly once.
68
- *
69
- * @param input Middleware context, chain, and terminal render callback.
70
- * @returns Response from middleware or final render stage.
71
- */
72
- async run(input) {
73
- if (input.middleware.length === 0) {
74
- return input.renderResponse();
75
- }
76
- let index = 0;
77
- const executeNext = async () => {
78
- if (index < input.middleware.length) {
79
- const current = input.middleware[index++];
80
- return current(input.context, executeNext);
81
- }
82
- return input.renderResponse();
83
- };
84
- return executeNext();
85
- }
86
- }
87
- export {
88
- FILE_ROUTE_MIDDLEWARE_PIPELINE_ERRORS,
89
- FileRouteMiddlewarePipeline
90
- };