@ecopages/core 0.2.0-alpha.7 → 0.2.0-alpha.8

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 (354) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/package.json +212 -92
  3. package/src/adapters/abstract/application-adapter.d.ts +168 -0
  4. package/src/adapters/abstract/application-adapter.js +109 -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 +60 -0
  12. package/src/adapters/bun/create-app.js +117 -0
  13. package/src/adapters/bun/hmr-manager.d.ts +143 -0
  14. package/src/adapters/bun/hmr-manager.js +334 -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 +373 -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/index.d.ts +6 -0
  22. package/src/adapters/index.js +14 -0
  23. package/src/adapters/node/bootstrap-dependency-resolver.d.ts +44 -0
  24. package/src/adapters/node/bootstrap-dependency-resolver.js +172 -0
  25. package/src/adapters/node/create-app.d.ts +21 -0
  26. package/src/adapters/node/create-app.js +143 -0
  27. package/src/adapters/node/index.d.ts +6 -0
  28. package/src/adapters/node/index.js +11 -0
  29. package/src/adapters/node/node-client-bridge.d.ts +26 -0
  30. package/src/adapters/node/node-client-bridge.js +66 -0
  31. package/src/adapters/node/node-hmr-manager.d.ts +133 -0
  32. package/src/adapters/node/node-hmr-manager.js +312 -0
  33. package/src/adapters/node/runtime-adapter.d.ts +46 -0
  34. package/src/adapters/node/runtime-adapter.js +306 -0
  35. package/src/adapters/node/server-adapter.d.ts +161 -0
  36. package/src/adapters/node/server-adapter.js +358 -0
  37. package/src/adapters/node/static-content-server.d.ts +60 -0
  38. package/src/adapters/node/static-content-server.js +194 -0
  39. package/src/adapters/node/write-runtime-manifest.d.ts +26 -0
  40. package/src/adapters/node/write-runtime-manifest.js +12 -0
  41. package/src/adapters/shared/api-response.d.ts +52 -0
  42. package/src/adapters/shared/api-response.js +96 -0
  43. package/src/adapters/shared/application-adapter.d.ts +18 -0
  44. package/src/adapters/shared/application-adapter.js +90 -0
  45. package/src/adapters/shared/define-api-handler.d.ts +25 -0
  46. package/src/adapters/shared/define-api-handler.js +15 -0
  47. package/src/adapters/shared/explicit-static-route-matcher.d.ts +38 -0
  48. package/src/adapters/shared/explicit-static-route-matcher.js +103 -0
  49. package/src/adapters/shared/file-route-middleware-pipeline.d.ts +65 -0
  50. package/src/adapters/shared/file-route-middleware-pipeline.js +99 -0
  51. package/src/adapters/shared/fs-server-response-factory.d.ts +19 -0
  52. package/src/adapters/shared/fs-server-response-factory.js +97 -0
  53. package/src/adapters/shared/fs-server-response-matcher.d.ts +75 -0
  54. package/src/adapters/shared/fs-server-response-matcher.js +160 -0
  55. package/src/adapters/shared/hmr-entrypoint-registrar.d.ts +55 -0
  56. package/src/adapters/shared/hmr-entrypoint-registrar.js +87 -0
  57. package/src/adapters/shared/hmr-html-response.d.ts +22 -0
  58. package/src/adapters/shared/hmr-html-response.js +32 -0
  59. package/src/adapters/shared/render-context.d.ts +14 -0
  60. package/src/adapters/shared/render-context.js +70 -0
  61. package/src/adapters/shared/runtime-bootstrap.d.ts +38 -0
  62. package/src/adapters/shared/runtime-bootstrap.js +43 -0
  63. package/src/adapters/shared/server-adapter.d.ts +97 -0
  64. package/src/adapters/shared/server-adapter.js +386 -0
  65. package/src/adapters/shared/server-route-handler.d.ts +89 -0
  66. package/src/adapters/shared/server-route-handler.js +111 -0
  67. package/src/adapters/shared/server-static-builder.d.ts +70 -0
  68. package/src/adapters/shared/server-static-builder.js +99 -0
  69. package/src/build/build-adapter.d.ts +186 -0
  70. package/src/build/build-adapter.js +168 -0
  71. package/src/build/build-manifest.d.ts +27 -0
  72. package/src/build/build-manifest.js +30 -0
  73. package/src/build/build-types.d.ts +57 -0
  74. package/src/build/build-types.js +0 -0
  75. package/src/build/dev-build-coordinator.d.ts +74 -0
  76. package/src/build/dev-build-coordinator.js +161 -0
  77. package/src/build/esbuild-build-adapter.d.ts +72 -0
  78. package/src/build/esbuild-build-adapter.js +422 -0
  79. package/src/build/runtime-build-executor.d.ts +13 -0
  80. package/src/build/runtime-build-executor.js +20 -0
  81. package/src/build/runtime-specifier-alias-plugin.d.ts +15 -0
  82. package/src/build/runtime-specifier-alias-plugin.js +31 -0
  83. package/src/config/config-builder.d.ts +238 -0
  84. package/src/config/config-builder.js +565 -0
  85. package/src/constants.d.ts +45 -0
  86. package/src/constants.js +25 -0
  87. package/src/create-app.d.ts +17 -0
  88. package/src/create-app.js +66 -0
  89. package/src/dev/sc-server.d.ts +30 -0
  90. package/src/dev/sc-server.js +111 -0
  91. package/src/eco/component-render-context.d.ts +105 -0
  92. package/src/eco/component-render-context.js +87 -0
  93. package/src/eco/eco.d.ts +9 -0
  94. package/src/eco/eco.js +114 -0
  95. package/src/eco/eco.types.d.ts +178 -0
  96. package/src/eco/eco.types.js +0 -0
  97. package/src/eco/eco.utils.d.ts +40 -0
  98. package/src/eco/eco.utils.js +40 -0
  99. package/src/eco/global-injector-map.d.ts +16 -0
  100. package/src/eco/global-injector-map.js +80 -0
  101. package/src/eco/lazy-injector-map.d.ts +8 -0
  102. package/src/eco/lazy-injector-map.js +70 -0
  103. package/src/eco/module-dependencies.d.ts +18 -0
  104. package/src/eco/module-dependencies.js +49 -0
  105. package/src/errors/http-error.d.ts +31 -0
  106. package/src/errors/http-error.js +50 -0
  107. package/src/errors/index.d.ts +2 -0
  108. package/src/errors/index.js +4 -0
  109. package/src/errors/locals-access-error.d.ts +4 -0
  110. package/src/errors/locals-access-error.js +9 -0
  111. package/src/global/app-logger.d.ts +2 -0
  112. package/src/global/app-logger.js +6 -0
  113. package/src/hmr/client/hmr-runtime.d.ts +5 -0
  114. package/src/hmr/client/hmr-runtime.js +109 -0
  115. package/src/hmr/hmr-strategy.d.ts +159 -0
  116. package/src/hmr/hmr-strategy.js +29 -0
  117. package/src/hmr/hmr.postcss.test.e2e.d.ts +1 -0
  118. package/src/hmr/hmr.postcss.test.e2e.js +31 -0
  119. package/src/hmr/hmr.test.e2e.d.ts +1 -0
  120. package/src/hmr/hmr.test.e2e.js +43 -0
  121. package/src/hmr/strategies/default-hmr-strategy.d.ts +43 -0
  122. package/src/hmr/strategies/default-hmr-strategy.js +34 -0
  123. package/src/hmr/strategies/js-hmr-strategy.d.ts +139 -0
  124. package/src/hmr/strategies/js-hmr-strategy.js +178 -0
  125. package/src/index.browser.d.ts +3 -0
  126. package/src/index.browser.js +4 -0
  127. package/src/index.d.ts +5 -0
  128. package/src/index.js +10 -0
  129. package/src/integrations/ghtml/ghtml-renderer.d.ts +15 -0
  130. package/src/integrations/ghtml/ghtml-renderer.js +62 -0
  131. package/src/integrations/ghtml/ghtml.plugin.d.ts +20 -0
  132. package/src/integrations/ghtml/ghtml.plugin.js +21 -0
  133. package/src/internal-types.d.ts +221 -0
  134. package/src/internal-types.js +0 -0
  135. package/src/plugins/alias-resolver-plugin.d.ts +2 -0
  136. package/src/plugins/alias-resolver-plugin.js +53 -0
  137. package/src/plugins/eco-component-meta-plugin.d.ts +97 -0
  138. package/src/plugins/eco-component-meta-plugin.js +157 -0
  139. package/src/plugins/integration-plugin.d.ts +136 -0
  140. package/src/plugins/integration-plugin.js +133 -0
  141. package/src/plugins/processor.d.ts +95 -0
  142. package/src/plugins/processor.js +136 -0
  143. package/src/plugins/runtime-capability.d.ts +9 -0
  144. package/src/plugins/runtime-capability.js +0 -0
  145. package/src/public-types.d.ts +1149 -0
  146. package/src/public-types.js +0 -0
  147. package/src/route-renderer/component-graph/component-graph-executor.d.ts +32 -0
  148. package/src/route-renderer/component-graph/component-graph-executor.js +31 -0
  149. package/src/route-renderer/component-graph/component-graph.d.ts +42 -0
  150. package/src/route-renderer/component-graph/component-graph.js +72 -0
  151. package/src/route-renderer/component-graph/component-marker.d.ts +52 -0
  152. package/src/route-renderer/component-graph/component-marker.js +46 -0
  153. package/src/route-renderer/component-graph/component-reference.d.ts +10 -0
  154. package/src/route-renderer/component-graph/component-reference.js +19 -0
  155. package/src/route-renderer/component-graph/marker-graph-resolver.d.ts +77 -0
  156. package/src/route-renderer/component-graph/marker-graph-resolver.js +95 -0
  157. package/src/route-renderer/orchestration/integration-renderer.d.ts +372 -0
  158. package/src/route-renderer/orchestration/integration-renderer.js +589 -0
  159. package/src/route-renderer/orchestration/render-execution.service.d.ts +103 -0
  160. package/src/route-renderer/orchestration/render-execution.service.js +121 -0
  161. package/src/route-renderer/orchestration/render-preparation.service.d.ts +121 -0
  162. package/src/route-renderer/orchestration/render-preparation.service.js +332 -0
  163. package/src/route-renderer/page-loading/dependency-resolver.d.ts +35 -0
  164. package/src/route-renderer/page-loading/dependency-resolver.js +442 -0
  165. package/src/route-renderer/page-loading/page-module-loader.d.ts +87 -0
  166. package/src/route-renderer/page-loading/page-module-loader.js +124 -0
  167. package/src/route-renderer/route-renderer.d.ts +61 -0
  168. package/src/route-renderer/route-renderer.js +87 -0
  169. package/src/router/client/link-intent.js +34 -0
  170. package/src/router/client/link-intent.test.browser.d.ts +1 -0
  171. package/src/router/client/link-intent.test.browser.js +43 -0
  172. package/src/router/client/navigation-coordinator.d.ts +149 -0
  173. package/src/router/client/navigation-coordinator.js +215 -0
  174. package/src/router/server/fs-router-scanner.d.ts +41 -0
  175. package/src/router/server/fs-router-scanner.js +156 -0
  176. package/src/router/server/fs-router.d.ts +26 -0
  177. package/src/router/server/fs-router.js +100 -0
  178. package/src/services/assets/asset-processing-service/asset-processing.service.d.ts +120 -0
  179. package/src/services/assets/asset-processing-service/asset-processing.service.js +331 -0
  180. package/src/services/assets/asset-processing-service/asset.factory.d.ts +17 -0
  181. package/src/services/assets/asset-processing-service/asset.factory.js +82 -0
  182. package/src/services/assets/asset-processing-service/assets.types.d.ts +89 -0
  183. package/src/services/assets/asset-processing-service/assets.types.js +0 -0
  184. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.d.ts +55 -0
  185. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.js +48 -0
  186. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.d.ts +20 -0
  187. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.js +41 -0
  188. package/src/services/assets/asset-processing-service/index.d.ts +5 -0
  189. package/src/services/assets/asset-processing-service/index.js +5 -0
  190. package/src/services/assets/asset-processing-service/processor.interface.d.ts +22 -0
  191. package/src/services/assets/asset-processing-service/processor.interface.js +6 -0
  192. package/src/services/assets/asset-processing-service/processor.registry.d.ts +8 -0
  193. package/src/services/assets/asset-processing-service/processor.registry.js +15 -0
  194. package/src/services/assets/asset-processing-service/processors/base/base-processor.d.ts +24 -0
  195. package/src/services/assets/asset-processing-service/processors/base/base-processor.js +64 -0
  196. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.d.ts +17 -0
  197. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.js +72 -0
  198. package/src/services/assets/asset-processing-service/processors/index.d.ts +5 -0
  199. package/src/services/assets/asset-processing-service/processors/index.js +5 -0
  200. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.d.ts +5 -0
  201. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.js +57 -0
  202. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.d.ts +8 -0
  203. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.js +76 -0
  204. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.d.ts +7 -0
  205. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.js +75 -0
  206. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.d.ts +5 -0
  207. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +25 -0
  208. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.d.ts +9 -0
  209. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.js +66 -0
  210. package/src/services/assets/browser-bundle.service.d.ts +32 -0
  211. package/src/services/assets/browser-bundle.service.js +33 -0
  212. package/src/services/cache/cache.types.d.ts +107 -0
  213. package/src/services/cache/cache.types.js +0 -0
  214. package/src/services/cache/index.d.ts +7 -0
  215. package/src/services/cache/index.js +7 -0
  216. package/src/services/cache/memory-cache-store.d.ts +42 -0
  217. package/src/services/cache/memory-cache-store.js +98 -0
  218. package/src/services/cache/page-cache-service.d.ts +70 -0
  219. package/src/services/cache/page-cache-service.js +152 -0
  220. package/src/services/cache/page-request-cache-coordinator.service.d.ts +75 -0
  221. package/src/services/cache/page-request-cache-coordinator.service.js +109 -0
  222. package/src/services/html/html-rewriter-provider.service.d.ts +37 -0
  223. package/src/services/html/html-rewriter-provider.service.js +65 -0
  224. package/src/services/html/html-transformer.service.d.ts +77 -0
  225. package/src/services/html/html-transformer.service.js +221 -0
  226. package/src/services/invalidation/development-invalidation.service.d.ts +74 -0
  227. package/src/services/invalidation/development-invalidation.service.js +189 -0
  228. package/src/services/module-loading/app-server-module-transpiler.service.d.ts +16 -0
  229. package/src/services/module-loading/app-server-module-transpiler.service.js +34 -0
  230. package/src/services/module-loading/page-module-import.service.d.ts +71 -0
  231. package/src/services/module-loading/page-module-import.service.js +132 -0
  232. package/src/services/module-loading/server-loader.service.d.ts +96 -0
  233. package/src/services/module-loading/server-loader.service.js +32 -0
  234. package/src/services/module-loading/server-module-transpiler.service.d.ts +69 -0
  235. package/src/services/module-loading/server-module-transpiler.service.js +61 -0
  236. package/src/services/runtime-manifest/node-runtime-manifest.service.d.ts +35 -0
  237. package/src/services/runtime-manifest/node-runtime-manifest.service.js +60 -0
  238. package/src/services/runtime-state/dev-graph.service.d.ts +118 -0
  239. package/src/services/runtime-state/dev-graph.service.js +162 -0
  240. package/src/services/runtime-state/entrypoint-dependency-graph.service.d.ts +41 -0
  241. package/src/services/runtime-state/entrypoint-dependency-graph.service.js +85 -0
  242. package/src/services/runtime-state/runtime-specifier-registry.service.d.ts +69 -0
  243. package/src/services/runtime-state/runtime-specifier-registry.service.js +37 -0
  244. package/src/services/runtime-state/server-invalidation-state.service.d.ts +26 -0
  245. package/src/services/runtime-state/server-invalidation-state.service.js +35 -0
  246. package/src/services/validation/schema-validation-service.d.ts +122 -0
  247. package/src/services/validation/schema-validation-service.js +101 -0
  248. package/src/services/validation/standard-schema.types.d.ts +65 -0
  249. package/src/services/validation/standard-schema.types.js +0 -0
  250. package/src/static-site-generator/static-site-generator.d.ts +109 -0
  251. package/src/static-site-generator/static-site-generator.js +353 -0
  252. package/src/utils/css.d.ts +1 -0
  253. package/src/utils/css.js +7 -0
  254. package/src/utils/deep-merge.d.ts +14 -0
  255. package/src/utils/deep-merge.js +32 -0
  256. package/src/utils/hash.d.ts +1 -0
  257. package/src/utils/hash.js +7 -0
  258. package/src/utils/html.d.ts +1 -0
  259. package/src/utils/html.js +4 -0
  260. package/src/utils/invariant.d.ts +5 -0
  261. package/src/utils/invariant.js +11 -0
  262. package/src/utils/locals-utils.d.ts +15 -0
  263. package/src/utils/locals-utils.js +24 -0
  264. package/src/utils/parse-cli-args.d.ts +24 -0
  265. package/src/utils/parse-cli-args.js +47 -0
  266. package/src/utils/path-utils.module.d.ts +5 -0
  267. package/src/utils/path-utils.module.js +14 -0
  268. package/src/utils/resolve-work-dir.d.ts +11 -0
  269. package/src/utils/resolve-work-dir.js +31 -0
  270. package/src/utils/runtime.d.ts +11 -0
  271. package/src/utils/runtime.js +40 -0
  272. package/src/utils/server-utils.module.d.ts +19 -0
  273. package/src/utils/server-utils.module.js +56 -0
  274. package/src/watchers/project-watcher.d.ts +136 -0
  275. package/src/watchers/project-watcher.js +281 -0
  276. package/src/watchers/project-watcher.test-helpers.d.ts +4 -0
  277. package/src/watchers/project-watcher.test-helpers.js +52 -0
  278. package/src/adapters/bun/hmr-manager.test.ts +0 -267
  279. package/src/adapters/node/bootstrap-dependency-resolver.test.ts +0 -282
  280. package/src/adapters/node/node-client-bridge.test.ts +0 -198
  281. package/src/adapters/node/node-hmr-manager.test.ts +0 -322
  282. package/src/adapters/node/runtime-adapter.test.ts +0 -868
  283. package/src/adapters/node/static-content-server.test.ts +0 -60
  284. package/src/adapters/shared/api-response.test.ts +0 -97
  285. package/src/adapters/shared/explicit-static-route-matcher.test.ts +0 -381
  286. package/src/adapters/shared/file-route-middleware-pipeline.test.ts +0 -90
  287. package/src/adapters/shared/fs-server-response-factory.test.ts +0 -187
  288. package/src/adapters/shared/fs-server-response-matcher.test.ts +0 -286
  289. package/src/adapters/shared/hmr-manager.contract.test.ts +0 -196
  290. package/src/adapters/shared/hmr-manager.dispatch.test.ts +0 -220
  291. package/src/adapters/shared/render-context.test.ts +0 -146
  292. package/src/adapters/shared/server-adapter.test.ts +0 -77
  293. package/src/adapters/shared/server-route-handler.test.ts +0 -110
  294. package/src/adapters/shared/server-static-builder.test.ts +0 -316
  295. package/src/build/build-adapter-serialization.test.ts +0 -268
  296. package/src/build/build-adapter.test.ts +0 -815
  297. package/src/build/runtime-specifier-alias-plugin.test.ts +0 -43
  298. package/src/config/config-builder.test.ts +0 -410
  299. package/src/eco/eco.test.ts +0 -678
  300. package/src/eco/eco.utils.test.ts +0 -124
  301. package/src/eco/global-injector-map.test.ts +0 -42
  302. package/src/eco/lazy-injector-map.test.ts +0 -66
  303. package/src/eco/module-dependencies.test.ts +0 -30
  304. package/src/errors/http-error.test.ts +0 -134
  305. package/src/global/utils.test.ts +0 -12
  306. 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
  307. package/src/hmr/client/__screenshots__/hmr-runtime.test.browser.ts/HMR-Runtime-HMR-Server-Integration-should-load-fixture-app-page-1.png +0 -0
  308. package/src/hmr/client/__screenshots__/hmr-runtime.test.browser.ts/HMR-Runtime-WebSocket-Connection-should-connect-to-correct-HMR-endpoint-1.png +0 -0
  309. package/src/hmr/hmr-strategy.test.ts +0 -124
  310. package/src/hmr/strategies/js-hmr-strategy.test.ts +0 -335
  311. package/src/integrations/ghtml/ghtml-renderer.test.ts +0 -63
  312. package/src/plugins/alias-resolver-plugin.test.ts +0 -41
  313. package/src/plugins/eco-component-meta-plugin.test.ts +0 -380
  314. package/src/plugins/integration-plugin.test.ts +0 -111
  315. package/src/plugins/processor.test.ts +0 -148
  316. package/src/route-renderer/component-graph/component-graph-executor.test.ts +0 -41
  317. package/src/route-renderer/component-graph/component-graph.test.ts +0 -63
  318. package/src/route-renderer/component-graph/component-marker.test.ts +0 -73
  319. package/src/route-renderer/component-graph/marker-graph-resolver.test.ts +0 -135
  320. package/src/route-renderer/orchestration/integration-renderer.test.ts +0 -936
  321. package/src/route-renderer/orchestration/render-execution.service.test.ts +0 -97
  322. package/src/route-renderer/orchestration/render-preparation.service.test.ts +0 -235
  323. package/src/route-renderer/page-loading/dependency-resolver.test.ts +0 -345
  324. package/src/route-renderer/page-loading/page-module-loader.test.ts +0 -96
  325. package/src/router/client/navigation-coordinator.test.ts +0 -237
  326. package/src/router/server/fs-router-scanner.test.ts +0 -83
  327. package/src/router/server/fs-router.test.ts +0 -214
  328. package/src/services/assets/asset-processing-service/asset-processing.service.test.ts +0 -385
  329. package/src/services/assets/asset-processing-service/asset.factory.test.ts +0 -63
  330. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.test.ts +0 -72
  331. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.test.ts +0 -67
  332. package/src/services/assets/asset-processing-service/processors/base/base-processor.test.ts +0 -59
  333. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.test.ts +0 -286
  334. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.test.ts +0 -227
  335. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.test.ts +0 -199
  336. package/src/services/assets/browser-bundle.service.test.ts +0 -36
  337. package/src/services/cache/memory-cache-store.test.ts +0 -225
  338. package/src/services/cache/page-cache-service.test.ts +0 -175
  339. package/src/services/cache/page-request-cache-coordinator.service.test.ts +0 -79
  340. package/src/services/html/html-rewriter-provider.service.test.ts +0 -183
  341. package/src/services/html/html-transformer.service.test.ts +0 -378
  342. package/src/services/invalidation/development-invalidation.service.test.ts +0 -77
  343. package/src/services/module-loading/page-module-import.service.test.ts +0 -253
  344. package/src/services/module-loading/server-loader.service.test.ts +0 -161
  345. package/src/services/module-loading/server-module-transpiler.service.test.ts +0 -115
  346. package/src/services/runtime-manifest/node-runtime-manifest.service.test.ts +0 -95
  347. package/src/services/validation/schema-validation-service.test.ts +0 -223
  348. package/src/static-site-generator/static-site-generator.test.ts +0 -307
  349. package/src/utils/deep-merge.test.ts +0 -114
  350. package/src/utils/invariant.test.ts +0 -22
  351. package/src/utils/path-utils.test.ts +0 -15
  352. package/src/utils/server-utils.test.ts +0 -38
  353. package/src/watchers/project-watcher.integration.test.ts +0 -337
  354. package/src/watchers/project-watcher.test.ts +0 -678
