@ecopages/core 0.2.0-alpha.9 → 0.2.1-beta.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 (471) hide show
  1. package/README.md +79 -28
  2. package/package.json +94 -116
  3. package/src/adapters/README.md +2 -2
  4. package/src/adapters/abstract/application-adapter.d.ts +28 -2
  5. package/src/adapters/abstract/application-adapter.js +14 -2
  6. package/src/adapters/abstract/router-adapter.d.ts +1 -1
  7. package/src/adapters/abstract/server-adapter.d.ts +2 -2
  8. package/src/adapters/bun/client-bridge.d.ts +1 -1
  9. package/src/adapters/bun/create-app.d.ts +12 -12
  10. package/src/adapters/bun/create-app.js +64 -41
  11. package/src/adapters/bun/hmr-manager.d.ts +19 -115
  12. package/src/adapters/bun/hmr-manager.js +25 -301
  13. package/src/adapters/bun/index.d.ts +1 -1
  14. package/src/adapters/bun/index.js +2 -2
  15. package/src/adapters/bun/runtime-host.d.ts +52 -0
  16. package/src/adapters/bun/runtime-host.js +56 -0
  17. package/src/adapters/bun/server-adapter.d.ts +100 -32
  18. package/src/adapters/bun/server-adapter.js +142 -65
  19. package/src/adapters/bun/static-preview-host.d.ts +28 -0
  20. package/src/adapters/bun/static-preview-host.js +45 -0
  21. package/src/{create-app.d.ts → adapters/create-app.d.ts} +9 -6
  22. package/src/{create-app.js → adapters/create-app.js} +4 -4
  23. package/src/adapters/index.d.ts +1 -5
  24. package/src/adapters/index.js +1 -7
  25. package/src/adapters/node/create-app.d.ts +15 -12
  26. package/src/adapters/node/create-app.js +34 -85
  27. package/src/adapters/node/http-request-bridge.d.ts +57 -0
  28. package/src/adapters/node/http-request-bridge.js +118 -0
  29. package/src/adapters/node/node-client-bridge.d.ts +1 -1
  30. package/src/adapters/node/node-hmr-manager.d.ts +22 -103
  31. package/src/adapters/node/node-hmr-manager.js +26 -289
  32. package/src/adapters/node/runtime-host.d.ts +57 -0
  33. package/src/adapters/node/runtime-host.js +92 -0
  34. package/src/adapters/node/server-adapter-dependencies.d.ts +19 -0
  35. package/src/adapters/node/server-adapter-dependencies.js +18 -0
  36. package/src/adapters/node/server-adapter.d.ts +19 -42
  37. package/src/adapters/node/server-adapter.js +94 -139
  38. package/src/adapters/node/static-content-server.d.ts +1 -1
  39. package/src/adapters/node/static-content-server.js +1 -1
  40. package/src/adapters/node/static-preview-host.d.ts +55 -0
  41. package/src/adapters/node/static-preview-host.js +68 -0
  42. package/src/adapters/shared/application-adapter.d.ts +1 -1
  43. package/src/adapters/shared/define-api-handler.d.ts +1 -1
  44. package/src/adapters/shared/explicit-static-render-preparation.d.ts +25 -0
  45. package/src/adapters/shared/explicit-static-render-preparation.js +26 -0
  46. package/src/adapters/shared/explicit-static-route-matcher.d.ts +7 -4
  47. package/src/adapters/shared/explicit-static-route-matcher.js +14 -16
  48. package/src/adapters/shared/file-route-middleware-pipeline.d.ts +7 -10
  49. package/src/adapters/shared/file-route-middleware-pipeline.js +2 -11
  50. package/src/adapters/shared/fs-server-response-factory.d.ts +14 -10
  51. package/src/adapters/shared/fs-server-response-factory.js +11 -27
  52. package/src/adapters/shared/fs-server-response-matcher.d.ts +18 -18
  53. package/src/adapters/shared/fs-server-response-matcher.js +72 -46
  54. package/src/adapters/shared/hmr-entrypoint-registrar.js +1 -1
  55. package/src/adapters/shared/hmr-html-response.d.ts +1 -1
  56. package/src/adapters/shared/hmr-html-response.js +4 -3
  57. package/src/adapters/shared/render-context.d.ts +5 -3
  58. package/src/adapters/shared/render-context.js +24 -1
  59. package/src/adapters/shared/runtime-app-bootstrap.d.ts +26 -0
  60. package/src/adapters/shared/runtime-app-bootstrap.js +46 -0
  61. package/src/adapters/shared/runtime-host.d.ts +12 -0
  62. package/src/adapters/shared/server-adapter.d.ts +22 -11
  63. package/src/adapters/shared/server-adapter.js +183 -133
  64. package/src/adapters/shared/server-route-handler.d.ts +5 -5
  65. package/src/adapters/shared/server-route-handler.js +4 -4
  66. package/src/adapters/shared/server-static-builder.d.ts +8 -7
  67. package/src/adapters/shared/server-static-builder.js +6 -5
  68. package/src/adapters/shared/shared-hmr-manager.d.ts +59 -0
  69. package/src/adapters/shared/shared-hmr-manager.js +241 -0
  70. package/src/adapters/shared/static-preview-host.d.ts +10 -0
  71. package/src/build/README.md +57 -67
  72. package/src/build/browser-runtime-manifest.d.ts +31 -0
  73. package/src/build/browser-runtime-manifest.js +61 -0
  74. package/src/build/browser-runtime-plugin-helpers.d.ts +26 -0
  75. package/src/build/browser-runtime-plugin-helpers.js +14 -0
  76. package/src/build/browser-runtime-plugin.d.ts +78 -0
  77. package/src/build/browser-runtime-plugin.js +173 -0
  78. package/src/build/build-adapter.d.ts +384 -63
  79. package/src/build/build-adapter.js +129 -54
  80. package/src/build/build-manifest.d.ts +6 -0
  81. package/src/build/build-manifest.js +21 -2
  82. package/src/build/build-types.d.ts +2 -2
  83. package/src/build/rolldown-adapter-helpers.d.ts +58 -0
  84. package/src/build/rolldown-adapter-helpers.js +265 -0
  85. package/src/build/rolldown-build-adapter.d.ts +28 -0
  86. package/src/build/rolldown-build-adapter.js +65 -0
  87. package/src/build/rolldown-dev-build-adapter.d.ts +82 -0
  88. package/src/build/rolldown-dev-build-adapter.js +166 -0
  89. package/src/build/rolldown-plugin-bridge.d.ts +59 -0
  90. package/src/build/rolldown-plugin-bridge.js +199 -0
  91. package/src/build/runtime-build-executor.d.ts +15 -7
  92. package/src/build/runtime-build-executor.js +8 -9
  93. package/src/build/runtime-build-output-normalizer.d.ts +3 -0
  94. package/src/build/runtime-build-output-normalizer.js +111 -0
  95. package/src/build/serialized-build-executor.d.ts +64 -0
  96. package/src/build/serialized-build-executor.js +63 -0
  97. package/src/build/server-side-css-shim-plugin.d.ts +41 -0
  98. package/src/build/server-side-css-shim-plugin.js +35 -0
  99. package/src/cache/index.d.ts +6 -0
  100. package/src/cache/index.js +6 -0
  101. package/src/cache/module-parse-cache.d.ts +65 -0
  102. package/src/cache/module-parse-cache.js +75 -0
  103. package/src/config/README.md +5 -2
  104. package/src/config/config-builder.d.ts +41 -13
  105. package/src/config/config-builder.js +62 -24
  106. package/src/declarations.d.ts +1 -1
  107. package/src/dev/host-runtime.d.ts +10 -0
  108. package/src/dev/host-runtime.js +24 -0
  109. package/src/dev/sc-server.d.ts +1 -1
  110. package/src/dev/sc-server.js +1 -1
  111. package/src/eco/eco.browser.d.ts +2 -0
  112. package/src/eco/eco.browser.js +88 -0
  113. package/src/eco/eco.js +50 -45
  114. package/src/eco/eco.types.d.ts +60 -8
  115. package/src/eco/eco.utils.d.ts +1 -40
  116. package/src/eco/eco.utils.js +5 -35
  117. package/src/eco/global-injector-map.d.ts +3 -3
  118. package/src/eco/global-injector-map.js +2 -2
  119. package/src/eco/lazy-injector-map.d.ts +2 -2
  120. package/src/errors/index.d.ts +1 -0
  121. package/src/errors/index.js +3 -1
  122. package/src/hmr/client/hmr-runtime.js +9 -1
  123. package/src/hmr/hmr-strategy.d.ts +16 -13
  124. package/src/hmr/hmr-strategy.js +22 -7
  125. package/src/hmr/strategies/default-hmr-strategy.d.ts +2 -2
  126. package/src/hmr/strategies/default-hmr-strategy.js +1 -1
  127. package/src/hmr/strategies/js-hmr-strategy.d.ts +4 -9
  128. package/src/hmr/strategies/js-hmr-strategy.js +5 -10
  129. package/src/index.browser.d.ts +2 -2
  130. package/src/index.browser.js +1 -1
  131. package/src/index.d.ts +3 -2
  132. package/src/index.js +15 -4
  133. package/src/integrations/ghtml/ghtml-renderer.d.ts +2 -1
  134. package/src/integrations/ghtml/ghtml-renderer.js +24 -29
  135. package/src/integrations/ghtml/ghtml.constants.d.ts +1 -0
  136. package/src/integrations/ghtml/ghtml.constants.js +4 -0
  137. package/src/integrations/ghtml/ghtml.plugin.d.ts +2 -6
  138. package/src/integrations/ghtml/ghtml.plugin.js +3 -4
  139. package/src/plugins/README.md +1 -0
  140. package/src/plugins/alias-resolver-cache.d.ts +68 -0
  141. package/src/plugins/alias-resolver-cache.js +106 -0
  142. package/src/plugins/alias-resolver-plugin.d.ts +5 -1
  143. package/src/plugins/alias-resolver-plugin.js +19 -7
  144. package/src/plugins/eco-component-meta-plugin.d.ts +12 -1
  145. package/src/plugins/eco-component-meta-plugin.js +43 -25
  146. package/src/plugins/foreign-jsx-override-plugin.d.ts +33 -0
  147. package/src/plugins/foreign-jsx-override-plugin.js +41 -0
  148. package/src/plugins/integration-plugin.d.ts +136 -42
  149. package/src/plugins/integration-plugin.js +99 -31
  150. package/src/plugins/processor.d.ts +4 -2
  151. package/src/plugins/processor.js +8 -3
  152. package/src/plugins/source-transform.d.ts +46 -0
  153. package/src/plugins/source-transform.js +71 -0
  154. package/src/route-renderer/GRAPH.md +80 -318
  155. package/src/route-renderer/README.md +74 -78
  156. package/src/route-renderer/orchestration/component-render-context.d.ts +97 -0
  157. package/src/route-renderer/orchestration/component-render-context.js +147 -0
  158. package/src/route-renderer/orchestration/declared-ownership-graph.d.ts +18 -0
  159. package/src/route-renderer/orchestration/declared-ownership-graph.js +34 -0
  160. package/src/route-renderer/orchestration/foreign-subtree-execution.service.d.ts +110 -0
  161. package/src/route-renderer/orchestration/foreign-subtree-execution.service.js +233 -0
  162. package/src/route-renderer/orchestration/integration-renderer.d.ts +290 -128
  163. package/src/route-renderer/orchestration/integration-renderer.js +660 -258
  164. package/src/route-renderer/orchestration/ownership-planning.service.d.ts +24 -0
  165. package/src/route-renderer/orchestration/ownership-planning.service.js +63 -0
  166. package/src/route-renderer/orchestration/ownership-validation.service.d.ts +29 -0
  167. package/src/route-renderer/orchestration/ownership-validation.service.js +53 -0
  168. package/src/route-renderer/orchestration/processed-asset-dedupe.d.ts +3 -0
  169. package/src/route-renderer/orchestration/processed-asset-dedupe.js +27 -0
  170. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.d.ts +91 -0
  171. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.js +170 -0
  172. package/src/route-renderer/orchestration/render-output.utils.d.ts +66 -0
  173. package/src/route-renderer/orchestration/render-output.utils.js +171 -0
  174. package/src/route-renderer/orchestration/route-render-orchestrator.d.ts +156 -0
  175. package/src/route-renderer/orchestration/route-render-orchestrator.js +577 -0
  176. package/src/route-renderer/orchestration/template-serialization.d.ts +38 -0
  177. package/src/route-renderer/orchestration/template-serialization.js +45 -0
  178. package/src/route-renderer/page-loading/component-dependency-collection.d.ts +37 -0
  179. package/src/route-renderer/page-loading/component-dependency-collection.js +132 -0
  180. package/src/route-renderer/page-loading/declared-asset-collection.d.ts +24 -0
  181. package/src/route-renderer/page-loading/declared-asset-collection.js +106 -0
  182. package/src/route-renderer/page-loading/dependency-resolver.d.ts +2 -2
  183. package/src/route-renderer/page-loading/dependency-resolver.js +27 -354
  184. package/src/route-renderer/page-loading/ecopages-virtual-imports.d.ts +11 -0
  185. package/src/route-renderer/page-loading/ecopages-virtual-imports.js +57 -0
  186. package/src/route-renderer/page-loading/lazy-entry-collection.d.ts +45 -0
  187. package/src/route-renderer/page-loading/lazy-entry-collection.js +105 -0
  188. package/src/route-renderer/page-loading/lazy-trigger-planning.d.ts +19 -0
  189. package/src/route-renderer/page-loading/lazy-trigger-planning.js +40 -0
  190. package/src/route-renderer/page-loading/module-declaration-aggregation.d.ts +5 -0
  191. package/src/route-renderer/page-loading/module-declaration-aggregation.js +33 -0
  192. package/src/route-renderer/page-loading/module-declaration-scripts.d.ts +3 -0
  193. package/src/route-renderer/page-loading/module-declaration-scripts.js +18 -0
  194. package/src/route-renderer/page-loading/page-dependency-bundling.d.ts +13 -0
  195. package/src/route-renderer/page-loading/page-dependency-bundling.js +137 -0
  196. package/src/route-renderer/page-loading/page-module-loader.d.ts +7 -4
  197. package/src/route-renderer/page-loading/page-module-loader.js +8 -5
  198. package/src/route-renderer/route-renderer.d.ts +31 -23
  199. package/src/route-renderer/route-renderer.js +17 -24
  200. package/src/router/README.md +76 -8
  201. package/src/router/client/navigation-coordinator.d.ts +20 -0
  202. package/src/router/client/navigation-coordinator.js +2 -2
  203. package/src/router/server/route-registry.d.ts +78 -0
  204. package/src/router/server/route-registry.js +262 -0
  205. package/src/services/README.md +1 -2
  206. package/src/services/assets/asset-processing-service/asset-dependency-keys.d.ts +3 -0
  207. package/src/services/assets/asset-processing-service/asset-dependency-keys.js +56 -0
  208. package/src/services/assets/asset-processing-service/asset-processing.service.d.ts +3 -20
  209. package/src/services/assets/asset-processing-service/asset-processing.service.js +52 -98
  210. package/src/services/assets/asset-processing-service/asset.factory.d.ts +1 -1
  211. package/src/services/assets/asset-processing-service/asset.factory.js +2 -2
  212. package/src/services/assets/asset-processing-service/assets.types.d.ts +14 -0
  213. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.d.ts +2 -0
  214. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.js +1 -0
  215. package/src/services/assets/asset-processing-service/grouped-content-bundles.d.ts +30 -0
  216. package/src/services/assets/asset-processing-service/grouped-content-bundles.js +65 -0
  217. package/src/services/assets/asset-processing-service/index.d.ts +6 -5
  218. package/src/services/assets/asset-processing-service/index.js +6 -5
  219. package/src/services/assets/asset-processing-service/page-package.d.ts +6 -0
  220. package/src/services/assets/asset-processing-service/page-package.js +80 -0
  221. package/src/services/assets/asset-processing-service/processor.interface.d.ts +2 -2
  222. package/src/services/assets/asset-processing-service/processor.registry.d.ts +2 -2
  223. package/src/services/assets/asset-processing-service/processors/base/base-processor.d.ts +1 -1
  224. package/src/services/assets/asset-processing-service/processors/base/base-processor.js +3 -2
  225. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.d.ts +10 -5
  226. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.js +69 -5
  227. package/src/services/assets/asset-processing-service/processors/index.d.ts +5 -5
  228. package/src/services/assets/asset-processing-service/processors/index.js +5 -5
  229. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.d.ts +3 -2
  230. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.js +66 -3
  231. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.d.ts +4 -3
  232. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.js +27 -6
  233. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.d.ts +38 -3
  234. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.js +57 -6
  235. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.d.ts +5 -2
  236. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +39 -5
  237. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.d.ts +2 -2
  238. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.js +5 -2
  239. package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.d.ts +18 -0
  240. package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.js +45 -0
  241. package/src/services/assets/browser-bundle.service.d.ts +44 -3
  242. package/src/services/assets/browser-bundle.service.js +15 -7
  243. package/src/services/html/html-rewriter-provider.service.d.ts +3 -0
  244. package/src/services/html/html-rewriter-provider.service.js +4 -1
  245. package/src/services/html/html-transformer.service.d.ts +22 -3
  246. package/src/services/html/html-transformer.service.js +101 -35
  247. package/src/services/invalidation/development-invalidation.service.d.ts +1 -1
  248. package/src/services/invalidation/development-invalidation.service.js +1 -0
  249. package/src/services/module-loading/app-module-loader.service.d.ts +7 -0
  250. package/src/services/module-loading/app-module-loader.service.js +0 -0
  251. package/src/services/module-loading/app-server-module-transpiler.service.d.ts +9 -1
  252. package/src/services/module-loading/app-server-module-transpiler.service.js +102 -6
  253. package/src/services/module-loading/host-module-loader-registry.d.ts +4 -0
  254. package/src/services/module-loading/host-module-loader-registry.js +15 -0
  255. package/src/services/module-loading/module-loading-types.d.ts +2 -0
  256. package/src/services/module-loading/module-loading-types.js +0 -0
  257. package/src/services/module-loading/page-module-import.service.d.ts +32 -8
  258. package/src/services/module-loading/page-module-import.service.js +83 -22
  259. package/src/services/module-loading/server-module-transpiler.service.d.ts +8 -14
  260. package/src/services/module-loading/server-module-transpiler.service.js +5 -2
  261. package/src/services/module-loading/source-module-support.d.ts +5 -0
  262. package/src/services/module-loading/source-module-support.js +8 -0
  263. package/src/services/runtime-state/dev-graph.service.d.ts +6 -6
  264. package/src/services/runtime-state/dev-graph.service.js +10 -10
  265. package/src/services/runtime-state/entrypoint-dependency-graph.service.d.ts +1 -1
  266. package/src/services/runtime-state/server-invalidation-state.service.d.ts +1 -1
  267. package/src/static-site-generator/static-site-generator.d.ts +23 -28
  268. package/src/static-site-generator/static-site-generator.js +119 -156
  269. package/src/{internal-types.d.ts → types/internal-types.d.ts} +34 -23
  270. package/src/types/internal-types.js +0 -0
  271. package/src/{public-types.d.ts → types/public-types.d.ts} +195 -37
  272. package/src/types/public-types.js +0 -0
  273. package/src/utils/html-escaping.d.ts +7 -0
  274. package/src/utils/html-escaping.js +6 -0
  275. package/src/utils/locals-utils.d.ts +1 -1
  276. package/src/utils/parse-cli-args.d.ts +4 -1
  277. package/src/utils/parse-cli-args.js +16 -1
  278. package/src/utils/resolve-work-dir.js +1 -1
  279. package/src/watchers/project-watcher.d.ts +4 -4
  280. package/src/watchers/project-watcher.js +35 -41
  281. package/src/watchers/project-watcher.test-helpers.d.ts +2 -2
  282. package/src/watchers/project-watcher.test-helpers.js +5 -5
  283. package/CHANGELOG.md +0 -31
  284. package/src/adapters/abstract/application-adapter.ts +0 -337
  285. package/src/adapters/abstract/router-adapter.ts +0 -30
  286. package/src/adapters/abstract/server-adapter.ts +0 -79
  287. package/src/adapters/bun/client-bridge.ts +0 -62
  288. package/src/adapters/bun/create-app.ts +0 -189
  289. package/src/adapters/bun/hmr-manager.ts +0 -409
  290. package/src/adapters/bun/index.ts +0 -2
  291. package/src/adapters/bun/server-adapter.ts +0 -499
  292. package/src/adapters/bun/server-lifecycle.d.ts +0 -63
  293. package/src/adapters/bun/server-lifecycle.js +0 -92
  294. package/src/adapters/bun/server-lifecycle.ts +0 -124
  295. package/src/adapters/index.ts +0 -6
  296. package/src/adapters/node/bootstrap-dependency-resolver.d.ts +0 -44
  297. package/src/adapters/node/bootstrap-dependency-resolver.js +0 -172
  298. package/src/adapters/node/bootstrap-dependency-resolver.ts +0 -301
  299. package/src/adapters/node/create-app.ts +0 -179
  300. package/src/adapters/node/index.d.ts +0 -6
  301. package/src/adapters/node/index.js +0 -11
  302. package/src/adapters/node/index.ts +0 -16
  303. package/src/adapters/node/node-client-bridge.ts +0 -79
  304. package/src/adapters/node/node-hmr-manager.ts +0 -381
  305. package/src/adapters/node/runtime-adapter.d.ts +0 -46
  306. package/src/adapters/node/runtime-adapter.js +0 -306
  307. package/src/adapters/node/runtime-adapter.ts +0 -439
  308. package/src/adapters/node/server-adapter.ts +0 -488
  309. package/src/adapters/node/static-content-server.ts +0 -239
  310. package/src/adapters/node/write-runtime-manifest.d.ts +0 -26
  311. package/src/adapters/node/write-runtime-manifest.js +0 -12
  312. package/src/adapters/node/write-runtime-manifest.ts +0 -38
  313. package/src/adapters/shared/api-response.ts +0 -104
  314. package/src/adapters/shared/application-adapter.ts +0 -199
  315. package/src/adapters/shared/define-api-handler.ts +0 -66
  316. package/src/adapters/shared/explicit-static-route-matcher.ts +0 -140
  317. package/src/adapters/shared/file-route-middleware-pipeline.ts +0 -127
  318. package/src/adapters/shared/fs-server-response-factory.ts +0 -118
  319. package/src/adapters/shared/fs-server-response-matcher.ts +0 -205
  320. package/src/adapters/shared/hmr-entrypoint-registrar.ts +0 -149
  321. package/src/adapters/shared/hmr-html-response.ts +0 -52
  322. package/src/adapters/shared/render-context.ts +0 -120
  323. package/src/adapters/shared/runtime-bootstrap.d.ts +0 -38
  324. package/src/adapters/shared/runtime-bootstrap.js +0 -43
  325. package/src/adapters/shared/runtime-bootstrap.ts +0 -79
  326. package/src/adapters/shared/server-adapter.ts +0 -489
  327. package/src/adapters/shared/server-route-handler.ts +0 -153
  328. package/src/adapters/shared/server-static-builder.ts +0 -166
  329. package/src/build/build-adapter.ts +0 -361
  330. package/src/build/build-manifest.ts +0 -54
  331. package/src/build/build-types.ts +0 -83
  332. package/src/build/dev-build-coordinator.d.ts +0 -74
  333. package/src/build/dev-build-coordinator.js +0 -161
  334. package/src/build/dev-build-coordinator.ts +0 -221
  335. package/src/build/esbuild-build-adapter.d.ts +0 -72
  336. package/src/build/esbuild-build-adapter.js +0 -422
  337. package/src/build/esbuild-build-adapter.ts +0 -559
  338. package/src/build/runtime-build-executor.ts +0 -34
  339. package/src/build/runtime-specifier-alias-plugin.d.ts +0 -15
  340. package/src/build/runtime-specifier-alias-plugin.js +0 -31
  341. package/src/build/runtime-specifier-alias-plugin.ts +0 -58
  342. package/src/config/config-builder.ts +0 -706
  343. package/src/constants.ts +0 -54
  344. package/src/create-app.ts +0 -87
  345. package/src/dev/sc-server.ts +0 -143
  346. package/src/eco/component-render-context.d.ts +0 -105
  347. package/src/eco/component-render-context.js +0 -87
  348. package/src/eco/component-render-context.ts +0 -224
  349. package/src/eco/eco.ts +0 -242
  350. package/src/eco/eco.types.ts +0 -221
  351. package/src/eco/eco.utils.ts +0 -89
  352. package/src/eco/global-injector-map.ts +0 -112
  353. package/src/eco/lazy-injector-map.ts +0 -120
  354. package/src/eco/module-dependencies.ts +0 -75
  355. package/src/errors/http-error.ts +0 -72
  356. package/src/errors/index.ts +0 -2
  357. package/src/errors/locals-access-error.ts +0 -7
  358. package/src/global/app-logger.ts +0 -4
  359. package/src/hmr/client/hmr-runtime.ts +0 -152
  360. package/src/hmr/hmr-strategy.ts +0 -172
  361. package/src/hmr/hmr.postcss.test.e2e.ts +0 -41
  362. package/src/hmr/hmr.test.e2e.ts +0 -66
  363. package/src/hmr/strategies/default-hmr-strategy.ts +0 -60
  364. package/src/hmr/strategies/js-hmr-strategy.ts +0 -320
  365. package/src/index.browser.ts +0 -3
  366. package/src/index.ts +0 -5
  367. package/src/integrations/ghtml/ghtml-renderer.ts +0 -96
  368. package/src/integrations/ghtml/ghtml.plugin.ts +0 -32
  369. package/src/internal-types.ts +0 -232
  370. package/src/plugins/alias-resolver-plugin.ts +0 -63
  371. package/src/plugins/eco-component-meta-plugin.ts +0 -481
  372. package/src/plugins/integration-plugin.ts +0 -226
  373. package/src/plugins/processor.ts +0 -240
  374. package/src/plugins/runtime-capability.ts +0 -14
  375. package/src/public-types.ts +0 -1317
  376. package/src/route-renderer/component-graph/component-graph-executor.d.ts +0 -32
  377. package/src/route-renderer/component-graph/component-graph-executor.js +0 -31
  378. package/src/route-renderer/component-graph/component-graph-executor.ts +0 -84
  379. package/src/route-renderer/component-graph/component-graph.d.ts +0 -42
  380. package/src/route-renderer/component-graph/component-graph.js +0 -72
  381. package/src/route-renderer/component-graph/component-graph.ts +0 -159
  382. package/src/route-renderer/component-graph/component-marker.d.ts +0 -52
  383. package/src/route-renderer/component-graph/component-marker.js +0 -46
  384. package/src/route-renderer/component-graph/component-marker.ts +0 -117
  385. package/src/route-renderer/component-graph/component-reference.d.ts +0 -10
  386. package/src/route-renderer/component-graph/component-reference.js +0 -19
  387. package/src/route-renderer/component-graph/component-reference.ts +0 -29
  388. package/src/route-renderer/component-graph/marker-graph-resolver.d.ts +0 -77
  389. package/src/route-renderer/component-graph/marker-graph-resolver.js +0 -95
  390. package/src/route-renderer/component-graph/marker-graph-resolver.ts +0 -155
  391. package/src/route-renderer/orchestration/integration-renderer.ts +0 -790
  392. package/src/route-renderer/orchestration/render-execution.service.d.ts +0 -103
  393. package/src/route-renderer/orchestration/render-execution.service.js +0 -121
  394. package/src/route-renderer/orchestration/render-execution.service.ts +0 -230
  395. package/src/route-renderer/orchestration/render-preparation.service.d.ts +0 -121
  396. package/src/route-renderer/orchestration/render-preparation.service.js +0 -332
  397. package/src/route-renderer/orchestration/render-preparation.service.ts +0 -476
  398. package/src/route-renderer/page-loading/dependency-resolver.ts +0 -612
  399. package/src/route-renderer/page-loading/page-module-loader.ts +0 -181
  400. package/src/route-renderer/route-renderer.ts +0 -115
  401. package/src/router/client/link-intent.test.browser.ts +0 -51
  402. package/src/router/client/link-intent.ts +0 -92
  403. package/src/router/client/navigation-coordinator.ts +0 -433
  404. package/src/router/server/fs-router-scanner.d.ts +0 -41
  405. package/src/router/server/fs-router-scanner.js +0 -156
  406. package/src/router/server/fs-router-scanner.ts +0 -219
  407. package/src/router/server/fs-router.d.ts +0 -26
  408. package/src/router/server/fs-router.js +0 -100
  409. package/src/router/server/fs-router.ts +0 -122
  410. package/src/services/assets/asset-processing-service/asset-processing.service.ts +0 -401
  411. package/src/services/assets/asset-processing-service/asset.factory.ts +0 -105
  412. package/src/services/assets/asset-processing-service/assets.types.ts +0 -113
  413. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.ts +0 -95
  414. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.ts +0 -78
  415. package/src/services/assets/asset-processing-service/index.ts +0 -5
  416. package/src/services/assets/asset-processing-service/processor.interface.ts +0 -27
  417. package/src/services/assets/asset-processing-service/processor.registry.ts +0 -18
  418. package/src/services/assets/asset-processing-service/processors/base/base-processor.ts +0 -82
  419. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.ts +0 -95
  420. package/src/services/assets/asset-processing-service/processors/index.ts +0 -5
  421. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.ts +0 -66
  422. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.ts +0 -88
  423. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.ts +0 -85
  424. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.ts +0 -27
  425. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.ts +0 -80
  426. package/src/services/assets/browser-bundle.service.ts +0 -53
  427. package/src/services/cache/cache.types.ts +0 -126
  428. package/src/services/cache/index.ts +0 -18
  429. package/src/services/cache/memory-cache-store.ts +0 -130
  430. package/src/services/cache/page-cache-service.ts +0 -202
  431. package/src/services/cache/page-request-cache-coordinator.service.ts +0 -131
  432. package/src/services/html/html-rewriter-provider.service.ts +0 -103
  433. package/src/services/html/html-transformer.service.ts +0 -279
  434. package/src/services/invalidation/development-invalidation.service.ts +0 -261
  435. package/src/services/module-loading/app-server-module-transpiler.service.ts +0 -52
  436. package/src/services/module-loading/page-module-import.service.ts +0 -200
  437. package/src/services/module-loading/server-loader.service.d.ts +0 -96
  438. package/src/services/module-loading/server-loader.service.js +0 -32
  439. package/src/services/module-loading/server-loader.service.ts +0 -130
  440. package/src/services/module-loading/server-module-transpiler.service.ts +0 -105
  441. package/src/services/runtime-manifest/node-runtime-manifest.service.d.ts +0 -35
  442. package/src/services/runtime-manifest/node-runtime-manifest.service.js +0 -60
  443. package/src/services/runtime-manifest/node-runtime-manifest.service.ts +0 -101
  444. package/src/services/runtime-state/dev-graph.service.ts +0 -217
  445. package/src/services/runtime-state/entrypoint-dependency-graph.service.ts +0 -136
  446. package/src/services/runtime-state/runtime-specifier-registry.service.d.ts +0 -69
  447. package/src/services/runtime-state/runtime-specifier-registry.service.js +0 -37
  448. package/src/services/runtime-state/runtime-specifier-registry.service.ts +0 -96
  449. package/src/services/runtime-state/server-invalidation-state.service.ts +0 -68
  450. package/src/services/validation/schema-validation-service.ts +0 -204
  451. package/src/services/validation/standard-schema.types.ts +0 -68
  452. package/src/static-site-generator/static-site-generator.ts +0 -462
  453. package/src/utils/css.d.ts +0 -1
  454. package/src/utils/css.js +0 -7
  455. package/src/utils/css.ts +0 -5
  456. package/src/utils/deep-merge.ts +0 -47
  457. package/src/utils/hash.ts +0 -5
  458. package/src/utils/html.ts +0 -1
  459. package/src/utils/invariant.ts +0 -15
  460. package/src/utils/locals-utils.ts +0 -37
  461. package/src/utils/parse-cli-args.ts +0 -83
  462. package/src/utils/path-utils.module.ts +0 -14
  463. package/src/utils/resolve-work-dir.ts +0 -45
  464. package/src/utils/runtime.ts +0 -44
  465. package/src/utils/server-utils.module.ts +0 -67
  466. package/src/watchers/project-watcher.test-helpers.ts +0 -41
  467. package/src/watchers/project-watcher.ts +0 -363
  468. /package/src/{internal-types.js → adapters/shared/runtime-host.js} +0 -0
  469. /package/src/{public-types.js → adapters/shared/static-preview-host.js} +0 -0
  470. /package/src/{constants.d.ts → config/constants.d.ts} +0 -0
  471. /package/src/{constants.js → config/constants.js} +0 -0
