@ecopages/core 0.2.0-alpha.8 → 0.2.1-beta.0

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 (471) hide show
  1. package/README.md +79 -28
  2. package/package.json +94 -116
  3. package/src/adapters/README.md +2 -2
  4. package/src/adapters/abstract/application-adapter.d.ts +28 -2
  5. package/src/adapters/abstract/application-adapter.js +14 -2
  6. package/src/adapters/abstract/router-adapter.d.ts +1 -1
  7. package/src/adapters/abstract/server-adapter.d.ts +2 -2
  8. package/src/adapters/bun/client-bridge.d.ts +1 -1
  9. package/src/adapters/bun/create-app.d.ts +12 -12
  10. package/src/adapters/bun/create-app.js +64 -41
  11. package/src/adapters/bun/hmr-manager.d.ts +19 -115
  12. package/src/adapters/bun/hmr-manager.js +25 -301
  13. package/src/adapters/bun/index.d.ts +1 -1
  14. package/src/adapters/bun/index.js +2 -2
  15. package/src/adapters/bun/runtime-host.d.ts +52 -0
  16. package/src/adapters/bun/runtime-host.js +56 -0
  17. package/src/adapters/bun/server-adapter.d.ts +100 -32
  18. package/src/adapters/bun/server-adapter.js +142 -65
  19. package/src/adapters/bun/static-preview-host.d.ts +28 -0
  20. package/src/adapters/bun/static-preview-host.js +45 -0
  21. package/src/{create-app.d.ts → adapters/create-app.d.ts} +9 -6
  22. package/src/{create-app.js → adapters/create-app.js} +4 -4
  23. package/src/adapters/index.d.ts +1 -5
  24. package/src/adapters/index.js +1 -7
  25. package/src/adapters/node/create-app.d.ts +15 -12
  26. package/src/adapters/node/create-app.js +34 -85
  27. package/src/adapters/node/http-request-bridge.d.ts +57 -0
  28. package/src/adapters/node/http-request-bridge.js +118 -0
  29. package/src/adapters/node/node-client-bridge.d.ts +1 -1
  30. package/src/adapters/node/node-hmr-manager.d.ts +22 -103
  31. package/src/adapters/node/node-hmr-manager.js +26 -289
  32. package/src/adapters/node/runtime-host.d.ts +57 -0
  33. package/src/adapters/node/runtime-host.js +92 -0
  34. package/src/adapters/node/server-adapter-dependencies.d.ts +19 -0
  35. package/src/adapters/node/server-adapter-dependencies.js +18 -0
  36. package/src/adapters/node/server-adapter.d.ts +19 -42
  37. package/src/adapters/node/server-adapter.js +94 -139
  38. package/src/adapters/node/static-content-server.d.ts +1 -1
  39. package/src/adapters/node/static-content-server.js +1 -1
  40. package/src/adapters/node/static-preview-host.d.ts +55 -0
  41. package/src/adapters/node/static-preview-host.js +68 -0
  42. package/src/adapters/shared/application-adapter.d.ts +1 -1
  43. package/src/adapters/shared/define-api-handler.d.ts +1 -1
  44. package/src/adapters/shared/explicit-static-render-preparation.d.ts +25 -0
  45. package/src/adapters/shared/explicit-static-render-preparation.js +26 -0
  46. package/src/adapters/shared/explicit-static-route-matcher.d.ts +7 -4
  47. package/src/adapters/shared/explicit-static-route-matcher.js +14 -16
  48. package/src/adapters/shared/file-route-middleware-pipeline.d.ts +7 -10
  49. package/src/adapters/shared/file-route-middleware-pipeline.js +2 -11
  50. package/src/adapters/shared/fs-server-response-factory.d.ts +14 -10
  51. package/src/adapters/shared/fs-server-response-factory.js +11 -27
  52. package/src/adapters/shared/fs-server-response-matcher.d.ts +18 -18
  53. package/src/adapters/shared/fs-server-response-matcher.js +72 -46
  54. package/src/adapters/shared/hmr-entrypoint-registrar.js +1 -1
  55. package/src/adapters/shared/hmr-html-response.d.ts +1 -1
  56. package/src/adapters/shared/hmr-html-response.js +4 -3
  57. package/src/adapters/shared/render-context.d.ts +5 -3
  58. package/src/adapters/shared/render-context.js +24 -1
  59. package/src/adapters/shared/runtime-app-bootstrap.d.ts +26 -0
  60. package/src/adapters/shared/runtime-app-bootstrap.js +46 -0
  61. package/src/adapters/shared/runtime-host.d.ts +12 -0
  62. package/src/adapters/shared/server-adapter.d.ts +22 -11
  63. package/src/adapters/shared/server-adapter.js +183 -133
  64. package/src/adapters/shared/server-route-handler.d.ts +5 -5
  65. package/src/adapters/shared/server-route-handler.js +4 -4
  66. package/src/adapters/shared/server-static-builder.d.ts +8 -7
  67. package/src/adapters/shared/server-static-builder.js +6 -5
  68. package/src/adapters/shared/shared-hmr-manager.d.ts +59 -0
  69. package/src/adapters/shared/shared-hmr-manager.js +241 -0
  70. package/src/adapters/shared/static-preview-host.d.ts +10 -0
  71. package/src/build/README.md +57 -67
  72. package/src/build/browser-runtime-manifest.d.ts +31 -0
  73. package/src/build/browser-runtime-manifest.js +61 -0
  74. package/src/build/browser-runtime-plugin-helpers.d.ts +26 -0
  75. package/src/build/browser-runtime-plugin-helpers.js +14 -0
  76. package/src/build/browser-runtime-plugin.d.ts +78 -0
  77. package/src/build/browser-runtime-plugin.js +173 -0
  78. package/src/build/build-adapter.d.ts +384 -63
  79. package/src/build/build-adapter.js +129 -54
  80. package/src/build/build-manifest.d.ts +6 -0
  81. package/src/build/build-manifest.js +21 -2
  82. package/src/build/build-types.d.ts +2 -2
  83. package/src/build/rolldown-adapter-helpers.d.ts +58 -0
  84. package/src/build/rolldown-adapter-helpers.js +265 -0
  85. package/src/build/rolldown-build-adapter.d.ts +28 -0
  86. package/src/build/rolldown-build-adapter.js +65 -0
  87. package/src/build/rolldown-dev-build-adapter.d.ts +82 -0
  88. package/src/build/rolldown-dev-build-adapter.js +166 -0
  89. package/src/build/rolldown-plugin-bridge.d.ts +59 -0
  90. package/src/build/rolldown-plugin-bridge.js +199 -0
  91. package/src/build/runtime-build-executor.d.ts +15 -7
  92. package/src/build/runtime-build-executor.js +8 -9
  93. package/src/build/runtime-build-output-normalizer.d.ts +3 -0
  94. package/src/build/runtime-build-output-normalizer.js +111 -0
  95. package/src/build/serialized-build-executor.d.ts +64 -0
  96. package/src/build/serialized-build-executor.js +63 -0
  97. package/src/build/server-side-css-shim-plugin.d.ts +41 -0
  98. package/src/build/server-side-css-shim-plugin.js +35 -0
  99. package/src/cache/index.d.ts +6 -0
  100. package/src/cache/index.js +6 -0
  101. package/src/cache/module-parse-cache.d.ts +65 -0
  102. package/src/cache/module-parse-cache.js +75 -0
  103. package/src/config/README.md +5 -2
  104. package/src/config/config-builder.d.ts +41 -13
  105. package/src/config/config-builder.js +62 -24
  106. package/src/declarations.d.ts +1 -1
  107. package/src/dev/host-runtime.d.ts +10 -0
  108. package/src/dev/host-runtime.js +24 -0
  109. package/src/dev/sc-server.d.ts +1 -1
  110. package/src/dev/sc-server.js +1 -1
  111. package/src/eco/eco.browser.d.ts +2 -0
  112. package/src/eco/eco.browser.js +88 -0
  113. package/src/eco/eco.js +50 -45
  114. package/src/eco/eco.types.d.ts +60 -8
  115. package/src/eco/eco.utils.d.ts +1 -40
  116. package/src/eco/eco.utils.js +5 -35
  117. package/src/eco/global-injector-map.d.ts +3 -3
  118. package/src/eco/global-injector-map.js +2 -2
  119. package/src/eco/lazy-injector-map.d.ts +2 -2
  120. package/src/errors/index.d.ts +1 -0
  121. package/src/errors/index.js +3 -1
  122. package/src/hmr/client/hmr-runtime.js +9 -1
  123. package/src/hmr/hmr-strategy.d.ts +16 -13
  124. package/src/hmr/hmr-strategy.js +22 -7
  125. package/src/hmr/strategies/default-hmr-strategy.d.ts +2 -2
  126. package/src/hmr/strategies/default-hmr-strategy.js +1 -1
  127. package/src/hmr/strategies/js-hmr-strategy.d.ts +4 -9
  128. package/src/hmr/strategies/js-hmr-strategy.js +5 -10
  129. package/src/index.browser.d.ts +2 -2
  130. package/src/index.browser.js +1 -1
  131. package/src/index.d.ts +3 -2
  132. package/src/index.js +15 -4
  133. package/src/integrations/ghtml/ghtml-renderer.d.ts +2 -1
  134. package/src/integrations/ghtml/ghtml-renderer.js +24 -29
  135. package/src/integrations/ghtml/ghtml.constants.d.ts +1 -0
  136. package/src/integrations/ghtml/ghtml.constants.js +4 -0
  137. package/src/integrations/ghtml/ghtml.plugin.d.ts +2 -6
  138. package/src/integrations/ghtml/ghtml.plugin.js +3 -4
  139. package/src/plugins/README.md +1 -0
  140. package/src/plugins/alias-resolver-cache.d.ts +68 -0
  141. package/src/plugins/alias-resolver-cache.js +106 -0
  142. package/src/plugins/alias-resolver-plugin.d.ts +5 -1
  143. package/src/plugins/alias-resolver-plugin.js +19 -7
  144. package/src/plugins/eco-component-meta-plugin.d.ts +12 -1
  145. package/src/plugins/eco-component-meta-plugin.js +43 -25
  146. package/src/plugins/foreign-jsx-override-plugin.d.ts +33 -0
  147. package/src/plugins/foreign-jsx-override-plugin.js +41 -0
  148. package/src/plugins/integration-plugin.d.ts +136 -42
  149. package/src/plugins/integration-plugin.js +99 -31
  150. package/src/plugins/processor.d.ts +4 -2
  151. package/src/plugins/processor.js +8 -3
  152. package/src/plugins/source-transform.d.ts +46 -0
  153. package/src/plugins/source-transform.js +71 -0
  154. package/src/route-renderer/GRAPH.md +80 -318
  155. package/src/route-renderer/README.md +74 -78
  156. package/src/route-renderer/orchestration/component-render-context.d.ts +97 -0
  157. package/src/route-renderer/orchestration/component-render-context.js +147 -0
  158. package/src/route-renderer/orchestration/declared-ownership-graph.d.ts +18 -0
  159. package/src/route-renderer/orchestration/declared-ownership-graph.js +34 -0
  160. package/src/route-renderer/orchestration/foreign-subtree-execution.service.d.ts +110 -0
  161. package/src/route-renderer/orchestration/foreign-subtree-execution.service.js +233 -0
  162. package/src/route-renderer/orchestration/integration-renderer.d.ts +290 -128
  163. package/src/route-renderer/orchestration/integration-renderer.js +660 -258
  164. package/src/route-renderer/orchestration/ownership-planning.service.d.ts +24 -0
  165. package/src/route-renderer/orchestration/ownership-planning.service.js +63 -0
  166. package/src/route-renderer/orchestration/ownership-validation.service.d.ts +29 -0
  167. package/src/route-renderer/orchestration/ownership-validation.service.js +53 -0
  168. package/src/route-renderer/orchestration/processed-asset-dedupe.d.ts +3 -0
  169. package/src/route-renderer/orchestration/processed-asset-dedupe.js +27 -0
  170. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.d.ts +91 -0
  171. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.js +170 -0
  172. package/src/route-renderer/orchestration/render-output.utils.d.ts +66 -0
  173. package/src/route-renderer/orchestration/render-output.utils.js +171 -0
  174. package/src/route-renderer/orchestration/route-render-orchestrator.d.ts +156 -0
  175. package/src/route-renderer/orchestration/route-render-orchestrator.js +577 -0
  176. package/src/route-renderer/orchestration/template-serialization.d.ts +38 -0
  177. package/src/route-renderer/orchestration/template-serialization.js +45 -0
  178. package/src/route-renderer/page-loading/component-dependency-collection.d.ts +37 -0
  179. package/src/route-renderer/page-loading/component-dependency-collection.js +132 -0
  180. package/src/route-renderer/page-loading/declared-asset-collection.d.ts +24 -0
  181. package/src/route-renderer/page-loading/declared-asset-collection.js +106 -0
  182. package/src/route-renderer/page-loading/dependency-resolver.d.ts +2 -2
  183. package/src/route-renderer/page-loading/dependency-resolver.js +27 -354
  184. package/src/route-renderer/page-loading/ecopages-virtual-imports.d.ts +11 -0
  185. package/src/route-renderer/page-loading/ecopages-virtual-imports.js +57 -0
  186. package/src/route-renderer/page-loading/lazy-entry-collection.d.ts +45 -0
  187. package/src/route-renderer/page-loading/lazy-entry-collection.js +105 -0
  188. package/src/route-renderer/page-loading/lazy-trigger-planning.d.ts +19 -0
  189. package/src/route-renderer/page-loading/lazy-trigger-planning.js +40 -0
  190. package/src/route-renderer/page-loading/module-declaration-aggregation.d.ts +5 -0
  191. package/src/route-renderer/page-loading/module-declaration-aggregation.js +33 -0
  192. package/src/route-renderer/page-loading/module-declaration-scripts.d.ts +3 -0
  193. package/src/route-renderer/page-loading/module-declaration-scripts.js +18 -0
  194. package/src/route-renderer/page-loading/page-dependency-bundling.d.ts +13 -0
  195. package/src/route-renderer/page-loading/page-dependency-bundling.js +137 -0
  196. package/src/route-renderer/page-loading/page-module-loader.d.ts +7 -4
  197. package/src/route-renderer/page-loading/page-module-loader.js +8 -5
  198. package/src/route-renderer/route-renderer.d.ts +31 -23
  199. package/src/route-renderer/route-renderer.js +17 -24
  200. package/src/router/README.md +76 -8
  201. package/src/router/client/navigation-coordinator.d.ts +20 -0
  202. package/src/router/client/navigation-coordinator.js +2 -2
  203. package/src/router/server/route-registry.d.ts +78 -0
  204. package/src/router/server/route-registry.js +262 -0
  205. package/src/services/README.md +1 -2
  206. package/src/services/assets/asset-processing-service/asset-dependency-keys.d.ts +3 -0
  207. package/src/services/assets/asset-processing-service/asset-dependency-keys.js +56 -0
  208. package/src/services/assets/asset-processing-service/asset-processing.service.d.ts +3 -20
  209. package/src/services/assets/asset-processing-service/asset-processing.service.js +52 -98
  210. package/src/services/assets/asset-processing-service/asset.factory.d.ts +1 -1
  211. package/src/services/assets/asset-processing-service/asset.factory.js +2 -2
  212. package/src/services/assets/asset-processing-service/assets.types.d.ts +14 -0
  213. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.d.ts +2 -0
  214. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.js +1 -0
  215. package/src/services/assets/asset-processing-service/grouped-content-bundles.d.ts +30 -0
  216. package/src/services/assets/asset-processing-service/grouped-content-bundles.js +65 -0
  217. package/src/services/assets/asset-processing-service/index.d.ts +6 -5
  218. package/src/services/assets/asset-processing-service/index.js +6 -5
  219. package/src/services/assets/asset-processing-service/page-package.d.ts +6 -0
  220. package/src/services/assets/asset-processing-service/page-package.js +80 -0
  221. package/src/services/assets/asset-processing-service/processor.interface.d.ts +2 -2
  222. package/src/services/assets/asset-processing-service/processor.registry.d.ts +2 -2
  223. package/src/services/assets/asset-processing-service/processors/base/base-processor.d.ts +1 -1
  224. package/src/services/assets/asset-processing-service/processors/base/base-processor.js +3 -2
  225. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.d.ts +10 -5
  226. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.js +69 -5
  227. package/src/services/assets/asset-processing-service/processors/index.d.ts +5 -5
  228. package/src/services/assets/asset-processing-service/processors/index.js +5 -5
  229. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.d.ts +3 -2
  230. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.js +66 -3
  231. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.d.ts +4 -3
  232. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.js +27 -6
  233. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.d.ts +38 -3
  234. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.js +57 -6
  235. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.d.ts +5 -2
  236. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +39 -5
  237. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.d.ts +2 -2
  238. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.js +5 -2
  239. package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.d.ts +18 -0
  240. package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.js +45 -0
  241. package/src/services/assets/browser-bundle.service.d.ts +44 -3
  242. package/src/services/assets/browser-bundle.service.js +15 -7
  243. package/src/services/html/html-rewriter-provider.service.d.ts +3 -0
  244. package/src/services/html/html-rewriter-provider.service.js +4 -1
  245. package/src/services/html/html-transformer.service.d.ts +22 -3
  246. package/src/services/html/html-transformer.service.js +101 -35
  247. package/src/services/invalidation/development-invalidation.service.d.ts +1 -1
  248. package/src/services/invalidation/development-invalidation.service.js +1 -0
  249. package/src/services/module-loading/app-module-loader.service.d.ts +7 -0
  250. package/src/services/module-loading/app-module-loader.service.js +0 -0
  251. package/src/services/module-loading/app-server-module-transpiler.service.d.ts +9 -1
  252. package/src/services/module-loading/app-server-module-transpiler.service.js +102 -6
  253. package/src/services/module-loading/host-module-loader-registry.d.ts +4 -0
  254. package/src/services/module-loading/host-module-loader-registry.js +15 -0
  255. package/src/services/module-loading/module-loading-types.d.ts +2 -0
  256. package/src/services/module-loading/module-loading-types.js +0 -0
  257. package/src/services/module-loading/page-module-import.service.d.ts +32 -8
  258. package/src/services/module-loading/page-module-import.service.js +83 -22
  259. package/src/services/module-loading/server-module-transpiler.service.d.ts +8 -14
  260. package/src/services/module-loading/server-module-transpiler.service.js +5 -2
  261. package/src/services/module-loading/source-module-support.d.ts +5 -0
  262. package/src/services/module-loading/source-module-support.js +8 -0
  263. package/src/services/runtime-state/dev-graph.service.d.ts +6 -6
  264. package/src/services/runtime-state/dev-graph.service.js +10 -10
  265. package/src/services/runtime-state/entrypoint-dependency-graph.service.d.ts +1 -1
  266. package/src/services/runtime-state/server-invalidation-state.service.d.ts +1 -1
  267. package/src/static-site-generator/static-site-generator.d.ts +23 -28
  268. package/src/static-site-generator/static-site-generator.js +119 -156
  269. package/src/{internal-types.d.ts → types/internal-types.d.ts} +34 -23
  270. package/src/types/internal-types.js +0 -0
  271. package/src/{public-types.d.ts → types/public-types.d.ts} +195 -37
  272. package/src/types/public-types.js +0 -0
  273. package/src/utils/html-escaping.d.ts +7 -0
  274. package/src/utils/html-escaping.js +6 -0
  275. package/src/utils/locals-utils.d.ts +1 -1
  276. package/src/utils/parse-cli-args.d.ts +4 -1
  277. package/src/utils/parse-cli-args.js +16 -1
  278. package/src/utils/resolve-work-dir.js +1 -1
  279. package/src/watchers/project-watcher.d.ts +4 -4
  280. package/src/watchers/project-watcher.js +35 -41
  281. package/src/watchers/project-watcher.test-helpers.d.ts +2 -2
  282. package/src/watchers/project-watcher.test-helpers.js +5 -5
  283. package/CHANGELOG.md +0 -31
  284. package/src/adapters/abstract/application-adapter.ts +0 -337
  285. package/src/adapters/abstract/router-adapter.ts +0 -30
  286. package/src/adapters/abstract/server-adapter.ts +0 -79
  287. package/src/adapters/bun/client-bridge.ts +0 -62
  288. package/src/adapters/bun/create-app.ts +0 -189
  289. package/src/adapters/bun/hmr-manager.ts +0 -409
  290. package/src/adapters/bun/index.ts +0 -2
  291. package/src/adapters/bun/server-adapter.ts +0 -499
  292. package/src/adapters/bun/server-lifecycle.d.ts +0 -63
  293. package/src/adapters/bun/server-lifecycle.js +0 -92
  294. package/src/adapters/bun/server-lifecycle.ts +0 -124
  295. package/src/adapters/index.ts +0 -6
  296. package/src/adapters/node/bootstrap-dependency-resolver.d.ts +0 -44
  297. package/src/adapters/node/bootstrap-dependency-resolver.js +0 -172
  298. package/src/adapters/node/bootstrap-dependency-resolver.ts +0 -301
  299. package/src/adapters/node/create-app.ts +0 -179
  300. package/src/adapters/node/index.d.ts +0 -6
  301. package/src/adapters/node/index.js +0 -11
  302. package/src/adapters/node/index.ts +0 -16
  303. package/src/adapters/node/node-client-bridge.ts +0 -79
  304. package/src/adapters/node/node-hmr-manager.ts +0 -381
  305. package/src/adapters/node/runtime-adapter.d.ts +0 -46
  306. package/src/adapters/node/runtime-adapter.js +0 -306
  307. package/src/adapters/node/runtime-adapter.ts +0 -439
  308. package/src/adapters/node/server-adapter.ts +0 -488
  309. package/src/adapters/node/static-content-server.ts +0 -239
  310. package/src/adapters/node/write-runtime-manifest.d.ts +0 -26
  311. package/src/adapters/node/write-runtime-manifest.js +0 -12
  312. package/src/adapters/node/write-runtime-manifest.ts +0 -38
  313. package/src/adapters/shared/api-response.ts +0 -104
  314. package/src/adapters/shared/application-adapter.ts +0 -199
  315. package/src/adapters/shared/define-api-handler.ts +0 -66
  316. package/src/adapters/shared/explicit-static-route-matcher.ts +0 -140
  317. package/src/adapters/shared/file-route-middleware-pipeline.ts +0 -127
  318. package/src/adapters/shared/fs-server-response-factory.ts +0 -118
  319. package/src/adapters/shared/fs-server-response-matcher.ts +0 -205
  320. package/src/adapters/shared/hmr-entrypoint-registrar.ts +0 -149
  321. package/src/adapters/shared/hmr-html-response.ts +0 -52
  322. package/src/adapters/shared/render-context.ts +0 -120
  323. package/src/adapters/shared/runtime-bootstrap.d.ts +0 -38
  324. package/src/adapters/shared/runtime-bootstrap.js +0 -43
  325. package/src/adapters/shared/runtime-bootstrap.ts +0 -79
  326. package/src/adapters/shared/server-adapter.ts +0 -489
  327. package/src/adapters/shared/server-route-handler.ts +0 -153
  328. package/src/adapters/shared/server-static-builder.ts +0 -166
  329. package/src/build/build-adapter.ts +0 -361
  330. package/src/build/build-manifest.ts +0 -54
  331. package/src/build/build-types.ts +0 -83
  332. package/src/build/dev-build-coordinator.d.ts +0 -74
  333. package/src/build/dev-build-coordinator.js +0 -161
  334. package/src/build/dev-build-coordinator.ts +0 -221
  335. package/src/build/esbuild-build-adapter.d.ts +0 -72
  336. package/src/build/esbuild-build-adapter.js +0 -422
  337. package/src/build/esbuild-build-adapter.ts +0 -559
  338. package/src/build/runtime-build-executor.ts +0 -34
  339. package/src/build/runtime-specifier-alias-plugin.d.ts +0 -15
  340. package/src/build/runtime-specifier-alias-plugin.js +0 -31
  341. package/src/build/runtime-specifier-alias-plugin.ts +0 -58
  342. package/src/config/config-builder.ts +0 -706
  343. package/src/constants.ts +0 -54
  344. package/src/create-app.ts +0 -87
  345. package/src/dev/sc-server.ts +0 -143
  346. package/src/eco/component-render-context.d.ts +0 -105
  347. package/src/eco/component-render-context.js +0 -87
  348. package/src/eco/component-render-context.ts +0 -224
  349. package/src/eco/eco.ts +0 -242
  350. package/src/eco/eco.types.ts +0 -221
  351. package/src/eco/eco.utils.ts +0 -89
  352. package/src/eco/global-injector-map.ts +0 -112
  353. package/src/eco/lazy-injector-map.ts +0 -120
  354. package/src/eco/module-dependencies.ts +0 -75
  355. package/src/errors/http-error.ts +0 -72
  356. package/src/errors/index.ts +0 -2
  357. package/src/errors/locals-access-error.ts +0 -7
  358. package/src/global/app-logger.ts +0 -4
  359. package/src/hmr/client/hmr-runtime.ts +0 -152
  360. package/src/hmr/hmr-strategy.ts +0 -172
  361. package/src/hmr/hmr.postcss.test.e2e.ts +0 -41
  362. package/src/hmr/hmr.test.e2e.ts +0 -66
  363. package/src/hmr/strategies/default-hmr-strategy.ts +0 -60
  364. package/src/hmr/strategies/js-hmr-strategy.ts +0 -320
  365. package/src/index.browser.ts +0 -3
  366. package/src/index.ts +0 -5
  367. package/src/integrations/ghtml/ghtml-renderer.ts +0 -96
  368. package/src/integrations/ghtml/ghtml.plugin.ts +0 -32
  369. package/src/internal-types.ts +0 -232
  370. package/src/plugins/alias-resolver-plugin.ts +0 -63
  371. package/src/plugins/eco-component-meta-plugin.ts +0 -481
  372. package/src/plugins/integration-plugin.ts +0 -226
  373. package/src/plugins/processor.ts +0 -240
  374. package/src/plugins/runtime-capability.ts +0 -14
  375. package/src/public-types.ts +0 -1317
  376. package/src/route-renderer/component-graph/component-graph-executor.d.ts +0 -32
  377. package/src/route-renderer/component-graph/component-graph-executor.js +0 -31
  378. package/src/route-renderer/component-graph/component-graph-executor.ts +0 -84
  379. package/src/route-renderer/component-graph/component-graph.d.ts +0 -42
  380. package/src/route-renderer/component-graph/component-graph.js +0 -72
  381. package/src/route-renderer/component-graph/component-graph.ts +0 -159
  382. package/src/route-renderer/component-graph/component-marker.d.ts +0 -52
  383. package/src/route-renderer/component-graph/component-marker.js +0 -46
  384. package/src/route-renderer/component-graph/component-marker.ts +0 -117
  385. package/src/route-renderer/component-graph/component-reference.d.ts +0 -10
  386. package/src/route-renderer/component-graph/component-reference.js +0 -19
  387. package/src/route-renderer/component-graph/component-reference.ts +0 -29
  388. package/src/route-renderer/component-graph/marker-graph-resolver.d.ts +0 -77
  389. package/src/route-renderer/component-graph/marker-graph-resolver.js +0 -95
  390. package/src/route-renderer/component-graph/marker-graph-resolver.ts +0 -155
  391. package/src/route-renderer/orchestration/integration-renderer.ts +0 -790
  392. package/src/route-renderer/orchestration/render-execution.service.d.ts +0 -103
  393. package/src/route-renderer/orchestration/render-execution.service.js +0 -121
  394. package/src/route-renderer/orchestration/render-execution.service.ts +0 -230
  395. package/src/route-renderer/orchestration/render-preparation.service.d.ts +0 -121
  396. package/src/route-renderer/orchestration/render-preparation.service.js +0 -332
  397. package/src/route-renderer/orchestration/render-preparation.service.ts +0 -476
  398. package/src/route-renderer/page-loading/dependency-resolver.ts +0 -612
  399. package/src/route-renderer/page-loading/page-module-loader.ts +0 -181
  400. package/src/route-renderer/route-renderer.ts +0 -115
  401. package/src/router/client/link-intent.test.browser.ts +0 -51
  402. package/src/router/client/link-intent.ts +0 -92
  403. package/src/router/client/navigation-coordinator.ts +0 -433
  404. package/src/router/server/fs-router-scanner.d.ts +0 -41
  405. package/src/router/server/fs-router-scanner.js +0 -156
  406. package/src/router/server/fs-router-scanner.ts +0 -219
  407. package/src/router/server/fs-router.d.ts +0 -26
  408. package/src/router/server/fs-router.js +0 -100
  409. package/src/router/server/fs-router.ts +0 -122
  410. package/src/services/assets/asset-processing-service/asset-processing.service.ts +0 -401
  411. package/src/services/assets/asset-processing-service/asset.factory.ts +0 -105
  412. package/src/services/assets/asset-processing-service/assets.types.ts +0 -113
  413. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.ts +0 -95
  414. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.ts +0 -78
  415. package/src/services/assets/asset-processing-service/index.ts +0 -5
  416. package/src/services/assets/asset-processing-service/processor.interface.ts +0 -27
  417. package/src/services/assets/asset-processing-service/processor.registry.ts +0 -18
  418. package/src/services/assets/asset-processing-service/processors/base/base-processor.ts +0 -82
  419. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.ts +0 -95
  420. package/src/services/assets/asset-processing-service/processors/index.ts +0 -5
  421. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.ts +0 -66
  422. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.ts +0 -88
  423. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.ts +0 -85
  424. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.ts +0 -27
  425. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.ts +0 -80
  426. package/src/services/assets/browser-bundle.service.ts +0 -53
  427. package/src/services/cache/cache.types.ts +0 -126
  428. package/src/services/cache/index.ts +0 -18
  429. package/src/services/cache/memory-cache-store.ts +0 -130
  430. package/src/services/cache/page-cache-service.ts +0 -202
  431. package/src/services/cache/page-request-cache-coordinator.service.ts +0 -131
  432. package/src/services/html/html-rewriter-provider.service.ts +0 -103
  433. package/src/services/html/html-transformer.service.ts +0 -279
  434. package/src/services/invalidation/development-invalidation.service.ts +0 -261
  435. package/src/services/module-loading/app-server-module-transpiler.service.ts +0 -52
  436. package/src/services/module-loading/page-module-import.service.ts +0 -200
  437. package/src/services/module-loading/server-loader.service.d.ts +0 -96
  438. package/src/services/module-loading/server-loader.service.js +0 -32
  439. package/src/services/module-loading/server-loader.service.ts +0 -130
  440. package/src/services/module-loading/server-module-transpiler.service.ts +0 -105
  441. package/src/services/runtime-manifest/node-runtime-manifest.service.d.ts +0 -35
  442. package/src/services/runtime-manifest/node-runtime-manifest.service.js +0 -60
  443. package/src/services/runtime-manifest/node-runtime-manifest.service.ts +0 -101
  444. package/src/services/runtime-state/dev-graph.service.ts +0 -217
  445. package/src/services/runtime-state/entrypoint-dependency-graph.service.ts +0 -136
  446. package/src/services/runtime-state/runtime-specifier-registry.service.d.ts +0 -69
  447. package/src/services/runtime-state/runtime-specifier-registry.service.js +0 -37
  448. package/src/services/runtime-state/runtime-specifier-registry.service.ts +0 -96
  449. package/src/services/runtime-state/server-invalidation-state.service.ts +0 -68
  450. package/src/services/validation/schema-validation-service.ts +0 -204
  451. package/src/services/validation/standard-schema.types.ts +0 -68
  452. package/src/static-site-generator/static-site-generator.ts +0 -462
  453. package/src/utils/css.d.ts +0 -1
  454. package/src/utils/css.js +0 -7
  455. package/src/utils/css.ts +0 -5
  456. package/src/utils/deep-merge.ts +0 -47
  457. package/src/utils/hash.ts +0 -5
  458. package/src/utils/html.ts +0 -1
  459. package/src/utils/invariant.ts +0 -15
  460. package/src/utils/locals-utils.ts +0 -37
  461. package/src/utils/parse-cli-args.ts +0 -83
  462. package/src/utils/path-utils.module.ts +0 -14
  463. package/src/utils/resolve-work-dir.ts +0 -45
  464. package/src/utils/runtime.ts +0 -44
  465. package/src/utils/server-utils.module.ts +0 -67
  466. package/src/watchers/project-watcher.test-helpers.ts +0 -41
  467. package/src/watchers/project-watcher.ts +0 -363
  468. /package/src/{internal-types.js → adapters/shared/runtime-host.js} +0 -0
  469. /package/src/{public-types.js → adapters/shared/static-preview-host.js} +0 -0
  470. /package/src/{constants.d.ts → config/constants.d.ts} +0 -0
  471. /package/src/{constants.js → config/constants.js} +0 -0
