@ecopages/core 0.2.0-alpha.9 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (357) hide show
  1. package/CHANGELOG.md +18 -11
  2. package/README.md +23 -26
  3. package/package.json +76 -58
  4. package/src/adapters/README.md +2 -2
  5. package/src/adapters/abstract/application-adapter.d.ts +28 -2
  6. package/src/adapters/abstract/application-adapter.js +14 -2
  7. package/src/adapters/abstract/router-adapter.d.ts +1 -1
  8. package/src/adapters/abstract/server-adapter.d.ts +2 -2
  9. package/src/adapters/bun/client-bridge.d.ts +1 -1
  10. package/src/adapters/bun/create-app.d.ts +4 -12
  11. package/src/adapters/bun/create-app.js +4 -5
  12. package/src/adapters/bun/hmr-manager.d.ts +4 -4
  13. package/src/adapters/bun/hmr-manager.js +8 -8
  14. package/src/adapters/bun/index.d.ts +1 -1
  15. package/src/adapters/bun/index.js +2 -2
  16. package/src/adapters/bun/server-adapter.d.ts +5 -5
  17. package/src/adapters/bun/server-adapter.js +6 -5
  18. package/src/adapters/bun/server-lifecycle.d.ts +4 -4
  19. package/src/adapters/bun/server-lifecycle.js +2 -2
  20. package/src/{create-app.d.ts → adapters/create-app.d.ts} +9 -6
  21. package/src/{create-app.js → adapters/create-app.js} +4 -4
  22. package/src/adapters/index.d.ts +1 -5
  23. package/src/adapters/index.js +1 -7
  24. package/src/adapters/node/create-app.d.ts +6 -9
  25. package/src/adapters/node/create-app.js +12 -6
  26. package/src/adapters/node/node-client-bridge.d.ts +1 -1
  27. package/src/adapters/node/node-hmr-manager.d.ts +2 -2
  28. package/src/adapters/node/node-hmr-manager.js +3 -3
  29. package/src/adapters/node/server-adapter.d.ts +4 -4
  30. package/src/adapters/node/server-adapter.js +13 -12
  31. package/src/adapters/node/static-content-server.d.ts +1 -1
  32. package/src/adapters/node/static-content-server.js +1 -1
  33. package/src/adapters/shared/application-adapter.d.ts +1 -1
  34. package/src/adapters/shared/define-api-handler.d.ts +1 -1
  35. package/src/adapters/shared/explicit-static-route-matcher.d.ts +2 -2
  36. package/src/adapters/shared/file-route-middleware-pipeline.d.ts +1 -1
  37. package/src/adapters/shared/fs-server-response-factory.d.ts +2 -2
  38. package/src/adapters/shared/fs-server-response-factory.js +1 -1
  39. package/src/adapters/shared/fs-server-response-matcher.d.ts +1 -1
  40. package/src/adapters/shared/hmr-entrypoint-registrar.js +1 -1
  41. package/src/adapters/shared/hmr-html-response.d.ts +1 -1
  42. package/src/adapters/shared/render-context.d.ts +2 -1
  43. package/src/adapters/shared/render-context.js +3 -1
  44. package/src/adapters/shared/runtime-bootstrap.d.ts +1 -1
  45. package/src/adapters/shared/runtime-bootstrap.js +1 -1
  46. package/src/adapters/shared/server-adapter.d.ts +1 -1
  47. package/src/adapters/shared/server-adapter.js +5 -1
  48. package/src/adapters/shared/server-route-handler.d.ts +4 -4
  49. package/src/adapters/shared/server-route-handler.js +3 -3
  50. package/src/adapters/shared/server-static-builder.d.ts +5 -5
  51. package/src/adapters/shared/server-static-builder.js +5 -4
  52. package/src/build/README.md +19 -13
  53. package/src/build/build-adapter.d.ts +67 -20
  54. package/src/build/build-adapter.js +420 -19
  55. package/src/build/dev-build-coordinator.d.ts +10 -12
  56. package/src/build/dev-build-coordinator.js +8 -15
  57. package/src/build/esbuild-build-adapter.d.ts +6 -0
  58. package/src/build/esbuild-build-adapter.js +94 -11
  59. package/src/build/runtime-build-executor.d.ts +5 -4
  60. package/src/build/runtime-build-executor.js +5 -3
  61. package/src/build/runtime-specifier-alias-plugin.js +19 -15
  62. package/src/build/runtime-specifier-aliases.d.ts +5 -0
  63. package/src/build/runtime-specifier-aliases.js +95 -0
  64. package/src/config/README.md +5 -2
  65. package/src/config/config-builder.d.ts +25 -2
  66. package/src/config/config-builder.js +44 -7
  67. package/src/declarations.d.ts +1 -1
  68. package/src/dev/sc-server.d.ts +1 -1
  69. package/src/dev/sc-server.js +1 -1
  70. package/src/eco/eco.browser.d.ts +2 -0
  71. package/src/eco/eco.browser.js +83 -0
  72. package/src/eco/eco.js +19 -48
  73. package/src/eco/eco.types.d.ts +1 -1
  74. package/src/eco/eco.utils.d.ts +1 -40
  75. package/src/eco/eco.utils.js +5 -35
  76. package/src/eco/global-injector-map.d.ts +1 -1
  77. package/src/eco/lazy-injector-map.d.ts +1 -1
  78. package/src/hmr/hmr-strategy.d.ts +16 -13
  79. package/src/hmr/hmr-strategy.js +22 -7
  80. package/src/hmr/strategies/default-hmr-strategy.d.ts +2 -2
  81. package/src/hmr/strategies/default-hmr-strategy.js +1 -1
  82. package/src/hmr/strategies/js-hmr-strategy.d.ts +2 -2
  83. package/src/hmr/strategies/js-hmr-strategy.js +2 -2
  84. package/src/index.browser.d.ts +2 -2
  85. package/src/index.browser.js +1 -1
  86. package/src/index.d.ts +3 -2
  87. package/src/index.js +15 -4
  88. package/src/integrations/ghtml/ghtml-renderer.d.ts +6 -1
  89. package/src/integrations/ghtml/ghtml-renderer.js +29 -28
  90. package/src/integrations/ghtml/ghtml.plugin.d.ts +2 -2
  91. package/src/integrations/ghtml/ghtml.plugin.js +2 -2
  92. package/src/plugins/README.md +1 -0
  93. package/src/plugins/eco-component-meta-plugin.d.ts +12 -1
  94. package/src/plugins/eco-component-meta-plugin.js +26 -20
  95. package/src/plugins/foreign-jsx-override-plugin.d.ts +31 -0
  96. package/src/plugins/foreign-jsx-override-plugin.js +35 -0
  97. package/src/plugins/integration-plugin.d.ts +99 -33
  98. package/src/plugins/integration-plugin.js +68 -21
  99. package/src/plugins/processor.d.ts +2 -2
  100. package/src/plugins/processor.js +2 -2
  101. package/src/plugins/source-transform.d.ts +46 -0
  102. package/src/plugins/source-transform.js +71 -0
  103. package/src/route-renderer/GRAPH.md +54 -84
  104. package/src/route-renderer/README.md +14 -20
  105. package/src/route-renderer/orchestration/component-render-context.d.ts +83 -0
  106. package/src/route-renderer/orchestration/component-render-context.js +147 -0
  107. package/src/route-renderer/orchestration/integration-renderer.d.ts +233 -76
  108. package/src/route-renderer/orchestration/integration-renderer.js +500 -143
  109. package/src/route-renderer/orchestration/queued-boundary-runtime.service.d.ts +93 -0
  110. package/src/route-renderer/orchestration/queued-boundary-runtime.service.js +155 -0
  111. package/src/route-renderer/orchestration/render-execution.service.d.ts +11 -71
  112. package/src/route-renderer/orchestration/render-execution.service.js +65 -80
  113. package/src/{eco/eco.utils.ts → route-renderer/orchestration/render-output.utils.d.ts} +10 -53
  114. package/src/route-renderer/orchestration/render-output.utils.js +65 -0
  115. package/src/route-renderer/orchestration/render-preparation.service.d.ts +2 -8
  116. package/src/route-renderer/orchestration/render-preparation.service.js +10 -17
  117. package/src/route-renderer/orchestration/template-serialization.d.ts +38 -0
  118. package/src/route-renderer/orchestration/template-serialization.js +45 -0
  119. package/src/route-renderer/page-loading/dependency-resolver.d.ts +2 -2
  120. package/src/route-renderer/page-loading/dependency-resolver.js +10 -8
  121. package/src/route-renderer/page-loading/page-module-loader.d.ts +6 -4
  122. package/src/route-renderer/page-loading/page-module-loader.js +7 -5
  123. package/src/route-renderer/route-renderer.d.ts +5 -3
  124. package/src/route-renderer/route-renderer.js +13 -3
  125. package/src/router/README.md +79 -8
  126. package/src/router/client/navigation-coordinator.js +2 -2
  127. package/src/router/server/fs-router-scanner.d.ts +1 -1
  128. package/src/router/server/fs-router-scanner.js +6 -1
  129. package/src/router/server/fs-router.d.ts +1 -1
  130. package/src/services/assets/asset-processing-service/asset-processing.service.d.ts +3 -3
  131. package/src/services/assets/asset-processing-service/asset-processing.service.js +6 -6
  132. package/src/services/assets/asset-processing-service/asset.factory.d.ts +1 -1
  133. package/src/services/assets/asset-processing-service/asset.factory.js +2 -2
  134. package/src/services/assets/asset-processing-service/index.d.ts +5 -5
  135. package/src/services/assets/asset-processing-service/index.js +5 -5
  136. package/src/services/assets/asset-processing-service/processor.interface.d.ts +2 -2
  137. package/src/services/assets/asset-processing-service/processor.registry.d.ts +2 -2
  138. package/src/services/assets/asset-processing-service/processors/base/base-processor.d.ts +1 -1
  139. package/src/services/assets/asset-processing-service/processors/base/base-processor.js +1 -1
  140. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.d.ts +3 -3
  141. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.js +2 -2
  142. package/src/services/assets/asset-processing-service/processors/index.d.ts +5 -5
  143. package/src/services/assets/asset-processing-service/processors/index.js +5 -5
  144. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.d.ts +2 -2
  145. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.js +1 -1
  146. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.d.ts +4 -3
  147. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.js +15 -3
  148. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.d.ts +3 -3
  149. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.js +1 -1
  150. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.d.ts +2 -2
  151. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +1 -1
  152. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.d.ts +2 -2
  153. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.js +1 -1
  154. package/src/services/assets/browser-bundle.service.d.ts +1 -1
  155. package/src/services/assets/browser-bundle.service.js +2 -2
  156. package/src/services/html/html-rewriter-provider.service.js +4 -1
  157. package/src/services/html/html-transformer.service.d.ts +2 -2
  158. package/src/services/html/html-transformer.service.js +4 -10
  159. package/src/services/invalidation/development-invalidation.service.d.ts +1 -1
  160. package/src/services/invalidation/development-invalidation.service.js +1 -0
  161. package/src/services/module-loading/app-module-loader.service.d.ts +25 -0
  162. package/src/services/module-loading/app-module-loader.service.js +31 -0
  163. package/src/services/module-loading/app-server-module-transpiler.service.d.ts +9 -1
  164. package/src/services/module-loading/app-server-module-transpiler.service.js +77 -2
  165. package/src/services/module-loading/host-module-loader-registry.d.ts +4 -0
  166. package/src/services/module-loading/host-module-loader-registry.js +15 -0
  167. package/src/services/module-loading/module-loading-types.d.ts +2 -0
  168. package/src/{adapters/node/bootstrap-dependency-resolver.d.ts → services/module-loading/node-bootstrap-plugin.d.ts} +2 -24
  169. package/src/{adapters/node/bootstrap-dependency-resolver.js → services/module-loading/node-bootstrap-plugin.js} +42 -22
  170. package/src/services/module-loading/page-module-import.service.d.ts +4 -0
  171. package/src/services/module-loading/page-module-import.service.js +38 -9
  172. package/src/services/module-loading/server-module-transpiler.service.d.ts +3 -0
  173. package/src/services/module-loading/server-module-transpiler.service.js +4 -1
  174. package/src/services/runtime-state/dev-graph.service.d.ts +6 -6
  175. package/src/services/runtime-state/dev-graph.service.js +10 -10
  176. package/src/services/runtime-state/entrypoint-dependency-graph.service.d.ts +1 -1
  177. package/src/services/runtime-state/runtime-specifier-registry.service.d.ts +1 -1
  178. package/src/services/runtime-state/server-invalidation-state.service.d.ts +1 -1
  179. package/src/static-site-generator/static-site-generator.d.ts +2 -2
  180. package/src/static-site-generator/static-site-generator.js +1 -1
  181. package/src/{internal-types.d.ts → types/internal-types.d.ts} +24 -14
  182. package/src/{public-types.d.ts → types/public-types.d.ts} +30 -14
  183. package/src/types/public-types.js +0 -0
  184. package/src/utils/html-escaping.d.ts +7 -0
  185. package/src/utils/html-escaping.js +6 -0
  186. package/src/utils/locals-utils.d.ts +1 -1
  187. package/src/utils/parse-cli-args.d.ts +4 -1
  188. package/src/utils/parse-cli-args.js +16 -1
  189. package/src/utils/resolve-work-dir.js +1 -1
  190. package/src/watchers/project-watcher.d.ts +4 -4
  191. package/src/watchers/project-watcher.js +4 -10
  192. package/src/watchers/project-watcher.test-helpers.d.ts +2 -2
  193. package/src/adapters/abstract/application-adapter.ts +0 -337
  194. package/src/adapters/abstract/router-adapter.ts +0 -30
  195. package/src/adapters/abstract/server-adapter.ts +0 -79
  196. package/src/adapters/bun/client-bridge.ts +0 -62
  197. package/src/adapters/bun/create-app.ts +0 -189
  198. package/src/adapters/bun/hmr-manager.ts +0 -409
  199. package/src/adapters/bun/index.ts +0 -2
  200. package/src/adapters/bun/server-adapter.ts +0 -499
  201. package/src/adapters/bun/server-lifecycle.ts +0 -124
  202. package/src/adapters/index.ts +0 -6
  203. package/src/adapters/node/bootstrap-dependency-resolver.ts +0 -301
  204. package/src/adapters/node/create-app.ts +0 -179
  205. package/src/adapters/node/index.d.ts +0 -6
  206. package/src/adapters/node/index.js +0 -11
  207. package/src/adapters/node/index.ts +0 -16
  208. package/src/adapters/node/node-client-bridge.ts +0 -79
  209. package/src/adapters/node/node-hmr-manager.ts +0 -381
  210. package/src/adapters/node/runtime-adapter.d.ts +0 -46
  211. package/src/adapters/node/runtime-adapter.js +0 -306
  212. package/src/adapters/node/runtime-adapter.ts +0 -439
  213. package/src/adapters/node/server-adapter.ts +0 -488
  214. package/src/adapters/node/static-content-server.ts +0 -239
  215. package/src/adapters/node/write-runtime-manifest.d.ts +0 -26
  216. package/src/adapters/node/write-runtime-manifest.js +0 -12
  217. package/src/adapters/node/write-runtime-manifest.ts +0 -38
  218. package/src/adapters/shared/api-response.ts +0 -104
  219. package/src/adapters/shared/application-adapter.ts +0 -199
  220. package/src/adapters/shared/define-api-handler.ts +0 -66
  221. package/src/adapters/shared/explicit-static-route-matcher.ts +0 -140
  222. package/src/adapters/shared/file-route-middleware-pipeline.ts +0 -127
  223. package/src/adapters/shared/fs-server-response-factory.ts +0 -118
  224. package/src/adapters/shared/fs-server-response-matcher.ts +0 -205
  225. package/src/adapters/shared/hmr-entrypoint-registrar.ts +0 -149
  226. package/src/adapters/shared/hmr-html-response.ts +0 -52
  227. package/src/adapters/shared/render-context.ts +0 -120
  228. package/src/adapters/shared/runtime-bootstrap.ts +0 -79
  229. package/src/adapters/shared/server-adapter.ts +0 -489
  230. package/src/adapters/shared/server-route-handler.ts +0 -153
  231. package/src/adapters/shared/server-static-builder.ts +0 -166
  232. package/src/build/build-adapter.ts +0 -361
  233. package/src/build/build-manifest.ts +0 -54
  234. package/src/build/build-types.ts +0 -83
  235. package/src/build/dev-build-coordinator.ts +0 -221
  236. package/src/build/esbuild-build-adapter.ts +0 -559
  237. package/src/build/runtime-build-executor.ts +0 -34
  238. package/src/build/runtime-specifier-alias-plugin.ts +0 -58
  239. package/src/config/config-builder.ts +0 -706
  240. package/src/constants.ts +0 -54
  241. package/src/create-app.ts +0 -87
  242. package/src/dev/sc-server.ts +0 -143
  243. package/src/eco/component-render-context.d.ts +0 -105
  244. package/src/eco/component-render-context.js +0 -87
  245. package/src/eco/component-render-context.ts +0 -224
  246. package/src/eco/eco.ts +0 -242
  247. package/src/eco/eco.types.ts +0 -221
  248. package/src/eco/global-injector-map.ts +0 -112
  249. package/src/eco/lazy-injector-map.ts +0 -120
  250. package/src/eco/module-dependencies.ts +0 -75
  251. package/src/errors/http-error.ts +0 -72
  252. package/src/errors/index.ts +0 -2
  253. package/src/errors/locals-access-error.ts +0 -7
  254. package/src/global/app-logger.ts +0 -4
  255. package/src/hmr/client/hmr-runtime.ts +0 -152
  256. package/src/hmr/hmr-strategy.ts +0 -172
  257. package/src/hmr/hmr.postcss.test.e2e.ts +0 -41
  258. package/src/hmr/hmr.test.e2e.ts +0 -66
  259. package/src/hmr/strategies/default-hmr-strategy.ts +0 -60
  260. package/src/hmr/strategies/js-hmr-strategy.ts +0 -320
  261. package/src/index.browser.ts +0 -3
  262. package/src/index.ts +0 -5
  263. package/src/integrations/ghtml/ghtml-renderer.ts +0 -96
  264. package/src/integrations/ghtml/ghtml.plugin.ts +0 -32
  265. package/src/internal-types.ts +0 -232
  266. package/src/plugins/alias-resolver-plugin.ts +0 -63
  267. package/src/plugins/eco-component-meta-plugin.ts +0 -481
  268. package/src/plugins/integration-plugin.ts +0 -226
  269. package/src/plugins/processor.ts +0 -240
  270. package/src/plugins/runtime-capability.ts +0 -14
  271. package/src/public-types.ts +0 -1317
  272. package/src/route-renderer/component-graph/component-graph-executor.d.ts +0 -32
  273. package/src/route-renderer/component-graph/component-graph-executor.js +0 -31
  274. package/src/route-renderer/component-graph/component-graph-executor.ts +0 -84
  275. package/src/route-renderer/component-graph/component-graph.d.ts +0 -42
  276. package/src/route-renderer/component-graph/component-graph.js +0 -72
  277. package/src/route-renderer/component-graph/component-graph.ts +0 -159
  278. package/src/route-renderer/component-graph/component-marker.d.ts +0 -52
  279. package/src/route-renderer/component-graph/component-marker.js +0 -46
  280. package/src/route-renderer/component-graph/component-marker.ts +0 -117
  281. package/src/route-renderer/component-graph/component-reference.d.ts +0 -10
  282. package/src/route-renderer/component-graph/component-reference.js +0 -19
  283. package/src/route-renderer/component-graph/component-reference.ts +0 -29
  284. package/src/route-renderer/component-graph/marker-graph-resolver.d.ts +0 -77
  285. package/src/route-renderer/component-graph/marker-graph-resolver.js +0 -95
  286. package/src/route-renderer/component-graph/marker-graph-resolver.ts +0 -155
  287. package/src/route-renderer/orchestration/integration-renderer.ts +0 -790
  288. package/src/route-renderer/orchestration/render-execution.service.ts +0 -230
  289. package/src/route-renderer/orchestration/render-preparation.service.ts +0 -476
  290. package/src/route-renderer/page-loading/dependency-resolver.ts +0 -612
  291. package/src/route-renderer/page-loading/page-module-loader.ts +0 -181
  292. package/src/route-renderer/route-renderer.ts +0 -115
  293. package/src/router/client/link-intent.test.browser.ts +0 -51
  294. package/src/router/client/link-intent.ts +0 -92
  295. package/src/router/client/navigation-coordinator.ts +0 -433
  296. package/src/router/server/fs-router-scanner.ts +0 -219
  297. package/src/router/server/fs-router.ts +0 -122
  298. package/src/services/assets/asset-processing-service/asset-processing.service.ts +0 -401
  299. package/src/services/assets/asset-processing-service/asset.factory.ts +0 -105
  300. package/src/services/assets/asset-processing-service/assets.types.ts +0 -113
  301. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.ts +0 -95
  302. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.ts +0 -78
  303. package/src/services/assets/asset-processing-service/index.ts +0 -5
  304. package/src/services/assets/asset-processing-service/processor.interface.ts +0 -27
  305. package/src/services/assets/asset-processing-service/processor.registry.ts +0 -18
  306. package/src/services/assets/asset-processing-service/processors/base/base-processor.ts +0 -82
  307. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.ts +0 -95
  308. package/src/services/assets/asset-processing-service/processors/index.ts +0 -5
  309. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.ts +0 -66
  310. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.ts +0 -88
  311. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.ts +0 -85
  312. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.ts +0 -27
  313. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.ts +0 -80
  314. package/src/services/assets/browser-bundle.service.ts +0 -53
  315. package/src/services/cache/cache.types.ts +0 -126
  316. package/src/services/cache/index.ts +0 -18
  317. package/src/services/cache/memory-cache-store.ts +0 -130
  318. package/src/services/cache/page-cache-service.ts +0 -202
  319. package/src/services/cache/page-request-cache-coordinator.service.ts +0 -131
  320. package/src/services/html/html-rewriter-provider.service.ts +0 -103
  321. package/src/services/html/html-transformer.service.ts +0 -279
  322. package/src/services/invalidation/development-invalidation.service.ts +0 -261
  323. package/src/services/module-loading/app-server-module-transpiler.service.ts +0 -52
  324. package/src/services/module-loading/page-module-import.service.ts +0 -200
  325. package/src/services/module-loading/server-loader.service.d.ts +0 -96
  326. package/src/services/module-loading/server-loader.service.js +0 -32
  327. package/src/services/module-loading/server-loader.service.ts +0 -130
  328. package/src/services/module-loading/server-module-transpiler.service.ts +0 -105
  329. package/src/services/runtime-manifest/node-runtime-manifest.service.d.ts +0 -35
  330. package/src/services/runtime-manifest/node-runtime-manifest.service.js +0 -60
  331. package/src/services/runtime-manifest/node-runtime-manifest.service.ts +0 -101
  332. package/src/services/runtime-state/dev-graph.service.ts +0 -217
  333. package/src/services/runtime-state/entrypoint-dependency-graph.service.ts +0 -136
  334. package/src/services/runtime-state/runtime-specifier-registry.service.ts +0 -96
  335. package/src/services/runtime-state/server-invalidation-state.service.ts +0 -68
  336. package/src/services/validation/schema-validation-service.ts +0 -204
  337. package/src/services/validation/standard-schema.types.ts +0 -68
  338. package/src/static-site-generator/static-site-generator.ts +0 -462
  339. package/src/utils/css.d.ts +0 -1
  340. package/src/utils/css.js +0 -7
  341. package/src/utils/css.ts +0 -5
  342. package/src/utils/deep-merge.ts +0 -47
  343. package/src/utils/hash.ts +0 -5
  344. package/src/utils/html.ts +0 -1
  345. package/src/utils/invariant.ts +0 -15
  346. package/src/utils/locals-utils.ts +0 -37
  347. package/src/utils/parse-cli-args.ts +0 -83
  348. package/src/utils/path-utils.module.ts +0 -14
  349. package/src/utils/resolve-work-dir.ts +0 -45
  350. package/src/utils/runtime.ts +0 -44
  351. package/src/utils/server-utils.module.ts +0 -67
  352. package/src/watchers/project-watcher.test-helpers.ts +0 -41
  353. package/src/watchers/project-watcher.ts +0 -363
  354. /package/src/{constants.d.ts → config/constants.d.ts} +0 -0
  355. /package/src/{constants.js → config/constants.js} +0 -0
  356. /package/src/{internal-types.js → services/module-loading/module-loading-types.js} +0 -0
  357. /package/src/{public-types.js → types/internal-types.js} +0 -0
