@ecopages/core 0.2.0-alpha.8 → 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,20 +1,8 @@
1
1
  import path from "node:path";
2
2
  import { existsSync, mkdirSync, readFileSync, symlinkSync } from "node:fs";
3
3
  import { createRequire } from "node:module";
4
+ import { fileURLToPath, pathToFileURL } from "node:url";
4
5
  import { resolveInternalExecutionDir } from "../../utils/resolve-work-dir.js";
5
- function getNodeRuntimeNodeModulesDir(manifest) {
6
- return path.join(
7
- resolveInternalExecutionDir({
8
- rootDir: manifest.appRootDir,
9
- workDir: manifest.workDir,
10
- absolutePaths: {
11
- workDir: manifest.workDir,
12
- distDir: manifest.distDir
13
- }
14
- }),
15
- "node_modules"
16
- );
17
- }
18
6
  function getAppRuntimeNodeModulesDir(appConfig) {
19
7
  return path.join(resolveInternalExecutionDir(appConfig), "node_modules");
20
8
  }
@@ -50,11 +38,21 @@ function ensureRuntimePackageLink(nodeModulesDir, specifier, resolvedPath) {
50
38
  symlinkSync(packageRoot, linkPath, "dir");
51
39
  }
52
40
  function getNodeUnsupportedBuiltinError(specifier, importer) {
53
- return `Node thin-host bootstrap does not support Bun builtin specifier ${JSON.stringify(specifier)}${importer ? ` imported from ${importer}` : ""}.`;
41
+ return `Node bootstrap transpilation does not support Bun builtin specifier ${JSON.stringify(specifier)}${importer ? ` imported from ${importer}` : ""}.`;
54
42
  }
55
43
  function shouldResolveFromImporter(importer) {
56
44
  return Boolean(importer && importer.includes(`${path.sep}node_modules${path.sep}`));
57
45
  }
