mirror of
https://github.com/denoland/deno.git
synced 2024-11-21 15:04:11 -05:00
feat(unstable): add Deno.networkInterfaces (#13475)
This commit is contained in:
parent
1a3983a538
commit
d08da94233
4 changed files with 61 additions and 0 deletions
30
cli/dts/lib.deno.unstable.d.ts
vendored
30
cli/dts/lib.deno.unstable.d.ts
vendored
|
@ -103,6 +103,36 @@ declare namespace Deno {
|
|||
swapFree: number;
|
||||
}
|
||||
|
||||
/** The information of the network interface */
|
||||
export interface NetworkInterfaceInfo {
|
||||
/** The network interface name */
|
||||
name: string;
|
||||
/** The IP protocol version */
|
||||
family: "IPv4" | "IPv6";
|
||||
/** The IP address */
|
||||
address: string;
|
||||
/** The netmask */
|
||||
netmask: string;
|
||||
/** The IPv6 scope id or null */
|
||||
scopeid: number | null;
|
||||
/** The CIDR range */
|
||||
cidr: string;
|
||||
/** The MAC address */
|
||||
mac: string;
|
||||
}
|
||||
|
||||
/** **Unstable** new API. yet to be vetted.
|
||||
*
|
||||
* Returns an array of the network interface informations.
|
||||
*
|
||||
* ```ts
|
||||
* console.log(Deno.networkInterfaces());
|
||||
* ```
|
||||
*
|
||||
* Requires `allow-env` permission.
|
||||
*/
|
||||
export function networkInterfaces(): NetworkInterfaceInfo[];
|
||||
|
||||
/** All possible types for interfacing with foreign functions */
|
||||
export type NativeType =
|
||||
| "void"
|
||||
|
|
25
cli/tests/unit/network_interfaces_test.ts
Normal file
25
cli/tests/unit/network_interfaces_test.ts
Normal file
|
@ -0,0 +1,25 @@
|
|||
import { assert } from "./test_util.ts";
|
||||
|
||||
Deno.test(
|
||||
{ name: "Deno.networkInterfaces", permissions: { env: true } },
|
||||
() => {
|
||||
const networkInterfaces = Deno.networkInterfaces();
|
||||
assert(Array.isArray(networkInterfaces));
|
||||
assert(networkInterfaces.length > 0);
|
||||
for (
|
||||
const { name, family, address, netmask, scopeid, cidr, mac }
|
||||
of networkInterfaces
|
||||
) {
|
||||
assert(typeof name === "string");
|
||||
assert(family === "IPv4" || family === "IPv6");
|
||||
assert(typeof address === "string");
|
||||
assert(typeof netmask === "string");
|
||||
assert(
|
||||
(family === "IPv6" && typeof scopeid === "number") ||
|
||||
(family === "IPv4" && scopeid === null),
|
||||
);
|
||||
assert(typeof cidr === "string");
|
||||
assert(typeof mac === "string");
|
||||
}
|
||||
},
|
||||
);
|
|
@ -24,6 +24,10 @@
|
|||
return core.opSync("op_system_memory_info");
|
||||
}
|
||||
|
||||
function networkInterfaces() {
|
||||
return core.opSync("op_network_interfaces");
|
||||
}
|
||||
|
||||
// This is an internal only method used by the test harness to override the
|
||||
// behavior of exit when the exit sanitizer is enabled.
|
||||
let exitHandler = null;
|
||||
|
@ -89,5 +93,6 @@
|
|||
systemMemoryInfo,
|
||||
hostname,
|
||||
loadavg,
|
||||
networkInterfaces,
|
||||
};
|
||||
})(this);
|
||||
|
|
|
@ -121,6 +121,7 @@
|
|||
hostname: __bootstrap.os.hostname,
|
||||
osRelease: __bootstrap.os.osRelease,
|
||||
systemMemoryInfo: __bootstrap.os.systemMemoryInfo,
|
||||
networkInterfaces: __bootstrap.os.networkInterfaces,
|
||||
applySourceMap: __bootstrap.errorStack.opApplySourceMap,
|
||||
formatDiagnostics: __bootstrap.errorStack.opFormatDiagnostics,
|
||||
sleepSync: __bootstrap.timers.sleepSync,
|
||||
|
|
Loading…
Reference in a new issue