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

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 (418) hide show
  1. package/README.md +213 -12
  2. package/package.json +100 -188
  3. package/src/adapters/README.md +39 -0
  4. package/src/adapters/bun/hmr-manager.test.ts +267 -0
  5. package/src/adapters/bun/hmr-manager.ts +180 -47
  6. package/src/adapters/bun/index.ts +1 -2
  7. package/src/adapters/bun/server-adapter.ts +41 -34
  8. package/src/adapters/bun/server-lifecycle.ts +40 -70
  9. package/src/adapters/index.ts +1 -1
  10. package/src/adapters/node/bootstrap-dependency-resolver.test.ts +282 -0
  11. package/src/adapters/node/bootstrap-dependency-resolver.ts +301 -0
  12. package/src/adapters/node/index.ts +7 -0
  13. package/src/adapters/node/node-client-bridge.test.ts +198 -0
  14. package/src/adapters/node/node-hmr-manager.test.ts +322 -0
  15. package/src/adapters/node/node-hmr-manager.ts +207 -97
  16. package/src/adapters/node/runtime-adapter.test.ts +868 -0
  17. package/src/adapters/node/runtime-adapter.ts +439 -0
  18. package/src/adapters/node/server-adapter.ts +31 -104
  19. package/src/adapters/node/static-content-server.test.ts +60 -0
  20. package/src/adapters/node/static-content-server.ts +36 -0
  21. package/src/adapters/node/write-runtime-manifest.ts +38 -0
  22. package/src/adapters/shared/api-response.test.ts +97 -0
  23. package/src/{define-api-handler.ts → adapters/shared/define-api-handler.ts} +1 -1
  24. package/src/adapters/shared/explicit-static-route-matcher.test.ts +381 -0
  25. package/src/adapters/shared/explicit-static-route-matcher.ts +7 -1
  26. package/src/adapters/shared/file-route-middleware-pipeline.test.ts +90 -0
  27. package/src/adapters/shared/file-route-middleware-pipeline.ts +6 -2
  28. package/src/adapters/shared/fs-server-response-factory.test.ts +187 -0
  29. package/src/adapters/shared/fs-server-response-matcher.test.ts +286 -0
  30. package/src/adapters/shared/fs-server-response-matcher.ts +17 -10
  31. package/src/adapters/shared/hmr-entrypoint-registrar.ts +149 -0
  32. package/src/adapters/shared/hmr-html-response.ts +52 -0
  33. package/src/adapters/shared/hmr-manager.contract.test.ts +196 -0
  34. package/src/adapters/shared/hmr-manager.dispatch.test.ts +220 -0
  35. package/src/adapters/shared/render-context.test.ts +146 -0
  36. package/src/adapters/shared/render-context.ts +21 -6
  37. package/src/adapters/shared/runtime-bootstrap.ts +79 -0
  38. package/src/adapters/shared/server-adapter.test.ts +77 -0
  39. package/src/adapters/shared/server-adapter.ts +51 -4
  40. package/src/adapters/shared/server-route-handler.test.ts +110 -0
  41. package/src/adapters/shared/server-route-handler.ts +5 -18
  42. package/src/adapters/shared/server-static-builder.test.ts +316 -0
  43. package/src/adapters/shared/server-static-builder.ts +92 -8
  44. package/src/build/README.md +101 -0
  45. package/src/build/build-adapter-serialization.test.ts +268 -0
  46. package/src/build/build-adapter.test.ts +815 -0
  47. package/src/build/build-adapter.ts +234 -6
  48. package/src/build/build-manifest.ts +54 -0
  49. package/src/build/dev-build-coordinator.ts +221 -0
  50. package/src/build/esbuild-build-adapter.ts +132 -84
  51. package/src/build/runtime-build-executor.ts +34 -0
  52. package/src/build/runtime-specifier-alias-plugin.test.ts +43 -0
  53. package/src/build/runtime-specifier-alias-plugin.ts +58 -0
  54. package/src/config/README.md +33 -0
  55. package/src/config/config-builder.test.ts +410 -0
  56. package/src/config/config-builder.ts +281 -49
  57. package/src/constants.ts +15 -0
  58. package/src/declarations.d.ts +18 -13
  59. package/src/eco/README.md +70 -16
  60. package/src/eco/component-render-context.ts +39 -17
  61. package/src/eco/eco.test.ts +678 -0
  62. package/src/eco/eco.ts +29 -8
  63. package/src/eco/eco.types.ts +20 -1
  64. package/src/eco/eco.utils.test.ts +124 -0
  65. package/src/eco/global-injector-map.test.ts +42 -0
  66. package/src/eco/lazy-injector-map.test.ts +66 -0
  67. package/src/eco/module-dependencies.test.ts +30 -0
  68. package/src/errors/http-error.test.ts +134 -0
  69. package/src/global/utils.test.ts +12 -0
  70. package/src/hmr/README.md +26 -0
  71. 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
  72. package/src/hmr/client/__screenshots__/hmr-runtime.test.browser.ts/HMR-Runtime-HMR-Server-Integration-should-load-fixture-app-page-1.png +0 -0
  73. package/src/hmr/client/__screenshots__/hmr-runtime.test.browser.ts/HMR-Runtime-WebSocket-Connection-should-connect-to-correct-HMR-endpoint-1.png +0 -0
  74. package/src/hmr/client/hmr-runtime.ts +38 -7
  75. package/src/hmr/hmr-strategy.test.ts +124 -0
  76. package/src/hmr/hmr.postcss.test.e2e.ts +41 -0
  77. package/src/hmr/hmr.test.e2e.ts +29 -38
  78. package/src/hmr/strategies/js-hmr-strategy.test.ts +335 -0
  79. package/src/hmr/strategies/js-hmr-strategy.ts +71 -78
  80. package/src/index.ts +1 -1
  81. package/src/integrations/ghtml/ghtml-renderer.test.ts +63 -0
  82. package/src/integrations/ghtml/ghtml-renderer.ts +4 -1
  83. package/src/internal-types.ts +39 -19
  84. package/src/plugins/README.md +34 -0
  85. package/src/plugins/alias-resolver-plugin.test.ts +41 -0
  86. package/src/plugins/alias-resolver-plugin.ts +21 -3
  87. package/src/plugins/eco-component-meta-plugin.test.ts +380 -0
  88. package/src/plugins/eco-component-meta-plugin.ts +10 -3
  89. package/src/plugins/integration-plugin.test.ts +111 -0
  90. package/src/plugins/integration-plugin.ts +45 -3
  91. package/src/plugins/processor.test.ts +148 -0
  92. package/src/plugins/processor.ts +22 -2
  93. package/src/plugins/runtime-capability.ts +14 -0
  94. package/src/public-types.ts +73 -11
  95. package/src/route-renderer/GRAPH.md +16 -20
  96. package/src/route-renderer/README.md +8 -21
  97. package/src/route-renderer/component-graph/component-graph-executor.test.ts +41 -0
  98. package/src/route-renderer/component-graph/component-graph.test.ts +63 -0
  99. package/src/route-renderer/component-graph/component-marker.test.ts +73 -0
  100. package/src/route-renderer/component-graph/component-reference.ts +29 -0
  101. package/src/route-renderer/component-graph/marker-graph-resolver.test.ts +135 -0
  102. package/src/route-renderer/{marker-graph-resolver.ts → component-graph/marker-graph-resolver.ts} +11 -9
  103. package/src/route-renderer/orchestration/integration-renderer.test.ts +936 -0
  104. package/src/route-renderer/{integration-renderer.ts → orchestration/integration-renderer.ts} +113 -19
  105. package/src/route-renderer/orchestration/render-execution.service.test.ts +97 -0
  106. package/src/route-renderer/{render-execution.service.ts → orchestration/render-execution.service.ts} +109 -37
  107. package/src/route-renderer/orchestration/render-preparation.service.test.ts +235 -0
  108. package/src/route-renderer/{render-preparation.service.ts → orchestration/render-preparation.service.ts} +127 -9
  109. package/src/route-renderer/page-loading/dependency-resolver.test.ts +345 -0
  110. package/src/route-renderer/{dependency-resolver.ts → page-loading/dependency-resolver.ts} +28 -12
  111. package/src/route-renderer/page-loading/page-module-loader.test.ts +96 -0
  112. package/src/route-renderer/{page-module-loader.ts → page-loading/page-module-loader.ts} +49 -21
  113. package/src/route-renderer/route-renderer.ts +36 -1
  114. package/src/router/README.md +26 -0
  115. package/src/router/client/link-intent.d.ts +53 -0
  116. package/src/router/client/link-intent.test.browser.ts +51 -0
  117. package/src/router/client/link-intent.ts +92 -0
  118. package/src/router/client/navigation-coordinator.test.ts +237 -0
  119. package/src/router/client/navigation-coordinator.ts +433 -0
  120. package/src/router/server/fs-router-scanner.test.ts +83 -0
  121. package/src/router/{fs-router-scanner.ts → server/fs-router-scanner.ts} +12 -10
  122. package/src/router/server/fs-router.test.ts +214 -0
  123. package/src/router/{fs-router.ts → server/fs-router.ts} +2 -2
  124. package/src/services/README.md +29 -0
  125. package/src/services/assets/asset-processing-service/asset-processing.service.test.ts +385 -0
  126. package/src/services/{asset-processing-service → assets/asset-processing-service}/asset-processing.service.ts +101 -6
  127. package/src/services/assets/asset-processing-service/asset.factory.test.ts +63 -0
  128. package/src/services/{asset-processing-service → assets/asset-processing-service}/asset.factory.ts +2 -2
  129. package/src/services/{asset-processing-service → assets/asset-processing-service}/assets.types.ts +2 -1
  130. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.test.ts +72 -0
  131. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.ts +95 -0
  132. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.test.ts +67 -0
  133. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.ts +78 -0
  134. package/src/services/{asset-processing-service → assets/asset-processing-service}/index.ts +2 -0
  135. package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.interface.ts +1 -1
  136. package/src/services/assets/asset-processing-service/processors/base/base-processor.test.ts +59 -0
  137. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/base/base-processor.ts +11 -5
  138. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/base/base-script-processor.ts +17 -27
  139. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.test.ts +286 -0
  140. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/file-script.processor.ts +3 -3
  141. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.test.ts +227 -0
  142. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/node-module-script.processor.ts +5 -4
  143. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.test.ts +199 -0
  144. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/stylesheet/file-stylesheet.processor.ts +4 -1
  145. package/src/services/assets/browser-bundle.service.test.ts +36 -0
  146. package/src/services/assets/browser-bundle.service.ts +53 -0
  147. package/src/services/cache/index.ts +3 -3
  148. package/src/services/cache/memory-cache-store.test.ts +225 -0
  149. package/src/services/cache/memory-cache-store.ts +1 -1
  150. package/src/services/cache/page-cache-service.test.ts +175 -0
  151. package/src/services/cache/page-cache-service.ts +3 -3
  152. package/src/services/cache/page-request-cache-coordinator.service.test.ts +79 -0
  153. package/src/services/{page-request-cache-coordinator.service.ts → cache/page-request-cache-coordinator.service.ts} +9 -6
  154. package/src/services/html/html-rewriter-provider.service.test.ts +183 -0
  155. package/src/services/html/html-rewriter-provider.service.ts +103 -0
  156. package/src/services/html/html-transformer.service.test.ts +378 -0
  157. package/src/services/html/html-transformer.service.ts +279 -0
  158. package/src/services/invalidation/development-invalidation.service.test.ts +77 -0
  159. package/src/services/invalidation/development-invalidation.service.ts +261 -0
  160. package/src/services/module-loading/app-server-module-transpiler.service.ts +52 -0
  161. package/src/services/module-loading/page-module-import.service.test.ts +253 -0
  162. package/src/services/module-loading/page-module-import.service.ts +200 -0
  163. package/src/services/module-loading/server-loader.service.test.ts +161 -0
  164. package/src/services/module-loading/server-loader.service.ts +130 -0
  165. package/src/services/module-loading/server-module-transpiler.service.test.ts +115 -0
  166. package/src/services/module-loading/server-module-transpiler.service.ts +105 -0
  167. package/src/services/runtime-manifest/node-runtime-manifest.service.test.ts +95 -0
  168. package/src/services/runtime-manifest/node-runtime-manifest.service.ts +101 -0
  169. package/src/services/runtime-state/dev-graph.service.ts +217 -0
  170. package/src/services/runtime-state/entrypoint-dependency-graph.service.ts +136 -0
  171. package/src/services/runtime-state/runtime-specifier-registry.service.ts +96 -0
  172. package/src/services/runtime-state/server-invalidation-state.service.ts +68 -0
  173. package/src/services/validation/schema-validation-service.test.ts +223 -0
  174. package/src/services/{schema-validation-service.ts → validation/schema-validation-service.ts} +1 -1
  175. package/src/static-site-generator/README.md +26 -0
  176. package/src/static-site-generator/static-site-generator.test.ts +307 -0
  177. package/src/static-site-generator/static-site-generator.ts +109 -6
  178. package/src/utils/deep-merge.test.ts +114 -0
  179. package/src/utils/invariant.test.ts +22 -0
  180. package/src/utils/path-utils.test.ts +15 -0
  181. package/src/utils/resolve-work-dir.ts +45 -0
  182. package/src/utils/server-utils.test.ts +38 -0
  183. package/src/watchers/project-watcher.integration.test.ts +337 -0
  184. package/src/watchers/project-watcher.test-helpers.ts +1 -0
  185. package/src/watchers/project-watcher.test.ts +678 -0
  186. package/src/watchers/project-watcher.ts +49 -50
  187. package/CHANGELOG.md +0 -94
  188. package/src/adapters/abstract/application-adapter.d.ts +0 -168
  189. package/src/adapters/abstract/application-adapter.js +0 -109
  190. package/src/adapters/abstract/router-adapter.d.ts +0 -26
  191. package/src/adapters/abstract/router-adapter.js +0 -5
  192. package/src/adapters/abstract/server-adapter.d.ts +0 -69
  193. package/src/adapters/abstract/server-adapter.js +0 -15
  194. package/src/adapters/bun/client-bridge.d.ts +0 -34
  195. package/src/adapters/bun/client-bridge.js +0 -48
  196. package/src/adapters/bun/create-app.d.ts +0 -60
  197. package/src/adapters/bun/create-app.js +0 -117
  198. package/src/adapters/bun/define-api-handler.d.ts +0 -61
  199. package/src/adapters/bun/define-api-handler.js +0 -15
  200. package/src/adapters/bun/define-api-handler.ts +0 -114
  201. package/src/adapters/bun/hmr-manager.d.ts +0 -79
  202. package/src/adapters/bun/hmr-manager.js +0 -222
  203. package/src/adapters/bun/index.d.ts +0 -3
  204. package/src/adapters/bun/index.js +0 -8
  205. package/src/adapters/bun/server-adapter.d.ts +0 -155
  206. package/src/adapters/bun/server-adapter.js +0 -368
  207. package/src/adapters/bun/server-lifecycle.d.ts +0 -52
  208. package/src/adapters/bun/server-lifecycle.js +0 -120
  209. package/src/adapters/index.d.ts +0 -6
  210. package/src/adapters/index.js +0 -14
  211. package/src/adapters/node/create-app.d.ts +0 -21
  212. package/src/adapters/node/create-app.js +0 -143
  213. package/src/adapters/node/index.d.ts +0 -4
  214. package/src/adapters/node/index.js +0 -8
  215. package/src/adapters/node/node-client-bridge.d.ts +0 -26
  216. package/src/adapters/node/node-client-bridge.js +0 -66
  217. package/src/adapters/node/node-hmr-manager.d.ts +0 -62
  218. package/src/adapters/node/node-hmr-manager.js +0 -221
  219. package/src/adapters/node/server-adapter.d.ts +0 -190
  220. package/src/adapters/node/server-adapter.js +0 -420
  221. package/src/adapters/node/static-content-server.d.ts +0 -24
  222. package/src/adapters/node/static-content-server.js +0 -166
  223. package/src/adapters/shared/api-response.d.ts +0 -52
  224. package/src/adapters/shared/api-response.js +0 -96
  225. package/src/adapters/shared/application-adapter.d.ts +0 -18
  226. package/src/adapters/shared/application-adapter.js +0 -90
  227. package/src/adapters/shared/explicit-static-route-matcher.d.ts +0 -38
  228. package/src/adapters/shared/explicit-static-route-matcher.js +0 -100
  229. package/src/adapters/shared/file-route-middleware-pipeline.d.ts +0 -65
  230. package/src/adapters/shared/file-route-middleware-pipeline.js +0 -98
  231. package/src/adapters/shared/fs-server-response-factory.d.ts +0 -19
  232. package/src/adapters/shared/fs-server-response-factory.js +0 -97
  233. package/src/adapters/shared/fs-server-response-matcher.d.ts +0 -71
  234. package/src/adapters/shared/fs-server-response-matcher.js +0 -155
  235. package/src/adapters/shared/render-context.d.ts +0 -14
  236. package/src/adapters/shared/render-context.js +0 -69
  237. package/src/adapters/shared/server-adapter.d.ts +0 -87
  238. package/src/adapters/shared/server-adapter.js +0 -353
  239. package/src/adapters/shared/server-route-handler.d.ts +0 -89
  240. package/src/adapters/shared/server-route-handler.js +0 -120
  241. package/src/adapters/shared/server-static-builder.d.ts +0 -38
  242. package/src/adapters/shared/server-static-builder.js +0 -46
  243. package/src/build/build-adapter.d.ts +0 -75
  244. package/src/build/build-adapter.js +0 -54
  245. package/src/build/build-types.d.ts +0 -57
  246. package/src/build/build-types.js +0 -0
  247. package/src/build/esbuild-build-adapter.d.ts +0 -69
  248. package/src/build/esbuild-build-adapter.js +0 -391
  249. package/src/config/config-builder.d.ts +0 -227
  250. package/src/config/config-builder.js +0 -392
  251. package/src/constants.d.ts +0 -32
  252. package/src/constants.js +0 -21
  253. package/src/create-app.d.ts +0 -17
  254. package/src/create-app.js +0 -66
  255. package/src/define-api-handler.d.ts +0 -25
  256. package/src/define-api-handler.js +0 -15
  257. package/src/dev/sc-server.d.ts +0 -30
  258. package/src/dev/sc-server.js +0 -111
  259. package/src/eco/component-render-context.d.ts +0 -105
  260. package/src/eco/component-render-context.js +0 -77
  261. package/src/eco/eco.d.ts +0 -9
  262. package/src/eco/eco.js +0 -110
  263. package/src/eco/eco.types.d.ts +0 -170
  264. package/src/eco/eco.types.js +0 -0
  265. package/src/eco/eco.utils.d.ts +0 -40
  266. package/src/eco/eco.utils.js +0 -40
  267. package/src/eco/global-injector-map.d.ts +0 -16
  268. package/src/eco/global-injector-map.js +0 -80
  269. package/src/eco/lazy-injector-map.d.ts +0 -8
  270. package/src/eco/lazy-injector-map.js +0 -70
  271. package/src/eco/module-dependencies.d.ts +0 -18
  272. package/src/eco/module-dependencies.js +0 -49
  273. package/src/errors/http-error.d.ts +0 -31
  274. package/src/errors/http-error.js +0 -50
  275. package/src/errors/index.d.ts +0 -2
  276. package/src/errors/index.js +0 -4
  277. package/src/errors/locals-access-error.d.ts +0 -4
  278. package/src/errors/locals-access-error.js +0 -9
  279. package/src/global/app-logger.d.ts +0 -2
  280. package/src/global/app-logger.js +0 -6
  281. package/src/hmr/client/hmr-runtime.d.ts +0 -10
  282. package/src/hmr/client/hmr-runtime.js +0 -86
  283. package/src/hmr/hmr-strategy.d.ts +0 -159
  284. package/src/hmr/hmr-strategy.js +0 -29
  285. package/src/hmr/hmr.test.e2e.d.ts +0 -1
  286. package/src/hmr/hmr.test.e2e.js +0 -50
  287. package/src/hmr/strategies/default-hmr-strategy.d.ts +0 -43
  288. package/src/hmr/strategies/default-hmr-strategy.js +0 -34
  289. package/src/hmr/strategies/js-hmr-strategy.d.ts +0 -136
  290. package/src/hmr/strategies/js-hmr-strategy.js +0 -192
  291. package/src/index.browser.d.ts +0 -3
  292. package/src/index.browser.js +0 -4
  293. package/src/index.d.ts +0 -5
  294. package/src/index.js +0 -10
  295. package/src/integrations/ghtml/ghtml-renderer.d.ts +0 -15
  296. package/src/integrations/ghtml/ghtml-renderer.js +0 -60
  297. package/src/integrations/ghtml/ghtml.plugin.d.ts +0 -20
  298. package/src/integrations/ghtml/ghtml.plugin.js +0 -21
  299. package/src/internal-types.d.ts +0 -200
  300. package/src/internal-types.js +0 -0
  301. package/src/plugins/alias-resolver-plugin.d.ts +0 -2
  302. package/src/plugins/alias-resolver-plugin.js +0 -39
  303. package/src/plugins/eco-component-meta-plugin.d.ts +0 -95
  304. package/src/plugins/eco-component-meta-plugin.js +0 -157
  305. package/src/plugins/integration-plugin.d.ts +0 -102
  306. package/src/plugins/integration-plugin.js +0 -100
  307. package/src/plugins/processor.d.ts +0 -82
  308. package/src/plugins/processor.js +0 -122
  309. package/src/public-types.d.ts +0 -1094
  310. package/src/public-types.js +0 -0
  311. package/src/route-renderer/component-graph-executor.d.ts +0 -32
  312. package/src/route-renderer/component-graph-executor.js +0 -31
  313. package/src/route-renderer/component-graph.d.ts +0 -42
  314. package/src/route-renderer/component-graph.js +0 -72
  315. package/src/route-renderer/component-marker.d.ts +0 -52
  316. package/src/route-renderer/component-marker.js +0 -46
  317. package/src/route-renderer/dependency-resolver.d.ts +0 -24
  318. package/src/route-renderer/dependency-resolver.js +0 -428
  319. package/src/route-renderer/html-post-processing.service.d.ts +0 -40
  320. package/src/route-renderer/html-post-processing.service.js +0 -86
  321. package/src/route-renderer/html-post-processing.service.ts +0 -103
  322. package/src/route-renderer/integration-renderer.d.ts +0 -339
  323. package/src/route-renderer/integration-renderer.js +0 -526
  324. package/src/route-renderer/marker-graph-resolver.d.ts +0 -76
  325. package/src/route-renderer/marker-graph-resolver.js +0 -93
  326. package/src/route-renderer/page-module-loader.d.ts +0 -61
  327. package/src/route-renderer/page-module-loader.js +0 -102
  328. package/src/route-renderer/render-execution.service.d.ts +0 -69
  329. package/src/route-renderer/render-execution.service.js +0 -91
  330. package/src/route-renderer/render-preparation.service.d.ts +0 -112
  331. package/src/route-renderer/render-preparation.service.js +0 -243
  332. package/src/route-renderer/route-renderer.d.ts +0 -26
  333. package/src/route-renderer/route-renderer.js +0 -68
  334. package/src/router/fs-router-scanner.d.ts +0 -41
  335. package/src/router/fs-router-scanner.js +0 -155
  336. package/src/router/fs-router.d.ts +0 -26
  337. package/src/router/fs-router.js +0 -100
  338. package/src/services/asset-processing-service/asset-processing.service.d.ts +0 -41
  339. package/src/services/asset-processing-service/asset-processing.service.js +0 -250
  340. package/src/services/asset-processing-service/asset.factory.d.ts +0 -17
  341. package/src/services/asset-processing-service/asset.factory.js +0 -82
  342. package/src/services/asset-processing-service/assets.types.d.ts +0 -88
  343. package/src/services/asset-processing-service/assets.types.js +0 -0
  344. package/src/services/asset-processing-service/index.d.ts +0 -3
  345. package/src/services/asset-processing-service/index.js +0 -3
  346. package/src/services/asset-processing-service/processor.interface.d.ts +0 -22
  347. package/src/services/asset-processing-service/processor.interface.js +0 -6
  348. package/src/services/asset-processing-service/processor.registry.d.ts +0 -8
  349. package/src/services/asset-processing-service/processor.registry.js +0 -15
  350. package/src/services/asset-processing-service/processors/base/base-processor.d.ts +0 -24
  351. package/src/services/asset-processing-service/processors/base/base-processor.js +0 -59
  352. package/src/services/asset-processing-service/processors/base/base-script-processor.d.ts +0 -16
  353. package/src/services/asset-processing-service/processors/base/base-script-processor.js +0 -80
  354. package/src/services/asset-processing-service/processors/index.d.ts +0 -5
  355. package/src/services/asset-processing-service/processors/index.js +0 -5
  356. package/src/services/asset-processing-service/processors/script/content-script.processor.d.ts +0 -5
  357. package/src/services/asset-processing-service/processors/script/content-script.processor.js +0 -57
  358. package/src/services/asset-processing-service/processors/script/file-script.processor.d.ts +0 -8
  359. package/src/services/asset-processing-service/processors/script/file-script.processor.js +0 -76
  360. package/src/services/asset-processing-service/processors/script/node-module-script.processor.d.ts +0 -7
  361. package/src/services/asset-processing-service/processors/script/node-module-script.processor.js +0 -74
  362. package/src/services/asset-processing-service/processors/stylesheet/content-stylesheet.processor.d.ts +0 -5
  363. package/src/services/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +0 -25
  364. package/src/services/asset-processing-service/processors/stylesheet/file-stylesheet.processor.d.ts +0 -9
  365. package/src/services/asset-processing-service/processors/stylesheet/file-stylesheet.processor.js +0 -63
  366. package/src/services/cache/cache.types.d.ts +0 -107
  367. package/src/services/cache/cache.types.js +0 -0
  368. package/src/services/cache/index.d.ts +0 -7
  369. package/src/services/cache/index.js +0 -7
  370. package/src/services/cache/memory-cache-store.d.ts +0 -42
  371. package/src/services/cache/memory-cache-store.js +0 -98
  372. package/src/services/cache/page-cache-service.d.ts +0 -70
  373. package/src/services/cache/page-cache-service.js +0 -152
  374. package/src/services/html-transformer.service.d.ts +0 -50
  375. package/src/services/html-transformer.service.js +0 -163
  376. package/src/services/html-transformer.service.ts +0 -217
  377. package/src/services/page-module-import.service.d.ts +0 -37
  378. package/src/services/page-module-import.service.js +0 -88
  379. package/src/services/page-module-import.service.ts +0 -129
  380. package/src/services/page-request-cache-coordinator.service.d.ts +0 -75
  381. package/src/services/page-request-cache-coordinator.service.js +0 -107
  382. package/src/services/schema-validation-service.d.ts +0 -122
  383. package/src/services/schema-validation-service.js +0 -101
  384. package/src/services/validation/standard-schema.types.d.ts +0 -65
  385. package/src/services/validation/standard-schema.types.js +0 -0
  386. package/src/static-site-generator/static-site-generator.d.ts +0 -57
  387. package/src/static-site-generator/static-site-generator.js +0 -272
  388. package/src/utils/css.d.ts +0 -1
  389. package/src/utils/css.js +0 -7
  390. package/src/utils/deep-merge.d.ts +0 -14
  391. package/src/utils/deep-merge.js +0 -32
  392. package/src/utils/hash.d.ts +0 -1
  393. package/src/utils/hash.js +0 -7
  394. package/src/utils/html.d.ts +0 -1
  395. package/src/utils/html.js +0 -4
  396. package/src/utils/invariant.d.ts +0 -5
  397. package/src/utils/invariant.js +0 -11
  398. package/src/utils/locals-utils.d.ts +0 -15
  399. package/src/utils/locals-utils.js +0 -24
  400. package/src/utils/parse-cli-args.d.ts +0 -24
  401. package/src/utils/parse-cli-args.js +0 -47
  402. package/src/utils/path-utils.module.d.ts +0 -5
  403. package/src/utils/path-utils.module.js +0 -14
  404. package/src/utils/runtime.d.ts +0 -11
  405. package/src/utils/runtime.js +0 -40
  406. package/src/utils/server-utils.module.d.ts +0 -19
  407. package/src/utils/server-utils.module.js +0 -56
  408. package/src/watchers/project-watcher.d.ts +0 -132
  409. package/src/watchers/project-watcher.js +0 -281
  410. package/src/watchers/project-watcher.test-helpers.d.ts +0 -4
  411. package/src/watchers/project-watcher.test-helpers.js +0 -51
  412. /package/src/route-renderer/{component-graph-executor.ts → component-graph/component-graph-executor.ts} +0 -0
  413. /package/src/route-renderer/{component-graph.ts → component-graph/component-graph.ts} +0 -0
  414. /package/src/route-renderer/{component-marker.ts → component-graph/component-marker.ts} +0 -0
  415. /package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.registry.ts +0 -0
  416. /package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/index.ts +0 -0
  417. /package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/content-script.processor.ts +0 -0
  418. /package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/stylesheet/content-stylesheet.processor.ts +0 -0