@@ -1,15 +1,15 @@
1
1
  import fs from "node:fs";
2
2
  import path from "node:path";
3
- import { RESOLVED_ASSETS_DIR } from "../../constants";
3
+ import { RESOLVED_ASSETS_DIR } from "../../config/constants.js";
4
4
  import { getAppBuildExecutor } from "../../build/build-adapter.js";
5
5
  import { fileSystem } from "@ecopages/file-system";
6
- import { HmrStrategyType } from "../../hmr/hmr-strategy";
7
- import { DefaultHmrStrategy } from "../../hmr/strategies/default-hmr-strategy";
8
- import { JsHmrStrategy } from "../../hmr/strategies/js-hmr-strategy";
9
- import { appLogger } from "../../global/app-logger";
6
+ import { HmrStrategyType } from "../../hmr/hmr-strategy.js";
7
+ import { DefaultHmrStrategy } from "../../hmr/strategies/default-hmr-strategy.js";
8
+ import { JsHmrStrategy } from "../../hmr/strategies/js-hmr-strategy.js";
9
+ import { appLogger } from "../../global/app-logger.js";
10
10
  import { HmrEntrypointRegistrar } from "../shared/hmr-entrypoint-registrar.js";
11
11
  import { BrowserBundleService } from "../../services/assets/browser-bundle.service.js";
