@nativescript/vite 8.0.0-alpha.9 → 8.0.0-rc.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 (544) hide show
  1. package/README.md +73 -14
  2. package/bin/cli.cjs +8 -14
  3. package/configuration/angular.d.ts +34 -1
  4. package/configuration/angular.js +196 -217
  5. package/configuration/angular.js.map +1 -1
  6. package/configuration/base.js +151 -103
  7. package/configuration/base.js.map +1 -1
  8. package/configuration/javascript.js +14 -93
  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 +51 -6
  13. package/configuration/solid.js.map +1 -1
  14. package/configuration/typescript.js +11 -92
  15. package/configuration/typescript.js.map +1 -1
  16. package/helpers/app-components.d.ts +2 -1
  17. package/helpers/app-components.js.map +1 -1
  18. package/helpers/app-css-refresh.d.ts +31 -0
  19. package/helpers/app-css-refresh.js +43 -0
  20. package/helpers/app-css-refresh.js.map +1 -0
  21. package/helpers/app-css-state.d.ts +17 -0
  22. package/helpers/app-css-state.js +51 -0
  23. package/helpers/app-css-state.js.map +1 -0
  24. package/helpers/bundler-context.d.ts +11 -0
  25. package/helpers/bundler-context.js +71 -0
  26. package/helpers/bundler-context.js.map +1 -0
  27. package/helpers/cli-flags.d.ts +12 -0
  28. package/helpers/cli-flags.js +34 -0
  29. package/helpers/cli-flags.js.map +1 -1
  30. package/helpers/css-platform-plugin.d.ts +14 -0
  31. package/helpers/css-platform-plugin.js +43 -25
  32. package/helpers/css-platform-plugin.js.map +1 -1
  33. package/helpers/dev-host.d.ts +360 -0
  34. package/helpers/dev-host.js +694 -0
  35. package/helpers/dev-host.js.map +1 -0
  36. package/helpers/dynamic-import-plugin.d.ts +2 -1
  37. package/helpers/dynamic-import-plugin.js +59 -53
  38. package/helpers/dynamic-import-plugin.js.map +1 -1
  39. package/helpers/esbuild-platform-resolver.js +4 -1
  40. package/helpers/esbuild-platform-resolver.js.map +1 -1
  41. package/helpers/external-configs.d.ts +10 -12
  42. package/helpers/external-configs.js +58 -35
  43. package/helpers/external-configs.js.map +1 -1
  44. package/helpers/flavor.d.ts +13 -0
  45. package/helpers/flavor.js +18 -1
  46. package/helpers/flavor.js.map +1 -1
  47. package/helpers/global-defines.d.ts +99 -33
  48. package/helpers/global-defines.js +187 -66
  49. package/helpers/global-defines.js.map +1 -1
  50. package/helpers/hmr-scope.d.ts +26 -0
  51. package/helpers/hmr-scope.js +67 -0
  52. package/helpers/hmr-scope.js.map +1 -0
  53. package/helpers/init.js +6 -20
  54. package/helpers/init.js.map +1 -1
  55. package/helpers/logging.js +29 -1
  56. package/helpers/logging.js.map +1 -1
  57. package/helpers/main-entry.d.ts +4 -1
  58. package/helpers/main-entry.js +293 -40
  59. package/helpers/main-entry.js.map +1 -1
  60. package/helpers/nativeclass-esbuild-plugin.d.ts +2 -1
  61. package/helpers/nativeclass-esbuild-plugin.js +6 -1
  62. package/helpers/nativeclass-esbuild-plugin.js.map +1 -1
  63. package/helpers/nativeclass-transform.d.ts +13 -0
  64. package/helpers/nativeclass-transform.js +37 -7
  65. package/helpers/nativeclass-transform.js.map +1 -1
  66. package/helpers/nativeclass-transformer-plugin.js +8 -3
  67. package/helpers/nativeclass-transformer-plugin.js.map +1 -1
  68. package/helpers/nativescript-package-resolver.js +10 -62
  69. package/helpers/nativescript-package-resolver.js.map +1 -1
  70. package/helpers/normalize-id.d.ts +42 -0
  71. package/helpers/normalize-id.js +60 -0
  72. package/helpers/normalize-id.js.map +1 -0
  73. package/helpers/ns-core-external-urls.d.ts +32 -0
  74. package/helpers/ns-core-external-urls.js +107 -0
  75. package/helpers/ns-core-external-urls.js.map +1 -0
  76. package/helpers/ns-core-url.d.ts +26 -3
  77. package/helpers/ns-core-url.js +66 -8
  78. package/helpers/ns-core-url.js.map +1 -1
  79. package/helpers/optimize-deps.d.ts +16 -0
  80. package/helpers/optimize-deps.js +17 -0
  81. package/helpers/optimize-deps.js.map +1 -0
  82. package/helpers/package-platform-aliases.js +34 -49
  83. package/helpers/package-platform-aliases.js.map +1 -1
  84. package/helpers/platform-types.d.ts +2 -0
  85. package/helpers/platform-types.js +2 -0
  86. package/helpers/platform-types.js.map +1 -0
  87. package/helpers/postcss-platform-config.d.ts +17 -1
  88. package/helpers/postcss-platform-config.js +20 -37
  89. package/helpers/postcss-platform-config.js.map +1 -1
  90. package/helpers/resolve-main-field-platform.d.ts +20 -0
  91. package/helpers/resolve-main-field-platform.js +49 -0
  92. package/helpers/resolve-main-field-platform.js.map +1 -0
  93. package/helpers/resolver.js +17 -2
  94. package/helpers/resolver.js.map +1 -1
  95. package/helpers/theme-core-plugins.js +1 -1
  96. package/helpers/theme-core-plugins.js.map +1 -1
  97. package/helpers/ts-config-paths.d.ts +32 -0
  98. package/helpers/ts-config-paths.js +143 -62
  99. package/helpers/ts-config-paths.js.map +1 -1
  100. package/helpers/typescript-check.d.ts +2 -1
  101. package/helpers/typescript-check.js +4 -4
  102. package/helpers/typescript-check.js.map +1 -1
  103. package/helpers/ui-registration.d.ts +21 -0
  104. package/helpers/ui-registration.js +156 -0
  105. package/helpers/ui-registration.js.map +1 -0
  106. package/helpers/utils.d.ts +9 -0
  107. package/helpers/utils.js +22 -2
  108. package/helpers/utils.js.map +1 -1
  109. package/helpers/vite-package-version.d.ts +7 -0
  110. package/helpers/vite-package-version.js +44 -0
  111. package/helpers/vite-package-version.js.map +1 -0
  112. package/helpers/workers.d.ts +33 -0
  113. package/helpers/workers.js +237 -10
  114. package/helpers/workers.js.map +1 -1
  115. package/hmr/client/css-handler.d.ts +2 -1
  116. package/hmr/client/css-handler.js +63 -32
  117. package/hmr/client/css-handler.js.map +1 -1
  118. package/hmr/client/css-update-overlay.d.ts +18 -0
  119. package/hmr/client/css-update-overlay.js +27 -0
  120. package/hmr/client/css-update-overlay.js.map +1 -0
  121. package/hmr/client/framework-client-strategy.d.ts +87 -0
  122. package/hmr/client/framework-client-strategy.js +18 -0
  123. package/hmr/client/framework-client-strategy.js.map +1 -0
  124. package/hmr/client/hmr-pending-overlay.d.ts +0 -14
  125. package/hmr/client/hmr-pending-overlay.js +2 -11
  126. package/hmr/client/hmr-pending-overlay.js.map +1 -1
  127. package/hmr/client/hot-context.d.ts +67 -0
  128. package/hmr/client/hot-context.js +307 -0
  129. package/hmr/client/hot-context.js.map +1 -0
  130. package/hmr/client/index.d.ts +9 -1
  131. package/hmr/client/index.js +70 -1970
  132. package/hmr/client/index.js.map +1 -1
  133. package/hmr/client/overlay-driver.d.ts +10 -0
  134. package/hmr/client/overlay-driver.js +33 -0
  135. package/hmr/client/overlay-driver.js.map +1 -0
  136. package/hmr/client/protocol-dispatch.d.ts +8 -0
  137. package/hmr/client/protocol-dispatch.js +308 -0
  138. package/hmr/client/protocol-dispatch.js.map +1 -0
  139. package/hmr/client/root-reset.d.ts +15 -0
  140. package/hmr/client/root-reset.js +358 -0
  141. package/hmr/client/root-reset.js.map +1 -0
  142. package/hmr/client/strategy-loader.d.ts +24 -0
  143. package/hmr/client/strategy-loader.js +100 -0
  144. package/hmr/client/strategy-loader.js.map +1 -0
  145. package/hmr/client/update-pipeline.d.ts +27 -0
  146. package/hmr/client/update-pipeline.js +464 -0
  147. package/hmr/client/update-pipeline.js.map +1 -0
  148. package/hmr/client/utils.d.ts +9 -1
  149. package/hmr/client/utils.js +117 -97
  150. package/hmr/client/utils.js.map +1 -1
  151. package/hmr/client/ws-transport.d.ts +21 -0
  152. package/hmr/client/ws-transport.js +323 -0
  153. package/hmr/client/ws-transport.js.map +1 -0
  154. package/hmr/entry-runtime.d.ts +2 -1
  155. package/hmr/entry-runtime.js +279 -44
  156. package/hmr/entry-runtime.js.map +1 -1
  157. package/hmr/frameworks/angular/build/angular-linker.d.ts +12 -0
  158. package/hmr/frameworks/angular/build/angular-linker.js +113 -0
  159. package/hmr/frameworks/angular/build/angular-linker.js.map +1 -0
  160. package/{helpers/angular → hmr/frameworks/angular/build}/inject-component-hmr-registration.js +2 -70
  161. package/hmr/frameworks/angular/build/inject-component-hmr-registration.js.map +1 -0
  162. package/hmr/frameworks/angular/build/inject-hmr-vite-ignore.d.ts +75 -0
  163. package/hmr/frameworks/angular/build/inject-hmr-vite-ignore.js +221 -0
  164. package/hmr/frameworks/angular/build/inject-hmr-vite-ignore.js.map +1 -0
  165. package/{helpers/angular → hmr/frameworks/angular/build}/inline-decorator-component-templates.js +1 -170
  166. package/hmr/frameworks/angular/build/inline-decorator-component-templates.js.map +1 -0
  167. package/hmr/frameworks/angular/build/js-lexer.d.ts +4 -0
  168. package/{helpers/angular/synthesize-decorator-ctor-parameters.js → hmr/frameworks/angular/build/js-lexer.js} +22 -96
  169. package/hmr/frameworks/angular/build/js-lexer.js.map +1 -0
  170. package/hmr/frameworks/angular/build/linker-stats.d.ts +18 -0
  171. package/hmr/frameworks/angular/build/linker-stats.js +29 -0
  172. package/hmr/frameworks/angular/build/linker-stats.js.map +1 -0
  173. package/hmr/frameworks/angular/build/shared-linker.d.ts +39 -0
  174. package/hmr/frameworks/angular/build/shared-linker.js +128 -0
  175. package/hmr/frameworks/angular/build/shared-linker.js.map +1 -0
  176. package/hmr/frameworks/angular/build/synthesize-decorator-ctor-parameters.js +88 -0
  177. package/hmr/frameworks/angular/build/synthesize-decorator-ctor-parameters.js.map +1 -0
  178. package/{helpers/angular → hmr/frameworks/angular/build}/synthesize-injectable-factories.js +1 -174
  179. package/hmr/frameworks/angular/build/synthesize-injectable-factories.js.map +1 -0
  180. package/hmr/frameworks/angular/build/ts-fallback-transform.d.ts +5 -0
  181. package/hmr/frameworks/angular/build/ts-fallback-transform.js +138 -0
  182. package/hmr/frameworks/angular/build/ts-fallback-transform.js.map +1 -0
  183. package/hmr/frameworks/angular/build/util.js.map +1 -0
  184. package/hmr/frameworks/angular/build/worker-url-preserve.d.ts +5 -0
  185. package/hmr/frameworks/angular/build/worker-url-preserve.js +140 -0
  186. package/hmr/frameworks/angular/build/worker-url-preserve.js.map +1 -0
  187. package/hmr/frameworks/angular/client/index.d.ts +0 -1
  188. package/hmr/frameworks/angular/client/index.js +360 -194
  189. package/hmr/frameworks/angular/client/index.js.map +1 -1
  190. package/hmr/frameworks/angular/client/strategy.d.ts +9 -0
  191. package/hmr/frameworks/angular/client/strategy.js +19 -0
  192. package/hmr/frameworks/angular/client/strategy.js.map +1 -0
  193. package/hmr/frameworks/angular/server/angular-root-component.d.ts +79 -0
  194. package/hmr/frameworks/angular/server/angular-root-component.js +149 -0
  195. package/hmr/frameworks/angular/server/angular-root-component.js.map +1 -0
  196. package/hmr/frameworks/angular/server/ng-component-route.d.ts +43 -0
  197. package/hmr/frameworks/angular/server/ng-component-route.js +113 -0
  198. package/hmr/frameworks/angular/server/ng-component-route.js.map +1 -0
  199. package/hmr/frameworks/angular/server/strategy.js +668 -13
  200. package/hmr/frameworks/angular/server/strategy.js.map +1 -1
  201. package/hmr/{server → frameworks/angular/server}/websocket-angular-entry.js +2 -2
  202. package/hmr/frameworks/angular/server/websocket-angular-entry.js.map +1 -0
  203. package/hmr/{server → frameworks/angular/server}/websocket-angular-hot-update.d.ts +27 -11
  204. package/hmr/{server → frameworks/angular/server}/websocket-angular-hot-update.js +179 -107
  205. package/hmr/frameworks/angular/server/websocket-angular-hot-update.js.map +1 -0
  206. package/hmr/frameworks/react/client/strategy.d.ts +12 -0
  207. package/hmr/frameworks/react/client/strategy.js +27 -0
  208. package/hmr/frameworks/react/client/strategy.js.map +1 -0
  209. package/hmr/frameworks/react/server/strategy.d.ts +2 -0
  210. package/hmr/frameworks/react/server/strategy.js +230 -0
  211. package/hmr/frameworks/react/server/strategy.js.map +1 -0
  212. package/hmr/frameworks/solid/build/solid-jsx-deps.d.ts +15 -0
  213. package/hmr/frameworks/solid/build/solid-jsx-deps.js +178 -0
  214. package/hmr/frameworks/solid/build/solid-jsx-deps.js.map +1 -0
  215. package/hmr/frameworks/solid/client/app-runtime.d.ts +68 -0
  216. package/hmr/frameworks/solid/client/app-runtime.js +252 -0
  217. package/hmr/frameworks/solid/client/app-runtime.js.map +1 -0
  218. package/hmr/frameworks/solid/client/strategy.d.ts +7 -0
  219. package/hmr/frameworks/solid/client/strategy.js +391 -0
  220. package/hmr/frameworks/solid/client/strategy.js.map +1 -0
  221. package/hmr/frameworks/solid/server/strategy.js +293 -16
  222. package/hmr/frameworks/solid/server/strategy.js.map +1 -1
  223. package/hmr/frameworks/typescript/client/strategy.d.ts +7 -0
  224. package/hmr/frameworks/typescript/client/strategy.js +418 -0
  225. package/hmr/frameworks/typescript/client/strategy.js.map +1 -0
  226. package/hmr/frameworks/typescript/server/strategy.js +40 -14
  227. package/hmr/frameworks/typescript/server/strategy.js.map +1 -1
  228. package/hmr/frameworks/vue/client/dep-propagation.d.ts +44 -0
  229. package/hmr/frameworks/vue/client/dep-propagation.js +148 -0
  230. package/hmr/frameworks/vue/client/dep-propagation.js.map +1 -0
  231. package/hmr/frameworks/vue/client/index.d.ts +10 -1
  232. package/hmr/frameworks/vue/client/index.js +270 -521
  233. package/hmr/frameworks/vue/client/index.js.map +1 -1
  234. package/hmr/frameworks/vue/client/navigate-app.d.ts +3 -0
  235. package/hmr/frameworks/vue/client/navigate-app.js +178 -0
  236. package/hmr/frameworks/vue/client/navigate-app.js.map +1 -0
  237. package/hmr/frameworks/vue/client/strategy.d.ts +33 -0
  238. package/hmr/frameworks/vue/client/strategy.js +152 -0
  239. package/hmr/frameworks/vue/client/strategy.js.map +1 -0
  240. package/hmr/frameworks/vue/client/vue-sfc-update-overlay.d.ts +49 -0
  241. package/hmr/frameworks/vue/client/vue-sfc-update-overlay.js +124 -0
  242. package/hmr/frameworks/vue/client/vue-sfc-update-overlay.js.map +1 -0
  243. package/hmr/frameworks/vue/server/compiler.d.ts +3 -1
  244. package/hmr/frameworks/vue/server/compiler.js +3 -1
  245. package/hmr/frameworks/vue/server/compiler.js.map +1 -1
  246. package/hmr/frameworks/vue/server/sfc-route-assemble.d.ts +7 -0
  247. package/hmr/frameworks/vue/server/sfc-route-assemble.js +823 -0
  248. package/hmr/frameworks/vue/server/sfc-route-assemble.js.map +1 -0
  249. package/hmr/frameworks/vue/server/sfc-route-meta.d.ts +7 -0
  250. package/hmr/frameworks/vue/server/sfc-route-meta.js +80 -0
  251. package/hmr/frameworks/vue/server/sfc-route-meta.js.map +1 -0
  252. package/hmr/frameworks/vue/server/sfc-route-serve.d.ts +8 -0
  253. package/hmr/frameworks/vue/server/sfc-route-serve.js +462 -0
  254. package/hmr/frameworks/vue/server/sfc-route-serve.js.map +1 -0
  255. package/hmr/frameworks/vue/server/sfc-route-shared.d.ts +45 -0
  256. package/hmr/frameworks/vue/server/sfc-route-shared.js +105 -0
  257. package/hmr/frameworks/vue/server/sfc-route-shared.js.map +1 -0
  258. package/hmr/frameworks/vue/server/strategy.d.ts +35 -0
  259. package/hmr/frameworks/vue/server/strategy.js +291 -7
  260. package/hmr/frameworks/vue/server/strategy.js.map +1 -1
  261. package/hmr/frameworks/vue/server/websocket-sfc.d.ts +15 -0
  262. package/hmr/frameworks/vue/server/websocket-sfc.js +20 -0
  263. package/hmr/frameworks/vue/server/websocket-sfc.js.map +1 -0
  264. package/hmr/helpers/ast-normalizer.d.ts +3 -1
  265. package/hmr/helpers/ast-normalizer.js +109 -14
  266. package/hmr/helpers/ast-normalizer.js.map +1 -1
  267. package/hmr/helpers/package-exports.d.ts +16 -0
  268. package/hmr/helpers/package-exports.js +396 -0
  269. package/hmr/helpers/package-exports.js.map +1 -0
  270. package/hmr/helpers/vendor-rewrite.d.ts +1 -1
  271. package/hmr/helpers/vendor-rewrite.js +5 -3
  272. package/hmr/helpers/vendor-rewrite.js.map +1 -1
  273. package/hmr/server/boot-recording.d.ts +51 -0
  274. package/hmr/server/boot-recording.js +214 -0
  275. package/hmr/server/boot-recording.js.map +1 -0
  276. package/hmr/server/constants.js +7 -1
  277. package/hmr/server/constants.js.map +1 -1
  278. package/hmr/server/content-css-update.d.ts +54 -0
  279. package/hmr/server/content-css-update.js +78 -0
  280. package/hmr/server/content-css-update.js.map +1 -0
  281. package/hmr/server/core-bundle.d.ts +140 -0
  282. package/hmr/server/core-bundle.js +614 -0
  283. package/hmr/server/core-bundle.js.map +1 -0
  284. package/hmr/server/core-sanitize.d.ts +86 -7
  285. package/hmr/server/core-sanitize.js +155 -37
  286. package/hmr/server/core-sanitize.js.map +1 -1
  287. package/hmr/server/css-connect-sync.d.ts +28 -0
  288. package/hmr/server/css-connect-sync.js +59 -0
  289. package/hmr/server/css-connect-sync.js.map +1 -0
  290. package/hmr/server/css-device-module.d.ts +28 -0
  291. package/hmr/server/css-device-module.js +44 -0
  292. package/hmr/server/css-device-module.js.map +1 -0
  293. package/hmr/server/css-update-message.d.ts +23 -0
  294. package/hmr/server/css-update-message.js +41 -0
  295. package/hmr/server/css-update-message.js.map +1 -0
  296. package/hmr/server/deps-bundle.d.ts +233 -0
  297. package/hmr/server/deps-bundle.js +1022 -0
  298. package/hmr/server/deps-bundle.js.map +1 -0
  299. package/hmr/server/device-transform-helpers.d.ts +24 -0
  300. package/hmr/server/device-transform-helpers.js +408 -0
  301. package/hmr/server/device-transform-helpers.js.map +1 -0
  302. package/hmr/server/framework-strategy.d.ts +182 -11
  303. package/hmr/server/hmr-module-graph.d.ts +37 -0
  304. package/hmr/server/hmr-module-graph.js +215 -0
  305. package/hmr/server/hmr-module-graph.js.map +1 -0
  306. package/hmr/server/import-map.d.ts +57 -23
  307. package/hmr/server/import-map.js +142 -70
  308. package/hmr/server/import-map.js.map +1 -1
  309. package/hmr/server/index.js +7 -16
  310. package/hmr/server/index.js.map +1 -1
  311. package/hmr/server/node-builtins-route.d.ts +12 -0
  312. package/hmr/server/node-builtins-route.js +86 -0
  313. package/hmr/server/node-builtins-route.js.map +1 -0
  314. package/hmr/server/ns-m-response-memo.d.ts +10 -0
  315. package/hmr/server/ns-m-response-memo.js +33 -0
  316. package/hmr/server/ns-m-response-memo.js.map +1 -0
  317. package/hmr/server/ns-rt-bridge.d.ts +51 -0
  318. package/hmr/server/ns-rt-bridge.js +131 -0
  319. package/hmr/server/ns-rt-bridge.js.map +1 -0
  320. package/hmr/server/ns-rt-route.d.ts +5 -0
  321. package/hmr/server/ns-rt-route.js +39 -0
  322. package/hmr/server/ns-rt-route.js.map +1 -0
  323. package/hmr/server/perf-instrumentation.d.ts +1 -1
  324. package/hmr/server/perf-instrumentation.js +3 -1
  325. package/hmr/server/perf-instrumentation.js.map +1 -1
  326. package/hmr/server/process-code-for-device.d.ts +44 -0
  327. package/hmr/server/process-code-for-device.js +834 -0
  328. package/hmr/server/process-code-for-device.js.map +1 -0
  329. package/hmr/server/require-guard.d.ts +1 -0
  330. package/hmr/server/require-guard.js +12 -0
  331. package/hmr/server/require-guard.js.map +1 -0
  332. package/hmr/server/rewrite-imports.d.ts +2 -0
  333. package/hmr/server/rewrite-imports.js +631 -0
  334. package/hmr/server/rewrite-imports.js.map +1 -0
  335. package/hmr/server/route-helpers.d.ts +7 -0
  336. package/hmr/server/route-helpers.js +13 -0
  337. package/hmr/server/route-helpers.js.map +1 -0
  338. package/hmr/server/runtime-graph-filter.js +8 -1
  339. package/hmr/server/runtime-graph-filter.js.map +1 -1
  340. package/hmr/server/server-origin.d.ts +2 -0
  341. package/hmr/server/server-origin.js +88 -0
  342. package/hmr/server/server-origin.js.map +1 -0
  343. package/hmr/server/shared-transform-request.js +1 -2
  344. package/hmr/server/shared-transform-request.js.map +1 -1
  345. package/hmr/server/socket-utils.d.ts +10 -0
  346. package/hmr/server/socket-utils.js +14 -0
  347. package/hmr/server/socket-utils.js.map +1 -0
  348. package/hmr/server/transform-cache-invalidation.d.ts +37 -0
  349. package/hmr/server/transform-cache-invalidation.js +156 -0
  350. package/hmr/server/transform-cache-invalidation.js.map +1 -0
  351. package/hmr/server/vendor-bare-module-shims.d.ts +4 -0
  352. package/hmr/server/vendor-bare-module-shims.js +80 -0
  353. package/hmr/server/vendor-bare-module-shims.js.map +1 -0
  354. package/hmr/server/vite-plugin.d.ts +1 -0
  355. package/hmr/server/vite-plugin.js +211 -53
  356. package/hmr/server/vite-plugin.js.map +1 -1
  357. package/hmr/server/websocket-core-bridge.d.ts +51 -4
  358. package/hmr/server/websocket-core-bridge.js +62 -49
  359. package/hmr/server/websocket-core-bridge.js.map +1 -1
  360. package/hmr/server/websocket-device-transform.d.ts +3 -0
  361. package/hmr/server/websocket-device-transform.js +7 -0
  362. package/hmr/server/websocket-device-transform.js.map +1 -0
  363. package/hmr/server/websocket-hmr-pending.d.ts +2 -16
  364. package/hmr/server/websocket-hmr-pending.js +0 -22
  365. package/hmr/server/websocket-hmr-pending.js.map +1 -1
  366. package/hmr/server/websocket-hot-update.d.ts +80 -0
  367. package/hmr/server/websocket-hot-update.js +295 -0
  368. package/hmr/server/websocket-hot-update.js.map +1 -0
  369. package/hmr/server/websocket-import-map-route.d.ts +15 -0
  370. package/hmr/server/websocket-import-map-route.js +51 -0
  371. package/hmr/server/websocket-import-map-route.js.map +1 -0
  372. package/hmr/server/websocket-module-bindings.d.ts +15 -0
  373. package/hmr/server/websocket-module-bindings.js +36 -3
  374. package/hmr/server/websocket-module-bindings.js.map +1 -1
  375. package/hmr/server/websocket-module-specifiers.d.ts +0 -5
  376. package/hmr/server/websocket-module-specifiers.js +29 -30
  377. package/hmr/server/websocket-module-specifiers.js.map +1 -1
  378. package/hmr/server/websocket-ns-core.d.ts +34 -0
  379. package/hmr/server/websocket-ns-core.js +414 -0
  380. package/hmr/server/websocket-ns-core.js.map +1 -0
  381. package/hmr/server/websocket-ns-entry.d.ts +21 -0
  382. package/hmr/server/websocket-ns-entry.js +163 -0
  383. package/hmr/server/websocket-ns-entry.js.map +1 -0
  384. package/hmr/server/websocket-ns-m-paths.d.ts +19 -3
  385. package/hmr/server/websocket-ns-m-paths.js +98 -75
  386. package/hmr/server/websocket-ns-m-paths.js.map +1 -1
  387. package/hmr/server/websocket-ns-m-request.d.ts +2 -1
  388. package/hmr/server/websocket-ns-m-request.js +3 -2
  389. package/hmr/server/websocket-ns-m-request.js.map +1 -1
  390. package/hmr/server/websocket-ns-m.d.ts +52 -0
  391. package/hmr/server/websocket-ns-m.js +590 -0
  392. package/hmr/server/websocket-ns-m.js.map +1 -0
  393. package/hmr/server/websocket-served-module-helpers.d.ts +56 -3
  394. package/hmr/server/websocket-served-module-helpers.js +444 -140
  395. package/hmr/server/websocket-served-module-helpers.js.map +1 -1
  396. package/hmr/server/websocket-txn.js +6 -9
  397. package/hmr/server/websocket-txn.js.map +1 -1
  398. package/hmr/server/websocket-vendor-unifier.d.ts +0 -1
  399. package/hmr/server/websocket-vendor-unifier.js +4 -9
  400. package/hmr/server/websocket-vendor-unifier.js.map +1 -1
  401. package/hmr/server/websocket.d.ts +7 -40
  402. package/hmr/server/websocket.js +661 -6751
  403. package/hmr/server/websocket.js.map +1 -1
  404. package/hmr/shared/ns-globals.d.ts +107 -0
  405. package/hmr/shared/ns-globals.js +29 -0
  406. package/hmr/shared/ns-globals.js.map +1 -0
  407. package/hmr/shared/protocol.d.ts +157 -0
  408. package/hmr/shared/protocol.js +28 -0
  409. package/hmr/shared/protocol.js.map +1 -0
  410. package/hmr/shared/runtime/boot-complete.d.ts +14 -0
  411. package/hmr/shared/runtime/boot-complete.js +32 -0
  412. package/hmr/shared/runtime/boot-complete.js.map +1 -0
  413. package/hmr/shared/runtime/boot-placeholder-ui.d.ts +69 -0
  414. package/hmr/shared/runtime/boot-placeholder-ui.js +101 -0
  415. package/hmr/shared/runtime/boot-placeholder-ui.js.map +1 -0
  416. package/hmr/shared/runtime/boot-progress.d.ts +44 -0
  417. package/hmr/shared/runtime/boot-progress.js +134 -0
  418. package/hmr/shared/runtime/boot-progress.js.map +1 -0
  419. package/hmr/shared/runtime/boot-timeline.d.ts +1 -1
  420. package/hmr/shared/runtime/boot-timeline.js +8 -19
  421. package/hmr/shared/runtime/boot-timeline.js.map +1 -1
  422. package/hmr/shared/runtime/browser-runtime-contract.d.ts +58 -25
  423. package/hmr/shared/runtime/browser-runtime-contract.js +21 -9
  424. package/hmr/shared/runtime/browser-runtime-contract.js.map +1 -1
  425. package/hmr/shared/runtime/dev-overlay-ios.d.ts +87 -0
  426. package/hmr/shared/runtime/dev-overlay-ios.js +521 -0
  427. package/hmr/shared/runtime/dev-overlay-ios.js.map +1 -0
  428. package/hmr/shared/runtime/dev-overlay-shared.d.ts +58 -0
  429. package/hmr/shared/runtime/dev-overlay-shared.js +116 -0
  430. package/hmr/shared/runtime/dev-overlay-shared.js.map +1 -0
  431. package/hmr/shared/runtime/dev-overlay-snapshots.d.ts +31 -0
  432. package/hmr/shared/runtime/dev-overlay-snapshots.js +324 -0
  433. package/hmr/shared/runtime/dev-overlay-snapshots.js.map +1 -0
  434. package/hmr/shared/runtime/dev-overlay-tree.d.ts +59 -0
  435. package/hmr/shared/runtime/dev-overlay-tree.js +712 -0
  436. package/hmr/shared/runtime/dev-overlay-tree.js.map +1 -0
  437. package/hmr/shared/runtime/dev-overlay.d.ts +23 -69
  438. package/hmr/shared/runtime/dev-overlay.js +67 -1011
  439. package/hmr/shared/runtime/dev-overlay.js.map +1 -1
  440. package/hmr/shared/runtime/global-scope.d.ts +18 -0
  441. package/hmr/shared/runtime/global-scope.js +21 -0
  442. package/hmr/shared/runtime/global-scope.js.map +1 -0
  443. package/hmr/shared/runtime/hooks.js +2 -1
  444. package/hmr/shared/runtime/hooks.js.map +1 -1
  445. package/hmr/shared/runtime/launch-bridge.d.ts +9 -0
  446. package/hmr/shared/runtime/launch-bridge.js +98 -0
  447. package/hmr/shared/runtime/launch-bridge.js.map +1 -0
  448. package/hmr/shared/runtime/module-provenance.js +3 -2
  449. package/hmr/shared/runtime/module-provenance.js.map +1 -1
  450. package/hmr/shared/runtime/ns-runtime-test-double.d.ts +21 -0
  451. package/hmr/shared/runtime/ns-runtime-test-double.js +20 -0
  452. package/hmr/shared/runtime/ns-runtime-test-double.js.map +1 -0
  453. package/hmr/shared/runtime/overlay-flag.d.ts +9 -0
  454. package/hmr/shared/runtime/overlay-flag.js +34 -0
  455. package/hmr/shared/runtime/overlay-flag.js.map +1 -0
  456. package/hmr/shared/runtime/root-placeholder-view.d.ts +19 -0
  457. package/hmr/shared/runtime/root-placeholder-view.js +311 -0
  458. package/hmr/shared/runtime/root-placeholder-view.js.map +1 -0
  459. package/hmr/shared/runtime/root-placeholder.js +382 -157
  460. package/hmr/shared/runtime/root-placeholder.js.map +1 -1
  461. package/hmr/shared/runtime/session-bootstrap.js +209 -54
  462. package/hmr/shared/runtime/session-bootstrap.js.map +1 -1
  463. package/hmr/shared/runtime/vendor-bootstrap.js +2 -1
  464. package/hmr/shared/runtime/vendor-bootstrap.js.map +1 -1
  465. package/hmr/shared/runtime/vendor-resolve.d.ts +22 -0
  466. package/hmr/shared/runtime/vendor-resolve.js +45 -0
  467. package/hmr/shared/runtime/vendor-resolve.js.map +1 -0
  468. package/hmr/shared/runtime/worker-tracking.d.ts +28 -0
  469. package/hmr/shared/runtime/worker-tracking.js +114 -0
  470. package/hmr/shared/runtime/worker-tracking.js.map +1 -0
  471. package/hmr/shared/vendor/manifest-collect.d.ts +4 -0
  472. package/hmr/shared/vendor/manifest-collect.js +909 -0
  473. package/hmr/shared/vendor/manifest-collect.js.map +1 -0
  474. package/hmr/shared/vendor/manifest-loader.d.ts +2 -1
  475. package/hmr/shared/vendor/manifest-loader.js +5 -3
  476. package/hmr/shared/vendor/manifest-loader.js.map +1 -1
  477. package/hmr/shared/vendor/manifest.d.ts +10 -35
  478. package/hmr/shared/vendor/manifest.js +154 -978
  479. package/hmr/shared/vendor/manifest.js.map +1 -1
  480. package/hmr/shared/vendor/registry.d.ts +2 -0
  481. package/hmr/shared/vendor/registry.js +14 -0
  482. package/hmr/shared/vendor/registry.js.map +1 -1
  483. package/hmr/shared/vendor/vendor-device-shim.d.ts +1 -0
  484. package/hmr/shared/vendor/vendor-device-shim.js +208 -0
  485. package/hmr/shared/vendor/vendor-device-shim.js.map +1 -0
  486. package/hmr/shared/vendor/vendor-esbuild-plugins.d.ts +107 -0
  487. package/hmr/shared/vendor/vendor-esbuild-plugins.js +540 -0
  488. package/hmr/shared/vendor/vendor-esbuild-plugins.js.map +1 -0
  489. package/package.json +63 -13
  490. package/runtime/core-aliases-early.js +11 -16
  491. package/runtime/core-aliases-early.js.map +1 -1
  492. package/shims/react-jsx-runtime.d.ts +4 -0
  493. package/shims/react-jsx-runtime.js +61 -0
  494. package/shims/react-jsx-runtime.js.map +1 -0
  495. package/helpers/angular/angular-linker.d.ts +0 -13
  496. package/helpers/angular/angular-linker.js +0 -185
  497. package/helpers/angular/angular-linker.js.map +0 -1
  498. package/helpers/angular/inject-component-hmr-registration.js.map +0 -1
  499. package/helpers/angular/inline-decorator-component-templates.js.map +0 -1
  500. package/helpers/angular/shared-linker.d.ts +0 -11
  501. package/helpers/angular/shared-linker.js +0 -75
  502. package/helpers/angular/shared-linker.js.map +0 -1
  503. package/helpers/angular/synthesize-decorator-ctor-parameters.js.map +0 -1
  504. package/helpers/angular/synthesize-injectable-factories.js.map +0 -1
  505. package/helpers/angular/util.js.map +0 -1
  506. package/helpers/module-runner-patch.d.ts +0 -3
  507. package/helpers/module-runner-patch.js +0 -63
  508. package/helpers/module-runner-patch.js.map +0 -1
  509. package/helpers/prelink-angular.d.ts +0 -2
  510. package/helpers/prelink-angular.js +0 -114
  511. package/helpers/prelink-angular.js.map +0 -1
  512. package/hmr/server/websocket-angular-entry.js.map +0 -1
  513. package/hmr/server/websocket-angular-hot-update.js.map +0 -1
  514. package/hmr/server/websocket-ns-m-finalize.d.ts +0 -22
  515. package/hmr/server/websocket-ns-m-finalize.js +0 -88
  516. package/hmr/server/websocket-ns-m-finalize.js.map +0 -1
  517. package/hmr/server/websocket-runtime-compat.d.ts +0 -19
  518. package/hmr/server/websocket-runtime-compat.js +0 -287
  519. package/hmr/server/websocket-runtime-compat.js.map +0 -1
  520. package/hmr/server/websocket-vue-sfc.d.ts +0 -27
  521. package/hmr/server/websocket-vue-sfc.js +0 -1069
  522. package/hmr/server/websocket-vue-sfc.js.map +0 -1
  523. package/hmr/shared/runtime/http-only-boot.d.ts +0 -2
  524. package/hmr/shared/runtime/http-only-boot.js +0 -171
  525. package/hmr/shared/runtime/http-only-boot.js.map +0 -1
  526. package/hmr/vendor-bootstrap.d.ts +0 -3
  527. package/hmr/vendor-bootstrap.js +0 -32
  528. package/hmr/vendor-bootstrap.js.map +0 -1
  529. package/shims/react-reconciler-constants.d.ts +0 -14
  530. package/shims/react-reconciler-constants.js +0 -21
  531. package/shims/react-reconciler-constants.js.map +0 -1
  532. package/shims/react-reconciler.d.ts +0 -8
  533. package/shims/react-reconciler.js +0 -15
  534. package/shims/react-reconciler.js.map +0 -1
  535. package/transformers/NativeClass/index.d.ts +0 -2
  536. package/transformers/NativeClass/index.js +0 -222
  537. package/transformers/NativeClass/index.js.map +0 -1
  538. /package/{helpers/angular → hmr/frameworks/angular/build}/inject-component-hmr-registration.d.ts +0 -0
  539. /package/{helpers/angular → hmr/frameworks/angular/build}/inline-decorator-component-templates.d.ts +0 -0
  540. /package/{helpers/angular → hmr/frameworks/angular/build}/synthesize-decorator-ctor-parameters.d.ts +0 -0
  541. /package/{helpers/angular → hmr/frameworks/angular/build}/synthesize-injectable-factories.d.ts +0 -0
  542. /package/{helpers/angular → hmr/frameworks/angular/build}/util.d.ts +0 -0
  543. /package/{helpers/angular → hmr/frameworks/angular/build}/util.js +0 -0
  544. /package/hmr/{server → frameworks/angular/server}/websocket-angular-entry.d.ts +0 -0