@@ -3,27 +3,29 @@
3
3
  * Every integration renderer should extend this class
4
4
  * @module
5
5
  */
6
- import type { EcoPagesAppConfig, IHmrManager } from '../../internal-types.js';
7
- import type { ComponentRenderInput, ComponentRenderResult, EcoComponent, EcoComponentDependencies, EcoPageComponent, EcoPageFile, EcoPagesElement, GetMetadata, GetMetadataContext, GetStaticProps, HtmlTemplateProps, IntegrationRendererRenderOptions, PageMetadataProps, RouteRendererBody, RouteRendererOptions, RouteRenderResult } from '../../public-types.js';
6
+ import type { EcoPagesAppConfig, IHmrManager } from '../../types/internal-types.js';
7
+ import type { ComponentRenderInput, ComponentRenderResult, ForeignSubtreeRenderPayload, EcoComponent, EcoComponentDependencies, EcoPageFile, EcoPagesElement, BaseIntegrationContext, HtmlTemplateProps, IntegrationRendererRenderOptions, PageBrowserGraphContribution, PageBrowserGraphContributionContext, PageBrowserGraphResult, PageMetadataProps, RouteRendererBody, RouteRendererOptions, RouteRenderResult } from '../../types/public-types.js';
8
8
  import { type AssetProcessingService, type ProcessedAsset } from '../../services/assets/asset-processing-service/index.js';
