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

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 (515) hide show
  1. package/package.json +93 -226
  2. package/src/adapters/abstract/application-adapter.test.ts +172 -0
  3. package/src/adapters/abstract/application-adapter.ts +379 -0
  4. package/src/adapters/abstract/router-adapter.ts +30 -0
  5. package/src/adapters/abstract/server-adapter.ts +79 -0
  6. package/src/adapters/bun/client-bridge.ts +62 -0
  7. package/src/adapters/bun/create-app.ts +180 -0
  8. package/src/adapters/bun/hmr-manager.test.ts +267 -0
  9. package/src/adapters/bun/hmr-manager.ts +406 -0
  10. package/src/adapters/bun/index.ts +2 -0
  11. package/src/adapters/bun/server-adapter.ts +500 -0
  12. package/src/adapters/bun/server-lifecycle.ts +124 -0
  13. package/src/adapters/create-app.test.ts +10 -0
  14. package/src/adapters/create-app.ts +91 -0
  15. package/src/adapters/index.ts +2 -0
  16. package/src/adapters/node/create-app.test.ts +53 -0
  17. package/src/adapters/node/create-app.ts +183 -0
  18. package/src/adapters/node/node-client-bridge.test.ts +198 -0
  19. package/src/adapters/node/node-client-bridge.ts +79 -0
  20. package/src/adapters/node/node-hmr-manager.test.ts +322 -0
  21. package/src/adapters/node/node-hmr-manager.ts +378 -0
  22. package/src/adapters/node/server-adapter.ts +502 -0
  23. package/src/adapters/node/static-content-server.test.ts +60 -0
  24. package/src/adapters/node/static-content-server.ts +239 -0
  25. package/src/adapters/shared/api-response.test.ts +97 -0
  26. package/src/adapters/shared/api-response.ts +104 -0
  27. package/src/adapters/shared/application-adapter.ts +199 -0
  28. package/src/adapters/shared/define-api-handler.ts +66 -0
  29. package/src/adapters/shared/explicit-static-route-matcher.test.ts +381 -0
  30. package/src/adapters/shared/explicit-static-route-matcher.ts +140 -0
  31. package/src/adapters/shared/file-route-middleware-pipeline.test.ts +90 -0
  32. package/src/adapters/shared/file-route-middleware-pipeline.ts +127 -0
  33. package/src/adapters/shared/fs-server-response-factory.test.ts +187 -0
  34. package/src/adapters/shared/fs-server-response-factory.ts +118 -0
  35. package/src/adapters/shared/fs-server-response-matcher.test.ts +285 -0
  36. package/src/adapters/shared/fs-server-response-matcher.ts +189 -0
  37. package/src/adapters/shared/hmr-entrypoint-registrar.ts +149 -0
  38. package/src/adapters/shared/hmr-html-response.ts +52 -0
  39. package/src/adapters/shared/hmr-manager.contract.test.ts +232 -0
  40. package/src/adapters/shared/hmr-manager.dispatch.test.ts +220 -0
  41. package/src/adapters/shared/render-context.test.ts +150 -0
  42. package/src/adapters/shared/render-context.ts +123 -0
  43. package/src/adapters/shared/runtime-bootstrap.ts +79 -0
  44. package/src/adapters/shared/server-adapter.test.ts +77 -0
  45. package/src/adapters/shared/server-adapter.ts +493 -0
  46. package/src/adapters/shared/server-route-handler.test.ts +110 -0
  47. package/src/adapters/shared/server-route-handler.ts +153 -0
  48. package/src/adapters/shared/server-static-builder.test.ts +338 -0
  49. package/src/adapters/shared/server-static-builder.ts +170 -0
  50. package/src/build/build-adapter-serialization.test.ts +281 -0
  51. package/src/build/build-adapter.test.ts +1240 -0
  52. package/src/build/build-adapter.ts +1012 -0
  53. package/src/build/build-manifest.ts +54 -0
  54. package/src/build/build-types.ts +83 -0
  55. package/src/build/dev-build-coordinator.ts +220 -0
  56. package/src/build/esbuild-build-adapter.ts +660 -0
  57. package/src/build/runtime-build-executor.test.ts +81 -0
  58. package/src/build/runtime-build-executor.ts +40 -0
  59. package/src/build/runtime-specifier-alias-plugin.test.ts +67 -0
  60. package/src/build/runtime-specifier-alias-plugin.ts +62 -0
  61. package/src/build/runtime-specifier-aliases.ts +135 -0
  62. package/src/config/config-builder.test.ts +443 -0
  63. package/src/config/config-builder.ts +742 -0
  64. package/src/config/config-builder.typecheck.test.ts +96 -0
  65. package/src/config/{constants.d.ts → constants.ts} +22 -13
  66. package/src/dev/sc-server.ts +143 -0
  67. package/src/eco/eco.browser.test.ts +43 -0
  68. package/src/eco/eco.browser.ts +118 -0
  69. package/src/eco/eco.test.ts +654 -0
  70. package/src/eco/eco.ts +205 -0
  71. package/src/eco/eco.types.ts +221 -0
  72. package/src/eco/eco.utils.test.ts +219 -0
  73. package/src/eco/eco.utils.ts +5 -0
  74. package/src/eco/global-injector-map.test.ts +42 -0
  75. package/src/eco/global-injector-map.ts +112 -0
  76. package/src/eco/lazy-injector-map.test.ts +66 -0
  77. package/src/eco/lazy-injector-map.ts +120 -0
  78. package/src/eco/module-dependencies.test.ts +30 -0
  79. package/src/eco/module-dependencies.ts +75 -0
  80. package/src/errors/http-error.test.ts +134 -0
  81. package/src/errors/http-error.ts +72 -0
  82. package/src/errors/{index.d.ts → index.ts} +2 -2
  83. package/src/errors/locals-access-error.ts +7 -0
  84. package/src/global/app-logger.ts +4 -0
  85. package/src/global/utils.test.ts +12 -0
  86. 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
  87. package/src/hmr/client/__screenshots__/hmr-runtime.test.browser.ts/HMR-Runtime-HMR-Server-Integration-should-load-fixture-app-page-1.png +0 -0
  88. package/src/hmr/client/__screenshots__/hmr-runtime.test.browser.ts/HMR-Runtime-WebSocket-Connection-should-connect-to-correct-HMR-endpoint-1.png +0 -0
  89. package/src/hmr/client/hmr-runtime.ts +160 -0
  90. package/src/hmr/hmr-strategy.test.ts +124 -0
  91. package/src/hmr/hmr-strategy.ts +177 -0
  92. package/src/hmr/hmr.postcss.test.e2e.ts +41 -0
  93. package/src/hmr/hmr.test.e2e.ts +66 -0
  94. package/src/hmr/strategies/default-hmr-strategy.ts +60 -0
  95. package/src/hmr/strategies/js-hmr-strategy.test.ts +335 -0
  96. package/src/hmr/strategies/js-hmr-strategy.ts +320 -0
  97. package/src/index.browser.ts +3 -0
  98. package/src/index.ts +15 -0
  99. package/src/integrations/ghtml/ghtml-renderer.test.ts +253 -0
  100. package/src/integrations/ghtml/ghtml-renderer.ts +97 -0
  101. package/src/integrations/ghtml/ghtml.constants.ts +1 -0
  102. package/src/integrations/ghtml/ghtml.plugin.ts +28 -0
  103. package/src/plugins/alias-resolver-plugin.test.ts +41 -0
  104. package/src/plugins/alias-resolver-plugin.ts +63 -0
  105. package/src/plugins/eco-component-meta-plugin.test.ts +406 -0
  106. package/src/plugins/eco-component-meta-plugin.ts +495 -0
  107. package/src/plugins/foreign-jsx-override-plugin.test.ts +65 -0
  108. package/src/plugins/foreign-jsx-override-plugin.ts +67 -0
  109. package/src/plugins/integration-plugin.test.ts +156 -0
  110. package/src/plugins/integration-plugin.ts +311 -0
  111. package/src/plugins/processor.test.ts +148 -0
  112. package/src/plugins/processor.ts +240 -0
  113. package/src/plugins/{runtime-capability.d.ts → runtime-capability.ts} +8 -3
  114. package/src/plugins/source-transform.test.ts +82 -0
  115. package/src/plugins/source-transform.ts +123 -0
  116. package/src/route-renderer/orchestration/boundary-planning.service.ts +146 -0
  117. package/src/route-renderer/orchestration/component-render-context.ts +318 -0
  118. package/src/route-renderer/orchestration/integration-renderer.test.ts +2088 -0
  119. package/src/route-renderer/orchestration/integration-renderer.ts +1285 -0
  120. package/src/route-renderer/orchestration/page-packaging.service.test.ts +76 -0
  121. package/src/route-renderer/orchestration/page-packaging.service.ts +85 -0
  122. package/src/route-renderer/orchestration/processed-asset-dedupe.ts +25 -0
  123. package/src/route-renderer/orchestration/queued-boundary-runtime.service.test.ts +319 -0
  124. package/src/route-renderer/orchestration/queued-boundary-runtime.service.ts +289 -0
  125. package/src/route-renderer/orchestration/render-execution.service.test.ts +196 -0
  126. package/src/route-renderer/orchestration/render-execution.service.ts +182 -0
  127. package/src/route-renderer/orchestration/render-output.utils.ts +302 -0
  128. package/src/route-renderer/orchestration/render-preparation.service.test.ts +569 -0
  129. package/src/route-renderer/orchestration/render-preparation.service.ts +508 -0
  130. package/src/route-renderer/orchestration/route-shell-composer.service.ts +162 -0
  131. package/src/route-renderer/orchestration/template-serialization.test.ts +110 -0
  132. package/src/route-renderer/orchestration/template-serialization.ts +117 -0
  133. package/src/route-renderer/page-loading/component-dependency-collection.ts +196 -0
  134. package/src/route-renderer/page-loading/declared-asset-collection.ts +156 -0
  135. package/src/route-renderer/page-loading/dependency-resolver.test.ts +665 -0
  136. package/src/route-renderer/page-loading/dependency-resolver.ts +150 -0
  137. package/src/route-renderer/page-loading/ecopages-virtual-imports.ts +75 -0
  138. package/src/route-renderer/page-loading/lazy-entry-collection.ts +167 -0
  139. package/src/route-renderer/page-loading/lazy-trigger-planning.ts +74 -0
  140. package/src/route-renderer/page-loading/module-declaration-aggregation.ts +60 -0
  141. package/src/route-renderer/page-loading/module-declaration-scripts.ts +16 -0
  142. package/src/route-renderer/page-loading/page-dependency-bundling.ts +205 -0
  143. package/src/route-renderer/page-loading/page-module-loader.test.ts +183 -0
  144. package/src/route-renderer/page-loading/page-module-loader.ts +184 -0
  145. package/src/route-renderer/route-renderer.ts +136 -0
  146. package/src/router/client/link-intent.test.browser.ts +51 -0
  147. package/src/router/client/link-intent.ts +92 -0
  148. package/src/router/client/navigation-coordinator.test.ts +237 -0
  149. package/src/router/client/navigation-coordinator.ts +453 -0
  150. package/src/router/server/fs-router-scanner.test.ts +83 -0
  151. package/src/router/server/fs-router-scanner.ts +224 -0
  152. package/src/router/server/fs-router.test.ts +214 -0
  153. package/src/router/server/fs-router.ts +122 -0
  154. package/src/services/assets/asset-processing-service/asset-dependency-keys.ts +66 -0
  155. package/src/services/assets/asset-processing-service/asset-processing.service.test.ts +476 -0
  156. package/src/services/assets/asset-processing-service/asset-processing.service.ts +345 -0
  157. package/src/services/assets/asset-processing-service/asset.factory.test.ts +63 -0
  158. package/src/services/assets/asset-processing-service/asset.factory.ts +105 -0
  159. package/src/services/assets/asset-processing-service/assets.types.ts +125 -0
  160. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.test.ts +74 -0
  161. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.ts +96 -0
  162. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.test.ts +67 -0
  163. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.ts +78 -0
  164. package/src/services/assets/asset-processing-service/grouped-content-bundles.ts +104 -0
  165. package/src/services/assets/asset-processing-service/index.ts +5 -0
  166. package/src/services/assets/asset-processing-service/{processor.interface.d.ts → processor.interface.ts} +10 -5
  167. package/src/services/assets/asset-processing-service/processor.registry.ts +18 -0
  168. package/src/services/assets/asset-processing-service/processors/base/base-processor.test.ts +59 -0
  169. package/src/services/assets/asset-processing-service/processors/base/base-processor.ts +83 -0
  170. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.ts +174 -0
  171. package/src/services/assets/asset-processing-service/processors/index.ts +5 -0
  172. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.test.ts +192 -0
  173. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.ts +134 -0
  174. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.test.ts +326 -0
  175. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.ts +110 -0
  176. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.test.ts +227 -0
  177. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.ts +87 -0
  178. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.test.ts +261 -0
  179. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.ts +71 -0
  180. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.ts +81 -0
  181. package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.ts +65 -0
  182. package/src/services/assets/browser-bundle.service.test.ts +66 -0
  183. package/src/services/assets/browser-bundle.service.ts +109 -0
  184. package/src/services/cache/cache.types.ts +126 -0
  185. package/src/services/cache/index.ts +18 -0
  186. package/src/services/cache/memory-cache-store.test.ts +225 -0
  187. package/src/services/cache/memory-cache-store.ts +130 -0
  188. package/src/services/cache/page-cache-service.test.ts +175 -0
  189. package/src/services/cache/page-cache-service.ts +202 -0
  190. package/src/services/cache/page-request-cache-coordinator.service.test.ts +79 -0
  191. package/src/services/cache/page-request-cache-coordinator.service.ts +131 -0
  192. package/src/services/html/html-rewriter-provider.service.test.ts +183 -0
  193. package/src/services/html/html-rewriter-provider.service.ts +104 -0
  194. package/src/services/html/html-transformer.service.test.ts +479 -0
  195. package/src/services/html/html-transformer.service.ts +275 -0
  196. package/src/services/invalidation/development-invalidation.service.test.ts +87 -0
  197. package/src/services/invalidation/development-invalidation.service.ts +262 -0
  198. package/src/services/module-loading/app-module-loader.service.ts +9 -0
  199. package/src/services/module-loading/app-server-module-transpiler.service.test.ts +130 -0
  200. package/src/services/module-loading/app-server-module-transpiler.service.ts +143 -0
  201. package/src/services/module-loading/host-module-loader-registry.ts +15 -0
  202. package/src/services/module-loading/{module-loading-types.d.ts → module-loading-types.ts} +1 -0
  203. package/src/services/module-loading/node-bootstrap-plugin.test.ts +335 -0
  204. package/src/services/module-loading/node-bootstrap-plugin.ts +297 -0
  205. package/src/services/module-loading/page-module-import.service.test.ts +504 -0
  206. package/src/services/module-loading/page-module-import.service.ts +252 -0
  207. package/src/services/module-loading/server-module-transpiler.service.test.ts +243 -0
  208. package/src/services/module-loading/server-module-transpiler.service.ts +104 -0
  209. package/src/services/module-loading/source-module-support.ts +19 -0
  210. package/src/services/runtime-state/dev-graph.service.ts +217 -0
  211. package/src/services/runtime-state/entrypoint-dependency-graph.service.ts +136 -0
  212. package/src/services/runtime-state/runtime-specifier-registry.service.ts +96 -0
  213. package/src/services/runtime-state/server-invalidation-state.service.ts +68 -0
  214. package/src/services/validation/schema-validation-service.test.ts +223 -0
  215. package/src/services/validation/schema-validation-service.ts +204 -0
  216. package/src/services/validation/{standard-schema.types.d.ts → standard-schema.types.ts} +20 -17
  217. package/src/static-site-generator/static-site-generator.test.ts +316 -0
  218. package/src/static-site-generator/static-site-generator.ts +462 -0
  219. package/src/types/internal-types.ts +242 -0
  220. package/src/types/public-types.ts +1443 -0
  221. package/src/utils/deep-merge.test.ts +114 -0
  222. package/src/utils/deep-merge.ts +47 -0
  223. package/src/utils/hash.ts +5 -0
  224. package/src/utils/html-escaping.ts +9 -0
  225. package/src/utils/invariant.test.ts +22 -0
  226. package/src/utils/invariant.ts +15 -0
  227. package/src/utils/locals-utils.ts +37 -0
  228. package/src/utils/parse-cli-args.test.ts +69 -0
  229. package/src/utils/parse-cli-args.ts +105 -0
  230. package/src/utils/path-utils.module.ts +14 -0
  231. package/src/utils/path-utils.test.ts +15 -0
  232. package/src/utils/resolve-work-dir.ts +45 -0
  233. package/src/utils/runtime.ts +44 -0
  234. package/src/utils/server-utils.module.ts +67 -0
  235. package/src/utils/server-utils.test.ts +38 -0
  236. package/src/watchers/project-watcher.integration.test.ts +337 -0
  237. package/src/watchers/project-watcher.test-helpers.ts +41 -0
  238. package/src/watchers/project-watcher.test.ts +768 -0
  239. package/src/watchers/project-watcher.ts +357 -0
  240. package/CHANGELOG.md +0 -51
  241. package/src/adapters/abstract/application-adapter.d.ts +0 -194
  242. package/src/adapters/abstract/application-adapter.js +0 -121
  243. package/src/adapters/abstract/router-adapter.d.ts +0 -26
  244. package/src/adapters/abstract/router-adapter.js +0 -5
  245. package/src/adapters/abstract/server-adapter.d.ts +0 -69
  246. package/src/adapters/abstract/server-adapter.js +0 -15
  247. package/src/adapters/bun/client-bridge.d.ts +0 -34
  248. package/src/adapters/bun/client-bridge.js +0 -48
  249. package/src/adapters/bun/create-app.d.ts +0 -52
  250. package/src/adapters/bun/create-app.js +0 -116
  251. package/src/adapters/bun/hmr-manager.d.ts +0 -143
  252. package/src/adapters/bun/hmr-manager.js +0 -333
  253. package/src/adapters/bun/index.d.ts +0 -2
  254. package/src/adapters/bun/index.js +0 -8
  255. package/src/adapters/bun/server-adapter.d.ts +0 -155
  256. package/src/adapters/bun/server-adapter.js +0 -374
  257. package/src/adapters/bun/server-lifecycle.d.ts +0 -63
  258. package/src/adapters/bun/server-lifecycle.js +0 -92
  259. package/src/adapters/create-app.d.ts +0 -20
  260. package/src/adapters/create-app.js +0 -66
  261. package/src/adapters/index.d.ts +0 -2
  262. package/src/adapters/index.js +0 -8
  263. package/src/adapters/node/create-app.d.ts +0 -18
  264. package/src/adapters/node/create-app.js +0 -149
  265. package/src/adapters/node/node-client-bridge.d.ts +0 -26
  266. package/src/adapters/node/node-client-bridge.js +0 -66
  267. package/src/adapters/node/node-hmr-manager.d.ts +0 -133
  268. package/src/adapters/node/node-hmr-manager.js +0 -311
  269. package/src/adapters/node/server-adapter.d.ts +0 -161
  270. package/src/adapters/node/server-adapter.js +0 -359
  271. package/src/adapters/node/static-content-server.d.ts +0 -60
  272. package/src/adapters/node/static-content-server.js +0 -194
  273. package/src/adapters/shared/api-response.d.ts +0 -52
  274. package/src/adapters/shared/api-response.js +0 -96
  275. package/src/adapters/shared/application-adapter.d.ts +0 -18
  276. package/src/adapters/shared/application-adapter.js +0 -90
  277. package/src/adapters/shared/define-api-handler.d.ts +0 -25
  278. package/src/adapters/shared/define-api-handler.js +0 -15
  279. package/src/adapters/shared/explicit-static-route-matcher.d.ts +0 -38
  280. package/src/adapters/shared/explicit-static-route-matcher.js +0 -103
  281. package/src/adapters/shared/file-route-middleware-pipeline.d.ts +0 -65
  282. package/src/adapters/shared/file-route-middleware-pipeline.js +0 -99
  283. package/src/adapters/shared/fs-server-response-factory.d.ts +0 -19
  284. package/src/adapters/shared/fs-server-response-factory.js +0 -97
  285. package/src/adapters/shared/fs-server-response-matcher.d.ts +0 -67
  286. package/src/adapters/shared/fs-server-response-matcher.js +0 -147
  287. package/src/adapters/shared/hmr-entrypoint-registrar.d.ts +0 -55
  288. package/src/adapters/shared/hmr-entrypoint-registrar.js +0 -87
  289. package/src/adapters/shared/hmr-html-response.d.ts +0 -22
  290. package/src/adapters/shared/hmr-html-response.js +0 -32
  291. package/src/adapters/shared/render-context.d.ts +0 -15
  292. package/src/adapters/shared/render-context.js +0 -72
  293. package/src/adapters/shared/runtime-bootstrap.d.ts +0 -38
  294. package/src/adapters/shared/runtime-bootstrap.js +0 -43
  295. package/src/adapters/shared/server-adapter.d.ts +0 -97
  296. package/src/adapters/shared/server-adapter.js +0 -390
  297. package/src/adapters/shared/server-route-handler.d.ts +0 -89
  298. package/src/adapters/shared/server-route-handler.js +0 -111
  299. package/src/adapters/shared/server-static-builder.d.ts +0 -70
  300. package/src/adapters/shared/server-static-builder.js +0 -100
  301. package/src/build/build-adapter.d.ts +0 -239
  302. package/src/build/build-adapter.js +0 -642
  303. package/src/build/build-manifest.d.ts +0 -27
  304. package/src/build/build-manifest.js +0 -30
  305. package/src/build/build-types.d.ts +0 -57
  306. package/src/build/build-types.js +0 -0
  307. package/src/build/dev-build-coordinator.d.ts +0 -72
  308. package/src/build/dev-build-coordinator.js +0 -154
  309. package/src/build/esbuild-build-adapter.d.ts +0 -78
  310. package/src/build/esbuild-build-adapter.js +0 -505
  311. package/src/build/runtime-build-executor.d.ts +0 -14
  312. package/src/build/runtime-build-executor.js +0 -22
  313. package/src/build/runtime-specifier-alias-plugin.d.ts +0 -15
  314. package/src/build/runtime-specifier-alias-plugin.js +0 -35
  315. package/src/build/runtime-specifier-aliases.d.ts +0 -5
  316. package/src/build/runtime-specifier-aliases.js +0 -95
  317. package/src/config/config-builder.d.ts +0 -252
  318. package/src/config/config-builder.js +0 -603
  319. package/src/config/constants.js +0 -25
  320. package/src/dev/sc-server.d.ts +0 -30
  321. package/src/dev/sc-server.js +0 -111
  322. package/src/eco/eco.browser.d.ts +0 -2
  323. package/src/eco/eco.browser.js +0 -83
  324. package/src/eco/eco.d.ts +0 -9
  325. package/src/eco/eco.js +0 -85
  326. package/src/eco/eco.types.d.ts +0 -178
  327. package/src/eco/eco.types.js +0 -0
  328. package/src/eco/eco.utils.d.ts +0 -1
  329. package/src/eco/eco.utils.js +0 -10
  330. package/src/eco/global-injector-map.d.ts +0 -16
  331. package/src/eco/global-injector-map.js +0 -80
  332. package/src/eco/lazy-injector-map.d.ts +0 -8
  333. package/src/eco/lazy-injector-map.js +0 -70
  334. package/src/eco/module-dependencies.d.ts +0 -18
  335. package/src/eco/module-dependencies.js +0 -49
  336. package/src/errors/http-error.d.ts +0 -31
  337. package/src/errors/http-error.js +0 -50
  338. package/src/errors/index.js +0 -4
  339. package/src/errors/locals-access-error.d.ts +0 -4
  340. package/src/errors/locals-access-error.js +0 -9
  341. package/src/global/app-logger.d.ts +0 -2
  342. package/src/global/app-logger.js +0 -6
  343. package/src/hmr/client/hmr-runtime.d.ts +0 -5
  344. package/src/hmr/client/hmr-runtime.js +0 -109
  345. package/src/hmr/hmr-strategy.d.ts +0 -162
  346. package/src/hmr/hmr-strategy.js +0 -44
  347. package/src/hmr/hmr.postcss.test.e2e.d.ts +0 -1
  348. package/src/hmr/hmr.postcss.test.e2e.js +0 -31
  349. package/src/hmr/hmr.test.e2e.d.ts +0 -1
  350. package/src/hmr/hmr.test.e2e.js +0 -43
  351. package/src/hmr/strategies/default-hmr-strategy.d.ts +0 -43
  352. package/src/hmr/strategies/default-hmr-strategy.js +0 -34
  353. package/src/hmr/strategies/js-hmr-strategy.d.ts +0 -139
  354. package/src/hmr/strategies/js-hmr-strategy.js +0 -178
  355. package/src/index.browser.d.ts +0 -3
  356. package/src/index.browser.js +0 -4
  357. package/src/index.d.ts +0 -6
  358. package/src/index.js +0 -21
  359. package/src/integrations/ghtml/ghtml-renderer.d.ts +0 -20
  360. package/src/integrations/ghtml/ghtml-renderer.js +0 -63
  361. package/src/integrations/ghtml/ghtml.constants.d.ts +0 -1
  362. package/src/integrations/ghtml/ghtml.constants.js +0 -4
  363. package/src/integrations/ghtml/ghtml.plugin.d.ts +0 -16
  364. package/src/integrations/ghtml/ghtml.plugin.js +0 -20
  365. package/src/plugins/alias-resolver-plugin.d.ts +0 -2
  366. package/src/plugins/alias-resolver-plugin.js +0 -53
  367. package/src/plugins/eco-component-meta-plugin.d.ts +0 -108
  368. package/src/plugins/eco-component-meta-plugin.js +0 -163
  369. package/src/plugins/foreign-jsx-override-plugin.d.ts +0 -31
  370. package/src/plugins/foreign-jsx-override-plugin.js +0 -35
  371. package/src/plugins/integration-plugin.d.ts +0 -219
  372. package/src/plugins/integration-plugin.js +0 -196
  373. package/src/plugins/processor.d.ts +0 -95
  374. package/src/plugins/processor.js +0 -136
  375. package/src/plugins/runtime-capability.js +0 -0
  376. package/src/plugins/source-transform.d.ts +0 -46
  377. package/src/plugins/source-transform.js +0 -71
  378. package/src/route-renderer/orchestration/boundary-planning.service.d.ts +0 -25
  379. package/src/route-renderer/orchestration/boundary-planning.service.js +0 -97
  380. package/src/route-renderer/orchestration/component-render-context.d.ts +0 -83
  381. package/src/route-renderer/orchestration/component-render-context.js +0 -147
  382. package/src/route-renderer/orchestration/integration-renderer.d.ts +0 -554
  383. package/src/route-renderer/orchestration/integration-renderer.js +0 -957
  384. package/src/route-renderer/orchestration/queued-boundary-runtime.service.d.ts +0 -89
  385. package/src/route-renderer/orchestration/queued-boundary-runtime.service.js +0 -155
  386. package/src/route-renderer/orchestration/render-execution.service.d.ts +0 -43
  387. package/src/route-renderer/orchestration/render-execution.service.js +0 -106
  388. package/src/route-renderer/orchestration/render-output.utils.d.ts +0 -46
  389. package/src/route-renderer/orchestration/render-output.utils.js +0 -65
  390. package/src/route-renderer/orchestration/render-preparation.service.d.ts +0 -120
  391. package/src/route-renderer/orchestration/render-preparation.service.js +0 -341
  392. package/src/route-renderer/orchestration/route-shell-composer.service.d.ts +0 -50
  393. package/src/route-renderer/orchestration/route-shell-composer.service.js +0 -81
  394. package/src/route-renderer/orchestration/template-serialization.d.ts +0 -38
  395. package/src/route-renderer/orchestration/template-serialization.js +0 -45
  396. package/src/route-renderer/page-loading/dependency-resolver.d.ts +0 -35
  397. package/src/route-renderer/page-loading/dependency-resolver.js +0 -444
  398. package/src/route-renderer/page-loading/page-module-loader.d.ts +0 -90
  399. package/src/route-renderer/page-loading/page-module-loader.js +0 -127
  400. package/src/route-renderer/route-renderer.d.ts +0 -67
  401. package/src/route-renderer/route-renderer.js +0 -103
  402. package/src/router/client/link-intent.js +0 -34
  403. package/src/router/client/link-intent.test.browser.d.ts +0 -1
  404. package/src/router/client/link-intent.test.browser.js +0 -43
  405. package/src/router/client/navigation-coordinator.d.ts +0 -149
  406. package/src/router/client/navigation-coordinator.js +0 -215
  407. package/src/router/server/fs-router-scanner.d.ts +0 -41
  408. package/src/router/server/fs-router-scanner.js +0 -161
  409. package/src/router/server/fs-router.d.ts +0 -26
  410. package/src/router/server/fs-router.js +0 -100
  411. package/src/services/assets/asset-processing-service/asset-processing.service.d.ts +0 -120
  412. package/src/services/assets/asset-processing-service/asset-processing.service.js +0 -331
  413. package/src/services/assets/asset-processing-service/asset.factory.d.ts +0 -17
  414. package/src/services/assets/asset-processing-service/asset.factory.js +0 -82
  415. package/src/services/assets/asset-processing-service/assets.types.d.ts +0 -89
  416. package/src/services/assets/asset-processing-service/assets.types.js +0 -0
  417. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.d.ts +0 -55
  418. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.js +0 -48
  419. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.d.ts +0 -20
  420. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.js +0 -41
  421. package/src/services/assets/asset-processing-service/index.d.ts +0 -5
  422. package/src/services/assets/asset-processing-service/index.js +0 -5
  423. package/src/services/assets/asset-processing-service/processor.interface.js +0 -6
  424. package/src/services/assets/asset-processing-service/processor.registry.d.ts +0 -8
  425. package/src/services/assets/asset-processing-service/processor.registry.js +0 -15
  426. package/src/services/assets/asset-processing-service/processors/base/base-processor.d.ts +0 -24
  427. package/src/services/assets/asset-processing-service/processors/base/base-processor.js +0 -64
  428. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.d.ts +0 -17
  429. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.js +0 -72
  430. package/src/services/assets/asset-processing-service/processors/index.d.ts +0 -5
  431. package/src/services/assets/asset-processing-service/processors/index.js +0 -5
  432. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.d.ts +0 -5
  433. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.js +0 -57
  434. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.d.ts +0 -9
  435. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.js +0 -88
  436. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.d.ts +0 -7
  437. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.js +0 -75
  438. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.d.ts +0 -5
  439. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +0 -25
  440. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.d.ts +0 -9
  441. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.js +0 -66
  442. package/src/services/assets/browser-bundle.service.d.ts +0 -32
  443. package/src/services/assets/browser-bundle.service.js +0 -33
  444. package/src/services/cache/cache.types.d.ts +0 -107
  445. package/src/services/cache/cache.types.js +0 -0
  446. package/src/services/cache/index.d.ts +0 -7
  447. package/src/services/cache/index.js +0 -7
  448. package/src/services/cache/memory-cache-store.d.ts +0 -42
  449. package/src/services/cache/memory-cache-store.js +0 -98
  450. package/src/services/cache/page-cache-service.d.ts +0 -70
  451. package/src/services/cache/page-cache-service.js +0 -152
  452. package/src/services/cache/page-request-cache-coordinator.service.d.ts +0 -75
  453. package/src/services/cache/page-request-cache-coordinator.service.js +0 -109
  454. package/src/services/html/html-rewriter-provider.service.d.ts +0 -37
  455. package/src/services/html/html-rewriter-provider.service.js +0 -68
  456. package/src/services/html/html-transformer.service.d.ts +0 -77
  457. package/src/services/html/html-transformer.service.js +0 -215
  458. package/src/services/invalidation/development-invalidation.service.d.ts +0 -74
  459. package/src/services/invalidation/development-invalidation.service.js +0 -190
  460. package/src/services/module-loading/app-module-loader.service.d.ts +0 -28
  461. package/src/services/module-loading/app-module-loader.service.js +0 -35
  462. package/src/services/module-loading/app-server-module-transpiler.service.d.ts +0 -24
  463. package/src/services/module-loading/app-server-module-transpiler.service.js +0 -109
  464. package/src/services/module-loading/host-module-loader-registry.d.ts +0 -4
  465. package/src/services/module-loading/host-module-loader-registry.js +0 -15
  466. package/src/services/module-loading/module-loading-types.js +0 -0
  467. package/src/services/module-loading/node-bootstrap-plugin.d.ts +0 -42
  468. package/src/services/module-loading/node-bootstrap-plugin.js +0 -204
  469. package/src/services/module-loading/page-module-import.service.d.ts +0 -76
  470. package/src/services/module-loading/page-module-import.service.js +0 -173
  471. package/src/services/module-loading/server-module-transpiler.service.d.ts +0 -72
  472. package/src/services/module-loading/server-module-transpiler.service.js +0 -64
  473. package/src/services/runtime-state/dev-graph.service.d.ts +0 -118
  474. package/src/services/runtime-state/dev-graph.service.js +0 -162
  475. package/src/services/runtime-state/entrypoint-dependency-graph.service.d.ts +0 -41
  476. package/src/services/runtime-state/entrypoint-dependency-graph.service.js +0 -85
  477. package/src/services/runtime-state/runtime-specifier-registry.service.d.ts +0 -69
  478. package/src/services/runtime-state/runtime-specifier-registry.service.js +0 -37
  479. package/src/services/runtime-state/server-invalidation-state.service.d.ts +0 -26
  480. package/src/services/runtime-state/server-invalidation-state.service.js +0 -35
  481. package/src/services/validation/schema-validation-service.d.ts +0 -122
  482. package/src/services/validation/schema-validation-service.js +0 -101
  483. package/src/services/validation/standard-schema.types.js +0 -0
  484. package/src/static-site-generator/static-site-generator.d.ts +0 -104
  485. package/src/static-site-generator/static-site-generator.js +0 -338
  486. package/src/types/internal-types.d.ts +0 -231
  487. package/src/types/internal-types.js +0 -0
  488. package/src/types/public-types.d.ts +0 -1219
  489. package/src/types/public-types.js +0 -0
  490. package/src/utils/deep-merge.d.ts +0 -14
  491. package/src/utils/deep-merge.js +0 -32
  492. package/src/utils/hash.d.ts +0 -1
  493. package/src/utils/hash.js +0 -7
  494. package/src/utils/html-escaping.d.ts +0 -7
  495. package/src/utils/html-escaping.js +0 -6
  496. package/src/utils/html.js +0 -4
  497. package/src/utils/invariant.d.ts +0 -5
  498. package/src/utils/invariant.js +0 -11
  499. package/src/utils/locals-utils.d.ts +0 -15
  500. package/src/utils/locals-utils.js +0 -24
  501. package/src/utils/parse-cli-args.d.ts +0 -27
  502. package/src/utils/parse-cli-args.js +0 -62
  503. package/src/utils/path-utils.module.d.ts +0 -5
  504. package/src/utils/path-utils.module.js +0 -14
  505. package/src/utils/resolve-work-dir.d.ts +0 -11
  506. package/src/utils/resolve-work-dir.js +0 -31
  507. package/src/utils/runtime.d.ts +0 -11
  508. package/src/utils/runtime.js +0 -40
  509. package/src/utils/server-utils.module.d.ts +0 -19
  510. package/src/utils/server-utils.module.js +0 -56
  511. package/src/watchers/project-watcher.d.ts +0 -136
  512. package/src/watchers/project-watcher.js +0 -275
  513. package/src/watchers/project-watcher.test-helpers.d.ts +0 -4
  514. package/src/watchers/project-watcher.test-helpers.js +0 -52
  515. /package/src/utils/{html.d.ts → html.ts} +0 -0