46
+ function resolveSpecifier(specifier, parentPath) {
47
+ try {
48
+ return createRequire(parentPath).resolve(specifier);
49
+ } catch {
50
+ return fileURLToPath(import.meta.resolve(specifier, pathToFileURL(parentPath).href));
51
+ }
52
+ }
53
+ function resolveFromCore(specifier) {
54
+ return createRequire(import.meta.url).resolve(specifier);
55
+ }
58
56
  function getBootstrapBuildLoaderForPath(filePath) {
59
57
  switch (path.extname(filePath).toLowerCase()) {
60
58
  case ".ts":
@@ -100,14 +98,37 @@ function resolveNodeBootstrapDependency(args, options) {
100
98
  if (args.path.startsWith("./") || args.path.startsWith("../") || args.path.startsWith("@/") || args.path.startsWith("/") || args.path.startsWith("node:")) {
101
99
  return void 0;
102
100
  }
103
- const projectRequire = createRequire(path.join(options.projectDir, "package.json"));
104
- const requireFromImporter = args.importer && path.isAbsolute(args.importer) && shouldResolveFromImporter(args.importer) ? createRequire(args.importer) : projectRequire;
101
+ const resolveParent = args.importer && path.isAbsolute(args.importer) && shouldResolveFromImporter(args.importer) ? args.importer : path.join(options.projectDir, "package.json");
105
102
  if (args.path.startsWith("@ecopages/")) {
106
- return {
107
- path: requireFromImporter.resolve(args.path)
108
- };
103
+ let resolvedPath2;
104
+ try {
105
+ resolvedPath2 = resolveFromCore(args.path);
106
+ } catch {
107
+ try {
108
+ resolvedPath2 = resolveSpecifier(args.path, resolveParent);
109
+ } catch {
110
+ const packageName = getPackageNameFromSpecifier(args.path);
111
+ const candidatePath = path.join(options.projectDir, "node_modules", packageName);
112
+ const candidatePackageJson = path.join(candidatePath, "package.json");
113
+ if (existsSync(candidatePackageJson)) {
114
+ ensureRuntimePackageLink(options.runtimeNodeModulesDir, args.path, candidatePackageJson);
115
+ return { path: args.path, external: true };
116
+ }
117
+ }
118
+ }
119
+ if (!resolvedPath2) {
120
+ return void 0;
121
+ }
122
+ if (resolvedPath2.includes(`${path.sep}node_modules${path.sep}`)) {
123
+ ensureRuntimePackageLink(options.runtimeNodeModulesDir, args.path, resolvedPath2);
124
+ return {
125
+ path: args.path,
126
+ external: true
127
+ };
128
+ }
129
+ return { path: resolvedPath2 };
109
130
  }
110
- const resolvedPath = requireFromImporter.resolve(args.path);
131
+ const resolvedPath = resolveSpecifier(args.path, resolveParent);
111
132
  ensureRuntimePackageLink(options.runtimeNodeModulesDir, args.path, resolvedPath);
112
133
  return {
113
134
  path: args.path,
@@ -120,7 +141,7 @@ function createNodeBootstrapPlugin(options) {
120
141
  (options.preserveImportMetaPaths ?? []).map((filePath) => path.resolve(filePath))
121
142
  );
122
143
  return {
123
- name: "node-thin-host-bundle-workspace-packages",
144
+ name: "node-bootstrap-plugin",
124
145
  setup(build) {
125
146
  build.onResolve({ filter: /^bun:/ }, (args) => {
126
147
  throw new Error(getNodeUnsupportedBuiltinError(args.path, args.importer));
@@ -166,7 +187,6 @@ export {
166
187
  createAppNodeBootstrapPlugin,
167
188
  createNodeBootstrapPlugin,
168
189
  getAppRuntimeNodeModulesDir,
169
- getNodeRuntimeNodeModulesDir,
170
190
  getNodeUnsupportedBuiltinError,
171
191
  resolveNodeBootstrapDependency
172
192
  };
@@ -1,9 +1,11 @@
1
1
  import { build, type BuildExecutor, type BuildResult } from '../../build/build-adapter.js';
2
2
  import type { EcoBuildPlugin } from '../../build/build-types.js';
3
+ import type { SourceModuleLoaderFactory } from './module-loading-types.js';
3
4
  export interface PageModuleImportOptions {
4
5
  filePath: string;
5
6
  rootDir: string;
6
7
  outdir: string;
8
+ bypassCache?: boolean;
7
9
  buildExecutor?: BuildExecutor;
8
10
  invalidationVersion?: number;
9
11
  splitting?: boolean;
@@ -23,6 +25,8 @@ export interface PageModuleImportOptions {
23
25
  export interface PageModuleImportDependencies {
24
26
  hashFile(filePath: string): string;
25
27
  buildModule(options: Parameters<typeof build>[0], buildExecutor?: BuildExecutor): Promise<BuildResult>;
28
+ canLoadSourceModuleFromHost(filePath: string): boolean;
29
+ getHostModuleLoader: SourceModuleLoaderFactory;
26
30
  }
27
31
  /**
28
32
  * Loads source page modules in a runtime-agnostic way.
@@ -9,7 +9,9 @@ class PageModuleImportService {
9
9
  constructor(dependencies) {
10
10
  this.dependencies = {
11
11
  hashFile: dependencies?.hashFile ?? ((filePath) => fileSystem.hash(filePath)),
12
- buildModule: dependencies?.buildModule ?? ((options, buildExecutor) => build(options, buildExecutor))
12
+ buildModule: dependencies?.buildModule ?? ((options, buildExecutor) => build(options, buildExecutor)),
13
+ canLoadSourceModuleFromHost: dependencies?.canLoadSourceModuleFromHost ?? supportsHostSourceModuleLoading,
14
+ getHostModuleLoader: dependencies?.getHostModuleLoader ?? (() => void 0)
13
15
  };
14
16
  }
15
17
  /**
@@ -47,7 +49,20 @@ class PageModuleImportService {
47
49
  const { filePath, rootDir, externalPackages, splitting } = options;
48
50
  const invalidationVersion = options.invalidationVersion ?? this.developmentInvalidationVersion;
49
51
  const fileHash = this.dependencies.hashFile(filePath);
50
- const runtime = typeof Bun !== "undefined" ? "bun" : "node";
52
+ const hostModuleLoader = typeof Bun === "undefined" && process.env.NODE_ENV === "development" && this.dependencies.canLoadSourceModuleFromHost(filePath) ? this.dependencies.getHostModuleLoader() : void 0;
53
+ if (hostModuleLoader) {
54
+ const sourceModuleUrl = createRuntimeModuleUrl(filePath, fileHash, invalidationVersion);
55
+ return await hostModuleLoader(sourceModuleUrl.href);
56
+ }
57
+ if (options.bypassCache) {
58
+ this.developmentInvalidationVersion += 1;
59
+ return await this.loadModule({
60
+ ...options,
61
+ invalidationVersion: this.developmentInvalidationVersion,
62
+ fileHash
63
+ });
64
+ }
65
+ const runtime = typeof Bun !== "undefined" ? "bun" : "node-build";
51
66
  const cacheKey = [
52
67
  runtime,
53
68
  filePath,
@@ -85,12 +100,12 @@ class PageModuleImportService {
85
100
  noOutputMessage = (targetFilePath) => `No transpiled output generated for page module: ${targetFilePath}`,
86
101
  fileHash
87
102
  } = options;
103
+ const sourceModuleUrl = createRuntimeModuleUrl(filePath, fileHash, invalidationVersion);
88
104
  if (typeof Bun !== "undefined") {
89
- const moduleUrl = pathToFileURL(filePath);
90
- if (process.env.NODE_ENV === "development") {
91
- moduleUrl.searchParams.set("update", `${fileHash}-${invalidationVersion}`);
92
- }
93
- return await import(moduleUrl.href);
105
+ return await import(
106
+ /* @vite-ignore */
107
+ sourceModuleUrl.href
108
+ );
94
109
  }
95
110
  const fileBaseName = path.basename(filePath, path.extname(filePath));
96
111
  const outputFileName = `${fileBaseName}-${fileHash}.js`;
@@ -99,7 +114,7 @@ class PageModuleImportService {
99
114
  entrypoints: [filePath],
100
115
  root: rootDir,
101
116
  outdir,
102
- target: "node",
117
+ target: "es2022",
103
118
  format: "esm",
104
119
  sourcemap: "none",
105
120
  splitting: splitting ?? true,
@@ -124,9 +139,23 @@ class PageModuleImportService {
124
139
  if (process.env.NODE_ENV === "development") {
125
140
  compiledOutputUrl.searchParams.set("update", `${fileHash}-${invalidationVersion}`);
126
141
  }
127
- return await import(compiledOutputUrl.href);
142
+ return await import(
143
+ /* @vite-ignore */
144
+ compiledOutputUrl.href
145
+ );
128
146
  }
129
147
  }
148
+ function createRuntimeModuleUrl(filePath, fileHash, invalidationVersion) {
149
+ const moduleUrl = pathToFileURL(filePath);
150
+ if (process.env.NODE_ENV === "development") {
151
+ moduleUrl.searchParams.set("update", `${fileHash}-${invalidationVersion}`);
152
+ }
153
+ return moduleUrl;
154
+ }
155
+ function supportsHostSourceModuleLoading(filePath) {
156
+ const extension = path.extname(filePath);
157
+ return extension === ".js" || extension === ".jsx" || extension === ".ts" || extension === ".tsx" || extension === ".mjs" || extension === ".mts" || extension === ".cjs" || extension === ".cts";
158
+ }
130
159
  export {
131
160
  PageModuleImportService
132
161
  };
@@ -1,6 +1,7 @@
1
1
  import type { BuildExecutor } from '../../build/build-adapter.js';
2
2
  import type { EcoBuildPlugin } from '../../build/build-types.js';
3
3
  import { type PageModuleImportOptions } from './page-module-import.service.js';
4
+ import type { SourceModuleLoaderFactory } from './module-loading-types.js';
4
5
  export type ServerModuleTranspilerOptions = Omit<PageModuleImportOptions, 'rootDir' | 'buildExecutor'>;
5
6
  /**
6
7
  * Minimal import-service dependency required by the server module transpiler.
@@ -24,6 +25,8 @@ export interface ServerModuleImportDependency {
24
25
  export type ServerModuleTranspilerBootstrapArgs = {
25
26
  rootDir: string;
26
27
  getBuildExecutor: () => BuildExecutor | undefined;
28
+ canLoadSourceModuleFromHost?: (filePath: string) => boolean;
29
+ getHostModuleLoader?: SourceModuleLoaderFactory;
27
30
  getInvalidationVersion?: () => number;
28
31
  invalidateModules?: (changedFiles?: string[]) => void;
29
32
  pageModuleImportService?: ServerModuleImportDependency;
@@ -11,7 +11,10 @@ class ServerModuleTranspiler {
11
11
  * context.
12
12
  */
13
13
  constructor(args) {
14
- this.pageModuleImportService = args.pageModuleImportService ?? new PageModuleImportService();
14
+ this.pageModuleImportService = args.pageModuleImportService ?? new PageModuleImportService({
15
+ canLoadSourceModuleFromHost: args.canLoadSourceModuleFromHost,
16
+ getHostModuleLoader: args.getHostModuleLoader
17
+ });
15
18
  this.getRootDir = () => args.rootDir;
16
19
  this.getBuildExecutor = args.getBuildExecutor;
17
20
  this.getInvalidationVersion = () => args.getInvalidationVersion?.();
@@ -1,4 +1,4 @@
1
- import type { EcoPagesAppConfig } from '../../internal-types.js';
1
+ import type { EcoPagesAppConfig } from '../../types/internal-types.js';
2
2
  import { type ServerInvalidationState } from './server-invalidation-state.service.js';
3
3
  import { type EntrypointDependencyGraph } from './entrypoint-dependency-graph.service.js';
4
4
  /**
@@ -32,7 +32,7 @@ export declare class NoopDevGraphService implements DevGraphService {
32
32
  /**
33
33
  * Invalidates all server-side module state by incrementing the shared version.
34
34
  */
35
- invalidateServerModules(_changedFiles?: string[]): void;
35
+ invalidateServerModules(changedFiles?: string[]): void;
36
36
  /**
37
37
  * Indicates that this graph cannot target invalidation to one entrypoint set.
38
38
  */
@@ -41,19 +41,19 @@ export declare class NoopDevGraphService implements DevGraphService {
41
41
  * Returns an empty entrypoint set because this implementation stores no
42
42
  * dependency graph metadata.
43
43
  */
44
- getDependencyEntrypoints(_filePath: string): Set<string>;
44
+ getDependencyEntrypoints(filePath: string): Set<string>;
45
45
  /**
46
46
  * Accepts dependency updates to preserve interface compatibility, but stores no
47
47
  * graph state in the noop implementation.
48
48
  */
49
- setEntrypointDependencies(_entrypointPath: string, _dependencies: string[]): void;
49
+ setEntrypointDependencies(entrypointPath: string, dependencies: string[]): void;
50
50
  /**
51
51
  * Clears one entrypoint from the graph.
52
52
  *
53
53
  * @remarks
54
54
  * There is no stored graph state in this implementation, so this is a no-op.
55
55
  */
56
- clearEntrypointDependencies(_entrypointPath: string): void;
56
+ clearEntrypointDependencies(entrypointPath: string): void;
57
57
  /**
58
58
  * Resets graph-owned state for a fresh runtime cycle.
59
59
  */
@@ -82,7 +82,7 @@ export declare class InMemoryDevGraphService implements DevGraphService {
82
82
  * modules. Selective dependency lookups are used by callers that need to limit
83
83
  * browser rebuild work.
84
84
  */
85
- invalidateServerModules(_changedFiles?: string[]): void;
85
+ invalidateServerModules(changedFiles?: string[]): void;
86
86
  /**
87
87
  * Indicates that this graph can answer dependency-to-entrypoint lookups.
88
88
  */
@@ -21,8 +21,8 @@ class NoopDevGraphService {
21
21
  /**
22
22
  * Invalidates all server-side module state by incrementing the shared version.
23
23
  */
24
- invalidateServerModules(_changedFiles) {
25
- this.invalidationState.invalidateServerModules(_changedFiles);
24
+ invalidateServerModules(changedFiles) {
25
+ this.invalidationState.invalidateServerModules(changedFiles);
26
26
  }
27
27
  /**
28
28
  * Indicates that this graph cannot target invalidation to one entrypoint set.
@@ -34,15 +34,15 @@ class NoopDevGraphService {
34
34
  * Returns an empty entrypoint set because this implementation stores no
35
35
  * dependency graph metadata.
36
36
  */
37
- getDependencyEntrypoints(_filePath) {
38
- return this.dependencyGraph.getDependencyEntrypoints(_filePath);
37
+ getDependencyEntrypoints(filePath) {
38
+ return this.dependencyGraph.getDependencyEntrypoints(filePath);
39
39
  }
40
40
  /**
41
41
  * Accepts dependency updates to preserve interface compatibility, but stores no
42
42
  * graph state in the noop implementation.
43
43
  */
44
- setEntrypointDependencies(_entrypointPath, _dependencies) {
45
- this.dependencyGraph.setEntrypointDependencies(_entrypointPath, _dependencies);
44
+ setEntrypointDependencies(entrypointPath, dependencies) {
45
+ this.dependencyGraph.setEntrypointDependencies(entrypointPath, dependencies);
46
46
  }
47
47
  /**
48
48
  * Clears one entrypoint from the graph.
@@ -50,8 +50,8 @@ class NoopDevGraphService {
50
50
  * @remarks
51
51
  * There is no stored graph state in this implementation, so this is a no-op.
52
52
  */
53
- clearEntrypointDependencies(_entrypointPath) {
54
- this.dependencyGraph.clearEntrypointDependencies(_entrypointPath);
53
+ clearEntrypointDependencies(entrypointPath) {
54
+ this.dependencyGraph.clearEntrypointDependencies(entrypointPath);
55
55
  }
56
56
  /**
57
57
  * Resets graph-owned state for a fresh runtime cycle.
@@ -78,8 +78,8 @@ class InMemoryDevGraphService {
78
78
  * modules. Selective dependency lookups are used by callers that need to limit
79
79
  * browser rebuild work.
80
80
  */
81
- invalidateServerModules(_changedFiles) {
82
- this.invalidationState.invalidateServerModules(_changedFiles);
81
+ invalidateServerModules(changedFiles) {
82
+ this.invalidationState.invalidateServerModules(changedFiles);
83
83
  }
84
84
  /**
85
85
  * Indicates that this graph can answer dependency-to-entrypoint lookups.
@@ -1,4 +1,4 @@
1
- import type { EcoPagesAppConfig } from '../../internal-types.js';
1
+ import type { EcoPagesAppConfig } from '../../types/internal-types.js';
2
2
  /**
3
3
  * App-owned dependency graph used to target browser entrypoint rebuilds.
4
4
  */
@@ -1,4 +1,4 @@
1
- import type { EcoPagesAppConfig } from '../../internal-types.js';
1
+ import type { EcoPagesAppConfig } from '../../types/internal-types.js';
2
2
  /**
3
3
  * Stores runtime-visible bare-specifier mappings for one app instance.
4
4
  *
@@ -1,4 +1,4 @@
1
- import type { EcoPagesAppConfig } from '../../internal-types.js';
1
+ import type { EcoPagesAppConfig } from '../../types/internal-types.js';
2
2
  /**
3
3
  * App-owned coarse invalidation state for server-executed modules.
4
4
  */
@@ -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
  import type { FSRouter } from '../router/server/fs-router.js';
5
5
  export declare const STATIC_SITE_GENERATOR_ERRORS: {
@@ -1,5 +1,5 @@
1
1
  import path from "node:path";
2
- import { DEFAULT_ECOPAGES_WORK_DIR } from "../constants.js";
2
+ import { DEFAULT_ECOPAGES_WORK_DIR } from "../config/constants.js";
3
3
  import { appLogger } from "../global/app-logger.js";
4
4
  import { fileSystem } from "@ecopages/file-system";
5
5
  import { PathUtils } from "../utils/path-utils.module.js";
@@ -1,17 +1,19 @@
1
- import type { EcoBuildPlugin } from './build/build-types.js';
2
- import type { AppBuildManifest } from './build/build-manifest.js';
3
- import type { BuildAdapter, BuildExecutor } from './build/build-adapter.js';
4
- import type { IntegrationPlugin } from './plugins/integration-plugin.js';
5
- import type { Processor } from './plugins/processor.js';
1
+ import type { EcoBuildPlugin } from '../build/build-types.js';
2
+ import type { AppBuildManifest } from '../build/build-manifest.js';
3
+ import type { BuildAdapter, BuildExecutor, BuildOwnership } from '../build/build-adapter.js';
4
+ import type { IntegrationPlugin } from '../plugins/integration-plugin.js';
5
+ import type { Processor } from '../plugins/processor.js';
6
+ import type { EcoSourceTransform } from '../plugins/source-transform.js';
6
7
  import type { PageMetadataProps } from './public-types.js';
7
- import type { FSRouter } from './router/server/fs-router.js';
8
- import type { CacheConfig } from './services/cache/cache.types.js';
9
- import type { DevGraphService } from './services/runtime-state/dev-graph.service.js';
10
- import type { EntrypointDependencyGraph } from './services/runtime-state/entrypoint-dependency-graph.service.js';
11
- import type { NodeRuntimeManifest } from './services/runtime-manifest/node-runtime-manifest.service.js';
12
- import type { RuntimeSpecifierRegistry } from './services/runtime-state/runtime-specifier-registry.service.js';
13
- import type { ServerInvalidationState } from './services/runtime-state/server-invalidation-state.service.js';
14
- import type { ServerModuleTranspiler } from './services/module-loading/server-module-transpiler.service.js';
8
+ import type { FSRouter } from '../router/server/fs-router.js';
9
+ import type { CacheConfig } from '../services/cache/cache.types.js';
10
+ import type { DevGraphService } from '../services/runtime-state/dev-graph.service.js';
11
+ import type { AppModuleLoader } from '../services/module-loading/app-module-loader.service.js';
12
+ import type { SourceModuleLoader } from '../services/module-loading/module-loading-types.js';
13
+ import type { EntrypointDependencyGraph } from '../services/runtime-state/entrypoint-dependency-graph.service.js';
14
+ import type { RuntimeSpecifierRegistry } from '../services/runtime-state/runtime-specifier-registry.service.js';
15
+ import type { ServerInvalidationState } from '../services/runtime-state/server-invalidation-state.service.js';
16
+ import type { ServerModuleTranspiler } from '../services/module-loading/server-module-transpiler.service.js';
15
17
  export interface RobotsPreference {
16
18
  /**
17
19
  * The user agent
@@ -126,6 +128,11 @@ export type EcoPagesAppConfig = {
126
128
  * Loaders to be used in the app, these are used to process the files when importing them
127
129
  */
128
130
  loaders: Map<string, EcoBuildPlugin>;
131
+ /**
132
+ * App-owned source transforms that can be adapted into Vite or other
133
+ * transform-first bundlers without going through the legacy loader bridge.
134
+ */
135
+ sourceTransforms: Map<string, EcoSourceTransform>;
129
136
  /**
130
137
  * Cache configuration for ISR and page caching.
131
138
  * @default { store: 'memory', defaultStrategy: 'static', enabled: true }
@@ -139,12 +146,15 @@ export type EcoPagesAppConfig = {
139
146
  * process-global registries.
140
147
  */
141
148
  runtime?: {
149
+ appModuleLoader?: AppModuleLoader;
150
+ buildOwnership?: BuildOwnership;
142
151
  buildAdapter?: BuildAdapter;
143
152
  buildManifest?: AppBuildManifest;
144
153
  buildExecutor?: BuildExecutor;
145
154
  devGraphService?: DevGraphService;
146
155
  entrypointDependencyGraph?: EntrypointDependencyGraph;
147
- nodeRuntimeManifest?: NodeRuntimeManifest;
156
+ hostModuleLoader?: SourceModuleLoader;
157
+ rendererModuleContext?: unknown;
148
158
  runtimeSpecifierRegistry?: RuntimeSpecifierRegistry;
149
159
  serverInvalidationState?: ServerInvalidationState;
150
160
  serverModuleTranspiler?: ServerModuleTranspiler;
@@ -1,19 +1,20 @@
1
1
  import type { Readable } from 'node:stream';
2
- import type { ApiResponseBuilder } from './adapters/shared/api-response.js';
3
- import type { BuildExecutor } from './build/build-adapter.js';
4
- import type { EcoBuildPlugin } from './build/build-types.js';
5
- import type { EcoPageComponent } from './eco/eco.types.js';
2
+ import type { ApiResponseBuilder } from '../adapters/shared/api-response.js';
3
+ import type { BuildExecutor } from '../build/build-adapter.js';
4
+ import type { EcoBuildPlugin } from '../build/build-types.js';
5
+ import type { ComponentBoundaryRuntime } from '../route-renderer/orchestration/component-render-context.js';
6
+ import type { EcoPageComponent } from '../eco/eco.types.js';
6
7
  import type { EcoPagesAppConfig } from './internal-types.js';
7
- import type { HmrStrategy } from './hmr/hmr-strategy.js';
8
- import type { BrowserBundleExecutor } from './services/assets/browser-bundle.service.js';
9
- import type { ProcessedAsset } from './services/assets/asset-processing-service/assets.types.js';
10
- import type { CacheStats, CacheStrategy } from './services/cache/cache.types.js';
8
+ import type { HmrStrategy } from '../hmr/hmr-strategy.js';
9
+ import type { BrowserBundleExecutor } from '../services/assets/browser-bundle.service.js';
10
+ import type { ProcessedAsset } from '../services/assets/asset-processing-service/assets.types.js';
11
+ import type { CacheStats, CacheStrategy } from '../services/cache/cache.types.js';
11
12
  import type { InteractionEventsString as ScriptsInjectorInteractionEventsString } from '@ecopages/scripts-injector/types';
12
- export type { EcoPageComponent } from './eco/eco.types.js';
13
- export type { MarkerGraphContext } from './route-renderer/component-graph/marker-graph-resolver.js';
14
- export type { ProcessedAsset } from './services/assets/asset-processing-service/assets.types.js';
15
- import type { StandardSchema, StandardSchemaResult, StandardSchemaSuccessResult, StandardSchemaFailureResult, StandardSchemaIssue, InferOutput } from './services/validation/standard-schema.types.js';
16
- export type { StandardSchema, StandardSchemaResult, StandardSchemaSuccessResult, StandardSchemaFailureResult, StandardSchemaIssue, InferOutput, };
13
+ export type { EcoPagesAppConfig } from './internal-types.js';
14
+ export type { EcoPageComponent } from '../eco/eco.types.js';
15
+ export type { ProcessedAsset } from '../services/assets/asset-processing-service/assets.types.js';
16
+ import type { StandardSchema, StandardSchemaResult, StandardSchemaSuccessResult, StandardSchemaFailureResult, StandardSchemaIssue, InferOutput } from '../services/validation/standard-schema.types.js';
17
+ export type { StandardSchema, StandardSchemaResult, StandardSchemaSuccessResult, StandardSchemaFailureResult, StandardSchemaIssue, InferOutput, ComponentBoundaryRuntime, };
17
18
  export type InteractionEventsString = ScriptsInjectorInteractionEventsString;
18
19
  export type DependencyLazyTrigger = {
19
20
  'on:idle': true;
@@ -261,6 +262,21 @@ export type EcoComponentDependencies = {
261
262
  components?: EcoComponent[];
262
263
  };
263
264
  export type EcoPagesElement = string | Promise<string>;
265
+ /**
266
+ * Serializable child payloads accepted by cross-integration deferred rendering.
267
+ *
268
+ * This models the broad value shapes that EcoPages already flattens when a
269
+ * foreign component boundary serializes its children for another integration.
270
+ * It is intentionally transport-oriented rather than framework-native, so it
271
+ * can be shared across Kita, Lit, React, and Ecopages JSX authoring surfaces
272
+ * without coupling core types to any one renderer.
273
+ */
274
+ export type EcoChildren = string | Promise<string> | number | bigint | boolean | null | undefined | readonly EcoChildren[] | {
275
+ strings: readonly string[];
276
+ values?: readonly EcoChildren[];
277
+ } | {
278
+ [key: string]: EcoChildren;
279
+ };
264
280
  /**
265
281
  * Represents the input configuration for EcoPages.
266
282
  */
@@ -666,7 +682,7 @@ export type IntegrationRendererRenderOptions<C = EcoPagesElement> = RouteRendere
666
682
  export interface ComponentRenderInput {
667
683
  component: EcoComponent;
668
684
  props: Record<string, unknown>;
669
- children?: string;
685
+ children?: unknown;
670
686
  integrationContext?: unknown;
671
687
  }
672
688
  export interface ComponentRenderResult {
File without changes
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Escapes a string for safe use inside a double-quoted HTML attribute value.
3
+ *
4
+ * @param value Raw attribute value.
5
+ * @returns Escaped attribute-safe string.
6
+ */
7
+ export declare function escapeHtmlAttribute(value: string): string;
@@ -0,0 +1,6 @@
1
+ function escapeHtmlAttribute(value) {
2
+ return value.replaceAll("&", "&amp;").replaceAll('"', "&quot;").replaceAll("<", "&lt;").replaceAll(">", "&gt;");
3
+ }
4
+ export {
5
+ escapeHtmlAttribute
6
+ };
@@ -1,4 +1,4 @@
1
- import type { ApiHandlerContext } from '../public-types.js';
1
+ import type { ApiHandlerContext } from '../types/public-types.js';
2
2
  /**
3
3
  * Creates a require function for validating and retrieving request locals.
4
4
  * Supports both single key access and multiple keys with type safety.
@@ -17,8 +17,11 @@ export type ReturnParseCliArgs = {
17
17
  hostname?: string;
18
18
  reactFastRefresh?: boolean;
19
19
  };
20
+ export type ParseCliArgsOptions = {
21
+ embeddedRuntime?: boolean;
22
+ };
20
23
  /**
21
24
  * Parses command line arguments for the server.
22
25
  * It returns {@link ReturnParseCliArgs}
23
26
  */
24
- export declare function parseCliArgs(): ReturnParseCliArgs;
27
+ export declare function parseCliArgs(options?: ParseCliArgsOptions): ReturnParseCliArgs;
@@ -1,8 +1,23 @@
1
1
  import { parseArgs } from "node:util";
2
2
  import { getRuntimeArgv } from "./runtime.js";
3
+ function getEmbeddedRuntimeCommandOptions() {
4
+ const isDevelopment = process.env.NODE_ENV === "development";
5
+ return {
6
+ preview: false,
7
+ build: false,
8
+ start: !isDevelopment,
9
+ dev: isDevelopment,
10
+ port: void 0,
11
+ hostname: void 0,
12
+ reactFastRefresh: void 0
13
+ };
14
+ }
3
15
  const ECOPAGES_BIN_FILES = ["ecopages.ts", "ecopages.js", "cli.js"];
4
16
  const ECOPAGES_AVAILABLE_COMMANDS = ["dev", "build", "start", "preview"];
5
- function parseCliArgs() {
17
+ function parseCliArgs(options = {}) {
18
+ if (options.embeddedRuntime || process.env.ECOPAGES_INTERNAL_EMBEDDED_RUNTIME === "true") {
19
+ return getEmbeddedRuntimeCommandOptions();
20
+ }
6
21
  const runtimeArgv = getRuntimeArgv();
7
22
  const { values } = parseArgs({
8
23
  args: runtimeArgv,
@@ -1,5 +1,5 @@
1
1
  import path from "node:path";
2
- import { DEFAULT_ECOPAGES_WORK_DIR } from "../constants.js";
2
+ import { DEFAULT_ECOPAGES_WORK_DIR } from "../config/constants.js";
3
3
  function isInsideNodeModules(directory) {
4
4
  return path.normalize(directory).split(path.sep).includes("node_modules");
5
5
  }
@@ -1,16 +1,16 @@
1
1
  import { type FSWatcher } from 'chokidar';
2
- import type { EcoPagesAppConfig, IHmrManager, IClientBridge } from '../internal-types.js';
2
+ import type { EcoPagesAppConfig, IHmrManager, IClientBridge } from '../types/internal-types.js';
3
3
  /**
4
4
  * Configuration options for the ProjectWatcher
5
5
  * @interface ProjectWatcherConfig
6
6
  * @property {EcoPagesAppConfig} config - The application configuration
7
- * @property {() => void} refreshRouterRoutesCallback - Callback to refresh router routes
7
+ * @property {() => Promise<void>} refreshRouterRoutesCallback - Callback to refresh router routes
8
8
  * @property {IHmrManager} hmrManager - The HMR manager instance
9
9
  * @property {ClientBridge} bridge - The client bridge instance
10
10
  */
11
11
  export interface ProjectWatcherConfig {
12
12
  config: EcoPagesAppConfig;
13
- refreshRouterRoutesCallback: () => void;
13
+ refreshRouterRoutesCallback: () => Promise<void>;
14
14
  hmrManager: IHmrManager;
15
15
  bridge: IClientBridge;
16
16
  }
@@ -112,7 +112,7 @@ export declare class ProjectWatcher {
112
112
  *
113
113
  * @param {string} path - Path of the changed directory
114
114
  */
115
- triggerRouterRefresh(changedPath: string): void;
115
+ triggerRouterRefresh(changedPath: string): Promise<void>;
116
116
  /**
117
117
  * Handles and logs errors that occur during file watching.
118
118
  *