@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,8 +1,8 @@
1
- import { appLogger } from "../../../../../global/app-logger";
1
+ import { appLogger } from "../../../../../global/app-logger.js";
2
2
  import { getAppBrowserBuildPlugins } from "../../../../../build/build-adapter.js";
3
3
  import { fileSystem } from "@ecopages/file-system";
4
4
  import path from "node:path";
5
- import { BaseProcessor } from "./base-processor";
5
+ import { BaseProcessor } from "./base-processor.js";
6
6
  import { BrowserBundleService } from "../../../browser-bundle.service.js";
7
7
  class BaseScriptProcessor extends BaseProcessor {
8
8
  browserBundleService;
@@ -14,24 +14,37 @@ class BaseScriptProcessor extends BaseProcessor {
14
14
  return dep.bundle !== false;
15
15
  }
16
16
  getBundlerOptions(dep) {
17
+ if (dep.packageRole === "page-script" && dep.bundleOptions?.splitting === void 0) {
18
+ return {
19
+ ...dep.bundleOptions,
20
+ splitting: false
21
+ };
22
+ }
17
23
  return dep.bundleOptions || {};
18
24
  }
19
- collectBuildPlugins() {
20
- return getAppBrowserBuildPlugins(this.appConfig);
25
+ collectBuildPlugins(excludePluginNames) {
26
+ const buildPlugins = getAppBrowserBuildPlugins(this.appConfig);
27
+ if (!excludePluginNames || excludePluginNames.length === 0) {
28
+ return buildPlugins;
29
+ }
30
+ const excluded = new Set(excludePluginNames);
31
+ return buildPlugins.filter((plugin) => !excluded.has(plugin.name));
21
32
  }
22
33
  async bundleScript({
23
34
  entrypoint,
24
35
  outdir,
36
+ excludeAppBuildPlugins,
25
37
  plugins: additionalPlugins,
26
38
  ...rest
27
39
  }) {
28
- const buildPlugins = this.collectBuildPlugins();
40
+ const buildPlugins = this.collectBuildPlugins(excludeAppBuildPlugins);
29
41
  const allPlugins = additionalPlugins ? [...additionalPlugins, ...buildPlugins] : buildPlugins;
30
42
  const buildResult = await this.browserBundleService.bundle({
31
43
  profile: "browser-script",
32
44
  entrypoints: [entrypoint],
33
45
  outdir,
34
46
  root: this.appConfig.rootDir,
47
+ excludeAppBuildPlugins,
35
48
  splitting: true,
36
49
  naming: "[name]-[hash].[ext]",
37
50
  plugins: allPlugins,
@@ -66,6 +79,57 @@ class BaseScriptProcessor extends BaseProcessor {
66
79
  const logMessage = buildResult.logs.map((log) => log.message).join(" | ");
67
80
  throw new Error(`No build output generated for ${entrypoint}${logMessage ? `: ${logMessage}` : ""}`);
68
81
  }
82
+ async bundleScripts({
83
+ entries,
84
+ outdir,
85
+ excludeAppBuildPlugins,
86
+ plugins: additionalPlugins,
87
+ ...rest
88
+ }) {
89
+ const buildPlugins = this.collectBuildPlugins(excludeAppBuildPlugins);
90
+ const allPlugins = additionalPlugins ? [...additionalPlugins, ...buildPlugins] : buildPlugins;
91
+ const buildResult = await this.browserBundleService.bundleGroupedEntries(entries, {
92
+ profile: "browser-script",
93
+ outdir,
94
+ root: this.appConfig.rootDir,
95
+ excludeAppBuildPlugins,
96
+ ...rest,
97
+ splitting: true,
98
+ naming: "[name]-[hash].[ext]",
99
+ plugins: allPlugins
100
+ });
101
+ if (!buildResult.success) {
102
+ for (const log of buildResult.logs) {
103
+ appLogger.debug(log.message, log);
104
+ }
105
+ }
106
+ const outputs = buildResult.outputs.map((output) => output.path);
107
+ const entryOutputs = /* @__PURE__ */ new Map();
108
+ for (const entry of entries) {
109
+ const exactOutput = outputs.find((outputPath) => path.basename(outputPath) === `${entry.entryName}.js`);
110
+ if (exactOutput) {
111
+ entryOutputs.set(entry.entryName, exactOutput);
112
+ continue;
113
+ }
114
+ const hashedOutput = outputs.find(
115
+ (outputPath) => path.basename(outputPath).startsWith(`${entry.entryName}-`)
116
+ );
117
+ if (hashedOutput) {
118
+ entryOutputs.set(entry.entryName, hashedOutput);
119
+ continue;
120
+ }
121
+ const fallbackOutput = path.join(outdir, `${entry.entryName}.js`);
122
+ if (fileSystem.exists(fallbackOutput)) {
123
+ entryOutputs.set(entry.entryName, fallbackOutput);
124
+ continue;
125
+ }
126
+ const logMessage = buildResult.logs.map((log) => log.message).join(" | ");
127
+ throw new Error(
128
+ `No build output generated for grouped entry ${entry.entryName}${logMessage ? `: ${logMessage}` : ""}`
129
+ );
130
+ }
131
+ return entryOutputs;
132
+ }
69
133
  }
70
134
  export {
71
135
  BaseScriptProcessor
@@ -1,5 +1,5 @@
1
- export * from './script/content-script.processor';
2
- export * from './script/file-script.processor';
3
- export * from './script/node-module-script.processor';
4
- export * from './stylesheet/content-stylesheet.processor';
5
- export * from './stylesheet/file-stylesheet.processor';
1
+ export * from './script/content-script.processor.js';
2
+ export * from './script/file-script.processor.js';
3
+ export * from './script/node-module-script.processor.js';
4
+ export * from './stylesheet/content-stylesheet.processor.js';
5
+ export * from './stylesheet/file-stylesheet.processor.js';
@@ -1,5 +1,5 @@
1
- export * from "./script/content-script.processor";
2
- export * from "./script/file-script.processor";
3
- export * from "./script/node-module-script.processor";
4
- export * from "./stylesheet/content-stylesheet.processor";
5
- export * from "./stylesheet/file-stylesheet.processor";
1
+ export * from "./script/content-script.processor.js";
2
+ export * from "./script/file-script.processor.js";
3
+ export * from "./script/node-module-script.processor.js";
4
+ export * from "./stylesheet/content-stylesheet.processor.js";
5
+ export * from "./stylesheet/file-stylesheet.processor.js";
@@ -1,5 +1,6 @@
1
- import type { ContentScriptAsset, ProcessedAsset } from '../../assets.types';
2
- import { BaseScriptProcessor } from '../base/base-script-processor';
1
+ import type { ContentScriptAsset, ProcessedAsset } from '../../assets.types.js';
2
+ import { BaseScriptProcessor } from '../base/base-script-processor.js';
3
3
  export declare class ContentScriptProcessor extends BaseScriptProcessor<ContentScriptAsset> {
4
+ processGrouped(deps: ContentScriptAsset[]): Promise<ProcessedAsset[]>;
4
5
  process(dep: ContentScriptAsset): Promise<ProcessedAsset>;
5
6
  }
@@ -1,7 +1,64 @@
1
1
  import path from "node:path";
2
2
  import { fileSystem } from "@ecopages/file-system";
3
- import { BaseScriptProcessor } from "../base/base-script-processor";
3
+ import { BaseScriptProcessor } from "../base/base-script-processor.js";
4
4
  class ContentScriptProcessor extends BaseScriptProcessor {
5
+ async processGrouped(deps) {
6
+ if (deps.length === 0) {
7
+ return [];
8
+ }
9
+ const shouldBundle = deps.every((dep) => this.shouldBundle(dep));
10
+ if (!shouldBundle || deps.some((dep) => dep.inline)) {
11
+ return Promise.all(deps.map((dep) => this.process(dep)));
12
+ }
13
+ const tempDir = path.join(
14
+ this.appConfig.absolutePaths.distDir,
15
+ `grouped-script-entries-${process.pid}-${Date.now()}-${Math.random().toString(36).slice(2)}`
16
+ );
17
+ fileSystem.ensureDir(tempDir);
18
+ try {
19
+ const tempEntries = deps.map((dep, index) => {
20
+ const entryName = dep.groupedBundle?.entryName ?? dep.name ?? `grouped-script-${index}`;
21
+ const tempFilepath = path.join(tempDir, `${entryName}.js`);
22
+ fileSystem.write(tempFilepath, dep.content);
23
+ return {
24
+ dep,
25
+ entryName,
26
+ tempFilepath
27
+ };
28
+ });
29
+ const primaryDep = deps[0];
30
+ const outputPaths = await this.bundleScripts({
31
+ ...this.getBundlerOptions(primaryDep),
32
+ entries: tempEntries.map(({ entryName, tempFilepath }) => ({
33
+ entryName,
34
+ entrypoint: tempFilepath
35
+ })),
36
+ outdir: this.getAssetsDir(),
37
+ minify: this.isProduction,
38
+ naming: "[name]-[hash].[ext]"
39
+ });
40
+ return tempEntries.map(({ dep, entryName }) => {
41
+ const bundledFilePath = outputPaths.get(entryName);
42
+ if (!bundledFilePath) {
43
+ throw new Error(`Missing grouped bundle output for ${entryName}`);
44
+ }
45
+ return {
46
+ filepath: bundledFilePath,
47
+ content: dep.inline ? fileSystem.readFileSync(bundledFilePath).toString() : void 0,
48
+ kind: "script",
49
+ position: dep.position,
50
+ attributes: dep.attributes,
51
+ inline: dep.inline,
52
+ excludeFromHtml: dep.excludeFromHtml,
53
+ packageRole: dep.packageRole,
54
+ groupedBundle: dep.groupedBundle,
55
+ bundledSourceFilepaths: dep.bundledSourceFilepaths
56
+ };
57
+ });
58
+ } finally {
59
+ fileSystem.remove(tempDir);
60
+ }
61
+ }
5
62
  async process(dep) {
6
63
  const hash = this.generateHash(dep.content);
7
64
  const filename = dep.name ? `${dep.name}.js` : `script-${hash}.js`;
@@ -16,7 +73,10 @@ class ContentScriptProcessor extends BaseScriptProcessor {
16
73
  position: dep.position,
17
74
  attributes: dep.attributes,
18
75
  inline: dep.inline,
19
- excludeFromHtml: dep.excludeFromHtml
76
+ excludeFromHtml: dep.excludeFromHtml,
77
+ packageRole: dep.packageRole,
78
+ groupedBundle: dep.groupedBundle,
79
+ bundledSourceFilepaths: dep.bundledSourceFilepaths
20
80
  };
21
81
  this.writeCacheFile(filename, unbundledProcessedAsset);
22
82
  return unbundledProcessedAsset;
@@ -43,7 +103,10 @@ class ContentScriptProcessor extends BaseScriptProcessor {
43
103
  position: dep.position,
44
104
  attributes: dep.attributes,
45
105
  inline: dep.inline,
46
- excludeFromHtml: dep.excludeFromHtml
106
+ excludeFromHtml: dep.excludeFromHtml,
107
+ packageRole: dep.packageRole,
108
+ groupedBundle: dep.groupedBundle,
109
+ bundledSourceFilepaths: dep.bundledSourceFilepaths
47
110
  };
48
111
  fileSystem.remove(tempFileName);
49
112
  this.writeCacheFile(filename, processedAsset);
@@ -1,8 +1,9 @@
1
- import type { IHmrManager } from '../../../../../internal-types';
2
- import type { FileScriptAsset, ProcessedAsset } from '../../assets.types';
3
- import { BaseScriptProcessor } from '../base/base-script-processor';
1
+ import type { IHmrManager } from '../../../../../types/internal-types.js';
2
+ import type { FileScriptAsset, ProcessedAsset } from '../../assets.types.js';
3
+ import { BaseScriptProcessor } from '../base/base-script-processor.js';
4
4
  export declare class FileScriptProcessor extends BaseScriptProcessor<FileScriptAsset> {
5
5
  private hmrManager?;
6
+ private resolveHmrOutputFilepath;
6
7
  setHmrManager(hmrManager: IHmrManager): void;
7
8
  process(dep: FileScriptAsset): Promise<ProcessedAsset>;
8
9
  }
@@ -1,23 +1,38 @@
1
1
  import path from "node:path";
2
- import { RESOLVED_ASSETS_DIR } from "../../../../../constants";
2
+ import { RESOLVED_ASSETS_DIR } from "../../../../../config/constants.js";
3
3
  import { fileSystem } from "@ecopages/file-system";
4
- import { BaseScriptProcessor } from "../base/base-script-processor";
4
+ import { BaseScriptProcessor } from "../base/base-script-processor.js";
5
5
  class FileScriptProcessor extends BaseScriptProcessor {
6
6
  hmrManager;
7
+ resolveHmrOutputFilepath(entrypointPath) {
8
+ if (!this.hmrManager || !("getDistDir" in this.hmrManager)) {
9
+ return void 0;
10
+ }
11
+ const getDistDir = this.hmrManager.getDistDir;
12
+ if (typeof getDistDir !== "function") {
13
+ return void 0;
14
+ }
15
+ const relativePathJs = path.relative(this.appConfig.absolutePaths.srcDir, entrypointPath).replace(/\.(tsx?|jsx?|mdx?)$/, ".js").replace(/\[([^\]]+)\]/g, "_$1_");
16
+ return path.join(getDistDir.call(this.hmrManager), relativePathJs);
17
+ }
7
18
  setHmrManager(hmrManager) {
8
19
  this.hmrManager = hmrManager;
9
20
  }
10
21
  async process(dep) {
11
22
  if (this.hmrManager?.isEnabled() && !dep.inline) {
12
23
  const outputUrl = await this.hmrManager.registerScriptEntrypoint(dep.filepath);
24
+ const outputFilepath = this.resolveHmrOutputFilepath(dep.filepath);
13
25
  return {
14
- filepath: dep.filepath,
26
+ filepath: outputFilepath ?? dep.filepath,
27
+ sourceFilepath: dep.filepath,
15
28
  srcUrl: outputUrl,
16
29
  kind: "script",
17
30
  position: dep.position,
18
31
  attributes: dep.attributes,
19
32
  inline: false,
20
- excludeFromHtml: dep.excludeFromHtml
33
+ excludeFromHtml: dep.excludeFromHtml,
34
+ packageRole: dep.packageRole,
35
+ bundledSourceFilepaths: dep.bundledSourceFilepaths
21
36
  };
22
37
  }
23
38
  const content = fileSystem.readFileSync(dep.filepath);
@@ -40,12 +55,15 @@ class FileScriptProcessor extends BaseScriptProcessor {
40
55
  }
41
56
  return {
42
57
  filepath,
58
+ sourceFilepath: dep.filepath,
43
59
  content,
44
60
  kind: "script",
45
61
  position: dep.position,
46
62
  attributes: dep.attributes,
47
63
  inline: dep.inline,
48
- excludeFromHtml: dep.excludeFromHtml
64
+ excludeFromHtml: dep.excludeFromHtml,
65
+ packageRole: dep.packageRole,
66
+ bundledSourceFilepaths: dep.bundledSourceFilepaths
49
67
  };
50
68
  }
51
69
  const relativeFilepath = path.relative(this.appConfig.absolutePaths.srcDir, dep.filepath);
@@ -61,12 +79,15 @@ class FileScriptProcessor extends BaseScriptProcessor {
61
79
  });
62
80
  return {
63
81
  filepath: bundledFilePath,
82
+ sourceFilepath: dep.filepath,
64
83
  content: dep.inline ? fileSystem.readFileSync(bundledFilePath).toString() : void 0,
65
84
  kind: "script",
66
85
  position: dep.position,
67
86
  attributes: dep.attributes,
68
87
  inline: dep.inline,
69
- excludeFromHtml: dep.excludeFromHtml
88
+ excludeFromHtml: dep.excludeFromHtml,
89
+ packageRole: dep.packageRole,
90
+ bundledSourceFilepaths: dep.bundledSourceFilepaths
70
91
  };
71
92
  });
72
93
  }
@@ -1,7 +1,42 @@
1
- import type { NodeModuleScriptAsset } from '../../assets.types';
2
- import { BaseScriptProcessor } from '../base/base-script-processor';
1
+ import type { NodeModuleScriptAsset } from '../../assets.types.js';
2
+ import { BaseScriptProcessor } from '../base/base-script-processor.js';
3
+ /**
4
+ * Processes browser script assets whose entrypoint is referenced by package specifier.
5
+ *
6
+ * @remarks
7
+ * Resolution stays app-boundary-first: prefer the active build adapter, then fall back
8
+ * to ESM export-map resolution, and only then probe a small set of literal file paths.
9
+ */
3
10
  export declare class NodeModuleScriptProcessor extends BaseScriptProcessor<NodeModuleScriptAsset> {
4
- process(dep: NodeModuleScriptAsset): Promise<import("../../assets.types").ProcessedAsset>;
11
+ process(dep: NodeModuleScriptAsset): Promise<import("../../assets.types.js").ProcessedAsset>;
12
+ /**
13
+ * Resolves a node-module script entry from the current app boundary.
14
+ *
15
+ * @remarks
16
+ * The build adapter remains the primary resolution surface because Bun/native
17
+ * host-owned builds may have a more accurate view of aliases and package
18
+ * ownership than core does. The local fallback only runs when that adapter
19
+ * resolution is unavailable.
20
+ */
5
21
  private resolveModulePath;
22
+ /**
23
+ * Resolves browser-owned script specifiers without relying on CommonJS resolution.
24
+ *
25
+ * @remarks
26
+ * This path intentionally stays ESM-first because these assets are emitted as
27
+ * browser scripts. We first ask Node's ESM resolver to evaluate the package
28
+ * export map from the app boundary. If that still fails, we fall back to a
29
+ * bounded filesystem probe so direct file installs and package subpaths like
30
+ * `pkg/client/entry` still resolve when the export map does not cover them.
31
+ */
6
32
  private resolveModulePathFallback;
33
+ /**
34
+ * Returns the file candidates we accept during the final literal filesystem probe.
35
+ *
36
+ * @remarks
37
+ * This is intentionally small and browser-entry-oriented: direct files, common
38
+ * JS extensions, and `index.*` entrypoints. If a package needs anything more
39
+ * exotic, it should resolve through the adapter or ESM export-map path above.
40
+ */
41
+ private getFallbackCandidatePaths;
7
42
  }
@@ -1,7 +1,8 @@
1
1
  import path from "node:path";
2
+ import { fileURLToPath, pathToFileURL } from "node:url";
2
3
  import { fileSystem } from "@ecopages/file-system";
3
4
  import { getAppBuildAdapter } from "../../../../../build/build-adapter.js";
4
- import { BaseScriptProcessor } from "../base/base-script-processor";
5
+ import { BaseScriptProcessor } from "../base/base-script-processor.js";
5
6
  class NodeModuleScriptProcessor extends BaseScriptProcessor {
6
7
  async process(dep) {
7
8
  const modulePath = this.resolveModulePath(dep.importPath, this.appConfig.rootDir);
@@ -20,7 +21,9 @@ class NodeModuleScriptProcessor extends BaseScriptProcessor {
20
21
  position: dep.position,
21
22
  attributes: dep.attributes,
22
23
  inline: true,
23
- excludeFromHtml: dep.excludeFromHtml
24
+ excludeFromHtml: dep.excludeFromHtml,
25
+ packageRole: dep.packageRole,
26
+ bundledSourceFilepaths: dep.bundledSourceFilepaths
24
27
  };
25
28
  }
26
29
  const outdir = path.join(this.getAssetsDir(), "vendors");
@@ -38,10 +41,21 @@ class NodeModuleScriptProcessor extends BaseScriptProcessor {
38
41
  position: dep.position,
39
42
  attributes: dep.attributes,
40
43
  inline: dep.inline,
41
- excludeFromHtml: dep.excludeFromHtml
44
+ excludeFromHtml: dep.excludeFromHtml,
45
+ packageRole: dep.packageRole,
46
+ bundledSourceFilepaths: dep.bundledSourceFilepaths
42
47
  };
43
48
  });
44
49
  }
50
+ /**
51
+ * Resolves a node-module script entry from the current app boundary.
52
+ *
53
+ * @remarks
54
+ * The build adapter remains the primary resolution surface because Bun/native
55
+ * host-owned builds may have a more accurate view of aliases and package
56
+ * ownership than core does. The local fallback only runs when that adapter
57
+ * resolution is unavailable.
58
+ */
45
59
  resolveModulePath(importPath, rootDir) {
46
60
  if (path.isAbsolute(importPath) && fileSystem.exists(importPath)) {
47
61
  return importPath;
@@ -52,13 +66,30 @@ class NodeModuleScriptProcessor extends BaseScriptProcessor {
52
66
  return this.resolveModulePathFallback(importPath, rootDir);
53
67
  }
54
68
  }
69
+ /**
70
+ * Resolves browser-owned script specifiers without relying on CommonJS resolution.
71
+ *
72
+ * @remarks
73
+ * This path intentionally stays ESM-first because these assets are emitted as
74
+ * browser scripts. We first ask Node's ESM resolver to evaluate the package
75
+ * export map from the app boundary. If that still fails, we fall back to a
76
+ * bounded filesystem probe so direct file installs and package subpaths like
77
+ * `pkg/client/entry` still resolve when the export map does not cover them.
78
+ */
55
79
  resolveModulePathFallback(importPath, rootDir, maxDepth = 5) {
80
+ try {
81
+ return fileURLToPath(
82
+ import.meta.resolve(importPath, pathToFileURL(path.join(rootDir, "package.json")).href)
83
+ );
84
+ } catch {
85
+ }
56
86
  let currentDir = rootDir;
57
87
  let remainingDepth = maxDepth;
58
88
  while (remainingDepth >= 0) {
59
- const modulePath = path.join(currentDir, "node_modules", importPath);
60
- if (fileSystem.exists(modulePath)) {
61
- return modulePath;
89
+ for (const candidatePath of this.getFallbackCandidatePaths(currentDir, importPath)) {
90
+ if (fileSystem.exists(candidatePath)) {
91
+ return candidatePath;
92
+ }
62
93
  }
63
94
  const parentDir = path.dirname(currentDir);
64
95
  if (parentDir === currentDir) {
@@ -69,6 +100,26 @@ class NodeModuleScriptProcessor extends BaseScriptProcessor {
69
100
  }
70
101
  throw new Error(`Could not resolve module '${importPath}' from '${rootDir}'`);
71
102
  }
103
+ /**
104
+ * Returns the file candidates we accept during the final literal filesystem probe.
105
+ *
106
+ * @remarks
107
+ * This is intentionally small and browser-entry-oriented: direct files, common
108
+ * JS extensions, and `index.*` entrypoints. If a package needs anything more
109
+ * exotic, it should resolve through the adapter or ESM export-map path above.
110
+ */
111
+ getFallbackCandidatePaths(rootDir, importPath) {
112
+ const moduleBasePath = path.join(rootDir, "node_modules", importPath);
113
+ return [
114
+ moduleBasePath,
115
+ `${moduleBasePath}.js`,
116
+ `${moduleBasePath}.mjs`,
117
+ `${moduleBasePath}.cjs`,
118
+ path.join(moduleBasePath, "index.js"),
119
+ path.join(moduleBasePath, "index.mjs"),
120
+ path.join(moduleBasePath, "index.cjs")
121
+ ];
122
+ }
72
123
  }
73
124
  export {
74
125
  NodeModuleScriptProcessor
@@ -1,5 +1,8 @@
1
- import type { ContentStylesheetAsset, ProcessedAsset } from '../../assets.types';
2
- import { BaseProcessor } from '../base/base-processor';
1
+ import type { ContentStylesheetAsset, ProcessedAsset } from '../../assets.types.js';
2
+ import { BaseProcessor } from '../base/base-processor.js';
3
3
  export declare class ContentStylesheetProcessor extends BaseProcessor<ContentStylesheetAsset> {
4
+ private static readonly PROCESSABLE_STYLESHEET_EXTENSIONS;
5
+ private isProcessableStylesheet;
6
+ private applyStylesheetProcessors;
4
7
  process(dep: ContentStylesheetAsset): Promise<ProcessedAsset>;
5
8
  }
@@ -1,21 +1,55 @@
1
1
  import path from "node:path";
2
2
  import { fileSystem } from "@ecopages/file-system";
3
- import { BaseProcessor } from "../base/base-processor";
3
+ import { BaseProcessor } from "../base/base-processor.js";
4
4
  class ContentStylesheetProcessor extends BaseProcessor {
5
+ static PROCESSABLE_STYLESHEET_EXTENSIONS = /* @__PURE__ */ new Set([".css", ".scss", ".sass", ".less"]);
6
+ isProcessableStylesheet(filepath) {
7
+ return ContentStylesheetProcessor.PROCESSABLE_STYLESHEET_EXTENSIONS.has(path.extname(filepath));
8
+ }
9
+ async applyStylesheetProcessors(content, filepath) {
10
+ if (!this.isProcessableStylesheet(filepath)) {
11
+ return content;
12
+ }
13
+ let transformedContent = content;
14
+ const processors = this.appConfig.processors ? Array.from(this.appConfig.processors.values()) : [];
15
+ for (const processor of processors) {
16
+ const hasCapabilities = processor.getAssetCapabilities().length > 0;
17
+ const canProcessStylesheet = processor.canProcessAsset("stylesheet", filepath);
18
+ if (!canProcessStylesheet && (hasCapabilities || !processor.getName().includes("postcss"))) {
19
+ continue;
20
+ }
21
+ if (!processor.matchesFileFilter(filepath)) {
22
+ continue;
23
+ }
24
+ const result = await processor.process(transformedContent, filepath);
25
+ if (typeof result === "string") {
26
+ transformedContent = result;
27
+ continue;
28
+ }
29
+ if (result instanceof Buffer) {
30
+ transformedContent = result.toString();
31
+ }
32
+ }
33
+ return transformedContent;
34
+ }
5
35
  async process(dep) {
6
- const hash = this.generateHash(dep.content);
36
+ const virtualFilepath = path.join(this.appConfig.absolutePaths.distDir, "styles", "page-bundle.css");
37
+ const processedContent = await this.applyStylesheetProcessors(dep.content, virtualFilepath);
38
+ const hash = this.generateHash(processedContent);
7
39
  const filename = `style-${hash}.css`;
8
40
  const cachekey = this.buildCacheKey(filename, hash, dep);
9
41
  return this.getOrProcess(cachekey, () => {
10
42
  const filepath = path.join(this.getAssetsDir(), "styles", filename);
11
- if (!dep.inline) fileSystem.write(filepath, dep.content);
43
+ if (!dep.inline) fileSystem.write(filepath, processedContent);
12
44
  return {
13
45
  filepath: dep.inline ? void 0 : filepath,
14
- content: dep.inline ? dep.content : void 0,
46
+ content: dep.inline ? processedContent : void 0,
15
47
  kind: "stylesheet",
16
48
  position: dep.position,
17
49
  attributes: dep.attributes,
18
- inline: dep.inline
50
+ inline: dep.inline,
51
+ packageRole: dep.packageRole,
52
+ bundledSourceFilepaths: dep.bundledSourceFilepaths
19
53
  };
20
54
  });
21
55
  }
@@ -1,5 +1,5 @@
1
- import type { FileStylesheetAsset, ProcessedAsset } from '../../assets.types';
2
- import { BaseProcessor } from '../base/base-processor';
1
+ import type { FileStylesheetAsset, ProcessedAsset } from '../../assets.types.js';
2
+ import { BaseProcessor } from '../base/base-processor.js';
3
3
  export declare class FileStylesheetProcessor extends BaseProcessor<FileStylesheetAsset> {
4
4
  private static readonly PROCESSABLE_STYLESHEET_EXTENSIONS;
5
5
  getStyleContent: (srcUrl: string) => Buffer;
@@ -1,6 +1,6 @@
1
1
  import path from "node:path";
2
2
  import { fileSystem } from "@ecopages/file-system";
3
- import { BaseProcessor } from "../base/base-processor";
3
+ import { BaseProcessor } from "../base/base-processor.js";
4
4
  class FileStylesheetProcessor extends BaseProcessor {
5
5
  static PROCESSABLE_STYLESHEET_EXTENSIONS = /* @__PURE__ */ new Set([".css", ".scss", ".sass", ".less"]);
6
6
  getStyleContent = (srcUrl) => {
@@ -52,11 +52,14 @@ class FileStylesheetProcessor extends BaseProcessor {
52
52
  }
53
53
  return {
54
54
  filepath,
55
+ sourceFilepath: dep.filepath,
55
56
  content: dep.inline ? processedContent : void 0,
56
57
  kind: "stylesheet",
57
58
  position: dep.position,
58
59
  attributes: dep.attributes,
59
- inline: dep.inline
60
+ inline: dep.inline,
61
+ packageRole: dep.packageRole,
62
+ bundledSourceFilepaths: dep.bundledSourceFilepaths
60
63
  };
61
64
  });
62
65
  }
@@ -0,0 +1,18 @@
1
+ import type { AssetProcessor } from './processor.interface.js';
2
+ import type { AssetDefinition, ProcessedAsset } from './assets.types.js';
3
+ type ProcessUngroupedDependencyOptions = {
4
+ dep: AssetDefinition;
5
+ key: string;
6
+ depKey: string;
7
+ getCachedAsset: (dep: AssetDefinition, depKey: string) => ProcessedAsset | null;
8
+ getProcessor: (dep: AssetDefinition) => AssetProcessor | undefined;
9
+ resolveProcessedAssetSrcUrl: (processed: ProcessedAsset) => string | undefined;
10
+ setCachedAsset: (dep: AssetDefinition, depKey: string, processed: ProcessedAsset) => void;
11
+ logMissingProcessor: (dep: AssetDefinition) => void;
12
+ logMissingFile: (dep: AssetDefinition & {
13
+ filepath: string;
14
+ }) => void;
15
+ logProcessingError: (dep: AssetDefinition, error: unknown) => void;
16
+ };
17
+ export declare function processUngroupedDependency(options: ProcessUngroupedDependencyOptions): Promise<ProcessedAsset | null>;
18
+ export {};
@@ -0,0 +1,45 @@
1
+ import { fileSystem } from "@ecopages/file-system";
2
+ async function processUngroupedDependency(options) {
3
+ const {
4
+ dep,
5
+ key,
6
+ depKey,
7
+ getCachedAsset,
8
+ getProcessor,
9
+ resolveProcessedAssetSrcUrl,
10
+ setCachedAsset,
11
+ logMissingProcessor,
12
+ logMissingFile,
13
+ logProcessingError
14
+ } = options;
15
+ const cached = getCachedAsset(dep, depKey);
16
+ if (cached) {
17
+ return { key, ...cached };
18
+ }
19
+ const processor = getProcessor(dep);
20
+ if (!processor) {
21
+ logMissingProcessor(dep);
22
+ return null;
23
+ }
24
+ if (dep.source === "file" && "filepath" in dep && !fileSystem.exists(dep.filepath)) {
25
+ logMissingFile(dep);
26
+ return null;
27
+ }
28
+ try {
29
+ const processed = await processor.process(dep);
30
+ const srcUrl = resolveProcessedAssetSrcUrl(processed);
31
+ const processedWithKey = {
32
+ key,
33
+ ...processed,
34
+ srcUrl
35
+ };
36
+ setCachedAsset(dep, depKey, processedWithKey);
37
+ return processedWithKey;
38
+ } catch (error) {
39
+ logProcessingError(dep, error);
40
+ return null;
41
+ }
42
+ }
43
+ export {
44
+ processUngroupedDependency
45
+ };