@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,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,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
- };
@@ -1,81 +0,0 @@
1
- import { STATUS_MESSAGE } from "../../config/constants.js";
2
- import { appLogger } from "../../global/app-logger.js";
3
- import { fileSystem } from "@ecopages/file-system";
4
- class FileSystemServerResponseFactory {
5
- options;
6
- constructor({ options }) {
7
- this.options = options;
8
- }
9
- isHtml(contentType) {
10
- return contentType === "text/html";
11
- }
12
- shouldEnableGzip(contentType) {
13
- if (this.options.watchMode) return false;
14
- const gzipEnabledExtensions = ["text/javascript", "text/css"];
15
- return gzipEnabledExtensions.includes(contentType);
16
- }
17
- async createResponseWithBody(body, init = {
18
- headers: {
19
- "Content-Type": "text/html"
20
- }
21
- }) {
22
- return new Response(body, init);
23
- }
24
- async createDefaultNotFoundResponse() {
25
- return new Response(STATUS_MESSAGE[404], {
26
- status: 404
27
- });
28
- }
29
- /**
30
- * Wraps already-rendered HTML in a 404 response envelope.
31
- */
32
- async createHtmlNotFoundResponse(body) {
33
- return await this.createResponseWithBody(body, {
34
- status: 404,
35
- statusText: STATUS_MESSAGE[404],
36
- headers: {
37
- "Content-Type": "text/html"
38
- }
39
- });
40
- }
41
- /**
42
- * Reads a static file response, returning `null` when the file is missing.
43
- */
44
- async createFileResponse(filePath, contentType) {
45
- try {
46
- let file;
47
- const contentEncodingHeader = {};
48
- if (this.shouldEnableGzip(contentType)) {
49
- const gzipPath = `${filePath}.gz`;
50
- if (fileSystem.exists(gzipPath)) {
51
- file = fileSystem.readFileAsBuffer(gzipPath);
52
- contentEncodingHeader["Content-Encoding"] = "gzip";
53
- contentEncodingHeader["Vary"] = "Accept-Encoding";
54
- } else {
55
- appLogger.debug("Gzip file not found, serving uncompressed", gzipPath);
56
- file = fileSystem.readFileAsBuffer(filePath);
57
- }
58
- } else {
59
- file = fileSystem.readFileAsBuffer(filePath);
60
- }
61
- return await this.createResponseWithBody(file, {
62
- headers: {
63
- "Content-Type": contentType,
64
- ...contentEncodingHeader
65
- }
66
- });
67
- } catch (error) {
68
- const err = error;
69
- const code = err.code || err.cause?.code;
70
- if (code === "ENOENT") {
71
- appLogger.debug("File not found", filePath);
72
- } else {
73
- appLogger.error("Error reading file", filePath, err);
74
- }
75
- return null;
76
- }
77
- }
78
- }
79
- export {
80
- FileSystemServerResponseFactory
81
- };