@nativescript/vite 8.0.0-alpha.4 → 8.0.0-alpha.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 (410) hide show
  1. package/README.md +51 -11
  2. package/bin/cli.cjs +8 -14
  3. package/configuration/angular.d.ts +34 -1
  4. package/configuration/angular.js +376 -165
  5. package/configuration/angular.js.map +1 -1
  6. package/configuration/base.js +256 -30
  7. package/configuration/base.js.map +1 -1
  8. package/configuration/javascript.js +12 -90
  9. package/configuration/javascript.js.map +1 -1
  10. package/configuration/solid.js +33 -4
  11. package/configuration/solid.js.map +1 -1
  12. package/configuration/typescript.js +10 -90
  13. package/configuration/typescript.js.map +1 -1
  14. package/helpers/app-components.d.ts +2 -1
  15. package/helpers/app-components.js.map +1 -1
  16. package/helpers/app-css-state.d.ts +8 -0
  17. package/helpers/app-css-state.js +8 -0
  18. package/helpers/app-css-state.js.map +1 -0
  19. package/helpers/bundler-context.d.ts +11 -0
  20. package/helpers/bundler-context.js +71 -0
  21. package/helpers/bundler-context.js.map +1 -0
  22. package/helpers/config-as-json.js +10 -0
  23. package/helpers/config-as-json.js.map +1 -1
  24. package/helpers/css-platform-plugin.d.ts +14 -0
  25. package/helpers/css-platform-plugin.js +43 -25
  26. package/helpers/css-platform-plugin.js.map +1 -1
  27. package/helpers/dev-host.d.ts +360 -0
  28. package/helpers/dev-host.js +692 -0
  29. package/helpers/dev-host.js.map +1 -0
  30. package/helpers/dynamic-import-plugin.js +1 -1
  31. package/helpers/dynamic-import-plugin.js.map +1 -1
  32. package/helpers/esbuild-platform-resolver.js +4 -1
  33. package/helpers/esbuild-platform-resolver.js.map +1 -1
  34. package/helpers/external-configs.d.ts +10 -12
  35. package/helpers/external-configs.js +54 -35
  36. package/helpers/external-configs.js.map +1 -1
  37. package/helpers/global-defines.d.ts +128 -0
  38. package/helpers/global-defines.js +174 -11
  39. package/helpers/global-defines.js.map +1 -1
  40. package/helpers/hmr-scope.d.ts +26 -0
  41. package/helpers/hmr-scope.js +67 -0
  42. package/helpers/hmr-scope.js.map +1 -0
  43. package/helpers/init.js +0 -18
  44. package/helpers/init.js.map +1 -1
  45. package/helpers/logging.d.ts +1 -0
  46. package/helpers/logging.js +65 -4
  47. package/helpers/logging.js.map +1 -1
  48. package/helpers/main-entry.d.ts +3 -1
  49. package/helpers/main-entry.js +444 -50
  50. package/helpers/main-entry.js.map +1 -1
  51. package/helpers/nativeclass-esbuild-plugin.d.ts +2 -1
  52. package/helpers/nativeclass-esbuild-plugin.js.map +1 -1
  53. package/helpers/nativeclass-transform.js +5 -6
  54. package/helpers/nativeclass-transform.js.map +1 -1
  55. package/helpers/nativeclass-transformer-plugin.d.ts +9 -2
  56. package/helpers/nativeclass-transformer-plugin.js +157 -14
  57. package/helpers/nativeclass-transformer-plugin.js.map +1 -1
  58. package/helpers/nativescript-package-resolver.js +10 -62
  59. package/helpers/nativescript-package-resolver.js.map +1 -1
  60. package/helpers/normalize-id.d.ts +42 -0
  61. package/helpers/normalize-id.js +60 -0
  62. package/helpers/normalize-id.js.map +1 -0
  63. package/helpers/ns-core-url.d.ts +106 -0
  64. package/helpers/ns-core-url.js +225 -0
  65. package/helpers/ns-core-url.js.map +1 -0
  66. package/helpers/optimize-deps.d.ts +16 -0
  67. package/helpers/optimize-deps.js +17 -0
  68. package/helpers/optimize-deps.js.map +1 -0
  69. package/helpers/package-platform-aliases.js +34 -49
  70. package/helpers/package-platform-aliases.js.map +1 -1
  71. package/helpers/platform-types.d.ts +2 -0
  72. package/helpers/platform-types.js +2 -0
  73. package/helpers/platform-types.js.map +1 -0
  74. package/helpers/postcss-platform-config.d.ts +17 -1
  75. package/helpers/postcss-platform-config.js +20 -37
  76. package/helpers/postcss-platform-config.js.map +1 -1
  77. package/helpers/project.d.ts +35 -0
  78. package/helpers/project.js +120 -2
  79. package/helpers/project.js.map +1 -1
  80. package/helpers/resolve-main-field-platform.d.ts +20 -0
  81. package/helpers/resolve-main-field-platform.js +49 -0
  82. package/helpers/resolve-main-field-platform.js.map +1 -0
  83. package/helpers/resolver.js +17 -2
  84. package/helpers/resolver.js.map +1 -1
  85. package/helpers/theme-core-plugins.js +1 -1
  86. package/helpers/theme-core-plugins.js.map +1 -1
  87. package/helpers/ts-config-paths.d.ts +14 -0
  88. package/helpers/ts-config-paths.js +90 -9
  89. package/helpers/ts-config-paths.js.map +1 -1
  90. package/helpers/typescript-check.d.ts +2 -1
  91. package/helpers/typescript-check.js.map +1 -1
  92. package/helpers/ui-registration.d.ts +21 -0
  93. package/helpers/ui-registration.js +156 -0
  94. package/helpers/ui-registration.js.map +1 -0
  95. package/helpers/utils.js +1 -2
  96. package/helpers/utils.js.map +1 -1
  97. package/helpers/workers.d.ts +20 -19
  98. package/helpers/workers.js +624 -4
  99. package/helpers/workers.js.map +1 -1
  100. package/hmr/client/css-handler.d.ts +2 -1
  101. package/hmr/client/css-handler.js +50 -26
  102. package/hmr/client/css-handler.js.map +1 -1
  103. package/hmr/client/css-update-overlay.d.ts +18 -0
  104. package/hmr/client/css-update-overlay.js +27 -0
  105. package/hmr/client/css-update-overlay.js.map +1 -0
  106. package/hmr/client/framework-client-strategy.d.ts +79 -0
  107. package/hmr/client/framework-client-strategy.js +19 -0
  108. package/hmr/client/framework-client-strategy.js.map +1 -0
  109. package/hmr/client/hmr-pending-overlay.d.ts +13 -0
  110. package/hmr/client/hmr-pending-overlay.js +60 -0
  111. package/hmr/client/hmr-pending-overlay.js.map +1 -0
  112. package/hmr/client/index.js +787 -211
  113. package/hmr/client/index.js.map +1 -1
  114. package/hmr/client/utils.d.ts +7 -1
  115. package/hmr/client/utils.js +207 -29
  116. package/hmr/client/utils.js.map +1 -1
  117. package/hmr/entry-runtime.d.ts +2 -1
  118. package/hmr/entry-runtime.js +256 -69
  119. package/hmr/entry-runtime.js.map +1 -1
  120. package/hmr/frameworks/angular/build/angular-linker.d.ts +12 -0
  121. package/hmr/frameworks/angular/build/angular-linker.js +109 -0
  122. package/hmr/frameworks/angular/build/angular-linker.js.map +1 -0
  123. package/hmr/frameworks/angular/build/inject-component-hmr-registration.d.ts +112 -0
  124. package/hmr/frameworks/angular/build/inject-component-hmr-registration.js +291 -0
  125. package/hmr/frameworks/angular/build/inject-component-hmr-registration.js.map +1 -0
  126. package/hmr/frameworks/angular/build/inject-hmr-vite-ignore.d.ts +75 -0
  127. package/hmr/frameworks/angular/build/inject-hmr-vite-ignore.js +221 -0
  128. package/hmr/frameworks/angular/build/inject-hmr-vite-ignore.js.map +1 -0
  129. package/{helpers/angular → hmr/frameworks/angular/build}/inline-decorator-component-templates.js +1 -170
  130. package/hmr/frameworks/angular/build/inline-decorator-component-templates.js.map +1 -0
  131. package/hmr/frameworks/angular/build/js-lexer.d.ts +4 -0
  132. package/{helpers/angular/synthesize-decorator-ctor-parameters.js → hmr/frameworks/angular/build/js-lexer.js} +22 -96
  133. package/hmr/frameworks/angular/build/js-lexer.js.map +1 -0
  134. package/hmr/frameworks/angular/build/shared-linker.d.ts +39 -0
  135. package/hmr/frameworks/angular/build/shared-linker.js +128 -0
  136. package/hmr/frameworks/angular/build/shared-linker.js.map +1 -0
  137. package/hmr/frameworks/angular/build/synthesize-decorator-ctor-parameters.js +88 -0
  138. package/hmr/frameworks/angular/build/synthesize-decorator-ctor-parameters.js.map +1 -0
  139. package/{helpers/angular → hmr/frameworks/angular/build}/synthesize-injectable-factories.js +1 -174
  140. package/hmr/frameworks/angular/build/synthesize-injectable-factories.js.map +1 -0
  141. package/{helpers/angular → hmr/frameworks/angular/build}/util.d.ts +1 -0
  142. package/hmr/frameworks/angular/build/util.js +155 -0
  143. package/hmr/frameworks/angular/build/util.js.map +1 -0
  144. package/hmr/frameworks/angular/client/index.d.ts +1 -0
  145. package/hmr/frameworks/angular/client/index.js +803 -21
  146. package/hmr/frameworks/angular/client/index.js.map +1 -1
  147. package/hmr/frameworks/angular/client/strategy.d.ts +9 -0
  148. package/hmr/frameworks/angular/client/strategy.js +19 -0
  149. package/hmr/frameworks/angular/client/strategy.js.map +1 -0
  150. package/hmr/frameworks/angular/server/angular-root-component.d.ts +79 -0
  151. package/hmr/frameworks/angular/server/angular-root-component.js +149 -0
  152. package/hmr/frameworks/angular/server/angular-root-component.js.map +1 -0
  153. package/hmr/frameworks/angular/server/linker.js +1 -4
  154. package/hmr/frameworks/angular/server/linker.js.map +1 -1
  155. package/hmr/frameworks/angular/server/strategy.js +460 -12
  156. package/hmr/frameworks/angular/server/strategy.js.map +1 -1
  157. package/hmr/{server → frameworks/angular/server}/websocket-angular-entry.js +2 -2
  158. package/hmr/frameworks/angular/server/websocket-angular-entry.js.map +1 -0
  159. package/hmr/{server → frameworks/angular/server}/websocket-angular-hot-update.d.ts +17 -11
  160. package/hmr/frameworks/angular/server/websocket-angular-hot-update.js +336 -0
  161. package/hmr/frameworks/angular/server/websocket-angular-hot-update.js.map +1 -0
  162. package/hmr/frameworks/solid/build/solid-jsx-deps.d.ts +15 -0
  163. package/hmr/frameworks/solid/build/solid-jsx-deps.js +178 -0
  164. package/hmr/frameworks/solid/build/solid-jsx-deps.js.map +1 -0
  165. package/hmr/frameworks/solid/server/strategy.js +291 -16
  166. package/hmr/frameworks/solid/server/strategy.js.map +1 -1
  167. package/hmr/frameworks/typescript/server/strategy.js +38 -14
  168. package/hmr/frameworks/typescript/server/strategy.js.map +1 -1
  169. package/hmr/frameworks/vue/client/dep-propagation.d.ts +36 -0
  170. package/hmr/frameworks/vue/client/dep-propagation.js +101 -0
  171. package/hmr/frameworks/vue/client/dep-propagation.js.map +1 -0
  172. package/hmr/frameworks/vue/client/index.d.ts +8 -0
  173. package/hmr/frameworks/vue/client/index.js +56 -243
  174. package/hmr/frameworks/vue/client/index.js.map +1 -1
  175. package/hmr/frameworks/vue/client/strategy.d.ts +33 -0
  176. package/hmr/frameworks/vue/client/strategy.js +157 -0
  177. package/hmr/frameworks/vue/client/strategy.js.map +1 -0
  178. package/hmr/frameworks/vue/client/vue-sfc-update-overlay.d.ts +49 -0
  179. package/hmr/frameworks/vue/client/vue-sfc-update-overlay.js +142 -0
  180. package/hmr/frameworks/vue/client/vue-sfc-update-overlay.js.map +1 -0
  181. package/hmr/frameworks/vue/server/sfc-route-assemble.d.ts +7 -0
  182. package/hmr/frameworks/vue/server/sfc-route-assemble.js +747 -0
  183. package/hmr/frameworks/vue/server/sfc-route-assemble.js.map +1 -0
  184. package/hmr/frameworks/vue/server/sfc-route-meta.d.ts +7 -0
  185. package/hmr/frameworks/vue/server/sfc-route-meta.js +80 -0
  186. package/hmr/frameworks/vue/server/sfc-route-meta.js.map +1 -0
  187. package/hmr/frameworks/vue/server/sfc-route-serve.d.ts +8 -0
  188. package/hmr/frameworks/vue/server/sfc-route-serve.js +459 -0
  189. package/hmr/frameworks/vue/server/sfc-route-serve.js.map +1 -0
  190. package/hmr/frameworks/vue/server/sfc-route-shared.d.ts +38 -0
  191. package/hmr/frameworks/vue/server/sfc-route-shared.js +48 -0
  192. package/hmr/frameworks/vue/server/sfc-route-shared.js.map +1 -0
  193. package/hmr/frameworks/vue/server/strategy.d.ts +35 -0
  194. package/hmr/frameworks/vue/server/strategy.js +278 -1
  195. package/hmr/frameworks/vue/server/strategy.js.map +1 -1
  196. package/hmr/frameworks/vue/server/websocket-sfc.d.ts +15 -0
  197. package/hmr/frameworks/vue/server/websocket-sfc.js +20 -0
  198. package/hmr/frameworks/vue/server/websocket-sfc.js.map +1 -0
  199. package/hmr/helpers/ast-normalizer.d.ts +3 -1
  200. package/hmr/helpers/ast-normalizer.js +77 -10
  201. package/hmr/helpers/ast-normalizer.js.map +1 -1
  202. package/hmr/helpers/cjs-named-exports.d.ts +23 -0
  203. package/hmr/helpers/cjs-named-exports.js +152 -0
  204. package/hmr/helpers/cjs-named-exports.js.map +1 -0
  205. package/hmr/helpers/package-exports.d.ts +16 -0
  206. package/hmr/helpers/package-exports.js +396 -0
  207. package/hmr/helpers/package-exports.js.map +1 -0
  208. package/hmr/server/constants.js +20 -5
  209. package/hmr/server/constants.js.map +1 -1
  210. package/hmr/server/core-sanitize.d.ts +90 -7
  211. package/hmr/server/core-sanitize.js +211 -56
  212. package/hmr/server/core-sanitize.js.map +1 -1
  213. package/hmr/server/device-transform-helpers.d.ts +24 -0
  214. package/hmr/server/device-transform-helpers.js +369 -0
  215. package/hmr/server/device-transform-helpers.js.map +1 -0
  216. package/hmr/server/framework-strategy.d.ts +108 -11
  217. package/hmr/server/hmr-module-graph.d.ts +37 -0
  218. package/hmr/server/hmr-module-graph.js +214 -0
  219. package/hmr/server/hmr-module-graph.js.map +1 -0
  220. package/hmr/server/import-map.d.ts +11 -2
  221. package/hmr/server/import-map.js +95 -44
  222. package/hmr/server/import-map.js.map +1 -1
  223. package/hmr/server/index.js +7 -16
  224. package/hmr/server/index.js.map +1 -1
  225. package/hmr/server/ns-core-cjs-shape.d.ts +204 -0
  226. package/hmr/server/ns-core-cjs-shape.js +271 -0
  227. package/hmr/server/ns-core-cjs-shape.js.map +1 -0
  228. package/hmr/server/ns-rt-bridge.d.ts +51 -0
  229. package/hmr/server/ns-rt-bridge.js +131 -0
  230. package/hmr/server/ns-rt-bridge.js.map +1 -0
  231. package/hmr/server/ns-rt-route.d.ts +5 -0
  232. package/hmr/server/ns-rt-route.js +38 -0
  233. package/hmr/server/ns-rt-route.js.map +1 -0
  234. package/hmr/server/perf-instrumentation.d.ts +114 -0
  235. package/hmr/server/perf-instrumentation.js +197 -0
  236. package/hmr/server/perf-instrumentation.js.map +1 -0
  237. package/hmr/server/process-code-for-device.d.ts +14 -0
  238. package/hmr/server/process-code-for-device.js +702 -0
  239. package/hmr/server/process-code-for-device.js.map +1 -0
  240. package/hmr/server/require-guard.d.ts +1 -0
  241. package/hmr/server/require-guard.js +12 -0
  242. package/hmr/server/require-guard.js.map +1 -0
  243. package/hmr/server/rewrite-imports.d.ts +2 -0
  244. package/hmr/server/rewrite-imports.js +600 -0
  245. package/hmr/server/rewrite-imports.js.map +1 -0
  246. package/hmr/server/route-helpers.d.ts +7 -0
  247. package/hmr/server/route-helpers.js +13 -0
  248. package/hmr/server/route-helpers.js.map +1 -0
  249. package/hmr/server/server-origin.d.ts +2 -0
  250. package/hmr/server/server-origin.js +83 -0
  251. package/hmr/server/server-origin.js.map +1 -0
  252. package/hmr/server/shared-transform-request.js +13 -7
  253. package/hmr/server/shared-transform-request.js.map +1 -1
  254. package/hmr/server/transform-cache-invalidation.d.ts +37 -0
  255. package/hmr/server/transform-cache-invalidation.js +156 -0
  256. package/hmr/server/transform-cache-invalidation.js.map +1 -0
  257. package/hmr/server/vendor-bare-module-shims.d.ts +4 -0
  258. package/hmr/server/vendor-bare-module-shims.js +80 -0
  259. package/hmr/server/vendor-bare-module-shims.js.map +1 -0
  260. package/hmr/server/vite-plugin.js +72 -42
  261. package/hmr/server/vite-plugin.js.map +1 -1
  262. package/hmr/server/websocket-core-bridge.d.ts +45 -6
  263. package/hmr/server/websocket-core-bridge.js +81 -77
  264. package/hmr/server/websocket-core-bridge.js.map +1 -1
  265. package/hmr/server/websocket-css-hot-update.d.ts +33 -0
  266. package/hmr/server/websocket-css-hot-update.js +65 -0
  267. package/hmr/server/websocket-css-hot-update.js.map +1 -0
  268. package/hmr/server/websocket-device-transform.d.ts +3 -0
  269. package/hmr/server/websocket-device-transform.js +7 -0
  270. package/hmr/server/websocket-device-transform.js.map +1 -0
  271. package/hmr/server/websocket-graph-upsert.d.ts +15 -0
  272. package/hmr/server/websocket-graph-upsert.js +20 -0
  273. package/hmr/server/websocket-graph-upsert.js.map +1 -1
  274. package/hmr/server/websocket-hmr-pending.d.ts +37 -0
  275. package/hmr/server/websocket-hmr-pending.js +55 -0
  276. package/hmr/server/websocket-hmr-pending.js.map +1 -0
  277. package/hmr/server/websocket-hot-update.d.ts +77 -0
  278. package/hmr/server/websocket-hot-update.js +360 -0
  279. package/hmr/server/websocket-hot-update.js.map +1 -0
  280. package/hmr/server/websocket-import-map-route.d.ts +15 -0
  281. package/hmr/server/websocket-import-map-route.js +50 -0
  282. package/hmr/server/websocket-import-map-route.js.map +1 -0
  283. package/hmr/server/websocket-module-bindings.js +3 -3
  284. package/hmr/server/websocket-module-bindings.js.map +1 -1
  285. package/hmr/server/websocket-module-specifiers.d.ts +66 -2
  286. package/hmr/server/websocket-module-specifiers.js +203 -20
  287. package/hmr/server/websocket-module-specifiers.js.map +1 -1
  288. package/hmr/server/websocket-ns-core.d.ts +21 -0
  289. package/hmr/server/websocket-ns-core.js +311 -0
  290. package/hmr/server/websocket-ns-core.js.map +1 -0
  291. package/hmr/server/websocket-ns-entry.d.ts +21 -0
  292. package/hmr/server/websocket-ns-entry.js +164 -0
  293. package/hmr/server/websocket-ns-entry.js.map +1 -0
  294. package/hmr/server/websocket-ns-m-paths.d.ts +1 -1
  295. package/hmr/server/websocket-ns-m-paths.js +58 -13
  296. package/hmr/server/websocket-ns-m-paths.js.map +1 -1
  297. package/hmr/server/websocket-ns-m-request.d.ts +11 -1
  298. package/hmr/server/websocket-ns-m-request.js +18 -25
  299. package/hmr/server/websocket-ns-m-request.js.map +1 -1
  300. package/hmr/server/websocket-ns-m.d.ts +33 -0
  301. package/hmr/server/websocket-ns-m.js +752 -0
  302. package/hmr/server/websocket-ns-m.js.map +1 -0
  303. package/hmr/server/websocket-served-module-helpers.d.ts +82 -0
  304. package/hmr/server/websocket-served-module-helpers.js +879 -0
  305. package/hmr/server/websocket-served-module-helpers.js.map +1 -0
  306. package/hmr/server/websocket-txn.js +2 -8
  307. package/hmr/server/websocket-txn.js.map +1 -1
  308. package/hmr/server/websocket-vendor-unifier.d.ts +0 -1
  309. package/hmr/server/websocket-vendor-unifier.js +4 -9
  310. package/hmr/server/websocket-vendor-unifier.js.map +1 -1
  311. package/hmr/server/websocket.d.ts +8 -39
  312. package/hmr/server/websocket.js +514 -4030
  313. package/hmr/server/websocket.js.map +1 -1
  314. package/hmr/shared/ns-globals.d.ts +118 -0
  315. package/hmr/shared/ns-globals.js +29 -0
  316. package/hmr/shared/ns-globals.js.map +1 -0
  317. package/hmr/shared/protocol.d.ts +145 -0
  318. package/hmr/shared/protocol.js +28 -0
  319. package/hmr/shared/protocol.js.map +1 -0
  320. package/hmr/shared/runtime/boot-placeholder-ui.d.ts +69 -0
  321. package/hmr/shared/runtime/boot-placeholder-ui.js +101 -0
  322. package/hmr/shared/runtime/boot-placeholder-ui.js.map +1 -0
  323. package/hmr/shared/runtime/boot-progress.d.ts +44 -0
  324. package/hmr/shared/runtime/boot-progress.js +133 -0
  325. package/hmr/shared/runtime/boot-progress.js.map +1 -0
  326. package/hmr/shared/runtime/boot-timeline.d.ts +18 -0
  327. package/hmr/shared/runtime/boot-timeline.js +42 -0
  328. package/hmr/shared/runtime/boot-timeline.js.map +1 -0
  329. package/hmr/shared/runtime/browser-runtime-contract.js.map +1 -1
  330. package/hmr/shared/runtime/dev-overlay-snapshots.d.ts +31 -0
  331. package/hmr/shared/runtime/dev-overlay-snapshots.js +324 -0
  332. package/hmr/shared/runtime/dev-overlay-snapshots.js.map +1 -0
  333. package/hmr/shared/runtime/dev-overlay.d.ts +75 -26
  334. package/hmr/shared/runtime/dev-overlay.js +992 -261
  335. package/hmr/shared/runtime/dev-overlay.js.map +1 -1
  336. package/hmr/shared/runtime/global-scope.d.ts +18 -0
  337. package/hmr/shared/runtime/global-scope.js +21 -0
  338. package/hmr/shared/runtime/global-scope.js.map +1 -0
  339. package/hmr/shared/runtime/hooks.js +2 -1
  340. package/hmr/shared/runtime/hooks.js.map +1 -1
  341. package/hmr/shared/runtime/http-only-boot.js +7 -6
  342. package/hmr/shared/runtime/http-only-boot.js.map +1 -1
  343. package/hmr/shared/runtime/module-provenance.js +4 -6
  344. package/hmr/shared/runtime/module-provenance.js.map +1 -1
  345. package/hmr/shared/runtime/root-placeholder-view.d.ts +19 -0
  346. package/hmr/shared/runtime/root-placeholder-view.js +311 -0
  347. package/hmr/shared/runtime/root-placeholder-view.js.map +1 -0
  348. package/hmr/shared/runtime/root-placeholder.js +371 -197
  349. package/hmr/shared/runtime/root-placeholder.js.map +1 -1
  350. package/hmr/shared/runtime/session-bootstrap.js +168 -4
  351. package/hmr/shared/runtime/session-bootstrap.js.map +1 -1
  352. package/hmr/shared/runtime/vendor-bootstrap.js +3 -10
  353. package/hmr/shared/runtime/vendor-bootstrap.js.map +1 -1
  354. package/hmr/shared/vendor/manifest-collect.d.ts +4 -0
  355. package/hmr/shared/vendor/manifest-collect.js +512 -0
  356. package/hmr/shared/vendor/manifest-collect.js.map +1 -0
  357. package/hmr/shared/vendor/manifest-loader.d.ts +2 -1
  358. package/hmr/shared/vendor/manifest-loader.js +5 -3
  359. package/hmr/shared/vendor/manifest-loader.js.map +1 -1
  360. package/hmr/shared/vendor/manifest.d.ts +1 -7
  361. package/hmr/shared/vendor/manifest.js +102 -741
  362. package/hmr/shared/vendor/manifest.js.map +1 -1
  363. package/hmr/shared/vendor/vendor-device-shim.d.ts +1 -0
  364. package/hmr/shared/vendor/vendor-device-shim.js +208 -0
  365. package/hmr/shared/vendor/vendor-device-shim.js.map +1 -0
  366. package/hmr/shared/vendor/vendor-esbuild-plugins.d.ts +16 -0
  367. package/hmr/shared/vendor/vendor-esbuild-plugins.js +203 -0
  368. package/hmr/shared/vendor/vendor-esbuild-plugins.js.map +1 -0
  369. package/hmr/vendor-bootstrap.d.ts +1 -3
  370. package/hmr/vendor-bootstrap.js +4 -6
  371. package/hmr/vendor-bootstrap.js.map +1 -1
  372. package/index.d.ts +1 -0
  373. package/index.js +5 -0
  374. package/index.js.map +1 -1
  375. package/package.json +55 -11
  376. package/runtime/core-aliases-early.js +25 -55
  377. package/runtime/core-aliases-early.js.map +1 -1
  378. package/helpers/angular/angular-linker.d.ts +0 -13
  379. package/helpers/angular/angular-linker.js +0 -194
  380. package/helpers/angular/angular-linker.js.map +0 -1
  381. package/helpers/angular/inline-decorator-component-templates.js.map +0 -1
  382. package/helpers/angular/shared-linker.d.ts +0 -11
  383. package/helpers/angular/shared-linker.js +0 -75
  384. package/helpers/angular/shared-linker.js.map +0 -1
  385. package/helpers/angular/synthesize-decorator-ctor-parameters.js.map +0 -1
  386. package/helpers/angular/synthesize-injectable-factories.js.map +0 -1
  387. package/helpers/angular/util.js +0 -67
  388. package/helpers/angular/util.js.map +0 -1
  389. package/helpers/prelink-angular.d.ts +0 -2
  390. package/helpers/prelink-angular.js +0 -117
  391. package/helpers/prelink-angular.js.map +0 -1
  392. package/hmr/server/websocket-angular-entry.js.map +0 -1
  393. package/hmr/server/websocket-angular-hot-update.js +0 -239
  394. package/hmr/server/websocket-angular-hot-update.js.map +0 -1
  395. package/hmr/server/websocket-ns-m-finalize.d.ts +0 -32
  396. package/hmr/server/websocket-ns-m-finalize.js +0 -73
  397. package/hmr/server/websocket-ns-m-finalize.js.map +0 -1
  398. package/hmr/server/websocket-runtime-compat.d.ts +0 -19
  399. package/hmr/server/websocket-runtime-compat.js +0 -286
  400. package/hmr/server/websocket-runtime-compat.js.map +0 -1
  401. package/hmr/server/websocket-vue-sfc.d.ts +0 -35
  402. package/hmr/server/websocket-vue-sfc.js +0 -1116
  403. package/hmr/server/websocket-vue-sfc.js.map +0 -1
  404. package/transformers/NativeClass/index.d.ts +0 -2
  405. package/transformers/NativeClass/index.js +0 -222
  406. package/transformers/NativeClass/index.js.map +0 -1
  407. /package/{helpers/angular → hmr/frameworks/angular/build}/inline-decorator-component-templates.d.ts +0 -0
  408. /package/{helpers/angular → hmr/frameworks/angular/build}/synthesize-decorator-ctor-parameters.d.ts +0 -0
  409. /package/{helpers/angular → hmr/frameworks/angular/build}/synthesize-injectable-factories.d.ts +0 -0
  410. /package/hmr/{server → frameworks/angular/server}/websocket-angular-entry.d.ts +0 -0
