@nativescript/vite 8.0.0-beta.0 → 8.0.0-dev.0

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 (586) hide show
  1. package/README.md +89 -14
  2. package/bin/cli.cjs +8 -14
  3. package/configuration/angular.d.ts +35 -2
  4. package/configuration/angular.js +541 -216
  5. package/configuration/angular.js.map +1 -1
  6. package/configuration/base.js +228 -78
  7. package/configuration/base.js.map +1 -1
  8. package/configuration/javascript.js +17 -96
  9. package/configuration/javascript.js.map +1 -1
  10. package/configuration/react.js +41 -73
  11. package/configuration/react.js.map +1 -1
  12. package/configuration/solid.js +58 -6
  13. package/configuration/solid.js.map +1 -1
  14. package/configuration/typescript.js +15 -96
  15. package/configuration/typescript.js.map +1 -1
  16. package/framework.d.ts +22 -0
  17. package/framework.js +18 -0
  18. package/framework.js.map +1 -0
  19. package/helpers/app-components.d.ts +2 -1
  20. package/helpers/app-components.js.map +1 -1
  21. package/helpers/app-css-refresh.d.ts +31 -0
  22. package/helpers/app-css-refresh.js +43 -0
  23. package/helpers/app-css-refresh.js.map +1 -0
  24. package/helpers/app-css-state.d.ts +17 -0
  25. package/helpers/app-css-state.js +51 -0
  26. package/helpers/app-css-state.js.map +1 -0
  27. package/helpers/bundler-context.d.ts +11 -0
  28. package/helpers/bundler-context.js +71 -0
  29. package/helpers/bundler-context.js.map +1 -0
  30. package/helpers/cli-flags.d.ts +12 -0
  31. package/helpers/cli-flags.js +34 -0
  32. package/helpers/cli-flags.js.map +1 -1
  33. package/helpers/commonjs-plugins.d.ts +5 -2
  34. package/helpers/commonjs-plugins.js +126 -0
  35. package/helpers/commonjs-plugins.js.map +1 -1
  36. package/helpers/config-as-json.js +10 -0
  37. package/helpers/config-as-json.js.map +1 -1
  38. package/helpers/css-platform-plugin.d.ts +14 -0
  39. package/helpers/css-platform-plugin.js +43 -25
  40. package/helpers/css-platform-plugin.js.map +1 -1
  41. package/helpers/dev-host.d.ts +360 -0
  42. package/helpers/dev-host.js +694 -0
  43. package/helpers/dev-host.js.map +1 -0
  44. package/helpers/dynamic-import-plugin.d.ts +2 -1
  45. package/helpers/dynamic-import-plugin.js +59 -53
  46. package/helpers/dynamic-import-plugin.js.map +1 -1
  47. package/helpers/esbuild-platform-resolver.js +9 -6
  48. package/helpers/esbuild-platform-resolver.js.map +1 -1
  49. package/helpers/external-configs.d.ts +10 -4
  50. package/helpers/external-configs.js +63 -15
  51. package/helpers/external-configs.js.map +1 -1
  52. package/helpers/flavor.d.ts +31 -0
  53. package/helpers/flavor.js +53 -2
  54. package/helpers/flavor.js.map +1 -1
  55. package/helpers/global-defines.d.ts +118 -0
  56. package/helpers/global-defines.js +214 -11
  57. package/helpers/global-defines.js.map +1 -1
  58. package/helpers/hmr-scope.d.ts +26 -0
  59. package/helpers/hmr-scope.js +67 -0
  60. package/helpers/hmr-scope.js.map +1 -0
  61. package/helpers/import-meta-path.d.ts +4 -0
  62. package/helpers/import-meta-path.js +5 -0
  63. package/helpers/import-meta-path.js.map +1 -0
  64. package/helpers/import-specifier.d.ts +1 -0
  65. package/helpers/import-specifier.js +18 -0
  66. package/helpers/import-specifier.js.map +1 -0
  67. package/helpers/init.js +24 -26
  68. package/helpers/init.js.map +1 -1
  69. package/helpers/logging.d.ts +12 -1
  70. package/helpers/logging.js +81 -5
  71. package/helpers/logging.js.map +1 -1
  72. package/helpers/main-entry.d.ts +8 -2
  73. package/helpers/main-entry.js +622 -120
  74. package/helpers/main-entry.js.map +1 -1
  75. package/helpers/nativeclass-esbuild-plugin.d.ts +2 -1
  76. package/helpers/nativeclass-esbuild-plugin.js +6 -1
  77. package/helpers/nativeclass-esbuild-plugin.js.map +1 -1
  78. package/helpers/nativeclass-transform.d.ts +13 -0
  79. package/helpers/nativeclass-transform.js +42 -131
  80. package/helpers/nativeclass-transform.js.map +1 -1
  81. package/helpers/nativeclass-transformer-plugin.d.ts +19 -1
  82. package/helpers/nativeclass-transformer-plugin.js +324 -37
  83. package/helpers/nativeclass-transformer-plugin.js.map +1 -1
  84. package/helpers/nativescript-package-resolver.js +10 -62
  85. package/helpers/nativescript-package-resolver.js.map +1 -1
  86. package/helpers/normalize-id.d.ts +42 -0
  87. package/helpers/normalize-id.js +60 -0
  88. package/helpers/normalize-id.js.map +1 -0
  89. package/helpers/ns-core-external-urls.d.ts +32 -0
  90. package/helpers/ns-core-external-urls.js +107 -0
  91. package/helpers/ns-core-external-urls.js.map +1 -0
  92. package/helpers/ns-core-url.d.ts +106 -0
  93. package/helpers/ns-core-url.js +225 -0
  94. package/helpers/ns-core-url.js.map +1 -0
  95. package/helpers/optimize-deps.d.ts +16 -0
  96. package/helpers/optimize-deps.js +17 -0
  97. package/helpers/optimize-deps.js.map +1 -0
  98. package/helpers/package-platform-aliases.js +34 -49
  99. package/helpers/package-platform-aliases.js.map +1 -1
  100. package/helpers/platform-types.d.ts +2 -0
  101. package/helpers/platform-types.js +2 -0
  102. package/helpers/platform-types.js.map +1 -0
  103. package/helpers/postcss-platform-config.d.ts +17 -1
  104. package/helpers/postcss-platform-config.js +20 -37
  105. package/helpers/postcss-platform-config.js.map +1 -1
  106. package/helpers/project.d.ts +35 -0
  107. package/helpers/project.js +120 -2
  108. package/helpers/project.js.map +1 -1
  109. package/helpers/resolve-main-field-platform.d.ts +20 -0
  110. package/helpers/resolve-main-field-platform.js +49 -0
  111. package/helpers/resolve-main-field-platform.js.map +1 -0
  112. package/helpers/resolver.js +17 -2
  113. package/helpers/resolver.js.map +1 -1
  114. package/helpers/theme-core-plugins.js +1 -1
  115. package/helpers/theme-core-plugins.js.map +1 -1
  116. package/helpers/ts-config-paths.d.ts +32 -0
  117. package/helpers/ts-config-paths.js +156 -27
  118. package/helpers/ts-config-paths.js.map +1 -1
  119. package/helpers/typescript-check.d.ts +3 -3
  120. package/helpers/typescript-check.js +4 -4
  121. package/helpers/typescript-check.js.map +1 -1
  122. package/helpers/ui-registration.d.ts +21 -0
  123. package/helpers/ui-registration.js +156 -0
  124. package/helpers/ui-registration.js.map +1 -0
  125. package/helpers/utils.d.ts +9 -0
  126. package/helpers/utils.js +22 -2
  127. package/helpers/utils.js.map +1 -1
  128. package/helpers/vite-package-version.d.ts +7 -0
  129. package/helpers/vite-package-version.js +44 -0
  130. package/helpers/vite-package-version.js.map +1 -0
  131. package/helpers/workers.d.ts +40 -19
  132. package/helpers/workers.js +312 -13
  133. package/helpers/workers.js.map +1 -1
  134. package/hmr/client/css-handler.d.ts +2 -1
  135. package/hmr/client/css-handler.js +95 -23
  136. package/hmr/client/css-handler.js.map +1 -1
  137. package/hmr/client/css-update-overlay.d.ts +18 -0
  138. package/hmr/client/css-update-overlay.js +27 -0
  139. package/hmr/client/css-update-overlay.js.map +1 -0
  140. package/hmr/client/framework-client-strategy.d.ts +117 -0
  141. package/hmr/client/framework-client-strategy.js +18 -0
  142. package/hmr/client/framework-client-strategy.js.map +1 -0
  143. package/hmr/client/framework.d.ts +31 -0
  144. package/hmr/client/framework.js +17 -0
  145. package/hmr/client/framework.js.map +1 -0
  146. package/hmr/client/hmr-pending-overlay.d.ts +13 -0
  147. package/hmr/client/hmr-pending-overlay.js +41 -0
  148. package/hmr/client/hmr-pending-overlay.js.map +1 -0
  149. package/hmr/client/hot-context.d.ts +89 -0
  150. package/hmr/client/hot-context.js +404 -0
  151. package/hmr/client/hot-context.js.map +1 -0
  152. package/hmr/client/index.d.ts +9 -1
  153. package/hmr/client/index.js +91 -1418
  154. package/hmr/client/index.js.map +1 -1
  155. package/hmr/client/overlay-driver.d.ts +10 -0
  156. package/hmr/client/overlay-driver.js +33 -0
  157. package/hmr/client/overlay-driver.js.map +1 -0
  158. package/hmr/client/protocol-dispatch.d.ts +8 -0
  159. package/hmr/client/protocol-dispatch.js +308 -0
  160. package/hmr/client/protocol-dispatch.js.map +1 -0
  161. package/hmr/client/root-reset.d.ts +15 -0
  162. package/hmr/client/root-reset.js +358 -0
  163. package/hmr/client/root-reset.js.map +1 -0
  164. package/hmr/client/strategy-loader.d.ts +24 -0
  165. package/hmr/client/strategy-loader.js +136 -0
  166. package/hmr/client/strategy-loader.js.map +1 -0
  167. package/hmr/client/update-pipeline.d.ts +27 -0
  168. package/hmr/client/update-pipeline.js +489 -0
  169. package/hmr/client/update-pipeline.js.map +1 -0
  170. package/hmr/client/utils.d.ts +14 -1
  171. package/hmr/client/utils.js +265 -54
  172. package/hmr/client/utils.js.map +1 -1
  173. package/hmr/client/ws-transport.d.ts +21 -0
  174. package/hmr/client/ws-transport.js +323 -0
  175. package/hmr/client/ws-transport.js.map +1 -0
  176. package/hmr/entry-runtime.d.ts +11 -0
  177. package/hmr/entry-runtime.js +566 -43
  178. package/hmr/entry-runtime.js.map +1 -1
  179. package/hmr/framework-flavors.d.ts +59 -0
  180. package/hmr/framework-flavors.js +108 -0
  181. package/hmr/framework-flavors.js.map +1 -0
  182. package/hmr/frameworks/angular/build/angular-linker.d.ts +12 -0
  183. package/hmr/frameworks/angular/build/angular-linker.js +113 -0
  184. package/hmr/frameworks/angular/build/angular-linker.js.map +1 -0
  185. package/hmr/frameworks/angular/build/inject-component-hmr-registration.d.ts +112 -0
  186. package/hmr/frameworks/angular/build/inject-component-hmr-registration.js +291 -0
  187. package/hmr/frameworks/angular/build/inject-component-hmr-registration.js.map +1 -0
  188. package/hmr/frameworks/angular/build/inject-hmr-vite-ignore.d.ts +75 -0
  189. package/hmr/frameworks/angular/build/inject-hmr-vite-ignore.js +221 -0
  190. package/hmr/frameworks/angular/build/inject-hmr-vite-ignore.js.map +1 -0
  191. package/hmr/frameworks/angular/build/inline-decorator-component-templates.d.ts +3 -0
  192. package/hmr/frameworks/angular/build/inline-decorator-component-templates.js +231 -0
  193. package/hmr/frameworks/angular/build/inline-decorator-component-templates.js.map +1 -0
  194. package/hmr/frameworks/angular/build/js-lexer.d.ts +4 -0
  195. package/hmr/frameworks/angular/build/js-lexer.js +182 -0
  196. package/hmr/frameworks/angular/build/js-lexer.js.map +1 -0
  197. package/hmr/frameworks/angular/build/linker-stats.d.ts +18 -0
  198. package/hmr/frameworks/angular/build/linker-stats.js +29 -0
  199. package/hmr/frameworks/angular/build/linker-stats.js.map +1 -0
  200. package/hmr/frameworks/angular/build/shared-linker.d.ts +39 -0
  201. package/hmr/frameworks/angular/build/shared-linker.js +128 -0
  202. package/hmr/frameworks/angular/build/shared-linker.js.map +1 -0
  203. package/hmr/frameworks/angular/build/synthesize-decorator-ctor-parameters.d.ts +1 -0
  204. package/hmr/frameworks/angular/build/synthesize-decorator-ctor-parameters.js +88 -0
  205. package/hmr/frameworks/angular/build/synthesize-decorator-ctor-parameters.js.map +1 -0
  206. package/hmr/frameworks/angular/build/synthesize-injectable-factories.d.ts +3 -0
  207. package/hmr/frameworks/angular/build/synthesize-injectable-factories.js +241 -0
  208. package/hmr/frameworks/angular/build/synthesize-injectable-factories.js.map +1 -0
  209. package/hmr/frameworks/angular/build/ts-fallback-transform.d.ts +5 -0
  210. package/hmr/frameworks/angular/build/ts-fallback-transform.js +138 -0
  211. package/hmr/frameworks/angular/build/ts-fallback-transform.js.map +1 -0
  212. package/{helpers/angular → hmr/frameworks/angular/build}/util.d.ts +1 -0
  213. package/hmr/frameworks/angular/build/util.js +155 -0
  214. package/hmr/frameworks/angular/build/util.js.map +1 -0
  215. package/hmr/frameworks/angular/build/worker-url-preserve.d.ts +5 -0
  216. package/hmr/frameworks/angular/build/worker-url-preserve.js +140 -0
  217. package/hmr/frameworks/angular/build/worker-url-preserve.js.map +1 -0
  218. package/hmr/frameworks/angular/client/index.d.ts +2 -1
  219. package/hmr/frameworks/angular/client/index.js +637 -23
  220. package/hmr/frameworks/angular/client/index.js.map +1 -1
  221. package/hmr/frameworks/angular/client/strategy.d.ts +9 -0
  222. package/hmr/frameworks/angular/client/strategy.js +19 -0
  223. package/hmr/frameworks/angular/client/strategy.js.map +1 -0
  224. package/hmr/frameworks/angular/server/angular-root-component.d.ts +79 -0
  225. package/hmr/frameworks/angular/server/angular-root-component.js +149 -0
  226. package/hmr/frameworks/angular/server/angular-root-component.js.map +1 -0
  227. package/hmr/frameworks/angular/server/linker.js +37 -6
  228. package/hmr/frameworks/angular/server/linker.js.map +1 -1
  229. package/hmr/frameworks/angular/server/ng-component-route.d.ts +43 -0
  230. package/hmr/frameworks/angular/server/ng-component-route.js +113 -0
  231. package/hmr/frameworks/angular/server/ng-component-route.js.map +1 -0
  232. package/hmr/frameworks/angular/server/strategy.js +697 -18
  233. package/hmr/frameworks/angular/server/strategy.js.map +1 -1
  234. package/hmr/frameworks/angular/server/websocket-angular-entry.d.ts +2 -0
  235. package/hmr/frameworks/angular/server/websocket-angular-entry.js +68 -0
  236. package/hmr/frameworks/angular/server/websocket-angular-entry.js.map +1 -0
  237. package/hmr/frameworks/angular/server/websocket-angular-hot-update.d.ts +94 -0
  238. package/hmr/frameworks/angular/server/websocket-angular-hot-update.js +485 -0
  239. package/hmr/frameworks/angular/server/websocket-angular-hot-update.js.map +1 -0
  240. package/hmr/frameworks/react/client/strategy.d.ts +12 -0
  241. package/hmr/frameworks/react/client/strategy.js +27 -0
  242. package/hmr/frameworks/react/client/strategy.js.map +1 -0
  243. package/hmr/frameworks/react/server/strategy.d.ts +2 -0
  244. package/hmr/frameworks/react/server/strategy.js +230 -0
  245. package/hmr/frameworks/react/server/strategy.js.map +1 -0
  246. package/hmr/frameworks/solid/build/solid-jsx-deps.d.ts +15 -0
  247. package/hmr/frameworks/solid/build/solid-jsx-deps.js +178 -0
  248. package/hmr/frameworks/solid/build/solid-jsx-deps.js.map +1 -0
  249. package/hmr/frameworks/solid/client/app-runtime.d.ts +68 -0
  250. package/hmr/frameworks/solid/client/app-runtime.js +252 -0
  251. package/hmr/frameworks/solid/client/app-runtime.js.map +1 -0
  252. package/hmr/frameworks/solid/client/strategy.d.ts +7 -0
  253. package/hmr/frameworks/solid/client/strategy.js +391 -0
  254. package/hmr/frameworks/solid/client/strategy.js.map +1 -0
  255. package/hmr/frameworks/solid/server/strategy.js +293 -16
  256. package/hmr/frameworks/solid/server/strategy.js.map +1 -1
  257. package/hmr/frameworks/typescript/client/strategy.d.ts +7 -0
  258. package/hmr/frameworks/typescript/client/strategy.js +418 -0
  259. package/hmr/frameworks/typescript/client/strategy.js.map +1 -0
  260. package/hmr/frameworks/typescript/server/strategy.js +48 -16
  261. package/hmr/frameworks/typescript/server/strategy.js.map +1 -1
  262. package/hmr/frameworks/vue/client/dep-propagation.d.ts +44 -0
  263. package/hmr/frameworks/vue/client/dep-propagation.js +148 -0
  264. package/hmr/frameworks/vue/client/dep-propagation.js.map +1 -0
  265. package/hmr/frameworks/vue/client/index.d.ts +10 -1
  266. package/hmr/frameworks/vue/client/index.js +287 -562
  267. package/hmr/frameworks/vue/client/index.js.map +1 -1
  268. package/hmr/frameworks/vue/client/navigate-app.d.ts +3 -0
  269. package/hmr/frameworks/vue/client/navigate-app.js +178 -0
  270. package/hmr/frameworks/vue/client/navigate-app.js.map +1 -0
  271. package/hmr/frameworks/vue/client/strategy.d.ts +33 -0
  272. package/hmr/frameworks/vue/client/strategy.js +152 -0
  273. package/hmr/frameworks/vue/client/strategy.js.map +1 -0
  274. package/hmr/frameworks/vue/client/vue-sfc-update-overlay.d.ts +49 -0
  275. package/hmr/frameworks/vue/client/vue-sfc-update-overlay.js +124 -0
  276. package/hmr/frameworks/vue/client/vue-sfc-update-overlay.js.map +1 -0
  277. package/hmr/frameworks/vue/server/compiler.d.ts +3 -1
  278. package/hmr/frameworks/vue/server/compiler.js +3 -1
  279. package/hmr/frameworks/vue/server/compiler.js.map +1 -1
  280. package/hmr/frameworks/vue/server/sfc-route-assemble.d.ts +7 -0
  281. package/hmr/frameworks/vue/server/sfc-route-assemble.js +823 -0
  282. package/hmr/frameworks/vue/server/sfc-route-assemble.js.map +1 -0
  283. package/hmr/frameworks/vue/server/sfc-route-meta.d.ts +7 -0
  284. package/hmr/frameworks/vue/server/sfc-route-meta.js +80 -0
  285. package/hmr/frameworks/vue/server/sfc-route-meta.js.map +1 -0
  286. package/hmr/frameworks/vue/server/sfc-route-serve.d.ts +8 -0
  287. package/hmr/frameworks/vue/server/sfc-route-serve.js +462 -0
  288. package/hmr/frameworks/vue/server/sfc-route-serve.js.map +1 -0
  289. package/hmr/frameworks/vue/server/sfc-route-shared.d.ts +45 -0
  290. package/hmr/frameworks/vue/server/sfc-route-shared.js +105 -0
  291. package/hmr/frameworks/vue/server/sfc-route-shared.js.map +1 -0
  292. package/hmr/frameworks/vue/server/strategy.d.ts +35 -0
  293. package/hmr/frameworks/vue/server/strategy.js +291 -7
  294. package/hmr/frameworks/vue/server/strategy.js.map +1 -1
  295. package/hmr/frameworks/vue/server/websocket-sfc.d.ts +15 -0
  296. package/hmr/frameworks/vue/server/websocket-sfc.js +20 -0
  297. package/hmr/frameworks/vue/server/websocket-sfc.js.map +1 -0
  298. package/hmr/helpers/ast-normalizer.d.ts +3 -1
  299. package/hmr/helpers/ast-normalizer.js +131 -24
  300. package/hmr/helpers/ast-normalizer.js.map +1 -1
  301. package/hmr/helpers/cjs-named-exports.d.ts +23 -0
  302. package/hmr/helpers/cjs-named-exports.js +152 -0
  303. package/hmr/helpers/cjs-named-exports.js.map +1 -0
  304. package/hmr/helpers/package-exports.d.ts +16 -0
  305. package/hmr/helpers/package-exports.js +396 -0
  306. package/hmr/helpers/package-exports.js.map +1 -0
  307. package/hmr/helpers/vendor-rewrite.d.ts +1 -1
  308. package/hmr/helpers/vendor-rewrite.js +5 -3
  309. package/hmr/helpers/vendor-rewrite.js.map +1 -1
  310. package/hmr/server/boot-recording.d.ts +51 -0
  311. package/hmr/server/boot-recording.js +214 -0
  312. package/hmr/server/boot-recording.js.map +1 -0
  313. package/hmr/server/constants.d.ts +1 -0
  314. package/hmr/server/constants.js +21 -4
  315. package/hmr/server/constants.js.map +1 -1
  316. package/hmr/server/content-css-update.d.ts +54 -0
  317. package/hmr/server/content-css-update.js +78 -0
  318. package/hmr/server/content-css-update.js.map +1 -0
  319. package/hmr/server/core-bundle.d.ts +140 -0
  320. package/hmr/server/core-bundle.js +614 -0
  321. package/hmr/server/core-bundle.js.map +1 -0
  322. package/hmr/server/core-sanitize.d.ts +130 -4
  323. package/hmr/server/core-sanitize.js +393 -32
  324. package/hmr/server/core-sanitize.js.map +1 -1
  325. package/hmr/server/css-connect-sync.d.ts +28 -0
  326. package/hmr/server/css-connect-sync.js +59 -0
  327. package/hmr/server/css-connect-sync.js.map +1 -0
  328. package/hmr/server/css-device-module.d.ts +28 -0
  329. package/hmr/server/css-device-module.js +44 -0
  330. package/hmr/server/css-device-module.js.map +1 -0
  331. package/hmr/server/css-update-message.d.ts +23 -0
  332. package/hmr/server/css-update-message.js +41 -0
  333. package/hmr/server/css-update-message.js.map +1 -0
  334. package/hmr/server/deps-bundle.d.ts +233 -0
  335. package/hmr/server/deps-bundle.js +1022 -0
  336. package/hmr/server/deps-bundle.js.map +1 -0
  337. package/hmr/server/device-transform-helpers.d.ts +24 -0
  338. package/hmr/server/device-transform-helpers.js +408 -0
  339. package/hmr/server/device-transform-helpers.js.map +1 -0
  340. package/hmr/server/framework-strategy.d.ts +182 -11
  341. package/hmr/server/hmr-module-graph.d.ts +37 -0
  342. package/hmr/server/hmr-module-graph.js +215 -0
  343. package/hmr/server/hmr-module-graph.js.map +1 -0
  344. package/hmr/server/import-map.d.ts +99 -0
  345. package/hmr/server/import-map.js +294 -0
  346. package/hmr/server/import-map.js.map +1 -0
  347. package/hmr/server/index.d.ts +2 -1
  348. package/hmr/server/index.js +7 -16
  349. package/hmr/server/index.js.map +1 -1
  350. package/hmr/server/node-builtins-route.d.ts +12 -0
  351. package/hmr/server/node-builtins-route.js +86 -0
  352. package/hmr/server/node-builtins-route.js.map +1 -0
  353. package/hmr/server/ns-core-cjs-shape.d.ts +204 -0
  354. package/hmr/server/ns-core-cjs-shape.js +271 -0
  355. package/hmr/server/ns-core-cjs-shape.js.map +1 -0
  356. package/hmr/server/ns-m-response-memo.d.ts +10 -0
  357. package/hmr/server/ns-m-response-memo.js +33 -0
  358. package/hmr/server/ns-m-response-memo.js.map +1 -0
  359. package/hmr/server/ns-rt-bridge.d.ts +51 -0
  360. package/hmr/server/ns-rt-bridge.js +131 -0
  361. package/hmr/server/ns-rt-bridge.js.map +1 -0
  362. package/hmr/server/ns-rt-route.d.ts +5 -0
  363. package/hmr/server/ns-rt-route.js +39 -0
  364. package/hmr/server/ns-rt-route.js.map +1 -0
  365. package/hmr/server/perf-instrumentation.d.ts +114 -0
  366. package/hmr/server/perf-instrumentation.js +197 -0
  367. package/hmr/server/perf-instrumentation.js.map +1 -0
  368. package/hmr/server/process-code-for-device.d.ts +54 -0
  369. package/hmr/server/process-code-for-device.js +832 -0
  370. package/hmr/server/process-code-for-device.js.map +1 -0
  371. package/hmr/server/require-guard.d.ts +1 -0
  372. package/hmr/server/require-guard.js +12 -0
  373. package/hmr/server/require-guard.js.map +1 -0
  374. package/hmr/server/rewrite-imports.d.ts +2 -0
  375. package/hmr/server/rewrite-imports.js +631 -0
  376. package/hmr/server/rewrite-imports.js.map +1 -0
  377. package/hmr/server/route-helpers.d.ts +7 -0
  378. package/hmr/server/route-helpers.js +13 -0
  379. package/hmr/server/route-helpers.js.map +1 -0
  380. package/hmr/server/runtime-graph-filter.d.ts +5 -0
  381. package/hmr/server/runtime-graph-filter.js +28 -0
  382. package/hmr/server/runtime-graph-filter.js.map +1 -0
  383. package/hmr/server/server-origin.d.ts +2 -0
  384. package/hmr/server/server-origin.js +88 -0
  385. package/hmr/server/server-origin.js.map +1 -0
  386. package/hmr/server/shared-transform-request.d.ts +12 -0
  387. package/hmr/server/shared-transform-request.js +143 -0
  388. package/hmr/server/shared-transform-request.js.map +1 -0
  389. package/hmr/server/socket-utils.d.ts +10 -0
  390. package/hmr/server/socket-utils.js +14 -0
  391. package/hmr/server/socket-utils.js.map +1 -0
  392. package/hmr/server/transform-cache-invalidation.d.ts +37 -0
  393. package/hmr/server/transform-cache-invalidation.js +156 -0
  394. package/hmr/server/transform-cache-invalidation.js.map +1 -0
  395. package/hmr/server/vendor-bare-module-shims.d.ts +4 -0
  396. package/hmr/server/vendor-bare-module-shims.js +80 -0
  397. package/hmr/server/vendor-bare-module-shims.js.map +1 -0
  398. package/hmr/server/vite-plugin.d.ts +22 -1
  399. package/hmr/server/vite-plugin.js +655 -58
  400. package/hmr/server/vite-plugin.js.map +1 -1
  401. package/hmr/server/websocket-core-bridge.d.ts +68 -0
  402. package/hmr/server/websocket-core-bridge.js +370 -0
  403. package/hmr/server/websocket-core-bridge.js.map +1 -0
  404. package/hmr/server/websocket-device-transform.d.ts +3 -0
  405. package/hmr/server/websocket-device-transform.js +7 -0
  406. package/hmr/server/websocket-device-transform.js.map +1 -0
  407. package/hmr/server/websocket-graph-upsert.d.ts +21 -0
  408. package/hmr/server/websocket-graph-upsert.js +33 -0
  409. package/hmr/server/websocket-graph-upsert.js.map +1 -0
  410. package/hmr/server/websocket-hmr-pending.d.ts +29 -0
  411. package/hmr/server/websocket-hmr-pending.js +33 -0
  412. package/hmr/server/websocket-hmr-pending.js.map +1 -0
  413. package/hmr/server/websocket-hot-update.d.ts +80 -0
  414. package/hmr/server/websocket-hot-update.js +299 -0
  415. package/hmr/server/websocket-hot-update.js.map +1 -0
  416. package/hmr/server/websocket-import-map-route.d.ts +15 -0
  417. package/hmr/server/websocket-import-map-route.js +51 -0
  418. package/hmr/server/websocket-import-map-route.js.map +1 -0
  419. package/hmr/server/websocket-module-bindings.d.ts +21 -0
  420. package/hmr/server/websocket-module-bindings.js +504 -0
  421. package/hmr/server/websocket-module-bindings.js.map +1 -0
  422. package/hmr/server/websocket-module-specifiers.d.ts +98 -0
  423. package/hmr/server/websocket-module-specifiers.js +832 -0
  424. package/hmr/server/websocket-module-specifiers.js.map +1 -0
  425. package/hmr/server/websocket-ns-core.d.ts +34 -0
  426. package/hmr/server/websocket-ns-core.js +414 -0
  427. package/hmr/server/websocket-ns-core.js.map +1 -0
  428. package/hmr/server/websocket-ns-entry.d.ts +21 -0
  429. package/hmr/server/websocket-ns-entry.js +163 -0
  430. package/hmr/server/websocket-ns-entry.js.map +1 -0
  431. package/hmr/server/websocket-ns-m-paths.d.ts +19 -0
  432. package/hmr/server/websocket-ns-m-paths.js +115 -0
  433. package/hmr/server/websocket-ns-m-paths.js.map +1 -0
  434. package/hmr/server/websocket-ns-m-request.d.ts +46 -0
  435. package/hmr/server/websocket-ns-m-request.js +197 -0
  436. package/hmr/server/websocket-ns-m-request.js.map +1 -0
  437. package/hmr/server/websocket-ns-m.d.ts +52 -0
  438. package/hmr/server/websocket-ns-m.js +592 -0
  439. package/hmr/server/websocket-ns-m.js.map +1 -0
  440. package/hmr/server/websocket-served-module-helpers.d.ts +98 -0
  441. package/hmr/server/websocket-served-module-helpers.js +948 -0
  442. package/hmr/server/websocket-served-module-helpers.js.map +1 -0
  443. package/hmr/server/websocket-txn.d.ts +6 -0
  444. package/hmr/server/websocket-txn.js +42 -0
  445. package/hmr/server/websocket-txn.js.map +1 -0
  446. package/hmr/server/websocket-vendor-unifier.d.ts +9 -0
  447. package/hmr/server/websocket-vendor-unifier.js +46 -0
  448. package/hmr/server/websocket-vendor-unifier.js.map +1 -0
  449. package/hmr/server/websocket.d.ts +6 -17
  450. package/hmr/server/websocket.js +723 -5376
  451. package/hmr/server/websocket.js.map +1 -1
  452. package/hmr/shared/ns-globals.d.ts +108 -0
  453. package/hmr/shared/ns-globals.js +29 -0
  454. package/hmr/shared/ns-globals.js.map +1 -0
  455. package/hmr/shared/package-classifier.d.ts +9 -0
  456. package/hmr/shared/package-classifier.js +58 -0
  457. package/hmr/shared/package-classifier.js.map +1 -0
  458. package/hmr/shared/protocol.d.ts +157 -0
  459. package/hmr/shared/protocol.js +28 -0
  460. package/hmr/shared/protocol.js.map +1 -0
  461. package/hmr/shared/runtime/boot-complete.d.ts +14 -0
  462. package/hmr/shared/runtime/boot-complete.js +32 -0
  463. package/hmr/shared/runtime/boot-complete.js.map +1 -0
  464. package/hmr/shared/runtime/boot-placeholder-ui.d.ts +69 -0
  465. package/hmr/shared/runtime/boot-placeholder-ui.js +101 -0
  466. package/hmr/shared/runtime/boot-placeholder-ui.js.map +1 -0
  467. package/hmr/shared/runtime/boot-progress.d.ts +44 -0
  468. package/hmr/shared/runtime/boot-progress.js +134 -0
  469. package/hmr/shared/runtime/boot-progress.js.map +1 -0
  470. package/hmr/shared/runtime/boot-timeline.d.ts +17 -0
  471. package/hmr/shared/runtime/boot-timeline.js +40 -0
  472. package/hmr/shared/runtime/boot-timeline.js.map +1 -0
  473. package/hmr/shared/runtime/browser-runtime-contract.d.ts +97 -0
  474. package/hmr/shared/runtime/browser-runtime-contract.js +66 -0
  475. package/hmr/shared/runtime/browser-runtime-contract.js.map +1 -0
  476. package/hmr/shared/runtime/dev-overlay-ios.d.ts +87 -0
  477. package/hmr/shared/runtime/dev-overlay-ios.js +521 -0
  478. package/hmr/shared/runtime/dev-overlay-ios.js.map +1 -0
  479. package/hmr/shared/runtime/dev-overlay-shared.d.ts +58 -0
  480. package/hmr/shared/runtime/dev-overlay-shared.js +116 -0
  481. package/hmr/shared/runtime/dev-overlay-shared.js.map +1 -0
  482. package/hmr/shared/runtime/dev-overlay-snapshots.d.ts +31 -0
  483. package/hmr/shared/runtime/dev-overlay-snapshots.js +324 -0
  484. package/hmr/shared/runtime/dev-overlay-snapshots.js.map +1 -0
  485. package/hmr/shared/runtime/dev-overlay-tree.d.ts +59 -0
  486. package/hmr/shared/runtime/dev-overlay-tree.js +712 -0
  487. package/hmr/shared/runtime/dev-overlay-tree.js.map +1 -0
  488. package/hmr/shared/runtime/dev-overlay.d.ts +39 -0
  489. package/hmr/shared/runtime/dev-overlay.js +292 -0
  490. package/hmr/shared/runtime/dev-overlay.js.map +1 -0
  491. package/hmr/shared/runtime/global-scope.d.ts +18 -0
  492. package/hmr/shared/runtime/global-scope.js +21 -0
  493. package/hmr/shared/runtime/global-scope.js.map +1 -0
  494. package/hmr/shared/runtime/hooks.js +2 -1
  495. package/hmr/shared/runtime/hooks.js.map +1 -1
  496. package/hmr/shared/runtime/launch-bridge.d.ts +9 -0
  497. package/hmr/shared/runtime/launch-bridge.js +98 -0
  498. package/hmr/shared/runtime/launch-bridge.js.map +1 -0
  499. package/hmr/shared/runtime/module-provenance.d.ts +1 -0
  500. package/hmr/shared/runtime/module-provenance.js +64 -0
  501. package/hmr/shared/runtime/module-provenance.js.map +1 -0
  502. package/hmr/shared/runtime/ns-runtime-test-double.d.ts +21 -0
  503. package/hmr/shared/runtime/ns-runtime-test-double.js +20 -0
  504. package/hmr/shared/runtime/ns-runtime-test-double.js.map +1 -0
  505. package/hmr/shared/runtime/overlay-flag.d.ts +9 -0
  506. package/hmr/shared/runtime/overlay-flag.js +34 -0
  507. package/hmr/shared/runtime/overlay-flag.js.map +1 -0
  508. package/hmr/shared/runtime/platform-polyfills.d.ts +26 -0
  509. package/hmr/shared/runtime/platform-polyfills.js +122 -0
  510. package/hmr/shared/runtime/platform-polyfills.js.map +1 -0
  511. package/hmr/shared/runtime/root-placeholder-view.d.ts +19 -0
  512. package/hmr/shared/runtime/root-placeholder-view.js +311 -0
  513. package/hmr/shared/runtime/root-placeholder-view.js.map +1 -0
  514. package/hmr/shared/runtime/root-placeholder.d.ts +1 -0
  515. package/hmr/shared/runtime/root-placeholder.js +778 -83
  516. package/hmr/shared/runtime/root-placeholder.js.map +1 -1
  517. package/hmr/shared/runtime/session-bootstrap.d.ts +1 -0
  518. package/hmr/shared/runtime/session-bootstrap.js +350 -0
  519. package/hmr/shared/runtime/session-bootstrap.js.map +1 -0
  520. package/hmr/shared/runtime/vendor-bootstrap.js +54 -16
  521. package/hmr/shared/runtime/vendor-bootstrap.js.map +1 -1
  522. package/hmr/shared/runtime/vendor-resolve.d.ts +22 -0
  523. package/hmr/shared/runtime/vendor-resolve.js +45 -0
  524. package/hmr/shared/runtime/vendor-resolve.js.map +1 -0
  525. package/hmr/shared/runtime/worker-tracking.d.ts +28 -0
  526. package/hmr/shared/runtime/worker-tracking.js +114 -0
  527. package/hmr/shared/runtime/worker-tracking.js.map +1 -0
  528. package/hmr/shared/vendor/manifest-collect.d.ts +4 -0
  529. package/hmr/shared/vendor/manifest-collect.js +909 -0
  530. package/hmr/shared/vendor/manifest-collect.js.map +1 -0
  531. package/hmr/shared/vendor/manifest-loader.d.ts +2 -1
  532. package/hmr/shared/vendor/manifest-loader.js +5 -3
  533. package/hmr/shared/vendor/manifest-loader.js.map +1 -1
  534. package/hmr/shared/vendor/manifest.d.ts +12 -0
  535. package/hmr/shared/vendor/manifest.js +341 -545
  536. package/hmr/shared/vendor/manifest.js.map +1 -1
  537. package/hmr/shared/vendor/registry.d.ts +2 -0
  538. package/hmr/shared/vendor/registry.js +118 -7
  539. package/hmr/shared/vendor/registry.js.map +1 -1
  540. package/hmr/shared/vendor/vendor-device-shim.d.ts +1 -0
  541. package/hmr/shared/vendor/vendor-device-shim.js +208 -0
  542. package/hmr/shared/vendor/vendor-device-shim.js.map +1 -0
  543. package/hmr/shared/vendor/vendor-esbuild-plugins.d.ts +107 -0
  544. package/hmr/shared/vendor/vendor-esbuild-plugins.js +540 -0
  545. package/hmr/shared/vendor/vendor-esbuild-plugins.js.map +1 -0
  546. package/index.d.ts +1 -0
  547. package/index.js +5 -0
  548. package/index.js.map +1 -1
  549. package/package.json +83 -14
  550. package/runtime/core-aliases-early.js +103 -81
  551. package/runtime/core-aliases-early.js.map +1 -1
  552. package/shims/react-jsx-runtime.d.ts +4 -0
  553. package/shims/react-jsx-runtime.js +61 -0
  554. package/shims/react-jsx-runtime.js.map +1 -0
  555. package/shims/solid-jsx-runtime.d.ts +7 -0
  556. package/shims/solid-jsx-runtime.js +17 -0
  557. package/shims/solid-jsx-runtime.js.map +1 -0
  558. package/helpers/angular/angular-linker.d.ts +0 -13
  559. package/helpers/angular/angular-linker.js +0 -189
  560. package/helpers/angular/angular-linker.js.map +0 -1
  561. package/helpers/angular/shared-linker.d.ts +0 -4
  562. package/helpers/angular/shared-linker.js +0 -39
  563. package/helpers/angular/shared-linker.js.map +0 -1
  564. package/helpers/angular/util.js +0 -67
  565. package/helpers/angular/util.js.map +0 -1
  566. package/helpers/module-runner-patch.d.ts +0 -3
  567. package/helpers/module-runner-patch.js +0 -63
  568. package/helpers/module-runner-patch.js.map +0 -1
  569. package/helpers/prelink-angular.d.ts +0 -2
  570. package/helpers/prelink-angular.js +0 -117
  571. package/helpers/prelink-angular.js.map +0 -1
  572. package/hmr/shared/runtime/http-only-boot.d.ts +0 -1
  573. package/hmr/shared/runtime/http-only-boot.js +0 -124
  574. package/hmr/shared/runtime/http-only-boot.js.map +0 -1
  575. package/hmr/vendor-bootstrap.d.ts +0 -3
  576. package/hmr/vendor-bootstrap.js +0 -32
  577. package/hmr/vendor-bootstrap.js.map +0 -1
  578. package/shims/react-reconciler-constants.d.ts +0 -14
  579. package/shims/react-reconciler-constants.js +0 -21
  580. package/shims/react-reconciler-constants.js.map +0 -1
  581. package/shims/react-reconciler.d.ts +0 -8
  582. package/shims/react-reconciler.js +0 -15
  583. package/shims/react-reconciler.js.map +0 -1
  584. package/transformers/NativeClass/index.d.ts +0 -2
  585. package/transformers/NativeClass/index.js +0 -222
  586. package/transformers/NativeClass/index.js.map +0 -1
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Early "pending" notification for HMR.
3
+ *
4
+ * When `handleHotUpdate(ctx)` first fires for a save event, the server
5
+ * spends 7–200ms doing graph upserts, transforms and dependency
6
+ * analysis BEFORE broadcasting `ns:angular-update` (or
7
+ * `ns:css-updates`). During that window the client has no idea a
8
+ * change is in flight, so the HMR-applying overlay only appears at
9
+ * the tail end of the cycle and the user perceives the dev loop as
10
+ * laggy.
11
+ *
12
+ * `ns:hmr-pending` is broadcast at the very start of `handleHotUpdate`
13
+ * with just the file path + classified kind. The client reacts by
14
+ * showing the 'received' overlay frame immediately. The authoritative
15
+ * payload (`ns:angular-update` / `ns:css-updates`) follows once the
16
+ * server is ready and walks the rest of the stage progression.
17
+ *
18
+ * This module is intentionally a pure helper so the message shape and
19
+ * narrowing rules can be verified without spinning up a Vite dev
20
+ * server.
21
+ */
22
+ export function createHmrPendingMessage(input) {
23
+ const allowed = ['ts', 'css', 'html', 'unknown'];
24
+ const kind = allowed.includes(input.kind || '') ? input.kind : 'unknown';
25
+ return {
26
+ type: 'ns:hmr-pending',
27
+ origin: typeof input.origin === 'string' ? input.origin : '',
28
+ path: typeof input.path === 'string' ? input.path : '',
29
+ kind,
30
+ timestamp: typeof input.timestamp === 'number' && Number.isFinite(input.timestamp) ? input.timestamp : 0,
31
+ };
32
+ }
33
+ //# sourceMappingURL=websocket-hmr-pending.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket-hmr-pending.js","sourceRoot":"","sources":["../../../../../packages/vite/hmr/server/websocket-hmr-pending.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAQH,MAAM,UAAU,uBAAuB,CAAC,KAAwE;IAC/G,MAAM,OAAO,GAAqB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IACnE,MAAM,IAAI,GAAI,OAA6B,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,CAAE,KAAK,CAAC,IAAuB,CAAC,CAAC,CAAC,SAAS,CAAC;IACpH,OAAO;QACN,IAAI,EAAE,gBAAgB;QACtB,MAAM,EAAE,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;QAC5D,IAAI,EAAE,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;QACtD,IAAI;QACJ,SAAS,EAAE,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;KACxG,CAAC;AACH,CAAC"}
@@ -0,0 +1,80 @@
1
+ import type { HmrContext } from 'vite';
2
+ import type { WebSocketServer } from 'ws';
3
+ import type { FrameworkServerStrategy } from './framework-strategy.js';
4
+ import type { HmrModuleGraph } from './hmr-module-graph.js';
5
+ import type { SharedTransformRequestRunner } from './shared-transform-request.js';
6
+ import type { CssUpdateItem } from '../shared/protocol.js';
7
+ import type { BootstrapRootComponent } from '../frameworks/angular/server/angular-root-component.js';
8
+ /**
9
+ * Dependencies injected into each strategy's `handleHotUpdate` (and the shared
10
+ * {@link runHotUpdatePrologue} it runs first). These hold per-server instance
11
+ * state (`wss`, `moduleGraph`, the file maps, `sharedTransformRequest`) or are
12
+ * plugin-closure accessors. Pure transform helpers (`cleanCode`,
13
+ * `rewriteImports`, `processSfcCode`, `collectImportDependencies`) are NOT on the
14
+ * context — the strategies that need them import them directly from
15
+ * `websocket-device-transform.ts`. `getServerOrigin` is likewise imported
16
+ * directly here from `server-origin.ts` (spy via the module in tests).
17
+ */
18
+ export interface NsHotUpdateContext {
19
+ wss: WebSocketServer | null;
20
+ moduleGraph: HmrModuleGraph;
21
+ strategy: FrameworkServerStrategy;
22
+ verbose: boolean;
23
+ sfcFileMap: Map<string, string>;
24
+ depFileMap: Map<string, string>;
25
+ sharedTransformRequest: SharedTransformRequestRunner;
26
+ getHmrSourceRootsCached: () => string[];
27
+ getBootstrapEntryRelPath: () => string;
28
+ isSocketClientOpen: (client: {
29
+ readyState?: number;
30
+ OPEN?: number;
31
+ } | null | undefined) => boolean;
32
+ getHmrSocketRole: (client: {
33
+ __nsHmrClientRole?: string;
34
+ } | null | undefined) => string;
35
+ shouldRemapImport: (spec: string) => boolean;
36
+ rememberAngularReloadSuppression: (root: string, file: string, ttlMs?: number) => void;
37
+ /**
38
+ * Resolves the Angular bootstrap (root) component, or `null` when it
39
+ * can't be statically determined. Used to force root-component template
40
+ * edits through the reboot path instead of Analog's in-place update,
41
+ * which is destructive for the root view (see {@link BootstrapRootComponent}).
42
+ */
43
+ getRootComponentIdentity: () => BootstrapRootComponent | null;
44
+ getGraphInitialPopulationPromise: () => Promise<void> | null;
45
+ appRootDir: string;
46
+ }
47
+ /** Always-on per-update timing + diagnostics, mutated in place across the prologue and the framework tail. */
48
+ export interface HmrUpdateMetrics {
49
+ file: string;
50
+ kind: string;
51
+ t0: number;
52
+ tAfterAwait: number;
53
+ tAfterFramework: number;
54
+ tEnd: number;
55
+ invalidated: number;
56
+ recipients: number;
57
+ narrowed: boolean | undefined;
58
+ emitted: boolean;
59
+ }
60
+ /** Per-invocation locals computed by {@link runHotUpdatePrologue} and consumed by the per-flavor tail. */
61
+ export interface HotUpdatePrologueState {
62
+ root: string;
63
+ updateRel: string;
64
+ metrics: HmrUpdateMetrics;
65
+ emitSummary: () => void;
66
+ /** App CSS output changed during an Angular TS edit; attach it to the reboot message. */
67
+ deferredCssUpdates?: CssUpdateItem[];
68
+ }
69
+ /**
70
+ * Shared, framework-agnostic prologue for every strategy's `handleHotUpdate`:
71
+ * scope gating, update-metrics setup, the `ns:hmr-pending` broadcast, awaiting the
72
+ * initial graph population, the common module-graph upsert, CSS hot-update +
73
+ * Tailwind content-CSS broadcast, and the project-scope filter. Returns `null`
74
+ * when one of those steps fully handles the change (every such path resolves to
75
+ * Vite's `undefined` result, so the caller just returns), otherwise the
76
+ * per-invocation {@link HotUpdatePrologueState} (`root`, `updateRel`, the live
77
+ * `metrics` object, the idempotent `emitSummary`) the per-flavor tail consumes.
78
+ * Exported so per-flavor strategies can own `prologue + their tail`.
79
+ */
80
+ export declare function runHotUpdatePrologue(ctx: HmrContext, deps: NsHotUpdateContext): Promise<HotUpdatePrologueState | null>;
@@ -0,0 +1,299 @@
1
+ import * as path from 'path';
2
+ import { isRuntimeGraphExcludedPath } from './runtime-graph-filter.js';
3
+ import { isWithinHmrScope } from '../../helpers/hmr-scope.js';
4
+ import { collectGraphUpdateModulesForHotUpdate } from '../frameworks/angular/server/websocket-angular-hot-update.js';
5
+ import { getAppCssState } from '../../helpers/app-css-state.js';
6
+ import { classifyHmrUpdateKind, formatHmrUpdateSummary } from './perf-instrumentation.js';
7
+ import { createHmrPendingMessage } from './websocket-hmr-pending.js';
8
+ import { appCssRootRelPath, buildCssUpdateItem, buildCssUpdatesMessage } from './css-update-message.js';
9
+ import { processContentCssUpdate } from './content-css-update.js';
10
+ import { getServerOrigin } from './server-origin.js';
11
+ /**
12
+ * Shared, framework-agnostic prologue for every strategy's `handleHotUpdate`:
13
+ * scope gating, update-metrics setup, the `ns:hmr-pending` broadcast, awaiting the
14
+ * initial graph population, the common module-graph upsert, CSS hot-update +
15
+ * Tailwind content-CSS broadcast, and the project-scope filter. Returns `null`
16
+ * when one of those steps fully handles the change (every such path resolves to
17
+ * Vite's `undefined` result, so the caller just returns), otherwise the
18
+ * per-invocation {@link HotUpdatePrologueState} (`root`, `updateRel`, the live
19
+ * `metrics` object, the idempotent `emitSummary`) the per-flavor tail consumes.
20
+ * Exported so per-flavor strategies can own `prologue + their tail`.
21
+ */
22
+ export async function runHotUpdatePrologue(ctx, deps) {
23
+ const { wss, moduleGraph, strategy, verbose, getHmrSourceRootsCached, isSocketClientOpen } = deps;
24
+ const APP_ROOT_DIR = deps.appRootDir;
25
+ const graphInitialPopulationPromise = deps.getGraphInitialPopulationPromise();
26
+ const { file, server } = ctx;
27
+ if (!wss) {
28
+ return null;
29
+ }
30
+ if (isRuntimeGraphExcludedPath(file)) {
31
+ return null;
32
+ }
33
+ // Authoritative "what triggers HMR" gate, applied before the pending
34
+ // overlay broadcast below: react only to files inside the app source
35
+ // dir (`appPath`) or a tsconfig-configured shared library.
36
+ if (!isWithinHmrScope(file, getHmrSourceRootsCached())) {
37
+ if (verbose) {
38
+ console.log(`[ns-hmr][server] ignored change (outside HMR source scope): ${file}`);
39
+ }
40
+ return null;
41
+ }
42
+ // Always-on update timing. Captures the four phases (await,
43
+ // framework, broadcast, total) plus invalidated module count
44
+ // and recipient count. Emitted at the end of this function via
45
+ // `emitHmrUpdateSummary()`. Single line, always-on so a
46
+ // 6-second `.ts` save is immediately visible without flipping
47
+ // verbose.
48
+ const updateRoot = server.config.root || process.cwd();
49
+ const updateRel = (() => {
50
+ try {
51
+ return '/' + path.posix.normalize(path.relative(updateRoot, file)).split(path.sep).join('/');
52
+ }
53
+ catch {
54
+ return file;
55
+ }
56
+ })();
57
+ const updateMetrics = {
58
+ file: updateRel,
59
+ kind: classifyHmrUpdateKind(file),
60
+ t0: Date.now(),
61
+ tAfterAwait: 0,
62
+ tAfterFramework: 0,
63
+ tEnd: 0,
64
+ invalidated: 0,
65
+ recipients: 0,
66
+ // Narrowing diagnostic — populated by the angular branch when
67
+ // the changed file is `.ts`, otherwise remains undefined and is
68
+ // omitted from the summary line entirely.
69
+ narrowed: undefined,
70
+ emitted: false,
71
+ };
72
+ // Broadcast a "pending" notification at the very start of
73
+ // handleHotUpdate so the client can show the HMR-applying
74
+ // overlay BEFORE we spend time on graph updates / transforms /
75
+ // dependency analysis (typically 7–200ms on a warm cache).
76
+ // Without this, the overlay only appears at `ns:angular-update`
77
+ // broadcast time and the user perceives a "delayed" reaction
78
+ // to their save.
79
+ //
80
+ // Fire-and-forget: a failed pending broadcast must never
81
+ // hold up the actual update. The client treats receipt of
82
+ // `ns:angular-update` (or `ns:css-updates`) as authoritative;
83
+ // the pending message is purely a UX hint.
84
+ try {
85
+ const pendingPayload = JSON.stringify(createHmrPendingMessage({
86
+ origin: getServerOrigin(server),
87
+ path: updateMetrics.file,
88
+ kind: updateMetrics.kind,
89
+ timestamp: updateMetrics.t0,
90
+ }));
91
+ wss.clients.forEach((client) => {
92
+ if (isSocketClientOpen(client)) {
93
+ try {
94
+ client.send(pendingPayload);
95
+ }
96
+ catch { }
97
+ }
98
+ });
99
+ }
100
+ catch { }
101
+ const emitHmrUpdateSummary = () => {
102
+ if (updateMetrics.emitted)
103
+ return;
104
+ updateMetrics.emitted = true;
105
+ updateMetrics.tEnd = Date.now();
106
+ try {
107
+ const awaitMs = (updateMetrics.tAfterAwait || updateMetrics.t0) - updateMetrics.t0;
108
+ const frameworkMs = (updateMetrics.tAfterFramework || updateMetrics.tAfterAwait || updateMetrics.t0) - (updateMetrics.tAfterAwait || updateMetrics.t0);
109
+ const broadcastMs = updateMetrics.tEnd - (updateMetrics.tAfterFramework || updateMetrics.tAfterAwait || updateMetrics.t0);
110
+ const totalMs = updateMetrics.tEnd - updateMetrics.t0;
111
+ console.info(formatHmrUpdateSummary({
112
+ file: updateMetrics.file,
113
+ kind: updateMetrics.kind,
114
+ awaitMs,
115
+ frameworkMs,
116
+ broadcastMs,
117
+ totalMs,
118
+ invalidated: updateMetrics.invalidated,
119
+ recipients: updateMetrics.recipients,
120
+ narrowed: updateMetrics.narrowed,
121
+ }));
122
+ }
123
+ catch { }
124
+ };
125
+ // The first /ns/m request kicks off populateInitialGraph in the
126
+ // background. If an HMR update races in before that walk
127
+ // completes, we'd lose transitive-importer data. Await
128
+ // completion here so the delta computation below always sees a
129
+ // populated graph.
130
+ if (graphInitialPopulationPromise) {
131
+ try {
132
+ await graphInitialPopulationPromise;
133
+ }
134
+ catch { }
135
+ }
136
+ updateMetrics.tAfterAwait = Date.now();
137
+ // Graph update for this file change (wrapped to avoid aborting rest of handler)
138
+ try {
139
+ // Angular HTML templates opt out via `skipDefaultGraphUpdate` — their tail
140
+ // re-queries the graph and drives the in-place swap / reboot itself.
141
+ const skipDefaultGraphUpdate = strategy.skipDefaultGraphUpdate?.(file) ?? false;
142
+ if (!skipDefaultGraphUpdate) {
143
+ const graphTargets = collectGraphUpdateModulesForHotUpdate({
144
+ file,
145
+ flavor: strategy.flavor,
146
+ modules: ctx.modules,
147
+ getModuleById: (id) => server.moduleGraph.getModuleById(id),
148
+ verbose,
149
+ });
150
+ for (const mod of graphTargets) {
151
+ if (!mod?.id)
152
+ continue;
153
+ try {
154
+ const transformed = await server.transformRequest(mod.id);
155
+ const code = transformed?.code || '';
156
+ // Import analysis runs inside the transform, so the module's edges
157
+ // are current only after it — read before, a newly added import is
158
+ // missing from the graph until the NEXT save, and a client walking
159
+ // the reverse graph to find accepting importers never sees it.
160
+ const deps = Array.from(mod.importedModules || [])
161
+ .map((m) => (m.id || '').replace(/\?.*$/, ''))
162
+ .filter(Boolean);
163
+ moduleGraph.upsert((mod.id || '').replace(/\?.*$/, ''), code, deps, {
164
+ emitDeltaOnInsert: true,
165
+ // Defer the delta broadcast until AFTER the framework
166
+ // hot-update handler has had a chance to invalidate the
167
+ // shared transform-request cache + Vite's moduleGraph
168
+ // for the changed file and its transitive importers.
169
+ // Otherwise the client races: it receives the delta
170
+ // (eviction + re-import via tagged URL) before the
171
+ // server has purged its caches, and the re-import is
172
+ // served from cache → V8 evaluates the previous save's
173
+ // transformed code → patchRegistry runs against an
174
+ // unchanged source → the visible page is "one save
175
+ // behind". Angular has always taken this path; Solid
176
+ // needs the same contract because Solid HMR depends
177
+ // on the client re-fetching the just-changed module
178
+ // to drive `solid-refresh.patchRegistry`.
179
+ broadcastDelta: !strategy.deferDeltaBroadcast,
180
+ });
181
+ }
182
+ catch (error) {
183
+ if (verbose)
184
+ console.warn('[hmr-ws][v2] failed graph update target', mod.id, error);
185
+ }
186
+ }
187
+ }
188
+ }
189
+ catch (e) {
190
+ if (verbose)
191
+ console.warn('[hmr-ws][v2] failed graph update', e);
192
+ }
193
+ const root = server.config.root || process.cwd();
194
+ let deferredCssUpdates;
195
+ // CSS hot-update — handled BEFORE the project-scope filter because
196
+ // workspace deps (component `styleUrls`, `@import` partials) live outside
197
+ // `<root>/`. We distinguish two kinds of style edit and apply each
198
+ // correctly on the device — this is the fix for the regression where
199
+ // component `styleUrls` edits were misrouted to a global `app.css` refresh
200
+ // and silently did nothing:
201
+ //
202
+ // • GLOBAL stylesheet — the app entry CSS itself OR one of its `@import`
203
+ // deps (tracked via `getAppCssState().deps`). Broadcast the app entry
204
+ // CSS path so Vite re-runs PostCSS through the `@import` chain; the
205
+ // device replaces the boot-time `app.css`-tagged selectors.
206
+ //
207
+ // • COMPONENT style (`styleUrls`, including workspace-library
208
+ // components). Broadcast the style file's OWN path under a per-file
209
+ // tag. The device fetches that component's CSS and replaces just that
210
+ // file's selectors (`addTaggedAdditionalCSS` keyed by the file path),
211
+ // re-styling the live view without a reboot or `ɵɵreplaceMetadata`
212
+ // swap. `app.css` is never involved — it does not contain the
213
+ // component's inlined styles. Using a per-file tag (instead of the
214
+ // shared `app.css` tag) avoids clobbering the global stylesheet.
215
+ if (file.endsWith('.css')) {
216
+ const fileAbs = path.resolve(file).replace(/\\/g, '/');
217
+ const appCssState = getAppCssState(server);
218
+ const appEntryCssAbs = (appCssState?.path || path.resolve(root, APP_ROOT_DIR, 'app.css')).replace(/\\/g, '/');
219
+ const isGlobalStyle = fileAbs === appEntryCssAbs || !!appCssState?.deps?.has(fileAbs);
220
+ // Component-scoped style edit the framework applies in place itself
221
+ // (Angular + Analog liveReload → `angular:component-update`). Suppress
222
+ // the `ns:css-updates` broadcast: it can't win the emulated-scoping
223
+ // specificity battle anyway, AND the device's `?direct=1` fetch would
224
+ // create the css `?direct` module that stops the framework from
225
+ // re-emitting its component-update on subsequent edits. The framework's
226
+ // own `handleHotUpdate` (a separate plugin) drives the update.
227
+ if (!isGlobalStyle && strategy.ownsComponentStyleHmr?.(server)) {
228
+ updateMetrics.tAfterFramework = Date.now();
229
+ if (verbose)
230
+ console.log(`[hmr-ws] component style edit ${file} → left to framework component-update (no css broadcast)`);
231
+ emitHmrUpdateSummary();
232
+ return null;
233
+ }
234
+ const toRootRel = (absOrFile) => '/' + path.posix.normalize(path.relative(root, absOrFile)).split(path.sep).join('/');
235
+ // GLOBAL → app entry CSS path (default `app.css` tag on the client),
236
+ // through the guarded canonical helper. COMPONENT → the style file's
237
+ // OWN path (may legitimately escape the root for workspace libs).
238
+ const broadcastPath = isGlobalStyle ? appCssRootRelPath(root, appEntryCssAbs) : toRootRel(file);
239
+ const tag = isGlobalStyle ? undefined : broadcastPath;
240
+ updateMetrics.tAfterFramework = Date.now();
241
+ if (!broadcastPath) {
242
+ if (verbose)
243
+ console.warn(`[hmr-ws] global app.css path escapes the project root; skipped CSS broadcast for ${file}`);
244
+ emitHmrUpdateSummary();
245
+ return null;
246
+ }
247
+ try {
248
+ const msg = buildCssUpdatesMessage(server, [buildCssUpdateItem(broadcastPath, { tag })]);
249
+ wss.clients.forEach((client) => {
250
+ if (isSocketClientOpen(client)) {
251
+ client.send(JSON.stringify(msg));
252
+ updateMetrics.recipients += 1;
253
+ }
254
+ });
255
+ }
256
+ catch (error) {
257
+ console.warn('[hmr-ws] CSS update failed:', error);
258
+ }
259
+ if (verbose)
260
+ console.log(`[hmr-ws] Hot update for: ${file} → broadcast CSS ${broadcastPath} (${isGlobalStyle ? 'global app.css' : `component, tag=${tag}`})`);
261
+ emitHmrUpdateSummary();
262
+ return null;
263
+ }
264
+ // No second project-scope filter here. The authoritative allowlist is the
265
+ // `isWithinHmrScope` gate at the top of this prologue — app source dir plus
266
+ // tsconfig-configured shared-library roots. An older, narrower re-filter at
267
+ // this point (project-root `src`/`core`/app-dir substring checks) silently
268
+ // dropped workspace-library files: their `.ts`/`.html` edits never reached
269
+ // the framework tails, so a monorepo lib component's class edit could only
270
+ // flow through Analog's in-place `ɵɵreplaceMetadata` path — which reuses
271
+ // the live instance and can NEVER apply class-body changes — while the
272
+ // Angular reboot broadcast (`ns:angular-update`) that actually delivers
273
+ // them never fired. The visible symptom: editing a lib component's class
274
+ // (e.g. converting inputs to signals) appears to hot-update but the running
275
+ // instance keeps the old shape, and the next template edit that uses the
276
+ // new shape throws (`ctx.x is not a function`) on every subsequent save.
277
+ if (verbose)
278
+ console.log(`[hmr-ws] Hot update for: ${file}`);
279
+ // Tailwind / content-scanning CSS routing for non-CSS edits — see
280
+ // `processContentCssUpdate` for the full background. This MUST run before
281
+ // the framework branches because several of them return early (notably the
282
+ // Angular HTML live-reload path), and the broadcast must land alongside
283
+ // the framework's own template-update payload.
284
+ if (!file.endsWith('.css')) {
285
+ const contentCss = await processContentCssUpdate({
286
+ server,
287
+ file,
288
+ root,
289
+ wss,
290
+ isSocketClientOpen,
291
+ deferToFrameworkUpdate: strategy.defersContentCssToFrameworkUpdate?.(file) ?? false,
292
+ verbose,
293
+ });
294
+ deferredCssUpdates = contentCss.deferredCssUpdates;
295
+ updateMetrics.recipients += contentCss.recipients;
296
+ }
297
+ return { root, updateRel, metrics: updateMetrics, emitSummary: emitHmrUpdateSummary, deferredCssUpdates };
298
+ }
299
+ //# sourceMappingURL=websocket-hot-update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket-hot-update.js","sourceRoot":"","sources":["../../../../../packages/vite/hmr/server/websocket-hot-update.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { ViteDevServer } from 'vite';
2
+ import type { FrameworkServerStrategy } from './framework-strategy.js';
3
+ export interface RegisterImportMapRouteOptions {
4
+ /** The active framework strategy — only its `flavor` is consulted. */
5
+ getStrategy: () => FrameworkServerStrategy | undefined;
6
+ }
7
+ /**
8
+ * Registers the device import-map endpoint: `GET /ns/import-map.json`.
9
+ *
10
+ * Returns the import map + runtime config consumed by ns:module `configureLoader()`
11
+ * on the device during cold boot. Extracted verbatim from
12
+ * `createHmrWebSocketPlugin`; the only injected dependency is the active
13
+ * framework strategy (for its `flavor`).
14
+ */
15
+ export declare function registerImportMapRoute(server: ViteDevServer, options: RegisterImportMapRouteOptions): void;
@@ -0,0 +1,51 @@
1
+ import { buildRuntimeConfig } from './import-map.js';
2
+ import { getServerOrigin } from './server-origin.js';
3
+ /**
4
+ * Registers the device import-map endpoint: `GET /ns/import-map.json`.
5
+ *
6
+ * Returns the import map + runtime config consumed by ns:module `configureLoader()`
7
+ * on the device during cold boot. Extracted verbatim from
8
+ * `createHmrWebSocketPlugin`; the only injected dependency is the active
9
+ * framework strategy (for its `flavor`).
10
+ */
11
+ export function registerImportMapRoute(server, options) {
12
+ const { getStrategy } = options;
13
+ server.middlewares.use(async (req, res, next) => {
14
+ try {
15
+ const urlObj = new URL(req.url || '', 'http://localhost');
16
+ if (urlObj.pathname !== '/ns/import-map.json')
17
+ return next();
18
+ res.setHeader('Access-Control-Allow-Origin', '*');
19
+ res.setHeader('Access-Control-Allow-Methods', 'GET, OPTIONS');
20
+ if (req.method === 'OPTIONS') {
21
+ res.statusCode = 204;
22
+ res.end();
23
+ return;
24
+ }
25
+ // Use the single trusted origin resolver (https-aware, validated, and
26
+ // byte-identical to the origin baked into bundle.mjs by dev-host.ts).
27
+ // Do NOT derive the origin from the client-supplied `Host` header: the
28
+ // dev server binds 0.0.0.0, so a spoofed Host would rewrite the origin
29
+ // of every device module URL.
30
+ const origin = getServerOrigin(server);
31
+ const strategy = getStrategy();
32
+ const runtimeConfig = buildRuntimeConfig({
33
+ origin,
34
+ flavor: strategy?.flavor || 'typescript',
35
+ strategy,
36
+ });
37
+ res.setHeader('Content-Type', 'application/json');
38
+ res.end(JSON.stringify({
39
+ importMap: JSON.parse(runtimeConfig.importMap),
40
+ volatilePatterns: runtimeConfig.volatilePatterns,
41
+ canonicalization: runtimeConfig.canonicalization,
42
+ }, null, 2));
43
+ }
44
+ catch (err) {
45
+ console.error('[import-map] error generating import map:', err?.message || err);
46
+ res.statusCode = 500;
47
+ res.end(JSON.stringify({ error: 'Failed to generate import map' }));
48
+ }
49
+ });
50
+ }
51
+ //# sourceMappingURL=websocket-import-map-route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket-import-map-route.js","sourceRoot":"","sources":["../../../../../packages/vite/hmr/server/websocket-import-map-route.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAOrD;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAqB,EAAE,OAAsC;IACnG,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;IAChC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QAC/C,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE,kBAAkB,CAAC,CAAC;YAC1D,IAAI,MAAM,CAAC,QAAQ,KAAK,qBAAqB;gBAAE,OAAO,IAAI,EAAE,CAAC;YAE7D,GAAG,CAAC,SAAS,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;YAClD,GAAG,CAAC,SAAS,CAAC,8BAA8B,EAAE,cAAc,CAAC,CAAC;YAC9D,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC9B,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;gBACrB,GAAG,CAAC,GAAG,EAAE,CAAC;gBACV,OAAO;YACR,CAAC;YAED,sEAAsE;YACtE,sEAAsE;YACtE,uEAAuE;YACvE,uEAAuE;YACvE,8BAA8B;YAC9B,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;YAEvC,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;YAC/B,MAAM,aAAa,GAAG,kBAAkB,CAAC;gBACxC,MAAM;gBACN,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,YAAY;gBACxC,QAAQ;aACR,CAAC,CAAC;YAEH,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;YAClD,GAAG,CAAC,GAAG,CACN,IAAI,CAAC,SAAS,CACb;gBACC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC;gBAC9C,gBAAgB,EAAE,aAAa,CAAC,gBAAgB;gBAChD,gBAAgB,EAAE,aAAa,CAAC,gBAAgB;aAChD,EACD,IAAI,EACJ,CAAC,CACD,CACD,CAAC;QACH,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YACnB,OAAO,CAAC,KAAK,CAAC,2CAA2C,EAAE,GAAG,EAAE,OAAO,IAAI,GAAG,CAAC,CAAC;YAChF,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;YACrB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,+BAA+B,EAAE,CAAC,CAAC,CAAC;QACrE,CAAC;IACF,CAAC,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,21 @@
1
+ export interface EnsureNativeScriptModuleBindingsOptions {
2
+ preserveNonPluginVendorImports?: boolean;
3
+ resolvedSpecifierOverrides?: Map<string, string>;
4
+ /**
5
+ * Rewrite vendor/plugin imports to their `/ns/m/node_modules/<pkg>` HTTP
6
+ * ESM form instead of the `__nsVendorRequire` registry shim.
7
+ *
8
+ * Worker realms need this: the vendor registry (`__nsVendorRegistry` /
9
+ * `__nsRequire`) is installed by the MAIN realm's dev-session bootstrap
10
+ * and never exists inside a `new Worker(...)` context, so the registry
11
+ * shim's fallback to the native `require()` fails for every vendor
12
+ * package (observed with `@nativescript/zip` in a zip worker on a fresh
13
+ * install — the first boot's DB unzip was the first code path to ever
14
+ * exercise a vendor require inside a worker). The HTTP form gives the
15
+ * worker its own realm-local copy via the deps-bundle bridge — the same
16
+ * isolation semantics webpack's per-worker bundles had.
17
+ */
18
+ vendorImportsAsHttp?: boolean;
19
+ }
20
+ export declare function ensureNativeScriptModuleBindings(code: string, options?: EnsureNativeScriptModuleBindingsOptions): string;
21
+ export declare function getProcessCodeResolvedSpecifierOverrides(sourceId: string | undefined, projectRoot: string): Map<string, string> | undefined;