@ecopages/core 0.2.0-alpha.24 → 0.2.0-alpha.26

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 (543) hide show
  1. package/CHANGELOG.md +66 -0
  2. package/package.json +226 -93
  3. package/src/adapters/abstract/application-adapter.d.ts +194 -0
  4. package/src/adapters/abstract/application-adapter.js +121 -0
  5. package/src/adapters/abstract/router-adapter.d.ts +26 -0
  6. package/src/adapters/abstract/router-adapter.js +5 -0
  7. package/src/adapters/abstract/server-adapter.d.ts +69 -0
  8. package/src/adapters/abstract/server-adapter.js +15 -0
  9. package/src/adapters/bun/client-bridge.d.ts +34 -0
  10. package/src/adapters/bun/client-bridge.js +48 -0
  11. package/src/adapters/bun/create-app.d.ts +52 -0
  12. package/src/adapters/bun/create-app.js +116 -0
  13. package/src/adapters/bun/hmr-manager.d.ts +143 -0
  14. package/src/adapters/bun/hmr-manager.js +333 -0
  15. package/src/adapters/bun/index.d.ts +2 -0
  16. package/src/adapters/bun/index.js +8 -0
  17. package/src/adapters/bun/server-adapter.d.ts +155 -0
  18. package/src/adapters/bun/server-adapter.js +374 -0
  19. package/src/adapters/bun/server-lifecycle.d.ts +63 -0
  20. package/src/adapters/bun/server-lifecycle.js +92 -0
  21. package/src/adapters/create-app.d.ts +20 -0
  22. package/src/adapters/create-app.js +66 -0
  23. package/src/adapters/index.d.ts +2 -0
  24. package/src/adapters/index.js +8 -0
  25. package/src/adapters/node/create-app.d.ts +18 -0
  26. package/src/adapters/node/create-app.js +149 -0
  27. package/src/adapters/node/node-client-bridge.d.ts +26 -0
  28. package/src/adapters/node/node-client-bridge.js +66 -0
  29. package/src/adapters/node/node-hmr-manager.d.ts +133 -0
  30. package/src/adapters/node/node-hmr-manager.js +311 -0
  31. package/src/adapters/node/server-adapter.d.ts +162 -0
  32. package/src/adapters/node/server-adapter.js +368 -0
  33. package/src/adapters/node/static-content-server.d.ts +60 -0
  34. package/src/adapters/node/static-content-server.js +194 -0
  35. package/src/adapters/shared/api-response.d.ts +52 -0
  36. package/src/adapters/shared/api-response.js +96 -0
  37. package/src/adapters/shared/application-adapter.d.ts +18 -0
  38. package/src/adapters/shared/application-adapter.js +90 -0
  39. package/src/adapters/shared/define-api-handler.d.ts +25 -0
  40. package/src/adapters/shared/define-api-handler.js +15 -0
  41. package/src/adapters/shared/explicit-static-route-matcher.d.ts +38 -0
  42. package/src/adapters/shared/explicit-static-route-matcher.js +103 -0
  43. package/src/adapters/shared/file-route-middleware-pipeline.d.ts +65 -0
  44. package/src/adapters/shared/file-route-middleware-pipeline.js +99 -0
  45. package/src/adapters/shared/fs-server-response-factory.d.ts +19 -0
  46. package/src/adapters/shared/fs-server-response-factory.js +97 -0
  47. package/src/adapters/shared/fs-server-response-matcher.d.ts +67 -0
  48. package/src/adapters/shared/fs-server-response-matcher.js +147 -0
  49. package/src/adapters/shared/hmr-entrypoint-registrar.d.ts +55 -0
  50. package/src/adapters/shared/hmr-entrypoint-registrar.js +87 -0
  51. package/src/adapters/shared/hmr-html-response.d.ts +22 -0
  52. package/src/adapters/shared/hmr-html-response.js +32 -0
  53. package/src/adapters/shared/render-context.d.ts +15 -0
  54. package/src/adapters/shared/render-context.js +72 -0
  55. package/src/adapters/shared/runtime-bootstrap.d.ts +38 -0
  56. package/src/adapters/shared/runtime-bootstrap.js +43 -0
  57. package/src/adapters/shared/server-adapter.d.ts +97 -0
  58. package/src/adapters/shared/server-adapter.js +390 -0
  59. package/src/adapters/shared/server-route-handler.d.ts +89 -0
  60. package/src/adapters/shared/server-route-handler.js +111 -0
  61. package/src/adapters/shared/server-static-builder.d.ts +71 -0
  62. package/src/adapters/shared/server-static-builder.js +100 -0
  63. package/src/build/build-adapter.d.ts +239 -0
  64. package/src/build/build-adapter.js +642 -0
  65. package/src/build/build-manifest.d.ts +27 -0
  66. package/src/build/build-manifest.js +30 -0
  67. package/src/build/build-types.d.ts +57 -0
  68. package/src/build/build-types.js +0 -0
  69. package/src/build/dev-build-coordinator.d.ts +72 -0
  70. package/src/build/dev-build-coordinator.js +154 -0
  71. package/src/build/esbuild-build-adapter.d.ts +78 -0
  72. package/src/build/esbuild-build-adapter.js +505 -0
  73. package/src/build/runtime-build-executor.d.ts +14 -0
  74. package/src/build/runtime-build-executor.js +22 -0
  75. package/src/build/runtime-specifier-alias-plugin.d.ts +15 -0
  76. package/src/build/runtime-specifier-alias-plugin.js +35 -0
  77. package/src/build/runtime-specifier-aliases.d.ts +5 -0
  78. package/src/build/runtime-specifier-aliases.js +95 -0
  79. package/src/config/config-builder.d.ts +252 -0
  80. package/src/config/config-builder.js +603 -0
  81. package/src/config/{constants.ts → constants.d.ts} +13 -22
  82. package/src/config/constants.js +25 -0
  83. package/src/dev/sc-server.d.ts +30 -0
  84. package/src/dev/sc-server.js +111 -0
  85. package/src/eco/eco.browser.d.ts +2 -0
  86. package/src/eco/eco.browser.js +83 -0
  87. package/src/eco/eco.d.ts +9 -0
  88. package/src/eco/eco.js +85 -0
  89. package/src/eco/eco.types.d.ts +178 -0
  90. package/src/eco/eco.types.js +0 -0
  91. package/src/eco/eco.utils.d.ts +1 -0
  92. package/src/eco/eco.utils.js +10 -0
  93. package/src/eco/global-injector-map.d.ts +16 -0
  94. package/src/eco/global-injector-map.js +80 -0
  95. package/src/eco/lazy-injector-map.d.ts +8 -0
  96. package/src/eco/lazy-injector-map.js +70 -0
  97. package/src/eco/module-dependencies.d.ts +18 -0
  98. package/src/eco/module-dependencies.js +49 -0
  99. package/src/errors/http-error.d.ts +31 -0
  100. package/src/errors/http-error.js +50 -0
  101. package/src/errors/{index.ts → index.d.ts} +2 -2
  102. package/src/errors/index.js +4 -0
  103. package/src/errors/locals-access-error.d.ts +4 -0
  104. package/src/errors/locals-access-error.js +9 -0
  105. package/src/global/app-logger.d.ts +2 -0
  106. package/src/global/app-logger.js +6 -0
  107. package/src/hmr/client/hmr-runtime.d.ts +5 -0
  108. package/src/hmr/client/hmr-runtime.js +117 -0
  109. package/src/hmr/hmr-strategy.d.ts +162 -0
  110. package/src/hmr/hmr-strategy.js +44 -0
  111. package/src/hmr/hmr.postcss.test.e2e.d.ts +1 -0
  112. package/src/hmr/hmr.postcss.test.e2e.js +31 -0
  113. package/src/hmr/hmr.test.e2e.d.ts +1 -0
  114. package/src/hmr/hmr.test.e2e.js +43 -0
  115. package/src/hmr/strategies/default-hmr-strategy.d.ts +43 -0
  116. package/src/hmr/strategies/default-hmr-strategy.js +34 -0
  117. package/src/hmr/strategies/js-hmr-strategy.d.ts +139 -0
  118. package/src/hmr/strategies/js-hmr-strategy.js +178 -0
  119. package/src/index.browser.d.ts +3 -0
  120. package/src/index.browser.js +4 -0
  121. package/src/index.d.ts +6 -0
  122. package/src/index.js +21 -0
  123. package/src/integrations/ghtml/ghtml-renderer.d.ts +20 -0
  124. package/src/integrations/ghtml/ghtml-renderer.js +63 -0
  125. package/src/integrations/ghtml/ghtml.constants.d.ts +1 -0
  126. package/src/integrations/ghtml/ghtml.constants.js +4 -0
  127. package/src/integrations/ghtml/ghtml.plugin.d.ts +16 -0
  128. package/src/integrations/ghtml/ghtml.plugin.js +20 -0
  129. package/src/plugins/alias-resolver-plugin.d.ts +2 -0
  130. package/src/plugins/alias-resolver-plugin.js +53 -0
  131. package/src/plugins/eco-component-meta-plugin.d.ts +108 -0
  132. package/src/plugins/eco-component-meta-plugin.js +163 -0
  133. package/src/plugins/foreign-jsx-override-plugin.d.ts +31 -0
  134. package/src/plugins/foreign-jsx-override-plugin.js +35 -0
  135. package/src/plugins/integration-plugin.d.ts +219 -0
  136. package/src/plugins/integration-plugin.js +196 -0
  137. package/src/plugins/processor.d.ts +95 -0
  138. package/src/plugins/processor.js +136 -0
  139. package/src/plugins/{runtime-capability.ts → runtime-capability.d.ts} +3 -8
  140. package/src/plugins/runtime-capability.js +0 -0
  141. package/src/plugins/source-transform.d.ts +46 -0
  142. package/src/plugins/source-transform.js +71 -0
  143. package/src/route-renderer/orchestration/boundary-planning.service.d.ts +25 -0
  144. package/src/route-renderer/orchestration/boundary-planning.service.js +97 -0
  145. package/src/route-renderer/orchestration/component-render-context.d.ts +83 -0
  146. package/src/route-renderer/orchestration/component-render-context.js +147 -0
  147. package/src/route-renderer/orchestration/integration-renderer.d.ts +556 -0
  148. package/src/route-renderer/orchestration/integration-renderer.js +932 -0
  149. package/src/route-renderer/orchestration/page-packaging.service.d.ts +16 -0
  150. package/src/route-renderer/orchestration/page-packaging.service.js +66 -0
  151. package/src/route-renderer/orchestration/processed-asset-dedupe.d.ts +2 -0
  152. package/src/route-renderer/orchestration/processed-asset-dedupe.js +23 -0
  153. package/src/route-renderer/orchestration/queued-boundary-runtime.service.d.ts +89 -0
  154. package/src/route-renderer/orchestration/queued-boundary-runtime.service.js +155 -0
  155. package/src/route-renderer/orchestration/render-execution.service.d.ts +43 -0
  156. package/src/route-renderer/orchestration/render-execution.service.js +106 -0
  157. package/src/route-renderer/orchestration/render-output.utils.d.ts +66 -0
  158. package/src/route-renderer/orchestration/render-output.utils.js +171 -0
  159. package/src/route-renderer/orchestration/render-preparation.service.d.ts +120 -0
  160. package/src/route-renderer/orchestration/render-preparation.service.js +364 -0
  161. package/src/route-renderer/orchestration/route-shell-composer.service.d.ts +50 -0
  162. package/src/route-renderer/orchestration/route-shell-composer.service.js +81 -0
  163. package/src/route-renderer/orchestration/template-serialization.d.ts +38 -0
  164. package/src/route-renderer/orchestration/template-serialization.js +45 -0
  165. package/src/route-renderer/page-loading/component-dependency-collection.d.ts +37 -0
  166. package/src/route-renderer/page-loading/component-dependency-collection.js +125 -0
  167. package/src/route-renderer/page-loading/declared-asset-collection.d.ts +24 -0
  168. package/src/route-renderer/page-loading/declared-asset-collection.js +106 -0
  169. package/src/route-renderer/page-loading/dependency-resolver.d.ts +35 -0
  170. package/src/route-renderer/page-loading/dependency-resolver.js +117 -0
  171. package/src/route-renderer/page-loading/ecopages-virtual-imports.d.ts +11 -0
  172. package/src/route-renderer/page-loading/ecopages-virtual-imports.js +57 -0
  173. package/src/route-renderer/page-loading/lazy-entry-collection.d.ts +45 -0
  174. package/src/route-renderer/page-loading/lazy-entry-collection.js +105 -0
  175. package/src/route-renderer/page-loading/lazy-trigger-planning.d.ts +19 -0
  176. package/src/route-renderer/page-loading/lazy-trigger-planning.js +40 -0
  177. package/src/route-renderer/page-loading/module-declaration-aggregation.d.ts +5 -0
  178. package/src/route-renderer/page-loading/module-declaration-aggregation.js +33 -0
  179. package/src/route-renderer/page-loading/module-declaration-scripts.d.ts +3 -0
  180. package/src/route-renderer/page-loading/module-declaration-scripts.js +18 -0
  181. package/src/route-renderer/page-loading/page-dependency-bundling.d.ts +13 -0
  182. package/src/route-renderer/page-loading/page-dependency-bundling.js +115 -0
  183. package/src/route-renderer/page-loading/page-module-loader.d.ts +90 -0
  184. package/src/route-renderer/page-loading/page-module-loader.js +127 -0
  185. package/src/route-renderer/route-renderer.d.ts +67 -0
  186. package/src/route-renderer/route-renderer.js +103 -0
  187. package/src/router/client/link-intent.js +34 -0
  188. package/src/router/client/link-intent.test.browser.d.ts +1 -0
  189. package/src/router/client/link-intent.test.browser.js +43 -0
  190. package/src/router/client/navigation-coordinator.d.ts +169 -0
  191. package/src/router/client/navigation-coordinator.js +215 -0
  192. package/src/router/server/fs-router-scanner.d.ts +41 -0
  193. package/src/router/server/fs-router-scanner.js +161 -0
  194. package/src/router/server/fs-router.d.ts +26 -0
  195. package/src/router/server/fs-router.js +100 -0
  196. package/src/services/assets/asset-processing-service/asset-dependency-keys.d.ts +3 -0
  197. package/src/services/assets/asset-processing-service/asset-dependency-keys.js +56 -0
  198. package/src/services/assets/asset-processing-service/asset-processing.service.d.ts +103 -0
  199. package/src/services/assets/asset-processing-service/asset-processing.service.js +285 -0
  200. package/src/services/assets/asset-processing-service/asset.factory.d.ts +17 -0
  201. package/src/services/assets/asset-processing-service/asset.factory.js +82 -0
  202. package/src/services/assets/asset-processing-service/assets.types.d.ts +100 -0
  203. package/src/services/assets/asset-processing-service/assets.types.js +0 -0
  204. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.d.ts +55 -0
  205. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.js +49 -0
  206. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.d.ts +20 -0
  207. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.js +41 -0
  208. package/src/services/assets/asset-processing-service/grouped-content-bundles.d.ts +30 -0
  209. package/src/services/assets/asset-processing-service/grouped-content-bundles.js +65 -0
  210. package/src/services/assets/asset-processing-service/index.d.ts +5 -0
  211. package/src/services/assets/asset-processing-service/index.js +5 -0
  212. package/src/services/assets/asset-processing-service/{processor.interface.ts → processor.interface.d.ts} +5 -10
  213. package/src/services/assets/asset-processing-service/processor.interface.js +6 -0
  214. package/src/services/assets/asset-processing-service/processor.registry.d.ts +8 -0
  215. package/src/services/assets/asset-processing-service/processor.registry.js +15 -0
  216. package/src/services/assets/asset-processing-service/processors/base/base-processor.d.ts +24 -0
  217. package/src/services/assets/asset-processing-service/processors/base/base-processor.js +65 -0
  218. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.d.ts +22 -0
  219. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.js +136 -0
  220. package/src/services/assets/asset-processing-service/processors/index.d.ts +5 -0
  221. package/src/services/assets/asset-processing-service/processors/index.js +5 -0
  222. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.d.ts +6 -0
  223. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.js +116 -0
  224. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.d.ts +9 -0
  225. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.js +91 -0
  226. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.d.ts +7 -0
  227. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.js +77 -0
  228. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.d.ts +8 -0
  229. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +58 -0
  230. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.d.ts +9 -0
  231. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.js +67 -0
  232. package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.d.ts +18 -0
  233. package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.js +45 -0
  234. package/src/services/assets/browser-bundle.service.d.ts +73 -0
  235. package/src/services/assets/browser-bundle.service.js +41 -0
  236. package/src/services/cache/cache.types.d.ts +107 -0
  237. package/src/services/cache/cache.types.js +0 -0
  238. package/src/services/cache/index.d.ts +7 -0
  239. package/src/services/cache/index.js +7 -0
  240. package/src/services/cache/memory-cache-store.d.ts +42 -0
  241. package/src/services/cache/memory-cache-store.js +98 -0
  242. package/src/services/cache/page-cache-service.d.ts +70 -0
  243. package/src/services/cache/page-cache-service.js +152 -0
  244. package/src/services/cache/page-request-cache-coordinator.service.d.ts +75 -0
  245. package/src/services/cache/page-request-cache-coordinator.service.js +109 -0
  246. package/src/services/html/html-rewriter-provider.service.d.ts +37 -0
  247. package/src/services/html/html-rewriter-provider.service.js +68 -0
  248. package/src/services/html/html-transformer.service.d.ts +87 -0
  249. package/src/services/html/html-transformer.service.js +216 -0
  250. package/src/services/invalidation/development-invalidation.service.d.ts +74 -0
  251. package/src/services/invalidation/development-invalidation.service.js +190 -0
  252. package/src/services/module-loading/app-module-loader.service.d.ts +7 -0
  253. package/src/services/module-loading/app-module-loader.service.js +0 -0
  254. package/src/services/module-loading/app-server-module-transpiler.service.d.ts +24 -0
  255. package/src/services/module-loading/app-server-module-transpiler.service.js +115 -0
  256. package/src/services/module-loading/host-module-loader-registry.d.ts +4 -0
  257. package/src/services/module-loading/host-module-loader-registry.js +15 -0
  258. package/src/services/module-loading/{module-loading-types.ts → module-loading-types.d.ts} +0 -1
  259. package/src/services/module-loading/module-loading-types.js +0 -0
  260. package/src/services/module-loading/node-bootstrap-plugin.d.ts +42 -0
  261. package/src/services/module-loading/node-bootstrap-plugin.js +204 -0
  262. package/src/services/module-loading/page-module-import.service.d.ts +76 -0
  263. package/src/services/module-loading/page-module-import.service.js +170 -0
  264. package/src/services/module-loading/server-module-transpiler.service.d.ts +63 -0
  265. package/src/services/module-loading/server-module-transpiler.service.js +64 -0
  266. package/src/services/module-loading/source-module-support.d.ts +5 -0
  267. package/src/services/module-loading/source-module-support.js +8 -0
  268. package/src/services/runtime-state/dev-graph.service.d.ts +118 -0
  269. package/src/services/runtime-state/dev-graph.service.js +162 -0
  270. package/src/services/runtime-state/entrypoint-dependency-graph.service.d.ts +41 -0
  271. package/src/services/runtime-state/entrypoint-dependency-graph.service.js +85 -0
  272. package/src/services/runtime-state/runtime-specifier-registry.service.d.ts +69 -0
  273. package/src/services/runtime-state/runtime-specifier-registry.service.js +37 -0
  274. package/src/services/runtime-state/server-invalidation-state.service.d.ts +26 -0
  275. package/src/services/runtime-state/server-invalidation-state.service.js +35 -0
  276. package/src/services/validation/schema-validation-service.d.ts +122 -0
  277. package/src/services/validation/schema-validation-service.js +101 -0
  278. package/src/services/validation/{standard-schema.types.ts → standard-schema.types.d.ts} +17 -20
  279. package/src/services/validation/standard-schema.types.js +0 -0
  280. package/src/static-site-generator/static-site-generator.d.ts +105 -0
  281. package/src/static-site-generator/static-site-generator.js +349 -0
  282. package/src/types/internal-types.d.ts +231 -0
  283. package/src/types/internal-types.js +0 -0
  284. package/src/types/public-types.d.ts +1257 -0
  285. package/src/types/public-types.js +0 -0
  286. package/src/utils/deep-merge.d.ts +14 -0
  287. package/src/utils/deep-merge.js +32 -0
  288. package/src/utils/hash.d.ts +1 -0
  289. package/src/utils/hash.js +7 -0
  290. package/src/utils/html-escaping.d.ts +7 -0
  291. package/src/utils/html-escaping.js +6 -0
  292. package/src/utils/html.js +4 -0
  293. package/src/utils/invariant.d.ts +5 -0
  294. package/src/utils/invariant.js +11 -0
  295. package/src/utils/locals-utils.d.ts +15 -0
  296. package/src/utils/locals-utils.js +24 -0
  297. package/src/utils/parse-cli-args.d.ts +27 -0
  298. package/src/utils/parse-cli-args.js +62 -0
  299. package/src/utils/path-utils.module.d.ts +5 -0
  300. package/src/utils/path-utils.module.js +14 -0
  301. package/src/utils/resolve-work-dir.d.ts +11 -0
  302. package/src/utils/resolve-work-dir.js +31 -0
  303. package/src/utils/runtime.d.ts +11 -0
  304. package/src/utils/runtime.js +40 -0
  305. package/src/utils/server-utils.module.d.ts +19 -0
  306. package/src/utils/server-utils.module.js +56 -0
  307. package/src/watchers/project-watcher.d.ts +136 -0
  308. package/src/watchers/project-watcher.js +275 -0
  309. package/src/watchers/project-watcher.test-helpers.d.ts +4 -0
  310. package/src/watchers/project-watcher.test-helpers.js +52 -0
  311. package/src/adapters/abstract/application-adapter.test.ts +0 -172
  312. package/src/adapters/abstract/application-adapter.ts +0 -379
  313. package/src/adapters/abstract/router-adapter.ts +0 -30
  314. package/src/adapters/abstract/server-adapter.ts +0 -79
  315. package/src/adapters/bun/client-bridge.ts +0 -62
  316. package/src/adapters/bun/create-app.ts +0 -180
  317. package/src/adapters/bun/hmr-manager.test.ts +0 -267
  318. package/src/adapters/bun/hmr-manager.ts +0 -406
  319. package/src/adapters/bun/index.ts +0 -2
  320. package/src/adapters/bun/server-adapter.ts +0 -500
  321. package/src/adapters/bun/server-lifecycle.ts +0 -124
  322. package/src/adapters/create-app.test.ts +0 -10
  323. package/src/adapters/create-app.ts +0 -91
  324. package/src/adapters/index.ts +0 -2
  325. package/src/adapters/node/create-app.test.ts +0 -53
  326. package/src/adapters/node/create-app.ts +0 -183
  327. package/src/adapters/node/node-client-bridge.test.ts +0 -198
  328. package/src/adapters/node/node-client-bridge.ts +0 -79
  329. package/src/adapters/node/node-hmr-manager.test.ts +0 -322
  330. package/src/adapters/node/node-hmr-manager.ts +0 -378
  331. package/src/adapters/node/server-adapter.ts +0 -502
  332. package/src/adapters/node/static-content-server.test.ts +0 -60
  333. package/src/adapters/node/static-content-server.ts +0 -239
  334. package/src/adapters/shared/api-response.test.ts +0 -97
  335. package/src/adapters/shared/api-response.ts +0 -104
  336. package/src/adapters/shared/application-adapter.ts +0 -199
  337. package/src/adapters/shared/define-api-handler.ts +0 -66
  338. package/src/adapters/shared/explicit-static-route-matcher.test.ts +0 -381
  339. package/src/adapters/shared/explicit-static-route-matcher.ts +0 -140
  340. package/src/adapters/shared/file-route-middleware-pipeline.test.ts +0 -90
  341. package/src/adapters/shared/file-route-middleware-pipeline.ts +0 -127
  342. package/src/adapters/shared/fs-server-response-factory.test.ts +0 -187
  343. package/src/adapters/shared/fs-server-response-factory.ts +0 -118
  344. package/src/adapters/shared/fs-server-response-matcher.test.ts +0 -285
  345. package/src/adapters/shared/fs-server-response-matcher.ts +0 -189
  346. package/src/adapters/shared/hmr-entrypoint-registrar.ts +0 -149
  347. package/src/adapters/shared/hmr-html-response.ts +0 -52
  348. package/src/adapters/shared/hmr-manager.contract.test.ts +0 -232
  349. package/src/adapters/shared/hmr-manager.dispatch.test.ts +0 -220
  350. package/src/adapters/shared/render-context.test.ts +0 -150
  351. package/src/adapters/shared/render-context.ts +0 -123
  352. package/src/adapters/shared/runtime-bootstrap.ts +0 -79
  353. package/src/adapters/shared/server-adapter.test.ts +0 -77
  354. package/src/adapters/shared/server-adapter.ts +0 -493
  355. package/src/adapters/shared/server-route-handler.test.ts +0 -110
  356. package/src/adapters/shared/server-route-handler.ts +0 -153
  357. package/src/adapters/shared/server-static-builder.test.ts +0 -338
  358. package/src/adapters/shared/server-static-builder.ts +0 -170
  359. package/src/build/build-adapter-serialization.test.ts +0 -281
  360. package/src/build/build-adapter.test.ts +0 -1240
  361. package/src/build/build-adapter.ts +0 -1012
  362. package/src/build/build-manifest.ts +0 -54
  363. package/src/build/build-types.ts +0 -83
  364. package/src/build/dev-build-coordinator.ts +0 -220
  365. package/src/build/esbuild-build-adapter.ts +0 -660
  366. package/src/build/runtime-build-executor.test.ts +0 -81
  367. package/src/build/runtime-build-executor.ts +0 -40
  368. package/src/build/runtime-specifier-alias-plugin.test.ts +0 -67
  369. package/src/build/runtime-specifier-alias-plugin.ts +0 -62
  370. package/src/build/runtime-specifier-aliases.ts +0 -135
  371. package/src/config/config-builder.test.ts +0 -443
  372. package/src/config/config-builder.ts +0 -742
  373. package/src/config/config-builder.typecheck.test.ts +0 -96
  374. package/src/dev/sc-server.ts +0 -143
  375. package/src/eco/eco.browser.test.ts +0 -43
  376. package/src/eco/eco.browser.ts +0 -118
  377. package/src/eco/eco.test.ts +0 -654
  378. package/src/eco/eco.ts +0 -205
  379. package/src/eco/eco.types.ts +0 -221
  380. package/src/eco/eco.utils.test.ts +0 -219
  381. package/src/eco/eco.utils.ts +0 -5
  382. package/src/eco/global-injector-map.test.ts +0 -42
  383. package/src/eco/global-injector-map.ts +0 -112
  384. package/src/eco/lazy-injector-map.test.ts +0 -66
  385. package/src/eco/lazy-injector-map.ts +0 -120
  386. package/src/eco/module-dependencies.test.ts +0 -30
  387. package/src/eco/module-dependencies.ts +0 -75
  388. package/src/errors/http-error.test.ts +0 -134
  389. package/src/errors/http-error.ts +0 -72
  390. package/src/errors/locals-access-error.ts +0 -7
  391. package/src/global/app-logger.ts +0 -4
  392. package/src/global/utils.test.ts +0 -12
  393. 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
  394. package/src/hmr/client/__screenshots__/hmr-runtime.test.browser.ts/HMR-Runtime-HMR-Server-Integration-should-load-fixture-app-page-1.png +0 -0
  395. package/src/hmr/client/__screenshots__/hmr-runtime.test.browser.ts/HMR-Runtime-WebSocket-Connection-should-connect-to-correct-HMR-endpoint-1.png +0 -0
  396. package/src/hmr/client/hmr-runtime.ts +0 -160
  397. package/src/hmr/hmr-strategy.test.ts +0 -124
  398. package/src/hmr/hmr-strategy.ts +0 -177
  399. package/src/hmr/hmr.postcss.test.e2e.ts +0 -41
  400. package/src/hmr/hmr.test.e2e.ts +0 -66
  401. package/src/hmr/strategies/default-hmr-strategy.ts +0 -60
  402. package/src/hmr/strategies/js-hmr-strategy.test.ts +0 -335
  403. package/src/hmr/strategies/js-hmr-strategy.ts +0 -320
  404. package/src/index.browser.ts +0 -3
  405. package/src/index.ts +0 -15
  406. package/src/integrations/ghtml/ghtml-renderer.test.ts +0 -253
  407. package/src/integrations/ghtml/ghtml-renderer.ts +0 -97
  408. package/src/integrations/ghtml/ghtml.constants.ts +0 -1
  409. package/src/integrations/ghtml/ghtml.plugin.ts +0 -28
  410. package/src/plugins/alias-resolver-plugin.test.ts +0 -41
  411. package/src/plugins/alias-resolver-plugin.ts +0 -63
  412. package/src/plugins/eco-component-meta-plugin.test.ts +0 -406
  413. package/src/plugins/eco-component-meta-plugin.ts +0 -495
  414. package/src/plugins/foreign-jsx-override-plugin.test.ts +0 -65
  415. package/src/plugins/foreign-jsx-override-plugin.ts +0 -67
  416. package/src/plugins/integration-plugin.test.ts +0 -156
  417. package/src/plugins/integration-plugin.ts +0 -311
  418. package/src/plugins/processor.test.ts +0 -148
  419. package/src/plugins/processor.ts +0 -240
  420. package/src/plugins/source-transform.test.ts +0 -82
  421. package/src/plugins/source-transform.ts +0 -123
  422. package/src/route-renderer/orchestration/boundary-planning.service.ts +0 -146
  423. package/src/route-renderer/orchestration/component-render-context.ts +0 -318
  424. package/src/route-renderer/orchestration/integration-renderer.test.ts +0 -2088
  425. package/src/route-renderer/orchestration/integration-renderer.ts +0 -1285
  426. package/src/route-renderer/orchestration/page-packaging.service.test.ts +0 -76
  427. package/src/route-renderer/orchestration/page-packaging.service.ts +0 -85
  428. package/src/route-renderer/orchestration/processed-asset-dedupe.ts +0 -25
  429. package/src/route-renderer/orchestration/queued-boundary-runtime.service.test.ts +0 -319
  430. package/src/route-renderer/orchestration/queued-boundary-runtime.service.ts +0 -289
  431. package/src/route-renderer/orchestration/render-execution.service.test.ts +0 -196
  432. package/src/route-renderer/orchestration/render-execution.service.ts +0 -182
  433. package/src/route-renderer/orchestration/render-output.utils.ts +0 -302
  434. package/src/route-renderer/orchestration/render-preparation.service.test.ts +0 -569
  435. package/src/route-renderer/orchestration/render-preparation.service.ts +0 -508
  436. package/src/route-renderer/orchestration/route-shell-composer.service.ts +0 -162
  437. package/src/route-renderer/orchestration/template-serialization.test.ts +0 -110
  438. package/src/route-renderer/orchestration/template-serialization.ts +0 -117
  439. package/src/route-renderer/page-loading/component-dependency-collection.ts +0 -196
  440. package/src/route-renderer/page-loading/declared-asset-collection.ts +0 -156
  441. package/src/route-renderer/page-loading/dependency-resolver.test.ts +0 -665
  442. package/src/route-renderer/page-loading/dependency-resolver.ts +0 -150
  443. package/src/route-renderer/page-loading/ecopages-virtual-imports.ts +0 -75
  444. package/src/route-renderer/page-loading/lazy-entry-collection.ts +0 -167
  445. package/src/route-renderer/page-loading/lazy-trigger-planning.ts +0 -74
  446. package/src/route-renderer/page-loading/module-declaration-aggregation.ts +0 -60
  447. package/src/route-renderer/page-loading/module-declaration-scripts.ts +0 -16
  448. package/src/route-renderer/page-loading/page-dependency-bundling.ts +0 -205
  449. package/src/route-renderer/page-loading/page-module-loader.test.ts +0 -183
  450. package/src/route-renderer/page-loading/page-module-loader.ts +0 -184
  451. package/src/route-renderer/route-renderer.ts +0 -136
  452. package/src/router/client/link-intent.test.browser.ts +0 -51
  453. package/src/router/client/link-intent.ts +0 -92
  454. package/src/router/client/navigation-coordinator.test.ts +0 -237
  455. package/src/router/client/navigation-coordinator.ts +0 -453
  456. package/src/router/server/fs-router-scanner.test.ts +0 -83
  457. package/src/router/server/fs-router-scanner.ts +0 -224
  458. package/src/router/server/fs-router.test.ts +0 -214
  459. package/src/router/server/fs-router.ts +0 -122
  460. package/src/services/assets/asset-processing-service/asset-dependency-keys.ts +0 -66
  461. package/src/services/assets/asset-processing-service/asset-processing.service.test.ts +0 -476
  462. package/src/services/assets/asset-processing-service/asset-processing.service.ts +0 -345
  463. package/src/services/assets/asset-processing-service/asset.factory.test.ts +0 -63
  464. package/src/services/assets/asset-processing-service/asset.factory.ts +0 -105
  465. package/src/services/assets/asset-processing-service/assets.types.ts +0 -125
  466. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.test.ts +0 -74
  467. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.ts +0 -96
  468. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.test.ts +0 -67
  469. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.ts +0 -78
  470. package/src/services/assets/asset-processing-service/grouped-content-bundles.ts +0 -104
  471. package/src/services/assets/asset-processing-service/index.ts +0 -5
  472. package/src/services/assets/asset-processing-service/processor.registry.ts +0 -18
  473. package/src/services/assets/asset-processing-service/processors/base/base-processor.test.ts +0 -59
  474. package/src/services/assets/asset-processing-service/processors/base/base-processor.ts +0 -83
  475. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.ts +0 -174
  476. package/src/services/assets/asset-processing-service/processors/index.ts +0 -5
  477. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.test.ts +0 -192
  478. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.ts +0 -134
  479. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.test.ts +0 -326
  480. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.ts +0 -110
  481. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.test.ts +0 -227
  482. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.ts +0 -87
  483. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.test.ts +0 -261
  484. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.ts +0 -71
  485. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.ts +0 -81
  486. package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.ts +0 -65
  487. package/src/services/assets/browser-bundle.service.test.ts +0 -66
  488. package/src/services/assets/browser-bundle.service.ts +0 -109
  489. package/src/services/cache/cache.types.ts +0 -126
  490. package/src/services/cache/index.ts +0 -18
  491. package/src/services/cache/memory-cache-store.test.ts +0 -225
  492. package/src/services/cache/memory-cache-store.ts +0 -130
  493. package/src/services/cache/page-cache-service.test.ts +0 -175
  494. package/src/services/cache/page-cache-service.ts +0 -202
  495. package/src/services/cache/page-request-cache-coordinator.service.test.ts +0 -79
  496. package/src/services/cache/page-request-cache-coordinator.service.ts +0 -131
  497. package/src/services/html/html-rewriter-provider.service.test.ts +0 -183
  498. package/src/services/html/html-rewriter-provider.service.ts +0 -104
  499. package/src/services/html/html-transformer.service.test.ts +0 -479
  500. package/src/services/html/html-transformer.service.ts +0 -275
  501. package/src/services/invalidation/development-invalidation.service.test.ts +0 -87
  502. package/src/services/invalidation/development-invalidation.service.ts +0 -262
  503. package/src/services/module-loading/app-module-loader.service.ts +0 -9
  504. package/src/services/module-loading/app-server-module-transpiler.service.test.ts +0 -130
  505. package/src/services/module-loading/app-server-module-transpiler.service.ts +0 -143
  506. package/src/services/module-loading/host-module-loader-registry.ts +0 -15
  507. package/src/services/module-loading/node-bootstrap-plugin.test.ts +0 -335
  508. package/src/services/module-loading/node-bootstrap-plugin.ts +0 -297
  509. package/src/services/module-loading/page-module-import.service.test.ts +0 -504
  510. package/src/services/module-loading/page-module-import.service.ts +0 -252
  511. package/src/services/module-loading/server-module-transpiler.service.test.ts +0 -243
  512. package/src/services/module-loading/server-module-transpiler.service.ts +0 -104
  513. package/src/services/module-loading/source-module-support.ts +0 -19
  514. package/src/services/runtime-state/dev-graph.service.ts +0 -217
  515. package/src/services/runtime-state/entrypoint-dependency-graph.service.ts +0 -136
  516. package/src/services/runtime-state/runtime-specifier-registry.service.ts +0 -96
  517. package/src/services/runtime-state/server-invalidation-state.service.ts +0 -68
  518. package/src/services/validation/schema-validation-service.test.ts +0 -223
  519. package/src/services/validation/schema-validation-service.ts +0 -204
  520. package/src/static-site-generator/static-site-generator.test.ts +0 -316
  521. package/src/static-site-generator/static-site-generator.ts +0 -462
  522. package/src/types/internal-types.ts +0 -242
  523. package/src/types/public-types.ts +0 -1443
  524. package/src/utils/deep-merge.test.ts +0 -114
  525. package/src/utils/deep-merge.ts +0 -47
  526. package/src/utils/hash.ts +0 -5
  527. package/src/utils/html-escaping.ts +0 -9
  528. package/src/utils/invariant.test.ts +0 -22
  529. package/src/utils/invariant.ts +0 -15
  530. package/src/utils/locals-utils.ts +0 -37
  531. package/src/utils/parse-cli-args.test.ts +0 -69
  532. package/src/utils/parse-cli-args.ts +0 -105
  533. package/src/utils/path-utils.module.ts +0 -14
  534. package/src/utils/path-utils.test.ts +0 -15
  535. package/src/utils/resolve-work-dir.ts +0 -45
  536. package/src/utils/runtime.ts +0 -44
  537. package/src/utils/server-utils.module.ts +0 -67
  538. package/src/utils/server-utils.test.ts +0 -38
  539. package/src/watchers/project-watcher.integration.test.ts +0 -337
  540. package/src/watchers/project-watcher.test-helpers.ts +0 -41
  541. package/src/watchers/project-watcher.test.ts +0 -768
  542. package/src/watchers/project-watcher.ts +0 -357
  543. /package/src/utils/{html.ts → html.d.ts} +0 -0