@@ -2,7 +2,23 @@ import path from 'path';
2
2
  import { existsSync, readFileSync } from 'fs';
3
3
  import { findPackageInNodeModules } from './module-resolution.js';
4
4
  /**
5
- * Builds PostCSS configuration with platform import rewriting + postcss-import fallback.
5
+ * Builds PostCSS configuration with a platform-aware postcss-import fallback.
6
+ *
7
+ * Reality check under Vite 8: whenever the compiled CSS still contains
8
+ * `@import`, Vite UNSHIFTS its own bundled postcss-import ahead of every
9
+ * user plugin in this config — so by the time these plugins run, the import
10
+ * rules have already been inlined (or the build already failed on an
11
+ * unresolvable specifier). Platform-variant rewriting (`foo.css` →
12
+ * `foo.ios.css`) therefore happens BEFORE Vite sees the CSS:
13
+ * - module pipeline: the `ns-css-platform` plugin's transform hook
14
+ * - direct `preprocessCSS()` callers: `rewritePlatformCssImports()`
15
+ * (both in helpers/css-platform-plugin.ts)
16
+ * A previous `ns-postcss-platform-import-rewrite` plugin here duplicated that
17
+ * rewrite at the postcss layer; it was unreachable and has been removed.
18
+ *
19
+ * The postcss-import fallback below is retained as defense-in-depth for
20
+ * preprocessor outputs (sass passes `@import "*.css"` through untouched) in
21
+ * case an app's plugin order ever bypasses Vite's internal inliner.
6
22
  */
