@ecopages/core 0.2.0-alpha.9 → 0.2.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (473) hide show
  1. package/README.md +79 -28
  2. package/package.json +104 -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 +32 -8
  67. package/src/adapters/shared/server-static-builder.js +69 -6
  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-entry-file.d.ts +72 -0
  279. package/src/utils/resolve-entry-file.js +41 -0
  280. package/src/utils/resolve-work-dir.js +1 -1
  281. package/src/watchers/project-watcher.d.ts +4 -4
  282. package/src/watchers/project-watcher.js +35 -41
  283. package/src/watchers/project-watcher.test-helpers.d.ts +2 -2
  284. package/src/watchers/project-watcher.test-helpers.js +5 -5
  285. package/CHANGELOG.md +0 -31
  286. package/src/adapters/abstract/application-adapter.ts +0 -337
  287. package/src/adapters/abstract/router-adapter.ts +0 -30
  288. package/src/adapters/abstract/server-adapter.ts +0 -79
  289. package/src/adapters/bun/client-bridge.ts +0 -62
  290. package/src/adapters/bun/create-app.ts +0 -189
  291. package/src/adapters/bun/hmr-manager.ts +0 -409
  292. package/src/adapters/bun/index.ts +0 -2
  293. package/src/adapters/bun/server-adapter.ts +0 -499
  294. package/src/adapters/bun/server-lifecycle.d.ts +0 -63
  295. package/src/adapters/bun/server-lifecycle.js +0 -92
  296. package/src/adapters/bun/server-lifecycle.ts +0 -124
  297. package/src/adapters/index.ts +0 -6
  298. package/src/adapters/node/bootstrap-dependency-resolver.d.ts +0 -44
  299. package/src/adapters/node/bootstrap-dependency-resolver.js +0 -172
  300. package/src/adapters/node/bootstrap-dependency-resolver.ts +0 -301
  301. package/src/adapters/node/create-app.ts +0 -179
  302. package/src/adapters/node/index.d.ts +0 -6
  303. package/src/adapters/node/index.js +0 -11
  304. package/src/adapters/node/index.ts +0 -16
  305. package/src/adapters/node/node-client-bridge.ts +0 -79
  306. package/src/adapters/node/node-hmr-manager.ts +0 -381
  307. package/src/adapters/node/runtime-adapter.d.ts +0 -46
  308. package/src/adapters/node/runtime-adapter.js +0 -306
  309. package/src/adapters/node/runtime-adapter.ts +0 -439
  310. package/src/adapters/node/server-adapter.ts +0 -488
  311. package/src/adapters/node/static-content-server.ts +0 -239
  312. package/src/adapters/node/write-runtime-manifest.d.ts +0 -26
  313. package/src/adapters/node/write-runtime-manifest.js +0 -12
  314. package/src/adapters/node/write-runtime-manifest.ts +0 -38
  315. package/src/adapters/shared/api-response.ts +0 -104
  316. package/src/adapters/shared/application-adapter.ts +0 -199
  317. package/src/adapters/shared/define-api-handler.ts +0 -66
  318. package/src/adapters/shared/explicit-static-route-matcher.ts +0 -140
  319. package/src/adapters/shared/file-route-middleware-pipeline.ts +0 -127
  320. package/src/adapters/shared/fs-server-response-factory.ts +0 -118
  321. package/src/adapters/shared/fs-server-response-matcher.ts +0 -205
  322. package/src/adapters/shared/hmr-entrypoint-registrar.ts +0 -149
  323. package/src/adapters/shared/hmr-html-response.ts +0 -52
  324. package/src/adapters/shared/render-context.ts +0 -120
  325. package/src/adapters/shared/runtime-bootstrap.d.ts +0 -38
  326. package/src/adapters/shared/runtime-bootstrap.js +0 -43
  327. package/src/adapters/shared/runtime-bootstrap.ts +0 -79
  328. package/src/adapters/shared/server-adapter.ts +0 -489
  329. package/src/adapters/shared/server-route-handler.ts +0 -153
  330. package/src/adapters/shared/server-static-builder.ts +0 -166
  331. package/src/build/build-adapter.ts +0 -361
  332. package/src/build/build-manifest.ts +0 -54
  333. package/src/build/build-types.ts +0 -83
  334. package/src/build/dev-build-coordinator.d.ts +0 -74
  335. package/src/build/dev-build-coordinator.js +0 -161
  336. package/src/build/dev-build-coordinator.ts +0 -221
  337. package/src/build/esbuild-build-adapter.d.ts +0 -72
  338. package/src/build/esbuild-build-adapter.js +0 -422
  339. package/src/build/esbuild-build-adapter.ts +0 -559
  340. package/src/build/runtime-build-executor.ts +0 -34
  341. package/src/build/runtime-specifier-alias-plugin.d.ts +0 -15
  342. package/src/build/runtime-specifier-alias-plugin.js +0 -31
  343. package/src/build/runtime-specifier-alias-plugin.ts +0 -58
  344. package/src/config/config-builder.ts +0 -706
  345. package/src/constants.ts +0 -54
  346. package/src/create-app.ts +0 -87
  347. package/src/dev/sc-server.ts +0 -143
  348. package/src/eco/component-render-context.d.ts +0 -105
  349. package/src/eco/component-render-context.js +0 -87
  350. package/src/eco/component-render-context.ts +0 -224
  351. package/src/eco/eco.ts +0 -242
  352. package/src/eco/eco.types.ts +0 -221
  353. package/src/eco/eco.utils.ts +0 -89
  354. package/src/eco/global-injector-map.ts +0 -112
  355. package/src/eco/lazy-injector-map.ts +0 -120
  356. package/src/eco/module-dependencies.ts +0 -75
  357. package/src/errors/http-error.ts +0 -72
  358. package/src/errors/index.ts +0 -2
  359. package/src/errors/locals-access-error.ts +0 -7
  360. package/src/global/app-logger.ts +0 -4
  361. package/src/hmr/client/hmr-runtime.ts +0 -152
  362. package/src/hmr/hmr-strategy.ts +0 -172
  363. package/src/hmr/hmr.postcss.test.e2e.ts +0 -41
  364. package/src/hmr/hmr.test.e2e.ts +0 -66
  365. package/src/hmr/strategies/default-hmr-strategy.ts +0 -60
  366. package/src/hmr/strategies/js-hmr-strategy.ts +0 -320
  367. package/src/index.browser.ts +0 -3
  368. package/src/index.ts +0 -5
  369. package/src/integrations/ghtml/ghtml-renderer.ts +0 -96
  370. package/src/integrations/ghtml/ghtml.plugin.ts +0 -32
  371. package/src/internal-types.ts +0 -232
  372. package/src/plugins/alias-resolver-plugin.ts +0 -63
  373. package/src/plugins/eco-component-meta-plugin.ts +0 -481
  374. package/src/plugins/integration-plugin.ts +0 -226
  375. package/src/plugins/processor.ts +0 -240
  376. package/src/plugins/runtime-capability.ts +0 -14
  377. package/src/public-types.ts +0 -1317
  378. package/src/route-renderer/component-graph/component-graph-executor.d.ts +0 -32
  379. package/src/route-renderer/component-graph/component-graph-executor.js +0 -31
  380. package/src/route-renderer/component-graph/component-graph-executor.ts +0 -84
  381. package/src/route-renderer/component-graph/component-graph.d.ts +0 -42
  382. package/src/route-renderer/component-graph/component-graph.js +0 -72
  383. package/src/route-renderer/component-graph/component-graph.ts +0 -159
  384. package/src/route-renderer/component-graph/component-marker.d.ts +0 -52
  385. package/src/route-renderer/component-graph/component-marker.js +0 -46
  386. package/src/route-renderer/component-graph/component-marker.ts +0 -117
  387. package/src/route-renderer/component-graph/component-reference.d.ts +0 -10
  388. package/src/route-renderer/component-graph/component-reference.js +0 -19
  389. package/src/route-renderer/component-graph/component-reference.ts +0 -29
  390. package/src/route-renderer/component-graph/marker-graph-resolver.d.ts +0 -77
  391. package/src/route-renderer/component-graph/marker-graph-resolver.js +0 -95
  392. package/src/route-renderer/component-graph/marker-graph-resolver.ts +0 -155
  393. package/src/route-renderer/orchestration/integration-renderer.ts +0 -790
  394. package/src/route-renderer/orchestration/render-execution.service.d.ts +0 -103
  395. package/src/route-renderer/orchestration/render-execution.service.js +0 -121
  396. package/src/route-renderer/orchestration/render-execution.service.ts +0 -230
  397. package/src/route-renderer/orchestration/render-preparation.service.d.ts +0 -121
  398. package/src/route-renderer/orchestration/render-preparation.service.js +0 -332
  399. package/src/route-renderer/orchestration/render-preparation.service.ts +0 -476
  400. package/src/route-renderer/page-loading/dependency-resolver.ts +0 -612
  401. package/src/route-renderer/page-loading/page-module-loader.ts +0 -181
  402. package/src/route-renderer/route-renderer.ts +0 -115
  403. package/src/router/client/link-intent.test.browser.ts +0 -51
  404. package/src/router/client/link-intent.ts +0 -92
  405. package/src/router/client/navigation-coordinator.ts +0 -433
  406. package/src/router/server/fs-router-scanner.d.ts +0 -41
  407. package/src/router/server/fs-router-scanner.js +0 -156
  408. package/src/router/server/fs-router-scanner.ts +0 -219
  409. package/src/router/server/fs-router.d.ts +0 -26
  410. package/src/router/server/fs-router.js +0 -100
  411. package/src/router/server/fs-router.ts +0 -122
  412. package/src/services/assets/asset-processing-service/asset-processing.service.ts +0 -401
  413. package/src/services/assets/asset-processing-service/asset.factory.ts +0 -105
  414. package/src/services/assets/asset-processing-service/assets.types.ts +0 -113
  415. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.ts +0 -95
  416. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.ts +0 -78
  417. package/src/services/assets/asset-processing-service/index.ts +0 -5
  418. package/src/services/assets/asset-processing-service/processor.interface.ts +0 -27
  419. package/src/services/assets/asset-processing-service/processor.registry.ts +0 -18
  420. package/src/services/assets/asset-processing-service/processors/base/base-processor.ts +0 -82
  421. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.ts +0 -95
  422. package/src/services/assets/asset-processing-service/processors/index.ts +0 -5
  423. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.ts +0 -66
  424. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.ts +0 -88
  425. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.ts +0 -85
  426. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.ts +0 -27
  427. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.ts +0 -80
  428. package/src/services/assets/browser-bundle.service.ts +0 -53
  429. package/src/services/cache/cache.types.ts +0 -126
  430. package/src/services/cache/index.ts +0 -18
  431. package/src/services/cache/memory-cache-store.ts +0 -130
  432. package/src/services/cache/page-cache-service.ts +0 -202
  433. package/src/services/cache/page-request-cache-coordinator.service.ts +0 -131
  434. package/src/services/html/html-rewriter-provider.service.ts +0 -103
  435. package/src/services/html/html-transformer.service.ts +0 -279
  436. package/src/services/invalidation/development-invalidation.service.ts +0 -261
  437. package/src/services/module-loading/app-server-module-transpiler.service.ts +0 -52
  438. package/src/services/module-loading/page-module-import.service.ts +0 -200
  439. package/src/services/module-loading/server-loader.service.d.ts +0 -96
  440. package/src/services/module-loading/server-loader.service.js +0 -32
  441. package/src/services/module-loading/server-loader.service.ts +0 -130
  442. package/src/services/module-loading/server-module-transpiler.service.ts +0 -105
  443. package/src/services/runtime-manifest/node-runtime-manifest.service.d.ts +0 -35
  444. package/src/services/runtime-manifest/node-runtime-manifest.service.js +0 -60
  445. package/src/services/runtime-manifest/node-runtime-manifest.service.ts +0 -101
  446. package/src/services/runtime-state/dev-graph.service.ts +0 -217
  447. package/src/services/runtime-state/entrypoint-dependency-graph.service.ts +0 -136
  448. package/src/services/runtime-state/runtime-specifier-registry.service.d.ts +0 -69
  449. package/src/services/runtime-state/runtime-specifier-registry.service.js +0 -37
  450. package/src/services/runtime-state/runtime-specifier-registry.service.ts +0 -96
  451. package/src/services/runtime-state/server-invalidation-state.service.ts +0 -68
  452. package/src/services/validation/schema-validation-service.ts +0 -204
  453. package/src/services/validation/standard-schema.types.ts +0 -68
  454. package/src/static-site-generator/static-site-generator.ts +0 -462
  455. package/src/utils/css.d.ts +0 -1
  456. package/src/utils/css.js +0 -7
  457. package/src/utils/css.ts +0 -5
  458. package/src/utils/deep-merge.ts +0 -47
  459. package/src/utils/hash.ts +0 -5
  460. package/src/utils/html.ts +0 -1
  461. package/src/utils/invariant.ts +0 -15
  462. package/src/utils/locals-utils.ts +0 -37
  463. package/src/utils/parse-cli-args.ts +0 -83
  464. package/src/utils/path-utils.module.ts +0 -14
  465. package/src/utils/resolve-work-dir.ts +0 -45
  466. package/src/utils/runtime.ts +0 -44
  467. package/src/utils/server-utils.module.ts +0 -67
  468. package/src/watchers/project-watcher.test-helpers.ts +0 -41
  469. package/src/watchers/project-watcher.ts +0 -363
  470. /package/src/{internal-types.js → adapters/shared/runtime-host.js} +0 -0
  471. /package/src/{public-types.js → adapters/shared/static-preview-host.js} +0 -0
  472. /package/src/{constants.d.ts → config/constants.d.ts} +0 -0
  473. /package/src/{constants.js → config/constants.js} +0 -0