12
- import { getAppServerModuleTranspiler } from "../../services/module-loading/app-server-module-transpiler.service";
12
+ import { getAppServerModuleTranspiler } from "../../services/module-loading/app-server-module-transpiler.service.js";
13
13
  import {
14
14
  getAppEntrypointDependencyGraph,
15
15
  NoopEntrypointDependencyGraph,
@@ -251,7 +251,7 @@ class HmrManager {
251
251
  */
252
252
  async registerEntrypoint(entrypointPath) {
253
253
  return await this.entrypointRegistrar.registerEntrypoint(entrypointPath, {
254
- emit: async (normalizedEntrypoint, outputPath) => await this.emitStrictEntrypoint(normalizedEntrypoint, outputPath),
254
+ emit: async (normalizedEntrypoint) => await this.emitStrictEntrypoint(normalizedEntrypoint),
255
255
  getMissingOutputError: (normalizedEntrypoint, outputPath) => new Error(
256
256
  `[HMR] Integration failed to emit entrypoint ${normalizedEntrypoint} to ${outputPath}. Page entrypoints must be produced by their owning integration.`
257
257
  )
@@ -278,7 +278,7 @@ class HmrManager {
278
278
  * strategy processing without broadcasting, and then verifies that the owning
279
279
  * integration emitted the expected file.
280
280
  */
281
- async emitStrictEntrypoint(entrypointPath, _outputPath) {
281
+ async emitStrictEntrypoint(entrypointPath) {
282
282
  await this.handleFileChange(entrypointPath, { broadcast: false });
283
283
  }
284
284
  /**
@@ -1,2 +1,2 @@
1
- export { EcopagesApp, createApp } from './create-app.js';
1
+ export { BunEcopagesApp, createApp } from './create-app.js';
2
2
  export { defineApiHandler, defineGroupHandler, type GroupHandler } from '../shared/define-api-handler.js';
@@ -1,7 +1,7 @@
1
- import { EcopagesApp, createApp } from "./create-app.js";
1
+ import { BunEcopagesApp, createApp } from "./create-app.js";
2
2
  import { defineApiHandler, defineGroupHandler } from "../shared/define-api-handler.js";
3
3
  export {
4
- EcopagesApp,
4
+ BunEcopagesApp,
5
5
  createApp,
6
6
  defineApiHandler,
7
7
  defineGroupHandler
@@ -1,12 +1,12 @@
1
1
  import type { Server, WebSocketHandler } from 'bun';
2
- import type { EcoPagesAppConfig } from '../../internal-types.js';
3
- import type { ApiHandler, ErrorHandler, StaticRoute } from '../../public-types.js';
2
+ import type { EcoPagesAppConfig } from '../../types/internal-types.js';
3
+ import type { ApiHandler, ErrorHandler, StaticRoute } from '../../types/public-types.js';
4
4
  import { SharedServerAdapter } from '../shared/server-adapter.js';
5
5
  import type { ServerAdapterResult } from '../abstract/server-adapter.js';
6
6
  import { ServerRouteHandler, type ServerRouteHandlerParams } from '../shared/server-route-handler.js';
7
- import { ServerStaticBuilder, type ServerStaticBuilderParams } from '../shared/server-static-builder';
8
- import { ClientBridge } from './client-bridge';
9
- import { HmrManager } from './hmr-manager';
7
+ import { ServerStaticBuilder, type ServerStaticBuilderParams } from '../shared/server-static-builder.js';
8
+ import { ClientBridge } from './client-bridge.js';
9
+ import { HmrManager } from './hmr-manager.js';
10
10
  import { ServerLifecycle } from './server-lifecycle.js';
11
11
  type BunServerInstance = Server<unknown>;
12
12
  type BunNativeServeOptions = Bun.Serve.Options<unknown>;
@@ -1,3 +1,4 @@
1
+ import { DEFAULT_ECOPAGES_HOSTNAME, DEFAULT_ECOPAGES_PORT } from "../../config/constants.js";
1
2
  import { appLogger } from "../../global/app-logger.js";
2
3
  import { HttpError } from "../../errors/http-error.js";
3
4
  import { createRequire } from "../../utils/locals-utils.js";
@@ -6,14 +7,14 @@ import { SharedServerAdapter } from "../shared/server-adapter.js";
6
7
  import { ApiResponseBuilder } from "../shared/api-response.js";
7
8
  import { installSharedRuntimeBuildExecutor } from "../shared/runtime-bootstrap.js";
8
9
  import { ServerRouteHandler } from "../shared/server-route-handler.js";
9
- import { ServerStaticBuilder } from "../shared/server-static-builder";
10
+ import { ServerStaticBuilder } from "../shared/server-static-builder.js";
10
11
  import {
11
12
  injectHmrRuntimeIntoHtmlResponse,
12
13
  isHtmlResponse,
13
14
  shouldInjectHmrHtmlResponse
14
- } from "../shared/hmr-html-response";
15
- import { ClientBridge } from "./client-bridge";
16
- import { HmrManager } from "./hmr-manager";
15
+ } from "../shared/hmr-html-response.js";
16
+ import { ClientBridge } from "./client-bridge.js";
17
+ import { HmrManager } from "./hmr-manager.js";
17
18
  import { ServerLifecycle } from "./server-lifecycle.js";
18
19
  class BunServerAdapter extends SharedServerAdapter {
19
20
  apiHandlers;
@@ -347,7 +348,7 @@ class BunServerAdapter extends SharedServerAdapter {
347
348
  }
348
349
  }
349
350
  async function createBunServerAdapter(params) {
350
- const runtimeOrigin = params.runtimeOrigin ?? `http://${params.serveOptions.hostname || "localhost"}:${params.serveOptions.port || 3e3}`;
351
+ const runtimeOrigin = params.runtimeOrigin ?? `http://${params.serveOptions.hostname || DEFAULT_ECOPAGES_HOSTNAME}:${params.serveOptions.port || DEFAULT_ECOPAGES_PORT}`;
351
352
  const bridge = params.bridge ?? new ClientBridge();
352
353
  const hmrManager = params.hmrManager ?? new HmrManager({ appConfig: params.appConfig, bridge });
353
354
  const lifecycle = params.lifecycle ?? new ServerLifecycle({
@@ -1,8 +1,8 @@
1
- import type { EcoPagesAppConfig } from '../../internal-types';
1
+ import type { EcoPagesAppConfig } from '../../types/internal-types.js';
2
2
  import type { EcoBuildPlugin } from '../../build/build-types.js';
3
- import { StaticSiteGenerator } from '../../static-site-generator/static-site-generator';
4
- import type { ClientBridge } from './client-bridge';
5
- import type { HmrManager } from './hmr-manager';
3
+ import { StaticSiteGenerator } from '../../static-site-generator/static-site-generator.js';
4
+ import type { ClientBridge } from './client-bridge.js';
5
+ import type { HmrManager } from './hmr-manager.js';
6
6
  export interface WatcherCallbacks {
7
7
  refreshRouterRoutesCallback: () => Promise<void>;
8
8
  }
@@ -1,6 +1,6 @@
1
1
  import { getBunRuntime } from "../../utils/runtime.js";
2
- import { appLogger } from "../../global/app-logger";
3
- import { StaticSiteGenerator } from "../../static-site-generator/static-site-generator";
2
+ import { appLogger } from "../../global/app-logger.js";
3
+ import { StaticSiteGenerator } from "../../static-site-generator/static-site-generator.js";
4
4
  import {
5
5
  bindSharedRuntimeHmrManager,
6
6
  initializeSharedRuntimePlugins,
@@ -1,9 +1,12 @@
1
- import type { EcopagesAppOptions as BunOptions } from './adapters/bun/create-app.js';
2
- import type { EcopagesAppOptions as NodeOptions } from './adapters/node/create-app.js';
3
- import { AbstractApplicationAdapter } from './adapters/abstract/application-adapter.js';
4
- import { SharedApplicationAdapter } from './adapters/shared/application-adapter.js';
5
- export type EcopagesAppOptions = BunOptions | NodeOptions;
6
- export type UniversalEcopagesApp = AbstractApplicationAdapter<EcopagesAppOptions, any, Request>;
1
+ import type { EcoPagesAppConfig } from '../types/internal-types.js';
2
+ import { AbstractApplicationAdapter } from './abstract/application-adapter.js';
3
+ import type { ApplicationAdapterOptions } from './abstract/application-adapter.js';
4
+ import { SharedApplicationAdapter } from './shared/application-adapter.js';
5
+ export interface EcopagesAppOptions extends ApplicationAdapterOptions {
6
+ appConfig: EcoPagesAppConfig;
7
+ serverOptions?: Record<string, any>;
8
+ }
9
+ export type UniversalEcopagesApp = AbstractApplicationAdapter<EcopagesAppOptions, unknown, Request>;
7
10
  export declare function createApp<WebSocketData = undefined>(options: EcopagesAppOptions): Promise<UniversalEcopagesApp>;
8
11
  export declare class EcopagesApp extends SharedApplicationAdapter<EcopagesAppOptions, unknown, Request> {
9
12
  private readonly appOptions;
@@ -1,12 +1,12 @@
1
- import { AbstractApplicationAdapter } from "./adapters/abstract/application-adapter.js";
2
- import { SharedApplicationAdapter } from "./adapters/shared/application-adapter.js";
1
+ import { AbstractApplicationAdapter } from "./abstract/application-adapter.js";
2
+ import { SharedApplicationAdapter } from "./shared/application-adapter.js";
3
3
  async function createRuntimeApp(options) {
4
4
  const bun = globalThis.Bun;
5
5
  if (bun) {
6
- const { createApp: createBunApp } = await import("./adapters/bun/create-app.js");
6
+ const { createApp: createBunApp } = await import("./bun/create-app.js");
7
7
  return await createBunApp(options);
8
8
  }
9
- const { createNodeApp } = await import("./adapters/node/create-app.js");
9
+ const { createApp: createNodeApp } = await import("./node/create-app.js");
10
10
  return await createNodeApp(options);
11
11
  }
12
12
  async function createApp(options) {
@@ -1,6 +1,2 @@
1
- export { EcopagesApp, createApp } from './bun/create-app.js';
1
+ export { EcopagesApp, createApp } from './create-app.js';
2
2
  export { defineApiHandler, defineGroupHandler, type GroupHandler } from './shared/define-api-handler.js';
3
- export { NodeServerAdapter, createNodeServerAdapter } from './node/server-adapter.js';
4
- export { EcopagesApp as NodeAdapterEcopagesApp, createNodeApp } from './node/create-app.js';
5
- export type { NodeServerAdapterParams, NodeServerAdapterResult } from './node/server-adapter.js';
6
- export type { EcopagesAppOptions as NodeEcopagesAppOptions } from './node/create-app.js';
@@ -1,14 +1,8 @@
1
- import { EcopagesApp, createApp } from "./bun/create-app.js";
1
+ import { EcopagesApp, createApp } from "./create-app.js";
2
2
  import { defineApiHandler, defineGroupHandler } from "./shared/define-api-handler.js";
3
- import { NodeServerAdapter, createNodeServerAdapter } from "./node/server-adapter.js";
4
- import { EcopagesApp as EcopagesApp2, createNodeApp } from "./node/create-app.js";
5
3
  export {
6
4
  EcopagesApp,
7
- EcopagesApp2 as NodeAdapterEcopagesApp,
8
- NodeServerAdapter,
9
5
  createApp,
10
- createNodeApp,
11
- createNodeServerAdapter,
12
6
  defineApiHandler,
13
7
  defineGroupHandler
14
8
  };
@@ -1,16 +1,12 @@
1
1
  import { type Server as NodeServerInstance } from 'node:http';
2
- import type { EcoPagesAppConfig } from '../../internal-types.js';
3
- import { type ApplicationAdapterOptions } from '../abstract/application-adapter.js';
4
2
  import { SharedApplicationAdapter } from '../shared/application-adapter.js';
5
- import { type NodeServerAdapterResult } from './server-adapter.js';
6
- export interface EcopagesAppOptions extends ApplicationAdapterOptions {
7
- appConfig: EcoPagesAppConfig;
8
- serverOptions?: Record<string, any>;
9
- }
10
- export declare class EcopagesApp extends SharedApplicationAdapter<EcopagesAppOptions, NodeServerInstance, Request> {
3
+ import type { EcopagesAppOptions } from '../create-app.js';
4
+ import { type NodeServerAdapterResult, createNodeServerAdapter } from './server-adapter.js';
5
+ export declare class NodeEcopagesApp extends SharedApplicationAdapter<EcopagesAppOptions, NodeServerInstance, Request> {
11
6
  serverAdapter: NodeServerAdapterResult | undefined;
12
7
  private server;
13
8
  private runtimeOrigin;
9
+ protected createServerAdapter(params: Parameters<typeof createNodeServerAdapter>[0]): Promise<NodeServerAdapterResult>;
14
10
  stop(force?: boolean): Promise<void>;
15
11
  protected initializeServerAdapter(): Promise<NodeServerAdapterResult>;
16
12
  start(): Promise<NodeServerInstance | void>;
@@ -18,4 +14,5 @@ export declare class EcopagesApp extends SharedApplicationAdapter<EcopagesAppOpt
18
14
  private sendNodeResponse;
19
15
  fetch(request: Request): Promise<Response>;
20
16
  }
21
- export declare function createNodeApp(options: EcopagesAppOptions): Promise<EcopagesApp>;
17
+ export declare function createNodeApp(options: EcopagesAppOptions): Promise<NodeEcopagesApp>;
18
+ export declare function createApp(options: EcopagesAppOptions): Promise<NodeEcopagesApp>;
@@ -1,14 +1,16 @@
1
1
  import { createServer } from "node:http";
2
2
  import { Readable } from "node:stream";
3
- import { DEFAULT_ECOPAGES_HOSTNAME, DEFAULT_ECOPAGES_PORT } from "../../constants.js";
3
+ import { DEFAULT_ECOPAGES_HOSTNAME, DEFAULT_ECOPAGES_PORT } from "../../config/constants.js";
4
4
  import { appLogger } from "../../global/app-logger.js";
5
- import {} from "../abstract/application-adapter.js";
6
5
  import { SharedApplicationAdapter } from "../shared/application-adapter.js";
7
6
  import { createNodeServerAdapter } from "./server-adapter.js";
8
- class EcopagesApp extends SharedApplicationAdapter {
7
+ class NodeEcopagesApp extends SharedApplicationAdapter {
9
8
  serverAdapter;
10
9
  server = null;
11
10
  runtimeOrigin = "";
11
+ createServerAdapter(params) {
12
+ return createNodeServerAdapter(params);
13
+ }
12
14
  async stop(force = true) {
13
15
  if (!this.server) {
14
16
  return;
@@ -36,7 +38,7 @@ class EcopagesApp extends SharedApplicationAdapter {
36
38
  const preferredPort = cliPort ?? (envPort ? Number(envPort) : void 0) ?? DEFAULT_ECOPAGES_PORT;
37
39
  const preferredHostname = cliHostname ?? envHostname ?? DEFAULT_ECOPAGES_HOSTNAME;
38
40
  this.runtimeOrigin = `http://${preferredHostname}:${preferredPort}`;
39
- return createNodeServerAdapter({
41
+ return this.createServerAdapter({
40
42
  runtimeOrigin: this.runtimeOrigin,
41
43
  appConfig: this.appConfig,
42
44
  apiHandlers: this.apiHandlers,
@@ -135,9 +137,13 @@ class EcopagesApp extends SharedApplicationAdapter {
135
137
  }
136
138
  }
137
139
  async function createNodeApp(options) {
138
- return new EcopagesApp(options);
140
+ return new NodeEcopagesApp(options);
141
+ }
142
+ async function createApp(options) {
143
+ return createNodeApp(options);
139
144
  }
140
145
  export {
141
- EcopagesApp,
146
+ NodeEcopagesApp,
147
+ createApp,
142
148
  createNodeApp
143
149
  };
@@ -1,5 +1,5 @@
1
1
  import type { WebSocket } from 'ws';
2
- import type { ClientBridgeEvent, IClientBridge } from '../../public-types.js';
2
+ import type { ClientBridgeEvent, IClientBridge } from '../../types/public-types.js';
3
3
  export declare class NodeClientBridge implements IClientBridge {
4
4
  private subscribers;
5
5
  private heartbeatTimer;
@@ -1,7 +1,7 @@
1
- import type { DefaultHmrContext, EcoPagesAppConfig, IHmrManager, IClientBridge } from '../../internal-types.js';
1
+ import type { DefaultHmrContext, EcoPagesAppConfig, IHmrManager, IClientBridge } from '../../types/internal-types.js';
2
2
  import type { EcoBuildPlugin } from '../../build/build-types.js';
3
3
  import { type HmrStrategy } from '../../hmr/hmr-strategy.js';
4
- import type { ClientBridgeEvent } from '../../public-types.js';
4
+ import type { ClientBridgeEvent } from '../../types/public-types.js';
5
5
  export interface NodeHmrManagerParams {
6
6
  appConfig: EcoPagesAppConfig;
7
7
  bridge: IClientBridge;
@@ -1,6 +1,6 @@
1
1
  import fs from "node:fs";
2
2
  import path from "node:path";
3
- import { RESOLVED_ASSETS_DIR } from "../../constants.js";
3
+ import { RESOLVED_ASSETS_DIR } from "../../config/constants.js";
4
4
  import { getAppBuildExecutor } from "../../build/build-adapter.js";
5
5
  import { fileSystem } from "@ecopages/file-system";
6
6
  import { HmrStrategyType } from "../../hmr/hmr-strategy.js";
@@ -225,7 +225,7 @@ class NodeHmrManager {
225
225
  */
226
226
  async registerEntrypoint(entrypointPath) {
227
227
  return await this.entrypointRegistrar.registerEntrypoint(entrypointPath, {
228
- emit: async (normalizedEntrypoint, outputPath) => await this.emitStrictEntrypoint(normalizedEntrypoint, outputPath),
228
+ emit: async (normalizedEntrypoint) => await this.emitStrictEntrypoint(normalizedEntrypoint),
229
229
  getMissingOutputError: (normalizedEntrypoint, outputPath) => new Error(
230
230
  `[HMR] Integration failed to emit entrypoint ${normalizedEntrypoint} to ${outputPath}. Page entrypoints must be produced by their owning integration.`
231
231
  )
@@ -255,7 +255,7 @@ class NodeHmrManager {
255
255
  * 3. Let the strategy chain try to emit the entrypoint without broadcasting.
256
256
  * 4. Fail if the owning integration did not emit the expected output.
257
257
  */
258
- async emitStrictEntrypoint(entrypointPath, _outputPath) {
258
+ async emitStrictEntrypoint(entrypointPath) {
259
259
  await this.handleFileChange(entrypointPath, { broadcast: false });
260
260
  }
261
261
  /**
@@ -1,6 +1,6 @@
1
1
  import { type Server as NodeHttpServer } from 'node:http';
2
- import type { EcoPagesAppConfig } from '../../internal-types.js';
3
- import type { ApiHandler, ErrorHandler, StaticRoute } from '../../public-types.js';
2
+ import type { EcoPagesAppConfig } from '../../types/internal-types.js';
3
+ import type { ApiHandler, ErrorHandler, StaticRoute } from '../../types/public-types.js';
4
4
  import { SharedServerAdapter } from '../shared/server-adapter.js';
5
5
  import type { ServerAdapterResult } from '../abstract/server-adapter.js';
6
6
  export type NodeServerInstance = NodeHttpServer;
@@ -132,7 +132,7 @@ export declare class NodeServerAdapter extends SharedServerAdapter<NodeServerAda
132
132
  * underlying socket closes early — into a 499 response so it does not
133
133
  * incorrectly surface as a 500 in application logs.
134
134
  */
135
- handleRequest(_request: Request): Promise<Response>;
135
+ handleRequest(request: Request): Promise<Response>;
136
136
  /**
137
137
  * Called once the HTTP server is bound and listening.
138
138
  *
@@ -149,7 +149,7 @@ export declare class NodeServerAdapter extends SharedServerAdapter<NodeServerAda
149
149
  * WebSocket upgrade requests that do not target `/_hmr` are rejected with an
150
150
  * immediate socket destroy to prevent unhandled upgrade leaks.
151
151
  */
152
- completeInitialization(_server: NodeServerInstance): Promise<void>;
152
+ completeInitialization(server: NodeServerInstance): Promise<void>;
153
153
  }
154
154
  /**
155
155
  * Factory function that creates and fully initialises a `NodeServerAdapter`.
@@ -1,7 +1,6 @@
1
1
  import { createServer } from "node:http";
2
2
  import { appLogger } from "../../global/app-logger.js";
3
3
  import { NodeClientBridge } from "./node-client-bridge.js";
4
- import { NodeHmrManager } from "./node-hmr-manager.js";
5
4
  import { StaticSiteGenerator } from "../../static-site-generator/static-site-generator.js";
6
5
  import { SharedServerAdapter } from "../shared/server-adapter.js";
7
6
  import { ServerStaticBuilder } from "../shared/server-static-builder.js";
@@ -13,6 +12,7 @@ import {
13
12
  startSharedProjectWatching
14
13
  } from "../shared/runtime-bootstrap.js";
15
14
  import { NodeStaticContentServer } from "./static-content-server.js";
15
+ import { DEFAULT_ECOPAGES_HOSTNAME, DEFAULT_ECOPAGES_PORT } from "../../config/constants.js";
16
16
  class ClientAbortError extends Error {
17
17
  constructor() {
18
18
  super("Client closed the request");
@@ -102,12 +102,12 @@ class NodeServerAdapter extends SharedServerAdapter {
102
102
  appConfig: this.appConfig,
103
103
  options: {
104
104
  hostname: this.serveOptions.hostname,
105
- port: Number(this.serveOptions.port || 3e3)
105
+ port: Number(this.serveOptions.port || DEFAULT_ECOPAGES_PORT)
106
106
  }
107
107
  });
108
108
  await this.previewServer.start();
109
- const previewHostname = this.serveOptions.hostname || "localhost";
110
- const previewPort = this.serveOptions.port || 3e3;
109
+ const previewHostname = this.serveOptions.hostname || DEFAULT_ECOPAGES_HOSTNAME;
110
+ const previewPort = this.serveOptions.port || DEFAULT_ECOPAGES_PORT;
111
111
  appLogger.info(`Preview running at http://${previewHostname}:${previewPort}`);
112
112
  }
113
113
  /**
@@ -198,8 +198,8 @@ class NodeServerAdapter extends SharedServerAdapter {
198
198
  * `stopBuildRuntimeServer`, so it never overlaps with the actual dev/prod server.
199
199
  */
200
200
  async startBuildRuntimeServer() {
201
- const hostname = String(this.serveOptions.hostname || "localhost");
202
- const port = Number(this.serveOptions.port || 3e3);
201
+ const hostname = String(this.serveOptions.hostname || DEFAULT_ECOPAGES_HOSTNAME);
202
+ const port = Number(this.serveOptions.port || DEFAULT_ECOPAGES_PORT);
203
203
  const server = createServer(async (req, res) => {
204
204
  try {
205
205
  const webRequest = this.createWebRequest(req);
@@ -269,12 +269,12 @@ class NodeServerAdapter extends SharedServerAdapter {
269
269
  * underlying socket closes early — into a 499 response so it does not
270
270
  * incorrectly surface as a 500 in application logs.
271
271
  */
272
- async handleRequest(_request) {
272
+ async handleRequest(request) {
273
273
  if (!this.initialized) {
274
274
  throw new Error("Node server adapter is not initialized. Call createAdapter() first.");
275
275
  }
276
276
  try {
277
- return await this.handleSharedRequest(_request, {
277
+ return await this.handleSharedRequest(request, {
278
278
  apiHandlers: this.apiHandlers,
279
279
  errorHandler: this.errorHandler,
280
280
  serverInstance: this.serverInstance,
@@ -303,16 +303,17 @@ class NodeServerAdapter extends SharedServerAdapter {
303
303
  * WebSocket upgrade requests that do not target `/_hmr` are rejected with an
304
304
  * immediate socket destroy to prevent unhandled upgrade leaks.
305
305
  */
306
- async completeInitialization(_server) {
307
- this.serverInstance = _server;
306
+ async completeInitialization(server) {
307
+ this.serverInstance = server;
308
308
  if (this.options?.watch) {
309
+ const { NodeHmrManager } = await import("./node-hmr-manager.js");
309
310
  const { WebSocketServer } = await import("ws");
310
311
  const wss = new WebSocketServer({ noServer: true });
311
312
  this.bridge = new NodeClientBridge();
312
313
  this.hmrManager = new NodeHmrManager({ appConfig: this.appConfig, bridge: this.bridge });
313
314
  this.hmrManager.setEnabled(true);
314
315
  await this.hmrManager.buildRuntime();
315
- _server.on("upgrade", (req, socket, head) => {
316
+ server.on("upgrade", (req, socket, head) => {
316
317
  const url = new URL(req.url ?? "/", this.runtimeOrigin);
317
318
  if (url.pathname === "/_hmr") {
318
319
  wss.handleUpgrade(req, socket, head, (ws) => {
@@ -345,7 +346,7 @@ class NodeServerAdapter extends SharedServerAdapter {
345
346
  }
346
347
  }
347
348
  async function createNodeServerAdapter(params) {
348
- const runtimeOrigin = params.runtimeOrigin ?? `http://${params.serveOptions.hostname || "localhost"}:${params.serveOptions.port || 3e3}`;
349
+ const runtimeOrigin = params.runtimeOrigin ?? `http://${params.serveOptions.hostname || DEFAULT_ECOPAGES_HOSTNAME}:${params.serveOptions.port || DEFAULT_ECOPAGES_PORT}`;
349
350
  const adapter = new NodeServerAdapter({
350
351
  ...params,
351
352
  runtimeOrigin
@@ -1,5 +1,5 @@
1
1
  import { type Server as NodeHttpServer } from 'node:http';
2
- import type { EcoPagesAppConfig } from '../../internal-types.js';
2
+ import type { EcoPagesAppConfig } from '../../types/internal-types.js';
3
3
  type NodeStaticContentServerOptions = {
4
4
  hostname?: string;
5
5
  port?: number;
@@ -1,6 +1,6 @@
1
1
  import { createServer } from "node:http";
2
2
  import { extname, join, normalize, sep } from "node:path";
3
- import { DEFAULT_ECOPAGES_HOSTNAME, DEFAULT_ECOPAGES_PORT, STATUS_MESSAGE } from "../../constants.js";
3
+ import { DEFAULT_ECOPAGES_HOSTNAME, DEFAULT_ECOPAGES_PORT, STATUS_MESSAGE } from "../../config/constants.js";
4
4
  import { fileSystem } from "@ecopages/file-system";
5
5
  import { ServerUtils } from "../../utils/server-utils.module.js";
6
6
  class NodeStaticContentServer {
@@ -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'> & {
@@ -1,5 +1,5 @@
1
- import type { EcoPagesAppConfig } from '../../internal-types.js';
2
- import type { StaticRoute } from '../../public-types.js';
1
+ import type { EcoPagesAppConfig } from '../../types/internal-types.js';
2
+ import type { StaticRoute } from '../../types/public-types.js';
3
3
  import type { RouteRendererFactory } from '../../route-renderer/route-renderer.js';
4
4
  export declare const EXPLICIT_STATIC_ROUTE_MATCHER_ERRORS: {
5
5
  readonly missingIntegration: (routePath: string) => string;
@@ -1,4 +1,4 @@
1
- import type { Middleware, ApiHandlerContext, RequestLocals } from '../../public-types.js';
1
+ import type { Middleware, ApiHandlerContext, 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
4
  readonly CTX_RENDER_UNAVAILABLE: "[ecopages] ctx.render is not available in file-route middleware";
@@ -1,5 +1,5 @@
1
- import type { EcoPagesAppConfig, FileSystemServerOptions } from '../../internal-types.js';
2
- import type { RouteRendererBody } from '../../public-types.js';
1
+ import type { EcoPagesAppConfig, FileSystemServerOptions } from '../../types/internal-types.js';
2
+ import type { RouteRendererBody } from '../../types/public-types.js';
3
3
  import type { RouteRendererFactory } from '../../route-renderer/route-renderer.js';
4
4
  export declare class FileSystemServerResponseFactory {
5
5
  private appConfig;
@@ -1,4 +1,4 @@
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 {
@@ -1,4 +1,4 @@
1
- import type { EcoPagesAppConfig, MatchResult } from '../../internal-types.js';
1
+ import type { EcoPagesAppConfig, MatchResult } from '../../types/internal-types.js';
2
2
  import type { RouteRendererFactory } from '../../route-renderer/route-renderer.js';
3
3
  import type { FSRouter } from '../../router/server/fs-router.js';
4
4
  import type { PageCacheService } from '../../services/cache/page-cache-service.js';
@@ -1,7 +1,7 @@
1
1
  import path from "node:path";
2
2
  import { fileSystem } from "@ecopages/file-system";
3
3
  import { appLogger } from "../../global/app-logger.js";
4
- import { RESOLVED_ASSETS_DIR } from "../../constants.js";
4
+ import { RESOLVED_ASSETS_DIR } from "../../config/constants.js";
5
5
  class HmrEntrypointRegistrar {
6
6
  options;
7
7
  constructor(options) {
@@ -1,4 +1,4 @@
1
- import type { IHmrManager } from '../../public-types';
1
+ import type { IHmrManager } from '../../types/public-types.js';
2
2
  /**
3
3
  * Returns whether a response is HTML and therefore eligible for development HMR
4
4
  * runtime injection.
@@ -1,7 +1,8 @@
1
- import type { RenderContext } from '../../public-types.js';
1
+ import type { RenderContext } from '../../types/public-types.js';
2
2
  import type { IntegrationPlugin } from '../../plugins/integration-plugin.js';
3
3
  export interface CreateRenderContextOptions {
4
4
  integrations: IntegrationPlugin[];
5
+ rendererModules?: unknown;
5
6
  }
6
7
  /**
7
8
  * Creates a render context for route handlers.
@@ -15,7 +15,9 @@ function createRenderContext(options) {
15
15
  );
16
16
  const integration = integrations.find((i) => i.name === integrationName);
17
17
  invariant(!!integration, `No integration found for: ${integrationName}`);
18
- return integration.initializeRenderer();
18
+ return integration.initializeRenderer({
19
+ rendererModules: options.rendererModules
20
+ });
19
21
  };
20
22
  const renderContext = {
21
23
  async render(view, props, renderOptions) {
@@ -1,6 +1,6 @@
1
1
  import { type BuildExecutor } from '../../build/build-adapter.js';
2
2
  import type { EcoBuildPlugin } from '../../build/build-types.js';
3
- import type { EcoPagesAppConfig, IClientBridge, IHmrManager } from '../../internal-types.js';
3
+ import type { EcoPagesAppConfig, IClientBridge, IHmrManager } from '../../types/internal-types.js';
4
4
  /**
5
5
  * Installs and returns the app-owned runtime build executor used by adapter
6
6
  * startup and follow-up runtime work.
@@ -2,7 +2,7 @@ import path from "node:path";
2
2
  import { fileSystem } from "@ecopages/file-system";
3
3
  import { getAppBrowserBuildPlugins, setupAppRuntimePlugins } from "../../build/build-adapter.js";
4
4
  import { installAppRuntimeBuildExecutor } from "../../build/runtime-build-executor.js";
5
- import { RESOLVED_ASSETS_DIR } from "../../constants.js";
5
+ import { RESOLVED_ASSETS_DIR } from "../../config/constants.js";
6
6
  import { ProjectWatcher } from "../../watchers/project-watcher.js";
7
7
  function installSharedRuntimeBuildExecutor(appConfig, options) {
8
8
  return installAppRuntimeBuildExecutor(appConfig, options);
@@ -7,7 +7,7 @@ import { StaticSiteGenerator } from '../../static-site-generator/static-site-gen
7
7
  import { ServerStaticBuilder } from './server-static-builder.js';
8
8
  import { FileSystemResponseMatcher } from './fs-server-response-matcher.js';
9
9
  import { ServerRouteHandler } from './server-route-handler.js';
10
- import type { ApiHandler, CacheInvalidator, ErrorHandler, RenderContext, StaticRoute } from '../../public-types.js';
10
+ import type { ApiHandler, CacheInvalidator, ErrorHandler, RenderContext, StaticRoute } from '../../types/public-types.js';
11
11
  export declare abstract class SharedServerAdapter<TOptions extends ServerAdapterOptions, TResult extends ServerAdapterResult> extends AbstractServerAdapter<TOptions, TResult> {
12
12
  protected router: FSRouter;
13
13
  protected fileSystemResponseMatcher: FileSystemResponseMatcher;
@@ -91,6 +91,7 @@ class SharedServerAdapter extends AbstractServerAdapter {
91
91
  configureSharedResponseHandlers(staticRoutes, hmrManager) {
92
92
  this.routeRendererFactory = new RouteRendererFactory({
93
93
  appConfig: this.appConfig,
94
+ rendererModules: this.appConfig.runtime?.rendererModuleContext,
94
95
  runtimeOrigin: this.runtimeOrigin
95
96
  });
96
97
  const fileSystemResponseFactory = new FileSystemServerResponseFactory({
@@ -132,7 +133,10 @@ class SharedServerAdapter extends AbstractServerAdapter {
132
133
  return this.fileSystemResponseMatcher?.getCacheService() ?? null;
133
134
  }
134
135
  getRenderContext() {
135
- return createRenderContext({ integrations: this.appConfig.integrations });
136
+ return createRenderContext({
137
+ integrations: this.appConfig.integrations,
138
+ rendererModules: this.appConfig.runtime?.rendererModuleContext
139
+ });
136
140
  }
137
141
  /**
138
142
  * Executes an Application Programming Interface (API) handler in an environment-agnostic manner.
@@ -1,7 +1,7 @@
1
- import type { IHmrManager } from '../../public-types';
2
- import type { FSRouter } from '../../router/server/fs-router';
3
- import type { ExplicitStaticRouteMatcher } from './explicit-static-route-matcher';
4
- import type { FileSystemResponseMatcher } from './fs-server-response-matcher';
1
+ import type { IHmrManager } from '../../types/public-types.js';
2
+ import type { FSRouter } from '../../router/server/fs-router.js';
3
+ import type { ExplicitStaticRouteMatcher } from './explicit-static-route-matcher.js';
4
+ import type { FileSystemResponseMatcher } from './fs-server-response-matcher.js';
5
5
  /**
6
6
  * Configuration parameters for ServerRouteHandler.
7
7
  */