@@ -0,0 +1,132 @@
1
+ import path from "node:path";
2
+ import { AssetFactory } from "../../services/assets/asset-processing-service/index.js";
3
+ import { extractEcopagesVirtualImports } from "./ecopages-virtual-imports.js";
4
+ import { collectDeclaredAssetEntries } from "./declared-asset-collection.js";
5
+ import { getLazyTriggerKey } from "./lazy-trigger-planning.js";
6
+ import { collectLazyScriptEntries } from "./lazy-entry-collection.js";
7
+ import {
8
+ createModuleScriptName,
9
+ createNamedImportModuleSource,
10
+ createNamespaceImportModuleSource
11
+ } from "./module-declaration-scripts.js";
12
+ import { collectModuleDeclarations } from "./module-declaration-aggregation.js";
13
+ const MODULE_SCRIPT_ATTRIBUTES = {
14
+ type: "module",
15
+ defer: ""
16
+ };
17
+ function createModuleScriptAttributes(attributes) {
18
+ return {
19
+ ...MODULE_SCRIPT_ATTRIBUTES,
20
+ ...attributes
21
+ };
22
+ }
23
+ function pushUniqueDependency(keys, key, dependencies, dependency) {
24
+ if (keys.has(key)) {
25
+ return false;
26
+ }
27
+ keys.add(key);
28
+ dependencies.push(dependency);
29
+ return true;
30
+ }
31
+ function resolveDependencyPath(componentDir, pathUrl) {
32
+ return path.join(componentDir, pathUrl);
33
+ }
34
+ function collectComponentDependencies(options) {
35
+ const {
36
+ components,
37
+ integrationName,
38
+ resolveLazyScripts,
39
+ createEcopagesJsxLazyEntryName,
40
+ isEcopagesJsxIntegration,
41
+ errors
42
+ } = options;
43
+ const dependencies = [];
44
+ const lazyScriptsByConfig = /* @__PURE__ */ new Map();
45
+ const lazyDependencyKeys = /* @__PURE__ */ new Set();
46
+ for (const component of components) {
47
+ if (!component) continue;
48
+ const componentFile = component.config?.__eco?.file;
49
+ if (!componentFile) continue;
50
+ const stylesheetDependencyKeys = /* @__PURE__ */ new Set();
51
+ const scriptDependencyKeys = /* @__PURE__ */ new Set();
52
+ const modulesMap = /* @__PURE__ */ new Map();
53
+ const collect = (config) => {
54
+ if (!config) return;
55
+ const file = config.__eco?.file;
56
+ if (!file) return;
57
+ const dir = path.dirname(file);
58
+ const dependenciesConfig = config.dependencies;
59
+ const registerLazyScript = ({
60
+ lazy,
61
+ lazyKey,
62
+ fallbackUrl
63
+ }) => {
64
+ let grouped = lazyScriptsByConfig.get(config);
65
+ if (!grouped) {
66
+ grouped = /* @__PURE__ */ new Map();
67
+ lazyScriptsByConfig.set(config, grouped);
68
+ }
69
+ const triggerKey = getLazyTriggerKey(lazy);
70
+ const existing = grouped.get(triggerKey) ?? { lazy, scripts: [] };
71
+ existing.scripts.push({ lazyKey, fallbackUrl });
72
+ grouped.set(triggerKey, existing);
73
+ };
74
+ collectDeclaredAssetEntries({
75
+ stylesheetEntries: dependenciesConfig?.stylesheets ?? [],
76
+ scriptEntries: dependenciesConfig?.scripts ?? [],
77
+ componentDir: dir,
78
+ dependencies,
79
+ stylesheetDependencyKeys,
80
+ scriptDependencyKeys,
81
+ resolveDependencyPath,
82
+ createModuleScriptAttributes,
83
+ pushUniqueDependency,
84
+ getInvalidStylesheetEntryMessage: () => errors.invalidStylesheetEntry,
85
+ getInvalidScriptEntryMessage: () => errors.invalidScriptEntry
86
+ });
87
+ collectModuleDeclarations(modulesMap, dependenciesConfig?.modules, extractEcopagesVirtualImports(file));
88
+ collectLazyScriptEntries({
89
+ scriptEntries: dependenciesConfig?.scripts ?? [],
90
+ componentFile: file,
91
+ componentDir: dir,
92
+ integrationName,
93
+ dependencies,
94
+ lazyDependencyKeys,
95
+ registerLazyScript,
96
+ resolveDependencyPath,
97
+ resolveLazyScripts,
98
+ createModuleScriptAttributes,
99
+ createEcopagesJsxLazyEntryName,
100
+ pushUniqueDependency,
101
+ getLazyScriptMissingSrcMessage: () => errors.lazyScriptMissingSrc,
102
+ isEcopagesJsxIntegration
103
+ });
104
+ if (dependenciesConfig?.components) {
105
+ for (const nestedComponent of dependenciesConfig.components) {
106
+ if (nestedComponent?.config) {
107
+ collect(nestedComponent.config);
108
+ }
109
+ }
110
+ }
111
+ };
112
+ collect(component.config);
113
+ dependencies.push(
114
+ ...Array.from(modulesMap.entries()).map(([from, importsSet]) => {
115
+ const imports = importsSet ? Array.from(importsSet) : void 0;
116
+ return AssetFactory.createContentScript({
117
+ position: "head",
118
+ name: createModuleScriptName(from, imports),
119
+ content: imports && imports.length > 0 ? createNamedImportModuleSource(from, imports) : createNamespaceImportModuleSource(from),
120
+ attributes: createModuleScriptAttributes()
121
+ });
122
+ })
123
+ );
124
+ }
125
+ return {
126
+ dependencies,
127
+ lazyScriptsByConfig
128
+ };
129
+ }
130
+ export {
131
+ collectComponentDependencies
132
+ };
@@ -0,0 +1,24 @@
1
+ import type { EcoComponentScriptEntry, EcoComponentStylesheetEntry } from '../../types/public-types.js';
2
+ import type { AssetDefinition } from '../../services/assets/asset-processing-service/index.js';
3
+ type CollectDeclaredAssetEntriesOptions = {
4
+ stylesheetEntries: Array<string | EcoComponentStylesheetEntry>;
5
+ scriptEntries: Array<string | EcoComponentScriptEntry>;
6
+ componentDir: string;
7
+ dependencies: AssetDefinition[];
8
+ stylesheetDependencyKeys: Set<string>;
9
+ scriptDependencyKeys: Set<string>;
10
+ resolveDependencyPath: (componentDir: string, pathUrl: string) => string;
11
+ createModuleScriptAttributes: (attributes?: Record<string, string>) => Record<string, string>;
12
+ pushUniqueDependency: (keys: Set<string>, key: string, dependencies: AssetDefinition[], dependency: AssetDefinition) => boolean;
13
+ getInvalidStylesheetEntryMessage: () => string;
14
+ getInvalidScriptEntryMessage: () => string;
15
+ };
16
+ /**
17
+ * Normalizes non-lazy stylesheet and script declarations into asset definitions.
18
+ *
19
+ * Duplicate declarations are filtered through the provided key sets so callers can
20
+ * compose this helper into larger recursive collection passes without re-emitting
21
+ * the same asset multiple times.
22
+ */
23
+ export declare function collectDeclaredAssetEntries(options: CollectDeclaredAssetEntriesOptions): void;
24
+ export {};
@@ -0,0 +1,106 @@
1
+ import { AssetFactory } from "../../services/assets/asset-processing-service/index.js";
2
+ function isDependencyEntryObject(entry) {
3
+ return typeof entry === "object" && entry !== null;
4
+ }
5
+ function getDependencyEntrySrc(entry) {
6
+ return isDependencyEntryObject(entry) ? entry.src : entry;
7
+ }
8
+ function getDependencyEntryContent(entry) {
9
+ return isDependencyEntryObject(entry) ? entry.content : void 0;
10
+ }
11
+ function getDependencyEntryAttributes(entry) {
12
+ return isDependencyEntryObject(entry) ? entry.attributes : void 0;
13
+ }
14
+ function collectDeclaredAssetEntries(options) {
15
+ const {
16
+ stylesheetEntries,
17
+ scriptEntries,
18
+ componentDir,
19
+ dependencies,
20
+ stylesheetDependencyKeys,
21
+ scriptDependencyKeys,
22
+ resolveDependencyPath,
23
+ createModuleScriptAttributes,
24
+ pushUniqueDependency,
25
+ getInvalidStylesheetEntryMessage,
26
+ getInvalidScriptEntryMessage
27
+ } = options;
28
+ for (const style of stylesheetEntries) {
29
+ const content = getDependencyEntryContent(style);
30
+ const src = getDependencyEntrySrc(style);
31
+ const attributes = getDependencyEntryAttributes(style);
32
+ if (content) {
33
+ const depKey2 = `style:content:${content}:${JSON.stringify(attributes ?? {})}`;
34
+ pushUniqueDependency(
35
+ stylesheetDependencyKeys,
36
+ depKey2,
37
+ dependencies,
38
+ AssetFactory.createContentStylesheet({
39
+ content,
40
+ position: "head",
41
+ attributes
42
+ })
43
+ );
44
+ continue;
45
+ }
46
+ if (!src) {
47
+ throw new Error(getInvalidStylesheetEntryMessage());
48
+ }
49
+ const resolvedPath = resolveDependencyPath(componentDir, src);
50
+ const depKey = `style:file:${resolvedPath}:${JSON.stringify(attributes ?? {})}`;
51
+ pushUniqueDependency(
52
+ stylesheetDependencyKeys,
53
+ depKey,
54
+ dependencies,
55
+ AssetFactory.createFileStylesheet({
56
+ filepath: resolvedPath,
57
+ position: "head",
58
+ attributes: {
59
+ rel: "stylesheet",
60
+ ...attributes
61
+ }
62
+ })
63
+ );
64
+ }
65
+ for (const script of scriptEntries) {
66
+ if (isDependencyEntryObject(script) && "lazy" in script && script.lazy) {
67
+ continue;
68
+ }
69
+ const content = getDependencyEntryContent(script);
70
+ const src = getDependencyEntrySrc(script);
71
+ const attributes = getDependencyEntryAttributes(script);
72
+ if (content) {
73
+ const depKey2 = `script:content:${content}:${JSON.stringify(attributes ?? {})}`;
74
+ pushUniqueDependency(
75
+ scriptDependencyKeys,
76
+ depKey2,
77
+ dependencies,
78
+ AssetFactory.createInlineContentScript({
79
+ position: "head",
80
+ content,
81
+ bundle: false,
82
+ attributes
83
+ })
84
+ );
85
+ continue;
86
+ }
87
+ if (!src) {
88
+ throw new Error(getInvalidScriptEntryMessage());
89
+ }
90
+ const resolvedPath = resolveDependencyPath(componentDir, src);
91
+ const depKey = `script:file:${resolvedPath}:${JSON.stringify(attributes ?? {})}`;
92
+ pushUniqueDependency(
93
+ scriptDependencyKeys,
94
+ depKey,
95
+ dependencies,
96
+ AssetFactory.createFileScript({
97
+ filepath: resolvedPath,
98
+ position: "head",
99
+ attributes: createModuleScriptAttributes(attributes)
100
+ })
101
+ );
102
+ }
103
+ }
104
+ export {
105
+ collectDeclaredAssetEntries
106
+ };
@@ -1,5 +1,5 @@
1
- import type { EcoComponent } from '../../public-types.js';
2
- import type { EcoPagesAppConfig } from '../../internal-types.js';
1
+ import type { EcoComponent } from '../../types/public-types.js';
2
+ import type { EcoPagesAppConfig } from '../../types/internal-types.js';
3
3
  import type { AssetProcessingService, ProcessedAsset } from '../../services/assets/asset-processing-service/index.js';