@@ -1,150 +0,0 @@
1
- import path from 'node:path';
2
- import type { EcoComponent } from '../../types/public-types.ts';
3
- import type { EcoPagesAppConfig } from '../../types/internal-types.ts';
4
- import type {
5
- AssetProcessingService,
6
- ProcessedAsset,
7
- } from '../../services/assets/asset-processing-service/index.ts';
8
- import { rapidhash } from '../../utils/hash.ts';
9
- import { AssetFactory } from '../../services/assets/asset-processing-service/index.ts';
10
- import {
11
- buildResolvedLazyTriggers,
12
- type ResolvedLazyGroup,
13
- } from './lazy-trigger-planning.ts';
14
- import { collectComponentDependencies } from './component-dependency-collection.ts';
15
- import { createUnifiedPageDependencies } from './page-dependency-bundling.ts';
16
-
17
- export const DEPENDENCY_ERRORS = {
18
- INVALID_STYLESHEET_ENTRY: 'Invalid stylesheet dependency entry: expected src or content',
19
- INVALID_SCRIPT_ENTRY: 'Invalid script dependency entry: expected src or content',
20
- LAZY_SCRIPT_MISSING_SRC: 'Lazy script dependency entry in dependencies.scripts requires a src value',
21
- } as const;
22
-
23
- function resolveLazyScripts(appConfig: EcoPagesAppConfig, componentDir: string, scripts: string[]): string {
24
- const getSafeFileName = (filepath: string): string => {
25
- const EXTENSIONS_TO_JS = ['ts', 'tsx'];
26
- const safe = filepath.replace(new RegExp(`\\.(${EXTENSIONS_TO_JS.join('|')})$`), '.js');
27
- return safe.startsWith('./') ? safe.slice(2) : safe;
28
- };
29
-
30
- const baseDir = componentDir.split(appConfig.srcDir)[1] ?? '';
31
- const resolvedPaths = scripts.map((script) => {
32
- const relativePath = [AssetFactory.RESOLVED_ASSETS_DIR, baseDir, getSafeFileName(script)]
33
- .filter(Boolean)
34
- .join('/')
35
- .replace(/\/+/g, '/');
36
-
37
- return `/${relativePath.replace(/^\/+/, '')}`;
38
- });
39
-
40
- return resolvedPaths.join(',');
41
- }
42
-
43
- const ECOPAGES_JSX_INTEGRATION_NAME = 'ecopages-jsx';
44
-
45
- function isEcopagesJsxIntegration(integrationName: string): boolean {
46
- return integrationName === ECOPAGES_JSX_INTEGRATION_NAME;
47
- }
48
-
49
- function createEcopagesJsxLazyEntryName(integrationName: string, key: string): string {
50
- return `ecopages-${integrationName}-lazy-${rapidhash(key).toString(16)}`;
51
- }
52
-
53
- export class DependencyResolverService {
54
- private appConfig: EcoPagesAppConfig;
55
- private assetProcessingService: AssetProcessingService;
56
-
57
- /**
58
- * Creates the dependency resolver used by route and component rendering.
59
- *
60
- * @remarks
61
- * The resolver stays intentionally separate from HTML rendering so component
62
- * dependency collection, lazy trigger grouping, and processed-asset generation
63
- * can evolve without changing renderer implementations.
64
- */
65
- constructor(appConfig: EcoPagesAppConfig, assetProcessingService: AssetProcessingService) {
66
- this.appConfig = appConfig;
67
- this.assetProcessingService = assetProcessingService;
68
- }
69
-
70
- /**
71
- * Resolves one dependency path relative to the component that declared it.
72
- */
73
- resolveDependencyPath(componentDir: string, pathUrl: string): string {
74
- return path.join(componentDir, pathUrl);
75
- }
76
-
77
- /**
78
- * Maps lazy script source entries to deterministic fallback public URLs
79
- * used when bundling output URLs are unavailable.
80
- */
81
- resolveLazyScripts(componentDir: string, scripts: string[]): string {
82
- return resolveLazyScripts(this.appConfig, componentDir, scripts);
83
- }
84
-
85
- /**
86
- * Collects and processes component dependencies (styles, scripts, modules, lazy scripts).
87
- * Lazy dependencies are always resolved into global-injector trigger maps.
88
- */
89
- async processComponentDependencies(
90
- components: Array<EcoComponent | Partial<EcoComponent> | undefined | null>,
91
- integrationName: string,
92
- ): Promise<ProcessedAsset[]> {
93
- if (!this.assetProcessingService?.processDependencies) return [];
94
- const { dependencies, lazyScriptsByConfig } = collectComponentDependencies({
95
- components,
96
- integrationName,
97
- resolveLazyScripts: (componentDir, scripts) => this.resolveLazyScripts(componentDir, scripts),
98
- createEcopagesJsxLazyEntryName,
99
- isEcopagesJsxIntegration,
100
- errors: {
101
- invalidStylesheetEntry: DEPENDENCY_ERRORS.INVALID_STYLESHEET_ENTRY,
102
- invalidScriptEntry: DEPENDENCY_ERRORS.INVALID_SCRIPT_ENTRY,
103
- lazyScriptMissingSrc: DEPENDENCY_ERRORS.LAZY_SCRIPT_MISSING_SRC,
104
- },
105
- });
106
-
107
- const unifiedDependencies = createUnifiedPageDependencies(dependencies, integrationName);
108
- const hasLazyDependencies = unifiedDependencies.some(
109
- (dep) => dep.kind === 'script' && dep.excludeFromHtml === true,
110
- );
111
-
112
- const processedDependencies = await this.assetProcessingService.processDependencies(
113
- unifiedDependencies,
114
- integrationName,
115
- );
116
- const lazyKeyToOutputUrl = new Map<string, string>();
117
-
118
- for (const dependency of processedDependencies) {
119
- if (dependency.kind === 'script' && dependency.srcUrl) {
120
- const lazyKey = dependency.attributes?.['data-eco-lazy-key'];
121
- if (lazyKey) {
122
- lazyKeyToOutputUrl.set(lazyKey, dependency.srcUrl);
123
- }
124
- }
125
- }
126
-
127
- for (const [config, lazyGroupsMap] of lazyScriptsByConfig.entries()) {
128
- const rawGroups: ResolvedLazyGroup[] = [];
129
-
130
- for (const group of lazyGroupsMap.values()) {
131
- const resolvedUrls = group.scripts
132
- .map(({ lazyKey, fallbackUrl }) => lazyKeyToOutputUrl.get(lazyKey) ?? fallbackUrl)
133
- .filter((url): url is string => Boolean(url && url.length > 0));
134
-
135
- if (resolvedUrls.length === 0) {
136
- continue;
137
- }
138
-
139
- rawGroups.push({ lazy: group.lazy, scripts: Array.from(new Set(resolvedUrls)) });
140
- }
141
-
142
- if (hasLazyDependencies) {
143
- config._resolvedLazyTriggers = buildResolvedLazyTriggers(config, rawGroups);
144
- config._resolvedLazyScripts = undefined;
145
- }
146
- }
147
-
148
- return processedDependencies;
149
- }
150
- }
@@ -1,75 +0,0 @@
1
- import { readFileSync } from 'node:fs';
2
- import { parseSync } from 'oxc-parser';
3
-
4
- export type EcopagesVirtualImport = {
5
- from: string;
6
- imports: string[] | undefined;
7
- };
8
-
9
- /**
10
- * Extracts runtime `ecopages:` virtual-module imports from a component source file.
11
- *
12
- * Type-only imports are skipped and bare namespace imports are represented by an
13
- * `undefined` import list so downstream module generation can preserve that shape.
14
- */
15
- export function extractEcopagesVirtualImports(file: string): EcopagesVirtualImport[] {
16
- let source: string;
17
- try {
18
- source = readFileSync(file, 'utf-8');
19
- } catch {
20
- return [];
21
- }
22
-
23
- let result;
24
- try {
25
- result = parseSync(file, source, { sourceType: 'module' });
26
- } catch {
27
- return [];
28
- }
29
-
30
- const found = new Map<string, Set<string> | null>();
31
-
32
- for (const node of result.program.body ?? []) {
33
- if (node.type !== 'ImportDeclaration') continue;
34
- if (node.importKind === 'type') continue;
35
- const specifier: string = node.source?.value ?? '';
36
- if (!specifier.startsWith('ecopages:')) continue;
37
-
38
- if (found.get(specifier) === null) {
39
- continue;
40
- }
41
-
42
- const namedImports: string[] = [];
43
- for (const spec of node.specifiers ?? []) {
44
- if (spec.type === 'ImportSpecifier') {
45
- let importedName = spec.local?.name;
46
- if (spec.imported?.type === 'Identifier') {
47
- importedName = spec.imported.name;
48
- } else if (spec.imported?.type === 'Literal') {
49
- importedName = spec.imported.value;
50
- }
51
- namedImports.push(importedName);
52
- }
53
- }
54
-
55
- if (namedImports.length === 0) {
56
- found.set(specifier, null);
57
- continue;
58
- }
59
-
60
- const existing = found.get(specifier);
61
- if (!existing) {
62
- found.set(specifier, new Set(namedImports));
63
- continue;
64
- }
65
-
66
- for (const imported of namedImports) {
67
- existing.add(imported);
68
- }
69
- }
70
-
71
- return Array.from(found.entries()).map(([from, importsSet]) => ({
72
- from,
73
- imports: importsSet ? Array.from(importsSet) : undefined,
74
- }));
75
- }
@@ -1,167 +0,0 @@
1
- import type { DependencyLazyTrigger, EcoComponentScriptEntry } from '../../types/public-types.ts';
2
- import type { AssetDefinition } from '../../services/assets/asset-processing-service/index.ts';
3
- import { AssetFactory } from '../../services/assets/asset-processing-service/index.ts';
4
- import { rapidhash } from '../../utils/hash.ts';
5
- import { getLazyTriggerKey } from './lazy-trigger-planning.ts';
6
-
7
- type LazyScriptRef = {
8
- lazyKey: string;
9
- fallbackUrl?: string;
10
- };
11
-
12
- /**
13
- * Lazy scripts grouped by one trigger declaration.
14
- */
15
- export type LazyGroup = {
16
- lazy: DependencyLazyTrigger;
17
- scripts: LazyScriptRef[];
18
- };
19
-
20
- /**
21
- * Callback used to record one normalized lazy-script registration.
22
- */
23
- export type RegisterLazyScript = (input: {
24
- lazy: DependencyLazyTrigger;
25
- lazyKey: string;
26
- fallbackUrl?: string;
27
- }) => void;
28
-
29
- type CollectLazyEntriesOptions = {
30
- scriptEntries: Array<string | EcoComponentScriptEntry>;
31
- componentFile: string;
32
- componentDir: string;
33
- integrationName: string;
34
- dependencies: AssetDefinition[];
35
- lazyDependencyKeys: Set<string>;
36
- registerLazyScript: RegisterLazyScript;
37
- resolveDependencyPath: (componentDir: string, pathUrl: string) => string;
38
- resolveLazyScripts: (componentDir: string, scripts: string[]) => string;
39
- createModuleScriptAttributes: (attributes?: Record<string, string>) => Record<string, string>;
40
- createEcopagesJsxLazyEntryName: (integrationName: string, key: string) => string;
41
- pushUniqueDependency: (
42
- keys: Set<string>,
43
- key: string,
44
- dependencies: AssetDefinition[],
45
- dependency: AssetDefinition,
46
- ) => boolean;
47
- getLazyScriptMissingSrcMessage: () => string;
48
- isEcopagesJsxIntegration: (integrationName: string) => boolean;
49
- };
50
-
51
- function isDependencyEntryObject(entry: string | EcoComponentScriptEntry): entry is EcoComponentScriptEntry {
52
- return typeof entry === 'object' && entry !== null;
53
- }
54
-
55
- function getDependencyEntrySrcOrThrow(entry: EcoComponentScriptEntry, errorMessage: string): string {
56
- if (!entry.src) {
57
- throw new Error(errorMessage);
58
- }
59
-
60
- return entry.src;
61
- }
62
-
63
- /**
64
- * Collects lazy script dependency entries and emits their hidden bundle inputs.
65
- *
66
- * This helper also reports the trigger-to-script relationship back to the caller so
67
- * later stages can build the lazy-trigger manifest without reparsing dependency config.
68
- */
69
- export function collectLazyScriptEntries(options: CollectLazyEntriesOptions): void {
70
- const {
71
- scriptEntries,
72
- componentFile,
73
- componentDir,
74
- integrationName,
75
- dependencies,
76
- lazyDependencyKeys,
77
- registerLazyScript,
78
- resolveDependencyPath,
79
- resolveLazyScripts,
80
- createModuleScriptAttributes,
81
- createEcopagesJsxLazyEntryName,
82
- pushUniqueDependency,
83
- getLazyScriptMissingSrcMessage,
84
- isEcopagesJsxIntegration,
85
- } = options;
86
-
87
- for (const [index, scriptEntry] of scriptEntries.entries()) {
88
- if (!isDependencyEntryObject(scriptEntry) || !scriptEntry.lazy) {
89
- continue;
90
- }
91
-
92
- const lazy = scriptEntry.lazy;
93
- const content = scriptEntry.content;
94
- const src = scriptEntry.src;
95
- const attributes = scriptEntry.attributes;
96
-
97
- if (content) {
98
- const lazyKey = `lazy:${rapidhash(`${componentFile}:entry:${index}:${content}`).toString(16)}`;
99
- const depKey = `lazy:entry:content:${getLazyTriggerKey(lazy)}:${content}:${JSON.stringify(attributes ?? {})}`;
100
- pushUniqueDependency(
101
- lazyDependencyKeys,
102
- depKey,
103
- dependencies,
104
- AssetFactory.createContentScript({
105
- position: 'head',
106
- content,
107
- excludeFromHtml: true,
108
- attributes: {
109
- ...createModuleScriptAttributes(attributes),
110
- 'data-eco-lazy-key': lazyKey,
111
- },
112
- }),
113
- );
114
-
115
- registerLazyScript({
116
- lazy,
117
- lazyKey,
118
- });
119
- continue;
120
- }
121
-
122
- const script = src ?? getDependencyEntrySrcOrThrow(scriptEntry, getLazyScriptMissingSrcMessage());
123
- const resolvedPath = resolveDependencyPath(componentDir, script);
124
- const fallbackUrl = resolveLazyScripts(componentDir, [script]).split(',')[0] ?? '';
125
- const lazyKey = `lazy:${rapidhash(`${resolvedPath}:${getLazyTriggerKey(lazy)}`).toString(16)}`;
126
- const lazyEntryName = createEcopagesJsxLazyEntryName(
127
- integrationName,
128
- `${resolvedPath}:${getLazyTriggerKey(lazy)}`,
129
- );
130
- const depKey = `lazy:entry:file:${getLazyTriggerKey(lazy)}:${resolvedPath}:${JSON.stringify(attributes ?? {})}`;
131
-
132
- pushUniqueDependency(
133
- lazyDependencyKeys,
134
- depKey,
135
- dependencies,
136
- isEcopagesJsxIntegration(integrationName)
137
- ? AssetFactory.createContentScript({
138
- name: lazyEntryName,
139
- position: 'head',
140
- content: `import ${JSON.stringify(resolvedPath)};`,
141
- excludeFromHtml: true,
142
- bundleOptions: {
143
- splitting: false,
144
- },
145
- attributes: {
146
- ...createModuleScriptAttributes(attributes),
147
- 'data-eco-lazy-key': lazyKey,
148
- },
149
- })
150
- : AssetFactory.createFileScript({
151
- filepath: resolvedPath,
152
- position: 'head',
153
- excludeFromHtml: true,
154
- attributes: {
155
- ...createModuleScriptAttributes(attributes),
156
- 'data-eco-lazy-key': lazyKey,
157
- },
158
- }),
159
- );
160
-
161
- registerLazyScript({
162
- lazy,
163
- lazyKey,
164
- fallbackUrl,
165
- });
166
- }
167
- }
@@ -1,74 +0,0 @@
1
- import type {
2
- DependencyLazyTrigger,
3
- EcoComponent,
4
- LazyTriggerRule,
5
- ResolvedLazyTrigger,
6
- } from '../../types/public-types.ts';
7
- import { rapidhash } from '../../utils/hash.ts';
8
-
9
- /**
10
- * Lazy scripts already normalized onto one trigger and concrete script URL set.
11
- */
12
- export type ResolvedLazyGroup = {
13
- lazy: DependencyLazyTrigger;
14
- scripts: string[];
15
- };
16
-
17
- /**
18
- * Creates a stable grouping key for a lazy trigger declaration.
19
- */
20
- export function getLazyTriggerKey(lazy: DependencyLazyTrigger): string {
21
- if ('on:idle' in lazy) {
22
- return 'on:idle';
23
- }
24
-
25
- if ('on:interaction' in lazy) {
26
- return `on:interaction:${lazy['on:interaction']}`;
27
- }
28
-
29
- if ('on:visible' in lazy) {
30
- const value = lazy['on:visible'];
31
- return `on:visible:${value === true ? 'true' : value}`;
32
- }
33
-
34
- return JSON.stringify(lazy);
35
- }
36
-
37
- /**
38
- * Derives the public lazy-trigger manifest attached to a component config.
39
- *
40
- * The generated `triggerId` is stable for the same component file and set of
41
- * resolved script URLs, independent of declaration order.
42
- */
43
- export function buildResolvedLazyTriggers(
44
- config: NonNullable<EcoComponent['config']>,
45
- groups: ResolvedLazyGroup[],
46
- ): ResolvedLazyTrigger[] {
47
- if (groups.length === 0) return [];
48
-
49
- const componentFile = config.__eco?.file ?? '';
50
- const sortedUrls = groups
51
- .flatMap((group) => group.scripts)
52
- .sort()
53
- .join(',');
54
- const triggerId = `eco-trigger-${rapidhash(`${componentFile}:${sortedUrls}`).toString(16)}`;
55
-
56
- const rules: LazyTriggerRule[] = groups.map((group) => {
57
- const { scripts, lazy } = group;
58
-
59
- if ('on:idle' in lazy) {
60
- return { 'on:idle': { scripts } };
61
- }
62
- if ('on:interaction' in lazy) {
63
- return { 'on:interaction': { value: lazy['on:interaction'], scripts } };
64
- }
65
- if ('on:visible' in lazy) {
66
- const visibleSelector = lazy['on:visible'];
67
- if (visibleSelector === true) return { 'on:visible': { scripts } };
68
- return { 'on:visible': { value: String(visibleSelector), scripts } };
69
- }
70
- throw new Error(`Unknown lazy trigger kind: ${JSON.stringify(lazy)}`);
71
- });
72
-
73
- return [{ triggerId, rules }];
74
- }
@@ -1,60 +0,0 @@
1
- import { normalizeModuleDeclarations } from '../../eco/module-dependencies.ts';
2
- import type { EcopagesVirtualImport } from './ecopages-virtual-imports.ts';
3
-
4
- type ModuleDeclarationInput = {
5
- from: string;
6
- imports?: string[];
7
- };
8
-
9
- /**
10
- * Narrows arbitrary config input onto the declared module string array shape.
11
- */
12
- function getDeclaredModules(value: unknown): string[] | undefined {
13
- if (!Array.isArray(value)) {
14
- return undefined;
15
- }
16
-
17
- return value.every((entry) => typeof entry === 'string') ? value : undefined;
18
- }
19
-
20
- /**
21
- * Merges one module declaration into the aggregated map, preserving the wildcard
22
- * import semantics represented by `null`.
23
- */
24
- function mergeModuleDeclaration(
25
- modulesMap: Map<string, Set<string> | null>,
26
- declaration: ModuleDeclarationInput,
27
- ): void {
28
- const existing = modulesMap.get(declaration.from);
29
- if (!declaration.imports || declaration.imports.length === 0) {
30
- modulesMap.set(declaration.from, null);
31
- return;
32
- }
33
-
34
- if (existing === null) {
35
- return;
36
- }
37
-
38
- const merged = existing ?? new Set<string>();
39
- for (const imported of declaration.imports) {
40
- merged.add(imported);
41
- }
42
- modulesMap.set(declaration.from, merged);
43
- }
44
-
45
- /**
46
- * Combines explicit config module declarations with auto-detected `ecopages:` imports.
47
- */
48
- export function collectModuleDeclarations(
49
- modulesMap: Map<string, Set<string> | null>,
50
- declaredModules: unknown,
51
- autoVirtualImports: EcopagesVirtualImport[],
52
- ): void {
53
- for (const declaration of normalizeModuleDeclarations(getDeclaredModules(declaredModules))) {
54
- mergeModuleDeclaration(modulesMap, declaration);
55
- }
56
-
57
- for (const declaration of autoVirtualImports) {
58
- mergeModuleDeclaration(modulesMap, declaration);
59
- }
60
- }
@@ -1,16 +0,0 @@
1
- import { rapidhash } from '../../utils/hash.ts';
2
-
3
- export function createModuleScriptName(from: string, imports: string[] | undefined): string {
4
- const normalizedImports = imports ? [...imports].sort().join(',') : '*';
5
- const hash = rapidhash(`${from}|${normalizedImports}`).toString(16);
6
- return `module-${hash}`;
7
- }
8
-
9
- export function createNamedImportModuleSource(from: string, imports: string[]): string {
10
- const namedImports = [...new Set(imports)].sort().join(', ');
11
- return `export { ${namedImports} } from '${from}';`;
12
- }
13
-
14
- export function createNamespaceImportModuleSource(from: string): string {
15
- return `export * from '${from}';`;
16
- }