@ecopages/core 0.2.0-alpha.54 → 0.2.0-alpha.55

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 (594) hide show
  1. package/package.json +196 -91
  2. package/src/adapters/abstract/application-adapter.d.ts +194 -0
  3. package/src/adapters/abstract/application-adapter.js +121 -0
  4. package/src/adapters/abstract/router-adapter.d.ts +26 -0
  5. package/src/adapters/abstract/router-adapter.js +5 -0
  6. package/src/adapters/abstract/server-adapter.d.ts +69 -0
  7. package/src/adapters/abstract/server-adapter.js +15 -0
  8. package/src/adapters/bun/client-bridge.d.ts +34 -0
  9. package/src/adapters/bun/client-bridge.js +48 -0
  10. package/src/adapters/bun/create-app.d.ts +60 -0
  11. package/src/adapters/bun/create-app.js +140 -0
  12. package/src/adapters/bun/hmr-manager.d.ts +47 -0
  13. package/src/adapters/bun/hmr-manager.js +58 -0
  14. package/src/adapters/bun/index.d.ts +2 -0
  15. package/src/adapters/bun/index.js +8 -0
  16. package/src/adapters/bun/runtime-host.d.ts +52 -0
  17. package/src/adapters/bun/runtime-host.js +56 -0
  18. package/src/adapters/bun/server-adapter.d.ts +223 -0
  19. package/src/adapters/bun/server-adapter.js +450 -0
  20. package/src/adapters/bun/static-preview-host.d.ts +28 -0
  21. package/src/adapters/bun/static-preview-host.js +45 -0
  22. package/src/adapters/create-app.d.ts +20 -0
  23. package/src/adapters/create-app.js +66 -0
  24. package/src/adapters/index.d.ts +2 -0
  25. package/src/adapters/index.js +8 -0
  26. package/src/adapters/node/create-app.d.ts +24 -0
  27. package/src/adapters/node/create-app.js +92 -0
  28. package/src/adapters/node/http-request-bridge.d.ts +57 -0
  29. package/src/adapters/node/http-request-bridge.js +118 -0
  30. package/src/adapters/node/node-client-bridge.d.ts +26 -0
  31. package/src/adapters/node/node-client-bridge.js +66 -0
  32. package/src/adapters/node/node-hmr-manager.d.ts +52 -0
  33. package/src/adapters/node/node-hmr-manager.js +49 -0
  34. package/src/adapters/node/runtime-host.d.ts +57 -0
  35. package/src/adapters/node/runtime-host.js +92 -0
  36. package/src/adapters/node/server-adapter-dependencies.d.ts +19 -0
  37. package/src/adapters/node/server-adapter-dependencies.js +18 -0
  38. package/src/adapters/node/server-adapter.d.ts +138 -0
  39. package/src/adapters/node/server-adapter.js +313 -0
  40. package/src/adapters/node/static-content-server.d.ts +60 -0
  41. package/src/adapters/node/static-content-server.js +194 -0
  42. package/src/adapters/node/static-preview-host.d.ts +55 -0
  43. package/src/adapters/node/static-preview-host.js +68 -0
  44. package/src/adapters/shared/api-response.d.ts +52 -0
  45. package/src/adapters/shared/api-response.js +96 -0
  46. package/src/adapters/shared/application-adapter.d.ts +18 -0
  47. package/src/adapters/shared/application-adapter.js +90 -0
  48. package/src/adapters/shared/define-api-handler.d.ts +25 -0
  49. package/src/adapters/shared/define-api-handler.js +15 -0
  50. package/src/adapters/shared/explicit-static-render-preparation.d.ts +25 -0
  51. package/src/adapters/shared/explicit-static-render-preparation.js +26 -0
  52. package/src/adapters/shared/explicit-static-route-matcher.d.ts +41 -0
  53. package/src/adapters/shared/explicit-static-route-matcher.js +101 -0
  54. package/src/adapters/shared/file-route-middleware-pipeline.d.ts +62 -0
  55. package/src/adapters/shared/file-route-middleware-pipeline.js +90 -0
  56. package/src/adapters/shared/fs-server-response-factory.d.ts +23 -0
  57. package/src/adapters/shared/fs-server-response-factory.js +81 -0
  58. package/src/adapters/shared/fs-server-response-matcher.d.ts +75 -0
  59. package/src/adapters/shared/fs-server-response-matcher.js +186 -0
  60. package/src/adapters/shared/hmr-entrypoint-registrar.d.ts +55 -0
  61. package/src/adapters/shared/hmr-entrypoint-registrar.js +87 -0
  62. package/src/adapters/shared/hmr-html-response.d.ts +22 -0
  63. package/src/adapters/shared/hmr-html-response.js +33 -0
  64. package/src/adapters/shared/render-context.d.ts +16 -0
  65. package/src/adapters/shared/render-context.js +93 -0
  66. package/src/adapters/shared/runtime-app-bootstrap.d.ts +26 -0
  67. package/src/adapters/shared/runtime-app-bootstrap.js +46 -0
  68. package/src/adapters/shared/runtime-host.d.ts +12 -0
  69. package/src/adapters/shared/runtime-host.js +0 -0
  70. package/src/adapters/shared/server-adapter.d.ts +108 -0
  71. package/src/adapters/shared/server-adapter.js +436 -0
  72. package/src/adapters/shared/server-route-handler.d.ts +89 -0
  73. package/src/adapters/shared/server-route-handler.js +111 -0
  74. package/src/adapters/shared/server-static-builder.d.ts +71 -0
  75. package/src/adapters/shared/server-static-builder.js +100 -0
  76. package/src/adapters/shared/shared-hmr-manager.d.ts +59 -0
  77. package/src/adapters/shared/shared-hmr-manager.js +241 -0
  78. package/src/adapters/shared/static-preview-host.d.ts +10 -0
  79. package/src/adapters/shared/static-preview-host.js +0 -0
  80. package/src/build/browser-runtime-manifest.d.ts +31 -0
  81. package/src/build/browser-runtime-manifest.js +61 -0
  82. package/src/build/{browser-runtime-plugin-helpers.ts → browser-runtime-plugin-helpers.d.ts} +2 -13
  83. package/src/build/browser-runtime-plugin-helpers.js +14 -0
  84. package/src/build/browser-runtime-plugin.d.ts +78 -0
  85. package/src/build/browser-runtime-plugin.js +172 -0
  86. package/src/build/build-adapter.d.ts +504 -0
  87. package/src/build/build-adapter.js +240 -0
  88. package/src/build/build-manifest.d.ts +33 -0
  89. package/src/build/build-manifest.js +49 -0
  90. package/src/build/build-types.d.ts +57 -0
  91. package/src/build/build-types.js +0 -0
  92. package/src/build/rolldown-build-adapter.d.ts +32 -0
  93. package/src/build/rolldown-build-adapter.js +260 -0
  94. package/src/build/rolldown-plugin-bridge.d.ts +50 -0
  95. package/src/build/rolldown-plugin-bridge.js +194 -0
  96. package/src/build/{runtime-build-executor.ts → runtime-build-executor.d.ts} +3 -19
  97. package/src/build/runtime-build-executor.js +19 -0
  98. package/src/build/runtime-build-output-normalizer.d.ts +3 -0
  99. package/src/build/runtime-build-output-normalizer.js +111 -0
  100. package/src/build/serialized-build-executor.d.ts +64 -0
  101. package/src/build/serialized-build-executor.js +63 -0
  102. package/src/build/server-side-css-shim-plugin.d.ts +41 -0
  103. package/src/build/server-side-css-shim-plugin.js +35 -0
  104. package/src/cache/{index.ts → index.d.ts} +1 -1
  105. package/src/cache/index.js +6 -0
  106. package/src/cache/module-parse-cache.d.ts +65 -0
  107. package/src/cache/module-parse-cache.js +75 -0
  108. package/src/config/config-builder.d.ts +252 -0
  109. package/src/config/config-builder.js +589 -0
  110. package/src/config/{constants.ts → constants.d.ts} +13 -22
  111. package/src/config/constants.js +25 -0
  112. package/src/dev/host-runtime.d.ts +10 -0
  113. package/src/dev/host-runtime.js +24 -0
  114. package/src/dev/sc-server.d.ts +30 -0
  115. package/src/dev/sc-server.js +111 -0
  116. package/src/eco/eco.browser.d.ts +2 -0
  117. package/src/eco/eco.browser.js +88 -0
  118. package/src/eco/eco.d.ts +9 -0
  119. package/src/eco/eco.js +119 -0
  120. package/src/eco/eco.types.d.ts +230 -0
  121. package/src/eco/eco.types.js +0 -0
  122. package/src/eco/eco.utils.d.ts +1 -0
  123. package/src/eco/eco.utils.js +10 -0
  124. package/src/eco/global-injector-map.d.ts +16 -0
  125. package/src/eco/global-injector-map.js +80 -0
  126. package/src/eco/lazy-injector-map.d.ts +8 -0
  127. package/src/eco/lazy-injector-map.js +70 -0
  128. package/src/eco/module-dependencies.d.ts +18 -0
  129. package/src/eco/module-dependencies.js +49 -0
  130. package/src/errors/http-error.d.ts +31 -0
  131. package/src/errors/http-error.js +50 -0
  132. package/src/errors/index.d.ts +3 -0
  133. package/src/errors/index.js +6 -0
  134. package/src/errors/locals-access-error.d.ts +4 -0
  135. package/src/errors/locals-access-error.js +9 -0
  136. package/src/global/app-logger.d.ts +2 -0
  137. package/src/global/app-logger.js +6 -0
  138. package/src/hmr/client/hmr-runtime.d.ts +5 -0
  139. package/src/hmr/client/hmr-runtime.js +117 -0
  140. package/src/hmr/hmr-strategy.d.ts +162 -0
  141. package/src/hmr/hmr-strategy.js +44 -0
  142. package/src/hmr/hmr.postcss.test.e2e.d.ts +1 -0
  143. package/src/hmr/hmr.postcss.test.e2e.js +31 -0
  144. package/src/hmr/hmr.test.e2e.d.ts +1 -0
  145. package/src/hmr/hmr.test.e2e.js +43 -0
  146. package/src/hmr/strategies/default-hmr-strategy.d.ts +43 -0
  147. package/src/hmr/strategies/default-hmr-strategy.js +34 -0
  148. package/src/hmr/strategies/js-hmr-strategy.d.ts +134 -0
  149. package/src/hmr/strategies/js-hmr-strategy.js +173 -0
  150. package/src/index.browser.d.ts +3 -0
  151. package/src/index.browser.js +4 -0
  152. package/src/index.d.ts +6 -0
  153. package/src/index.js +21 -0
  154. package/src/integrations/ghtml/ghtml-renderer.d.ts +16 -0
  155. package/src/integrations/ghtml/ghtml-renderer.js +57 -0
  156. package/src/integrations/ghtml/ghtml.constants.d.ts +1 -0
  157. package/src/integrations/ghtml/ghtml.constants.js +4 -0
  158. package/src/integrations/ghtml/ghtml.plugin.d.ts +16 -0
  159. package/src/integrations/ghtml/ghtml.plugin.js +20 -0
  160. package/src/plugins/alias-resolver-cache.d.ts +68 -0
  161. package/src/plugins/alias-resolver-cache.js +106 -0
  162. package/src/plugins/alias-resolver-plugin.d.ts +6 -0
  163. package/src/plugins/alias-resolver-plugin.js +65 -0
  164. package/src/plugins/eco-component-meta-plugin.d.ts +108 -0
  165. package/src/plugins/eco-component-meta-plugin.js +175 -0
  166. package/src/plugins/foreign-jsx-override-plugin.d.ts +33 -0
  167. package/src/plugins/foreign-jsx-override-plugin.js +41 -0
  168. package/src/plugins/integration-plugin.d.ts +230 -0
  169. package/src/plugins/integration-plugin.js +201 -0
  170. package/src/plugins/processor.d.ts +97 -0
  171. package/src/plugins/processor.js +141 -0
  172. package/src/plugins/{runtime-capability.ts → runtime-capability.d.ts} +3 -8
  173. package/src/plugins/runtime-capability.js +0 -0
  174. package/src/plugins/source-transform.d.ts +46 -0
  175. package/src/plugins/source-transform.js +71 -0
  176. package/src/route-renderer/orchestration/component-render-context.d.ts +97 -0
  177. package/src/route-renderer/orchestration/component-render-context.js +147 -0
  178. package/src/route-renderer/orchestration/declared-ownership-graph.d.ts +18 -0
  179. package/src/route-renderer/orchestration/declared-ownership-graph.js +34 -0
  180. package/src/route-renderer/orchestration/foreign-subtree-execution.service.d.ts +110 -0
  181. package/src/route-renderer/orchestration/foreign-subtree-execution.service.js +233 -0
  182. package/src/route-renderer/orchestration/integration-renderer.d.ts +534 -0
  183. package/src/route-renderer/orchestration/integration-renderer.js +991 -0
  184. package/src/route-renderer/orchestration/ownership-planning.service.d.ts +24 -0
  185. package/src/route-renderer/orchestration/ownership-planning.service.js +63 -0
  186. package/src/route-renderer/orchestration/ownership-validation.service.d.ts +29 -0
  187. package/src/route-renderer/orchestration/ownership-validation.service.js +53 -0
  188. package/src/route-renderer/orchestration/processed-asset-dedupe.d.ts +3 -0
  189. package/src/route-renderer/orchestration/processed-asset-dedupe.js +27 -0
  190. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.d.ts +91 -0
  191. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.js +170 -0
  192. package/src/route-renderer/orchestration/render-output.utils.d.ts +66 -0
  193. package/src/route-renderer/orchestration/render-output.utils.js +171 -0
  194. package/src/route-renderer/orchestration/route-render-orchestrator.d.ts +156 -0
  195. package/src/route-renderer/orchestration/route-render-orchestrator.js +577 -0
  196. package/src/route-renderer/orchestration/template-serialization.d.ts +38 -0
  197. package/src/route-renderer/orchestration/template-serialization.js +45 -0
  198. package/src/route-renderer/page-loading/component-dependency-collection.d.ts +37 -0
  199. package/src/route-renderer/page-loading/component-dependency-collection.js +132 -0
  200. package/src/route-renderer/page-loading/declared-asset-collection.d.ts +24 -0
  201. package/src/route-renderer/page-loading/declared-asset-collection.js +106 -0
  202. package/src/route-renderer/page-loading/dependency-resolver.d.ts +35 -0
  203. package/src/route-renderer/page-loading/dependency-resolver.js +115 -0
  204. package/src/route-renderer/page-loading/ecopages-virtual-imports.d.ts +11 -0
  205. package/src/route-renderer/page-loading/ecopages-virtual-imports.js +57 -0
  206. package/src/route-renderer/page-loading/lazy-entry-collection.d.ts +45 -0
  207. package/src/route-renderer/page-loading/lazy-entry-collection.js +105 -0
  208. package/src/route-renderer/page-loading/lazy-trigger-planning.d.ts +19 -0
  209. package/src/route-renderer/page-loading/lazy-trigger-planning.js +40 -0
  210. package/src/route-renderer/page-loading/module-declaration-aggregation.d.ts +5 -0
  211. package/src/route-renderer/page-loading/module-declaration-aggregation.js +33 -0
  212. package/src/route-renderer/page-loading/module-declaration-scripts.d.ts +3 -0
  213. package/src/route-renderer/page-loading/module-declaration-scripts.js +18 -0
  214. package/src/route-renderer/page-loading/page-dependency-bundling.d.ts +13 -0
  215. package/src/route-renderer/page-loading/page-dependency-bundling.js +137 -0
  216. package/src/route-renderer/page-loading/page-module-loader.d.ts +90 -0
  217. package/src/route-renderer/page-loading/page-module-loader.js +127 -0
  218. package/src/route-renderer/route-renderer.d.ts +69 -0
  219. package/src/route-renderer/route-renderer.js +80 -0
  220. package/src/router/client/link-intent.js +34 -0
  221. package/src/router/client/link-intent.test.browser.d.ts +1 -0
  222. package/src/router/client/link-intent.test.browser.js +43 -0
  223. package/src/router/client/navigation-coordinator.d.ts +169 -0
  224. package/src/router/client/navigation-coordinator.js +215 -0
  225. package/src/router/server/route-registry.d.ts +78 -0
  226. package/src/router/server/route-registry.js +262 -0
  227. package/src/services/assets/asset-processing-service/asset-dependency-keys.d.ts +3 -0
  228. package/src/services/assets/asset-processing-service/asset-dependency-keys.js +56 -0
  229. package/src/services/assets/asset-processing-service/asset-processing.service.d.ts +103 -0
  230. package/src/services/assets/asset-processing-service/asset-processing.service.js +285 -0
  231. package/src/services/assets/asset-processing-service/asset.factory.d.ts +17 -0
  232. package/src/services/assets/asset-processing-service/asset.factory.js +82 -0
  233. package/src/services/assets/asset-processing-service/assets.types.d.ts +103 -0
  234. package/src/services/assets/asset-processing-service/assets.types.js +0 -0
  235. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.d.ts +57 -0
  236. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.js +49 -0
  237. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.d.ts +20 -0
  238. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.js +41 -0
  239. package/src/services/assets/asset-processing-service/grouped-content-bundles.d.ts +30 -0
  240. package/src/services/assets/asset-processing-service/grouped-content-bundles.js +65 -0
  241. package/src/services/assets/asset-processing-service/index.d.ts +6 -0
  242. package/src/services/assets/asset-processing-service/index.js +6 -0
  243. package/src/services/assets/asset-processing-service/page-package.d.ts +6 -0
  244. package/src/services/assets/asset-processing-service/page-package.js +80 -0
  245. package/src/services/assets/asset-processing-service/{processor.interface.ts → processor.interface.d.ts} +5 -10
  246. package/src/services/assets/asset-processing-service/processor.interface.js +6 -0
  247. package/src/services/assets/asset-processing-service/processor.registry.d.ts +8 -0
  248. package/src/services/assets/asset-processing-service/processor.registry.js +15 -0
  249. package/src/services/assets/asset-processing-service/processors/base/base-processor.d.ts +24 -0
  250. package/src/services/assets/asset-processing-service/processors/base/base-processor.js +65 -0
  251. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.d.ts +22 -0
  252. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.js +136 -0
  253. package/src/services/assets/asset-processing-service/processors/index.d.ts +5 -0
  254. package/src/services/assets/asset-processing-service/processors/index.js +5 -0
  255. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.d.ts +6 -0
  256. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.js +120 -0
  257. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.d.ts +9 -0
  258. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.js +97 -0
  259. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.d.ts +42 -0
  260. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.js +126 -0
  261. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.d.ts +8 -0
  262. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +59 -0
  263. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.d.ts +9 -0
  264. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.js +69 -0
  265. package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.d.ts +18 -0
  266. package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.js +45 -0
  267. package/src/services/assets/browser-bundle.service.d.ts +73 -0
  268. package/src/services/assets/browser-bundle.service.js +41 -0
  269. package/src/services/cache/cache.types.d.ts +107 -0
  270. package/src/services/cache/cache.types.js +0 -0
  271. package/src/services/cache/index.d.ts +7 -0
  272. package/src/services/cache/index.js +7 -0
  273. package/src/services/cache/memory-cache-store.d.ts +42 -0
  274. package/src/services/cache/memory-cache-store.js +98 -0
  275. package/src/services/cache/page-cache-service.d.ts +70 -0
  276. package/src/services/cache/page-cache-service.js +152 -0
  277. package/src/services/cache/page-request-cache-coordinator.service.d.ts +75 -0
  278. package/src/services/cache/page-request-cache-coordinator.service.js +109 -0
  279. package/src/services/html/html-rewriter-provider.service.d.ts +40 -0
  280. package/src/services/html/html-rewriter-provider.service.js +68 -0
  281. package/src/services/html/html-transformer.service.d.ts +96 -0
  282. package/src/services/html/html-transformer.service.js +287 -0
  283. package/src/services/invalidation/development-invalidation.service.d.ts +74 -0
  284. package/src/services/invalidation/development-invalidation.service.js +190 -0
  285. package/src/services/module-loading/app-module-loader.service.d.ts +7 -0
  286. package/src/services/module-loading/app-module-loader.service.js +0 -0
  287. package/src/services/module-loading/app-server-module-transpiler.service.d.ts +24 -0
  288. package/src/services/module-loading/app-server-module-transpiler.service.js +130 -0
  289. package/src/services/module-loading/host-module-loader-registry.d.ts +4 -0
  290. package/src/services/module-loading/host-module-loader-registry.js +15 -0
  291. package/src/services/module-loading/{module-loading-types.ts → module-loading-types.d.ts} +0 -1
  292. package/src/services/module-loading/module-loading-types.js +0 -0
  293. package/src/services/module-loading/page-module-import.service.d.ts +95 -0
  294. package/src/services/module-loading/page-module-import.service.js +193 -0
  295. package/src/services/module-loading/server-module-transpiler.service.d.ts +63 -0
  296. package/src/services/module-loading/server-module-transpiler.service.js +64 -0
  297. package/src/services/module-loading/source-module-support.d.ts +5 -0
  298. package/src/services/module-loading/source-module-support.js +8 -0
  299. package/src/services/runtime-state/dev-graph.service.d.ts +118 -0
  300. package/src/services/runtime-state/dev-graph.service.js +162 -0
  301. package/src/services/runtime-state/entrypoint-dependency-graph.service.d.ts +41 -0
  302. package/src/services/runtime-state/entrypoint-dependency-graph.service.js +85 -0
  303. package/src/services/runtime-state/server-invalidation-state.service.d.ts +26 -0
  304. package/src/services/runtime-state/server-invalidation-state.service.js +35 -0
  305. package/src/services/validation/schema-validation-service.d.ts +122 -0
  306. package/src/services/validation/schema-validation-service.js +101 -0
  307. package/src/services/validation/{standard-schema.types.ts → standard-schema.types.d.ts} +17 -20
  308. package/src/services/validation/standard-schema.types.js +0 -0
  309. package/src/static-site-generator/static-site-generator.d.ts +104 -0
  310. package/src/static-site-generator/static-site-generator.js +316 -0
  311. package/src/types/internal-types.d.ts +232 -0
  312. package/src/types/internal-types.js +0 -0
  313. package/src/types/public-types.d.ts +1307 -0
  314. package/src/types/public-types.js +0 -0
  315. package/src/utils/deep-merge.d.ts +14 -0
  316. package/src/utils/deep-merge.js +32 -0
  317. package/src/utils/hash.d.ts +1 -0
  318. package/src/utils/hash.js +7 -0
  319. package/src/utils/html-escaping.d.ts +7 -0
  320. package/src/utils/html-escaping.js +6 -0
  321. package/src/utils/html.js +4 -0
  322. package/src/utils/invariant.d.ts +5 -0
  323. package/src/utils/invariant.js +11 -0
  324. package/src/utils/locals-utils.d.ts +15 -0
  325. package/src/utils/locals-utils.js +24 -0
  326. package/src/utils/parse-cli-args.d.ts +27 -0
  327. package/src/utils/parse-cli-args.js +62 -0
  328. package/src/utils/path-utils.module.d.ts +5 -0
  329. package/src/utils/path-utils.module.js +14 -0
  330. package/src/utils/resolve-work-dir.d.ts +11 -0
  331. package/src/utils/resolve-work-dir.js +31 -0
  332. package/src/utils/runtime.d.ts +11 -0
  333. package/src/utils/runtime.js +40 -0
  334. package/src/utils/server-utils.module.d.ts +19 -0
  335. package/src/utils/server-utils.module.js +56 -0
  336. package/src/watchers/project-watcher.d.ts +136 -0
  337. package/src/watchers/project-watcher.js +275 -0
  338. package/src/watchers/project-watcher.test-helpers.d.ts +4 -0
  339. package/src/watchers/project-watcher.test-helpers.js +52 -0
  340. package/src/adapters/abstract/application-adapter.test.ts +0 -218
  341. package/src/adapters/abstract/application-adapter.ts +0 -379
  342. package/src/adapters/abstract/router-adapter.ts +0 -30
  343. package/src/adapters/abstract/server-adapter.ts +0 -79
  344. package/src/adapters/bun/client-bridge.ts +0 -62
  345. package/src/adapters/bun/create-app.ts +0 -214
  346. package/src/adapters/bun/hmr-manager.test.ts +0 -265
  347. package/src/adapters/bun/hmr-manager.ts +0 -88
  348. package/src/adapters/bun/index.ts +0 -2
  349. package/src/adapters/bun/runtime-host.ts +0 -76
  350. package/src/adapters/bun/server-adapter.ts +0 -605
  351. package/src/adapters/bun/static-preview-host.ts +0 -70
  352. package/src/adapters/create-app.test.ts +0 -10
  353. package/src/adapters/create-app.ts +0 -91
  354. package/src/adapters/index.ts +0 -2
  355. package/src/adapters/node/create-app.test.ts +0 -76
  356. package/src/adapters/node/create-app.ts +0 -116
  357. package/src/adapters/node/http-request-bridge.test.ts +0 -146
  358. package/src/adapters/node/http-request-bridge.ts +0 -176
  359. package/src/adapters/node/node-client-bridge.test.ts +0 -198
  360. package/src/adapters/node/node-client-bridge.ts +0 -79
  361. package/src/adapters/node/node-hmr-manager.test.ts +0 -374
  362. package/src/adapters/node/node-hmr-manager.ts +0 -72
  363. package/src/adapters/node/runtime-host.test.ts +0 -49
  364. package/src/adapters/node/runtime-host.ts +0 -113
  365. package/src/adapters/node/server-adapter-dependencies.ts +0 -28
  366. package/src/adapters/node/server-adapter.test.ts +0 -84
  367. package/src/adapters/node/server-adapter.ts +0 -423
  368. package/src/adapters/node/static-content-server.test.ts +0 -60
  369. package/src/adapters/node/static-content-server.ts +0 -239
  370. package/src/adapters/node/static-preview-host.test.ts +0 -89
  371. package/src/adapters/node/static-preview-host.ts +0 -101
  372. package/src/adapters/shared/api-response.test.ts +0 -97
  373. package/src/adapters/shared/api-response.ts +0 -104
  374. package/src/adapters/shared/application-adapter.ts +0 -199
  375. package/src/adapters/shared/define-api-handler.ts +0 -66
  376. package/src/adapters/shared/explicit-static-render-preparation.ts +0 -58
  377. package/src/adapters/shared/explicit-static-route-matcher.test.ts +0 -381
  378. package/src/adapters/shared/explicit-static-route-matcher.ts +0 -131
  379. package/src/adapters/shared/file-route-middleware-pipeline.test.ts +0 -85
  380. package/src/adapters/shared/file-route-middleware-pipeline.ts +0 -118
  381. package/src/adapters/shared/fs-server-response-factory.test.ts +0 -176
  382. package/src/adapters/shared/fs-server-response-factory.ts +0 -96
  383. package/src/adapters/shared/fs-server-response-matcher.test.ts +0 -311
  384. package/src/adapters/shared/fs-server-response-matcher.ts +0 -240
  385. package/src/adapters/shared/hmr-entrypoint-registrar.ts +0 -149
  386. package/src/adapters/shared/hmr-html-response.ts +0 -54
  387. package/src/adapters/shared/hmr-manager.contract.test.ts +0 -228
  388. package/src/adapters/shared/hmr-manager.dispatch.test.ts +0 -229
  389. package/src/adapters/shared/render-context.test.ts +0 -244
  390. package/src/adapters/shared/render-context.ts +0 -161
  391. package/src/adapters/shared/runtime-app-bootstrap.test.ts +0 -96
  392. package/src/adapters/shared/runtime-app-bootstrap.ts +0 -72
  393. package/src/adapters/shared/runtime-host.ts +0 -11
  394. package/src/adapters/shared/server-adapter.test.ts +0 -130
  395. package/src/adapters/shared/server-adapter.ts +0 -571
  396. package/src/adapters/shared/server-route-handler.test.ts +0 -112
  397. package/src/adapters/shared/server-route-handler.ts +0 -153
  398. package/src/adapters/shared/server-static-builder.test.ts +0 -338
  399. package/src/adapters/shared/server-static-builder.ts +0 -170
  400. package/src/adapters/shared/shared-hmr-manager.ts +0 -298
  401. package/src/adapters/shared/static-preview-host.ts +0 -12
  402. package/src/build/browser-runtime-manifest.test.ts +0 -121
  403. package/src/build/browser-runtime-manifest.ts +0 -105
  404. package/src/build/browser-runtime-plugin-helpers.test.ts +0 -49
  405. package/src/build/browser-runtime-plugin.test.ts +0 -256
  406. package/src/build/browser-runtime-plugin.ts +0 -306
  407. package/src/build/build-adapter.test.ts +0 -463
  408. package/src/build/build-adapter.ts +0 -788
  409. package/src/build/build-manifest.ts +0 -79
  410. package/src/build/build-types.ts +0 -83
  411. package/src/build/rolldown-build-adapter.test.ts +0 -352
  412. package/src/build/rolldown-build-adapter.ts +0 -363
  413. package/src/build/rolldown-plugin-bridge.test.ts +0 -256
  414. package/src/build/rolldown-plugin-bridge.ts +0 -309
  415. package/src/build/runtime-build-executor.test.ts +0 -130
  416. package/src/build/runtime-build-output-normalizer.ts +0 -137
  417. package/src/build/serialized-build-executor.test.ts +0 -96
  418. package/src/build/serialized-build-executor.ts +0 -90
  419. package/src/build/server-side-css-shim-plugin.ts +0 -77
  420. package/src/cache/module-parse-cache.test.ts +0 -73
  421. package/src/cache/module-parse-cache.ts +0 -137
  422. package/src/config/config-builder.test.ts +0 -456
  423. package/src/config/config-builder.ts +0 -728
  424. package/src/config/config-builder.typecheck.test.ts +0 -96
  425. package/src/dev/host-runtime.ts +0 -34
  426. package/src/dev/sc-server.ts +0 -143
  427. package/src/eco/eco.browser.test.ts +0 -43
  428. package/src/eco/eco.browser.ts +0 -137
  429. package/src/eco/eco.test.ts +0 -781
  430. package/src/eco/eco.ts +0 -262
  431. package/src/eco/eco.types.ts +0 -293
  432. package/src/eco/eco.utils.test.ts +0 -219
  433. package/src/eco/eco.utils.ts +0 -5
  434. package/src/eco/global-injector-map.test.ts +0 -42
  435. package/src/eco/global-injector-map.ts +0 -112
  436. package/src/eco/lazy-injector-map.test.ts +0 -66
  437. package/src/eco/lazy-injector-map.ts +0 -120
  438. package/src/eco/module-dependencies.test.ts +0 -30
  439. package/src/eco/module-dependencies.ts +0 -75
  440. package/src/errors/http-error.test.ts +0 -134
  441. package/src/errors/http-error.ts +0 -72
  442. package/src/errors/index.ts +0 -3
  443. package/src/errors/locals-access-error.ts +0 -7
  444. package/src/global/app-logger.ts +0 -4
  445. package/src/global/utils.test.ts +0 -12
  446. package/src/hmr/client/__screenshots__/hmr-runtime.test.browser.ts/HMR-Runtime-HMR-Server-Integration-should-have-HMR-script-injected-in-page-1.png +0 -0
  447. package/src/hmr/client/__screenshots__/hmr-runtime.test.browser.ts/HMR-Runtime-HMR-Server-Integration-should-load-fixture-app-page-1.png +0 -0
  448. package/src/hmr/client/__screenshots__/hmr-runtime.test.browser.ts/HMR-Runtime-WebSocket-Connection-should-connect-to-correct-HMR-endpoint-1.png +0 -0
  449. package/src/hmr/client/hmr-runtime.ts +0 -162
  450. package/src/hmr/hmr-strategy.test.ts +0 -124
  451. package/src/hmr/hmr-strategy.ts +0 -177
  452. package/src/hmr/hmr.postcss.test.e2e.ts +0 -41
  453. package/src/hmr/hmr.test.e2e.ts +0 -66
  454. package/src/hmr/strategies/default-hmr-strategy.ts +0 -60
  455. package/src/hmr/strategies/js-hmr-strategy.test.ts +0 -344
  456. package/src/hmr/strategies/js-hmr-strategy.ts +0 -307
  457. package/src/index.browser.ts +0 -3
  458. package/src/index.ts +0 -15
  459. package/src/integrations/ghtml/ghtml-renderer.test.ts +0 -253
  460. package/src/integrations/ghtml/ghtml-renderer.ts +0 -87
  461. package/src/integrations/ghtml/ghtml.constants.ts +0 -1
  462. package/src/integrations/ghtml/ghtml.plugin.ts +0 -28
  463. package/src/plugins/alias-resolver-cache.test.ts +0 -110
  464. package/src/plugins/alias-resolver-cache.ts +0 -145
  465. package/src/plugins/alias-resolver-plugin.test.ts +0 -41
  466. package/src/plugins/alias-resolver-plugin.ts +0 -75
  467. package/src/plugins/eco-component-meta-plugin.test.ts +0 -421
  468. package/src/plugins/eco-component-meta-plugin.ts +0 -518
  469. package/src/plugins/foreign-jsx-override-plugin.test.ts +0 -65
  470. package/src/plugins/foreign-jsx-override-plugin.ts +0 -76
  471. package/src/plugins/integration-plugin.test.ts +0 -151
  472. package/src/plugins/integration-plugin.ts +0 -344
  473. package/src/plugins/processor.test.ts +0 -148
  474. package/src/plugins/processor.ts +0 -257
  475. package/src/plugins/source-transform.test.ts +0 -82
  476. package/src/plugins/source-transform.ts +0 -123
  477. package/src/route-renderer/orchestration/component-render-context.ts +0 -338
  478. package/src/route-renderer/orchestration/declared-ownership-graph.ts +0 -62
  479. package/src/route-renderer/orchestration/foreign-subtree-execution.service.ts +0 -431
  480. package/src/route-renderer/orchestration/integration-renderer.test.ts +0 -2251
  481. package/src/route-renderer/orchestration/integration-renderer.ts +0 -1384
  482. package/src/route-renderer/orchestration/ownership-planning.service.ts +0 -97
  483. package/src/route-renderer/orchestration/ownership-validation.service.ts +0 -76
  484. package/src/route-renderer/orchestration/processed-asset-dedupe.ts +0 -29
  485. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.test.ts +0 -435
  486. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.ts +0 -310
  487. package/src/route-renderer/orchestration/render-output.utils.ts +0 -310
  488. package/src/route-renderer/orchestration/route-render-orchestrator.prepare-render-options.test.ts +0 -1365
  489. package/src/route-renderer/orchestration/route-render-orchestrator.test.ts +0 -267
  490. package/src/route-renderer/orchestration/route-render-orchestrator.ts +0 -879
  491. package/src/route-renderer/orchestration/template-serialization.test.ts +0 -110
  492. package/src/route-renderer/orchestration/template-serialization.ts +0 -117
  493. package/src/route-renderer/page-loading/component-dependency-collection.ts +0 -202
  494. package/src/route-renderer/page-loading/declared-asset-collection.ts +0 -153
  495. package/src/route-renderer/page-loading/dependency-resolver.test.ts +0 -761
  496. package/src/route-renderer/page-loading/dependency-resolver.ts +0 -144
  497. package/src/route-renderer/page-loading/ecopages-virtual-imports.ts +0 -75
  498. package/src/route-renderer/page-loading/lazy-entry-collection.ts +0 -167
  499. package/src/route-renderer/page-loading/lazy-trigger-planning.ts +0 -74
  500. package/src/route-renderer/page-loading/module-declaration-aggregation.ts +0 -60
  501. package/src/route-renderer/page-loading/module-declaration-scripts.ts +0 -16
  502. package/src/route-renderer/page-loading/page-dependency-bundling.ts +0 -244
  503. package/src/route-renderer/page-loading/page-module-loader.test.ts +0 -183
  504. package/src/route-renderer/page-loading/page-module-loader.ts +0 -184
  505. package/src/route-renderer/route-renderer.ts +0 -133
  506. package/src/router/client/link-intent.test.browser.ts +0 -51
  507. package/src/router/client/link-intent.ts +0 -92
  508. package/src/router/client/navigation-coordinator.test.ts +0 -237
  509. package/src/router/client/navigation-coordinator.ts +0 -453
  510. package/src/router/server/route-registry.test.ts +0 -176
  511. package/src/router/server/route-registry.ts +0 -382
  512. package/src/services/assets/asset-processing-service/asset-dependency-keys.ts +0 -66
  513. package/src/services/assets/asset-processing-service/asset-processing.service.test.ts +0 -473
  514. package/src/services/assets/asset-processing-service/asset-processing.service.ts +0 -344
  515. package/src/services/assets/asset-processing-service/asset.factory.test.ts +0 -63
  516. package/src/services/assets/asset-processing-service/asset.factory.ts +0 -105
  517. package/src/services/assets/asset-processing-service/assets.types.ts +0 -128
  518. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.test.ts +0 -74
  519. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.ts +0 -98
  520. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.test.ts +0 -67
  521. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.ts +0 -78
  522. package/src/services/assets/asset-processing-service/grouped-content-bundles.ts +0 -104
  523. package/src/services/assets/asset-processing-service/index.ts +0 -6
  524. package/src/services/assets/asset-processing-service/page-package.test.ts +0 -135
  525. package/src/services/assets/asset-processing-service/page-package.ts +0 -103
  526. package/src/services/assets/asset-processing-service/processor.registry.ts +0 -18
  527. package/src/services/assets/asset-processing-service/processors/base/base-processor.test.ts +0 -59
  528. package/src/services/assets/asset-processing-service/processors/base/base-processor.ts +0 -83
  529. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.ts +0 -173
  530. package/src/services/assets/asset-processing-service/processors/index.ts +0 -5
  531. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.test.ts +0 -188
  532. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.ts +0 -138
  533. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.test.ts +0 -326
  534. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.ts +0 -116
  535. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.test.ts +0 -270
  536. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.ts +0 -145
  537. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.test.ts +0 -261
  538. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.ts +0 -72
  539. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.ts +0 -83
  540. package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.ts +0 -65
  541. package/src/services/assets/browser-bundle.service.test.ts +0 -66
  542. package/src/services/assets/browser-bundle.service.ts +0 -109
  543. package/src/services/cache/cache.types.ts +0 -126
  544. package/src/services/cache/index.ts +0 -18
  545. package/src/services/cache/memory-cache-store.test.ts +0 -225
  546. package/src/services/cache/memory-cache-store.ts +0 -130
  547. package/src/services/cache/page-cache-service.test.ts +0 -175
  548. package/src/services/cache/page-cache-service.ts +0 -202
  549. package/src/services/cache/page-request-cache-coordinator.service.test.ts +0 -79
  550. package/src/services/cache/page-request-cache-coordinator.service.ts +0 -131
  551. package/src/services/html/html-rewriter-provider.service.test.ts +0 -183
  552. package/src/services/html/html-rewriter-provider.service.ts +0 -105
  553. package/src/services/html/html-transformer.service.test.ts +0 -544
  554. package/src/services/html/html-transformer.service.ts +0 -369
  555. package/src/services/invalidation/development-invalidation.service.test.ts +0 -87
  556. package/src/services/invalidation/development-invalidation.service.ts +0 -262
  557. package/src/services/module-loading/app-module-loader.service.ts +0 -9
  558. package/src/services/module-loading/app-server-module-transpiler.service.test.ts +0 -297
  559. package/src/services/module-loading/app-server-module-transpiler.service.ts +0 -168
  560. package/src/services/module-loading/host-module-loader-registry.ts +0 -15
  561. package/src/services/module-loading/page-module-import.service.test.ts +0 -652
  562. package/src/services/module-loading/page-module-import.service.ts +0 -302
  563. package/src/services/module-loading/server-module-transpiler.service.test.ts +0 -242
  564. package/src/services/module-loading/server-module-transpiler.service.ts +0 -104
  565. package/src/services/module-loading/source-module-support.ts +0 -19
  566. package/src/services/runtime-state/dev-graph.service.ts +0 -217
  567. package/src/services/runtime-state/entrypoint-dependency-graph.service.ts +0 -136
  568. package/src/services/runtime-state/server-invalidation-state.service.ts +0 -68
  569. package/src/services/validation/schema-validation-service.test.ts +0 -223
  570. package/src/services/validation/schema-validation-service.ts +0 -204
  571. package/src/static-site-generator/static-site-generator.test.ts +0 -408
  572. package/src/static-site-generator/static-site-generator.ts +0 -445
  573. package/src/types/internal-types.ts +0 -243
  574. package/src/types/public-types.ts +0 -1508
  575. package/src/utils/deep-merge.test.ts +0 -114
  576. package/src/utils/deep-merge.ts +0 -47
  577. package/src/utils/hash.ts +0 -5
  578. package/src/utils/html-escaping.ts +0 -9
  579. package/src/utils/invariant.test.ts +0 -22
  580. package/src/utils/invariant.ts +0 -15
  581. package/src/utils/locals-utils.ts +0 -37
  582. package/src/utils/parse-cli-args.test.ts +0 -69
  583. package/src/utils/parse-cli-args.ts +0 -105
  584. package/src/utils/path-utils.module.ts +0 -14
  585. package/src/utils/path-utils.test.ts +0 -15
  586. package/src/utils/resolve-work-dir.ts +0 -45
  587. package/src/utils/runtime.ts +0 -44
  588. package/src/utils/server-utils.module.ts +0 -67
  589. package/src/utils/server-utils.test.ts +0 -38
  590. package/src/watchers/project-watcher.integration.test.ts +0 -337
  591. package/src/watchers/project-watcher.test-helpers.ts +0 -42
  592. package/src/watchers/project-watcher.test.ts +0 -768
  593. package/src/watchers/project-watcher.ts +0 -357
  594. /package/src/utils/{html.ts → html.d.ts} +0 -0
