@ecopages/core 0.2.0-alpha.54 → 0.2.0-alpha.55

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 (594) hide show
  1. package/package.json +196 -91
  2. package/src/adapters/abstract/application-adapter.d.ts +194 -0
  3. package/src/adapters/abstract/application-adapter.js +121 -0
  4. package/src/adapters/abstract/router-adapter.d.ts +26 -0
  5. package/src/adapters/abstract/router-adapter.js +5 -0
  6. package/src/adapters/abstract/server-adapter.d.ts +69 -0
  7. package/src/adapters/abstract/server-adapter.js +15 -0
  8. package/src/adapters/bun/client-bridge.d.ts +34 -0
  9. package/src/adapters/bun/client-bridge.js +48 -0
  10. package/src/adapters/bun/create-app.d.ts +60 -0
  11. package/src/adapters/bun/create-app.js +140 -0
  12. package/src/adapters/bun/hmr-manager.d.ts +47 -0
  13. package/src/adapters/bun/hmr-manager.js +58 -0
  14. package/src/adapters/bun/index.d.ts +2 -0
  15. package/src/adapters/bun/index.js +8 -0
  16. package/src/adapters/bun/runtime-host.d.ts +52 -0
  17. package/src/adapters/bun/runtime-host.js +56 -0
  18. package/src/adapters/bun/server-adapter.d.ts +223 -0
  19. package/src/adapters/bun/server-adapter.js +450 -0
  20. package/src/adapters/bun/static-preview-host.d.ts +28 -0
  21. package/src/adapters/bun/static-preview-host.js +45 -0
  22. package/src/adapters/create-app.d.ts +20 -0
  23. package/src/adapters/create-app.js +66 -0
  24. package/src/adapters/index.d.ts +2 -0
  25. package/src/adapters/index.js +8 -0
  26. package/src/adapters/node/create-app.d.ts +24 -0
  27. package/src/adapters/node/create-app.js +92 -0
  28. package/src/adapters/node/http-request-bridge.d.ts +57 -0
  29. package/src/adapters/node/http-request-bridge.js +118 -0
  30. package/src/adapters/node/node-client-bridge.d.ts +26 -0
  31. package/src/adapters/node/node-client-bridge.js +66 -0
  32. package/src/adapters/node/node-hmr-manager.d.ts +52 -0
  33. package/src/adapters/node/node-hmr-manager.js +49 -0
  34. package/src/adapters/node/runtime-host.d.ts +57 -0
  35. package/src/adapters/node/runtime-host.js +92 -0
  36. package/src/adapters/node/server-adapter-dependencies.d.ts +19 -0
  37. package/src/adapters/node/server-adapter-dependencies.js +18 -0
  38. package/src/adapters/node/server-adapter.d.ts +138 -0
  39. package/src/adapters/node/server-adapter.js +313 -0
  40. package/src/adapters/node/static-content-server.d.ts +60 -0
  41. package/src/adapters/node/static-content-server.js +194 -0
  42. package/src/adapters/node/static-preview-host.d.ts +55 -0
  43. package/src/adapters/node/static-preview-host.js +68 -0
  44. package/src/adapters/shared/api-response.d.ts +52 -0
  45. package/src/adapters/shared/api-response.js +96 -0
  46. package/src/adapters/shared/application-adapter.d.ts +18 -0
  47. package/src/adapters/shared/application-adapter.js +90 -0
  48. package/src/adapters/shared/define-api-handler.d.ts +25 -0
  49. package/src/adapters/shared/define-api-handler.js +15 -0
  50. package/src/adapters/shared/explicit-static-render-preparation.d.ts +25 -0
  51. package/src/adapters/shared/explicit-static-render-preparation.js +26 -0
  52. package/src/adapters/shared/explicit-static-route-matcher.d.ts +41 -0
  53. package/src/adapters/shared/explicit-static-route-matcher.js +101 -0
  54. package/src/adapters/shared/file-route-middleware-pipeline.d.ts +62 -0
  55. package/src/adapters/shared/file-route-middleware-pipeline.js +90 -0
  56. package/src/adapters/shared/fs-server-response-factory.d.ts +23 -0
  57. package/src/adapters/shared/fs-server-response-factory.js +81 -0
  58. package/src/adapters/shared/fs-server-response-matcher.d.ts +75 -0
  59. package/src/adapters/shared/fs-server-response-matcher.js +186 -0
  60. package/src/adapters/shared/hmr-entrypoint-registrar.d.ts +55 -0
  61. package/src/adapters/shared/hmr-entrypoint-registrar.js +87 -0
  62. package/src/adapters/shared/hmr-html-response.d.ts +22 -0
  63. package/src/adapters/shared/hmr-html-response.js +33 -0
  64. package/src/adapters/shared/render-context.d.ts +16 -0
  65. package/src/adapters/shared/render-context.js +93 -0
  66. package/src/adapters/shared/runtime-app-bootstrap.d.ts +26 -0
  67. package/src/adapters/shared/runtime-app-bootstrap.js +46 -0
  68. package/src/adapters/shared/runtime-host.d.ts +12 -0
  69. package/src/adapters/shared/runtime-host.js +0 -0
  70. package/src/adapters/shared/server-adapter.d.ts +108 -0
  71. package/src/adapters/shared/server-adapter.js +436 -0
  72. package/src/adapters/shared/server-route-handler.d.ts +89 -0
  73. package/src/adapters/shared/server-route-handler.js +111 -0
  74. package/src/adapters/shared/server-static-builder.d.ts +71 -0
  75. package/src/adapters/shared/server-static-builder.js +100 -0
  76. package/src/adapters/shared/shared-hmr-manager.d.ts +59 -0
  77. package/src/adapters/shared/shared-hmr-manager.js +241 -0
  78. package/src/adapters/shared/static-preview-host.d.ts +10 -0
  79. package/src/adapters/shared/static-preview-host.js +0 -0
  80. package/src/build/browser-runtime-manifest.d.ts +31 -0
  81. package/src/build/browser-runtime-manifest.js +61 -0
  82. package/src/build/{browser-runtime-plugin-helpers.ts → browser-runtime-plugin-helpers.d.ts} +2 -13
  83. package/src/build/browser-runtime-plugin-helpers.js +14 -0
  84. package/src/build/browser-runtime-plugin.d.ts +78 -0
  85. package/src/build/browser-runtime-plugin.js +172 -0
  86. package/src/build/build-adapter.d.ts +504 -0
  87. package/src/build/build-adapter.js +240 -0
  88. package/src/build/build-manifest.d.ts +33 -0
  89. package/src/build/build-manifest.js +49 -0
  90. package/src/build/build-types.d.ts +57 -0
  91. package/src/build/build-types.js +0 -0
  92. package/src/build/rolldown-build-adapter.d.ts +32 -0
  93. package/src/build/rolldown-build-adapter.js +260 -0
  94. package/src/build/rolldown-plugin-bridge.d.ts +50 -0
  95. package/src/build/rolldown-plugin-bridge.js +194 -0
  96. package/src/build/{runtime-build-executor.ts → runtime-build-executor.d.ts} +3 -19
  97. package/src/build/runtime-build-executor.js +19 -0
  98. package/src/build/runtime-build-output-normalizer.d.ts +3 -0
  99. package/src/build/runtime-build-output-normalizer.js +111 -0
  100. package/src/build/serialized-build-executor.d.ts +64 -0
  101. package/src/build/serialized-build-executor.js +63 -0
  102. package/src/build/server-side-css-shim-plugin.d.ts +41 -0
  103. package/src/build/server-side-css-shim-plugin.js +35 -0
  104. package/src/cache/{index.ts → index.d.ts} +1 -1
  105. package/src/cache/index.js +6 -0
  106. package/src/cache/module-parse-cache.d.ts +65 -0
  107. package/src/cache/module-parse-cache.js +75 -0
  108. package/src/config/config-builder.d.ts +252 -0
  109. package/src/config/config-builder.js +589 -0
  110. package/src/config/{constants.ts → constants.d.ts} +13 -22
  111. package/src/config/constants.js +25 -0
  112. package/src/dev/host-runtime.d.ts +10 -0
  113. package/src/dev/host-runtime.js +24 -0
  114. package/src/dev/sc-server.d.ts +30 -0
  115. package/src/dev/sc-server.js +111 -0
  116. package/src/eco/eco.browser.d.ts +2 -0
  117. package/src/eco/eco.browser.js +88 -0
  118. package/src/eco/eco.d.ts +9 -0
  119. package/src/eco/eco.js +119 -0
  120. package/src/eco/eco.types.d.ts +230 -0
  121. package/src/eco/eco.types.js +0 -0
  122. package/src/eco/eco.utils.d.ts +1 -0
  123. package/src/eco/eco.utils.js +10 -0
  124. package/src/eco/global-injector-map.d.ts +16 -0
  125. package/src/eco/global-injector-map.js +80 -0
  126. package/src/eco/lazy-injector-map.d.ts +8 -0
  127. package/src/eco/lazy-injector-map.js +70 -0
  128. package/src/eco/module-dependencies.d.ts +18 -0
  129. package/src/eco/module-dependencies.js +49 -0
  130. package/src/errors/http-error.d.ts +31 -0
  131. package/src/errors/http-error.js +50 -0
  132. package/src/errors/index.d.ts +3 -0
  133. package/src/errors/index.js +6 -0
  134. package/src/errors/locals-access-error.d.ts +4 -0
  135. package/src/errors/locals-access-error.js +9 -0
  136. package/src/global/app-logger.d.ts +2 -0
  137. package/src/global/app-logger.js +6 -0
  138. package/src/hmr/client/hmr-runtime.d.ts +5 -0
  139. package/src/hmr/client/hmr-runtime.js +117 -0
  140. package/src/hmr/hmr-strategy.d.ts +162 -0
  141. package/src/hmr/hmr-strategy.js +44 -0
  142. package/src/hmr/hmr.postcss.test.e2e.d.ts +1 -0
  143. package/src/hmr/hmr.postcss.test.e2e.js +31 -0
  144. package/src/hmr/hmr.test.e2e.d.ts +1 -0
  145. package/src/hmr/hmr.test.e2e.js +43 -0
  146. package/src/hmr/strategies/default-hmr-strategy.d.ts +43 -0
  147. package/src/hmr/strategies/default-hmr-strategy.js +34 -0
  148. package/src/hmr/strategies/js-hmr-strategy.d.ts +134 -0
  149. package/src/hmr/strategies/js-hmr-strategy.js +173 -0
  150. package/src/index.browser.d.ts +3 -0
  151. package/src/index.browser.js +4 -0
  152. package/src/index.d.ts +6 -0
  153. package/src/index.js +21 -0
  154. package/src/integrations/ghtml/ghtml-renderer.d.ts +16 -0
  155. package/src/integrations/ghtml/ghtml-renderer.js +57 -0
  156. package/src/integrations/ghtml/ghtml.constants.d.ts +1 -0
  157. package/src/integrations/ghtml/ghtml.constants.js +4 -0
  158. package/src/integrations/ghtml/ghtml.plugin.d.ts +16 -0
  159. package/src/integrations/ghtml/ghtml.plugin.js +20 -0
  160. package/src/plugins/alias-resolver-cache.d.ts +68 -0
  161. package/src/plugins/alias-resolver-cache.js +106 -0
  162. package/src/plugins/alias-resolver-plugin.d.ts +6 -0
  163. package/src/plugins/alias-resolver-plugin.js +65 -0
  164. package/src/plugins/eco-component-meta-plugin.d.ts +108 -0
  165. package/src/plugins/eco-component-meta-plugin.js +175 -0
  166. package/src/plugins/foreign-jsx-override-plugin.d.ts +33 -0
  167. package/src/plugins/foreign-jsx-override-plugin.js +41 -0
  168. package/src/plugins/integration-plugin.d.ts +230 -0
  169. package/src/plugins/integration-plugin.js +201 -0
  170. package/src/plugins/processor.d.ts +97 -0
  171. package/src/plugins/processor.js +141 -0
  172. package/src/plugins/{runtime-capability.ts → runtime-capability.d.ts} +3 -8
  173. package/src/plugins/runtime-capability.js +0 -0
  174. package/src/plugins/source-transform.d.ts +46 -0
  175. package/src/plugins/source-transform.js +71 -0
  176. package/src/route-renderer/orchestration/component-render-context.d.ts +97 -0
  177. package/src/route-renderer/orchestration/component-render-context.js +147 -0
  178. package/src/route-renderer/orchestration/declared-ownership-graph.d.ts +18 -0
  179. package/src/route-renderer/orchestration/declared-ownership-graph.js +34 -0
  180. package/src/route-renderer/orchestration/foreign-subtree-execution.service.d.ts +110 -0
  181. package/src/route-renderer/orchestration/foreign-subtree-execution.service.js +233 -0
  182. package/src/route-renderer/orchestration/integration-renderer.d.ts +534 -0
  183. package/src/route-renderer/orchestration/integration-renderer.js +991 -0
  184. package/src/route-renderer/orchestration/ownership-planning.service.d.ts +24 -0
  185. package/src/route-renderer/orchestration/ownership-planning.service.js +63 -0
  186. package/src/route-renderer/orchestration/ownership-validation.service.d.ts +29 -0
  187. package/src/route-renderer/orchestration/ownership-validation.service.js +53 -0
  188. package/src/route-renderer/orchestration/processed-asset-dedupe.d.ts +3 -0
  189. package/src/route-renderer/orchestration/processed-asset-dedupe.js +27 -0
  190. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.d.ts +91 -0
  191. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.js +170 -0
  192. package/src/route-renderer/orchestration/render-output.utils.d.ts +66 -0
  193. package/src/route-renderer/orchestration/render-output.utils.js +171 -0
  194. package/src/route-renderer/orchestration/route-render-orchestrator.d.ts +156 -0
  195. package/src/route-renderer/orchestration/route-render-orchestrator.js +577 -0
  196. package/src/route-renderer/orchestration/template-serialization.d.ts +38 -0
  197. package/src/route-renderer/orchestration/template-serialization.js +45 -0
  198. package/src/route-renderer/page-loading/component-dependency-collection.d.ts +37 -0
  199. package/src/route-renderer/page-loading/component-dependency-collection.js +132 -0
  200. package/src/route-renderer/page-loading/declared-asset-collection.d.ts +24 -0
  201. package/src/route-renderer/page-loading/declared-asset-collection.js +106 -0
  202. package/src/route-renderer/page-loading/dependency-resolver.d.ts +35 -0
  203. package/src/route-renderer/page-loading/dependency-resolver.js +115 -0
  204. package/src/route-renderer/page-loading/ecopages-virtual-imports.d.ts +11 -0
  205. package/src/route-renderer/page-loading/ecopages-virtual-imports.js +57 -0
  206. package/src/route-renderer/page-loading/lazy-entry-collection.d.ts +45 -0
  207. package/src/route-renderer/page-loading/lazy-entry-collection.js +105 -0
  208. package/src/route-renderer/page-loading/lazy-trigger-planning.d.ts +19 -0
  209. package/src/route-renderer/page-loading/lazy-trigger-planning.js +40 -0
  210. package/src/route-renderer/page-loading/module-declaration-aggregation.d.ts +5 -0
  211. package/src/route-renderer/page-loading/module-declaration-aggregation.js +33 -0
  212. package/src/route-renderer/page-loading/module-declaration-scripts.d.ts +3 -0
  213. package/src/route-renderer/page-loading/module-declaration-scripts.js +18 -0
  214. package/src/route-renderer/page-loading/page-dependency-bundling.d.ts +13 -0
  215. package/src/route-renderer/page-loading/page-dependency-bundling.js +137 -0
  216. package/src/route-renderer/page-loading/page-module-loader.d.ts +90 -0
  217. package/src/route-renderer/page-loading/page-module-loader.js +127 -0
  218. package/src/route-renderer/route-renderer.d.ts +69 -0
  219. package/src/route-renderer/route-renderer.js +80 -0
  220. package/src/router/client/link-intent.js +34 -0
  221. package/src/router/client/link-intent.test.browser.d.ts +1 -0
  222. package/src/router/client/link-intent.test.browser.js +43 -0
  223. package/src/router/client/navigation-coordinator.d.ts +169 -0
  224. package/src/router/client/navigation-coordinator.js +215 -0
  225. package/src/router/server/route-registry.d.ts +78 -0
  226. package/src/router/server/route-registry.js +262 -0
  227. package/src/services/assets/asset-processing-service/asset-dependency-keys.d.ts +3 -0
  228. package/src/services/assets/asset-processing-service/asset-dependency-keys.js +56 -0
  229. package/src/services/assets/asset-processing-service/asset-processing.service.d.ts +103 -0
  230. package/src/services/assets/asset-processing-service/asset-processing.service.js +285 -0
  231. package/src/services/assets/asset-processing-service/asset.factory.d.ts +17 -0
  232. package/src/services/assets/asset-processing-service/asset.factory.js +82 -0
  233. package/src/services/assets/asset-processing-service/assets.types.d.ts +103 -0
  234. package/src/services/assets/asset-processing-service/assets.types.js +0 -0
  235. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.d.ts +57 -0
  236. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.js +49 -0
  237. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.d.ts +20 -0
  238. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.js +41 -0
  239. package/src/services/assets/asset-processing-service/grouped-content-bundles.d.ts +30 -0
  240. package/src/services/assets/asset-processing-service/grouped-content-bundles.js +65 -0
  241. package/src/services/assets/asset-processing-service/index.d.ts +6 -0
  242. package/src/services/assets/asset-processing-service/index.js +6 -0
  243. package/src/services/assets/asset-processing-service/page-package.d.ts +6 -0
  244. package/src/services/assets/asset-processing-service/page-package.js +80 -0
  245. package/src/services/assets/asset-processing-service/{processor.interface.ts → processor.interface.d.ts} +5 -10
  246. package/src/services/assets/asset-processing-service/processor.interface.js +6 -0
  247. package/src/services/assets/asset-processing-service/processor.registry.d.ts +8 -0
  248. package/src/services/assets/asset-processing-service/processor.registry.js +15 -0
  249. package/src/services/assets/asset-processing-service/processors/base/base-processor.d.ts +24 -0
  250. package/src/services/assets/asset-processing-service/processors/base/base-processor.js +65 -0
  251. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.d.ts +22 -0
  252. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.js +136 -0
  253. package/src/services/assets/asset-processing-service/processors/index.d.ts +5 -0
  254. package/src/services/assets/asset-processing-service/processors/index.js +5 -0
  255. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.d.ts +6 -0
  256. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.js +120 -0
  257. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.d.ts +9 -0
  258. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.js +97 -0
  259. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.d.ts +42 -0
  260. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.js +126 -0
  261. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.d.ts +8 -0
  262. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +59 -0
  263. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.d.ts +9 -0
  264. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.js +69 -0
  265. package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.d.ts +18 -0
  266. package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.js +45 -0
  267. package/src/services/assets/browser-bundle.service.d.ts +73 -0
  268. package/src/services/assets/browser-bundle.service.js +41 -0
  269. package/src/services/cache/cache.types.d.ts +107 -0
  270. package/src/services/cache/cache.types.js +0 -0
  271. package/src/services/cache/index.d.ts +7 -0
  272. package/src/services/cache/index.js +7 -0
  273. package/src/services/cache/memory-cache-store.d.ts +42 -0
  274. package/src/services/cache/memory-cache-store.js +98 -0
  275. package/src/services/cache/page-cache-service.d.ts +70 -0
  276. package/src/services/cache/page-cache-service.js +152 -0
  277. package/src/services/cache/page-request-cache-coordinator.service.d.ts +75 -0
  278. package/src/services/cache/page-request-cache-coordinator.service.js +109 -0
  279. package/src/services/html/html-rewriter-provider.service.d.ts +40 -0
  280. package/src/services/html/html-rewriter-provider.service.js +68 -0
  281. package/src/services/html/html-transformer.service.d.ts +96 -0
  282. package/src/services/html/html-transformer.service.js +287 -0
  283. package/src/services/invalidation/development-invalidation.service.d.ts +74 -0
  284. package/src/services/invalidation/development-invalidation.service.js +190 -0
  285. package/src/services/module-loading/app-module-loader.service.d.ts +7 -0
  286. package/src/services/module-loading/app-module-loader.service.js +0 -0
  287. package/src/services/module-loading/app-server-module-transpiler.service.d.ts +24 -0
  288. package/src/services/module-loading/app-server-module-transpiler.service.js +130 -0
  289. package/src/services/module-loading/host-module-loader-registry.d.ts +4 -0
  290. package/src/services/module-loading/host-module-loader-registry.js +15 -0
  291. package/src/services/module-loading/{module-loading-types.ts → module-loading-types.d.ts} +0 -1
  292. package/src/services/module-loading/module-loading-types.js +0 -0
  293. package/src/services/module-loading/page-module-import.service.d.ts +95 -0
  294. package/src/services/module-loading/page-module-import.service.js +193 -0
  295. package/src/services/module-loading/server-module-transpiler.service.d.ts +63 -0
  296. package/src/services/module-loading/server-module-transpiler.service.js +64 -0
  297. package/src/services/module-loading/source-module-support.d.ts +5 -0
  298. package/src/services/module-loading/source-module-support.js +8 -0
  299. package/src/services/runtime-state/dev-graph.service.d.ts +118 -0
  300. package/src/services/runtime-state/dev-graph.service.js +162 -0
  301. package/src/services/runtime-state/entrypoint-dependency-graph.service.d.ts +41 -0
  302. package/src/services/runtime-state/entrypoint-dependency-graph.service.js +85 -0
  303. package/src/services/runtime-state/server-invalidation-state.service.d.ts +26 -0
  304. package/src/services/runtime-state/server-invalidation-state.service.js +35 -0
  305. package/src/services/validation/schema-validation-service.d.ts +122 -0
  306. package/src/services/validation/schema-validation-service.js +101 -0
  307. package/src/services/validation/{standard-schema.types.ts → standard-schema.types.d.ts} +17 -20
  308. package/src/services/validation/standard-schema.types.js +0 -0
  309. package/src/static-site-generator/static-site-generator.d.ts +104 -0
  310. package/src/static-site-generator/static-site-generator.js +316 -0
  311. package/src/types/internal-types.d.ts +232 -0
  312. package/src/types/internal-types.js +0 -0
  313. package/src/types/public-types.d.ts +1307 -0
  314. package/src/types/public-types.js +0 -0
  315. package/src/utils/deep-merge.d.ts +14 -0
  316. package/src/utils/deep-merge.js +32 -0
  317. package/src/utils/hash.d.ts +1 -0
  318. package/src/utils/hash.js +7 -0
  319. package/src/utils/html-escaping.d.ts +7 -0
  320. package/src/utils/html-escaping.js +6 -0
  321. package/src/utils/html.js +4 -0
  322. package/src/utils/invariant.d.ts +5 -0
  323. package/src/utils/invariant.js +11 -0
  324. package/src/utils/locals-utils.d.ts +15 -0
  325. package/src/utils/locals-utils.js +24 -0
  326. package/src/utils/parse-cli-args.d.ts +27 -0
  327. package/src/utils/parse-cli-args.js +62 -0
  328. package/src/utils/path-utils.module.d.ts +5 -0
  329. package/src/utils/path-utils.module.js +14 -0
  330. package/src/utils/resolve-work-dir.d.ts +11 -0
  331. package/src/utils/resolve-work-dir.js +31 -0
  332. package/src/utils/runtime.d.ts +11 -0
  333. package/src/utils/runtime.js +40 -0
  334. package/src/utils/server-utils.module.d.ts +19 -0
  335. package/src/utils/server-utils.module.js +56 -0
  336. package/src/watchers/project-watcher.d.ts +136 -0
  337. package/src/watchers/project-watcher.js +275 -0
  338. package/src/watchers/project-watcher.test-helpers.d.ts +4 -0
  339. package/src/watchers/project-watcher.test-helpers.js +52 -0
  340. package/src/adapters/abstract/application-adapter.test.ts +0 -218
  341. package/src/adapters/abstract/application-adapter.ts +0 -379
  342. package/src/adapters/abstract/router-adapter.ts +0 -30
  343. package/src/adapters/abstract/server-adapter.ts +0 -79
  344. package/src/adapters/bun/client-bridge.ts +0 -62
  345. package/src/adapters/bun/create-app.ts +0 -214
  346. package/src/adapters/bun/hmr-manager.test.ts +0 -265
  347. package/src/adapters/bun/hmr-manager.ts +0 -88
  348. package/src/adapters/bun/index.ts +0 -2
  349. package/src/adapters/bun/runtime-host.ts +0 -76
  350. package/src/adapters/bun/server-adapter.ts +0 -605
  351. package/src/adapters/bun/static-preview-host.ts +0 -70
  352. package/src/adapters/create-app.test.ts +0 -10
  353. package/src/adapters/create-app.ts +0 -91
  354. package/src/adapters/index.ts +0 -2
  355. package/src/adapters/node/create-app.test.ts +0 -76
  356. package/src/adapters/node/create-app.ts +0 -116
  357. package/src/adapters/node/http-request-bridge.test.ts +0 -146
  358. package/src/adapters/node/http-request-bridge.ts +0 -176
  359. package/src/adapters/node/node-client-bridge.test.ts +0 -198
  360. package/src/adapters/node/node-client-bridge.ts +0 -79
  361. package/src/adapters/node/node-hmr-manager.test.ts +0 -374
  362. package/src/adapters/node/node-hmr-manager.ts +0 -72
  363. package/src/adapters/node/runtime-host.test.ts +0 -49
  364. package/src/adapters/node/runtime-host.ts +0 -113
  365. package/src/adapters/node/server-adapter-dependencies.ts +0 -28
  366. package/src/adapters/node/server-adapter.test.ts +0 -84
  367. package/src/adapters/node/server-adapter.ts +0 -423
  368. package/src/adapters/node/static-content-server.test.ts +0 -60
  369. package/src/adapters/node/static-content-server.ts +0 -239
  370. package/src/adapters/node/static-preview-host.test.ts +0 -89
  371. package/src/adapters/node/static-preview-host.ts +0 -101
  372. package/src/adapters/shared/api-response.test.ts +0 -97
  373. package/src/adapters/shared/api-response.ts +0 -104
  374. package/src/adapters/shared/application-adapter.ts +0 -199
  375. package/src/adapters/shared/define-api-handler.ts +0 -66
  376. package/src/adapters/shared/explicit-static-render-preparation.ts +0 -58
  377. package/src/adapters/shared/explicit-static-route-matcher.test.ts +0 -381
  378. package/src/adapters/shared/explicit-static-route-matcher.ts +0 -131
  379. package/src/adapters/shared/file-route-middleware-pipeline.test.ts +0 -85
  380. package/src/adapters/shared/file-route-middleware-pipeline.ts +0 -118
  381. package/src/adapters/shared/fs-server-response-factory.test.ts +0 -176
  382. package/src/adapters/shared/fs-server-response-factory.ts +0 -96
  383. package/src/adapters/shared/fs-server-response-matcher.test.ts +0 -311
  384. package/src/adapters/shared/fs-server-response-matcher.ts +0 -240
  385. package/src/adapters/shared/hmr-entrypoint-registrar.ts +0 -149
  386. package/src/adapters/shared/hmr-html-response.ts +0 -54
  387. package/src/adapters/shared/hmr-manager.contract.test.ts +0 -228
  388. package/src/adapters/shared/hmr-manager.dispatch.test.ts +0 -229
  389. package/src/adapters/shared/render-context.test.ts +0 -244
  390. package/src/adapters/shared/render-context.ts +0 -161
  391. package/src/adapters/shared/runtime-app-bootstrap.test.ts +0 -96
  392. package/src/adapters/shared/runtime-app-bootstrap.ts +0 -72
  393. package/src/adapters/shared/runtime-host.ts +0 -11
  394. package/src/adapters/shared/server-adapter.test.ts +0 -130
  395. package/src/adapters/shared/server-adapter.ts +0 -571
  396. package/src/adapters/shared/server-route-handler.test.ts +0 -112
  397. package/src/adapters/shared/server-route-handler.ts +0 -153
  398. package/src/adapters/shared/server-static-builder.test.ts +0 -338
  399. package/src/adapters/shared/server-static-builder.ts +0 -170
  400. package/src/adapters/shared/shared-hmr-manager.ts +0 -298
  401. package/src/adapters/shared/static-preview-host.ts +0 -12
  402. package/src/build/browser-runtime-manifest.test.ts +0 -121
  403. package/src/build/browser-runtime-manifest.ts +0 -105
  404. package/src/build/browser-runtime-plugin-helpers.test.ts +0 -49
  405. package/src/build/browser-runtime-plugin.test.ts +0 -256
  406. package/src/build/browser-runtime-plugin.ts +0 -306
  407. package/src/build/build-adapter.test.ts +0 -463
  408. package/src/build/build-adapter.ts +0 -788
  409. package/src/build/build-manifest.ts +0 -79
  410. package/src/build/build-types.ts +0 -83
  411. package/src/build/rolldown-build-adapter.test.ts +0 -352
  412. package/src/build/rolldown-build-adapter.ts +0 -363
  413. package/src/build/rolldown-plugin-bridge.test.ts +0 -256
  414. package/src/build/rolldown-plugin-bridge.ts +0 -309
  415. package/src/build/runtime-build-executor.test.ts +0 -130
  416. package/src/build/runtime-build-output-normalizer.ts +0 -137
  417. package/src/build/serialized-build-executor.test.ts +0 -96
  418. package/src/build/serialized-build-executor.ts +0 -90
  419. package/src/build/server-side-css-shim-plugin.ts +0 -77
  420. package/src/cache/module-parse-cache.test.ts +0 -73
  421. package/src/cache/module-parse-cache.ts +0 -137
  422. package/src/config/config-builder.test.ts +0 -456
  423. package/src/config/config-builder.ts +0 -728
  424. package/src/config/config-builder.typecheck.test.ts +0 -96
  425. package/src/dev/host-runtime.ts +0 -34
  426. package/src/dev/sc-server.ts +0 -143
  427. package/src/eco/eco.browser.test.ts +0 -43
  428. package/src/eco/eco.browser.ts +0 -137
  429. package/src/eco/eco.test.ts +0 -781
  430. package/src/eco/eco.ts +0 -262
  431. package/src/eco/eco.types.ts +0 -293
  432. package/src/eco/eco.utils.test.ts +0 -219
  433. package/src/eco/eco.utils.ts +0 -5
  434. package/src/eco/global-injector-map.test.ts +0 -42
  435. package/src/eco/global-injector-map.ts +0 -112
  436. package/src/eco/lazy-injector-map.test.ts +0 -66
  437. package/src/eco/lazy-injector-map.ts +0 -120
  438. package/src/eco/module-dependencies.test.ts +0 -30
  439. package/src/eco/module-dependencies.ts +0 -75
  440. package/src/errors/http-error.test.ts +0 -134
  441. package/src/errors/http-error.ts +0 -72
  442. package/src/errors/index.ts +0 -3
  443. package/src/errors/locals-access-error.ts +0 -7
  444. package/src/global/app-logger.ts +0 -4
  445. package/src/global/utils.test.ts +0 -12
  446. package/src/hmr/client/__screenshots__/hmr-runtime.test.browser.ts/HMR-Runtime-HMR-Server-Integration-should-have-HMR-script-injected-in-page-1.png +0 -0
  447. package/src/hmr/client/__screenshots__/hmr-runtime.test.browser.ts/HMR-Runtime-HMR-Server-Integration-should-load-fixture-app-page-1.png +0 -0
  448. package/src/hmr/client/__screenshots__/hmr-runtime.test.browser.ts/HMR-Runtime-WebSocket-Connection-should-connect-to-correct-HMR-endpoint-1.png +0 -0
  449. package/src/hmr/client/hmr-runtime.ts +0 -162
  450. package/src/hmr/hmr-strategy.test.ts +0 -124
  451. package/src/hmr/hmr-strategy.ts +0 -177
  452. package/src/hmr/hmr.postcss.test.e2e.ts +0 -41
  453. package/src/hmr/hmr.test.e2e.ts +0 -66
  454. package/src/hmr/strategies/default-hmr-strategy.ts +0 -60
  455. package/src/hmr/strategies/js-hmr-strategy.test.ts +0 -344
  456. package/src/hmr/strategies/js-hmr-strategy.ts +0 -307
  457. package/src/index.browser.ts +0 -3
  458. package/src/index.ts +0 -15
  459. package/src/integrations/ghtml/ghtml-renderer.test.ts +0 -253
  460. package/src/integrations/ghtml/ghtml-renderer.ts +0 -87
  461. package/src/integrations/ghtml/ghtml.constants.ts +0 -1
  462. package/src/integrations/ghtml/ghtml.plugin.ts +0 -28
  463. package/src/plugins/alias-resolver-cache.test.ts +0 -110
  464. package/src/plugins/alias-resolver-cache.ts +0 -145
  465. package/src/plugins/alias-resolver-plugin.test.ts +0 -41
  466. package/src/plugins/alias-resolver-plugin.ts +0 -75
  467. package/src/plugins/eco-component-meta-plugin.test.ts +0 -421
  468. package/src/plugins/eco-component-meta-plugin.ts +0 -518
  469. package/src/plugins/foreign-jsx-override-plugin.test.ts +0 -65
  470. package/src/plugins/foreign-jsx-override-plugin.ts +0 -76
  471. package/src/plugins/integration-plugin.test.ts +0 -151
  472. package/src/plugins/integration-plugin.ts +0 -344
  473. package/src/plugins/processor.test.ts +0 -148
  474. package/src/plugins/processor.ts +0 -257
  475. package/src/plugins/source-transform.test.ts +0 -82
  476. package/src/plugins/source-transform.ts +0 -123
  477. package/src/route-renderer/orchestration/component-render-context.ts +0 -338
  478. package/src/route-renderer/orchestration/declared-ownership-graph.ts +0 -62
  479. package/src/route-renderer/orchestration/foreign-subtree-execution.service.ts +0 -431
  480. package/src/route-renderer/orchestration/integration-renderer.test.ts +0 -2251
  481. package/src/route-renderer/orchestration/integration-renderer.ts +0 -1384
  482. package/src/route-renderer/orchestration/ownership-planning.service.ts +0 -97
  483. package/src/route-renderer/orchestration/ownership-validation.service.ts +0 -76
  484. package/src/route-renderer/orchestration/processed-asset-dedupe.ts +0 -29
  485. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.test.ts +0 -435
  486. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.ts +0 -310
  487. package/src/route-renderer/orchestration/render-output.utils.ts +0 -310
  488. package/src/route-renderer/orchestration/route-render-orchestrator.prepare-render-options.test.ts +0 -1365
  489. package/src/route-renderer/orchestration/route-render-orchestrator.test.ts +0 -267
  490. package/src/route-renderer/orchestration/route-render-orchestrator.ts +0 -879
  491. package/src/route-renderer/orchestration/template-serialization.test.ts +0 -110
  492. package/src/route-renderer/orchestration/template-serialization.ts +0 -117
  493. package/src/route-renderer/page-loading/component-dependency-collection.ts +0 -202
  494. package/src/route-renderer/page-loading/declared-asset-collection.ts +0 -153
  495. package/src/route-renderer/page-loading/dependency-resolver.test.ts +0 -761
  496. package/src/route-renderer/page-loading/dependency-resolver.ts +0 -144
  497. package/src/route-renderer/page-loading/ecopages-virtual-imports.ts +0 -75
  498. package/src/route-renderer/page-loading/lazy-entry-collection.ts +0 -167
  499. package/src/route-renderer/page-loading/lazy-trigger-planning.ts +0 -74
  500. package/src/route-renderer/page-loading/module-declaration-aggregation.ts +0 -60
  501. package/src/route-renderer/page-loading/module-declaration-scripts.ts +0 -16
  502. package/src/route-renderer/page-loading/page-dependency-bundling.ts +0 -244
  503. package/src/route-renderer/page-loading/page-module-loader.test.ts +0 -183
  504. package/src/route-renderer/page-loading/page-module-loader.ts +0 -184
  505. package/src/route-renderer/route-renderer.ts +0 -133
  506. package/src/router/client/link-intent.test.browser.ts +0 -51
  507. package/src/router/client/link-intent.ts +0 -92
  508. package/src/router/client/navigation-coordinator.test.ts +0 -237
  509. package/src/router/client/navigation-coordinator.ts +0 -453
  510. package/src/router/server/route-registry.test.ts +0 -176
  511. package/src/router/server/route-registry.ts +0 -382
  512. package/src/services/assets/asset-processing-service/asset-dependency-keys.ts +0 -66
  513. package/src/services/assets/asset-processing-service/asset-processing.service.test.ts +0 -473
  514. package/src/services/assets/asset-processing-service/asset-processing.service.ts +0 -344
  515. package/src/services/assets/asset-processing-service/asset.factory.test.ts +0 -63
  516. package/src/services/assets/asset-processing-service/asset.factory.ts +0 -105
  517. package/src/services/assets/asset-processing-service/assets.types.ts +0 -128
  518. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.test.ts +0 -74
  519. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.ts +0 -98
  520. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.test.ts +0 -67
  521. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.ts +0 -78
  522. package/src/services/assets/asset-processing-service/grouped-content-bundles.ts +0 -104
  523. package/src/services/assets/asset-processing-service/index.ts +0 -6
  524. package/src/services/assets/asset-processing-service/page-package.test.ts +0 -135
  525. package/src/services/assets/asset-processing-service/page-package.ts +0 -103
  526. package/src/services/assets/asset-processing-service/processor.registry.ts +0 -18
  527. package/src/services/assets/asset-processing-service/processors/base/base-processor.test.ts +0 -59
  528. package/src/services/assets/asset-processing-service/processors/base/base-processor.ts +0 -83
  529. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.ts +0 -173
  530. package/src/services/assets/asset-processing-service/processors/index.ts +0 -5
  531. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.test.ts +0 -188
  532. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.ts +0 -138
  533. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.test.ts +0 -326
  534. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.ts +0 -116
  535. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.test.ts +0 -270
  536. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.ts +0 -145
  537. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.test.ts +0 -261
  538. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.ts +0 -72
  539. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.ts +0 -83
  540. package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.ts +0 -65
  541. package/src/services/assets/browser-bundle.service.test.ts +0 -66
  542. package/src/services/assets/browser-bundle.service.ts +0 -109
  543. package/src/services/cache/cache.types.ts +0 -126
  544. package/src/services/cache/index.ts +0 -18
  545. package/src/services/cache/memory-cache-store.test.ts +0 -225
  546. package/src/services/cache/memory-cache-store.ts +0 -130
  547. package/src/services/cache/page-cache-service.test.ts +0 -175
  548. package/src/services/cache/page-cache-service.ts +0 -202
  549. package/src/services/cache/page-request-cache-coordinator.service.test.ts +0 -79
  550. package/src/services/cache/page-request-cache-coordinator.service.ts +0 -131
  551. package/src/services/html/html-rewriter-provider.service.test.ts +0 -183
  552. package/src/services/html/html-rewriter-provider.service.ts +0 -105
  553. package/src/services/html/html-transformer.service.test.ts +0 -544
  554. package/src/services/html/html-transformer.service.ts +0 -369
  555. package/src/services/invalidation/development-invalidation.service.test.ts +0 -87
  556. package/src/services/invalidation/development-invalidation.service.ts +0 -262
  557. package/src/services/module-loading/app-module-loader.service.ts +0 -9
  558. package/src/services/module-loading/app-server-module-transpiler.service.test.ts +0 -297
  559. package/src/services/module-loading/app-server-module-transpiler.service.ts +0 -168
  560. package/src/services/module-loading/host-module-loader-registry.ts +0 -15
  561. package/src/services/module-loading/page-module-import.service.test.ts +0 -652
  562. package/src/services/module-loading/page-module-import.service.ts +0 -302
  563. package/src/services/module-loading/server-module-transpiler.service.test.ts +0 -242
  564. package/src/services/module-loading/server-module-transpiler.service.ts +0 -104
  565. package/src/services/module-loading/source-module-support.ts +0 -19
  566. package/src/services/runtime-state/dev-graph.service.ts +0 -217
  567. package/src/services/runtime-state/entrypoint-dependency-graph.service.ts +0 -136
  568. package/src/services/runtime-state/server-invalidation-state.service.ts +0 -68
  569. package/src/services/validation/schema-validation-service.test.ts +0 -223
  570. package/src/services/validation/schema-validation-service.ts +0 -204
  571. package/src/static-site-generator/static-site-generator.test.ts +0 -408
  572. package/src/static-site-generator/static-site-generator.ts +0 -445
  573. package/src/types/internal-types.ts +0 -243
  574. package/src/types/public-types.ts +0 -1508
  575. package/src/utils/deep-merge.test.ts +0 -114
  576. package/src/utils/deep-merge.ts +0 -47
  577. package/src/utils/hash.ts +0 -5
  578. package/src/utils/html-escaping.ts +0 -9
  579. package/src/utils/invariant.test.ts +0 -22
  580. package/src/utils/invariant.ts +0 -15
  581. package/src/utils/locals-utils.ts +0 -37
  582. package/src/utils/parse-cli-args.test.ts +0 -69
  583. package/src/utils/parse-cli-args.ts +0 -105
  584. package/src/utils/path-utils.module.ts +0 -14
  585. package/src/utils/path-utils.test.ts +0 -15
  586. package/src/utils/resolve-work-dir.ts +0 -45
  587. package/src/utils/runtime.ts +0 -44
  588. package/src/utils/server-utils.module.ts +0 -67
  589. package/src/utils/server-utils.test.ts +0 -38
  590. package/src/watchers/project-watcher.integration.test.ts +0 -337
  591. package/src/watchers/project-watcher.test-helpers.ts +0 -42
  592. package/src/watchers/project-watcher.test.ts +0 -768
  593. package/src/watchers/project-watcher.ts +0 -357
  594. /package/src/utils/{html.ts → html.d.ts} +0 -0
