@ecopages/core 0.2.0-beta.4 → 0.2.0-beta.40

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 (611) hide show
  1. package/README.md +40 -9
  2. package/package.json +371 -33
  3. package/src/adapters/README.md +6 -2
  4. package/src/adapters/abstract/application-adapter.d.ts +115 -6
  5. package/src/adapters/abstract/application-adapter.js +261 -120
  6. package/src/adapters/abstract/router-adapter.js +12 -4
  7. package/src/adapters/abstract/segment-path-matcher.d.ts +6 -0
  8. package/src/adapters/abstract/segment-path-matcher.js +147 -0
  9. package/src/adapters/abstract/server-adapter.d.ts +16 -2
  10. package/src/adapters/abstract/server-adapter.js +22 -14
  11. package/src/adapters/abstract/ws-pattern-matcher.d.ts +12 -0
  12. package/src/adapters/abstract/ws-pattern-matcher.js +28 -0
  13. package/src/adapters/bun/bun-user-websocket-lifecycle.d.ts +22 -0
  14. package/src/adapters/bun/bun-user-websocket-lifecycle.js +93 -0
  15. package/src/adapters/bun/client-bridge.d.ts +1 -0
  16. package/src/adapters/bun/client-bridge.js +51 -47
  17. package/src/adapters/bun/create-app.d.ts +9 -6
  18. package/src/adapters/bun/create-app.js +171 -130
  19. package/src/adapters/bun/hmr-manager.d.ts +1 -1
  20. package/src/adapters/bun/hmr-manager.js +62 -57
  21. package/src/adapters/bun/index.d.ts +1 -1
  22. package/src/adapters/bun/index.js +2 -8
  23. package/src/adapters/bun/runtime-host.d.ts +1 -1
  24. package/src/adapters/bun/runtime-host.js +61 -54
  25. package/src/adapters/bun/server-adapter.d.ts +91 -41
  26. package/src/adapters/bun/server-adapter.js +566 -426
  27. package/src/adapters/bun/static-preview-host.d.ts +1 -1
  28. package/src/adapters/bun/static-preview-host.js +43 -41
  29. package/src/adapters/create-app.d.ts +13 -11
  30. package/src/adapters/create-app.js +11 -63
  31. package/src/adapters/index.d.ts +2 -2
  32. package/src/adapters/index.js +2 -8
  33. package/src/adapters/node/create-app.d.ts +8 -3
  34. package/src/adapters/node/create-app.js +126 -84
  35. package/src/adapters/node/http-request-bridge.js +147 -106
  36. package/src/adapters/node/node-client-bridge.d.ts +1 -0
  37. package/src/adapters/node/node-client-bridge.js +62 -61
  38. package/src/adapters/node/node-hmr-manager.d.ts +1 -1
  39. package/src/adapters/node/node-hmr-manager.js +58 -48
  40. package/src/adapters/node/runtime-host.d.ts +1 -1
  41. package/src/adapters/node/runtime-host.js +96 -89
  42. package/src/adapters/node/server-adapter-dependencies.js +18 -17
  43. package/src/adapters/node/server-adapter.d.ts +63 -23
  44. package/src/adapters/node/server-adapter.js +346 -297
  45. package/src/adapters/node/static-content-server.d.ts +1 -0
  46. package/src/adapters/node/static-content-server.js +172 -183
  47. package/src/adapters/node/static-preview-host.d.ts +1 -1
  48. package/src/adapters/node/static-preview-host.js +88 -64
  49. package/src/adapters/shared/hmr/dev-transform-entrypoint-registry.d.ts +16 -0
  50. package/src/adapters/shared/hmr/dev-transform-entrypoint-registry.js +32 -0
  51. package/src/adapters/shared/{hmr-html-response.d.ts → hmr/hmr-html-response.d.ts} +2 -2
  52. package/src/adapters/shared/hmr/hmr-html-response.js +50 -0
  53. package/src/adapters/shared/hmr/shared-hmr-manager.d.ts +92 -0
  54. package/src/adapters/shared/hmr/shared-hmr-manager.js +446 -0
  55. package/src/adapters/shared/http/api-request-pipeline.d.ts +23 -0
  56. package/src/adapters/shared/http/api-request-pipeline.js +132 -0
  57. package/src/adapters/shared/{api-response.d.ts → http/api-response.d.ts} +1 -1
  58. package/src/adapters/shared/http/api-response.js +79 -0
  59. package/src/adapters/shared/http/create-body-response.d.ts +12 -0
  60. package/src/adapters/shared/http/create-body-response.js +26 -0
  61. package/src/adapters/shared/http/define-api-handler.d.ts +90 -0
  62. package/src/adapters/shared/http/define-api-handler.js +49 -0
  63. package/src/adapters/shared/{explicit-static-render-preparation.d.ts → http/explicit-static-render-preparation.d.ts} +3 -3
  64. package/src/adapters/shared/http/explicit-static-render-preparation.js +29 -0
  65. package/src/adapters/shared/{explicit-static-route-matcher.d.ts → http/explicit-static-route-matcher.d.ts} +3 -9
  66. package/src/adapters/shared/http/explicit-static-route-matcher.js +59 -0
  67. package/src/adapters/shared/{file-route-middleware-pipeline.d.ts → http/file-route-middleware-pipeline.d.ts} +2 -2
  68. package/src/adapters/shared/http/file-route-middleware-pipeline.js +84 -0
  69. package/src/adapters/shared/{fs-server-response-factory.d.ts → http/fs-server-response-factory.d.ts} +7 -2
  70. package/src/adapters/shared/http/fs-server-response-factory.js +106 -0
  71. package/src/adapters/shared/{fs-server-response-matcher.d.ts → http/fs-server-response-matcher.d.ts} +25 -5
  72. package/src/adapters/shared/http/fs-server-response-matcher.js +258 -0
  73. package/src/adapters/shared/http/run-middleware-chain.d.ts +5 -0
  74. package/src/adapters/shared/http/run-middleware-chain.js +17 -0
  75. package/src/adapters/shared/{application-adapter.d.ts → runtime/application-adapter.d.ts} +2 -2
  76. package/src/adapters/shared/runtime/application-adapter.js +75 -0
  77. package/src/adapters/shared/runtime/collect-dev-prewarm-plan.d.ts +11 -0
  78. package/src/adapters/shared/runtime/collect-dev-prewarm-plan.js +29 -0
  79. package/src/adapters/shared/runtime/copy-runtime-public-dir.d.ts +6 -0
  80. package/src/adapters/shared/runtime/copy-runtime-public-dir.js +27 -0
  81. package/src/adapters/shared/runtime/dev-static-route-prewarm.d.ts +16 -0
  82. package/src/adapters/shared/runtime/dev-static-route-prewarm.js +66 -0
  83. package/src/adapters/shared/runtime/port-manager.d.ts +116 -0
  84. package/src/adapters/shared/runtime/port-manager.js +226 -0
  85. package/src/adapters/shared/{render-context.d.ts → runtime/render-context.d.ts} +2 -2
  86. package/src/adapters/shared/runtime/render-context.js +99 -0
  87. package/src/adapters/shared/{runtime-app-bootstrap.d.ts → runtime/runtime-app-bootstrap.d.ts} +4 -3
  88. package/src/adapters/shared/runtime/runtime-app-bootstrap.js +38 -0
  89. package/src/adapters/shared/runtime/runtime-server-lifecycle.d.ts +45 -0
  90. package/src/adapters/shared/runtime/runtime-server-lifecycle.js +71 -0
  91. package/src/adapters/shared/{server-adapter.d.ts → runtime/server-adapter.d.ts} +31 -50
  92. package/src/adapters/shared/runtime/server-adapter.js +301 -0
  93. package/src/adapters/shared/{server-route-handler.d.ts → runtime/server-route-handler.d.ts} +6 -33
  94. package/src/adapters/shared/runtime/server-route-handler.js +77 -0
  95. package/src/adapters/shared/{server-static-builder.d.ts → runtime/server-static-builder.d.ts} +27 -35
  96. package/src/adapters/shared/runtime/server-static-builder.js +172 -0
  97. package/src/adapters/shared/{static-preview-host.d.ts → runtime/static-preview-host.d.ts} +6 -1
  98. package/src/adapters/shared/ws/node-http-websocket-upgrades.d.ts +21 -0
  99. package/src/adapters/shared/ws/node-http-websocket-upgrades.js +109 -0
  100. package/src/adapters/shared/ws/websocket-lifecycle.d.ts +24 -0
  101. package/src/adapters/shared/ws/websocket-lifecycle.js +62 -0
  102. package/src/build/README.md +191 -31
  103. package/src/build/app-build-manifest-runtime.d.ts +39 -0
  104. package/src/build/app-build-manifest-runtime.js +145 -0
  105. package/src/build/browser/browser-runtime-manifest.js +58 -0
  106. package/src/build/browser/browser-runtime-plugin-helpers.js +34 -0
  107. package/src/build/{browser-runtime-plugin.d.ts → browser/browser-runtime-plugin.d.ts} +1 -1
  108. package/src/build/browser/browser-runtime-plugin.js +216 -0
  109. package/src/build/browser/jsx-ownership-plugins.d.ts +24 -0
  110. package/src/build/browser/jsx-ownership-plugins.js +55 -0
  111. package/src/build/browser/lit-static-render-worker-context.d.ts +2 -0
  112. package/src/build/browser/lit-static-render-worker-context.js +4 -0
  113. package/src/build/build-adapter.d.ts +29 -334
  114. package/src/build/build-adapter.js +273 -237
  115. package/src/build/cache/build-input-fingerprint.d.ts +28 -0
  116. package/src/build/cache/build-input-fingerprint.js +33 -0
  117. package/src/build/cache/cache-constants.d.ts +4 -0
  118. package/src/build/cache/cache-constants.js +4 -0
  119. package/src/build/cache/cache-keys.d.ts +22 -0
  120. package/src/build/cache/cache-keys.js +71 -0
  121. package/src/build/cache/pages-unified-graph-build.d.ts +31 -0
  122. package/src/build/cache/pages-unified-graph-build.js +199 -0
  123. package/src/build/cache/production-build-cache.d.ts +21 -0
  124. package/src/build/cache/production-build-cache.js +56 -0
  125. package/src/build/cache/server-entry-build-cache.d.ts +43 -0
  126. package/src/build/cache/server-entry-build-cache.js +153 -0
  127. package/src/build/contracts/build-contracts.d.ts +96 -0
  128. package/src/build/contracts/build-contracts.js +1 -0
  129. package/src/build/contracts/build-manifest.d.ts +90 -0
  130. package/src/build/contracts/build-manifest.js +64 -0
  131. package/src/build/contracts/build-types.js +1 -0
  132. package/src/build/contracts/content-virtual-modules.d.ts +12 -0
  133. package/src/build/contracts/content-virtual-modules.js +29 -0
  134. package/src/build/{rolldown-adapter-helpers.d.ts → rolldown/rolldown-adapter-helpers.d.ts} +32 -9
  135. package/src/build/rolldown/rolldown-adapter-helpers.js +458 -0
  136. package/src/build/{rolldown-build-adapter.d.ts → rolldown/rolldown-build-adapter.d.ts} +3 -7
  137. package/src/build/rolldown/rolldown-build-adapter.js +57 -0
  138. package/src/build/rolldown/rolldown-build-invocation-metrics.d.ts +12 -0
  139. package/src/build/rolldown/rolldown-build-invocation-metrics.js +39 -0
  140. package/src/build/{rolldown-plugin-bridge.d.ts → rolldown/rolldown-plugin-bridge.d.ts} +16 -2
  141. package/src/build/rolldown/rolldown-plugin-bridge.js +284 -0
  142. package/src/build/rolldown/rolldown-source-transform-pass.d.ts +15 -0
  143. package/src/build/rolldown/rolldown-source-transform-pass.js +70 -0
  144. package/src/build/rolldown/runtime-build-output-normalizer.d.ts +10 -0
  145. package/src/build/rolldown/runtime-build-output-normalizer.js +253 -0
  146. package/src/build/rolldown/server-side-css-shim-plugin.js +58 -0
  147. package/src/build/runtime/build-profile-options.d.ts +7 -0
  148. package/src/build/runtime/build-profile-options.js +37 -0
  149. package/src/build/runtime/build-request-identity.d.ts +17 -0
  150. package/src/build/runtime/build-request-identity.js +79 -0
  151. package/src/build/runtime/build-request-policy.d.ts +58 -0
  152. package/src/build/runtime/build-request-policy.js +84 -0
  153. package/src/build/runtime/build-runtime.d.ts +28 -0
  154. package/src/build/runtime/build-runtime.js +75 -0
  155. package/src/build/runtime/deduping-build-executor.d.ts +21 -0
  156. package/src/build/runtime/deduping-build-executor.js +40 -0
  157. package/src/build/runtime/parallel-build-executor.d.ts +21 -0
  158. package/src/build/runtime/parallel-build-executor.js +60 -0
  159. package/src/build/{serialized-build-executor.d.ts → runtime/serialized-build-executor.d.ts} +1 -1
  160. package/src/build/runtime/serialized-build-executor.js +79 -0
  161. package/src/cache/index.d.ts +2 -1
  162. package/src/cache/index.js +7 -6
  163. package/src/cache/module-parse-cache.d.ts +5 -0
  164. package/src/cache/module-parse-cache.js +122 -67
  165. package/src/cache/module-transform-profiler.d.ts +8 -0
  166. package/src/cache/module-transform-profiler.js +8 -0
  167. package/src/client/navigation-scripts/classification.d.ts +16 -0
  168. package/src/client/navigation-scripts/classification.js +49 -0
  169. package/src/client/navigation-scripts/index.d.ts +3 -0
  170. package/src/client/navigation-scripts/index.js +3 -0
  171. package/src/client/navigation-scripts/navigation-scripts.test.browser.d.ts +1 -0
  172. package/src/client/navigation-scripts/navigation-scripts.test.browser.js +61 -0
  173. package/src/client/navigation-scripts/registry.d.ts +11 -0
  174. package/src/client/navigation-scripts/registry.js +16 -0
  175. package/src/client/navigation-scripts/rerun-queue.d.ts +37 -0
  176. package/src/client/navigation-scripts/rerun-queue.js +90 -0
  177. package/src/client/scroll.d.ts +17 -0
  178. package/src/client/scroll.js +33 -0
  179. package/src/client/scroll.test.browser.d.ts +1 -0
  180. package/src/client/scroll.test.browser.js +31 -0
  181. package/src/client/view-transitions.d.ts +32 -0
  182. package/src/client/view-transitions.js +120 -0
  183. package/src/client/view-transitions.test.browser.d.ts +1 -0
  184. package/src/client/view-transitions.test.browser.js +56 -0
  185. package/src/config/config-builder.d.ts +40 -10
  186. package/src/config/config-builder.js +647 -600
  187. package/src/config/constants.d.ts +1 -0
  188. package/src/config/constants.js +44 -23
  189. package/src/declarations.d.ts +1 -0
  190. package/src/dev/README.md +24 -0
  191. package/src/dev/client-bridge-registry.d.ts +5 -0
  192. package/src/dev/client-bridge-registry.js +10 -0
  193. package/src/dev/dev-client-ownership.d.ts +7 -0
  194. package/src/dev/dev-client-ownership.js +8 -0
  195. package/src/dev/hmr-manager-registry.d.ts +8 -0
  196. package/src/dev/hmr-manager-registry.js +10 -0
  197. package/src/dev/host-runtime.d.ts +3 -0
  198. package/src/dev/host-runtime.js +25 -23
  199. package/src/dev/runtime-server-started-message.d.ts +2 -0
  200. package/src/dev/runtime-server-started-message.js +3 -0
  201. package/src/dev/sc-server.js +106 -103
  202. package/src/dev/transform-server/dev-transform-bundler.d.ts +24 -0
  203. package/src/dev/transform-server/dev-transform-bundler.js +79 -0
  204. package/src/dev/transform-server/dev-transform-externalize-plugin.d.ts +12 -0
  205. package/src/dev/transform-server/dev-transform-externalize-plugin.js +29 -0
  206. package/src/dev/transform-server/dev-transform-import-rewriter.d.ts +16 -0
  207. package/src/dev/transform-server/dev-transform-import-rewriter.js +126 -0
  208. package/src/dev/transform-server/dev-transform-module-kind.d.ts +13 -0
  209. package/src/dev/transform-server/dev-transform-module-kind.js +17 -0
  210. package/src/dev/transform-server/dev-transform-runtime-specifiers.d.ts +5 -0
  211. package/src/dev/transform-server/dev-transform-runtime-specifiers.js +16 -0
  212. package/src/dev/transform-server/dev-transform-server.d.ts +41 -0
  213. package/src/dev/transform-server/dev-transform-server.js +191 -0
  214. package/src/dev/transform-server/dev-transform-url.d.ts +13 -0
  215. package/src/dev/transform-server/dev-transform-url.js +58 -0
  216. package/src/dev/transform-server/dev-transform-vendor-registry.d.ts +28 -0
  217. package/src/dev/transform-server/dev-transform-vendor-registry.js +158 -0
  218. package/src/dev/transform-server/index.d.ts +6 -0
  219. package/src/dev/transform-server/index.js +4 -0
  220. package/src/dev/transform-server/types.d.ts +15 -0
  221. package/src/dev/transform-server/types.js +1 -0
  222. package/src/dev-toolbar/README.md +52 -0
  223. package/src/dev-toolbar/define-dev-tool.d.ts +21 -0
  224. package/src/dev-toolbar/define-dev-tool.js +9 -0
  225. package/src/dev-toolbar/dev-toolbar-config.d.ts +25 -0
  226. package/src/dev-toolbar/dev-toolbar-config.js +19 -0
  227. package/src/dev-toolbar/dev-toolbar-host.d.ts +49 -0
  228. package/src/dev-toolbar/dev-toolbar-host.js +117 -0
  229. package/src/dev-toolbar/dev-toolbar-html-response.d.ts +11 -0
  230. package/src/dev-toolbar/dev-toolbar-html-response.js +14 -0
  231. package/src/dev-toolbar/dev-toolbar-manifest-contract.d.ts +22 -0
  232. package/src/dev-toolbar/dev-toolbar-manifest-contract.js +2 -0
  233. package/src/dev-toolbar/dev-toolbar-manifest.d.ts +15 -0
  234. package/src/dev-toolbar/dev-toolbar-manifest.js +52 -0
  235. package/src/dev-toolbar/dev-toolbar-package.d.ts +34 -0
  236. package/src/dev-toolbar/dev-toolbar-package.js +78 -0
  237. package/src/dev-toolbar/dev-toolbar-runtime-paths.d.ts +10 -0
  238. package/src/dev-toolbar/dev-toolbar-runtime-paths.js +13 -0
  239. package/src/diagnostics/request-build-dedupe.d.ts +18 -0
  240. package/src/diagnostics/request-build-dedupe.js +39 -0
  241. package/src/diagnostics/request-pipeline-metrics.d.ts +38 -0
  242. package/src/diagnostics/request-pipeline-metrics.js +121 -0
  243. package/src/diagnostics/startup-trace.d.ts +81 -0
  244. package/src/diagnostics/startup-trace.js +281 -0
  245. package/src/eco/README.md +17 -0
  246. package/src/eco/component-identity.d.ts +13 -0
  247. package/src/eco/component-identity.js +18 -0
  248. package/src/eco/eco-declared-component.d.ts +15 -0
  249. package/src/eco/eco-declared-component.js +23 -0
  250. package/src/eco/eco.browser.js +63 -70
  251. package/src/eco/eco.js +163 -97
  252. package/src/eco/eco.types.d.ts +47 -8
  253. package/src/eco/eco.types.js +5 -0
  254. package/src/eco/eco.utils.d.ts +1 -1
  255. package/src/eco/eco.utils.js +1 -10
  256. package/src/eco/global-injector-map.js +55 -41
  257. package/src/eco/lazy-injector-map.js +90 -60
  258. package/src/eco/module-dependencies.js +52 -44
  259. package/src/eco/page-layout-normalization.d.ts +21 -0
  260. package/src/eco/page-layout-normalization.js +69 -0
  261. package/src/env.d.ts +2 -0
  262. package/src/errors/http-error.d.ts +8 -0
  263. package/src/errors/http-error.js +66 -49
  264. package/src/errors/index.d.ts +1 -0
  265. package/src/errors/index.js +3 -6
  266. package/src/errors/locals-access-error.js +5 -8
  267. package/src/errors/undeclared-component-dependency-error.d.ts +11 -0
  268. package/src/errors/undeclared-component-dependency-error.js +17 -0
  269. package/src/global/app-logger.js +3 -6
  270. package/src/hmr/README.md +21 -0
  271. package/src/hmr/client/hmr-runtime.js +119 -110
  272. package/src/hmr/client/module-update.d.ts +13 -0
  273. package/src/hmr/client/module-update.js +39 -0
  274. package/src/hmr/hmr-asset-paths.d.ts +14 -0
  275. package/src/hmr/hmr-asset-paths.js +22 -0
  276. package/src/hmr/hmr-entrypoint-output.d.ts +21 -0
  277. package/src/hmr/hmr-entrypoint-output.js +34 -0
  278. package/src/hmr/hmr-file-change-prep.d.ts +10 -0
  279. package/src/hmr/hmr-file-change-prep.js +14 -0
  280. package/src/hmr/hmr-registered-entrypoints-context.d.ts +7 -0
  281. package/src/hmr/hmr-registered-entrypoints-context.js +1 -0
  282. package/src/hmr/hmr-runtime-paths.d.ts +10 -0
  283. package/src/hmr/hmr-runtime-paths.js +13 -0
  284. package/src/hmr/hmr-strategy.d.ts +9 -0
  285. package/src/hmr/hmr-strategy.js +113 -42
  286. package/src/hmr/strategies/default-hmr-strategy.js +55 -33
  287. package/src/hmr/strategies/js-hmr-strategy.d.ts +6 -97
  288. package/src/hmr/strategies/js-hmr-strategy.js +107 -167
  289. package/src/hmr/strategies/server-rendered-template-hmr-strategy.d.ts +17 -0
  290. package/src/hmr/strategies/server-rendered-template-hmr-strategy.js +35 -0
  291. package/src/index.browser.d.ts +1 -0
  292. package/src/index.browser.js +2 -4
  293. package/src/index.d.ts +4 -1
  294. package/src/index.js +7 -21
  295. package/src/integrations/ghtml/ghtml-renderer.d.ts +2 -6
  296. package/src/integrations/ghtml/ghtml-renderer.js +12 -56
  297. package/src/integrations/ghtml/ghtml.constants.js +1 -4
  298. package/src/integrations/ghtml/ghtml.plugin.d.ts +3 -16
  299. package/src/integrations/ghtml/ghtml.plugin.js +10 -20
  300. package/src/islands/README.md +25 -0
  301. package/src/islands/island-host.d.ts +37 -0
  302. package/src/islands/island-host.js +55 -0
  303. package/src/plugins/README.md +2 -1
  304. package/src/plugins/alias-resolver-cache.d.ts +6 -9
  305. package/src/plugins/alias-resolver-cache.js +114 -97
  306. package/src/plugins/alias-resolver-plugin.d.ts +3 -3
  307. package/src/plugins/alias-resolver-plugin.js +35 -62
  308. package/src/plugins/define-integration.d.ts +26 -0
  309. package/src/plugins/define-integration.js +20 -0
  310. package/src/plugins/eco-component-meta-plugin.d.ts +6 -102
  311. package/src/plugins/eco-component-meta-plugin.js +120 -162
  312. package/src/plugins/foreign-jsx-override-plugin.d.ts +1 -1
  313. package/src/plugins/foreign-jsx-override-plugin.js +49 -37
  314. package/src/plugins/integration-plugin.d.ts +43 -14
  315. package/src/plugins/integration-plugin.js +212 -190
  316. package/src/plugins/jsx-import-source.utils.d.ts +8 -0
  317. package/src/plugins/jsx-import-source.utils.js +21 -0
  318. package/src/plugins/processor.d.ts +71 -12
  319. package/src/plugins/processor.js +168 -130
  320. package/src/plugins/runtime-capability.js +1 -0
  321. package/src/plugins/source-transform.d.ts +32 -1
  322. package/src/plugins/source-transform.js +112 -60
  323. package/src/plugins/tsconfig-import-resolver.d.ts +35 -0
  324. package/src/plugins/tsconfig-import-resolver.js +235 -0
  325. package/src/route-renderer/GRAPH.md +26 -32
  326. package/src/route-renderer/README.md +54 -33
  327. package/src/route-renderer/orchestration/document-shell/document-shell-render.service.d.ts +107 -0
  328. package/src/route-renderer/orchestration/document-shell/document-shell-render.service.js +155 -0
  329. package/src/route-renderer/orchestration/document-shell/layout-shell-props.service.d.ts +20 -0
  330. package/src/route-renderer/orchestration/document-shell/layout-shell-props.service.js +37 -0
  331. package/src/route-renderer/orchestration/{component-render-context.d.ts → foreign-child/component-render-context.d.ts} +8 -15
  332. package/src/route-renderer/orchestration/foreign-child/component-render-context.js +196 -0
  333. package/src/route-renderer/orchestration/{render-output.utils.d.ts → foreign-child/foreign-child-output.utils.d.ts} +17 -7
  334. package/src/route-renderer/orchestration/foreign-child/foreign-child-output.utils.js +191 -0
  335. package/src/route-renderer/orchestration/{foreign-subtree-execution.service.d.ts → foreign-child/foreign-subtree-execution.service.d.ts} +64 -34
  336. package/src/route-renderer/orchestration/foreign-child/foreign-subtree-execution.service.js +354 -0
  337. package/src/route-renderer/orchestration/foreign-child/owning-renderer-resolution.d.ts +19 -0
  338. package/src/route-renderer/orchestration/foreign-child/owning-renderer-resolution.js +36 -0
  339. package/src/route-renderer/orchestration/integration-renderer.d.ts +41 -151
  340. package/src/route-renderer/orchestration/integration-renderer.js +798 -988
  341. package/src/route-renderer/orchestration/integration-renderer.test-fixtures.d.ts +75 -0
  342. package/src/route-renderer/orchestration/integration-renderer.test-fixtures.js +173 -0
  343. package/src/route-renderer/orchestration/ownership-graph/component-graph-collectors.d.ts +10 -0
  344. package/src/route-renderer/orchestration/ownership-graph/component-graph-collectors.js +132 -0
  345. package/src/route-renderer/orchestration/ownership-graph/component-graph.d.ts +34 -0
  346. package/src/route-renderer/orchestration/ownership-graph/component-graph.js +89 -0
  347. package/src/route-renderer/orchestration/{ownership-validation.service.d.ts → ownership-graph/ownership-validation.service.d.ts} +6 -2
  348. package/src/route-renderer/orchestration/ownership-graph/ownership-validation.service.js +77 -0
  349. package/src/route-renderer/orchestration/page-browser-graph/global-injector-assets.service.d.ts +7 -0
  350. package/src/route-renderer/orchestration/page-browser-graph/global-injector-assets.service.js +30 -0
  351. package/src/route-renderer/orchestration/page-browser-graph/grouped-graph-build-plan.d.ts +15 -0
  352. package/src/route-renderer/orchestration/page-browser-graph/grouped-graph-build-plan.js +9 -0
  353. package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-contribution.merge.d.ts +5 -0
  354. package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-contribution.merge.js +30 -0
  355. package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-merge.utils.d.ts +12 -0
  356. package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-merge.utils.js +32 -0
  357. package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-session.d.ts +126 -0
  358. package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-session.js +542 -0
  359. package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph.service.d.ts +47 -0
  360. package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph.service.js +232 -0
  361. package/src/route-renderer/orchestration/{processed-asset-dedupe.d.ts → page-browser-graph/processed-asset-dedupe.d.ts} +1 -1
  362. package/src/route-renderer/orchestration/page-browser-graph/processed-asset-dedupe.js +23 -0
  363. package/src/route-renderer/orchestration/page-browser-graph/route-instance-key.d.ts +29 -0
  364. package/src/route-renderer/orchestration/page-browser-graph/route-instance-key.js +54 -0
  365. package/src/route-renderer/orchestration/route-pipeline/integration-route-render-adapter.d.ts +38 -0
  366. package/src/route-renderer/orchestration/route-pipeline/integration-route-render-adapter.js +26 -0
  367. package/src/route-renderer/orchestration/route-pipeline/marker-artifact.utils.d.ts +6 -0
  368. package/src/route-renderer/orchestration/route-pipeline/marker-artifact.utils.js +25 -0
  369. package/src/route-renderer/orchestration/route-pipeline/robots-meta.contribution.d.ts +15 -0
  370. package/src/route-renderer/orchestration/route-pipeline/robots-meta.contribution.js +43 -0
  371. package/src/route-renderer/orchestration/route-pipeline/route-html-finalization.service.d.ts +25 -0
  372. package/src/route-renderer/orchestration/route-pipeline/route-html-finalization.service.js +44 -0
  373. package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.builder.d.ts +26 -0
  374. package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.builder.js +49 -0
  375. package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.utils.d.ts +4 -0
  376. package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.utils.js +30 -0
  377. package/src/route-renderer/orchestration/{route-render-orchestrator.d.ts → route-pipeline/route-render-orchestrator.d.ts} +24 -54
  378. package/src/route-renderer/orchestration/route-pipeline/route-render-orchestrator.js +215 -0
  379. package/src/route-renderer/orchestration/string-markup-renderer.d.ts +14 -0
  380. package/src/route-renderer/orchestration/string-markup-renderer.js +52 -0
  381. package/src/route-renderer/page-loading/component-dependency-collection.js +121 -121
  382. package/src/route-renderer/page-loading/declared-asset-collection.js +66 -94
  383. package/src/route-renderer/page-loading/dependency-resolver.js +101 -104
  384. package/src/route-renderer/page-loading/ecopages-virtual-imports.d.ts +1 -0
  385. package/src/route-renderer/page-loading/ecopages-virtual-imports.js +64 -51
  386. package/src/route-renderer/page-loading/file-scoped-dependency-components.d.ts +42 -0
  387. package/src/route-renderer/page-loading/file-scoped-dependency-components.js +94 -0
  388. package/src/route-renderer/page-loading/lazy-entry-collection.js +75 -98
  389. package/src/route-renderer/page-loading/lazy-trigger-planning.js +47 -36
  390. package/src/route-renderer/page-loading/module-declaration-aggregation.js +39 -28
  391. package/src/route-renderer/page-loading/module-declaration-scripts.js +10 -15
  392. package/src/route-renderer/page-loading/page-dependency-bundling.js +156 -113
  393. package/src/route-renderer/page-loading/page-module-loader.d.ts +2 -1
  394. package/src/route-renderer/page-loading/page-module-loader.js +136 -124
  395. package/src/route-renderer/page-loading/resolved-page-dependencies.d.ts +12 -0
  396. package/src/route-renderer/page-loading/resolved-page-dependencies.js +38 -0
  397. package/src/route-renderer/route-renderer.js +74 -76
  398. package/src/router/README.md +31 -0
  399. package/src/router/client/link-intent.d.ts +11 -21
  400. package/src/router/client/link-intent.js +56 -30
  401. package/src/router/client/link-intent.test.browser.js +50 -39
  402. package/src/router/client/link-navigation-policy.d.ts +45 -0
  403. package/src/router/client/link-navigation-policy.js +122 -0
  404. package/src/router/client/link-navigation-policy.test.browser.d.ts +1 -0
  405. package/src/router/client/link-navigation-policy.test.browser.js +82 -0
  406. package/src/router/client/navigation-coordinator.d.ts +1 -1
  407. package/src/router/client/navigation-coordinator.js +235 -201
  408. package/src/router/client/navigation-lifecycle.d.ts +55 -0
  409. package/src/router/client/navigation-lifecycle.js +50 -0
  410. package/src/router/client/navigation-lifecycle.test.browser.d.ts +1 -0
  411. package/src/router/client/navigation-lifecycle.test.browser.js +118 -0
  412. package/src/router/server/route-registry.js +237 -242
  413. package/src/services/README.md +5 -0
  414. package/src/services/assets/asset-processing-service/asset-dependency-keys.d.ts +13 -0
  415. package/src/services/assets/asset-processing-service/asset-dependency-keys.js +64 -50
  416. package/src/services/assets/asset-processing-service/asset-processing.service.d.ts +7 -1
  417. package/src/services/assets/asset-processing-service/asset-processing.service.js +308 -268
  418. package/src/services/assets/asset-processing-service/asset.factory.js +78 -81
  419. package/src/services/assets/asset-processing-service/assets.types.d.ts +1 -1
  420. package/src/services/assets/asset-processing-service/assets.types.js +1 -0
  421. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.d.ts +2 -1
  422. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.js +57 -45
  423. package/src/services/assets/asset-processing-service/browser-runtime-entry-resolution.d.ts +52 -0
  424. package/src/services/assets/asset-processing-service/browser-runtime-entry-resolution.js +115 -0
  425. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.d.ts +4 -2
  426. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.js +53 -38
  427. package/src/services/assets/asset-processing-service/finalize-processed-asset.d.ts +3 -0
  428. package/src/services/assets/asset-processing-service/finalize-processed-asset.js +5 -0
  429. package/src/services/assets/asset-processing-service/grouped-content-bundles.d.ts +2 -1
  430. package/src/services/assets/asset-processing-service/grouped-content-bundles.js +85 -60
  431. package/src/services/assets/asset-processing-service/index.d.ts +2 -0
  432. package/src/services/assets/asset-processing-service/index.js +8 -6
  433. package/src/services/assets/asset-processing-service/inline-content-script-body.d.ts +11 -0
  434. package/src/services/assets/asset-processing-service/inline-content-script-body.js +23 -0
  435. package/src/services/assets/asset-processing-service/materialize-content-script-asset.d.ts +9 -0
  436. package/src/services/assets/asset-processing-service/materialize-content-script-asset.js +22 -0
  437. package/src/services/assets/asset-processing-service/page-package.js +70 -72
  438. package/src/services/assets/asset-processing-service/processor.interface.js +7 -5
  439. package/src/services/assets/asset-processing-service/processor.registry.js +11 -14
  440. package/src/services/assets/asset-processing-service/processors/base/base-processor.js +59 -62
  441. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.d.ts +0 -2
  442. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.js +102 -130
  443. package/src/services/assets/asset-processing-service/processors/index.js +5 -5
  444. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.d.ts +8 -0
  445. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.js +111 -111
  446. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.d.ts +0 -1
  447. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.js +95 -94
  448. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.js +136 -121
  449. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.d.ts +0 -3
  450. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +26 -57
  451. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.d.ts +0 -3
  452. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.js +33 -67
  453. package/src/services/assets/asset-processing-service/processors/stylesheet/stylesheet-processor-pipeline.d.ts +2 -0
  454. package/src/services/assets/asset-processing-service/processors/stylesheet/stylesheet-processor-pipeline.js +44 -0
  455. package/src/services/assets/asset-processing-service/resolve-integration-plugin.d.ts +4 -0
  456. package/src/services/assets/asset-processing-service/resolve-integration-plugin.js +15 -0
  457. package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.d.ts +0 -1
  458. package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.js +27 -44
  459. package/src/services/assets/browser-bundle.service.d.ts +28 -30
  460. package/src/services/assets/browser-bundle.service.js +54 -40
  461. package/src/services/cache/cache.types.d.ts +4 -2
  462. package/src/services/cache/cache.types.js +5 -0
  463. package/src/services/cache/html-page-cache-dependency-index.d.ts +34 -0
  464. package/src/services/cache/html-page-cache-dependency-index.js +88 -0
  465. package/src/services/cache/index.d.ts +2 -0
  466. package/src/services/cache/index.js +8 -7
  467. package/src/services/cache/memory-cache-store.js +101 -89
  468. package/src/services/cache/page-cache-service.d.ts +31 -1
  469. package/src/services/cache/page-cache-service.js +237 -150
  470. package/src/services/cache/page-request-cache-coordinator.service.js +106 -102
  471. package/src/services/html/html-rewriter-provider.service.js +61 -61
  472. package/src/services/html/html-transformer.service.d.ts +1 -1
  473. package/src/services/html/html-transformer.service.js +249 -266
  474. package/src/services/invalidation/development-invalidation.service.d.ts +25 -2
  475. package/src/services/invalidation/development-invalidation.service.js +239 -175
  476. package/src/services/module-loading/README.md +52 -0
  477. package/src/services/module-loading/app-module-loader.service.js +1 -0
  478. package/src/services/module-loading/app-server-module-transpiler.service.d.ts +8 -0
  479. package/src/services/module-loading/app-server-module-transpiler.service.js +103 -118
  480. package/src/services/module-loading/collection-server-module-build.service.d.ts +19 -0
  481. package/src/services/module-loading/collection-server-module-build.service.js +83 -0
  482. package/src/services/module-loading/host-module-loader-registry.js +6 -11
  483. package/src/services/module-loading/module-loading-types.js +1 -0
  484. package/src/services/module-loading/page-module-import.service.d.ts +11 -13
  485. package/src/services/module-loading/page-module-import.service.js +222 -184
  486. package/src/services/module-loading/route-module-build-cache-registry.d.ts +24 -0
  487. package/src/services/module-loading/route-module-build-cache-registry.js +51 -0
  488. package/src/services/module-loading/route-module-build-cache.d.ts +4 -0
  489. package/src/services/module-loading/route-module-build-cache.js +3 -0
  490. package/src/services/module-loading/route-module-build-cache.store.d.ts +57 -0
  491. package/src/services/module-loading/route-module-build-cache.store.js +202 -0
  492. package/src/services/module-loading/route-module-build-manifest.d.ts +57 -0
  493. package/src/services/module-loading/route-module-build-manifest.js +60 -0
  494. package/src/services/module-loading/route-module-dependency-hasher.d.ts +81 -0
  495. package/src/services/module-loading/route-module-dependency-hasher.js +148 -0
  496. package/src/services/module-loading/server-module-transpiler.service.d.ts +1 -3
  497. package/src/services/module-loading/server-module-transpiler.service.js +65 -62
  498. package/src/services/module-loading/source-module-support.js +15 -7
  499. package/src/services/runtime-state/dev-graph.service.js +165 -157
  500. package/src/services/runtime-state/entrypoint-dependency-graph.service.js +85 -76
  501. package/src/services/runtime-state/server-invalidation-state.service.js +38 -30
  502. package/src/services/validation/schema-validation-service.d.ts +1 -4
  503. package/src/services/validation/schema-validation-service.js +156 -95
  504. package/src/services/validation/standard-schema.types.d.ts +9 -62
  505. package/src/services/validation/standard-schema.types.js +1 -0
  506. package/src/services/validation/validate-standard-schema.d.ts +7 -0
  507. package/src/services/validation/validate-standard-schema.js +14 -0
  508. package/src/static-site-generator/README.md +41 -0
  509. package/src/static-site-generator/production-page-browser-graph-prebuild.d.ts +32 -0
  510. package/src/static-site-generator/production-page-browser-graph-prebuild.js +57 -0
  511. package/src/static-site-generator/sitemap-routes.d.ts +14 -0
  512. package/src/static-site-generator/sitemap-routes.js +36 -0
  513. package/src/static-site-generator/sitemap.d.ts +15 -0
  514. package/src/static-site-generator/sitemap.js +42 -0
  515. package/src/static-site-generator/static-build-invalidation.d.ts +10 -0
  516. package/src/static-site-generator/static-build-invalidation.js +37 -0
  517. package/src/static-site-generator/static-export-context.d.ts +30 -0
  518. package/src/static-site-generator/static-export-context.js +1 -0
  519. package/src/static-site-generator/static-site-generator.d.ts +43 -25
  520. package/src/static-site-generator/static-site-generator.js +536 -294
  521. package/src/types/internal-types.d.ts +59 -13
  522. package/src/types/internal-types.js +1 -0
  523. package/src/types/public-types.d.ts +310 -95
  524. package/src/types/public-types.js +1 -0
  525. package/src/utils/deep-merge.js +39 -26
  526. package/src/utils/ecopages-route-info.d.ts +26 -0
  527. package/src/utils/ecopages-route-info.js +30 -0
  528. package/src/utils/hash.js +3 -6
  529. package/src/utils/html-escaping.d.ts +7 -0
  530. package/src/utils/html-escaping.js +22 -5
  531. package/src/utils/html.js +1 -4
  532. package/src/utils/invariant.js +11 -10
  533. package/src/utils/locals-utils.js +32 -22
  534. package/src/utils/parse-cli-args.d.ts +2 -0
  535. package/src/utils/parse-cli-args.js +73 -59
  536. package/src/utils/path-pattern.d.ts +23 -0
  537. package/src/utils/path-pattern.js +42 -0
  538. package/src/utils/path-utils.module.js +8 -11
  539. package/src/utils/resolve-entry-file.js +70 -38
  540. package/src/utils/resolve-work-dir.js +23 -27
  541. package/src/utils/runtime.js +24 -33
  542. package/src/utils/server-utils.module.d.ts +3 -2
  543. package/src/utils/server-utils.module.js +60 -53
  544. package/src/utils/static-file-extensions.d.ts +12 -0
  545. package/src/utils/static-file-extensions.js +54 -0
  546. package/src/watchers/project-watcher-ignore.d.ts +11 -0
  547. package/src/watchers/project-watcher-ignore.js +17 -0
  548. package/src/watchers/project-watcher.d.ts +29 -6
  549. package/src/watchers/project-watcher.js +402 -257
  550. package/src/watchers/project-watcher.test-helpers.js +45 -50
  551. package/src/adapters/shared/api-response.js +0 -96
  552. package/src/adapters/shared/application-adapter.js +0 -90
  553. package/src/adapters/shared/define-api-handler.d.ts +0 -25
  554. package/src/adapters/shared/define-api-handler.js +0 -15
  555. package/src/adapters/shared/explicit-static-render-preparation.js +0 -26
  556. package/src/adapters/shared/explicit-static-route-matcher.js +0 -101
  557. package/src/adapters/shared/file-route-middleware-pipeline.js +0 -90
  558. package/src/adapters/shared/fs-server-response-factory.js +0 -81
  559. package/src/adapters/shared/fs-server-response-matcher.js +0 -186
  560. package/src/adapters/shared/hmr-entrypoint-registrar.d.ts +0 -55
  561. package/src/adapters/shared/hmr-entrypoint-registrar.js +0 -87
  562. package/src/adapters/shared/hmr-html-response.js +0 -33
  563. package/src/adapters/shared/render-context.js +0 -93
  564. package/src/adapters/shared/runtime-app-bootstrap.js +0 -46
  565. package/src/adapters/shared/runtime-host.js +0 -0
  566. package/src/adapters/shared/server-adapter.js +0 -436
  567. package/src/adapters/shared/server-route-handler.js +0 -111
  568. package/src/adapters/shared/server-static-builder.js +0 -162
  569. package/src/adapters/shared/shared-hmr-manager.d.ts +0 -59
  570. package/src/adapters/shared/shared-hmr-manager.js +0 -241
  571. package/src/adapters/shared/static-preview-host.js +0 -0
  572. package/src/build/browser-runtime-manifest.js +0 -61
  573. package/src/build/browser-runtime-plugin-helpers.js +0 -14
  574. package/src/build/browser-runtime-plugin.js +0 -173
  575. package/src/build/build-manifest.d.ts +0 -33
  576. package/src/build/build-manifest.js +0 -49
  577. package/src/build/build-types.js +0 -0
  578. package/src/build/rolldown-adapter-helpers.js +0 -265
  579. package/src/build/rolldown-build-adapter.js +0 -65
  580. package/src/build/rolldown-dev-build-adapter.d.ts +0 -82
  581. package/src/build/rolldown-dev-build-adapter.js +0 -166
  582. package/src/build/rolldown-plugin-bridge.js +0 -199
  583. package/src/build/runtime-build-executor.d.ts +0 -21
  584. package/src/build/runtime-build-executor.js +0 -19
  585. package/src/build/runtime-build-output-normalizer.d.ts +0 -3
  586. package/src/build/runtime-build-output-normalizer.js +0 -111
  587. package/src/build/serialized-build-executor.js +0 -63
  588. package/src/build/server-side-css-shim-plugin.js +0 -35
  589. package/src/hmr/hmr.postcss.test.e2e.js +0 -31
  590. package/src/hmr/hmr.test.e2e.js +0 -43
  591. package/src/route-renderer/orchestration/component-render-context.js +0 -147
  592. package/src/route-renderer/orchestration/declared-ownership-graph.d.ts +0 -18
  593. package/src/route-renderer/orchestration/declared-ownership-graph.js +0 -34
  594. package/src/route-renderer/orchestration/foreign-subtree-execution.service.js +0 -233
  595. package/src/route-renderer/orchestration/ownership-planning.service.d.ts +0 -24
  596. package/src/route-renderer/orchestration/ownership-planning.service.js +0 -63
  597. package/src/route-renderer/orchestration/ownership-validation.service.js +0 -53
  598. package/src/route-renderer/orchestration/processed-asset-dedupe.js +0 -27
  599. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.d.ts +0 -91
  600. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.js +0 -170
  601. package/src/route-renderer/orchestration/render-output.utils.js +0 -171
  602. package/src/route-renderer/orchestration/route-render-orchestrator.js +0 -577
  603. package/src/route-renderer/orchestration/template-serialization.d.ts +0 -38
  604. package/src/route-renderer/orchestration/template-serialization.js +0 -45
  605. /package/src/adapters/shared/{runtime-host.d.ts → runtime/runtime-host.d.ts} +0 -0
  606. /package/src/{hmr/hmr.postcss.test.e2e.d.ts → adapters/shared/runtime/runtime-host.js} +0 -0
  607. /package/src/{hmr/hmr.test.e2e.d.ts → adapters/shared/runtime/static-preview-host.js} +0 -0
  608. /package/src/build/{browser-runtime-manifest.d.ts → browser/browser-runtime-manifest.d.ts} +0 -0
  609. /package/src/build/{browser-runtime-plugin-helpers.d.ts → browser/browser-runtime-plugin-helpers.d.ts} +0 -0
  610. /package/src/build/{build-types.d.ts → contracts/build-types.d.ts} +0 -0
  611. /package/src/build/{server-side-css-shim-plugin.d.ts → rolldown/server-side-css-shim-plugin.d.ts} +0 -0
