@ecopages/core 0.2.0-alpha.25 → 0.2.0-alpha.26

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 (543) hide show
  1. package/CHANGELOG.md +66 -0
  2. package/package.json +226 -93
  3. package/src/adapters/abstract/application-adapter.d.ts +194 -0
  4. package/src/adapters/abstract/application-adapter.js +121 -0
  5. package/src/adapters/abstract/router-adapter.d.ts +26 -0
  6. package/src/adapters/abstract/router-adapter.js +5 -0
  7. package/src/adapters/abstract/server-adapter.d.ts +69 -0
  8. package/src/adapters/abstract/server-adapter.js +15 -0
  9. package/src/adapters/bun/client-bridge.d.ts +34 -0
  10. package/src/adapters/bun/client-bridge.js +48 -0
  11. package/src/adapters/bun/create-app.d.ts +52 -0
  12. package/src/adapters/bun/create-app.js +116 -0
  13. package/src/adapters/bun/hmr-manager.d.ts +143 -0
  14. package/src/adapters/bun/hmr-manager.js +333 -0
  15. package/src/adapters/bun/index.d.ts +2 -0
  16. package/src/adapters/bun/index.js +8 -0
  17. package/src/adapters/bun/server-adapter.d.ts +155 -0
  18. package/src/adapters/bun/server-adapter.js +374 -0
  19. package/src/adapters/bun/server-lifecycle.d.ts +63 -0
  20. package/src/adapters/bun/server-lifecycle.js +92 -0
  21. package/src/adapters/create-app.d.ts +20 -0
  22. package/src/adapters/create-app.js +66 -0
  23. package/src/adapters/index.d.ts +2 -0
  24. package/src/adapters/index.js +8 -0
  25. package/src/adapters/node/create-app.d.ts +18 -0
  26. package/src/adapters/node/create-app.js +149 -0
  27. package/src/adapters/node/node-client-bridge.d.ts +26 -0
  28. package/src/adapters/node/node-client-bridge.js +66 -0
  29. package/src/adapters/node/node-hmr-manager.d.ts +133 -0
  30. package/src/adapters/node/node-hmr-manager.js +311 -0
  31. package/src/adapters/node/server-adapter.d.ts +162 -0
  32. package/src/adapters/node/server-adapter.js +368 -0
  33. package/src/adapters/node/static-content-server.d.ts +60 -0
  34. package/src/adapters/node/static-content-server.js +194 -0
  35. package/src/adapters/shared/api-response.d.ts +52 -0
  36. package/src/adapters/shared/api-response.js +96 -0
  37. package/src/adapters/shared/application-adapter.d.ts +18 -0
  38. package/src/adapters/shared/application-adapter.js +90 -0
  39. package/src/adapters/shared/define-api-handler.d.ts +25 -0
  40. package/src/adapters/shared/define-api-handler.js +15 -0
  41. package/src/adapters/shared/explicit-static-route-matcher.d.ts +38 -0
  42. package/src/adapters/shared/explicit-static-route-matcher.js +103 -0
  43. package/src/adapters/shared/file-route-middleware-pipeline.d.ts +65 -0
  44. package/src/adapters/shared/file-route-middleware-pipeline.js +99 -0
  45. package/src/adapters/shared/fs-server-response-factory.d.ts +19 -0
  46. package/src/adapters/shared/fs-server-response-factory.js +97 -0
  47. package/src/adapters/shared/fs-server-response-matcher.d.ts +67 -0
  48. package/src/adapters/shared/fs-server-response-matcher.js +147 -0
  49. package/src/adapters/shared/hmr-entrypoint-registrar.d.ts +55 -0
  50. package/src/adapters/shared/hmr-entrypoint-registrar.js +87 -0
  51. package/src/adapters/shared/hmr-html-response.d.ts +22 -0
  52. package/src/adapters/shared/hmr-html-response.js +32 -0
  53. package/src/adapters/shared/render-context.d.ts +15 -0
  54. package/src/adapters/shared/render-context.js +72 -0
  55. package/src/adapters/shared/runtime-bootstrap.d.ts +38 -0
  56. package/src/adapters/shared/runtime-bootstrap.js +43 -0
  57. package/src/adapters/shared/server-adapter.d.ts +97 -0
  58. package/src/adapters/shared/server-adapter.js +390 -0
  59. package/src/adapters/shared/server-route-handler.d.ts +89 -0
  60. package/src/adapters/shared/server-route-handler.js +111 -0
  61. package/src/adapters/shared/server-static-builder.d.ts +71 -0
  62. package/src/adapters/shared/server-static-builder.js +100 -0
  63. package/src/build/build-adapter.d.ts +239 -0
  64. package/src/build/build-adapter.js +642 -0
  65. package/src/build/build-manifest.d.ts +27 -0
  66. package/src/build/build-manifest.js +30 -0
  67. package/src/build/build-types.d.ts +57 -0
  68. package/src/build/build-types.js +0 -0
  69. package/src/build/dev-build-coordinator.d.ts +72 -0
  70. package/src/build/dev-build-coordinator.js +154 -0
  71. package/src/build/esbuild-build-adapter.d.ts +78 -0
  72. package/src/build/esbuild-build-adapter.js +505 -0
  73. package/src/build/runtime-build-executor.d.ts +14 -0
  74. package/src/build/runtime-build-executor.js +22 -0
  75. package/src/build/runtime-specifier-alias-plugin.d.ts +15 -0
  76. package/src/build/runtime-specifier-alias-plugin.js +35 -0
  77. package/src/build/runtime-specifier-aliases.d.ts +5 -0
  78. package/src/build/runtime-specifier-aliases.js +95 -0
  79. package/src/config/config-builder.d.ts +252 -0
  80. package/src/config/config-builder.js +603 -0
  81. package/src/config/{constants.ts → constants.d.ts} +13 -22
  82. package/src/config/constants.js +25 -0
  83. package/src/dev/sc-server.d.ts +30 -0
  84. package/src/dev/sc-server.js +111 -0
  85. package/src/eco/eco.browser.d.ts +2 -0
  86. package/src/eco/eco.browser.js +83 -0
  87. package/src/eco/eco.d.ts +9 -0
  88. package/src/eco/eco.js +85 -0
  89. package/src/eco/eco.types.d.ts +178 -0
  90. package/src/eco/eco.types.js +0 -0
  91. package/src/eco/eco.utils.d.ts +1 -0
  92. package/src/eco/eco.utils.js +10 -0
  93. package/src/eco/global-injector-map.d.ts +16 -0
  94. package/src/eco/global-injector-map.js +80 -0
  95. package/src/eco/lazy-injector-map.d.ts +8 -0
  96. package/src/eco/lazy-injector-map.js +70 -0
  97. package/src/eco/module-dependencies.d.ts +18 -0
  98. package/src/eco/module-dependencies.js +49 -0
  99. package/src/errors/http-error.d.ts +31 -0
  100. package/src/errors/http-error.js +50 -0
  101. package/src/errors/{index.ts → index.d.ts} +2 -2
  102. package/src/errors/index.js +4 -0
  103. package/src/errors/locals-access-error.d.ts +4 -0
  104. package/src/errors/locals-access-error.js +9 -0
  105. package/src/global/app-logger.d.ts +2 -0
  106. package/src/global/app-logger.js +6 -0
  107. package/src/hmr/client/hmr-runtime.d.ts +5 -0
  108. package/src/hmr/client/hmr-runtime.js +117 -0
  109. package/src/hmr/hmr-strategy.d.ts +162 -0
  110. package/src/hmr/hmr-strategy.js +44 -0
  111. package/src/hmr/hmr.postcss.test.e2e.d.ts +1 -0
  112. package/src/hmr/hmr.postcss.test.e2e.js +31 -0
  113. package/src/hmr/hmr.test.e2e.d.ts +1 -0
  114. package/src/hmr/hmr.test.e2e.js +43 -0
  115. package/src/hmr/strategies/default-hmr-strategy.d.ts +43 -0
  116. package/src/hmr/strategies/default-hmr-strategy.js +34 -0
  117. package/src/hmr/strategies/js-hmr-strategy.d.ts +139 -0
  118. package/src/hmr/strategies/js-hmr-strategy.js +178 -0
  119. package/src/index.browser.d.ts +3 -0
  120. package/src/index.browser.js +4 -0
  121. package/src/index.d.ts +6 -0
  122. package/src/index.js +21 -0
  123. package/src/integrations/ghtml/ghtml-renderer.d.ts +20 -0
  124. package/src/integrations/ghtml/ghtml-renderer.js +63 -0
  125. package/src/integrations/ghtml/ghtml.constants.d.ts +1 -0
  126. package/src/integrations/ghtml/ghtml.constants.js +4 -0
  127. package/src/integrations/ghtml/ghtml.plugin.d.ts +16 -0
  128. package/src/integrations/ghtml/ghtml.plugin.js +20 -0
  129. package/src/plugins/alias-resolver-plugin.d.ts +2 -0
  130. package/src/plugins/alias-resolver-plugin.js +53 -0
  131. package/src/plugins/eco-component-meta-plugin.d.ts +108 -0
  132. package/src/plugins/eco-component-meta-plugin.js +163 -0
  133. package/src/plugins/foreign-jsx-override-plugin.d.ts +31 -0
  134. package/src/plugins/foreign-jsx-override-plugin.js +35 -0
  135. package/src/plugins/integration-plugin.d.ts +219 -0
  136. package/src/plugins/integration-plugin.js +196 -0
  137. package/src/plugins/processor.d.ts +95 -0
  138. package/src/plugins/processor.js +136 -0
  139. package/src/plugins/{runtime-capability.ts → runtime-capability.d.ts} +3 -8
  140. package/src/plugins/runtime-capability.js +0 -0
  141. package/src/plugins/source-transform.d.ts +46 -0
  142. package/src/plugins/source-transform.js +71 -0
  143. package/src/route-renderer/orchestration/boundary-planning.service.d.ts +25 -0
  144. package/src/route-renderer/orchestration/boundary-planning.service.js +97 -0
  145. package/src/route-renderer/orchestration/component-render-context.d.ts +83 -0
  146. package/src/route-renderer/orchestration/component-render-context.js +147 -0
  147. package/src/route-renderer/orchestration/integration-renderer.d.ts +556 -0
  148. package/src/route-renderer/orchestration/integration-renderer.js +932 -0
  149. package/src/route-renderer/orchestration/page-packaging.service.d.ts +16 -0
  150. package/src/route-renderer/orchestration/page-packaging.service.js +66 -0
  151. package/src/route-renderer/orchestration/processed-asset-dedupe.d.ts +2 -0
  152. package/src/route-renderer/orchestration/processed-asset-dedupe.js +23 -0
  153. package/src/route-renderer/orchestration/queued-boundary-runtime.service.d.ts +89 -0
  154. package/src/route-renderer/orchestration/queued-boundary-runtime.service.js +155 -0
  155. package/src/route-renderer/orchestration/render-execution.service.d.ts +43 -0
  156. package/src/route-renderer/orchestration/render-execution.service.js +106 -0
  157. package/src/route-renderer/orchestration/render-output.utils.d.ts +66 -0
  158. package/src/route-renderer/orchestration/render-output.utils.js +171 -0
  159. package/src/route-renderer/orchestration/render-preparation.service.d.ts +120 -0
  160. package/src/route-renderer/orchestration/render-preparation.service.js +364 -0
  161. package/src/route-renderer/orchestration/route-shell-composer.service.d.ts +50 -0
  162. package/src/route-renderer/orchestration/route-shell-composer.service.js +81 -0
  163. package/src/route-renderer/orchestration/template-serialization.d.ts +38 -0
  164. package/src/route-renderer/orchestration/template-serialization.js +45 -0
  165. package/src/route-renderer/page-loading/component-dependency-collection.d.ts +37 -0
  166. package/src/route-renderer/page-loading/component-dependency-collection.js +125 -0
  167. package/src/route-renderer/page-loading/declared-asset-collection.d.ts +24 -0
  168. package/src/route-renderer/page-loading/declared-asset-collection.js +106 -0
  169. package/src/route-renderer/page-loading/dependency-resolver.d.ts +35 -0
  170. package/src/route-renderer/page-loading/dependency-resolver.js +117 -0
  171. package/src/route-renderer/page-loading/ecopages-virtual-imports.d.ts +11 -0
  172. package/src/route-renderer/page-loading/ecopages-virtual-imports.js +57 -0
  173. package/src/route-renderer/page-loading/lazy-entry-collection.d.ts +45 -0
  174. package/src/route-renderer/page-loading/lazy-entry-collection.js +105 -0
  175. package/src/route-renderer/page-loading/lazy-trigger-planning.d.ts +19 -0
  176. package/src/route-renderer/page-loading/lazy-trigger-planning.js +40 -0
  177. package/src/route-renderer/page-loading/module-declaration-aggregation.d.ts +5 -0
  178. package/src/route-renderer/page-loading/module-declaration-aggregation.js +33 -0
  179. package/src/route-renderer/page-loading/module-declaration-scripts.d.ts +3 -0
  180. package/src/route-renderer/page-loading/module-declaration-scripts.js +18 -0
  181. package/src/route-renderer/page-loading/page-dependency-bundling.d.ts +13 -0
  182. package/src/route-renderer/page-loading/page-dependency-bundling.js +115 -0
  183. package/src/route-renderer/page-loading/page-module-loader.d.ts +90 -0
  184. package/src/route-renderer/page-loading/page-module-loader.js +127 -0
  185. package/src/route-renderer/route-renderer.d.ts +67 -0
  186. package/src/route-renderer/route-renderer.js +103 -0
  187. package/src/router/client/link-intent.js +34 -0
  188. package/src/router/client/link-intent.test.browser.d.ts +1 -0
  189. package/src/router/client/link-intent.test.browser.js +43 -0
  190. package/src/router/client/navigation-coordinator.d.ts +169 -0
  191. package/src/router/client/navigation-coordinator.js +215 -0
  192. package/src/router/server/fs-router-scanner.d.ts +41 -0
  193. package/src/router/server/fs-router-scanner.js +161 -0
  194. package/src/router/server/fs-router.d.ts +26 -0
  195. package/src/router/server/fs-router.js +100 -0
  196. package/src/services/assets/asset-processing-service/asset-dependency-keys.d.ts +3 -0
  197. package/src/services/assets/asset-processing-service/asset-dependency-keys.js +56 -0
  198. package/src/services/assets/asset-processing-service/asset-processing.service.d.ts +103 -0
  199. package/src/services/assets/asset-processing-service/asset-processing.service.js +285 -0
  200. package/src/services/assets/asset-processing-service/asset.factory.d.ts +17 -0
  201. package/src/services/assets/asset-processing-service/asset.factory.js +82 -0
  202. package/src/services/assets/asset-processing-service/assets.types.d.ts +100 -0
  203. package/src/services/assets/asset-processing-service/assets.types.js +0 -0
  204. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.d.ts +55 -0
  205. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.js +49 -0
  206. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.d.ts +20 -0
  207. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.js +41 -0
  208. package/src/services/assets/asset-processing-service/grouped-content-bundles.d.ts +30 -0
  209. package/src/services/assets/asset-processing-service/grouped-content-bundles.js +65 -0
  210. package/src/services/assets/asset-processing-service/index.d.ts +5 -0
  211. package/src/services/assets/asset-processing-service/index.js +5 -0
  212. package/src/services/assets/asset-processing-service/{processor.interface.ts → processor.interface.d.ts} +5 -10
  213. package/src/services/assets/asset-processing-service/processor.interface.js +6 -0
  214. package/src/services/assets/asset-processing-service/processor.registry.d.ts +8 -0
  215. package/src/services/assets/asset-processing-service/processor.registry.js +15 -0
  216. package/src/services/assets/asset-processing-service/processors/base/base-processor.d.ts +24 -0
  217. package/src/services/assets/asset-processing-service/processors/base/base-processor.js +65 -0
  218. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.d.ts +22 -0
  219. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.js +136 -0
  220. package/src/services/assets/asset-processing-service/processors/index.d.ts +5 -0
  221. package/src/services/assets/asset-processing-service/processors/index.js +5 -0
  222. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.d.ts +6 -0
  223. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.js +116 -0
  224. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.d.ts +9 -0
  225. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.js +91 -0
  226. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.d.ts +7 -0
  227. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.js +77 -0
  228. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.d.ts +8 -0
  229. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +58 -0
  230. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.d.ts +9 -0
  231. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.js +67 -0
  232. package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.d.ts +18 -0
  233. package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.js +45 -0
  234. package/src/services/assets/browser-bundle.service.d.ts +73 -0
  235. package/src/services/assets/browser-bundle.service.js +41 -0
  236. package/src/services/cache/cache.types.d.ts +107 -0
  237. package/src/services/cache/cache.types.js +0 -0
  238. package/src/services/cache/index.d.ts +7 -0
  239. package/src/services/cache/index.js +7 -0
  240. package/src/services/cache/memory-cache-store.d.ts +42 -0
  241. package/src/services/cache/memory-cache-store.js +98 -0
  242. package/src/services/cache/page-cache-service.d.ts +70 -0
  243. package/src/services/cache/page-cache-service.js +152 -0
  244. package/src/services/cache/page-request-cache-coordinator.service.d.ts +75 -0
  245. package/src/services/cache/page-request-cache-coordinator.service.js +109 -0
  246. package/src/services/html/html-rewriter-provider.service.d.ts +37 -0
  247. package/src/services/html/html-rewriter-provider.service.js +68 -0
  248. package/src/services/html/html-transformer.service.d.ts +87 -0
  249. package/src/services/html/html-transformer.service.js +216 -0
  250. package/src/services/invalidation/development-invalidation.service.d.ts +74 -0
  251. package/src/services/invalidation/development-invalidation.service.js +190 -0
  252. package/src/services/module-loading/app-module-loader.service.d.ts +7 -0
  253. package/src/services/module-loading/app-module-loader.service.js +0 -0
  254. package/src/services/module-loading/app-server-module-transpiler.service.d.ts +24 -0
  255. package/src/services/module-loading/app-server-module-transpiler.service.js +115 -0
  256. package/src/services/module-loading/host-module-loader-registry.d.ts +4 -0
  257. package/src/services/module-loading/host-module-loader-registry.js +15 -0
  258. package/src/services/module-loading/{module-loading-types.ts → module-loading-types.d.ts} +0 -1
  259. package/src/services/module-loading/module-loading-types.js +0 -0
  260. package/src/services/module-loading/node-bootstrap-plugin.d.ts +42 -0
  261. package/src/services/module-loading/node-bootstrap-plugin.js +204 -0
  262. package/src/services/module-loading/page-module-import.service.d.ts +76 -0
  263. package/src/services/module-loading/page-module-import.service.js +170 -0
  264. package/src/services/module-loading/server-module-transpiler.service.d.ts +63 -0
  265. package/src/services/module-loading/server-module-transpiler.service.js +64 -0
  266. package/src/services/module-loading/source-module-support.d.ts +5 -0
  267. package/src/services/module-loading/source-module-support.js +8 -0
  268. package/src/services/runtime-state/dev-graph.service.d.ts +118 -0
  269. package/src/services/runtime-state/dev-graph.service.js +162 -0
  270. package/src/services/runtime-state/entrypoint-dependency-graph.service.d.ts +41 -0
  271. package/src/services/runtime-state/entrypoint-dependency-graph.service.js +85 -0
  272. package/src/services/runtime-state/runtime-specifier-registry.service.d.ts +69 -0
  273. package/src/services/runtime-state/runtime-specifier-registry.service.js +37 -0
  274. package/src/services/runtime-state/server-invalidation-state.service.d.ts +26 -0
  275. package/src/services/runtime-state/server-invalidation-state.service.js +35 -0
  276. package/src/services/validation/schema-validation-service.d.ts +122 -0
  277. package/src/services/validation/schema-validation-service.js +101 -0
  278. package/src/services/validation/{standard-schema.types.ts → standard-schema.types.d.ts} +17 -20
  279. package/src/services/validation/standard-schema.types.js +0 -0
  280. package/src/static-site-generator/static-site-generator.d.ts +105 -0
  281. package/src/static-site-generator/static-site-generator.js +349 -0
  282. package/src/types/internal-types.d.ts +231 -0
  283. package/src/types/internal-types.js +0 -0
  284. package/src/types/public-types.d.ts +1257 -0
  285. package/src/types/public-types.js +0 -0
  286. package/src/utils/deep-merge.d.ts +14 -0
  287. package/src/utils/deep-merge.js +32 -0
  288. package/src/utils/hash.d.ts +1 -0
  289. package/src/utils/hash.js +7 -0
  290. package/src/utils/html-escaping.d.ts +7 -0
  291. package/src/utils/html-escaping.js +6 -0
  292. package/src/utils/html.js +4 -0
  293. package/src/utils/invariant.d.ts +5 -0
  294. package/src/utils/invariant.js +11 -0
  295. package/src/utils/locals-utils.d.ts +15 -0
  296. package/src/utils/locals-utils.js +24 -0
  297. package/src/utils/parse-cli-args.d.ts +27 -0
  298. package/src/utils/parse-cli-args.js +62 -0
  299. package/src/utils/path-utils.module.d.ts +5 -0
  300. package/src/utils/path-utils.module.js +14 -0
  301. package/src/utils/resolve-work-dir.d.ts +11 -0
  302. package/src/utils/resolve-work-dir.js +31 -0
  303. package/src/utils/runtime.d.ts +11 -0
  304. package/src/utils/runtime.js +40 -0
  305. package/src/utils/server-utils.module.d.ts +19 -0
  306. package/src/utils/server-utils.module.js +56 -0
  307. package/src/watchers/project-watcher.d.ts +136 -0
  308. package/src/watchers/project-watcher.js +275 -0
  309. package/src/watchers/project-watcher.test-helpers.d.ts +4 -0
  310. package/src/watchers/project-watcher.test-helpers.js +52 -0
  311. package/src/adapters/abstract/application-adapter.test.ts +0 -172
  312. package/src/adapters/abstract/application-adapter.ts +0 -379
  313. package/src/adapters/abstract/router-adapter.ts +0 -30
  314. package/src/adapters/abstract/server-adapter.ts +0 -79
  315. package/src/adapters/bun/client-bridge.ts +0 -62
  316. package/src/adapters/bun/create-app.ts +0 -180
  317. package/src/adapters/bun/hmr-manager.test.ts +0 -267
  318. package/src/adapters/bun/hmr-manager.ts +0 -406
  319. package/src/adapters/bun/index.ts +0 -2
  320. package/src/adapters/bun/server-adapter.ts +0 -500
  321. package/src/adapters/bun/server-lifecycle.ts +0 -124
  322. package/src/adapters/create-app.test.ts +0 -10
  323. package/src/adapters/create-app.ts +0 -91
  324. package/src/adapters/index.ts +0 -2
  325. package/src/adapters/node/create-app.test.ts +0 -53
  326. package/src/adapters/node/create-app.ts +0 -183
  327. package/src/adapters/node/node-client-bridge.test.ts +0 -198
  328. package/src/adapters/node/node-client-bridge.ts +0 -79
  329. package/src/adapters/node/node-hmr-manager.test.ts +0 -322
  330. package/src/adapters/node/node-hmr-manager.ts +0 -378
  331. package/src/adapters/node/server-adapter.ts +0 -502
  332. package/src/adapters/node/static-content-server.test.ts +0 -60
  333. package/src/adapters/node/static-content-server.ts +0 -239
  334. package/src/adapters/shared/api-response.test.ts +0 -97
  335. package/src/adapters/shared/api-response.ts +0 -104
  336. package/src/adapters/shared/application-adapter.ts +0 -199
  337. package/src/adapters/shared/define-api-handler.ts +0 -66
  338. package/src/adapters/shared/explicit-static-route-matcher.test.ts +0 -381
  339. package/src/adapters/shared/explicit-static-route-matcher.ts +0 -140
  340. package/src/adapters/shared/file-route-middleware-pipeline.test.ts +0 -90
  341. package/src/adapters/shared/file-route-middleware-pipeline.ts +0 -127
  342. package/src/adapters/shared/fs-server-response-factory.test.ts +0 -187
  343. package/src/adapters/shared/fs-server-response-factory.ts +0 -118
  344. package/src/adapters/shared/fs-server-response-matcher.test.ts +0 -285
  345. package/src/adapters/shared/fs-server-response-matcher.ts +0 -189
  346. package/src/adapters/shared/hmr-entrypoint-registrar.ts +0 -149
  347. package/src/adapters/shared/hmr-html-response.ts +0 -52
  348. package/src/adapters/shared/hmr-manager.contract.test.ts +0 -232
  349. package/src/adapters/shared/hmr-manager.dispatch.test.ts +0 -220
  350. package/src/adapters/shared/render-context.test.ts +0 -150
  351. package/src/adapters/shared/render-context.ts +0 -123
  352. package/src/adapters/shared/runtime-bootstrap.ts +0 -79
  353. package/src/adapters/shared/server-adapter.test.ts +0 -77
  354. package/src/adapters/shared/server-adapter.ts +0 -493
  355. package/src/adapters/shared/server-route-handler.test.ts +0 -110
  356. package/src/adapters/shared/server-route-handler.ts +0 -153
  357. package/src/adapters/shared/server-static-builder.test.ts +0 -338
  358. package/src/adapters/shared/server-static-builder.ts +0 -170
  359. package/src/build/build-adapter-serialization.test.ts +0 -281
  360. package/src/build/build-adapter.test.ts +0 -1240
  361. package/src/build/build-adapter.ts +0 -1012
  362. package/src/build/build-manifest.ts +0 -54
  363. package/src/build/build-types.ts +0 -83
  364. package/src/build/dev-build-coordinator.ts +0 -220
  365. package/src/build/esbuild-build-adapter.ts +0 -660
  366. package/src/build/runtime-build-executor.test.ts +0 -81
  367. package/src/build/runtime-build-executor.ts +0 -40
  368. package/src/build/runtime-specifier-alias-plugin.test.ts +0 -67
  369. package/src/build/runtime-specifier-alias-plugin.ts +0 -62
  370. package/src/build/runtime-specifier-aliases.ts +0 -135
  371. package/src/config/config-builder.test.ts +0 -443
  372. package/src/config/config-builder.ts +0 -742
  373. package/src/config/config-builder.typecheck.test.ts +0 -96
  374. package/src/dev/sc-server.ts +0 -143
  375. package/src/eco/eco.browser.test.ts +0 -43
  376. package/src/eco/eco.browser.ts +0 -118
  377. package/src/eco/eco.test.ts +0 -654
  378. package/src/eco/eco.ts +0 -205
  379. package/src/eco/eco.types.ts +0 -221
  380. package/src/eco/eco.utils.test.ts +0 -219
  381. package/src/eco/eco.utils.ts +0 -5
  382. package/src/eco/global-injector-map.test.ts +0 -42
  383. package/src/eco/global-injector-map.ts +0 -112
  384. package/src/eco/lazy-injector-map.test.ts +0 -66
  385. package/src/eco/lazy-injector-map.ts +0 -120
  386. package/src/eco/module-dependencies.test.ts +0 -30
  387. package/src/eco/module-dependencies.ts +0 -75
  388. package/src/errors/http-error.test.ts +0 -134
  389. package/src/errors/http-error.ts +0 -72
  390. package/src/errors/locals-access-error.ts +0 -7
  391. package/src/global/app-logger.ts +0 -4
  392. package/src/global/utils.test.ts +0 -12
  393. 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
  394. package/src/hmr/client/__screenshots__/hmr-runtime.test.browser.ts/HMR-Runtime-HMR-Server-Integration-should-load-fixture-app-page-1.png +0 -0
  395. package/src/hmr/client/__screenshots__/hmr-runtime.test.browser.ts/HMR-Runtime-WebSocket-Connection-should-connect-to-correct-HMR-endpoint-1.png +0 -0
  396. package/src/hmr/client/hmr-runtime.ts +0 -160
  397. package/src/hmr/hmr-strategy.test.ts +0 -124
  398. package/src/hmr/hmr-strategy.ts +0 -177
  399. package/src/hmr/hmr.postcss.test.e2e.ts +0 -41
  400. package/src/hmr/hmr.test.e2e.ts +0 -66
  401. package/src/hmr/strategies/default-hmr-strategy.ts +0 -60
  402. package/src/hmr/strategies/js-hmr-strategy.test.ts +0 -335
  403. package/src/hmr/strategies/js-hmr-strategy.ts +0 -320
  404. package/src/index.browser.ts +0 -3
  405. package/src/index.ts +0 -15
  406. package/src/integrations/ghtml/ghtml-renderer.test.ts +0 -253
  407. package/src/integrations/ghtml/ghtml-renderer.ts +0 -97
  408. package/src/integrations/ghtml/ghtml.constants.ts +0 -1
  409. package/src/integrations/ghtml/ghtml.plugin.ts +0 -28
  410. package/src/plugins/alias-resolver-plugin.test.ts +0 -41
  411. package/src/plugins/alias-resolver-plugin.ts +0 -63
  412. package/src/plugins/eco-component-meta-plugin.test.ts +0 -406
  413. package/src/plugins/eco-component-meta-plugin.ts +0 -495
  414. package/src/plugins/foreign-jsx-override-plugin.test.ts +0 -65
  415. package/src/plugins/foreign-jsx-override-plugin.ts +0 -67
  416. package/src/plugins/integration-plugin.test.ts +0 -156
  417. package/src/plugins/integration-plugin.ts +0 -311
  418. package/src/plugins/processor.test.ts +0 -148
  419. package/src/plugins/processor.ts +0 -240
  420. package/src/plugins/source-transform.test.ts +0 -82
  421. package/src/plugins/source-transform.ts +0 -123
  422. package/src/route-renderer/orchestration/boundary-planning.service.ts +0 -146
  423. package/src/route-renderer/orchestration/component-render-context.ts +0 -318
  424. package/src/route-renderer/orchestration/integration-renderer.test.ts +0 -2088
  425. package/src/route-renderer/orchestration/integration-renderer.ts +0 -1285
  426. package/src/route-renderer/orchestration/page-packaging.service.test.ts +0 -76
  427. package/src/route-renderer/orchestration/page-packaging.service.ts +0 -85
  428. package/src/route-renderer/orchestration/processed-asset-dedupe.ts +0 -25
  429. package/src/route-renderer/orchestration/queued-boundary-runtime.service.test.ts +0 -319
  430. package/src/route-renderer/orchestration/queued-boundary-runtime.service.ts +0 -289
  431. package/src/route-renderer/orchestration/render-execution.service.test.ts +0 -196
  432. package/src/route-renderer/orchestration/render-execution.service.ts +0 -182
  433. package/src/route-renderer/orchestration/render-output.utils.ts +0 -302
  434. package/src/route-renderer/orchestration/render-preparation.service.test.ts +0 -569
  435. package/src/route-renderer/orchestration/render-preparation.service.ts +0 -508
  436. package/src/route-renderer/orchestration/route-shell-composer.service.ts +0 -162
  437. package/src/route-renderer/orchestration/template-serialization.test.ts +0 -110
  438. package/src/route-renderer/orchestration/template-serialization.ts +0 -117
  439. package/src/route-renderer/page-loading/component-dependency-collection.ts +0 -196
  440. package/src/route-renderer/page-loading/declared-asset-collection.ts +0 -156
  441. package/src/route-renderer/page-loading/dependency-resolver.test.ts +0 -665
  442. package/src/route-renderer/page-loading/dependency-resolver.ts +0 -150
  443. package/src/route-renderer/page-loading/ecopages-virtual-imports.ts +0 -75
  444. package/src/route-renderer/page-loading/lazy-entry-collection.ts +0 -167
  445. package/src/route-renderer/page-loading/lazy-trigger-planning.ts +0 -74
  446. package/src/route-renderer/page-loading/module-declaration-aggregation.ts +0 -60
  447. package/src/route-renderer/page-loading/module-declaration-scripts.ts +0 -16
  448. package/src/route-renderer/page-loading/page-dependency-bundling.ts +0 -205
  449. package/src/route-renderer/page-loading/page-module-loader.test.ts +0 -183
  450. package/src/route-renderer/page-loading/page-module-loader.ts +0 -184
  451. package/src/route-renderer/route-renderer.ts +0 -136
  452. package/src/router/client/link-intent.test.browser.ts +0 -51
  453. package/src/router/client/link-intent.ts +0 -92
  454. package/src/router/client/navigation-coordinator.test.ts +0 -237
  455. package/src/router/client/navigation-coordinator.ts +0 -453
  456. package/src/router/server/fs-router-scanner.test.ts +0 -83
  457. package/src/router/server/fs-router-scanner.ts +0 -224
  458. package/src/router/server/fs-router.test.ts +0 -214
  459. package/src/router/server/fs-router.ts +0 -122
  460. package/src/services/assets/asset-processing-service/asset-dependency-keys.ts +0 -66
  461. package/src/services/assets/asset-processing-service/asset-processing.service.test.ts +0 -476
  462. package/src/services/assets/asset-processing-service/asset-processing.service.ts +0 -345
  463. package/src/services/assets/asset-processing-service/asset.factory.test.ts +0 -63
  464. package/src/services/assets/asset-processing-service/asset.factory.ts +0 -105
  465. package/src/services/assets/asset-processing-service/assets.types.ts +0 -125
  466. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.test.ts +0 -74
  467. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.ts +0 -96
  468. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.test.ts +0 -67
  469. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.ts +0 -78
  470. package/src/services/assets/asset-processing-service/grouped-content-bundles.ts +0 -104
  471. package/src/services/assets/asset-processing-service/index.ts +0 -5
  472. package/src/services/assets/asset-processing-service/processor.registry.ts +0 -18
  473. package/src/services/assets/asset-processing-service/processors/base/base-processor.test.ts +0 -59
  474. package/src/services/assets/asset-processing-service/processors/base/base-processor.ts +0 -83
  475. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.ts +0 -174
  476. package/src/services/assets/asset-processing-service/processors/index.ts +0 -5
  477. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.test.ts +0 -192
  478. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.ts +0 -134
  479. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.test.ts +0 -326
  480. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.ts +0 -110
  481. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.test.ts +0 -227
  482. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.ts +0 -87
  483. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.test.ts +0 -261
  484. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.ts +0 -71
  485. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.ts +0 -81
  486. package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.ts +0 -65
  487. package/src/services/assets/browser-bundle.service.test.ts +0 -66
  488. package/src/services/assets/browser-bundle.service.ts +0 -109
  489. package/src/services/cache/cache.types.ts +0 -126
  490. package/src/services/cache/index.ts +0 -18
  491. package/src/services/cache/memory-cache-store.test.ts +0 -225
  492. package/src/services/cache/memory-cache-store.ts +0 -130
  493. package/src/services/cache/page-cache-service.test.ts +0 -175
  494. package/src/services/cache/page-cache-service.ts +0 -202
  495. package/src/services/cache/page-request-cache-coordinator.service.test.ts +0 -79
  496. package/src/services/cache/page-request-cache-coordinator.service.ts +0 -131
  497. package/src/services/html/html-rewriter-provider.service.test.ts +0 -183
  498. package/src/services/html/html-rewriter-provider.service.ts +0 -104
  499. package/src/services/html/html-transformer.service.test.ts +0 -479
  500. package/src/services/html/html-transformer.service.ts +0 -275
  501. package/src/services/invalidation/development-invalidation.service.test.ts +0 -87
  502. package/src/services/invalidation/development-invalidation.service.ts +0 -262
  503. package/src/services/module-loading/app-module-loader.service.ts +0 -9
  504. package/src/services/module-loading/app-server-module-transpiler.service.test.ts +0 -130
  505. package/src/services/module-loading/app-server-module-transpiler.service.ts +0 -143
  506. package/src/services/module-loading/host-module-loader-registry.ts +0 -15
  507. package/src/services/module-loading/node-bootstrap-plugin.test.ts +0 -335
  508. package/src/services/module-loading/node-bootstrap-plugin.ts +0 -297
  509. package/src/services/module-loading/page-module-import.service.test.ts +0 -504
  510. package/src/services/module-loading/page-module-import.service.ts +0 -252
  511. package/src/services/module-loading/server-module-transpiler.service.test.ts +0 -243
  512. package/src/services/module-loading/server-module-transpiler.service.ts +0 -104
  513. package/src/services/module-loading/source-module-support.ts +0 -19
  514. package/src/services/runtime-state/dev-graph.service.ts +0 -217
  515. package/src/services/runtime-state/entrypoint-dependency-graph.service.ts +0 -136
  516. package/src/services/runtime-state/runtime-specifier-registry.service.ts +0 -96
  517. package/src/services/runtime-state/server-invalidation-state.service.ts +0 -68
  518. package/src/services/validation/schema-validation-service.test.ts +0 -223
  519. package/src/services/validation/schema-validation-service.ts +0 -204
  520. package/src/static-site-generator/static-site-generator.test.ts +0 -316
  521. package/src/static-site-generator/static-site-generator.ts +0 -462
  522. package/src/types/internal-types.ts +0 -242
  523. package/src/types/public-types.ts +0 -1443
  524. package/src/utils/deep-merge.test.ts +0 -114
  525. package/src/utils/deep-merge.ts +0 -47
  526. package/src/utils/hash.ts +0 -5
  527. package/src/utils/html-escaping.ts +0 -9
  528. package/src/utils/invariant.test.ts +0 -22
  529. package/src/utils/invariant.ts +0 -15
  530. package/src/utils/locals-utils.ts +0 -37
  531. package/src/utils/parse-cli-args.test.ts +0 -69
  532. package/src/utils/parse-cli-args.ts +0 -105
  533. package/src/utils/path-utils.module.ts +0 -14
  534. package/src/utils/path-utils.test.ts +0 -15
  535. package/src/utils/resolve-work-dir.ts +0 -45
  536. package/src/utils/runtime.ts +0 -44
  537. package/src/utils/server-utils.module.ts +0 -67
  538. package/src/utils/server-utils.test.ts +0 -38
  539. package/src/watchers/project-watcher.integration.test.ts +0 -337
  540. package/src/watchers/project-watcher.test-helpers.ts +0 -41
  541. package/src/watchers/project-watcher.test.ts +0 -768
  542. package/src/watchers/project-watcher.ts +0 -357
  543. /package/src/utils/{html.ts → html.d.ts} +0 -0
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Default HMR Strategy
3
+ *
4
+ * Fallback strategy for file types that don't have specialized handling.
5
+ * Triggers a full page reload to ensure changes are reflected.
6
+ *
7
+ * @module
8
+ */
9
+ import { HmrStrategy, type HmrAction } from '../hmr-strategy.js';
10
+ /**
11
+ * Default fallback strategy for unhandled file types.
12
+ *
13
+ * This strategy matches all files and triggers a full page reload.
14
+ * It has the lowest priority (FALLBACK) and acts as a catch-all when
15
+ * no other strategy matches the changed file.
16
+ *
17
+ * @remarks
18
+ * This strategy ensures that all file changes result in some action,
19
+ * even if we don't have specialized handling for that file type.
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * const strategy = new DefaultHmrStrategy();
24
+ * const action = await strategy.process('/path/to/unknown.file');
25
+ * ```
26
+ */
27
+ export declare class DefaultHmrStrategy extends HmrStrategy {
28
+ readonly type: 0;
29
+ /**
30
+ * Matches all file paths.
31
+ *
32
+ * @param _filePath - Absolute path to the changed file (unused)
33
+ * @returns Always returns true as this is a catch-all strategy
34
+ */
35
+ matches(_filePath: string): boolean;
36
+ /**
37
+ * Processes a file change by triggering a full page reload.
38
+ *
39
+ * @param filePath - Absolute path to the changed file
40
+ * @returns Action to broadcast a reload event
41
+ */
42
+ process(filePath: string): Promise<HmrAction>;
43
+ }
@@ -0,0 +1,34 @@
1
+ import { HmrStrategy, HmrStrategyType } from "../hmr-strategy.js";
2
+ class DefaultHmrStrategy extends HmrStrategy {
3
+ type = HmrStrategyType.FALLBACK;
4
+ /**
5
+ * Matches all file paths.
6
+ *
7
+ * @param _filePath - Absolute path to the changed file (unused)
8
+ * @returns Always returns true as this is a catch-all strategy
9
+ */
10
+ matches(_filePath) {
11
+ return true;
12
+ }
13
+ /**
14
+ * Processes a file change by triggering a full page reload.
15
+ *
16
+ * @param filePath - Absolute path to the changed file
17
+ * @returns Action to broadcast a reload event
18
+ */
19
+ async process(filePath) {
20
+ return {
21
+ type: "broadcast",
22
+ events: [
23
+ {
24
+ type: "reload",
25
+ path: filePath,
26
+ message: "fallback-strategy"
27
+ }
28
+ ]
29
+ };
30
+ }
31
+ }
32
+ export {
33
+ DefaultHmrStrategy
34
+ };
@@ -0,0 +1,139 @@
1
+ /**
2
+ * JavaScript HMR Strategy
3
+ *
4
+ * Handles hot module replacement for JavaScript and TypeScript entrypoints.
5
+ * Bundles files, inspects the emitted output, and decides whether the browser
6
+ * can hot-accept the change or must reload.
7
+ *
8
+ * @module
9
+ */
10
+ import { HmrStrategy, type HmrAction } from '../hmr-strategy.js';
11
+ import type { EcoBuildPlugin } from '../../build/build-types.js';
12
+ import type { BrowserBundleExecutor } from '../../services/assets/browser-bundle.service.js';
13
+ import type { EntrypointDependencyGraph } from '../../services/runtime-state/entrypoint-dependency-graph.service.js';
14
+ /**
15
+ * Context interface providing access to HmrManager state.
16
+ * Required for JsHmrStrategy to access registered entrypoints and configuration.
17
+ */
18
+ export interface JsHmrContext {
19
+ /**
20
+ * Map of registered entrypoints to their output URLs.
21
+ */
22
+ getWatchedFiles(): Map<string, string>;
23
+ /**
24
+ * Map of bare specifiers to vendor URLs for import resolution.
25
+ */
26
+ getSpecifierMap(): Map<string, string>;
27
+ getEntrypointDependencyGraph(): EntrypointDependencyGraph;
28
+ /**
29
+ * Directory where HMR bundles are written.
30
+ */
31
+ getDistDir(): string;
32
+ /**
33
+ * Build plugins to use during bundling.
34
+ */
35
+ getPlugins(): EcoBuildPlugin[];
36
+ /**
37
+ * Absolute path to the source directory.
38
+ */
39
+ getSrcDir(): string;
40
+ /**
41
+ * Absolute path to the pages directory.
42
+ */
43
+ getPagesDir(): string;
44
+ /**
45
+ * Absolute path to the layouts directory.
46
+ */
47
+ getLayoutsDir(): string;
48
+ /**
49
+ * All configured route-template extensions across integrations.
50
+ */
51
+ getTemplateExtensions(): string[];
52
+ /**
53
+ * Browser bundler used to rebuild changed entrypoints.
54
+ */
55
+ getBrowserBundleService(): BrowserBundleExecutor;
56
+ /**
57
+ * Returns whether a watched entrypoint should be rebuilt by the generic JS strategy.
58
+ *
59
+ * @remarks
60
+ * Integrations with higher-priority HMR strategies can use this to keep the
61
+ * generic JS strategy from overwriting their emitted entrypoints when a shared
62
+ * dependency changes.
63
+ */
64
+ shouldProcessEntrypoint?(entrypointPath: string): boolean;
65
+ }
66
+ /**
67
+ * Strategy for handling JavaScript/TypeScript file changes with hot reloading.
68
+ *
69
+ * The processing steps are:
70
+ * 1. Check if any entrypoints are registered
71
+ * 2. Rebuild impacted entrypoints, or all watched entrypoints when no runtime
72
+ * dependency graph is available
73
+ * 3. Emit rebuilt entrypoint bundles for browser delivery
74
+ * 4. Inject generic HMR boilerplate
75
+ * 5. Broadcast update events for each rebuilt entrypoint
76
+ *
77
+ * @remarks
78
+ * Node can provide dependency-graph metadata, so this strategy can rebuild only
79
+ * the entrypoints impacted by a changed dependency. Runtimes that do not expose
80
+ * that metadata intentionally keep the rebuild-all fallback.
81
+ *
82
+ * @see https://bun.sh/docs/runtime/transpiler
83
+ *
84
+ * @example
85
+ * ```typescript
86
+ * const context = {
87
+ * getWatchedFiles: () => watchedFilesMap,
88
+ * getSpecifierMap: () => specifierMap,
89
+ * getDistDir: () => '/path/to/dist/_hmr',
90
+ * getPlugins: () => [],
91
+ * getSrcDir: () => '/path/to/src'
92
+ * };
93
+ * const strategy = new JsHmrStrategy(context);
94
+ * ```
95
+ */
96
+ export declare class JsHmrStrategy extends HmrStrategy {
97
+ readonly type: 25;
98
+ private context;
99
+ constructor(context: JsHmrContext);
100
+ /**
101
+ * Determines if the file is a JS/TS file that could affect registered entrypoints.
102
+ *
103
+ * Matches if:
104
+ * 1. There are registered entrypoints to rebuild
105
+ * 2. The changed file is a JS/TS file in the src directory
106
+ *
107
+ * @param filePath - Absolute path to the changed file
108
+ * @returns True if this file should trigger entrypoint rebuilds
109
+ */
110
+ matches(filePath: string): boolean;
111
+ /**
112
+ * Processes a file change by rebuilding affected entrypoints.
113
+ *
114
+ * @param filePath - Absolute path to the changed file
115
+ *
116
+ * @remarks
117
+ * If runtime-specific dependency graph hooks are unavailable, this strategy
118
+ * falls back to rebuilding all watched entrypoints.
119
+ * When multiple entrypoints are impacted they are bundled in a single esbuild
120
+ * invocation to share AST parsing and chunk deduplication.
121
+ * @returns Action to broadcast update events
122
+ */
123
+ process(filePath: string): Promise<HmrAction>;
124
+ /**
125
+ * Bundles one or more entrypoints in a single esbuild invocation.
126
+ * Uses the source directory as the output base so that the directory structure
127
+ * is preserved under the HMR dist folder.
128
+ */
129
+ private bundleEntrypoints;
130
+ /**
131
+ * Processes bundled output and determines whether the browser can hot-accept
132
+ * the update or must fall back to a full reload.
133
+ *
134
+ * @param filepath - Path to the bundled output file
135
+ * @param url - URL path for the bundled file
136
+ * @returns True if processing was successful and update should be broadcast
137
+ */
138
+ private processOutput;
139
+ }
@@ -0,0 +1,178 @@
1
+ import path from "node:path";
2
+ import { fileSystem } from "@ecopages/file-system";
3
+ import { HmrStrategy, HmrStrategyType } from "../hmr-strategy.js";
4
+ import { appLogger } from "../../global/app-logger.js";
5
+ class JsHmrStrategy extends HmrStrategy {
6
+ type = HmrStrategyType.SCRIPT;
7
+ context;
8
+ constructor(context) {
9
+ super();
10
+ this.context = context;
11
+ }
12
+ /**
13
+ * Determines if the file is a JS/TS file that could affect registered entrypoints.
14
+ *
15
+ * Matches if:
16
+ * 1. There are registered entrypoints to rebuild
17
+ * 2. The changed file is a JS/TS file in the src directory
18
+ *
19
+ * @param filePath - Absolute path to the changed file
20
+ * @returns True if this file should trigger entrypoint rebuilds
21
+ */
22
+ matches(filePath) {
23
+ const watchedFiles = this.context.getWatchedFiles();
24
+ const isJsTs = /\.(ts|tsx|js|jsx)$/.test(filePath);
25
+ const isInSrc = filePath.startsWith(this.context.getSrcDir());
26
+ const isRouteTemplate = filePath.startsWith(this.context.getPagesDir()) || filePath.startsWith(this.context.getLayoutsDir());
27
+ const isIntegrationTemplate = isRouteTemplate && this.context.getTemplateExtensions().some((extension) => filePath.endsWith(extension));
28
+ if (watchedFiles.size === 0) {
29
+ return false;
30
+ }
31
+ if (!isJsTs || !isInSrc) {
32
+ return false;
33
+ }
34
+ if (isIntegrationTemplate) {
35
+ return false;
36
+ }
37
+ if (watchedFiles.has(filePath)) {
38
+ return true;
39
+ }
40
+ const entrypointDependencyGraph = this.context.getEntrypointDependencyGraph();
41
+ if (entrypointDependencyGraph.supportsSelectiveInvalidation()) {
42
+ return entrypointDependencyGraph.getDependencyEntrypoints(filePath).size > 0;
43
+ }
44
+ return true;
45
+ }
46
+ /**
47
+ * Processes a file change by rebuilding affected entrypoints.
48
+ *
49
+ * @param filePath - Absolute path to the changed file
50
+ *
51
+ * @remarks
52
+ * If runtime-specific dependency graph hooks are unavailable, this strategy
53
+ * falls back to rebuilding all watched entrypoints.
54
+ * When multiple entrypoints are impacted they are bundled in a single esbuild
55
+ * invocation to share AST parsing and chunk deduplication.
56
+ * @returns Action to broadcast update events
57
+ */
58
+ async process(filePath) {
59
+ appLogger.debug(`[JsHmrStrategy] Processing ${filePath}`);
60
+ const watchedFiles = this.context.getWatchedFiles();
61
+ if (watchedFiles.size === 0) {
62
+ appLogger.debug(`[JsHmrStrategy] No watched files to rebuild`);
63
+ return { type: "none" };
64
+ }
65
+ const dependencyHits = this.context.getEntrypointDependencyGraph().getDependencyEntrypoints(filePath);
66
+ const hasDependencyHit = dependencyHits.size > 0;
67
+ const impactedEntrypoints = hasDependencyHit ? Array.from(dependencyHits).filter((entrypoint) => watchedFiles.has(entrypoint)) : Array.from(watchedFiles.keys());
68
+ const buildableEntrypoints = impactedEntrypoints.filter(
69
+ (entrypoint) => this.context.shouldProcessEntrypoint?.(entrypoint) ?? true
70
+ );
71
+ if (!hasDependencyHit) {
72
+ appLogger.debug("[JsHmrStrategy] Dependency graph miss, rebuilding all watched entrypoints");
73
+ }
74
+ if (buildableEntrypoints.length === 0) {
75
+ return { type: "none" };
76
+ }
77
+ const buildResult = await this.bundleEntrypoints(buildableEntrypoints);
78
+ if (!buildResult.success) {
79
+ return { type: "none" };
80
+ }
81
+ const updates = [];
82
+ let reloadRequired = false;
83
+ for (const entrypoint of buildableEntrypoints) {
84
+ const outputUrl = watchedFiles.get(entrypoint);
85
+ if (!outputUrl) continue;
86
+ if (buildResult.dependencies) {
87
+ const entrypointDeps = buildResult.dependencies.get(path.resolve(entrypoint)) ?? [];
88
+ this.context.getEntrypointDependencyGraph().setEntrypointDependencies(entrypoint, entrypointDeps);
89
+ }
90
+ const srcDir = this.context.getSrcDir();
91
+ const relativePath = path.relative(srcDir, entrypoint);
92
+ const relativePathJs = relativePath.replace(/\.(tsx?|jsx?|mdx?)$/, ".js");
93
+ const outputPath = path.join(this.context.getDistDir(), relativePathJs);
94
+ const result = await this.processOutput(outputPath, outputUrl);
95
+ if (result.success) {
96
+ updates.push(outputUrl);
97
+ if (result.requiresReload) {
98
+ reloadRequired = true;
99
+ }
100
+ }
101
+ }
102
+ if (updates.length > 0) {
103
+ if (reloadRequired) {
104
+ appLogger.debug(`[JsHmrStrategy] Full reload required (no HMR accept found)`);
105
+ return {
106
+ type: "broadcast",
107
+ events: [{ type: "reload" }]
108
+ };
109
+ }
110
+ return {
111
+ type: "broadcast",
112
+ events: updates.map((p) => ({
113
+ type: "update",
114
+ path: p,
115
+ timestamp: Date.now()
116
+ }))
117
+ };
118
+ }
119
+ return { type: "none" };
120
+ }
121
+ /**
122
+ * Bundles one or more entrypoints in a single esbuild invocation.
123
+ * Uses the source directory as the output base so that the directory structure
124
+ * is preserved under the HMR dist folder.
125
+ */
126
+ async bundleEntrypoints(entrypoints) {
127
+ try {
128
+ const result = await this.context.getBrowserBundleService().bundle({
129
+ profile: "hmr-entrypoint",
130
+ entrypoints,
131
+ outdir: this.context.getDistDir(),
132
+ outbase: this.context.getSrcDir(),
133
+ naming: "[dir]/[name]",
134
+ plugins: this.context.getPlugins(),
135
+ minify: false
136
+ });
137
+ if (!result.success) {
138
+ appLogger.error("[JsHmrStrategy] Batched build failed:", result.logs);
139
+ return { success: false };
140
+ }
141
+ const dependencies = /* @__PURE__ */ new Map();
142
+ if (result.dependencyGraph?.entrypoints) {
143
+ for (const [entrypoint, deps] of Object.entries(result.dependencyGraph.entrypoints)) {
144
+ dependencies.set(path.resolve(entrypoint), deps);
145
+ }
146
+ }
147
+ return { success: true, dependencies };
148
+ } catch (error) {
149
+ appLogger.error("[JsHmrStrategy] Error in batched build:", error);
150
+ return { success: false };
151
+ }
152
+ }
153
+ /**
154
+ * Processes bundled output and determines whether the browser can hot-accept
155
+ * the update or must fall back to a full reload.
156
+ *
157
+ * @param filepath - Path to the bundled output file
158
+ * @param url - URL path for the bundled file
159
+ * @returns True if processing was successful and update should be broadcast
160
+ */
161
+ async processOutput(filepath, url) {
162
+ try {
163
+ const code = await fileSystem.readFile(filepath);
164
+ if (code.includes("/* [ecopages] hmr */")) {
165
+ return { success: true, requiresReload: !code.includes("import.meta.hot.accept") };
166
+ }
167
+ appLogger.debug(`[JsHmrStrategy] Processed ${url}`);
168
+ const hasHmrAccept = code.includes("import.meta.hot.accept");
169
+ return { success: true, requiresReload: !hasHmrAccept };
170
+ } catch (error) {
171
+ appLogger.error(`[JsHmrStrategy] Error processing output for ${url}:`, error);
172
+ return { success: false, requiresReload: false };
173
+ }
174
+ }
175
+ }
176
+ export {
177
+ JsHmrStrategy
178
+ };
@@ -0,0 +1,3 @@
1
+ export type * from './types/public-types.js';
2
+ export type * from './eco/eco.types.js';
3
+ export { eco } from './eco/eco.browser.js';
@@ -0,0 +1,4 @@
1
+ import { eco } from "./eco/eco.browser.js";
2
+ export {
3
+ eco
4
+ };
package/src/index.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ export type * from './types/public-types.js';
2
+ export type * from './eco/eco.types.js';
3
+ export { eco } from './eco/eco.js';
4
+ export { defineApiHandler, defineGroupHandler, type GroupHandler } from './adapters/shared/define-api-handler.js';
5
+ export { createEcoBuildPluginFromSourceTransform, createVitePluginsFromAppSourceTransforms, getAppSourceTransforms, createVitePluginFromSourceTransform, normalizeTransformId, type EcoSourceTransform, type EcoSourceTransformResult, type EcoViteCompatiblePlugin, } from './plugins/source-transform.js';
6
+ export { createEcoComponentMetaTransform } from './plugins/eco-component-meta-plugin.js';
package/src/index.js ADDED
@@ -0,0 +1,21 @@
1
+ import { eco } from "./eco/eco.js";
2
+ import { defineApiHandler, defineGroupHandler } from "./adapters/shared/define-api-handler.js";
3
+ import {
4
+ createEcoBuildPluginFromSourceTransform,
5
+ createVitePluginsFromAppSourceTransforms,
6
+ getAppSourceTransforms,
7
+ createVitePluginFromSourceTransform,
8
+ normalizeTransformId
9
+ } from "./plugins/source-transform.js";
10
+ import { createEcoComponentMetaTransform } from "./plugins/eco-component-meta-plugin.js";
11
+ export {
12
+ createEcoBuildPluginFromSourceTransform,
13
+ createEcoComponentMetaTransform,
14
+ createVitePluginFromSourceTransform,
15
+ createVitePluginsFromAppSourceTransforms,
16
+ defineApiHandler,
17
+ defineGroupHandler,
18
+ eco,
19
+ getAppSourceTransforms,
20
+ normalizeTransformId
21
+ };
@@ -0,0 +1,20 @@
1
+ /**
2
+ * This module contains the ghtml renderer
3
+ * @module
4
+ */
5
+ import type { ComponentRenderInput, ComponentRenderResult, EcoComponent, EcoPagesElement, IntegrationRendererRenderOptions, RouteRendererBody } from '../../types/public-types.js';
6
+ import { IntegrationRenderer, type RenderToResponseContext } from '../../route-renderer/orchestration/integration-renderer.js';
7
+ /**
8
+ * A renderer for the ghtml integration.
9
+ * It renders a page using the HtmlTemplate and Page components.
10
+ */
11
+ export declare class GhtmlRenderer extends IntegrationRenderer<EcoPagesElement> {
12
+ name: string;
13
+ renderComponent(input: ComponentRenderInput): Promise<ComponentRenderResult>;
14
+ protected createComponentBoundaryRuntime(options: {
15
+ boundaryInput: ComponentRenderInput;
16
+ rendererCache: Map<string, IntegrationRenderer<any>>;
17
+ }): import("../../index.browser.js").ComponentBoundaryRuntime;
18
+ render({ params, query, props, locals, pageLocals, metadata, Page, Layout, HtmlTemplate, }: IntegrationRendererRenderOptions): Promise<RouteRendererBody>;
19
+ renderToResponse<P = Record<string, unknown>>(view: EcoComponent<P>, props: P, ctx: RenderToResponseContext): Promise<Response>;
20
+ }
@@ -0,0 +1,63 @@
1
+ import {
2
+ IntegrationRenderer
3
+ } from "../../route-renderer/orchestration/integration-renderer.js";
4
+ import { GHTML_PLUGIN_NAME } from "./ghtml.constants.js";
5
+ class GhtmlRenderer extends IntegrationRenderer {
6
+ name = GHTML_PLUGIN_NAME;
7
+ async renderComponent(input) {
8
+ return this.renderStringComponentBoundaryWithQueuedForeignBoundaries(
9
+ input,
10
+ input.component
11
+ );
12
+ }
13
+ createComponentBoundaryRuntime(options) {
14
+ return this.createQueuedBoundaryRuntime({
15
+ boundaryInput: options.boundaryInput,
16
+ rendererCache: options.rendererCache
17
+ });
18
+ }
19
+ async render({
20
+ params,
21
+ query,
22
+ props,
23
+ locals,
24
+ pageLocals,
25
+ metadata,
26
+ Page,
27
+ Layout,
28
+ HtmlTemplate
29
+ }) {
30
+ try {
31
+ return await this.renderPageWithDocumentShell({
32
+ page: {
33
+ component: Page,
34
+ props: { params, query, ...props, locals: pageLocals }
35
+ },
36
+ layout: Layout ? {
37
+ component: Layout,
38
+ props: locals ? { locals } : {}
39
+ } : void 0,
40
+ htmlTemplate: HtmlTemplate,
41
+ metadata,
42
+ pageProps: props ?? {}
43
+ });
44
+ } catch (error) {
45
+ throw this.createRenderError("Error rendering page", error);
46
+ }
47
+ }
48
+ async renderToResponse(view, props, ctx) {
49
+ try {
50
+ return await this.renderViewWithDocumentShell({
51
+ view,
52
+ props,
53
+ ctx,
54
+ layout: view.config?.layout
55
+ });
56
+ } catch (error) {
57
+ throw this.createRenderError("Error rendering view", error);
58
+ }
59
+ }
60
+ }
61
+ export {
62
+ GhtmlRenderer
63
+ };
@@ -0,0 +1 @@
1
+ export declare const GHTML_PLUGIN_NAME = "ghtml";
@@ -0,0 +1,4 @@
1
+ const GHTML_PLUGIN_NAME = "ghtml";
2
+ export {
3
+ GHTML_PLUGIN_NAME
4
+ };
@@ -0,0 +1,16 @@
1
+ import { IntegrationPlugin, type IntegrationPluginConfig } from '../../plugins/integration-plugin.js';
2
+ import { GhtmlRenderer } from './ghtml-renderer.js';
3
+ /**
4
+ * The Ghtml plugin class
5
+ * This plugin provides support for ghtml components in Ecopages
6
+ */
7
+ export declare class GhtmlPlugin extends IntegrationPlugin {
8
+ renderer: typeof GhtmlRenderer;
9
+ constructor(options?: Omit<IntegrationPluginConfig, 'name'>);
10
+ }
11
+ /**
12
+ * Factory function to create a Ghtml plugin instance
13
+ * @param options Configuration options for the Ghtml plugin
14
+ * @returns A new GhtmlPlugin instance
15
+ */
16
+ export declare function ghtmlPlugin(options?: Omit<IntegrationPluginConfig, 'name'>): GhtmlPlugin;
@@ -0,0 +1,20 @@
1
+ import { IntegrationPlugin } from "../../plugins/integration-plugin.js";
2
+ import { GhtmlRenderer } from "./ghtml-renderer.js";
3
+ import { GHTML_PLUGIN_NAME } from "./ghtml.constants.js";
4
+ class GhtmlPlugin extends IntegrationPlugin {
5
+ renderer = GhtmlRenderer;
6
+ constructor(options) {
7
+ super({
8
+ name: GHTML_PLUGIN_NAME,
9
+ extensions: [".ghtml.ts", ".ghtml.tsx", ".ghtml"],
10
+ ...options
11
+ });
12
+ }
13
+ }
14
+ function ghtmlPlugin(options) {
15
+ return new GhtmlPlugin(options);
16
+ }
17
+ export {
18
+ GhtmlPlugin,
19
+ ghtmlPlugin
20
+ };
@@ -0,0 +1,2 @@
1
+ import type { EcoBuildPlugin } from '../build/build-types.js';
2
+ export declare function createAliasResolverPlugin(srcDir: string): EcoBuildPlugin;
@@ -0,0 +1,53 @@
1
+ import { existsSync, readFileSync } from "node:fs";
2
+ import path from "node:path";
3
+ const RESOLVABLE_EXTENSIONS = [".ts", ".tsx", ".js", ".jsx", ".mjs", ".cjs", ".mdx", ".css", ".scss", ".sass", ".less"];
4
+ function findResolvablePath(candidate) {
5
+ if (path.extname(candidate)) {
6
+ if (existsSync(candidate)) {
7
+ return candidate;
8
+ }
9
+ }
10
+ for (const extension of RESOLVABLE_EXTENSIONS) {
11
+ const fileCandidate = `${candidate}${extension}`;
12
+ if (existsSync(fileCandidate)) {
13
+ return fileCandidate;
14
+ }
15
+ }
16
+ for (const extension of RESOLVABLE_EXTENSIONS) {
17
+ const indexCandidate = path.join(candidate, `index${extension}`);
18
+ if (existsSync(indexCandidate)) {
19
+ return indexCandidate;
20
+ }
21
+ }
22
+ return void 0;
23
+ }
24
+ function resolveAliasedBarrelTarget(resolvedPath) {
25
+ if (!path.basename(resolvedPath).startsWith("index.")) {
26
+ return resolvedPath;
27
+ }
28
+ const source = readFileSync(resolvedPath, "utf8").trim();
29
+ const match = source.match(/^export\s+\*\s+from\s+['"]([^'"]+)['"]\s*;?$/);
30
+ if (!match?.[1]?.startsWith(".")) {
31
+ return resolvedPath;
32
+ }
33
+ const target = findResolvablePath(path.resolve(path.dirname(resolvedPath), match[1]));
34
+ return target ?? resolvedPath;
35
+ }
36
+ function createAliasResolverPlugin(srcDir) {
37
+ return {
38
+ name: "ecopages-alias-resolver",
39
+ setup(build) {
40
+ build.onResolve({ filter: /^@\// }, (args) => {
41
+ const candidate = path.join(srcDir, args.path.slice(2));
42
+ const resolved = findResolvablePath(candidate);
43
+ if (resolved) {
44
+ return { path: resolveAliasedBarrelTarget(resolved) };
45
+ }
46
+ return {};
47
+ });
48
+ }
49
+ };
50
+ }
51
+ export {
52
+ createAliasResolverPlugin
53
+ };