@ecopages/core 0.2.0-alpha.5 → 0.2.0-alpha.51

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 (456) hide show
  1. package/README.md +267 -14
  2. package/package.json +98 -108
  3. package/src/adapters/README.md +39 -0
  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 +30 -62
  12. package/src/adapters/bun/hmr-manager.js +30 -194
  13. package/src/adapters/bun/index.d.ts +2 -3
  14. package/src/adapters/bun/index.js +3 -3
  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 +93 -32
  18. package/src/adapters/bun/server-adapter.js +166 -89
  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 +2 -6
  24. package/src/adapters/index.js +2 -8
  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 +38 -48
  31. package/src/adapters/node/node-hmr-manager.js +31 -203
  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 +20 -72
  37. package/src/adapters/node/server-adapter.js +98 -203
  38. package/src/adapters/node/static-content-server.d.ts +37 -1
  39. package/src/adapters/node/static-content-server.js +29 -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/{define-api-handler.d.ts → 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 -13
  48. package/src/adapters/shared/file-route-middleware-pipeline.d.ts +7 -10
  49. package/src/adapters/shared/file-route-middleware-pipeline.js +3 -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 +20 -16
  53. package/src/adapters/shared/fs-server-response-matcher.js +76 -45
  54. package/src/adapters/shared/hmr-entrypoint-registrar.d.ts +55 -0
  55. package/src/adapters/shared/hmr-entrypoint-registrar.js +87 -0
  56. package/src/adapters/shared/hmr-html-response.d.ts +22 -0
  57. package/src/adapters/shared/hmr-html-response.js +33 -0
  58. package/src/adapters/shared/render-context.d.ts +5 -3
  59. package/src/adapters/shared/render-context.js +27 -3
  60. package/src/adapters/shared/runtime-app-bootstrap.d.ts +26 -0
  61. package/src/adapters/shared/runtime-app-bootstrap.js +46 -0
  62. package/src/adapters/shared/runtime-host.d.ts +12 -0
  63. package/src/adapters/shared/server-adapter.d.ts +33 -12
  64. package/src/adapters/shared/server-adapter.js +215 -132
  65. package/src/adapters/shared/server-route-handler.d.ts +5 -5
  66. package/src/adapters/shared/server-route-handler.js +7 -16
  67. package/src/adapters/shared/server-static-builder.d.ts +41 -8
  68. package/src/adapters/shared/server-static-builder.js +65 -11
  69. package/src/adapters/shared/shared-hmr-manager.d.ts +59 -0
  70. package/src/adapters/shared/shared-hmr-manager.js +240 -0
  71. package/src/adapters/shared/static-preview-host.d.ts +10 -0
  72. package/src/build/README.md +107 -0
  73. package/src/build/browser-runtime-import-rewrite-plugin.d.ts +26 -0
  74. package/src/build/browser-runtime-import-rewrite-plugin.js +162 -0
  75. package/src/build/browser-runtime-manifest.d.ts +31 -0
  76. package/src/build/browser-runtime-manifest.js +61 -0
  77. package/src/build/build-adapter.d.ts +175 -3
  78. package/src/build/build-adapter.js +633 -16
  79. package/src/build/build-manifest.d.ts +33 -0
  80. package/src/build/build-manifest.js +52 -0
  81. package/src/build/dev-build-coordinator.d.ts +72 -0
  82. package/src/build/dev-build-coordinator.js +154 -0
  83. package/src/build/esbuild-build-adapter.d.ts +16 -6
  84. package/src/build/esbuild-build-adapter.js +205 -75
  85. package/src/build/runtime-build-executor.d.ts +14 -0
  86. package/src/build/runtime-build-executor.js +22 -0
  87. package/src/build/runtime-specifier-alias-plugin.d.ts +15 -0
  88. package/src/build/runtime-specifier-alias-plugin.js +31 -0
  89. package/src/config/README.md +36 -0
  90. package/src/config/config-builder.d.ts +54 -29
  91. package/src/config/config-builder.js +256 -50
  92. package/src/{constants.d.ts → config/constants.d.ts} +13 -0
  93. package/src/{constants.js → config/constants.js} +4 -0
  94. package/src/declarations.d.ts +19 -14
  95. package/src/dev/host-runtime.d.ts +10 -0
  96. package/src/dev/host-runtime.js +24 -0
  97. package/src/dev/sc-server.d.ts +1 -1
  98. package/src/dev/sc-server.js +1 -1
  99. package/src/eco/README.md +70 -16
  100. package/src/eco/eco.browser.d.ts +2 -0
  101. package/src/eco/eco.browser.js +88 -0
  102. package/src/eco/eco.js +63 -54
  103. package/src/eco/eco.types.d.ts +69 -6
  104. package/src/eco/eco.utils.d.ts +1 -40
  105. package/src/eco/eco.utils.js +5 -35
  106. package/src/eco/global-injector-map.d.ts +3 -3
  107. package/src/eco/global-injector-map.js +2 -2
  108. package/src/eco/lazy-injector-map.d.ts +2 -2
  109. package/src/errors/index.d.ts +1 -0
  110. package/src/errors/index.js +3 -1
  111. package/src/hmr/README.md +26 -0
  112. package/src/hmr/client/hmr-runtime.d.ts +1 -6
  113. package/src/hmr/client/hmr-runtime.js +38 -7
  114. package/src/hmr/hmr-strategy.d.ts +16 -13
  115. package/src/hmr/hmr-strategy.js +22 -7
  116. package/src/hmr/hmr.postcss.test.e2e.d.ts +1 -0
  117. package/src/hmr/hmr.postcss.test.e2e.js +31 -0
  118. package/src/hmr/hmr.test.e2e.js +26 -33
  119. package/src/hmr/strategies/default-hmr-strategy.d.ts +2 -2
  120. package/src/hmr/strategies/default-hmr-strategy.js +1 -1
  121. package/src/hmr/strategies/js-hmr-strategy.d.ts +40 -42
  122. package/src/hmr/strategies/js-hmr-strategy.js +24 -43
  123. package/src/index.browser.d.ts +2 -2
  124. package/src/index.browser.js +1 -1
  125. package/src/index.d.ts +4 -3
  126. package/src/index.js +16 -5
  127. package/src/integrations/ghtml/ghtml-renderer.d.ts +3 -2
  128. package/src/integrations/ghtml/ghtml-renderer.js +27 -30
  129. package/src/integrations/ghtml/ghtml.constants.d.ts +1 -0
  130. package/src/integrations/ghtml/ghtml.constants.js +4 -0
  131. package/src/integrations/ghtml/ghtml.plugin.d.ts +2 -6
  132. package/src/integrations/ghtml/ghtml.plugin.js +3 -4
  133. package/src/plugins/README.md +35 -0
  134. package/src/plugins/alias-resolver-plugin.d.ts +1 -0
  135. package/src/plugins/alias-resolver-plugin.js +27 -5
  136. package/src/plugins/eco-component-meta-plugin.d.ts +14 -1
  137. package/src/plugins/eco-component-meta-plugin.js +42 -24
  138. package/src/plugins/foreign-jsx-override-plugin.d.ts +33 -0
  139. package/src/plugins/foreign-jsx-override-plugin.js +41 -0
  140. package/src/plugins/integration-plugin.d.ts +157 -29
  141. package/src/plugins/integration-plugin.js +115 -14
  142. package/src/plugins/processor.d.ts +17 -2
  143. package/src/plugins/processor.js +22 -3
  144. package/src/plugins/runtime-capability.d.ts +9 -0
  145. package/src/plugins/source-transform.d.ts +46 -0
  146. package/src/plugins/source-transform.js +71 -0
  147. package/src/route-renderer/GRAPH.md +83 -325
  148. package/src/route-renderer/README.md +73 -90
  149. package/src/route-renderer/orchestration/component-render-context.d.ts +97 -0
  150. package/src/route-renderer/orchestration/component-render-context.js +147 -0
  151. package/src/route-renderer/orchestration/declared-ownership-graph.d.ts +18 -0
  152. package/src/route-renderer/orchestration/declared-ownership-graph.js +34 -0
  153. package/src/route-renderer/orchestration/foreign-subtree-execution.service.d.ts +110 -0
  154. package/src/route-renderer/orchestration/foreign-subtree-execution.service.js +233 -0
  155. package/src/route-renderer/orchestration/integration-renderer.d.ts +534 -0
  156. package/src/route-renderer/orchestration/integration-renderer.js +991 -0
  157. package/src/route-renderer/orchestration/ownership-planning.service.d.ts +24 -0
  158. package/src/route-renderer/orchestration/ownership-planning.service.js +63 -0
  159. package/src/route-renderer/orchestration/ownership-validation.service.d.ts +29 -0
  160. package/src/route-renderer/orchestration/ownership-validation.service.js +53 -0
  161. package/src/route-renderer/orchestration/processed-asset-dedupe.d.ts +3 -0
  162. package/src/route-renderer/orchestration/processed-asset-dedupe.js +27 -0
  163. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.d.ts +91 -0
  164. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.js +170 -0
  165. package/src/route-renderer/orchestration/render-output.utils.d.ts +66 -0
  166. package/src/route-renderer/orchestration/render-output.utils.js +171 -0
  167. package/src/route-renderer/orchestration/route-render-orchestrator.d.ts +156 -0
  168. package/src/route-renderer/orchestration/route-render-orchestrator.js +577 -0
  169. package/src/route-renderer/orchestration/template-serialization.d.ts +38 -0
  170. package/src/route-renderer/orchestration/template-serialization.js +45 -0
  171. package/src/route-renderer/page-loading/component-dependency-collection.d.ts +37 -0
  172. package/src/route-renderer/page-loading/component-dependency-collection.js +132 -0
  173. package/src/route-renderer/page-loading/declared-asset-collection.d.ts +24 -0
  174. package/src/route-renderer/page-loading/declared-asset-collection.js +106 -0
  175. package/src/route-renderer/{dependency-resolver.d.ts → page-loading/dependency-resolver.d.ts} +15 -4
  176. package/src/route-renderer/page-loading/dependency-resolver.js +115 -0
  177. package/src/route-renderer/page-loading/ecopages-virtual-imports.d.ts +11 -0
  178. package/src/route-renderer/page-loading/ecopages-virtual-imports.js +57 -0
  179. package/src/route-renderer/page-loading/lazy-entry-collection.d.ts +45 -0
  180. package/src/route-renderer/page-loading/lazy-entry-collection.js +105 -0
  181. package/src/route-renderer/page-loading/lazy-trigger-planning.d.ts +19 -0
  182. package/src/route-renderer/page-loading/lazy-trigger-planning.js +40 -0
  183. package/src/route-renderer/page-loading/module-declaration-aggregation.d.ts +5 -0
  184. package/src/route-renderer/page-loading/module-declaration-aggregation.js +33 -0
  185. package/src/route-renderer/page-loading/module-declaration-scripts.d.ts +3 -0
  186. package/src/route-renderer/page-loading/module-declaration-scripts.js +18 -0
  187. package/src/route-renderer/page-loading/page-dependency-bundling.d.ts +13 -0
  188. package/src/route-renderer/page-loading/page-dependency-bundling.js +137 -0
  189. package/src/route-renderer/page-loading/page-module-loader.d.ts +90 -0
  190. package/src/route-renderer/{page-module-loader.js → page-loading/page-module-loader.js} +39 -14
  191. package/src/route-renderer/route-renderer.d.ts +57 -14
  192. package/src/route-renderer/route-renderer.js +30 -18
  193. package/src/router/README.md +94 -0
  194. package/src/router/client/link-intent.d.ts +53 -0
  195. package/src/router/client/link-intent.js +34 -0
  196. package/src/router/client/link-intent.test.browser.d.ts +1 -0
  197. package/src/router/client/link-intent.test.browser.js +43 -0
  198. package/src/router/client/navigation-coordinator.d.ts +169 -0
  199. package/src/router/client/navigation-coordinator.js +215 -0
  200. package/src/router/server/route-registry.d.ts +78 -0
  201. package/src/router/server/route-registry.js +262 -0
  202. package/src/services/README.md +28 -0
  203. package/src/services/assets/asset-processing-service/asset-dependency-keys.d.ts +3 -0
  204. package/src/services/assets/asset-processing-service/asset-dependency-keys.js +56 -0
  205. package/src/services/assets/asset-processing-service/asset-processing.service.d.ts +103 -0
  206. package/src/services/{asset-processing-service → assets/asset-processing-service}/asset-processing.service.js +124 -89
  207. package/src/services/{asset-processing-service → assets/asset-processing-service}/asset.factory.d.ts +1 -1
  208. package/src/services/{asset-processing-service → assets/asset-processing-service}/asset.factory.js +2 -2
  209. package/src/services/{asset-processing-service → assets/asset-processing-service}/assets.types.d.ts +16 -1
  210. package/src/services/assets/asset-processing-service/assets.types.js +0 -0
  211. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.d.ts +57 -0
  212. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.js +49 -0
  213. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.d.ts +20 -0
  214. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.js +41 -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 -0
  218. package/src/services/assets/asset-processing-service/index.js +6 -0
  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/{asset-processing-service → assets/asset-processing-service}/processor.interface.d.ts +2 -2
  222. package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.registry.d.ts +2 -2
  223. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/base/base-processor.d.ts +1 -1
  224. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/base/base-processor.js +11 -5
  225. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.d.ts +22 -0
  226. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.js +136 -0
  227. package/src/services/assets/asset-processing-service/processors/index.d.ts +5 -0
  228. package/src/services/assets/asset-processing-service/processors/index.js +5 -0
  229. package/src/services/{asset-processing-service → 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 +120 -0
  231. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/file-script.processor.d.ts +4 -3
  232. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/file-script.processor.js +28 -7
  233. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.d.ts +42 -0
  234. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.js +126 -0
  235. package/src/services/{asset-processing-service → 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 +59 -0
  237. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/stylesheet/file-stylesheet.processor.d.ts +2 -2
  238. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/stylesheet/file-stylesheet.processor.js +9 -3
  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 +73 -0
  242. package/src/services/assets/browser-bundle.service.js +41 -0
  243. package/src/services/{page-request-cache-coordinator.service.d.ts → cache/page-request-cache-coordinator.service.d.ts} +2 -2
  244. package/src/services/{page-request-cache-coordinator.service.js → cache/page-request-cache-coordinator.service.js} +3 -1
  245. package/src/services/html/html-rewriter-provider.service.d.ts +40 -0
  246. package/src/services/html/html-rewriter-provider.service.js +68 -0
  247. package/src/services/html/html-transformer.service.d.ts +96 -0
  248. package/src/services/html/html-transformer.service.js +287 -0
  249. package/src/services/invalidation/development-invalidation.service.d.ts +74 -0
  250. package/src/services/invalidation/development-invalidation.service.js +190 -0
  251. package/src/services/module-loading/app-module-loader.service.d.ts +7 -0
  252. package/src/services/module-loading/app-module-loader.service.js +0 -0
  253. package/src/services/module-loading/app-server-module-transpiler.service.d.ts +24 -0
  254. package/src/services/module-loading/app-server-module-transpiler.service.js +151 -0
  255. package/src/services/module-loading/host-module-loader-registry.d.ts +4 -0
  256. package/src/services/module-loading/host-module-loader-registry.js +15 -0
  257. package/src/services/module-loading/module-loading-types.d.ts +2 -0
  258. package/src/services/module-loading/module-loading-types.js +0 -0
  259. package/src/services/module-loading/node-bootstrap-plugin.d.ts +38 -0
  260. package/src/services/module-loading/node-bootstrap-plugin.js +215 -0
  261. package/src/services/module-loading/page-module-import.service.d.ts +95 -0
  262. package/src/services/module-loading/page-module-import.service.js +191 -0
  263. package/src/services/module-loading/server-module-transpiler.service.d.ts +63 -0
  264. package/src/services/module-loading/server-module-transpiler.service.js +64 -0
  265. package/src/services/module-loading/source-module-support.d.ts +5 -0
  266. package/src/services/module-loading/source-module-support.js +8 -0
  267. package/src/services/runtime-state/dev-graph.service.d.ts +118 -0
  268. package/src/services/runtime-state/dev-graph.service.js +162 -0
  269. package/src/services/runtime-state/entrypoint-dependency-graph.service.d.ts +41 -0
  270. package/src/services/runtime-state/entrypoint-dependency-graph.service.js +85 -0
  271. package/src/services/runtime-state/server-invalidation-state.service.d.ts +26 -0
  272. package/src/services/runtime-state/server-invalidation-state.service.js +35 -0
  273. package/src/services/{schema-validation-service.d.ts → validation/schema-validation-service.d.ts} +1 -1
  274. package/src/static-site-generator/README.md +26 -0
  275. package/src/static-site-generator/static-site-generator.d.ts +67 -20
  276. package/src/static-site-generator/static-site-generator.js +182 -138
  277. package/src/{internal-types.d.ts → types/internal-types.d.ts} +62 -30
  278. package/src/types/internal-types.js +0 -0
  279. package/src/{public-types.d.ts → types/public-types.d.ts} +239 -31
  280. package/src/types/public-types.js +0 -0
  281. package/src/utils/html-escaping.d.ts +7 -0
  282. package/src/utils/html-escaping.js +6 -0
  283. package/src/utils/locals-utils.d.ts +1 -1
  284. package/src/utils/parse-cli-args.d.ts +4 -1
  285. package/src/utils/parse-cli-args.js +16 -1
  286. package/src/utils/resolve-work-dir.d.ts +11 -0
  287. package/src/utils/resolve-work-dir.js +31 -0
  288. package/src/watchers/project-watcher.d.ts +11 -7
  289. package/src/watchers/project-watcher.js +69 -75
  290. package/src/watchers/project-watcher.test-helpers.d.ts +2 -2
  291. package/src/watchers/project-watcher.test-helpers.js +6 -5
  292. package/CHANGELOG.md +0 -94
  293. package/src/adapters/abstract/application-adapter.ts +0 -337
  294. package/src/adapters/abstract/router-adapter.ts +0 -30
  295. package/src/adapters/abstract/server-adapter.ts +0 -79
  296. package/src/adapters/bun/client-bridge.ts +0 -62
  297. package/src/adapters/bun/create-app.ts +0 -189
  298. package/src/adapters/bun/define-api-handler.d.ts +0 -61
  299. package/src/adapters/bun/define-api-handler.ts +0 -114
  300. package/src/adapters/bun/hmr-manager.ts +0 -276
  301. package/src/adapters/bun/index.ts +0 -3
  302. package/src/adapters/bun/server-adapter.ts +0 -492
  303. package/src/adapters/bun/server-lifecycle.d.ts +0 -52
  304. package/src/adapters/bun/server-lifecycle.js +0 -120
  305. package/src/adapters/bun/server-lifecycle.ts +0 -154
  306. package/src/adapters/index.ts +0 -6
  307. package/src/adapters/node/create-app.ts +0 -179
  308. package/src/adapters/node/index.d.ts +0 -4
  309. package/src/adapters/node/index.js +0 -8
  310. package/src/adapters/node/index.ts +0 -9
  311. package/src/adapters/node/node-client-bridge.ts +0 -79
  312. package/src/adapters/node/node-hmr-manager.ts +0 -271
  313. package/src/adapters/node/server-adapter.ts +0 -561
  314. package/src/adapters/node/static-content-server.ts +0 -203
  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/explicit-static-route-matcher.ts +0 -134
  318. package/src/adapters/shared/file-route-middleware-pipeline.ts +0 -123
  319. package/src/adapters/shared/fs-server-response-factory.ts +0 -118
  320. package/src/adapters/shared/fs-server-response-matcher.ts +0 -198
  321. package/src/adapters/shared/render-context.ts +0 -105
  322. package/src/adapters/shared/server-adapter.ts +0 -442
  323. package/src/adapters/shared/server-route-handler.ts +0 -166
  324. package/src/adapters/shared/server-static-builder.ts +0 -82
  325. package/src/build/build-adapter.ts +0 -133
  326. package/src/build/build-types.ts +0 -83
  327. package/src/build/esbuild-build-adapter.ts +0 -511
  328. package/src/config/config-builder.ts +0 -474
  329. package/src/constants.ts +0 -39
  330. package/src/create-app.ts +0 -87
  331. package/src/define-api-handler.js +0 -15
  332. package/src/define-api-handler.ts +0 -66
  333. package/src/dev/sc-server.ts +0 -143
  334. package/src/eco/component-render-context.d.ts +0 -105
  335. package/src/eco/component-render-context.js +0 -77
  336. package/src/eco/component-render-context.ts +0 -202
  337. package/src/eco/eco.ts +0 -221
  338. package/src/eco/eco.types.ts +0 -202
  339. package/src/eco/eco.utils.ts +0 -89
  340. package/src/eco/global-injector-map.ts +0 -112
  341. package/src/eco/lazy-injector-map.ts +0 -120
  342. package/src/eco/module-dependencies.ts +0 -75
  343. package/src/errors/http-error.ts +0 -72
  344. package/src/errors/index.ts +0 -2
  345. package/src/errors/locals-access-error.ts +0 -7
  346. package/src/global/app-logger.ts +0 -4
  347. package/src/hmr/client/hmr-runtime.ts +0 -121
  348. package/src/hmr/hmr-strategy.ts +0 -172
  349. package/src/hmr/hmr.test.e2e.ts +0 -75
  350. package/src/hmr/strategies/default-hmr-strategy.ts +0 -60
  351. package/src/hmr/strategies/js-hmr-strategy.ts +0 -327
  352. package/src/index.browser.ts +0 -3
  353. package/src/index.ts +0 -5
  354. package/src/integrations/ghtml/ghtml-renderer.ts +0 -93
  355. package/src/integrations/ghtml/ghtml.plugin.ts +0 -32
  356. package/src/internal-types.ts +0 -212
  357. package/src/plugins/alias-resolver-plugin.ts +0 -45
  358. package/src/plugins/eco-component-meta-plugin.ts +0 -474
  359. package/src/plugins/integration-plugin.ts +0 -184
  360. package/src/plugins/processor.ts +0 -220
  361. package/src/public-types.ts +0 -1255
  362. package/src/route-renderer/component-graph-executor.d.ts +0 -32
  363. package/src/route-renderer/component-graph-executor.js +0 -31
  364. package/src/route-renderer/component-graph-executor.ts +0 -84
  365. package/src/route-renderer/component-graph.d.ts +0 -42
  366. package/src/route-renderer/component-graph.js +0 -72
  367. package/src/route-renderer/component-graph.ts +0 -159
  368. package/src/route-renderer/component-marker.d.ts +0 -52
  369. package/src/route-renderer/component-marker.js +0 -46
  370. package/src/route-renderer/component-marker.ts +0 -117
  371. package/src/route-renderer/dependency-resolver.js +0 -428
  372. package/src/route-renderer/dependency-resolver.ts +0 -596
  373. package/src/route-renderer/html-post-processing.service.d.ts +0 -40
  374. package/src/route-renderer/html-post-processing.service.js +0 -86
  375. package/src/route-renderer/html-post-processing.service.ts +0 -103
  376. package/src/route-renderer/integration-renderer.d.ts +0 -339
  377. package/src/route-renderer/integration-renderer.js +0 -526
  378. package/src/route-renderer/integration-renderer.ts +0 -696
  379. package/src/route-renderer/marker-graph-resolver.d.ts +0 -76
  380. package/src/route-renderer/marker-graph-resolver.js +0 -93
  381. package/src/route-renderer/marker-graph-resolver.ts +0 -153
  382. package/src/route-renderer/page-module-loader.d.ts +0 -61
  383. package/src/route-renderer/page-module-loader.ts +0 -153
  384. package/src/route-renderer/render-execution.service.d.ts +0 -69
  385. package/src/route-renderer/render-execution.service.js +0 -91
  386. package/src/route-renderer/render-execution.service.ts +0 -158
  387. package/src/route-renderer/render-preparation.service.d.ts +0 -112
  388. package/src/route-renderer/render-preparation.service.js +0 -243
  389. package/src/route-renderer/render-preparation.service.ts +0 -358
  390. package/src/route-renderer/route-renderer.ts +0 -80
  391. package/src/router/fs-router-scanner.d.ts +0 -41
  392. package/src/router/fs-router-scanner.js +0 -155
  393. package/src/router/fs-router-scanner.ts +0 -217
  394. package/src/router/fs-router.d.ts +0 -26
  395. package/src/router/fs-router.js +0 -100
  396. package/src/router/fs-router.ts +0 -122
  397. package/src/services/asset-processing-service/asset-processing.service.d.ts +0 -41
  398. package/src/services/asset-processing-service/asset-processing.service.ts +0 -306
  399. package/src/services/asset-processing-service/asset.factory.ts +0 -105
  400. package/src/services/asset-processing-service/assets.types.ts +0 -112
  401. package/src/services/asset-processing-service/index.d.ts +0 -3
  402. package/src/services/asset-processing-service/index.js +0 -3
  403. package/src/services/asset-processing-service/index.ts +0 -3
  404. package/src/services/asset-processing-service/processor.interface.ts +0 -27
  405. package/src/services/asset-processing-service/processor.registry.ts +0 -18
  406. package/src/services/asset-processing-service/processors/base/base-processor.ts +0 -76
  407. package/src/services/asset-processing-service/processors/base/base-script-processor.d.ts +0 -16
  408. package/src/services/asset-processing-service/processors/base/base-script-processor.js +0 -80
  409. package/src/services/asset-processing-service/processors/base/base-script-processor.ts +0 -105
  410. package/src/services/asset-processing-service/processors/index.d.ts +0 -5
  411. package/src/services/asset-processing-service/processors/index.js +0 -5
  412. package/src/services/asset-processing-service/processors/index.ts +0 -5
  413. package/src/services/asset-processing-service/processors/script/content-script.processor.js +0 -57
  414. package/src/services/asset-processing-service/processors/script/content-script.processor.ts +0 -66
  415. package/src/services/asset-processing-service/processors/script/file-script.processor.ts +0 -88
  416. package/src/services/asset-processing-service/processors/script/node-module-script.processor.d.ts +0 -7
  417. package/src/services/asset-processing-service/processors/script/node-module-script.processor.js +0 -74
  418. package/src/services/asset-processing-service/processors/script/node-module-script.processor.ts +0 -84
  419. package/src/services/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +0 -25
  420. package/src/services/asset-processing-service/processors/stylesheet/content-stylesheet.processor.ts +0 -27
  421. package/src/services/asset-processing-service/processors/stylesheet/file-stylesheet.processor.ts +0 -77
  422. package/src/services/cache/cache.types.ts +0 -126
  423. package/src/services/cache/index.ts +0 -18
  424. package/src/services/cache/memory-cache-store.ts +0 -130
  425. package/src/services/cache/page-cache-service.ts +0 -202
  426. package/src/services/html-transformer.service.d.ts +0 -50
  427. package/src/services/html-transformer.service.js +0 -163
  428. package/src/services/html-transformer.service.ts +0 -217
  429. package/src/services/page-module-import.service.d.ts +0 -37
  430. package/src/services/page-module-import.service.js +0 -88
  431. package/src/services/page-module-import.service.ts +0 -129
  432. package/src/services/page-request-cache-coordinator.service.ts +0 -128
  433. package/src/services/schema-validation-service.ts +0 -204
  434. package/src/services/validation/standard-schema.types.ts +0 -68
  435. package/src/static-site-generator/static-site-generator.ts +0 -359
  436. package/src/utils/css.d.ts +0 -1
  437. package/src/utils/css.js +0 -7
  438. package/src/utils/css.ts +0 -5
  439. package/src/utils/deep-merge.ts +0 -47
  440. package/src/utils/hash.ts +0 -5
  441. package/src/utils/html.ts +0 -1
  442. package/src/utils/invariant.ts +0 -15
  443. package/src/utils/locals-utils.ts +0 -37
  444. package/src/utils/parse-cli-args.ts +0 -83
  445. package/src/utils/path-utils.module.ts +0 -14
  446. package/src/utils/runtime.ts +0 -44
  447. package/src/utils/server-utils.module.ts +0 -67
  448. package/src/watchers/project-watcher.test-helpers.ts +0 -40
  449. package/src/watchers/project-watcher.ts +0 -364
  450. /package/src/adapters/{bun → shared}/define-api-handler.js +0 -0
  451. /package/src/{internal-types.js → adapters/shared/runtime-host.js} +0 -0
  452. /package/src/{public-types.js → adapters/shared/static-preview-host.js} +0 -0
  453. /package/src/{services/asset-processing-service/assets.types.js → plugins/runtime-capability.js} +0 -0
  454. /package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.interface.js +0 -0
  455. /package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.registry.js +0 -0
  456. /package/src/services/{schema-validation-service.js → validation/schema-validation-service.js} +0 -0
@@ -0,0 +1,68 @@
1
+ import { NodeStaticContentServer } from "./static-content-server.js";
2
+ class NodeStaticPreviewHost {
3
+ /**
4
+ * Creates the preview host with an injectable preview-server constructor.
5
+ */
6
+ constructor(previewServerFactory = NodeStaticContentServer) {
7
+ this.previewServerFactory = previewServerFactory;
8
+ }
9
+ previewServerFactory;
10
+ previewServer = null;
11
+ stopPromise = null;
12
+ /**
13
+ * Starts the Node preview host after fully draining any previous preview server
14
+ * shutdown that may still be in flight.
15
+ *
16
+ * @remarks
17
+ * The host only publishes a new preview server after `start()` succeeds. That
18
+ * keeps failed startup attempts from replacing the last known-good server with a
19
+ * half-initialized instance.
20
+ */
21
+ async start(options) {
22
+ await this.stop();
23
+ const previewServer = new this.previewServerFactory({
24
+ appConfig: options.appConfig,
25
+ options: {
26
+ hostname: options.hostname,
27
+ port: options.port
28
+ }
29
+ });
30
+ const server = await previewServer.start();
31
+ this.previewServer = previewServer;
32
+ const address = server.address();
33
+ if (address && typeof address === "object") {
34
+ return address.port;
35
+ }
36
+ return options.port;
37
+ }
38
+ /**
39
+ * Stops the active preview server and coalesces overlapping stop requests onto
40
+ * the same shutdown promise.
41
+ *
42
+ * @remarks
43
+ * The host keeps the server reference until shutdown succeeds. If shutdown
44
+ * fails, callers can still retry `stop()` or inspect the same live instance
45
+ * instead of losing the handle during a rejected async stop.
46
+ */
47
+ async stop(force = true) {
48
+ if (this.stopPromise) {
49
+ await this.stopPromise;
50
+ return;
51
+ }
52
+ if (!this.previewServer) {
53
+ return;
54
+ }
55
+ const activePreviewServer = this.previewServer;
56
+ this.stopPromise = activePreviewServer.stop(force).then(() => {
57
+ if (this.previewServer === activePreviewServer) {
58
+ this.previewServer = null;
59
+ }
60
+ }).finally(() => {
61
+ this.stopPromise = null;
62
+ });
63
+ await this.stopPromise;
64
+ }
65
+ }
66
+ export {
67
+ NodeStaticPreviewHost
68
+ };
@@ -1,4 +1,4 @@
1
- import type { ApiHandler, ApiHandlerContext, Middleware, RouteGroupBuilder, RouteOptions } from '../../public-types.js';
1
+ import type { ApiHandler, ApiHandlerContext, Middleware, RouteGroupBuilder, RouteOptions } from '../../types/public-types.js';
2
2
  import { AbstractApplicationAdapter, type ApplicationAdapterOptions, type RouteGroupDefinition, type RouteHandler } from '../abstract/application-adapter.js';
3
3
  export declare abstract class SharedApplicationAdapter<TOptions extends ApplicationAdapterOptions = ApplicationAdapterOptions, TServer = any, TRequest extends Request = Request> extends AbstractApplicationAdapter<TOptions, TServer, TRequest> {
4
4
  protected register<P extends string, TContext extends ApiHandlerContext<TRequest, TServer> = ApiHandlerContext<TRequest, TServer>>(path: P, method: ApiHandler['method'], handler: RouteHandler<TRequest, TServer, TContext>, options?: RouteOptions<TRequest, TServer, TContext>): this;
@@ -1,4 +1,4 @@
1
- import type { ApiHandler, ApiHandlerContext, Middleware, RouteSchema, TypedGroupHandlerContext } from './public-types.js';
1
+ import type { ApiHandler, ApiHandlerContext, Middleware, RouteSchema, TypedGroupHandlerContext } from '../../types/public-types.js';
2
2
  type UniversalContext = ApiHandlerContext<Request, unknown>;
3
3
  type SchemaHandlerContext<TSchema extends RouteSchema | undefined, TContext extends UniversalContext> = TSchema extends RouteSchema ? TypedGroupHandlerContext<TSchema, TContext> : TContext;
4
4
  export declare function defineApiHandler<TPath extends string, TSchema extends RouteSchema | undefined = undefined, TContext extends UniversalContext = UniversalContext>(handler: Omit<ApiHandler<TPath, Request, unknown>, 'handler' | 'middleware' | 'schema'> & {
@@ -0,0 +1,25 @@
1
+ import type { EcoPagesAppConfig } from '../../types/internal-types.js';
2
+ import type { EcoFunctionComponent, EcoPageComponent } from '../../types/public-types.js';
3
+ import type { ExplicitViewRenderer, ExplicitViewRendererResolver } from '../../route-renderer/route-renderer.js';
4
+ type ExplicitStaticRenderPreparationResult = {
5
+ renderer: ExplicitViewRenderer;
6
+ props: Record<string, unknown>;
7
+ view: EcoFunctionComponent<Record<string, unknown>, any>;
8
+ };
9
+ /**
10
+ * Resolves the renderer and static props needed to render one explicit static
11
+ * view at runtime or during static generation.
12
+ */
13
+ export declare function prepareExplicitStaticRender(input: {
14
+ routePath: string;
15
+ view: EcoPageComponent<any>;
16
+ params: Record<string, string | string[]>;
17
+ appConfig: EcoPagesAppConfig;
18
+ runtimeOrigin: string;
19
+ routeRendererFactory: ExplicitViewRendererResolver;
20
+ errors: {
21
+ missingIntegration(routePath: string): string;
22
+ noRendererForIntegration(integrationName: string): string;
23
+ };
24
+ }): Promise<ExplicitStaticRenderPreparationResult>;
25
+ export {};
@@ -0,0 +1,26 @@
1
+ function getViewIntegrationName(view) {
2
+ return view.config?.integration ?? view.config?.__eco?.integration;
3
+ }
4
+ async function prepareExplicitStaticRender(input) {
5
+ const integrationName = getViewIntegrationName(input.view);
6
+ if (!integrationName) {
7
+ throw new Error(input.errors.missingIntegration(input.routePath));
8
+ }
9
+ const renderer = input.routeRendererFactory.getExplicitViewRenderer(integrationName);
10
+ if (!renderer) {
11
+ throw new Error(input.errors.noRendererForIntegration(integrationName));
12
+ }
13
+ const props = input.view.staticProps ? (await input.view.staticProps({
14
+ pathname: { params: input.params },
15
+ appConfig: input.appConfig,
16
+ runtimeOrigin: input.runtimeOrigin
17
+ })).props : {};
18
+ return {
19
+ renderer,
20
+ props,
21
+ view: input.view
22
+ };
23
+ }
24
+ export {
25
+ prepareExplicitStaticRender
26
+ };
@@ -1,19 +1,22 @@
1
- import type { EcoPagesAppConfig } from '../../internal-types.js';
2
- import type { StaticRoute } from '../../public-types.js';
3
- import type { RouteRendererFactory } from '../../route-renderer/route-renderer.js';
1
+ import type { EcoPagesAppConfig } from '../../types/internal-types.js';
2
+ import type { StaticRoute } from '../../types/public-types.js';
3
+ import type { ExplicitViewRendererResolver } from '../../route-renderer/route-renderer.js';
4
4
  export declare const EXPLICIT_STATIC_ROUTE_MATCHER_ERRORS: {
5
5
  readonly missingIntegration: (routePath: string) => string;
6
6
  readonly noRendererForIntegration: (integrationName: string) => string;
7
7
  };
8
8
  export interface ExplicitStaticRouteMatcherOptions {
9
9
  appConfig: EcoPagesAppConfig;
10
- routeRendererFactory: RouteRendererFactory;
10
+ routeRendererFactory: ExplicitViewRendererResolver;
11
11
  staticRoutes: StaticRoute[];
12
12
  }
13
13
  export interface ExplicitRouteMatch {
14
14
  route: StaticRoute;
15
15
  params: Record<string, string>;
16
16
  }
17
+ /**
18
+ * Matches and renders explicit static routes declared through `app.static()`.
19
+ */
17
20
  export declare class ExplicitStaticRouteMatcher {
18
21
  private readonly appConfig;
19
22
  private readonly routeRendererFactory;
@@ -1,4 +1,5 @@
1
1
  import { appLogger } from "../../global/app-logger.js";
2
+ import { prepareExplicitStaticRender } from "./explicit-static-render-preparation.js";
2
3
  const EXPLICIT_STATIC_ROUTE_MATCHER_ERRORS = {
3
4
  missingIntegration: (routePath) => `View at ${routePath} is missing __eco.integration. Ensure it's defined with eco.page() and exported as default.`,
4
5
  noRendererForIntegration: (integrationName) => `No renderer found for integration: ${integrationName}`
@@ -71,20 +72,20 @@ class ExplicitStaticRouteMatcher {
71
72
  try {
72
73
  const mod = await route.loader();
73
74
  const view = mod.default;
74
- const integrationName = view.config?.__eco?.integration;
75
- if (!integrationName) {
76
- throw new Error(EXPLICIT_STATIC_ROUTE_MATCHER_ERRORS.missingIntegration(route.path));
77
- }
78
- const renderer = this.routeRendererFactory.getRendererByIntegration(integrationName);
79
- if (!renderer) {
80
- throw new Error(EXPLICIT_STATIC_ROUTE_MATCHER_ERRORS.noRendererForIntegration(integrationName));
81
- }
82
- const props = view.staticProps ? (await view.staticProps({
83
- pathname: { params },
75
+ const {
76
+ renderer,
77
+ props,
78
+ view: renderableView
79
+ } = await prepareExplicitStaticRender({
80
+ routePath: route.path,
81
+ view,
82
+ params,
84
83
  appConfig: this.appConfig,
85
- runtimeOrigin: this.appConfig.baseUrl
86
- })).props : {};
87
- return renderer.renderToResponse(view, props, {});
84
+ runtimeOrigin: this.appConfig.baseUrl,
85
+ routeRendererFactory: this.routeRendererFactory,
86
+ errors: EXPLICIT_STATIC_ROUTE_MATCHER_ERRORS
87
+ });
88
+ return renderer.renderToResponse(renderableView, props, {});
88
89
  } catch (error) {
89
90
  appLogger.error(
90
91
  `Error rendering explicit static route ${route.path}:`,
@@ -1,8 +1,6 @@
1
- import type { Middleware, ApiHandlerContext, RequestLocals } from '../../public-types.js';
1
+ import type { FileRouteMiddleware, FileRouteMiddlewareContext, RequestLocals } from '../../types/public-types.js';
2
2
  import type { PageCacheService } from '../../services/cache/page-cache-service.js';
3
3
  export declare const FILE_ROUTE_MIDDLEWARE_PIPELINE_ERRORS: {
4
- readonly CTX_RENDER_UNAVAILABLE: "[ecopages] ctx.render is not available in file-route middleware";
5
- readonly CTX_RENDER_PARTIAL_UNAVAILABLE: "[ecopages] ctx.renderPartial is not available in file-route middleware";
6
4
  readonly middlewareRequiresDynamic: (filePath: string) => string;
7
5
  };
8
6
  /**
@@ -26,7 +24,7 @@ export declare class FileRouteMiddlewarePipeline {
26
24
  * @throws LocalsAccessError When middleware is configured for a non-dynamic page.
27
25
  */
28
26
  assertValidConfiguration(input: {
29
- middleware: Middleware[];
27
+ middleware: FileRouteMiddleware[];
30
28
  pageCacheStrategy: 'static' | 'dynamic' | {
31
29
  revalidate: number;
32
30
  tags?: string[];
@@ -36,9 +34,8 @@ export declare class FileRouteMiddlewarePipeline {
36
34
  /**
37
35
  * Creates the request-scoped middleware context used by page middleware.
38
36
  *
39
- * The context intentionally disables `render()` and `renderPartial()` inside
40
- * file-route middleware because rendering is owned by the page route pipeline,
41
- * not by middleware stages.
37
+ * The context intentionally omits `render()` and `renderPartial()` because
38
+ * rendering is owned by the page route pipeline, not by middleware stages.
42
39
  *
43
40
  * @param input Request details and the mutable locals store.
44
41
  * @returns Middleware execution context.
@@ -47,7 +44,7 @@ export declare class FileRouteMiddlewarePipeline {
47
44
  request: Request;
48
45
  params: Record<string, string>;
49
46
  locals: RequestLocals;
50
- }): ApiHandlerContext;
47
+ }): FileRouteMiddlewareContext;
51
48
  /**
52
49
  * Runs the middleware chain and eventually delegates to the render callback.
53
50
  *
@@ -58,8 +55,8 @@ export declare class FileRouteMiddlewarePipeline {
58
55
  * @returns Response from middleware or final render stage.
59
56
  */
60
57
  run(input: {
61
- middleware: Middleware[];
62
- context: ApiHandlerContext;
58
+ middleware: FileRouteMiddleware[];
59
+ context: FileRouteMiddlewareContext;
63
60
  renderResponse: () => Promise<Response>;
64
61
  }): Promise<Response>;
65
62
  }
@@ -2,11 +2,10 @@ import { createRequire } from "../../utils/locals-utils.js";
2
2
  import { ApiResponseBuilder } from "./api-response.js";
3
3
  import { LocalsAccessError } from "../../errors/locals-access-error.js";
4
4
  const FILE_ROUTE_MIDDLEWARE_PIPELINE_ERRORS = {
5
- CTX_RENDER_UNAVAILABLE: "[ecopages] ctx.render is not available in file-route middleware",
6
- CTX_RENDER_PARTIAL_UNAVAILABLE: "[ecopages] ctx.renderPartial is not available in file-route middleware",
7
5
  middlewareRequiresDynamic: (filePath) => `[ecopages] Page middleware requires cache: 'dynamic'. Page: ${filePath}`
8
6
  };
9
7
  class FileRouteMiddlewarePipeline {
8
+ cacheService;
10
9
  constructor(cacheService) {
11
10
  this.cacheService = cacheService;
12
11
  }
@@ -29,9 +28,8 @@ class FileRouteMiddlewarePipeline {
29
28
  /**
30
29
  * Creates the request-scoped middleware context used by page middleware.
31
30
  *
32
- * The context intentionally disables `render()` and `renderPartial()` inside
33
- * file-route middleware because rendering is owned by the page route pipeline,
34
- * not by middleware stages.
31
+ * The context intentionally omits `render()` and `renderPartial()` because
32
+ * rendering is owned by the page route pipeline, not by middleware stages.
35
33
  *
36
34
  * @param input Request details and the mutable locals store.
37
35
  * @returns Middleware execution context.
@@ -47,12 +45,6 @@ class FileRouteMiddlewarePipeline {
47
45
  },
48
46
  locals: input.locals,
49
47
  require: createRequire(() => context.locals),
50
- render: async () => {
51
- throw new Error(FILE_ROUTE_MIDDLEWARE_PIPELINE_ERRORS.CTX_RENDER_UNAVAILABLE);
52
- },
53
- renderPartial: async () => {
54
- throw new Error(FILE_ROUTE_MIDDLEWARE_PIPELINE_ERRORS.CTX_RENDER_PARTIAL_UNAVAILABLE);
55
- },
56
48
  json: (data, options) => {
57
49
  const builder = new ApiResponseBuilder();
58
50
  if (options?.status) builder.status(options.status);
@@ -1,19 +1,23 @@
1
- import type { EcoPagesAppConfig, FileSystemServerOptions } from '../../internal-types.js';
2
- import type { RouteRendererBody } from '../../public-types.js';
3
- import type { RouteRendererFactory } from '../../route-renderer/route-renderer.js';
1
+ import type { FileSystemServerOptions } from '../../types/internal-types.js';
2
+ import type { RouteRendererBody } from '../../types/public-types.js';
3
+ /**
4
+ * Builds HTTP responses for static files and shared file-system fallbacks.
5
+ */
4
6
  export declare class FileSystemServerResponseFactory {
5
- private appConfig;
6
- private routeRendererFactory;
7
7
  private options;
8
- constructor({ appConfig, routeRendererFactory, options, }: {
9
- appConfig: EcoPagesAppConfig;
10
- routeRendererFactory: RouteRendererFactory;
8
+ constructor({ options }: {
11
9
  options: FileSystemServerOptions;
12
10
  });
13
11
  isHtml(contentType: string): contentType is "text/html";
14
12
  shouldEnableGzip(contentType: string): boolean;
15
13
  createResponseWithBody(body: RouteRendererBody, init?: ResponseInit): Promise<Response>;
16
14
  createDefaultNotFoundResponse(): Promise<Response>;
17
- createCustomNotFoundResponse(): Promise<Response>;
18
- createFileResponse(filePath: string, contentType: string): Promise<Response>;
15
+ /**
16
+ * Wraps already-rendered HTML in a 404 response envelope.
17
+ */
18
+ createHtmlNotFoundResponse(body: RouteRendererBody): Promise<Response>;
19
+ /**
20
+ * Reads a static file response, returning `null` when the file is missing.
21
+ */
22
+ createFileResponse(filePath: string, contentType: string): Promise<Response | null>;
19
23
  }
@@ -1,17 +1,9 @@
1
- import { STATUS_MESSAGE } from "../../constants.js";
1
+ import { STATUS_MESSAGE } from "../../config/constants.js";
2
2
  import { appLogger } from "../../global/app-logger.js";
3
3
  import { fileSystem } from "@ecopages/file-system";
4
4
  class FileSystemServerResponseFactory {
5
- appConfig;
6
- routeRendererFactory;
7
5
  options;
8
- constructor({
9
- appConfig,
10
- routeRendererFactory,
11
- options
12
- }) {
13
- this.appConfig = appConfig;
14
- this.routeRendererFactory = routeRendererFactory;
6
+ constructor({ options }) {
15
7
  this.options = options;
16
8
  }
17
9
  isHtml(contentType) {
@@ -34,22 +26,11 @@ class FileSystemServerResponseFactory {
34
26
  status: 404
35
27
  });
36
28
  }
37
- async createCustomNotFoundResponse() {
38
- const error404TemplatePath = this.appConfig.absolutePaths.error404TemplatePath;
39
- try {
40
- fileSystem.verifyFileExists(error404TemplatePath);
41
- } catch {
42
- appLogger.debug(
43
- "Custom 404 template not found, falling back to default 404 response",
44
- error404TemplatePath
45
- );
46
- return this.createDefaultNotFoundResponse();
47
- }
48
- const routeRenderer = this.routeRendererFactory.createRenderer(error404TemplatePath);
49
- const result = await routeRenderer.createRoute({
50
- file: error404TemplatePath
51
- });
52
- return await this.createResponseWithBody(result.body, {
29
+ /**
30
+ * Wraps already-rendered HTML in a 404 response envelope.
31
+ */
32
+ async createHtmlNotFoundResponse(body) {
33
+ return await this.createResponseWithBody(body, {
53
34
  status: 404,
54
35
  statusText: STATUS_MESSAGE[404],
55
36
  headers: {
@@ -57,6 +38,9 @@ class FileSystemServerResponseFactory {
57
38
  }
58
39
  });
59
40
  }
41
+ /**
42
+ * Reads a static file response, returning `null` when the file is missing.
43
+ */
60
44
  async createFileResponse(filePath, contentType) {
61
45
  try {
62
46
  let file;
@@ -88,7 +72,7 @@ class FileSystemServerResponseFactory {
88
72
  } else {
89
73
  appLogger.error("Error reading file", filePath, err);
90
74
  }
91
- return this.createCustomNotFoundResponse();
75
+ return null;
92
76
  }
93
77
  }
94
78
  }
@@ -1,16 +1,14 @@
1
- import type { MatchResult } from '../../internal-types.js';
2
- import type { RouteRendererFactory } from '../../route-renderer/route-renderer.js';
3
- import type { FSRouter } from '../../router/fs-router.js';
1
+ import type { EcoPagesAppConfig, MatchResult } from '../../types/internal-types.js';
2
+ import type { PageRendererResolver } from '../../route-renderer/route-renderer.js';
3
+ import type { RouteRegistry } from '../../router/server/route-registry.js';
4
4
  import type { PageCacheService } from '../../services/cache/page-cache-service.js';
5
5
  import type { CacheStrategy } from '../../services/cache/cache.types.js';
6
6
  import type { FileSystemServerResponseFactory } from './fs-server-response-factory.js';
7
- export declare const FILE_SYSTEM_RESPONSE_MATCHER_ERRORS: {
8
- readonly transpilePageModuleFailed: (details: string) => string;
9
- readonly noTranspiledOutputForPageModule: (filePath: string) => string;
10
- };
11
7
  export interface FileSystemResponseMatcherOptions {
12
- router: FSRouter;
13
- routeRendererFactory: RouteRendererFactory;
8
+ appConfig: EcoPagesAppConfig;
9
+ assetPrefix: string;
10
+ router: RouteRegistry;
11
+ routeRendererFactory: PageRendererResolver;
14
12
  fileSystemResponseFactory: FileSystemServerResponseFactory;
15
13
  /** Optional cache service. When null, caching is disabled. */
16
14
  cacheService?: PageCacheService | null;
@@ -20,23 +18,22 @@ export interface FileSystemResponseMatcherOptions {
20
18
  /**
21
19
  * Matches file-system routes to rendered HTML responses.
22
20
  *
23
- * This class sits at the request-time boundary between router matches and the
24
- * render pipeline. It coordinates page module inspection, request-local policy,
21
+ * This render pipeline coordinates page module inspection, request-local policy,
25
22
  * renderer invocation, middleware execution, cache integration, and fallback
26
23
  * error translation.
27
24
  */
28
25
  export declare class FileSystemResponseMatcher {
26
+ private appConfig;
27
+ private assetPrefix;
29
28
  private router;
30
29
  private routeRendererFactory;
31
30
  private fileSystemResponseFactory;
32
- private pageModuleImportService;
33
31
  private pageRequestCacheCoordinator;
34
32
  private fileRouteMiddlewarePipeline;
35
- constructor({ router, routeRendererFactory, fileSystemResponseFactory, cacheService, defaultCacheStrategy, }: FileSystemResponseMatcherOptions);
33
+ constructor({ appConfig, assetPrefix, router, routeRendererFactory, fileSystemResponseFactory, cacheService, defaultCacheStrategy, }: FileSystemResponseMatcherOptions);
36
34
  /**
37
35
  * Resolves unmatched paths either as static asset requests or as the custom
38
36
  * not-found page.
39
- *
40
37
  * @param requestUrl Incoming pathname.
41
38
  * @returns Static file response or rendered 404 response.
42
39
  */
@@ -53,12 +50,19 @@ export declare class FileSystemResponseMatcher {
53
50
  * @returns Final response for the matched route.
54
51
  */
55
52
  handleMatch(match: MatchResult, request?: Request): Promise<Response>;
53
+ /**
54
+ * Renders the app-owned custom 404 page, falling back to the default text 404
55
+ * when the page template cannot be resolved.
56
+ */
57
+ private renderCustomNotFoundResponse;
58
+ private createExecutionPlan;
56
59
  /**
57
60
  * Loads the matched page module for request-time inspection.
58
61
  *
59
62
  * The matcher needs access to page-level metadata such as `cache` and
60
- * `middleware` before full rendering starts, so it uses the shared module
61
- * import service directly rather than going through route rendering.
63
+ * `middleware` before full rendering starts, so it asks the owning route
64
+ * renderer to load the page module. That preserves integration-specific page
65
+ * import setup for request-time inspection as well as for full rendering.
62
66
  *
63
67
  * @param filePath Absolute page module path.
64
68
  * @returns Imported page module.