@@ -1,1069 +0,0 @@
1
- import { createRequire } from 'node:module';
2
- import { createHash } from 'crypto';
3
- import { readFileSync } from 'fs';
4
- import * as path from 'path';
5
- import babelCore from '@babel/core';
6
- import { parse as babelParse } from '@babel/parser';
7
- import traverse from '@babel/traverse';
8
- import * as t from '@babel/types';
9
- import { genCode } from '../helpers/babel.js';
10
- import { astExtractImportsAndStripTypes } from '../helpers/ast-extract.js';
11
- import { astNormalizeModuleImportsAndHelpers, astVerifyAndAnnotateDuplicates } from '../helpers/ast-normalizer.js';
12
- import { stripRtCoreSentinel, stripDanglingViteCjsImports } from '../helpers/sanitize.js';
13
- import { vueSfcCompiler } from '../frameworks/vue/server/compiler.js';
14
- import { buildInlineTemplateBlock, extractTemplateRender, processTemplateVariantMinimal } from '../frameworks/vue/server/sfc-transforms.js';
15
- import { NS_NATIVE_TAGS } from './compiler.js';
16
- import { ensureDestructureCoreImports, ensureGuardPlainDynamicImports, ensureVariableDynamicImportHelper, ensureVersionedRtImports, extractExportMetadata } from './websocket-served-module-helpers.js';
17
- const babelTraverse = traverse?.default || traverse;
18
- const { parse, compileTemplate, compileScript } = vueSfcCompiler;
19
- const pluginTransformTypescript = (() => {
20
- const requireFromHere = createRequire(import.meta.url);
21
- const loaded = requireFromHere('@babel/plugin-transform-typescript');
22
- return loaded?.default || loaded;
23
- })();
24
- function setJavascriptResponseHeaders(res) {
25
- res.setHeader('Access-Control-Allow-Origin', '*');
26
- res.setHeader('Content-Type', 'application/javascript; charset=utf-8');
27
- res.setHeader('Cache-Control', 'no-store, no-cache, must-revalidate, max-age=0');
28
- res.setHeader('Pragma', 'no-cache');
29
- res.setHeader('Expires', '0');
30
- }
31
- function setJsonResponseHeaders(res) {
32
- res.setHeader('Access-Control-Allow-Origin', '*');
33
- res.setHeader('Content-Type', 'application/json; charset=utf-8');
34
- res.setHeader('Cache-Control', 'no-store, no-cache, must-revalidate, max-age=0');
35
- res.setHeader('Pragma', 'no-cache');
36
- res.setHeader('Expires', '0');
37
- }
38
- export function parseVersionedEndpointPath(basePath, pathname) {
39
- const rawRemainder = pathname.slice(basePath.length) || '';
40
- let verFromPath = null;
41
- let pathStyle = rawRemainder;
42
- if (rawRemainder && rawRemainder.startsWith('/')) {
43
- const parts = rawRemainder.split('/');
44
- if (parts.length > 2 && /^[0-9]+$/.test(parts[1] || '')) {
45
- verFromPath = parts[1];
46
- pathStyle = '/' + parts.slice(2).join('/');
47
- }
48
- }
49
- return { verFromPath, pathStyle };
50
- }
51
- export function buildSfcDelegatedModule(importerPath, version) {
52
- const asmPath = `/ns/asm/${version}?path=${encodeURIComponent(importerPath)}`;
53
- return `// [sfc] kind=full (delegated to assembler) path=${importerPath}\nexport * from ${JSON.stringify(asmPath)};\nexport { default } from ${JSON.stringify(asmPath)};\n`;
54
- }
55
- export function templateHasRender(templateCode) {
56
- return /export\s+function\s+render\s*\(/.test(templateCode) || /(?:^|\n)\s*function\s+render\s*\(/.test(templateCode) || /export\s+(?:const|let|var)\s+render\s*=/.test(templateCode) || /(?:^|\n)\s*(?:const|let|var)\s+render\s*=/.test(templateCode) || /\brender\s*[:=]\s*/.test(templateCode) || /export\s*\{\s*render\s*(?:as\s*render)?\s*\}/.test(templateCode);
57
- }
58
- function normalizeRequestedSpec(spec, appVirtualWithSlash) {
59
- let normalized = spec || '';
60
- if (normalized.startsWith('@/'))
61
- normalized = appVirtualWithSlash + normalized.slice(2);
62
- if (!normalized.startsWith('/'))
63
- normalized = '/' + normalized;
64
- return normalized;
65
- }
66
- export function registerVueSfcHandlers(server, options) {
67
- server.middlewares.use(async (req, res, next) => {
68
- try {
69
- const urlObj = new URL(req.url || '', 'http://localhost');
70
- const pathname = urlObj.pathname;
71
- const isNs = pathname === '/ns/sfc' || pathname.startsWith('/ns/sfc/');
72
- if (!isNs)
73
- return next();
74
- if (pathname.startsWith('/ns/asm') || pathname.startsWith('/ns/sfc-meta'))
75
- return next();
76
- setJavascriptResponseHeaders(res);
77
- const basePath = '/ns/sfc';
78
- let pathParam = urlObj.searchParams.get('path') || '';
79
- const { verFromPath, pathStyle: rawPathStyle } = parseVersionedEndpointPath(basePath, pathname);
80
- let pathStyle = rawPathStyle;
81
- if (pathStyle && pathStyle !== '/' && !pathParam) {
82
- if (!pathStyle.startsWith('/'))
83
- pathStyle = '/' + pathStyle;
84
- pathParam = pathStyle + (urlObj.search || '');
85
- }
86
- let fullSpec = pathParam || '';
87
- if (!fullSpec) {
88
- res.statusCode = 200;
89
- res.end('export {}\n');
90
- return;
91
- }
92
- fullSpec = normalizeRequestedSpec(fullSpec, options.appVirtualWithSlash);
93
- const isVariant = /[?&]vue&type=/.test(fullSpec);
94
- const variantTypeMatch = /[?&]type=([^&]+)/.exec(fullSpec);
95
- const variantType = variantTypeMatch?.[1] || null;
96
- const isStyleVariant = /[?&]type=style\b/.test(fullSpec);
97
- let candidate = fullSpec;
98
- let transformed = null;
99
- if (!isVariant) {
100
- const baseFilePath = fullSpec.replace(/[?#].*$/, '');
101
- const candidates = [baseFilePath + (baseFilePath.includes('?') ? '&' : '?') + 'vue', baseFilePath];
102
- for (const currentCandidate of candidates) {
103
- try {
104
- const result = await server.transformRequest(currentCandidate);
105
- if (result?.code) {
106
- transformed = result;
107
- candidate = currentCandidate;
108
- break;
109
- }
110
- }
111
- catch { }
112
- }
113
- if (!transformed?.code) {
114
- if (options.verbose) {
115
- console.warn('[sfc][serve] transform miss for', fullSpec);
116
- }
117
- try {
118
- const tried = candidates.slice(0, 8);
119
- const out = `// [sfc] transform miss kind=full path=${fullSpec.replace(/\n/g, '')} tried=${tried.length}\n` + `throw new Error(${JSON.stringify('[ns/sfc] transform failed for full SFC: ' + fullSpec + ' (tried ' + tried.length + ')')});\nexport {}\n`;
120
- res.statusCode = 404;
121
- res.end(out);
122
- return;
123
- }
124
- catch {
125
- res.statusCode = 404;
126
- res.end('export {}\n');
127
- return;
128
- }
129
- }
130
- }
131
- else {
132
- try {
133
- transformed = await server.transformRequest(candidate);
134
- }
135
- catch { }
136
- if (!transformed?.code) {
137
- try {
138
- const out = `// [sfc] transform miss kind=variant path=${fullSpec.replace(/\n/g, '')}\n` + `throw new Error(${JSON.stringify('[ns/sfc] transform failed for variant: ' + fullSpec)});\nexport {}\n`;
139
- res.statusCode = 404;
140
- res.end(out);
141
- return;
142
- }
143
- catch {
144
- res.statusCode = 404;
145
- res.end('export {}\n');
146
- return;
147
- }
148
- }
149
- }
150
- if (isStyleVariant) {
151
- const sig = `// [sfc] kind=variant:style path=${fullSpec.replace(/\n/g, '')} len=0 default=false\n`;
152
- res.statusCode = 200;
153
- res.end(`${sig}export {}\n`);
154
- return;
155
- }
156
- let code = transformed.code;
157
- code = options.requireGuardSnippet + code;
158
- const projectRoot = server.config?.root || process.cwd();
159
- if (!isVariant) {
160
- const importerPath = fullSpec.replace(/[?#].*$/, '');
161
- const version = verFromPath || '0';
162
- res.statusCode = 200;
163
- res.end(buildSfcDelegatedModule(importerPath, version));
164
- return;
165
- }
166
- if (variantType === 'template') {
167
- const preferSelfCompile = !!process.env.NS_HMR_SELF_COMPILE_TEMPLATE;
168
- if (preferSelfCompile) {
169
- try {
170
- const projectRootTemplate = server.config?.root || process.cwd();
171
- const baseFilePath = fullSpec.replace(/[?#].*$/, '');
172
- const absolutePath = path.join(projectRootTemplate, baseFilePath.replace(/^\//, ''));
173
- let sfcSource = '';
174
- try {
175
- sfcSource = readFileSync(absolutePath, 'utf-8');
176
- }
177
- catch { }
178
- if (sfcSource) {
179
- const { descriptor } = parse(sfcSource, { filename: absolutePath });
180
- const id = createHash('md5').update(absolutePath).digest('hex').slice(0, 8);
181
- let bindingMetadata = undefined;
182
- try {
183
- const script = compileScript(descriptor, {
184
- id,
185
- inlineTemplate: false,
186
- reactivityTransform: false,
187
- });
188
- bindingMetadata = script?.bindings;
189
- }
190
- catch { }
191
- const templateSource = descriptor.template?.content || '';
192
- const compiledTemplate = compileTemplate({
193
- source: templateSource,
194
- id,
195
- filename: absolutePath,
196
- isProd: false,
197
- ssr: false,
198
- compilerOptions: {
199
- bindingMetadata,
200
- isCustomElement: (tag) => NS_NATIVE_TAGS.has(tag),
201
- },
202
- });
203
- let out = (compiledTemplate && (compiledTemplate.code || '')) || '';
204
- try {
205
- out = out.replace(/from\s+["'](?:nativescript-vue|vue)[^"']*["']/g, 'from "/ns/rt"');
206
- }
207
- catch { }
208
- code = processTemplateVariantMinimal(out);
209
- }
210
- else {
211
- code = 'export {}\n';
212
- }
213
- }
214
- catch (templateError) {
215
- if (options.verbose) {
216
- console.warn('[sfc][template][self-compile][fail]', fullSpec, templateError?.message);
217
- }
218
- code = transformed.code || 'export {}\n';
219
- code = processTemplateVariantMinimal(code);
220
- }
221
- }
222
- else {
223
- code = transformed.code || 'export {}\n';
224
- code = processTemplateVariantMinimal(code);
225
- }
226
- }
227
- try {
228
- const ast = babelParse(code, {
229
- sourceType: 'module',
230
- plugins: ['typescript'],
231
- });
232
- const templateBindings = new Set();
233
- const navToLocals = [];
234
- const navBackLocals = [];
235
- babelTraverse(ast, {
236
- ImportDeclaration(pathNode) {
237
- const spec = pathNode.node.source.value || '';
238
- if (typeof spec === 'string' && /\.vue\?[^\n]*type=template/.test(spec)) {
239
- const ids = [];
240
- for (const currentSpecifier of pathNode.node.specifiers) {
241
- if (t.isImportSpecifier(currentSpecifier)) {
242
- const imported = t.isIdentifier(currentSpecifier.imported) ? currentSpecifier.imported.name : undefined;
243
- const local = t.isIdentifier(currentSpecifier.local) ? currentSpecifier.local.name : undefined;
244
- if ((imported === 'render' || imported === undefined) && local)
245
- ids.push(local);
246
- }
247
- else if (t.isImportDefaultSpecifier(currentSpecifier) || t.isImportNamespaceSpecifier(currentSpecifier)) {
248
- if (t.isIdentifier(currentSpecifier.local))
249
- ids.push(currentSpecifier.local.name);
250
- }
251
- }
252
- ids.forEach((name) => templateBindings.add(name));
253
- pathNode.remove();
254
- return;
255
- }
256
- const isNsVue = typeof spec === 'string' && (/nativescript-vue/.test(spec) || /vendor\.mjs$/.test(spec) || /\/node_modules\/\.vite\/deps\/nativescript-vue\.js/.test(spec));
257
- if (isNsVue) {
258
- const remain = [];
259
- for (const currentSpecifier of pathNode.node.specifiers) {
260
- if (t.isImportSpecifier(currentSpecifier)) {
261
- const imported = t.isIdentifier(currentSpecifier.imported) ? currentSpecifier.imported.name : undefined;
262
- const local = t.isIdentifier(currentSpecifier.local) ? currentSpecifier.local.name : undefined;
263
- if (local && (imported === '$navigateTo' || imported === 'navigateTo')) {
264
- navToLocals.push(local);
265
- continue;
266
- }
267
- if (local && (imported === '$navigateBack' || imported === 'navigateBack')) {
268
- navBackLocals.push(local);
269
- continue;
270
- }
271
- }
272
- remain.push(currentSpecifier);
273
- }
274
- if (remain.length) {
275
- pathNode.node.specifiers = remain;
276
- }
277
- else {
278
- pathNode.remove();
279
- }
280
- }
281
- },
282
- });
283
- if (templateBindings.size) {
284
- babelTraverse(ast, {
285
- Identifier(pathNode) {
286
- if (templateBindings.has(pathNode.node.name)) {
287
- pathNode.replaceWith(t.identifier('undefined'));
288
- }
289
- },
290
- AssignmentExpression(pathNode) {
291
- if (t.isMemberExpression(pathNode.node.left) && t.isIdentifier(pathNode.node.left.property, { name: 'render' })) {
292
- const e = t.identifier('__e');
293
- const guarded = t.tryStatement(t.blockStatement([t.variableDeclaration('const', [t.variableDeclarator(e, pathNode.node.right)]), t.ifStatement(t.logicalExpression('&&', t.binaryExpression('!==', t.unaryExpression('typeof', pathNode.node.left.object, true), t.stringLiteral('undefined')), t.binaryExpression('!==', t.unaryExpression('typeof', e, true), t.stringLiteral('undefined'))), t.blockStatement([t.expressionStatement(t.assignmentExpression('=', pathNode.node.left, e))]))]), t.catchClause(t.identifier('_e'), t.blockStatement([])));
294
- pathNode.replaceWithMultiple([guarded]);
295
- }
296
- },
297
- });
298
- }
299
- let outCode = genCode(ast).code;
300
- if (navToLocals.length || navBackLocals.length) {
301
- const shimLines = [];
302
- for (const currentName of navToLocals)
303
- shimLines.push(`import __ns_rt_nav_to_mod from "/ns/rt";\nconst ${currentName} = (...args) => __ns_rt_nav_to_mod.$navigateTo(...args);`);
304
- for (const currentName of navBackLocals)
305
- shimLines.push(`import __ns_rt_nav_back_mod from "/ns/rt";\nconst ${currentName} = (...args) => __ns_rt_nav_back_mod.$navigateBack(...args);`);
306
- outCode = shimLines.join('\n') + '\n' + outCode;
307
- }
308
- code = outCode;
309
- }
310
- catch { }
311
- code = options.processCodeForDevice(code, false, true, /(?:^|\/)node_modules\//.test(fullSpec), fullSpec);
312
- try {
313
- const importerPath = fullSpec.replace(/[?#].*$/, '');
314
- const version = verFromPath || '0';
315
- const ast = babelParse(code, {
316
- sourceType: 'module',
317
- plugins: ['typescript'],
318
- });
319
- babelTraverse(ast, {
320
- ImportDeclaration(pathNode) {
321
- const src = pathNode.node.source.value || '';
322
- if (typeof src !== 'string')
323
- return;
324
- if (/^https?:\/\//.test(src))
325
- return;
326
- if (/\.vue(?:$|\?)/.test(src)) {
327
- let spec = src;
328
- if (spec.startsWith('./') || spec.startsWith('../')) {
329
- spec = path.posix.normalize(path.posix.join(path.posix.dirname(importerPath), spec));
330
- if (!spec.startsWith('/'))
331
- spec = '/' + spec;
332
- }
333
- else if (!spec.startsWith('/')) {
334
- if (spec.startsWith('@@/'))
335
- spec = '/' + spec.slice(2);
336
- if (spec.startsWith('@/'))
337
- spec = options.appVirtualWithSlash + spec.slice(2);
338
- }
339
- if (!/\bvue&type=/.test(src)) {
340
- spec = spec.replace(/[?#].*$/, '');
341
- const asmUrl = `/ns/asm/${version}?path=${encodeURIComponent(spec)}&mode=inline`;
342
- pathNode.node.source = t.stringLiteral(asmUrl);
343
- }
344
- }
345
- },
346
- });
347
- code = genCode(ast).code;
348
- }
349
- catch { }
350
- try {
351
- const importerPath = fullSpec.replace(/[?#].*$/, '');
352
- const tsResult = await babelCore.transformAsync(code, {
353
- plugins: [[pluginTransformTypescript, { allowDeclareFields: true }]],
354
- sourceType: 'module',
355
- filename: importerPath.endsWith('.vue') ? importerPath.replace(/\.vue$/, '.ts') : importerPath + '.ts',
356
- comments: true,
357
- configFile: false,
358
- babelrc: false,
359
- });
360
- if (tsResult?.code) {
361
- code = tsResult.code;
362
- }
363
- }
364
- catch (variantTsError) {
365
- if (options.verbose) {
366
- console.warn('[sfc][variant:script][babel-ts][fail]', fullSpec, variantTsError?.message);
367
- }
368
- }
369
- const importerPath = fullSpec.replace(/[?#].*$/, '');
370
- if (variantType !== 'template') {
371
- code = options.cleanCode(code);
372
- }
373
- code = options.rewriteImports(code, importerPath, options.sfcFileMap, options.depFileMap, projectRoot, !!options.verbose, undefined, options.getServerOrigin(server));
374
- code = ensureVariableDynamicImportHelper(code);
375
- try {
376
- const versionNumber = Number(verFromPath || '0');
377
- const currentVersion = Number.isFinite(versionNumber) && versionNumber > 0 ? versionNumber : options.getGraphVersion();
378
- const origin = options.getServerOrigin(server);
379
- code = ensureVersionedRtImports(code, origin, currentVersion);
380
- code = options.getStrategy().ensureVersionedImports(code, origin, currentVersion);
381
- code = options.ensureVersionedCoreImports(code, origin, currentVersion);
382
- }
383
- catch { }
384
- try {
385
- code = ensureDestructureCoreImports(code);
386
- }
387
- catch { }
388
- try {
389
- code = astNormalizeModuleImportsAndHelpers(code);
390
- }
391
- catch { }
392
- try {
393
- code = stripRtCoreSentinel(code);
394
- }
395
- catch { }
396
- try {
397
- const versionNumber = Number(verFromPath || '0');
398
- const currentVersion = Number.isFinite(versionNumber) && versionNumber > 0 ? versionNumber : options.getGraphVersion();
399
- const origin = options.getServerOrigin(server);
400
- code = ensureVersionedRtImports(code, origin, currentVersion);
401
- code = options.ensureVersionedCoreImports(code, origin, currentVersion);
402
- }
403
- catch { }
404
- try {
405
- code = stripDanglingViteCjsImports(code);
406
- }
407
- catch { }
408
- const hasDefault = /\bexport\s+default\b/.test(code);
409
- const kind = isVariant ? `variant:${variantType || 'unknown'}` : 'full';
410
- const sig = `// [sfc] kind=${kind} path=${importerPath} len=${code.length} default=${hasDefault} wrapped=${false}\n`;
411
- if (options.verbose) {
412
- console.log(`[sfc][serve] ${fullSpec} kind=${kind} default=${hasDefault} bytes=${code.length}`);
413
- }
414
- if (!hasDefault) {
415
- const match = code.match(/\b(?:const|let|var)\s+(__ns_sfc__|_sfc_main)\b/);
416
- if (match && match[1]) {
417
- code += `\nexport default ${match[1]};`;
418
- }
419
- else if (/\b_defineComponent\s*\(|\bdefineComponent\s*\(/.test(code)) {
420
- code += '\nexport default (typeof __ns_sfc__ !== "undefined" ? __ns_sfc__ : (typeof _sfc_main !== "undefined" ? _sfc_main : undefined));';
421
- }
422
- }
423
- res.statusCode = 200;
424
- res.end(sig + code);
425
- }
426
- catch {
427
- res.statusCode = 500;
428
- res.end('export {}\n');
429
- }
430
- });
431
- server.middlewares.use(async (req, res, next) => {
432
- try {
433
- const urlObj = new URL(req.url || '', 'http://localhost');
434
- if (!urlObj.pathname.startsWith('/ns/sfc-meta'))
435
- return next();
436
- setJsonResponseHeaders(res);
437
- let spec = urlObj.searchParams.get('path') || '';
438
- if (!spec) {
439
- res.statusCode = 400;
440
- res.end(JSON.stringify({ error: 'missing path' }));
441
- return;
442
- }
443
- spec = normalizeRequestedSpec(spec, options.appVirtualWithSlash);
444
- const base = spec.replace(/[?#].*$/, '');
445
- const [scriptResult, templateResult] = await Promise.all([server.transformRequest(base + '?vue&type=script'), server.transformRequest(base + '?vue&type=template')]);
446
- const scriptCode = scriptResult?.code || '';
447
- const templateCode = templateResult?.code || '';
448
- const scriptMeta = extractExportMetadata(scriptCode);
449
- const hasRender = templateHasRender(templateCode);
450
- if (hasRender && options.verbose) {
451
- console.log('[sfc-meta] detected render for', base);
452
- }
453
- else if (!hasRender && options.verbose) {
454
- console.warn('[sfc-meta] render NOT detected for', base);
455
- }
456
- const hash = createHash('md5').update(base).digest('hex').slice(0, 8);
457
- const payload = {
458
- path: base,
459
- hasScript: !!scriptCode,
460
- hasTemplate: !!templateCode,
461
- hasStyle: false,
462
- scriptExports: scriptMeta.named,
463
- scriptHasDefault: scriptMeta.hasDefault,
464
- templateHasRender: hasRender,
465
- hmrId: hash,
466
- };
467
- res.statusCode = 200;
468
- res.end(JSON.stringify(payload));
469
- }
470
- catch (error) {
471
- res.statusCode = 500;
472
- res.end(JSON.stringify({ error: error?.message || String(error) }));
473
- }
474
- });
475
- server.middlewares.use(async (req, res, next) => {
476
- try {
477
- const urlObj = new URL(req.url || '', 'http://localhost');
478
- if (!urlObj.pathname.startsWith('/ns/asm'))
479
- return next();
480
- setJavascriptResponseHeaders(res);
481
- const asmBase = '/ns/asm';
482
- const { verFromPath } = parseVersionedEndpointPath(asmBase, urlObj.pathname);
483
- let spec = urlObj.searchParams.get('path') || '';
484
- const diag = urlObj.searchParams.get('diag') === '1';
485
- if (!spec) {
486
- res.statusCode = 400;
487
- res.end('export {}\n');
488
- return;
489
- }
490
- spec = normalizeRequestedSpec(spec, options.appVirtualWithSlash);
491
- const base = spec.replace(/[?#].*$/, '');
492
- if (diag) {
493
- const code = `// [sfc-asm] ${base} (diag)\n` + `// vue shim for diag-only instantiation\n` + `var _createElementVNode = globalThis.createElementVNode || globalThis._createElementVNode;\n` + `const __ns_sfc__ = { name: ${JSON.stringify(base.split('/').pop() || 'DiagComp')}, render(){ return _createElementVNode ? _createElementVNode('StackLayout') : (globalThis.createElementVNode ? globalThis.createElementVNode('StackLayout') : {}); } };\nexport default __ns_sfc__;\n`;
494
- res.statusCode = 200;
495
- res.end(code);
496
- return;
497
- }
498
- const projectRoot = server.config?.root || process.cwd();
499
- const safeTransform = async (candidate) => {
500
- try {
501
- return await server.transformRequest(candidate);
502
- }
503
- catch {
504
- return null;
505
- }
506
- };
507
- const scriptResult = await safeTransform(base + '?vue&type=script');
508
- const templateResult = await safeTransform(base + '?vue&type=template');
509
- await safeTransform(base + '?vue');
510
- const origin = options.getServerOrigin(server);
511
- const version = String(verFromPath || options.getGraphVersion() || Date.now());
512
- const scriptUrl = `${origin}/ns/sfc/${version}${base}?vue&type=script`;
513
- const templateCode = templateResult?.code || '';
514
- try {
515
- const root = server.config?.root || process.cwd();
516
- const absolutePath = path.join(root, base.replace(/^\//, ''));
517
- let sfcSource = '';
518
- try {
519
- sfcSource = readFileSync(absolutePath, 'utf-8');
520
- }
521
- catch { }
522
- if (sfcSource) {
523
- const { descriptor } = parse(sfcSource, { filename: absolutePath });
524
- const id = createHash('md5').update(absolutePath).digest('hex').slice(0, 8);
525
- let compiledScript = '';
526
- let bindingMetadata = undefined;
527
- let usedInlineScript = false;
528
- try {
529
- const isNSNative = (tag) => NS_NATIVE_TAGS.has(tag);
530
- const inlineScript = compileScript(descriptor, {
531
- id,
532
- inlineTemplate: true,
533
- reactivityTransform: false,
534
- templateOptions: {
535
- compilerOptions: { isCustomElement: isNSNative },
536
- },
537
- });
538
- if (/export\s+default/.test(inlineScript?.content || '')) {
539
- compiledScript = inlineScript.content;
540
- bindingMetadata = inlineScript?.bindings;
541
- usedInlineScript = true;
542
- }
543
- else {
544
- const fallbackScript = compileScript(descriptor, {
545
- id,
546
- inlineTemplate: false,
547
- reactivityTransform: false,
548
- });
549
- compiledScript = fallbackScript?.content || '';
550
- bindingMetadata = fallbackScript?.bindings;
551
- }
552
- }
553
- catch (scriptError) {
554
- if (options.verbose) {
555
- console.warn('[sfc-asm][compileScript] failed', base, scriptError?.message);
556
- }
557
- try {
558
- const fallbackScript = compileScript(descriptor, {
559
- id,
560
- inlineTemplate: false,
561
- reactivityTransform: false,
562
- });
563
- compiledScript = fallbackScript?.content || '';
564
- bindingMetadata = fallbackScript?.bindings;
565
- }
566
- catch (fallbackError) {
567
- if (options.verbose) {
568
- console.warn('[sfc-asm][compileScript][no-inline-fallback] failed', base, fallbackError?.message);
569
- }
570
- }
571
- }
572
- if (!compiledScript && scriptResult?.code) {
573
- compiledScript = scriptResult.code;
574
- }
575
- if (usedInlineScript) {
576
- try {
577
- const noInlineScript = compileScript(descriptor, {
578
- id,
579
- inlineTemplate: false,
580
- reactivityTransform: false,
581
- });
582
- compiledScript = noInlineScript?.content || compiledScript;
583
- bindingMetadata = noInlineScript?.bindings || bindingMetadata;
584
- }
585
- catch (noInlineError) {
586
- if (options.verbose) {
587
- console.warn('[sfc-asm][compileScript][no-inline-fallback] failed', base, noInlineError?.message);
588
- }
589
- }
590
- }
591
- let compiledTemplateCode = '';
592
- try {
593
- const templateSource = descriptor.template?.content || '';
594
- if (templateSource) {
595
- const compiledTemplate = compileTemplate({
596
- source: templateSource,
597
- id,
598
- filename: absolutePath,
599
- isProd: false,
600
- ssr: false,
601
- compilerOptions: {
602
- bindingMetadata,
603
- isCustomElement: (tag) => NS_NATIVE_TAGS.has(tag),
604
- },
605
- });
606
- compiledTemplateCode = (compiledTemplate && (compiledTemplate.code || '')) || '';
607
- if (compiledTemplate?.errors?.length && options.verbose) {
608
- console.warn('[sfc-asm][compileTemplate][errors]', base, compiledTemplate.errors);
609
- }
610
- }
611
- }
612
- catch (templateError) {
613
- if (options.verbose) {
614
- console.warn('[sfc-asm][compileTemplate] failed', base, templateError?.message);
615
- }
616
- if (templateResult?.code)
617
- compiledTemplateCode = templateResult.code;
618
- }
619
- if (!compiledTemplateCode) {
620
- compiledTemplateCode = "export function render(){ const _ = (globalThis.createElementVNode||globalThis._createElementVNode); return _? _('StackLayout') : {}; }\n";
621
- }
622
- let scriptBody = compiledScript || '';
623
- if (scriptBody) {
624
- scriptBody = scriptBody.replace(/(^|\n)\s*import\s+([^;\n]+)\s+from\s+["'](?:vue|nativescript-vue|~\/vendor\.mjs)(?:\/[^\"]*)?["'];?/g, (_match, prefix, clause) => `${prefix}import ${clause} from "/ns/rt";`);
625
- try {
626
- const importerDir = path.posix.dirname(base);
627
- scriptBody = scriptBody.replace(/(^|\n)\s*import\s+([^;\n]+)\s+from\s+["']([^"'\n]+\.vue)(?:\?[^"'\n]*)?["'];?/g, (_match, prefix, clause, importSpec) => {
628
- let absoluteImport = importSpec;
629
- if (importSpec.startsWith('./') || importSpec.startsWith('../')) {
630
- absoluteImport = path.posix.normalize(path.posix.join(importerDir, importSpec));
631
- if (!absoluteImport.startsWith('/'))
632
- absoluteImport = '/' + absoluteImport;
633
- }
634
- else if (!importSpec.startsWith('/')) {
635
- if (absoluteImport.startsWith('@/'))
636
- absoluteImport = options.appVirtualWithSlash + absoluteImport.slice(2);
637
- }
638
- const asmUrl = `/ns/asm/${version}?path=${encodeURIComponent(absoluteImport)}&mode=inline`;
639
- return `${prefix}import ${clause} from ${JSON.stringify(asmUrl)};`;
640
- });
641
- }
642
- catch { }
643
- }
644
- let helperBindings = '';
645
- let renderDecl = '';
646
- let inlineBlock;
647
- let renderOk = false;
648
- if (compiledTemplateCode) {
649
- try {
650
- inlineBlock = buildInlineTemplateBlock(compiledTemplateCode) || undefined;
651
- if (!inlineBlock) {
652
- const extracted = extractTemplateRender(compiledTemplateCode);
653
- helperBindings = extracted.helperBindings;
654
- renderDecl = extracted.renderDecl;
655
- inlineBlock = extracted.inlineBlock;
656
- renderOk = extracted.ok;
657
- }
658
- else {
659
- renderOk = true;
660
- }
661
- }
662
- catch (extractError) {
663
- if (options.verbose) {
664
- console.warn('[sfc-asm][extractTemplateRender] failed', base, extractError?.message);
665
- }
666
- }
667
- }
668
- if (!renderOk && !inlineBlock) {
669
- try {
670
- const templateUrl = `${origin}/ns/sfc/${version}${base}?vue&type=template`;
671
- const importLine = `import * as __template from ${JSON.stringify(templateUrl)};`;
672
- helperBindings += `\n${importLine}`;
673
- renderDecl += `\nfunction __ns_getRender(){\n try {\n if (__template && __template.render) return __template.render;\n } catch (_e) {}\n try {\n const _ = globalThis.createElementVNode || globalThis._createElementVNode;\n return _ ? function(){ return _('StackLayout'); } : function(){ return {}; };\n } catch (_e) { return function(){ return {}; }; }\n}\n`;
674
- renderOk = true;
675
- }
676
- catch { }
677
- }
678
- let scriptTransformed = scriptBody;
679
- if (scriptTransformed) {
680
- scriptTransformed = scriptTransformed.replace(/(^|\n)\s*export\s+default\s+/g, '$1const __ns_sfc__ = ').replace(/(^|\n)\s*export\s*\{[^}]*\}\s*;?\s*/g, '\n/* removed named exports for inline asm */\n');
681
- scriptTransformed = scriptTransformed.replace(/(^|[\n;])\s*(?:const|let|var)\s+__ns_sfc__\s*=\s*/g, '$1__ns_sfc__ = ');
682
- if (!/(^|[\n;])\s*(?:const|let|var)\s+__ns_sfc__\b/.test(scriptTransformed)) {
683
- scriptTransformed = 'let __ns_sfc__;\n' + scriptTransformed;
684
- }
685
- scriptTransformed = scriptTransformed.replace(/^\s*\}+(?=\s*[^}])/, (value) => `/* [asm-fix] removed ${value.length} stray leading braces */\n`);
686
- }
687
- else {
688
- try {
689
- const componentName = (base.split('/').pop() || 'Component').replace(/\.vue$/i, '') || 'Component';
690
- scriptTransformed = `import { defineComponent as _defineComponent } from "/ns/rt";\nlet __ns_sfc__;\n__ns_sfc__ = /*@__PURE__*/_defineComponent({ __name: ${JSON.stringify(componentName)} });`;
691
- }
692
- catch {
693
- scriptTransformed = 'import { defineComponent as _defineComponent } from "/ns/rt";\nlet __ns_sfc__;\n__ns_sfc__ = /*@__PURE__*/_defineComponent({});';
694
- }
695
- }
696
- const parts = [];
697
- parts.push(`// [sfc-asm] ${base} (inline-compiled)`);
698
- if (helperBindings)
699
- parts.push(helperBindings);
700
- parts.push(scriptTransformed);
701
- parts.push(renderDecl);
702
- parts.push(`try { if (!__ns_sfc__.render) Object.defineProperty(__ns_sfc__, 'render', { configurable: true, enumerable: true, get(){ const r = (typeof __ns_getRender==='function' ? __ns_getRender() : undefined); Object.defineProperty(__ns_sfc__, 'render', { value: r, writable: true, configurable: true, enumerable: true }); return r; }, set(v){ Object.defineProperty(__ns_sfc__, 'render', { value: v, writable: true, configurable: true, enumerable: true }); } }); } catch(_e){}`);
703
- parts.push("export function render(){ const f = (typeof __ns_getRender==='function' ? __ns_getRender() : (__ns_sfc__ && __ns_sfc__.render)); return typeof f==='function' ? f.apply(this, arguments) : undefined; }");
704
- parts.push('export default __ns_sfc__');
705
- let inlineCode = parts.filter(Boolean).join('\n');
706
- inlineCode = options.processCodeForDevice(inlineCode, false, true);
707
- try {
708
- inlineCode = options.ensureVersionedCoreImports(inlineCode, options.getServerOrigin(server), Number(version));
709
- }
710
- catch { }
711
- try {
712
- inlineCode = ensureDestructureCoreImports(inlineCode);
713
- }
714
- catch { }
715
- try {
716
- const tsResult = await babelCore.transformAsync(scriptTransformed, {
717
- plugins: [[pluginTransformTypescript, { allowDeclareFields: true }]],
718
- ast: false,
719
- sourceType: 'module',
720
- configFile: false,
721
- babelrc: false,
722
- });
723
- if (tsResult?.code)
724
- scriptTransformed = tsResult.code;
725
- }
726
- catch (tsError) {
727
- if (options.verbose) {
728
- console.warn('[sfc-asm][babel-ts][fail]', base, tsError?.message);
729
- }
730
- }
731
- let importLines = [];
732
- try {
733
- const astResult = astExtractImportsAndStripTypes(scriptTransformed);
734
- importLines = astResult.imports;
735
- scriptTransformed = astResult.body;
736
- if (astResult.diagnostics.length && options.verbose) {
737
- console.warn('[sfc-asm][ast]', base, astResult.diagnostics.join('; '));
738
- }
739
- }
740
- catch (astError) {
741
- if (options.verbose) {
742
- console.warn('[sfc-asm][ast][fail]', base, astError?.message);
743
- }
744
- }
745
- if (renderDecl && /(^|\n)\s*(?:export\s+)?function\s+__ns_render\s*\(/.test(renderDecl) && !/\}\s*$/.test(renderDecl)) {
746
- renderDecl = renderDecl.trimEnd() + '\n}';
747
- }
748
- const outParts = [];
749
- outParts.push(`// [sfc-asm] ${base} (inline-compiled)`);
750
- outParts.push('// [sfc-asm][canonical]');
751
- if (importLines.length)
752
- outParts.push(Array.from(new Set(importLines)).join('\n'));
753
- outParts.push(scriptTransformed);
754
- if (inlineBlock) {
755
- outParts.push(inlineBlock);
756
- }
757
- else {
758
- if (helperBindings)
759
- outParts.push(helperBindings);
760
- if (renderDecl && renderDecl.trim())
761
- outParts.push(renderDecl);
762
- }
763
- outParts.push(`try { if (!__ns_sfc__.render) Object.defineProperty(__ns_sfc__, 'render', { configurable: true, enumerable: true, get(){ const r = (typeof __ns_getRender==='function' ? __ns_getRender() : (typeof __ns_render==='function' ? __ns_render : undefined)); Object.defineProperty(__ns_sfc__, 'render', { value: r, writable: true, configurable: true, enumerable: true }); return r; }, set(v){ Object.defineProperty(__ns_sfc__, 'render', { value: v, writable: true, configurable: true, enumerable: true }); } }); } catch(_e){}`);
764
- outParts.push('export function render(){ const f = (typeof __ns_getRender==="function" ? __ns_getRender() : (typeof __ns_render==="function" ? __ns_render : (__ns_sfc__ && __ns_sfc__.render))); return typeof f === "function" ? f.apply(this, arguments) : undefined; }');
765
- outParts.push('export default __ns_sfc__');
766
- let inlineCode2 = outParts.filter(Boolean).join('\n');
767
- inlineCode2 = options.processCodeForDevice(inlineCode2, false, true);
768
- try {
769
- inlineCode2 = options.ensureVersionedCoreImports(inlineCode2, options.getServerOrigin(server), Number(version));
770
- }
771
- catch { }
772
- try {
773
- inlineCode2 = ensureDestructureCoreImports(inlineCode2);
774
- }
775
- catch { }
776
- try {
777
- const lateImportPattern = /^(?!\/\/).*^\s*import\s+[^;]+;?$/gm;
778
- const allImports = [];
779
- inlineCode2 = inlineCode2.replace(lateImportPattern, (value) => {
780
- allImports.push(value);
781
- return '';
782
- });
783
- if (allImports.length) {
784
- inlineCode2 = inlineCode2.replace(/(\/\/ \[sfc-asm\]\[canonical\]\n)/, `$1${Array.from(new Set(allImports)).join('\n')}\n/* [asm-fix] re-hoisted ${allImports.length} imports */\n`);
785
- }
786
- }
787
- catch { }
788
- try {
789
- inlineCode2 = astNormalizeModuleImportsAndHelpers(inlineCode2);
790
- }
791
- catch { }
792
- try {
793
- inlineCode2 = astVerifyAndAnnotateDuplicates(inlineCode2);
794
- if (/^\s*\/\/ \[ast-verify\]\[duplicate-bindings\]/m.test(inlineCode2)) {
795
- const diagnosticLine = (inlineCode2.match(/^\s*\/\/ \[ast-verify\]\[duplicate-bindings\][^\n]*/m) || [])[0] || '// [ast-verify][duplicate-bindings]';
796
- const brief = diagnosticLine.replace(/^[^:]*:?\s?/, '');
797
- const escaped = brief.replace(/["\\]/g, '\\$&');
798
- const thrower = `throw new Error("[nsv-hmr] Duplicate top-level bindings detected post-hoist: ${escaped}");`;
799
- inlineCode2 = `${thrower}\n` + inlineCode2;
800
- }
801
- }
802
- catch { }
803
- try {
804
- inlineCode2 = inlineCode2.replace(/\bdefault\b\s*(?=\}|,|\n)/g, 'default: undefined');
805
- inlineCode2 = inlineCode2.replace(/<unknown>/g, '');
806
- inlineCode2 = inlineCode2.replace(/}\s*=>\s*\{/g, '');
807
- }
808
- catch { }
809
- try {
810
- inlineCode2 = options.rewriteImports(inlineCode2, base, options.sfcFileMap, options.depFileMap, projectRoot, !!options.verbose, undefined, options.getServerOrigin(server));
811
- }
812
- catch { }
813
- try {
814
- const finalTs = await babelCore.transformAsync(inlineCode2, {
815
- plugins: [[pluginTransformTypescript, { allowDeclareFields: true }]],
816
- ast: false,
817
- sourceType: 'module',
818
- configFile: false,
819
- babelrc: false,
820
- });
821
- if (finalTs?.code)
822
- inlineCode2 = finalTs.code;
823
- }
824
- catch { }
825
- try {
826
- const missingElse = /"onUpdate:modelValue"\s*:\s*_cache\[(\d+)\]\s*\|\|\s*\(_cache\[\1\]\s*=\s*\$event\s*=>\s*_isRef\(\s*([A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*)*)\s*\)\s*\?\s*\2\.value\s*=\s*\$event\s*\)/g;
827
- inlineCode2 = inlineCode2.replace(missingElse, (_match, idx, expr) => `"onUpdate:modelValue": _cache[${idx}] || (_cache[${idx}] = $event => (_isRef(${expr}) ? (${expr}.value = $event) : (${expr} = $event)))`);
828
- const malformed = /"onUpdate:modelValue"\s*:\s*_cache\[(\d+)\]\s*\|\|\s*\(_cache\[\1\]\s*=\s*[^=]*\(\s*([A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*)*)\s*\)[^=]*=\s*\$event\s*\)\s*\)/g;
829
- inlineCode2 = inlineCode2.replace(malformed, (_match, idx, expr) => `"onUpdate:modelValue": _cache[${idx}] || (_cache[${idx}] = $event => (_isRef(${expr}) ? (${expr}.value = $event) : (${expr} = $event)))`);
830
- }
831
- catch { }
832
- try {
833
- const firstImportIndex = inlineCode2.search(/^[\t ]*import\b/m);
834
- if (firstImportIndex > 0) {
835
- const prefix = inlineCode2.slice(0, firstImportIndex);
836
- let open = 0;
837
- let close = 0;
838
- let inSingle = false;
839
- let inDouble = false;
840
- let inTemplate = false;
841
- let inLineComment = false;
842
- let inBlockComment = false;
843
- for (let index = 0; index < prefix.length; index++) {
844
- const ch = prefix[index];
845
- const nextChar = prefix[index + 1];
846
- if (inLineComment) {
847
- if (ch === '\n')
848
- inLineComment = false;
849
- continue;
850
- }
851
- if (inBlockComment) {
852
- if (ch === '*' && nextChar === '/') {
853
- inBlockComment = false;
854
- index++;
855
- }
856
- continue;
857
- }
858
- if (inSingle) {
859
- if (ch === '\\') {
860
- index++;
861
- continue;
862
- }
863
- if (ch === "'")
864
- inSingle = false;
865
- continue;
866
- }
867
- if (inDouble) {
868
- if (ch === '\\') {
869
- index++;
870
- continue;
871
- }
872
- if (ch === '"')
873
- inDouble = false;
874
- continue;
875
- }
876
- if (inTemplate) {
877
- if (ch === '\\') {
878
- index++;
879
- continue;
880
- }
881
- if (ch === '`')
882
- inTemplate = false;
883
- continue;
884
- }
885
- if (ch === '/' && nextChar === '/') {
886
- inLineComment = true;
887
- index++;
888
- continue;
889
- }
890
- if (ch === '/' && nextChar === '*') {
891
- inBlockComment = true;
892
- index++;
893
- continue;
894
- }
895
- if (ch === "'") {
896
- inSingle = true;
897
- continue;
898
- }
899
- if (ch === '"') {
900
- inDouble = true;
901
- continue;
902
- }
903
- if (ch === '`') {
904
- inTemplate = true;
905
- continue;
906
- }
907
- if (ch === '{')
908
- open++;
909
- else if (ch === '}')
910
- close++;
911
- }
912
- const missing = open - close;
913
- if (missing > 0) {
914
- inlineCode2 = inlineCode2.slice(0, firstImportIndex) + '}'.repeat(missing) + '\n' + inlineCode2.slice(firstImportIndex);
915
- }
916
- }
917
- }
918
- catch { }
919
- try {
920
- const finalTs = await babelCore.transformAsync(inlineCode2, {
921
- plugins: [[pluginTransformTypescript, { allowDeclareFields: true }]],
922
- ast: false,
923
- sourceType: 'module',
924
- configFile: false,
925
- babelrc: false,
926
- });
927
- if (finalTs?.code)
928
- inlineCode2 = finalTs.code;
929
- }
930
- catch { }
931
- inlineCode2 = ensureVariableDynamicImportHelper(inlineCode2);
932
- inlineCode2 = ensureGuardPlainDynamicImports(inlineCode2, origin);
933
- inlineCode2 = options.requireGuardSnippet + inlineCode2;
934
- try {
935
- const lacksRender = !/__ns_render\b/.test(inlineCode2) && !/__ns_sfc__\.render\s*=/.test(inlineCode2);
936
- if (lacksRender) {
937
- const err = `throw new Error("[sfc-asm] ${base}: no render generated by assembler");\nexport default {};`;
938
- res.statusCode = 200;
939
- res.end(err);
940
- return;
941
- }
942
- }
943
- catch { }
944
- try {
945
- inlineCode2 = inlineCode2.replace(/(\/\/ \[sfc-asm\]\[canonical\])(?!\n)/, '$1\n');
946
- }
947
- catch { }
948
- try {
949
- const origin = options.getServerOrigin(server);
950
- inlineCode2 = ensureVersionedRtImports(inlineCode2, origin, Number(version));
951
- inlineCode2 = options.getStrategy().ensureVersionedImports(inlineCode2, origin, Number(version));
952
- inlineCode2 = options.ensureVersionedCoreImports(inlineCode2, origin, Number(version));
953
- }
954
- catch { }
955
- try {
956
- inlineCode2 = astNormalizeModuleImportsAndHelpers(inlineCode2);
957
- }
958
- catch { }
959
- try {
960
- const hasDecl = /(^|[\n;])\s*(?:const|let|var)\s+__ns_sfc__\b/.test(inlineCode2);
961
- if (!hasDecl) {
962
- inlineCode2 = inlineCode2.replace(/(\/\/ \[sfc-asm\]\[canonical\]\n)/, '$1let __ns_sfc__ = {};\n');
963
- }
964
- inlineCode2 = inlineCode2.replace(/(^|[\n;])\s*let\s+__ns_sfc__\s*;?/g, '$1let __ns_sfc__ = {};');
965
- inlineCode2 = inlineCode2.replace(/(^|[\n;])\s*var\s+__ns_sfc__\s*;?/g, '$1var __ns_sfc__ = {};');
966
- }
967
- catch { }
968
- if (!/export\s+default\s+__ns_sfc__/.test(inlineCode2) && /__ns_sfc__/.test(inlineCode2))
969
- inlineCode2 += '\nexport default __ns_sfc__';
970
- res.statusCode = 200;
971
- res.end(inlineCode2);
972
- return;
973
- }
974
- }
975
- catch { }
976
- let inlineOk = false;
977
- let helperBindings = '';
978
- let renderDecl = '';
979
- let inlineBlock;
980
- try {
981
- const root = server.config?.root || process.cwd();
982
- const absolutePath = path.join(root, base.replace(/^\//, ''));
983
- let sfcSource = '';
984
- try {
985
- sfcSource = readFileSync(absolutePath, 'utf-8');
986
- }
987
- catch { }
988
- if (sfcSource) {
989
- const { descriptor } = parse(sfcSource, { filename: absolutePath });
990
- const templateSource = descriptor.template?.content || '';
991
- if (templateSource) {
992
- const id = createHash('md5').update(absolutePath).digest('hex').slice(0, 8);
993
- const compiledTemplate = compileTemplate({
994
- source: templateSource,
995
- id,
996
- filename: absolutePath,
997
- isProd: false,
998
- ssr: false,
999
- compilerOptions: {
1000
- isCustomElement: (tag) => NS_NATIVE_TAGS.has(tag),
1001
- },
1002
- });
1003
- const compiled = (compiledTemplate?.code || '');
1004
- if (compiled) {
1005
- inlineBlock = buildInlineTemplateBlock(compiled) || undefined;
1006
- if (inlineBlock) {
1007
- inlineOk = true;
1008
- }
1009
- else {
1010
- const extracted = extractTemplateRender(compiled);
1011
- inlineOk = extracted.ok;
1012
- helperBindings = extracted.helperBindings;
1013
- renderDecl = extracted.renderDecl;
1014
- inlineBlock = extracted.inlineBlock;
1015
- }
1016
- }
1017
- }
1018
- }
1019
- }
1020
- catch { }
1021
- if (!inlineOk) {
1022
- const extracted = extractTemplateRender(templateCode);
1023
- inlineOk = extracted.ok;
1024
- helperBindings = extracted.helperBindings;
1025
- renderDecl = extracted.renderDecl;
1026
- inlineBlock = extracted.inlineBlock;
1027
- }
1028
- if (!inlineOk) {
1029
- res.statusCode = 500;
1030
- res.end(`throw new Error('[sfc-asm] ${base}: template extraction failed');\nexport default {};`);
1031
- return;
1032
- }
1033
- let asm;
1034
- if (inlineBlock && inlineBlock.trim()) {
1035
- asm = [`// [sfc-asm] ${base} (inlined template body)`, `export * from ${JSON.stringify(scriptUrl)};`, `import * as __script from ${JSON.stringify(scriptUrl)};`, inlineBlock, `const __ns_sfc__ = (__script && __script.default) ? __script.default : {};`, `try { if (typeof __ns_render === 'function' && !__ns_sfc__.render) __ns_sfc__.render = __ns_render; } catch {}`, 'export default __ns_sfc__;'].join('\n');
1036
- }
1037
- else {
1038
- asm = [`// [sfc-asm] ${base} (inlined template)`, `export * from ${JSON.stringify(scriptUrl)};`, `import * as __script from ${JSON.stringify(scriptUrl)};`, helperBindings, renderDecl, `const __ns_sfc__ = (__script && __script.default) ? __script.default : {};`, `try { if (typeof __ns_render === 'function' && !__ns_sfc__.render) __ns_sfc__.render = __ns_render; } catch {}`, 'export default __ns_sfc__;'].filter(Boolean).join('\n');
1039
- }
1040
- let code = options.requireGuardSnippet + asm;
1041
- code = options.processCodeForDevice(code, false, true, /(?:^|\/)node_modules\//.test(base), base);
1042
- try {
1043
- code = options.ensureVersionedCoreImports(code, options.getServerOrigin(server), Number(version));
1044
- }
1045
- catch { }
1046
- code = options.rewriteImports(code, base, options.sfcFileMap, options.depFileMap, projectRoot, !!options.verbose, undefined, options.getServerOrigin(server));
1047
- try {
1048
- code = ensureDestructureCoreImports(code);
1049
- }
1050
- catch { }
1051
- code = ensureVariableDynamicImportHelper(code);
1052
- code = ensureGuardPlainDynamicImports(code, origin);
1053
- try {
1054
- const origin = options.getServerOrigin(server);
1055
- code = ensureVersionedRtImports(code, origin, Number(version));
1056
- code = options.getStrategy().ensureVersionedImports(code, origin, Number(version));
1057
- code = options.ensureVersionedCoreImports(code, origin, Number(version));
1058
- }
1059
- catch { }
1060
- res.statusCode = 200;
1061
- res.end(code);
1062
- }
1063
- catch {
1064
- res.statusCode = 500;
1065
- res.end('export {}\n');
1066
- }
1067
- });
1068
- }
1069
- //# sourceMappingURL=websocket-vue-sfc.js.map