@ecopages/core 0.2.0-alpha.23 → 0.2.0-alpha.24

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 (515) hide show
  1. package/package.json +93 -226
  2. package/src/adapters/abstract/application-adapter.test.ts +172 -0
  3. package/src/adapters/abstract/application-adapter.ts +379 -0
  4. package/src/adapters/abstract/router-adapter.ts +30 -0
  5. package/src/adapters/abstract/server-adapter.ts +79 -0
  6. package/src/adapters/bun/client-bridge.ts +62 -0
  7. package/src/adapters/bun/create-app.ts +180 -0
  8. package/src/adapters/bun/hmr-manager.test.ts +267 -0
  9. package/src/adapters/bun/hmr-manager.ts +406 -0
  10. package/src/adapters/bun/index.ts +2 -0
  11. package/src/adapters/bun/server-adapter.ts +500 -0
  12. package/src/adapters/bun/server-lifecycle.ts +124 -0
  13. package/src/adapters/create-app.test.ts +10 -0
  14. package/src/adapters/create-app.ts +91 -0
  15. package/src/adapters/index.ts +2 -0
  16. package/src/adapters/node/create-app.test.ts +53 -0
  17. package/src/adapters/node/create-app.ts +183 -0
  18. package/src/adapters/node/node-client-bridge.test.ts +198 -0
  19. package/src/adapters/node/node-client-bridge.ts +79 -0
  20. package/src/adapters/node/node-hmr-manager.test.ts +322 -0
  21. package/src/adapters/node/node-hmr-manager.ts +378 -0
  22. package/src/adapters/node/server-adapter.ts +502 -0
  23. package/src/adapters/node/static-content-server.test.ts +60 -0
  24. package/src/adapters/node/static-content-server.ts +239 -0
  25. package/src/adapters/shared/api-response.test.ts +97 -0
  26. package/src/adapters/shared/api-response.ts +104 -0
  27. package/src/adapters/shared/application-adapter.ts +199 -0
  28. package/src/adapters/shared/define-api-handler.ts +66 -0
  29. package/src/adapters/shared/explicit-static-route-matcher.test.ts +381 -0
  30. package/src/adapters/shared/explicit-static-route-matcher.ts +140 -0
  31. package/src/adapters/shared/file-route-middleware-pipeline.test.ts +90 -0
  32. package/src/adapters/shared/file-route-middleware-pipeline.ts +127 -0
  33. package/src/adapters/shared/fs-server-response-factory.test.ts +187 -0
  34. package/src/adapters/shared/fs-server-response-factory.ts +118 -0
  35. package/src/adapters/shared/fs-server-response-matcher.test.ts +285 -0
  36. package/src/adapters/shared/fs-server-response-matcher.ts +189 -0
  37. package/src/adapters/shared/hmr-entrypoint-registrar.ts +149 -0
  38. package/src/adapters/shared/hmr-html-response.ts +52 -0
  39. package/src/adapters/shared/hmr-manager.contract.test.ts +232 -0
  40. package/src/adapters/shared/hmr-manager.dispatch.test.ts +220 -0
  41. package/src/adapters/shared/render-context.test.ts +150 -0
  42. package/src/adapters/shared/render-context.ts +123 -0
  43. package/src/adapters/shared/runtime-bootstrap.ts +79 -0
  44. package/src/adapters/shared/server-adapter.test.ts +77 -0
  45. package/src/adapters/shared/server-adapter.ts +493 -0
  46. package/src/adapters/shared/server-route-handler.test.ts +110 -0
  47. package/src/adapters/shared/server-route-handler.ts +153 -0
  48. package/src/adapters/shared/server-static-builder.test.ts +338 -0
  49. package/src/adapters/shared/server-static-builder.ts +170 -0
  50. package/src/build/build-adapter-serialization.test.ts +281 -0
  51. package/src/build/build-adapter.test.ts +1240 -0
  52. package/src/build/build-adapter.ts +1012 -0
  53. package/src/build/build-manifest.ts +54 -0
  54. package/src/build/build-types.ts +83 -0
  55. package/src/build/dev-build-coordinator.ts +220 -0
  56. package/src/build/esbuild-build-adapter.ts +660 -0
  57. package/src/build/runtime-build-executor.test.ts +81 -0
  58. package/src/build/runtime-build-executor.ts +40 -0
  59. package/src/build/runtime-specifier-alias-plugin.test.ts +67 -0
  60. package/src/build/runtime-specifier-alias-plugin.ts +62 -0
  61. package/src/build/runtime-specifier-aliases.ts +135 -0
  62. package/src/config/config-builder.test.ts +443 -0
  63. package/src/config/config-builder.ts +742 -0
  64. package/src/config/config-builder.typecheck.test.ts +96 -0
  65. package/src/config/{constants.d.ts → constants.ts} +22 -13
  66. package/src/dev/sc-server.ts +143 -0
  67. package/src/eco/eco.browser.test.ts +43 -0
  68. package/src/eco/eco.browser.ts +118 -0
  69. package/src/eco/eco.test.ts +654 -0
  70. package/src/eco/eco.ts +205 -0
  71. package/src/eco/eco.types.ts +221 -0
  72. package/src/eco/eco.utils.test.ts +219 -0
  73. package/src/eco/eco.utils.ts +5 -0
  74. package/src/eco/global-injector-map.test.ts +42 -0
  75. package/src/eco/global-injector-map.ts +112 -0
  76. package/src/eco/lazy-injector-map.test.ts +66 -0
  77. package/src/eco/lazy-injector-map.ts +120 -0
  78. package/src/eco/module-dependencies.test.ts +30 -0
  79. package/src/eco/module-dependencies.ts +75 -0
  80. package/src/errors/http-error.test.ts +134 -0
  81. package/src/errors/http-error.ts +72 -0
  82. package/src/errors/{index.d.ts → index.ts} +2 -2
  83. package/src/errors/locals-access-error.ts +7 -0
  84. package/src/global/app-logger.ts +4 -0
  85. package/src/global/utils.test.ts +12 -0
  86. 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
  87. package/src/hmr/client/__screenshots__/hmr-runtime.test.browser.ts/HMR-Runtime-HMR-Server-Integration-should-load-fixture-app-page-1.png +0 -0
  88. package/src/hmr/client/__screenshots__/hmr-runtime.test.browser.ts/HMR-Runtime-WebSocket-Connection-should-connect-to-correct-HMR-endpoint-1.png +0 -0
  89. package/src/hmr/client/hmr-runtime.ts +160 -0
  90. package/src/hmr/hmr-strategy.test.ts +124 -0
  91. package/src/hmr/hmr-strategy.ts +177 -0
  92. package/src/hmr/hmr.postcss.test.e2e.ts +41 -0
  93. package/src/hmr/hmr.test.e2e.ts +66 -0
  94. package/src/hmr/strategies/default-hmr-strategy.ts +60 -0
  95. package/src/hmr/strategies/js-hmr-strategy.test.ts +335 -0
  96. package/src/hmr/strategies/js-hmr-strategy.ts +320 -0
  97. package/src/index.browser.ts +3 -0
  98. package/src/index.ts +15 -0
  99. package/src/integrations/ghtml/ghtml-renderer.test.ts +253 -0
  100. package/src/integrations/ghtml/ghtml-renderer.ts +97 -0
  101. package/src/integrations/ghtml/ghtml.constants.ts +1 -0
  102. package/src/integrations/ghtml/ghtml.plugin.ts +28 -0
  103. package/src/plugins/alias-resolver-plugin.test.ts +41 -0
  104. package/src/plugins/alias-resolver-plugin.ts +63 -0
  105. package/src/plugins/eco-component-meta-plugin.test.ts +406 -0
  106. package/src/plugins/eco-component-meta-plugin.ts +495 -0
  107. package/src/plugins/foreign-jsx-override-plugin.test.ts +65 -0
  108. package/src/plugins/foreign-jsx-override-plugin.ts +67 -0
  109. package/src/plugins/integration-plugin.test.ts +156 -0
  110. package/src/plugins/integration-plugin.ts +311 -0
  111. package/src/plugins/processor.test.ts +148 -0
  112. package/src/plugins/processor.ts +240 -0
  113. package/src/plugins/{runtime-capability.d.ts → runtime-capability.ts} +8 -3
  114. package/src/plugins/source-transform.test.ts +82 -0
  115. package/src/plugins/source-transform.ts +123 -0
  116. package/src/route-renderer/orchestration/boundary-planning.service.ts +146 -0
  117. package/src/route-renderer/orchestration/component-render-context.ts +318 -0
  118. package/src/route-renderer/orchestration/integration-renderer.test.ts +2088 -0
  119. package/src/route-renderer/orchestration/integration-renderer.ts +1285 -0
  120. package/src/route-renderer/orchestration/page-packaging.service.test.ts +76 -0
  121. package/src/route-renderer/orchestration/page-packaging.service.ts +85 -0
  122. package/src/route-renderer/orchestration/processed-asset-dedupe.ts +25 -0
  123. package/src/route-renderer/orchestration/queued-boundary-runtime.service.test.ts +319 -0
  124. package/src/route-renderer/orchestration/queued-boundary-runtime.service.ts +289 -0
  125. package/src/route-renderer/orchestration/render-execution.service.test.ts +196 -0
  126. package/src/route-renderer/orchestration/render-execution.service.ts +182 -0
  127. package/src/route-renderer/orchestration/render-output.utils.ts +302 -0
  128. package/src/route-renderer/orchestration/render-preparation.service.test.ts +569 -0
  129. package/src/route-renderer/orchestration/render-preparation.service.ts +508 -0
  130. package/src/route-renderer/orchestration/route-shell-composer.service.ts +162 -0
  131. package/src/route-renderer/orchestration/template-serialization.test.ts +110 -0
  132. package/src/route-renderer/orchestration/template-serialization.ts +117 -0
  133. package/src/route-renderer/page-loading/component-dependency-collection.ts +196 -0
  134. package/src/route-renderer/page-loading/declared-asset-collection.ts +156 -0
  135. package/src/route-renderer/page-loading/dependency-resolver.test.ts +665 -0
  136. package/src/route-renderer/page-loading/dependency-resolver.ts +150 -0
  137. package/src/route-renderer/page-loading/ecopages-virtual-imports.ts +75 -0
  138. package/src/route-renderer/page-loading/lazy-entry-collection.ts +167 -0
  139. package/src/route-renderer/page-loading/lazy-trigger-planning.ts +74 -0
  140. package/src/route-renderer/page-loading/module-declaration-aggregation.ts +60 -0
  141. package/src/route-renderer/page-loading/module-declaration-scripts.ts +16 -0
  142. package/src/route-renderer/page-loading/page-dependency-bundling.ts +205 -0
  143. package/src/route-renderer/page-loading/page-module-loader.test.ts +183 -0
  144. package/src/route-renderer/page-loading/page-module-loader.ts +184 -0
  145. package/src/route-renderer/route-renderer.ts +136 -0
  146. package/src/router/client/link-intent.test.browser.ts +51 -0
  147. package/src/router/client/link-intent.ts +92 -0
  148. package/src/router/client/navigation-coordinator.test.ts +237 -0
  149. package/src/router/client/navigation-coordinator.ts +453 -0
  150. package/src/router/server/fs-router-scanner.test.ts +83 -0
  151. package/src/router/server/fs-router-scanner.ts +224 -0
  152. package/src/router/server/fs-router.test.ts +214 -0
  153. package/src/router/server/fs-router.ts +122 -0
  154. package/src/services/assets/asset-processing-service/asset-dependency-keys.ts +66 -0
  155. package/src/services/assets/asset-processing-service/asset-processing.service.test.ts +476 -0
  156. package/src/services/assets/asset-processing-service/asset-processing.service.ts +345 -0
  157. package/src/services/assets/asset-processing-service/asset.factory.test.ts +63 -0
  158. package/src/services/assets/asset-processing-service/asset.factory.ts +105 -0
  159. package/src/services/assets/asset-processing-service/assets.types.ts +125 -0
  160. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.test.ts +74 -0
  161. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.ts +96 -0
  162. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.test.ts +67 -0
  163. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.ts +78 -0
  164. package/src/services/assets/asset-processing-service/grouped-content-bundles.ts +104 -0
  165. package/src/services/assets/asset-processing-service/index.ts +5 -0
  166. package/src/services/assets/asset-processing-service/{processor.interface.d.ts → processor.interface.ts} +10 -5
  167. package/src/services/assets/asset-processing-service/processor.registry.ts +18 -0
  168. package/src/services/assets/asset-processing-service/processors/base/base-processor.test.ts +59 -0
  169. package/src/services/assets/asset-processing-service/processors/base/base-processor.ts +83 -0
  170. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.ts +174 -0
  171. package/src/services/assets/asset-processing-service/processors/index.ts +5 -0
  172. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.test.ts +192 -0
  173. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.ts +134 -0
  174. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.test.ts +326 -0
  175. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.ts +110 -0
  176. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.test.ts +227 -0
  177. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.ts +87 -0
  178. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.test.ts +261 -0
  179. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.ts +71 -0
  180. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.ts +81 -0
  181. package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.ts +65 -0
  182. package/src/services/assets/browser-bundle.service.test.ts +66 -0
  183. package/src/services/assets/browser-bundle.service.ts +109 -0
  184. package/src/services/cache/cache.types.ts +126 -0
  185. package/src/services/cache/index.ts +18 -0
  186. package/src/services/cache/memory-cache-store.test.ts +225 -0
  187. package/src/services/cache/memory-cache-store.ts +130 -0
  188. package/src/services/cache/page-cache-service.test.ts +175 -0
  189. package/src/services/cache/page-cache-service.ts +202 -0
  190. package/src/services/cache/page-request-cache-coordinator.service.test.ts +79 -0
  191. package/src/services/cache/page-request-cache-coordinator.service.ts +131 -0
  192. package/src/services/html/html-rewriter-provider.service.test.ts +183 -0
  193. package/src/services/html/html-rewriter-provider.service.ts +104 -0
  194. package/src/services/html/html-transformer.service.test.ts +479 -0
  195. package/src/services/html/html-transformer.service.ts +275 -0
  196. package/src/services/invalidation/development-invalidation.service.test.ts +87 -0
  197. package/src/services/invalidation/development-invalidation.service.ts +262 -0
  198. package/src/services/module-loading/app-module-loader.service.ts +9 -0
  199. package/src/services/module-loading/app-server-module-transpiler.service.test.ts +130 -0
  200. package/src/services/module-loading/app-server-module-transpiler.service.ts +143 -0
  201. package/src/services/module-loading/host-module-loader-registry.ts +15 -0
  202. package/src/services/module-loading/{module-loading-types.d.ts → module-loading-types.ts} +1 -0
  203. package/src/services/module-loading/node-bootstrap-plugin.test.ts +335 -0
  204. package/src/services/module-loading/node-bootstrap-plugin.ts +297 -0
  205. package/src/services/module-loading/page-module-import.service.test.ts +504 -0
  206. package/src/services/module-loading/page-module-import.service.ts +252 -0
  207. package/src/services/module-loading/server-module-transpiler.service.test.ts +243 -0
  208. package/src/services/module-loading/server-module-transpiler.service.ts +104 -0
  209. package/src/services/module-loading/source-module-support.ts +19 -0
  210. package/src/services/runtime-state/dev-graph.service.ts +217 -0
  211. package/src/services/runtime-state/entrypoint-dependency-graph.service.ts +136 -0
  212. package/src/services/runtime-state/runtime-specifier-registry.service.ts +96 -0
  213. package/src/services/runtime-state/server-invalidation-state.service.ts +68 -0
  214. package/src/services/validation/schema-validation-service.test.ts +223 -0
  215. package/src/services/validation/schema-validation-service.ts +204 -0
  216. package/src/services/validation/{standard-schema.types.d.ts → standard-schema.types.ts} +20 -17
  217. package/src/static-site-generator/static-site-generator.test.ts +316 -0
  218. package/src/static-site-generator/static-site-generator.ts +462 -0
  219. package/src/types/internal-types.ts +242 -0
  220. package/src/types/public-types.ts +1443 -0
  221. package/src/utils/deep-merge.test.ts +114 -0
  222. package/src/utils/deep-merge.ts +47 -0
  223. package/src/utils/hash.ts +5 -0
  224. package/src/utils/html-escaping.ts +9 -0
  225. package/src/utils/invariant.test.ts +22 -0
  226. package/src/utils/invariant.ts +15 -0
  227. package/src/utils/locals-utils.ts +37 -0
  228. package/src/utils/parse-cli-args.test.ts +69 -0
  229. package/src/utils/parse-cli-args.ts +105 -0
  230. package/src/utils/path-utils.module.ts +14 -0
  231. package/src/utils/path-utils.test.ts +15 -0
  232. package/src/utils/resolve-work-dir.ts +45 -0
  233. package/src/utils/runtime.ts +44 -0
  234. package/src/utils/server-utils.module.ts +67 -0
  235. package/src/utils/server-utils.test.ts +38 -0
  236. package/src/watchers/project-watcher.integration.test.ts +337 -0
  237. package/src/watchers/project-watcher.test-helpers.ts +41 -0
  238. package/src/watchers/project-watcher.test.ts +768 -0
  239. package/src/watchers/project-watcher.ts +357 -0
  240. package/CHANGELOG.md +0 -51
  241. package/src/adapters/abstract/application-adapter.d.ts +0 -194
  242. package/src/adapters/abstract/application-adapter.js +0 -121
  243. package/src/adapters/abstract/router-adapter.d.ts +0 -26
  244. package/src/adapters/abstract/router-adapter.js +0 -5
  245. package/src/adapters/abstract/server-adapter.d.ts +0 -69
  246. package/src/adapters/abstract/server-adapter.js +0 -15
  247. package/src/adapters/bun/client-bridge.d.ts +0 -34
  248. package/src/adapters/bun/client-bridge.js +0 -48
  249. package/src/adapters/bun/create-app.d.ts +0 -52
  250. package/src/adapters/bun/create-app.js +0 -116
  251. package/src/adapters/bun/hmr-manager.d.ts +0 -143
  252. package/src/adapters/bun/hmr-manager.js +0 -333
  253. package/src/adapters/bun/index.d.ts +0 -2
  254. package/src/adapters/bun/index.js +0 -8
  255. package/src/adapters/bun/server-adapter.d.ts +0 -155
  256. package/src/adapters/bun/server-adapter.js +0 -374
  257. package/src/adapters/bun/server-lifecycle.d.ts +0 -63
  258. package/src/adapters/bun/server-lifecycle.js +0 -92
  259. package/src/adapters/create-app.d.ts +0 -20
  260. package/src/adapters/create-app.js +0 -66
  261. package/src/adapters/index.d.ts +0 -2
  262. package/src/adapters/index.js +0 -8
  263. package/src/adapters/node/create-app.d.ts +0 -18
  264. package/src/adapters/node/create-app.js +0 -149
  265. package/src/adapters/node/node-client-bridge.d.ts +0 -26
  266. package/src/adapters/node/node-client-bridge.js +0 -66
  267. package/src/adapters/node/node-hmr-manager.d.ts +0 -133
  268. package/src/adapters/node/node-hmr-manager.js +0 -311
  269. package/src/adapters/node/server-adapter.d.ts +0 -161
  270. package/src/adapters/node/server-adapter.js +0 -359
  271. package/src/adapters/node/static-content-server.d.ts +0 -60
  272. package/src/adapters/node/static-content-server.js +0 -194
  273. package/src/adapters/shared/api-response.d.ts +0 -52
  274. package/src/adapters/shared/api-response.js +0 -96
  275. package/src/adapters/shared/application-adapter.d.ts +0 -18
  276. package/src/adapters/shared/application-adapter.js +0 -90
  277. package/src/adapters/shared/define-api-handler.d.ts +0 -25
  278. package/src/adapters/shared/define-api-handler.js +0 -15
  279. package/src/adapters/shared/explicit-static-route-matcher.d.ts +0 -38
  280. package/src/adapters/shared/explicit-static-route-matcher.js +0 -103
  281. package/src/adapters/shared/file-route-middleware-pipeline.d.ts +0 -65
  282. package/src/adapters/shared/file-route-middleware-pipeline.js +0 -99
  283. package/src/adapters/shared/fs-server-response-factory.d.ts +0 -19
  284. package/src/adapters/shared/fs-server-response-factory.js +0 -97
  285. package/src/adapters/shared/fs-server-response-matcher.d.ts +0 -67
  286. package/src/adapters/shared/fs-server-response-matcher.js +0 -147
  287. package/src/adapters/shared/hmr-entrypoint-registrar.d.ts +0 -55
  288. package/src/adapters/shared/hmr-entrypoint-registrar.js +0 -87
  289. package/src/adapters/shared/hmr-html-response.d.ts +0 -22
  290. package/src/adapters/shared/hmr-html-response.js +0 -32
  291. package/src/adapters/shared/render-context.d.ts +0 -15
  292. package/src/adapters/shared/render-context.js +0 -72
  293. package/src/adapters/shared/runtime-bootstrap.d.ts +0 -38
  294. package/src/adapters/shared/runtime-bootstrap.js +0 -43
  295. package/src/adapters/shared/server-adapter.d.ts +0 -97
  296. package/src/adapters/shared/server-adapter.js +0 -390
  297. package/src/adapters/shared/server-route-handler.d.ts +0 -89
  298. package/src/adapters/shared/server-route-handler.js +0 -111
  299. package/src/adapters/shared/server-static-builder.d.ts +0 -70
  300. package/src/adapters/shared/server-static-builder.js +0 -100
  301. package/src/build/build-adapter.d.ts +0 -239
  302. package/src/build/build-adapter.js +0 -642
  303. package/src/build/build-manifest.d.ts +0 -27
  304. package/src/build/build-manifest.js +0 -30
  305. package/src/build/build-types.d.ts +0 -57
  306. package/src/build/build-types.js +0 -0
  307. package/src/build/dev-build-coordinator.d.ts +0 -72
  308. package/src/build/dev-build-coordinator.js +0 -154
  309. package/src/build/esbuild-build-adapter.d.ts +0 -78
  310. package/src/build/esbuild-build-adapter.js +0 -505
  311. package/src/build/runtime-build-executor.d.ts +0 -14
  312. package/src/build/runtime-build-executor.js +0 -22
  313. package/src/build/runtime-specifier-alias-plugin.d.ts +0 -15
  314. package/src/build/runtime-specifier-alias-plugin.js +0 -35
  315. package/src/build/runtime-specifier-aliases.d.ts +0 -5
  316. package/src/build/runtime-specifier-aliases.js +0 -95
  317. package/src/config/config-builder.d.ts +0 -252
  318. package/src/config/config-builder.js +0 -603
  319. package/src/config/constants.js +0 -25
  320. package/src/dev/sc-server.d.ts +0 -30
  321. package/src/dev/sc-server.js +0 -111
  322. package/src/eco/eco.browser.d.ts +0 -2
  323. package/src/eco/eco.browser.js +0 -83
  324. package/src/eco/eco.d.ts +0 -9
  325. package/src/eco/eco.js +0 -85
  326. package/src/eco/eco.types.d.ts +0 -178
  327. package/src/eco/eco.types.js +0 -0
  328. package/src/eco/eco.utils.d.ts +0 -1
  329. package/src/eco/eco.utils.js +0 -10
  330. package/src/eco/global-injector-map.d.ts +0 -16
  331. package/src/eco/global-injector-map.js +0 -80
  332. package/src/eco/lazy-injector-map.d.ts +0 -8
  333. package/src/eco/lazy-injector-map.js +0 -70
  334. package/src/eco/module-dependencies.d.ts +0 -18
  335. package/src/eco/module-dependencies.js +0 -49
  336. package/src/errors/http-error.d.ts +0 -31
  337. package/src/errors/http-error.js +0 -50
  338. package/src/errors/index.js +0 -4
  339. package/src/errors/locals-access-error.d.ts +0 -4
  340. package/src/errors/locals-access-error.js +0 -9
  341. package/src/global/app-logger.d.ts +0 -2
  342. package/src/global/app-logger.js +0 -6
  343. package/src/hmr/client/hmr-runtime.d.ts +0 -5
  344. package/src/hmr/client/hmr-runtime.js +0 -109
  345. package/src/hmr/hmr-strategy.d.ts +0 -162
  346. package/src/hmr/hmr-strategy.js +0 -44
  347. package/src/hmr/hmr.postcss.test.e2e.d.ts +0 -1
  348. package/src/hmr/hmr.postcss.test.e2e.js +0 -31
  349. package/src/hmr/hmr.test.e2e.d.ts +0 -1
  350. package/src/hmr/hmr.test.e2e.js +0 -43
  351. package/src/hmr/strategies/default-hmr-strategy.d.ts +0 -43
  352. package/src/hmr/strategies/default-hmr-strategy.js +0 -34
  353. package/src/hmr/strategies/js-hmr-strategy.d.ts +0 -139
  354. package/src/hmr/strategies/js-hmr-strategy.js +0 -178
  355. package/src/index.browser.d.ts +0 -3
  356. package/src/index.browser.js +0 -4
  357. package/src/index.d.ts +0 -6
  358. package/src/index.js +0 -21
  359. package/src/integrations/ghtml/ghtml-renderer.d.ts +0 -20
  360. package/src/integrations/ghtml/ghtml-renderer.js +0 -63
  361. package/src/integrations/ghtml/ghtml.constants.d.ts +0 -1
  362. package/src/integrations/ghtml/ghtml.constants.js +0 -4
  363. package/src/integrations/ghtml/ghtml.plugin.d.ts +0 -16
  364. package/src/integrations/ghtml/ghtml.plugin.js +0 -20
  365. package/src/plugins/alias-resolver-plugin.d.ts +0 -2
  366. package/src/plugins/alias-resolver-plugin.js +0 -53
  367. package/src/plugins/eco-component-meta-plugin.d.ts +0 -108
  368. package/src/plugins/eco-component-meta-plugin.js +0 -163
  369. package/src/plugins/foreign-jsx-override-plugin.d.ts +0 -31
  370. package/src/plugins/foreign-jsx-override-plugin.js +0 -35
  371. package/src/plugins/integration-plugin.d.ts +0 -219
  372. package/src/plugins/integration-plugin.js +0 -196
  373. package/src/plugins/processor.d.ts +0 -95
  374. package/src/plugins/processor.js +0 -136
  375. package/src/plugins/runtime-capability.js +0 -0
  376. package/src/plugins/source-transform.d.ts +0 -46
  377. package/src/plugins/source-transform.js +0 -71
  378. package/src/route-renderer/orchestration/boundary-planning.service.d.ts +0 -25
  379. package/src/route-renderer/orchestration/boundary-planning.service.js +0 -97
  380. package/src/route-renderer/orchestration/component-render-context.d.ts +0 -83
  381. package/src/route-renderer/orchestration/component-render-context.js +0 -147
  382. package/src/route-renderer/orchestration/integration-renderer.d.ts +0 -554
  383. package/src/route-renderer/orchestration/integration-renderer.js +0 -957
  384. package/src/route-renderer/orchestration/queued-boundary-runtime.service.d.ts +0 -89
  385. package/src/route-renderer/orchestration/queued-boundary-runtime.service.js +0 -155
  386. package/src/route-renderer/orchestration/render-execution.service.d.ts +0 -43
  387. package/src/route-renderer/orchestration/render-execution.service.js +0 -106
  388. package/src/route-renderer/orchestration/render-output.utils.d.ts +0 -46
  389. package/src/route-renderer/orchestration/render-output.utils.js +0 -65
  390. package/src/route-renderer/orchestration/render-preparation.service.d.ts +0 -120
  391. package/src/route-renderer/orchestration/render-preparation.service.js +0 -341
  392. package/src/route-renderer/orchestration/route-shell-composer.service.d.ts +0 -50
  393. package/src/route-renderer/orchestration/route-shell-composer.service.js +0 -81
  394. package/src/route-renderer/orchestration/template-serialization.d.ts +0 -38
  395. package/src/route-renderer/orchestration/template-serialization.js +0 -45
  396. package/src/route-renderer/page-loading/dependency-resolver.d.ts +0 -35
  397. package/src/route-renderer/page-loading/dependency-resolver.js +0 -444
  398. package/src/route-renderer/page-loading/page-module-loader.d.ts +0 -90
  399. package/src/route-renderer/page-loading/page-module-loader.js +0 -127
  400. package/src/route-renderer/route-renderer.d.ts +0 -67
  401. package/src/route-renderer/route-renderer.js +0 -103
  402. package/src/router/client/link-intent.js +0 -34
  403. package/src/router/client/link-intent.test.browser.d.ts +0 -1
  404. package/src/router/client/link-intent.test.browser.js +0 -43
  405. package/src/router/client/navigation-coordinator.d.ts +0 -149
  406. package/src/router/client/navigation-coordinator.js +0 -215
  407. package/src/router/server/fs-router-scanner.d.ts +0 -41
  408. package/src/router/server/fs-router-scanner.js +0 -161
  409. package/src/router/server/fs-router.d.ts +0 -26
  410. package/src/router/server/fs-router.js +0 -100
  411. package/src/services/assets/asset-processing-service/asset-processing.service.d.ts +0 -120
  412. package/src/services/assets/asset-processing-service/asset-processing.service.js +0 -331
  413. package/src/services/assets/asset-processing-service/asset.factory.d.ts +0 -17
  414. package/src/services/assets/asset-processing-service/asset.factory.js +0 -82
  415. package/src/services/assets/asset-processing-service/assets.types.d.ts +0 -89
  416. package/src/services/assets/asset-processing-service/assets.types.js +0 -0
  417. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.d.ts +0 -55
  418. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.js +0 -48
  419. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.d.ts +0 -20
  420. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.js +0 -41
  421. package/src/services/assets/asset-processing-service/index.d.ts +0 -5
  422. package/src/services/assets/asset-processing-service/index.js +0 -5
  423. package/src/services/assets/asset-processing-service/processor.interface.js +0 -6
  424. package/src/services/assets/asset-processing-service/processor.registry.d.ts +0 -8
  425. package/src/services/assets/asset-processing-service/processor.registry.js +0 -15
  426. package/src/services/assets/asset-processing-service/processors/base/base-processor.d.ts +0 -24
  427. package/src/services/assets/asset-processing-service/processors/base/base-processor.js +0 -64
  428. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.d.ts +0 -17
  429. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.js +0 -72
  430. package/src/services/assets/asset-processing-service/processors/index.d.ts +0 -5
  431. package/src/services/assets/asset-processing-service/processors/index.js +0 -5
  432. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.d.ts +0 -5
  433. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.js +0 -57
  434. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.d.ts +0 -9
  435. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.js +0 -88
  436. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.d.ts +0 -7
  437. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.js +0 -75
  438. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.d.ts +0 -5
  439. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +0 -25
  440. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.d.ts +0 -9
  441. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.js +0 -66
  442. package/src/services/assets/browser-bundle.service.d.ts +0 -32
  443. package/src/services/assets/browser-bundle.service.js +0 -33
  444. package/src/services/cache/cache.types.d.ts +0 -107
  445. package/src/services/cache/cache.types.js +0 -0
  446. package/src/services/cache/index.d.ts +0 -7
  447. package/src/services/cache/index.js +0 -7
  448. package/src/services/cache/memory-cache-store.d.ts +0 -42
  449. package/src/services/cache/memory-cache-store.js +0 -98
  450. package/src/services/cache/page-cache-service.d.ts +0 -70
  451. package/src/services/cache/page-cache-service.js +0 -152
  452. package/src/services/cache/page-request-cache-coordinator.service.d.ts +0 -75
  453. package/src/services/cache/page-request-cache-coordinator.service.js +0 -109
  454. package/src/services/html/html-rewriter-provider.service.d.ts +0 -37
  455. package/src/services/html/html-rewriter-provider.service.js +0 -68
  456. package/src/services/html/html-transformer.service.d.ts +0 -77
  457. package/src/services/html/html-transformer.service.js +0 -215
  458. package/src/services/invalidation/development-invalidation.service.d.ts +0 -74
  459. package/src/services/invalidation/development-invalidation.service.js +0 -190
  460. package/src/services/module-loading/app-module-loader.service.d.ts +0 -28
  461. package/src/services/module-loading/app-module-loader.service.js +0 -35
  462. package/src/services/module-loading/app-server-module-transpiler.service.d.ts +0 -24
  463. package/src/services/module-loading/app-server-module-transpiler.service.js +0 -109
  464. package/src/services/module-loading/host-module-loader-registry.d.ts +0 -4
  465. package/src/services/module-loading/host-module-loader-registry.js +0 -15
  466. package/src/services/module-loading/module-loading-types.js +0 -0
  467. package/src/services/module-loading/node-bootstrap-plugin.d.ts +0 -42
  468. package/src/services/module-loading/node-bootstrap-plugin.js +0 -204
  469. package/src/services/module-loading/page-module-import.service.d.ts +0 -76
  470. package/src/services/module-loading/page-module-import.service.js +0 -173
  471. package/src/services/module-loading/server-module-transpiler.service.d.ts +0 -72
  472. package/src/services/module-loading/server-module-transpiler.service.js +0 -64
  473. package/src/services/runtime-state/dev-graph.service.d.ts +0 -118
  474. package/src/services/runtime-state/dev-graph.service.js +0 -162
  475. package/src/services/runtime-state/entrypoint-dependency-graph.service.d.ts +0 -41
  476. package/src/services/runtime-state/entrypoint-dependency-graph.service.js +0 -85
  477. package/src/services/runtime-state/runtime-specifier-registry.service.d.ts +0 -69
  478. package/src/services/runtime-state/runtime-specifier-registry.service.js +0 -37
  479. package/src/services/runtime-state/server-invalidation-state.service.d.ts +0 -26
  480. package/src/services/runtime-state/server-invalidation-state.service.js +0 -35
  481. package/src/services/validation/schema-validation-service.d.ts +0 -122
  482. package/src/services/validation/schema-validation-service.js +0 -101
  483. package/src/services/validation/standard-schema.types.js +0 -0
  484. package/src/static-site-generator/static-site-generator.d.ts +0 -104
  485. package/src/static-site-generator/static-site-generator.js +0 -338
  486. package/src/types/internal-types.d.ts +0 -231
  487. package/src/types/internal-types.js +0 -0
  488. package/src/types/public-types.d.ts +0 -1219
  489. package/src/types/public-types.js +0 -0
  490. package/src/utils/deep-merge.d.ts +0 -14
  491. package/src/utils/deep-merge.js +0 -32
  492. package/src/utils/hash.d.ts +0 -1
  493. package/src/utils/hash.js +0 -7
  494. package/src/utils/html-escaping.d.ts +0 -7
  495. package/src/utils/html-escaping.js +0 -6
  496. package/src/utils/html.js +0 -4
  497. package/src/utils/invariant.d.ts +0 -5
  498. package/src/utils/invariant.js +0 -11
  499. package/src/utils/locals-utils.d.ts +0 -15
  500. package/src/utils/locals-utils.js +0 -24
  501. package/src/utils/parse-cli-args.d.ts +0 -27
  502. package/src/utils/parse-cli-args.js +0 -62
  503. package/src/utils/path-utils.module.d.ts +0 -5
  504. package/src/utils/path-utils.module.js +0 -14
  505. package/src/utils/resolve-work-dir.d.ts +0 -11
  506. package/src/utils/resolve-work-dir.js +0 -31
  507. package/src/utils/runtime.d.ts +0 -11
  508. package/src/utils/runtime.js +0 -40
  509. package/src/utils/server-utils.module.d.ts +0 -19
  510. package/src/utils/server-utils.module.js +0 -56
  511. package/src/watchers/project-watcher.d.ts +0 -136
  512. package/src/watchers/project-watcher.js +0 -275
  513. package/src/watchers/project-watcher.test-helpers.d.ts +0 -4
  514. package/src/watchers/project-watcher.test-helpers.js +0 -52
  515. /package/src/utils/{html.d.ts → html.ts} +0 -0