package/README.md CHANGED
@@ -1,32 +1,233 @@
1
- # Ecopages
1
+ # @ecopages/core
2
2
 
3
- Ecopages is a static site generator designed with the goal of simplifying the process of creating websites. It is suitable for a range of projects, from blogs to portfolios, emphasizing ease of use and flexibility.
3
+ The foundational engine for the Ecopages framework. It provides the core build pipeline, development server, routing, and plugin architecture required to run an Ecopages application.
4
4
 
5
- This project is built on a commitment to clarity and simplicity in web development, utilizing modern web technologies without obscuring the process with unnecessary complexity.
5
+ ## Overview
6
6
 
7
- Ecopages relies on a minimal set of dependencies, carefully chosen to support its core functionality.
7
+ Ecopages is an extensible static site generator (SSG) built for universal execution across Bun and Node.js. It embraces a strictly MPA (Multi-Page Application) architecture by default, rendering HTML at build-time or request-time, and hydrating interactive islands only where necessary.
8
8
 
9
- Ecopages is built on the [Bun](https://bun.sh/) runtime, primarily utilizing [Kita](https://kitajs.org/html/) and [Mdx](https://mdxjs.com/) for rendering. Additionally, it supports [Lit Elements](https://lit.dev/) and offers experimental integration with [React](https://react.dev/). This setup allows for the extension of the platform with custom rendering functions, providing flexibility to cater to the specific needs of each project. The integrations are designed to be extensible, with no limit to the customization and expansion possibilities.
9
+ - **Universal Support**: First-class, optimized execution on both **Bun** and **Node.js** runtimes, powered by a unified `createApp` factory.
10
+ - **Fast by default**: Uses native ESM, optimized file watching, and esbuild for high-performance bundling and server-side rendering.
11
+ - **Framework agnostic**: First-class support for KitaJS, Lit, React, and MDX via official integration plugins.
12
+ - **Extensible**: Hook into the build process with custom processors or rendering integrations.
10
13
 
11
- For styling, [Tailwind CSS](https://tailwindcss.com/) and [PostCSS](https://postcss.org/) have been integrated. Notably, we recommend using `css` stylesheets and `@apply` directives with Tailwind CSS, diverging from its usual inline styling approach to better suit the structure of Ecopages.
14
+ ## Current Architecture
12
15
 
13
- As a project in its early stages, Ecopages is continuously evolving. Users may encounter limitations or areas in need of refinement. We welcome feedback and issue reports via our [GitHub repository](https://github.com/ecopages/ecopages).
16
+ The current core package is organized around app-owned runtime state and explicit service boundaries.
14
17
 
15
- ## Install
18
+ The important ownership rules are:
19
+
20
+ - `ConfigBuilder.build()` finalizes app-owned build and runtime services.
21
+ - browser bundling and server module loading are explicit, separate paths.
22
+ - runtime hosts stay thin and delegate framework work into core services.
23
+ - HMR and invalidation use shared graph-aware services instead of runtime-specific ad hoc wiring.
24
+
25
+ ### Bootstrap And Runtime Ownership
26
+
27
+ ```mermaid
28
+ flowchart TD
29
+ A[eco.config.ts] --> B[ConfigBuilder.build]
30
+ B --> C[App build adapter]
31
+ B --> D[App build manifest]
32
+ B --> E[Build executor]
33
+ B --> F[Dev graph service]
34
+ B --> G[Runtime specifier registry]
35
+ B --> H[Node runtime manifest]
36
+ H --> I[CLI launch plan]
37
+ I --> J[Node thin host]
38
+ J --> K[Node runtime adapter]
39
+ K --> L[TranspilerServerLoader]
40
+ L --> M[ServerModuleTranspiler]
41
+ M --> N[PageModuleImportService]
42
+ K --> O[Loaded app runtime]
43
+ D --> P[BrowserBundleService]
44
+ E --> M
45
+ E --> P
46
+ ```
47
+
48
+ ### Development Invalidation And HMR Flow
49
+
50
+ ```mermaid
51
+ flowchart TD
52
+ A[File change] --> B[ProjectWatcher]
53
+ B --> C[DevelopmentInvalidationService]
54
+ C --> D{Change kind}
55
+ D -->|Route or server source| E[Invalidate server modules]
56
+ D -->|Public or include| F[Reload browser]
57
+ D -->|Processor-owned asset| G[Notify processor only]
58
+ D -->|HMR-eligible source| H[Core HMR manager]
59
+ H --> I[Strategy selection]
60
+ I --> J[Core JsHmrStrategy]
61
+ I --> K[Integration strategy e.g. ReactHmrStrategy]
62
+ J --> L[BrowserBundleService]
63
+ K --> L
64
+ K --> M[importServerModule]
65
+ M --> N[ServerModuleTranspiler]
66
+ L --> O[Updated browser bundle]
67
+ O --> P[Client bridge broadcast]
68
+ ```
69
+
70
+ The manager/orchestration layer is core-owned, but framework-specific strategies such as React HMR are contributed by integrations and registered with the shared HMR manager.
71
+
72
+ ### Practical Summary
73
+
74
+ - `ConfigBuilder` now seeds one app-owned build adapter, manifest, executor, dev graph, and runtime registry.
75
+ - `BrowserBundleService` is the shared browser build seam used by HMR and asset-oriented browser output paths.
76
+ - `ServerModuleTranspiler` is the shared server-side source loading seam used by runtime bootstrap and HMR metadata loading.
77
+ - the Node thin-host path exists to keep startup framework-owned without putting source parsing or tsconfig ownership into the host itself.
78
+
79
+ ## Documentation Map
80
+
81
+ Use this package README as the top-level map, then drill into the focused subsystem READMEs:
82
+
83
+ - `src/config/README.md`: config finalization and app-owned runtime/build state
84
+ - `src/plugins/README.md`: integration and processor authoring contracts
85
+ - `src/build/README.md`: build adapter, executor, and development build coordination
86
+ - `src/services/README.md`: cross-cutting runtime services and orchestration helpers
87
+ - `src/adapters/README.md`: Bun, Node, and shared adapter boundaries
88
+ - `src/hmr/README.md`: HMR strategy and update-layer ownership
89
+ - `src/router/README.md`: route discovery, matching, and browser navigation coordination
90
+ - `src/route-renderer/README.md`: rendering orchestration and dependency resolution
91
+ - `src/static-site-generator/README.md`: static build execution path
92
+ - `src/eco/README.md`: `eco` authoring APIs for pages, layouts, and components
93
+
94
+ The intended reading order is:
95
+
96
+ 1. this file for the big-picture architecture
97
+ 2. `src/config/README.md` for config and lifecycle ownership
98
+ 3. `src/plugins/README.md` and `src/build/README.md` for contribution contracts
99
+ 4. `src/services/README.md` and `src/adapters/README.md` for runtime execution
100
+ 5. `src/router/README.md` and `src/route-renderer/README.md` for request-time flow
101
+
102
+ ## Installation
16
103
 
17
104
  ```bash
18
105
  bunx jsr add @ecopages/core
19
106
  ```
20
107
 
21
- ## Portable imports first
108
+ _(You can also use `npm`, `yarn`, or `pnpm`)_
109
+
110
+ ## Basic Usage
111
+
112
+ The Ecopages architecture revolves around an `eco.config.ts` file and an application entry point.
113
+
114
+ ### 1. Configuration (`eco.config.ts`)
115
+
116
+ Configure your integratons, processors, and default metadata. Ecopages uses a builder pattern:
117
+
118
+ ```typescript
119
+ import { ConfigBuilder } from '@ecopages/core/config-builder';
120
+ // import your desired plugins...
121
+
122
+ const config = await new ConfigBuilder()
123
+ .setRootDir(import.meta.dirname)
124
+ .setBaseUrl(import.meta.env.ECOPAGES_BASE_URL ?? 'http://localhost:3000')
125
+ .setDefaultMetadata({
126
+ title: 'My Ecopages Site',
127
+ description: 'Built with Ecopages',
128
+ })
129
+ // .setIntegrations([kitajsPlugin()])
130
+ .build();
131
+
132
+ export default config;
133
+ ```
134
+
135
+ ### 2. Application Entry (`app.ts`)
22
136
 
23
- Use the root package exports for normal Ecopages authoring:
137
+ Start the application using the universal `createApp` factory. It automatically detects your runtime and applies the correct adapter.
138
+
139
+ ```typescript
140
+ import { createApp } from '@ecopages/core';
141
+ import appConfig from './eco.config';
142
+
143
+ const app = createApp({ appConfig });
144
+
145
+ await app.start();
146
+ ```
147
+
148
+ ### 3. Creating Pages
149
+
150
+ Use the `eco.page()` factory to define static routes. Place these in `src/pages/`:
151
+
152
+ ```tsx
153
+ import { eco } from '@ecopages/core';
154
+ import { BaseLayout } from '@/layouts/base-layout';
155
+
156
+ export default eco.page({
157
+ layout: BaseLayout,
158
+ metadata: () => ({
159
+ title: 'Home',
160
+ }),
161
+ render: () => (
162
+ <div>
163
+ <h1>Welcome to Ecopages</h1>
164
+ </div>
165
+ ),
166
+ });
167
+ ```
168
+
169
+ ### 4. Reusable Components
170
+
171
+ Define components with `eco.component()` to automatically inject necessary stylesheets or scripts only when that component is rendered:
172
+
173
+ ```tsx
174
+ import { eco } from '@ecopages/core';
175
+
176
+ export const MyButton = eco.component({
177
+ dependencies: {
178
+ stylesheets: ['./button.css'],
179
+ },
180
+ render: ({ label }) => <button className="my-button">{label}</button>,
181
+ });
182
+ ```
183
+
184
+ ### 5. API Handlers
185
+
186
+ Add server-side routes using `defineApiHandler`. Register them on your `app` instance before starting:
187
+
188
+ ```typescript
189
+ import { defineApiHandler } from '@ecopages/core';
190
+
191
+ export const helloWorld = defineApiHandler({
192
+ path: '/api/hello',
193
+ method: 'GET',
194
+ handler: async ({ response }) => {
195
+ return response.json({ message: 'Hello World' });
196
+ },
197
+ });
198
+ ```
199
+
200
+ Attach the handler in your `app.ts` entry:
201
+
202
+ ```typescript
203
+ // app.ts
204
+ import { createApp } from '@ecopages/core';
205
+ import { helloWorld } from './handlers/hello';
206
+ import appConfig from './eco.config';
207
+
208
+ const app = createApp({ appConfig });
209
+
210
+ app.get(helloWorld); // Register the API handler
211
+
212
+ await app.start();
213
+ ```
214
+
215
+ See the [official documentation](https://ecopages.app) for advanced usage, API handlers, and integrations.
216
+
217
+ ## Import Structure
218
+
219
+ Use the root package exports for standard authoring. The framework automatically detects your runtime and uses the optimal internal adapter:
24
220
 
25
221
  ```ts
26
- import { EcopagesApp, defineApiHandler, defineGroupHandler } from '@ecopages/core';
222
+ import { createApp, defineApiHandler, defineGroupHandler, eco } from '@ecopages/core';
27
223
  ```
28
224
 
29
- Use runtime-specific subpaths only as advanced escape hatches when you explicitly need Bun- or Node-native APIs:
225
+ > [!NOTE]
226
+ > `createApp` is now the recommended universal entrypoint over `EcopagesApp`.
227
+
228
+ ### Runtime Escape Hatches
229
+
230
+ Use runtime-specific subpaths only when you explicitly need Bun-native or Node-native APIs that bypass the universal abstractions:
30
231
 
31
232
  - `@ecopages/core/bun`
32
233
  - `@ecopages/core/node`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ecopages/core",
3
- "version": "0.2.0-alpha.5",
3
+ "version": "0.2.0-alpha.6",
4
4
  "description": "Core package for Ecopages",
5
5
  "keywords": [
6
6
  "ecopages",
@@ -8,16 +8,23 @@
8
8
  "ssg"
9
9
  ],
10
10
  "license": "MIT",
11
- "main": "./src/index.js",
11
+ "main": "./src/index.ts",
12
12
  "type": "module",
13
+ "files": [
14
+ "src"
15
+ ],
13
16
  "sideEffects": false,
14
17
  "repository": {
15
18
  "type": "git",
16
19
  "url": "https://github.com/ecopages/ecopages.git",
17
20
  "directory": "packages/core"
18
21
  },
22
+ "scripts": {
23
+ "typecheck": "bunx tsc --noEmit",
24
+ "release:jsr": "bunx jsr publish"
25
+ },
19
26
  "dependencies": {
20
- "@ecopages/file-system": "0.2.0-alpha.5",
27
+ "@ecopages/file-system": "workspace:*",
21
28
  "@ecopages/logger": "latest",
22
29
  "@ecopages/scripts-injector": "^0.1.3",
23
30
  "@worker-tools/html-rewriter": "0.1.0-pre.19",
@@ -27,28 +34,49 @@
27
34
  "oxc-parser": "^0.110.0",
28
35
  "ws": "^8.18.0"
29
36
  },
37
+ "devDependencies": {
38
+ "@types/bun": "latest",
39
+ "@types/ws": "^8.5.14",
40
+ "arktype": "^2.1.29",
41
+ "tailwindcss": "^3.4.19",
42
+ "tsx": "^4.20.5",
43
+ "valibot": "^1.2.0",
44
+ "zod": "^4.3.6"
45
+ },
30
46
  "exports": {
31
47
  ".": {
32
- "browser": "./src/index.browser.js",
33
- "import": "./src/index.js",
34
- "types": "./src/index.d.ts",
35
- "default": "./src/index.js"
48
+ "browser": "./src/index.browser.ts",
49
+ "import": "./src/index.ts",
50
+ "require": "./src/index.ts",
51
+ "types": "./src/index.ts"
36
52
  },
37
53
  "./create-app": {
38
- "types": "./src/create-app.d.ts",
39
- "default": "./src/create-app.js"
54
+ "types": "./src/create-app.ts",
55
+ "default": "./src/create-app.ts"
40
56
  },
41
57
  "./route-renderer/integration-renderer": {
42
- "types": "./src/route-renderer/integration-renderer.d.ts",
43
- "default": "./src/route-renderer/integration-renderer.js"
58
+ "types": "./src/route-renderer/orchestration/integration-renderer.ts",
59
+ "default": "./src/route-renderer/orchestration/integration-renderer.ts"
60
+ },
61
+ "./router/navigation-coordinator": {
62
+ "types": "./src/router/client/navigation-coordinator.ts",
63
+ "default": "./src/router/client/navigation-coordinator.ts"
64
+ },
65
+ "./router/link-intent": {
66
+ "types": "./src/router/client/link-intent.ts",
67
+ "default": "./src/router/client/link-intent.ts"
68
+ },
69
+ "./router/client/navigation-coordinator": {
70
+ "types": "./src/router/client/navigation-coordinator.ts",
71
+ "default": "./src/router/client/navigation-coordinator.ts"
44
72
  },
45
73
  "./errors/locals-access-error": {
46
- "types": "./src/errors/locals-access-error.d.ts",
47
- "default": "./src/errors/locals-access-error.js"
74
+ "types": "./src/errors/locals-access-error.ts",
75
+ "default": "./src/errors/locals-access-error.ts"
48
76
  },
49
77
  "./eco": {
50
- "types": "./src/eco/eco.d.ts",
51
- "default": "./src/eco/eco.js"
78
+ "types": "./src/eco/eco.ts",
79
+ "default": "./src/eco/eco.ts"
52
80
  },
53
81
  "./declarations": {
54
82
  "types": "./src/declarations.d.ts"
@@ -57,223 +85,107 @@
57
85
  "types": "./src/env.d.ts"
58
86
  },
59
87
  "./config-builder": {
60
- "types": "./src/config/config-builder.d.ts",
61
- "default": "./src/config/config-builder.js"
88
+ "types": "./src/config/config-builder.ts",
89
+ "default": "./src/config/config-builder.ts"
62
90
  },
63
91
  "./constants": {
64
- "types": "./src/constants.d.ts",
65
- "default": "./src/constants.js"
92
+ "types": "./src/constants.ts",
93
+ "default": "./src/constants.ts"
66
94
  },
67
95
  "./bun": {
68
- "types": "./src/adapters/bun/index.d.ts",
69
- "default": "./src/adapters/bun/index.js"
96
+ "types": "./src/adapters/bun/index.ts",
97
+ "default": "./src/adapters/bun/index.ts"
70
98
  },
71
99
  "./bun/create-app": {
72
- "types": "./src/adapters/bun/create-app.d.ts",
73
- "default": "./src/adapters/bun/create-app.js"
100
+ "types": "./src/adapters/bun/create-app.ts",
101
+ "default": "./src/adapters/bun/create-app.ts"
74
102
  },
75
103
  "./bun/define-api-handler": {
76
- "types": "./src/adapters/bun/define-api-handler.d.ts",
77
- "default": "./src/adapters/bun/define-api-handler.js"
104
+ "types": "./src/adapters/bun/define-api-handler.ts",
105
+ "default": "./src/adapters/bun/define-api-handler.ts"
78
106
  },
79
107
  "./hmr/hmr-strategy": {
80
- "types": "./src/hmr/hmr-strategy.d.ts",
81
- "default": "./src/hmr/hmr-strategy.js"
108
+ "types": "./src/hmr/hmr-strategy.ts",
109
+ "default": "./src/hmr/hmr-strategy.ts"
82
110
  },
83
111
  "./internal-types": {
84
- "types": "./src/internal-types.d.ts"
112
+ "types": "./src/internal-types.ts"
85
113
  },
86
114
  "./services/asset-processing-service": {
87
- "types": "./src/services/asset-processing-service/index.d.ts",
88
- "default": "./src/services/asset-processing-service/index.js"
115
+ "types": "./src/services/assets/asset-processing-service/index.ts",
116
+ "default": "./src/services/assets/asset-processing-service/index.ts"
89
117
  },
90
118
  "./utils/deep-merge": {
91
- "types": "./src/utils/deep-merge.d.ts",
92
- "default": "./src/utils/deep-merge.js"
119
+ "types": "./src/utils/deep-merge.ts",
120
+ "default": "./src/utils/deep-merge.ts"
93
121
  },
94
122
  "./utils/invariant": {
95
- "types": "./src/utils/invariant.d.ts",
96
- "default": "./src/utils/invariant.js"
123
+ "types": "./src/utils/invariant.ts",
124
+ "default": "./src/utils/invariant.ts"
97
125
  },
98
126
  "./utils/parse-cli-args": {
99
- "types": "./src/utils/parse-cli-args.d.ts",
100
- "default": "./src/utils/parse-cli-args.js"
127
+ "types": "./src/utils/parse-cli-args.ts",
128
+ "default": "./src/utils/parse-cli-args.ts"
101
129
  },
102
130
  "./plugins/processor": {
103
- "types": "./src/plugins/processor.d.ts",
104
- "default": "./src/plugins/processor.js"
131
+ "types": "./src/plugins/processor.ts",
132
+ "default": "./src/plugins/processor.ts"
105
133
  },
106
134
  "./plugins/integration-plugin": {
107
- "types": "./src/plugins/integration-plugin.d.ts",
108
- "default": "./src/plugins/integration-plugin.js"
135
+ "types": "./src/plugins/integration-plugin.ts",
136
+ "default": "./src/plugins/integration-plugin.ts"
109
137
  },
110
138
  "./build/build-types": {
111
- "types": "./src/build/build-types.d.ts",
112
- "default": "./src/build/build-types.js"
139
+ "types": "./src/build/build-types.ts",
140
+ "default": "./src/build/build-types.ts"
113
141
  },
114
142
  "./build/build-adapter": {
115
- "types": "./src/build/build-adapter.d.ts",
116
- "default": "./src/build/build-adapter.js"
143
+ "types": "./src/build/build-adapter.ts",
144
+ "default": "./src/build/build-adapter.ts"
145
+ },
146
+ "./build/runtime-specifier-alias-plugin": {
147
+ "types": "./src/build/runtime-specifier-alias-plugin.ts",
148
+ "default": "./src/build/runtime-specifier-alias-plugin.ts"
117
149
  },
118
150
  "./adapters/bun/client-bridge": {
119
- "types": "./src/adapters/bun/client-bridge.d.ts",
120
- "default": "./src/adapters/bun/client-bridge.js"
151
+ "types": "./src/adapters/bun/client-bridge.ts",
152
+ "default": "./src/adapters/bun/client-bridge.ts"
121
153
  },
122
154
  "./node": {
123
- "types": "./src/adapters/node/index.d.ts",
124
- "default": "./src/adapters/node/index.js"
155
+ "types": "./src/adapters/node/index.ts",
156
+ "default": "./src/adapters/node/index.ts"
125
157
  },
126
158
  "./node/server-adapter": {
127
- "types": "./src/adapters/node/server-adapter.d.ts",
128
- "default": "./src/adapters/node/server-adapter.js"
159
+ "types": "./src/adapters/node/server-adapter.ts",
160
+ "default": "./src/adapters/node/server-adapter.ts"
129
161
  },
130
162
  "./node/create-app": {
131
- "types": "./src/adapters/node/create-app.d.ts",
132
- "default": "./src/adapters/node/create-app.js"
163
+ "types": "./src/adapters/node/create-app.ts",
164
+ "default": "./src/adapters/node/create-app.ts"
165
+ },
166
+ "./node/runtime-adapter": {
167
+ "types": "./src/adapters/node/runtime-adapter.ts",
168
+ "default": "./src/adapters/node/runtime-adapter.ts"
133
169
  },
134
170
  "./html": {
135
- "import": "./src/utils/html.js",
136
- "default": "./src/utils/html.js",
137
- "types": "./src/utils/html.d.ts"
171
+ "import": "./src/utils/html.ts",
172
+ "require": "./src/utils/html.ts"
138
173
  },
139
174
  "./css": {
140
- "import": "./src/utils/css.js",
141
- "default": "./src/utils/css.js",
142
- "types": "./src/utils/css.d.ts"
175
+ "import": "./src/utils/css.ts",
176
+ "require": "./src/utils/css.ts"
143
177
  },
144
178
  "./hash": {
145
- "import": "./src/utils/hash.js",
146
- "default": "./src/utils/hash.js",
147
- "types": "./src/utils/hash.d.ts"
179
+ "import": "./src/utils/hash.ts",
180
+ "require": "./src/utils/hash.ts"
148
181
  },
149
182
  "./errors": {
150
- "types": "./src/errors/index.d.ts",
151
- "default": "./src/errors/index.js"
183
+ "types": "./src/errors/index.ts",
184
+ "default": "./src/errors/index.ts"
152
185
  },
153
186
  "./integrations/ghtml": {
154
- "types": "./src/integrations/ghtml/ghtml.plugin.d.ts",
155
- "default": "./src/integrations/ghtml/ghtml.plugin.js"
156
- },
157
- "./create-app.ts": {
158
- "types": "./src/create-app.d.ts",
159
- "default": "./src/create-app.js"
160
- },
161
- "./route-renderer/integration-renderer.ts": {
162
- "types": "./src/route-renderer/integration-renderer.d.ts",
163
- "default": "./src/route-renderer/integration-renderer.js"
164
- },
165
- "./errors/locals-access-error.ts": {
166
- "types": "./src/errors/locals-access-error.d.ts",
167
- "default": "./src/errors/locals-access-error.js"
168
- },
169
- "./eco.ts": {
170
- "types": "./src/eco/eco.d.ts",
171
- "default": "./src/eco/eco.js"
172
- },
173
- "./declarations.ts": {
174
- "types": "./src/declarations.d.ts"
175
- },
176
- "./env.ts": {
177
- "types": "./src/env.d.ts"
178
- },
179
- "./config-builder.ts": {
180
- "types": "./src/config/config-builder.d.ts",
181
- "default": "./src/config/config-builder.js"
182
- },
183
- "./constants.ts": {
184
- "types": "./src/constants.d.ts",
185
- "default": "./src/constants.js"
186
- },
187
- "./bun.ts": {
188
- "types": "./src/adapters/bun/index.d.ts",
189
- "default": "./src/adapters/bun/index.js"
190
- },
191
- "./bun/create-app.ts": {
192
- "types": "./src/adapters/bun/create-app.d.ts",
193
- "default": "./src/adapters/bun/create-app.js"
194
- },
195
- "./bun/define-api-handler.ts": {
196
- "types": "./src/adapters/bun/define-api-handler.d.ts",
197
- "default": "./src/adapters/bun/define-api-handler.js"
198
- },
199
- "./hmr/hmr-strategy.ts": {
200
- "types": "./src/hmr/hmr-strategy.d.ts",
201
- "default": "./src/hmr/hmr-strategy.js"
202
- },
203
- "./internal-types.ts": {
204
- "types": "./src/internal-types.d.ts"
205
- },
206
- "./services/asset-processing-service.ts": {
207
- "types": "./src/services/asset-processing-service/index.d.ts",
208
- "default": "./src/services/asset-processing-service/index.js"
209
- },
210
- "./utils/deep-merge.ts": {
211
- "types": "./src/utils/deep-merge.d.ts",
212
- "default": "./src/utils/deep-merge.js"
213
- },
214
- "./utils/invariant.ts": {
215
- "types": "./src/utils/invariant.d.ts",
216
- "default": "./src/utils/invariant.js"
217
- },
218
- "./utils/parse-cli-args.ts": {
219
- "types": "./src/utils/parse-cli-args.d.ts",
220
- "default": "./src/utils/parse-cli-args.js"
221
- },
222
- "./plugins/processor.ts": {
223
- "types": "./src/plugins/processor.d.ts",
224
- "default": "./src/plugins/processor.js"
225
- },
226
- "./plugins/integration-plugin.ts": {
227
- "types": "./src/plugins/integration-plugin.d.ts",
228
- "default": "./src/plugins/integration-plugin.js"
229
- },
230
- "./build/build-types.ts": {
231
- "types": "./src/build/build-types.d.ts",
232
- "default": "./src/build/build-types.js"
233
- },
234
- "./build/build-adapter.ts": {
235
- "types": "./src/build/build-adapter.d.ts",
236
- "default": "./src/build/build-adapter.js"
237
- },
238
- "./adapters/bun/client-bridge.ts": {
239
- "types": "./src/adapters/bun/client-bridge.d.ts",
240
- "default": "./src/adapters/bun/client-bridge.js"
241
- },
242
- "./node.ts": {
243
- "types": "./src/adapters/node/index.d.ts",
244
- "default": "./src/adapters/node/index.js"
245
- },
246
- "./node/server-adapter.ts": {
247
- "types": "./src/adapters/node/server-adapter.d.ts",
248
- "default": "./src/adapters/node/server-adapter.js"
249
- },
250
- "./node/create-app.ts": {
251
- "types": "./src/adapters/node/create-app.d.ts",
252
- "default": "./src/adapters/node/create-app.js"
253
- },
254
- "./html.ts": {
255
- "import": "./src/utils/html.js",
256
- "default": "./src/utils/html.js",
257
- "types": "./src/utils/html.d.ts"
258
- },
259
- "./css.ts": {
260
- "import": "./src/utils/css.js",
261
- "default": "./src/utils/css.js",
262
- "types": "./src/utils/css.d.ts"
263
- },
264
- "./hash.ts": {
265
- "import": "./src/utils/hash.js",
266
- "default": "./src/utils/hash.js",
267
- "types": "./src/utils/hash.d.ts"
268
- },
269
- "./errors.ts": {
270
- "types": "./src/errors/index.d.ts",
271
- "default": "./src/errors/index.js"
272
- },
273
- "./integrations/ghtml.ts": {
274
- "types": "./src/integrations/ghtml/ghtml.plugin.d.ts",
275
- "default": "./src/integrations/ghtml/ghtml.plugin.js"
187
+ "types": "./src/integrations/ghtml/ghtml.plugin.ts",
188
+ "default": "./src/integrations/ghtml/ghtml.plugin.ts"
276
189
  }
277
- },
278
- "types": "./src/index.d.ts"
279
- }
190
+ }
191
+ }
@@ -0,0 +1,39 @@
1
+ # Runtime Adapters
2
+
3
+ This directory contains the runtime-host integration layer for Ecopages.
4
+
5
+ ## Purpose
6
+
7
+ Adapters translate app-owned core services into concrete runtime behavior on Bun and Node.
8
+
9
+ They are responsible for:
10
+
11
+ - starting and stopping runtime-specific servers or thin hosts
12
+ - delegating startup into framework-owned loaders and services
13
+ - bridging runtime-specific request/response or HMR transport details
14
+ - keeping host/runtime transport details out of generic core orchestration
15
+
16
+ They are not responsible for:
17
+
18
+ - deciding plugin lifecycle ordering
19
+ - owning server-module semantics
20
+ - owning browser bundling policy
21
+ - owning route rendering semantics
22
+
23
+ ## Main Areas
24
+
25
+ - `bun/`: Bun server adapter, lifecycle coordination, bridge, and HMR transport
26
+ - `node/`: Node server adapter plus thin-host runtime bootstrap path
27
+ - `shared/`: runtime-neutral adapter helpers used by both hosts
28
+
29
+ ## Ownership Boundary
30
+
31
+ The adapter layer is transport-oriented.
32
+
33
+ Core services still own:
34
+
35
+ - config finalization
36
+ - build-manifest assembly
37
+ - server loading
38
+ - invalidation classification
39
+ - route rendering orchestration