9
9
  import { HtmlTransformerService } from '../../services/html/html-transformer.service.js';
10
+ import type { HtmlDocumentContribution } from '../../services/html/html-transformer.service.js';
10
11
  import { HttpError } from '../../errors/http-error.js';
11
12
  import { DependencyResolverService } from '../page-loading/dependency-resolver.js';
12
13
  import { PageModuleLoaderService } from '../page-loading/page-module-loader.js';
13
- import { MarkerGraphResolver } from '../component-graph/marker-graph-resolver.js';
14
- import { RenderExecutionService, type RenderExecutionGraphContext } from './render-execution.service.js';
15
- import { RenderPreparationService } from './render-preparation.service.js';
16
- import type { BoundaryRenderDecisionInput, ComponentRenderBoundaryContext } from '../../eco/component-render-context.js';
17
- export interface FinalizeCapturedHtmlRenderOptions {
18
- html: string;
19
- componentsToResolve: EcoComponent[];
20
- graphContext: RenderExecutionGraphContext;
21
- partial?: boolean;
22
- componentRootAttributes?: Record<string, string>;
23
- documentAttributes?: Record<string, string>;
24
- mergeAssets?: boolean;
25
- transformHtml?: boolean;
26
- }
14
+ import { type RouteHtmlFinalization, RouteRenderOrchestrator, type RouteRenderOrchestratorAdapter, type RouteRenderOrchestratorResolvedInputs } from './route-render-orchestrator.js';
15
+ import type { ForeignChildRuntime } from './component-render-context.js';
16
+ import { ForeignSubtreeExecutionService, type ForeignSubtreeExecutionOwningRenderer } from './foreign-subtree-execution.service.js';
17
+ import { type QueuedForeignSubtreeResolutionContext } from './queued-foreign-subtree-resolution.service.js';
18
+ /**
19
+ * Controls how one route module is loaded outside the normal render path.
20
+ *
21
+ * Request-time metadata inspection and static-generation probes use these
22
+ * options to isolate their module identity from the main render cache while
23
+ * still going through the owning integration's import setup.
24
+ */
25
+ export type RouteModuleLoadOptions = {
26
+ bypassCache?: boolean;
27
+ cacheScope?: string;
28
+ };
27
29
  /**
28
30
  * Context for renderToResponse method.
29
31
  */
