@ecopages/core 0.2.0-alpha.8 → 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
@@ -1,9 +1,8 @@
1
1
  import path from "node:path";
2
- import { DEFAULT_ECOPAGES_WORK_DIR } from "../constants.js";
3
2
  import { appLogger } from "../global/app-logger.js";
4
3
  import { fileSystem } from "@ecopages/file-system";
5
4
  import { PathUtils } from "../utils/path-utils.module.js";
6
- import { getAppServerModuleTranspiler } from "../services/module-loading/app-server-module-transpiler.service.js";
5
+ import { prepareExplicitStaticRender } from "../adapters/shared/explicit-static-render-preparation.js";
7
6
  const STATIC_SITE_GENERATOR_ERRORS = {
8
7
  ROUTE_RENDERER_FACTORY_REQUIRED: "RouteRendererFactory is required for render strategy",
9
8
  unsupportedBodyType: (bodyType) => `Unsupported body type for static generation: ${bodyType}`,
@@ -13,20 +12,11 @@ const STATIC_SITE_GENERATOR_ERRORS = {
13
12
  };
14
13
  class StaticSiteGenerator {
15
14
  appConfig;
16
- serverModuleTranspiler;
17
15
  /**
18
16
  * Creates the static-site generator for one app config.
19
17
  */
20
18
  constructor({ appConfig }) {
21
19
  this.appConfig = appConfig;
22
- this.serverModuleTranspiler = getAppServerModuleTranspiler(appConfig);
23
- }
24
- /**
25
- * Returns the transpiler output directory used for static page-module probes.
26
- */
27
- getStaticPageModuleOutdir() {
28
- const workDir = this.appConfig.absolutePaths?.workDir ?? path.join(this.appConfig.rootDir, this.appConfig.workDir ?? DEFAULT_ECOPAGES_WORK_DIR);
29
- return path.join(workDir, ".server-static-page-modules");
30
20
  }
31
21
  getExportDir() {
32
22
  return this.appConfig.absolutePaths?.distDir ?? path.join(this.appConfig.rootDir, this.appConfig.distDir);
@@ -44,13 +34,9 @@ class StaticSiteGenerator {
44
34
  * Determines whether one filesystem-discovered page should be excluded from
45
35
  * static generation.
46
36
  */
47
- async shouldSkipStaticPageFile(filePath) {
48
- const module = await this.serverModuleTranspiler.importModule({
49
- filePath,
50
- outdir: this.getStaticPageModuleOutdir(),
51
- externalPackages: false,
52
- transpileErrorMessage: (details) => `Error transpiling static page module: ${details}`,
53
- noOutputMessage: (targetFilePath) => `No transpiled output generated for static page module: ${targetFilePath}`
37
+ async shouldSkipStaticPageFile(filePath, routeRendererFactory) {
38
+ const module = await routeRendererFactory.getPageRenderer(filePath).loadPageModule(filePath, {
39
+ cacheScope: "static-page-probe"
54
40
  });
55
41
  if (module.default?.cache !== "dynamic") {
56
42
  return false;
@@ -108,25 +94,50 @@ class StaticSiteGenerator {
108
94
  }
109
95
  return Array.from(directories);
110
96
  }
111
- /**
112
- * Extracts dynamic parameters from the actual path based on the template path.
113
- *
114
- * @param templatePath - The template path (e.g., "/blog/[slug]")
115
- * @param actualPath - The actual path (e.g., "/blog/my-post")
116
- * @returns A record of extracted parameters (e.g., { slug: "my-post" })
117
- */
118
- extractParams(templatePath, actualPath) {
119
- const templateSegments = templateSegmentsFromPath(templatePath);
120
- const actualSegments = templateSegmentsFromPath(actualPath);
121
- const params = {};
122
- for (let i = 0; i < templateSegments.length; i++) {
123
- const segment = templateSegments[i];
124
- if (segment.startsWith("[") && segment.endsWith("]")) {
125
- const paramName = segment.slice(1, -1).replace("...", "");
126
- params[paramName] = actualSegments[i];
97
+ writeStaticOutput(routePath, contents, directories = []) {
98
+ const outputPath = this.getOutputPath(routePath, directories);
99
+ fileSystem.ensureDir(path.dirname(outputPath));
100
+ fileSystem.write(outputPath, contents);
101
+ return outputPath;
102
+ }
103
+ getStaticBuildStrategy(filePath) {
104
+ const ext = PathUtils.getEcoTemplateExtension(filePath);
105
+ const integration = this.appConfig.integrations.find((plugin) => plugin.extensions.includes(ext));
106
+ return integration?.staticBuildStep || "render";
107
+ }
108
+ async createFilesystemStaticContents(route, baseUrl, routeRendererFactory) {
109
+ const {
110
+ templateRoute: { filePath },
111
+ params
112
+ } = route;
113
+ if (this.getStaticBuildStrategy(filePath) === "fetch") {
114
+ const fetchUrl = this.resolveStaticFetchUrl(route.requestUrl, baseUrl);
115
+ const response = await fetch(fetchUrl);
116
+ if (!response.ok) {
117
+ appLogger.error(`Failed to fetch ${fetchUrl}. Status: ${response.status}`);
118
+ return null;
127
119
  }
120
+ return response.text();
121
+ }
122
+ if (!routeRendererFactory) {
123
+ throw new Error(STATIC_SITE_GENERATOR_ERRORS.ROUTE_RENDERER_FACTORY_REQUIRED);
128
124
  }
129
- return params;
125
+ if (await this.shouldSkipStaticPageFile(filePath, routeRendererFactory)) {
126
+ return null;
127
+ }
128
+ const renderer = routeRendererFactory.getPageRenderer(filePath);
129
+ const result = await renderer.execute({
130
+ file: filePath,
131
+ params
132
+ });
133
+ const body = result.body;
134
+ if (typeof body === "string" || Buffer.isBuffer(body)) {
135
+ return body;
136
+ }
137
+ if (body instanceof ReadableStream) {
138
+ return new Response(body).text();
139
+ }
140
+ throw new Error(STATIC_SITE_GENERATOR_ERRORS.unsupportedBodyType(typeof body));
130
141
  }
131
142
  /**
132
143
  * Generates static output for all filesystem-discovered routes.
@@ -137,81 +148,38 @@ class StaticSiteGenerator {
137
148
  * go through the normal route renderer directly.
138
149
  */
139
150
  async generateStaticPages(router, baseUrl, routeRendererFactory) {
140
- const routes = Object.keys(router.routes).filter((route) => !route.includes("["));
141
- appLogger.debug("Static Pages", routes);
142
- const directories = this.getDirectories(routes);
143
- for (const directory of directories) {
144
- fileSystem.ensureDir(path.join(this.getExportDir(), directory));
145
- }
151
+ const routes = await router.listStaticGenerationRoutes({ runtimeOrigin: baseUrl });
152
+ appLogger.debug(
153
+ "Static Pages",
154
+ routes.map((route) => route.requestUrl)
155
+ );
156
+ const directories = this.getDirectories(routes.map((route) => route.requestUrl));
146
157
  for (const route of routes) {
147
158
  try {
148
- const { filePath, pathname: routePathname } = router.routes[route];
149
- if (await this.shouldSkipStaticPageFile(filePath)) {
159
+ const contents = await this.createFilesystemStaticContents(route, baseUrl, routeRendererFactory);
160
+ if (contents === null) {
150
161
  continue;
151
162
  }
152
- const ext = PathUtils.getEcoTemplateExtension(filePath);
153
- const integration = this.appConfig.integrations.find((plugin) => plugin.extensions.includes(ext));
154
- const strategy = integration?.staticBuildStep || "render";
155
- let contents;
156
- if (strategy === "fetch") {
157
- const fetchUrl = route.startsWith("http") ? route : `${baseUrl}${route}`;
158
- const response = await fetch(fetchUrl);
159
- if (!response.ok) {
160
- appLogger.error(`Failed to fetch ${fetchUrl}. Status: ${response.status}`);
161
- continue;
162
- }
163
- contents = await response.text();
164
- } else {
165
- if (!routeRendererFactory) {
166
- throw new Error(STATIC_SITE_GENERATOR_ERRORS.ROUTE_RENDERER_FACTORY_REQUIRED);
167
- }
168
- let pathname2 = routePathname;
169
- const pathnameSegments2 = pathname2.split("/").filter(Boolean);
170
- if (pathname2 === "/") {
171
- pathname2 = "/index.html";
172
- } else if (pathnameSegments2.join("/").includes("[")) {
173
- pathname2 = `${route.replace(router.origin, "")}.html`;
174
- } else if (pathnameSegments2.length >= 1 && directories.includes(`/${pathnameSegments2.join("/")}`)) {
175
- pathname2 = `${pathname2.endsWith("/") ? pathname2 : `${pathname2}/`}index.html`;
176
- } else {
177
- pathname2 += ".html";
178
- }
179
- const renderer = routeRendererFactory.createRenderer(filePath);
180
- const params = this.extractParams(routePathname, pathname2.replace(".html", ""));
181
- const result = await renderer.createRoute({
182
- file: filePath,
183
- params
184
- });
185
- const body = result.body;
186
- if (typeof body === "string" || Buffer.isBuffer(body)) {
187
- contents = body;
188
- } else if (body instanceof ReadableStream) {
189
- contents = await new Response(body).text();
190
- } else {
191
- throw new Error(STATIC_SITE_GENERATOR_ERRORS.unsupportedBodyType(typeof body));
192
- }
193
- }
194
- let pathname = routePathname;
195
- const pathnameSegments = pathname.split("/").filter(Boolean);
196
- if (pathname === "/") {
197
- pathname = "/index.html";
198
- } else if (pathnameSegments.join("/").includes("[")) {
199
- pathname = `${route.replace(router.origin, "")}.html`;
200
- } else if (pathnameSegments.length >= 1 && directories.includes(`/${pathnameSegments.join("/")}`)) {
201
- pathname = `${pathname.endsWith("/") ? pathname : `${pathname}/`}index.html`;
202
- } else {
203
- pathname += ".html";
204
- }
205
- const outputPath = path.join(this.getExportDir(), pathname);
206
- fileSystem.write(outputPath, contents);
163
+ this.writeStaticOutput(route.pathname, contents, directories);
207
164
  } catch (error) {
208
165
  appLogger.error(
209
- `Error generating static page for ${route}:`,
166
+ `Error generating static page for ${route.requestUrl}:`,
210
167
  error instanceof Error ? error : String(error)
211
168
  );
212
169
  }
213
170
  }
214
171
  }
172
+ resolveStaticFetchUrl(route, baseUrl) {
173
+ if (!route.startsWith("http://") && !route.startsWith("https://")) {
174
+ return `${baseUrl}${route}`;
175
+ }
176
+ const targetUrl = new URL(route);
177
+ const buildUrl = new URL(baseUrl);
178
+ buildUrl.pathname = targetUrl.pathname;
179
+ buildUrl.search = targetUrl.search;
180
+ buildUrl.hash = targetUrl.hash;
181
+ return buildUrl.href;
182
+ }
215
183
  /**
216
184
  * Executes the full static-generation workflow for one app run.
217
185
  */
@@ -243,12 +211,7 @@ class StaticSiteGenerator {
243
211
  if (this.shouldSkipStaticView(route.path, view)) {
244
212
  continue;
245
213
  }
246
- const isDynamic = route.path.includes(":") || route.path.includes("[");
247
- if (isDynamic) {
248
- await this.generateDynamicStaticRoute(route.path, view, routeRendererFactory);
249
- } else {
250
- await this.generateSingleStaticRoute(route.path, view, routeRendererFactory);
251
- }
214
+ await this.generateExplicitStaticRoute(route.path, view, routeRendererFactory);
252
215
  } catch (error) {
253
216
  appLogger.error(
254
217
  `Error generating explicit static page for ${route.path}:`,
@@ -257,63 +220,64 @@ class StaticSiteGenerator {
257
220
  }
258
221
  }
259
222
  }
260
- /**
261
- * Generate a single static page for a non-dynamic route.
262
- */
263
- async generateSingleStaticRoute(routePath, view, routeRendererFactory) {
264
- const integrationName = view.config?.__eco?.integration;
265
- if (!integrationName) {
266
- throw new Error(STATIC_SITE_GENERATOR_ERRORS.missingIntegration(routePath));
267
- }
268
- const renderer = routeRendererFactory.getRendererByIntegration(integrationName);
269
- if (!renderer) {
270
- throw new Error(STATIC_SITE_GENERATOR_ERRORS.noRendererForIntegration(integrationName));
223
+ async generateExplicitStaticRoute(routePath, view, routeRendererFactory) {
224
+ const { renderer, routeEntries } = await this.planExplicitStaticRoute(routePath, view, routeRendererFactory);
225
+ for (const { pathname, params } of routeEntries) {
226
+ const contents = await this.createExplicitStaticContents(
227
+ routePath,
228
+ view,
229
+ params,
230
+ routeRendererFactory,
231
+ renderer
232
+ );
233
+ const outputPath = this.writeStaticOutput(pathname, contents);
234
+ appLogger.debug(`Generated static page: ${pathname} -> ${outputPath}`);
271
235
  }
272
- const props = view.staticProps ? (await view.staticProps({
273
- pathname: { params: {} },
236
+ }
237
+ async planExplicitStaticRoute(routePath, view, routeRendererFactory) {
238
+ const { renderer } = await prepareExplicitStaticRender({
239
+ routePath,
240
+ view,
241
+ params: {},
274
242
  appConfig: this.appConfig,
275
- runtimeOrigin: this.appConfig.baseUrl
276
- })).props : {};
277
- const response = await renderer.renderToResponse(view, props, {});
278
- const contents = await response.text();
279
- const outputPath = this.getOutputPath(routePath);
280
- fileSystem.ensureDir(path.dirname(outputPath));
281
- fileSystem.write(outputPath, contents);
282
- appLogger.debug(`Generated static page: ${routePath} -> ${outputPath}`);
243
+ runtimeOrigin: this.appConfig.baseUrl,
244
+ routeRendererFactory,
245
+ errors: STATIC_SITE_GENERATOR_ERRORS
246
+ });
247
+ return {
248
+ renderer,
249
+ routeEntries: await this.listExplicitStaticRouteEntries(routePath, view)
250
+ };
283
251
  }
284
- /**
285
- * Generate static pages for a dynamic route using staticPaths.
286
- */
287
- async generateDynamicStaticRoute(routePath, view, routeRendererFactory) {
252
+ async createExplicitStaticContents(routePath, view, params, routeRendererFactory, renderer) {
253
+ const { props, view: renderableView } = await prepareExplicitStaticRender({
254
+ routePath,
255
+ view,
256
+ params,
257
+ appConfig: this.appConfig,
258
+ runtimeOrigin: this.appConfig.baseUrl,
259
+ routeRendererFactory,
260
+ errors: STATIC_SITE_GENERATOR_ERRORS
261
+ });
262
+ const response = await renderer.renderToResponse(renderableView, props, {});
263
+ return response.text();
264
+ }
265
+ async listExplicitStaticRouteEntries(routePath, view) {
266
+ const isDynamic = routePath.includes(":") || routePath.includes("[");
267
+ if (!isDynamic) {
268
+ return [{ pathname: routePath, params: {} }];
269
+ }
288
270
  if (!view.staticPaths) {
289
271
  throw new Error(STATIC_SITE_GENERATOR_ERRORS.dynamicRouteRequiresStaticPaths(routePath));
290
272
  }
291
- const integrationName = view.config?.__eco?.integration;
292
- if (!integrationName) {
293
- throw new Error(STATIC_SITE_GENERATOR_ERRORS.missingIntegration(routePath));
294
- }
295
- const renderer = routeRendererFactory.getRendererByIntegration(integrationName);
296
- if (!renderer) {
297
- throw new Error(STATIC_SITE_GENERATOR_ERRORS.noRendererForIntegration(integrationName));
298
- }
299
273
  const { paths } = await view.staticPaths({
300
274
  appConfig: this.appConfig,
301
275
  runtimeOrigin: this.appConfig.baseUrl
302
276
  });
303
- for (const { params } of paths) {
304
- const resolvedPath = this.resolveRoutePath(routePath, params);
305
- const props = view.staticProps ? (await view.staticProps({
306
- pathname: { params },
307
- appConfig: this.appConfig,
308
- runtimeOrigin: this.appConfig.baseUrl
309
- })).props : {};
310
- const response = await renderer.renderToResponse(view, props, {});
311
- const contents = await response.text();
312
- const outputPath = this.getOutputPath(resolvedPath);
313
- fileSystem.ensureDir(path.dirname(outputPath));
314
- fileSystem.write(outputPath, contents);
315
- appLogger.debug(`Generated static page: ${resolvedPath} -> ${outputPath}`);
316
- }
277
+ return paths.map(({ params }) => ({
278
+ pathname: this.resolveRoutePath(routePath, params),
279
+ params
280
+ }));
317
281
  }
318
282
  /**
319
283
  * Resolve a route path template with actual params.
@@ -332,10 +296,12 @@ class StaticSiteGenerator {
332
296
  /**
333
297
  * Get the output file path for a given route.
334
298
  */
335
- getOutputPath(routePath) {
299
+ getOutputPath(routePath, directories = []) {
336
300
  let outputName;
337
301
  if (routePath === "/") {
338
302
  outputName = "index.html";
303
+ } else if (directories.includes(routePath)) {
304
+ outputName = `${routePath}/index.html`;
339
305
  } else if (routePath.endsWith("/")) {
340
306
  outputName = `${routePath}index.html`;
341
307
  } else {
@@ -344,9 +310,6 @@ class StaticSiteGenerator {
344
310
  return path.join(this.getExportDir(), outputName);
345
311
  }
346
312
  }
347
- function templateSegmentsFromPath(path2) {
348
- return path2.split("/").filter(Boolean);
349
- }
350
313
  export {
351
314
  STATIC_SITE_GENERATOR_ERRORS,
352
315
  StaticSiteGenerator
@@ -1,17 +1,18 @@
1
- import type { EcoBuildPlugin } from './build/build-types.js';
2
- import type { AppBuildManifest } from './build/build-manifest.js';
3
- import type { BuildAdapter, BuildExecutor } from './build/build-adapter.js';
4
- import type { IntegrationPlugin } from './plugins/integration-plugin.js';
5
- import type { Processor } from './plugins/processor.js';
1
+ import type { EcoBuildPlugin } from '../build/build-types.js';
2
+ import type { AppBuildManifest } from '../build/build-manifest.js';
3
+ import type { BuildAdapter, BuildExecutor, BuildOwnership } from '../build/build-adapter.js';
4
+ import type { AnyIntegrationPlugin } from '../plugins/integration-plugin.js';
5
+ import type { Processor } from '../plugins/processor.js';
6
+ import type { EcoSourceTransform } from '../plugins/source-transform.js';
6
7
  import type { PageMetadataProps } from './public-types.js';
7
- import type { FSRouter } from './router/server/fs-router.js';
8
- import type { CacheConfig } from './services/cache/cache.types.js';
9
- import type { DevGraphService } from './services/runtime-state/dev-graph.service.js';
10
- import type { EntrypointDependencyGraph } from './services/runtime-state/entrypoint-dependency-graph.service.js';
11
- import type { NodeRuntimeManifest } from './services/runtime-manifest/node-runtime-manifest.service.js';
12
- import type { RuntimeSpecifierRegistry } from './services/runtime-state/runtime-specifier-registry.service.js';
13
- import type { ServerInvalidationState } from './services/runtime-state/server-invalidation-state.service.js';
14
- import type { ServerModuleTranspiler } from './services/module-loading/server-module-transpiler.service.js';
8
+ import type { RouteRegistry } from '../router/server/route-registry.js';
9
+ import type { CacheConfig } from '../services/cache/cache.types.js';
10
+ import type { DevGraphService } from '../services/runtime-state/dev-graph.service.js';
11
+ import type { AppModuleLoader } from '../services/module-loading/app-module-loader.service.js';
12
+ import type { SourceModuleLoader } from '../services/module-loading/module-loading-types.js';
13
+ import type { EntrypointDependencyGraph } from '../services/runtime-state/entrypoint-dependency-graph.service.js';
14
+ import type { ServerInvalidationState } from '../services/runtime-state/server-invalidation-state.service.js';
15
+ import type { ServerModuleTranspiler } from '../services/module-loading/server-module-transpiler.service.js';
15
16
  export interface RobotsPreference {
16
17
  /**
17
18
  * The user agent
@@ -100,7 +101,7 @@ export type EcoPagesAppConfig = {
100
101
  */
101
102
  defaultMetadata: PageMetadataProps;
102
103
  /** Integrations plugins */
103
- integrations: IntegrationPlugin[];
104
+ integrations: AnyIntegrationPlugin[];
104
105
  /** Integrations dependencies */
105
106
  integrationsDependencies: IntegrationDependencyConfig[];
106
107
  /** Derived Paths */
@@ -126,6 +127,11 @@ export type EcoPagesAppConfig = {
126
127
  * Loaders to be used in the app, these are used to process the files when importing them
127
128
  */
128
129
  loaders: Map<string, EcoBuildPlugin>;
130
+ /**
131
+ * App-owned source transforms that can be adapted into Vite or other
132
+ * transform-first bundlers.
133
+ */
134
+ sourceTransforms: Map<string, EcoSourceTransform>;
129
135
  /**
130
136
  * Cache configuration for ISR and page caching.
131
137
  * @default { store: 'memory', defaultStrategy: 'static', enabled: true }
@@ -139,13 +145,15 @@ export type EcoPagesAppConfig = {
139
145
  * process-global registries.
140
146
  */
141
147
  runtime?: {
148
+ appModuleLoader?: AppModuleLoader;
149
+ buildOwnership?: BuildOwnership;
142
150
  buildAdapter?: BuildAdapter;
143
151
  buildManifest?: AppBuildManifest;
144
152
  buildExecutor?: BuildExecutor;
145
153
  devGraphService?: DevGraphService;
146
154
  entrypointDependencyGraph?: EntrypointDependencyGraph;
147
- nodeRuntimeManifest?: NodeRuntimeManifest;
148
- runtimeSpecifierRegistry?: RuntimeSpecifierRegistry;
155
+ hostModuleLoader?: SourceModuleLoader;
156
+ rendererModuleContext?: unknown;
149
157
  serverInvalidationState?: ServerInvalidationState;
150
158
  serverModuleTranspiler?: ServerModuleTranspiler;
151
159
  };
@@ -174,11 +182,14 @@ export type RouteKind = 'exact' | 'catch-all' | 'dynamic';
174
182
  * Represents the result of a route match.
175
183
  */
176
184
  export type MatchResult = {
177
- filePath: string;
178
- kind: RouteKind;
179
- pathname: string;
180
- query?: Record<string, string>;
181
- params?: Record<string, string | string[]>;
185
+ requestedPathname: string;
186
+ templateRoute: {
187
+ filePath: string;
188
+ kind: RouteKind;
189
+ pathname: string;
190
+ };
191
+ query: Record<string, string>;
192
+ params: Record<string, string | string[]>;
182
193
  };
183
194
  /**
184
195
  * Represents a route in EcoPages.
@@ -204,10 +215,10 @@ export type FileSystemServerOptions = {
204
215
  */
205
216
  export interface EcoPagesFileSystemServerAdapter<ServerInstanceOptions = unknown> {
206
217
  startServer(serverOptions: ServerInstanceOptions): {
207
- router: FSRouter;
218
+ router: RouteRegistry;
208
219
  server: unknown;
209
220
  } | Promise<{
210
- router: FSRouter;
221
+ router: RouteRegistry;
211
222
  server: unknown;
212
223
  }>;
213
224
  }
File without changes