@@ -1,378 +0,0 @@
1
- import { describe, expect, it } from 'vitest';
2
- import type { ProcessedAsset } from '../assets/asset-processing-service/index.js';
3
- import { HtmlTransformerService } from './html-transformer.service.ts';
4
- import type {
5
- HtmlRewriterElement,
6
- HtmlRewriterMode,
7
- HtmlRewriterProvider,
8
- HtmlRewriterRuntime,
9
- } from './html-rewriter-provider.service.ts';
10
-
11
- type HtmlRewriterHandler = {
12
- element: (element: HtmlRewriterElement) => void;
13
- };
14
-
15
- class TestHtmlRewriter {
16
- private handlers = new Map<'head' | 'body', HtmlRewriterHandler>();
17
-
18
- on(selector: 'head' | 'body', handler: HtmlRewriterHandler): TestHtmlRewriter {
19
- this.handlers.set(selector, handler);
20
- return this;
21
- }
22
-
23
- transform(response: Response): Response {
24
- const body = new ReadableStream<Uint8Array>({
25
- start: async (controller) => {
26
- const html = await response.text();
27
- let result = html;
28
-
29
- for (const selector of ['head', 'body'] as const) {
30
- const handler = this.handlers.get(selector);
31
- if (!handler) {
32
- continue;
33
- }
34
-
35
- const chunks: string[] = [];
36
- handler.element({
37
- append: (content: string) => {
38
- chunks.push(content);
39
- },
40
- });
41
-
42
- const closingTag = `</${selector}>`;
43
- result = result.replace(closingTag, `${chunks.join('')}${closingTag}`);
44
- }
45
-
46
- controller.enqueue(new TextEncoder().encode(result));
47
- controller.close();
48
- },
49
- });
50
-
51
- return new Response(body, {
52
- headers: response.headers,
53
- status: response.status,
54
- statusText: response.statusText,
55
- });
56
- }
57
- }
58
-
59
- class TestHtmlRewriterProvider implements HtmlRewriterProvider {
60
- public mode: HtmlRewriterMode = 'auto';
61
-
62
- setMode(mode: HtmlRewriterMode) {
63
- this.mode = mode;
64
- }
65
-
66
- async createHtmlRewriter(): Promise<HtmlRewriterRuntime | null> {
67
- return this.mode === 'fallback' ? null : new TestHtmlRewriter();
68
- }
69
- }
70
-
71
- type HtmlRewriterModeScenario = {
72
- label: string;
73
- html: string;
74
- dependencies: ProcessedAsset[];
75
- expectedFragments: string[];
76
- unexpectedFragments?: string[];
77
- };
78
-
79
- type HtmlRewriterModeCase = {
80
- label: string;
81
- mode: 'auto' | 'native' | 'worker-tools' | 'fallback';
82
- };
83
-
84
- describe('HtmlTransformerService', () => {
85
- const createMockResponse = (html: string) => {
86
- return new Response(html, {
87
- headers: { 'Content-Type': 'text/html' },
88
- });
89
- };
90
-
91
- const createTransformer = (mode: HtmlRewriterMode = 'auto') => {
92
- const htmlRewriterProvider = new TestHtmlRewriterProvider();
93
- const transformer = new HtmlTransformerService({ htmlRewriterMode: mode, htmlRewriterProvider });
94
- return { transformer, htmlRewriterProvider };
95
- };
96
-
97
- const htmlRewriterModeCases: HtmlRewriterModeCase[] = [
98
- { label: 'auto', mode: 'auto' },
99
- { label: 'native', mode: 'native' },
100
- { label: 'worker-tools', mode: 'worker-tools' },
101
- { label: 'fallback', mode: 'fallback' },
102
- ];
103
-
104
- const htmlRewriterScenarios: HtmlRewriterModeScenario[] = [
105
- {
106
- label: 'injects mixed head and body dependencies while preserving document content',
107
- html: '<html><head><title>Matrix</title></head><body><main>Page content</main></body></html>',
108
- dependencies: [
109
- {
110
- kind: 'stylesheet',
111
- inline: false,
112
- position: 'head',
113
- srcUrl: '/matrix.css',
114
- attributes: { media: 'screen' },
115
- },
116
- {
117
- kind: 'script',
118
- inline: true,
119
- content: 'window.matrix = true;',
120
- position: 'head',
121
- srcUrl: '/matrix-inline.js',
122
- attributes: { id: 'matrix-inline' },
123
- },
124
- {
125
- kind: 'script',
126
- inline: false,
127
- position: 'body',
128
- srcUrl: '/matrix-body.js',
129
- attributes: { defer: 'true' },
130
- },
131
- ],
132
- expectedFragments: [
133
- '<title>Matrix</title>',
134
- '<main>Page content</main>',
135
- '<link rel="stylesheet" href="/matrix.css" media="screen">',
136
- '<script id="matrix-inline">window.matrix = true;</script>',
137
- '<script src="/matrix-body.js" defer="true"></script>',
138
- ],
139
- },
140
- {
141
- label: 'skips excluded scripts while still injecting remaining dependencies',
142
- html: '<html><head></head><body><section>Visible</section></body></html>',
143
- dependencies: [
144
- {
145
- kind: 'script',
146
- inline: false,
147
- position: 'body',
148
- srcUrl: '/excluded.js',
149
- excludeFromHtml: true,
150
- },
151
- {
152
- kind: 'script',
153
- inline: false,
154
- position: 'body',
155
- srcUrl: '/included.js',
156
- },
157
- ],
158
- expectedFragments: ['<section>Visible</section>', '<script src="/included.js"></script>'],
159
- unexpectedFragments: ['<script src="/excluded.js"></script>'],
160
- },
161
- {
162
- label: 'injects inline styles and preserves nested body markup',
163
- html: '<html><head></head><body><div><span>Nested</span></div></body></html>',
164
- dependencies: [
165
- {
166
- kind: 'stylesheet',
167
- inline: true,
168
- position: 'head',
169
- content: '.nested{color:red;}',
170
- srcUrl: '/nested.css',
171
- attributes: { 'data-test': 'inline-style' },
172
- },
173
- ],
174
- expectedFragments: [
175
- '<div><span>Nested</span></div>',
176
- '<style data-test="inline-style">.nested{color:red;}</style>',
177
- ],
178
- },
179
- ];
180
-
181
- it('should inject script dependencies correctly', async () => {
182
- const dependencies: ProcessedAsset[] = [
183
- {
184
- kind: 'script',
185
- inline: true,
186
- content: "console.log('test')",
187
- position: 'body',
188
- srcUrl: '/test.js',
189
- attributes: { id: 'test-script' },
190
- },
191
- ];
192
-
193
- const { transformer } = createTransformer();
194
- transformer.setProcessedDependencies(dependencies);
195
- const Response = createMockResponse('<html><head></head><body></body></html>');
196
- const result = await transformer.transform(Response);
197
- const html = await result.text();
198
-
199
- expect(html).toContain('<script id="test-script">console.log(\'test\')</script>');
200
- });
201
-
202
- it('should inject stylesheet dependencies correctly', async () => {
203
- const dependencies: ProcessedAsset[] = [
204
- {
205
- kind: 'stylesheet',
206
- inline: false,
207
- position: 'head',
208
- srcUrl: '/test.css',
209
- attributes: { media: 'screen' },
210
- },
211
- ];
212
-
213
- const { transformer } = createTransformer();
214
- transformer.setProcessedDependencies(dependencies);
215
- const Response = createMockResponse('<html><head></head><body></body></html>');
216
- const result = await transformer.transform(Response);
217
- const html = await result.text();
218
-
219
- expect(html).toContain('<link rel="stylesheet" href="/test.css" media="screen">');
220
- });
221
-
222
- it('should handle both inline and src dependencies', async () => {
223
- const dependencies: ProcessedAsset[] = [
224
- {
225
- kind: 'script',
226
- inline: true,
227
- content: 'const x = 1;',
228
- position: 'head',
229
- srcUrl: '/inline.js',
230
- },
231
- {
232
- kind: 'script',
233
- inline: false,
234
- position: 'body',
235
- srcUrl: '/external.js',
236
- },
237
- ];
238
-
239
- const { transformer } = createTransformer();
240
- transformer.setProcessedDependencies(dependencies);
241
- const Response = createMockResponse('<html><head></head><body></body></html>');
242
- const result = await transformer.transform(Response);
243
- const html = await result.text();
244
-
245
- expect(html).toContain('<script>const x = 1;</script>');
246
- expect(html).toContain('<script src="/external.js"></script>');
247
- });
248
-
249
- it('should preserve existing HTML content', async () => {
250
- const dependencies: ProcessedAsset[] = [
251
- {
252
- kind: 'script',
253
- inline: true,
254
- content: "console.log('test')",
255
- position: 'body',
256
- srcUrl: '/test.js',
257
- },
258
- ];
259
-
260
- const originalHtml = '<html><head><title>Test</title></head><body><div>Content</div></body></html>';
261
- const { transformer } = createTransformer();
262
- transformer.setProcessedDependencies(dependencies);
263
- const Response = createMockResponse(originalHtml);
264
- const result = await transformer.transform(Response);
265
- const html = await result.text();
266
-
267
- expect(html).toContain('<title>Test</title>');
268
- expect(html).toContain('<div>Content</div>');
269
- expect(html).toContain("console.log('test')");
270
- });
271
-
272
- it('should use the injected html rewriter provider when available', async () => {
273
- const dependencies: ProcessedAsset[] = [
274
- {
275
- kind: 'script',
276
- inline: false,
277
- position: 'body',
278
- srcUrl: '/native.js',
279
- },
280
- ];
281
-
282
- const { transformer } = createTransformer();
283
- transformer.setProcessedDependencies(dependencies);
284
- const result = await transformer.transform(createMockResponse('<html><head></head><body></body></html>'));
285
- const html = await result.text();
286
-
287
- expect(html).toContain('<script src="/native.js"></script>');
288
- });
289
-
290
- it('should fall back to string injection when the provider returns no rewriter', async () => {
291
- const dependencies: ProcessedAsset[] = [
292
- {
293
- kind: 'stylesheet',
294
- inline: false,
295
- position: 'head',
296
- srcUrl: '/worker-tools.css',
297
- },
298
- ];
299
-
300
- const { transformer } = createTransformer('fallback');
301
- transformer.setProcessedDependencies(dependencies);
302
- const result = await transformer.transform(createMockResponse('<html><head></head><body></body></html>'));
303
- const html = await result.text();
304
-
305
- expect(html).toContain('<link rel="stylesheet" href="/worker-tools.css">');
306
- });
307
-
308
- it('should delegate html rewriter mode changes to the injected provider', () => {
309
- const { transformer, htmlRewriterProvider } = createTransformer();
310
-
311
- transformer.setHtmlRewriterMode('worker-tools');
312
- expect(htmlRewriterProvider.mode).toBe('worker-tools');
313
-
314
- transformer.setHtmlRewriterMode('fallback');
315
- expect(htmlRewriterProvider.mode).toBe('fallback');
316
- });
317
-
318
- it('should support the same transformation scenarios across all html rewriter modes', async () => {
319
- for (const modeCase of htmlRewriterModeCases) {
320
- const { transformer } = createTransformer(modeCase.mode);
321
-
322
- for (const scenario of htmlRewriterScenarios) {
323
- transformer.setProcessedDependencies(scenario.dependencies);
324
-
325
- const result = await transformer.transform(createMockResponse(scenario.html));
326
- const html = await result.text();
327
-
328
- for (const expectedFragment of scenario.expectedFragments) {
329
- expect(html, `${modeCase.label}: ${scenario.label}`).toContain(expectedFragment);
330
- }
331
-
332
- for (const unexpectedFragment of scenario.unexpectedFragments ?? []) {
333
- expect(html, `${modeCase.label}: ${scenario.label}`).not.toContain(unexpectedFragment);
334
- }
335
- }
336
- }
337
- });
338
-
339
- it('should apply attributes to the html element', () => {
340
- const { transformer } = createTransformer();
341
- const result = transformer.applyAttributesToHtmlElement(
342
- '<!DOCTYPE html><html lang="en"><body>Hello</body></html>',
343
- {
344
- 'data-eco-document-owner': 'react-router',
345
- },
346
- );
347
-
348
- expect(result).toContain('<html lang="en" data-eco-document-owner="react-router">');
349
- });
350
-
351
- it('should apply attributes to the first body child', () => {
352
- const { transformer } = createTransformer();
353
- const result = transformer.applyAttributesToFirstBodyElement(
354
- '<html><body><main>Hello</main><footer>Footer</footer></body></html>',
355
- { 'data-eco-component-id': 'root-1', role: 'main' },
356
- );
357
-
358
- expect(result).toContain('<main data-eco-component-id="root-1" role="main">Hello</main>');
359
- });
360
-
361
- it('should apply attributes to the first fragment element', () => {
362
- const { transformer } = createTransformer();
363
- const result = transformer.applyAttributesToFirstElement(' <aside>Content</aside><div>Other</div>', {
364
- 'aria-live': 'polite',
365
- });
366
-
367
- expect(result).toContain('<aside aria-live="polite">Content</aside>');
368
- });
369
-
370
- it('should deduplicate processed assets while preserving order', () => {
371
- const { transformer } = createTransformer();
372
- const first = { kind: 'script', srcUrl: '/assets/app.js', position: 'head' } as ProcessedAsset;
373
- const duplicate = { kind: 'script', srcUrl: '/assets/app.js', position: 'head' } as ProcessedAsset;
374
- const second = { kind: 'stylesheet', srcUrl: '/assets/app.css', position: 'head' } as ProcessedAsset;
375
-
376
- expect(transformer.dedupeProcessedAssets([first, duplicate, second])).toEqual([first, second]);
377
- });
378
- });
@@ -1,77 +0,0 @@
1
- import { describe, expect, it } from 'vitest';
2
- import { ConfigBuilder } from '../../config/config-builder.js';
3
- import { Processor } from '../../plugins/processor.js';
4
- import { DevelopmentInvalidationService } from './development-invalidation.service.ts';
5
- import { InMemoryDevGraphService, setAppDevGraphService } from '../runtime-state/dev-graph.service.ts';
6
-
7
- class StylesheetProcessor extends Processor {
8
- buildPlugins = [];
9
- plugins = [];
10
-
11
- constructor() {
12
- super({
13
- name: 'css',
14
- watch: {
15
- paths: ['/test/project/src'],
16
- extensions: ['.css'],
17
- },
18
- capabilities: [{ kind: 'stylesheet', extensions: ['*.css'] }],
19
- });
20
- }
21
-
22
- async setup(): Promise<void> {}
23
-
24
- async teardown(): Promise<void> {}
25
-
26
- async process<T>(input: T): Promise<T> {
27
- return input;
28
- }
29
- }
30
-
31
- describe('DevelopmentInvalidationService', () => {
32
- it('classifies route, include, processor-owned, and additional-watch changes explicitly', async () => {
33
- const appConfig = await new ConfigBuilder().setRootDir('/test/project').build();
34
- appConfig.additionalWatchPaths = ['**/*.config.ts'];
35
- appConfig.processors.set('css', new StylesheetProcessor());
36
-
37
- const service = new DevelopmentInvalidationService(appConfig);
38
-
39
- expect(service.planFileChange('/test/project/src/pages/index.tsx')).toMatchObject({
40
- category: 'route-source',
41
- invalidateServerModules: true,
42
- refreshRoutes: true,
43
- delegateToHmr: true,
44
- });
45
- expect(service.planFileChange('/test/project/src/includes/seo.kita.tsx')).toMatchObject({
46
- category: 'include-source',
47
- invalidateServerModules: true,
48
- reloadBrowser: true,
49
- delegateToHmr: false,
50
- });
51
- expect(service.planFileChange('/test/project/src/styles/main.css')).toMatchObject({
52
- category: 'processor-owned-asset',
53
- invalidateServerModules: false,
54
- processorHandledAsset: true,
55
- });
56
- expect(service.planFileChange('/test/project/tailwind.config.ts')).toMatchObject({
57
- category: 'additional-watch',
58
- reloadBrowser: true,
59
- invalidateServerModules: false,
60
- });
61
- });
62
-
63
- it('delegates server invalidation versioning to the app-owned dev graph service', async () => {
64
- const appConfig = await new ConfigBuilder().setRootDir('/test/project').build();
65
- const devGraphService = new InMemoryDevGraphService();
66
- setAppDevGraphService(appConfig, devGraphService);
67
- const service = new DevelopmentInvalidationService(appConfig);
68
-
69
- expect(service.getServerModuleInvalidationVersion()).toBe(0);
70
-
71
- service.invalidateServerModules(['/test/project/src/components/Button.tsx']);
72
- expect(service.getServerModuleInvalidationVersion()).toBe(1);
73
-
74
- service.resetRuntimeState(['/test/project/src/pages/index.tsx']);
75
- expect(service.getServerModuleInvalidationVersion()).toBe(3);
76
- });
77
- });