@ecopages/core 0.2.0-alpha.4 → 0.2.0-alpha.41

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