@@ -1,444 +0,0 @@
1
- import path from "node:path";
2
- import { readFileSync } from "node:fs";
3
- import { rapidhash } from "../../utils/hash.js";
4
- import { AssetFactory } from "../../services/assets/asset-processing-service/index.js";
5
- import { normalizeModuleDeclarations } from "../../eco/module-dependencies.js";
6
- import { parseSync } from "oxc-parser";
7
- const DEPENDENCY_ERRORS = {
8
- INVALID_STYLESHEET_ENTRY: "Invalid stylesheet dependency entry: expected src or content",
9
- INVALID_SCRIPT_ENTRY: "Invalid script dependency entry: expected src or content",
10
- LAZY_SCRIPT_MISSING_SRC: "Lazy script dependency entry in dependencies.scripts requires a src value"
11
- };
12
- function extractEcopagesVirtualImports(file) {
13
- let source;
14
- try {
15
- source = readFileSync(file, "utf-8");
16
- } catch {
17
- return [];
18
- }
19
- let result;
20
- try {
21
- result = parseSync(file, source, { sourceType: "module" });
22
- } catch {
23
- return [];
24
- }
25
- const found = /* @__PURE__ */ new Map();
26
- for (const node of result.program.body ?? []) {
27
- if (node.type !== "ImportDeclaration") continue;
28
- if (node.importKind === "type") continue;
29
- const specifier = node.source?.value ?? "";
30
- if (!specifier.startsWith("ecopages:")) continue;
31
- if (found.get(specifier) === null) {
32
- continue;
33
- }
34
- const namedImports = [];
35
- for (const spec of node.specifiers ?? []) {
36
- if (spec.type === "ImportSpecifier") {
37
- let importedName = spec.local?.name;
38
- if (spec.imported?.type === "Identifier") {
39
- importedName = spec.imported.name;
40
- } else if (spec.imported?.type === "Literal") {
41
- importedName = spec.imported.value;
42
- }
43
- namedImports.push(importedName);
44
- }
45
- }
46
- if (namedImports.length === 0) {
47
- found.set(specifier, null);
48
- continue;
49
- }
50
- const existing = found.get(specifier);
51
- if (!existing) {
52
- found.set(specifier, new Set(namedImports));
53
- continue;
54
- }
55
- for (const imported of namedImports) {
56
- existing.add(imported);
57
- }
58
- }
59
- return Array.from(found.entries()).map(([from, importsSet]) => ({
60
- from,
61
- imports: importsSet ? Array.from(importsSet) : void 0
62
- }));
63
- }
64
- function createModuleScriptName(from, imports) {
65
- const normalizedImports = imports ? [...imports].sort().join(",") : "*";
66
- const hash = rapidhash(`${from}|${normalizedImports}`).toString(16);
67
- return `module-${hash}`;
68
- }
69
- function createNamedImportModuleSource(from, imports) {
70
- const namedImports = [...new Set(imports)].sort().join(", ");
71
- return `export { ${namedImports} } from '${from}';`;
72
- }
73
- function createNamespaceImportModuleSource(from) {
74
- return `export * from '${from}';`;
75
- }
76
- function resolveDependencyPath(componentDir, pathUrl) {
77
- return path.join(componentDir, pathUrl);
78
- }
79
- function isDependencyEntryObject(entry) {
80
- return typeof entry === "object" && entry !== null;
81
- }
82
- function getDependencyEntrySrc(entry) {
83
- return isDependencyEntryObject(entry) ? entry.src : entry;
84
- }
85
- function getDependencyEntryContent(entry) {
86
- return isDependencyEntryObject(entry) ? entry.content : void 0;
87
- }
88
- function getDependencyEntryAttributes(entry) {
89
- return isDependencyEntryObject(entry) ? entry.attributes : void 0;
90
- }
91
- function getDependencyEntrySrcOrThrow(entry, errorMessage) {
92
- const src = getDependencyEntrySrc(entry);
93
- if (!src) {
94
- throw new Error(errorMessage);
95
- }
96
- return src;
97
- }
98
- function getLazyTriggerKey(lazy) {
99
- if ("on:idle" in lazy) {
100
- return "on:idle";
101
- }
102
- if ("on:interaction" in lazy) {
103
- return `on:interaction:${lazy["on:interaction"]}`;
104
- }
105
- if ("on:visible" in lazy) {
106
- const value = lazy["on:visible"];
107
- return `on:visible:${value === true ? "true" : value}`;
108
- }
109
- return JSON.stringify(lazy);
110
- }
111
- function resolveLazyScripts(appConfig, componentDir, scripts) {
112
- const getSafeFileName = (filepath) => {
113
- const EXTENSIONS_TO_JS = ["ts", "tsx"];
114
- const safe = filepath.replace(new RegExp(`\\.(${EXTENSIONS_TO_JS.join("|")})$`), ".js");
115
- return safe.startsWith("./") ? safe.slice(2) : safe;
116
- };
117
- const baseDir = componentDir.split(appConfig.srcDir)[1] ?? "";
118
- const resolvedPaths = scripts.map((script) => {
119
- const relativePath = [AssetFactory.RESOLVED_ASSETS_DIR, baseDir, getSafeFileName(script)].filter(Boolean).join("/").replace(/\/+/g, "/");
120
- return `/${relativePath.replace(/^\/+/, "")}`;
121
- });
122
- return resolvedPaths.join(",");
123
- }
124
- function buildResolvedLazyTriggers(config, groups) {
125
- if (groups.length === 0) return [];
126
- const componentFile = config.__eco?.file ?? "";
127
- const sortedUrls = groups.flatMap((group) => group.scripts).sort().join(",");
128
- const triggerId = `eco-trigger-${rapidhash(`${componentFile}:${sortedUrls}`).toString(16)}`;
129
- const rules = groups.map((group) => {
130
- const { scripts, lazy } = group;
131
- if ("on:idle" in lazy) {
132
- return { "on:idle": { scripts } };
133
- }
134
- if ("on:interaction" in lazy) {
135
- return { "on:interaction": { value: lazy["on:interaction"], scripts } };
136
- }
137
- if ("on:visible" in lazy) {
138
- const visibleSelector = lazy["on:visible"];
139
- if (visibleSelector === true) return { "on:visible": { scripts } };
140
- return { "on:visible": { value: String(visibleSelector), scripts } };
141
- }
142
- throw new Error(`Unknown lazy trigger kind: ${JSON.stringify(lazy)}`);
143
- });
144
- return [{ triggerId, rules }];
145
- }
146
- class DependencyResolverService {
147
- appConfig;
148
- assetProcessingService;
149
- /**
150
- * Creates the dependency resolver used by route and component rendering.
151
- *
152
- * @remarks
153
- * The resolver stays intentionally separate from HTML rendering so component
154
- * dependency collection, lazy trigger grouping, and processed-asset generation
155
- * can evolve without changing renderer implementations.
156
- */
157
- constructor(appConfig, assetProcessingService) {
158
- this.appConfig = appConfig;
159
- this.assetProcessingService = assetProcessingService;
160
- }
161
- /**
162
- * Resolves one dependency path relative to the component that declared it.
163
- */
164
- resolveDependencyPath(componentDir, pathUrl) {
165
- return resolveDependencyPath(componentDir, pathUrl);
166
- }
167
- /**
168
- * Maps lazy script source entries to deterministic fallback public URLs
169
- * used when bundling output URLs are unavailable.
170
- */
171
- resolveLazyScripts(componentDir, scripts) {
172
- return resolveLazyScripts(this.appConfig, componentDir, scripts);
173
- }
174
- /**
175
- * Collects and processes component dependencies (styles, scripts, modules, lazy scripts).
176
- * Lazy dependencies are always resolved into global-injector trigger maps.
177
- */
178
- async processComponentDependencies(components, integrationName) {
179
- if (!this.assetProcessingService?.processDependencies) return [];
180
- const dependencies = [];
181
- const lazyScriptsByConfig = /* @__PURE__ */ new Map();
182
- const lazyDependencyKeys = /* @__PURE__ */ new Set();
183
- for (const component of components) {
184
- if (!component) continue;
185
- const componentFile = component.config?.__eco?.file;
186
- if (!componentFile) continue;
187
- const stylesheetDependencyKeys = /* @__PURE__ */ new Set();
188
- const scriptDependencyKeys = /* @__PURE__ */ new Set();
189
- const modulesMap = /* @__PURE__ */ new Map();
190
- const collect = (config) => {
191
- if (!config) return;
192
- const file = config.__eco?.file;
193
- if (!file) return;
194
- const dir = path.dirname(file);
195
- const dependenciesConfig = config.dependencies;
196
- const registerLazyScript = ({
197
- lazy,
198
- lazyKey,
199
- fallbackUrl
200
- }) => {
201
- let grouped = lazyScriptsByConfig.get(config);
202
- if (!grouped) {
203
- grouped = /* @__PURE__ */ new Map();
204
- lazyScriptsByConfig.set(config, grouped);
205
- }
206
- const triggerKey = getLazyTriggerKey(lazy);
207
- const existing = grouped.get(triggerKey) ?? { lazy, scripts: [] };
208
- existing.scripts.push({ lazyKey, fallbackUrl });
209
- grouped.set(triggerKey, existing);
210
- };
211
- if (dependenciesConfig?.stylesheets) {
212
- for (const style of dependenciesConfig.stylesheets) {
213
- const content = getDependencyEntryContent(style);
214
- const src = getDependencyEntrySrc(style);
215
- const attributes = getDependencyEntryAttributes(style);
216
- if (content) {
217
- const depKey2 = `style:content:${content}:${JSON.stringify(attributes ?? {})}`;
218
- if (stylesheetDependencyKeys.has(depKey2)) {
219
- continue;
220
- }
221
- stylesheetDependencyKeys.add(depKey2);
222
- dependencies.push(
223
- AssetFactory.createContentStylesheet({
224
- content,
225
- position: "head",
226
- attributes
227
- })
228
- );
229
- continue;
230
- }
231
- if (!src) {
232
- throw new Error(DEPENDENCY_ERRORS.INVALID_STYLESHEET_ENTRY);
233
- }
234
- const resolvedPath = resolveDependencyPath(dir, src);
235
- const depKey = `style:file:${resolvedPath}:${JSON.stringify(attributes ?? {})}`;
236
- if (stylesheetDependencyKeys.has(depKey)) {
237
- continue;
238
- }
239
- stylesheetDependencyKeys.add(depKey);
240
- dependencies.push(
241
- AssetFactory.createFileStylesheet({
242
- filepath: resolvedPath,
243
- position: "head",
244
- attributes: {
245
- rel: "stylesheet",
246
- ...attributes
247
- }
248
- })
249
- );
250
- }
251
- }
252
- if (dependenciesConfig?.scripts) {
253
- for (const script of dependenciesConfig.scripts) {
254
- if (isDependencyEntryObject(script) && script.lazy) {
255
- continue;
256
- }
257
- const content = getDependencyEntryContent(script);
258
- const src = getDependencyEntrySrc(script);
259
- const attributes = getDependencyEntryAttributes(script);
260
- if (content) {
261
- const depKey2 = `script:content:${content}:${JSON.stringify(attributes ?? {})}`;
262
- if (scriptDependencyKeys.has(depKey2)) {
263
- continue;
264
- }
265
- scriptDependencyKeys.add(depKey2);
266
- dependencies.push(
267
- AssetFactory.createInlineContentScript({
268
- position: "head",
269
- content,
270
- bundle: false,
271
- attributes
272
- })
273
- );
274
- continue;
275
- }
276
- if (!src) {
277
- throw new Error(DEPENDENCY_ERRORS.INVALID_SCRIPT_ENTRY);
278
- }
279
- const resolvedPath = resolveDependencyPath(dir, src);
280
- const depKey = `script:file:${resolvedPath}:${JSON.stringify(attributes ?? {})}`;
281
- if (scriptDependencyKeys.has(depKey)) {
282
- continue;
283
- }
284
- scriptDependencyKeys.add(depKey);
285
- dependencies.push(
286
- AssetFactory.createFileScript({
287
- filepath: resolvedPath,
288
- position: "head",
289
- attributes: {
290
- type: "module",
291
- defer: "",
292
- ...attributes
293
- }
294
- })
295
- );
296
- }
297
- }
298
- const normalizedModules = normalizeModuleDeclarations(dependenciesConfig?.modules);
299
- for (const declaration of normalizedModules) {
300
- const existing = modulesMap.get(declaration.from);
301
- if (!declaration.imports || declaration.imports.length === 0) {
302
- modulesMap.set(declaration.from, null);
303
- continue;
304
- }
305
- if (existing === null) {
306
- continue;
307
- }
308
- const merged = existing ?? /* @__PURE__ */ new Set();
309
- for (const imported of declaration.imports) {
310
- merged.add(imported);
311
- }
312
- modulesMap.set(declaration.from, merged);
313
- }
314
- for (const [index, scriptEntry] of (dependenciesConfig?.scripts ?? []).entries()) {
315
- if (!isDependencyEntryObject(scriptEntry) || !scriptEntry.lazy) {
316
- continue;
317
- }
318
- const lazy = scriptEntry.lazy;
319
- const content = scriptEntry.content;
320
- const src = scriptEntry.src;
321
- const attributes = scriptEntry.attributes;
322
- if (content) {
323
- const lazyKey2 = `lazy:${rapidhash(`${file}:entry:${index}:${content}`).toString(16)}`;
324
- const depKey2 = `lazy:entry:content:${getLazyTriggerKey(lazy)}:${content}:${JSON.stringify(attributes ?? {})}`;
325
- if (!lazyDependencyKeys.has(depKey2)) {
326
- lazyDependencyKeys.add(depKey2);
327
- dependencies.push(
328
- AssetFactory.createContentScript({
329
- position: "head",
330
- content,
331
- excludeFromHtml: true,
332
- attributes: {
333
- type: "module",
334
- defer: "",
335
- "data-eco-lazy-key": lazyKey2,
336
- ...attributes
337
- }
338
- })
339
- );
340
- }
341
- registerLazyScript({
342
- lazy,
343
- lazyKey: lazyKey2
344
- });
345
- continue;
346
- }
347
- const script = src ?? getDependencyEntrySrcOrThrow(scriptEntry, DEPENDENCY_ERRORS.LAZY_SCRIPT_MISSING_SRC);
348
- const resolvedPath = this.resolveDependencyPath(dir, script);
349
- const fallbackUrl = this.resolveLazyScripts(dir, [script]).split(",")[0] ?? "";
350
- const lazyKey = `lazy:${rapidhash(`${resolvedPath}:${getLazyTriggerKey(lazy)}`).toString(16)}`;
351
- const depKey = `lazy:entry:file:${getLazyTriggerKey(lazy)}:${resolvedPath}:${JSON.stringify(attributes ?? {})}`;
352
- if (!lazyDependencyKeys.has(depKey)) {
353
- lazyDependencyKeys.add(depKey);
354
- dependencies.push(
355
- AssetFactory.createFileScript({
356
- filepath: resolvedPath,
357
- position: "head",
358
- excludeFromHtml: true,
359
- attributes: {
360
- type: "module",
361
- defer: "",
362
- "data-eco-lazy-key": lazyKey,
363
- ...attributes
364
- }
365
- })
366
- );
367
- }
368
- registerLazyScript({
369
- lazy,
370
- lazyKey,
371
- fallbackUrl
372
- });
373
- }
374
- if (dependenciesConfig?.components) {
375
- for (const nestedComponent of dependenciesConfig.components) {
376
- if (nestedComponent?.config) {
377
- collect(nestedComponent.config);
378
- }
379
- }
380
- }
381
- const autoVirtualImports = extractEcopagesVirtualImports(file);
382
- for (const { from, imports } of autoVirtualImports) {
383
- const existing = modulesMap.get(from);
384
- if (!imports || imports.length === 0) {
385
- if (existing !== null) modulesMap.set(from, null);
386
- continue;
387
- }
388
- if (existing === null) continue;
389
- const merged = existing ?? /* @__PURE__ */ new Set();
390
- for (const imported of imports) merged.add(imported);
391
- modulesMap.set(from, merged);
392
- }
393
- };
394
- collect(component.config);
395
- dependencies.push(
396
- ...Array.from(modulesMap.entries()).map(([from, importsSet]) => {
397
- const imports = importsSet ? Array.from(importsSet) : void 0;
398
- return AssetFactory.createContentScript({
399
- position: "head",
400
- name: createModuleScriptName(from, imports),
401
- content: imports && imports.length > 0 ? createNamedImportModuleSource(from, imports) : createNamespaceImportModuleSource(from),
402
- attributes: {
403
- type: "module",
404
- defer: ""
405
- }
406
- });
407
- })
408
- );
409
- }
410
- const hasLazyDependencies = dependencies.some((dep) => dep.kind === "script" && dep.excludeFromHtml === true);
411
- const processedDependencies = await this.assetProcessingService.processDependencies(
412
- dependencies,
413
- integrationName
414
- );
415
- const lazyKeyToOutputUrl = /* @__PURE__ */ new Map();
416
- for (const dependency of processedDependencies) {
417
- if (dependency.kind === "script" && dependency.srcUrl) {
418
- const lazyKey = dependency.attributes?.["data-eco-lazy-key"];
419
- if (lazyKey) {
420
- lazyKeyToOutputUrl.set(lazyKey, dependency.srcUrl);
421
- }
422
- }
423
- }
424
- for (const [config, lazyGroupsMap] of lazyScriptsByConfig.entries()) {
425
- const rawGroups = [];
426
- for (const group of lazyGroupsMap.values()) {
427
- const resolvedUrls = group.scripts.map(({ lazyKey, fallbackUrl }) => lazyKeyToOutputUrl.get(lazyKey) ?? fallbackUrl).filter((url) => Boolean(url && url.length > 0));
428
- if (resolvedUrls.length === 0) {
429
- continue;
430
- }
431
- rawGroups.push({ lazy: group.lazy, scripts: Array.from(new Set(resolvedUrls)) });
432
- }
433
- if (hasLazyDependencies) {
434
- config._resolvedLazyTriggers = buildResolvedLazyTriggers(config, rawGroups);
435
- config._resolvedLazyScripts = void 0;
436
- }
437
- }
438
- return processedDependencies;
439
- }
440
- }
441
- export {
442
- DEPENDENCY_ERRORS,
443
- DependencyResolverService
444
- };
@@ -1,90 +0,0 @@
1
- import type { EcoPageFile, GetMetadata, GetMetadataContext, GetStaticProps, PageMetadataProps, RouteRendererOptions, EcoPageComponent } from '../../types/public-types.js';
2
- import type { EcoPagesAppConfig } from '../../types/internal-types.js';
3
- /**
4
- * Loads route page modules and normalizes their data hooks for rendering.
5
- *
6
- * @remarks
7
- * This service keeps the render pipeline from depending directly on raw module
8
- * imports. It owns the shared server-module transpiler setup, the precedence
9
- * rules between component statics and module exports, and the normalization of
10
- * page props and metadata into one renderer-facing shape.
11
- */
12
- export declare class PageModuleLoaderService {
13
- private appModuleLoader;
14
- private appConfig;
15
- private runtimeOrigin;
16
- /**
17
- * Creates the page-module loader for one app/runtime instance.
18
- *
19
- * @param appConfig Finalized app config that owns build and invalidation state.
20
- * @param runtimeOrigin Runtime origin exposed to page data hooks.
21
- */
22
- constructor(appConfig: EcoPagesAppConfig, runtimeOrigin: string);
23
- /**
24
- * Imports one page module through the shared server-side module loading path.
25
- *
26
- * @remarks
27
- * The underlying transpiler keeps Bun and Node aligned on one framework-owned
28
- * loading contract even though the runtime-specific execution transport differs.
29
- */
30
- importPageFile(file: string, options?: {
31
- bypassCache?: boolean;
32
- cacheScope?: string;
33
- }): Promise<EcoPageFile>;
34
- /**
35
- * Executes the page's static-props hook with Ecopages runtime context.
36
- *
37
- * @remarks
38
- * Pages without a static-props hook still return a normalized empty props
39
- * object so downstream render preparation does not branch on hook presence.
40
- */
41
- getStaticPropsForPage(options: {
42
- getStaticProps?: GetStaticProps<Record<string, unknown>>;
43
- params?: RouteRendererOptions['params'];
44
- }): Promise<{
45
- props: Record<string, unknown>;
46
- metadata?: PageMetadataProps;
47
- }>;
48
- /**
49
- * Builds the final page metadata object for one render request.
50
- *
51
- * @remarks
52
- * App-level default metadata forms the baseline, then page-level metadata is
53
- * overlaid so route-specific fields win without dropping global defaults.
54
- */
55
- getMetadataPropsForPage(options: {
56
- getMetadata: GetMetadata | undefined;
57
- context: GetMetadataContext;
58
- }): Promise<PageMetadataProps>;
59
- /**
60
- * Loads a page module and normalizes integration-facing exports.
61
- * When both component static methods and module exports exist, component statics win.
62
- */
63
- resolvePageModule(options: {
64
- file: string;
65
- importPageFileFn?: (file: string) => Promise<EcoPageFile>;
66
- }): Promise<{
67
- Page: EcoPageFile['default'] | EcoPageComponent<any>;
68
- getStaticProps?: GetStaticProps<Record<string, unknown>>;
69
- getMetadata?: GetMetadata;
70
- integrationSpecificProps: Record<string, unknown>;
71
- }>;
72
- /**
73
- * Resolves the page data needed by the render pipeline.
74
- *
75
- * @remarks
76
- * Static props are resolved first because page metadata may depend on those
77
- * props. This preserves the same ordering whether data hooks are declared as
78
- * component statics or module exports.
79
- */
80
- resolvePageData(options: {
81
- pageModule: {
82
- getStaticProps?: GetStaticProps<Record<string, unknown>>;
83
- getMetadata?: GetMetadata;
84
- };
85
- routeOptions: RouteRendererOptions;
86
- }): Promise<{
87
- props: Record<string, unknown>;
88
- metadata: PageMetadataProps;
89
- }>;
90
- }
@@ -1,127 +0,0 @@
1
- import { invariant } from "../../utils/invariant.js";
2
- import { getAppModuleLoader } from "../../services/module-loading/app-server-module-transpiler.service.js";
3
- import { resolveInternalExecutionDir } from "../../utils/resolve-work-dir.js";
4
- class PageModuleLoaderService {
5
- appModuleLoader;
6
- appConfig;
7
- runtimeOrigin;
8
- /**
9
- * Creates the page-module loader for one app/runtime instance.
10
- *
11
- * @param appConfig Finalized app config that owns build and invalidation state.
12
- * @param runtimeOrigin Runtime origin exposed to page data hooks.
13
- */
14
- constructor(appConfig, runtimeOrigin) {
15
- this.appConfig = appConfig;
16
- this.runtimeOrigin = runtimeOrigin;
17
- this.appModuleLoader = getAppModuleLoader(appConfig);
18
- }
19
- /**
20
- * Imports one page module through the shared server-side module loading path.
21
- *
22
- * @remarks
23
- * The underlying transpiler keeps Bun and Node aligned on one framework-owned
24
- * loading contract even though the runtime-specific execution transport differs.
25
- */
26
- async importPageFile(file, options) {
27
- try {
28
- return await this.appModuleLoader.importModule({
29
- filePath: file,
30
- rootDir: this.appConfig.rootDir,
31
- outdir: `${resolveInternalExecutionDir(this.appConfig)}/.server-modules`,
32
- bypassCache: options?.bypassCache,
33
- cacheScope: options?.cacheScope,
34
- transpileErrorMessage: (details) => `Error transpiling page file: ${details}`,
35
- noOutputMessage: (targetFilePath) => `No transpiled output generated for page: ${targetFilePath}`
36
- });
37
- } catch (error) {
38
- invariant(false, `Error importing page file: ${error}`);
39
- }
40
- }
41
- /**
42
- * Executes the page's static-props hook with Ecopages runtime context.
43
- *
44
- * @remarks
45
- * Pages without a static-props hook still return a normalized empty props
46
- * object so downstream render preparation does not branch on hook presence.
47
- */
48
- async getStaticPropsForPage(options) {
49
- const { getStaticProps, params } = options;
50
- return getStaticProps ? await getStaticProps({
51
- pathname: { params: params ?? {} },
52
- appConfig: this.appConfig,
53
- runtimeOrigin: this.runtimeOrigin
54
- }).then((data) => data).catch((err) => {
55
- throw new Error(`Error fetching static props: ${err.message}`);
56
- }) : {
57
- props: {},
58
- metadata: void 0
59
- };
60
- }
61
- /**
62
- * Builds the final page metadata object for one render request.
63
- *
64
- * @remarks
65
- * App-level default metadata forms the baseline, then page-level metadata is
66
- * overlaid so route-specific fields win without dropping global defaults.
67
- */
68
- async getMetadataPropsForPage(options) {
69
- const { getMetadata, context } = options;
70
- let metadata = this.appConfig.defaultMetadata;
71
- if (getMetadata) {
72
- const dynamicMetadata = await getMetadata({
73
- params: context.params,
74
- query: context.query,
75
- props: context.props,
76
- appConfig: this.appConfig
77
- });
78
- metadata = { ...metadata, ...dynamicMetadata };
79
- }
80
- return metadata;
81
- }
82
- /**
83
- * Loads a page module and normalizes integration-facing exports.
84
- * When both component static methods and module exports exist, component statics win.
85
- */
86
- async resolvePageModule(options) {
87
- const module = await (options.importPageFileFn ?? ((file) => this.importPageFile(file)))(options.file);
88
- const {
89
- default: Page,
90
- getStaticProps: moduleGetStaticProps,
91
- getMetadata: moduleGetMetadata,
92
- ...integrationSpecificProps
93
- } = module;
94
- return {
95
- Page,
96
- getStaticProps: Page.staticProps ?? moduleGetStaticProps,
97
- getMetadata: Page.metadata ?? moduleGetMetadata,
98
- integrationSpecificProps
99
- };
100
- }
101
- /**
102
- * Resolves the page data needed by the render pipeline.
103
- *
104
- * @remarks
105
- * Static props are resolved first because page metadata may depend on those
106
- * props. This preserves the same ordering whether data hooks are declared as
107
- * component statics or module exports.
108
- */
109
- async resolvePageData(options) {
110
- const { props } = await this.getStaticPropsForPage({
111
- getStaticProps: options.pageModule.getStaticProps,
112
- params: options.routeOptions.params
113
- });
114
- const metadata = await this.getMetadataPropsForPage({
115
- getMetadata: options.pageModule.getMetadata,
116
- context: {
117
- props,
118
- params: options.routeOptions.params ?? {},
119
- query: options.routeOptions.query ?? {}
120
- }
121
- });
122
- return { props, metadata };
123
- }
124
- }
125
- export {
126
- PageModuleLoaderService
127
- };