@nativescript/vite 8.0.0-alpha.19 → 8.0.0-alpha.20

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.
@@ -1,9 +1,9 @@
1
1
  import { createRequire } from 'node:module';
2
2
  import fs from 'node:fs';
3
3
  import path from 'path';
4
- import os from 'os';
5
4
  import { pathToFileURL } from 'url';
6
5
  import { NS_DEFAULT_DEV_FEATURE_FLAGS, NS_DEFAULT_HOST_MODULES } from '../shared/runtime/browser-runtime-contract.js';
6
+ import { resolveDeviceReachableHost } from '../../helpers/dev-host.js';
7
7
  const require = createRequire(import.meta.url);
8
8
  const VIRTUAL_ID = 'virtual:ns-hmr-client';
9
9
  const RESOLVED_ID = '\0' + VIRTUAL_ID;
@@ -432,30 +432,6 @@ if (!globalThis.__NS_HMR_BROWSER_RUNTIME_CLIENT_ACTIVE__) {
432
432
  export function nsHmrClientVitePlugin(opts) {
433
433
  let config;
434
434
  const sessionId = new Date().toISOString();
435
- const guessLanHost = () => {
436
- try {
437
- const nets = os.networkInterfaces();
438
- for (const name of Object.keys(nets)) {
439
- const addrs = nets[name] || [];
440
- for (const a of addrs) {
441
- if (!a)
442
- continue;
443
- // Node typings vary across versions; keep checks defensive
444
- const family = a.family;
445
- const internal = !!a.internal;
446
- const address = String(a.address || '');
447
- if (internal)
448
- continue;
449
- if (family === 'IPv4' || family === 4) {
450
- if (address && address !== '127.0.0.1')
451
- return address;
452
- }
453
- }
454
- }
455
- }
456
- catch { }
457
- return undefined;
458
- };
459
435
  return {
460
436
  name: 'ns-hmr-client',
461
437
  configResolved(c) {
@@ -534,19 +510,23 @@ export function nsHmrClientVitePlugin(opts) {
534
510
  // Prefer project root when available; otherwise fall back to cwd.
535
511
  const projectRoot = config?.root || process.cwd();
536
512
  const clientImport = computeClientImportSpecifier({ projectRoot, clientFsPath });
537
- // Build ws url from Vite server info
538
- let host = process.env.NS_HMR_HOST || config?.server?.host;
539
- // If Vite is bound to all interfaces, prefer a LAN IP so physical devices work.
540
- // The HMR client will still try emulator/localhost fallbacks when needed.
541
- const hostStr = typeof host === 'string' ? host : '';
542
- const isWildcard = host === true || hostStr === '0.0.0.0' || hostStr === '::' || hostStr === '';
543
- if (isWildcard) {
544
- host = guessLanHost() || (opts.platform === 'android' ? '10.0.2.2' : 'localhost');
545
- }
546
- else if (!host) {
547
- host = opts.platform === 'android' ? guessLanHost() || '10.0.2.2' : 'localhost';
548
- }
513
+ // Build ws url from Vite server info. Routes through the same
514
+ // canonical helper as `main-entry.ts` / `base.ts` so the
515
+ // websocket endpoint embedded in `bundle.mjs` and every other
516
+ // `/ns/*` URL share one origin string required by the iOS
517
+ // HTTP ESM cache identity rule, and necessary for Android
518
+ // emulators that can't reach `0.0.0.0` / `localhost`.
549
519
  const port = Number(config?.server?.port || 5173);
520
+ // Pass `port` through so the Android emulator path attempts
521
+ // `adb reverse tcp:<port> tcp:<port>` before falling back to
522
+ // `10.0.2.2`. The websocket URL and bundle.mjs URLs both
523
+ // flow from this same helper, so they stay byte-identical
524
+ // (required by the iOS HTTP ESM cache identity rule).
525
+ const { host } = resolveDeviceReachableHost({
526
+ host: config?.server?.host,
527
+ platform: opts.platform,
528
+ port,
529
+ });
550
530
  const secure = !!config?.server?.https;
551
531
  const protocol = secure ? 'wss' : 'ws';
552
532
  const wsUrl = `${protocol}://${host}:${port}/ns-hmr`;
@@ -1 +1 @@
1
- {"version":3,"file":"vite-plugin.js","sourceRoot":"","sources":["../../../../../packages/vite/hmr/server/vite-plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vite-plugin.js","sourceRoot":"","sources":["../../../../../packages/vite/hmr/server/vite-plugin.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { Plugin } from 'vite';
1
+ import type { Plugin, ViteDevServer } from 'vite';
2
2
  import '../vendor-bootstrap.js';
3
3
  import { angularSourceHasSemanticDecorator, canonicalizeTransformRequestCacheKey, collectAngularEvictionUrls, collectAngularHotUpdateRoots, collectAngularTransformCacheInvalidationUrls, collectAngularTransitiveImportersForInvalidation, collectGraphUpdateModulesForHotUpdate, normalizeHotReloadMatchPath, shouldInvalidateAngularTransitiveImporters, shouldSuppressDefaultViteHotUpdate, shouldSuppressViteFullReloadPayload, type HotUpdateGraphModuleLike, type PendingAngularReloadSuppressionEntry, type TransitiveImporterModuleLike } from './websocket-angular-hot-update.js';
4
4
  import { classifyGraphUpsert, shouldBroadcastGraphUpsertDelta, shouldBumpGraphVersion, type GraphUpsertClassification } from './websocket-graph-upsert.js';
@@ -40,6 +40,41 @@ export declare function hmrWebSocketSolid(opts: {
40
40
  export declare function hmrWebSocketTypescript(opts: {
41
41
  verbose?: boolean;
42
42
  }): Plugin;
43
+ /**
44
+ * Get the dev-server origin string baked into every module the rewriter
45
+ * serves to the device (`/ns/core/...`, `/ns/m/...`, etc.).
46
+ *
47
+ * This MUST agree with the origin `dev-host.ts` bakes into `bundle.mjs`
48
+ * itself. If the two disagree (e.g. the bundle imports
49
+ * `http://localhost:5173/ns/core/utils` while the rewriter splices in
50
+ * `http://192.168.0.8:5173/ns/core/utils`) V8's ESM loader keys those
51
+ * as DIFFERENT modules and the app ends up with two side-by-side
52
+ * realms of `@nativescript/core` — a classic singleton-state split.
53
+ * `internal/debug-sessions/LATEST-05-12-2026-HMR_CORE_REALM_SPLIT.md`
54
+ * documents the symptom.
55
+ *
56
+ * Routing all platforms through `resolveDeviceReachableOrigin` keeps
57
+ * them in lock-step:
58
+ *
59
+ * - Android wildcard / loopback → `10.0.2.2` (emulator NAT can't
60
+ * reach the host's LAN IP; physical devices opt in via
61
+ * `NS_HMR_PREFER_LAN_HOST=1`).
62
+ *
63
+ * - iOS / visionOS wildcard → `localhost` (simulator shares the
64
+ * host's network stack; physical devices opt in via the same
65
+ * `NS_HMR_PREFER_LAN_HOST=1` or `NS_HMR_HOST=<lan-ip>` env).
66
+ *
67
+ * - Explicit non-loopback `server.host` (e.g. a developer-set LAN
68
+ * IP) on any platform → trusted verbatim.
69
+ *
70
+ * The old `resolvedUrls.network[0]` preference is intentionally
71
+ * dropped — Vite reports a LAN IP whenever it detects one, but that
72
+ * IP is neither reachable from an Android emulator nor consistent
73
+ * with what `dev-host.ts` selects, so leaning on it created the
74
+ * realm-split risk above.
75
+ */
76
+ declare function getServerOrigin(server: ViteDevServer): string;
43
77
  export declare const __test_processCodeForDevice: typeof processCodeForDevice;
44
78
  export declare const __test_resolveVendorRouting: typeof resolveVendorRouting;
45
79
  export declare const __test_getBlockedDeviceNodeModulesReason: typeof getBlockedDeviceNodeModulesReason;
80
+ export declare const __test_getServerOrigin: typeof getServerOrigin;
@@ -1,5 +1,5 @@
1
1
  import { createRequire } from 'node:module';
2
- import { sanitizeStrayCoreReferences, isDeepCoreSubpath, rewriteSpecifiersForDevice } from './core-sanitize.js';
2
+ import { sanitizeStrayCoreReferences, isDeepCoreSubpath, isDirectoryIndexFilename, rewriteSpecifiersForDevice } from './core-sanitize.js';
3
3
  import { buildDefaultExportFooter, buildShapeInstallHeader, hasNamespaceReExport, rewriteNamespaceReExportsForShape } from './ns-core-cjs-shape.js';
4
4
  // AST tooling for robust transformations
5
5
  import { parse as babelParse } from '@babel/parser';
@@ -35,6 +35,7 @@ import { getProjectAppPath, getProjectAppRelativePath, getProjectAppVirtualPath
35
35
  import { buildRuntimeConfig, generateImportMap } from './import-map.js';
36
36
  import { getCliFlags } from '../../helpers/cli-flags.js';
37
37
  import { buildCoreUrl, buildCoreUrlPath, normalizeCoreSub as normalizeCoreSubCanonical } from '../../helpers/ns-core-url.js';
38
+ import { resolveDeviceReachableOrigin } from '../../helpers/dev-host.js';
38
39
  import { isRuntimeGraphExcludedPath, matchesRuntimeGraphModuleId, normalizeRuntimeGraphPath, shouldIncludeRuntimeGraphFile, shouldSkipRuntimeGraphDirectoryName } from './runtime-graph-filter.js';
39
40
  import { resolveAngularCoreHmrImportSource, rewriteAngularEntryRegisterOnly } from './websocket-angular-entry.js';
40
41
  import { angularSourceHasSemanticDecorator, canonicalizeTransformRequestCacheKey, collectAngularEvictionUrls, collectAngularHotUpdateRoots, collectAngularTransformCacheInvalidationUrls, collectAngularTransitiveImportersForInvalidation, collectGraphUpdateModulesForHotUpdate, normalizeHotReloadMatchPath, shouldInvalidateAngularTransitiveImporters, shouldSuppressDefaultViteHotUpdate, shouldSuppressViteFullReloadPayload } from './websocket-angular-hot-update.js';
@@ -4362,7 +4363,24 @@ export const piniaSymbol = p.piniaSymbol;
4362
4363
  // Vite's transform output references module IDs with /@fs,
4363
4364
  // relative specifiers, or absolute project paths. Rewrite
4364
4365
  // those to URLs iOS can fetch over HTTP.
4365
- let rewritten = rewriteSpecifiersForDevice(transformed.code, getServerOrigin(server), Number(graphVersion || 0));
4366
+ //
4367
+ // We also thread a `RelativeBase` so any lingering relative
4368
+ // specifiers (`./x`, `../x`) — which Vite's import-analysis
4369
+ // sometimes leaves untouched for `node_modules` files — get
4370
+ // resolved against the served URL's logical directory and
4371
+ // rewritten to canonical `/ns/core/<resolved>` URLs.
4372
+ //
4373
+ // Without this, V8/iOS apply RFC 3986 URL resolution against
4374
+ // the served URL (which has no trailing slash) and treat the
4375
+ // last path segment as a *file*, so `./layout-helper-common`
4376
+ // from `/ns/core/utils/layout-helper` becomes
4377
+ // `/ns/core/utils/layout-helper-common` — a sibling that
4378
+ // doesn't exist, producing "Failed to load url … Does the
4379
+ // file exist?" from Vite and a stuck boot screen.
4380
+ const __rawSubForRel = String(normalizedSub || sub || '').replace(/^\/+|\/+$/g, '');
4381
+ const __isDirIndex = isDirectoryIndexFilename(modulePath || '');
4382
+ const __relBase = { sub: __rawSubForRel, isDirectoryIndex: __isDirIndex };
4383
+ let rewritten = rewriteSpecifiersForDevice(transformed.code, getServerOrigin(server), Number(graphVersion || 0), __relBase);
4366
4384
  // Invariant D (CJS/ESM interop shape) — EXPORT-SIDE fix.
4367
4385
  //
4368
4386
  // `@nativescript/core/index.js` declares namespace
@@ -7469,52 +7487,95 @@ export function hmrWebSocketTypescript(opts) {
7469
7487
  return createHmrWebSocketPlugin(opts);
7470
7488
  }
7471
7489
  /**
7472
- * Get server origin for URLs
7490
+ * Get the dev-server origin string baked into every module the rewriter
7491
+ * serves to the device (`/ns/core/...`, `/ns/m/...`, etc.).
7492
+ *
7493
+ * This MUST agree with the origin `dev-host.ts` bakes into `bundle.mjs`
7494
+ * itself. If the two disagree (e.g. the bundle imports
7495
+ * `http://localhost:5173/ns/core/utils` while the rewriter splices in
7496
+ * `http://192.168.0.8:5173/ns/core/utils`) V8's ESM loader keys those
7497
+ * as DIFFERENT modules and the app ends up with two side-by-side
7498
+ * realms of `@nativescript/core` — a classic singleton-state split.
7499
+ * `internal/debug-sessions/LATEST-05-12-2026-HMR_CORE_REALM_SPLIT.md`
7500
+ * documents the symptom.
7501
+ *
7502
+ * Routing all platforms through `resolveDeviceReachableOrigin` keeps
7503
+ * them in lock-step:
7504
+ *
7505
+ * - Android wildcard / loopback → `10.0.2.2` (emulator NAT can't
7506
+ * reach the host's LAN IP; physical devices opt in via
7507
+ * `NS_HMR_PREFER_LAN_HOST=1`).
7508
+ *
7509
+ * - iOS / visionOS wildcard → `localhost` (simulator shares the
7510
+ * host's network stack; physical devices opt in via the same
7511
+ * `NS_HMR_PREFER_LAN_HOST=1` or `NS_HMR_HOST=<lan-ip>` env).
7512
+ *
7513
+ * - Explicit non-loopback `server.host` (e.g. a developer-set LAN
7514
+ * IP) on any platform → trusted verbatim.
7515
+ *
7516
+ * The old `resolvedUrls.network[0]` preference is intentionally
7517
+ * dropped — Vite reports a LAN IP whenever it detects one, but that
7518
+ * IP is neither reachable from an Android emulator nor consistent
7519
+ * with what `dev-host.ts` selects, so leaning on it created the
7520
+ * realm-split risk above.
7473
7521
  */
7474
7522
  function getServerOrigin(server) {
7475
- const urls = server.resolvedUrls;
7476
- // Prefer a real LAN/network URL when available so emulators/devices can reach the host directly.
7477
- if (urls?.network?.length) {
7478
- try {
7479
- const u = new URL(String(urls.network[0]));
7480
- const origin = `${u.protocol}//${u.host}`;
7481
- if (!/^https?:\/\/[\w\-.:\[\]]+$/.test(origin)) {
7482
- console.warn('[hmr][origin] invariant failed for resolvedUrls.network:', urls.network[0], '→', origin);
7483
- }
7484
- return origin;
7485
- }
7486
- catch {
7487
- // Fallthrough to local below if network parse fails
7488
- }
7489
- }
7490
- if (urls?.local?.length) {
7491
- try {
7492
- const u = new URL(String(urls.local[0]));
7493
- const origin = `${u.protocol}//${u.host}`;
7494
- if (!/^https?:\/\/[\w\-.:\[\]]+$/.test(origin)) {
7495
- console.warn('[hmr][origin] invariant failed for resolvedUrls.local:', urls.local[0], '→', origin);
7496
- }
7497
- return origin;
7498
- }
7499
- catch {
7500
- // Fallthrough to manual construction
7501
- }
7502
- }
7523
+ const platform = detectDevHostPlatform();
7503
7524
  const isHttps = !!server.config.server?.https;
7525
+ const protocol = isHttps ? 'https' : 'http';
7504
7526
  const httpServer = server.httpServer;
7505
7527
  const addr = httpServer?.address?.();
7506
7528
  const port = Number(server.config.server?.port || addr?.port || 5173);
7529
+ try {
7530
+ const { origin } = resolveDeviceReachableOrigin({
7531
+ host: server.config.server?.host,
7532
+ platform,
7533
+ protocol,
7534
+ port,
7535
+ });
7536
+ if (/^https?:\/\/[\w\-.:\[\]]+$/.test(origin)) {
7537
+ return origin;
7538
+ }
7539
+ console.warn('[hmr][origin] invariant failed for resolveDeviceReachableOrigin:', origin);
7540
+ }
7541
+ catch (err) {
7542
+ console.warn('[hmr][origin] resolveDeviceReachableOrigin threw:', err?.message || String(err));
7543
+ }
7544
+ // Last-ditch fallback for the implausible case where the resolver
7545
+ // throws (CI containers with no NICs, exotic `process.env` shapes,
7546
+ // etc.). We deliberately do NOT consult `resolvedUrls.network[0]`
7547
+ // here — see the file-level comment above for why.
7507
7548
  const hostCfg = server.config.server?.host;
7508
- const host = typeof hostCfg === 'string' && hostCfg !== '0.0.0.0' ? hostCfg : '127.0.0.1';
7509
- const origin = `${isHttps ? 'https' : 'http'}://${host}:${port}`;
7549
+ const fallbackHost = typeof hostCfg === 'string' && hostCfg && hostCfg !== '0.0.0.0' ? hostCfg : platform === 'android' ? '10.0.2.2' : '127.0.0.1';
7550
+ const origin = `${protocol}://${fallbackHost}:${port}`;
7510
7551
  if (!/^https?:\/\/[\w\-.:\[\]]+$/.test(origin)) {
7511
7552
  console.warn('[hmr][origin] invariant failed for constructed origin:', origin);
7512
7553
  }
7513
7554
  return origin;
7514
7555
  }
7556
+ /**
7557
+ * Resolve the device target platform from the CLI flags the dev server
7558
+ * was launched with. The `--env.android` / `--env.visionos` flags are
7559
+ * surfaced by the NativeScript CLI when it spawns Vite; iOS is the
7560
+ * safe default when no flag is set so the helper stays a pure
7561
+ * function and standalone `vite serve` sessions still get sensible
7562
+ * URLs.
7563
+ */
7564
+ function detectDevHostPlatform() {
7565
+ try {
7566
+ const flags = (getCliFlags() || {});
7567
+ if (flags.android)
7568
+ return 'android';
7569
+ if (flags.visionos)
7570
+ return 'visionos';
7571
+ }
7572
+ catch { }
7573
+ return 'ios';
7574
+ }
7515
7575
  // Test-only export: allow unit tests to run the sanitizer on snippets without booting a server
7516
7576
  // Safe in production builds; this is a named export that tests can import explicitly.
7517
7577
  export const __test_processCodeForDevice = processCodeForDevice;
7518
7578
  export const __test_resolveVendorRouting = resolveVendorRouting;
7519
7579
  export const __test_getBlockedDeviceNodeModulesReason = getBlockedDeviceNodeModulesReason;
7580
+ export const __test_getServerOrigin = getServerOrigin;
7520
7581
  //# sourceMappingURL=websocket.js.map