7
23
  export function createPostCssConfig(opts) {
8
24
  const { platform, projectRoot, themeCoreRoot, postcssImport } = opts;
@@ -10,44 +26,11 @@ export function createPostCssConfig(opts) {
10
26
  return './postcss.config.js';
11
27
  return {
12
28
  plugins: [
13
- {
14
- postcssPlugin: 'ns-postcss-platform-import-rewrite',
15
- Once(root) {
16
- try {
17
- const currentFile = root?.source?.input?.file;
18
- if (!currentFile)
19
- return;
20
- const currentDir = path.dirname(currentFile);
21
- root.walkAtRules('import', (rule) => {
22
- const m = /^\s*(?:url\()?["]?([^"')]+)["]?\)?/.exec(rule.params || '');
23
- if (!m)
24
- return;
25
- const spec = m[1];
26
- if (!spec || !(spec.startsWith('.') || spec.startsWith('/')))
27
- return;
28
- if (!spec.endsWith('.css'))
29
- return;
30
- const abs = path.isAbsolute(spec) ? spec : path.resolve(currentDir, spec);
31
- if (existsSync(abs))
32
- return;
33
- const ext = platform === 'android' ? '.android.css' : '.ios.css';
34
- const alt = abs.replace(/\.css$/, ext);
35
- if (existsSync(alt)) {
36
- let rel = path.relative(currentDir, alt).replace(/\\/g, '/');
37
- if (!rel.startsWith('.'))
38
- rel = './' + rel;
39
- rule.params = rule.params.replace(spec, rel);
40
- }
41
- });
42
- }
43
- catch { }
44
- },
45
- },
46
29
  postcssImport({
47
30
  resolve(id, basedir) {
48
31
  if (id.startsWith('.') || id.startsWith('/')) {
49
32
  const cleanBasedir = basedir ? basedir.split('?')[0] : basedir;
50
- let abs = path.resolve(cleanBasedir || '', id);
33
+ const abs = path.resolve(cleanBasedir || '', id);
51
34
  if (!existsSync(abs) && /\.css$/.test(abs)) {
52
35
  const platformExt = platform === 'android' ? '.android.css' : '.ios.css';
53
36
  const alt = abs.replace(/\.css$/, platformExt);
@@ -60,8 +43,8 @@ export function createPostCssConfig(opts) {
60
43
  const pkgRoot = themeCoreRoot || findPackageInNodeModules('nativescript-theme-core', projectRoot);
61
44
  if (!pkgRoot)
62
45
  return id;
63
- let rel = id.substring('nativescript-theme-core/'.length);
64
- let target = path.join(pkgRoot, rel);
46
+ const rel = id.substring('nativescript-theme-core/'.length);
47
+ const target = path.join(pkgRoot, rel);
65
48
  if (/^css\/.+\.css$/.test(rel)) {
66
49
  const platformExt = platform === 'android' ? '.android.css' : '.ios.css';
67
50
  const base = target.replace(/\.css$/, '');
@@ -1 +1 @@
1
- {"version":3,"file":"postcss-platform-config.js","sourceRoot":"","sources":["../../../../packages/vite/helpers/postcss-platform-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"postcss-platform-config.js","sourceRoot":"","sources":["../../../../packages/vite/helpers/postcss-platform-config.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,39 @@
1
1
  export declare function getProjectRootPath(): string;
2
+ /**
3
+ * Walk up from `start` looking for the nearest monorepo workspace root.
4
+ *
5
+ * Returns the absolute path of the workspace root, or `null` if none of
6
+ * the supported markers are found before reaching the filesystem root. The
7
+ * search returns the FIRST matching ancestor — so a deeply nested app dir
8
+ * inside an Nx monorepo that happens to also live inside a parent pnpm
9
+ * workspace returns the Nx root (closer to the app) rather than the outer
10
+ * pnpm one. This matches Vite's own `searchForWorkspaceRoot` behaviour.
11
+ *
12
+ * Recognized markers (see {@link MONOREPO_WORKSPACE_MARKERS}):
13
+ * - `pnpm-workspace.yaml` / `pnpm-workspace.yml`
14
+ * - `lerna.json`
15
+ * - `nx.json` (Nx)
16
+ * - `rush.json` (Rush)
17
+ * - `turbo.json` (Turborepo)
18
+ * - `deno.json` / `deno.jsonc` containing a `workspace` field
19
+ * - `package.json` containing a `workspaces` field (npm/yarn workspaces)
20
+ */
21
+ export declare function findMonorepoWorkspaceRoot(start?: string): string | null;
22
+ /**
23
+ * Memoized variant of {@link findMonorepoWorkspaceRoot}.
24
+ *
25
+ * The dev server resolves hoisted `node_modules/<pkg>/...` candidates on
26
+ * every `/ns/m/` request, and each lookup walks the directory tree once
27
+ * doing `existsSync` calls. Since the workspace layout doesn't change at
28
+ * runtime, the result is safe to cache per `start` directory for the
29
+ * lifetime of the dev server process.
30
+ */
31
+ export declare function getMonorepoWorkspaceRoot(start?: string): string | null;
32
+ /**
33
+ * Clear the {@link getMonorepoWorkspaceRoot} memoization cache. Intended
34
+ * for tests that mutate the filesystem inside a temp dir between calls.
35
+ */
36
+ export declare function clearMonorepoWorkspaceRootCache(): void;
2
37
  export declare const __dirname: string;
3
38
  interface IPackageJson {
4
39
  name?: string;
@@ -1,10 +1,128 @@
1
- import { existsSync } from 'fs';
2
- import { resolve } from 'path';
1
+ import { existsSync, readFileSync } from 'fs';
2
+ import { dirname, join, resolve } from 'path';
3
3
  import { createRequire } from 'node:module';
4
4
  const require = createRequire(import.meta.url);
5
5
  export function getProjectRootPath() {
6
6
  return process.cwd();
7
7
  }
8
+ // Markers that indicate the directory is a monorepo workspace root. Vite's
9
+ // own `searchForWorkspaceRoot` only knows about pnpm/lerna/yarn|npm
10
+ // `workspaces` and Deno; this list extends it to cover popular JS/TS
11
+ // monorepo tools (Nx, Rush, Turborepo) and any future tool by simply adding
12
+ // a marker file name. The order doesn't matter — we return the first
13
+ // ancestor that has any one of them.
14
+ //
15
+ // Why this matters: when an app lives at `apps/<name>/` inside a monorepo,
16
+ // `process.cwd()` (and therefore Vite's `config.root`) is the app dir. The
17
+ // hoisted `node_modules/` is at the workspace root. If Vite's default
18
+ // `fs.allow` doesn't reach that high, every transform-time fs read of a
19
+ // hoisted package fails with `Failed to load url … Does the file exist?`
20
+ // even though the file is right there on disk. The fix is to widen
21
+ // `server.fs.allow` to the detected workspace root.
22
+ const MONOREPO_WORKSPACE_MARKERS = [
23
+ // Standard JS package-manager workspace files (pnpm/yarn-classic/lerna).
24
+ 'pnpm-workspace.yaml',
25
+ 'pnpm-workspace.yml',
26
+ 'lerna.json',
27
+ // Build orchestrators that are monorepo-by-design.
28
+ 'nx.json',
29
+ 'rush.json',
30
+ 'turbo.json',
31
+ // Deno workspaces.
32
+ 'deno.json',
33
+ 'deno.jsonc',
34
+ ];
35
+ function packageJsonHasWorkspaces(dir) {
36
+ const pkgPath = join(dir, 'package.json');
37
+ if (!existsSync(pkgPath))
38
+ return false;
39
+ try {
40
+ const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
41
+ return !!(pkg && pkg.workspaces);
42
+ }
43
+ catch {
44
+ return false;
45
+ }
46
+ }
47
+ function denoConfigHasWorkspace(dir) {
48
+ for (const name of ['deno.json', 'deno.jsonc']) {
49
+ const p = join(dir, name);
50
+ if (!existsSync(p))
51
+ continue;
52
+ try {
53
+ const cfg = JSON.parse(readFileSync(p, 'utf-8'));
54
+ if (cfg && cfg.workspace)
55
+ return true;
56
+ }
57
+ catch { }
58
+ }
59
+ return false;
60
+ }
61
+ /**
62
+ * Walk up from `start` looking for the nearest monorepo workspace root.
63
+ *
64
+ * Returns the absolute path of the workspace root, or `null` if none of
65
+ * the supported markers are found before reaching the filesystem root. The
66
+ * search returns the FIRST matching ancestor — so a deeply nested app dir
67
+ * inside an Nx monorepo that happens to also live inside a parent pnpm
68
+ * workspace returns the Nx root (closer to the app) rather than the outer
69
+ * pnpm one. This matches Vite's own `searchForWorkspaceRoot` behaviour.
70
+ *
71
+ * Recognized markers (see {@link MONOREPO_WORKSPACE_MARKERS}):
72
+ * - `pnpm-workspace.yaml` / `pnpm-workspace.yml`
73
+ * - `lerna.json`
74
+ * - `nx.json` (Nx)
75
+ * - `rush.json` (Rush)
76
+ * - `turbo.json` (Turborepo)
77
+ * - `deno.json` / `deno.jsonc` containing a `workspace` field
78
+ * - `package.json` containing a `workspaces` field (npm/yarn workspaces)
79
+ */
80
+ export function findMonorepoWorkspaceRoot(start = getProjectRootPath()) {
81
+ let current = resolve(start);
82
+ while (true) {
83
+ for (const marker of MONOREPO_WORKSPACE_MARKERS) {
84
+ if (marker.startsWith('deno.')) {
85
+ if (denoConfigHasWorkspace(current))
86
+ return current;
87
+ continue;
88
+ }
89
+ if (existsSync(join(current, marker)))
90
+ return current;
91
+ }
92
+ if (packageJsonHasWorkspaces(current))
93
+ return current;
94
+ const parent = dirname(current);
95
+ if (!parent || parent === current)
96
+ return null;
97
+ current = parent;
98
+ }
99
+ }
100
+ const monorepoWorkspaceRootCache = new Map();
101
+ /**
102
+ * Memoized variant of {@link findMonorepoWorkspaceRoot}.
103
+ *
104
+ * The dev server resolves hoisted `node_modules/<pkg>/...` candidates on
105
+ * every `/ns/m/` request, and each lookup walks the directory tree once
106
+ * doing `existsSync` calls. Since the workspace layout doesn't change at
107
+ * runtime, the result is safe to cache per `start` directory for the
108
+ * lifetime of the dev server process.
109
+ */
110
+ export function getMonorepoWorkspaceRoot(start = getProjectRootPath()) {
111
+ const key = resolve(start);
112
+ if (monorepoWorkspaceRootCache.has(key)) {
113
+ return monorepoWorkspaceRootCache.get(key) ?? null;
114
+ }
115
+ const result = findMonorepoWorkspaceRoot(key);
116
+ monorepoWorkspaceRootCache.set(key, result);
117
+ return result;
118
+ }
119
+ /**
120
+ * Clear the {@link getMonorepoWorkspaceRoot} memoization cache. Intended
121
+ * for tests that mutate the filesystem inside a temp dir between calls.
122
+ */
123
+ export function clearMonorepoWorkspaceRootCache() {
124
+ monorepoWorkspaceRootCache.clear();
125
+ }
8
126
  // Get current directory for ES modules (equivalent to __dirname)
9
127
  export const __dirname = import.meta.dirname;
10
128
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"project.js","sourceRoot":"","sources":["../../../../packages/vite/helpers/project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAE/C,MAAM,UAAU,kBAAkB;IACjC,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC;AACtB,CAAC;AAED,iEAAiE;AACjE,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;AAc7C;;GAEG;AACH,MAAM,UAAU,cAAc;IAC7B,OAAO,OAAO,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAiB,CAAC;AACpE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAgB;IAClD,OAAO,OAAO,CAAC,kBAAkB,EAAE,EAAE,QAAQ,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,sBAAsB;IACrC,OAAO,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,EAAE,kBAAkB,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;AACxH,CAAC"}
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../../../../packages/vite/helpers/project.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Given a resolved package directory and its `package.json` `main` field, return
3
+ * the platform-specific entry file to use (as a `normalizeModuleId`-canonical
4
+ * absolute id), or `null` when no platform rewrite applies and normal resolution
5
+ * should handle it.
6
+ *
7
+ * Shared by the two `enforce:'pre'` package resolvers (`nativescript-package-resolver`
8
+ * and `package-platform-aliases`) so the main-field platform-variant rules live
9
+ * in one place.
10
+ *
11
+ * Two cases (behavior preserved from the original inline implementations):
12
+ * 1. `main` is extensionless → prefer `<main>.<platform>.js`, else `<main>.js`.
13
+ * 2. `main` has an extension but the file is missing → try `<base>.<platform><ext>`.
14
+ *
15
+ * Note: when an extension-bearing `main` file DOES exist, this returns `null`
16
+ * (the generic file wins) even if a `<base>.<platform><ext>` sibling exists.
17
+ * That is the current, intentional-for-now behavior; revisiting it is tracked
18
+ * separately (it would change resolution for packages shipping both).
19
+ */
20
+ export declare function resolveMainFieldPlatformVariant(packagePath: string, mainField: string | undefined | null, platform: string): string | null;
@@ -0,0 +1,49 @@
1
+ import path from 'path';
2
+ import fs from 'fs';
3
+ import { normalizeModuleId } from './normalize-id.js';
4
+ /**
5
+ * Given a resolved package directory and its `package.json` `main` field, return
6
+ * the platform-specific entry file to use (as a `normalizeModuleId`-canonical
7
+ * absolute id), or `null` when no platform rewrite applies and normal resolution
8
+ * should handle it.
9
+ *
10
+ * Shared by the two `enforce:'pre'` package resolvers (`nativescript-package-resolver`
11
+ * and `package-platform-aliases`) so the main-field platform-variant rules live
12
+ * in one place.
13
+ *
14
+ * Two cases (behavior preserved from the original inline implementations):
15
+ * 1. `main` is extensionless → prefer `<main>.<platform>.js`, else `<main>.js`.
16
+ * 2. `main` has an extension but the file is missing → try `<base>.<platform><ext>`.
17
+ *
18
+ * Note: when an extension-bearing `main` file DOES exist, this returns `null`
19
+ * (the generic file wins) even if a `<base>.<platform><ext>` sibling exists.
20
+ * That is the current, intentional-for-now behavior; revisiting it is tracked
21
+ * separately (it would change resolution for packages shipping both).
22
+ */
23
+ export function resolveMainFieldPlatformVariant(packagePath, mainField, platform) {
24
+ if (!mainField)
25
+ return null;
26
+ const mainFilePath = path.join(packagePath, mainField);
27
+ // Case 1: extensionless main — add platform/.js extensions.
28
+ if (!mainField.includes('.')) {
29
+ const platformFile = path.join(packagePath, `${mainField}.${platform}.js`);
30
+ if (fs.existsSync(platformFile))
31
+ return normalizeModuleId(platformFile);
32
+ const jsFile = path.join(packagePath, `${mainField}.js`);
33
+ if (fs.existsSync(jsFile))
34
+ return normalizeModuleId(jsFile);
35
+ return null;
36
+ }
37
+ // Case 2: main has an extension but the file is missing — look for a platform variant.
38
+ if (!fs.existsSync(mainFilePath)) {
39
+ const ext = path.extname(mainField);
40
+ const baseName = mainField.slice(0, -ext.length);
41
+ const platformFile = path.join(packagePath, `${baseName}.${platform}${ext}`);
42
+ if (fs.existsSync(platformFile))
43
+ return normalizeModuleId(platformFile);
44
+ return null;
45
+ }
46
+ // Main file exists — let normal resolution handle it.
47
+ return null;
48
+ }
49
+ //# sourceMappingURL=resolve-main-field-platform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-main-field-platform.js","sourceRoot":"","sources":["../../../../packages/vite/helpers/resolve-main-field-platform.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,+BAA+B,CAAC,WAAmB,EAAE,SAAoC,EAAE,QAAgB;IAC1H,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAC5B,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAEvD,4DAA4D;IAC5D,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9B,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,SAAS,IAAI,QAAQ,KAAK,CAAC,CAAC;QAC3E,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC;YAAE,OAAO,iBAAiB,CAAC,YAAY,CAAC,CAAC;QACxE,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,SAAS,KAAK,CAAC,CAAC;QACzD,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;YAAE,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC5D,OAAO,IAAI,CAAC;IACb,CAAC;IAED,uFAAuF;IACvF,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACpC,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACjD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,QAAQ,IAAI,QAAQ,GAAG,GAAG,EAAE,CAAC,CAAC;QAC7E,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC;YAAE,OAAO,iBAAiB,CAAC,YAAY,CAAC,CAAC;QACxE,OAAO,IAAI,CAAC;IACb,CAAC;IAED,sDAAsD;IACtD,OAAO,IAAI,CAAC;AACb,CAAC"}
@@ -1,19 +1,34 @@
1
1
  import path from 'path';
2
2
  import { resolveNativeScriptPlatformFile } from './utils.js';
3
+ import { normalizeModuleId } from './normalize-id.js';
4
+ const normalizeImporterId = (importer) => {
5
+ const cleanImporter = importer.split('?', 1)[0];
6
+ if (!cleanImporter.startsWith('/@fs/')) {
7
+ return cleanImporter;
8
+ }
9
+ return /^\/\@fs\/[A-Za-z]:/.test(cleanImporter) ? cleanImporter.slice('/@fs/'.length) : cleanImporter.slice('/@fs'.length);
10
+ };
3
11
  export default function NativeScriptPlugin(options) {
4
12
  return {
5
13
  name: 'vite:nativescript',
14
+ enforce: 'pre',
6
15
  resolveId(source, importer) {
7
16
  const platform = options.platform;
8
17
  if (!platform || !importer || source.startsWith('.') === false) {
9
18
  return null;
10
19
  }
11
- const resolved = path.resolve(path.dirname(importer), source);
20
+ const resolved = path.resolve(path.dirname(normalizeImporterId(importer)), source);
12
21
  const extVariants = ['.ts', '.js'];
13
22
  for (const ext of extVariants) {
14
23
  const file = resolveNativeScriptPlatformFile(resolved + ext, platform);
15
24
  if (file) {
16
- return file;
25
+ // Canonicalize before handing the id to Rolldown. `path.resolve`
26
+ // emits backslashes on Windows; the @nativescript/core alias and
27
+ // Vite's own resolver emit forward slashes. Returning the raw
28
+ // backslash form here makes Rolldown treat the same core file as a
29
+ // second module, double-evaluating widthProperty.register. No-op on
30
+ // POSIX. See normalize-id.ts for the full rationale.
31
+ return normalizeModuleId(file);
17
32
  }
18
33
  }
19
34
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../../../packages/vite/helpers/resolver.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,+BAA+B,EAAE,MAAM,YAAY,CAAC;AAE7D,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,OAAqD;IAC/F,OAAO;QACN,IAAI,EAAE,mBAAmB;QAEzB,SAAS,CAAC,MAAM,EAAE,QAAQ;YACzB,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;YAClC,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC;gBAChE,OAAO,IAAI,CAAC;YACb,CAAC;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;YAC9D,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAEnC,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;gBAC/B,MAAM,IAAI,GAAG,+BAA+B,CAAC,QAAQ,GAAG,GAAG,EAAE,QAAQ,CAAC,CAAC;gBACvE,IAAI,IAAI,EAAE,CAAC;oBACV,OAAO,IAAI,CAAC;gBACb,CAAC;YACF,CAAC;YAED,OAAO,IAAI,CAAC;QACb,CAAC;QAED,SAAS,CAAC,IAAI,EAAE,EAAE;YACjB,IAAI,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBACzB,+EAA+E;gBAC/E,OAAO;oBACN,IAAI;oBACJ,GAAG,EAAE,IAAI;iBACT,CAAC;YACH,CAAC;QACF,CAAC;KACD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../../../packages/vite/helpers/resolver.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,+BAA+B,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,mBAAmB,GAAG,CAAC,QAAgB,EAAU,EAAE;IACxD,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEhD,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACxC,OAAO,aAAa,CAAC;IACtB,CAAC;IAED,OAAO,oBAAoB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC5H,CAAC,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,OAAqD;IAC/F,OAAO;QACN,IAAI,EAAE,mBAAmB;QACzB,OAAO,EAAE,KAAK;QAEd,SAAS,CAAC,MAAM,EAAE,QAAQ;YACzB,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;YAClC,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC;gBAChE,OAAO,IAAI,CAAC;YACb,CAAC;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YACnF,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAEnC,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;gBAC/B,MAAM,IAAI,GAAG,+BAA+B,CAAC,QAAQ,GAAG,GAAG,EAAE,QAAQ,CAAC,CAAC;gBACvE,IAAI,IAAI,EAAE,CAAC;oBACV,iEAAiE;oBACjE,iEAAiE;oBACjE,8DAA8D;oBAC9D,mEAAmE;oBACnE,oEAAoE;oBACpE,qDAAqD;oBACrD,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC;gBAChC,CAAC;YACF,CAAC;YAED,OAAO,IAAI,CAAC;QACb,CAAC;QAED,SAAS,CAAC,IAAI,EAAE,EAAE;YACjB,IAAI,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBACzB,+EAA+E;gBAC/E,OAAO;oBACN,IAAI;oBACJ,GAAG,EAAE,IAAI;iBACT,CAAC;YACH,CAAC;QACF,CAAC;KACD,CAAC;AACH,CAAC"}
@@ -99,7 +99,7 @@ export function createThemeCoreCssFallbackPlugin(themeCoreRoot, projectRoot, pla
99
99
  if (idx === -1)
100
100
  return null;
101
101
  const rel = id.substring(idx + 'nativescript-theme-core/'.length);
102
- let target = path.join(pkgRoot, rel);
102
+ const target = path.join(pkgRoot, rel);
103
103
  try {
104
104
  if (existsSync(target)) {
105
105
  return readFileSync(target, 'utf-8');
@@ -1 +1 @@
1
- {"version":3,"file":"theme-core-plugins.js","sourceRoot":"","sources":["../../../../packages/vite/helpers/theme-core-plugins.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"theme-core-plugins.js","sourceRoot":"","sources":["../../../../packages/vite/helpers/theme-core-plugins.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,18 @@
1
1
  import type { Plugin } from 'vite';
2
+ /**
3
+ * Absolute directory roots that the project's tsconfig `paths` aliases point at.
4
+ *
5
+ * Used to scope HMR to configured shared libraries in a monorepo: a file only
6
+ * triggers an update if it lives under the app source dir or one of these
7
+ * alias roots. When an alias targets a file (e.g. `@org/lib -> libs/lib/src/index.ts`)
8
+ * the file's directory is returned so sibling source files in that library are
9
+ * also in scope. Wildcard aliases (`@org/* -> libs/*`) contribute their resolved
10
+ * base directory (`libs`).
11
+ */
12
+ export declare function getTsConfigAliasRoots(opts: {
13
+ paths?: Record<string, string[]>;
14
+ baseUrl?: string;
15
+ }): string[];
2
16
  export declare function createTsConfigPathsResolver(opts: {
3
17
  paths: Record<string, string[]>;
4
18
  baseUrl: string;
@@ -1,6 +1,7 @@
1
1
  import fs from 'fs';
2
2
  import path from 'path';
3
3
  import { getProjectFilePath, getProjectRootPath } from './project.js';
4
+ import { normalizeModuleId } from './normalize-id.js';
4
5
  let tsConfigPath;
5
6
  const projectRoot = getProjectRootPath();
6
7
  // Read TypeScript path mappings
@@ -29,7 +30,7 @@ function getTsConfigPaths(debugViteLogs = false) {
29
30
  // Clean up JSONC
30
31
  if (debugViteLogs)
31
32
  console.log('📁 Cleaning JSONC for:', configPath);
32
- let cleanContent = tsConfigContent
33
+ const cleanContent = tsConfigContent
33
34
  .replace(/\/\/.*$/gm, '')
34
35
  .replace(/\/\*[\s\S]*?\*\//g, '')
35
36
  .replace(/,(\s*[}\]])/g, '$1');
@@ -154,15 +155,14 @@ function resolveTsConfigPath(fullPath, platform, verbose, debugId) {
154
155
  }
155
156
  function createTsConfigResolvers(opts) {
156
157
  const resolvers = [];
157
- // Process patterns in order: wildcards first, then exact matches
158
+ // Match TypeScript precedence: exact aliases before wildcard fallbacks.
158
159
  const sortedPatterns = Object.entries(opts.paths).sort(([a], [b]) => {
159
- // Wildcards (with *) come first
160
160
  const aHasWildcard = a.includes('*');
161
161
  const bHasWildcard = b.includes('*');
162
162
  if (aHasWildcard && !bHasWildcard)
163
- return -1;
164
- if (!aHasWildcard && bHasWildcard)
165
163
  return 1;
164
+ if (!aHasWildcard && bHasWildcard)
165
+ return -1;
166
166
  // Within same type, longer patterns first (more specific)
167
167
  return b.length - a.length;
168
168
  });
@@ -170,12 +170,14 @@ function createTsConfigResolvers(opts) {
170
170
  if (Array.isArray(destinations) && destinations.length > 0) {
171
171
  if (pattern.includes('*')) {
172
172
  const aliasKey = pattern.replace(/\/\*$/, '');
173
- const destination = destinations[0].replace(/\/\*$/, '');
173
+ // Values passed through path.resolve() contain backslashes on Windows.
174
+ // Do not leave a literal wildcard in a filesystem lookup path.
175
+ const destination = destinations[0].replace(/[\\/]\*$/, '');
174
176
  const resolvedDestination = path.isAbsolute(destination) ? destination : path.resolve(projectRoot, opts.baseUrl, destination);
175
177
  resolvers.push({
176
178
  type: 'wildcard',
177
179
  pattern,
178
- regex: new RegExp(`^${aliasKey.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}(?:/(.*))?$`),
180
+ regex: new RegExp(`^${aliasKey.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}/(.*)$`),
179
181
  resolvedDestination,
180
182
  });
181
183
  }
@@ -194,11 +196,69 @@ function createTsConfigResolvers(opts) {
194
196
  }
195
197
  return resolvers;
196
198
  }
199
+ /**
200
+ * Absolute directory roots that the project's tsconfig `paths` aliases point at.
201
+ *
202
+ * Used to scope HMR to configured shared libraries in a monorepo: a file only
203
+ * triggers an update if it lives under the app source dir or one of these
204
+ * alias roots. When an alias targets a file (e.g. `@org/lib -> libs/lib/src/index.ts`)
205
+ * the file's directory is returned so sibling source files in that library are
206
+ * also in scope. Wildcard aliases (`@org/* -> libs/*`) contribute their resolved
207
+ * base directory (`libs`).
208
+ */
209
+ export function getTsConfigAliasRoots(opts) {
210
+ if (!opts?.paths)
211
+ return [];
212
+ const resolvers = createTsConfigResolvers({ paths: opts.paths, baseUrl: opts.baseUrl || '.', platform: '' });
213
+ const roots = [];
214
+ for (const resolver of resolvers) {
215
+ let dest = resolver.resolvedDestination;
216
+ if (!dest)
217
+ continue;
218
+ if (path.extname(dest)) {
219
+ dest = path.dirname(dest);
220
+ }
221
+ roots.push(dest);
222
+ }
223
+ return roots;
224
+ }
197
225
  export function createTsConfigPathsResolver(opts) {
198
226
  const resolvers = createTsConfigResolvers(opts);
199
227
  if (!resolvers.length) {
200
228
  return undefined;
201
229
  }
230
+ // Per-resolver caches.
231
+ //
232
+ // Hot-path note: this plugin is `enforce: 'pre'`, so it's invoked for every
233
+ // `resolveId` call in the build — including thousands of relative imports
234
+ // (`./foo`), absolute paths, virtual modules (`\0…`), and bare node_modules
235
+ // specifiers (`rxjs`, `@angular/core`, …) that can never match a tsconfig
236
+ // `paths` entry. Memoizing both the no-match outcome and the per-`fullPath`
237
+ // filesystem walk turns repeated lookups from `O(N regexes + ~12 fs syscalls)`
238
+ // into a single `Set.has` / `Map.get`.
239
+ //
240
+ // Cache validity: `paths` / `baseUrl` are baked into the closure at plugin
241
+ // creation, so the regex set never changes for the lifetime of this resolver.
242
+ // The filesystem cache assumes overlapping platform/extension files (e.g.
243
+ // adding a new `foo.ios.ts` next to `foo.ts`) won't appear mid-watch; if that
244
+ // ever bites, invalidate via Vite's `watchChange` hook instead of widening
245
+ // these caches.
246
+ const noMatchCache = new Set();
247
+ const fsResolveCache = new Map();
248
+ const cachedResolveTsConfigPath = (fullPath, debugId) => {
249
+ const cached = fsResolveCache.get(fullPath);
250
+ if (cached !== undefined) {
251
+ return cached;
252
+ }
253
+ // Canonicalize the resolved id (forward slashes + uppercase Windows drive).
254
+ // path.join/string-concat inside resolveTsConfigPath emit backslashes on
255
+ // Windows; without this a tsconfig-aliased file would land in Rolldown's
256
+ // graph under a different id than the same file reached via Vite's
257
+ // forward-slash resolution. No-op on POSIX. See normalize-id.ts.
258
+ const resolved = normalizeModuleId(resolveTsConfigPath(fullPath, opts.platform, opts.verbose, debugId));
259
+ fsResolveCache.set(fullPath, resolved);
260
+ return resolved;
261
+ };
202
262
  return {
203
263
  name: 'ns-tsconfig-paths-resolver',
204
264
  enforce: 'pre',
@@ -206,12 +266,32 @@ export function createTsConfigPathsResolver(opts) {
206
266
  if (source === '~/package.json') {
207
267
  return null;
208
268
  }
269
+ // Early reject for specifier shapes that can never match a tsconfig
270
+ // `paths` entry. Skipping them here avoids walking every resolver
271
+ // regex on the hot path.
272
+ // 46 = '.' → relative imports (`./foo`, `../bar`)
273
+ // 47 = '/' → already-absolute paths (no alias would start with /)
274
+ // 0 = '\0' → Vite/Rolldown virtual modules
275
+ const firstChar = source.charCodeAt(0);
276
+ if (firstChar === 46 || firstChar === 47 || firstChar === 0) {
277
+ return null;
278
+ }
279
+ // URL-style specifiers (`http:`, `file:`, `data:`, `node:fs`, …) and
280
+ // Windows drive letters (`C:\…`). None of these can match a path
281
+ // alias, and `:` isn't a valid character in npm package names or
282
+ // tsconfig path patterns we'd ever want to alias.
283
+ if (source.includes(':')) {
284
+ return null;
285
+ }
286
+ if (noMatchCache.has(source)) {
287
+ return null;
288
+ }
209
289
  for (const resolver of resolvers) {
210
290
  if (resolver.type === 'exact') {
211
291
  if (source !== resolver.pattern) {
212
292
  continue;
213
293
  }
214
- return resolveTsConfigPath(resolver.resolvedDestination, opts.platform, opts.verbose, source);
294
+ return cachedResolveTsConfigPath(resolver.resolvedDestination, source);
215
295
  }
216
296
  const match = resolver.regex.exec(source);
217
297
  if (!match) {
@@ -219,8 +299,9 @@ export function createTsConfigPathsResolver(opts) {
219
299
  }
220
300
  const subpath = match[1];
221
301
  const fullPath = subpath ? path.join(resolver.resolvedDestination, subpath) : resolver.resolvedDestination;
222
- return resolveTsConfigPath(fullPath, opts.platform, opts.verbose, source);
302
+ return cachedResolveTsConfigPath(fullPath, source);
223
303
  }
304
+ noMatchCache.add(source);
224
305
  return null;
225
306
  },
226
307
  };