4
4
  export declare const DEPENDENCY_ERRORS: {
5
5
  readonly INVALID_STYLESHEET_ENTRY: "Invalid stylesheet dependency entry: expected src or content";
@@ -1,108 +1,14 @@
1
1
  import path from "node:path";
2
- import { readFileSync } from "node:fs";
3
2
  import { rapidhash } from "../../utils/hash.js";
4
3
  import { AssetFactory } from "../../services/assets/asset-processing-service/index.js";
5
- import { normalizeModuleDeclarations } from "../../eco/module-dependencies.js";
6
- import { parseSync } from "oxc-parser";
4
+ import { buildResolvedLazyTriggers } from "./lazy-trigger-planning.js";
5
+ import { collectComponentDependencies } from "./component-dependency-collection.js";
6
+ import { packagePageDependencies } from "./page-dependency-bundling.js";
7
7
  const DEPENDENCY_ERRORS = {
8
8
  INVALID_STYLESHEET_ENTRY: "Invalid stylesheet dependency entry: expected src or content",
9
9
  INVALID_SCRIPT_ENTRY: "Invalid script dependency entry: expected src or content",
10
10
  LAZY_SCRIPT_MISSING_SRC: "Lazy script dependency entry in dependencies.scripts requires a src value"
11
11
  };
12
- function extractEcopagesVirtualImports(file) {
13
- let source;
14
- try {
15
- source = readFileSync(file, "utf-8");
16
- } catch {
17
- return [];
18
- }
19
- let result;
20
- try {
21
- result = parseSync(file, source, { sourceType: "module" });
22
- } catch {
23
- return [];
24
- }
25
- const found = /* @__PURE__ */ new Map();
26
- for (const node of result.program.body ?? []) {
27
- if (node.type !== "ImportDeclaration") continue;
28
- if (node.importKind === "type") continue;
29
- const specifier = node.source?.value ?? "";
30
- if (!specifier.startsWith("ecopages:")) continue;
31
- if (found.get(specifier) === null) {
32
- continue;
33
- }
34
- const namedImports = [];
35
- for (const spec of node.specifiers ?? []) {
36
- if (spec.type === "ImportSpecifier") {
37
- const importedName = spec.imported?.type === "Identifier" ? spec.imported.name : spec.imported?.type === "Literal" ? spec.imported.value : spec.local?.name;
38
- namedImports.push(importedName);
39
- }
40
- }
41
- if (namedImports.length === 0) {
42
- found.set(specifier, null);
43
- continue;
44
- }
45
- const existing = found.get(specifier);
46
- if (!existing) {
47
- found.set(specifier, new Set(namedImports));
48
- continue;
49
- }
50
- for (const imported of namedImports) {
51
- existing.add(imported);
52
- }
53
- }
54
- return Array.from(found.entries()).map(([from, importsSet]) => ({
55
- from,
56
- imports: importsSet ? Array.from(importsSet) : void 0
57
- }));
58
- }
59
- function createModuleScriptName(from, imports) {
60
- const normalizedImports = imports ? [...imports].sort().join(",") : "*";
61
- const hash = rapidhash(`${from}|${normalizedImports}`).toString(16);
62
- return `module-${hash}`;
63
- }
64
- function createNamedImportModuleSource(from, imports) {
65
- const namedImports = imports.join(", ");
66
- return `export { ${namedImports} } from '${from}';`;
67
- }
68
- function createNamespaceImportModuleSource(from) {
69
- return `export * from '${from}';`;
70
- }
71
- function resolveDependencyPath(componentDir, pathUrl) {
72
- return path.join(componentDir, pathUrl);
73
- }
74
- function isDependencyEntryObject(entry) {
75
- return typeof entry === "object" && entry !== null;
76
- }
77
- function getDependencyEntrySrc(entry) {
78
- return isDependencyEntryObject(entry) ? entry.src : entry;
79
- }
80
- function getDependencyEntryContent(entry) {
81
- return isDependencyEntryObject(entry) ? entry.content : void 0;
82
- }
83
- function getDependencyEntryAttributes(entry) {
84
- return isDependencyEntryObject(entry) ? entry.attributes : void 0;
85
- }
86
- function getDependencyEntrySrcOrThrow(entry, errorMessage) {
87
- const src = getDependencyEntrySrc(entry);
88
- if (!src) {
89
- throw new Error(errorMessage);
90
- }
91
- return src;
92
- }
93
- function getLazyTriggerKey(lazy) {
94
- if ("on:idle" in lazy) {
95
- return "on:idle";
96
- }
97
- if ("on:interaction" in lazy) {
98
- return `on:interaction:${lazy["on:interaction"]}`;
99
- }
100
- if ("on:visible" in lazy) {
101
- const value = lazy["on:visible"];
102
- return `on:visible:${value === true ? "true" : value}`;
103
- }
104
- return JSON.stringify(lazy);
105
- }
106
12
  function resolveLazyScripts(appConfig, componentDir, scripts) {
107
13
  const getSafeFileName = (filepath) => {
108
14
  const EXTENSIONS_TO_JS = ["ts", "tsx"];
@@ -116,27 +22,12 @@ function resolveLazyScripts(appConfig, componentDir, scripts) {
116
22
  });
117
23
  return resolvedPaths.join(",");
118
24
  }
119
- function buildResolvedLazyTriggers(config, groups) {
120
- if (groups.length === 0) return [];
121
- const componentFile = config.__eco?.file ?? "";
122
- const sortedUrls = groups.flatMap((group) => group.scripts).sort().join(",");
123
- const triggerId = `eco-trigger-${rapidhash(`${componentFile}:${sortedUrls}`).toString(16)}`;
124
- const rules = groups.map((group) => {
125
- const { scripts, lazy } = group;
126
- if ("on:idle" in lazy) {
127
- return { "on:idle": { scripts } };
128
- }
129
- if ("on:interaction" in lazy) {
130
- return { "on:interaction": { value: lazy["on:interaction"], scripts } };
131
- }
132
- if ("on:visible" in lazy) {
133
- const visibleSelector = lazy["on:visible"];
134
- if (visibleSelector === true) return { "on:visible": { scripts } };
135
- return { "on:visible": { value: String(visibleSelector), scripts } };
136
- }
137
- throw new Error(`Unknown lazy trigger kind: ${JSON.stringify(lazy)}`);
138
- });
139
- return [{ triggerId, rules }];
25
+ const ECOPAGES_JSX_INTEGRATION_NAME = "ecopages-jsx";
26
+ function isEcopagesJsxIntegration(integrationName) {
27
+ return integrationName === ECOPAGES_JSX_INTEGRATION_NAME;
28
+ }
29
+ function createEcopagesJsxLazyEntryName(integrationName, key) {
30
+ return `ecopages-${integrationName}-lazy-${rapidhash(key).toString(16)}`;
140
31
  }
141
32
  class DependencyResolverService {
142
33
  appConfig;
@@ -157,7 +48,7 @@ class DependencyResolverService {
157
48
  * Resolves one dependency path relative to the component that declared it.
158
49
  */
159
50
  resolveDependencyPath(componentDir, pathUrl) {
160
- return resolveDependencyPath(componentDir, pathUrl);
51
+ return path.join(componentDir, pathUrl);
161
52
  }
162
53
  /**
163
54
  * Maps lazy script source entries to deterministic fallback public URLs
@@ -172,242 +63,24 @@ class DependencyResolverService {
172
63
  */
173
64
  async processComponentDependencies(components, integrationName) {
174
65
  if (!this.assetProcessingService?.processDependencies) return [];
175
- const dependencies = [];
176
- const lazyScriptsByConfig = /* @__PURE__ */ new Map();
177
- const lazyDependencyKeys = /* @__PURE__ */ new Set();
178
- for (const component of components) {
179
- if (!component) continue;
180
- const componentFile = component.config?.__eco?.file;
181
- if (!componentFile) continue;
182
- const stylesheetDependencyKeys = /* @__PURE__ */ new Set();
183
- const scriptDependencyKeys = /* @__PURE__ */ new Set();
184
- const modulesMap = /* @__PURE__ */ new Map();
185
- const collect = (config) => {
186
- if (!config) return;
187
- const file = config.__eco?.file;
188
- if (!file) return;
189
- const dir = path.dirname(file);
190
- const dependenciesConfig = config.dependencies;
191
- const registerLazyScript = ({
192
- lazy,
193
- lazyKey,
194
- fallbackUrl
195
- }) => {
196
- let grouped = lazyScriptsByConfig.get(config);
197
- if (!grouped) {
198
- grouped = /* @__PURE__ */ new Map();
199
- lazyScriptsByConfig.set(config, grouped);
200
- }
201
- const triggerKey = getLazyTriggerKey(lazy);
202
- const existing = grouped.get(triggerKey) ?? { lazy, scripts: [] };
203
- existing.scripts.push({ lazyKey, fallbackUrl });
204
- grouped.set(triggerKey, existing);
205
- };
206
- if (dependenciesConfig?.stylesheets) {
207
- for (const style of dependenciesConfig.stylesheets) {
208
- const content = getDependencyEntryContent(style);
209
- const src = getDependencyEntrySrc(style);
210
- const attributes = getDependencyEntryAttributes(style);
211
- if (content) {
212
- const depKey2 = `style:content:${content}:${JSON.stringify(attributes ?? {})}`;
213
- if (stylesheetDependencyKeys.has(depKey2)) {
214
- continue;
215
- }
216
- stylesheetDependencyKeys.add(depKey2);
217
- dependencies.push(
218
- AssetFactory.createContentStylesheet({
219
- content,
220
- position: "head",
221
- attributes
222
- })
223
- );
224
- continue;
225
- }
226
- if (!src) {
227
- throw new Error(DEPENDENCY_ERRORS.INVALID_STYLESHEET_ENTRY);
228
- }
229
- const resolvedPath = resolveDependencyPath(dir, src);
230
- const depKey = `style:file:${resolvedPath}:${JSON.stringify(attributes ?? {})}`;
231
- if (stylesheetDependencyKeys.has(depKey)) {
232
- continue;
233
- }
234
- stylesheetDependencyKeys.add(depKey);
235
- dependencies.push(
236
- AssetFactory.createFileStylesheet({
237
- filepath: resolvedPath,
238
- position: "head",
239
- attributes: {
240
- rel: "stylesheet",
241
- ...attributes
242
- }
243
- })
244
- );
245
- }
246
- }
247
- if (dependenciesConfig?.scripts) {
248
- for (const script of dependenciesConfig.scripts) {
249
- if (isDependencyEntryObject(script) && script.lazy) {
250
- continue;
251
- }
252
- const content = getDependencyEntryContent(script);
253
- const src = getDependencyEntrySrc(script);
254
- const attributes = getDependencyEntryAttributes(script);
255
- if (content) {
256
- const depKey2 = `script:content:${content}:${JSON.stringify(attributes ?? {})}`;
257
- if (scriptDependencyKeys.has(depKey2)) {
258
- continue;
259
- }
260
- scriptDependencyKeys.add(depKey2);
261
- dependencies.push(
262
- AssetFactory.createContentScript({
263
- position: "head",
264
- content,
265
- attributes: {
266
- type: "module",
267
- defer: "",
268
- ...attributes
269
- }
270
- })
271
- );
272
- continue;
273
- }
274
- if (!src) {
275
- throw new Error(DEPENDENCY_ERRORS.INVALID_SCRIPT_ENTRY);
276
- }
277
- const resolvedPath = resolveDependencyPath(dir, src);
278
- const depKey = `script:file:${resolvedPath}:${JSON.stringify(attributes ?? {})}`;
279
- if (scriptDependencyKeys.has(depKey)) {
280
- continue;
281
- }
282
- scriptDependencyKeys.add(depKey);
283
- dependencies.push(
284
- AssetFactory.createFileScript({
285
- filepath: resolvedPath,
286
- position: "head",
287
- attributes: {
288
- type: "module",
289
- defer: "",
290
- ...attributes
291
- }
292
- })
293
- );
294
- }
295
- }
296
- const normalizedModules = normalizeModuleDeclarations(dependenciesConfig?.modules);
297
- for (const declaration of normalizedModules) {
298
- const existing = modulesMap.get(declaration.from);
299
- if (!declaration.imports || declaration.imports.length === 0) {
300
- modulesMap.set(declaration.from, null);
301
- continue;
302
- }
303
- if (existing === null) {
304
- continue;
305
- }
306
- const merged = existing ?? /* @__PURE__ */ new Set();
307
- for (const imported of declaration.imports) {
308
- merged.add(imported);
309
- }
310
- modulesMap.set(declaration.from, merged);
311
- }
312
- for (const [index, scriptEntry] of (dependenciesConfig?.scripts ?? []).entries()) {
313
- if (!isDependencyEntryObject(scriptEntry) || !scriptEntry.lazy) {
314
- continue;
315
- }
316
- const lazy = scriptEntry.lazy;
317
- const content = scriptEntry.content;
318
- const src = scriptEntry.src;
319
- const attributes = scriptEntry.attributes;
320
- if (content) {
321
- const lazyKey2 = `lazy:${rapidhash(`${file}:entry:${index}:${content}`).toString(16)}`;
322
- const depKey2 = `lazy:entry:content:${getLazyTriggerKey(lazy)}:${content}:${JSON.stringify(attributes ?? {})}`;
323
- if (!lazyDependencyKeys.has(depKey2)) {
324
- lazyDependencyKeys.add(depKey2);
325
- dependencies.push(
326
- AssetFactory.createContentScript({
327
- position: "head",
328
- content,
329
- excludeFromHtml: true,
330
- attributes: {
331
- type: "module",
332
- defer: "",
333
- "data-eco-lazy-key": lazyKey2,
334
- ...attributes
335
- }
336
- })
337
- );
338
- }
339
- registerLazyScript({
340
- lazy,
341
- lazyKey: lazyKey2
342
- });
343
- continue;
344
- }
345
- const script = src ?? getDependencyEntrySrcOrThrow(scriptEntry, DEPENDENCY_ERRORS.LAZY_SCRIPT_MISSING_SRC);
346
- const resolvedPath = this.resolveDependencyPath(dir, script);
347
- const fallbackUrl = this.resolveLazyScripts(dir, [script]).split(",")[0] ?? "";
348
- const lazyKey = `lazy:${rapidhash(`${resolvedPath}:${getLazyTriggerKey(lazy)}`).toString(16)}`;
349
- const depKey = `lazy:entry:file:${getLazyTriggerKey(lazy)}:${resolvedPath}:${JSON.stringify(attributes ?? {})}`;
350
- if (!lazyDependencyKeys.has(depKey)) {
351
- lazyDependencyKeys.add(depKey);
352
- dependencies.push(
353
- AssetFactory.createFileScript({
354
- filepath: resolvedPath,
355
- position: "head",
356
- excludeFromHtml: true,
357
- attributes: {
358
- type: "module",
359
- defer: "",
360
- "data-eco-lazy-key": lazyKey,
361
- ...attributes
362
- }
363
- })
364
- );
365
- }
366
- registerLazyScript({
367
- lazy,
368
- lazyKey,
369
- fallbackUrl
370
- });
371
- }
372
- if (dependenciesConfig?.components) {
373
- for (const nestedComponent of dependenciesConfig.components) {
374
- if (nestedComponent?.config) {
375
- collect(nestedComponent.config);
376
- }
377
- }
378
- }
379
- const autoVirtualImports = extractEcopagesVirtualImports(file);
380
- for (const { from, imports } of autoVirtualImports) {
381
- const existing = modulesMap.get(from);
382
- if (!imports || imports.length === 0) {
383
- if (existing !== null) modulesMap.set(from, null);
384
- continue;
385
- }
386
- if (existing === null) continue;
387
- const merged = existing ?? /* @__PURE__ */ new Set();
388
- for (const imported of imports) merged.add(imported);
389
- modulesMap.set(from, merged);
390
- }
391
- };
392
- collect(component.config);
393
- dependencies.push(
394
- ...Array.from(modulesMap.entries()).map(([from, importsSet]) => {
395
- const imports = importsSet ? Array.from(importsSet) : void 0;
396
- return AssetFactory.createContentScript({
397
- position: "head",
398
- name: createModuleScriptName(from, imports),
399
- content: imports && imports.length > 0 ? createNamedImportModuleSource(from, imports) : createNamespaceImportModuleSource(from),
400
- attributes: {
401
- type: "module",
402
- defer: ""
403
- }
404
- });
405
- })
406
- );
407
- }
408
- const hasLazyDependencies = dependencies.some((dep) => dep.kind === "script" && dep.excludeFromHtml === true);
66
+ const { dependencies, lazyScriptsByConfig } = collectComponentDependencies({
67
+ components,
68
+ integrationName,
69
+ resolveLazyScripts: (componentDir, scripts) => this.resolveLazyScripts(componentDir, scripts),
70
+ createEcopagesJsxLazyEntryName,
71
+ isEcopagesJsxIntegration,
72
+ errors: {
73
+ invalidStylesheetEntry: DEPENDENCY_ERRORS.INVALID_STYLESHEET_ENTRY,
74
+ invalidScriptEntry: DEPENDENCY_ERRORS.INVALID_SCRIPT_ENTRY,
75
+ lazyScriptMissingSrc: DEPENDENCY_ERRORS.LAZY_SCRIPT_MISSING_SRC
76
+ }
77
+ });
78
+ const packagedDependencies = packagePageDependencies(dependencies, integrationName);
79
+ const hasLazyDependencies = packagedDependencies.some(
80
+ (dep) => dep.kind === "script" && dep.excludeFromHtml === true
81
+ );
409
82
  const processedDependencies = await this.assetProcessingService.processDependencies(
410
- dependencies,
83
+ packagedDependencies,
411
84
  integrationName
412
85
  );
413
86
  const lazyKeyToOutputUrl = /* @__PURE__ */ new Map();