@@ -0,0 +1,589 @@
1
+ import path from "node:path";
2
+ import {
3
+ DEFAULT_ECOPAGES_DIST_DIR,
4
+ DEFAULT_ECOPAGES_HOSTNAME,
5
+ DEFAULT_ECOPAGES_PORT,
6
+ DEFAULT_ECOPAGES_WORK_DIR
7
+ } from "../config/constants.js";
8
+ import {
9
+ collectConfiguredAppBuildManifestContributions,
10
+ createBuildAdapter,
11
+ setAppBuildAdapter,
12
+ setAppBuildExecutor,
13
+ updateAppBuildManifest
14
+ } from "../build/build-adapter.js";
15
+ import { GHTML_PLUGIN_NAME } from "../integrations/ghtml/ghtml.constants.js";
16
+ import { ghtmlPlugin } from "../integrations/ghtml/ghtml.plugin.js";
17
+ import { createEcoComponentMetaPlugin } from "../plugins/eco-component-meta-plugin.js";
18
+ import { createEcoComponentMetaTransform } from "../plugins/eco-component-meta-plugin.js";
19
+ import {
20
+ NoopEntrypointDependencyGraph,
21
+ setAppEntrypointDependencyGraph
22
+ } from "../services/runtime-state/entrypoint-dependency-graph.service.js";
23
+ import {
24
+ CounterServerInvalidationState,
25
+ setAppServerInvalidationState
26
+ } from "../services/runtime-state/server-invalidation-state.service.js";
27
+ import { invariant } from "../utils/invariant.js";
28
+ import { appLogger } from "../global/app-logger.js";
29
+ import { fileSystem } from "@ecopages/file-system";
30
+ const CONFIG_BUILDER_ERRORS = {
31
+ DUPLICATE_INTEGRATION_NAMES: "Integrations names must be unique",
32
+ DUPLICATE_INTEGRATION_EXTENSIONS: "Integrations extensions must be unique",
33
+ MIXED_JSX_ENGINES: "Both kitajs and react integrations are enabled. Use per-file JSX import source/pragma consistently (e.g. `/** @jsxImportSource react */` for React files and `/** @jsxImportSource @kitajs/html */` for Kita files).",
34
+ duplicateProcessorName: (name) => `Processor with name "${name}" already exists`,
35
+ duplicateLoaderName: (name) => `Loader with name "${name}" already exists`,
36
+ duplicateSemanticTemplate: (kind, matches) => `Multiple ${kind} templates found: ${matches.join(", ")}`,
37
+ incompatibleRuntimeCapability: (kind, name, runtime, reason) => `Cannot enable ${kind} "${name}" on ${runtime}: ${reason}`,
38
+ unsupportedRuntimeVersion: (kind, name, runtime, current, min) => `Cannot enable ${kind} "${name}" on ${runtime} ${current}: requires runtime version ${min} or newer`,
39
+ invalidRuntimeVersion: (kind, name, version) => `Cannot validate ${kind} "${name}" runtimeCapability.minRuntimeVersion "${version}" because it is not a dot-separated numeric version`
40
+ };
41
+ class ConfigBuilder {
42
+ buildOwnership = "rolldown";
43
+ config = {
44
+ baseUrl: "",
45
+ rootDir: ".",
46
+ srcDir: "src",
47
+ pagesDir: "pages",
48
+ includesDir: "includes",
49
+ componentsDir: "components",
50
+ layoutsDir: "layouts",
51
+ publicDir: "public",
52
+ robotsTxt: {
53
+ preferences: {
54
+ "*": []
55
+ }
56
+ },
57
+ integrations: [],
58
+ integrationsDependencies: [],
59
+ distDir: DEFAULT_ECOPAGES_DIST_DIR,
60
+ defaultMetadata: {
61
+ title: "Ecopages",
62
+ description: "This is a static site generated with Ecopages"
63
+ },
64
+ additionalWatchPaths: [],
65
+ templatesExt: [],
66
+ absolutePaths: {
67
+ config: "",
68
+ componentsDir: "",
69
+ distDir: "",
70
+ workDir: "",
71
+ includesDir: "",
72
+ layoutsDir: "",
73
+ pagesDir: "",
74
+ projectDir: "",
75
+ publicDir: "",
76
+ srcDir: "",
77
+ htmlTemplatePath: "",
78
+ error404TemplatePath: ""
79
+ },
80
+ processors: /* @__PURE__ */ new Map(),
81
+ loaders: /* @__PURE__ */ new Map(),
82
+ sourceTransforms: /* @__PURE__ */ new Map(),
83
+ workDir: DEFAULT_ECOPAGES_WORK_DIR
84
+ };
85
+ /**
86
+ * Sets the base URL for the application.
87
+ * This URL is used as the root URL for all pages and assets.
88
+ *
89
+ * @param baseUrl - The base URL for the application (e.g., 'https://example.com')
90
+ * @returns The ConfigBuilder instance for method chaining
91
+ */
92
+ setBaseUrl(baseUrl) {
93
+ this.config.baseUrl = baseUrl;
94
+ return this;
95
+ }
96
+ /**
97
+ * Sets the root directory of the project.
98
+ * This is the base directory from which all other paths are resolved.
99
+ *
100
+ * @param rootDir - The root directory path
101
+ * @returns The ConfigBuilder instance for method chaining
102
+ */
103
+ setRootDir(rootDir) {
104
+ this.config.rootDir = rootDir;
105
+ return this;
106
+ }
107
+ /**
108
+ * Sets which runtime path owns build execution for the finalized app config.
109
+ *
110
+ * @remarks
111
+ * The app-owned build path is the default. The host-owned path should be
112
+ * selected only for host-driven compatibility flows where core must not
113
+ * silently fall back to app build execution.
114
+ */
115
+ setBuildOwnership(buildOwnership) {
116
+ this.buildOwnership = buildOwnership;
117
+ return this;
118
+ }
119
+ /**
120
+ * Sets the source directory relative to the root directory.
121
+ * This directory contains all the source files for the application.
122
+ *
123
+ * @param srcDir - The source directory name (default: 'src')
124
+ * @returns The ConfigBuilder instance for method chaining
125
+ */
126
+ setSrcDir(srcDir) {
127
+ this.config.srcDir = srcDir;
128
+ return this;
129
+ }
130
+ /**
131
+ * Sets the pages directory relative to the source directory.
132
+ * This directory contains all the page files for the application.
133
+ *
134
+ * @param pagesDir - The pages directory name (default: 'pages')
135
+ * @returns The ConfigBuilder instance for method chaining
136
+ */
137
+ setPagesDir(pagesDir) {
138
+ this.config.pagesDir = pagesDir;
139
+ return this;
140
+ }
141
+ /**
142
+ * Sets the includes directory relative to the source directory.
143
+ * This directory contains template includes and partials.
144
+ *
145
+ * @param includesDir - The includes directory name (default: 'includes')
146
+ * @returns The ConfigBuilder instance for method chaining
147
+ */
148
+ setIncludesDir(includesDir) {
149
+ this.config.includesDir = includesDir;
150
+ return this;
151
+ }
152
+ /**
153
+ * Sets the components directory relative to the source directory.
154
+ * This directory contains reusable components.
155
+ *
156
+ * @param componentsDir - The components directory name (default: 'components')
157
+ * @returns The ConfigBuilder instance for method chaining
158
+ */
159
+ setComponentsDir(componentsDir) {
160
+ this.config.componentsDir = componentsDir;
161
+ return this;
162
+ }
163
+ /**
164
+ * Sets the layouts directory relative to the source directory.
165
+ * This directory contains layout templates.
166
+ *
167
+ * @param layoutsDir - The layouts directory name (default: 'layouts')
168
+ * @returns The ConfigBuilder instance for method chaining
169
+ */
170
+ setLayoutsDir(layoutsDir) {
171
+ this.config.layoutsDir = layoutsDir;
172
+ return this;
173
+ }
174
+ /**
175
+ * Sets the public directory relative to the source directory.
176
+ * This directory contains static assets that should be served as-is.
177
+ *
178
+ * @param publicDir - The public directory name (default: 'public')
179
+ * @returns The ConfigBuilder instance for method chaining
180
+ */
181
+ setPublicDir(publicDir) {
182
+ this.config.publicDir = publicDir;
183
+ return this;
184
+ }
185
+ /**
186
+ * Sets the robots.txt configuration.
187
+ * This determines which paths are allowed/disallowed for search engines.
188
+ *
189
+ * @param robotsTxt - The robots.txt configuration object
190
+ * @returns The ConfigBuilder instance for method chaining
191
+ */
192
+ setRobotsTxt(robotsTxt) {
193
+ this.config.robotsTxt = robotsTxt;
194
+ return this;
195
+ }
196
+ /**
197
+ * Sets the integration plugins to use.
198
+ * These plugins provide additional functionality to the application.
199
+ *
200
+ * @param integrations - An array of integration plugins
201
+ * @returns The ConfigBuilder instance for method chaining
202
+ */
203
+ setIntegrations(integrations) {
204
+ this.config.integrations = integrations;
205
+ return this;
206
+ }
207
+ /**
208
+ * Sets the output directory for the built application.
209
+ *
210
+ * @param distDir - The distribution directory name (default: 'dist')
211
+ * @returns The ConfigBuilder instance for method chaining
212
+ */
213
+ setDistDir(distDir) {
214
+ this.config.distDir = distDir;
215
+ return this;
216
+ }
217
+ /**
218
+ * Sets the internal work directory for runtime-only artifacts.
219
+ *
220
+ * @remarks
221
+ * Use this when deployable output should stay clean while Ecopages still
222
+ * needs a separate workspace for server transpilation caches, runtime
223
+ * manifests, and other internal build products.
224
+ *
225
+ * @param workDir - The internal work directory name
226
+ * @returns The ConfigBuilder instance for method chaining
227
+ */
228
+ setWorkDir(workDir) {
229
+ this.config.workDir = workDir;
230
+ return this;
231
+ }
232
+ /**
233
+ * Sets the default metadata for pages.
234
+ * This is used when a page doesn't specify its own metadata.
235
+ *
236
+ * @param defaultMetadata - The default metadata object
237
+ * @returns The ConfigBuilder instance for method chaining
238
+ */
239
+ setDefaultMetadata(defaultMetadata) {
240
+ this.config.defaultMetadata = {
241
+ ...this.config.defaultMetadata,
242
+ ...defaultMetadata
243
+ };
244
+ return this;
245
+ }
246
+ /**
247
+ * Sets additional paths to watch for changes during development.
248
+ *
249
+ * @param additionalWatchPaths - An array of additional paths to watch
250
+ * @returns The ConfigBuilder instance for method chaining
251
+ */
252
+ setAdditionalWatchPaths(additionalWatchPaths) {
253
+ this.config.additionalWatchPaths = additionalWatchPaths;
254
+ return this;
255
+ }
256
+ /**
257
+ * Sets the processors to use for the application.
258
+ * This replaces any existing processors.
259
+ *
260
+ * @param processors - An array of processors
261
+ * @returns The ConfigBuilder instance for method chaining
262
+ */
263
+ setProcessors(processors) {
264
+ this.config.processors.clear();
265
+ for (const processor of processors) {
266
+ this.addProcessor(processor);
267
+ }
268
+ return this;
269
+ }
270
+ /**
271
+ * Adds a processor to the application.
272
+ *
273
+ * @param processor - The processor to add
274
+ * @returns The ConfigBuilder instance for method chaining
275
+ * @throws Error if a processor with the same name already exists
276
+ */
277
+ addProcessor(processor) {
278
+ if (this.config.processors.has(processor.name)) {
279
+ throw new Error(CONFIG_BUILDER_ERRORS.duplicateProcessorName(processor.name));
280
+ }
281
+ this.config.processors.set(processor.name, processor);
282
+ return this;
283
+ }
284
+ /**
285
+ * Sets the loaders to use for the application.
286
+ * This replaces any existing loaders.
287
+ *
288
+ * @param loaders - An array of build plugins to use as loaders
289
+ * @returns The ConfigBuilder instance for method chaining
290
+ */
291
+ setLoaders(loaders) {
292
+ this.config.loaders.clear();
293
+ for (const loader of loaders) {
294
+ this.addLoader(loader.name, loader);
295
+ }
296
+ return this;
297
+ }
298
+ /**
299
+ * Sets the source transforms to use for transform-first bundlers such as Vite.
300
+ * This replaces any existing source transforms.
301
+ */
302
+ setSourceTransforms(sourceTransforms) {
303
+ this.config.sourceTransforms.clear();
304
+ for (const sourceTransform of sourceTransforms) {
305
+ this.addSourceTransform(sourceTransform.name, sourceTransform);
306
+ }
307
+ return this;
308
+ }
309
+ /**
310
+ * Adds a loader to the application.
311
+ *
312
+ * @param name - The name of the loader
313
+ * @param loader - The build plugin to use as a loader
314
+ * @returns The ConfigBuilder instance for method chaining
315
+ * @throws Error if a loader with the same name already exists
316
+ */
317
+ addLoader(name, loader) {
318
+ if (this.config.loaders.has(name)) {
319
+ throw new Error(CONFIG_BUILDER_ERRORS.duplicateLoaderName(name));
320
+ }
321
+ this.config.loaders.set(name, loader);
322
+ return this;
323
+ }
324
+ /**
325
+ * Adds a source transform to the application.
326
+ *
327
+ * @throws Error if a source transform with the same name already exists.
328
+ */
329
+ addSourceTransform(name, sourceTransform) {
330
+ if (this.config.sourceTransforms.has(name)) {
331
+ throw new Error(CONFIG_BUILDER_ERRORS.duplicateLoaderName(name));
332
+ }
333
+ this.config.sourceTransforms.set(name, sourceTransform);
334
+ return this;
335
+ }
336
+ /**
337
+ * Sets the cache configuration for ISR and page caching.
338
+ *
339
+ * @param cacheConfig - The cache configuration object
340
+ * @returns The ConfigBuilder instance for method chaining
341
+ */
342
+ setCacheConfig(cacheConfig) {
343
+ this.config.cache = cacheConfig;
344
+ return this;
345
+ }
346
+ setExperimental(experimental) {
347
+ this.config.experimental = experimental;
348
+ return this;
349
+ }
350
+ createAbsolutePaths(config) {
351
+ const { srcDir, componentsDir, includesDir, layoutsDir, pagesDir, publicDir, distDir, workDir } = config;
352
+ const projectDir = config.rootDir;
353
+ const absoluteSrcDir = path.resolve(projectDir, srcDir);
354
+ const absoluteDistDir = path.resolve(projectDir, distDir);
355
+ const absoluteWorkDir = path.resolve(projectDir, workDir);
356
+ const absoluteIncludesDir = path.join(absoluteSrcDir, includesDir);
357
+ const absolutePagesDir = path.join(absoluteSrcDir, pagesDir);
358
+ this.config.absolutePaths = {
359
+ config: path.join(projectDir, "eco.config.ts"),
360
+ projectDir,
361
+ srcDir: absoluteSrcDir,
362
+ distDir: absoluteDistDir,
363
+ workDir: absoluteWorkDir,
364
+ componentsDir: path.join(absoluteSrcDir, componentsDir),
365
+ includesDir: absoluteIncludesDir,
366
+ layoutsDir: path.join(absoluteSrcDir, layoutsDir),
367
+ pagesDir: absolutePagesDir,
368
+ publicDir: path.join(absoluteSrcDir, publicDir),
369
+ htmlTemplatePath: this.resolveSemanticTemplatePath({
370
+ dirPath: absoluteIncludesDir,
371
+ basename: "html"
372
+ }),
373
+ error404TemplatePath: this.resolveSemanticTemplatePath({
374
+ dirPath: absolutePagesDir,
375
+ basename: "404"
376
+ })
377
+ };
378
+ return this;
379
+ }
380
+ resolveSemanticTemplatePath({ dirPath, basename }) {
381
+ const extensions = this.config.templatesExt.length > 0 ? this.config.templatesExt : [".ghtml.ts"];
382
+ const matches = extensions.map((extension) => path.join(dirPath, `${basename}${extension}`)).filter((candidate) => fileSystem.exists(candidate));
383
+ invariant(matches.length <= 1, CONFIG_BUILDER_ERRORS.duplicateSemanticTemplate(basename, matches));
384
+ if (matches.length === 1) {
385
+ return matches[0];
386
+ }
387
+ return path.join(dirPath, `${basename}${extensions[0]}`);
388
+ }
389
+ createIntegrationTemplatesExt(integrations) {
390
+ const integrationName = integrations.map((integration) => integration.name);
391
+ const uniqueName = new Set(integrationName);
392
+ invariant(integrationName.length === uniqueName.size, CONFIG_BUILDER_ERRORS.DUPLICATE_INTEGRATION_NAMES);
393
+ const hasKitaJs = uniqueName.has("kitajs");
394
+ const hasReact = uniqueName.has("react");
395
+ if (hasKitaJs && hasReact) {
396
+ appLogger.debug(CONFIG_BUILDER_ERRORS.MIXED_JSX_ENGINES);
397
+ }
398
+ const integrationsExtensions = integrations.flatMap((integration) => integration.extensions);
399
+ const uniqueExtensions = new Set(integrationsExtensions);
400
+ invariant(
401
+ integrationsExtensions.length === uniqueExtensions.size,
402
+ CONFIG_BUILDER_ERRORS.DUPLICATE_INTEGRATION_EXTENSIONS
403
+ );
404
+ this.config.templatesExt = integrationsExtensions;
405
+ }
406
+ initializeProcessors() {
407
+ for (const processor of this.config.processors.values()) {
408
+ processor.setContext(this.config);
409
+ }
410
+ }
411
+ validateRuntimeCapabilities() {
412
+ const runtimeEnvironment = this.detectRuntimeEnvironment();
413
+ const contributors = [
414
+ ...this.config.integrations.map((integration) => ({
415
+ kind: "integration",
416
+ name: integration.name,
417
+ runtimeCapability: integration.runtimeCapability
418
+ })),
419
+ ...Array.from(this.config.processors.values(), (processor) => ({
420
+ kind: "processor",
421
+ name: processor.name,
422
+ runtimeCapability: processor.runtimeCapability
423
+ }))
424
+ ];
425
+ for (const contributor of contributors) {
426
+ this.validateRuntimeCapability(contributor, runtimeEnvironment);
427
+ }
428
+ }
429
+ validateRuntimeCapability(contributor, environment) {
430
+ const declaration = contributor.runtimeCapability;
431
+ if (!declaration) {
432
+ return;
433
+ }
434
+ for (const tag of declaration.tags) {
435
+ if (environment.supportedTags.has(tag)) {
436
+ continue;
437
+ }
438
+ throw new Error(
439
+ CONFIG_BUILDER_ERRORS.incompatibleRuntimeCapability(
440
+ contributor.kind,
441
+ contributor.name,
442
+ environment.runtime,
443
+ this.describeUnsupportedRuntimeTag(tag)
444
+ )
445
+ );
446
+ }
447
+ if (!declaration.minRuntimeVersion) {
448
+ return;
449
+ }
450
+ const minVersion = this.parseVersion(declaration.minRuntimeVersion);
451
+ if (!minVersion) {
452
+ throw new Error(
453
+ CONFIG_BUILDER_ERRORS.invalidRuntimeVersion(
454
+ contributor.kind,
455
+ contributor.name,
456
+ declaration.minRuntimeVersion
457
+ )
458
+ );
459
+ }
460
+ const currentVersion = this.parseVersion(environment.version);
461
+ if (!currentVersion) {
462
+ return;
463
+ }
464
+ if (this.compareVersions(currentVersion, minVersion) >= 0) {
465
+ return;
466
+ }
467
+ throw new Error(
468
+ CONFIG_BUILDER_ERRORS.unsupportedRuntimeVersion(
469
+ contributor.kind,
470
+ contributor.name,
471
+ environment.runtime,
472
+ environment.version,
473
+ declaration.minRuntimeVersion
474
+ )
475
+ );
476
+ }
477
+ detectRuntimeEnvironment() {
478
+ const bunVersion = this.getBunVersion();
479
+ if (bunVersion) {
480
+ return {
481
+ runtime: "bun",
482
+ version: bunVersion,
483
+ supportedTags: /* @__PURE__ */ new Set([
484
+ "bun-only",
485
+ "node-compatible",
486
+ "requires-native-bun-api",
487
+ "requires-node-builtins"
488
+ ])
489
+ };
490
+ }
491
+ return {
492
+ runtime: "node",
493
+ version: process.versions.node,
494
+ supportedTags: /* @__PURE__ */ new Set(["node-compatible", "requires-node-builtins"])
495
+ };
496
+ }
497
+ getBunVersion() {
498
+ const bun = globalThis;
499
+ return typeof bun.Bun?.version === "string" ? bun.Bun.version : void 0;
500
+ }
501
+ describeUnsupportedRuntimeTag(tag) {
502
+ switch (tag) {
503
+ case "bun-only":
504
+ return "it is Bun-only";
505
+ case "requires-native-bun-api":
506
+ return "it requires the native Bun API";
507
+ case "requires-node-builtins":
508
+ return "it requires Node builtins";
509
+ case "node-compatible":
510
+ return "it requires a Node-compatible runtime";
511
+ }
512
+ }
513
+ parseVersion(version) {
514
+ const normalized = version.trim().replace(/^v/i, "");
515
+ if (!/^\d+(?:\.\d+)*$/.test(normalized)) {
516
+ return void 0;
517
+ }
518
+ return normalized.split(".").map((segment) => Number(segment));
519
+ }
520
+ compareVersions(left, right) {
521
+ const maxLength = Math.max(left.length, right.length);
522
+ for (let index = 0; index < maxLength; index += 1) {
523
+ const leftValue = left[index] ?? 0;
524
+ const rightValue = right[index] ?? 0;
525
+ if (leftValue > rightValue) {
526
+ return 1;
527
+ }
528
+ if (leftValue < rightValue) {
529
+ return -1;
530
+ }
531
+ }
532
+ return 0;
533
+ }
534
+ /**
535
+ * Initializes default loaders that are required for EcoPages to function.
536
+ * This includes the eco-component-meta-plugin which auto-injects __eco metadata into component configs.
537
+ */
538
+ async initializeDefaultLoaders() {
539
+ const componentMetaTransform = createEcoComponentMetaTransform({ config: this.config });
540
+ if (!this.config.sourceTransforms.has(componentMetaTransform.name)) {
541
+ this.config.sourceTransforms.set(componentMetaTransform.name, componentMetaTransform);
542
+ }
543
+ const componentMetaPlugin = createEcoComponentMetaPlugin({ config: this.config });
544
+ if (!this.config.loaders.has(componentMetaPlugin.name)) {
545
+ this.config.loaders.set(componentMetaPlugin.name, componentMetaPlugin);
546
+ }
547
+ }
548
+ reviewBaseUrl(baseUrl) {
549
+ if (baseUrl) {
550
+ this.config.baseUrl = baseUrl;
551
+ return;
552
+ }
553
+ const envBaseUrl = process.env.ECOPAGES_BASE_URL;
554
+ if (envBaseUrl) {
555
+ this.config.baseUrl = envBaseUrl;
556
+ } else if (!this.config.baseUrl) {
557
+ this.config.baseUrl = `http://${DEFAULT_ECOPAGES_HOSTNAME}:${DEFAULT_ECOPAGES_PORT}`;
558
+ }
559
+ }
560
+ /**
561
+ * Builds and returns the final configuration object.
562
+ * This performs validation and initialization of the configuration.
563
+ *
564
+ * @returns A promise that resolves to the final EcoPagesAppConfig
565
+ * @throws Error if required configuration is missing (e.g., baseUrl)
566
+ */
567
+ async build() {
568
+ this.reviewBaseUrl(this.config.baseUrl);
569
+ if (!this.config.integrations.some((integration) => integration.name === GHTML_PLUGIN_NAME)) {
570
+ this.config.integrations.push(ghtmlPlugin());
571
+ }
572
+ this.createIntegrationTemplatesExt(this.config.integrations);
573
+ this.createAbsolutePaths(this.config);
574
+ await this.initializeDefaultLoaders();
575
+ this.initializeProcessors();
576
+ this.validateRuntimeCapabilities();
577
+ const buildAdapter = createBuildAdapter({ ownership: this.buildOwnership });
578
+ setAppBuildAdapter(this.config, buildAdapter);
579
+ updateAppBuildManifest(this.config, await collectConfiguredAppBuildManifestContributions(this.config));
580
+ setAppServerInvalidationState(this.config, new CounterServerInvalidationState());
581
+ setAppEntrypointDependencyGraph(this.config, new NoopEntrypointDependencyGraph());
582
+ setAppBuildExecutor(this.config, buildAdapter);
583
+ return this.config;
584
+ }
585
+ }
586
+ export {
587
+ CONFIG_BUILDER_ERRORS,
588
+ ConfigBuilder
589
+ };
@@ -2,47 +2,38 @@
2
2
  * This file contains constants used throughout the project.