@@ -32,6 +34,12 @@ export interface RenderToResponseContext {
32
34
  status?: number;
33
35
  headers?: HeadersInit;
34
36
  }
37
+ export type HtmlDocumentContributionContext<C = EcoPagesElement> = {
38
+ renderOptions?: IntegrationRendererRenderOptions<C>;
39
+ partial?: boolean;
40
+ };
41
+ export type { PageBrowserGraphContribution, PageBrowserGraphContributionContext } from '../../types/public-types.js';
42
+ export type { HtmlDocumentContribution } from '../../services/html/html-transformer.service.js';
35
43
  /**
36
44
  * The IntegrationRenderer class is an abstract class that provides a base for rendering integration-specific components in the EcoPages framework.
37
45
  * It handles the import of page files, collection of dependencies, and preparation of render options.
@@ -44,14 +52,54 @@ export declare abstract class IntegrationRenderer<C = EcoPagesElement> {
44
52
  protected htmlTransformer: HtmlTransformerService;
45
53
  protected hmrManager?: IHmrManager;
46
54
  protected resolvedIntegrationDependencies: ProcessedAsset[];
55
+ protected rendererModules?: unknown;
47
56
  protected options: Required<IntegrationRendererRenderOptions>;
48
57
  protected runtimeOrigin: string;
49
58
  protected dependencyResolverService: DependencyResolverService;
50
59
  protected pageModuleLoaderService: PageModuleLoaderService;
51
- protected markerGraphResolver: MarkerGraphResolver;
52
- protected renderPreparationService: RenderPreparationService;
53
- protected renderExecutionService: RenderExecutionService;
60
+ protected routeRenderOrchestrator: RouteRenderOrchestrator;
61
+ protected readonly foreignSubtreeExecutionService: ForeignSubtreeExecutionService;
54
62
  protected DOC_TYPE: string;
63
+ /**
64
+ * Loads one route module through the owning renderer's import path.
65
+ *
66
+ * Request-time infrastructure may need page metadata such as cache strategy or
67
+ * middleware before full rendering starts. Exposing this narrow entrypoint lets
68
+ * those callers reuse integration-specific import setup instead of bypassing it
69
+ * with raw transpiler access.
70
+ */
71
+ loadPageModule(file: string, options?: RouteModuleLoadOptions): Promise<EcoPageFile>;
72
+ /**
73
+ * Reads the execution-scoped owning-renderer cache from one render input.
74
+ *
75
+ * Shared page/layout/document shell helpers pass one cache through
76
+ * `integrationContext` so repeated delegation to the same foreign integration
77
+ * can reuse a single initialized renderer instance during one render flow.
78
+ * The cache is deliberately scoped to the current render execution rather than
79
+ * stored on the renderer, which avoids leaking mutable integration state across
80
+ * requests while still preventing redundant renderer initialization.
81
+ *
82
+ * @param integrationContext - Optional render context carried with one render input.
83
+ * @returns The current execution cache when present.
84
+ */
85
+ private getOwningRendererCache;
86
+ private getForeignOwnerIntegrationName;
87
+ /**
88
+ * Attaches an execution-scoped owning-renderer cache to one render input.
89
+ *
90
+ * Foreign-owned page, layout, or document shells may delegate several times in
91
+ * the same render flow. Threading the cache through `integrationContext`
92
+ * preserves renderer reuse without changing the public render input contract.
93
+ * Existing integration-specific context is preserved and augmented.
94
+ *
95
+ * @param input - Original render input.
96
+ * @param rendererCache - Execution-scoped renderer cache to propagate.
97
+ * @returns Render input augmented with the shared renderer cache.
98
+ */
99
+ private withOwningRendererCache;
100
+ protected getRendererModuleValue(key: string): unknown;
101
+ protected getRendererModuleString(key: string): string | undefined;
102
+ protected getRendererBootstrapDependencies(partial?: boolean): ProcessedAsset[];
55
103
  setHmrManager(hmrManager: IHmrManager): void;