@@ -1,139 +0,0 @@
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
- }
@@ -1,178 +0,0 @@
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
- };
@@ -1,3 +0,0 @@
1
- export type * from './types/public-types.js';
2
- export type * from './eco/eco.types.js';
3
- export { eco } from './eco/eco.browser.js';
@@ -1,4 +0,0 @@
1
- import { eco } from "./eco/eco.browser.js";
2
- export {
3
- eco
4
- };
package/src/index.d.ts DELETED
@@ -1,6 +0,0 @@
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 DELETED
@@ -1,21 +0,0 @@
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
- };
@@ -1,20 +0,0 @@
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
- }
@@ -1,63 +0,0 @@
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
- };
@@ -1 +0,0 @@
1
- export declare const GHTML_PLUGIN_NAME = "ghtml";
@@ -1,4 +0,0 @@
1
- const GHTML_PLUGIN_NAME = "ghtml";
2
- export {
3
- GHTML_PLUGIN_NAME
4
- };
@@ -1,16 +0,0 @@
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;
@@ -1,20 +0,0 @@
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
- };
@@ -1,2 +0,0 @@
1
- import type { EcoBuildPlugin } from '../build/build-types.js';
2
- export declare function createAliasResolverPlugin(srcDir: string): EcoBuildPlugin;
@@ -1,53 +0,0 @@
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
- };
@@ -1,108 +0,0 @@
1
- /**
2
- * Bun plugin that auto-injects `__eco` metadata into EcoComponent config objects.
3
- *
4
- * This plugin uses AST parsing (via oxc-parser) to reliably inject the `__eco` property
5
- * into EcoComponent config objects at import time. The injected metadata contains:
6
- * - `dir`: The directory path of the component file (used for dependency resolution)
7
- * - `integration`: The integration type (e.g., 'react', 'kitajs', 'ghtml', 'lit')
8
- *
9
- * The plugin intercepts file loading for all configured integration extensions and
10
- * transforms component configs before they are executed.
11
- *
12
- * @example
13
- * ```typescript
14
- * // Before transformation:
15
- * export default eco.page({
16
- * render: () => '<div>Hello</div>',
17
- * });
18
- *
19
- * // After transformation:
20
- * export default eco.page({
21
- * __eco: { id: "<hash>", file: "/path/to/pages/index.tsx", integration: "react" },
22
- * render: () => '<div>Hello</div>',
23
- * });
24
- * ```
25
- *
26
- * @module eco-component-meta-plugin
27
- */
28
- import type { EcoBuildPlugin } from '../build/build-types.js';
29
- import type { EcoPagesAppConfig } from '../types/internal-types.js';
30
- import { type EcoSourceTransform, type EcoViteCompatiblePlugin } from './source-transform.js';
31
- /**
32
- * Options for creating the eco-component-meta-plugin.
33
- */
34
- export interface EcoComponentDirPluginOptions {
35
- /** The EcoPages application configuration containing integration settings */
36
- config: EcoPagesAppConfig;
37
- }
38
- /**
39
- * Creates the bundler-neutral metadata transform used by Ecopages loaders and
40
- * Vite-compatible adapters.
41
- */
42
- export declare function createEcoComponentMetaTransform(options: EcoComponentDirPluginOptions): EcoSourceTransform;
43
- /**
44
- * Creates a build plugin that auto-injects `__eco` metadata into EcoComponent config objects.
45
- *
46
- * This plugin intercepts file loading for all integration-compatible files and:
47
- * 1. Strips any query string from the file path (for dev mode cache-busting)
48
- * 2. Reads the file contents
49
- * 3. Parses the AST using oxc-parser to find injection points
50
- * 4. Injects `__eco: { id: "...", file: "...", integration: "..." }` into config objects
51
- * 5. Returns the transformed content with the appropriate loader
52
- *
53
- * Supported patterns:
54
- * - `eco.page({ ... })` - Page component declarations
55
- * - `eco.component({ ... })` - Reusable component declarations
56
- * - `eco.html({ ... })` - HTML shell declarations
57
- * - `eco.layout({ ... })` - Layout declarations
58
- * - `Component.config = { ... }` - Config assignment pattern
59
- * - `config: { ... }` - Config property in object literals
60
- * - `export const config = { ... }` - Exported config declarations
61
- *
62
- * @param options - Plugin options containing the EcoPages config
63
- * @returns A build plugin instance ready for registration
64
- *
65
- * @example
66
- * ```typescript
67
- * import { createEcoComponentMetaPlugin } from '@ecopages/core';
68
- *
69
- * const plugin = createEcoComponentMetaPlugin({ config: appConfig });
70
- * appConfig.loaders.set(plugin.name, plugin);
71
- * ```
72
- */
73
- export declare function createEcoComponentMetaPlugin(options: EcoComponentDirPluginOptions): EcoBuildPlugin;
74
- /**
75
- * Creates a Vite-compatible metadata injection plugin from the shared
76
- * Ecopages source-transform primitive.
77
- */
78
- export declare function createEcoComponentMetaVitePlugin(options: EcoComponentDirPluginOptions): EcoViteCompatiblePlugin;
79
- /**
80
- * Injects `__eco` metadata into EcoComponent config objects in file content.
81
- *
82
- * Uses oxc-parser for robust AST-based code analysis, which handles edge cases
83
- * that regex-based approaches would miss (e.g., complex generics, nested objects,
84
- * comments, string literals containing similar patterns).
85
- *
86
- * The injection is performed by:
87
- * 1. Parsing the source code into an AST
88
- * 2. Walking the AST to find all config object patterns
89
- * 3. Collecting insertion points (sorted in reverse order to preserve positions)
90
- * 4. Inserting the `__eco` property at each point
91
- *
92
- * @param contents - The source code content to transform
93
- * @param filePath - Absolute path to the file (used to derive the directory)
94
- * @param integration - The integration identifier for this file type
95
- * @returns Transformed source code with `__eco` injected, or original if no patterns found
96
- *
97
- * @example
98
- * ```typescript
99
- * const result = injectEcoMeta(
100
- * 'export default eco.page({ render: () => "<div>Hi</div>" });',
101
- * '/app/src/pages/index.tsx',
102
- * 'react'
103
- * );
104
- * // Result: 'export default eco.page({ __eco: { id: "<hash>", file: "/app/src/pages/index.tsx", integration: "react" }, render: () => "<div>Hi</div>" });'
105
- * ```
106
- */
107
- export declare function injectEcoMeta(contents: string, filePath: string, integration: string): string;
108
- export default createEcoComponentMetaPlugin;