@ecopages/core 0.2.0-alpha.5 → 0.2.0-alpha.51

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 (456) hide show
  1. package/README.md +267 -14
  2. package/package.json +98 -108
  3. package/src/adapters/README.md +39 -0
  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 +30 -62
  12. package/src/adapters/bun/hmr-manager.js +30 -194
  13. package/src/adapters/bun/index.d.ts +2 -3
  14. package/src/adapters/bun/index.js +3 -3
  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 +93 -32
  18. package/src/adapters/bun/server-adapter.js +166 -89
  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 +2 -6
  24. package/src/adapters/index.js +2 -8
  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 +38 -48
  31. package/src/adapters/node/node-hmr-manager.js +31 -203
  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 +20 -72
  37. package/src/adapters/node/server-adapter.js +98 -203
  38. package/src/adapters/node/static-content-server.d.ts +37 -1
  39. package/src/adapters/node/static-content-server.js +29 -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/{define-api-handler.d.ts → 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 -13
  48. package/src/adapters/shared/file-route-middleware-pipeline.d.ts +7 -10
  49. package/src/adapters/shared/file-route-middleware-pipeline.js +3 -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 +20 -16
  53. package/src/adapters/shared/fs-server-response-matcher.js +76 -45
  54. package/src/adapters/shared/hmr-entrypoint-registrar.d.ts +55 -0
  55. package/src/adapters/shared/hmr-entrypoint-registrar.js +87 -0
  56. package/src/adapters/shared/hmr-html-response.d.ts +22 -0
  57. package/src/adapters/shared/hmr-html-response.js +33 -0
  58. package/src/adapters/shared/render-context.d.ts +5 -3
  59. package/src/adapters/shared/render-context.js +27 -3
  60. package/src/adapters/shared/runtime-app-bootstrap.d.ts +26 -0
  61. package/src/adapters/shared/runtime-app-bootstrap.js +46 -0
  62. package/src/adapters/shared/runtime-host.d.ts +12 -0
  63. package/src/adapters/shared/server-adapter.d.ts +33 -12
  64. package/src/adapters/shared/server-adapter.js +215 -132
  65. package/src/adapters/shared/server-route-handler.d.ts +5 -5
  66. package/src/adapters/shared/server-route-handler.js +7 -16
  67. package/src/adapters/shared/server-static-builder.d.ts +41 -8
  68. package/src/adapters/shared/server-static-builder.js +65 -11
  69. package/src/adapters/shared/shared-hmr-manager.d.ts +59 -0
  70. package/src/adapters/shared/shared-hmr-manager.js +240 -0
  71. package/src/adapters/shared/static-preview-host.d.ts +10 -0
  72. package/src/build/README.md +107 -0
  73. package/src/build/browser-runtime-import-rewrite-plugin.d.ts +26 -0
  74. package/src/build/browser-runtime-import-rewrite-plugin.js +162 -0
  75. package/src/build/browser-runtime-manifest.d.ts +31 -0
  76. package/src/build/browser-runtime-manifest.js +61 -0
  77. package/src/build/build-adapter.d.ts +175 -3
  78. package/src/build/build-adapter.js +633 -16
  79. package/src/build/build-manifest.d.ts +33 -0
  80. package/src/build/build-manifest.js +52 -0
  81. package/src/build/dev-build-coordinator.d.ts +72 -0
  82. package/src/build/dev-build-coordinator.js +154 -0
  83. package/src/build/esbuild-build-adapter.d.ts +16 -6
  84. package/src/build/esbuild-build-adapter.js +205 -75
  85. package/src/build/runtime-build-executor.d.ts +14 -0
  86. package/src/build/runtime-build-executor.js +22 -0
  87. package/src/build/runtime-specifier-alias-plugin.d.ts +15 -0
  88. package/src/build/runtime-specifier-alias-plugin.js +31 -0
  89. package/src/config/README.md +36 -0
  90. package/src/config/config-builder.d.ts +54 -29
  91. package/src/config/config-builder.js +256 -50
  92. package/src/{constants.d.ts → config/constants.d.ts} +13 -0
  93. package/src/{constants.js → config/constants.js} +4 -0
  94. package/src/declarations.d.ts +19 -14
  95. package/src/dev/host-runtime.d.ts +10 -0
  96. package/src/dev/host-runtime.js +24 -0
  97. package/src/dev/sc-server.d.ts +1 -1
  98. package/src/dev/sc-server.js +1 -1
  99. package/src/eco/README.md +70 -16
  100. package/src/eco/eco.browser.d.ts +2 -0
  101. package/src/eco/eco.browser.js +88 -0
  102. package/src/eco/eco.js +63 -54
  103. package/src/eco/eco.types.d.ts +69 -6
  104. package/src/eco/eco.utils.d.ts +1 -40
  105. package/src/eco/eco.utils.js +5 -35
  106. package/src/eco/global-injector-map.d.ts +3 -3
  107. package/src/eco/global-injector-map.js +2 -2
  108. package/src/eco/lazy-injector-map.d.ts +2 -2
  109. package/src/errors/index.d.ts +1 -0
  110. package/src/errors/index.js +3 -1
  111. package/src/hmr/README.md +26 -0
  112. package/src/hmr/client/hmr-runtime.d.ts +1 -6
  113. package/src/hmr/client/hmr-runtime.js +38 -7
  114. package/src/hmr/hmr-strategy.d.ts +16 -13
  115. package/src/hmr/hmr-strategy.js +22 -7
  116. package/src/hmr/hmr.postcss.test.e2e.d.ts +1 -0
  117. package/src/hmr/hmr.postcss.test.e2e.js +31 -0
  118. package/src/hmr/hmr.test.e2e.js +26 -33
  119. package/src/hmr/strategies/default-hmr-strategy.d.ts +2 -2
  120. package/src/hmr/strategies/default-hmr-strategy.js +1 -1
  121. package/src/hmr/strategies/js-hmr-strategy.d.ts +40 -42
  122. package/src/hmr/strategies/js-hmr-strategy.js +24 -43
  123. package/src/index.browser.d.ts +2 -2
  124. package/src/index.browser.js +1 -1
  125. package/src/index.d.ts +4 -3
  126. package/src/index.js +16 -5
  127. package/src/integrations/ghtml/ghtml-renderer.d.ts +3 -2
  128. package/src/integrations/ghtml/ghtml-renderer.js +27 -30
  129. package/src/integrations/ghtml/ghtml.constants.d.ts +1 -0
  130. package/src/integrations/ghtml/ghtml.constants.js +4 -0
  131. package/src/integrations/ghtml/ghtml.plugin.d.ts +2 -6
  132. package/src/integrations/ghtml/ghtml.plugin.js +3 -4
  133. package/src/plugins/README.md +35 -0
  134. package/src/plugins/alias-resolver-plugin.d.ts +1 -0
  135. package/src/plugins/alias-resolver-plugin.js +27 -5
  136. package/src/plugins/eco-component-meta-plugin.d.ts +14 -1
  137. package/src/plugins/eco-component-meta-plugin.js +42 -24
  138. package/src/plugins/foreign-jsx-override-plugin.d.ts +33 -0
  139. package/src/plugins/foreign-jsx-override-plugin.js +41 -0
  140. package/src/plugins/integration-plugin.d.ts +157 -29
  141. package/src/plugins/integration-plugin.js +115 -14
  142. package/src/plugins/processor.d.ts +17 -2
  143. package/src/plugins/processor.js +22 -3
  144. package/src/plugins/runtime-capability.d.ts +9 -0
  145. package/src/plugins/source-transform.d.ts +46 -0
  146. package/src/plugins/source-transform.js +71 -0
  147. package/src/route-renderer/GRAPH.md +83 -325
  148. package/src/route-renderer/README.md +73 -90
  149. package/src/route-renderer/orchestration/component-render-context.d.ts +97 -0
  150. package/src/route-renderer/orchestration/component-render-context.js +147 -0
  151. package/src/route-renderer/orchestration/declared-ownership-graph.d.ts +18 -0
  152. package/src/route-renderer/orchestration/declared-ownership-graph.js +34 -0
  153. package/src/route-renderer/orchestration/foreign-subtree-execution.service.d.ts +110 -0
  154. package/src/route-renderer/orchestration/foreign-subtree-execution.service.js +233 -0
  155. package/src/route-renderer/orchestration/integration-renderer.d.ts +534 -0
  156. package/src/route-renderer/orchestration/integration-renderer.js +991 -0
  157. package/src/route-renderer/orchestration/ownership-planning.service.d.ts +24 -0
  158. package/src/route-renderer/orchestration/ownership-planning.service.js +63 -0
  159. package/src/route-renderer/orchestration/ownership-validation.service.d.ts +29 -0
  160. package/src/route-renderer/orchestration/ownership-validation.service.js +53 -0
  161. package/src/route-renderer/orchestration/processed-asset-dedupe.d.ts +3 -0
  162. package/src/route-renderer/orchestration/processed-asset-dedupe.js +27 -0
  163. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.d.ts +91 -0
  164. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.js +170 -0
  165. package/src/route-renderer/orchestration/render-output.utils.d.ts +66 -0
  166. package/src/route-renderer/orchestration/render-output.utils.js +171 -0
  167. package/src/route-renderer/orchestration/route-render-orchestrator.d.ts +156 -0
  168. package/src/route-renderer/orchestration/route-render-orchestrator.js +577 -0
  169. package/src/route-renderer/orchestration/template-serialization.d.ts +38 -0
  170. package/src/route-renderer/orchestration/template-serialization.js +45 -0
  171. package/src/route-renderer/page-loading/component-dependency-collection.d.ts +37 -0
  172. package/src/route-renderer/page-loading/component-dependency-collection.js +132 -0
  173. package/src/route-renderer/page-loading/declared-asset-collection.d.ts +24 -0
  174. package/src/route-renderer/page-loading/declared-asset-collection.js +106 -0
  175. package/src/route-renderer/{dependency-resolver.d.ts → page-loading/dependency-resolver.d.ts} +15 -4
  176. package/src/route-renderer/page-loading/dependency-resolver.js +115 -0
  177. package/src/route-renderer/page-loading/ecopages-virtual-imports.d.ts +11 -0
  178. package/src/route-renderer/page-loading/ecopages-virtual-imports.js +57 -0
  179. package/src/route-renderer/page-loading/lazy-entry-collection.d.ts +45 -0
  180. package/src/route-renderer/page-loading/lazy-entry-collection.js +105 -0
  181. package/src/route-renderer/page-loading/lazy-trigger-planning.d.ts +19 -0
  182. package/src/route-renderer/page-loading/lazy-trigger-planning.js +40 -0
  183. package/src/route-renderer/page-loading/module-declaration-aggregation.d.ts +5 -0
  184. package/src/route-renderer/page-loading/module-declaration-aggregation.js +33 -0
  185. package/src/route-renderer/page-loading/module-declaration-scripts.d.ts +3 -0
  186. package/src/route-renderer/page-loading/module-declaration-scripts.js +18 -0
  187. package/src/route-renderer/page-loading/page-dependency-bundling.d.ts +13 -0
  188. package/src/route-renderer/page-loading/page-dependency-bundling.js +137 -0
  189. package/src/route-renderer/page-loading/page-module-loader.d.ts +90 -0
  190. package/src/route-renderer/{page-module-loader.js → page-loading/page-module-loader.js} +39 -14
  191. package/src/route-renderer/route-renderer.d.ts +57 -14
  192. package/src/route-renderer/route-renderer.js +30 -18
  193. package/src/router/README.md +94 -0
  194. package/src/router/client/link-intent.d.ts +53 -0
  195. package/src/router/client/link-intent.js +34 -0
  196. package/src/router/client/link-intent.test.browser.d.ts +1 -0
  197. package/src/router/client/link-intent.test.browser.js +43 -0
  198. package/src/router/client/navigation-coordinator.d.ts +169 -0
  199. package/src/router/client/navigation-coordinator.js +215 -0
  200. package/src/router/server/route-registry.d.ts +78 -0
  201. package/src/router/server/route-registry.js +262 -0
  202. package/src/services/README.md +28 -0
  203. package/src/services/assets/asset-processing-service/asset-dependency-keys.d.ts +3 -0
  204. package/src/services/assets/asset-processing-service/asset-dependency-keys.js +56 -0
  205. package/src/services/assets/asset-processing-service/asset-processing.service.d.ts +103 -0
  206. package/src/services/{asset-processing-service → assets/asset-processing-service}/asset-processing.service.js +124 -89
  207. package/src/services/{asset-processing-service → assets/asset-processing-service}/asset.factory.d.ts +1 -1
  208. package/src/services/{asset-processing-service → assets/asset-processing-service}/asset.factory.js +2 -2
  209. package/src/services/{asset-processing-service → assets/asset-processing-service}/assets.types.d.ts +16 -1
  210. package/src/services/assets/asset-processing-service/assets.types.js +0 -0
  211. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.d.ts +57 -0
  212. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.js +49 -0
  213. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.d.ts +20 -0
  214. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.js +41 -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 -0
  218. package/src/services/assets/asset-processing-service/index.js +6 -0
  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/{asset-processing-service → assets/asset-processing-service}/processor.interface.d.ts +2 -2
  222. package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.registry.d.ts +2 -2
  223. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/base/base-processor.d.ts +1 -1
  224. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/base/base-processor.js +11 -5
  225. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.d.ts +22 -0
  226. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.js +136 -0
  227. package/src/services/assets/asset-processing-service/processors/index.d.ts +5 -0
  228. package/src/services/assets/asset-processing-service/processors/index.js +5 -0
  229. package/src/services/{asset-processing-service → 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 +120 -0
  231. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/file-script.processor.d.ts +4 -3
  232. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/file-script.processor.js +28 -7
  233. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.d.ts +42 -0
  234. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.js +126 -0
  235. package/src/services/{asset-processing-service → 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 +59 -0
  237. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/stylesheet/file-stylesheet.processor.d.ts +2 -2
  238. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/stylesheet/file-stylesheet.processor.js +9 -3
  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 +73 -0
  242. package/src/services/assets/browser-bundle.service.js +41 -0
  243. package/src/services/{page-request-cache-coordinator.service.d.ts → cache/page-request-cache-coordinator.service.d.ts} +2 -2
  244. package/src/services/{page-request-cache-coordinator.service.js → cache/page-request-cache-coordinator.service.js} +3 -1
  245. package/src/services/html/html-rewriter-provider.service.d.ts +40 -0
  246. package/src/services/html/html-rewriter-provider.service.js +68 -0
  247. package/src/services/html/html-transformer.service.d.ts +96 -0
  248. package/src/services/html/html-transformer.service.js +287 -0
  249. package/src/services/invalidation/development-invalidation.service.d.ts +74 -0
  250. package/src/services/invalidation/development-invalidation.service.js +190 -0
  251. package/src/services/module-loading/app-module-loader.service.d.ts +7 -0
  252. package/src/services/module-loading/app-module-loader.service.js +0 -0
  253. package/src/services/module-loading/app-server-module-transpiler.service.d.ts +24 -0
  254. package/src/services/module-loading/app-server-module-transpiler.service.js +151 -0
  255. package/src/services/module-loading/host-module-loader-registry.d.ts +4 -0
  256. package/src/services/module-loading/host-module-loader-registry.js +15 -0
  257. package/src/services/module-loading/module-loading-types.d.ts +2 -0
  258. package/src/services/module-loading/module-loading-types.js +0 -0
  259. package/src/services/module-loading/node-bootstrap-plugin.d.ts +38 -0
  260. package/src/services/module-loading/node-bootstrap-plugin.js +215 -0
  261. package/src/services/module-loading/page-module-import.service.d.ts +95 -0
  262. package/src/services/module-loading/page-module-import.service.js +191 -0
  263. package/src/services/module-loading/server-module-transpiler.service.d.ts +63 -0
  264. package/src/services/module-loading/server-module-transpiler.service.js +64 -0
  265. package/src/services/module-loading/source-module-support.d.ts +5 -0
  266. package/src/services/module-loading/source-module-support.js +8 -0
  267. package/src/services/runtime-state/dev-graph.service.d.ts +118 -0
  268. package/src/services/runtime-state/dev-graph.service.js +162 -0
  269. package/src/services/runtime-state/entrypoint-dependency-graph.service.d.ts +41 -0
  270. package/src/services/runtime-state/entrypoint-dependency-graph.service.js +85 -0
  271. package/src/services/runtime-state/server-invalidation-state.service.d.ts +26 -0
  272. package/src/services/runtime-state/server-invalidation-state.service.js +35 -0
  273. package/src/services/{schema-validation-service.d.ts → validation/schema-validation-service.d.ts} +1 -1
  274. package/src/static-site-generator/README.md +26 -0
  275. package/src/static-site-generator/static-site-generator.d.ts +67 -20
  276. package/src/static-site-generator/static-site-generator.js +182 -138
  277. package/src/{internal-types.d.ts → types/internal-types.d.ts} +62 -30
  278. package/src/types/internal-types.js +0 -0
  279. package/src/{public-types.d.ts → types/public-types.d.ts} +239 -31
  280. package/src/types/public-types.js +0 -0
  281. package/src/utils/html-escaping.d.ts +7 -0
  282. package/src/utils/html-escaping.js +6 -0
  283. package/src/utils/locals-utils.d.ts +1 -1
  284. package/src/utils/parse-cli-args.d.ts +4 -1
  285. package/src/utils/parse-cli-args.js +16 -1
  286. package/src/utils/resolve-work-dir.d.ts +11 -0
  287. package/src/utils/resolve-work-dir.js +31 -0
  288. package/src/watchers/project-watcher.d.ts +11 -7
  289. package/src/watchers/project-watcher.js +69 -75
  290. package/src/watchers/project-watcher.test-helpers.d.ts +2 -2
  291. package/src/watchers/project-watcher.test-helpers.js +6 -5
  292. package/CHANGELOG.md +0 -94
  293. package/src/adapters/abstract/application-adapter.ts +0 -337
  294. package/src/adapters/abstract/router-adapter.ts +0 -30
  295. package/src/adapters/abstract/server-adapter.ts +0 -79
  296. package/src/adapters/bun/client-bridge.ts +0 -62
  297. package/src/adapters/bun/create-app.ts +0 -189
  298. package/src/adapters/bun/define-api-handler.d.ts +0 -61
  299. package/src/adapters/bun/define-api-handler.ts +0 -114
  300. package/src/adapters/bun/hmr-manager.ts +0 -276
  301. package/src/adapters/bun/index.ts +0 -3
  302. package/src/adapters/bun/server-adapter.ts +0 -492
  303. package/src/adapters/bun/server-lifecycle.d.ts +0 -52
  304. package/src/adapters/bun/server-lifecycle.js +0 -120
  305. package/src/adapters/bun/server-lifecycle.ts +0 -154
  306. package/src/adapters/index.ts +0 -6
  307. package/src/adapters/node/create-app.ts +0 -179
  308. package/src/adapters/node/index.d.ts +0 -4
  309. package/src/adapters/node/index.js +0 -8
  310. package/src/adapters/node/index.ts +0 -9
  311. package/src/adapters/node/node-client-bridge.ts +0 -79
  312. package/src/adapters/node/node-hmr-manager.ts +0 -271
  313. package/src/adapters/node/server-adapter.ts +0 -561
  314. package/src/adapters/node/static-content-server.ts +0 -203
  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/explicit-static-route-matcher.ts +0 -134
  318. package/src/adapters/shared/file-route-middleware-pipeline.ts +0 -123
  319. package/src/adapters/shared/fs-server-response-factory.ts +0 -118
  320. package/src/adapters/shared/fs-server-response-matcher.ts +0 -198
  321. package/src/adapters/shared/render-context.ts +0 -105
  322. package/src/adapters/shared/server-adapter.ts +0 -442
  323. package/src/adapters/shared/server-route-handler.ts +0 -166
  324. package/src/adapters/shared/server-static-builder.ts +0 -82
  325. package/src/build/build-adapter.ts +0 -133
  326. package/src/build/build-types.ts +0 -83
  327. package/src/build/esbuild-build-adapter.ts +0 -511
  328. package/src/config/config-builder.ts +0 -474
  329. package/src/constants.ts +0 -39
  330. package/src/create-app.ts +0 -87
  331. package/src/define-api-handler.js +0 -15
  332. package/src/define-api-handler.ts +0 -66
  333. package/src/dev/sc-server.ts +0 -143
  334. package/src/eco/component-render-context.d.ts +0 -105
  335. package/src/eco/component-render-context.js +0 -77
  336. package/src/eco/component-render-context.ts +0 -202
  337. package/src/eco/eco.ts +0 -221
  338. package/src/eco/eco.types.ts +0 -202
  339. package/src/eco/eco.utils.ts +0 -89
  340. package/src/eco/global-injector-map.ts +0 -112
  341. package/src/eco/lazy-injector-map.ts +0 -120
  342. package/src/eco/module-dependencies.ts +0 -75
  343. package/src/errors/http-error.ts +0 -72
  344. package/src/errors/index.ts +0 -2
  345. package/src/errors/locals-access-error.ts +0 -7
  346. package/src/global/app-logger.ts +0 -4
  347. package/src/hmr/client/hmr-runtime.ts +0 -121
  348. package/src/hmr/hmr-strategy.ts +0 -172
  349. package/src/hmr/hmr.test.e2e.ts +0 -75
  350. package/src/hmr/strategies/default-hmr-strategy.ts +0 -60
  351. package/src/hmr/strategies/js-hmr-strategy.ts +0 -327
  352. package/src/index.browser.ts +0 -3
  353. package/src/index.ts +0 -5
  354. package/src/integrations/ghtml/ghtml-renderer.ts +0 -93
  355. package/src/integrations/ghtml/ghtml.plugin.ts +0 -32
  356. package/src/internal-types.ts +0 -212
  357. package/src/plugins/alias-resolver-plugin.ts +0 -45
  358. package/src/plugins/eco-component-meta-plugin.ts +0 -474
  359. package/src/plugins/integration-plugin.ts +0 -184
  360. package/src/plugins/processor.ts +0 -220
  361. package/src/public-types.ts +0 -1255
  362. package/src/route-renderer/component-graph-executor.d.ts +0 -32
  363. package/src/route-renderer/component-graph-executor.js +0 -31
  364. package/src/route-renderer/component-graph-executor.ts +0 -84
  365. package/src/route-renderer/component-graph.d.ts +0 -42
  366. package/src/route-renderer/component-graph.js +0 -72
  367. package/src/route-renderer/component-graph.ts +0 -159
  368. package/src/route-renderer/component-marker.d.ts +0 -52
  369. package/src/route-renderer/component-marker.js +0 -46
  370. package/src/route-renderer/component-marker.ts +0 -117
  371. package/src/route-renderer/dependency-resolver.js +0 -428
  372. package/src/route-renderer/dependency-resolver.ts +0 -596
  373. package/src/route-renderer/html-post-processing.service.d.ts +0 -40
  374. package/src/route-renderer/html-post-processing.service.js +0 -86
  375. package/src/route-renderer/html-post-processing.service.ts +0 -103
  376. package/src/route-renderer/integration-renderer.d.ts +0 -339
  377. package/src/route-renderer/integration-renderer.js +0 -526
  378. package/src/route-renderer/integration-renderer.ts +0 -696
  379. package/src/route-renderer/marker-graph-resolver.d.ts +0 -76
  380. package/src/route-renderer/marker-graph-resolver.js +0 -93
  381. package/src/route-renderer/marker-graph-resolver.ts +0 -153
  382. package/src/route-renderer/page-module-loader.d.ts +0 -61
  383. package/src/route-renderer/page-module-loader.ts +0 -153
  384. package/src/route-renderer/render-execution.service.d.ts +0 -69
  385. package/src/route-renderer/render-execution.service.js +0 -91
  386. package/src/route-renderer/render-execution.service.ts +0 -158
  387. package/src/route-renderer/render-preparation.service.d.ts +0 -112
  388. package/src/route-renderer/render-preparation.service.js +0 -243
  389. package/src/route-renderer/render-preparation.service.ts +0 -358
  390. package/src/route-renderer/route-renderer.ts +0 -80
  391. package/src/router/fs-router-scanner.d.ts +0 -41
  392. package/src/router/fs-router-scanner.js +0 -155
  393. package/src/router/fs-router-scanner.ts +0 -217
  394. package/src/router/fs-router.d.ts +0 -26
  395. package/src/router/fs-router.js +0 -100
  396. package/src/router/fs-router.ts +0 -122
  397. package/src/services/asset-processing-service/asset-processing.service.d.ts +0 -41
  398. package/src/services/asset-processing-service/asset-processing.service.ts +0 -306
  399. package/src/services/asset-processing-service/asset.factory.ts +0 -105
  400. package/src/services/asset-processing-service/assets.types.ts +0 -112
  401. package/src/services/asset-processing-service/index.d.ts +0 -3
  402. package/src/services/asset-processing-service/index.js +0 -3
  403. package/src/services/asset-processing-service/index.ts +0 -3
  404. package/src/services/asset-processing-service/processor.interface.ts +0 -27
  405. package/src/services/asset-processing-service/processor.registry.ts +0 -18
  406. package/src/services/asset-processing-service/processors/base/base-processor.ts +0 -76
  407. package/src/services/asset-processing-service/processors/base/base-script-processor.d.ts +0 -16
  408. package/src/services/asset-processing-service/processors/base/base-script-processor.js +0 -80
  409. package/src/services/asset-processing-service/processors/base/base-script-processor.ts +0 -105
  410. package/src/services/asset-processing-service/processors/index.d.ts +0 -5
  411. package/src/services/asset-processing-service/processors/index.js +0 -5
  412. package/src/services/asset-processing-service/processors/index.ts +0 -5
  413. package/src/services/asset-processing-service/processors/script/content-script.processor.js +0 -57
  414. package/src/services/asset-processing-service/processors/script/content-script.processor.ts +0 -66
  415. package/src/services/asset-processing-service/processors/script/file-script.processor.ts +0 -88
  416. package/src/services/asset-processing-service/processors/script/node-module-script.processor.d.ts +0 -7
  417. package/src/services/asset-processing-service/processors/script/node-module-script.processor.js +0 -74
  418. package/src/services/asset-processing-service/processors/script/node-module-script.processor.ts +0 -84
  419. package/src/services/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +0 -25
  420. package/src/services/asset-processing-service/processors/stylesheet/content-stylesheet.processor.ts +0 -27
  421. package/src/services/asset-processing-service/processors/stylesheet/file-stylesheet.processor.ts +0 -77
  422. package/src/services/cache/cache.types.ts +0 -126
  423. package/src/services/cache/index.ts +0 -18
  424. package/src/services/cache/memory-cache-store.ts +0 -130
  425. package/src/services/cache/page-cache-service.ts +0 -202
  426. package/src/services/html-transformer.service.d.ts +0 -50
  427. package/src/services/html-transformer.service.js +0 -163
  428. package/src/services/html-transformer.service.ts +0 -217
  429. package/src/services/page-module-import.service.d.ts +0 -37
  430. package/src/services/page-module-import.service.js +0 -88
  431. package/src/services/page-module-import.service.ts +0 -129
  432. package/src/services/page-request-cache-coordinator.service.ts +0 -128
  433. package/src/services/schema-validation-service.ts +0 -204
  434. package/src/services/validation/standard-schema.types.ts +0 -68
  435. package/src/static-site-generator/static-site-generator.ts +0 -359
  436. package/src/utils/css.d.ts +0 -1
  437. package/src/utils/css.js +0 -7
  438. package/src/utils/css.ts +0 -5
  439. package/src/utils/deep-merge.ts +0 -47
  440. package/src/utils/hash.ts +0 -5
  441. package/src/utils/html.ts +0 -1
  442. package/src/utils/invariant.ts +0 -15
  443. package/src/utils/locals-utils.ts +0 -37
  444. package/src/utils/parse-cli-args.ts +0 -83
  445. package/src/utils/path-utils.module.ts +0 -14
  446. package/src/utils/runtime.ts +0 -44
  447. package/src/utils/server-utils.module.ts +0 -67
  448. package/src/watchers/project-watcher.test-helpers.ts +0 -40
  449. package/src/watchers/project-watcher.ts +0 -364
  450. /package/src/adapters/{bun → shared}/define-api-handler.js +0 -0
  451. /package/src/{internal-types.js → adapters/shared/runtime-host.js} +0 -0
  452. /package/src/{public-types.js → adapters/shared/static-preview-host.js} +0 -0
  453. /package/src/{services/asset-processing-service/assets.types.js → plugins/runtime-capability.js} +0 -0
  454. /package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.interface.js +0 -0
  455. /package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.registry.js +0 -0
  456. /package/src/services/{schema-validation-service.js → validation/schema-validation-service.js} +0 -0
@@ -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,7 +1,8 @@
1
1
  import path from "node:path";
2
- import { RESOLVED_ASSETS_DIR } from "../../../../constants.js";
3
- import { rapidhash } from "../../../../utils/hash.js";
4
- import { isDevelopmentRuntime, isProductionRuntime } from "../../../../utils/runtime.js";
2
+ import { RESOLVED_ASSETS_DIR } from "../../../../../config/constants.js";
3
+ import { rapidhash } from "../../../../../utils/hash.js";
4
+ import { isDevelopmentRuntime, isProductionRuntime } from "../../../../../utils/runtime.js";
5
+ import { fileSystem } from "@ecopages/file-system";
5
6
  class BaseProcessor {
6
7
  appConfig;
7
8
  /**
@@ -37,11 +38,16 @@ class BaseProcessor {
37
38
  buildCacheKey(identifier, contentHash, dep) {
38
39
  const attrsHash = dep.attributes ? this.generateHash(JSON.stringify(dep.attributes)) : "";
39
40
  const position = dep.position ?? "";
40
- return `${identifier}:${contentHash}:${position}:${attrsHash}`;
41
+ const packageRole = dep.packageRole ?? "";
42
+ return `${identifier}:${contentHash}:${position}:${attrsHash}:${packageRole}`;
41
43
  }
42
44
  getOrProcess(cacheKey, processFn) {
43
45
  if (this.hasCacheFile(cacheKey)) {
44
- return Promise.resolve(this.getCacheFile(cacheKey));
46
+ const cached = this.getCacheFile(cacheKey);
47
+ if (!cached.filepath || fileSystem.exists(cached.filepath)) {
48
+ return Promise.resolve(cached);
49
+ }
50
+ this.cache.delete(cacheKey);
45
51
  }
46
52
  const result = processFn();
47
53
  if (result instanceof Promise) {
@@ -0,0 +1,22 @@
1
+ import type { EcoPagesAppConfig } from '../../../../../types/internal-types.js';
2
+ import type { EcoBuildPlugin } from '../../../../../build/build-types.js';
3
+ import type { ScriptAsset } from '../../assets.types.js';
4
+ import { BaseProcessor } from './base-processor.js';
5
+ import { type BrowserBundleGroupedEntry } from '../../../browser-bundle.service.js';
6
+ export declare abstract class BaseScriptProcessor<T extends ScriptAsset> extends BaseProcessor<T> {
7
+ private readonly browserBundleService;
8
+ constructor({ appConfig }: {
9
+ appConfig: EcoPagesAppConfig;
10
+ });
11
+ protected shouldBundle(dep: T): boolean;
12
+ protected getBundlerOptions(dep: T): Record<string, any>;
13
+ protected collectBuildPlugins(excludePluginNames?: string[]): EcoBuildPlugin[];
14
+ protected bundleScript({ entrypoint, outdir, excludeAppBuildPlugins, plugins: additionalPlugins, ...rest }: {
15
+ entrypoint: string;
16
+ outdir: string;
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>>;
22
+ }
@@ -0,0 +1,136 @@
1
+ import { appLogger } from "../../../../../global/app-logger.js";
2
+ import { getAppBrowserBuildPlugins } from "../../../../../build/build-adapter.js";
3
+ import { fileSystem } from "@ecopages/file-system";
4
+ import path from "node:path";
5
+ import { BaseProcessor } from "./base-processor.js";
6
+ import { BrowserBundleService } from "../../../browser-bundle.service.js";
7
+ class BaseScriptProcessor extends BaseProcessor {
8
+ browserBundleService;
9
+ constructor({ appConfig }) {
10
+ super({ appConfig });
11
+ this.browserBundleService = new BrowserBundleService(appConfig);
12
+ }
13
+ shouldBundle(dep) {
14
+ return dep.bundle !== false;
15
+ }
16
+ getBundlerOptions(dep) {
17
+ if (dep.packageRole === "page-script" && dep.bundleOptions?.splitting === void 0) {
18
+ return {
19
+ ...dep.bundleOptions,
20
+ splitting: false
21
+ };
22
+ }
23
+ return dep.bundleOptions || {};
24
+ }
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));
32
+ }
33
+ async bundleScript({
34
+ entrypoint,
35
+ outdir,
36
+ excludeAppBuildPlugins,
37
+ plugins: additionalPlugins,
38
+ ...rest
39
+ }) {
40
+ const buildPlugins = this.collectBuildPlugins(excludeAppBuildPlugins);
41
+ const allPlugins = additionalPlugins ? [...additionalPlugins, ...buildPlugins] : buildPlugins;
42
+ const buildResult = await this.browserBundleService.bundle({
43
+ profile: "browser-script",
44
+ entrypoints: [entrypoint],
45
+ outdir,
46
+ root: this.appConfig.rootDir,
47
+ excludeAppBuildPlugins,
48
+ splitting: true,
49
+ naming: "[name]-[hash].[ext]",
50
+ plugins: allPlugins,
51
+ ...rest
52
+ });
53
+ if (!buildResult.success) {
54
+ for (const log of buildResult.logs) {
55
+ appLogger.debug(log.message, log);
56
+ }
57
+ }
58
+ const entryBaseName = path.parse(entrypoint).name;
59
+ const entryOutput = buildResult.outputs.map((output) => output.path).find((outputPath) => path.basename(outputPath) === `${entryBaseName}.js`);
60
+ if (entryOutput) {
61
+ return entryOutput;
62
+ }
63
+ const nonVendorOutput = buildResult.outputs.map((output) => output.path).find((outputPath) => !path.basename(outputPath).startsWith("vendors"));
64
+ if (nonVendorOutput) {
65
+ return nonVendorOutput;
66
+ }
67
+ const primaryOutput = buildResult.outputs[0]?.path;
68
+ if (primaryOutput) {
69
+ return primaryOutput;
70
+ }
71
+ const namedFallbackOutput = path.join(outdir, `${entryBaseName}.js`);
72
+ if (fileSystem.exists(namedFallbackOutput)) {
73
+ return namedFallbackOutput;
74
+ }
75
+ const fallbackOutput = path.join(outdir, "entry_0.js");
76
+ if (fileSystem.exists(fallbackOutput)) {
77
+ return fallbackOutput;
78
+ }
79
+ const logMessage = buildResult.logs.map((log) => log.message).join(" | ");
80
+ throw new Error(`No build output generated for ${entrypoint}${logMessage ? `: ${logMessage}` : ""}`);
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
+ }
133
+ }
134
+ export {
135
+ BaseScriptProcessor
136
+ };
@@ -0,0 +1,5 @@
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';
@@ -0,0 +1,5 @@
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
  }
@@ -0,0 +1,120 @@
1
+ import path from "node:path";
2
+ import { fileSystem } from "@ecopages/file-system";
3
+ import { BaseScriptProcessor } from "../base/base-script-processor.js";
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
+ }
62
+ async process(dep) {
63
+ const hash = this.generateHash(dep.content);
64
+ const filename = dep.name ? `${dep.name}.js` : `script-${hash}.js`;
65
+ const shouldBundle = this.shouldBundle(dep);
66
+ const filepath = path.join(this.getAssetsDir(), "scripts", filename);
67
+ if (!shouldBundle) {
68
+ if (!dep.inline) fileSystem.write(filepath, dep.content);
69
+ const unbundledProcessedAsset = {
70
+ filepath,
71
+ content: dep.inline ? dep.content : void 0,
72
+ kind: "script",
73
+ position: dep.position,
74
+ attributes: dep.attributes,
75
+ inline: dep.inline,
76
+ excludeFromHtml: dep.excludeFromHtml,
77
+ packageRole: dep.packageRole,
78
+ groupedBundle: dep.groupedBundle,
79
+ bundledSourceFilepaths: dep.bundledSourceFilepaths
80
+ };
81
+ this.writeCacheFile(filename, unbundledProcessedAsset);
82
+ return unbundledProcessedAsset;
83
+ }
84
+ if (dep.content) {
85
+ const tempDir = this.appConfig.absolutePaths.distDir;
86
+ fileSystem.ensureDir(tempDir);
87
+ const tempFileName = path.join(
88
+ tempDir,
89
+ `${path.parse(filename).name}.${process.pid}.${Date.now()}.${Math.random().toString(36).slice(2)}.tmp.js`
90
+ );
91
+ fileSystem.write(tempFileName, dep.content);
92
+ const bundledFilePath = await this.bundleScript({
93
+ entrypoint: tempFileName,
94
+ outdir: this.getAssetsDir(),
95
+ minify: this.isProduction,
96
+ naming: `${path.parse(filename).name}-[hash].[ext]`,
97
+ ...this.getBundlerOptions(dep)
98
+ });
99
+ const processedAsset = {
100
+ filepath: bundledFilePath,
101
+ content: dep.inline ? fileSystem.readFileSync(bundledFilePath).toString() : void 0,
102
+ kind: "script",
103
+ position: dep.position,
104
+ attributes: dep.attributes,
105
+ inline: dep.inline,
106
+ excludeFromHtml: dep.excludeFromHtml,
107
+ packageRole: dep.packageRole,
108
+ groupedBundle: dep.groupedBundle,
109
+ bundledSourceFilepaths: dep.bundledSourceFilepaths
110
+ };
111
+ fileSystem.remove(tempFileName);
112
+ this.writeCacheFile(filename, processedAsset);
113
+ return processedAsset;
114
+ }
115
+ throw new Error("No content found for script asset");
116
+ }
117
+ }
118
+ export {
119
+ ContentScriptProcessor
120
+ };
@@ -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
- const outputUrl = await this.hmrManager.registerEntrypoint(dep.filepath);
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
  }
@@ -0,0 +1,42 @@
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
+ */
10
+ export declare class NodeModuleScriptProcessor extends BaseScriptProcessor<NodeModuleScriptAsset> {
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
+ */
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
+ */
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;
42
+ }