@@ -1,166 +0,0 @@
1
- import { createRequire } from "node:module";
2
- import path from "node:path";
3
- import { dev } from "rolldown/experimental";
4
- import {
5
- buildResultFromRolldownOutput,
6
- resolveRolldownOptions,
7
- rewriteBrowserRuntimeImportsInOutputs,
8
- toBuildLogs,
9
- transpileProfileToOptions
10
- } from "./rolldown-adapter-helpers.js";
11
- const moduleRequire = createRequire(import.meta.url);
12
- class RolldownDevBuildAdapter {
13
- /**
14
- * `'rolldown-dev'` (not `'rolldown'`) so {@link getBuildAdapterOwnership}
15
- * round-trips correctly and `createBuildAdapter({ ownership })` can
16
- * re-select this class.
17
- */
18
- ownership = "rolldown-dev";
19
- cachedEngine;
20
- engineInstanceCount = 0;
21
- pendingBuilds = [];
22
- appRootRequireCache = /* @__PURE__ */ new Map();
23
- /**
24
- * Stable key over the inputs that affect the engine configuration.
25
- * Plugin order is intentionally not part of the key: two plugin
26
- * sets with the same names are interchangeable for caching.
27
- */
28
- getCacheKey(plugins, contextRoot, target, format) {
29
- const pluginNames = plugins.map((p) => p.name).join(":");
30
- return `${contextRoot}::${pluginNames}::${target ?? "default"}::${format ?? "esm"}`;
31
- }
32
- /**
33
- * Returns the cached engine, creating a new one when the cache
34
- * key changes. On a cache miss the prior engine is closed and
35
- * {@link engineInstanceCount} is incremented.
36
- */
37
- async getOrCreateEngine(options, contextRoot) {
38
- const bundlePlugins = options.plugins ?? [];
39
- const cacheKey = this.getCacheKey(bundlePlugins, contextRoot, options.target, options.format);
40
- if (this.cachedEngine) {
41
- const existingKey = this.getCacheKey(
42
- this.cachedEngine.bundlePlugins,
43
- this.cachedEngine.contextRoot,
44
- options.target,
45
- options.format
46
- );
47
- if (existingKey === cacheKey) {
48
- return this.cachedEngine;
49
- }
50
- await this.cachedEngine.engine.close();
51
- this.cachedEngine = void 0;
52
- }
53
- const outdir = path.resolve(options.outdir ?? "dist/assets");
54
- const { inputOptions, outputOptions } = resolveRolldownOptions(
55
- options,
56
- contextRoot,
57
- outdir,
58
- this.appRootRequireCache
59
- );
60
- const engine = await dev(inputOptions, outputOptions, {
61
- rebuildStrategy: "never",
62
- onOutput: (result) => {
63
- if (result instanceof Error) {
64
- return;
65
- }
66
- const next = this.pendingBuilds.shift();
67
- if (next) {
68
- next.resolve(result);
69
- }
70
- }
71
- });
72
- this.cachedEngine = {
73
- engine,
74
- engineStarted: false,
75
- contextRoot,
76
- bundlePlugins
77
- };
78
- this.engineInstanceCount += 1;
79
- return this.cachedEngine;
80
- }
81
- /**
82
- * Triggers a build on the cached engine and returns the next
83
- * `RolldownOutput` delivered to `onOutput`.
84
- *
85
- * First call after engine creation invokes `engine.run`; subsequent
86
- * calls invoke `engine.triggerFullBuild` and reuse the cached
87
- * module graph, resolver, and transform caches.
88
- *
89
- * If the trigger itself throws, the queued build is removed so
90
- * the next `build()` does not consume a stale slot.
91
- */
92
- async runBuild(cached) {
93
- const outputPromise = new Promise((resolve, reject) => {
94
- this.pendingBuilds.push({ resolve, reject });
95
- });
96
- try {
97
- if (!cached.engineStarted) {
98
- cached.engineStarted = true;
99
- await cached.engine.run();
100
- } else {
101
- cached.engine.triggerFullBuild();
102
- }
103
- } catch (error) {
104
- this.pendingBuilds.shift();
105
- throw error;
106
- }
107
- return outputPromise;
108
- }
109
- /** Throws on error; see {@link build} for the no-throw variant. */
110
- async buildOrThrow(options) {
111
- const contextRoot = options.root ? path.resolve(options.root) : process.cwd();
112
- const outdir = path.resolve(options.outdir ?? "dist/assets");
113
- const plugins = options.plugins ?? [];
114
- const cached = await this.getOrCreateEngine(options, contextRoot);
115
- const output = await this.runBuild(cached);
116
- const baseResult = buildResultFromRolldownOutput(output, outdir, contextRoot);
117
- return rewriteBrowserRuntimeImportsInOutputs(baseResult, contextRoot, plugins);
118
- }
119
- async build(options) {
120
- try {
121
- return await this.buildOrThrow(options);
122
- } catch (error) {
123
- return {
124
- success: false,
125
- logs: toBuildLogs(error),
126
- outputs: []
127
- };
128
- }
129
- }
130
- resolve(importPath, rootDir) {
131
- return moduleRequire.resolve(importPath, { paths: [rootDir] });
132
- }
133
- getTranspileOptions(profile) {
134
- return transpileProfileToOptions(profile);
135
- }
136
- /**
137
- * Closes the cached DevEngine and rejects any in-flight builds
138
- * with `'DevBuildAdapter closed'`.
139
- *
140
- * @remarks
141
- * Not on the {@link BuildAdapter} interface, so it is only
142
- * reachable through the concrete class. The adapter is meant to
143
- * live for the process lifetime; this is for explicit teardown.
144
- */
145
- async close() {
146
- if (this.cachedEngine) {
147
- await this.cachedEngine.engine.close();
148
- this.cachedEngine = void 0;
149
- }
150
- while (this.pendingBuilds.length > 0) {
151
- const pending = this.pendingBuilds.shift();
152
- pending?.reject(new Error("DevBuildAdapter closed"));
153
- }
154
- }
155
- /** Test-only: number of engines created over the adapter's lifetime. */
156
- getEngineInstanceCountForTests() {
157
- return this.engineInstanceCount;
158
- }
159
- }
160
- function createRolldownDevBuildAdapter() {
161
- return new RolldownDevBuildAdapter();
162
- }
163
- export {
164
- RolldownDevBuildAdapter,
165
- createRolldownDevBuildAdapter
166
- };
@@ -1,199 +0,0 @@
1
- import path from "node:path";
2
- import { escapeRegExp } from "./browser-runtime-plugin-helpers.js";
3
- const NAMESPACE_SEPARATOR = ":";
4
- function joinNamespace(namespace, value) {
5
- return namespace ? `${namespace}${NAMESPACE_SEPARATOR}${value}` : value;
6
- }
7
- function splitNamespace(id) {
8
- const separatorIndex = id.indexOf(NAMESPACE_SEPARATOR);
9
- if (separatorIndex <= 0) {
10
- return { namespace: void 0, path: id };
11
- }
12
- return {
13
- namespace: id.slice(0, separatorIndex),
14
- path: id.slice(separatorIndex + 1)
15
- };
16
- }
17
- function inferRolldownModuleTypeFromPath(filePath) {
18
- const extension = path.extname(filePath).toLowerCase();
19
- switch (extension) {
20
- case ".ts":
21
- return "ts";
22
- case ".tsx":
23
- return "tsx";
24
- case ".jsx":
25
- return "jsx";
26
- case ".json":
27
- return "json";
28
- case ".css":
29
- return "css";
30
- default:
31
- return "js";
32
- }
33
- }
34
- function normalizeRolldownModuleType(loader) {
35
- switch (loader) {
36
- case "js":
37
- case "jsx":
38
- case "ts":
39
- case "tsx":
40
- case "json":
41
- case "css":
42
- case "text":
43
- case "base64":
44
- case "dataurl":
45
- case "binary":
46
- case "empty":
47
- return loader;
48
- case "global-css":
49
- case "local-css":
50
- return "css";
51
- case "file":
52
- case "copy":
53
- return "asset";
54
- default:
55
- return void 0;
56
- }
57
- }
58
- function convertLoadResultToModuleSource(result) {
59
- if (result.loader === "object" && result.exports && typeof result.exports === "object") {
60
- return Object.entries(result.exports).map(
61
- ([key, value]) => key === "default" ? `export default ${JSON.stringify(value)};` : `export const ${key} = ${JSON.stringify(value)};`
62
- ).join("\n");
63
- }
64
- return void 0;
65
- }
66
- function buildIdFilter(filter, namespace) {
67
- if (!namespace) {
68
- return filter;
69
- }
70
- return new RegExp(`^${escapeRegExp(namespace)}${NAMESPACE_SEPARATOR}${filter.source.slice(1)}`);
71
- }
72
- function resolvePluginPath(value, importer, contextRoot) {
73
- if (path.isAbsolute(value)) {
74
- return value;
75
- }
76
- if (value.startsWith(".") || value.startsWith("..")) {
77
- const baseDir = importer ? path.dirname(importer) : contextRoot;
78
- return path.resolve(baseDir, value);
79
- }
80
- return value;
81
- }
82
- function convertPluginOnLoadResult(args, result) {
83
- if (!result || typeof result !== "object") {
84
- return void 0;
85
- }
86
- const candidate = result;
87
- const { path: sourcePath } = splitNamespace(args.id);
88
- const sourceFromExports = convertLoadResultToModuleSource(candidate);
89
- if (sourceFromExports) {
90
- const description = {
91
- code: sourceFromExports,
92
- moduleType: "js"
93
- };
94
- return description;
95
- }
96
- if (typeof candidate.contents === "string" || candidate.contents instanceof Uint8Array) {
97
- const code = typeof candidate.contents === "string" ? candidate.contents : new TextDecoder().decode(candidate.contents);
98
- const description = {
99
- code,
100
- moduleType: normalizeRolldownModuleType(candidate.loader) ?? inferRolldownModuleTypeFromPath(sourcePath)
101
- };
102
- return description;
103
- }
104
- return void 0;
105
- }
106
- function convertPluginOnResolveResult(result, importer, contextRoot) {
107
- if (!result || typeof result !== "object") {
108
- return void 0;
109
- }
110
- const candidate = result;
111
- if (typeof candidate.path !== "string" && typeof candidate.namespace !== "string") {
112
- if (typeof candidate.external !== "boolean") {
113
- return void 0;
114
- }
115
- }
116
- const partial = { id: "" };
117
- if (typeof candidate.path === "string") {
118
- partial.id = joinNamespace(candidate.namespace, resolvePluginPath(candidate.path, importer, contextRoot));
119
- } else if (typeof candidate.namespace === "string") {
120
- partial.id = joinNamespace(candidate.namespace, "");
121
- }
122
- if (typeof candidate.external === "boolean") {
123
- partial.external = candidate.external;
124
- }
125
- return partial;
126
- }
127
- function createRolldownPluginBridge(plugins, contextRoot) {
128
- if (plugins.length === 0) {
129
- return [];
130
- }
131
- const moduleCounter = { value: 0 };
132
- const resolveRegistrations = [];
133
- const loadRegistrations = [];
134
- const registerResolve = (filter, callback) => {
135
- resolveRegistrations.push({ filter, callback });
136
- };
137
- const registerLoad = (filter, callback) => {
138
- loadRegistrations.push({ filter, callback });
139
- };
140
- const resolveIdHandler = async (source, importer, _extraOptions) => {
141
- for (const { filter, callback } of resolveRegistrations) {
142
- if (!filter.test(source)) {
143
- continue;
144
- }
145
- const { namespace, path: sourcePath } = splitNamespace(source);
146
- const result = await callback({ path: sourcePath, importer, namespace });
147
- const converted = convertPluginOnResolveResult(result, importer, contextRoot);
148
- if (converted !== void 0) {
149
- return converted;
150
- }
151
- }
152
- return void 0;
153
- };
154
- const loadHandler = async (id) => {
155
- for (const { filter, callback } of loadRegistrations) {
156
- if (!filter.test(id)) {
157
- continue;
158
- }
159
- const { namespace, path: sourcePath } = splitNamespace(id);
160
- const result = await callback({ path: sourcePath, namespace });
161
- const converted = convertPluginOnLoadResult({ id }, result);
162
- if (converted !== void 0) {
163
- return converted;
164
- }
165
- }
166
- return void 0;
167
- };
168
- const plugin = {
169
- name: "ecopages-plugin-bridge",
170
- buildStart: async () => {
171
- for (const ecoPlugin of plugins) {
172
- const bridge = {
173
- onResolve: (options, callback) => {
174
- registerResolve(buildIdFilter(options.filter, options.namespace), callback);
175
- },
176
- onLoad: (options, callback) => {
177
- registerLoad(buildIdFilter(options.filter, options.namespace), callback);
178
- },
179
- module: (specifier, callback) => {
180
- const namespace = `ecopages-module-${moduleCounter.value}`;
181
- moduleCounter.value += 1;
182
- const filter = new RegExp(`^${escapeRegExp(specifier)}$`);
183
- registerResolve(filter, async () => ({
184
- path: joinNamespace(namespace, specifier)
185
- }));
186
- registerLoad(buildIdFilter(/.*/, namespace), async () => callback());
187
- }
188
- };
189
- await ecoPlugin.setup(bridge);
190
- }
191
- },
192
- resolveId: resolveIdHandler,
193
- load: loadHandler
194
- };
195
- return [plugin];
196
- }
197
- export {
198
- createRolldownPluginBridge
199
- };
@@ -1,21 +0,0 @@
1
- import type { EcoPagesAppConfig } from '../types/internal-types.js';
2
- import { type BuildExecutor } from './build-adapter.js';
3
- /**
4
- * Installs the app-owned runtime build executor for one app instance.
5
- *
6
- * @remarks
7
- * Wraps the app-owned adapter in a {@link SerializedBuildExecutor} so
8
- * every dev-watch caller issues builds against a single FIFO queue.
9
- * Plugin injection is applied here via {@link withBuildExecutorPlugins}
10
- * so app-owned plugins are merged into every rebuild without callers
11
- * having to know about the manifest.
12
- *
13
- * Idempotent across calls: re-invoking replaces the existing executor
14
- * on `appConfig.runtime` with a fresh wrapper.
15
- *
16
- * @param appConfig - The app config whose runtime state is updated.
17
- * The function reads the existing executor (falling back to the
18
- * app-owned adapter) and writes the wrapped executor back.
19
- * @returns The installed {@link BuildExecutor}.
20
- */
21
- export declare function installAppRuntimeBuildExecutor(appConfig: EcoPagesAppConfig): BuildExecutor;
@@ -1,19 +0,0 @@
1
- import {
2
- getAppBuildAdapter,
3
- getAppBuildExecutor,
4
- getAppServerBuildPlugins,
5
- setAppBuildExecutor,
6
- withBuildExecutorPlugins
7
- } from "./build-adapter.js";
8
- import { SerializedBuildExecutor } from "./serialized-build-executor.js";
9
- function installAppRuntimeBuildExecutor(appConfig) {
10
- const baseExecutor = getAppBuildExecutor(appConfig) ?? getAppBuildAdapter(appConfig);
11
- const buildExecutor = new SerializedBuildExecutor(
12
- withBuildExecutorPlugins(baseExecutor, () => getAppServerBuildPlugins(appConfig))
13
- );
14
- setAppBuildExecutor(appConfig, buildExecutor);
15
- return buildExecutor;
16
- }
17
- export {
18
- installAppRuntimeBuildExecutor
19
- };
@@ -1,3 +0,0 @@
1
- export declare function isDeclaredAppPackageImport(specifier: string, rootDir: string): boolean;
2
- export declare function normalizeNodeRuntimeBuildOutputFile(filePath: string, rootDir: string): void;
3
- export declare function normalizeNodeRuntimeBuildOutputs(outputPaths: string[], rootDir: string): void;
@@ -1,111 +0,0 @@
1
- import { createRequire } from "node:module";
2
- import { readFileSync } from "node:fs";
3
- import path from "node:path";
4
- import { pathToFileURL } from "node:url";
5
- const corePackageRequire = createRequire(new URL("../../package.json", import.meta.url));
6
- const appDeclaredPackageCache = /* @__PURE__ */ new Map();
7
- function tryResolveRuntimeImport(specifier, resolver) {
8
- try {
9
- return resolver.resolve(specifier);
10
- } catch {
11
- return void 0;
12
- }
13
- }
14
- function isBareRuntimeImport(specifier) {
15
- return !specifier.startsWith(".") && !path.isAbsolute(specifier) && !specifier.startsWith("/") && !specifier.startsWith("node:") && !specifier.startsWith("@/") && !specifier.startsWith("~/") && !specifier.startsWith("#") && !specifier.includes(":");
16
- }
17
- function getPackageNameFromSpecifier(specifier) {
18
- if (specifier.startsWith("@")) {
19
- return specifier.split("/").slice(0, 2).join("/");
20
- }
21
- return specifier.split("/")[0] ?? specifier;
22
- }
23
- function getDeclaredAppPackages(rootDir) {
24
- const cacheKey = path.resolve(rootDir);
25
- const cached = appDeclaredPackageCache.get(cacheKey);
26
- if (cached) {
27
- return cached;
28
- }
29
- const packageJsonPath = path.resolve(rootDir, "package.json");
30
- const declaredPackages = /* @__PURE__ */ new Set();
31
- try {
32
- const packageJson = JSON.parse(readFileSync(packageJsonPath, "utf-8"));
33
- for (const field of ["dependencies", "devDependencies", "peerDependencies", "optionalDependencies"]) {
34
- const entries = packageJson[field];
35
- if (!entries || typeof entries !== "object") {
36
- continue;
37
- }
38
- for (const packageName of Object.keys(entries)) {
39
- declaredPackages.add(packageName);
40
- }
41
- }
42
- } catch {
43
- appDeclaredPackageCache.set(cacheKey, declaredPackages);
44
- return declaredPackages;
45
- }
46
- appDeclaredPackageCache.set(cacheKey, declaredPackages);
47
- return declaredPackages;
48
- }
49
- function isDeclaredAppPackageImport(specifier, rootDir) {
50
- return getDeclaredAppPackages(rootDir).has(getPackageNameFromSpecifier(specifier));
51
- }
52
- function rewriteRuntimeImportSpecifier(specifier, quote, rootDir) {
53
- if (!isBareRuntimeImport(specifier)) {
54
- return void 0;
55
- }
56
- if (isDeclaredAppPackageImport(specifier, rootDir)) {
57
- return void 0;
58
- }
59
- const resolvedPath = tryResolveRuntimeImport(specifier, corePackageRequire);
60
- if (!resolvedPath || !/\.(?:[cm]?[jt]s|tsx|jsx)$/u.test(resolvedPath)) {
61
- return void 0;
62
- }
63
- return `${quote}${pathToFileURL(resolvedPath).href}${quote}`;
64
- }
65
- function rewriteRuntimeBuildOutputImports(code, rootDir) {
66
- const rewriteSpecifier = (prefix, quote, specifier) => {
67
- const rewrittenSpecifier = rewriteRuntimeImportSpecifier(specifier, quote, rootDir);
68
- return `${prefix}${rewrittenSpecifier ?? `${quote}${specifier}${quote}`}`;
69
- };
70
- const withResolvedPackages = code.replace(
71
- /(\bfrom\s+)(['"])([^'"\\]+)\2/g,
72
- (_match, prefix, quote, specifier) => rewriteSpecifier(prefix, quote, specifier)
73
- ).replace(
74
- /(\bimport\s+)(['"])([^'"\\]+)\2/g,
75
- (_match, prefix, quote, specifier) => rewriteSpecifier(prefix, quote, specifier)
76
- ).replace(
77
- /(\bimport\s*\(\s*)(['"])([^'"\\]+)\2/g,
78
- (_match, prefix, quote, specifier) => rewriteSpecifier(prefix, quote, specifier)
79
- );
80
- return withResolvedPackages.replace(
81
- /(['"])(@oxc-project\/runtime\/(?:helpers(?:\/esm)?\/[^'"\\]+))\1/g,
82
- (match, quote, specifier) => {
83
- const resolvedPath = tryResolveRuntimeImport(specifier, corePackageRequire);
84
- return resolvedPath ? `${quote}${pathToFileURL(resolvedPath).href}${quote}` : match;
85
- }
86
- );
87
- }
88
- function normalizeNodeRuntimeBuildOutputFile(filePath, rootDir) {
89
- if (!/\.(?:[cm]?js)$/u.test(filePath)) {
90
- return;
91
- }
92
- const fileSystem = corePackageRequire("node:fs");
93
- if (!fileSystem.existsSync(filePath)) {
94
- return;
95
- }
96
- const code = fileSystem.readFileSync(filePath, "utf-8");
97
- const rewritten = rewriteRuntimeBuildOutputImports(code, rootDir);
98
- if (rewritten !== code) {
99
- fileSystem.writeFileSync(filePath, rewritten);
100
- }
101
- }
102
- function normalizeNodeRuntimeBuildOutputs(outputPaths, rootDir) {
103
- for (const outputPath of outputPaths) {
104
- normalizeNodeRuntimeBuildOutputFile(outputPath, rootDir);
105
- }
106
- }
107
- export {
108
- isDeclaredAppPackageImport,
109
- normalizeNodeRuntimeBuildOutputFile,
110
- normalizeNodeRuntimeBuildOutputs
111
- };
@@ -1,63 +0,0 @@
1
- class SerializedBuildExecutor {
2
- inner;
3
- tail = Promise.resolve();
4
- constructor(inner) {
5
- this.inner = inner;
6
- }
7
- /**
8
- * Run a build through the serialized queue. The returned promise
9
- * resolves with the inner executor's `BuildResult`. A rejected
10
- * inner build does not block the queue — the next caller can
11
- * proceed.
12
- */
13
- build(options) {
14
- return this.run(() => this.inner.build(options));
15
- }
16
- /**
17
- * Run an arbitrary async operation through the serialized queue.
18
- *
19
- * Use this when the work is not a `build()` call against a wrapped
20
- * executor (e.g. when composing with a coordinator that needs to
21
- * inject recovery around the inner call). The returned promise
22
- * resolves with the operation's result. A rejected operation does
23
- * not block the queue.
24
- */
25
- run(operation) {
26
- const next = this.tail.catch(() => void 0).then(() => operation());
27
- this.tail = next.catch(() => void 0);
28
- return next;
29
- }
30
- /**
31
- * Returns the wrapped executor. Tests use this to assert the
32
- * delegation chain.
33
- */
34
- unwrap() {
35
- return this.inner;
36
- }
37
- /**
38
- * Reset the queue to an empty state. Tests use this to recover
39
- * from a poisoned tail.
40
- */
41
- resetForTests() {
42
- this.tail = Promise.resolve();
43
- }
44
- /**
45
- * Overrides the internal queue tail for fault-recovery tests. The
46
- * supplied promise is awaited before the next enqueued operation
47
- * starts.
48
- */
49
- setBuildQueueForTests(queue) {
50
- this.tail = queue;
51
- }
52
- /**
53
- * Returns the current internal queue tail for fault-recovery
54
- * tests. Tests await this to assert that recovery has cleared a
55
- * wedged queue.
56
- */
57
- getBuildQueueForTests() {
58
- return this.tail;
59
- }
60
- }
61
- export {
62
- SerializedBuildExecutor
63
- };
@@ -1,35 +0,0 @@
1
- import { existsSync, readFileSync } from "node:fs";
2
- import path from "node:path";
3
- const CSS_PATH = /\.css$/u;
4
- const CSS_QUERY = "?ecopages-css-shim";
5
- function stripShimQuery(id) {
6
- const queryIndex = id.indexOf("?");
7
- return queryIndex === -1 ? id : id.slice(0, queryIndex);
8
- }
9
- function createServerSideCssShimPlugin() {
10
- return {
11
- name: "ecopages:server-side-css-shim",
12
- async resolveId(source, importer) {
13
- if (!CSS_PATH.test(source)) {
14
- return null;
15
- }
16
- const resolved = importer ? path.resolve(path.dirname(importer), source) : path.resolve(source);
17
- return existsSync(resolved) ? `${resolved}${CSS_QUERY}` : null;
18
- },
19
- async load(id) {
20
- if (!id.endsWith(CSS_QUERY)) {
21
- return null;
22
- }
23
- const realPath = stripShimQuery(id);
24
- readFileSync(realPath, "utf-8");
25
- return {
26
- code: 'export default "";',
27
- moduleType: "js",
28
- moduleSideEffects: true
29
- };
30
- }
31
- };
32
- }
33
- export {
34
- createServerSideCssShimPlugin
35
- };
@@ -1,31 +0,0 @@
1
- import { test, expect } from "@playwright/test";
2
- import { readFileSync } from "node:fs";
3
- import { writeFile } from "node:fs/promises";
4
- import { resolve } from "node:path";
5
- const FIXTURE_DIR = resolve(process.cwd(), "packages/core/__fixtures__/app");
6
- const TEST_CSS_FILE = resolve(FIXTURE_DIR, "src/pages/postcss-hmr.css");
7
- test.describe("HMR E2E PostCSS", () => {
8
- test("should hot-update processor-owned CSS without a full page reload", async ({ page }) => {
9
- const originalCss = readFileSync(TEST_CSS_FILE, "utf-8");
10
- const title = page.locator(".postcss-title").first();
11
- try {
12
- await page.goto("/postcss-hmr", { waitUntil: "networkidle" });
13
- await expect(title).toBeVisible();
14
- const initialColor = await title.evaluate((el) => getComputedStyle(el).color);
15
- expect(initialColor).toBeTruthy();
16
- await page.evaluate(() => {
17
- window.__postcssReloadProbe = "before-change";
18
- });
19
- const modifiedCss = originalCss.replace(".postcss-title {", ".postcss-title {\n color: rgb(255, 0, 0);");
20
- await writeFile(TEST_CSS_FILE, modifiedCss, { flush: true });
21
- await expect.poll(async () => title.evaluate((el) => getComputedStyle(el).color), { timeout: 1e4 }).toBe("rgb(255, 0, 0)");
22
- await expect(
23
- page.evaluate(
24
- () => window.__postcssReloadProbe ?? null
25
- )
26
- ).resolves.toBe("before-change");
27
- } finally {
28
- await writeFile(TEST_CSS_FILE, originalCss, { flush: true });
29
- }
30
- });
31
- });