@ecopages/core 0.2.0-alpha.9 → 0.2.0-beta.1

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 (473) hide show
  1. package/README.md +79 -28
  2. package/package.json +104 -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 +32 -8
  67. package/src/adapters/shared/server-static-builder.js +69 -6
  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-entry-file.d.ts +72 -0
  279. package/src/utils/resolve-entry-file.js +41 -0
  280. package/src/utils/resolve-work-dir.js +1 -1
  281. package/src/watchers/project-watcher.d.ts +4 -4
  282. package/src/watchers/project-watcher.js +35 -41
  283. package/src/watchers/project-watcher.test-helpers.d.ts +2 -2
  284. package/src/watchers/project-watcher.test-helpers.js +5 -5
  285. package/CHANGELOG.md +0 -31
  286. package/src/adapters/abstract/application-adapter.ts +0 -337
  287. package/src/adapters/abstract/router-adapter.ts +0 -30
  288. package/src/adapters/abstract/server-adapter.ts +0 -79
  289. package/src/adapters/bun/client-bridge.ts +0 -62
  290. package/src/adapters/bun/create-app.ts +0 -189
  291. package/src/adapters/bun/hmr-manager.ts +0 -409
  292. package/src/adapters/bun/index.ts +0 -2
  293. package/src/adapters/bun/server-adapter.ts +0 -499
  294. package/src/adapters/bun/server-lifecycle.d.ts +0 -63
  295. package/src/adapters/bun/server-lifecycle.js +0 -92
  296. package/src/adapters/bun/server-lifecycle.ts +0 -124
  297. package/src/adapters/index.ts +0 -6
  298. package/src/adapters/node/bootstrap-dependency-resolver.d.ts +0 -44
  299. package/src/adapters/node/bootstrap-dependency-resolver.js +0 -172
  300. package/src/adapters/node/bootstrap-dependency-resolver.ts +0 -301
  301. package/src/adapters/node/create-app.ts +0 -179
  302. package/src/adapters/node/index.d.ts +0 -6
  303. package/src/adapters/node/index.js +0 -11
  304. package/src/adapters/node/index.ts +0 -16
  305. package/src/adapters/node/node-client-bridge.ts +0 -79
  306. package/src/adapters/node/node-hmr-manager.ts +0 -381
  307. package/src/adapters/node/runtime-adapter.d.ts +0 -46
  308. package/src/adapters/node/runtime-adapter.js +0 -306
  309. package/src/adapters/node/runtime-adapter.ts +0 -439
  310. package/src/adapters/node/server-adapter.ts +0 -488
  311. package/src/adapters/node/static-content-server.ts +0 -239
  312. package/src/adapters/node/write-runtime-manifest.d.ts +0 -26
  313. package/src/adapters/node/write-runtime-manifest.js +0 -12
  314. package/src/adapters/node/write-runtime-manifest.ts +0 -38
  315. package/src/adapters/shared/api-response.ts +0 -104
  316. package/src/adapters/shared/application-adapter.ts +0 -199
  317. package/src/adapters/shared/define-api-handler.ts +0 -66
  318. package/src/adapters/shared/explicit-static-route-matcher.ts +0 -140
  319. package/src/adapters/shared/file-route-middleware-pipeline.ts +0 -127
  320. package/src/adapters/shared/fs-server-response-factory.ts +0 -118
  321. package/src/adapters/shared/fs-server-response-matcher.ts +0 -205
  322. package/src/adapters/shared/hmr-entrypoint-registrar.ts +0 -149
  323. package/src/adapters/shared/hmr-html-response.ts +0 -52
  324. package/src/adapters/shared/render-context.ts +0 -120
  325. package/src/adapters/shared/runtime-bootstrap.d.ts +0 -38
  326. package/src/adapters/shared/runtime-bootstrap.js +0 -43
  327. package/src/adapters/shared/runtime-bootstrap.ts +0 -79
  328. package/src/adapters/shared/server-adapter.ts +0 -489
  329. package/src/adapters/shared/server-route-handler.ts +0 -153
  330. package/src/adapters/shared/server-static-builder.ts +0 -166
  331. package/src/build/build-adapter.ts +0 -361
  332. package/src/build/build-manifest.ts +0 -54
  333. package/src/build/build-types.ts +0 -83
  334. package/src/build/dev-build-coordinator.d.ts +0 -74
  335. package/src/build/dev-build-coordinator.js +0 -161
  336. package/src/build/dev-build-coordinator.ts +0 -221
  337. package/src/build/esbuild-build-adapter.d.ts +0 -72
  338. package/src/build/esbuild-build-adapter.js +0 -422
  339. package/src/build/esbuild-build-adapter.ts +0 -559
  340. package/src/build/runtime-build-executor.ts +0 -34
  341. package/src/build/runtime-specifier-alias-plugin.d.ts +0 -15
  342. package/src/build/runtime-specifier-alias-plugin.js +0 -31
  343. package/src/build/runtime-specifier-alias-plugin.ts +0 -58
  344. package/src/config/config-builder.ts +0 -706
  345. package/src/constants.ts +0 -54
  346. package/src/create-app.ts +0 -87
  347. package/src/dev/sc-server.ts +0 -143
  348. package/src/eco/component-render-context.d.ts +0 -105
  349. package/src/eco/component-render-context.js +0 -87
  350. package/src/eco/component-render-context.ts +0 -224
  351. package/src/eco/eco.ts +0 -242
  352. package/src/eco/eco.types.ts +0 -221
  353. package/src/eco/eco.utils.ts +0 -89
  354. package/src/eco/global-injector-map.ts +0 -112
  355. package/src/eco/lazy-injector-map.ts +0 -120
  356. package/src/eco/module-dependencies.ts +0 -75
  357. package/src/errors/http-error.ts +0 -72
  358. package/src/errors/index.ts +0 -2
  359. package/src/errors/locals-access-error.ts +0 -7
  360. package/src/global/app-logger.ts +0 -4
  361. package/src/hmr/client/hmr-runtime.ts +0 -152
  362. package/src/hmr/hmr-strategy.ts +0 -172
  363. package/src/hmr/hmr.postcss.test.e2e.ts +0 -41
  364. package/src/hmr/hmr.test.e2e.ts +0 -66
  365. package/src/hmr/strategies/default-hmr-strategy.ts +0 -60
  366. package/src/hmr/strategies/js-hmr-strategy.ts +0 -320
  367. package/src/index.browser.ts +0 -3
  368. package/src/index.ts +0 -5
  369. package/src/integrations/ghtml/ghtml-renderer.ts +0 -96
  370. package/src/integrations/ghtml/ghtml.plugin.ts +0 -32
  371. package/src/internal-types.ts +0 -232
  372. package/src/plugins/alias-resolver-plugin.ts +0 -63
  373. package/src/plugins/eco-component-meta-plugin.ts +0 -481
  374. package/src/plugins/integration-plugin.ts +0 -226
  375. package/src/plugins/processor.ts +0 -240
  376. package/src/plugins/runtime-capability.ts +0 -14
  377. package/src/public-types.ts +0 -1317
  378. package/src/route-renderer/component-graph/component-graph-executor.d.ts +0 -32
  379. package/src/route-renderer/component-graph/component-graph-executor.js +0 -31
  380. package/src/route-renderer/component-graph/component-graph-executor.ts +0 -84
  381. package/src/route-renderer/component-graph/component-graph.d.ts +0 -42
  382. package/src/route-renderer/component-graph/component-graph.js +0 -72
  383. package/src/route-renderer/component-graph/component-graph.ts +0 -159
  384. package/src/route-renderer/component-graph/component-marker.d.ts +0 -52
  385. package/src/route-renderer/component-graph/component-marker.js +0 -46
  386. package/src/route-renderer/component-graph/component-marker.ts +0 -117
  387. package/src/route-renderer/component-graph/component-reference.d.ts +0 -10
  388. package/src/route-renderer/component-graph/component-reference.js +0 -19
  389. package/src/route-renderer/component-graph/component-reference.ts +0 -29
  390. package/src/route-renderer/component-graph/marker-graph-resolver.d.ts +0 -77
  391. package/src/route-renderer/component-graph/marker-graph-resolver.js +0 -95
  392. package/src/route-renderer/component-graph/marker-graph-resolver.ts +0 -155
  393. package/src/route-renderer/orchestration/integration-renderer.ts +0 -790
  394. package/src/route-renderer/orchestration/render-execution.service.d.ts +0 -103
  395. package/src/route-renderer/orchestration/render-execution.service.js +0 -121
  396. package/src/route-renderer/orchestration/render-execution.service.ts +0 -230
  397. package/src/route-renderer/orchestration/render-preparation.service.d.ts +0 -121
  398. package/src/route-renderer/orchestration/render-preparation.service.js +0 -332
  399. package/src/route-renderer/orchestration/render-preparation.service.ts +0 -476
  400. package/src/route-renderer/page-loading/dependency-resolver.ts +0 -612
  401. package/src/route-renderer/page-loading/page-module-loader.ts +0 -181
  402. package/src/route-renderer/route-renderer.ts +0 -115
  403. package/src/router/client/link-intent.test.browser.ts +0 -51
  404. package/src/router/client/link-intent.ts +0 -92
  405. package/src/router/client/navigation-coordinator.ts +0 -433
  406. package/src/router/server/fs-router-scanner.d.ts +0 -41
  407. package/src/router/server/fs-router-scanner.js +0 -156
  408. package/src/router/server/fs-router-scanner.ts +0 -219
  409. package/src/router/server/fs-router.d.ts +0 -26
  410. package/src/router/server/fs-router.js +0 -100
  411. package/src/router/server/fs-router.ts +0 -122
  412. package/src/services/assets/asset-processing-service/asset-processing.service.ts +0 -401
  413. package/src/services/assets/asset-processing-service/asset.factory.ts +0 -105
  414. package/src/services/assets/asset-processing-service/assets.types.ts +0 -113
  415. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.ts +0 -95
  416. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.ts +0 -78
  417. package/src/services/assets/asset-processing-service/index.ts +0 -5
  418. package/src/services/assets/asset-processing-service/processor.interface.ts +0 -27
  419. package/src/services/assets/asset-processing-service/processor.registry.ts +0 -18
  420. package/src/services/assets/asset-processing-service/processors/base/base-processor.ts +0 -82
  421. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.ts +0 -95
  422. package/src/services/assets/asset-processing-service/processors/index.ts +0 -5
  423. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.ts +0 -66
  424. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.ts +0 -88
  425. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.ts +0 -85
  426. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.ts +0 -27
  427. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.ts +0 -80
  428. package/src/services/assets/browser-bundle.service.ts +0 -53
  429. package/src/services/cache/cache.types.ts +0 -126
  430. package/src/services/cache/index.ts +0 -18
  431. package/src/services/cache/memory-cache-store.ts +0 -130
  432. package/src/services/cache/page-cache-service.ts +0 -202
  433. package/src/services/cache/page-request-cache-coordinator.service.ts +0 -131
  434. package/src/services/html/html-rewriter-provider.service.ts +0 -103
  435. package/src/services/html/html-transformer.service.ts +0 -279
  436. package/src/services/invalidation/development-invalidation.service.ts +0 -261
  437. package/src/services/module-loading/app-server-module-transpiler.service.ts +0 -52
  438. package/src/services/module-loading/page-module-import.service.ts +0 -200
  439. package/src/services/module-loading/server-loader.service.d.ts +0 -96
  440. package/src/services/module-loading/server-loader.service.js +0 -32
  441. package/src/services/module-loading/server-loader.service.ts +0 -130
  442. package/src/services/module-loading/server-module-transpiler.service.ts +0 -105
  443. package/src/services/runtime-manifest/node-runtime-manifest.service.d.ts +0 -35
  444. package/src/services/runtime-manifest/node-runtime-manifest.service.js +0 -60
  445. package/src/services/runtime-manifest/node-runtime-manifest.service.ts +0 -101
  446. package/src/services/runtime-state/dev-graph.service.ts +0 -217
  447. package/src/services/runtime-state/entrypoint-dependency-graph.service.ts +0 -136
  448. package/src/services/runtime-state/runtime-specifier-registry.service.d.ts +0 -69
  449. package/src/services/runtime-state/runtime-specifier-registry.service.js +0 -37
  450. package/src/services/runtime-state/runtime-specifier-registry.service.ts +0 -96
  451. package/src/services/runtime-state/server-invalidation-state.service.ts +0 -68
  452. package/src/services/validation/schema-validation-service.ts +0 -204
  453. package/src/services/validation/standard-schema.types.ts +0 -68
  454. package/src/static-site-generator/static-site-generator.ts +0 -462
  455. package/src/utils/css.d.ts +0 -1
  456. package/src/utils/css.js +0 -7
  457. package/src/utils/css.ts +0 -5
  458. package/src/utils/deep-merge.ts +0 -47
  459. package/src/utils/hash.ts +0 -5
  460. package/src/utils/html.ts +0 -1
  461. package/src/utils/invariant.ts +0 -15
  462. package/src/utils/locals-utils.ts +0 -37
  463. package/src/utils/parse-cli-args.ts +0 -83
  464. package/src/utils/path-utils.module.ts +0 -14
  465. package/src/utils/resolve-work-dir.ts +0 -45
  466. package/src/utils/runtime.ts +0 -44
  467. package/src/utils/server-utils.module.ts +0 -67
  468. package/src/watchers/project-watcher.test-helpers.ts +0 -41
  469. package/src/watchers/project-watcher.ts +0 -363
  470. /package/src/{internal-types.js → adapters/shared/runtime-host.js} +0 -0
  471. /package/src/{public-types.js → adapters/shared/static-preview-host.js} +0 -0
  472. /package/src/{constants.d.ts → config/constants.d.ts} +0 -0
  473. /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