diff --git a/packages/cli-kit/package.json b/packages/cli-kit/package.json index abcb38f0c36..5f9f78b016b 100644 --- a/packages/cli-kit/package.json +++ b/packages/cli-kit/package.json @@ -146,7 +146,6 @@ "macaddress": "0.5.3", "minimatch": "9.0.8", "mrmime": "1.0.1", - "network-interfaces": "1.1.0", "node-abort-controller": "3.1.1", "node-fetch": "3.3.2", "open": "8.4.2", diff --git a/packages/cli-kit/src/public/node/vendor/dev_server/dev-server-2024.ts b/packages/cli-kit/src/public/node/vendor/dev_server/dev-server-2024.ts index 1d6be5bdc93..d2153673797 100644 --- a/packages/cli-kit/src/public/node/vendor/dev_server/dev-server-2024.ts +++ b/packages/cli-kit/src/public/node/vendor/dev_server/dev-server-2024.ts @@ -1,7 +1,7 @@ import {assertConnectable, getIpFromHosts} from './network/index.js' import {assertCompatibleEnvironment} from './env.js' -import * as ni from 'network-interfaces' import fs from 'node:fs' +import os from 'node:os' import type {HostOptions} from './types.js' @@ -52,7 +52,7 @@ function assertRunning2024(projectName: string): void { function getBackendIp(projectName: string): string { try { const backendIp = resolveBackendHost(projectName) - ni.fromIp(backendIp, {internal: true, ipVersion: 4}) + assertIpOnLocalInterface(backendIp) return backendIp } catch (error) { @@ -75,6 +75,18 @@ function resolveBackendHost(name: string): string { } } +function assertIpOnLocalInterface(ip: string): void { + const interfaces = os.networkInterfaces() + for (const addresses of Object.values(interfaces)) { + for (const addr of addresses ?? []) { + if (addr.address === ip && addr.internal && addr.family === 'IPv4') { + return + } + } + } + throw new Error(`No suitable interfaces were found with IP address "${ip}"`) +} + // Allow overrides for more concise test setup. Meh. let assertRunningOverride: typeof assertRunning2024 | undefined diff --git a/packages/cli-kit/src/public/node/vendor/dev_server/network-interfaces.d.ts b/packages/cli-kit/src/public/node/vendor/dev_server/network-interfaces.d.ts deleted file mode 100644 index e3c2ff66510..00000000000 --- a/packages/cli-kit/src/public/node/vendor/dev_server/network-interfaces.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -declare module 'network-interfaces' { - export function fromIp(ip: string, options?: { internal?: boolean, ipVersion?: number }): string; - export function toIp(interfaceName: string, options?: { internal?: boolean, ipVersion?: number }): string; - export function getInterface(options?: { internal?: boolean, ipVersion?: number }): string; -} \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e9f59737a2b..421355c50ea 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -423,9 +423,6 @@ importers: mrmime: specifier: 1.0.1 version: 1.0.1 - network-interfaces: - specifier: 1.1.0 - version: 1.1.0 node-abort-controller: specifier: 3.1.1 version: 3.1.1 @@ -6919,9 +6916,6 @@ packages: resolution: {integrity: sha512-x7ZdOwBxZCEm9MM7+eQCjkrNLrW3rkBKNHVr78zbtqnMGVNlnDi6C/eUEYgxHNrcbu0ymvjzcwIL/6H1iHri9g==} engines: {node: '>=18'} - network-interfaces@1.1.0: - resolution: {integrity: sha512-fBk/Cm/RminFKhyUYKolI5nWI2de1m0pHlikz1mnTDbbe/1d2+ti+x/pWlOYuK8o/9p9vyK912+66h2NXGNUwQ==} - no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} @@ -16581,8 +16575,6 @@ snapshots: natural-orderby@3.0.2: {} - network-interfaces@1.1.0: {} - no-case@3.0.4: dependencies: lower-case: 2.0.2