3
3
  * @module constants
4
4
  **/
5
-
6
5
  /**
7
6
  * Collection of status messages used in the application.
8
7
  */
9
- export const STATUS_MESSAGE = {
10
- 404: '404 Not Found',
8
+ export declare const STATUS_MESSAGE: {
9
+ 404: string;
11
10
  };
12
-
13
11
  /**
14
12
  *Variables used to determine if the app is running on Bun
15
13
  */
16
- export const IS_BUN = typeof Bun !== 'undefined';
17
-
14
+ export declare const IS_BUN: boolean;
18
15
  /**
19
16
  * Directory used for storing assets.
20
17
  */
21
- export const RESOLVED_ASSETS_DIR = 'assets';
22
-
18
+ export declare const RESOLVED_ASSETS_DIR = "assets";
23
19
  /**
24
20
  * Directory used for storing vendor assets.
25
21
  * This is a subdirectory of the assets directory.
26
22
  */
27
- export const RESOLVED_ASSETS_VENDORS_DIR: string = `${RESOLVED_ASSETS_DIR}/vendors`;
28
-
23
+ export declare const RESOLVED_ASSETS_VENDORS_DIR: string;
29
24
  /**
30
25
  * Base paths for generated project files.
31
26
  */
32
- export const GENERATED_BASE_PATHS = {
33
- types: 'node_modules/@types',
34
- cache: 'cache',
35
- } as const;
36
-
37
- export const DEFAULT_ECOPAGES_PORT = 3000;
38
-
39
- export const DEFAULT_ECOPAGES_HOSTNAME = 'localhost';
40
-
27
+ export declare const GENERATED_BASE_PATHS: {
28
+ readonly types: "node_modules/@types";
29
+ readonly cache: "cache";
30
+ };
31
+ export declare const DEFAULT_ECOPAGES_PORT = 3000;
32
+ export declare const DEFAULT_ECOPAGES_HOSTNAME = "localhost";
41
33
  /**
42
34
  * Default directory used for deployable output.
43
35
  */
44
- export const DEFAULT_ECOPAGES_DIST_DIR = 'dist';
45
-
36
+ export declare const DEFAULT_ECOPAGES_DIST_DIR = "dist";
46
37
  /**
47
38
  * Default internal working directory used for runtime-only artifacts.
48
39
  *
@@ -51,4 +42,4 @@ export const DEFAULT_ECOPAGES_DIST_DIR = 'dist';
51
42
  * It owns transpiled server modules, runtime manifests, and processor caches
52
43
  * so the export directory can remain a clean deployable tree.
53
44
  */
54
- export const DEFAULT_ECOPAGES_WORK_DIR = '.eco';
45
+ export declare const DEFAULT_ECOPAGES_WORK_DIR = ".eco";
@@ -0,0 +1,25 @@
1
+ const STATUS_MESSAGE = {
2
+ 404: "404 Not Found"
3
+ };
4
+ const IS_BUN = typeof Bun !== "undefined";
5
+ const RESOLVED_ASSETS_DIR = "assets";
6
+ const RESOLVED_ASSETS_VENDORS_DIR = `${RESOLVED_ASSETS_DIR}/vendors`;
7
+ const GENERATED_BASE_PATHS = {
8
+ types: "node_modules/@types",
9
+ cache: "cache"
10
+ };
11
+ const DEFAULT_ECOPAGES_PORT = 3e3;
12
+ const DEFAULT_ECOPAGES_HOSTNAME = "localhost";
13
+ const DEFAULT_ECOPAGES_DIST_DIR = "dist";
14
+ const DEFAULT_ECOPAGES_WORK_DIR = ".eco";
15
+ export {
16
+ DEFAULT_ECOPAGES_DIST_DIR,
17
+ DEFAULT_ECOPAGES_HOSTNAME,
18
+ DEFAULT_ECOPAGES_PORT,
19
+ DEFAULT_ECOPAGES_WORK_DIR,
20
+ GENERATED_BASE_PATHS,
21
+ IS_BUN,
22
+ RESOLVED_ASSETS_DIR,
23
+ RESOLVED_ASSETS_VENDORS_DIR,
24
+ STATUS_MESSAGE
25
+ };
@@ -0,0 +1,10 @@
1
+ import type { EcoPagesAppConfig } from '../types/public-types.js';
2
+ import { type DevelopmentInvalidationPlan } from '../services/invalidation/development-invalidation.service.js';
3
+ export type HostRuntimeModuleLoader = (id: string) => Promise<unknown>;
4
+ export interface DevelopmentHostRuntime {
5
+ registerHostModuleLoader(loader: HostRuntimeModuleLoader): void;
6
+ planFileChange(filePath: string): DevelopmentInvalidationPlan;
7
+ invalidateServerModules(changedFiles?: string[]): void;
8
+ resetRuntimeState(changedFiles?: string[]): void;
9
+ }
10
+ export declare function createDevelopmentHostRuntime(appConfig: EcoPagesAppConfig): DevelopmentHostRuntime;