@@ -1,17 +1,22 @@
1
1
  import path from "node:path";
2
- import { RESOLVED_ASSETS_DIR } from "../../../constants";
3
- import { appLogger } from "../../../global/app-logger";
4
- import { rapidhash } from "../../../utils/hash";
2
+ import { RESOLVED_ASSETS_DIR } from "../../../config/constants.js";
3
+ import { appLogger } from "../../../global/app-logger.js";
5
4
  import { fileSystem } from "@ecopages/file-system";
6
- import { isHmrAware } from "./processor.interface";
7
- import { ProcessorRegistry } from "./processor.registry";
5
+ import { deduplicateAssetDependencies, getAssetDependencyKey } from "./asset-dependency-keys.js";
6
+ import {
7
+ partitionGroupedContentScriptDependencies,
8
+ processGroupedDependencyBundles
9
+ } from "./grouped-content-bundles.js";
10
+ import { isHmrAware } from "./processor.interface.js";
11
+ import { ProcessorRegistry } from "./processor.registry.js";
12
+ import { processUngroupedDependency } from "./ungrouped-dependency-processing.js";
8
13
  import {
9
14
  ContentScriptProcessor,
10
15
  ContentStylesheetProcessor,
11
16
  FileScriptProcessor,
12
17
  FileStylesheetProcessor,
13
18
  NodeModuleScriptProcessor
14
- } from "./processors";
19
+ } from "./processors/index.js";
15
20
  class AssetProcessingService {
16
21
  static RESOLVED_ASSETS_DIR = RESOLVED_ASSETS_DIR;
17
22
  registry = new ProcessorRegistry();
@@ -62,71 +67,11 @@ class AssetProcessingService {
62
67
  async processDependencies(deps, key) {
63
68
  const depsDir = path.join(this.config.absolutePaths.distDir, RESOLVED_ASSETS_DIR);
64
69
  fileSystem.ensureDir(depsDir);
65
- const dedupedDeps = this.deduplicateDependencies(deps);
70
+ const dedupedDeps = deduplicateAssetDependencies(deps);
66
71
  const results = await this.processDependenciesParallel(dedupedDeps, key);
67
72
  await this.optimizeDependencies(results);
68
73
  return results;
69
74
  }
70
- /**
71
- * Removes duplicate dependency declarations while preserving first-seen order.
72
- */
73
- deduplicateDependencies(deps) {
74
- const seen = /* @__PURE__ */ new Map();
75
- for (const dep of deps) {
76
- const key = this.getDependencyKey(dep);
77
- if (!seen.has(key)) {
78
- seen.set(key, dep);
79
- }
80
- }
81
- return Array.from(seen.values());
82
- }
83
- /**
84
- * Builds the cache signature fragment for script dependencies that can vary by
85
- * bundling policy.
86
- */
87
- getScriptDependencyBuildSignature(dep) {
88
- if (dep.kind !== "script") {
89
- return void 0;
90
- }
91
- const pluginNames = dep.bundleOptions?.plugins?.map((plugin) => plugin.name) ?? [];
92
- const signature = {
93
- bundle: dep.bundle,
94
- inline: dep.inline,
95
- excludeFromHtml: dep.excludeFromHtml,
96
- naming: dep.bundleOptions?.naming,
97
- external: dep.bundleOptions?.external,
98
- minify: dep.bundleOptions?.minify,
99
- plugins: pluginNames
100
- };
101
- return this.generateHash(JSON.stringify(signature));
102
- }
103
- /**
104
- * Derives the stable cache key for one dependency declaration.
105
- */
106
- getDependencyKey(dep) {
107
- const parts = [dep.kind, dep.source];
108
- if ("filepath" in dep) {
109
- parts.push(dep.filepath);
110
- } else if ("content" in dep) {
111
- parts.push(`content:${this.generateHash(dep.content)}`);
112
- } else if ("importPath" in dep) {
113
- parts.push(dep.importPath);
114
- }
115
- if ("position" in dep && dep.position) {
116
- parts.push(dep.position);
117
- }
118
- const scriptBuildSignature = this.getScriptDependencyBuildSignature(dep);
119
- if (scriptBuildSignature) {
120
- parts.push(`build:${scriptBuildSignature}`);
121
- }
122
- return parts.join(":");
123
- }
124
- /**
125
- * Hashes content used in dependency cache and signature keys.
126
- */
127
- generateHash(content) {
128
- return rapidhash(content).toString();
129
- }
130
75
  /**
131
76
  * Processes deduplicated dependencies grouped by processor type.
132
77
  *
@@ -138,44 +83,53 @@ class AssetProcessingService {
138
83
  async processDependenciesParallel(deps, key) {
139
84
  const grouped = this.groupDependenciesByType(deps);
140
85
  const groupPromises = Object.entries(grouped).map(async ([, typeDeps]) => {
141
- const typePromises = typeDeps.map(async (dep) => {
142
- const depKey = this.getDependencyKey(dep);
143
- const cached = this.getCachedAsset(dep, depKey);
144
- if (cached) {
145
- return { key, ...cached };
146
- }
147
- const processor = this.registry.getProcessor(dep.kind, dep.source);
148
- if (!processor) {
149
- appLogger.error(`No processor found for ${dep.kind}/${dep.source}`);
150
- return null;
151
- }
152
- if (dep.source === "file" && "filepath" in dep) {
153
- const fileExists = fileSystem.exists(dep.filepath);
154
- if (!fileExists) {
155
- appLogger.warn(`Skipping missing ${dep.kind} file: ${dep.filepath}`);
156
- return null;
86
+ const { groupedBundleDeps, ungroupedDeps } = partitionGroupedContentScriptDependencies(typeDeps);
87
+ const typePromises = ungroupedDeps.map(
88
+ (dep) => processUngroupedDependency({
89
+ dep,
90
+ key,
91
+ depKey: getAssetDependencyKey(dep),
92
+ getCachedAsset: (assetDep, depKey) => this.getCachedAsset(assetDep, depKey),
93
+ getProcessor: (assetDep) => this.registry.getProcessor(assetDep.kind, assetDep.source),
94
+ resolveProcessedAssetSrcUrl: (processed) => this.resolveProcessedAssetSrcUrl(processed),
95
+ setCachedAsset: (assetDep, depKey, processed) => this.setCachedAsset(assetDep, depKey, processed),
96
+ logMissingProcessor: (assetDep) => {
97
+ appLogger.error(`No processor found for ${assetDep.kind}/${assetDep.source}`);
98
+ },
99
+ logMissingFile: (assetDep) => {
100
+ appLogger.warn(`Skipping missing ${assetDep.kind} file: ${assetDep.filepath}`);
101
+ },
102
+ logProcessingError: (assetDep, error) => {
103
+ appLogger.error(
104
+ `Failed to process dependency: ${error instanceof Error ? error.message : String(error)} for ${assetDep.kind}/${assetDep.source}`
105
+ );
106
+ appLogger.debug(error);
157
107
  }
158
- }
159
- try {
160
- const processed = await processor.process(dep);
161
- const srcUrl = this.resolveProcessedAssetSrcUrl(processed);
162
- const processedWithKey = {
163
- key,
164
- ...processed,
165
- srcUrl
166
- };
167
- this.setCachedAsset(dep, depKey, processedWithKey);
168
- return processedWithKey;
169
- } catch (error) {
108
+ })
109
+ );
110
+ const groupedResults = await processGroupedDependencyBundles({
111
+ bundles: Array.from(groupedBundleDeps.values()),
112
+ key,
113
+ getCachedAsset: (dep, depKey) => this.getCachedAsset(dep, depKey),
114
+ getDependencyKey: getAssetDependencyKey,
115
+ getGroupedProcessor: () => this.registry.getProcessor("script", "content"),
116
+ resolveProcessedAssetSrcUrl: (processed) => this.resolveProcessedAssetSrcUrl(processed),
117
+ setCachedAsset: (dep, depKey, processed) => this.setCachedAsset(dep, depKey, processed),
118
+ logError: (error) => {
170
119
  appLogger.error(
171
- `Failed to process dependency: ${error instanceof Error ? error.message : String(error)} for ${dep.kind}/${dep.source}`
120
+ `Failed to process grouped dependency bundle: ${error instanceof Error ? error.message : String(error)}`
172
121
  );
173
122
  appLogger.debug(error);
174
- return null;
175
123
  }
176
124
  });
177
125
  const typeResults = await Promise.all(typePromises);
178
- return typeResults.filter((result) => result !== null);
126
+ const processedTypeResults = typeResults.flatMap((result) => {
127
+ if (!result) {
128
+ return [];
129
+ }
130
+ return Array.isArray(result) ? result : [result];
131
+ });
132
+ return [...processedTypeResults, ...groupedResults];
179
133
  });
180
134
  const allTypeResults = await Promise.all(groupPromises);
181
135
  return allTypeResults.flat();
@@ -1,4 +1,4 @@
1
- import type { ContentScriptAsset, ContentStylesheetAsset, FileScriptAsset, FileStylesheetAsset, InlineContentScriptAsset, InlineContentStylesheetAsset, InlineFileScriptAsset, JsonScriptAsset, NodeModuleScriptAsset } from './assets.types';
1
+ import type { ContentScriptAsset, ContentStylesheetAsset, FileScriptAsset, FileStylesheetAsset, InlineContentScriptAsset, InlineContentStylesheetAsset, InlineFileScriptAsset, JsonScriptAsset, NodeModuleScriptAsset } from './assets.types.js';
2
2
  type CreateAssetOptions<T> = Omit<T, 'kind' | 'source' | 'inline'>;
3
3
  export declare class AssetFactory {
4
4
  static readonly RESOLVED_ASSETS_DIR = "assets";
@@ -1,5 +1,5 @@
1
- import { RESOLVED_ASSETS_DIR, RESOLVED_ASSETS_VENDORS_DIR } from "../../../constants";
2
- import { deepMerge } from "../../../utils/deep-merge";
1
+ import { RESOLVED_ASSETS_DIR, RESOLVED_ASSETS_VENDORS_DIR } from "../../../config/constants.js";
2
+ import { deepMerge } from "../../../utils/deep-merge.js";
3
3
  class AssetFactory {
4
4
  static RESOLVED_ASSETS_DIR = RESOLVED_ASSETS_DIR;
5
5
  static RESOLVED_ASSETS_VENDORS_DIR = RESOLVED_ASSETS_VENDORS_DIR;
@@ -2,20 +2,30 @@ import type { EcoBuildPlugin } from '../../../build/build-types.js';
2
2
  export type AssetSource = 'content' | 'file' | 'node-module';
3
3
  export type AssetKind = 'script' | 'stylesheet';
4
4
  export type AssetPosition = 'head' | 'body';
5
+ export type AssetPackageRole = 'page-script' | 'page-style' | 'runtime' | 'keep-separate' | 'dynamic-chunk';
6
+ export type GroupedScriptBundle = {
7
+ id: string;
8
+ entryName: string;
9
+ };
5
10
  export interface BaseAsset {
6
11
  kind: AssetKind;
7
12
  source: AssetSource;
8
13
  attributes?: Record<string, string>;
9
14
  position?: AssetPosition;
15
+ packageRole?: AssetPackageRole;
16
+ bundledSourceFilepaths?: string[];
10
17
  }
11
18
  export interface ScriptAsset extends BaseAsset {
12
19
  kind: 'script';
13
20
  inline?: boolean;
14
21
  bundle?: boolean;
22
+ groupedBundle?: GroupedScriptBundle;
15
23
  bundleOptions?: {
16
24
  define?: Record<string, string>;
17
25
  minify?: boolean;
18
26
  external?: string[];
27
+ splitting?: boolean;
28
+ excludeAppBuildPlugins?: string[];
19
29
  naming?: string;
20
30
  plugins?: EcoBuildPlugin[];
21
31
  };
@@ -78,6 +88,7 @@ export interface JsonScriptAsset extends ScriptAsset {
78
88
  }
79
89
  export type ProcessedAsset = {
80
90
  filepath?: string;
91
+ sourceFilepath?: string;
81
92
  srcUrl?: string;
82
93
  content?: string;
83
94
  kind: AssetKind;
@@ -85,5 +96,8 @@ export type ProcessedAsset = {
85
96
  attributes?: Record<string, string>;
86
97
  inline?: boolean;
87
98
  excludeFromHtml?: boolean;
99
+ packageRole?: AssetPackageRole;
100
+ groupedBundle?: GroupedScriptBundle;
101
+ bundledSourceFilepaths?: string[];
88
102
  };
89
103
  export type AssetDefinition = ContentScriptAsset | FileScriptAsset | NodeModuleScriptAsset | JsonScriptAsset | ContentStylesheetAsset | FileStylesheetAsset;
@@ -25,6 +25,7 @@ export declare function createBrowserRuntimeScriptAsset(options: {
25
25
  define?: Record<string, string>;
26
26
  minify?: boolean;
27
27
  external?: string[];
28
+ excludeAppBuildPlugins?: string[];
28
29
  naming?: string;
29
30
  plugins?: EcoBuildPlugin[];
30
31
  };
@@ -48,6 +49,7 @@ export declare function createBrowserRuntimeModuleAsset(options: {
48
49
  define?: Record<string, string>;
49
50
  minify?: boolean;
50
51
  external?: string[];
52
+ excludeAppBuildPlugins?: string[];
51
53
  naming?: string;
52
54
  plugins?: EcoBuildPlugin[];
53
55
  };
@@ -14,6 +14,7 @@ function createBrowserRuntimeScriptAsset(options) {
14
14
  position: "head",
15
15
  importPath: options.importPath,
16
16
  name: options.name,
17
+ packageRole: "runtime",
17
18
  excludeFromHtml: true,
18
19
  bundleOptions: {
19
20
  naming: options.fileName,
@@ -0,0 +1,30 @@
1
+ import type { AssetDefinition, ProcessedAsset } from './assets.types.js';
2
+ /**
3
+ * Splits grouped content-script dependencies from ordinary dependencies so callers can
4
+ * route them through `processGrouped` without changing ordering for the remaining assets.
5
+ */
6
+ export declare function partitionGroupedContentScriptDependencies(typeDeps: AssetDefinition[]): {
7
+ groupedBundleDeps: Map<string, AssetDefinition[]>;
8
+ ungroupedDeps: AssetDefinition[];
9
+ };
10
+ type GroupedBundleProcessor = {
11
+ processGrouped?: (deps: AssetDefinition[]) => Promise<ProcessedAsset[]>;
12
+ };
13
+ type ProcessGroupedDependencyBundlesOptions = {
14
+ bundles: AssetDefinition[][];
15
+ key: string;
16
+ getCachedAsset: (dep: AssetDefinition, depKey: string) => ProcessedAsset | null;
17
+ getDependencyKey: (dep: AssetDefinition) => string;
18
+ getGroupedProcessor: () => GroupedBundleProcessor | undefined;
19
+ resolveProcessedAssetSrcUrl: (processed: ProcessedAsset) => string | undefined;
20
+ setCachedAsset: (dep: AssetDefinition, depKey: string, processed: ProcessedAsset) => void;
21
+ logError: (error: unknown) => void;
22
+ };
23
+ /**
24
+ * Processes grouped content-script bundles while preserving per-entry cache keys.
25
+ *
26
+ * When every dependency in a bundle already has a cached processed asset, the cached
27
+ * entries are returned directly and the grouped processor is skipped.
28
+ */
29
+ export declare function processGroupedDependencyBundles(options: ProcessGroupedDependencyBundlesOptions): Promise<ProcessedAsset[]>;
30
+ export {};
@@ -0,0 +1,65 @@
1
+ function partitionGroupedContentScriptDependencies(typeDeps) {
2
+ const groupedBundleDeps = /* @__PURE__ */ new Map();
3
+ const ungroupedDeps = [];
4
+ for (const dep of typeDeps) {
5
+ if (dep.kind === "script" && dep.source === "content" && dep.groupedBundle?.id) {
6
+ const existing = groupedBundleDeps.get(dep.groupedBundle.id) ?? [];
7
+ existing.push(dep);
8
+ groupedBundleDeps.set(dep.groupedBundle.id, existing);
9
+ continue;
10
+ }
11
+ ungroupedDeps.push(dep);
12
+ }
13
+ return {
14
+ groupedBundleDeps,
15
+ ungroupedDeps
16
+ };
17
+ }
18
+ async function processGroupedDependencyBundles(options) {
19
+ const {
20
+ bundles,
21
+ key,
22
+ getCachedAsset,
23
+ getDependencyKey,
24
+ getGroupedProcessor,
25
+ resolveProcessedAssetSrcUrl,
26
+ setCachedAsset,
27
+ logError
28
+ } = options;
29
+ const groupedPromises = bundles.map(async (bundleDeps) => {
30
+ const cachedResults = bundleDeps.map((dep) => {
31
+ const cached = getCachedAsset(dep, getDependencyKey(dep));
32
+ return cached ? { key, ...cached } : null;
33
+ });
34
+ if (cachedResults.every((result) => result !== null)) {
35
+ return cachedResults.filter((result) => result !== null);
36
+ }
37
+ const processor = getGroupedProcessor();
38
+ if (!processor?.processGrouped) {
39
+ return [];
40
+ }
41
+ try {
42
+ const processedResults = await processor.processGrouped(bundleDeps);
43
+ return processedResults.map((processed, index) => {
44
+ const dep = bundleDeps[index];
45
+ const depKey = getDependencyKey(dep);
46
+ const srcUrl = resolveProcessedAssetSrcUrl(processed);
47
+ const processedWithKey = {
48
+ key,
49
+ ...processed,
50
+ srcUrl
51
+ };
52
+ setCachedAsset(dep, depKey, processedWithKey);
53
+ return processedWithKey;
54
+ });
55
+ } catch (error) {
56
+ logError(error);
57
+ return [];
58
+ }
59
+ });
60
+ return (await Promise.all(groupedPromises)).flat();
61
+ }
62
+ export {
63
+ partitionGroupedContentScriptDependencies,
64
+ processGroupedDependencyBundles
65
+ };
@@ -1,5 +1,6 @@
1
- export * from './asset.factory';
2
- export * from './asset-processing.service';
3
- export * from './assets.types';
4
- export * from './browser-runtime-asset.factory';
5
- export * from './browser-runtime-entry.factory';
1
+ export * from './asset.factory.js';
2
+ export * from './page-package.js';
3
+ export * from './asset-processing.service.js';
4
+ export * from './assets.types.js';
5
+ export * from './browser-runtime-asset.factory.js';
6
+ export * from './browser-runtime-entry.factory.js';
@@ -1,5 +1,6 @@
1
- export * from "./asset.factory";
2
- export * from "./asset-processing.service";
3
- export * from "./assets.types";
4
- export * from "./browser-runtime-asset.factory";
5
- export * from "./browser-runtime-entry.factory";
1
+ export * from "./asset.factory.js";
2
+ export * from "./page-package.js";
3
+ export * from "./asset-processing.service.js";
4
+ export * from "./assets.types.js";
5
+ export * from "./browser-runtime-asset.factory.js";
6
+ export * from "./browser-runtime-entry.factory.js";
@@ -0,0 +1,6 @@
1
+ import type { PagePackageResult } from '../../../types/public-types.js';
2
+ import type { ProcessedAsset } from './assets.types.js';
3
+ import type { PageBrowserGraphResult } from '../../../types/public-types.js';
4
+ export declare function createPagePackage(assets: ProcessedAsset[], options?: {
5
+ pageBrowserGraph?: PageBrowserGraphResult;
6
+ }): PagePackageResult;
@@ -0,0 +1,80 @@
1
+ function getSuppressedSourceFilepaths(assets) {
2
+ const suppressed = /* @__PURE__ */ new Set();
3
+ for (const asset of assets) {
4
+ if ((asset.packageRole === "page-style" || asset.packageRole === "page-script") && Array.isArray(asset.bundledSourceFilepaths)) {
5
+ for (const filepath of asset.bundledSourceFilepaths) {
6
+ suppressed.add(filepath);
7
+ }
8
+ }
9
+ }
10
+ return suppressed;
11
+ }
12
+ function createPagePackage(assets, options = {}) {
13
+ const allAssets = [
14
+ ...assets,
15
+ ...options.pageBrowserGraph?.entryAssets ?? [],
16
+ ...options.pageBrowserGraph?.chunkAssets ?? []
17
+ ];
18
+ const inlineAssets = [];
19
+ const separateAssets = [];
20
+ const dynamicChunks = [];
21
+ let pageScript;
22
+ let pageStylesheet;
23
+ const suppressedSourceFilepaths = getSuppressedSourceFilepaths(allAssets);
24
+ for (const asset of allAssets) {
25
+ if (asset.inline) {
26
+ inlineAssets.push(asset);
27
+ continue;
28
+ }
29
+ if (asset.packageRole === "dynamic-chunk") {
30
+ dynamicChunks.push(asset);
31
+ continue;
32
+ }
33
+ if (!pageScript && asset.packageRole === "page-script") {
34
+ pageScript = asset;
35
+ continue;
36
+ }
37
+ if (!pageStylesheet && asset.packageRole === "page-style") {
38
+ pageStylesheet = asset;
39
+ continue;
40
+ }
41
+ if (asset.packageRole === "keep-separate" || asset.packageRole === "runtime") {
42
+ separateAssets.push(asset);
43
+ continue;
44
+ }
45
+ if (!pageScript && asset.kind === "script" && !asset.excludeFromHtml) {
46
+ pageScript = asset;
47
+ continue;
48
+ }
49
+ if (!pageStylesheet && asset.kind === "stylesheet") {
50
+ pageStylesheet = asset;
51
+ continue;
52
+ }
53
+ separateAssets.push(asset);
54
+ }
55
+ return {
56
+ assets: allAssets,
57
+ pageBrowserGraph: options.pageBrowserGraph,
58
+ htmlAssets: allAssets.filter((asset) => shouldIncludeInHtml(asset, suppressedSourceFilepaths)),
59
+ pageScript,
60
+ pageStylesheet,
61
+ inlineAssets,
62
+ separateAssets,
63
+ dynamicChunks
64
+ };
65
+ }
66
+ function shouldIncludeInHtml(asset, suppressedSourceFilepaths) {
67
+ if (asset.excludeFromHtml) {
68
+ return false;
69
+ }
70
+ if (asset.packageRole === "runtime") {
71
+ return false;
72
+ }
73
+ if (asset.sourceFilepath && suppressedSourceFilepaths.has(asset.sourceFilepath)) {
74
+ return false;
75
+ }
76
+ return true;
77
+ }
78
+ export {
79
+ createPagePackage
80
+ };
@@ -1,5 +1,5 @@
1
- import type { IHmrManager } from '../../../internal-types';
2
- import type { AssetDefinition, ProcessedAsset } from './assets.types';
1
+ import type { IHmrManager } from '../../../types/internal-types.js';
2
+ import type { AssetDefinition, ProcessedAsset } from './assets.types.js';
3
3
  /**
4
4
  * Base interface for asset processors.
5
5
  * Processors transform asset definitions into processed assets.
@@ -1,5 +1,5 @@
1
- import type { AssetKind, AssetSource } from './assets.types';
2
- import type { BaseProcessor } from './processors/base/base-processor';
1
+ import type { AssetKind, AssetSource } from './assets.types.js';
2
+ import type { BaseProcessor } from './processors/base/base-processor.js';
3
3
  export declare class ProcessorRegistry {
4
4
  private processors;
5
5
  register(kind: AssetKind, variant: AssetSource, processor: BaseProcessor<any>): void;
@@ -1,4 +1,4 @@
1
- import type { EcoPagesAppConfig } from '../../../../../internal-types.js';
1
+ import type { EcoPagesAppConfig } from '../../../../../types/internal-types.js';
2
2
  import type { BaseAsset, ProcessedAsset } from '../../assets.types.js';
3
3
  export declare abstract class BaseProcessor<T extends BaseAsset> {
4
4
  protected appConfig: EcoPagesAppConfig;
@@ -1,5 +1,5 @@
1
1
  import path from "node:path";
2
- import { RESOLVED_ASSETS_DIR } from "../../../../../constants.js";
2
+ import { RESOLVED_ASSETS_DIR } from "../../../../../config/constants.js";
3
3
  import { rapidhash } from "../../../../../utils/hash.js";
4
4
  import { isDevelopmentRuntime, isProductionRuntime } from "../../../../../utils/runtime.js";
5
5
  import { fileSystem } from "@ecopages/file-system";
@@ -38,7 +38,8 @@ class BaseProcessor {
38
38
  buildCacheKey(identifier, contentHash, dep) {
39
39
  const attrsHash = dep.attributes ? this.generateHash(JSON.stringify(dep.attributes)) : "";
40
40
  const position = dep.position ?? "";
41
- return `${identifier}:${contentHash}:${position}:${attrsHash}`;
41
+ const packageRole = dep.packageRole ?? "";
42
+ return `${identifier}:${contentHash}:${position}:${attrsHash}:${packageRole}`;
42
43
  }
43
44
  getOrProcess(cacheKey, processFn) {
44
45
  if (this.hasCacheFile(cacheKey)) {
@@ -1,7 +1,8 @@
1
- import type { EcoPagesAppConfig } from '../../../../../internal-types';
1
+ import type { EcoPagesAppConfig } from '../../../../../types/internal-types.js';
2
2
  import type { EcoBuildPlugin } from '../../../../../build/build-types.js';
3
- import type { ScriptAsset } from '../../assets.types';
4
- import { BaseProcessor } from './base-processor';
3
+ import type { ScriptAsset } from '../../assets.types.js';
4
+ import { BaseProcessor } from './base-processor.js';
5
+ import { type BrowserBundleGroupedEntry } from '../../../browser-bundle.service.js';
5
6
  export declare abstract class BaseScriptProcessor<T extends ScriptAsset> extends BaseProcessor<T> {
6
7
  private readonly browserBundleService;
7
8
  constructor({ appConfig }: {
@@ -9,9 +10,13 @@ export declare abstract class BaseScriptProcessor<T extends ScriptAsset> extends
9
10
  });
10
11
  protected shouldBundle(dep: T): boolean;
11
12
  protected getBundlerOptions(dep: T): Record<string, any>;
12
- protected collectBuildPlugins(): EcoBuildPlugin[];
13
- protected bundleScript({ entrypoint, outdir, plugins: additionalPlugins, ...rest }: {
13
+ protected collectBuildPlugins(excludePluginNames?: string[]): EcoBuildPlugin[];
14
+ protected bundleScript({ entrypoint, outdir, excludeAppBuildPlugins, plugins: additionalPlugins, ...rest }: {
14
15
  entrypoint: string;
15
16
  outdir: string;
16
17
  } & ScriptAsset['bundleOptions']): Promise<string>;
18
+ protected bundleScripts({ entries, outdir, excludeAppBuildPlugins, plugins: additionalPlugins, ...rest }: {
19
+ entries: BrowserBundleGroupedEntry[];
20
+ outdir: string;
21
+ } & ScriptAsset['bundleOptions']): Promise<Map<string, string>>;
17
22
  }