@@ -1,74 +0,0 @@
1
- import assert from 'node:assert/strict';
2
- import fs from 'node:fs';
3
- import os from 'node:os';
4
- import path from 'node:path';
5
- import { test } from 'vitest';
6
- import {
7
- BROWSER_RUNTIME_SCRIPT_ATTRIBUTES,
8
- buildBrowserRuntimeAssetUrl,
9
- createBrowserRuntimeModuleAsset,
10
- createBrowserRuntimeScriptAsset,
11
- } from './browser-runtime-asset.factory.ts';
12
-
13
- test('buildBrowserRuntimeAssetUrl uses the vendors asset directory', () => {
14
- assert.equal(buildBrowserRuntimeAssetUrl('react.js'), '/assets/vendors/react.js');
15
- });
16
-
17
- test('createBrowserRuntimeScriptAsset creates a hidden head runtime bundle asset', () => {
18
- const plugin = { name: 'runtime-plugin', setup() {} };
19
- const asset = createBrowserRuntimeScriptAsset({
20
- importPath: '/tmp/react-entry.mjs',
21
- name: 'react',
22
- fileName: 'react.js',
23
- bundleOptions: {
24
- plugins: [plugin],
25
- },
26
- });
27
-
28
- assert.deepEqual(asset, {
29
- kind: 'script',
30
- source: 'node-module',
31
- position: 'head',
32
- importPath: '/tmp/react-entry.mjs',
33
- name: 'react',
34
- packageRole: 'runtime',
35
- excludeFromHtml: true,
36
- bundleOptions: {
37
- naming: 'react.js',
38
- plugins: [plugin],
39
- },
40
- attributes: BROWSER_RUNTIME_SCRIPT_ATTRIBUTES,
41
- });
42
- });
43
-
44
- test('createBrowserRuntimeModuleAsset creates an entry module and hidden runtime asset together', () => {
45
- const rootDir = fs.mkdtempSync(path.join(os.tmpdir(), 'eco-browser-runtime-asset-'));
46
- fs.writeFileSync(path.join(rootDir, 'package.json'), '{}', 'utf8');
47
- fs.mkdirSync(path.join(rootDir, 'node_modules', 'runtime-a'), { recursive: true });
48
- fs.writeFileSync(
49
- path.join(rootDir, 'node_modules', 'runtime-a', 'index.js'),
50
- "module.exports = { default: 'runtime-a', alpha: 'a' };",
51
- 'utf8',
52
- );
53
-
54
- try {
55
- const asset = createBrowserRuntimeModuleAsset({
56
- rootDir,
57
- cacheDirName: 'ecopages-browser-runtime-test',
58
- modules: [{ specifier: 'runtime-a', defaultExport: true }],
59
- name: 'runtime-a',
60
- fileName: 'runtime-a.js',
61
- });
62
-
63
- assert.equal(asset.source, 'node-module');
64
- assert.equal(
65
- asset.importPath.endsWith(path.join('ecopages-browser-runtime-test', 'runtime-a-entry.mjs')),
66
- true,
67
- );
68
- assert.equal(asset.bundleOptions?.naming, 'runtime-a.js');
69
- assert.equal(asset.excludeFromHtml, true);
70
- assert.equal(asset.packageRole, 'runtime');
71
- } finally {
72
- fs.rmSync(rootDir, { recursive: true, force: true });
73
- }
74
- });
@@ -1,98 +0,0 @@
1
- import type { EcoBuildPlugin } from '../../../build/build-types.ts';
2
- import { AssetFactory } from './asset.factory.ts';
3
- import type { AssetDefinition } from './assets.types.ts';
4
- import {
5
- createBrowserRuntimeEntryModule,
6
- type BrowserRuntimeEntryModuleConfig,
7
- } from './browser-runtime-entry.factory.ts';
8
-
9
- export const BROWSER_RUNTIME_SCRIPT_ATTRIBUTES = {
10
- type: 'module',
11
- defer: '',
12
- } as const;
13
-
14
- /**
15
- * Builds the public vendor URL used for generated browser runtime assets.
16
- */
17
- export function buildBrowserRuntimeAssetUrl(fileName: string): string {
18
- return `/${AssetFactory.RESOLVED_ASSETS_VENDORS_DIR}/${fileName}`;
19
- }
20
-
21
- /**
22
- * Declares a browser runtime script asset backed by one importable module.
23
- *
24
- * @remarks
25
- * Runtime assets are emitted as excluded head scripts because integrations often
26
- * need the bundler output and specifier registration without injecting the raw
27
- * asset directly into HTML during dependency resolution.
28
- */
29
- export function createBrowserRuntimeScriptAsset(options: {
30
- importPath: string;
31
- name: string;
32
- fileName: string;
33
- bundleOptions?: {
34
- define?: Record<string, string>;
35
- minify?: boolean;
36
- external?: string[];
37
- excludeAppBuildPlugins?: string[];
38
- naming?: string;
39
- plugins?: EcoBuildPlugin[];
40
- };
41
- attributes?: Record<string, string>;
42
- }): AssetDefinition {
43
- return AssetFactory.createNodeModuleScript({
44
- position: 'head',
45
- importPath: options.importPath,
46
- name: options.name,
47
- packageRole: 'runtime',
48
- excludeFromHtml: true,
49
- bundleOptions: {
50
- naming: options.fileName,
51
- ...options.bundleOptions,
52
- },
53
- attributes: {
54
- ...BROWSER_RUNTIME_SCRIPT_ATTRIBUTES,
55
- ...(options.attributes ?? {}),
56
- },
57
- });
58
- }
59
-
60
- /**
61
- * Creates a browser runtime asset from a generated re-export entry module.
62
- *
63
- * @remarks
64
- * This is the shared "module list -> generated entry file -> runtime asset"
65
- * path used by integrations that need browser-side runtime bundles without
66
- * owning bespoke entry-file generation logic.
67
- */
68
- export function createBrowserRuntimeModuleAsset(options: {
69
- modules: BrowserRuntimeEntryModuleConfig[];
70
- name: string;
71
- fileName: string;
72
- cacheDirName?: string;
73
- rootDir?: string;
74
- bundleOptions?: {
75
- define?: Record<string, string>;
76
- minify?: boolean;
77
- external?: string[];
78
- excludeAppBuildPlugins?: string[];
79
- naming?: string;
80
- plugins?: EcoBuildPlugin[];
81
- };
82
- attributes?: Record<string, string>;
83
- }): AssetDefinition {
84
- const importPath = createBrowserRuntimeEntryModule({
85
- modules: options.modules,
86
- fileName: `${options.name}-entry.mjs`,
87
- rootDir: options.rootDir,
88
- cacheDirName: options.cacheDirName,
89
- });
90
-
91
- return createBrowserRuntimeScriptAsset({
92
- importPath,
93
- name: options.name,
94
- fileName: options.fileName,
95
- bundleOptions: options.bundleOptions,
96
- attributes: options.attributes,
97
- });
98
- }
@@ -1,67 +0,0 @@
1
- import assert from 'node:assert/strict';
2
- import fs from 'node:fs';
3
- import path from 'node:path';
4
- import { tmpdir } from 'node:os';
5
- import { test } from 'vitest';
6
- import { createBrowserRuntimeEntryModule } from './browser-runtime-entry.factory.ts';
7
-
8
- test('createBrowserRuntimeEntryModule writes a shared runtime entry file', () => {
9
- const rootDir = fs.mkdtempSync(path.join(tmpdir(), 'eco-browser-runtime-entry-'));
10
- fs.writeFileSync(path.join(rootDir, 'package.json'), '{}', 'utf8');
11
-
12
- try {
13
- const filePath = createBrowserRuntimeEntryModule({
14
- rootDir,
15
- cacheDirName: 'ecopages-react-runtime-test',
16
- fileName: 'runtime-entry.mjs',
17
- modules: [{ specifier: 'node:path' }, { specifier: 'node:fs' }],
18
- });
19
-
20
- assert.equal(path.basename(filePath), 'runtime-entry.mjs');
21
- assert.equal(
22
- filePath,
23
- path.join(rootDir, 'node_modules', '.cache', 'ecopages-react-runtime-test', 'runtime-entry.mjs'),
24
- );
25
-
26
- const contents = fs.readFileSync(filePath, 'utf8');
27
- assert.match(contents, /export \{ .*basename.* \} from 'node:path';/);
28
- assert.match(contents, /export \{ .*readFileSync.* \} from 'node:fs';/);
29
- } finally {
30
- fs.rmSync(rootDir, { recursive: true, force: true });
31
- }
32
- });
33
-
34
- test('createBrowserRuntimeEntryModule preserves a default export and deduplicates named exports', () => {
35
- const rootDir = fs.mkdtempSync(path.join(tmpdir(), 'eco-browser-runtime-entry-'));
36
- fs.writeFileSync(path.join(rootDir, 'package.json'), '{}', 'utf8');
37
- fs.mkdirSync(path.join(rootDir, 'node_modules', 'runtime-a'), { recursive: true });
38
- fs.mkdirSync(path.join(rootDir, 'node_modules', 'runtime-b'), { recursive: true });
39
- fs.writeFileSync(
40
- path.join(rootDir, 'node_modules', 'runtime-a', 'index.js'),
41
- "module.exports = { default: 'runtime-a', alpha: 'a', shared: 'shared-a' };",
42
- 'utf8',
43
- );
44
- fs.writeFileSync(
45
- path.join(rootDir, 'node_modules', 'runtime-b', 'index.js'),
46
- "module.exports = { beta: 'b', shared: 'shared-b' };",
47
- 'utf8',
48
- );
49
-
50
- try {
51
- const filePath = createBrowserRuntimeEntryModule({
52
- rootDir,
53
- cacheDirName: 'ecopages-react-runtime-test',
54
- fileName: 'runtime-entry.mjs',
55
- modules: [{ specifier: 'runtime-a', defaultExport: true }, { specifier: 'runtime-b' }],
56
- });
57
-
58
- const contents = fs.readFileSync(filePath, 'utf8');
59
- assert.match(contents, /import __ecopages_default_export__ from 'runtime-a';/);
60
- assert.match(contents, /export default __ecopages_default_export__;/);
61
- assert.match(contents, /export \{ alpha, shared \} from 'runtime-a';/);
62
- assert.match(contents, /export \{ beta \} from 'runtime-b';/);
63
- assert.doesNotMatch(contents, /export \{ .*shared.* \} from 'runtime-b';/);
64
- } finally {
65
- fs.rmSync(rootDir, { recursive: true, force: true });
66
- }
67
- });
@@ -1,78 +0,0 @@
1
- import fs from 'node:fs';
2
- import path from 'node:path';
3
- import { createRequire } from 'node:module';
4
-
5
- export type BrowserRuntimeEntryModuleConfig = {
6
- specifier: string;
7
- defaultExport?: boolean;
8
- };
9
-
10
- /**
11
- * Creates a generated ESM entry module that re-exports runtime modules through
12
- * one stable file.
13
- *
14
- * @remarks
15
- * Integrations use this helper when they need a browser runtime asset composed
16
- * from multiple bare specifiers but do not want to own temporary file assembly
17
- * logic themselves. The generated file lives under a cache directory inside the
18
- * consuming app root so repeated runs can reuse the same location.
19
- */
20
- export function createBrowserRuntimeEntryModule(options: {
21
- modules: BrowserRuntimeEntryModuleConfig[];
22
- fileName: string;
23
- rootDir?: string;
24
- cacheDirName?: string;
25
- }): string {
26
- const rootDir = options.rootDir ?? process.cwd();
27
- const artifactsDir = path.join(
28
- rootDir,
29
- 'node_modules',
30
- '.cache',
31
- options.cacheDirName ?? 'ecopages-browser-runtime',
32
- );
33
- fs.mkdirSync(artifactsDir, { recursive: true });
34
-
35
- const requireFromRoot = createRequire(path.join(rootDir, 'package.json'));
36
- const seenExports = new Set<string>();
37
- const statements: string[] = [];
38
-
39
- for (const module of options.modules) {
40
- if (module.defaultExport) {
41
- statements.push(`import __ecopages_default_export__ from '${module.specifier}';`);
42
- statements.push('export default __ecopages_default_export__;');
43
- }
44
-
45
- const exportNames = getModuleExportNames(module.specifier, requireFromRoot).filter(
46
- (name) => !seenExports.has(name),
47
- );
48
-
49
- if (exportNames.length > 0) {
50
- statements.push(`export { ${exportNames.join(', ')} } from '${module.specifier}';`);
51
- for (const exportName of exportNames) {
52
- seenExports.add(exportName);
53
- }
54
- }
55
- }
56
-
57
- const filePath = path.join(artifactsDir, options.fileName);
58
- fs.writeFileSync(filePath, statements.join('\n'), 'utf-8');
59
- return filePath;
60
- }
61
-
62
- /**
63
- * Reads the named runtime exports that should be re-exported from a generated
64
- * runtime entry module.
65
- *
66
- * @remarks
67
- * Default exports are handled separately because generated runtime entry files
68
- * need to emit a synthetic default binding only when the caller explicitly asks
69
- * for it.
70
- */
71
- function getModuleExportNames(specifier: string, requireFromRoot: ReturnType<typeof createRequire>): string[] {
72
- const moduleExports = requireFromRoot(specifier);
73
-
74
- return Object.keys(moduleExports)
75
- .filter((name) => name !== '__esModule' && name !== 'default')
76
- .filter((name) => /^[$A-Z_a-z][$\w]*$/.test(name))
77
- .sort();
78
- }
@@ -1,104 +0,0 @@
1
- import type { AssetDefinition, ProcessedAsset } from './assets.types.ts';
2
-
3
- /**
4
- * Splits grouped content-script dependencies from ordinary dependencies so callers can
5
- * route them through `processGrouped` without changing ordering for the remaining assets.
6
- */
7
- export function partitionGroupedContentScriptDependencies(typeDeps: AssetDefinition[]): {
8
- groupedBundleDeps: Map<string, AssetDefinition[]>;
9
- ungroupedDeps: AssetDefinition[];
10
- } {
11
- const groupedBundleDeps = new Map<string, AssetDefinition[]>();
12
- const ungroupedDeps: AssetDefinition[] = [];
13
-
14
- for (const dep of typeDeps) {
15
- if (dep.kind === 'script' && dep.source === 'content' && dep.groupedBundle?.id) {
16
- const existing = groupedBundleDeps.get(dep.groupedBundle.id) ?? [];
17
- existing.push(dep);
18
- groupedBundleDeps.set(dep.groupedBundle.id, existing);
19
- continue;
20
- }
21
-
22
- ungroupedDeps.push(dep);
23
- }
24
-
25
- return {
26
- groupedBundleDeps,
27
- ungroupedDeps,
28
- };
29
- }
30
-
31
- type GroupedBundleProcessor = {
32
- processGrouped?: (deps: AssetDefinition[]) => Promise<ProcessedAsset[]>;
33
- };
34
-
35
- type ProcessGroupedDependencyBundlesOptions = {
36
- bundles: AssetDefinition[][];
37
- key: string;
38
- getCachedAsset: (dep: AssetDefinition, depKey: string) => ProcessedAsset | null;
39
- getDependencyKey: (dep: AssetDefinition) => string;
40
- getGroupedProcessor: () => GroupedBundleProcessor | undefined;
41
- resolveProcessedAssetSrcUrl: (processed: ProcessedAsset) => string | undefined;
42
- setCachedAsset: (dep: AssetDefinition, depKey: string, processed: ProcessedAsset) => void;
43
- logError: (error: unknown) => void;
44
- };
45
-
46
- /**
47
- * Processes grouped content-script bundles while preserving per-entry cache keys.
48
- *
49
- * When every dependency in a bundle already has a cached processed asset, the cached
50
- * entries are returned directly and the grouped processor is skipped.
51
- */
52
- export async function processGroupedDependencyBundles(
53
- options: ProcessGroupedDependencyBundlesOptions,
54
- ): Promise<ProcessedAsset[]> {
55
- const {
56
- bundles,
57
- key,
58
- getCachedAsset,
59
- getDependencyKey,
60
- getGroupedProcessor,
61
- resolveProcessedAssetSrcUrl,
62
- setCachedAsset,
63
- logError,
64
- } = options;
65
-
66
- const groupedPromises = bundles.map(async (bundleDeps) => {
67
- const cachedResults = bundleDeps.map((dep) => {
68
- const cached = getCachedAsset(dep, getDependencyKey(dep));
69
- return cached ? ({ key, ...cached } as ProcessedAsset) : null;
70
- });
71
-
72
- if (cachedResults.every((result) => result !== null)) {
73
- return cachedResults.filter((result): result is ProcessedAsset => result !== null);
74
- }
75
-
76
- const processor = getGroupedProcessor();
77
- if (!processor?.processGrouped) {
78
- return [];
79
- }
80
-
81
- try {
82
- const processedResults = await processor.processGrouped(bundleDeps);
83
-
84
- return processedResults.map((processed, index) => {
85
- const dep = bundleDeps[index]!;
86
- const depKey = getDependencyKey(dep);
87
- const srcUrl = resolveProcessedAssetSrcUrl(processed);
88
- const processedWithKey = {
89
- key,
90
- ...processed,
91
- srcUrl,
92
- };
93
-
94
- setCachedAsset(dep, depKey, processedWithKey);
95
- return processedWithKey as ProcessedAsset;
96
- });
97
- } catch (error) {
98
- logError(error);
99
- return [];
100
- }
101
- });
102
-
103
- return (await Promise.all(groupedPromises)).flat();
104
- }
@@ -1,6 +0,0 @@
1
- export * from './asset.factory.ts';
2
- export * from './page-package.ts';
3
- export * from './asset-processing.service.ts';
4
- export * from './assets.types.ts';
5
- export * from './browser-runtime-asset.factory.ts';
6
- export * from './browser-runtime-entry.factory.ts';
@@ -1,135 +0,0 @@
1
- import { describe, expect, it } from 'vitest';
2
- import type { ProcessedAsset } from './assets.types.ts';
3
- import { createPagePackage } from './page-package.ts';
4
-
5
- describe('createPagePackage', () => {
6
- it('classifies page assets, inline assets, separate assets, and dynamic chunks', () => {
7
- const pageScript = {
8
- kind: 'script',
9
- srcUrl: '/assets/page.js',
10
- position: 'head',
11
- } as ProcessedAsset;
12
- const pageStylesheet = {
13
- kind: 'stylesheet',
14
- srcUrl: '/assets/page.css',
15
- position: 'head',
16
- } as ProcessedAsset;
17
- const runtimeScript = {
18
- kind: 'script',
19
- srcUrl: '/assets/vendors/react.js',
20
- position: 'head',
21
- excludeFromHtml: true,
22
- packageRole: 'runtime',
23
- } as ProcessedAsset;
24
- const inlineScript = {
25
- kind: 'script',
26
- content: 'console.log("inline")',
27
- inline: true,
28
- position: 'head',
29
- } as ProcessedAsset;
30
- const dynamicChunk = {
31
- kind: 'script',
32
- srcUrl: '/assets/chunks/page-chunk.js',
33
- position: 'head',
34
- packageRole: 'dynamic-chunk',
35
- } as ProcessedAsset;
36
-
37
- const result = createPagePackage([pageStylesheet, pageScript, runtimeScript, inlineScript, dynamicChunk]);
38
-
39
- expect(result.pageScript).toBe(pageScript);
40
- expect(result.pageStylesheet).toBe(pageStylesheet);
41
- expect(result.htmlAssets).toEqual([pageStylesheet, pageScript, inlineScript, dynamicChunk]);
42
- expect(result.inlineAssets).toEqual([inlineScript]);
43
- expect(result.separateAssets).toEqual([runtimeScript]);
44
- expect(result.dynamicChunks).toEqual([dynamicChunk]);
45
- });
46
-
47
- it('prefers explicit page roles over visibility heuristics', () => {
48
- const hiddenPageScript = {
49
- kind: 'script',
50
- srcUrl: '/assets/pages/index.js',
51
- position: 'head',
52
- excludeFromHtml: true,
53
- packageRole: 'page-script',
54
- } as ProcessedAsset;
55
- const hydrationBootstrap = {
56
- kind: 'script',
57
- srcUrl: '/assets/pages/index-hydration.js',
58
- position: 'head',
59
- packageRole: 'keep-separate',
60
- } as ProcessedAsset;
61
-
62
- const result = createPagePackage([hiddenPageScript, hydrationBootstrap]);
63
-
64
- expect(result.pageScript).toBe(hiddenPageScript);
65
- expect(result.htmlAssets).toEqual([hydrationBootstrap]);
66
- expect(result.separateAssets).toEqual([hydrationBootstrap]);
67
- });
68
-
69
- it('suppresses bundled source stylesheet assets from final html assets', () => {
70
- const pageStylesheet = {
71
- kind: 'stylesheet',
72
- srcUrl: '/assets/page.css',
73
- position: 'head',
74
- packageRole: 'page-style',
75
- bundledSourceFilepaths: ['/app/src/styles/tailwind.css', '/app/src/styles/fonts.css'],
76
- } as ProcessedAsset;
77
- const bundledTailwind = {
78
- kind: 'stylesheet',
79
- srcUrl: '/assets/styles/tailwind.css',
80
- position: 'head',
81
- sourceFilepath: '/app/src/styles/tailwind.css',
82
- } as ProcessedAsset;
83
- const bundledFonts = {
84
- kind: 'stylesheet',
85
- srcUrl: '/assets/styles/fonts.css',
86
- position: 'head',
87
- sourceFilepath: '/app/src/styles/fonts.css',
88
- } as ProcessedAsset;
89
- const pageScript = {
90
- kind: 'script',
91
- srcUrl: '/assets/page.js',
92
- position: 'head',
93
- } as ProcessedAsset;
94
-
95
- const result = createPagePackage([pageStylesheet, bundledTailwind, bundledFonts, pageScript]);
96
-
97
- expect(result.pageStylesheet).toBe(pageStylesheet);
98
- expect(result.htmlAssets).toEqual([pageStylesheet, pageScript]);
99
- });
100
-
101
- it('preserves structured page browser graph metadata while flattening it into the package assets', () => {
102
- const routeAsset = {
103
- kind: 'stylesheet',
104
- srcUrl: '/assets/route.css',
105
- position: 'head',
106
- } as ProcessedAsset;
107
- const entryAsset = {
108
- kind: 'script',
109
- srcUrl: '/assets/page.js',
110
- position: 'head',
111
- packageRole: 'page-script',
112
- } as ProcessedAsset;
113
- const chunkAsset = {
114
- kind: 'script',
115
- srcUrl: '/assets/page.chunk.js',
116
- position: 'body',
117
- packageRole: 'dynamic-chunk',
118
- } as ProcessedAsset;
119
-
120
- const result = createPagePackage([routeAsset], {
121
- pageBrowserGraph: {
122
- entryAssets: [entryAsset],
123
- chunkAssets: [chunkAsset],
124
- },
125
- });
126
-
127
- expect(result.pageBrowserGraph).toEqual({
128
- entryAssets: [entryAsset],
129
- chunkAssets: [chunkAsset],
130
- });
131
- expect(result.assets).toEqual([routeAsset, entryAsset, chunkAsset]);
132
- expect(result.pageScript).toBe(entryAsset);
133
- expect(result.dynamicChunks).toEqual([chunkAsset]);
134
- });
135
- });
@@ -1,103 +0,0 @@
1
- import type { PagePackageResult } from '../../../types/public-types.ts';
2
- import type { ProcessedAsset } from './assets.types.ts';
3
- import type { PageBrowserGraphResult } from '../../../types/public-types.ts';
4
-
5
- function getSuppressedSourceFilepaths(assets: ProcessedAsset[]): Set<string> {
6
- const suppressed = new Set<string>();
7
-
8
- for (const asset of assets) {
9
- if (
10
- (asset.packageRole === 'page-style' || asset.packageRole === 'page-script') &&
11
- Array.isArray(asset.bundledSourceFilepaths)
12
- ) {
13
- for (const filepath of asset.bundledSourceFilepaths) {
14
- suppressed.add(filepath);
15
- }
16
- }
17
- }
18
-
19
- return suppressed;
20
- }
21
-
22
- export function createPagePackage(
23
- assets: ProcessedAsset[],
24
- options: { pageBrowserGraph?: PageBrowserGraphResult } = {},
25
- ): PagePackageResult {
26
- const allAssets = [
27
- ...assets,
28
- ...(options.pageBrowserGraph?.entryAssets ?? []),
29
- ...(options.pageBrowserGraph?.chunkAssets ?? []),
30
- ];
31
- const inlineAssets: ProcessedAsset[] = [];
32
- const separateAssets: ProcessedAsset[] = [];
33
- const dynamicChunks: ProcessedAsset[] = [];
34
- let pageScript: ProcessedAsset | undefined;
35
- let pageStylesheet: ProcessedAsset | undefined;
36
- const suppressedSourceFilepaths = getSuppressedSourceFilepaths(allAssets);
37
-
38
- for (const asset of allAssets) {
39
- if (asset.inline) {
40
- inlineAssets.push(asset);
41
- continue;
42
- }
43
-
44
- if (asset.packageRole === 'dynamic-chunk') {
45
- dynamicChunks.push(asset);
46
- continue;
47
- }
48
-
49
- if (!pageScript && asset.packageRole === 'page-script') {
50
- pageScript = asset;
51
- continue;
52
- }
53
-
54
- if (!pageStylesheet && asset.packageRole === 'page-style') {
55
- pageStylesheet = asset;
56
- continue;
57
- }
58
-
59
- if (asset.packageRole === 'keep-separate' || asset.packageRole === 'runtime') {
60
- separateAssets.push(asset);
61
- continue;
62
- }
63
-
64
- if (!pageScript && asset.kind === 'script' && !asset.excludeFromHtml) {
65
- pageScript = asset;
66
- continue;
67
- }
68
-
69
- if (!pageStylesheet && asset.kind === 'stylesheet') {
70
- pageStylesheet = asset;
71
- continue;
72
- }
73
-
74
- separateAssets.push(asset);
75
- }
76
-
77
- return {
78
- assets: allAssets,
79
- pageBrowserGraph: options.pageBrowserGraph,
80
- htmlAssets: allAssets.filter((asset) => shouldIncludeInHtml(asset, suppressedSourceFilepaths)),
81
- pageScript,
82
- pageStylesheet,
83
- inlineAssets,
84
- separateAssets,
85
- dynamicChunks,
86
- };
87
- }
88
-
89
- function shouldIncludeInHtml(asset: ProcessedAsset, suppressedSourceFilepaths: Set<string>): boolean {
90
- if (asset.excludeFromHtml) {
91
- return false;
92
- }
93
-
94
- if (asset.packageRole === 'runtime') {
95
- return false;
96
- }
97
-
98
- if (asset.sourceFilepath && suppressedSourceFilepaths.has(asset.sourceFilepath)) {
99
- return false;
100
- }
101
-
102
- return true;
103
- }
@@ -1,18 +0,0 @@
1
- import type { AssetKind, AssetSource } from './assets.types.ts';
2
- import type { BaseProcessor } from './processors/base/base-processor.ts';
3
-
4
- export class ProcessorRegistry {
5
- private processors = new Map<`${AssetKind}-${AssetSource}`, BaseProcessor<any>>();
6
-
7
- register(kind: AssetKind, variant: AssetSource, processor: BaseProcessor<any>) {
8
- this.processors.set(`${kind}-${variant}`, processor);
9
- }
10
-
11
- getProcessor(kind: AssetKind, variant: AssetSource): BaseProcessor<any> | undefined {
12
- return this.processors.get(`${kind}-${variant}`);
13
- }
14
-
15
- getAllProcessors(): Map<`${AssetKind}-${AssetSource}`, BaseProcessor<any>> {
16
- return this.processors;
17
- }
18
- }