@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,287 +1,270 @@
1
- import {
2
- DefaultHtmlRewriterProvider
3
- } from "./html-rewriter-provider.service.js";
4
- import {
5
- buildProcessedAssetDedupeKey,
6
- dedupeProcessedAssets
7
- } from "../../route-renderer/orchestration/processed-asset-dedupe.js";
8
- class HtmlTransformerService {
9
- processedDependencies = [];
10
- pagePackage;
11
- htmlRewriterProvider;
12
- constructor(options = {}) {
13
- this.htmlRewriterProvider = options.htmlRewriterProvider ?? new DefaultHtmlRewriterProvider();
14
- if (options.htmlRewriterMode) {
15
- this.htmlRewriterProvider.setMode(options.htmlRewriterMode);
1
+ import { DefaultHtmlRewriterProvider, } from './html-rewriter-provider.service.js';
2
+ import { buildProcessedAssetDedupeKey, dedupeProcessedAssets, } from '../../route-renderer/orchestration/page-browser-graph/processed-asset-dedupe.js';
3
+ export class HtmlTransformerService {
4
+ processedDependencies = [];
5
+ pagePackage;
6
+ htmlRewriterProvider;
7
+ constructor(options = {}) {
8
+ this.htmlRewriterProvider = options.htmlRewriterProvider ?? new DefaultHtmlRewriterProvider();
9
+ if (options.htmlRewriterMode) {
10
+ this.htmlRewriterProvider.setMode(options.htmlRewriterMode);
11
+ }
12
+ }
13
+ /**
14
+ * Overrides the HTML rewriter runtime selection.
15
+ *
16
+ * This is intended for internal/runtime tests that need deterministic
17
+ * selection between native, worker-tools, and string fallback behavior.
18
+ *
19
+ * @param mode Requested runtime selection strategy.
20
+ */
21
+ setHtmlRewriterMode(mode) {
22
+ this.htmlRewriterProvider.setMode(mode);
16
23
  }
17
- }
18
- /**
19
- * Overrides the HTML rewriter runtime selection.
20
- *
21
- * This is intended for internal/runtime tests that need deterministic
22
- * selection between native, worker-tools, and string fallback behavior.
23
- *
24
- * @param mode Requested runtime selection strategy.
25
- */
26
- setHtmlRewriterMode(mode) {
27
- this.htmlRewriterProvider.setMode(mode);
28
- }
29
- formatAttributes(attrs) {
30
- if (!attrs) return "";
31
- return ` ${Object.entries(attrs).map(([key, value]) => `${key}="${value}"`).join(" ")}`;
32
- }
33
- generateScriptTag(dep) {
34
- return dep.inline ? `<script${this.formatAttributes(dep.attributes)}>${dep.content}<\/script>` : `<script src="${dep.srcUrl}"${this.formatAttributes(dep.attributes)}><\/script>`;
35
- }
36
- generateStylesheetTag(dep) {
37
- return dep.inline ? `<style${this.formatAttributes(dep.attributes)}>${dep.content}</style>` : `<link rel="stylesheet" href="${dep.srcUrl}"${this.formatAttributes(dep.attributes)}>`;
38
- }
39
- appendDependencies(element, dependencies) {
40
- for (const dep of dependencies) {
41
- const tag = dep.kind === "script" ? this.generateScriptTag(dep) : this.generateStylesheetTag(dep);
42
- element.append(tag, { html: true });
24
+ formatAttributes(attrs) {
25
+ if (!attrs)
26
+ return '';
27
+ return ` ${Object.entries(attrs)
28
+ .map(([key, value]) => `${key}="${value}"`)
29
+ .join(' ')}`;
43
30
  }
44
- }
45
- buildDependencyTags(dependencies) {
46
- return dependencies.map(
47
- (dep) => dep.kind === "script" ? this.generateScriptTag(dep) : this.generateStylesheetTag(dep)
48
- ).join("");
49
- }
50
- applyContributions(element, contributions, placement) {
51
- for (const contribution of contributions) {
52
- element[placement](contribution.html, { html: true });
31
+ generateScriptTag(dep) {
32
+ return dep.inline
33
+ ? `<script${this.formatAttributes(dep.attributes)}>${dep.content}</script>`
34
+ : `<script src="${dep.srcUrl}"${this.formatAttributes(dep.attributes)}></script>`;
53
35
  }
54
- }
55
- /**
56
- * Injects generated markup immediately before the closing HTML tag when it is
57
- * present, or appends/prepends a fallback insertion otherwise.
58
- */
59
- injectBeforeClosingTag(html, tag, content) {
60
- if (!content) {
61
- return html;
36
+ generateStylesheetTag(dep) {
37
+ return dep.inline
38
+ ? `<style${this.formatAttributes(dep.attributes)}>${dep.content}</style>`
39
+ : `<link rel="stylesheet" href="${dep.srcUrl}"${this.formatAttributes(dep.attributes)}>`;
62
40
  }
63
- const closingTag = `</${tag}>`;
64
- const lowerHtml = html.toLowerCase();
65
- const closingTagIndex = lowerHtml.lastIndexOf(closingTag);
66
- if (closingTagIndex !== -1) {
67
- return `${html.slice(0, closingTagIndex)}${content}${html.slice(closingTagIndex)}`;
41
+ appendDependencies(element, dependencies) {
42
+ for (const dep of dependencies) {
43
+ const tag = dep.kind === 'script' ? this.generateScriptTag(dep) : this.generateStylesheetTag(dep);
44
+ element.append(tag, { html: true });
45
+ }
68
46
  }
69
- if (tag === "head") {
70
- return `${content}${html}`;
47
+ buildDependencyTags(dependencies) {
48
+ return dependencies
49
+ .map((dep) => dep.kind === 'script' ? this.generateScriptTag(dep) : this.generateStylesheetTag(dep))
50
+ .join('');
51
+ }
52
+ applyContributions(element, contributions, placement) {
53
+ for (const contribution of contributions) {
54
+ element[placement](contribution.html, { html: true });
55
+ }
71
56
  }
72
- return `${html}${content}`;
73
- }
74
- injectAfterOpeningTag(html, tag, content) {
75
- if (!content) {
76
- return html;
57
+ /**
58
+ * Injects generated markup immediately before the closing HTML tag when it is
59
+ * present, or appends/prepends a fallback insertion otherwise.
60
+ */
61
+ injectBeforeClosingTag(html, tag, content) {
62
+ if (!content) {
63
+ return html;
64
+ }
65
+ const closingTag = `</${tag}>`;
66
+ const lowerHtml = html.toLowerCase();
67
+ const closingTagIndex = lowerHtml.lastIndexOf(closingTag);
68
+ if (closingTagIndex !== -1) {
69
+ return `${html.slice(0, closingTagIndex)}${content}${html.slice(closingTagIndex)}`;
70
+ }
71
+ if (tag === 'head') {
72
+ return `${content}${html}`;
73
+ }
74
+ return `${html}${content}`;
77
75
  }
78
- const openingTag = new RegExp(`<${tag}\\b[^>]*>`, "i");
79
- const match = html.match(openingTag);
80
- if (!match || match.index === void 0) {
81
- return tag === "head" ? `${content}${html}` : html.replace(/<body\b[^>]*>/i, (value) => `${value}${content}`);
76
+ injectAfterOpeningTag(html, tag, content) {
77
+ if (!content) {
78
+ return html;
79
+ }
80
+ const openingTag = new RegExp(`<${tag}\\b[^>]*>`, 'i');
81
+ const match = html.match(openingTag);
82
+ if (!match || match.index === undefined) {
83
+ return tag === 'head'
84
+ ? `${content}${html}`
85
+ : html.replace(/<body\b[^>]*>/i, (value) => `${value}${content}`);
86
+ }
87
+ const insertAt = match.index + match[0].length;
88
+ return `${html.slice(0, insertAt)}${content}${html.slice(insertAt)}`;
82
89
  }
83
- const insertAt = match.index + match[0].length;
84
- return `${html.slice(0, insertAt)}${content}${html.slice(insertAt)}`;
85
- }
86
- groupContributionsByPlacement(contributions) {
87
- return {
88
- headPrepend: contributions.filter((item) => item.placement === "head-prepend"),
89
- headAppend: contributions.filter((item) => item.placement === "head-append"),
90
- bodyPrepend: contributions.filter((item) => item.placement === "body-prepend"),
91
- bodyAppend: contributions.filter((item) => item.placement === "body-append")
92
- };
93
- }
94
- /**
95
- * Replaces the current processed dependency set used during HTML finalization.
96
- */
97
- setProcessedDependencies(processedDependencies) {
98
- this.pagePackage = void 0;
99
- this.processedDependencies = processedDependencies;
100
- }
101
- /**
102
- * Replaces the current structured page package used during HTML finalization.
103
- */
104
- setPagePackage(pagePackage) {
105
- this.pagePackage = pagePackage;
106
- this.processedDependencies = this.resolvePagePackageHtmlDependencies(pagePackage);
107
- }
108
- /**
109
- * Returns the processed dependencies queued for the next transform pass.
110
- */
111
- getProcessedDependencies() {
112
- return this.processedDependencies;
113
- }
114
- /**
115
- * Returns the structured page package queued for the next transform pass.
116
- */
117
- getPagePackage() {
118
- return this.pagePackage;
119
- }
120
- /**
121
- * Applies attributes to the opening `<html>` tag when present.
122
- */
123
- applyAttributesToHtmlElement(html, attributes) {
124
- const htmlTagMatch = html.match(/<html\b[^>]*>/i);
125
- if (!htmlTagMatch || htmlTagMatch.index === void 0) {
126
- return html;
90
+ groupContributionsByPlacement(contributions) {
91
+ return {
92
+ headPrepend: contributions.filter((item) => item.placement === 'head-prepend'),
93
+ headAppend: contributions.filter((item) => item.placement === 'head-append'),
94
+ bodyPrepend: contributions.filter((item) => item.placement === 'body-prepend'),
95
+ bodyAppend: contributions.filter((item) => item.placement === 'body-append'),
96
+ };
127
97
  }
128
- const attrs = this.buildAttributeString(attributes);
129
- if (attrs.length === 0) {
130
- return html;
98
+ /**
99
+ * Replaces the current processed dependency set used during HTML finalization.
100
+ */
101
+ setProcessedDependencies(processedDependencies) {
102
+ this.pagePackage = undefined;
103
+ this.processedDependencies = processedDependencies;
131
104
  }
132
- const injectionOffset = htmlTagMatch.index + htmlTagMatch[0].length - 1;
133
- return `${html.slice(0, injectionOffset)}${attrs}${html.slice(injectionOffset)}`;
134
- }
135
- /**
136
- * Applies attributes to the first element nested directly under `<body>`.
137
- */
138
- applyAttributesToFirstBodyElement(html, attributes) {
139
- const bodyMatch = html.match(/<body\b[^>]*>/i);
140
- if (!bodyMatch || bodyMatch.index === void 0) {
141
- return html;
105
+ /**
106
+ * Replaces the current structured page package used during HTML finalization.
107
+ */
108
+ setPagePackage(pagePackage) {
109
+ this.pagePackage = pagePackage;
110
+ this.processedDependencies = this.resolvePagePackageHtmlDependencies(pagePackage);
142
111
  }
143
- const bodyOpenEnd = bodyMatch.index + bodyMatch[0].length;
144
- const afterBody = html.slice(bodyOpenEnd);
145
- const firstTagMatch = afterBody.match(/^(\s*<)([a-zA-Z][a-zA-Z0-9:-]*)(\b[^>]*>)/);
146
- if (!firstTagMatch || firstTagMatch.index === void 0) {
147
- return html;
112
+ /**
113
+ * Returns the processed dependencies queued for the next transform pass.
114
+ */
115
+ getProcessedDependencies() {
116
+ return this.processedDependencies;
148
117
  }
149
- const attrs = this.buildAttributeString(attributes);
150
- if (attrs.length === 0) {
151
- return html;
118
+ /**
119
+ * Returns the structured page package queued for the next transform pass.
120
+ */
121
+ getPagePackage() {
122
+ return this.pagePackage;
152
123
  }
153
- const injectionOffset = bodyOpenEnd + firstTagMatch[1].length + firstTagMatch[2].length;
154
- return `${html.slice(0, injectionOffset)}${attrs}${html.slice(injectionOffset)}`;
155
- }
156
- /**
157
- * Applies attributes to the first element in a fragment or full-document HTML
158
- * string.
159
- */
160
- applyAttributesToFirstElement(html, attributes) {
161
- const firstTagMatch = html.match(/^(\s*<)([a-zA-Z][a-zA-Z0-9:-]*)(\b[^>]*>)/);
162
- if (!firstTagMatch || firstTagMatch.index === void 0) {
163
- return html;
124
+ /**
125
+ * Applies attributes to the opening `<html>` tag when present.
126
+ */
127
+ applyAttributesToHtmlElement(html, attributes) {
128
+ const htmlTagMatch = html.match(/<html\b[^>]*>/i);
129
+ if (!htmlTagMatch || htmlTagMatch.index === undefined) {
130
+ return html;
131
+ }
132
+ const attrs = this.buildAttributeString(attributes);
133
+ if (attrs.length === 0) {
134
+ return html;
135
+ }
136
+ const injectionOffset = htmlTagMatch.index + htmlTagMatch[0].length - 1;
137
+ return `${html.slice(0, injectionOffset)}${attrs}${html.slice(injectionOffset)}`;
164
138
  }
165
- const attrs = this.buildAttributeString(attributes);
166
- if (attrs.length === 0) {
167
- return html;
139
+ /**
140
+ * Applies attributes to the first element nested directly under `<body>`.
141
+ */
142
+ applyAttributesToFirstBodyElement(html, attributes) {
143
+ const bodyMatch = html.match(/<body\b[^>]*>/i);
144
+ if (!bodyMatch || bodyMatch.index === undefined) {
145
+ return html;
146
+ }
147
+ const bodyOpenEnd = bodyMatch.index + bodyMatch[0].length;
148
+ const afterBody = html.slice(bodyOpenEnd);
149
+ const firstTagMatch = afterBody.match(/^(\s*<)([a-zA-Z][a-zA-Z0-9:-]*)(\b[^>]*>)/);
150
+ if (!firstTagMatch || firstTagMatch.index === undefined) {
151
+ return html;
152
+ }
153
+ const attrs = this.buildAttributeString(attributes);
154
+ if (attrs.length === 0) {
155
+ return html;
156
+ }
157
+ const injectionOffset = bodyOpenEnd + firstTagMatch[1].length + firstTagMatch[2].length;
158
+ return `${html.slice(0, injectionOffset)}${attrs}${html.slice(injectionOffset)}`;
168
159
  }
169
- const injectionOffset = firstTagMatch[1].length + firstTagMatch[2].length;
170
- return `${html.slice(0, injectionOffset)}${attrs}${html.slice(injectionOffset)}`;
171
- }
172
- /**
173
- * Removes duplicate processed assets while preserving first-seen order.
174
- *
175
- * @remarks
176
- * Dedupe keys include structural asset fields and HTML attributes so repeated
177
- * orchestration passes can merge assets safely without collapsing distinct tag
178
- * variants.
179
- */
180
- dedupeProcessedAssets(assets) {
181
- return dedupeProcessedAssets(assets);
182
- }
183
- /**
184
- * Injects the currently processed dependencies into an HTML response.
185
- *
186
- * @remarks
187
- * Native or worker-tools HTML rewriter support is preferred when available. A
188
- * string-based fallback remains in place for runtimes that cannot provide one
189
- * of those rewriter implementations.
190
- */
191
- async transform(res, contributions = []) {
192
- const { head, body } = this.groupDependenciesByPosition();
193
- const { headPrepend, headAppend, bodyPrepend, bodyAppend } = this.groupContributionsByPlacement(contributions);
194
- const htmlRewriter = await this.htmlRewriterProvider.createHtmlRewriter();
195
- if (htmlRewriter) {
196
- htmlRewriter.on("head", {
197
- element: (element) => {
198
- this.applyContributions(element, headPrepend, "prepend");
199
- this.appendDependencies(element, head);
200
- this.applyContributions(element, headAppend, "append");
160
+ /**
161
+ * Applies attributes to the first element in a fragment or full-document HTML
162
+ * string.
163
+ */
164
+ applyAttributesToFirstElement(html, attributes) {
165
+ const firstTagMatch = html.match(/^(\s*<)([a-zA-Z][a-zA-Z0-9:-]*)(\b[^>]*>)/);
166
+ if (!firstTagMatch || firstTagMatch.index === undefined) {
167
+ return html;
201
168
  }
202
- }).on("body", {
203
- element: (element) => {
204
- this.applyContributions(element, bodyPrepend, "prepend");
205
- this.appendDependencies(element, body);
206
- this.applyContributions(element, bodyAppend, "append");
169
+ const attrs = this.buildAttributeString(attributes);
170
+ if (attrs.length === 0) {
171
+ return html;
207
172
  }
208
- });
209
- return htmlRewriter.transform(res);
173
+ const injectionOffset = firstTagMatch[1].length + firstTagMatch[2].length;
174
+ return `${html.slice(0, injectionOffset)}${attrs}${html.slice(injectionOffset)}`;
210
175
  }
211
- const html = await res.text();
212
- const headers = new Headers(res.headers);
213
- const withHeadPrependedContent = this.injectAfterOpeningTag(
214
- html,
215
- "head",
216
- headPrepend.map((item) => item.html).join("")
217
- );
218
- const withHeadDependencies = this.injectBeforeClosingTag(
219
- withHeadPrependedContent,
220
- "head",
221
- `${this.buildDependencyTags(head)}${headAppend.map((item) => item.html).join("")}`
222
- );
223
- const withBodyPrependedContent = this.injectAfterOpeningTag(
224
- withHeadDependencies,
225
- "body",
226
- bodyPrepend.map((item) => item.html).join("")
227
- );
228
- const transformedHtml = this.injectBeforeClosingTag(
229
- withBodyPrependedContent,
230
- "body",
231
- `${this.buildDependencyTags(body)}${bodyAppend.map((item) => item.html).join("")}`
232
- );
233
- return new Response(transformedHtml, {
234
- headers,
235
- status: res.status,
236
- statusText: res.statusText
237
- });
238
- }
239
- /**
240
- * Splits processed assets into head and body injection groups.
241
- */
242
- groupDependenciesByPosition() {
243
- const dependencies = this.pagePackage ? this.resolvePagePackageHtmlDependencies(this.pagePackage) : this.processedDependencies;
244
- return dependencies.reduce(
245
- (acc, dep) => {
246
- if (dep.kind === "script") {
247
- if (dep.excludeFromHtml) return acc;
248
- const position = dep.position || "body";
249
- acc[position].push(dep);
250
- } else if (dep.kind === "stylesheet") {
251
- acc.head.push(dep);
176
+ /**
177
+ * Removes duplicate processed assets while preserving first-seen order.
178
+ *
179
+ * @remarks
180
+ * Dedupe keys include structural asset fields and HTML attributes so repeated
181
+ * orchestration passes can merge assets safely without collapsing distinct tag
182
+ * variants.
183
+ */
184
+ dedupeProcessedAssets(assets) {
185
+ return dedupeProcessedAssets(assets);
186
+ }
187
+ /**
188
+ * Injects the currently processed dependencies into an HTML response.
189
+ *
190
+ * @remarks
191
+ * Native or worker-tools HTML rewriter support is preferred when available. A
192
+ * string-based fallback remains in place for runtimes that cannot provide one
193
+ * of those rewriter implementations.
194
+ */
195
+ async transform(res, contributions = [], pagePackage) {
196
+ const { head, body } = this.groupDependenciesByPosition(pagePackage);
197
+ const { headPrepend, headAppend, bodyPrepend, bodyAppend } = this.groupContributionsByPlacement(contributions);
198
+ const htmlRewriter = await this.htmlRewriterProvider.createHtmlRewriter();
199
+ if (htmlRewriter) {
200
+ htmlRewriter
201
+ .on('head', {
202
+ element: (element) => {
203
+ this.applyContributions(element, headPrepend, 'prepend');
204
+ this.appendDependencies(element, head);
205
+ this.applyContributions(element, headAppend, 'append');
206
+ },
207
+ })
208
+ .on('body', {
209
+ element: (element) => {
210
+ this.applyContributions(element, bodyPrepend, 'prepend');
211
+ this.appendDependencies(element, body);
212
+ this.applyContributions(element, bodyAppend, 'append');
213
+ },
214
+ });
215
+ return htmlRewriter.transform(res);
252
216
  }
253
- return acc;
254
- },
255
- { head: [], body: [] }
256
- );
257
- }
258
- resolvePagePackageHtmlDependencies(pagePackage) {
259
- if (!pagePackage.pageBrowserGraph) {
260
- return pagePackage.htmlAssets;
217
+ const html = await res.text();
218
+ const headers = new Headers(res.headers);
219
+ const withHeadPrependedContent = this.injectAfterOpeningTag(html, 'head', headPrepend.map((item) => item.html).join(''));
220
+ const withHeadDependencies = this.injectBeforeClosingTag(withHeadPrependedContent, 'head', `${this.buildDependencyTags(head)}${headAppend.map((item) => item.html).join('')}`);
221
+ const withBodyPrependedContent = this.injectAfterOpeningTag(withHeadDependencies, 'body', bodyPrepend.map((item) => item.html).join(''));
222
+ const transformedHtml = this.injectBeforeClosingTag(withBodyPrependedContent, 'body', `${this.buildDependencyTags(body)}${bodyAppend.map((item) => item.html).join('')}`);
223
+ return new Response(transformedHtml, {
224
+ headers,
225
+ status: res.status,
226
+ statusText: res.statusText,
227
+ });
228
+ }
229
+ /**
230
+ * Splits processed assets into head and body injection groups.
231
+ */
232
+ groupDependenciesByPosition(pagePackageOverride) {
233
+ const dependencies = pagePackageOverride
234
+ ? this.resolvePagePackageHtmlDependencies(pagePackageOverride)
235
+ : this.pagePackage
236
+ ? this.resolvePagePackageHtmlDependencies(this.pagePackage)
237
+ : this.processedDependencies;
238
+ return dependencies.reduce((acc, dep) => {
239
+ if (dep.kind === 'script') {
240
+ if (dep.excludeFromHtml)
241
+ return acc;
242
+ const position = dep.position || 'body';
243
+ acc[position].push(dep);
244
+ }
245
+ else if (dep.kind === 'stylesheet') {
246
+ acc.head.push(dep);
247
+ }
248
+ return acc;
249
+ }, { head: [], body: [] });
250
+ }
251
+ resolvePagePackageHtmlDependencies(pagePackage) {
252
+ if (!pagePackage.pageBrowserGraph) {
253
+ return pagePackage.htmlAssets;
254
+ }
255
+ const chunkKeys = new Set(pagePackage.pageBrowserGraph.chunkAssets.map((asset) => buildProcessedAssetDedupeKey(asset)));
256
+ const graphKeys = new Set([...pagePackage.pageBrowserGraph.entryAssets, ...pagePackage.pageBrowserGraph.chunkAssets].map((asset) => buildProcessedAssetDedupeKey(asset)));
257
+ const nonGraphHtmlAssets = pagePackage.htmlAssets.filter((asset) => !graphKeys.has(buildProcessedAssetDedupeKey(asset)));
258
+ const entryHtmlAssets = pagePackage.pageBrowserGraph.entryAssets.filter((asset) => !chunkKeys.has(buildProcessedAssetDedupeKey(asset)));
259
+ return dedupeProcessedAssets([...nonGraphHtmlAssets, ...entryHtmlAssets]);
260
+ }
261
+ /**
262
+ * Builds a serialized HTML attribute string from an attribute object.
263
+ */
264
+ buildAttributeString(attributes) {
265
+ return Object.entries(attributes)
266
+ .filter(([key, value]) => key.length > 0 && value.length > 0)
267
+ .map(([key, value]) => ` ${key}="${value}"`)
268
+ .join('');
261
269
  }
262
- const chunkKeys = new Set(
263
- pagePackage.pageBrowserGraph.chunkAssets.map((asset) => buildProcessedAssetDedupeKey(asset))
264
- );
265
- const graphKeys = new Set(
266
- [...pagePackage.pageBrowserGraph.entryAssets, ...pagePackage.pageBrowserGraph.chunkAssets].map(
267
- (asset) => buildProcessedAssetDedupeKey(asset)
268
- )
269
- );
270
- const nonGraphHtmlAssets = pagePackage.htmlAssets.filter(
271
- (asset) => !graphKeys.has(buildProcessedAssetDedupeKey(asset))
272
- );
273
- const entryHtmlAssets = pagePackage.pageBrowserGraph.entryAssets.filter(
274
- (asset) => !chunkKeys.has(buildProcessedAssetDedupeKey(asset))
275
- );
276
- return dedupeProcessedAssets([...nonGraphHtmlAssets, ...entryHtmlAssets]);
277
- }
278
- /**
279
- * Builds a serialized HTML attribute string from an attribute object.
280
- */
281
- buildAttributeString(attributes) {
282
- return Object.entries(attributes).filter(([key, value]) => key.length > 0 && value.length > 0).map(([key, value]) => ` ${key}="${value}"`).join("");
283
- }
284
270
  }
285
- export {
286
- HtmlTransformerService
287
- };
@@ -1,5 +1,6 @@
1
- import type { EcoPagesAppConfig } from '../../types/internal-types.js';
2
- export type DevelopmentInvalidationCategory = 'public-asset' | 'additional-watch' | 'include-source' | 'route-source' | 'processor-owned-asset' | 'server-source' | 'other';
1
+ import type { EcoPagesAppConfig, RegisteredScriptEntrypointChangeHandler } from '../../types/internal-types.js';
2
+ export type { RegisteredScriptEntrypointChangeHandler };
3
+ export type DevelopmentInvalidationCategory = 'public-asset' | 'additional-watch' | 'include-source' | 'explicit-server-view' | 'route-source' | 'processor-owned-asset' | 'server-source' | 'other';
3
4
  /**
4
5
  * Framework-owned invalidation plan for one changed file.
5
6
  *
@@ -38,6 +39,14 @@ export declare class DevelopmentInvalidationService {
38
39
  * Invalidates the app-owned server-module graph.
39
40
  */
40
41
  invalidateServerModules(changedFiles?: string[]): void;
42
+ /**
43
+ * Registers an integration-owned handler for registered script entrypoint edits.
44
+ */
45
+ registerRegisteredScriptEntrypointChangeHandler(handler: RegisteredScriptEntrypointChangeHandler): void;
46
+ /**
47
+ * Notifies integration handlers that a registered script entrypoint changed.
48
+ */
49
+ notifyRegisteredScriptEntrypointChange(filePath: string): Promise<void>;
41
50
  /**
42
51
  * Resets runtime-owned graph state and invalidates server modules.
43
52
  */
@@ -62,6 +71,15 @@ export declare class DevelopmentInvalidationService {
62
71
  * Returns whether the file is an include/template source file.
63
72
  */
64
73
  isIncludeSourceFile(filePath: string): boolean;
74
+ /**
75
+ * Returns whether the file is an explicit server-rendered view module.
76
+ *
77
+ * @remarks
78
+ * These modules are typically registered through `renderServerModule` in
79
+ * `app.ts` rather than the filesystem router. They need a full browser reload
80
+ * because their HTML is produced on the server, not through client HMR entrypoints.
81
+ */
82
+ isExplicitServerViewFile(filePath: string): boolean;
65
83
  /**
66
84
  * Returns whether the file is a server-executed source module outside the
67
85
  * special route/include buckets.
@@ -69,6 +87,11 @@ export declare class DevelopmentInvalidationService {
69
87
  isServerModuleSourceFile(filePath: string): boolean;
70
88
  /**
71
89
  * Returns whether a processor owns the changed file as an asset input.
90
+ *
91
+ * @remarks
92
+ * Watch config drives processor notifications only. Asset ownership requires
93
+ * declared capabilities so dependency-only watches (for example content
94
+ * collection MDX scans) do not skip server invalidation and HMR.
72
95
  */
73
96
  isProcessorOwnedAsset(filePath: string): boolean;
74
97
  }