56
104
  /**
57
105
  * Build response headers with optional custom headers.
@@ -82,10 +130,130 @@ export declare abstract class IntegrationRenderer<C = EcoPagesElement> {
82
130
  * @returns Resolved processed assets
83
131
  */
84
132
  protected prepareViewDependencies(view: EcoComponent, layout?: EcoComponent): Promise<ProcessedAsset[]>;
85
- constructor({ appConfig, assetProcessingService, resolvedIntegrationDependencies, runtimeOrigin, }: {
133
+ protected resolvePageBrowserGraphForFile(filePath: string): Promise<PageBrowserGraphResult | undefined>;
134
+ protected mergePageBrowserGraphIntoPagePackage(pageBrowserGraph?: PageBrowserGraphResult): PageBrowserGraphResult | undefined;
135
+ /**
136
+ * Merges component-scoped assets into the active HTML transformer state.
137
+ *
138
+ * Explicit page, layout, and document shell composition can produce assets at
139
+ * each foreign subtree. This helper deduplicates those groups and folds them back into
140
+ * the transformer so downstream HTML finalization sees one canonical asset set.
141
+ *
142
+ * @param assetGroups - Optional groups of processed assets to merge.
143
+ * @returns The deduplicated asset subset contributed by this merge operation.
144
+ */
145
+ protected appendProcessedDependencies(...assetGroups: Array<readonly ProcessedAsset[] | undefined>): ProcessedAsset[];
146
+ /**
147
+ * Resolves metadata for explicit view rendering.
148
+ *
149
+ * When a view declares a `metadata()` function, that contract owns the final
150
+ * metadata for the explicit render. Otherwise the app-level default metadata is
151
+ * reused so explicit routes and page-module routes share the same fallback.
152
+ *
153
+ * @param view - View component being rendered.
154
+ * @param props - Props passed to the view.
155
+ * @returns Resolved metadata for the final document shell.
156
+ */
157
+ protected resolveViewMetadata<P>(view: EcoComponent<P>, props: P): Promise<PageMetadataProps>;
158
+ /**
159
+ * Renders one explicit view response in partial mode.
160
+ *
161
+ * Same-integration views can optionally stream or render inline via the caller's
162
+ * `renderInline()` hook. Once a view may cross integration boundaries, this
163
+ * helper routes the render through `renderComponentWithForeignChildren()` instead so mixed
164
+ * shells can reuse the execution-scoped renderer cache and resolve nested
165
+ * foreign ownership before the partial response is returned.
166
+ *
167
+ * @param input - View render options for the partial response.
168
+ * @returns HTML response for the partial render.
169
+ */
170
+ protected renderPartialViewResponse<P>(input: {
171
+ view: EcoComponent<P>;
172
+ props: P;
173
+ ctx: RenderToResponseContext;
174
+ renderInline?: () => Promise<BodyInit>;
175
+ transformHtml?: (html: string) => string;
176
+ }): Promise<Response>;
177
+ /**
178
+ * Renders an explicit view through optional layout and document shells.
179
+ *
180
+ * This helper is the shared explicit-route path for string-oriented and mixed
181
+ * integrations. It prepares view dependencies, resolves metadata, and composes
182
+ * view, layout, and html template boundaries with one execution-scoped renderer
183
+ * cache so repeated foreign shell delegation can reuse initialized renderers
184
+ * during the same render flow.
185
+ *
186
+ * @param input - View, props, and optional layout metadata for the render.
187
+ * @returns HTML response for the explicit view render.
188
+ */
189
+ protected renderViewWithDocumentShell<P>(input: {
190
+ view: EcoComponent<P>;
191
+ props: P;
192
+ ctx: RenderToResponseContext;
193
+ layout?: EcoComponent;
194
+ }): Promise<Response>;
195
+ /**
196
+ * Renders a route page through optional layout and document shells.
197
+ *
198
+ * Route rendering and explicit view rendering now share the same renderer-owned
199
+ * shell composition model. This helper composes page, layout, and html template
200
+ * renders while threading one execution-scoped renderer cache through every
201
+ * delegated foreign subtree so foreign shell ownership remains stable and renderer
202
+ * initialization is reused inside the current request.
203
+ *
204
+ * @param input - Page, layout, document, and metadata inputs for the route render.
205
+ * @returns Final serialized document HTML including the doctype prefix.
206
+ */
207
+ protected renderPageWithDocumentShell(input: {
208
+ page: {
209
+ component: EcoComponent;
210
+ props: Record<string, unknown>;
211
+ };
212
+ layout?: {
213
+ component: EcoComponent;
214
+ props?: Record<string, unknown>;
215
+ };
216
+ htmlTemplate: EcoComponent;
217
+ metadata: PageMetadataProps;
218
+ pageProps: Record<string, unknown>;
219
+ documentProps?: Record<string, unknown>;
220
+ transformDocumentHtml?: (html: string) => string;
221
+ }): Promise<string>;
222
+ private composeDocumentShell;
223
+ /**
224
+ * Renders one string-first component with serialized children and collects its assets.
225
+ *
226
+ * String-oriented integrations frequently share the same component contract:
227
+ * pass serialized children through props, coerce the render result to HTML, and
228
+ * attach any component-scoped dependencies. This helper centralizes that flow
229
+ * so integrations can opt into shared orchestration without repeating the same
230
+ * string-render boilerplate.
231
+ *
232
+ * @param input - Component render input.
233
+ * @param component - String-oriented component implementation to execute.
234
+ * @returns Structured component render result for orchestration paths.
235
+ */
236
+ protected renderStringComponentWithSerializedChildren(input: ComponentRenderInput, component: (props: Record<string, unknown>) => Promise<EcoPagesElement> | EcoPagesElement): Promise<ComponentRenderResult>;
237
+ protected getForeignSubtreeTokenPrefix(): string;
238
+ protected getForeignSubtreeResolutionContextKey(): string;
239
+ protected createQueuedForeignSubtreeExecutionRuntime<TContext extends QueuedForeignSubtreeResolutionContext>(options: {
240
+ renderInput: ComponentRenderInput;
241
+ rendererCache: Map<string, IntegrationRenderer<any>>;
242
+ runtimeContextKey?: string;
243
+ tokenPrefix?: string;
244
+ createRuntimeContext?: (integrationContext: BaseIntegrationContext & Record<string, unknown>, rendererCache: Map<string, unknown>) => TContext;
245
+ }): ForeignChildRuntime;
246
+ protected getQueuedForeignSubtreeResolutionContext<TContext extends QueuedForeignSubtreeResolutionContext>(input: ComponentRenderInput): TContext | undefined;
247
+ /**
248
+ * Renders a string-first component, then resolves any queued foreign
249
+ * boundaries before returning final component HTML.
250
+ */
251
+ protected renderStringComponentWithQueuedForeignSubtrees(input: ComponentRenderInput, component: (props: Record<string, unknown>) => Promise<EcoPagesElement> | EcoPagesElement): Promise<ComponentRenderResult>;
252
+ constructor({ appConfig, assetProcessingService, resolvedIntegrationDependencies, rendererModules, runtimeOrigin, }: {
86
253
  appConfig: EcoPagesAppConfig;
87
254
  assetProcessingService: AssetProcessingService;
88
255
  resolvedIntegrationDependencies?: ProcessedAsset[];
256
+ rendererModules?: unknown;
89
257
  runtimeOrigin: string;
90
258
  });
91
259
  /**
@@ -105,27 +273,9 @@ export declare abstract class IntegrationRenderer<C = EcoPagesElement> {
105
273
  * @returns The HTML template component.
106
274
  */
107
275
  protected getHtmlTemplate(): Promise<EcoComponent<HtmlTemplateProps>>;
108
- /**
109
- * Returns the static props for the page.
110
- * It calls the provided getStaticProps function with the given options.
111
- *
112
- * @param getStaticProps - The function to get static props.
113
- * @param options - The options to pass to the getStaticProps function.
114
- * @returns The static props and metadata.
115
- */
116
- protected getStaticProps(getStaticProps?: GetStaticProps<Record<string, unknown>>, options?: Pick<RouteRendererOptions, 'params'>): Promise<{
117
- props: Record<string, unknown>;
118
- metadata?: PageMetadataProps;
119
- }>;
120
- /**
121
- * Returns the metadata properties for the page.
122
- * It calls the provided getMetadata function with the given context.
123
- *
124
- * @param getMetadata - The function to get metadata.
125
- * @param context - The context to pass to the getMetadata function.
126
- * @returns The metadata properties.
127
- */
128
- protected getMetadataProps(getMetadata: GetMetadata | undefined, { props, params, query }: GetMetadataContext): Promise<PageMetadataProps>;
276
+ protected usesIntegrationPageImporter(_file: string): boolean;
277
+ protected importIntegrationPageFile(_file: string, _options?: RouteModuleLoadOptions): Promise<EcoPageFile>;
278
+ protected normalizeImportedPageFile<TPageModule extends EcoPageFile>(_file: string, pageModule: TPageModule): TPageModule;
129
279
  /**
130
280
  * Imports the page file from the specified path.
131
281
  * It uses dynamic import to load the file and returns the imported module.
@@ -133,7 +283,7 @@ export declare abstract class IntegrationRenderer<C = EcoPagesElement> {
133
283
  * @param file - The file path to import.
134
284
  * @returns The imported module.
135
285
  */
136
- protected importPageFile(file: string): Promise<EcoPageFile>;
286
+ protected importPageFile(file: string, options?: RouteModuleLoadOptions): Promise<EcoPageFile>;
137
287
  /**
138
288
  * Resolves the dependency path based on the component directory.
139
289
  * It combines the component directory with the provided path URL.
@@ -178,6 +328,30 @@ export declare abstract class IntegrationRenderer<C = EcoPagesElement> {
178
328
  * @param components - The components to collect dependencies from.
179
329
  */
180
330
  protected processComponentDependencies(components: (EcoComponent | Partial<EcoComponent>)[]): Promise<ProcessedAsset[]>;
331
+ /**
332
+ * Builds the internal route-render adapter consumed by `RouteRenderOrchestrator`.
333
+ *
334
+ * The route orchestrator needs a narrow orchestration contract, but those hooks should
335
+ * not become public API on the renderer base class. Keeping the adapter object
336
+ * local to the execution path lets the orchestrator depend on one explicit seam while
337
+ * subclasses continue to override protected renderer behavior directly.
338
+ */
339
+ protected createRouteRenderOrchestratorAdapter(): RouteRenderOrchestratorAdapter<C>;
340
+ protected resolveRouteRenderInputs(routeOptions: RouteRendererOptions): Promise<RouteRenderOrchestratorResolvedInputs>;
341
+ protected resolveRouteDependencies(input: {
342
+ components: (EcoComponent | Partial<EcoComponent>)[];
343
+ }): Promise<{
344
+ resolvedDependencies: ProcessedAsset[];
345
+ }>;
346
+ protected resolveRoutePageComponentRender(input: {
347
+ Page: EcoComponent;
348
+ Layout?: EcoComponent;
349
+ props: Record<string, unknown>;
350
+ routeOptions: RouteRendererOptions;
351
+ }): Promise<ComponentRenderResult | undefined>;
352
+ protected renderRouteBody(renderOptions: IntegrationRendererRenderOptions<C>): Promise<RouteRendererBody>;
353
+ protected getRouteHtmlFinalization(renderOptions: IntegrationRendererRenderOptions<C>): RouteHtmlFinalization;
354
+ protected transformRouteResponse(response: Response, htmlContributions?: HtmlDocumentContribution[]): Promise<RouteRendererBody>;
181
355
  /**
182
356
  * Prepares the render options for the integration renderer.
183
357
  * It imports the page file, collects dependencies, and prepares the render options.
@@ -185,7 +359,7 @@ export declare abstract class IntegrationRenderer<C = EcoPagesElement> {
185
359
  * @param options - The route renderer options.
186
360
  * @returns The prepared render options.
187
361
  */
188
- protected prepareRenderOptions(options: RouteRendererOptions): Promise<IntegrationRendererRenderOptions>;
362
+ protected prepareRenderOptions(options: RouteRendererOptions, adapter?: RouteRenderOrchestratorAdapter<C>): Promise<IntegrationRendererRenderOptions<C>>;
189
363
  /**
190
364
  * Controls whether the page root should be rendered through `renderComponent()`
191
365
  * during route option preparation in component-capable modes.
@@ -199,35 +373,15 @@ export declare abstract class IntegrationRenderer<C = EcoPagesElement> {
199
373
  Layout?: EcoComponent;
200
374
  options: RouteRendererOptions;
201
375
  }): boolean;
202
- /**
203
- * Resolves the page module and normalizes exports.
204
- */
205
- protected resolvePageModule(file: string): Promise<{
206
- Page: EcoPageFile['default'] | EcoPageComponent<any>;
207
- getStaticProps?: GetStaticProps<Record<string, unknown>>;
208
- getMetadata?: GetMetadata;
209
- integrationSpecificProps: Record<string, unknown>;
210
- }>;
211
- /**
212
- * Resolves static props and metadata for the page.
213
- */
214
- protected resolvePageData(pageModule: {
215
- getStaticProps?: GetStaticProps<Record<string, unknown>>;
216
- getMetadata?: GetMetadata;
217
- }, options: RouteRendererOptions): Promise<{
218
- props: Record<string, unknown>;
219
- metadata: PageMetadataProps;
220
- }>;
221
376
  /**
222
377
  * Executes the integration renderer with the provided options.
223
378
  *
224
379
  * Execution flow:
225
380
  * 1. Build normalized render options (`prepareRenderOptions`).
226
- * 2. Render once inside component render context to capture marker graph refs.
227
- * 3. Merge captured refs with optional explicit page-module graph context.
228
- * 4. Resolve any `eco-marker` graph bottom-up and merge produced assets.
229
- * 5. Optionally apply root attributes for page/component root boundaries.
230
- * 6. Run HTML transformer with final dependency set.
381
+ * 2. Render the route body once.
382
+ * 3. Reject unresolved route-level eco-marker artifacts.
383
+ * 4. Optionally apply root attributes for page/component root boundaries.
384
+ * 5. Run HTML transformer with final dependency set.
231
385
  *
232
386
  * Stream-safety note: the first render result is normalized to a string once,
233
387
  * then the pipeline continues with that immutable HTML value to avoid disturbed
@@ -238,23 +392,20 @@ export declare abstract class IntegrationRenderer<C = EcoPagesElement> {
238
392
  */
239
393
  execute(options: RouteRendererOptions): Promise<RouteRenderResult>;
240
394
  /**
241
- * Captures a render pass as immutable HTML along with the graph context needed
242
- * for deferred marker resolution.
395
+ * Finalizes already-resolved HTML for explicit renderer-owned paths.
243
396
  *
244
- * This is the shared entry point for direct `renderToResponse()` flows that
245
- * need the same component graph capture semantics as route execution without
246
- * going through `prepareRenderOptions()`.
397
+ * This keeps document and root-attribute stamping plus HTML transformation
398
+ * available after a renderer has completed nested foreign-subtree resolution without
399
+ * routing back through shared route execution.
247
400
  */
248
- protected captureHtmlRender(render: () => Promise<RouteRendererBody>): Promise<{
401
+ protected finalizeResolvedHtml(options: {
249
402
  html: string;
250
- graphContext: RenderExecutionGraphContext;
251
- }>;
252
- /**
253
- * Finalizes previously captured HTML by resolving deferred markers, merging
254
- * any emitted assets, stamping optional attributes, and optionally running the
255
- * HTML transformer for full-document flows.
256
- */
257
- protected finalizeCapturedHtmlRender(options: FinalizeCapturedHtmlRenderOptions): Promise<string>;
403
+ partial?: boolean;
404
+ componentRootAttributes?: Record<string, string>;
405
+ documentAttributes?: Record<string, string>;
406
+ transformHtml?: boolean;
407
+ htmlContributions?: HtmlDocumentContribution[];
408
+ }): Promise<string>;
258
409
  /**
259
410
  * Returns document-level attributes to stamp onto the rendered `<html>` tag.
260
411
  *
@@ -263,29 +414,15 @@ export declare abstract class IntegrationRenderer<C = EcoPagesElement> {
263
414
  */
264
415
  protected getDocumentAttributes(_renderOptions: IntegrationRendererRenderOptions<C>): Record<string, string> | undefined;
265
416
  /**
266
- * Resolves all `eco-marker` placeholders in rendered HTML using integration
267
- * dispatch and bottom-up graph execution.
268
- *
269
- * Responsibility split:
270
- * - core decodes markers into component refs, props, slot children, and target
271
- * integration dispatch
272
- * - the selected integration renderer performs the actual component render via
273
- * `renderComponent()`
274
- *
275
- * Resolver callback behavior per marker:
276
- * - resolve component definition by `componentRef`
277
- * - resolve serialized props by `propsRef`
278
- * - stitch resolved child HTML when `slotRef` is present
279
- * - dispatch to target integration `renderComponent`
280
- * - collect produced assets and apply root attributes when attachable
417
+ * Returns declarative HTML fragments that core should inject into the final document.
281
418
  *
282
- * @param options.html HTML that may still contain marker tokens.
283
- * @param options.componentsToResolve Component set used to build component ref registry.
284
- * @param options.graphContext Props/slot linkage captured during render.
285
- * @returns Resolved HTML plus any component-scoped assets produced while resolving nodes.
286
- * @throws Error when marker component refs or props refs cannot be resolved.
419
+ * @remarks
420
+ * Integrations may contribute document markup here, but core retains ownership
421
+ * of the final HTML rewrite pipeline and placement semantics. This is the
422
+ * supported document-markup extension point for integrations instead of custom
423
+ * response finalization logic.
287
424
  */
288
- private resolveMarkerGraphHtml;
425
+ protected getHtmlDocumentContributions(_options: HtmlDocumentContributionContext<C>): HtmlDocumentContribution[] | undefined;
289
426
  /**
290
427
  * Returns a renderer instance for a given integration name.
291
428
  *
@@ -296,7 +433,7 @@ export declare abstract class IntegrationRenderer<C = EcoPagesElement> {
296
433
  * @returns Renderer for the requested integration.
297
434
  * @throws Error when no integration plugin matches `integrationName`.
298
435
  */
299
- private getIntegrationRendererForName;
436
+ protected getIntegrationRendererForName(integrationName: string, cache: Map<string, ForeignSubtreeExecutionOwningRenderer>): ForeignSubtreeExecutionOwningRenderer;
300
437
  /**
301
438
  * Abstract method to render the integration-specific component.
302
439
  * This method should be implemented by the specific integration renderer.
@@ -305,6 +442,31 @@ export declare abstract class IntegrationRenderer<C = EcoPagesElement> {
305
442
  * @returns The rendered body.
306
443
  */
307
444
  abstract render(options: IntegrationRendererRenderOptions<C>): Promise<RouteRendererBody>;
445
+ /**
446
+ * Renders one component under this integration's foreign-child runtime and resolves
447
+ * any nested foreign children captured during that render.
448
+ *
449
+ * Without this wrapper, a component tree with foreign-owned descendants would
450
+ * render them with no active foreign-child runtime, which bypasses the owning
451
+ * renderer's nested foreign-child handoff.
452
+ */
453
+ renderComponentWithForeignChildren(input: ComponentRenderInput): Promise<ComponentRenderResult>;
454
+ /**
455
+ * Compatibility foreign-subtree contract that exposes a narrower payload shape for
456
+ * future route-composition work while preserving the current
457
+ * `renderComponentWithForeignChildren()` runtime semantics.
458
+ */
459
+ renderForeignSubtree(input: ComponentRenderInput): Promise<ForeignSubtreeRenderPayload>;
460
+ private normalizeComponentRenderOutput;
461
+ protected normalizeUnresolvedMarkerArtifactHtml(html: string): string;
462
+ /**
463
+ * Returns whether the component dependency tree crosses into another
464
+ * integration.
465
+ *
466
+ * This keeps foreign-child runtime setup narrow: same-integration trees can render
467
+ * directly without paying the queue orchestration cost.
468
+ */
469
+ protected hasForeignChildDescendants(component: EcoComponent): boolean;
308
470
  /**
309
471
  * Render a view directly to a Response object.
310
472
  * Used for explicit routing where views are rendered from route handlers.
@@ -321,15 +483,15 @@ export declare abstract class IntegrationRenderer<C = EcoPagesElement> {
321
483
  * Default behavior delegates to `renderToResponse` in partial mode and wraps
322
484
  * the resulting HTML into the `ComponentRenderResult` contract.
323
485
  *
324
- * In marker resolution, this method is the integration-owned step that turns an
325
- * already-resolved deferred boundary into concrete HTML, assets, and optional
486
+ * In foreign-subtree resolution, this method is the integration-owned step that turns an
487
+ * already-resolved deferred foreign subtree into concrete HTML, assets, and optional
326
488
  * root attributes.
327
489
  *
328
490
  * Integrations can override this for richer behavior (asset emission,
329
491
  * root attributes, integration-specific hydration metadata).
330
492
  *
331
493
  * @param input Component render request.
332
- * @returns Structured render result used by marker/page orchestration.
494
+ * @returns Structured render result used by component/page orchestration.
333
495
  */
334
496
  renderComponent(input: ComponentRenderInput): Promise<ComponentRenderResult>;
335
497
  /**
@@ -340,33 +502,33 @@ export declare abstract class IntegrationRenderer<C = EcoPagesElement> {
340
502
  */
341
503
  protected getRootTagName(html: string): string | undefined;
342
504
  /**
343
- * Method to build route render assets.
344
- * This method can be optionally overridden by the specific integration renderer.
505
+ * Collects declarative Page Browser Graph contributions for one Page.
506
+ *
507
+ * @remarks
508
+ * Integrations may describe page-scoped browser requirements here, while core
509
+ * retains ownership of dependency processing and final graph assembly. This is
510
+ * the supported page-browser extension point for integrations.
345
511
  *
346
- * @param file - The file path to build assets for.
347
- * @returns The processed assets or undefined.
512
+ * @param context - The route file path and already imported page module.
513
+ * @returns Declarative dependencies or pre-resolved assets for the Page.
348
514
  */
349
- protected buildRouteRenderAssets(_file: string): Promise<ProcessedAsset[]> | undefined;
515
+ protected collectPageBrowserGraphContribution(_context: PageBrowserGraphContributionContext): Promise<PageBrowserGraphContribution | undefined>;
350
516
  /**
351
- * Builds the narrow boundary policy facade injected into component render
352
- * context for this render pass.
353
- *
354
- * `eco.component()` consumes this facade without knowing about integration
355
- * registries or plugin instances.
517
+ * Creates the per-render foreign-child runtime adopted by the shared component
518
+ * render context.
356
519
  *
357
- * @returns Boundary policy context for the active integration renderer.
520
+ * The default runtime queues delegated foreign subtrees inside the owning
521
+ * renderer so string and markup renderers do not need to re-declare the same
522
+ * handoff boilerplate. Override only when a renderer needs custom runtime
523
+ * context or a different foreign-child execution strategy.
358
524
  */
359
- protected getComponentRenderBoundaryContext(): ComponentRenderBoundaryContext;
525
+ protected createForeignChildRuntime(options: {
526
+ renderInput: ComponentRenderInput;
527
+ rendererCache: Map<string, IntegrationRenderer<any>>;
528
+ }): ForeignChildRuntime;
360
529
  /**
361
- * Resolves whether a component boundary should be deferred by consulting the
362
- * target integration plugin.
363
- *
364
- * Boundaries targeting the current integration always render inline. Cross-
365
- * integration boundaries delegate the decision to the target integration's
366
- * `shouldDeferComponentBoundary()` policy.
367
- *
368
- * @param input Boundary metadata for the active render pass.
369
- * @returns `true` when the boundary should emit a marker; otherwise `false`.
530
+ * Creates an explicit fail-fast runtime for tests or renderers that do not
531
+ * support cross-integration foreign-child execution.
370
532
  */
371
- protected shouldDeferComponentBoundary(input: BoundaryRenderDecisionInput): boolean;
533
+ protected createFailFastForeignChildRuntime(): ForeignChildRuntime;
372
534
  }